summary refs log tree commit diff stats
path: root/lib/wrappers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wrappers')
-rwxr-xr-xlib/wrappers/cairo/cairo.nim1191
-rwxr-xr-xlib/wrappers/cairo/cairoft.nim36
-rwxr-xr-xlib/wrappers/cairo/cairowin32.nim36
-rwxr-xr-xlib/wrappers/cairo/cairoxlib.nim40
-rwxr-xr-xlib/wrappers/gtk/atk.nim1369
-rwxr-xr-xlib/wrappers/gtk/gdk2.nim6896
-rwxr-xr-xlib/wrappers/gtk/gdk2pixbuf.nim277
-rwxr-xr-xlib/wrappers/gtk/gdkglext.nim564
-rwxr-xr-xlib/wrappers/gtk/glib2.nim4503
-rwxr-xr-xlib/wrappers/gtk/gtk2.nim25872
-rwxr-xr-xlib/wrappers/gtk/gtkglext.nim50
-rwxr-xr-xlib/wrappers/gtk/gtkhtml.nim499
-rwxr-xr-xlib/wrappers/gtk/libglade2.nim118
-rwxr-xr-xlib/wrappers/gtk/pango.nim1208
-rwxr-xr-xlib/wrappers/gtk/pangoutils.nim46
-rwxr-xr-xlib/wrappers/iup.nim945
-rwxr-xr-xlib/wrappers/libcurl.nim644
-rwxr-xr-xlib/wrappers/lua/lauxlib.nim224
-rwxr-xr-xlib/wrappers/lua/lua.nim391
-rwxr-xr-xlib/wrappers/lua/lualib.nim73
-rwxr-xr-xlib/wrappers/mysql.nim1154
-rwxr-xr-xlib/wrappers/odbcsql.nim788
-rwxr-xr-xlib/wrappers/opengl/gl.nim1432
-rwxr-xr-xlib/wrappers/opengl/glext.nim4175
-rwxr-xr-xlib/wrappers/opengl/glu.nim311
-rwxr-xr-xlib/wrappers/opengl/glut.nim378
-rwxr-xr-xlib/wrappers/opengl/glx.nim148
-rwxr-xr-xlib/wrappers/opengl/wingl.nim348
-rwxr-xr-xlib/wrappers/pcre/pcre.nim244
-rwxr-xr-xlib/wrappers/pcre/pcre_all.c30072
-rwxr-xr-xlib/wrappers/postgres.nim386
-rwxr-xr-xlib/wrappers/python.nim1583
-rwxr-xr-xlib/wrappers/sdl/sdl.nim2522
-rwxr-xr-xlib/wrappers/sdl/sdl_gfx.nim421
-rwxr-xr-xlib/wrappers/sdl/sdl_image.nim227
-rwxr-xr-xlib/wrappers/sdl/sdl_mixer.nim737
-rwxr-xr-xlib/wrappers/sdl/sdl_mixer_nosmpeg.nim572
-rwxr-xr-xlib/wrappers/sdl/sdl_net.nim431
-rwxr-xr-xlib/wrappers/sdl/sdl_ttf.nim346
-rwxr-xr-xlib/wrappers/sdl/sdlutils.pas4354
-rwxr-xr-xlib/wrappers/sdl/smpeg.nim319
-rwxr-xr-xlib/wrappers/sqlite3.nim376
-rwxr-xr-xlib/wrappers/tcl.nim857
-rwxr-xr-xlib/wrappers/tre/config.h259
-rwxr-xr-xlib/wrappers/tre/tre_all.c8873
-rwxr-xr-xlib/wrappers/tre/version.txt1
-rwxr-xr-xlib/wrappers/x11/cursorfont.nim110
-rwxr-xr-xlib/wrappers/x11/keysym.nim1925
-rwxr-xr-xlib/wrappers/x11/x.nim399
-rwxr-xr-xlib/wrappers/x11/xatom.nim81
-rwxr-xr-xlib/wrappers/x11/xcms.nim396
-rwxr-xr-xlib/wrappers/x11/xf86dga.nim235
-rwxr-xr-xlib/wrappers/x11/xf86vmode.nim229
-rwxr-xr-xlib/wrappers/x11/xi.nim307
-rwxr-xr-xlib/wrappers/x11/xinerama.nim25
-rwxr-xr-xlib/wrappers/x11/xkb.nim2409
-rwxr-xr-xlib/wrappers/x11/xkblib.nim699
-rwxr-xr-xlib/wrappers/x11/xlib.nim2218
-rwxr-xr-xlib/wrappers/x11/xrandr.nim194
-rwxr-xr-xlib/wrappers/x11/xrender.nim231
-rwxr-xr-xlib/wrappers/x11/xresource.nim200
-rwxr-xr-xlib/wrappers/x11/xshm.nim77
-rwxr-xr-xlib/wrappers/x11/xutil.nim412
-rwxr-xr-xlib/wrappers/x11/xv.nim84
-rwxr-xr-xlib/wrappers/x11/xvlib.nim234
-rwxr-xr-xlib/wrappers/zip/libzip.nim241
-rwxr-xr-xlib/wrappers/zip/libzip_all.c4189
-rwxr-xr-xlib/wrappers/zip/zlib.nim181
-rwxr-xr-xlib/wrappers/zip/zzip.nim172
69 files changed, 16874 insertions, 104670 deletions
diff --git a/lib/wrappers/cairo/cairo.nim b/lib/wrappers/cairo/cairo.nim
index 6da8183f3..2c9d76bf7 100755
--- a/lib/wrappers/cairo/cairo.nim
+++ b/lib/wrappers/cairo/cairo.nim
@@ -1,4 +1,3 @@
-
 #* cairo - a vector graphics library with display and print output
 # *
 # * Copyright © 2002 University of Southern California
@@ -49,113 +48,127 @@
 #  October 2007
 #
 
-when defined(windows):
-  const
-    LIB_CAIRO* = "cairo.dll"
-else:
-  const
+when defined(windows): 
+  const 
+    LIB_CAIRO* = "libcairo-2.dll"
+else: 
+  const 
     LIB_CAIRO* = "libcairo.so"
-
-type
+type 
   PByte = cstring
-  TCairoStatus* = enum
-    CAIRO_STATUS_SUCCESS = 0, CAIRO_STATUS_NO_MEMORY,
-    CAIRO_STATUS_INVALID_RESTORE, CAIRO_STATUS_INVALID_POP_GROUP,
-    CAIRO_STATUS_NO_CURRENT_POINT, CAIRO_STATUS_INVALID_MATRIX,
-    CAIRO_STATUS_INVALID_STATUS, CAIRO_STATUS_NULL_POINTER,
-    CAIRO_STATUS_INVALID_STRING, CAIRO_STATUS_INVALID_PATH_DATA,
-    CAIRO_STATUS_READ_ERROR, CAIRO_STATUS_WRITE_ERROR,
-    CAIRO_STATUS_SURFACE_FINISHED, CAIRO_STATUS_SURFACE_TYPE_MISMATCH,
-    CAIRO_STATUS_PATTERN_TYPE_MISMATCH, CAIRO_STATUS_INVALID_CONTENT,
-    CAIRO_STATUS_INVALID_FORMAT, CAIRO_STATUS_INVALID_VISUAL,
-    CAIRO_STATUS_FILE_NOT_FOUND, CAIRO_STATUS_INVALID_DASH
-  TCairoOperator* = enum
-    CAIRO_OPERATOR_CLEAR, CAIRO_OPERATOR_SOURCE, CAIRO_OPERATOR_OVER,
-    CAIRO_OPERATOR_IN, CAIRO_OPERATOR_OUT, CAIRO_OPERATOR_ATOP,
-    CAIRO_OPERATOR_DEST, CAIRO_OPERATOR_DEST_OVER, CAIRO_OPERATOR_DEST_IN,
-    CAIRO_OPERATOR_DEST_OUT, CAIRO_OPERATOR_DEST_ATOP, CAIRO_OPERATOR_XOR,
-    CAIRO_OPERATOR_ADD, CAIRO_OPERATOR_SATURATE
-  TCairoAntialias* = enum
-    CAIRO_ANTIALIAS_DEFAULT, CAIRO_ANTIALIAS_NONE, CAIRO_ANTIALIAS_GRAY,
-    CAIRO_ANTIALIAS_SUBPIXEL
-  TCairoFillRule* = enum
-    CAIRO_FILL_RULE_WINDING, CAIRO_FILL_RULE_EVEN_ODD
-  TCairoLineCap* = enum
-    CAIRO_LINE_CAP_BUTT, CAIRO_LINE_CAP_ROUND, CAIRO_LINE_CAP_SQUARE
-  TCairoLineJoin* = enum
-    CAIRO_LINE_JOIN_MITER, CAIRO_LINE_JOIN_ROUND, CAIRO_LINE_JOIN_BEVEL
-  TCairoFontSlant* = enum
-    CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_SLANT_ITALIC, CAIRO_FONT_SLANT_OBLIQUE
-  TCairoFontWeight* = enum
-    CAIRO_FONT_WEIGHT_NORMAL, CAIRO_FONT_WEIGHT_BOLD
-  TCairoSubpixelOrder* = enum
-    CAIRO_SUBPIXEL_ORDER_DEFAULT, CAIRO_SUBPIXEL_ORDER_RGB,
-    CAIRO_SUBPIXEL_ORDER_BGR, CAIRO_SUBPIXEL_ORDER_VRGB,
-    CAIRO_SUBPIXEL_ORDER_VBGR
-  TCairoHintStyle* = enum
-    CAIRO_HINT_STYLE_DEFAULT, CAIRO_HINT_STYLE_NONE, CAIRO_HINT_STYLE_SLIGHT,
-    CAIRO_HINT_STYLE_MEDIUM, CAIRO_HINT_STYLE_FULL
-  TCairoHintMetrics* = enum
-    CAIRO_HINT_METRICS_DEFAULT, CAIRO_HINT_METRICS_OFF, CAIRO_HINT_METRICS_ON
-  TCairoPathDataType* = enum
-    CAIRO_PATH_MOVE_TO, CAIRO_PATH_LINE_TO, CAIRO_PATH_CURVE_TO,
-    CAIRO_PATH_CLOSE_PATH
-  TCairoContent* = enum
-    CAIRO_CONTENT_COLOR = 0x00001000, CAIRO_CONTENT_ALPHA = 0x00002000,
-    CAIRO_CONTENT_COLOR_ALPHA = 0x00003000
-  TCairoFormat* = enum
-    CAIRO_FORMAT_ARGB32, CAIRO_FORMAT_RGB24, CAIRO_FORMAT_A8, CAIRO_FORMAT_A1
-  TCairoExtend* = enum
-    CAIRO_EXTEND_NONE, CAIRO_EXTEND_REPEAT, CAIRO_EXTEND_REFLECT,
-    CAIRO_EXTEND_PAD
-  TCairoFilter* = enum
-    CAIRO_FILTER_FAST, CAIRO_FILTER_GOOD, CAIRO_FILTER_BEST,
-    CAIRO_FILTER_NEAREST, CAIRO_FILTER_BILINEAR, CAIRO_FILTER_GAUSSIAN
-  TCairoFontType* = enum
-    CAIRO_FONT_TYPE_TOY, CAIRO_FONT_TYPE_FT, CAIRO_FONT_TYPE_WIN32,
-    CAIRO_FONT_TYPE_ATSUI
-  TCairoPatternType* = enum
-    CAIRO_PATTERN_TYPE_SOLID, CAIRO_PATTERN_TYPE_SURFACE,
-    CAIRO_PATTERN_TYPE_LINEAR, CAIRO_PATTERN_TYPE_RADIAL
-  TCairoSurfaceType* = enum
-    CAIRO_SURFACE_TYPE_IMAGE, CAIRO_SURFACE_TYPE_PDF, CAIRO_SURFACE_TYPE_PS,
-    CAIRO_SURFACE_TYPE_XLIB, CAIRO_SURFACE_TYPE_XCB, CAIRO_SURFACE_TYPE_GLITZ,
-    CAIRO_SURFACE_TYPE_QUARTZ, CAIRO_SURFACE_TYPE_WIN32,
-    CAIRO_SURFACE_TYPE_BEOS, CAIRO_SURFACE_TYPE_DIRECTFB,
-    CAIRO_SURFACE_TYPE_SVG, CAIRO_SURFACE_TYPE_OS2
-  TCairoSvgVersion* = enum
-    CAIRO_SVG_VERSION_1_1, CAIRO_SVG_VERSION_1_2
-  PCairoSurface* = ptr TCairoSurface
-  PPCairoSurface* = ptr PCairoSurface
-  PCairo* = ptr TCairo
-  PCairoPattern* = ptr TCairoPattern
-  PCairoFontOptions* = ptr TCairoFontOptions
-  PCairoFontFace* = ptr TCairoFontFace
-  PCairoScaledFont* = ptr TCairoScaledFont
-  PCairoBool* = ptr TCairoBool
-  TCairoBool* = int32
-  PCairoMatrix* = ptr TCairoMatrix
-  PCairoUserDataKey* = ptr TCairoUserDataKey
-  PCairoGlyph* = ptr TCairoGlyph
-  PCairoTextExtents* = ptr TCairoTextExtents
-  PCairoFontExtents* = ptr TCairoFontExtents
-  PCairoPathDataType* = ptr TCairoPathDataType
-  PCairoPathData* = ptr TCairoPathData
-  PCairoPath* = ptr TCairoPath
-  PCairoRectangle* = ptr TCairoRectangle
-  PCairoRectangleList* = ptr TCairoRectangleList
-  TCairoDestroyFunc* = proc (data: Pointer){.cdecl.}
-  TCairoWriteFunc* = proc (closure: Pointer, data: PByte, len: int32): TCairoStatus{.
-      cdecl.}
-  TCairoReadFunc* = proc (closure: Pointer, data: PByte, len: int32): TCairoStatus{.
-      cdecl.}
-  TCairo* {.final.} = object           #OPAQUE
-  TCairoSurface* {.final.} = object   #OPAQUE
-  TCairoPattern* {.final.} = object   #OPAQUE
-  TCairoScaledFont* {.final.} = object #OPAQUE
-  TCairoFontFace* {.final.} = object #OPAQUE
-  TCairoFontOptions* {.final.} = object #OPAQUE
-  TCairoMatrix* {.final.} = object
+  TStatus* = enum 
+    STATUS_SUCCESS = 0,
+    STATUS_NO_MEMORY,
+    STATUS_INVALID_RESTORE,
+    STATUS_INVALID_POP_GROUP,
+    STATUS_NO_CURRENT_POINT,
+    STATUS_INVALID_MATRIX,
+    STATUS_INVALID_STATUS,
+    STATUS_NULL_POINTER,
+    STATUS_INVALID_STRING,
+    STATUS_INVALID_PATH_DATA,
+    STATUS_READ_ERROR,
+    STATUS_WRITE_ERROR,
+    STATUS_SURFACE_FINISHED,
+    STATUS_SURFACE_TYPE_MISMATCH,
+    STATUS_PATTERN_TYPE_MISMATCH,
+    STATUS_INVALID_CONTENT,
+    STATUS_INVALID_FORMAT,
+    STATUS_INVALID_VISUAL,
+    STATUS_FILE_NOT_FOUND,
+    STATUS_INVALID_DASH,
+    STATUS_INVALID_DSC_COMMENT,
+    STATUS_INVALID_INDEX,
+    STATUS_CLIP_NOT_REPRESENTABLE,
+    STATUS_TEMP_FILE_ERROR,
+    STATUS_INVALID_STRIDE,
+    STATUS_FONT_TYPE_MISMATCH,
+    STATUS_USER_FONT_IMMUTABLE,
+    STATUS_USER_FONT_ERROR,
+    STATUS_NEGATIVE_COUNT,
+    STATUS_INVALID_CLUSTERS,
+    STATUS_INVALID_SLANT,
+    STATUS_INVALID_WEIGHT
+
+    
+  TOperator* = enum 
+    OPERATOR_CLEAR, OPERATOR_SOURCE, OPERATOR_OVER, OPERATOR_IN, OPERATOR_OUT, 
+    OPERATOR_ATOP, OPERATOR_DEST, OPERATOR_DEST_OVER, OPERATOR_DEST_IN, 
+    OPERATOR_DEST_OUT, OPERATOR_DEST_ATOP, OPERATOR_XOR, OPERATOR_ADD, 
+    OPERATOR_SATURATE
+  TAntialias* = enum 
+    ANTIALIAS_DEFAULT, ANTIALIAS_NONE, ANTIALIAS_GRAY, ANTIALIAS_SUBPIXEL
+  TFillRule* = enum 
+    FILL_RULE_WINDING, FILL_RULE_EVEN_ODD
+  TLineCap* = enum 
+    LINE_CAP_BUTT, LINE_CAP_ROUND, LINE_CAP_SQUARE
+  TLineJoin* = enum 
+    LINE_JOIN_MITER, LINE_JOIN_ROUND, LINE_JOIN_BEVEL
+  TFontSlant* = enum 
+    FONT_SLANT_NORMAL, FONT_SLANT_ITALIC, FONT_SLANT_OBLIQUE
+  TFontWeight* = enum 
+    FONT_WEIGHT_NORMAL, FONT_WEIGHT_BOLD
+  TSubpixelOrder* = enum 
+    SUBPIXEL_ORDER_DEFAULT, SUBPIXEL_ORDER_RGB, SUBPIXEL_ORDER_BGR, 
+    SUBPIXEL_ORDER_VRGB, SUBPIXEL_ORDER_VBGR
+  THintStyle* = enum 
+    HINT_STYLE_DEFAULT, HINT_STYLE_NONE, HINT_STYLE_SLIGHT, HINT_STYLE_MEDIUM, 
+    HINT_STYLE_FULL
+  THintMetrics* = enum 
+    HINT_METRICS_DEFAULT, HINT_METRICS_OFF, HINT_METRICS_ON
+  TPathDataType* = enum 
+    PATH_MOVE_TO, PATH_LINE_TO, PATH_CURVE_TO, PATH_CLOSE_PATH
+  TContent* = enum 
+    CONTENT_COLOR = 0x00001000, CONTENT_ALPHA = 0x00002000, 
+    CONTENT_COLOR_ALPHA = 0x00003000
+  TFormat* = enum 
+    FORMAT_ARGB32, FORMAT_RGB24, FORMAT_A8, FORMAT_A1
+  TExtend* = enum 
+    EXTEND_NONE, EXTEND_REPEAT, EXTEND_REFLECT, EXTEND_PAD
+  TFilter* = enum 
+    FILTER_FAST, FILTER_GOOD, FILTER_BEST, FILTER_NEAREST, FILTER_BILINEAR, 
+    FILTER_GAUSSIAN
+  TFontType* = enum 
+    FONT_TYPE_TOY, FONT_TYPE_FT, FONT_TYPE_WIN32, FONT_TYPE_ATSUI
+  TPatternType* = enum 
+    PATTERN_TYPE_SOLID, PATTERN_TYPE_SURFACE, PATTERN_TYPE_LINEAR, 
+    PATTERN_TYPE_RADIAL
+  TSurfaceType* = enum 
+    SURFACE_TYPE_IMAGE, SURFACE_TYPE_PDF, SURFACE_TYPE_PS, SURFACE_TYPE_XLIB, 
+    SURFACE_TYPE_XCB, SURFACE_TYPE_GLITZ, SURFACE_TYPE_QUARTZ, 
+    SURFACE_TYPE_WIN32, SURFACE_TYPE_BEOS, SURFACE_TYPE_DIRECTFB, 
+    SURFACE_TYPE_SVG, SURFACE_TYPE_OS2
+  TSvgVersion* = enum 
+    SVG_VERSION_1_1, SVG_VERSION_1_2
+  PSurface* = ptr TSurface
+  PPSurface* = ptr PSurface
+  PContext* = ptr TContext
+  PPattern* = ptr TPattern
+  PFontOptions* = ptr TFontOptions
+  PFontFace* = ptr TFontFace
+  PScaledFont* = ptr TScaledFont
+  PBool* = ptr TBool
+  TBool* = int32
+  PMatrix* = ptr TMatrix
+  PUserDataKey* = ptr TUserDataKey
+  PGlyph* = ptr TGlyph
+  PTextExtents* = ptr TTextExtents
+  PFontExtents* = ptr TFontExtents
+  PPathDataType* = ptr TPathDataType
+  PPathData* = ptr TPathData
+  PPath* = ptr TPath
+  PRectangle* = ptr TRectangle
+  PRectangleList* = ptr TRectangleList
+  TDestroyFunc* = proc (data: Pointer){.cdecl.}
+  TWriteFunc* = proc (closure: Pointer, data: PByte, len: int32): TStatus{.cdecl.}
+  TReadFunc* = proc (closure: Pointer, data: PByte, len: int32): TStatus{.cdecl.}
+  TContext*{.final.} = object        #OPAQUE
+  TSurface*{.final.} = object  #OPAQUE
+  TPattern*{.final.} = object  #OPAQUE
+  TScaledFont*{.final.} = object  #OPAQUE
+  TFontFace*{.final.} = object  #OPAQUE
+  TFontOptions*{.final.} = object  #OPAQUE
+  TMatrix*{.final.} = object 
     xx: float64
     yx: float64
     xy: float64
@@ -163,15 +176,15 @@ type
     x0: float64
     y0: float64
 
-  TCairoUserDataKey* {.final.} = object
+  TUserDataKey*{.final.} = object 
     unused: int32
 
-  TCairoGlyph* {.final.} = object
+  TGlyph*{.final.} = object 
     index: int32
     x: float64
     y: float64
 
-  TCairoTextExtents* {.final.} = object
+  TTextExtents*{.final.} = object 
     x_bearing: float64
     y_bearing: float64
     width: float64
@@ -179,520 +192,546 @@ type
     x_advance: float64
     y_advance: float64
 
-  TCairoFontExtents* {.final.} = object
+  TFontExtents*{.final.} = object 
     ascent: float64
     descent: float64
     height: float64
     max_x_advance: float64
     max_y_advance: float64
 
-  TCairoPathData* {.final.} = object #* _type : TCairoPathDataType;
-                                     #       length : LongInt;
-                                     #    end
+  TPathData*{.final.} = object  #* _type : TCairoPathDataType;
+                                #       length : LongInt;
+                                #    end
     x: float64
     y: float64
 
-  TCairoPath* {.final.} = object
-    status: TCairoStatus
-    data: PCairoPathData
+  TPath*{.final.} = object 
+    status: TStatus
+    data: PPathData
     num_data: int32
 
-  TCairoRectangle* {.final.} = object
+  TRectangle*{.final.} = object 
     x, y, width, height: float64
 
-  TCairoRectangleList* {.final.} = object
-    status: TCairoStatus
-    rectangles: PCairoRectangle
+  TRectangleList*{.final.} = object 
+    status: TStatus
+    rectangles: PRectangle
     num_rectangles: int32
 
 
-proc cairo_version*(): int32{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_version_string*(): cstring{.cdecl, importc, dynlib: LIB_CAIRO.}
+proc version*(): int32{.cdecl, importc: "cairo_version", dynlib: LIB_CAIRO.}
+proc version_string*(): cstring{.cdecl, importc: "cairo_version_string", 
+                                 dynlib: LIB_CAIRO.}
   #Helper function to retrieve decoded version
-proc cairo_version*(major, minor, micro: var int32)
+proc version*(major, minor, micro: var int32)
   #* Functions for manipulating state objects
-proc cairo_create*(target: PCairoSurface): PCairo{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_reference*(cr: PCairo): PCairo{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_destroy*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_reference_count*(cr: PCairo): int32{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_user_data*(cr: PCairo, key: PCairoUserDataKey): pointer{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_set_user_data*(cr: PCairo, key: PCairoUserDataKey,
-                          user_data: Pointer, destroy: TCairoDestroyFunc): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_save*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_restore*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_push_group*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_push_group_with_content*(cr: PCairo, content: TCairoContent){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pop_group*(cr: PCairo): PCairoPattern{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pop_group_to_source*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc create*(target: PSurface): PContext{.cdecl, importc: "cairo_create", 
+                                   dynlib: LIB_CAIRO.}
+proc reference*(cr: PContext): PContext{.cdecl, importc: "cairo_reference", dynlib: LIB_CAIRO.}
+proc destroy*(cr: PContext){.cdecl, importc: "cairo_destroy", dynlib: LIB_CAIRO.}
+proc get_reference_count*(cr: PContext): int32{.cdecl, 
+    importc: "cairo_get_reference_count", dynlib: LIB_CAIRO.}
+proc get_user_data*(cr: PContext, key: PUserDataKey): pointer{.cdecl, 
+    importc: "cairo_get_user_data", dynlib: LIB_CAIRO.}
+proc set_user_data*(cr: PContext, key: PUserDataKey, user_data: Pointer, 
+                    destroy: TDestroyFunc): TStatus{.cdecl, 
+    importc: "cairo_set_user_data", dynlib: LIB_CAIRO.}
+proc save*(cr: PContext){.cdecl, importc: "cairo_save", dynlib: LIB_CAIRO.}
+proc restore*(cr: PContext){.cdecl, importc: "cairo_restore", dynlib: LIB_CAIRO.}
+proc push_group*(cr: PContext){.cdecl, importc: "cairo_push_group", dynlib: LIB_CAIRO.}
+proc push_group_with_content*(cr: PContext, content: TContent){.cdecl, 
+    importc: "cairo_push_group_with_content", dynlib: LIB_CAIRO.}
+proc pop_group*(cr: PContext): PPattern{.cdecl, importc: "cairo_pop_group", 
+                                  dynlib: LIB_CAIRO.}
+proc pop_group_to_source*(cr: PContext){.cdecl, importc: "cairo_pop_group_to_source", 
+                                  dynlib: LIB_CAIRO.}
   #* Modify state
-proc cairo_set_operator*(cr: PCairo, op: TCairoOperator){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_source*(cr: PCairo, source: PCairoPattern){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_source_rgb*(cr: PCairo, red, green, blue: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_source_rgba*(cr: PCairo, red, green, blue, alpha: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_set_source_surface*(cr: PCairo, surface: PCairoSurface,
-                               x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_set_tolerance*(cr: PCairo, tolerance: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_antialias*(cr: PCairo, antialias: TCairoAntialias){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_fill_rule*(cr: PCairo, fill_rule: TCairoFillRule){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_line_width*(cr: PCairo, width: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_line_cap*(cr: PCairo, line_cap: TCairoLineCap){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_line_join*(cr: PCairo, line_join: TCairoLineJoin){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_dash*(cr: PCairo, dashes: openarray[float64],
-                     offset: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_set_miter_limit*(cr: PCairo, limit: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_translate*(cr: PCairo, tx, ty: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scale*(cr: PCairo, sx, sy: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_rotate*(cr: PCairo, angle: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_transform*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_identity_matrix*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_user_to_device*(cr: PCairo, x, y: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_user_to_device_distance*(cr: PCairo, dx, dy: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_device_to_user*(cr: PCairo, x, y: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_device_to_user_distance*(cr: PCairo, dx, dy: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
+proc set_operator*(cr: PContext, op: TOperator){.cdecl, importc: "cairo_set_operator", 
+    dynlib: LIB_CAIRO.}
+proc set_source*(cr: PContext, source: PPattern){.cdecl, importc: "cairo_set_source", 
+    dynlib: LIB_CAIRO.}
+proc set_source_rgb*(cr: PContext, red, green, blue: float64){.cdecl, 
+    importc: "cairo_set_source_rgb", dynlib: LIB_CAIRO.}
+proc set_source_rgba*(cr: PContext, red, green, blue, alpha: float64){.cdecl, 
+    importc: "cairo_set_source_rgba", dynlib: LIB_CAIRO.}
+proc set_source*(cr: PContext, surface: PSurface, x, y: float64){.cdecl, 
+    importc: "cairo_set_source_surface", dynlib: LIB_CAIRO.}
+proc set_tolerance*(cr: PContext, tolerance: float64){.cdecl, 
+    importc: "cairo_set_tolerance", dynlib: LIB_CAIRO.}
+proc set_antialias*(cr: PContext, antialias: TAntialias){.cdecl, 
+    importc: "cairo_set_antialias", dynlib: LIB_CAIRO.}
+proc set_fill_rule*(cr: PContext, fill_rule: TFillRule){.cdecl, 
+    importc: "cairo_set_fill_rule", dynlib: LIB_CAIRO.}
+proc set_line_width*(cr: PContext, width: float64){.cdecl, 
+    importc: "cairo_set_line_width", dynlib: LIB_CAIRO.}
+proc set_line_cap*(cr: PContext, line_cap: TLineCap){.cdecl, 
+    importc: "cairo_set_line_cap", dynlib: LIB_CAIRO.}
+proc set_line_join*(cr: PContext, line_join: TLineJoin){.cdecl, 
+    importc: "cairo_set_line_join", dynlib: LIB_CAIRO.}
+proc set_dash*(cr: PContext, dashes: openarray[float64], offset: float64){.cdecl, 
+    importc: "cairo_set_dash", dynlib: LIB_CAIRO.}
+proc set_miter_limit*(cr: PContext, limit: float64){.cdecl, 
+    importc: "cairo_set_miter_limit", dynlib: LIB_CAIRO.}
+proc translate*(cr: PContext, tx, ty: float64){.cdecl, importc: "cairo_translate", 
+    dynlib: LIB_CAIRO.}
+proc scale*(cr: PContext, sx, sy: float64){.cdecl, importc: "cairo_scale", 
+                                     dynlib: LIB_CAIRO.}
+proc rotate*(cr: PContext, angle: float64){.cdecl, importc: "cairo_rotate", 
+                                     dynlib: LIB_CAIRO.}
+proc transform*(cr: PContext, matrix: PMatrix){.cdecl, importc: "cairo_transform", 
+    dynlib: LIB_CAIRO.}
+proc set_matrix*(cr: PContext, matrix: PMatrix){.cdecl, importc: "cairo_set_matrix", 
+    dynlib: LIB_CAIRO.}
+proc identity_matrix*(cr: PContext){.cdecl, importc: "cairo_identity_matrix", 
+                              dynlib: LIB_CAIRO.}
+proc user_to_device*(cr: PContext, x, y: var float64){.cdecl, 
+    importc: "cairo_user_to_device", dynlib: LIB_CAIRO.}
+proc user_to_device_distance*(cr: PContext, dx, dy: var float64){.cdecl, 
+    importc: "cairo_user_to_device_distance", dynlib: LIB_CAIRO.}
+proc device_to_user*(cr: PContext, x, y: var float64){.cdecl, 
+    importc: "cairo_device_to_user", dynlib: LIB_CAIRO.}
+proc device_to_user_distance*(cr: PContext, dx, dy: var float64){.cdecl, 
+    importc: "cairo_device_to_user_distance", dynlib: LIB_CAIRO.}
   #* Path creation functions
-proc cairo_new_path*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_move_to*(cr: PCairo, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_new_sub_path*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_line_to*(cr: PCairo, x, y: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_curve_to*(cr: PCairo, x1, y1, x2, y2, x3, y3: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_arc*(cr: PCairo, xc, yc, radius, angle1, angle2: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_arc_negative*(cr: PCairo, xc, yc, radius, angle1, angle2: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_rel_move_to*(cr: PCairo, dx, dy: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_rel_line_to*(cr: PCairo, dx, dy: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_rel_curve_to*(cr: PCairo, dx1, dy1, dx2, dy2, dx3, dy3: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_rectangle*(cr: PCairo, x, y, width, height: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_close_path*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc new_path*(cr: PContext){.cdecl, importc: "cairo_new_path", dynlib: LIB_CAIRO.}
+proc move_to*(cr: PContext, x, y: float64){.cdecl, importc: "cairo_move_to", 
+                                     dynlib: LIB_CAIRO.}
+proc new_sub_path*(cr: PContext){.cdecl, importc: "cairo_new_sub_path", 
+                           dynlib: LIB_CAIRO.}
+proc line_to*(cr: PContext, x, y: float64){.cdecl, importc: "cairo_line_to", 
+                                     dynlib: LIB_CAIRO.}
+proc curve_to*(cr: PContext, x1, y1, x2, y2, x3, y3: float64){.cdecl, 
+    importc: "cairo_curve_to", dynlib: LIB_CAIRO.}
+proc arc*(cr: PContext, xc, yc, radius, angle1, angle2: float64){.cdecl, 
+    importc: "cairo_arc", dynlib: LIB_CAIRO.}
+proc arc_negative*(cr: PContext, xc, yc, radius, angle1, angle2: float64){.cdecl, 
+    importc: "cairo_arc_negative", dynlib: LIB_CAIRO.}
+proc rel_move_to*(cr: PContext, dx, dy: float64){.cdecl, importc: "cairo_rel_move_to", 
+    dynlib: LIB_CAIRO.}
+proc rel_line_to*(cr: PContext, dx, dy: float64){.cdecl, importc: "cairo_rel_line_to", 
+    dynlib: LIB_CAIRO.}
+proc rel_curve_to*(cr: PContext, dx1, dy1, dx2, dy2, dx3, dy3: float64){.cdecl, 
+    importc: "cairo_rel_curve_to", dynlib: LIB_CAIRO.}
+proc rectangle*(cr: PContext, x, y, width, height: float64){.cdecl, 
+    importc: "cairo_rectangle", dynlib: LIB_CAIRO.}
+proc close_path*(cr: PContext){.cdecl, importc: "cairo_close_path", dynlib: LIB_CAIRO.}
   #* Painting functions
-proc cairo_paint*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_paint_with_alpha*(cr: PCairo, alpha: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_mask*(cr: PCairo, pattern: PCairoPattern){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_mask_surface*(cr: PCairo, surface: PCairoSurface,
-                         surface_x, surface_y: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_stroke*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_stroke_preserve*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_fill*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_fill_preserve*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_copy_page*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_show_page*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc paint*(cr: PContext){.cdecl, importc: "cairo_paint", dynlib: LIB_CAIRO.}
+proc paint_with_alpha*(cr: PContext, alpha: float64){.cdecl, 
+    importc: "cairo_paint_with_alpha", dynlib: LIB_CAIRO.}
+proc mask*(cr: PContext, pattern: PPattern){.cdecl, importc: "cairo_mask", 
+                                      dynlib: LIB_CAIRO.}
+proc mask*(cr: PContext, surface: PSurface, surface_x, surface_y: float64){.
+    cdecl, importc: "cairo_mask_surface", dynlib: LIB_CAIRO.}
+proc stroke*(cr: PContext){.cdecl, importc: "cairo_stroke", dynlib: LIB_CAIRO.}
+proc stroke_preserve*(cr: PContext){.cdecl, importc: "cairo_stroke_preserve", 
+                              dynlib: LIB_CAIRO.}
+proc fill*(cr: PContext){.cdecl, importc: "cairo_fill", dynlib: LIB_CAIRO.}
+proc fill_preserve*(cr: PContext){.cdecl, importc: "cairo_fill_preserve", 
+                            dynlib: LIB_CAIRO.}
+proc copy_page*(cr: PContext){.cdecl, importc: "cairo_copy_page", dynlib: LIB_CAIRO.}
+proc show_page*(cr: PContext){.cdecl, importc: "cairo_show_page", dynlib: LIB_CAIRO.}
   #* Insideness testing
-proc cairo_in_stroke*(cr: PCairo, x, y: float64): TCairoBool{.cdecl, importc,
+proc in_stroke*(cr: PContext, x, y: float64): TBool{.cdecl, importc: "cairo_in_stroke", 
     dynlib: LIB_CAIRO.}
-proc cairo_in_fill*(cr: PCairo, x, y: float64): TCairoBool{.cdecl, importc,
+proc in_fill*(cr: PContext, x, y: float64): TBool{.cdecl, importc: "cairo_in_fill", 
     dynlib: LIB_CAIRO.}
   #* Rectangular extents
-proc cairo_stroke_extents*(cr: PCairo, x1, y1, x2, y2: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_fill_extents*(cr: PCairo, x1, y1, x2, y2: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
+proc stroke_extents*(cr: PContext, x1, y1, x2, y2: var float64){.cdecl, 
+    importc: "cairo_stroke_extents", dynlib: LIB_CAIRO.}
+proc fill_extents*(cr: PContext, x1, y1, x2, y2: var float64){.cdecl, 
+    importc: "cairo_fill_extents", dynlib: LIB_CAIRO.}
   #* Clipping
-proc cairo_reset_clip*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_clip*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_clip_preserve*(cr: PCairo){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_clip_extents*(cr: PCairo, x1, y1, x2, y2: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_copy_clip_rectangle_list*(cr: PCairo): PCairoRectangleList{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_rectangle_list_destroy*(rectangle_list: PCairoRectangleList){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
+proc reset_clip*(cr: PContext){.cdecl, importc: "cairo_reset_clip", dynlib: LIB_CAIRO.}
+proc clip*(cr: PContext){.cdecl, importc: "cairo_clip", dynlib: LIB_CAIRO.}
+proc clip_preserve*(cr: PContext){.cdecl, importc: "cairo_clip_preserve", 
+                            dynlib: LIB_CAIRO.}
+proc clip_extents*(cr: PContext, x1, y1, x2, y2: var float64){.cdecl, 
+    importc: "cairo_clip_extents", dynlib: LIB_CAIRO.}
+proc copy_clip_rectangle_list*(cr: PContext): PRectangleList{.cdecl, 
+    importc: "cairo_copy_clip_rectangle_list", dynlib: LIB_CAIRO.}
+proc rectangle_list_destroy*(rectangle_list: PRectangleList){.cdecl, 
+    importc: "cairo_rectangle_list_destroy", dynlib: LIB_CAIRO.}
   #* Font/Text functions
-proc cairo_font_options_create*(): PCairoFontOptions{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_options_copy*(original: PCairoFontOptions): PCairoFontOptions{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_destroy*(options: PCairoFontOptions){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_options_status*(options: PCairoFontOptions): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_merge*(options, other: PCairoFontOptions){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_options_equal*(options, other: PCairoFontOptions): TCairoBool{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_hash*(options: PCairoFontOptions): int32{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_options_set_antialias*(options: PCairoFontOptions,
-                                       antialias: TCairoAntialias){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_options_get_antialias*(options: PCairoFontOptions): TCairoAntialias{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_set_subpixel_order*(options: PCairoFontOptions,
-    subpixel_order: TCairoSubpixelOrder){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_get_subpixel_order*(options: PCairoFontOptions): TCairoSubpixelOrder{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_set_hint_style*(options: PCairoFontOptions,
-                                        hint_style: TCairoHintStyle){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_options_get_hint_style*(options: PCairoFontOptions): TCairoHintStyle{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_set_hint_metrics*(options: PCairoFontOptions,
-    hint_metrics: TCairoHintMetrics){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_options_get_hint_metrics*(options: PCairoFontOptions): TCairoHintMetrics{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
+proc font_options_create*(): PFontOptions{.cdecl, 
+    importc: "cairo_font_options_create", dynlib: LIB_CAIRO.}
+proc copy*(original: PFontOptions): PFontOptions{.cdecl, 
+    importc: "cairo_font_options_copy", dynlib: LIB_CAIRO.}
+proc destroy*(options: PFontOptions){.cdecl, 
+    importc: "cairo_font_options_destroy", dynlib: LIB_CAIRO.}
+proc status*(options: PFontOptions): TStatus{.cdecl, 
+    importc: "cairo_font_options_status", dynlib: LIB_CAIRO.}
+proc merge*(options, other: PFontOptions){.cdecl, 
+    importc: "cairo_font_options_merge", dynlib: LIB_CAIRO.}
+proc equal*(options, other: PFontOptions): TBool{.cdecl, 
+    importc: "cairo_font_options_equal", dynlib: LIB_CAIRO.}
+proc hash*(options: PFontOptions): int32{.cdecl, 
+    importc: "cairo_font_options_hash", dynlib: LIB_CAIRO.}
+proc set_antialias*(options: PFontOptions, antialias: TAntialias){.
+    cdecl, importc: "cairo_font_options_set_antialias", dynlib: LIB_CAIRO.}
+proc get_antialias*(options: PFontOptions): TAntialias{.cdecl, 
+    importc: "cairo_font_options_get_antialias", dynlib: LIB_CAIRO.}
+proc set_subpixel_order*(options: PFontOptions, 
+                                      subpixel_order: TSubpixelOrder){.cdecl, 
+    importc: "cairo_font_options_set_subpixel_order", dynlib: LIB_CAIRO.}
+proc get_subpixel_order*(options: PFontOptions): TSubpixelOrder{.
+    cdecl, importc: "cairo_font_options_get_subpixel_order", dynlib: LIB_CAIRO.}
+proc set_hint_style*(options: PFontOptions, hint_style: THintStyle){.
+    cdecl, importc: "cairo_font_options_set_hint_style", dynlib: LIB_CAIRO.}
+proc get_hint_style*(options: PFontOptions): THintStyle{.cdecl, 
+    importc: "cairo_font_options_get_hint_style", dynlib: LIB_CAIRO.}
+proc set_hint_metrics*(options: PFontOptions, 
+                                    hint_metrics: THintMetrics){.cdecl, 
+    importc: "cairo_font_options_set_hint_metrics", dynlib: LIB_CAIRO.}
+proc get_hint_metrics*(options: PFontOptions): THintMetrics{.cdecl, 
+    importc: "cairo_font_options_get_hint_metrics", dynlib: LIB_CAIRO.}
   #* This interface is for dealing with text as text, not caring about the
   #   font object inside the the TCairo.
-proc cairo_select_font_face*(cr: PCairo, family: cstring,
-                             slant: TCairoFontSlant,
-                             weight: TCairoFontWeight){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_font_size*(cr: PCairo, size: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_set_font_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_font_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_font_options*(cr: PCairo, options: PCairoFontOptions){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_font_options*(cr: PCairo, options: PCairoFontOptions){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_set_font_face*(cr: PCairo, font_face: PCairoFontFace){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_font_face*(cr: PCairo): PCairoFontFace{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_set_scaled_font*(cr: PCairo, scaled_font: PCairoScaledFont){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_scaled_font*(cr: PCairo): PCairoScaledFont{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_show_text*(cr: PCairo, utf8: cstring){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_show_glyphs*(cr: PCairo, glyphs: PCairoGlyph, num_glyphs: int32){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_text_path*(cr: PCairo, utf8: cstring){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_glyph_path*(cr: PCairo, glyphs: PCairoGlyph, num_glyphs: int32){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_text_extents*(cr: PCairo, utf8: cstring,
-                         extents: PCairoTextExtents){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_glyph_extents*(cr: PCairo, glyphs: PCairoGlyph,
-                          num_glyphs: int32, extents: PCairoTextExtents){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_extents*(cr: PCairo, extents: PCairoFontExtents){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
+proc select_font_face*(cr: PContext, family: cstring, slant: TFontSlant, 
+                       weight: TFontWeight){.cdecl, 
+    importc: "cairo_select_font_face", dynlib: LIB_CAIRO.}
+proc set_font_size*(cr: PContext, size: float64){.cdecl, 
+    importc: "cairo_set_font_size", dynlib: LIB_CAIRO.}
+proc set_font_matrix*(cr: PContext, matrix: PMatrix){.cdecl, 
+    importc: "cairo_set_font_matrix", dynlib: LIB_CAIRO.}
+proc get_font_matrix*(cr: PContext, matrix: PMatrix){.cdecl, 
+    importc: "cairo_get_font_matrix", dynlib: LIB_CAIRO.}
+proc set_font_options*(cr: PContext, options: PFontOptions){.cdecl, 
+    importc: "cairo_set_font_options", dynlib: LIB_CAIRO.}
+proc get_font_options*(cr: PContext, options: PFontOptions){.cdecl, 
+    importc: "cairo_get_font_options", dynlib: LIB_CAIRO.}
+proc set_font_face*(cr: PContext, font_face: PFontFace){.cdecl, 
+    importc: "cairo_set_font_face", dynlib: LIB_CAIRO.}
+proc get_font_face*(cr: PContext): PFontFace{.cdecl, importc: "cairo_get_font_face", 
+                                       dynlib: LIB_CAIRO.}
+proc set_scaled_font*(cr: PContext, scaled_font: PScaledFont){.cdecl, 
+    importc: "cairo_set_scaled_font", dynlib: LIB_CAIRO.}
+proc get_scaled_font*(cr: PContext): PScaledFont{.cdecl, 
+    importc: "cairo_get_scaled_font", dynlib: LIB_CAIRO.}
+proc show_text*(cr: PContext, utf8: cstring){.cdecl, importc: "cairo_show_text", 
+                                       dynlib: LIB_CAIRO.}
+proc show_glyphs*(cr: PContext, glyphs: PGlyph, num_glyphs: int32){.cdecl, 
+    importc: "cairo_show_glyphs", dynlib: LIB_CAIRO.}
+proc text_path*(cr: PContext, utf8: cstring){.cdecl, importc: "cairo_text_path", 
+                                       dynlib: LIB_CAIRO.}
+proc glyph_path*(cr: PContext, glyphs: PGlyph, num_glyphs: int32){.cdecl, 
+    importc: "cairo_glyph_path", dynlib: LIB_CAIRO.}
+proc text_extents*(cr: PContext, utf8: cstring, extents: PTextExtents){.cdecl, 
+    importc: "cairo_text_extents", dynlib: LIB_CAIRO.}
+proc glyph_extents*(cr: PContext, glyphs: PGlyph, num_glyphs: int32, 
+                    extents: PTextExtents){.cdecl, 
+    importc: "cairo_glyph_extents", dynlib: LIB_CAIRO.}
+proc font_extents*(cr: PContext, extents: PFontExtents){.cdecl, 
+    importc: "cairo_font_extents", dynlib: LIB_CAIRO.}
   #* Generic identifier for a font style
-proc cairo_font_face_reference*(font_face: PCairoFontFace): PCairoFontFace{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_face_destroy*(font_face: PCairoFontFace){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_font_face_get_reference_count*(font_face: PCairoFontFace): int32{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_face_status*(font_face: PCairoFontFace): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_face_get_type*(font_face: PCairoFontFace): TCairoFontType{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_face_get_user_data*(font_face: PCairoFontFace,
-                                    key: PCairoUserDataKey): pointer{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_font_face_set_user_data*(font_face: PCairoFontFace,
-                                    key: PCairoUserDataKey,
-                                    user_data: pointer,
-                                    destroy: TCairoDestroyFunc): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
+proc reference*(font_face: PFontFace): PFontFace{.cdecl, 
+    importc: "cairo_font_face_reference", dynlib: LIB_CAIRO.}
+proc destroy*(font_face: PFontFace){.cdecl, 
+    importc: "cairo_font_face_destroy", dynlib: LIB_CAIRO.}
+proc get_reference_count*(font_face: PFontFace): int32{.cdecl, 
+    importc: "cairo_font_face_get_reference_count", dynlib: LIB_CAIRO.}
+proc status*(font_face: PFontFace): TStatus{.cdecl, 
+    importc: "cairo_font_face_status", dynlib: LIB_CAIRO.}
+proc get_type*(font_face: PFontFace): TFontType{.cdecl, 
+    importc: "cairo_font_face_get_type", dynlib: LIB_CAIRO.}
+proc get_user_data*(font_face: PFontFace, key: PUserDataKey): pointer{.
+    cdecl, importc: "cairo_font_face_get_user_data", dynlib: LIB_CAIRO.}
+proc set_user_data*(font_face: PFontFace, key: PUserDataKey, 
+                    user_data: pointer, destroy: TDestroyFunc): TStatus{.
+    cdecl, importc: "cairo_font_face_set_user_data", dynlib: LIB_CAIRO.}
   #* Portable interface to general font features
-proc cairo_scaled_font_create*(font_face: PCairoFontFace,
-                               font_matrix: PCairoMatrix,
-                               ctm: PCairoMatrix,
-                               options: PCairoFontOptions): PCairoScaledFont{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_reference*(scaled_font: PCairoScaledFont): PCairoScaledFont{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_destroy*(scaled_font: PCairoScaledFont){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_reference_count*(scaled_font: PCairoScaledFont): int32{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_status*(scaled_font: PCairoScaledFont): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_type*(scaled_font: PCairoScaledFont): TCairoFontType{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_user_data*(scaled_font: PCairoScaledFont,
-                                      key: PCairoUserDataKey): Pointer{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_set_user_data*(scaled_font: PCairoScaledFont,
-                                      key: PCairoUserDataKey,
-                                      user_data: Pointer,
-                                      destroy: TCairoDestroyFunc): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_extents*(scaled_font: PCairoScaledFont,
-                                extents: PCairoFontExtents){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_text_extents*(scaled_font: PCairoScaledFont,
-                                     utf8: cstring,
-                                     extents: PCairoTextExtents){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_glyph_extents*(scaled_font: PCairoScaledFont,
-                                      glyphs: PCairoGlyph, num_glyphs: int32,
-                                      extents: PCairoTextExtents){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_font_face*(scaled_font: PCairoScaledFont): PCairoFontFace{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_font_matrix*(scaled_font: PCairoScaledFont,
-                                        font_matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_ctm*(scaled_font: PCairoScaledFont,
-                                ctm: PCairoMatrix){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_scaled_font_get_font_options*(scaled_font: PCairoScaledFont,
-    options: PCairoFontOptions){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc scaled_font_create*(font_face: PFontFace, font_matrix: PMatrix, 
+                         ctm: PMatrix, options: PFontOptions): PScaledFont{.
+    cdecl, importc: "cairo_scaled_font_create", dynlib: LIB_CAIRO.}
+proc reference*(scaled_font: PScaledFont): PScaledFont{.cdecl, 
+    importc: "cairo_scaled_font_reference", dynlib: LIB_CAIRO.}
+proc destroy*(scaled_font: PScaledFont){.cdecl, 
+    importc: "cairo_scaled_font_destroy", dynlib: LIB_CAIRO.}
+proc get_reference_count*(scaled_font: PScaledFont): int32{.cdecl, 
+    importc: "cairo_scaled_font_get_reference_count", dynlib: LIB_CAIRO.}
+proc status*(scaled_font: PScaledFont): TStatus{.cdecl, 
+    importc: "cairo_scaled_font_status", dynlib: LIB_CAIRO.}
+proc get_type*(scaled_font: PScaledFont): TFontType{.cdecl, 
+    importc: "cairo_scaled_font_get_type", dynlib: LIB_CAIRO.}
+proc get_user_data*(scaled_font: PScaledFont, key: PUserDataKey): Pointer{.
+    cdecl, importc: "cairo_scaled_font_get_user_data", dynlib: LIB_CAIRO.}
+proc set_user_data*(scaled_font: PScaledFont, key: PUserDataKey, 
+                    user_data: Pointer, destroy: TDestroyFunc): TStatus{.
+    cdecl, importc: "cairo_scaled_font_set_user_data", dynlib: LIB_CAIRO.}
+proc extents*(scaled_font: PScaledFont, extents: PFontExtents){.
+    cdecl, importc: "cairo_scaled_font_extents", dynlib: LIB_CAIRO.}
+proc text_extents*(scaled_font: PScaledFont, utf8: cstring, 
+                   extents: PTextExtents){.cdecl, 
+    importc: "cairo_scaled_font_text_extents", dynlib: LIB_CAIRO.}
+proc glyph_extents*(scaled_font: PScaledFont, glyphs: PGlyph, 
+                                num_glyphs: int32, extents: PTextExtents){.
+    cdecl, importc: "cairo_scaled_font_glyph_extents", dynlib: LIB_CAIRO.}
+proc get_font_face*(scaled_font: PScaledFont): PFontFace{.cdecl, 
+    importc: "cairo_scaled_font_get_font_face", dynlib: LIB_CAIRO.}
+proc get_font_matrix*(scaled_font: PScaledFont, font_matrix: PMatrix){.
+    cdecl, importc: "cairo_scaled_font_get_font_matrix", dynlib: LIB_CAIRO.}
+proc get_ctm*(scaled_font: PScaledFont, ctm: PMatrix){.cdecl, 
+    importc: "cairo_scaled_font_get_ctm", dynlib: LIB_CAIRO.}
+proc get_font_options*(scaled_font: PScaledFont, 
+                                   options: PFontOptions){.cdecl, 
+    importc: "cairo_scaled_font_get_font_options", dynlib: LIB_CAIRO.}
   #* Query functions
-proc cairo_get_operator*(cr: PCairo): TCairoOperator{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_source*(cr: PCairo): PCairoPattern{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_tolerance*(cr: PCairo): float64{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_antialias*(cr: PCairo): TCairoAntialias{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_current_point*(cr: PCairo, x, y: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_fill_rule*(cr: PCairo): TCairoFillRule{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_line_width*(cr: PCairo): float64{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_line_cap*(cr: PCairo): TCairoLineCap{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_line_join*(cr: PCairo): TCairoLineJoin{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_miter_limit*(cr: PCairo): float64{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_dash_count*(cr: PCairo): int32{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_dash*(cr: PCairo, dashes, offset: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_matrix*(cr: PCairo, matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_get_target*(cr: PCairo): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_get_group_target*(cr: PCairo): PCairoSurface{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_copy_path*(cr: PCairo): PCairoPath{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_copy_path_flat*(cr: PCairo): PCairoPath{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_append_path*(cr: PCairo, path: PCairoPath){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_path_destroy*(path: PCairoPath){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc get_operator*(cr: PContext): TOperator{.cdecl, importc: "cairo_get_operator", 
+                                      dynlib: LIB_CAIRO.}
+proc get_source*(cr: PContext): PPattern{.cdecl, importc: "cairo_get_source", 
+                                   dynlib: LIB_CAIRO.}
+proc get_tolerance*(cr: PContext): float64{.cdecl, importc: "cairo_get_tolerance", 
+                                     dynlib: LIB_CAIRO.}
+proc get_antialias*(cr: PContext): TAntialias{.cdecl, importc: "cairo_get_antialias", 
+                                        dynlib: LIB_CAIRO.}
+proc get_current_point*(cr: PContext, x, y: var float64){.cdecl, 
+    importc: "cairo_get_current_point", dynlib: LIB_CAIRO.}
+proc get_fill_rule*(cr: PContext): TFillRule{.cdecl, importc: "cairo_get_fill_rule", 
+                                       dynlib: LIB_CAIRO.}
+proc get_line_width*(cr: PContext): float64{.cdecl, importc: "cairo_get_line_width", 
+                                      dynlib: LIB_CAIRO.}
+proc get_line_cap*(cr: PContext): TLineCap{.cdecl, importc: "cairo_get_line_cap", 
+                                     dynlib: LIB_CAIRO.}
+proc get_line_join*(cr: PContext): TLineJoin{.cdecl, importc: "cairo_get_line_join", 
+                                       dynlib: LIB_CAIRO.}
+proc get_miter_limit*(cr: PContext): float64{.cdecl, importc: "cairo_get_miter_limit", 
+                                       dynlib: LIB_CAIRO.}
+proc get_dash_count*(cr: PContext): int32{.cdecl, importc: "cairo_get_dash_count", 
+                                    dynlib: LIB_CAIRO.}
+proc get_dash*(cr: PContext, dashes, offset: var float64){.cdecl, 
+    importc: "cairo_get_dash", dynlib: LIB_CAIRO.}
+proc get_matrix*(cr: PContext, matrix: PMatrix){.cdecl, importc: "cairo_get_matrix", 
+    dynlib: LIB_CAIRO.}
+proc get_target*(cr: PContext): PSurface{.cdecl, importc: "cairo_get_target", 
+                                   dynlib: LIB_CAIRO.}
+proc get_group_target*(cr: PContext): PSurface{.cdecl, 
+    importc: "cairo_get_group_target", dynlib: LIB_CAIRO.}
+proc copy_path*(cr: PContext): PPath{.cdecl, importc: "cairo_copy_path", 
+                               dynlib: LIB_CAIRO.}
+proc copy_path_flat*(cr: PContext): PPath{.cdecl, importc: "cairo_copy_path_flat", 
+                                    dynlib: LIB_CAIRO.}
+proc append_path*(cr: PContext, path: PPath){.cdecl, importc: "cairo_append_path", 
+                                       dynlib: LIB_CAIRO.}
+proc destroy*(path: PPath){.cdecl, importc: "cairo_path_destroy", 
+                                 dynlib: LIB_CAIRO.}
   #* Error status queries
-proc cairo_status*(cr: PCairo): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_status_to_string*(status: TCairoStatus): cstring{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
+proc status*(cr: PContext): TStatus{.cdecl, importc: "cairo_status", dynlib: LIB_CAIRO.}
+proc status_to_string*(status: TStatus): cstring{.cdecl, 
+    importc: "cairo_status_to_string", dynlib: LIB_CAIRO.}
   #* Surface manipulation
-proc cairo_surface_create_similar*(other: PCairoSurface,
-                                   content: TCairoContent,
-                                   width, height: int32): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_reference*(surface: PCairoSurface): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_finish*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_destroy*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_get_reference_count*(surface: PCairoSurface): int32{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_status*(surface: PCairoSurface): TCairoStatus{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_surface_get_type*(surface: PCairoSurface): TCairoSurfaceType{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_get_content*(surface: PCairoSurface): TCairoContent{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_write_to_png*(surface: PCairoSurface, filename: cstring): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_write_to_png_stream*(surface: PCairoSurface,
-                                        write_func: TCairoWriteFunc,
-                                        closure: pointer): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_get_user_data*(surface: PCairoSurface,
-                                  key: PCairoUserDataKey): pointer{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_surface_set_user_data*(surface: PCairoSurface,
-                                  key: PCairoUserDataKey,
-                                  user_data: pointer,
-                                  destroy: TCairoDestroyFunc): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_get_font_options*(surface: PCairoSurface,
-                                     options: PCairoFontOptions){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_surface_flush*(surface: PCairoSurface){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_mark_dirty*(surface: PCairoSurface){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_surface_mark_dirty_rectangle*(surface: PCairoSurface,
-    x, y, width, height: int32){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_surface_set_device_offset*(surface: PCairoSurface,
-                                      x_offset, y_offset: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_surface_get_device_offset*(surface: PCairoSurface,
-                                      x_offset, y_offset: var float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_surface_set_fallback_resolution*(surface: PCairoSurface,
-    x_pixels_per_inch, y_pixels_per_inch: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc surface_create_similar*(other: PSurface, content: TContent, 
+                             width, height: int32): PSurface{.cdecl, 
+    importc: "cairo_surface_create_similar", dynlib: LIB_CAIRO.}
+proc reference*(surface: PSurface): PSurface{.cdecl, 
+    importc: "cairo_surface_reference", dynlib: LIB_CAIRO.}
+proc finish*(surface: PSurface){.cdecl, importc: "cairo_surface_finish", 
+    dynlib: LIB_CAIRO.}
+proc destroy*(surface: PSurface){.cdecl, 
+    importc: "cairo_surface_destroy", dynlib: LIB_CAIRO.}
+proc get_reference_count*(surface: PSurface): int32{.cdecl, 
+    importc: "cairo_surface_get_reference_count", dynlib: LIB_CAIRO.}
+proc status*(surface: PSurface): TStatus{.cdecl, 
+    importc: "cairo_surface_status", dynlib: LIB_CAIRO.}
+proc get_type*(surface: PSurface): TSurfaceType{.cdecl, 
+    importc: "cairo_surface_get_type", dynlib: LIB_CAIRO.}
+proc get_content*(surface: PSurface): TContent{.cdecl, 
+    importc: "cairo_surface_get_content", dynlib: LIB_CAIRO.}
+proc write_to_png*(surface: PSurface, filename: cstring): TStatus{.
+    cdecl, importc: "cairo_surface_write_to_png", dynlib: LIB_CAIRO.}
+proc write_to_png*(surface: PSurface, write_func: TWriteFunc, 
+                   closure: pointer): TStatus{.cdecl, 
+    importc: "cairo_surface_write_to_png_stream", dynlib: LIB_CAIRO.}
+proc get_user_data*(surface: PSurface, key: PUserDataKey): pointer{.
+    cdecl, importc: "cairo_surface_get_user_data", dynlib: LIB_CAIRO.}
+proc set_user_data*(surface: PSurface, key: PUserDataKey, 
+                            user_data: pointer, destroy: TDestroyFunc): TStatus{.
+    cdecl, importc: "cairo_surface_set_user_data", dynlib: LIB_CAIRO.}
+proc get_font_options*(surface: PSurface, options: PFontOptions){.cdecl, 
+    importc: "cairo_surface_get_font_options", dynlib: LIB_CAIRO.}
+proc flush*(surface: PSurface){.cdecl, importc: "cairo_surface_flush", 
+                                        dynlib: LIB_CAIRO.}
+proc mark_dirty*(surface: PSurface){.cdecl, 
+    importc: "cairo_surface_mark_dirty", dynlib: LIB_CAIRO.}
+proc mark_dirty_rectangle*(surface: PSurface, x, y, width, height: int32){.
+    cdecl, importc: "cairo_surface_mark_dirty_rectangle", dynlib: LIB_CAIRO.}
+proc set_device_offset*(surface: PSurface, x_offset, y_offset: float64){.
+    cdecl, importc: "cairo_surface_set_device_offset", dynlib: LIB_CAIRO.}
+proc get_device_offset*(surface: PSurface, 
+                                x_offset, y_offset: var float64){.cdecl, 
+    importc: "cairo_surface_get_device_offset", dynlib: LIB_CAIRO.}
+proc set_fallback_resolution*(surface: PSurface, x_pixels_per_inch, 
+    y_pixels_per_inch: float64){.cdecl, importc: "cairo_surface_set_fallback_resolution", 
+                                 dynlib: LIB_CAIRO.}
   #* Image-surface functions
-proc cairo_image_surface_create*(format: TCairoFormat, width, height: int32): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_image_surface_create_for_data*(data: Pbyte, format: TCairoFormat,
-    width, height, stride: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_image_surface_get_data*(surface: PCairoSurface): cstring{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_image_surface_get_format*(surface: PCairoSurface): TCairoFormat{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_image_surface_get_width*(surface: PCairoSurface): int32{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_image_surface_get_height*(surface: PCairoSurface): int32{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_image_surface_get_stride*(surface: PCairoSurface): int32{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_image_surface_create_from_png*(filename: cstring): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_image_surface_create_from_png_stream*(read_func: TCairoReadFunc,
-    closure: pointer): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.}
+proc image_surface_create*(format: TFormat, width, height: int32): PSurface{.
+    cdecl, importc: "cairo_image_surface_create", dynlib: LIB_CAIRO.}
+proc image_surface_create*(data: Pbyte, format: TFormat, 
+                           width, height, stride: int32): PSurface{.
+    cdecl, importc: "cairo_image_surface_create_for_data", dynlib: LIB_CAIRO.}
+proc get_data*(surface: PSurface): cstring{.cdecl, 
+    importc: "cairo_image_surface_get_data", dynlib: LIB_CAIRO.}
+proc get_format*(surface: PSurface): TFormat{.cdecl, 
+    importc: "cairo_image_surface_get_format", dynlib: LIB_CAIRO.}
+proc get_width*(surface: PSurface): int32{.cdecl, 
+    importc: "cairo_image_surface_get_width", dynlib: LIB_CAIRO.}
+proc get_height*(surface: PSurface): int32{.cdecl, 
+    importc: "cairo_image_surface_get_height", dynlib: LIB_CAIRO.}
+proc get_stride*(surface: PSurface): int32{.cdecl, 
+    importc: "cairo_image_surface_get_stride", dynlib: LIB_CAIRO.}
+proc image_surface_create_from_png*(filename: cstring): PSurface{.cdecl, 
+    importc: "cairo_image_surface_create_from_png", dynlib: LIB_CAIRO.}
+proc image_surface_create_from_png*(read_func: TReadFunc, 
+    closure: pointer): PSurface{.cdecl, importc: "cairo_image_surface_create_from_png_stream", 
+                                 dynlib: LIB_CAIRO.}
   #* Pattern creation functions
-proc cairo_pattern_create_rgb*(red, green, blue: float64): PCairoPattern{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_create_rgba*(red, green, blue, alpha: float64): PCairoPattern{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_create_for_surface*(surface: PCairoSurface): PCairoPattern{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_create_linear*(x0, y0, x1, y1: float64): PCairoPattern{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_create_radial*(cx0, cy0, radius0, cx1, cy1, radius1: float64): PCairoPattern{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_reference*(pattern: PCairoPattern): PCairoPattern{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_destroy*(pattern: PCairoPattern){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_reference_count*(pattern: PCairoPattern): int32{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_status*(pattern: PCairoPattern): TCairoStatus{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_user_data*(pattern: PCairoPattern,
-                                  key: PCairoUserDataKey): Pointer{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_pattern_set_user_data*(pattern: PCairoPattern,
-                                  key: PCairoUserDataKey,
-                                  user_data: Pointer,
-                                  destroy: TCairoDestroyFunc): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_type*(pattern: PCairoPattern): TCairoPatternType{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_add_color_stop_rgb*(pattern: PCairoPattern,
-                                       offset, red, green, blue: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_add_color_stop_rgba*(pattern: PCairoPattern, offset, red,
-    green, blue, alpha: float64){.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_set_matrix*(pattern: PCairoPattern,
-                               matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_matrix*(pattern: PCairoPattern,
-                               matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_pattern_set_extend*(pattern: PCairoPattern, extend: TCairoExtend){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_extend*(pattern: PCairoPattern): TCairoExtend{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_set_filter*(pattern: PCairoPattern, filter: TCairoFilter){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_filter*(pattern: PCairoPattern): TCairoFilter{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_rgba*(pattern: PCairoPattern,
-                             red, green, blue, alpha: var float64): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_surface*(pattern: PCairoPattern,
-                                surface: PPCairoSurface): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_color_stop_rgba*(pattern: PCairoPattern, index: int32,
-    offset, red, green, blue, alpha: var float64): TCairoStatus{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_color_stop_count*(pattern: PCairoPattern,
-    count: var int32): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_linear_points*(pattern: PCairoPattern,
-                                      x0, y0, x1, y1: var float64): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pattern_get_radial_circles*(pattern: PCairoPattern,
-                                       x0, y0, r0, x1, y1, r1: var float64): TCairoStatus{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
+proc pattern_create_rgb*(red, green, blue: float64): PPattern{.cdecl, 
+    importc: "cairo_pattern_create_rgb", dynlib: LIB_CAIRO.}
+proc pattern_create_rgba*(red, green, blue, alpha: float64): PPattern{.cdecl, 
+    importc: "cairo_pattern_create_rgba", dynlib: LIB_CAIRO.}
+proc pattern_create_for_surface*(surface: PSurface): PPattern{.cdecl, 
+    importc: "cairo_pattern_create_for_surface", dynlib: LIB_CAIRO.}
+proc pattern_create_linear*(x0, y0, x1, y1: float64): PPattern{.cdecl, 
+    importc: "cairo_pattern_create_linear", dynlib: LIB_CAIRO.}
+proc pattern_create_radial*(cx0, cy0, radius0, cx1, cy1, radius1: float64): PPattern{.
+    cdecl, importc: "cairo_pattern_create_radial", dynlib: LIB_CAIRO.}
+proc reference*(pattern: PPattern): PPattern{.cdecl, 
+    importc: "cairo_pattern_reference", dynlib: LIB_CAIRO.}
+proc destroy*(pattern: PPattern){.cdecl, 
+    importc: "cairo_pattern_destroy", dynlib: LIB_CAIRO.}
+proc get_reference_count*(pattern: PPattern): int32{.cdecl, 
+    importc: "cairo_pattern_get_reference_count", dynlib: LIB_CAIRO.}
+proc status*(pattern: PPattern): TStatus{.cdecl, 
+    importc: "cairo_pattern_status", dynlib: LIB_CAIRO.}
+proc get_user_data*(pattern: PPattern, key: PUserDataKey): Pointer{.
+    cdecl, importc: "cairo_pattern_get_user_data", dynlib: LIB_CAIRO.}
+proc set_user_data*(pattern: PPattern, key: PUserDataKey, 
+                    user_data: Pointer, destroy: TDestroyFunc): TStatus{.
+    cdecl, importc: "cairo_pattern_set_user_data", dynlib: LIB_CAIRO.}
+proc get_type*(pattern: PPattern): TPatternType{.cdecl, 
+    importc: "cairo_pattern_get_type", dynlib: LIB_CAIRO.}
+proc add_color_stop_rgb*(pattern: PPattern, 
+                                 offset, red, green, blue: float64){.cdecl, 
+    importc: "cairo_pattern_add_color_stop_rgb", dynlib: LIB_CAIRO.}
+proc add_color_stop_rgba*(pattern: PPattern, 
+                                  offset, red, green, blue, alpha: float64){.
+    cdecl, importc: "cairo_pattern_add_color_stop_rgba", dynlib: LIB_CAIRO.}
+proc set_matrix*(pattern: PPattern, matrix: PMatrix){.cdecl, 
+    importc: "cairo_pattern_set_matrix", dynlib: LIB_CAIRO.}
+proc get_matrix*(pattern: PPattern, matrix: PMatrix){.cdecl, 
+    importc: "cairo_pattern_get_matrix", dynlib: LIB_CAIRO.}
+proc set_extend*(pattern: PPattern, extend: TExtend){.cdecl, 
+    importc: "cairo_pattern_set_extend", dynlib: LIB_CAIRO.}
+proc get_extend*(pattern: PPattern): TExtend{.cdecl, 
+    importc: "cairo_pattern_get_extend", dynlib: LIB_CAIRO.}
+proc set_filter*(pattern: PPattern, filter: TFilter){.cdecl, 
+    importc: "cairo_pattern_set_filter", dynlib: LIB_CAIRO.}
+proc get_filter*(pattern: PPattern): TFilter{.cdecl, 
+    importc: "cairo_pattern_get_filter", dynlib: LIB_CAIRO.}
+proc get_rgba*(pattern: PPattern, 
+               red, green, blue, alpha: var float64): TStatus{.
+    cdecl, importc: "cairo_pattern_get_rgba", dynlib: LIB_CAIRO.}
+proc get_surface*(pattern: PPattern, surface: PPSurface): TStatus{.
+    cdecl, importc: "cairo_pattern_get_surface", dynlib: LIB_CAIRO.}
+proc get_color_stop_rgba*(pattern: PPattern, index: int32, 
+                       offset, red, green, blue, alpha: var float64): TStatus{.
+    cdecl, importc: "cairo_pattern_get_color_stop_rgba", dynlib: LIB_CAIRO.}
+proc get_color_stop_count*(pattern: PPattern, count: var int32): TStatus{.
+    cdecl, importc: "cairo_pattern_get_color_stop_count", dynlib: LIB_CAIRO.}
+proc get_linear_points*(pattern: PPattern, 
+                        x0, y0, x1, y1: var float64): TStatus{.
+    cdecl, importc: "cairo_pattern_get_linear_points", dynlib: LIB_CAIRO.}
+proc get_radial_circles*(pattern: PPattern, 
+                         x0, y0, r0, x1, y1, r1: var float64): TStatus{.
+    cdecl, importc: "cairo_pattern_get_radial_circles", dynlib: LIB_CAIRO.}
   #* Matrix functions
-proc cairo_matrix_init*(matrix: PCairoMatrix, xx, yx, xy, yy, x0, y0: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_matrix_init_identity*(matrix: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_init_translate*(matrix: PCairoMatrix, tx, ty: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_matrix_init_scale*(matrix: PCairoMatrix, sx, sy: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_init_rotate*(matrix: PCairoMatrix, radians: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_matrix_translate*(matrix: PCairoMatrix, tx, ty: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_scale*(matrix: PCairoMatrix, sx, sy: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_rotate*(matrix: PCairoMatrix, radians: float64){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_invert*(matrix: PCairoMatrix): TCairoStatus{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_multiply*(result, a, b: PCairoMatrix){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_matrix_transform_distance*(matrix: PCairoMatrix, dx, dy: var float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_matrix_transform_point*(matrix: PCairoMatrix, x, y: var float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
+proc init*(matrix: PMatrix, xx, yx, xy, yy, x0, y0: float64){.cdecl, 
+    importc: "cairo_matrix_init", dynlib: LIB_CAIRO.}
+proc init_identity*(matrix: PMatrix){.cdecl, 
+    importc: "cairo_matrix_init_identity", dynlib: LIB_CAIRO.}
+proc init_translate*(matrix: PMatrix, tx, ty: float64){.cdecl, 
+    importc: "cairo_matrix_init_translate", dynlib: LIB_CAIRO.}
+proc init_scale*(matrix: PMatrix, sx, sy: float64){.cdecl, 
+    importc: "cairo_matrix_init_scale", dynlib: LIB_CAIRO.}
+proc init_rotate*(matrix: PMatrix, radians: float64){.cdecl, 
+    importc: "cairo_matrix_init_rotate", dynlib: LIB_CAIRO.}
+proc translate*(matrix: PMatrix, tx, ty: float64){.cdecl, 
+    importc: "cairo_matrix_translate", dynlib: LIB_CAIRO.}
+proc scale*(matrix: PMatrix, sx, sy: float64){.cdecl, 
+    importc: "cairo_matrix_scale", dynlib: LIB_CAIRO.}
+proc rotate*(matrix: PMatrix, radians: float64){.cdecl, 
+    importc: "cairo_matrix_rotate", dynlib: LIB_CAIRO.}
+proc invert*(matrix: PMatrix): TStatus{.cdecl, 
+    importc: "cairo_matrix_invert", dynlib: LIB_CAIRO.}
+proc multiply*(result, a, b: PMatrix){.cdecl, 
+    importc: "cairo_matrix_multiply", dynlib: LIB_CAIRO.}
+proc transform_distance*(matrix: PMatrix, dx, dy: var float64){.cdecl, 
+    importc: "cairo_matrix_transform_distance", dynlib: LIB_CAIRO.}
+proc transform_point*(matrix: PMatrix, x, y: var float64){.cdecl, 
+    importc: "cairo_matrix_transform_point", dynlib: LIB_CAIRO.}
   #* PDF functions
-proc cairo_pdf_surface_create*(filename: cstring,
-                               width_in_points, height_in_points: float64): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pdf_surface_create_for_stream*(write_func: TCairoWriteFunc,
-    closure: Pointer, width_in_points, height_in_points: float64): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_pdf_surface_set_size*(surface: PCairoSurface,
-                                 width_in_points, height_in_points: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
+proc pdf_surface_create*(filename: cstring, 
+                         width_in_points, height_in_points: float64): PSurface{.
+    cdecl, importc: "cairo_pdf_surface_create", dynlib: LIB_CAIRO.}
+proc pdf_surface_create_for_stream*(write_func: TWriteFunc, closure: Pointer, 
+                                    width_in_points, height_in_points: float64): PSurface{.
+    cdecl, importc: "cairo_pdf_surface_create_for_stream", dynlib: LIB_CAIRO.}
+proc pdf_surface_set_size*(surface: PSurface, 
+                           width_in_points, height_in_points: float64){.cdecl, 
+    importc: "cairo_pdf_surface_set_size", dynlib: LIB_CAIRO.}
   #* PS functions
-proc cairo_ps_surface_create*(filename: cstring,
-                              width_in_points, height_in_points: float64): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ps_surface_create_for_stream*(write_func: TCairoWriteFunc,
-    closure: Pointer, width_in_points, height_in_points: float64): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ps_surface_set_size*(surface: PCairoSurface,
-                                width_in_points, height_in_points: float64){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ps_surface_dsc_comment*(surface: PCairoSurface, comment: cstring){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ps_surface_dsc_begin_setup*(surface: PCairoSurface){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
-proc cairo_ps_surface_dsc_begin_page_setup*(surface: PCairoSurface){.cdecl, importc,
-    dynlib: LIB_CAIRO.}
+proc ps_surface_create*(filename: cstring, 
+                        width_in_points, height_in_points: float64): PSurface{.
+    cdecl, importc: "cairo_ps_surface_create", dynlib: LIB_CAIRO.}
+proc ps_surface_create_for_stream*(write_func: TWriteFunc, closure: Pointer, 
+                                   width_in_points, height_in_points: float64): PSurface{.
+    cdecl, importc: "cairo_ps_surface_create_for_stream", dynlib: LIB_CAIRO.}
+proc ps_surface_set_size*(surface: PSurface, 
+                          width_in_points, height_in_points: float64){.cdecl, 
+    importc: "cairo_ps_surface_set_size", dynlib: LIB_CAIRO.}
+proc ps_surface_dsc_comment*(surface: PSurface, comment: cstring){.cdecl, 
+    importc: "cairo_ps_surface_dsc_comment", dynlib: LIB_CAIRO.}
+proc ps_surface_dsc_begin_setup*(surface: PSurface){.cdecl, 
+    importc: "cairo_ps_surface_dsc_begin_setup", dynlib: LIB_CAIRO.}
+proc ps_surface_dsc_begin_page_setup*(surface: PSurface){.cdecl, 
+    importc: "cairo_ps_surface_dsc_begin_page_setup", dynlib: LIB_CAIRO.}
   #* SVG functions
-proc cairo_svg_surface_create*(filename: cstring,
-                               width_in_points, height_in_points: float64): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_svg_surface_create_for_stream*(write_func: TCairoWriteFunc,
-    closure: Pointer, width_in_points, height_in_points: float64): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_svg_surface_restrict_to_version*(surface: PCairoSurface,
-    version: TCairoSvgVersion){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc svg_surface_create*(filename: cstring, 
+                         width_in_points, height_in_points: float64): PSurface{.
+    cdecl, importc: "cairo_svg_surface_create", dynlib: LIB_CAIRO.}
+proc svg_surface_create_for_stream*(write_func: TWriteFunc, closure: Pointer, 
+                                    width_in_points, height_in_points: float64): PSurface{.
+    cdecl, importc: "cairo_svg_surface_create_for_stream", dynlib: LIB_CAIRO.}
+proc svg_surface_restrict_to_version*(surface: PSurface, version: TSvgVersion){.
+    cdecl, importc: "cairo_svg_surface_restrict_to_version", dynlib: LIB_CAIRO.}
   #todo: see how translate this
   #procedure cairo_svg_get_versions(TCairoSvgVersion const	**versions,
   #                        int                      	 *num_versions);
-proc cairo_svg_version_to_string*(version: TCairoSvgVersion): cstring{.cdecl, importc,
-    dynlib: LIB_CAIRO.}
+proc svg_version_to_string*(version: TSvgVersion): cstring{.cdecl, 
+    importc: "cairo_svg_version_to_string", dynlib: LIB_CAIRO.}
   #* Functions to be used while debugging (not intended for use in production code)
-proc cairo_debug_reset_static_data*(){.cdecl, importc, dynlib: LIB_CAIRO.}
+proc debug_reset_static_data*(){.cdecl, 
+                                 importc: "cairo_debug_reset_static_data", 
+                                 dynlib: LIB_CAIRO.}
 # implementation
 
-proc cairo_version(major, minor, micro: var int32) =
+proc version(major, minor, micro: var int32) = 
   var version: int32
-  version = cairo_version()
+  version = version()
   major = version div 10000'i32
   minor = (version mod (major * 10000'i32)) div 100'i32
   micro = (version mod ((major * 10000'i32) + (minor * 100'i32)))
+  
+proc checkStatus*(s: cairo.TStatus) {.noinline.} = 
+  ## if ``s != StatusSuccess`` the error is turned into an appropirate Nimrod
+  ## exception and raised.
+  case s
+  of StatusSuccess: nil
+  of StatusNoMemory: 
+    raise newException(EOutOfMemory, $statusToString(s))
+  of STATUS_READ_ERROR, STATUS_WRITE_ERROR, STATUS_FILE_NOT_FOUND, 
+     STATUS_TEMP_FILE_ERROR:
+    raise newException(EIO, $statusToString(s))
+  else:
+    raise newException(EAssertionFailed, $statusToString(s))
+
+
diff --git a/lib/wrappers/cairo/cairoft.nim b/lib/wrappers/cairo/cairoft.nim
deleted file mode 100755
index 2418aa922..000000000
--- a/lib/wrappers/cairo/cairoft.nim
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Translation of cairo-ft.h 
-# by Jeffrey Pohlmeyer 
-# updated to version 1.4 by Luiz Américo Pereira Câmara 2007
-#
-
-import cairo, freetypeh
-
-#todo: properly define FcPattern:
-#It will require translate FontConfig header
-
-#*
-#typedef struct _XftPattern {
-#  int		    num;
-#  int		    size;
-#  XftPatternElt   *elts;
-# } XftPattern;
-# typedef FcPattern XftPattern;
-#
-
-type 
-  FcPattern* = Pointer
-  PFcPattern* = ptr FcPattern
-
-proc cairo_ft_font_face_create_for_pattern*(pattern: PFcPattern): PCairoFontFace{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ft_font_options_substitute*(options: PCairoFontOptions, 
-                                       pattern: PFcPattern){.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_ft_font_face_create_for_ft_face*(face: TFT_Face, 
-       load_flags: int32): PCairoFontFace {.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ft_scaled_font_lock_face*(
-  scaled_font: PCairoScaledFont): TFT_Face{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_ft_scaled_font_unlock_face*(
-  scaled_font: PCairoScaledFont){.cdecl, importc, dynlib: LIB_CAIRO.}
-
diff --git a/lib/wrappers/cairo/cairowin32.nim b/lib/wrappers/cairo/cairowin32.nim
deleted file mode 100755
index 5d07c2611..000000000
--- a/lib/wrappers/cairo/cairowin32.nim
+++ /dev/null
@@ -1,36 +0,0 @@
-
-#
-# Translation of cairo-win32.h version 1.4
-# by Luiz Américo Pereira Câmara 2007
-#
-
-import 
-  Cairo, windows
-
-proc cairo_win32_surface_create*(hdc: HDC): PCairoSurface{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_win32_surface_create_with_ddb*(hdc: HDC, format: TCairoFormat, 
-    width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_surface_create_with_dib*(format: TCairoFormat, 
-    width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_surface_get_dc*(surface: PCairoSurface): HDC{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_win32_surface_get_image*(surface: PCairoSurface): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_font_face_create_for_logfontw*(logfont: pLOGFONTW): PCairoFontFace{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_font_face_create_for_hfont*(font: HFONT): PCairoFontFace{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_scaled_font_select_font*(scaled_font: PCairoScaledFont, 
-    hdc: HDC): TCairoStatus{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_scaled_font_done_font*(scaled_font: PCairoScaledFont){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_scaled_font_get_metrics_factor*(
-    scaled_font: PCairoScaledFont): float64{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_scaled_font_get_logical_to_device*(
-    scaled_font: PCairoScaledFont, logical_to_device: PCairoMatrix){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_win32_scaled_font_get_device_to_logical*(
-    scaled_font: PCairoScaledFont, device_to_logical: PCairoMatrix){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-# implementation
diff --git a/lib/wrappers/cairo/cairoxlib.nim b/lib/wrappers/cairo/cairoxlib.nim
deleted file mode 100755
index dfe44eb87..000000000
--- a/lib/wrappers/cairo/cairoxlib.nim
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#
-# Translation of cairo-xlib.h version 1.4
-# by Jeffrey Pohlmeyer 
-# updated to version 1.4 by Luiz Américo Pereira Câmara 2007
-#
-
-import 
-  Cairo, x, xlib, xrender
-
-proc cairo_xlib_surface_create*(dpy: PDisplay, drawable: TDrawable, 
-                                visual: PVisual, width, height: int32): PCairoSurface{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_create_for_bitmap*(dpy: PDisplay, bitmap: TPixmap, 
-    screen: PScreen, width, height: int32): PCairoSurface{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_create_with_xrender_format*(dpy: PDisplay, 
-    drawable: TDrawable, screen: PScreen, format: PXRenderPictFormat, 
-    width, height: int32): PCairoSurface{.cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_depth*(surface: PCairoSurface): int32{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_display*(surface: PCairoSurface): PDisplay{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_drawable*(surface: PCairoSurface): TDrawable{.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_height*(surface: PCairoSurface): int32{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_screen*(surface: PCairoSurface): PScreen{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_visual*(surface: PCairoSurface): PVisual{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_get_width*(surface: PCairoSurface): int32{.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_set_size*(surface: PCairoSurface, 
-                                  width, height: int32){.cdecl, importc, 
-    dynlib: LIB_CAIRO.}
-proc cairo_xlib_surface_set_drawable*(surface: PCairoSurface, 
-                                      drawable: TDrawable, width, height: int32){.
-    cdecl, importc, dynlib: LIB_CAIRO.}
-# implementation
diff --git a/lib/wrappers/gtk/atk.nim b/lib/wrappers/gtk/atk.nim
deleted file mode 100755
index ae7a34c4b..000000000
--- a/lib/wrappers/gtk/atk.nim
+++ /dev/null
@@ -1,1369 +0,0 @@
-{.deadCodeElim: on.}
-
-import
-  glib2
-
-when defined(windows):
-  const
-    atklib = "libatk-1.0-0.dll"
-else:
-  const
-    atklib = "libatk-1.0.so"
-type
-  PAtkImplementor* = pointer
-  PAtkAction* = pointer
-  PAtkComponent* = pointer
-  PAtkDocument* = pointer
-  PAtkEditableText* = pointer
-  PAtkHypertext* = pointer
-  PAtkImage* = pointer
-  PAtkSelection* = pointer
-  PAtkStreamableContent* = pointer
-  PAtkTable* = pointer
-  PAtkText* = pointer
-  PAtkValue* = pointer
-  PAtkRelationSet* = ptr TAtkRelationSet
-  PAtkStateSet* = ptr TAtkStateSet
-  PAtkAttributeSet* = ptr TAtkAttributeSet
-  PAtkCoordType* = ptr TAtkCoordType
-  TAtkCoordType* = enum
-    ATK_XY_SCREEN, ATK_XY_WINDOW
-  PAtkRole* = ptr TAtkRole
-  TAtkRole* = enum
-    ATK_ROLE_INVALID, ATK_ROLE_ACCEL_LABEL, ATK_ROLE_ALERT, ATK_ROLE_ANIMATION,
-    ATK_ROLE_ARROW, ATK_ROLE_CALENDAR, ATK_ROLE_CANVAS, ATK_ROLE_CHECK_BOX,
-    ATK_ROLE_CHECK_MENU_ITEM, ATK_ROLE_COLOR_CHOOSER, ATK_ROLE_COLUMN_HEADER,
-    ATK_ROLE_COMBO_BOX, ATK_ROLE_DATE_EDITOR, ATK_ROLE_DESKTOP_ICON,
-    ATK_ROLE_DESKTOP_FRAME, ATK_ROLE_DIAL, ATK_ROLE_DIALOG,
-    ATK_ROLE_DIRECTORY_PANE, ATK_ROLE_DRAWING_AREA, ATK_ROLE_FILE_CHOOSER,
-    ATK_ROLE_FILLER, ATK_ROLE_FONT_CHOOSER, ATK_ROLE_FRAME, ATK_ROLE_GLASS_PANE,
-    ATK_ROLE_HTML_CONTAINER, ATK_ROLE_ICON, ATK_ROLE_IMAGE,
-    ATK_ROLE_INTERNAL_FRAME, ATK_ROLE_LABEL, ATK_ROLE_LAYERED_PANE,
-    ATK_ROLE_LIST, ATK_ROLE_LIST_ITEM, ATK_ROLE_MENU, ATK_ROLE_MENU_BAR,
-    ATK_ROLE_MENU_ITEM, ATK_ROLE_OPTION_PANE, ATK_ROLE_PAGE_TAB,
-    ATK_ROLE_PAGE_TAB_LIST, ATK_ROLE_PANEL, ATK_ROLE_PASSWORD_TEXT,
-    ATK_ROLE_POPUP_MENU, ATK_ROLE_PROGRESS_BAR, ATK_ROLE_PUSH_BUTTON,
-    ATK_ROLE_RADIO_BUTTON, ATK_ROLE_RADIO_MENU_ITEM, ATK_ROLE_ROOT_PANE,
-    ATK_ROLE_ROW_HEADER, ATK_ROLE_SCROLL_BAR, ATK_ROLE_SCROLL_PANE,
-    ATK_ROLE_SEPARATOR, ATK_ROLE_SLIDER, ATK_ROLE_SPLIT_PANE,
-    ATK_ROLE_SPIN_BUTTON, ATK_ROLE_STATUSBAR, ATK_ROLE_TABLE,
-    ATK_ROLE_TABLE_CELL, ATK_ROLE_TABLE_COLUMN_HEADER,
-    ATK_ROLE_TABLE_ROW_HEADER, ATK_ROLE_TEAR_OFF_MENU_ITEM, ATK_ROLE_TERMINAL,
-    ATK_ROLE_TEXT, ATK_ROLE_TOGGLE_BUTTON, ATK_ROLE_TOOL_BAR, ATK_ROLE_TOOL_TIP,
-    ATK_ROLE_TREE, ATK_ROLE_TREE_TABLE, ATK_ROLE_UNKNOWN, ATK_ROLE_VIEWPORT,
-    ATK_ROLE_WINDOW, ATK_ROLE_LAST_DEFINED
-  PAtkLayer* = ptr TAtkLayer
-  TAtkLayer* = enum
-    ATK_LAYER_INVALID, ATK_LAYER_BACKGROUND, ATK_LAYER_CANVAS, ATK_LAYER_WIDGET,
-    ATK_LAYER_MDI, ATK_LAYER_POPUP, ATK_LAYER_OVERLAY
-  PAtkPropertyValues* = ptr TAtkPropertyValues
-  TAtkPropertyValues* {.final, pure.} = object
-    property_name*: cstring
-    old_value*: TGValue
-    new_value*: TGValue
-
-  TAtkFunction* = proc (data: gpointer): gboolean{.cdecl.}
-  PAtkObject* = ptr TAtkObject
-  PPAtkObject* = ptr PAtkObject
-  TAtkObject* = object of TGObject
-    description*: cstring
-    name*: cstring
-    accessible_parent*: PAtkObject
-    role*: TAtkRole
-    relation_set*: PAtkRelationSet
-    layer*: TAtkLayer
-
-  TAtkPropertyChangeHandler* = proc (para1: PAtkObject,
-                                     para2: PAtkPropertyValues){.cdecl.}
-  PAtkObjectClass* = ptr TAtkObjectClass
-  TAtkObjectClass* = object of TGObjectClass
-    get_name*: proc (accessible: PAtkObject): cstring{.cdecl.}
-    get_description*: proc (accessible: PAtkObject): cstring{.cdecl.}
-    get_parent*: proc (accessible: PAtkObject): PAtkObject{.cdecl.}
-    get_n_children*: proc (accessible: PAtkObject): gint{.cdecl.}
-    ref_child*: proc (accessible: PAtkObject, i: gint): PAtkObject{.cdecl.}
-    get_index_in_parent*: proc (accessible: PAtkObject): gint{.cdecl.}
-    ref_relation_set*: proc (accessible: PAtkObject): PAtkRelationSet{.cdecl.}
-    get_role*: proc (accessible: PAtkObject): TAtkRole{.cdecl.}
-    get_layer*: proc (accessible: PAtkObject): TAtkLayer{.cdecl.}
-    get_mdi_zorder*: proc (accessible: PAtkObject): gint{.cdecl.}
-    ref_state_set*: proc (accessible: PAtkObject): PAtkStateSet{.cdecl.}
-    set_name*: proc (accessible: PAtkObject, name: cstring){.cdecl.}
-    set_description*: proc (accessible: PAtkObject, description: cstring){.cdecl.}
-    set_parent*: proc (accessible: PAtkObject, parent: PAtkObject){.cdecl.}
-    set_role*: proc (accessible: PAtkObject, role: TAtkRole){.cdecl.}
-    connect_property_change_handler*: proc (accessible: PAtkObject,
-        handler: TAtkPropertyChangeHandler): guint{.cdecl.}
-    remove_property_change_handler*: proc (accessible: PAtkObject,
-        handler_id: guint){.cdecl.}
-    initialize*: proc (accessible: PAtkObject, data: gpointer){.cdecl.}
-    children_changed*: proc (accessible: PAtkObject, change_index: guint,
-                             changed_child: gpointer){.cdecl.}
-    focus_event*: proc (accessible: PAtkObject, focus_in: gboolean){.cdecl.}
-    property_change*: proc (accessible: PAtkObject, values: PAtkPropertyValues){.
-        cdecl.}
-    state_change*: proc (accessible: PAtkObject, name: cstring,
-                         state_set: gboolean){.cdecl.}
-    visible_data_changed*: proc (accessible: PAtkObject){.cdecl.}
-    pad1*: TAtkFunction
-    pad2*: TAtkFunction
-    pad3*: TAtkFunction
-    pad4*: TAtkFunction
-
-  PAtkImplementorIface* = ptr TAtkImplementorIface
-  TAtkImplementorIface* = object of TGTypeInterface
-    ref_accessible*: proc (implementor: PAtkImplementor): PAtkObject{.cdecl.}
-
-  PAtkActionIface* = ptr TAtkActionIface
-  TAtkActionIface* = object of TGTypeInterface
-    do_action*: proc (action: PAtkAction, i: gint): gboolean{.cdecl.}
-    get_n_actions*: proc (action: PAtkAction): gint{.cdecl.}
-    get_description*: proc (action: PAtkAction, i: gint): cstring{.cdecl.}
-    get_name*: proc (action: PAtkAction, i: gint): cstring{.cdecl.}
-    get_keybinding*: proc (action: PAtkAction, i: gint): cstring{.cdecl.}
-    set_description*: proc (action: PAtkAction, i: gint, desc: cstring): gboolean{.
-        cdecl.}
-    pad1*: TAtkFunction
-    pad2*: TAtkFunction
-
-  TAtkFocusHandler* = proc (para1: PAtkObject, para2: gboolean){.cdecl.}
-  PAtkComponentIface* = ptr TAtkComponentIface
-  TAtkComponentIface* = object of TGTypeInterface
-    add_focus_handler*: proc (component: PAtkComponent,
-                              handler: TAtkFocusHandler): guint{.cdecl.}
-    contains*: proc (component: PAtkComponent, x: gint, y: gint,
-                     coord_type: TAtkCoordType): gboolean{.cdecl.}
-    ref_accessible_at_point*: proc (component: PAtkComponent, x: gint, y: gint,
-                                    coord_type: TAtkCoordType): PAtkObject{.
-        cdecl.}
-    get_extents*: proc (component: PAtkComponent, x: Pgint, y: Pgint,
-                        width: Pgint, height: Pgint, coord_type: TAtkCoordType){.
-        cdecl.}
-    get_position*: proc (component: PAtkComponent, x: Pgint, y: Pgint,
-                         coord_type: TAtkCoordType){.cdecl.}
-    get_size*: proc (component: PAtkComponent, width: Pgint, height: Pgint){.
-        cdecl.}
-    grab_focus*: proc (component: PAtkComponent): gboolean{.cdecl.}
-    remove_focus_handler*: proc (component: PAtkComponent, handler_id: guint){.
-        cdecl.}
-    set_extents*: proc (component: PAtkComponent, x: gint, y: gint, width: gint,
-                        height: gint, coord_type: TAtkCoordType): gboolean{.
-        cdecl.}
-    set_position*: proc (component: PAtkComponent, x: gint, y: gint,
-                         coord_type: TAtkCoordType): gboolean{.cdecl.}
-    set_size*: proc (component: PAtkComponent, width: gint, height: gint): gboolean{.
-        cdecl.}
-    get_layer*: proc (component: PAtkComponent): TAtkLayer{.cdecl.}
-    get_mdi_zorder*: proc (component: PAtkComponent): gint{.cdecl.}
-    pad1*: TAtkFunction
-    pad2*: TAtkFunction
-
-  PAtkDocumentIface* = ptr TAtkDocumentIface
-  TAtkDocumentIface* = object of TGTypeInterface
-    get_document_type*: proc (document: PAtkDocument): cstring{.cdecl.}
-    get_document*: proc (document: PAtkDocument): gpointer{.cdecl.}
-    pad1*: TAtkFunction
-    pad2*: TAtkFunction
-    pad3*: TAtkFunction
-    pad4*: TAtkFunction
-    pad5*: TAtkFunction
-    pad6*: TAtkFunction
-    pad7*: TAtkFunction
-    pad8*: TAtkFunction
-
-  PAtkEditableTextIface* = ptr TAtkEditableTextIface
-  TAtkEditableTextIface* = object of TGTypeInterface
-    set_run_attributes*: proc (text: PAtkEditableText,
-                               attrib_set: PAtkAttributeSet, start_offset: gint,
-                               end_offset: gint): gboolean{.cdecl.}
-    set_text_contents*: proc (text: PAtkEditableText, `string`: cstring){.cdecl.}
-    insert_text*: proc (text: PAtkEditableText, `string`: cstring, length: gint,
-                        position: Pgint){.cdecl.}
-    copy_text*: proc (text: PAtkEditableText, start_pos: gint, end_pos: gint){.
-        cdecl.}
-    cut_text*: proc (text: PAtkEditableText, start_pos: gint, end_pos: gint){.
-        cdecl.}
-    delete_text*: proc (text: PAtkEditableText, start_pos: gint, end_pos: gint){.
-        cdecl.}
-    paste_text*: proc (text: PAtkEditableText, position: gint){.cdecl.}
-    pad1*: TAtkFunction
-    pad2*: TAtkFunction
-
-  PAtkGObjectAccessible* = ptr TAtkGObjectAccessible
-  TAtkGObjectAccessible* = object of TAtkObject
-
-  PAtkGObjectAccessibleClass* = ptr TAtkGObjectAccessibleClass
-  TAtkGObjectAccessibleClass* = object of TAtkObjectClass
-    pad5*: TAtkFunction
-    pad6*: TAtkFunction
-
-  PAtkHyperlink* = ptr TAtkHyperlink
-  TAtkHyperlink* = object of TGObject
-
-  PAtkHyperlinkClass* = ptr TAtkHyperlinkClass
-  TAtkHyperlinkClass* = object of TGObjectClass
-    get_uri*: proc (link: PAtkHyperlink, i: gint): cstring{.cdecl.}
-    get_object*: proc (link: PAtkHyperlink, i: gint): PAtkObject{.cdecl.}
-    get_end_index*: proc (link: PAtkHyperlink): gint{.cdecl.}
-    get_start_index*: proc (link: PAtkHyperlink): gint{.cdecl.}
-    is_valid*: proc (link: PAtkHyperlink): gboolean{.cdecl.}
-    get_n_anchors*: proc (link: PAtkHyperlink): gint{.cdecl.}
-    pad7*: TAtkFunction
-    pad8*: TAtkFunction
-    pad9*: TAtkFunction
-    pad10*: TAtkFunction
-
-  PAtkHypertextIface* = ptr TAtkHypertextIface
-  TAtkHypertextIface* = object of TGTypeInterface
-    get_link*: proc (hypertext: PAtkHypertext, link_index: gint): PAtkHyperlink{.
-        cdecl.}
-    get_n_links*: proc (hypertext: PAtkHypertext): gint{.cdecl.}
-    get_link_index*: proc (hypertext: PAtkHypertext, char_index: gint): gint{.
-        cdecl.}
-    pad11*: TAtkFunction
-    pad12*: TAtkFunction
-    pad13*: TAtkFunction
-    pad14*: TAtkFunction
-
-  PAtkImageIface* = ptr TAtkImageIface
-  TAtkImageIface* = object of TGTypeInterface
-    get_image_position*: proc (image: PAtkImage, x: Pgint, y: Pgint,
-                               coord_type: TAtkCoordType){.cdecl.}
-    get_image_description*: proc (image: PAtkImage): cstring{.cdecl.}
-    get_image_size*: proc (image: PAtkImage, width: Pgint, height: Pgint){.cdecl.}
-    set_image_description*: proc (image: PAtkImage, description: cstring): gboolean{.
-        cdecl.}
-    pad15*: TAtkFunction
-    pad16*: TAtkFunction
-
-  PAtkObjectFactory* = ptr TAtkObjectFactory
-  TAtkObjectFactory* = object of TGObject
-
-  PAtkObjectFactoryClass* = ptr TAtkObjectFactoryClass
-  TAtkObjectFactoryClass* = object of TGObjectClass
-    create_accessible*: proc (obj: PGObject): PAtkObject{.cdecl.}
-    invalidate*: proc (factory: PAtkObjectFactory){.cdecl.}
-    get_accessible_type*: proc (): GType{.cdecl.}
-    pad17*: TAtkFunction
-    pad18*: TAtkFunction
-
-  PAtkRegistry* = ptr TAtkRegistry
-  TAtkRegistry* = object of TGObject
-    factory_type_registry*: PGHashTable
-    factory_singleton_cache*: PGHashTable
-
-  PAtkRegistryClass* = ptr TAtkRegistryClass
-  TAtkRegistryClass* = object of TGObjectClass
-
-  PAtkRelationType* = ptr TAtkRelationType
-  TAtkRelationType* = enum
-    ATK_RELATION_NULL, ATK_RELATION_CONTROLLED_BY, ATK_RELATION_CONTROLLER_FOR,
-    ATK_RELATION_LABEL_FOR, ATK_RELATION_LABELLED_BY, ATK_RELATION_MEMBER_OF,
-    ATK_RELATION_NODE_CHILD_OF, ATK_RELATION_LAST_DEFINED
-  PAtkRelation* = ptr TAtkRelation
-  PGPtrArray = pointer
-  TAtkRelation* = object of TGObject
-    target*: PGPtrArray
-    relationship*: TAtkRelationType
-
-  PAtkRelationClass* = ptr TAtkRelationClass
-  TAtkRelationClass* = object of TGObjectClass
-
-  TAtkRelationSet* = object of TGObject
-    relations*: PGPtrArray
-
-  PAtkRelationSetClass* = ptr TAtkRelationSetClass
-  TAtkRelationSetClass* = object of TGObjectClass
-    pad19*: TAtkFunction
-    pad20*: TAtkFunction
-
-  PAtkSelectionIface* = ptr TAtkSelectionIface
-  TAtkSelectionIface* = object of TGTypeInterface
-    add_selection*: proc (selection: PAtkSelection, i: gint): gboolean{.cdecl.}
-    clear_selection*: proc (selection: PAtkSelection): gboolean{.cdecl.}
-    ref_selection*: proc (selection: PAtkSelection, i: gint): PAtkObject{.cdecl.}
-    get_selection_count*: proc (selection: PAtkSelection): gint{.cdecl.}
-    is_child_selected*: proc (selection: PAtkSelection, i: gint): gboolean{.
-        cdecl.}
-    remove_selection*: proc (selection: PAtkSelection, i: gint): gboolean{.cdecl.}
-    select_all_selection*: proc (selection: PAtkSelection): gboolean{.cdecl.}
-    selection_changed*: proc (selection: PAtkSelection){.cdecl.}
-    pad1*: TAtkFunction
-    pad2*: TAtkFunction
-
-  PAtkStateType* = ptr TAtkStateType
-  TAtkStateType* = enum
-    ATK_STATE_INVALID, ATK_STATE_ACTIVE, ATK_STATE_ARMED, ATK_STATE_BUSY,
-    ATK_STATE_CHECKED, ATK_STATE_DEFUNCT, ATK_STATE_EDITABLE, ATK_STATE_ENABLED,
-    ATK_STATE_EXPANDABLE, ATK_STATE_EXPANDED, ATK_STATE_FOCUSABLE,
-    ATK_STATE_FOCUSED, ATK_STATE_HORIZONTAL, ATK_STATE_ICONIFIED,
-    ATK_STATE_MODAL, ATK_STATE_MULTI_LINE, ATK_STATE_MULTISELECTABLE,
-    ATK_STATE_OPAQUE, ATK_STATE_PRESSED, ATK_STATE_RESIZABLE,
-    ATK_STATE_SELECTABLE, ATK_STATE_SELECTED, ATK_STATE_SENSITIVE,
-    ATK_STATE_SHOWING, ATK_STATE_SINGLE_LINE, ATK_STATE_STALE,
-    ATK_STATE_TRANSIENT, ATK_STATE_VERTICAL, ATK_STATE_VISIBLE,
-    ATK_STATE_LAST_DEFINED
-  PAtkState* = ptr TAtkState
-  TAtkState* = guint64
-  TAtkStateSet* = object of TGObject
-
-  PAtkStateSetClass* = ptr TAtkStateSetClass
-  TAtkStateSetClass* = object of TGObjectClass
-
-  PAtkStreamableContentIface* = ptr TAtkStreamableContentIface
-  TAtkStreamableContentIface* = object of TGTypeInterface
-    get_n_mime_types*: proc (streamable: PAtkStreamableContent): gint{.cdecl.}
-    get_mime_type*: proc (streamable: PAtkStreamableContent, i: gint): cstring{.
-        cdecl.}
-    get_stream*: proc (streamable: PAtkStreamableContent, mime_type: cstring): PGIOChannel{.
-        cdecl.}
-    pad21*: TAtkFunction
-    pad22*: TAtkFunction
-    pad23*: TAtkFunction
-    pad24*: TAtkFunction
-
-  PAtkTableIface* = ptr TAtkTableIface
-  TAtkTableIface* = object of TGTypeInterface
-    ref_at*: proc (table: PAtkTable, row: gint, column: gint): PAtkObject{.cdecl.}
-    get_index_at*: proc (table: PAtkTable, row: gint, column: gint): gint{.cdecl.}
-    get_column_at_index*: proc (table: PAtkTable, index: gint): gint{.cdecl.}
-    get_row_at_index*: proc (table: PAtkTable, index: gint): gint{.cdecl.}
-    get_n_columns*: proc (table: PAtkTable): gint{.cdecl.}
-    get_n_rows*: proc (table: PAtkTable): gint{.cdecl.}
-    get_column_extent_at*: proc (table: PAtkTable, row: gint, column: gint): gint{.
-        cdecl.}
-    get_row_extent_at*: proc (table: PAtkTable, row: gint, column: gint): gint{.
-        cdecl.}
-    get_caption*: proc (table: PAtkTable): PAtkObject{.cdecl.}
-    get_column_description*: proc (table: PAtkTable, column: gint): cstring{.
-        cdecl.}
-    get_column_header*: proc (table: PAtkTable, column: gint): PAtkObject{.cdecl.}
-    get_row_description*: proc (table: PAtkTable, row: gint): cstring{.cdecl.}
-    get_row_header*: proc (table: PAtkTable, row: gint): PAtkObject{.cdecl.}
-    get_summary*: proc (table: PAtkTable): PAtkObject{.cdecl.}
-    set_caption*: proc (table: PAtkTable, caption: PAtkObject){.cdecl.}
-    set_column_description*: proc (table: PAtkTable, column: gint,
-                                   description: cstring){.cdecl.}
-    set_column_header*: proc (table: PAtkTable, column: gint, header: PAtkObject){.
-        cdecl.}
-    set_row_description*: proc (table: PAtkTable, row: gint, description: cstring){.
-        cdecl.}
-    set_row_header*: proc (table: PAtkTable, row: gint, header: PAtkObject){.
-        cdecl.}
-    set_summary*: proc (table: PAtkTable, accessible: PAtkObject){.cdecl.}
-    get_selected_columns*: proc (table: PAtkTable, selected: PPgint): gint{.
-        cdecl.}
-    get_selected_rows*: proc (table: PAtkTable, selected: PPgint): gint{.cdecl.}
-    is_column_selected*: proc (table: PAtkTable, column: gint): gboolean{.cdecl.}
-    is_row_selected*: proc (table: PAtkTable, row: gint): gboolean{.cdecl.}
-    is_selected*: proc (table: PAtkTable, row: gint, column: gint): gboolean{.
-        cdecl.}
-    add_row_selection*: proc (table: PAtkTable, row: gint): gboolean{.cdecl.}
-    remove_row_selection*: proc (table: PAtkTable, row: gint): gboolean{.cdecl.}
-    add_column_selection*: proc (table: PAtkTable, column: gint): gboolean{.
-        cdecl.}
-    remove_column_selection*: proc (table: PAtkTable, column: gint): gboolean{.
-        cdecl.}
-    row_inserted*: proc (table: PAtkTable, row: gint, num_inserted: gint){.cdecl.}
-    column_inserted*: proc (table: PAtkTable, column: gint, num_inserted: gint){.
-        cdecl.}
-    row_deleted*: proc (table: PAtkTable, row: gint, num_deleted: gint){.cdecl.}
-    column_deleted*: proc (table: PAtkTable, column: gint, num_deleted: gint){.
-        cdecl.}
-    row_reordered*: proc (table: PAtkTable){.cdecl.}
-    column_reordered*: proc (table: PAtkTable){.cdecl.}
-    model_changed*: proc (table: PAtkTable){.cdecl.}
-    pad25*: TAtkFunction
-    pad26*: TAtkFunction
-    pad27*: TAtkFunction
-    pad28*: TAtkFunction
-
-  TAtkAttributeSet* = TGSList
-  PAtkAttribute* = ptr TAtkAttribute
-  TAtkAttribute* {.final, pure.} = object
-    name*: cstring
-    value*: cstring
-
-  PAtkTextAttribute* = ptr TAtkTextAttribute
-  TAtkTextAttribute* = enum
-    ATK_TEXT_ATTR_INVALID, ATK_TEXT_ATTR_LEFT_MARGIN,
-    ATK_TEXT_ATTR_RIGHT_MARGIN, ATK_TEXT_ATTR_INDENT, ATK_TEXT_ATTR_INVISIBLE,
-    ATK_TEXT_ATTR_EDITABLE, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES,
-    ATK_TEXT_ATTR_PIXELS_BELOW_LINES, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP,
-    ATK_TEXT_ATTR_BG_FULL_HEIGHT, ATK_TEXT_ATTR_RISE, ATK_TEXT_ATTR_UNDERLINE,
-    ATK_TEXT_ATTR_STRIKETHROUGH, ATK_TEXT_ATTR_SIZE, ATK_TEXT_ATTR_SCALE,
-    ATK_TEXT_ATTR_WEIGHT, ATK_TEXT_ATTR_LANGUAGE, ATK_TEXT_ATTR_FAMILY_NAME,
-    ATK_TEXT_ATTR_BG_COLOR, ATK_TEXT_ATTR_FG_COLOR, ATK_TEXT_ATTR_BG_STIPPLE,
-    ATK_TEXT_ATTR_FG_STIPPLE, ATK_TEXT_ATTR_WRAP_MODE, ATK_TEXT_ATTR_DIRECTION,
-    ATK_TEXT_ATTR_JUSTIFICATION, ATK_TEXT_ATTR_STRETCH, ATK_TEXT_ATTR_VARIANT,
-    ATK_TEXT_ATTR_STYLE, ATK_TEXT_ATTR_LAST_DEFINED
-  PAtkTextBoundary* = ptr TAtkTextBoundary
-  TAtkTextBoundary* = enum
-    ATK_TEXT_BOUNDARY_CHAR, ATK_TEXT_BOUNDARY_WORD_START,
-    ATK_TEXT_BOUNDARY_WORD_END, ATK_TEXT_BOUNDARY_SENTENCE_START,
-    ATK_TEXT_BOUNDARY_SENTENCE_END, ATK_TEXT_BOUNDARY_LINE_START,
-    ATK_TEXT_BOUNDARY_LINE_END
-  PAtkTextIface* = ptr TAtkTextIface
-  TAtkTextIface* = object of TGTypeInterface
-    get_text*: proc (text: PAtkText, start_offset: gint, end_offset: gint): cstring{.
-        cdecl.}
-    get_text_after_offset*: proc (text: PAtkText, offset: gint,
-                                  boundary_type: TAtkTextBoundary,
-                                  start_offset: Pgint, end_offset: Pgint): cstring{.
-        cdecl.}
-    get_text_at_offset*: proc (text: PAtkText, offset: gint,
-                               boundary_type: TAtkTextBoundary,
-                               start_offset: Pgint, end_offset: Pgint): cstring{.
-        cdecl.}
-    get_character_at_offset*: proc (text: PAtkText, offset: gint): gunichar{.
-        cdecl.}
-    get_text_before_offset*: proc (text: PAtkText, offset: gint,
-                                   boundary_type: TAtkTextBoundary,
-                                   start_offset: Pgint, end_offset: Pgint): cstring{.
-        cdecl.}
-    get_caret_offset*: proc (text: PAtkText): gint{.cdecl.}
-    get_run_attributes*: proc (text: PAtkText, offset: gint,
-                               start_offset: Pgint, end_offset: Pgint): PAtkAttributeSet{.
-        cdecl.}
-    get_default_attributes*: proc (text: PAtkText): PAtkAttributeSet{.cdecl.}
-    get_character_extents*: proc (text: PAtkText, offset: gint, x: Pgint,
-                                  y: Pgint, width: Pgint, height: Pgint,
-                                  coords: TAtkCoordType){.cdecl.}
-    get_character_count*: proc (text: PAtkText): gint{.cdecl.}
-    get_offset_at_point*: proc (text: PAtkText, x: gint, y: gint,
-                                coords: TAtkCoordType): gint{.cdecl.}
-    get_n_selections*: proc (text: PAtkText): gint{.cdecl.}
-    get_selection*: proc (text: PAtkText, selection_num: gint,
-                          start_offset: Pgint, end_offset: Pgint): cstring{.cdecl.}
-    add_selection*: proc (text: PAtkText, start_offset: gint, end_offset: gint): gboolean{.
-        cdecl.}
-    remove_selection*: proc (text: PAtkText, selection_num: gint): gboolean{.
-        cdecl.}
-    set_selection*: proc (text: PAtkText, selection_num: gint,
-                          start_offset: gint, end_offset: gint): gboolean{.cdecl.}
-    set_caret_offset*: proc (text: PAtkText, offset: gint): gboolean{.cdecl.}
-    text_changed*: proc (text: PAtkText, position: gint, length: gint){.cdecl.}
-    text_caret_moved*: proc (text: PAtkText, location: gint){.cdecl.}
-    text_selection_changed*: proc (text: PAtkText){.cdecl.}
-    pad29*: TAtkFunction
-    pad30*: TAtkFunction
-    pad31*: TAtkFunction
-    pad32*: TAtkFunction
-
-  TAtkEventListener* = proc (para1: PAtkObject){.cdecl.}
-  TAtkEventListenerInitProc* = proc ()
-  TAtkEventListenerInit* = proc (para1: TAtkEventListenerInitProc){.cdecl.}
-  PAtkKeyEventStruct* = ptr TAtkKeyEventStruct
-  TAtkKeyEventStruct* {.final, pure.} = object
-    `type`*: gint
-    state*: guint
-    keyval*: guint
-    length*: gint
-    string*: cstring
-    keycode*: guint16
-    timestamp*: guint32
-
-  TAtkKeySnoopFunc* = proc (event: PAtkKeyEventStruct, func_data: gpointer): gint{.
-      cdecl.}
-  PAtkKeyEventType* = ptr TAtkKeyEventType
-  TAtkKeyEventType* = enum
-    ATK_KEY_EVENT_PRESS, ATK_KEY_EVENT_RELEASE, ATK_KEY_EVENT_LAST_DEFINED
-  PAtkUtil* = ptr TAtkUtil
-  TAtkUtil* = object of TGObject
-
-  PAtkUtilClass* = ptr TAtkUtilClass
-  TAtkUtilClass* = object of TGObjectClass
-    add_global_event_listener*: proc (listener: TGSignalEmissionHook,
-                                      event_type: cstring): guint{.cdecl.}
-    remove_global_event_listener*: proc (listener_id: guint){.cdecl.}
-    add_key_event_listener*: proc (listener: TAtkKeySnoopFunc, data: gpointer): guint{.
-        cdecl.}
-    remove_key_event_listener*: proc (listener_id: guint){.cdecl.}
-    get_root*: proc (): PAtkObject{.cdecl.}
-    get_toolkit_name*: proc (): cstring{.cdecl.}
-    get_toolkit_version*: proc (): cstring{.cdecl.}
-
-  PAtkValueIface* = ptr TAtkValueIface
-  TAtkValueIface* = object of TGTypeInterface
-    get_current_value*: proc (obj: PAtkValue, value: PGValue){.cdecl.}
-    get_maximum_value*: proc (obj: PAtkValue, value: PGValue){.cdecl.}
-    get_minimum_value*: proc (obj: PAtkValue, value: PGValue){.cdecl.}
-    set_current_value*: proc (obj: PAtkValue, value: PGValue): gboolean{.cdecl.}
-    pad33*: TAtkFunction
-    pad34*: TAtkFunction
-
-
-proc atk_role_register*(name: cstring): TAtkRole{.cdecl, dynlib: atklib,
-    importc: "atk_role_register".}
-proc atk_object_get_type*(): GType{.cdecl, dynlib: atklib,
-                                    importc: "atk_object_get_type".}
-proc ATK_TYPE_OBJECT*(): GType
-proc ATK_OBJECT*(obj: pointer): PAtkObject
-proc ATK_OBJECT_CLASS*(klass: pointer): PAtkObjectClass
-proc ATK_IS_OBJECT*(obj: pointer): bool
-proc ATK_IS_OBJECT_CLASS*(klass: pointer): bool
-proc ATK_OBJECT_GET_CLASS*(obj: pointer): PAtkObjectClass
-proc ATK_TYPE_IMPLEMENTOR*(): GType
-proc ATK_IS_IMPLEMENTOR*(obj: pointer): bool
-proc ATK_IMPLEMENTOR*(obj: pointer): PAtkImplementor
-proc ATK_IMPLEMENTOR_GET_IFACE*(obj: pointer): PAtkImplementorIface
-proc atk_implementor_get_type*(): GType{.cdecl, dynlib: atklib,
-    importc: "atk_implementor_get_type".}
-proc atk_implementor_ref_accessible*(implementor: PAtkImplementor): PAtkObject{.
-    cdecl, dynlib: atklib, importc: "atk_implementor_ref_accessible".}
-proc atk_object_get_name*(accessible: PAtkObject): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_name".}
-proc atk_object_get_description*(accessible: PAtkObject): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_description".}
-proc atk_object_get_parent*(accessible: PAtkObject): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_parent".}
-proc atk_object_get_n_accessible_children*(accessible: PAtkObject): gint{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_n_accessible_children".}
-proc atk_object_ref_accessible_child*(accessible: PAtkObject, i: gint): PAtkObject{.
-    cdecl, dynlib: atklib, importc: "atk_object_ref_accessible_child".}
-proc atk_object_ref_relation_set*(accessible: PAtkObject): PAtkRelationSet{.
-    cdecl, dynlib: atklib, importc: "atk_object_ref_relation_set".}
-proc atk_object_get_role*(accessible: PAtkObject): TAtkRole{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_role".}
-proc atk_object_get_layer*(accessible: PAtkObject): TAtkLayer{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_layer".}
-proc atk_object_get_mdi_zorder*(accessible: PAtkObject): gint{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_mdi_zorder".}
-proc atk_object_ref_state_set*(accessible: PAtkObject): PAtkStateSet{.cdecl,
-    dynlib: atklib, importc: "atk_object_ref_state_set".}
-proc atk_object_get_index_in_parent*(accessible: PAtkObject): gint{.cdecl,
-    dynlib: atklib, importc: "atk_object_get_index_in_parent".}
-proc atk_object_set_name*(accessible: PAtkObject, name: cstring){.cdecl,
-    dynlib: atklib, importc: "atk_object_set_name".}
-proc atk_object_set_description*(accessible: PAtkObject, description: cstring){.
-    cdecl, dynlib: atklib, importc: "atk_object_set_description".}
-proc atk_object_set_parent*(accessible: PAtkObject, parent: PAtkObject){.cdecl,
-    dynlib: atklib, importc: "atk_object_set_parent".}
-proc atk_object_set_role*(accessible: PAtkObject, role: TAtkRole){.cdecl,
-    dynlib: atklib, importc: "atk_object_set_role".}
-proc atk_object_connect_property_change_handler*(accessible: PAtkObject,
-    handler: TAtkPropertyChangeHandler): guint{.cdecl, dynlib: atklib,
-    importc: "atk_object_connect_property_change_handler".}
-proc atk_object_remove_property_change_handler*(accessible: PAtkObject,
-    handler_id: guint){.cdecl, dynlib: atklib,
-                        importc: "atk_object_remove_property_change_handler".}
-proc atk_object_notify_state_change*(accessible: PAtkObject, state: TAtkState,
-                                     value: gboolean){.cdecl, dynlib: atklib,
-    importc: "atk_object_notify_state_change".}
-proc atk_object_initialize*(accessible: PAtkObject, data: gpointer){.cdecl,
-    dynlib: atklib, importc: "atk_object_initialize".}
-proc atk_role_get_name*(role: TAtkRole): cstring{.cdecl, dynlib: atklib,
-    importc: "atk_role_get_name".}
-proc atk_role_for_name*(name: cstring): TAtkRole{.cdecl, dynlib: atklib,
-    importc: "atk_role_for_name".}
-proc ATK_TYPE_ACTION*(): GType
-proc ATK_IS_ACTION*(obj: pointer): bool
-proc ATK_ACTION*(obj: pointer): PAtkAction
-proc ATK_ACTION_GET_IFACE*(obj: pointer): PAtkActionIface
-proc atk_action_get_type*(): GType{.cdecl, dynlib: atklib,
-                                    importc: "atk_action_get_type".}
-proc atk_action_do_action*(action: PAtkAction, i: gint): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_action_do_action".}
-proc atk_action_get_n_actions*(action: PAtkAction): gint{.cdecl, dynlib: atklib,
-    importc: "atk_action_get_n_actions".}
-proc atk_action_get_description*(action: PAtkAction, i: gint): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_action_get_description".}
-proc atk_action_get_name*(action: PAtkAction, i: gint): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_action_get_name".}
-proc atk_action_get_keybinding*(action: PAtkAction, i: gint): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_action_get_keybinding".}
-proc atk_action_set_description*(action: PAtkAction, i: gint, desc: cstring): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_action_set_description".}
-proc ATK_TYPE_COMPONENT*(): GType
-proc ATK_IS_COMPONENT*(obj: pointer): bool
-proc ATK_COMPONENT*(obj: pointer): PAtkComponent
-proc ATK_COMPONENT_GET_IFACE*(obj: pointer): PAtkComponentIface
-proc atk_component_get_type*(): GType{.cdecl, dynlib: atklib,
-                                       importc: "atk_component_get_type".}
-proc atk_component_add_focus_handler*(component: PAtkComponent,
-                                      handler: TAtkFocusHandler): guint{.cdecl,
-    dynlib: atklib, importc: "atk_component_add_focus_handler".}
-proc atk_component_contains*(component: PAtkComponent, x, y: gint,
-                             coord_type: TAtkCoordType): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_component_contains".}
-proc atk_component_ref_accessible_at_point*(component: PAtkComponent,
-    x, y: gint, coord_type: TAtkCoordType): PAtkObject{.cdecl, dynlib: atklib,
-    importc: "atk_component_ref_accessible_at_point".}
-proc atk_component_get_extents*(component: PAtkComponent,
-                                x, y, width, height: Pgint,
-                                coord_type: TAtkCoordType){.cdecl,
-    dynlib: atklib, importc: "atk_component_get_extents".}
-proc atk_component_get_position*(component: PAtkComponent, x: Pgint, y: Pgint,
-                                 coord_type: TAtkCoordType){.cdecl,
-    dynlib: atklib, importc: "atk_component_get_position".}
-proc atk_component_get_size*(component: PAtkComponent, width: Pgint,
-                             height: Pgint){.cdecl, dynlib: atklib,
-    importc: "atk_component_get_size".}
-proc atk_component_get_layer*(component: PAtkComponent): TAtkLayer{.cdecl,
-    dynlib: atklib, importc: "atk_component_get_layer".}
-proc atk_component_get_mdi_zorder*(component: PAtkComponent): gint{.cdecl,
-    dynlib: atklib, importc: "atk_component_get_mdi_zorder".}
-proc atk_component_grab_focus*(component: PAtkComponent): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_component_grab_focus".}
-proc atk_component_remove_focus_handler*(component: PAtkComponent,
-    handler_id: guint){.cdecl, dynlib: atklib,
-                        importc: "atk_component_remove_focus_handler".}
-proc atk_component_set_extents*(component: PAtkComponent, x: gint, y: gint,
-                                width: gint, height: gint,
-                                coord_type: TAtkCoordType): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_component_set_extents".}
-proc atk_component_set_position*(component: PAtkComponent, x: gint, y: gint,
-                                 coord_type: TAtkCoordType): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_component_set_position".}
-proc atk_component_set_size*(component: PAtkComponent, width: gint, height: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_component_set_size".}
-proc ATK_TYPE_DOCUMENT*(): GType
-proc ATK_IS_DOCUMENT*(obj: pointer): bool
-proc ATK_DOCUMENT*(obj: pointer): PAtkDocument
-proc ATK_DOCUMENT_GET_IFACE*(obj: pointer): PAtkDocumentIface
-proc atk_document_get_type*(): GType{.cdecl, dynlib: atklib,
-                                      importc: "atk_document_get_type".}
-proc atk_document_get_document_type*(document: PAtkDocument): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_document_get_document_type".}
-proc atk_document_get_document*(document: PAtkDocument): gpointer{.cdecl,
-    dynlib: atklib, importc: "atk_document_get_document".}
-proc ATK_TYPE_EDITABLE_TEXT*(): GType
-proc ATK_IS_EDITABLE_TEXT*(obj: pointer): bool
-proc ATK_EDITABLE_TEXT*(obj: pointer): PAtkEditableText
-proc ATK_EDITABLE_TEXT_GET_IFACE*(obj: pointer): PAtkEditableTextIface
-proc atk_editable_text_get_type*(): GType{.cdecl, dynlib: atklib,
-    importc: "atk_editable_text_get_type".}
-proc atk_editable_text_set_run_attributes*(text: PAtkEditableText,
-    attrib_set: PAtkAttributeSet, start_offset: gint, end_offset: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_editable_text_set_run_attributes".}
-proc atk_editable_text_set_text_contents*(text: PAtkEditableText, string: cstring){.
-    cdecl, dynlib: atklib, importc: "atk_editable_text_set_text_contents".}
-proc atk_editable_text_insert_text*(text: PAtkEditableText, `string`: cstring,
-                                    length: gint, position: Pgint){.cdecl,
-    dynlib: atklib, importc: "atk_editable_text_insert_text".}
-proc atk_editable_text_copy_text*(text: PAtkEditableText, start_pos: gint,
-                                  end_pos: gint){.cdecl, dynlib: atklib,
-    importc: "atk_editable_text_copy_text".}
-proc atk_editable_text_cut_text*(text: PAtkEditableText, start_pos: gint,
-                                 end_pos: gint){.cdecl, dynlib: atklib,
-    importc: "atk_editable_text_cut_text".}
-proc atk_editable_text_delete_text*(text: PAtkEditableText, start_pos: gint,
-                                    end_pos: gint){.cdecl, dynlib: atklib,
-    importc: "atk_editable_text_delete_text".}
-proc atk_editable_text_paste_text*(text: PAtkEditableText, position: gint){.
-    cdecl, dynlib: atklib, importc: "atk_editable_text_paste_text".}
-proc ATK_TYPE_GOBJECT_ACCESSIBLE*(): GType
-proc ATK_GOBJECT_ACCESSIBLE*(obj: pointer): PAtkGObjectAccessible
-proc ATK_GOBJECT_ACCESSIBLE_CLASS*(klass: pointer): PAtkGObjectAccessibleClass
-proc ATK_IS_GOBJECT_ACCESSIBLE*(obj: pointer): bool
-proc ATK_IS_GOBJECT_ACCESSIBLE_CLASS*(klass: pointer): bool
-proc ATK_GOBJECT_ACCESSIBLE_GET_CLASS*(obj: pointer): PAtkGObjectAccessibleClass
-proc atk_gobject_accessible_get_type*(): GType{.cdecl, dynlib: atklib,
-    importc: "atk_gobject_accessible_get_type".}
-proc atk_gobject_accessible_for_object*(obj: PGObject): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_gobject_accessible_for_object".}
-proc atk_gobject_accessible_get_object*(obj: PAtkGObjectAccessible): PGObject{.
-    cdecl, dynlib: atklib, importc: "atk_gobject_accessible_get_object".}
-proc ATK_TYPE_HYPERLINK*(): GType
-proc ATK_HYPERLINK*(obj: pointer): PAtkHyperlink
-proc ATK_HYPERLINK_CLASS*(klass: pointer): PAtkHyperlinkClass
-proc ATK_IS_HYPERLINK*(obj: pointer): bool
-proc ATK_IS_HYPERLINK_CLASS*(klass: pointer): bool
-proc ATK_HYPERLINK_GET_CLASS*(obj: pointer): PAtkHyperlinkClass
-proc atk_hyperlink_get_type*(): GType{.cdecl, dynlib: atklib,
-                                       importc: "atk_hyperlink_get_type".}
-proc atk_hyperlink_get_uri*(link: PAtkHyperlink, i: gint): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_hyperlink_get_uri".}
-proc atk_hyperlink_get_object*(link: PAtkHyperlink, i: gint): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_hyperlink_get_object".}
-proc atk_hyperlink_get_end_index*(link: PAtkHyperlink): gint{.cdecl,
-    dynlib: atklib, importc: "atk_hyperlink_get_end_index".}
-proc atk_hyperlink_get_start_index*(link: PAtkHyperlink): gint{.cdecl,
-    dynlib: atklib, importc: "atk_hyperlink_get_start_index".}
-proc atk_hyperlink_is_valid*(link: PAtkHyperlink): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_hyperlink_is_valid".}
-proc atk_hyperlink_get_n_anchors*(link: PAtkHyperlink): gint{.cdecl,
-    dynlib: atklib, importc: "atk_hyperlink_get_n_anchors".}
-proc ATK_TYPE_HYPERTEXT*(): GType
-proc ATK_IS_HYPERTEXT*(obj: pointer): bool
-proc ATK_HYPERTEXT*(obj: pointer): PAtkHypertext
-proc ATK_HYPERTEXT_GET_IFACE*(obj: pointer): PAtkHypertextIface
-proc atk_hypertext_get_type*(): GType{.cdecl, dynlib: atklib,
-                                       importc: "atk_hypertext_get_type".}
-proc atk_hypertext_get_link*(hypertext: PAtkHypertext, link_index: gint): PAtkHyperlink{.
-    cdecl, dynlib: atklib, importc: "atk_hypertext_get_link".}
-proc atk_hypertext_get_n_links*(hypertext: PAtkHypertext): gint{.cdecl,
-    dynlib: atklib, importc: "atk_hypertext_get_n_links".}
-proc atk_hypertext_get_link_index*(hypertext: PAtkHypertext, char_index: gint): gint{.
-    cdecl, dynlib: atklib, importc: "atk_hypertext_get_link_index".}
-proc ATK_TYPE_IMAGE*(): GType
-proc ATK_IS_IMAGE*(obj: pointer): bool
-proc ATK_IMAGE*(obj: pointer): PAtkImage
-proc ATK_IMAGE_GET_IFACE*(obj: pointer): PAtkImageIface
-proc atk_image_get_type*(): GType{.cdecl, dynlib: atklib,
-                                   importc: "atk_image_get_type".}
-proc atk_image_get_image_description*(image: PAtkImage): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_image_get_image_description".}
-proc atk_image_get_image_size*(image: PAtkImage, width: Pgint, height: Pgint){.
-    cdecl, dynlib: atklib, importc: "atk_image_get_image_size".}
-proc atk_image_set_image_description*(image: PAtkImage, description: cstring): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_image_set_image_description".}
-proc atk_image_get_image_position*(image: PAtkImage, x: Pgint, y: Pgint,
-                                   coord_type: TAtkCoordType){.cdecl,
-    dynlib: atklib, importc: "atk_image_get_image_position".}
-proc ATK_TYPE_OBJECT_FACTORY*(): GType
-proc ATK_OBJECT_FACTORY*(obj: pointer): PAtkObjectFactory
-proc ATK_OBJECT_FACTORY_CLASS*(klass: pointer): PAtkObjectFactoryClass
-proc ATK_IS_OBJECT_FACTORY*(obj: pointer): bool
-proc ATK_IS_OBJECT_FACTORY_CLASS*(klass: pointer): bool
-proc ATK_OBJECT_FACTORY_GET_CLASS*(obj: pointer): PAtkObjectFactoryClass
-proc atk_object_factory_get_type*(): GType{.cdecl, dynlib: atklib,
-    importc: "atk_object_factory_get_type".}
-proc atk_object_factory_create_accessible*(factory: PAtkObjectFactory,
-    obj: PGObject): PAtkObject{.cdecl, dynlib: atklib,
-                                importc: "atk_object_factory_create_accessible".}
-proc atk_object_factory_invalidate*(factory: PAtkObjectFactory){.cdecl,
-    dynlib: atklib, importc: "atk_object_factory_invalidate".}
-proc atk_object_factory_get_accessible_type*(factory: PAtkObjectFactory): GType{.
-    cdecl, dynlib: atklib, importc: "atk_object_factory_get_accessible_type".}
-proc ATK_TYPE_REGISTRY*(): GType
-proc ATK_REGISTRY*(obj: pointer): PAtkRegistry
-proc ATK_REGISTRY_CLASS*(klass: pointer): PAtkRegistryClass
-proc ATK_IS_REGISTRY*(obj: pointer): bool
-proc ATK_IS_REGISTRY_CLASS*(klass: pointer): bool
-proc ATK_REGISTRY_GET_CLASS*(obj: pointer): PAtkRegistryClass
-proc atk_registry_get_type*(): GType{.cdecl, dynlib: atklib,
-                                      importc: "atk_registry_get_type".}
-proc atk_registry_set_factory_type*(registry: PAtkRegistry, `type`: GType,
-                                    factory_type: GType){.cdecl, dynlib: atklib,
-    importc: "atk_registry_set_factory_type".}
-proc atk_registry_get_factory_type*(registry: PAtkRegistry, `type`: GType): GType{.
-    cdecl, dynlib: atklib, importc: "atk_registry_get_factory_type".}
-proc atk_registry_get_factory*(registry: PAtkRegistry, `type`: GType): PAtkObjectFactory{.
-    cdecl, dynlib: atklib, importc: "atk_registry_get_factory".}
-proc atk_get_default_registry*(): PAtkRegistry{.cdecl, dynlib: atklib,
-    importc: "atk_get_default_registry".}
-proc ATK_TYPE_RELATION*(): GType
-proc ATK_RELATION*(obj: pointer): PAtkRelation
-proc ATK_RELATION_CLASS*(klass: pointer): PAtkRelationClass
-proc ATK_IS_RELATION*(obj: pointer): bool
-proc ATK_IS_RELATION_CLASS*(klass: pointer): bool
-proc ATK_RELATION_GET_CLASS*(obj: pointer): PAtkRelationClass
-proc atk_relation_get_type*(): GType{.cdecl, dynlib: atklib,
-                                      importc: "atk_relation_get_type".}
-proc atk_relation_type_register*(name: cstring): TAtkRelationType{.cdecl,
-    dynlib: atklib, importc: "atk_relation_type_register".}
-proc atk_relation_type_get_name*(`type`: TAtkRelationType): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_relation_type_get_name".}
-proc atk_relation_type_for_name*(name: cstring): TAtkRelationType{.cdecl,
-    dynlib: atklib, importc: "atk_relation_type_for_name".}
-proc atk_relation_new*(targets: PPAtkObject, n_targets: gint,
-                       relationship: TAtkRelationType): PAtkRelation{.cdecl,
-    dynlib: atklib, importc: "atk_relation_new".}
-proc atk_relation_get_relation_type*(relation: PAtkRelation): TAtkRelationType{.
-    cdecl, dynlib: atklib, importc: "atk_relation_get_relation_type".}
-proc atk_relation_get_target*(relation: PAtkRelation): PGPtrArray{.cdecl,
-    dynlib: atklib, importc: "atk_relation_get_target".}
-proc ATK_TYPE_RELATION_SET*(): GType
-proc ATK_RELATION_SET*(obj: pointer): PAtkRelationSet
-proc ATK_RELATION_SET_CLASS*(klass: pointer): PAtkRelationSetClass
-proc ATK_IS_RELATION_SET*(obj: pointer): bool
-proc ATK_IS_RELATION_SET_CLASS*(klass: pointer): bool
-proc ATK_RELATION_SET_GET_CLASS*(obj: pointer): PAtkRelationSetClass
-proc atk_relation_set_get_type*(): GType{.cdecl, dynlib: atklib,
-    importc: "atk_relation_set_get_type".}
-proc atk_relation_set_new*(): PAtkRelationSet{.cdecl, dynlib: atklib,
-    importc: "atk_relation_set_new".}
-proc atk_relation_set_contains*(RelationSet: PAtkRelationSet,
-                                relationship: TAtkRelationType): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_relation_set_contains".}
-proc atk_relation_set_remove*(RelationSet: PAtkRelationSet,
-                              relation: PAtkRelation){.cdecl, dynlib: atklib,
-    importc: "atk_relation_set_remove".}
-proc atk_relation_set_add*(RelationSet: PAtkRelationSet, relation: PAtkRelation){.
-    cdecl, dynlib: atklib, importc: "atk_relation_set_add".}
-proc atk_relation_set_get_n_relations*(RelationSet: PAtkRelationSet): gint{.
-    cdecl, dynlib: atklib, importc: "atk_relation_set_get_n_relations".}
-proc atk_relation_set_get_relation*(RelationSet: PAtkRelationSet, i: gint): PAtkRelation{.
-    cdecl, dynlib: atklib, importc: "atk_relation_set_get_relation".}
-proc atk_relation_set_get_relation_by_type*(RelationSet: PAtkRelationSet,
-    relationship: TAtkRelationType): PAtkRelation{.cdecl, dynlib: atklib,
-    importc: "atk_relation_set_get_relation_by_type".}
-proc ATK_TYPE_SELECTION*(): GType
-proc ATK_IS_SELECTION*(obj: pointer): bool
-proc ATK_SELECTION*(obj: pointer): PAtkSelection
-proc ATK_SELECTION_GET_IFACE*(obj: pointer): PAtkSelectionIface
-proc atk_selection_get_type*(): GType{.cdecl, dynlib: atklib,
-                                       importc: "atk_selection_get_type".}
-proc atk_selection_add_selection*(selection: PAtkSelection, i: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_selection_add_selection".}
-proc atk_selection_clear_selection*(selection: PAtkSelection): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_selection_clear_selection".}
-proc atk_selection_ref_selection*(selection: PAtkSelection, i: gint): PAtkObject{.
-    cdecl, dynlib: atklib, importc: "atk_selection_ref_selection".}
-proc atk_selection_get_selection_count*(selection: PAtkSelection): gint{.cdecl,
-    dynlib: atklib, importc: "atk_selection_get_selection_count".}
-proc atk_selection_is_child_selected*(selection: PAtkSelection, i: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_selection_is_child_selected".}
-proc atk_selection_remove_selection*(selection: PAtkSelection, i: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_selection_remove_selection".}
-proc atk_selection_select_all_selection*(selection: PAtkSelection): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_selection_select_all_selection".}
-proc atk_state_type_register*(name: cstring): TAtkStateType{.cdecl,
-    dynlib: atklib, importc: "atk_state_type_register".}
-proc atk_state_type_get_name*(`type`: TAtkStateType): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_state_type_get_name".}
-proc atk_state_type_for_name*(name: cstring): TAtkStateType{.cdecl,
-    dynlib: atklib, importc: "atk_state_type_for_name".}
-proc ATK_TYPE_STATE_SET*(): GType
-proc ATK_STATE_SET*(obj: pointer): PAtkStateSet
-proc ATK_STATE_SET_CLASS*(klass: pointer): PAtkStateSetClass
-proc ATK_IS_STATE_SET*(obj: pointer): bool
-proc ATK_IS_STATE_SET_CLASS*(klass: pointer): bool
-proc ATK_STATE_SET_GET_CLASS*(obj: pointer): PAtkStateSetClass
-proc atk_state_set_get_type*(): GType{.cdecl, dynlib: atklib,
-                                       importc: "atk_state_set_get_type".}
-proc atk_state_set_new*(): PAtkStateSet{.cdecl, dynlib: atklib,
-    importc: "atk_state_set_new".}
-proc atk_state_set_is_empty*(StateSet: PAtkStateSet): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_state_set_is_empty".}
-proc atk_state_set_add_state*(StateSet: PAtkStateSet, `type`: TAtkStateType): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_add_state".}
-proc atk_state_set_add_states*(StateSet: PAtkStateSet, types: PAtkStateType,
-                               n_types: gint){.cdecl, dynlib: atklib,
-    importc: "atk_state_set_add_states".}
-proc atk_state_set_clear_states*(StateSet: PAtkStateSet){.cdecl, dynlib: atklib,
-    importc: "atk_state_set_clear_states".}
-proc atk_state_set_contains_state*(StateSet: PAtkStateSet, `type`: TAtkStateType): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_contains_state".}
-proc atk_state_set_contains_states*(StateSet: PAtkStateSet,
-                                    types: PAtkStateType, n_types: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_contains_states".}
-proc atk_state_set_remove_state*(StateSet: PAtkStateSet, `type`: TAtkStateType): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_remove_state".}
-proc atk_state_set_and_sets*(StateSet: PAtkStateSet, compare_set: PAtkStateSet): PAtkStateSet{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_and_sets".}
-proc atk_state_set_or_sets*(StateSet: PAtkStateSet, compare_set: PAtkStateSet): PAtkStateSet{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_or_sets".}
-proc atk_state_set_xor_sets*(StateSet: PAtkStateSet, compare_set: PAtkStateSet): PAtkStateSet{.
-    cdecl, dynlib: atklib, importc: "atk_state_set_xor_sets".}
-proc ATK_TYPE_STREAMABLE_CONTENT*(): GType
-proc ATK_IS_STREAMABLE_CONTENT*(obj: pointer): bool
-proc ATK_STREAMABLE_CONTENT*(obj: pointer): PAtkStreamableContent
-proc ATK_STREAMABLE_CONTENT_GET_IFACE*(obj: pointer): PAtkStreamableContentIface
-proc atk_streamable_content_get_type*(): GType{.cdecl, dynlib: atklib,
-    importc: "atk_streamable_content_get_type".}
-proc atk_streamable_content_get_n_mime_types*(streamable: PAtkStreamableContent): gint{.
-    cdecl, dynlib: atklib, importc: "atk_streamable_content_get_n_mime_types".}
-proc atk_streamable_content_get_mime_type*(streamable: PAtkStreamableContent,
-    i: gint): cstring{.cdecl, dynlib: atklib,
-                      importc: "atk_streamable_content_get_mime_type".}
-proc atk_streamable_content_get_stream*(streamable: PAtkStreamableContent,
-                                        mime_type: cstring): PGIOChannel{.cdecl,
-    dynlib: atklib, importc: "atk_streamable_content_get_stream".}
-proc ATK_TYPE_TABLE*(): GType
-proc ATK_IS_TABLE*(obj: pointer): bool
-proc ATK_TABLE*(obj: pointer): PAtkTable
-proc ATK_TABLE_GET_IFACE*(obj: pointer): PAtkTableIface
-proc atk_table_get_type*(): GType{.cdecl, dynlib: atklib,
-                                   importc: "atk_table_get_type".}
-proc atk_table_ref_at*(table: PAtkTable, row, column: gint): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_table_ref_at".}
-proc atk_table_get_index_at*(table: PAtkTable, row, column: gint): gint{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_index_at".}
-proc atk_table_get_column_at_index*(table: PAtkTable, index: gint): gint{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_column_at_index".}
-proc atk_table_get_row_at_index*(table: PAtkTable, index: gint): gint{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_row_at_index".}
-proc atk_table_get_n_columns*(table: PAtkTable): gint{.cdecl, dynlib: atklib,
-    importc: "atk_table_get_n_columns".}
-proc atk_table_get_n_rows*(table: PAtkTable): gint{.cdecl, dynlib: atklib,
-    importc: "atk_table_get_n_rows".}
-proc atk_table_get_column_extent_at*(table: PAtkTable, row: gint, column: gint): gint{.
-    cdecl, dynlib: atklib, importc: "atk_table_get_column_extent_at".}
-proc atk_table_get_row_extent_at*(table: PAtkTable, row: gint, column: gint): gint{.
-    cdecl, dynlib: atklib, importc: "atk_table_get_row_extent_at".}
-proc atk_table_get_caption*(table: PAtkTable): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_caption".}
-proc atk_table_get_column_description*(table: PAtkTable, column: gint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_table_get_column_description".}
-proc atk_table_get_column_header*(table: PAtkTable, column: gint): PAtkObject{.
-    cdecl, dynlib: atklib, importc: "atk_table_get_column_header".}
-proc atk_table_get_row_description*(table: PAtkTable, row: gint): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_row_description".}
-proc atk_table_get_row_header*(table: PAtkTable, row: gint): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_row_header".}
-proc atk_table_get_summary*(table: PAtkTable): PAtkObject{.cdecl,
-    dynlib: atklib, importc: "atk_table_get_summary".}
-proc atk_table_set_caption*(table: PAtkTable, caption: PAtkObject){.cdecl,
-    dynlib: atklib, importc: "atk_table_set_caption".}
-proc atk_table_set_column_description*(table: PAtkTable, column: gint,
-                                       description: cstring){.cdecl,
-    dynlib: atklib, importc: "atk_table_set_column_description".}
-proc atk_table_set_column_header*(table: PAtkTable, column: gint,
-                                  header: PAtkObject){.cdecl, dynlib: atklib,
-    importc: "atk_table_set_column_header".}
-proc atk_table_set_row_description*(table: PAtkTable, row: gint,
-                                    description: cstring){.cdecl, dynlib: atklib,
-    importc: "atk_table_set_row_description".}
-proc atk_table_set_row_header*(table: PAtkTable, row: gint, header: PAtkObject){.
-    cdecl, dynlib: atklib, importc: "atk_table_set_row_header".}
-proc atk_table_set_summary*(table: PAtkTable, accessible: PAtkObject){.cdecl,
-    dynlib: atklib, importc: "atk_table_set_summary".}
-proc atk_table_get_selected_columns*(table: PAtkTable, selected: PPgint): gint{.
-    cdecl, dynlib: atklib, importc: "atk_table_get_selected_columns".}
-proc atk_table_get_selected_rows*(table: PAtkTable, selected: PPgint): gint{.
-    cdecl, dynlib: atklib, importc: "atk_table_get_selected_rows".}
-proc atk_table_is_column_selected*(table: PAtkTable, column: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_table_is_column_selected".}
-proc atk_table_is_row_selected*(table: PAtkTable, row: gint): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_table_is_row_selected".}
-proc atk_table_is_selected*(table: PAtkTable, row: gint, column: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_table_is_selected".}
-proc atk_table_add_row_selection*(table: PAtkTable, row: gint): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_table_add_row_selection".}
-proc atk_table_remove_row_selection*(table: PAtkTable, row: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_table_remove_row_selection".}
-proc atk_table_add_column_selection*(table: PAtkTable, column: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_table_add_column_selection".}
-proc atk_table_remove_column_selection*(table: PAtkTable, column: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_table_remove_column_selection".}
-proc atk_text_attribute_register*(name: cstring): TAtkTextAttribute{.cdecl,
-    dynlib: atklib, importc: "atk_text_attribute_register".}
-proc ATK_TYPE_TEXT*(): GType
-proc ATK_IS_TEXT*(obj: pointer): bool
-proc ATK_TEXT*(obj: pointer): PAtkText
-proc ATK_TEXT_GET_IFACE*(obj: pointer): PAtkTextIface
-proc atk_text_get_type*(): GType{.cdecl, dynlib: atklib,
-                                  importc: "atk_text_get_type".}
-proc atk_text_get_text*(text: PAtkText, start_offset: gint, end_offset: gint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_text".}
-proc atk_text_get_character_at_offset*(text: PAtkText, offset: gint): gunichar{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_character_at_offset".}
-proc atk_text_get_text_after_offset*(text: PAtkText, offset: gint,
-                                     boundary_type: TAtkTextBoundary,
-                                     start_offset: Pgint, end_offset: Pgint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_text_after_offset".}
-proc atk_text_get_text_at_offset*(text: PAtkText, offset: gint,
-                                  boundary_type: TAtkTextBoundary,
-                                  start_offset: Pgint, end_offset: Pgint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_text_at_offset".}
-proc atk_text_get_text_before_offset*(text: PAtkText, offset: gint,
-                                      boundary_type: TAtkTextBoundary,
-                                      start_offset: Pgint, end_offset: Pgint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_text_before_offset".}
-proc atk_text_get_caret_offset*(text: PAtkText): gint{.cdecl, dynlib: atklib,
-    importc: "atk_text_get_caret_offset".}
-proc atk_text_get_character_extents*(text: PAtkText, offset: gint, x: Pgint,
-                                     y: Pgint, width: Pgint, height: Pgint,
-                                     coords: TAtkCoordType){.cdecl,
-    dynlib: atklib, importc: "atk_text_get_character_extents".}
-proc atk_text_get_run_attributes*(text: PAtkText, offset: gint,
-                                  start_offset: Pgint, end_offset: Pgint): PAtkAttributeSet{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_run_attributes".}
-proc atk_text_get_default_attributes*(text: PAtkText): PAtkAttributeSet{.cdecl,
-    dynlib: atklib, importc: "atk_text_get_default_attributes".}
-proc atk_text_get_character_count*(text: PAtkText): gint{.cdecl, dynlib: atklib,
-    importc: "atk_text_get_character_count".}
-proc atk_text_get_offset_at_point*(text: PAtkText, x: gint, y: gint,
-                                   coords: TAtkCoordType): gint{.cdecl,
-    dynlib: atklib, importc: "atk_text_get_offset_at_point".}
-proc atk_text_get_n_selections*(text: PAtkText): gint{.cdecl, dynlib: atklib,
-    importc: "atk_text_get_n_selections".}
-proc atk_text_get_selection*(text: PAtkText, selection_num: gint,
-                             start_offset: Pgint, end_offset: Pgint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_text_get_selection".}
-proc atk_text_add_selection*(text: PAtkText, start_offset: gint,
-                             end_offset: gint): gboolean{.cdecl, dynlib: atklib,
-    importc: "atk_text_add_selection".}
-proc atk_text_remove_selection*(text: PAtkText, selection_num: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_text_remove_selection".}
-proc atk_text_set_selection*(text: PAtkText, selection_num: gint,
-                             start_offset: gint, end_offset: gint): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_text_set_selection".}
-proc atk_text_set_caret_offset*(text: PAtkText, offset: gint): gboolean{.cdecl,
-    dynlib: atklib, importc: "atk_text_set_caret_offset".}
-proc atk_attribute_set_free*(attrib_set: PAtkAttributeSet){.cdecl,
-    dynlib: atklib, importc: "atk_attribute_set_free".}
-proc atk_text_attribute_get_name*(attr: TAtkTextAttribute): cstring{.cdecl,
-    dynlib: atklib, importc: "atk_text_attribute_get_name".}
-proc atk_text_attribute_for_name*(name: cstring): TAtkTextAttribute{.cdecl,
-    dynlib: atklib, importc: "atk_text_attribute_for_name".}
-proc atk_text_attribute_get_value*(attr: TAtkTextAttribute, index: gint): cstring{.
-    cdecl, dynlib: atklib, importc: "atk_text_attribute_get_value".}
-proc ATK_TYPE_UTIL*(): GType
-proc ATK_IS_UTIL*(obj: pointer): bool
-proc ATK_UTIL*(obj: pointer): PAtkUtil
-proc ATK_UTIL_CLASS*(klass: pointer): PAtkUtilClass
-proc ATK_IS_UTIL_CLASS*(klass: pointer): bool
-proc ATK_UTIL_GET_CLASS*(obj: pointer): PAtkUtilClass
-proc atk_util_get_type*(): GType{.cdecl, dynlib: atklib,
-                                  importc: "atk_util_get_type".}
-proc atk_add_focus_tracker*(focus_tracker: TAtkEventListener): guint{.cdecl,
-    dynlib: atklib, importc: "atk_add_focus_tracker".}
-proc atk_remove_focus_tracker*(tracker_id: guint){.cdecl, dynlib: atklib,
-    importc: "atk_remove_focus_tracker".}
-proc atk_focus_tracker_init*(add_function: TAtkEventListenerInit){.cdecl,
-    dynlib: atklib, importc: "atk_focus_tracker_init".}
-proc atk_focus_tracker_notify*(anObject: PAtkObject){.cdecl, dynlib: atklib,
-    importc: "atk_focus_tracker_notify".}
-proc atk_add_global_event_listener*(listener: TGSignalEmissionHook,
-                                    event_type: cstring): guint{.cdecl,
-    dynlib: atklib, importc: "atk_add_global_event_listener".}
-proc atk_remove_global_event_listener*(listener_id: guint){.cdecl,
-    dynlib: atklib, importc: "atk_remove_global_event_listener".}
-proc atk_add_key_event_listener*(listener: TAtkKeySnoopFunc, data: gpointer): guint{.
-    cdecl, dynlib: atklib, importc: "atk_add_key_event_listener".}
-proc atk_remove_key_event_listener*(listener_id: guint){.cdecl, dynlib: atklib,
-    importc: "atk_remove_key_event_listener".}
-proc atk_get_root*(): PAtkObject{.cdecl, dynlib: atklib, importc: "atk_get_root".}
-proc atk_get_toolkit_name*(): cstring{.cdecl, dynlib: atklib,
-                                      importc: "atk_get_toolkit_name".}
-proc atk_get_toolkit_version*(): cstring{.cdecl, dynlib: atklib,
-    importc: "atk_get_toolkit_version".}
-proc ATK_TYPE_VALUE*(): GType
-proc ATK_IS_VALUE*(obj: pointer): bool
-proc ATK_VALUE*(obj: pointer): PAtkValue
-proc ATK_VALUE_GET_IFACE*(obj: pointer): PAtkValueIface
-proc atk_value_get_type*(): GType{.cdecl, dynlib: atklib,
-                                   importc: "atk_value_get_type".}
-proc atk_value_get_current_value*(obj: PAtkValue, value: PGValue){.cdecl,
-    dynlib: atklib, importc: "atk_value_get_current_value".}
-proc atk_value_get_maximum_value*(obj: PAtkValue, value: PGValue){.cdecl,
-    dynlib: atklib, importc: "atk_value_get_maximum_value".}
-proc atk_value_get_minimum_value*(obj: PAtkValue, value: PGValue){.cdecl,
-    dynlib: atklib, importc: "atk_value_get_minimum_value".}
-proc atk_value_set_current_value*(obj: PAtkValue, value: PGValue): gboolean{.
-    cdecl, dynlib: atklib, importc: "atk_value_set_current_value".}
-proc ATK_TYPE_OBJECT*(): GType =
-  result = atk_object_get_type()
-
-proc ATK_OBJECT*(obj: pointer): PAtkObject =
-  result = cast[PAtkObject](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_OBJECT()))
-
-proc ATK_OBJECT_CLASS*(klass: pointer): PAtkObjectClass =
-  result = cast[PAtkObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, ATK_TYPE_OBJECT()))
-
-proc ATK_IS_OBJECT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_OBJECT())
-
-proc ATK_IS_OBJECT_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_OBJECT())
-
-proc ATK_OBJECT_GET_CLASS*(obj: pointer): PAtkObjectClass =
-  result = cast[PAtkObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, ATK_TYPE_OBJECT()))
-
-proc ATK_TYPE_IMPLEMENTOR*(): GType =
-  result = atk_implementor_get_type()
-
-proc ATK_IS_IMPLEMENTOR*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_IMPLEMENTOR())
-
-proc ATK_IMPLEMENTOR*(obj: pointer): PAtkImplementor =
-  result = PAtkImplementor(G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_IMPLEMENTOR()))
-
-proc ATK_IMPLEMENTOR_GET_IFACE*(obj: pointer): PAtkImplementorIface =
-  result = cast[PAtkImplementorIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_IMPLEMENTOR()))
-
-proc ATK_TYPE_ACTION*(): GType =
-  result = atk_action_get_type()
-
-proc ATK_IS_ACTION*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_ACTION())
-
-proc ATK_ACTION*(obj: pointer): PAtkAction =
-  result = PAtkAction(G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_ACTION()))
-
-proc ATK_ACTION_GET_IFACE*(obj: pointer): PAtkActionIface =
-  result = cast[PAtkActionIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-    ATK_TYPE_ACTION()))
-
-proc ATK_TYPE_COMPONENT*(): GType =
-  result = atk_component_get_type()
-
-proc ATK_IS_COMPONENT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_COMPONENT())
-
-proc ATK_COMPONENT*(obj: pointer): PAtkComponent =
-  result = PAtkComponent(G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_COMPONENT()))
-
-proc ATK_COMPONENT_GET_IFACE*(obj: pointer): PAtkComponentIface =
-  result = cast[PAtkComponentIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_COMPONENT()))
-
-proc ATK_TYPE_DOCUMENT*(): GType =
-  result = atk_document_get_type()
-
-proc ATK_IS_DOCUMENT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_DOCUMENT())
-
-proc ATK_DOCUMENT*(obj: pointer): PAtkDocument =
-  result = cast[PAtkDocument](G_TYPE_CHECK_INSTANCE_CAST(obj,
-    ATK_TYPE_DOCUMENT()))
-
-proc ATK_DOCUMENT_GET_IFACE*(obj: pointer): PAtkDocumentIface =
-  result = cast[PAtkDocumentIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_DOCUMENT()))
-
-proc ATK_TYPE_EDITABLE_TEXT*(): GType =
-  result = atk_editable_text_get_type()
-
-proc ATK_IS_EDITABLE_TEXT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_EDITABLE_TEXT())
-
-proc ATK_EDITABLE_TEXT*(obj: pointer): PAtkEditableText =
-  result = cast[PAtkEditableText](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      ATK_TYPE_EDITABLE_TEXT()))
-
-proc ATK_EDITABLE_TEXT_GET_IFACE*(obj: pointer): PAtkEditableTextIface =
-  result = cast[PAtkEditableTextIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_EDITABLE_TEXT()))
-
-proc ATK_TYPE_GOBJECT_ACCESSIBLE*(): GType =
-  result = atk_gobject_accessible_get_type()
-
-proc ATK_GOBJECT_ACCESSIBLE*(obj: pointer): PAtkGObjectAccessible =
-  result = cast[PAtkGObjectAccessible](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      ATK_TYPE_GOBJECT_ACCESSIBLE()))
-
-proc ATK_GOBJECT_ACCESSIBLE_CLASS*(klass: pointer): PAtkGObjectAccessibleClass =
-  result = cast[PAtkGObjectAccessibleClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      ATK_TYPE_GOBJECT_ACCESSIBLE()))
-
-proc ATK_IS_GOBJECT_ACCESSIBLE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_GOBJECT_ACCESSIBLE())
-
-proc ATK_IS_GOBJECT_ACCESSIBLE_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_GOBJECT_ACCESSIBLE())
-
-proc ATK_GOBJECT_ACCESSIBLE_GET_CLASS*(obj: pointer): PAtkGObjectAccessibleClass =
-  result = cast[PAtkGObjectAccessibleClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      ATK_TYPE_GOBJECT_ACCESSIBLE()))
-
-proc ATK_TYPE_HYPERLINK*(): GType =
-  result = atk_hyperlink_get_type()
-
-proc ATK_HYPERLINK*(obj: pointer): PAtkHyperlink =
-  result = cast[PAtkHyperlink](G_TYPE_CHECK_INSTANCE_CAST(obj,
-                              ATK_TYPE_HYPERLINK()))
-
-proc ATK_HYPERLINK_CLASS*(klass: pointer): PAtkHyperlinkClass =
-  result = cast[PAtkHyperlinkClass](G_TYPE_CHECK_CLASS_CAST(klass,
-                                    ATK_TYPE_HYPERLINK()))
-
-proc ATK_IS_HYPERLINK*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_HYPERLINK())
-
-proc ATK_IS_HYPERLINK_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_HYPERLINK())
-
-proc ATK_HYPERLINK_GET_CLASS*(obj: pointer): PAtkHyperlinkClass =
-  result = cast[PAtkHyperlinkClass](G_TYPE_INSTANCE_GET_CLASS(obj, ATK_TYPE_HYPERLINK()))
-
-proc ATK_TYPE_HYPERTEXT*(): GType =
-  result = atk_hypertext_get_type()
-
-proc ATK_IS_HYPERTEXT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_HYPERTEXT())
-
-proc ATK_HYPERTEXT*(obj: pointer): PAtkHypertext =
-  result = cast[PAtkHypertext](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_HYPERTEXT()))
-
-proc ATK_HYPERTEXT_GET_IFACE*(obj: pointer): PAtkHypertextIface =
-  result = cast[PAtkHypertextIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_HYPERTEXT()))
-
-proc ATK_TYPE_IMAGE*(): GType =
-  result = atk_image_get_type()
-
-proc ATK_IS_IMAGE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_IMAGE())
-
-proc ATK_IMAGE*(obj: pointer): PAtkImage =
-  result = cast[PAtkImage](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_IMAGE()))
-
-proc ATK_IMAGE_GET_IFACE*(obj: pointer): PAtkImageIface =
-  result = cast[PAtkImageIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, ATK_TYPE_IMAGE()))
-
-proc ATK_TYPE_OBJECT_FACTORY*(): GType =
-  result = atk_object_factory_get_type()
-
-proc ATK_OBJECT_FACTORY*(obj: pointer): PAtkObjectFactory =
-  result = cast[PAtkObjectFactory](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      ATK_TYPE_OBJECT_FACTORY()))
-
-proc ATK_OBJECT_FACTORY_CLASS*(klass: pointer): PAtkObjectFactoryClass =
-  result = cast[PAtkObjectFactoryClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      ATK_TYPE_OBJECT_FACTORY()))
-
-proc ATK_IS_OBJECT_FACTORY*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_OBJECT_FACTORY())
-
-proc ATK_IS_OBJECT_FACTORY_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_OBJECT_FACTORY())
-
-proc ATK_OBJECT_FACTORY_GET_CLASS*(obj: pointer): PAtkObjectFactoryClass =
-  result = cast[PAtkObjectFactoryClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      ATK_TYPE_OBJECT_FACTORY()))
-
-proc ATK_TYPE_REGISTRY*(): GType =
-  result = atk_registry_get_type()
-
-proc ATK_REGISTRY*(obj: pointer): PAtkRegistry =
-  result = cast[PAtkRegistry](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_REGISTRY()))
-
-proc ATK_REGISTRY_CLASS*(klass: pointer): PAtkRegistryClass =
-  result = cast[PAtkRegistryClass](G_TYPE_CHECK_CLASS_CAST(klass,
-                                   ATK_TYPE_REGISTRY()))
-
-proc ATK_IS_REGISTRY*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_REGISTRY())
-
-proc ATK_IS_REGISTRY_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_REGISTRY())
-
-proc ATK_REGISTRY_GET_CLASS*(obj: pointer): PAtkRegistryClass =
-  result = cast[PAtkRegistryClass](G_TYPE_INSTANCE_GET_CLASS(obj, ATK_TYPE_REGISTRY()))
-
-proc ATK_TYPE_RELATION*(): GType =
-  result = atk_relation_get_type()
-
-proc ATK_RELATION*(obj: pointer): PAtkRelation =
-  result = cast[PAtkRelation](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_RELATION()))
-
-proc ATK_RELATION_CLASS*(klass: pointer): PAtkRelationClass =
-  result = cast[PAtkRelationClass](G_TYPE_CHECK_CLASS_CAST(klass, ATK_TYPE_RELATION()))
-
-proc ATK_IS_RELATION*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_RELATION())
-
-proc ATK_IS_RELATION_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_RELATION())
-
-proc ATK_RELATION_GET_CLASS*(obj: pointer): PAtkRelationClass =
-  result = cast[PAtkRelationClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-    ATK_TYPE_RELATION()))
-
-proc ATK_TYPE_RELATION_SET*(): GType =
-  result = atk_relation_set_get_type()
-
-proc ATK_RELATION_SET*(obj: pointer): PAtkRelationSet =
-  result = cast[PAtkRelationSet](G_TYPE_CHECK_INSTANCE_CAST(obj,
-    ATK_TYPE_RELATION_SET()))
-
-proc ATK_RELATION_SET_CLASS*(klass: pointer): PAtkRelationSetClass =
-  result = cast[PAtkRelationSetClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      ATK_TYPE_RELATION_SET()))
-
-proc ATK_IS_RELATION_SET*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_RELATION_SET())
-
-proc ATK_IS_RELATION_SET_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_RELATION_SET())
-
-proc ATK_RELATION_SET_GET_CLASS*(obj: pointer): PAtkRelationSetClass =
-  result = cast[PAtkRelationSetClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      ATK_TYPE_RELATION_SET()))
-
-proc ATK_TYPE_SELECTION*(): GType =
-  result = atk_selection_get_type()
-
-proc ATK_IS_SELECTION*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_SELECTION())
-
-proc ATK_SELECTION*(obj: pointer): PAtkSelection =
-  result = cast[PAtkSelection](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_SELECTION()))
-
-proc ATK_SELECTION_GET_IFACE*(obj: pointer): PAtkSelectionIface =
-  result = cast[PAtkSelectionIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_SELECTION()))
-
-proc ATK_TYPE_STATE_SET*(): GType =
-  result = atk_state_set_get_type()
-
-proc ATK_STATE_SET*(obj: pointer): PAtkStateSet =
-  result = cast[PAtkStateSet](G_TYPE_CHECK_INSTANCE_CAST(obj,
-    ATK_TYPE_STATE_SET()))
-
-proc ATK_STATE_SET_CLASS*(klass: pointer): PAtkStateSetClass =
-  result = cast[PAtkStateSetClass](G_TYPE_CHECK_CLASS_CAST(klass,
-    ATK_TYPE_STATE_SET()))
-
-proc ATK_IS_STATE_SET*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_STATE_SET())
-
-proc ATK_IS_STATE_SET_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_STATE_SET())
-
-proc ATK_STATE_SET_GET_CLASS*(obj: pointer): PAtkStateSetClass =
-  result = cast[PAtkStateSetClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-    ATK_TYPE_STATE_SET()))
-
-proc ATK_TYPE_STREAMABLE_CONTENT*(): GType =
-  result = atk_streamable_content_get_type()
-
-proc ATK_IS_STREAMABLE_CONTENT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_STREAMABLE_CONTENT())
-
-proc ATK_STREAMABLE_CONTENT*(obj: pointer): PAtkStreamableContent =
-  result = cast[PAtkStreamableContent](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      ATK_TYPE_STREAMABLE_CONTENT()))
-
-proc ATK_STREAMABLE_CONTENT_GET_IFACE*(obj: pointer): PAtkStreamableContentIface =
-  result = cast[PAtkStreamableContentIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      ATK_TYPE_STREAMABLE_CONTENT()))
-
-proc ATK_TYPE_TABLE*(): GType =
-  result = atk_table_get_type()
-
-proc ATK_IS_TABLE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_TABLE())
-
-proc ATK_TABLE*(obj: pointer): PAtkTable =
-  result = cast[PAtkTable](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_TABLE()))
-
-proc ATK_TABLE_GET_IFACE*(obj: pointer): PAtkTableIface =
-  result = cast[PAtkTableIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, ATK_TYPE_TABLE()))
-
-proc ATK_TYPE_TEXT*(): GType =
-  result = atk_text_get_type()
-
-proc ATK_IS_TEXT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_TEXT())
-
-proc ATK_TEXT*(obj: pointer): PAtkText =
-  result = cast[PAtkText](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_TEXT()))
-
-proc ATK_TEXT_GET_IFACE*(obj: pointer): PAtkTextIface =
-  result = cast[PAtkTextIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, ATK_TYPE_TEXT()))
-
-proc ATK_TYPE_UTIL*(): GType =
-  result = atk_util_get_type()
-
-proc ATK_IS_UTIL*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_UTIL())
-
-proc ATK_UTIL*(obj: pointer): PAtkUtil =
-  result = cast[PAtkUtil](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_UTIL()))
-
-proc ATK_UTIL_CLASS*(klass: pointer): PAtkUtilClass =
-  result = cast[PAtkUtilClass](G_TYPE_CHECK_CLASS_CAST(klass, ATK_TYPE_UTIL()))
-
-proc ATK_IS_UTIL_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, ATK_TYPE_UTIL())
-
-proc ATK_UTIL_GET_CLASS*(obj: pointer): PAtkUtilClass =
-  result = cast[PAtkUtilClass](G_TYPE_INSTANCE_GET_CLASS(obj, ATK_TYPE_UTIL()))
-
-proc ATK_TYPE_VALUE*(): GType =
-  result = atk_value_get_type()
-
-proc ATK_IS_VALUE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, ATK_TYPE_VALUE())
-
-proc ATK_VALUE*(obj: pointer): PAtkValue =
-  result = cast[PAtkValue](G_TYPE_CHECK_INSTANCE_CAST(obj, ATK_TYPE_VALUE()))
-
-proc ATK_VALUE_GET_IFACE*(obj: pointer): PAtkValueIface =
-  result = cast[PAtkValueIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, ATK_TYPE_VALUE()))
diff --git a/lib/wrappers/gtk/gdk2.nim b/lib/wrappers/gtk/gdk2.nim
index 0ca5056b5..04840f24a 100755
--- a/lib/wrappers/gtk/gdk2.nim
+++ b/lib/wrappers/gtk/gdk2.nim
@@ -1,14 +1,11 @@
 {.deadCodeElim: on.}
-
-import
+import 
   glib2, gdk2pixbuf, pango
 
-when defined(win32):
-  const
-    gdklib = "libgdk-win32-2.0-0.dll"
-    GDK_HAVE_WCHAR_H = 1
-    GDK_HAVE_WCTYPE_H = 1
-elif defined(darwin):
+when defined(win32): 
+  const 
+    lib = "libgdk-win32-2.0-0.dll"
+elif defined(darwin): 
   #    linklib gtk-x11-2.0
   #    linklib gdk-x11-2.0
   #    linklib pango-1.0.0
@@ -16,155 +13,151 @@ elif defined(darwin):
   #    linklib gobject-2.0.0
   #    linklib gdk_pixbuf-2.0.0
   #    linklib atk-1.0.0
-  const
-    gdklib = "gdk-x11-2.0"
-else:
-  const
-    gdklib = "libgdk-x11-2.0.so"
-const
+  const 
+    lib = "gdk-x11-2.0"
+else: 
+  const 
+    lib = "libgdk-x11-2.0.so"
+const 
   NUMPTSTOBUFFER* = 200
-  GDK_MAX_TIMECOORD_AXES* = 128
-
-type
-  PGdkDeviceClass* = ptr TGdkDeviceClass
-  TGdkDeviceClass* = object of TGObjectClass
-
-  PGdkVisualClass* = ptr TGdkVisualClass
-  TGdkVisualClass* = object of TGObjectClass
-
-  PGdkColor* = ptr TGdkColor
-  TGdkColor* {.final, pure.} = object
+  MAX_TIMECOORD_AXES* = 128
+
+type 
+  PDeviceClass* = ptr TDeviceClass
+  TDeviceClass* = object of TGObjectClass
+  PVisualClass* = ptr TVisualClass
+  TVisualClass* = object of TGObjectClass
+  PColor* = ptr TColor
+  TColor*{.final, pure.} = object 
     pixel*: guint32
     red*: guint16
     green*: guint16
     blue*: guint16
 
-  PGdkColormap* = ptr TGdkColormap
-  PGdkDrawable* = ptr TGdkDrawable
-  TGdkDrawable* = object of TGObject
-
-  PGdkWindow* = ptr TGdkWindow
-  TGdkWindow* = TGdkDrawable
-  PGdkPixmap* = ptr TGdkPixmap
-  TGdkPixmap* = TGdkDrawable
-  PGdkBitmap* = ptr TGdkBitmap
-  TGdkBitmap* = TGdkDrawable
-  PGdkFontType* = ptr TGdkFontType
-  TGdkFontType* = enum
-    GDK_FONT_FONT, GDK_FONT_FONTSET
-  PGdkFont* = ptr TGdkFont
-  TGdkFont* {.final, pure.} = object
-    `type`*: TGdkFontType
+  PColormap* = ptr TColormap
+  PDrawable* = ptr TDrawable
+  TDrawable* = object of TGObject
+  PWindow* = ptr TWindow
+  TWindow* = TDrawable
+  PPixmap* = ptr TPixmap
+  TPixmap* = TDrawable
+  PBitmap* = ptr TBitmap
+  TBitmap* = TDrawable
+  PFontType* = ptr TFontType
+  TFontType* = enum 
+    FONT_FONT, FONT_FONTSET
+  PFont* = ptr TFont
+  TFont*{.final, pure.} = object 
+    `type`*: TFontType
     ascent*: gint
     descent*: gint
 
-  PGdkFunction* = ptr TGdkFunction
-  TGdkFunction* = enum
-    GDK_COPY, GDK_INVERT, GDK_XOR, GDK_CLEAR, GDK_AND, GDK_AND_REVERSE,
-    GDK_AND_INVERT, GDK_NOOP, GDK_OR, GDK_EQUIV, GDK_OR_REVERSE,
-    GDK_COPY_INVERT, GDK_OR_INVERT, GDK_NAND, GDK_NOR, GDK_SET
-  PGdkCapStyle* = ptr TGdkCapStyle
-  TGdkCapStyle* = enum
-    GDK_CAP_NOT_LAST, GDK_CAP_BUTT, GDK_CAP_ROUND, GDK_CAP_PROJECTING
-  PGdkFill* = ptr TGdkFill
-  TGdkFill* = enum
-    GDK_SOLID, GDK_TILED, GDK_STIPPLED, GDK_OPAQUE_STIPPLED
-  PGdkJoinStyle* = ptr TGdkJoinStyle
-  TGdkJoinStyle* = enum
-    GDK_JOIN_MITER, GDK_JOIN_ROUND, GDK_JOIN_BEVEL
-  PGdkLineStyle* = ptr TGdkLineStyle
-  TGdkLineStyle* = enum
-    GDK_LINE_SOLID, GDK_LINE_ON_OFF_DASH, GDK_LINE_DOUBLE_DASH
-  PGdkSubwindowMode* = ptr TGdkSubwindowMode
-  TGdkSubwindowMode* = int
-  PGdkGCValuesMask* = ptr TGdkGCValuesMask
-  TGdkGCValuesMask* = int32
-  PGdkGCValues* = ptr TGdkGCValues
-  TGdkGCValues* {.final, pure.} = object
-    foreground*: TGdkColor
-    background*: TGdkColor
-    font*: PGdkFont
-    `function`*: TGdkFunction
-    fill*: TGdkFill
-    tile*: PGdkPixmap
-    stipple*: PGdkPixmap
-    clip_mask*: PGdkPixmap
-    subwindow_mode*: TGdkSubwindowMode
+  PFunction* = ptr TFunction
+  TFunction* = enum 
+    funcCOPY, funcINVERT, funcXOR, funcCLEAR, funcAND, 
+    funcAND_REVERSE, funcAND_INVERT, funcNOOP, funcOR, funcEQUIV, 
+    funcOR_REVERSE, funcCOPY_INVERT, funcOR_INVERT, funcNAND, funcNOR, funcSET
+  PCapStyle* = ptr TCapStyle
+  TCapStyle* = enum 
+    CAP_NOT_LAST, CAP_BUTT, CAP_ROUND, CAP_PROJECTING
+  PFill* = ptr TFill
+  TFill* = enum 
+    SOLID, TILED, STIPPLED, OPAQUE_STIPPLED
+  PJoinStyle* = ptr TJoinStyle
+  TJoinStyle* = enum 
+    JOIN_MITER, JOIN_ROUND, JOIN_BEVEL
+  PLineStyle* = ptr TLineStyle
+  TLineStyle* = enum 
+    LINE_SOLID, LINE_ON_OFF_DASH, LINE_DOUBLE_DASH
+  PSubwindowMode* = ptr TSubwindowMode
+  TSubwindowMode* = int
+  PGCValuesMask* = ptr TGCValuesMask
+  TGCValuesMask* = int32
+  PGCValues* = ptr TGCValues
+  TGCValues*{.final, pure.} = object 
+    foreground*: TColor
+    background*: TColor
+    font*: PFont
+    `function`*: TFunction
+    fill*: TFill
+    tile*: PPixmap
+    stipple*: PPixmap
+    clip_mask*: PPixmap
+    subwindow_mode*: TSubwindowMode
     ts_x_origin*: gint
     ts_y_origin*: gint
     clip_x_origin*: gint
     clip_y_origin*: gint
     graphics_exposures*: gint
     line_width*: gint
-    line_style*: TGdkLineStyle
-    cap_style*: TGdkCapStyle
-    join_style*: TGdkJoinStyle
+    line_style*: TLineStyle
+    cap_style*: TCapStyle
+    join_style*: TJoinStyle
 
-  PGdkGC* = ptr TGdkGC
-  TGdkGC* = object of TGObject
+  PGC* = ptr TGC
+  TGC* = object of TGObject
     clip_x_origin*: gint
     clip_y_origin*: gint
     ts_x_origin*: gint
     ts_y_origin*: gint
-    colormap*: PGdkColormap
-
-  PGdkImageType* = ptr TGdkImageType
-  TGdkImageType* = enum
-    GDK_IMAGE_NORMAL, GDK_IMAGE_SHARED, GDK_IMAGE_FASTEST
-  PGdkImage* = ptr TGdkImage
-  PGdkDevice* = ptr TGdkDevice
-  PGdkTimeCoord* = ptr TGdkTimeCoord
-  PPGdkTimeCoord* = ptr PGdkTimeCoord
-  PGdkRgbDither* = ptr TGdkRgbDither
-  TGdkRgbDither* = enum
-    GDK_RGB_DITHER_NONE, GDK_RGB_DITHER_NORMAL, GDK_RGB_DITHER_MAX
-  PGdkDisplay* = ptr TGdkDisplay
-  PGdkScreen* = ptr TGdkScreen
-  TGdkScreen* = object of TGObject
-
-  PGdkInputCondition* = ptr TGdkInputCondition
-  TGdkInputCondition* = int32
-  PGdkStatus* = ptr TGdkStatus
-  TGdkStatus* = int32
-  TGdkPoint* {.final, pure.} = object
+    colormap*: PColormap
+
+  PImageType* = ptr TImageType
+  TImageType* = enum 
+    IMAGE_NORMAL, IMAGE_SHARED, IMAGE_FASTEST
+  PImage* = ptr TImage
+  PDevice* = ptr TDevice
+  PTimeCoord* = ptr TTimeCoord
+  PPTimeCoord* = ptr PTimeCoord
+  PRgbDither* = ptr TRgbDither
+  TRgbDither* = enum 
+    RGB_DITHER_NONE, RGB_DITHER_NORMAL, RGB_DITHER_MAX
+  PDisplay* = ptr TDisplay
+  PScreen* = ptr TScreen
+  TScreen* = object of TGObject
+  PInputCondition* = ptr TInputCondition
+  TInputCondition* = int32
+  PStatus* = ptr TStatus
+  TStatus* = int32
+  TPoint*{.final, pure.} = object 
     x*: gint
     y*: gint
 
-  PGdkPoint* = ptr TGdkPoint
-  PPGdkPoint* = ptr PGdkPoint
-  PGdkSpan* = ptr TGdkSpan
-  PGdkWChar* = ptr TGdkWChar
-  TGdkWChar* = guint32
-  PGdkSegment* = ptr TGdkSegment
-  TGdkSegment* {.final, pure.} = object
+  PPoint* = ptr TPoint
+  PPPoint* = ptr PPoint
+  PSpan* = ptr TSpan
+  PWChar* = ptr TWChar
+  TWChar* = guint32
+  PSegment* = ptr TSegment
+  TSegment*{.final, pure.} = object 
     x1*: gint
     y1*: gint
     x2*: gint
     y2*: gint
 
-  PGdkRectangle* = ptr TGdkRectangle
-  TGdkRectangle* {.final, pure.} = object
+  PRectangle* = ptr TRectangle
+  TRectangle*{.final, pure.} = object 
     x*: gint
     y*: gint
     width*: gint
     height*: gint
 
-  PGdkAtom* = ptr TGdkAtom
-  TGdkAtom* = gulong
-  PGdkByteOrder* = ptr TGdkByteOrder
-  TGdkByteOrder* = enum
-    GDK_LSB_FIRST, GDK_MSB_FIRST
-  PGdkModifierType* = ptr TGdkModifierType
-  TGdkModifierType* = gint
-  PGdkVisualType* = ptr TGdkVisualType
-  TGdkVisualType* = enum
-    GDK_VISUAL_STATIC_GRAY, GDK_VISUAL_GRAYSCALE, GDK_VISUAL_STATIC_COLOR,
-    GDK_VISUAL_PSEUDO_COLOR, GDK_VISUAL_TRUE_COLOR, GDK_VISUAL_DIRECT_COLOR
-  PGdkVisual* = ptr TGdkVisual
-  TGdkVisual* = object of TGObject
-    TheType*: TGdkVisualType
+  PAtom* = ptr TAtom
+  TAtom* = gulong
+  PByteOrder* = ptr TByteOrder
+  TByteOrder* = enum 
+    LSB_FIRST, MSB_FIRST
+  PModifierType* = ptr TModifierType
+  TModifierType* = gint
+  PVisualType* = ptr TVisualType
+  TVisualType* = enum 
+    VISUAL_STATIC_GRAY, VISUAL_GRAYSCALE, VISUAL_STATIC_COLOR, 
+    VISUAL_PSEUDO_COLOR, VISUAL_TRUE_COLOR, VISUAL_DIRECT_COLOR
+  PVisual* = ptr TVisual
+  TVisual* = object of TGObject
+    TheType*: TVisualType
     depth*: gint
-    byte_order*: TGdkByteOrder
+    byte_order*: TByteOrder
     colormap_size*: gint
     bits_per_rgb*: gint
     red_mask*: guint32
@@ -176,198 +169,189 @@ type
     blue_mask*: guint32
     blue_shift*: gint
     blue_prec*: gint
-    screen*: PGdkScreen
-
-  PGdkColormapClass* = ptr TGdkColormapClass
-  TGdkColormapClass* = object of TGObjectClass
+    screen*: PScreen
 
-  TGdkColormap* = object of TGObject
+  PColormapClass* = ptr TColormapClass
+  TColormapClass* = object of TGObjectClass
+  TColormap* = object of TGObject
     size*: gint
-    colors*: PGdkColor
-    visual*: PGdkVisual
+    colors*: PColor
+    visual*: PVisual
     windowing_data*: gpointer
-    screen*: PGdkScreen
+    screen*: PScreen
 
-  PGdkCursorType* = ptr TGdkCursorType
-  TGdkCursorType* = gint
-  PGdkCursor* = ptr TGdkCursor
-  TGdkCursor* {.final, pure.} = object
-    `type`*: TGdkCursorType
+  PCursorType* = ptr TCursorType
+  TCursorType* = gint
+  PCursor* = ptr TCursor
+  TCursor*{.final, pure.} = object 
+    `type`*: TCursorType
     ref_count*: guint
 
-  PGdkDragAction* = ptr TGdkDragAction
-  TGdkDragAction* = int32
-  PGdkDragProtocol* = ptr TGdkDragProtocol
-  TGdkDragProtocol* = enum
-    GDK_DRAG_PROTO_MOTIF, GDK_DRAG_PROTO_XDND, GDK_DRAG_PROTO_ROOTWIN,
-    GDK_DRAG_PROTO_NONE, GDK_DRAG_PROTO_WIN32_DROPFILES, GDK_DRAG_PROTO_OLE2,
-    GDK_DRAG_PROTO_LOCAL
-  PGdkDragContext* = ptr TGdkDragContext
-  TGdkDragContext* = object of TGObject
-    protocol*: TGdkDragProtocol
+  PDragAction* = ptr TDragAction
+  TDragAction* = int32
+  PDragProtocol* = ptr TDragProtocol
+  TDragProtocol* = enum 
+    DRAG_PROTO_MOTIF, DRAG_PROTO_XDND, DRAG_PROTO_ROOTWIN, DRAG_PROTO_NONE, 
+    DRAG_PROTO_WIN32_DROPFILES, DRAG_PROTO_OLE2, DRAG_PROTO_LOCAL
+  PDragContext* = ptr TDragContext
+  TDragContext* = object of TGObject
+    protocol*: TDragProtocol
     is_source*: gboolean
-    source_window*: PGdkWindow
-    dest_window*: PGdkWindow
+    source_window*: PWindow
+    dest_window*: PWindow
     targets*: PGList
-    actions*: TGdkDragAction
-    suggested_action*: TGdkDragAction
-    action*: TGdkDragAction
+    actions*: TDragAction
+    suggested_action*: TDragAction
+    action*: TDragAction
     start_time*: guint32
     windowing_data*: gpointer
 
-  PGdkDragContextClass* = ptr TGdkDragContextClass
-  TGdkDragContextClass* = object of TGObjectClass
-
-  PGdkRegionBox* = ptr TGdkRegionBox
-  TGdkRegionBox* = TGdkSegment
-  PGdkRegion* = ptr TGdkRegion
-  TGdkRegion* {.final, pure.} = object
+  PDragContextClass* = ptr TDragContextClass
+  TDragContextClass* = object of TGObjectClass
+  PRegionBox* = ptr TRegionBox
+  TRegionBox* = TSegment
+  PRegion* = ptr TRegion
+  TRegion*{.final, pure.} = object 
     size*: int32
     numRects*: int32
-    rects*: PGdkRegionBox
-    extents*: TGdkRegionBox
+    rects*: PRegionBox
+    extents*: TRegionBox
 
   PPOINTBLOCK* = ptr TPOINTBLOCK
-  TPOINTBLOCK* {.final, pure.} = object
-    pts*: array[0..(NUMPTSTOBUFFER) - 1, TGdkPoint]
+  TPOINTBLOCK*{.final, pure.} = object 
+    pts*: array[0..(NUMPTSTOBUFFER) - 1, TPoint]
     next*: PPOINTBLOCK
 
-  PGdkDrawableClass* = ptr TGdkDrawableClass
-  TGdkDrawableClass* = object of TGObjectClass
-    create_gc*: proc (drawable: PGdkDrawable, values: PGdkGCValues,
-                      mask: TGdkGCValuesMask): PGdkGC{.cdecl.}
-    draw_rectangle*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint,
-                           x: gint, y: gint, width: gint, height: gint){.cdecl.}
-    draw_arc*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint,
-                     y: gint, width: gint, height: gint, angle1: gint,
+  PDrawableClass* = ptr TDrawableClass
+  TDrawableClass* = object of TGObjectClass
+    create_gc*: proc (drawable: PDrawable, values: PGCValues, 
+                      mask: TGCValuesMask): PGC{.cdecl.}
+    draw_rectangle*: proc (drawable: PDrawable, gc: PGC, filled: gint, x: gint, 
+                           y: gint, width: gint, height: gint){.cdecl.}
+    draw_arc*: proc (drawable: PDrawable, gc: PGC, filled: gint, x: gint, 
+                     y: gint, width: gint, height: gint, angle1: gint, 
                      angle2: gint){.cdecl.}
-    draw_polygon*: proc (drawable: PGdkDrawable, gc: PGdkGC, filled: gint,
-                         points: PGdkPoint, npoints: gint){.cdecl.}
-    draw_text*: proc (drawable: PGdkDrawable, font: PGdkFont, gc: PGdkGC,
-                      x: gint, y: gint, text: cstring, text_length: gint){.cdecl.}
-    draw_text_wc*: proc (drawable: PGdkDrawable, font: PGdkFont, gc: PGdkGC,
-                         x: gint, y: gint, text: PGdkWChar, text_length: gint){.
-        cdecl.}
-    draw_drawable*: proc (drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable,
-                          xsrc: gint, ysrc: gint, xdest: gint, ydest: gint,
+    draw_polygon*: proc (drawable: PDrawable, gc: PGC, filled: gint, 
+                         points: PPoint, npoints: gint){.cdecl.}
+    draw_text*: proc (drawable: PDrawable, font: PFont, gc: PGC, x: gint, 
+                      y: gint, text: cstring, text_length: gint){.cdecl.}
+    draw_text_wc*: proc (drawable: PDrawable, font: PFont, gc: PGC, x: gint, 
+                         y: gint, text: PWChar, text_length: gint){.cdecl.}
+    draw_drawable*: proc (drawable: PDrawable, gc: PGC, src: PDrawable, 
+                          xsrc: gint, ysrc: gint, xdest: gint, ydest: gint, 
                           width: gint, height: gint){.cdecl.}
-    draw_points*: proc (drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint,
+    draw_points*: proc (drawable: PDrawable, gc: PGC, points: PPoint, 
                         npoints: gint){.cdecl.}
-    draw_segments*: proc (drawable: PGdkDrawable, gc: PGdkGC, segs: PGdkSegment,
+    draw_segments*: proc (drawable: PDrawable, gc: PGC, segs: PSegment, 
                           nsegs: gint){.cdecl.}
-    draw_lines*: proc (drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint,
+    draw_lines*: proc (drawable: PDrawable, gc: PGC, points: PPoint, 
                        npoints: gint){.cdecl.}
-    draw_glyphs*: proc (drawable: PGdkDrawable, gc: PGdkGC, font: PPangoFont,
-                        x: gint, y: gint, glyphs: PPangoGlyphString){.cdecl.}
-    draw_image*: proc (drawable: PGdkDrawable, gc: PGdkGC, image: PGdkImage,
-                       xsrc: gint, ysrc: gint, xdest: gint, ydest: gint,
-                       width: gint, height: gint){.cdecl.}
-    get_depth*: proc (drawable: PGdkDrawable): gint{.cdecl.}
-    get_size*: proc (drawable: PGdkDrawable, width: Pgint, height: Pgint){.cdecl.}
-    set_colormap*: proc (drawable: PGdkDrawable, cmap: PGdkColormap){.cdecl.}
-    get_colormap*: proc (drawable: PGdkDrawable): PGdkColormap{.cdecl.}
-    get_visual*: proc (drawable: PGdkDrawable): PGdkVisual{.cdecl.}
-    get_screen*: proc (drawable: PGdkDrawable): PGdkScreen{.cdecl.}
-    get_image*: proc (drawable: PGdkDrawable, x: gint, y: gint, width: gint,
-                      height: gint): PGdkImage{.cdecl.}
-    get_clip_region*: proc (drawable: PGdkDrawable): PGdkRegion{.cdecl.}
-    get_visible_region*: proc (drawable: PGdkDrawable): PGdkRegion{.cdecl.}
-    get_composite_drawable*: proc (drawable: PGdkDrawable, x: gint, y: gint,
-                                   width: gint, height: gint,
-                                   composite_x_offset: Pgint,
-                                   composite_y_offset: Pgint): PGdkDrawable{.
-        cdecl.}
-    `draw_pixbuf`*: proc (drawable: PGdkDrawable, gc: PGdkGC,
-                          pixbuf: PGdkPixbuf, src_x: gint, src_y: gint,
-                          dest_x: gint, dest_y: gint, width: gint, height: gint,
-                          dither: TGdkRgbDither, x_dither: gint, y_dither: gint){.
-        cdecl.}
-    `copy_to_image`*: proc (drawable: PGdkDrawable, image: PGdkImage,
-                            src_x: gint, src_y: gint, dest_x: gint,
-                            dest_y: gint, width: gint, height: gint): PGdkImage{.
-        cdecl.}
-    `gdk_reserved1`: proc (){.cdecl.}
-    `gdk_reserved2`: proc (){.cdecl.}
-    `gdk_reserved3`: proc (){.cdecl.}
-    `gdk_reserved4`: proc (){.cdecl.}
-    `gdk_reserved5`: proc (){.cdecl.}
-    `gdk_reserved6`: proc (){.cdecl.}
-    `gdk_reserved7`: proc (){.cdecl.}
-    `gdk_reserved9`: proc (){.cdecl.}
-    `gdk_reserved10`: proc (){.cdecl.}
-    `gdk_reserved11`: proc (){.cdecl.}
-    `gdk_reserved12`: proc (){.cdecl.}
-    `gdk_reserved13`: proc (){.cdecl.}
-    `gdk_reserved14`: proc (){.cdecl.}
-    `gdk_reserved15`: proc (){.cdecl.}
-    `gdk_reserved16`: proc (){.cdecl.}
-
-  PGdkEvent* = ptr TGdkEvent
-  TGdkEventFunc* = proc (event: PGdkEvent, data: gpointer){.cdecl.}
-  PGdkXEvent* = ptr TGdkXEvent
-  TGdkXEvent* = proc ()
-  PGdkFilterReturn* = ptr TGdkFilterReturn
-  TGdkFilterReturn* = enum
-    GDK_FILTER_CONTINUE, GDK_FILTER_TRANSLATE, GDK_FILTER_REMOVE
-  TGdkFilterFunc* = proc (xevent: PGdkXEvent, event: PGdkEvent, data: gpointer): TGdkFilterReturn{.
+    draw_glyphs*: proc (drawable: PDrawable, gc: PGC, font: PFont, x: gint, 
+                        y: gint, glyphs: PGlyphString){.cdecl.}
+    draw_image*: proc (drawable: PDrawable, gc: PGC, image: PImage, xsrc: gint, 
+                       ysrc: gint, xdest: gint, ydest: gint, width: gint, 
+                       height: gint){.cdecl.}
+    get_depth*: proc (drawable: PDrawable): gint{.cdecl.}
+    get_size*: proc (drawable: PDrawable, width: Pgint, height: Pgint){.cdecl.}
+    set_colormap*: proc (drawable: PDrawable, cmap: PColormap){.cdecl.}
+    get_colormap*: proc (drawable: PDrawable): PColormap{.cdecl.}
+    get_visual*: proc (drawable: PDrawable): PVisual{.cdecl.}
+    get_screen*: proc (drawable: PDrawable): PScreen{.cdecl.}
+    get_image*: proc (drawable: PDrawable, x: gint, y: gint, width: gint, 
+                      height: gint): PImage{.cdecl.}
+    get_clip_region*: proc (drawable: PDrawable): PRegion{.cdecl.}
+    get_visible_region*: proc (drawable: PDrawable): PRegion{.cdecl.}
+    get_composite_drawable*: proc (drawable: PDrawable, x: gint, y: gint, 
+                                   width: gint, height: gint, 
+                                   composite_x_offset: Pgint, 
+                                   composite_y_offset: Pgint): PDrawable{.cdecl.}
+    `draw_pixbuf`*: proc (drawable: PDrawable, gc: PGC, pixbuf: PPixbuf, 
+                          src_x: gint, src_y: gint, dest_x: gint, dest_y: gint, 
+                          width: gint, height: gint, dither: TRgbDither, 
+                          x_dither: gint, y_dither: gint){.cdecl.}
+    `copy_to_image`*: proc (drawable: PDrawable, image: PImage, src_x: gint, 
+                            src_y: gint, dest_x: gint, dest_y: gint, 
+                            width: gint, height: gint): PImage{.cdecl.}
+    `reserved1`: proc (){.cdecl.}
+    `reserved2`: proc (){.cdecl.}
+    `reserved3`: proc (){.cdecl.}
+    `reserved4`: proc (){.cdecl.}
+    `reserved5`: proc (){.cdecl.}
+    `reserved6`: proc (){.cdecl.}
+    `reserved7`: proc (){.cdecl.}
+    `reserved9`: proc (){.cdecl.}
+    `reserved10`: proc (){.cdecl.}
+    `reserved11`: proc (){.cdecl.}
+    `reserved12`: proc (){.cdecl.}
+    `reserved13`: proc (){.cdecl.}
+    `reserved14`: proc (){.cdecl.}
+    `reserved15`: proc (){.cdecl.}
+    `reserved16`: proc (){.cdecl.}
+
+  PEvent* = ptr TEvent
+  TEventFunc* = proc (event: PEvent, data: gpointer){.cdecl.}
+  PXEvent* = ptr TXEvent
+  TXEvent* = proc ()
+  PFilterReturn* = ptr TFilterReturn
+  TFilterReturn* = enum 
+    FILTER_CONTINUE, FILTER_TRANSLATE, FILTER_REMOVE
+  TFilterFunc* = proc (xevent: PXEvent, event: PEvent, data: gpointer): TFilterReturn{.
       cdecl.}
-  PGdkEventType* = ptr TGdkEventType
-  TGdkEventType* = gint
-  PGdkEventMask* = ptr TGdkEventMask
-  TGdkEventMask* = gint32
-  PGdkVisibilityState* = ptr TGdkVisibilityState
-  TGdkVisibilityState* = enum
-    GDK_VISIBILITY_UNOBSCURED, GDK_VISIBILITY_PARTIAL,
-    GDK_VISIBILITY_FULLY_OBSCURED
-  PGdkScrollDirection* = ptr TGdkScrollDirection
-  TGdkScrollDirection* = enum
-    GDK_SCROLL_UP, GDK_SCROLL_DOWN, GDK_SCROLL_LEFT, GDK_SCROLL_RIGHT
-  PGdkNotifyType* = ptr TGdkNotifyType
-  TGdkNotifyType* = int
-  PGdkCrossingMode* = ptr TGdkCrossingMode
-  TGdkCrossingMode* = enum
-    GDK_CROSSING_NORMAL, GDK_CROSSING_GRAB, GDK_CROSSING_UNGRAB
-  PGdkPropertyState* = ptr TGdkPropertyState
-  TGdkPropertyState* = enum
-    GDK_PROPERTY_NEW_VALUE, GDK_PROPERTY_STATE_DELETE
-  PGdkWindowState* = ptr TGdkWindowState
-  TGdkWindowState* = gint
-  PGdkSettingAction* = ptr TGdkSettingAction
-  TGdkSettingAction* = enum
-    GDK_SETTING_ACTION_NEW, GDK_SETTING_ACTION_CHANGED,
-    GDK_SETTING_ACTION_DELETED
-  PGdkEventAny* = ptr TGdkEventAny
-  TGdkEventAny* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventType* = ptr TEventType
+  TEventType* = gint
+  PEventMask* = ptr TEventMask
+  TEventMask* = gint32
+  PVisibilityState* = ptr TVisibilityState
+  TVisibilityState* = enum 
+    VISIBILITY_UNOBSCURED, VISIBILITY_PARTIAL, VISIBILITY_FULLY_OBSCURED
+  PScrollDirection* = ptr TScrollDirection
+  TScrollDirection* = enum 
+    SCROLL_UP, SCROLL_DOWN, SCROLL_LEFT, SCROLL_RIGHT
+  PNotifyType* = ptr TNotifyType
+  TNotifyType* = int
+  PCrossingMode* = ptr TCrossingMode
+  TCrossingMode* = enum 
+    CROSSING_NORMAL, CROSSING_GRAB, CROSSING_UNGRAB
+  PPropertyState* = ptr TPropertyState
+  TPropertyState* = enum 
+    PROPERTY_NEW_VALUE, PROPERTY_STATE_DELETE
+  PWindowState* = ptr TWindowState
+  TWindowState* = gint
+  PSettingAction* = ptr TSettingAction
+  TSettingAction* = enum 
+    SETTING_ACTION_NEW, SETTING_ACTION_CHANGED, SETTING_ACTION_DELETED
+  PEventAny* = ptr TEventAny
+  TEventAny*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
 
-  PGdkEventExpose* = ptr TGdkEventExpose
-  TGdkEventExpose* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventExpose* = ptr TEventExpose
+  TEventExpose*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    area*: TGdkRectangle
-    region*: PGdkRegion
+    area*: TRectangle
+    region*: PRegion
     count*: gint
 
-  PGdkEventNoExpose* = ptr TGdkEventNoExpose
-  TGdkEventNoExpose* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventNoExpose* = ptr TEventNoExpose
+  TEventNoExpose*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
 
-  PGdkEventVisibility* = ptr TGdkEventVisibility
-  TGdkEventVisibility* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventVisibility* = ptr TEventVisibility
+  TEventVisibility*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    state*: TGdkVisibilityState
+    state*: TVisibilityState
 
-  PGdkEventMotion* = ptr TGdkEventMotion
-  TGdkEventMotion* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventMotion* = ptr TEventMotion
+  TEventMotion*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     time*: guint32
     x*: gdouble
@@ -375,14 +359,14 @@ type
     axes*: Pgdouble
     state*: guint
     is_hint*: gint16
-    device*: PGdkDevice
+    device*: PDevice
     x_root*: gdouble
     y_root*: gdouble
 
-  PGdkEventButton* = ptr TGdkEventButton
-  TGdkEventButton* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventButton* = ptr TEventButton
+  TEventButton*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     time*: guint32
     x*: gdouble
@@ -390,28 +374,28 @@ type
     axes*: Pgdouble
     state*: guint
     button*: guint
-    device*: PGdkDevice
+    device*: PDevice
     x_root*: gdouble
     y_root*: gdouble
 
-  PGdkEventScroll* = ptr TGdkEventScroll
-  TGdkEventScroll* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventScroll* = ptr TEventScroll
+  TEventScroll*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     time*: guint32
     x*: gdouble
     y*: gdouble
     state*: guint
-    direction*: TGdkScrollDirection
-    device*: PGdkDevice
+    direction*: TScrollDirection
+    device*: PDevice
     x_root*: gdouble
     y_root*: gdouble
 
-  PGdkEventKey* = ptr TGdkEventKey
-  TGdkEventKey* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventKey* = ptr TEventKey
+  TEventKey*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     time*: guint32
     state*: guint
@@ -421,148 +405,146 @@ type
     hardware_keycode*: guint16
     group*: guint8
 
-  PGdkEventCrossing* = ptr TGdkEventCrossing
-  TGdkEventCrossing* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventCrossing* = ptr TEventCrossing
+  TEventCrossing*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    subwindow*: PGdkWindow
+    subwindow*: PWindow
     time*: guint32
     x*: gdouble
     y*: gdouble
     x_root*: gdouble
     y_root*: gdouble
-    mode*: TGdkCrossingMode
-    detail*: TGdkNotifyType
+    mode*: TCrossingMode
+    detail*: TNotifyType
     focus*: gboolean
     state*: guint
 
-  PGdkEventFocus* = ptr TGdkEventFocus
-  TGdkEventFocus* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventFocus* = ptr TEventFocus
+  TEventFocus*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     `in`*: gint16
 
-  PGdkEventConfigure* = ptr TGdkEventConfigure
-  TGdkEventConfigure* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventConfigure* = ptr TEventConfigure
+  TEventConfigure*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     x*: gint
     y*: gint
     width*: gint
     height*: gint
 
-  PGdkEventProperty* = ptr TGdkEventProperty
-  TGdkEventProperty* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventProperty* = ptr TEventProperty
+  TEventProperty*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    atom*: TGdkAtom
+    atom*: TAtom
     time*: guint32
     state*: guint
 
-  TGdkNativeWindow* = pointer
-  PGdkEventSelection* = ptr TGdkEventSelection
-  TGdkEventSelection* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  TNativeWindow* = pointer
+  PEventSelection* = ptr TEventSelection
+  TEventSelection*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    selection*: TGdkAtom
-    target*: TGdkAtom
-    `property`*: TGdkAtom
+    selection*: TAtom
+    target*: TAtom
+    `property`*: TAtom
     time*: guint32
-    requestor*: TGdkNativeWindow
+    requestor*: TNativeWindow
 
-  PGdkEventProximity* = ptr TGdkEventProximity
-  TGdkEventProximity* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventProximity* = ptr TEventProximity
+  TEventProximity*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
     time*: guint32
-    device*: PGdkDevice
+    device*: PDevice
 
   PmatDUMMY* = ptr TmatDUMMY
-  TmatDUMMY* {.final, pure.} = object
+  TmatDUMMY*{.final, pure.} = object 
     b*: array[0..19, char]
 
-  PGdkEventClient* = ptr TGdkEventClient
-  TGdkEventClient* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventClient* = ptr TEventClient
+  TEventClient*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    message_type*: TGdkAtom
+    message_type*: TAtom
     data_format*: gushort
     b*: array[0..19, char]
 
-  PGdkEventSetting* = ptr TGdkEventSetting
-  TGdkEventSetting* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventSetting* = ptr TEventSetting
+  TEventSetting*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    action*: TGdkSettingAction
+    action*: TSettingAction
     name*: cstring
 
-  PGdkEventWindowState* = ptr TGdkEventWindowState
-  TGdkEventWindowState* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventWindowState* = ptr TEventWindowState
+  TEventWindowState*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    changed_mask*: TGdkWindowState
-    new_window_state*: TGdkWindowState
+    changed_mask*: TWindowState
+    new_window_state*: TWindowState
 
-  PGdkEventDND* = ptr TGdkEventDND
-  TGdkEventDND* {.final, pure.} = object
-    `type`*: TGdkEventType
-    window*: PGdkWindow
+  PEventDND* = ptr TEventDND
+  TEventDND*{.final, pure.} = object 
+    `type`*: TEventType
+    window*: PWindow
     send_event*: gint8
-    context*: PGdkDragContext
+    context*: PDragContext
     time*: guint32
     x_root*: gshort
     y_root*: gshort
 
-  TGdkEvent* {.final, pure.} = object
+  TEvent*{.final, pure.} = object 
     data*: array[0..255, char] # union of
-                               # `type`: TGdkEventType
-                               #  any: TGdkEventAny
-                               #  expose: TGdkEventExpose
-                               #  no_expose: TGdkEventNoExpose
-                               #  visibility: TGdkEventVisibility
-                               #  motion: TGdkEventMotion
-                               #  button: TGdkEventButton
-                               #  scroll: TGdkEventScroll
-                               #  key: TGdkEventKey
-                               #  crossing: TGdkEventCrossing
-                               #  focus_change: TGdkEventFocus
-                               #  configure: TGdkEventConfigure
-                               #  `property`: TGdkEventProperty
-                               #  selection: TGdkEventSelection
-                               #  proximity: TGdkEventProximity
-                               #  client: TGdkEventClient
-                               #  dnd: TGdkEventDND
-                               #  window_state: TGdkEventWindowState
-                               #  setting: TGdkEventSetting
-
-  PGdkGCClass* = ptr TGdkGCClass
-  TGdkGCClass* = object of TGObjectClass
-    get_values*: proc (gc: PGdkGC, values: PGdkGCValues){.cdecl.}
-    set_values*: proc (gc: PGdkGC, values: PGdkGCValues, mask: TGdkGCValuesMask){.
+                               # `type`: TEventType
+                               #  any: TEventAny
+                               #  expose: TEventExpose
+                               #  no_expose: TEventNoExpose
+                               #  visibility: TEventVisibility
+                               #  motion: TEventMotion
+                               #  button: TEventButton
+                               #  scroll: TEventScroll
+                               #  key: TEventKey
+                               #  crossing: TEventCrossing
+                               #  focus_change: TEventFocus
+                               #  configure: TEventConfigure
+                               #  `property`: TEventProperty
+                               #  selection: TEventSelection
+                               #  proximity: TEventProximity
+                               #  client: TEventClient
+                               #  dnd: TEventDND
+                               #  window_state: TEventWindowState
+                               #  setting: TEventSetting
+  
+  PGCClass* = ptr TGCClass
+  TGCClass* = object of TGObjectClass
+    get_values*: proc (gc: PGC, values: PGCValues){.cdecl.}
+    set_values*: proc (gc: PGC, values: PGCValues, mask: TGCValuesMask){.cdecl.}
+    set_dashes*: proc (gc: PGC, dash_offset: gint, dash_list: openarray[gint8]){.
         cdecl.}
-    set_dashes*: proc (gc: PGdkGC, dash_offset: gint,
-                       dash_list: openarray[gint8]){.cdecl.}
-    `gdk_reserved1`*: proc (){.cdecl.}
-    `gdk_reserved2`*: proc (){.cdecl.}
-    `gdk_reserved3`*: proc (){.cdecl.}
-    `gdk_reserved4`*: proc (){.cdecl.}
-
-  PGdkImageClass* = ptr TGdkImageClass
-  TGdkImageClass* = object of TGObjectClass
-
-  TGdkImage* = object of TGObject
-    `type`*: TGdkImageType
-    visual*: PGdkVisual
-    byte_order*: TGdkByteOrder
+    `reserved1`*: proc (){.cdecl.}
+    `reserved2`*: proc (){.cdecl.}
+    `reserved3`*: proc (){.cdecl.}
+    `reserved4`*: proc (){.cdecl.}
+
+  PImageClass* = ptr TImageClass
+  TImageClass* = object of TGObjectClass
+  TImage* = object of TGObject
+    `type`*: TImageType
+    visual*: PVisual
+    byte_order*: TByteOrder
     width*: gint
     height*: gint
     depth*: guint16
@@ -570,186 +552,180 @@ type
     bpl*: guint16
     bits_per_pixel*: guint16
     mem*: gpointer
-    colormap*: PGdkColormap
+    colormap*: PColormap
     windowing_data*: gpointer
 
-  PGdkExtensionMode* = ptr TGdkExtensionMode
-  TGdkExtensionMode* = enum
-    GDK_EXTENSION_EVENTS_NONE, GDK_EXTENSION_EVENTS_ALL,
-    GDK_EXTENSION_EVENTS_CURSOR
-  PGdkInputSource* = ptr TGdkInputSource
-  TGdkInputSource* = enum
-    GDK_SOURCE_MOUSE, GDK_SOURCE_PEN, GDK_SOURCE_ERASER, GDK_SOURCE_CURSOR
-  PGdkInputMode* = ptr TGdkInputMode
-  TGdkInputMode* = enum
-    GDK_MODE_DISABLED, GDK_MODE_SCREEN, GDK_MODE_WINDOW
-  PGdkAxisUse* = ptr TGdkAxisUse
-  TGdkAxisUse* = int32
-  PGdkDeviceKey* = ptr TGdkDeviceKey
-  TGdkDeviceKey* {.final, pure.} = object
+  PExtensionMode* = ptr TExtensionMode
+  TExtensionMode* = enum 
+    EXTENSION_EVENTS_NONE, EXTENSION_EVENTS_ALL, EXTENSION_EVENTS_CURSOR
+  PInputSource* = ptr TInputSource
+  TInputSource* = enum 
+    SOURCE_MOUSE, SOURCE_PEN, SOURCE_ERASER, SOURCE_CURSOR
+  PInputMode* = ptr TInputMode
+  TInputMode* = enum 
+    MODE_DISABLED, MODE_SCREEN, MODE_WINDOW
+  PAxisUse* = ptr TAxisUse
+  TAxisUse* = int32
+  PDeviceKey* = ptr TDeviceKey
+  TDeviceKey*{.final, pure.} = object 
     keyval*: guint
-    modifiers*: TGdkModifierType
+    modifiers*: TModifierType
 
-  PGdkDeviceAxis* = ptr TGdkDeviceAxis
-  TGdkDeviceAxis* {.final, pure.} = object
-    use*: TGdkAxisUse
+  PDeviceAxis* = ptr TDeviceAxis
+  TDeviceAxis*{.final, pure.} = object 
+    use*: TAxisUse
     min*: gdouble
     max*: gdouble
 
-  TGdkDevice* = object of TGObject
+  TDevice* = object of TGObject
     name*: cstring
-    source*: TGdkInputSource
-    mode*: TGdkInputMode
+    source*: TInputSource
+    mode*: TInputMode
     has_cursor*: gboolean
     num_axes*: gint
-    axes*: PGdkDeviceAxis
+    axes*: PDeviceAxis
     num_keys*: gint
-    keys*: PGdkDeviceKey
+    keys*: PDeviceKey
 
-  TGdkTimeCoord* {.final, pure.} = object
+  TTimeCoord*{.final, pure.} = object 
     time*: guint32
-    axes*: array[0..(GDK_MAX_TIMECOORD_AXES) - 1, gdouble]
+    axes*: array[0..(MAX_TIMECOORD_AXES) - 1, gdouble]
 
-  PGdkKeymapKey* = ptr TGdkKeymapKey
-  TGdkKeymapKey* {.final, pure.} = object
+  PKeymapKey* = ptr TKeymapKey
+  TKeymapKey*{.final, pure.} = object 
     keycode*: guint
     group*: gint
     level*: gint
 
-  PGdkKeymap* = ptr TGdkKeymap
-  TGdkKeymap* = object of TGObject
-    display*: PGdkDisplay
+  PKeymap* = ptr TKeymap
+  TKeymap* = object of TGObject
+    display*: PDisplay
 
-  PGdkKeymapClass* = ptr TGdkKeymapClass
-  TGdkKeymapClass* = object of TGObjectClass
-    direction_changed*: proc (keymap: PGdkKeymap){.cdecl.}
+  PKeymapClass* = ptr TKeymapClass
+  TKeymapClass* = object of TGObjectClass
+    direction_changed*: proc (keymap: PKeymap){.cdecl.}
 
-  PGdkPangoAttrStipple* = ptr TGdkPangoAttrStipple
-  TGdkPangoAttrStipple* {.final, pure.} = object
-    attr*: TPangoAttribute
-    stipple*: PGdkBitmap
+  PAttrStipple* = ptr TAttrStipple
+  TAttrStipple*{.final, pure.} = object 
+    attr*: TAttribute
+    stipple*: PBitmap
 
-  PGdkPangoAttrEmbossed* = ptr TGdkPangoAttrEmbossed
-  TGdkPangoAttrEmbossed* {.final, pure.} = object
-    attr*: TPangoAttribute
+  PAttrEmbossed* = ptr TAttrEmbossed
+  TAttrEmbossed*{.final, pure.} = object 
+    attr*: TAttribute
     embossed*: gboolean
 
-  PGdkPixmapObject* = ptr TGdkPixmapObject
-  TGdkPixmapObject* = object of TGdkDrawable
-    impl*: PGdkDrawable
+  PPixmapObject* = ptr TPixmapObject
+  TPixmapObject* = object of TDrawable
+    impl*: PDrawable
     depth*: gint
 
-  PGdkPixmapObjectClass* = ptr TGdkPixmapObjectClass
-  TGdkPixmapObjectClass* = object of TGdkDrawableClass
-
-  PGdkPropMode* = ptr TGdkPropMode
-  TGdkPropMode* = enum
-    GDK_PROP_MODE_REPLACE, GDK_PROP_MODE_PREPEND, GDK_PROP_MODE_APPEND
-  PGdkFillRule* = ptr TGdkFillRule
-  TGdkFillRule* = enum
-    GDK_EVEN_ODD_RULE, GDK_WINDING_RULE
-  PGdkOverlapType* = ptr TGdkOverlapType
-  TGdkOverlapType* = enum
-    GDK_OVERLAP_RECTANGLE_IN, GDK_OVERLAP_RECTANGLE_OUT,
-    GDK_OVERLAP_RECTANGLE_PART
-  TGdkSpanFunc* = proc (span: PGdkSpan, data: gpointer){.cdecl.}
-  PGdkRgbCmap* = ptr TGdkRgbCmap
-  TGdkRgbCmap* {.final, pure.} = object
+  PPixmapObjectClass* = ptr TPixmapObjectClass
+  TPixmapObjectClass* = object of TDrawableClass
+  PPropMode* = ptr TPropMode
+  TPropMode* = enum 
+    PROP_MODE_REPLACE, PROP_MODE_PREPEND, PROP_MODE_APPEND
+  PFillRule* = ptr TFillRule
+  TFillRule* = enum 
+    EVEN_ODD_RULE, WINDING_RULE
+  POverlapType* = ptr TOverlapType
+  TOverlapType* = enum 
+    OVERLAP_RECTANGLE_IN, OVERLAP_RECTANGLE_OUT, OVERLAP_RECTANGLE_PART
+  TSpanFunc* = proc (span: PSpan, data: gpointer){.cdecl.}
+  PRgbCmap* = ptr TRgbCmap
+  TRgbCmap*{.final, pure.} = object 
     colors*: array[0..255, guint32]
     n_colors*: gint
     info_list*: PGSList
 
-  TGdkDisplay* = object of TGObject
+  TDisplay* = object of TGObject
     queued_events*: PGList
     queued_tail*: PGList
     button_click_time*: array[0..1, guint32]
-    button_window*: array[0..1, PGdkWindow]
+    button_window*: array[0..1, PWindow]
     button_number*: array[0..1, guint]
     double_click_time*: guint
 
-  PGdkDisplayClass* = ptr TGdkDisplayClass
-  TGdkDisplayClass* = object of TGObjectClass
-    get_display_name*: proc (display: PGdkDisplay): cstring{.cdecl.}
-    get_n_screens*: proc (display: PGdkDisplay): gint{.cdecl.}
-    get_screen*: proc (display: PGdkDisplay, screen_num: gint): PGdkScreen{.
-        cdecl.}
-    get_default_screen*: proc (display: PGdkDisplay): PGdkScreen{.cdecl.}
-
-  PGdkScreenClass* = ptr TGdkScreenClass
-  TGdkScreenClass* = object of TGObjectClass
-    get_display*: proc (screen: PGdkScreen): PGdkDisplay{.cdecl.}
-    get_width*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_height*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_width_mm*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_height_mm*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_root_depth*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_screen_num*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_root_window*: proc (screen: PGdkScreen): PGdkWindow{.cdecl.}
-    get_default_colormap*: proc (screen: PGdkScreen): PGdkColormap{.cdecl.}
-    set_default_colormap*: proc (screen: PGdkScreen, colormap: PGdkColormap){.
-        cdecl.}
-    get_window_at_pointer*: proc (screen: PGdkScreen, win_x: Pgint, win_y: Pgint): PGdkWindow{.
+  PDisplayClass* = ptr TDisplayClass
+  TDisplayClass* = object of TGObjectClass
+    get_display_name*: proc (display: PDisplay): cstring{.cdecl.}
+    get_n_screens*: proc (display: PDisplay): gint{.cdecl.}
+    get_screen*: proc (display: PDisplay, screen_num: gint): PScreen{.cdecl.}
+    get_default_screen*: proc (display: PDisplay): PScreen{.cdecl.}
+
+  PScreenClass* = ptr TScreenClass
+  TScreenClass* = object of TGObjectClass
+    get_display*: proc (screen: PScreen): PDisplay{.cdecl.}
+    get_width*: proc (screen: PScreen): gint{.cdecl.}
+    get_height*: proc (screen: PScreen): gint{.cdecl.}
+    get_width_mm*: proc (screen: PScreen): gint{.cdecl.}
+    get_height_mm*: proc (screen: PScreen): gint{.cdecl.}
+    get_root_depth*: proc (screen: PScreen): gint{.cdecl.}
+    get_screen_num*: proc (screen: PScreen): gint{.cdecl.}
+    get_root_window*: proc (screen: PScreen): PWindow{.cdecl.}
+    get_default_colormap*: proc (screen: PScreen): PColormap{.cdecl.}
+    set_default_colormap*: proc (screen: PScreen, colormap: PColormap){.cdecl.}
+    get_window_at_pointer*: proc (screen: PScreen, win_x: Pgint, win_y: Pgint): PWindow{.
         cdecl.}
-    get_n_monitors*: proc (screen: PGdkScreen): gint{.cdecl.}
-    get_monitor_geometry*: proc (screen: PGdkScreen, monitor_num: gint,
-                                 dest: PGdkRectangle){.cdecl.}
-
-  PGdkGrabStatus* = ptr TGdkGrabStatus
-  TGdkGrabStatus* = int
-  TGdkInputFunction* = proc (data: gpointer, source: gint,
-                             condition: TGdkInputCondition){.cdecl.}
-  TGdkDestroyNotify* = proc (data: gpointer){.cdecl.}
-  TGdkSpan* {.final, pure.} = object
+    get_n_monitors*: proc (screen: PScreen): gint{.cdecl.}
+    get_monitor_geometry*: proc (screen: PScreen, monitor_num: gint, 
+                                 dest: PRectangle){.cdecl.}
+
+  PGrabStatus* = ptr TGrabStatus
+  TGrabStatus* = int
+  TInputFunction* = proc (data: gpointer, source: gint, 
+                          condition: TInputCondition){.cdecl.}
+  TDestroyNotify* = proc (data: gpointer){.cdecl.}
+  TSpan*{.final, pure.} = object 
     x*: gint
     y*: gint
     width*: gint
 
-  PGdkWindowClass* = ptr TGdkWindowClass
-  TGdkWindowClass* = enum
-    GDK_INPUT_OUTPUT, GDK_INPUT_ONLY
-  PGdkWindowType* = ptr TGdkWindowType
-  TGdkWindowType* = enum
-    GDK_WINDOW_ROOT, GDK_WINDOW_TOPLEVEL, GDK_WINDOW_CHILD, GDK_WINDOW_DIALOG,
-    GDK_WINDOW_TEMP, GDK_WINDOW_FOREIGN
-  PGdkWindowAttributesType* = ptr TGdkWindowAttributesType
-  TGdkWindowAttributesType* = int32
-  PGdkWindowHints* = ptr TGdkWindowHints
-  TGdkWindowHints* = int32
-  PGdkWindowTypeHint* = ptr TGdkWindowTypeHint
-  TGdkWindowTypeHint* = enum
-    GDK_WINDOW_TYPE_HINT_NORMAL, GDK_WINDOW_TYPE_HINT_DIALOG,
-    GDK_WINDOW_TYPE_HINT_MENU, GDK_WINDOW_TYPE_HINT_TOOLBAR
-  PGdkWMDecoration* = ptr TGdkWMDecoration
-  TGdkWMDecoration* = int32
-  PGdkWMFunction* = ptr TGdkWMFunction
-  TGdkWMFunction* = int32
-  PGdkGravity* = ptr TGdkGravity
-  TGdkGravity* = int
-  PGdkWindowEdge* = ptr TGdkWindowEdge
-  TGdkWindowEdge* = enum
-    GDK_WINDOW_EDGE_NORTH_WEST, GDK_WINDOW_EDGE_NORTH,
-    GDK_WINDOW_EDGE_NORTH_EAST, GDK_WINDOW_EDGE_WEST, GDK_WINDOW_EDGE_EAST,
-    GDK_WINDOW_EDGE_SOUTH_WEST, GDK_WINDOW_EDGE_SOUTH,
-    GDK_WINDOW_EDGE_SOUTH_EAST
-  PGdkWindowAttr* = ptr TGdkWindowAttr
-  TGdkWindowAttr* {.final, pure.} = object
+  PWindowClass* = ptr TWindowClass
+  TWindowClass* = enum 
+    INPUT_OUTPUT, INPUT_ONLY
+  PWindowType* = ptr TWindowType
+  TWindowType* = enum 
+    WINDOW_ROOT, WINDOW_TOPLEVEL, WINDOW_CHILD, WINDOW_DIALOG, WINDOW_TEMP, 
+    WINDOW_FOREIGN
+  PWindowAttributesType* = ptr TWindowAttributesType
+  TWindowAttributesType* = int32
+  PWindowHints* = ptr TWindowHints
+  TWindowHints* = int32
+  PWindowTypeHint* = ptr TWindowTypeHint
+  TWindowTypeHint* = enum 
+    WINDOW_TYPE_HINT_NORMAL, WINDOW_TYPE_HINT_DIALOG, WINDOW_TYPE_HINT_MENU, 
+    WINDOW_TYPE_HINT_TOOLBAR
+  PWMDecoration* = ptr TWMDecoration
+  TWMDecoration* = int32
+  PWMFunction* = ptr TWMFunction
+  TWMFunction* = int32
+  PGravity* = ptr TGravity
+  TGravity* = int
+  PWindowEdge* = ptr TWindowEdge
+  TWindowEdge* = enum 
+    WINDOW_EDGE_NORTH_WEST, WINDOW_EDGE_NORTH, WINDOW_EDGE_NORTH_EAST, 
+    WINDOW_EDGE_WEST, WINDOW_EDGE_EAST, WINDOW_EDGE_SOUTH_WEST, 
+    WINDOW_EDGE_SOUTH, WINDOW_EDGE_SOUTH_EAST
+  PWindowAttr* = ptr TWindowAttr
+  TWindowAttr*{.final, pure.} = object 
     title*: cstring
     event_mask*: gint
     x*: gint
     y*: gint
     width*: gint
     height*: gint
-    wclass*: TGdkWindowClass
-    visual*: PGdkVisual
-    colormap*: PGdkColormap
-    window_type*: TGdkWindowType
-    cursor*: PGdkCursor
+    wclass*: TWindowClass
+    visual*: PVisual
+    colormap*: PColormap
+    window_type*: TWindowType
+    cursor*: PCursor
     wmclass_name*: cstring
     wmclass_class*: cstring
     override_redirect*: gboolean
 
-  PGdkGeometry* = ptr TGdkGeometry
-  TGdkGeometry* {.final, pure.} = object
+  PGeometry* = ptr TGeometry
+  TGeometry*{.final, pure.} = object 
     min_width*: gint
     min_height*: gint
     max_width*: gint
@@ -760,3199 +736,3133 @@ type
     height_inc*: gint
     min_aspect*: gdouble
     max_aspect*: gdouble
-    win_gravity*: TGdkGravity
+    win_gravity*: TGravity
 
-  PGdkPointerHooks* = ptr TGdkPointerHooks
-  TGdkPointerHooks* {.final, pure.} = object
-    get_pointer*: proc (window: PGdkWindow, x: Pgint, y: Pgint,
-                        mask: PGdkModifierType): PGdkWindow{.cdecl.}
-    window_at_pointer*: proc (screen: PGdkScreen, win_x: Pgint, win_y: Pgint): PGdkWindow{.
+  PPointerHooks* = ptr TPointerHooks
+  TPointerHooks*{.final, pure.} = object 
+    get_pointer*: proc (window: PWindow, x: Pgint, y: Pgint, mask: PModifierType): PWindow{.
+        cdecl.}
+    window_at_pointer*: proc (screen: PScreen, win_x: Pgint, win_y: Pgint): PWindow{.
         cdecl.}
 
-  PGdkWindowObject* = ptr TGdkWindowObject
-  TGdkWindowObject* = object of TGdkDrawable
-    impl*: PGdkDrawable
-    parent*: PGdkWindowObject
+  PWindowObject* = ptr TWindowObject
+  TWindowObject* = object of TDrawable
+    impl*: PDrawable
+    parent*: PWindowObject
     user_data*: gpointer
     x*: gint
     y*: gint
     extension_events*: gint
     filters*: PGList
     children*: PGList
-    bg_color*: TGdkColor
-    bg_pixmap*: PGdkPixmap
+    bg_color*: TColor
+    bg_pixmap*: PPixmap
     paint_stack*: PGSList
-    update_area*: PGdkRegion
+    update_area*: PRegion
     update_freeze_count*: guint
     window_type*: guint8
     depth*: guint8
     resize_count*: guint8
-    state*: TGdkWindowState
+    state*: TWindowState
     flag0*: guint16
-    event_mask*: TGdkEventMask
-
-  PGdkWindowObjectClass* = ptr TGdkWindowObjectClass
-  TGdkWindowObjectClass* = object of TGdkDrawableClass
+    event_mask*: TEventMask
 
-  gdk_window_invalidate_maybe_recurse_child_func* = proc (para1: PGdkWindow,
+  PWindowObjectClass* = ptr TWindowObjectClass
+  TWindowObjectClass* = object of TDrawableClass
+  window_invalidate_maybe_recurse_child_func* = proc (para1: PWindow, 
       para2: gpointer): gboolean
 
-proc GDK_TYPE_COLORMAP*(): GType
-proc GDK_COLORMAP*(anObject: pointer): PGdkColormap
-proc GDK_COLORMAP_CLASS*(klass: pointer): PGdkColormapClass
-proc GDK_IS_COLORMAP*(anObject: pointer): bool
-proc GDK_IS_COLORMAP_CLASS*(klass: pointer): bool
-proc GDK_COLORMAP_GET_CLASS*(obj: pointer): PGdkColormapClass
-proc GDK_TYPE_COLOR*(): GType
-proc gdk_colormap_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                      importc: "gdk_colormap_get_type".}
-proc gdk_colormap_new*(visual: PGdkVisual, allocate: gboolean): PGdkColormap{.
-    cdecl, dynlib: gdklib, importc: "gdk_colormap_new".}
-proc gdk_colormap_alloc_colors*(colormap: PGdkColormap, colors: PGdkColor,
-                                ncolors: gint, writeable: gboolean,
-                                best_match: gboolean, success: Pgboolean): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_colormap_alloc_colors".}
-proc gdk_colormap_alloc_color*(colormap: PGdkColormap, color: PGdkColor,
-                               writeable: gboolean, best_match: gboolean): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_colormap_alloc_color".}
-proc gdk_colormap_free_colors*(colormap: PGdkColormap, colors: PGdkColor,
-                               ncolors: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_colormap_free_colors".}
-proc gdk_colormap_query_color*(colormap: PGdkColormap, pixel: gulong,
-                               result: PGdkColor){.cdecl, dynlib: gdklib,
-    importc: "gdk_colormap_query_color".}
-proc gdk_colormap_get_visual*(colormap: PGdkColormap): PGdkVisual{.cdecl,
-    dynlib: gdklib, importc: "gdk_colormap_get_visual".}
-proc gdk_color_copy*(color: PGdkColor): PGdkColor{.cdecl, dynlib: gdklib,
+proc TYPE_COLORMAP*(): GType
+proc COLORMAP*(anObject: pointer): PColormap
+proc COLORMAP_CLASS*(klass: pointer): PColormapClass
+proc IS_COLORMAP*(anObject: pointer): bool
+proc IS_COLORMAP_CLASS*(klass: pointer): bool
+proc COLORMAP_GET_CLASS*(obj: pointer): PColormapClass
+proc TYPE_COLOR*(): GType
+proc colormap_get_type*(): GType{.cdecl, dynlib: lib, 
+                                  importc: "gdk_colormap_get_type".}
+proc colormap_new*(visual: PVisual, allocate: gboolean): PColormap{.cdecl, 
+    dynlib: lib, importc: "gdk_colormap_new".}
+proc alloc_colors*(colormap: PColormap, colors: PColor, ncolors: gint, 
+                            writeable: gboolean, best_match: gboolean, 
+                            success: Pgboolean): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_colormap_alloc_colors".}
+proc alloc_color*(colormap: PColormap, color: PColor, 
+                           writeable: gboolean, best_match: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_colormap_alloc_color".}
+proc free_colors*(colormap: PColormap, colors: PColor, ncolors: gint){.
+    cdecl, dynlib: lib, importc: "gdk_colormap_free_colors".}
+proc query_color*(colormap: PColormap, pixel: gulong, result: PColor){.
+    cdecl, dynlib: lib, importc: "gdk_colormap_query_color".}
+proc get_visual*(colormap: PColormap): PVisual{.cdecl, dynlib: lib, 
+    importc: "gdk_colormap_get_visual".}
+proc copy*(color: PColor): PColor{.cdecl, dynlib: lib, 
     importc: "gdk_color_copy".}
-proc gdk_color_free*(color: PGdkColor){.cdecl, dynlib: gdklib,
-                                        importc: "gdk_color_free".}
-proc gdk_color_parse*(spec: cstring, color: PGdkColor): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_color_parse".}
-proc gdk_color_hash*(colora: PGdkColor): guint{.cdecl, dynlib: gdklib,
+proc free*(color: PColor){.cdecl, dynlib: lib, importc: "gdk_color_free".}
+proc color_parse*(spec: cstring, color: PColor): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_color_parse".}
+proc hash*(colora: PColor): guint{.cdecl, dynlib: lib, 
     importc: "gdk_color_hash".}
-proc gdk_color_equal*(colora: PGdkColor, colorb: PGdkColor): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_color_equal".}
-proc gdk_color_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                   importc: "gdk_color_get_type".}
-const
-  GDK_CURSOR_IS_PIXMAP* = - (1)
-  GDK_X_CURSOR* = 0
-  GDK_ARROW* = 2
-  GDK_BASED_ARROW_DOWN* = 4
-  GDK_BASED_ARROW_UP* = 6
-  GDK_BOAT* = 8
-  GDK_BOGOSITY* = 10
-  GDK_BOTTOM_LEFT_CORNER* = 12
-  GDK_BOTTOM_RIGHT_CORNER* = 14
-  GDK_BOTTOM_SIDE* = 16
-  GDK_BOTTOM_TEE* = 18
-  GDK_BOX_SPIRAL* = 20
-  GDK_CENTER_PTR* = 22
-  GDK_CIRCLE* = 24
-  GDK_CLOCK* = 26
-  GDK_COFFEE_MUG* = 28
-  GDK_CROSS* = 30
-  GDK_CROSS_REVERSE* = 32
-  GDK_CROSSHAIR* = 34
-  GDK_DIAMOND_CROSS* = 36
-  GDK_DOT* = 38
-  GDK_DOTBOX* = 40
-  GDK_DOUBLE_ARROW* = 42
-  GDK_DRAFT_LARGE* = 44
-  GDK_DRAFT_SMALL* = 46
-  GDK_DRAPED_BOX* = 48
-  GDK_EXCHANGE* = 50
-  GDK_FLEUR* = 52
-  GDK_GOBBLER* = 54
-  GDK_GUMBY* = 56
-  GDK_HAND1* = 58
-  GDK_HAND2* = 60
-  GDK_HEART* = 62
-  GDK_ICON* = 64
-  GDK_IRON_CROSS* = 66
-  GDK_LEFT_PTR* = 68
-  GDK_LEFT_SIDE* = 70
-  GDK_LEFT_TEE* = 72
-  GDK_LEFTBUTTON* = 74
-  GDK_LL_ANGLE* = 76
-  GDK_LR_ANGLE* = 78
-  GDK_MAN* = 80
-  GDK_MIDDLEBUTTON* = 82
-  GDK_MOUSE* = 84
-  GDK_PENCIL* = 86
-  GDK_PIRATE* = 88
-  GDK_PLUS* = 90
-  GDK_QUESTION_ARROW* = 92
-  GDK_RIGHT_PTR* = 94
-  GDK_RIGHT_SIDE* = 96
-  GDK_RIGHT_TEE* = 98
-  GDK_RIGHTBUTTON* = 100
-  GDK_RTL_LOGO* = 102
-  GDK_SAILBOAT* = 104
-  GDK_SB_DOWN_ARROW* = 106
-  GDK_SB_H_DOUBLE_ARROW* = 108
-  GDK_SB_LEFT_ARROW* = 110
-  GDK_SB_RIGHT_ARROW* = 112
-  GDK_SB_UP_ARROW* = 114
-  GDK_SB_V_DOUBLE_ARROW* = 116
-  GDK_SHUTTLE* = 118
-  GDK_SIZING* = 120
-  GDK_SPIDER* = 122
-  GDK_SPRAYCAN* = 124
-  GDK_STAR* = 126
-  GDK_TARGET* = 128
-  GDK_TCROSS* = 130
-  GDK_TOP_LEFT_ARROW* = 132
-  GDK_TOP_LEFT_CORNER* = 134
-  GDK_TOP_RIGHT_CORNER* = 136
-  GDK_TOP_SIDE* = 138
-  GDK_TOP_TEE* = 140
-  GDK_TREK* = 142
-  GDK_UL_ANGLE* = 144
-  GDK_UMBRELLA* = 146
-  GDK_UR_ANGLE* = 148
-  GDK_WATCH* = 150
-  GDK_XTERM* = 152
-  GDK_LAST_CURSOR* = GDK_XTERM + 1
-
-proc GDK_TYPE_CURSOR*(): GType
-proc gdk_cursor_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_cursor_get_type".}
-proc gdk_cursor_new_for_screen*(screen: PGdkScreen, cursor_type: TGdkCursorType): PGdkCursor{.
-    cdecl, dynlib: gdklib, importc: "gdk_cursor_new_for_screen".}
-proc gdk_cursor_new_from_pixmap*(source: PGdkPixmap, mask: PGdkPixmap,
-                                 fg: PGdkColor, bg: PGdkColor, x: gint, y: gint): PGdkCursor{.
-    cdecl, dynlib: gdklib, importc: "gdk_cursor_new_from_pixmap".}
-proc gdk_cursor_get_screen*(cursor: PGdkCursor): PGdkScreen{.cdecl,
-    dynlib: gdklib, importc: "gdk_cursor_get_screen".}
-proc gdk_cursor_ref*(cursor: PGdkCursor): PGdkCursor{.cdecl, dynlib: gdklib,
+proc equal*(colora: PColor, colorb: PColor): gboolean{.cdecl, dynlib: lib, 
+    importc: "gdk_color_equal".}
+proc color_get_type*(): GType{.cdecl, dynlib: lib, importc: "gdk_color_get_type".}
+const 
+  CURSOR_IS_PIXMAP* = - (1)
+  X_CURSOR* = 0
+  ARROW* = 2
+  BASED_ARROW_DOWN* = 4
+  BASED_ARROW_UP* = 6
+  BOAT* = 8
+  BOGOSITY* = 10
+  BOTTOM_LEFT_CORNER* = 12
+  BOTTOM_RIGHT_CORNER* = 14
+  BOTTOM_SIDE* = 16
+  BOTTOM_TEE* = 18
+  BOX_SPIRAL* = 20
+  CENTER_PTR* = 22
+  CIRCLE* = 24
+  CLOCK* = 26
+  COFFEE_MUG* = 28
+  CROSS* = 30
+  CROSS_REVERSE* = 32
+  CROSSHAIR* = 34
+  DIAMOND_CROSS* = 36
+  DOT* = 38
+  DOTBOX* = 40
+  DOUBLE_ARROW* = 42
+  DRAFT_LARGE* = 44
+  DRAFT_SMALL* = 46
+  DRAPED_BOX* = 48
+  EXCHANGE* = 50
+  FLEUR* = 52
+  GOBBLER* = 54
+  GUMBY* = 56
+  HAND1* = 58
+  HAND2* = 60
+  HEART* = 62
+  ICON* = 64
+  IRON_CROSS* = 66
+  LEFT_PTR* = 68
+  LEFT_SIDE* = 70
+  LEFT_TEE* = 72
+  LEFTBUTTON* = 74
+  LL_ANGLE* = 76
+  LR_ANGLE* = 78
+  MAN* = 80
+  MIDDLEBUTTON* = 82
+  MOUSE* = 84
+  PENCIL* = 86
+  PIRATE* = 88
+  PLUS* = 90
+  QUESTION_ARROW* = 92
+  RIGHT_PTR* = 94
+  RIGHT_SIDE* = 96
+  RIGHT_TEE* = 98
+  RIGHTBUTTON* = 100
+  RTL_LOGO* = 102
+  SAILBOAT* = 104
+  SB_DOWN_ARROW* = 106
+  SB_H_DOUBLE_ARROW* = 108
+  SB_LEFT_ARROW* = 110
+  SB_RIGHT_ARROW* = 112
+  SB_UP_ARROW* = 114
+  SB_V_DOUBLE_ARROW* = 116
+  SHUTTLE* = 118
+  SIZING* = 120
+  SPIDER* = 122
+  SPRAYCAN* = 124
+  STAR* = 126
+  TARGET* = 128
+  TCROSS* = 130
+  TOP_LEFT_ARROW* = 132
+  TOP_LEFT_CORNER* = 134
+  TOP_RIGHT_CORNER* = 136
+  TOP_SIDE* = 138
+  TOP_TEE* = 140
+  TREK* = 142
+  UL_ANGLE* = 144
+  UMBRELLA* = 146
+  UR_ANGLE* = 148
+  WATCH* = 150
+  XTERM* = 152
+  LAST_CURSOR* = XTERM + 1
+
+proc TYPE_CURSOR*(): GType
+proc cursor_get_type*(): GType{.cdecl, dynlib: lib, 
+                                importc: "gdk_cursor_get_type".}
+proc cursor_new_for_screen*(screen: PScreen, cursor_type: TCursorType): PCursor{.
+    cdecl, dynlib: lib, importc: "gdk_cursor_new_for_screen".}
+proc cursor_new_from_pixmap*(source: PPixmap, mask: PPixmap, fg: PColor, 
+                             bg: PColor, x: gint, y: gint): PCursor{.cdecl, 
+    dynlib: lib, importc: "gdk_cursor_new_from_pixmap".}
+proc get_screen*(cursor: PCursor): PScreen{.cdecl, dynlib: lib, 
+    importc: "gdk_cursor_get_screen".}
+proc reference*(cursor: PCursor): PCursor{.cdecl, dynlib: lib, 
     importc: "gdk_cursor_ref".}
-proc gdk_cursor_unref*(cursor: PGdkCursor){.cdecl, dynlib: gdklib,
-    importc: "gdk_cursor_unref".}
-const
-  GDK_ACTION_DEFAULT* = 1 shl 0
-  GDK_ACTION_COPY* = 1 shl 1
-  GDK_ACTION_MOVE* = 1 shl 2
-  GDK_ACTION_LINK* = 1 shl 3
-  GDK_ACTION_PRIVATE* = 1 shl 4
-  GDK_ACTION_ASK* = 1 shl 5
-
-proc GDK_TYPE_DRAG_CONTEXT*(): GType
-proc GDK_DRAG_CONTEXT*(anObject: Pointer): PGdkDragContext
-proc GDK_DRAG_CONTEXT_CLASS*(klass: Pointer): PGdkDragContextClass
-proc GDK_IS_DRAG_CONTEXT*(anObject: Pointer): bool
-proc GDK_IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool
-proc GDK_DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PGdkDragContextClass
-proc gdk_drag_context_get_type*(): GType{.cdecl, dynlib: gdklib,
-    importc: "gdk_drag_context_get_type".}
-proc gdk_drag_context_new*(): PGdkDragContext{.cdecl, dynlib: gdklib,
-    importc: "gdk_drag_context_new".}
-proc gdk_drag_status*(context: PGdkDragContext, action: TGdkDragAction,
-                      time: guint32){.cdecl, dynlib: gdklib,
-                                      importc: "gdk_drag_status".}
-proc gdk_drop_reply*(context: PGdkDragContext, ok: gboolean, time: guint32){.
-    cdecl, dynlib: gdklib, importc: "gdk_drop_reply".}
-proc gdk_drop_finish*(context: PGdkDragContext, success: gboolean, time: guint32){.
-    cdecl, dynlib: gdklib, importc: "gdk_drop_finish".}
-proc gdk_drag_get_selection*(context: PGdkDragContext): TGdkAtom{.cdecl,
-    dynlib: gdklib, importc: "gdk_drag_get_selection".}
-proc gdk_drag_begin*(window: PGdkWindow, targets: PGList): PGdkDragContext{.
-    cdecl, dynlib: gdklib, importc: "gdk_drag_begin".}
-proc gdk_drag_get_protocol_for_display*(display: PGdkDisplay, xid: guint32,
-                                        protocol: PGdkDragProtocol): guint32{.
-    cdecl, dynlib: gdklib, importc: "gdk_drag_get_protocol_for_display".}
-proc gdk_drag_find_window*(context: PGdkDragContext, drag_window: PGdkWindow,
-                           x_root: gint, y_root: gint, w: var PGdkWindow,
-                           protocol: PGdkDragProtocol){.cdecl, dynlib: gdklib,
+proc unref*(cursor: PCursor){.cdecl, dynlib: lib, 
+                                     importc: "gdk_cursor_unref".}
+const 
+  ACTION_DEFAULT* = 1 shl 0
+  ACTION_COPY* = 1 shl 1
+  ACTION_MOVE* = 1 shl 2
+  ACTION_LINK* = 1 shl 3
+  ACTION_PRIVATE* = 1 shl 4
+  ACTION_ASK* = 1 shl 5
+
+proc TYPE_DRAG_CONTEXT*(): GType
+proc DRAG_CONTEXT*(anObject: Pointer): PDragContext
+proc DRAG_CONTEXT_CLASS*(klass: Pointer): PDragContextClass
+proc IS_DRAG_CONTEXT*(anObject: Pointer): bool
+proc IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool
+proc DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PDragContextClass
+proc drag_context_get_type*(): GType{.cdecl, dynlib: lib, 
+                                      importc: "gdk_drag_context_get_type".}
+proc drag_context_new*(): PDragContext{.cdecl, dynlib: lib, 
+                                        importc: "gdk_drag_context_new".}
+proc status*(context: PDragContext, action: TDragAction, time: guint32){.
+    cdecl, dynlib: lib, importc: "gdk_drag_status".}
+proc drop_reply*(context: PDragContext, ok: gboolean, time: guint32){.cdecl, 
+    dynlib: lib, importc: "gdk_drop_reply".}
+proc drop_finish*(context: PDragContext, success: gboolean, time: guint32){.
+    cdecl, dynlib: lib, importc: "gdk_drop_finish".}
+proc get_selection*(context: PDragContext): TAtom{.cdecl, dynlib: lib, 
+    importc: "gdk_drag_get_selection".}
+proc drag_begin*(window: PWindow, targets: PGList): PDragContext{.cdecl, 
+    dynlib: lib, importc: "gdk_drag_begin".}
+proc drag_get_protocol_for_display*(display: PDisplay, xid: guint32, 
+                                    protocol: PDragProtocol): guint32{.cdecl, 
+    dynlib: lib, importc: "gdk_drag_get_protocol_for_display".}
+proc find_window*(context: PDragContext, drag_window: PWindow, 
+                       x_root: gint, y_root: gint, w: var PWindow, 
+                       protocol: PDragProtocol){.cdecl, dynlib: lib, 
     importc: "gdk_drag_find_window".}
-proc gdk_drag_motion*(context: PGdkDragContext, dest_window: PGdkWindow,
-                      protocol: TGdkDragProtocol, x_root: gint, y_root: gint,
-                      suggested_action: TGdkDragAction,
-                      possible_actions: TGdkDragAction, time: guint32): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_drag_motion".}
-proc gdk_drag_drop*(context: PGdkDragContext, time: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_drag_drop".}
-proc gdk_drag_abort*(context: PGdkDragContext, time: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_drag_abort".}
-proc gdkregion_EXTENTCHECK*(r1, r2: PGdkRegionBox): bool
-proc gdkregion_EXTENTS*(r: PGdkRegionBox, idRect: PGdkRegion)
-proc gdkregion_MEMCHECK*(reg: PGdkRegion, ARect, firstrect: var PGdkRegionBox): bool
-proc gdkregion_CHECK_PREVIOUS*(Reg: PGdkRegion, R: PGdkRegionBox,
-                               Rx1, Ry1, Rx2, Ry2: gint): bool
-proc gdkregion_ADDRECT*(reg: PGdkRegion, r: PGdkRegionBox,
-                        rx1, ry1, rx2, ry2: gint)
-proc gdkregion_ADDRECTNOX*(reg: PGdkRegion, r: PGdkRegionBox,
-                           rx1, ry1, rx2, ry2: gint)
-proc gdkregion_EMPTY_REGION*(pReg: PGdkRegion): bool
-proc gdkregion_REGION_NOT_EMPTY*(pReg: PGdkRegion): bool
-proc gdkregion_INBOX*(r: TGdkRegionBox, x, y: gint): bool
-proc GDK_TYPE_DRAWABLE*(): GType
-proc GDK_DRAWABLE*(anObject: Pointer): PGdkDrawable
-proc GDK_DRAWABLE_CLASS*(klass: Pointer): PGdkDrawableClass
-proc GDK_IS_DRAWABLE*(anObject: Pointer): bool
-proc GDK_IS_DRAWABLE_CLASS*(klass: Pointer): bool
-proc GDK_DRAWABLE_GET_CLASS*(obj: Pointer): PGdkDrawableClass
-proc gdk_drawable_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                      importc: "gdk_drawable_get_type".}
-proc gdk_drawable_get_size*(drawable: PGdkDrawable, width: Pgint, height: Pgint){.
-    cdecl, dynlib: gdklib, importc: "gdk_drawable_get_size".}
-proc gdk_drawable_set_colormap*(drawable: PGdkDrawable, colormap: PGdkColormap){.
-    cdecl, dynlib: gdklib, importc: "gdk_drawable_set_colormap".}
-proc gdk_drawable_get_colormap*(drawable: PGdkDrawable): PGdkColormap{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_colormap".}
-proc gdk_drawable_get_visual*(drawable: PGdkDrawable): PGdkVisual{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_visual".}
-proc gdk_drawable_get_depth*(drawable: PGdkDrawable): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_depth".}
-proc gdk_drawable_get_screen*(drawable: PGdkDrawable): PGdkScreen{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_screen".}
-proc gdk_drawable_get_display*(drawable: PGdkDrawable): PGdkDisplay{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_display".}
-proc gdk_draw_point*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint){.
-    cdecl, dynlib: gdklib, importc: "gdk_draw_point".}
-proc gdk_draw_line*(drawable: PGdkDrawable, gc: PGdkGC, x1: gint, y1: gint,
-                    x2: gint, y2: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_draw_line".}
-proc gdk_draw_rectangle*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint,
-                         x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_draw_rectangle".}
-proc gdk_draw_arc*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint, x: gint,
-                   y: gint, width: gint, height: gint, angle1: gint,
-                   angle2: gint){.cdecl, dynlib: gdklib, importc: "gdk_draw_arc".}
-proc gdk_draw_polygon*(drawable: PGdkDrawable, gc: PGdkGC, filled: gint,
-                       points: PGdkPoint, npoints: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_draw_polygon".}
-proc gdk_draw_drawable*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable,
-                        xsrc: gint, ysrc: gint, xdest: gint, ydest: gint,
-                        width: gint, height: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_draw_drawable".}
-proc gdk_draw_image*(drawable: PGdkDrawable, gc: PGdkGC, image: PGdkImage,
-                     xsrc: gint, ysrc: gint, xdest: gint, ydest: gint,
-                     width: gint, height: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_draw_image".}
-proc gdk_draw_points*(drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint,
-                      npoints: gint){.cdecl, dynlib: gdklib,
-                                      importc: "gdk_draw_points".}
-proc gdk_draw_segments*(drawable: PGdkDrawable, gc: PGdkGC, segs: PGdkSegment,
-                        nsegs: gint){.cdecl, dynlib: gdklib,
-                                      importc: "gdk_draw_segments".}
-proc gdk_draw_lines*(drawable: PGdkDrawable, gc: PGdkGC, points: PGdkPoint,
-                     npoints: gint){.cdecl, dynlib: gdklib,
-                                     importc: "gdk_draw_lines".}
-proc gdk_draw_glyphs*(drawable: PGdkDrawable, gc: PGdkGC, font: PPangoFont,
-                      x: gint, y: gint, glyphs: PPangoGlyphString){.cdecl,
-    dynlib: gdklib, importc: "gdk_draw_glyphs".}
-proc gdk_draw_layout_line*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint,
-                           line: PPangoLayoutLine){.cdecl, dynlib: gdklib,
+proc motion*(context: PDragContext, dest_window: PWindow, 
+                  protocol: TDragProtocol, x_root: gint, y_root: gint, 
+                  suggested_action: TDragAction, possible_actions: TDragAction, 
+                  time: guint32): gboolean{.cdecl, dynlib: lib, 
+    importc: "gdk_drag_motion".}
+proc drop*(context: PDragContext, time: guint32){.cdecl, dynlib: lib, 
+    importc: "gdk_drag_drop".}
+proc abort*(context: PDragContext, time: guint32){.cdecl, dynlib: lib, 
+    importc: "gdk_drag_abort".}
+proc region_EXTENTCHECK*(r1, r2: PRegionBox): bool
+proc EXTENTS*(r: PRegionBox, idRect: PRegion)
+proc MEMCHECK*(reg: PRegion, ARect, firstrect: var PRegionBox): bool
+proc CHECK_PREVIOUS*(Reg: PRegion, R: PRegionBox, 
+                            Rx1, Ry1, Rx2, Ry2: gint): bool
+proc ADDRECT*(reg: PRegion, r: PRegionBox, rx1, ry1, rx2, ry2: gint)
+proc ADDRECTNOX*(reg: PRegion, r: PRegionBox, rx1, ry1, rx2, ry2: gint)
+proc EMPTY_REGION*(pReg: PRegion): bool
+proc REGION_NOT_EMPTY*(pReg: PRegion): bool
+proc region_INBOX*(r: TRegionBox, x, y: gint): bool
+proc TYPE_DRAWABLE*(): GType
+proc DRAWABLE*(anObject: Pointer): PDrawable
+proc DRAWABLE_CLASS*(klass: Pointer): PDrawableClass
+proc IS_DRAWABLE*(anObject: Pointer): bool
+proc IS_DRAWABLE_CLASS*(klass: Pointer): bool
+proc DRAWABLE_GET_CLASS*(obj: Pointer): PDrawableClass
+proc drawable_get_type*(): GType{.cdecl, dynlib: lib, 
+                                  importc: "gdk_drawable_get_type".}
+proc get_size*(drawable: PDrawable, width: Pgint, height: Pgint){.
+    cdecl, dynlib: lib, importc: "gdk_drawable_get_size".}
+proc set_colormap*(drawable: PDrawable, colormap: PColormap){.cdecl, 
+    dynlib: lib, importc: "gdk_drawable_set_colormap".}
+proc get_colormap*(drawable: PDrawable): PColormap{.cdecl, dynlib: lib, 
+    importc: "gdk_drawable_get_colormap".}
+proc get_visual*(drawable: PDrawable): PVisual{.cdecl, dynlib: lib, 
+    importc: "gdk_drawable_get_visual".}
+proc get_depth*(drawable: PDrawable): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_drawable_get_depth".}
+proc get_screen*(drawable: PDrawable): PScreen{.cdecl, dynlib: lib, 
+    importc: "gdk_drawable_get_screen".}
+proc get_display*(drawable: PDrawable): PDisplay{.cdecl, dynlib: lib, 
+    importc: "gdk_drawable_get_display".}
+proc point*(drawable: PDrawable, gc: PGC, x: gint, y: gint){.cdecl, 
+    dynlib: lib, importc: "gdk_draw_point".}
+proc line*(drawable: PDrawable, gc: PGC, x1: gint, y1: gint, x2: gint, 
+                y2: gint){.cdecl, dynlib: lib, importc: "gdk_draw_line".}
+proc rectangle*(drawable: PDrawable, gc: PGC, filled: gint, x: gint, 
+                     y: gint, width: gint, height: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_draw_rectangle".}
+proc arc*(drawable: PDrawable, gc: PGC, filled: gint, x: gint, y: gint, 
+               width: gint, height: gint, angle1: gint, angle2: gint){.cdecl, 
+    dynlib: lib, importc: "gdk_draw_arc".}
+proc polygon*(drawable: PDrawable, gc: PGC, filled: gint, points: PPoint, 
+                   npoints: gint){.cdecl, dynlib: lib, 
+                                   importc: "gdk_draw_polygon".}
+proc drawable*(drawable: PDrawable, gc: PGC, src: PDrawable, xsrc: gint, 
+                    ysrc: gint, xdest: gint, ydest: gint, width: gint, 
+                    height: gint){.cdecl, dynlib: lib, 
+                                   importc: "gdk_draw_drawable".}
+proc image*(drawable: PDrawable, gc: PGC, image: PImage, xsrc: gint, 
+                 ysrc: gint, xdest: gint, ydest: gint, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "gdk_draw_image".}
+proc points*(drawable: PDrawable, gc: PGC, points: PPoint, npoints: gint){.
+    cdecl, dynlib: lib, importc: "gdk_draw_points".}
+proc segments*(drawable: PDrawable, gc: PGC, segs: PSegment, nsegs: gint){.
+    cdecl, dynlib: lib, importc: "gdk_draw_segments".}
+proc lines*(drawable: PDrawable, gc: PGC, points: PPoint, npoints: gint){.
+    cdecl, dynlib: lib, importc: "gdk_draw_lines".}
+proc glyphs*(drawable: PDrawable, gc: PGC, font: PFont, x: gint, 
+                  y: gint, glyphs: PGlyphString){.cdecl, dynlib: lib, 
+    importc: "gdk_draw_glyphs".}
+proc layout_line*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                       line: PLayoutLine){.cdecl, dynlib: lib, 
     importc: "gdk_draw_layout_line".}
-proc gdk_draw_layout*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint,
-                      layout: PPangoLayout){.cdecl, dynlib: gdklib,
+proc layout*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                  layout: PLayout){.cdecl, dynlib: lib, 
     importc: "gdk_draw_layout".}
-proc gdk_draw_layout_line_with_colors*(drawable: PGdkDrawable, gc: PGdkGC,
-                                       x: gint, y: gint, line: PPangoLayoutLine,
-                                       foreground: PGdkColor,
-                                       background: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_draw_layout_line_with_colors".}
-proc gdk_draw_layout_with_colors*(drawable: PGdkDrawable, gc: PGdkGC, x: gint,
-                                  y: gint, layout: PPangoLayout,
-                                  foreground: PGdkColor, background: PGdkColor){.
-    cdecl, dynlib: gdklib, importc: "gdk_draw_layout_with_colors".}
-proc gdk_drawable_get_image*(drawable: PGdkDrawable, x: gint, y: gint,
-                             width: gint, height: gint): PGdkImage{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_image".}
-proc gdk_drawable_get_clip_region*(drawable: PGdkDrawable): PGdkRegion{.cdecl,
-    dynlib: gdklib, importc: "gdk_drawable_get_clip_region".}
-proc gdk_drawable_get_visible_region*(drawable: PGdkDrawable): PGdkRegion{.
-    cdecl, dynlib: gdklib, importc: "gdk_drawable_get_visible_region".}
-const
-  GDK_NOTHING* = - (1)
-  GDK_DELETE* = 0
-  GDK_DESTROY* = 1
-  GDK_EXPOSE* = 2
-  GDK_MOTION_NOTIFY* = 3
-  GDK_BUTTON_PRESS* = 4
-  GDK_2BUTTON_PRESS* = 5
-  GDK_3BUTTON_PRESS* = 6
-  GDK_BUTTON_RELEASE* = 7
-  GDK_KEY_PRESS* = 8
-  GDK_KEY_RELEASE* = 9
-  GDK_ENTER_NOTIFY* = 10
-  GDK_LEAVE_NOTIFY* = 11
-  GDK_FOCUS_CHANGE* = 12
-  GDK_CONFIGURE* = 13
-  GDK_MAP* = 14
-  GDK_UNMAP* = 15
-  GDK_PROPERTY_NOTIFY* = 16
-  GDK_SELECTION_CLEAR* = 17
-  GDK_SELECTION_REQUEST* = 18
-  GDK_SELECTION_NOTIFY* = 19
-  GDK_PROXIMITY_IN* = 20
-  GDK_PROXIMITY_OUT* = 21
-  GDK_DRAG_ENTER* = 22
-  GDK_DRAG_LEAVE* = 23
-  GDK_DRAG_MOTION_EVENT* = 24
-  GDK_DRAG_STATUS_EVENT* = 25
-  GDK_DROP_START* = 26
-  GDK_DROP_FINISHED* = 27
-  GDK_CLIENT_EVENT* = 28
-  GDK_VISIBILITY_NOTIFY* = 29
-  GDK_NO_EXPOSE* = 30
-  GDK_SCROLL* = 31
-  GDK_WINDOW_STATE* = 32
-  GDK_SETTING* = 33
-  GDK_NOTIFY_ANCESTOR* = 0
-  GDK_NOTIFY_VIRTUAL* = 1
-  GDK_NOTIFY_INFERIOR* = 2
-  GDK_NOTIFY_NONLINEAR* = 3
-  GDK_NOTIFY_NONLINEAR_VIRTUAL* = 4
-  GDK_NOTIFY_UNKNOWN* = 5
-
-proc GDK_TYPE_EVENT*(): GType
-const
+proc layout_line_with_colors*(drawable: PDrawable, gc: PGC, x: gint, 
+                                   y: gint, line: PLayoutLine, 
+                                   foreground: PColor, background: PColor){.
+    cdecl, dynlib: lib, importc: "gdk_draw_layout_line_with_colors".}
+proc layout_with_colors*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                              layout: PLayout, foreground: PColor, 
+                              background: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_draw_layout_with_colors".}
+proc get_image*(drawable: PDrawable, x: gint, y: gint, width: gint, 
+                         height: gint): PImage{.cdecl, dynlib: lib, 
+    importc: "gdk_drawable_get_image".}
+proc get_clip_region*(drawable: PDrawable): PRegion{.cdecl, 
+    dynlib: lib, importc: "gdk_drawable_get_clip_region".}
+proc get_visible_region*(drawable: PDrawable): PRegion{.cdecl, 
+    dynlib: lib, importc: "gdk_drawable_get_visible_region".}
+const 
+  NOTHING* = - (1)
+  DELETE* = 0
+  constDESTROY* = 1
+  EXPOSE* = 2
+  MOTION_NOTIFY* = 3
+  BUTTON_PRESS* = 4
+  BUTTON2_PRESS* = 5
+  BUTTON3_PRESS* = 6
+  BUTTON_RELEASE* = 7
+  KEY_PRESS* = 8
+  KEY_RELEASE* = 9
+  ENTER_NOTIFY* = 10
+  LEAVE_NOTIFY* = 11
+  FOCUS_CHANGE* = 12
+  CONFIGURE* = 13
+  MAP* = 14
+  UNMAP* = 15
+  PROPERTY_NOTIFY* = 16
+  SELECTION_CLEAR* = 17
+  SELECTION_REQUEST* = 18
+  SELECTION_NOTIFY* = 19
+  PROXIMITY_IN* = 20
+  PROXIMITY_OUT* = 21
+  DRAG_ENTER* = 22
+  DRAG_LEAVE* = 23
+  DRAG_MOTION_EVENT* = 24
+  DRAG_STATUS_EVENT* = 25
+  DROP_START* = 26
+  DROP_FINISHED* = 27
+  CLIENT_EVENT* = 28
+  VISIBILITY_NOTIFY* = 29
+  NO_EXPOSE* = 30
+  constSCROLL* = 31
+  WINDOW_STATE* = 32
+  SETTING* = 33
+  NOTIFY_ANCESTOR* = 0
+  NOTIFY_VIRTUAL* = 1
+  NOTIFY_INFERIOR* = 2
+  NOTIFY_NONLINEAR* = 3
+  NOTIFY_NONLINEAR_VIRTUAL* = 4
+  NOTIFY_UNKNOWN* = 5
+
+proc TYPE_EVENT*(): GType
+const 
   G_PRIORITY_DEFAULT* = 0
-  GDK_PRIORITY_EVENTS* = G_PRIORITY_DEFAULT
-    #GDK_PRIORITY_REDRAW* = G_PRIORITY_HIGH_IDLE + 20
-  GDK_EXPOSURE_MASK* = 1 shl 1
-  GDK_POINTER_MOTION_MASK* = 1 shl 2
-  GDK_POINTER_MOTION_HINT_MASK* = 1 shl 3
-  GDK_BUTTON_MOTION_MASK* = 1 shl 4
-  GDK_BUTTON1_MOTION_MASK* = 1 shl 5
-  GDK_BUTTON2_MOTION_MASK* = 1 shl 6
-  GDK_BUTTON3_MOTION_MASK* = 1 shl 7
-  GDK_BUTTON_PRESS_MASK* = 1 shl 8
-  GDK_BUTTON_RELEASE_MASK* = 1 shl 9
-  GDK_KEY_PRESS_MASK* = 1 shl 10
-  GDK_KEY_RELEASE_MASK* = 1 shl 11
-  GDK_ENTER_NOTIFY_MASK* = 1 shl 12
-  GDK_LEAVE_NOTIFY_MASK* = 1 shl 13
-  GDK_FOCUS_CHANGE_MASK* = 1 shl 14
-  GDK_STRUCTURE_MASK* = 1 shl 15
-  GDK_PROPERTY_CHANGE_MASK* = 1 shl 16
-  GDK_VISIBILITY_NOTIFY_MASK* = 1 shl 17
-  GDK_PROXIMITY_IN_MASK* = 1 shl 18
-  GDK_PROXIMITY_OUT_MASK* = 1 shl 19
-  GDK_SUBSTRUCTURE_MASK* = 1 shl 20
-  GDK_SCROLL_MASK* = 1 shl 21
-  GDK_ALL_EVENTS_MASK* = 0x003FFFFE
-  GDK_WINDOW_STATE_WITHDRAWN* = 1 shl 0
-  GDK_WINDOW_STATE_ICONIFIED* = 1 shl 1
-  GDK_WINDOW_STATE_MAXIMIZED* = 1 shl 2
-  GDK_WINDOW_STATE_STICKY* = 1 shl 3
-
-proc gdk_event_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                   importc: "gdk_event_get_type".}
-proc gdk_events_pending*(): gboolean{.cdecl, dynlib: gdklib,
-                                      importc: "gdk_events_pending".}
-proc gdk_event_get*(): PGdkEvent{.cdecl, dynlib: gdklib,
-                                  importc: "gdk_event_get".}
-proc gdk_event_peek*(): PGdkEvent{.cdecl, dynlib: gdklib,
-                                   importc: "gdk_event_peek".}
-proc gdk_event_get_graphics_expose*(window: PGdkWindow): PGdkEvent{.cdecl,
-    dynlib: gdklib, importc: "gdk_event_get_graphics_expose".}
-proc gdk_event_put*(event: PGdkEvent){.cdecl, dynlib: gdklib,
-                                       importc: "gdk_event_put".}
-proc gdk_event_copy*(event: PGdkEvent): PGdkEvent{.cdecl, dynlib: gdklib,
+  PRIORITY_EVENTS* = G_PRIORITY_DEFAULT #GDK_PRIORITY_REDRAW* = G_PRIORITY_HIGH_IDLE + 20
+  EXPOSURE_MASK* = 1 shl 1
+  POINTER_MOTION_MASK* = 1 shl 2
+  POINTER_MOTION_HINT_MASK* = 1 shl 3
+  BUTTON_MOTION_MASK* = 1 shl 4
+  BUTTON1_MOTION_MASK* = 1 shl 5
+  BUTTON2_MOTION_MASK* = 1 shl 6
+  BUTTON3_MOTION_MASK* = 1 shl 7
+  BUTTON_PRESS_MASK* = 1 shl 8
+  BUTTON_RELEASE_MASK* = 1 shl 9
+  KEY_PRESS_MASK* = 1 shl 10
+  KEY_RELEASE_MASK* = 1 shl 11
+  ENTER_NOTIFY_MASK* = 1 shl 12
+  LEAVE_NOTIFY_MASK* = 1 shl 13
+  FOCUS_CHANGE_MASK* = 1 shl 14
+  STRUCTURE_MASK* = 1 shl 15
+  PROPERTY_CHANGE_MASK* = 1 shl 16
+  VISIBILITY_NOTIFY_MASK* = 1 shl 17
+  PROXIMITY_IN_MASK* = 1 shl 18
+  PROXIMITY_OUT_MASK* = 1 shl 19
+  SUBSTRUCTURE_MASK* = 1 shl 20
+  SCROLL_MASK* = 1 shl 21
+  ALL_EVENTS_MASK* = 0x003FFFFE
+  WINDOW_STATE_WITHDRAWN* = 1 shl 0
+  WINDOW_STATE_ICONIFIED* = 1 shl 1
+  WINDOW_STATE_MAXIMIZED* = 1 shl 2
+  WINDOW_STATE_STICKY* = 1 shl 3
+
+proc event_get_type*(): GType{.cdecl, dynlib: lib, importc: "gdk_event_get_type".}
+proc events_pending*(): gboolean{.cdecl, dynlib: lib, 
+                                  importc: "gdk_events_pending".}
+proc event_get*(): PEvent{.cdecl, dynlib: lib, importc: "gdk_event_get".}
+proc event_peek*(): PEvent{.cdecl, dynlib: lib, importc: "gdk_event_peek".}
+proc event_get_graphics_expose*(window: PWindow): PEvent{.cdecl, dynlib: lib, 
+    importc: "gdk_event_get_graphics_expose".}
+proc put*(event: PEvent){.cdecl, dynlib: lib, importc: "gdk_event_put".}
+proc copy*(event: PEvent): PEvent{.cdecl, dynlib: lib, 
     importc: "gdk_event_copy".}
-proc gdk_event_free*(event: PGdkEvent){.cdecl, dynlib: gdklib,
-                                        importc: "gdk_event_free".}
-proc gdk_event_get_time*(event: PGdkEvent): guint32{.cdecl, dynlib: gdklib,
+proc free*(event: PEvent){.cdecl, dynlib: lib, importc: "gdk_event_free".}
+proc get_time*(event: PEvent): guint32{.cdecl, dynlib: lib, 
     importc: "gdk_event_get_time".}
-proc gdk_event_get_state*(event: PGdkEvent, state: PGdkModifierType): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_event_get_state".}
-proc gdk_event_get_coords*(event: PGdkEvent, x_win: Pgdouble, y_win: Pgdouble): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_event_get_coords".}
-proc gdk_event_get_root_coords*(event: PGdkEvent, x_root: Pgdouble,
-                                y_root: Pgdouble): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_event_get_root_coords".}
-proc gdk_event_get_axis*(event: PGdkEvent, axis_use: TGdkAxisUse,
-                         value: Pgdouble): gboolean{.cdecl, dynlib: gdklib,
-    importc: "gdk_event_get_axis".}
-proc gdk_event_handler_set*(func: TGdkEventFunc, data: gpointer,
-                            notify: TGDestroyNotify){.cdecl, dynlib: gdklib,
+proc get_state*(event: PEvent, state: PModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_event_get_state".}
+proc get_coords*(event: PEvent, x_win: Pgdouble, y_win: Pgdouble): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_event_get_coords".}
+proc get_root_coords*(event: PEvent, x_root: Pgdouble, y_root: Pgdouble): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_event_get_root_coords".}
+proc get_axis*(event: PEvent, axis_use: TAxisUse, value: Pgdouble): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_event_get_axis".}
+proc event_handler_set*(func: TEventFunc, data: gpointer, 
+                        notify: TGDestroyNotify){.cdecl, dynlib: lib, 
     importc: "gdk_event_handler_set".}
-proc gdk_set_show_events*(show_events: gboolean){.cdecl, dynlib: gdklib,
+proc set_show_events*(show_events: gboolean){.cdecl, dynlib: lib, 
     importc: "gdk_set_show_events".}
-proc gdk_get_show_events*(): gboolean{.cdecl, dynlib: gdklib,
-                                       importc: "gdk_get_show_events".}
-proc GDK_TYPE_FONT*(): GType
-proc gdk_font_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                  importc: "gdk_font_get_type".}
-proc gdk_font_load_for_display*(display: PGdkDisplay, font_name: cstring): PGdkFont{.
-    cdecl, dynlib: gdklib, importc: "gdk_font_load_for_display".}
-proc gdk_fontset_load_for_display*(display: PGdkDisplay, fontset_name: cstring): PGdkFont{.
-    cdecl, dynlib: gdklib, importc: "gdk_fontset_load_for_display".}
-proc gdk_font_from_description_for_display*(display: PGdkDisplay,
-    font_desc: PPangoFontDescription): PGdkFont{.cdecl, dynlib: gdklib,
-    importc: "gdk_font_from_description_for_display".}
-proc gdk_font_ref*(font: PGdkFont): PGdkFont{.cdecl, dynlib: gdklib,
-    importc: "gdk_font_ref".}
-proc gdk_font_unref*(font: PGdkFont){.cdecl, dynlib: gdklib,
-                                      importc: "gdk_font_unref".}
-proc gdk_font_id*(font: PGdkFont): gint{.cdecl, dynlib: gdklib,
-    importc: "gdk_font_id".}
-proc gdk_font_equal*(fonta: PGdkFont, fontb: PGdkFont): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_font_equal".}
-proc gdk_string_width*(font: PGdkFont, `string`: cstring): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_string_width".}
-proc gdk_text_width*(font: PGdkFont, text: cstring, text_length: gint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_text_width".}
-proc gdk_text_width_wc*(font: PGdkFont, text: PGdkWChar, text_length: gint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_text_width_wc".}
-proc gdk_char_width*(font: PGdkFont, character: gchar): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_char_width".}
-proc gdk_char_width_wc*(font: PGdkFont, character: TGdkWChar): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_char_width_wc".}
-proc gdk_string_measure*(font: PGdkFont, `string`: cstring): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_string_measure".}
-proc gdk_text_measure*(font: PGdkFont, text: cstring, text_length: gint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_text_measure".}
-proc gdk_char_measure*(font: PGdkFont, character: gchar): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_char_measure".}
-proc gdk_string_height*(font: PGdkFont, `string`: cstring): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_string_height".}
-proc gdk_text_height*(font: PGdkFont, text: cstring, text_length: gint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_text_height".}
-proc gdk_char_height*(font: PGdkFont, character: gchar): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_char_height".}
-proc gdk_text_extents*(font: PGdkFont, text: cstring, text_length: gint,
-                       lbearing: Pgint, rbearing: Pgint, width: Pgint,
-                       ascent: Pgint, descent: Pgint){.cdecl, dynlib: gdklib,
+proc get_show_events*(): gboolean{.cdecl, dynlib: lib, 
+                                   importc: "gdk_get_show_events".}
+proc TYPE_FONT*(): GType
+proc font_get_type*(): GType{.cdecl, dynlib: lib, importc: "gdk_font_get_type".}
+proc font_load_for_display*(display: PDisplay, font_name: cstring): PFont{.
+    cdecl, dynlib: lib, importc: "gdk_font_load_for_display".}
+proc fontset_load_for_display*(display: PDisplay, fontset_name: cstring): PFont{.
+    cdecl, dynlib: lib, importc: "gdk_fontset_load_for_display".}
+proc font_from_description_for_display*(display: PDisplay, 
+                                        font_desc: PFontDescription): PFont{.
+    cdecl, dynlib: lib, importc: "gdk_font_from_description_for_display".}
+proc reference*(font: PFont): PFont{.cdecl, dynlib: lib, importc: "gdk_font_ref".}
+proc unref*(font: PFont){.cdecl, dynlib: lib, importc: "gdk_font_unref".}
+proc id*(font: PFont): gint{.cdecl, dynlib: lib, importc: "gdk_font_id".}
+proc equal*(fonta: PFont, fontb: PFont): gboolean{.cdecl, dynlib: lib, 
+    importc: "gdk_font_equal".}
+proc string_width*(font: PFont, `string`: cstring): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_string_width".}
+proc text_width*(font: PFont, text: cstring, text_length: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_text_width".}
+proc text_width_wc*(font: PFont, text: PWChar, text_length: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_text_width_wc".}
+proc char_width*(font: PFont, character: gchar): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_char_width".}
+proc char_width_wc*(font: PFont, character: TWChar): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_char_width_wc".}
+proc string_measure*(font: PFont, `string`: cstring): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_string_measure".}
+proc text_measure*(font: PFont, text: cstring, text_length: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_text_measure".}
+proc char_measure*(font: PFont, character: gchar): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_char_measure".}
+proc string_height*(font: PFont, `string`: cstring): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_string_height".}
+proc text_height*(font: PFont, text: cstring, text_length: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_text_height".}
+proc char_height*(font: PFont, character: gchar): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_char_height".}
+proc text_extents*(font: PFont, text: cstring, text_length: gint, 
+                   lbearing: Pgint, rbearing: Pgint, width: Pgint, 
+                   ascent: Pgint, descent: Pgint){.cdecl, dynlib: lib, 
     importc: "gdk_text_extents".}
-proc gdk_text_extents_wc*(font: PGdkFont, text: PGdkWChar, text_length: gint,
-                          lbearing: Pgint, rbearing: Pgint, width: Pgint,
-                          ascent: Pgint, descent: Pgint){.cdecl, dynlib: gdklib,
+proc text_extents_wc*(font: PFont, text: PWChar, text_length: gint, 
+                      lbearing: Pgint, rbearing: Pgint, width: Pgint, 
+                      ascent: Pgint, descent: Pgint){.cdecl, dynlib: lib, 
     importc: "gdk_text_extents_wc".}
-proc gdk_string_extents*(font: PGdkFont, `string`: cstring, lbearing: Pgint,
-                         rbearing: Pgint, width: Pgint, ascent: Pgint,
-                         descent: Pgint){.cdecl, dynlib: gdklib,
-    importc: "gdk_string_extents".}
-proc gdk_font_get_display*(font: PGdkFont): PGdkDisplay{.cdecl, dynlib: gdklib,
+proc string_extents*(font: PFont, `string`: cstring, lbearing: Pgint, 
+                     rbearing: Pgint, width: Pgint, ascent: Pgint, 
+                     descent: Pgint){.cdecl, dynlib: lib, 
+                                      importc: "gdk_string_extents".}
+proc get_display*(font: PFont): PDisplay{.cdecl, dynlib: lib, 
     importc: "gdk_font_get_display".}
-const
-  GDK_GC_FOREGROUND* = 1 shl 0
-  GDK_GC_BACKGROUND* = 1 shl 1
-  GDK_GC_FONT* = 1 shl 2
-  GDK_GC_FUNCTION* = 1 shl 3
-  GDK_GC_FILL* = 1 shl 4
-  GDK_GC_TILE* = 1 shl 5
-  GDK_GC_STIPPLE* = 1 shl 6
-  GDK_GC_CLIP_MASK* = 1 shl 7
-  GDK_GC_SUBWINDOW* = 1 shl 8
-  GDK_GC_TS_X_ORIGIN* = 1 shl 9
-  GDK_GC_TS_Y_ORIGIN* = 1 shl 10
-  GDK_GC_CLIP_X_ORIGIN* = 1 shl 11
-  GDK_GC_CLIP_Y_ORIGIN* = 1 shl 12
-  GDK_GC_EXPOSURES* = 1 shl 13
-  GDK_GC_LINE_WIDTH* = 1 shl 14
-  GDK_GC_LINE_STYLE* = 1 shl 15
-  GDK_GC_CAP_STYLE* = 1 shl 16
-  GDK_GC_JOIN_STYLE* = 1 shl 17
-  GDK_CLIP_BY_CHILDREN* = 0
-  GDK_INCLUDE_INFERIORS* = 1
-
-proc GDK_TYPE_GC*(): GType
-proc GDK_GC*(anObject: Pointer): PGdkGC
-proc GDK_GC_CLASS*(klass: Pointer): PGdkGCClass
-proc GDK_IS_GC*(anObject: Pointer): bool
-proc GDK_IS_GC_CLASS*(klass: Pointer): bool
-proc GDK_GC_GET_CLASS*(obj: Pointer): PGdkGCClass
-proc gdk_gc_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                importc: "gdk_gc_get_type".}
-proc gdk_gc_new*(drawable: PGdkDrawable): PGdkGC{.cdecl, dynlib: gdklib,
-    importc: "gdk_gc_new".}
-proc gdk_gc_new_with_values*(drawable: PGdkDrawable, values: PGdkGCValues,
-                             values_mask: TGdkGCValuesMask): PGdkGC{.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_new_with_values".}
-proc gdk_gc_get_values*(gc: PGdkGC, values: PGdkGCValues){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_get_values".}
-proc gdk_gc_set_values*(gc: PGdkGC, values: PGdkGCValues,
-                        values_mask: TGdkGCValuesMask){.cdecl, dynlib: gdklib,
-    importc: "gdk_gc_set_values".}
-proc gdk_gc_set_foreground*(gc: PGdkGC, color: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_foreground".}
-proc gdk_gc_set_background*(gc: PGdkGC, color: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_background".}
-proc gdk_gc_set_function*(gc: PGdkGC, `function`: TGdkFunction){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_function".}
-proc gdk_gc_set_fill*(gc: PGdkGC, fill: TGdkFill){.cdecl, dynlib: gdklib,
+const 
+  GC_FOREGROUND* = 1 shl 0
+  GC_BACKGROUND* = 1 shl 1
+  GC_FONT* = 1 shl 2
+  GC_FUNCTION* = 1 shl 3
+  GC_FILL* = 1 shl 4
+  GC_TILE* = 1 shl 5
+  GC_STIPPLE* = 1 shl 6
+  GC_CLIP_MASK* = 1 shl 7
+  GC_SUBWINDOW* = 1 shl 8
+  GC_TS_X_ORIGIN* = 1 shl 9
+  GC_TS_Y_ORIGIN* = 1 shl 10
+  GC_CLIP_X_ORIGIN* = 1 shl 11
+  GC_CLIP_Y_ORIGIN* = 1 shl 12
+  GC_EXPOSURES* = 1 shl 13
+  GC_LINE_WIDTH* = 1 shl 14
+  GC_LINE_STYLE* = 1 shl 15
+  GC_CAP_STYLE* = 1 shl 16
+  GC_JOIN_STYLE* = 1 shl 17
+  CLIP_BY_CHILDREN* = 0
+  INCLUDE_INFERIORS* = 1
+
+proc TYPE_GC*(): GType
+proc GC*(anObject: Pointer): PGC
+proc GC_CLASS*(klass: Pointer): PGCClass
+proc IS_GC*(anObject: Pointer): bool
+proc IS_GC_CLASS*(klass: Pointer): bool
+proc GC_GET_CLASS*(obj: Pointer): PGCClass
+proc gc_get_type*(): GType{.cdecl, dynlib: lib, importc: "gdk_gc_get_type".}
+proc gc_new*(drawable: PDrawable): PGC{.cdecl, dynlib: lib, 
+                                        importc: "gdk_gc_new".}
+proc gc_new_with_values*(drawable: PDrawable, values: PGCValues, 
+                         values_mask: TGCValuesMask): PGC{.cdecl, dynlib: lib, 
+    importc: "gdk_gc_new_with_values".}
+proc get_values*(gc: PGC, values: PGCValues){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_get_values".}
+proc set_values*(gc: PGC, values: PGCValues, values_mask: TGCValuesMask){.
+    cdecl, dynlib: lib, importc: "gdk_gc_set_values".}
+proc set_foreground*(gc: PGC, color: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_foreground".}
+proc set_background*(gc: PGC, color: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_background".}
+proc set_function*(gc: PGC, `function`: TFunction){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_function".}
+proc set_fill*(gc: PGC, fill: TFill){.cdecl, dynlib: lib, 
     importc: "gdk_gc_set_fill".}
-proc gdk_gc_set_tile*(gc: PGdkGC, tile: PGdkPixmap){.cdecl, dynlib: gdklib,
+proc set_tile*(gc: PGC, tile: PPixmap){.cdecl, dynlib: lib, 
     importc: "gdk_gc_set_tile".}
-proc gdk_gc_set_stipple*(gc: PGdkGC, stipple: PGdkPixmap){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_stipple".}
-proc gdk_gc_set_ts_origin*(gc: PGdkGC, x: gint, y: gint){.cdecl, dynlib: gdklib,
+proc set_stipple*(gc: PGC, stipple: PPixmap){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_stipple".}
+proc set_ts_origin*(gc: PGC, x: gint, y: gint){.cdecl, dynlib: lib, 
     importc: "gdk_gc_set_ts_origin".}
-proc gdk_gc_set_clip_origin*(gc: PGdkGC, x: gint, y: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_clip_origin".}
-proc gdk_gc_set_clip_mask*(gc: PGdkGC, mask: PGdkBitmap){.cdecl, dynlib: gdklib,
+proc set_clip_origin*(gc: PGC, x: gint, y: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_clip_origin".}
+proc set_clip_mask*(gc: PGC, mask: PBitmap){.cdecl, dynlib: lib, 
     importc: "gdk_gc_set_clip_mask".}
-proc gdk_gc_set_clip_rectangle*(gc: PGdkGC, rectangle: PGdkRectangle){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_clip_rectangle".}
-proc gdk_gc_set_clip_region*(gc: PGdkGC, region: PGdkRegion){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_clip_region".}
-proc gdk_gc_set_subwindow*(gc: PGdkGC, mode: TGdkSubwindowMode){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_subwindow".}
-proc gdk_gc_set_exposures*(gc: PGdkGC, exposures: gboolean){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_exposures".}
-proc gdk_gc_set_line_attributes*(gc: PGdkGC, line_width: gint,
-                                 line_style: TGdkLineStyle,
-                                 cap_style: TGdkCapStyle,
-                                 join_style: TGdkJoinStyle){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_line_attributes".}
-proc gdk_gc_set_dashes*(gc: PGdkGC, dash_offset: gint,
-                        dash_list: openarray[gint8]){.cdecl, dynlib: gdklib,
-    importc: "gdk_gc_set_dashes".}
-proc gdk_gc_offset*(gc: PGdkGC, x_offset: gint, y_offset: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_offset".}
-proc gdk_gc_copy*(dst_gc: PGdkGC, src_gc: PGdkGC){.cdecl, dynlib: gdklib,
+proc set_clip_rectangle*(gc: PGC, rectangle: PRectangle){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_clip_rectangle".}
+proc set_clip_region*(gc: PGC, region: PRegion){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_clip_region".}
+proc set_subwindow*(gc: PGC, mode: TSubwindowMode){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_subwindow".}
+proc set_exposures*(gc: PGC, exposures: gboolean){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_exposures".}
+proc set_line_attributes*(gc: PGC, line_width: gint, line_style: TLineStyle, 
+                             cap_style: TCapStyle, join_style: TJoinStyle){.
+    cdecl, dynlib: lib, importc: "gdk_gc_set_line_attributes".}
+proc set_dashes*(gc: PGC, dash_offset: gint, dash_list: openarray[gint8]){.
+    cdecl, dynlib: lib, importc: "gdk_gc_set_dashes".}
+proc offset*(gc: PGC, x_offset: gint, y_offset: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_offset".}
+proc copy*(dst_gc: PGC, src_gc: PGC){.cdecl, dynlib: lib, 
     importc: "gdk_gc_copy".}
-proc gdk_gc_set_colormap*(gc: PGdkGC, colormap: PGdkColormap){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_colormap".}
-proc gdk_gc_get_colormap*(gc: PGdkGC): PGdkColormap{.cdecl, dynlib: gdklib,
+proc set_colormap*(gc: PGC, colormap: PColormap){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_colormap".}
+proc get_colormap*(gc: PGC): PColormap{.cdecl, dynlib: lib, 
     importc: "gdk_gc_get_colormap".}
-proc gdk_gc_set_rgb_fg_color*(gc: PGdkGC, color: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_rgb_fg_color".}
-proc gdk_gc_set_rgb_bg_color*(gc: PGdkGC, color: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_gc_set_rgb_bg_color".}
-proc gdk_gc_get_screen*(gc: PGdkGC): PGdkScreen{.cdecl, dynlib: gdklib,
-    importc: "gdk_gc_get_screen".}
-proc GDK_TYPE_IMAGE*(): GType
-proc GDK_IMAGE*(anObject: Pointer): PGdkImage
-proc GDK_IMAGE_CLASS*(klass: Pointer): PGdkImageClass
-proc GDK_IS_IMAGE*(anObject: Pointer): bool
-proc GDK_IS_IMAGE_CLASS*(klass: Pointer): bool
-proc GDK_IMAGE_GET_CLASS*(obj: Pointer): PGdkImageClass
-proc gdk_image_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                   importc: "gdk_image_get_type".}
-proc gdk_image_new*(`type`: TGdkImageType, visual: PGdkVisual, width: gint,
-                    height: gint): PGdkImage{.cdecl, dynlib: gdklib,
-    importc: "gdk_image_new".}
-proc gdk_image_put_pixel*(image: PGdkImage, x: gint, y: gint, pixel: guint32){.
-    cdecl, dynlib: gdklib, importc: "gdk_image_put_pixel".}
-proc gdk_image_get_pixel*(image: PGdkImage, x: gint, y: gint): guint32{.cdecl,
-    dynlib: gdklib, importc: "gdk_image_get_pixel".}
-proc gdk_image_set_colormap*(image: PGdkImage, colormap: PGdkColormap){.cdecl,
-    dynlib: gdklib, importc: "gdk_image_set_colormap".}
-proc gdk_image_get_colormap*(image: PGdkImage): PGdkColormap{.cdecl,
-    dynlib: gdklib, importc: "gdk_image_get_colormap".}
-const
-  GDK_AXIS_IGNORE* = 0
-  GDK_AXIS_X* = 1
-  GDK_AXIS_Y* = 2
-  GDK_AXIS_PRESSURE* = 3
-  GDK_AXIS_XTILT* = 4
-  GDK_AXIS_YTILT* = 5
-  GDK_AXIS_WHEEL* = 6
-  GDK_AXIS_LAST* = 7
-
-proc GDK_TYPE_DEVICE*(): GType
-proc GDK_DEVICE*(anObject: Pointer): PGdkDevice
-proc GDK_DEVICE_CLASS*(klass: Pointer): PGdkDeviceClass
-proc GDK_IS_DEVICE*(anObject: Pointer): bool
-proc GDK_IS_DEVICE_CLASS*(klass: Pointer): bool
-proc GDK_DEVICE_GET_CLASS*(obj: Pointer): PGdkDeviceClass
-proc gdk_device_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_device_get_type".}
-proc gdk_device_set_source*(device: PGdkDevice, source: TGdkInputSource){.cdecl,
-    dynlib: gdklib, importc: "gdk_device_set_source".}
-proc gdk_device_set_mode*(device: PGdkDevice, mode: TGdkInputMode): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_device_set_mode".}
-proc gdk_device_set_key*(device: PGdkDevice, index: guint, keyval: guint,
-                         modifiers: TGdkModifierType){.cdecl, dynlib: gdklib,
+proc set_rgb_fg_color*(gc: PGC, color: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_rgb_fg_color".}
+proc set_rgb_bg_color*(gc: PGC, color: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_gc_set_rgb_bg_color".}
+proc get_screen*(gc: PGC): PScreen{.cdecl, dynlib: lib, 
+                                       importc: "gdk_gc_get_screen".}
+proc TYPE_IMAGE*(): GType
+proc IMAGE*(anObject: Pointer): PImage
+proc IMAGE_CLASS*(klass: Pointer): PImageClass
+proc IS_IMAGE*(anObject: Pointer): bool
+proc IS_IMAGE_CLASS*(klass: Pointer): bool
+proc IMAGE_GET_CLASS*(obj: Pointer): PImageClass
+proc image_get_type*(): GType{.cdecl, dynlib: lib, importc: "gdk_image_get_type".}
+proc image_new*(`type`: TImageType, visual: PVisual, width: gint, height: gint): PImage{.
+    cdecl, dynlib: lib, importc: "gdk_image_new".}
+proc put_pixel*(image: PImage, x: gint, y: gint, pixel: guint32){.cdecl, 
+    dynlib: lib, importc: "gdk_image_put_pixel".}
+proc get_pixel*(image: PImage, x: gint, y: gint): guint32{.cdecl, 
+    dynlib: lib, importc: "gdk_image_get_pixel".}
+proc set_colormap*(image: PImage, colormap: PColormap){.cdecl, 
+    dynlib: lib, importc: "gdk_image_set_colormap".}
+proc get_colormap*(image: PImage): PColormap{.cdecl, dynlib: lib, 
+    importc: "gdk_image_get_colormap".}
+const 
+  AXIS_IGNORE* = 0
+  AXIS_X* = 1
+  AXIS_Y* = 2
+  AXIS_PRESSURE* = 3
+  AXIS_XTILT* = 4
+  AXIS_YTILT* = 5
+  AXIS_WHEEL* = 6
+  AXIS_LAST* = 7
+
+proc TYPE_DEVICE*(): GType
+proc DEVICE*(anObject: Pointer): PDevice
+proc DEVICE_CLASS*(klass: Pointer): PDeviceClass
+proc IS_DEVICE*(anObject: Pointer): bool
+proc IS_DEVICE_CLASS*(klass: Pointer): bool
+proc DEVICE_GET_CLASS*(obj: Pointer): PDeviceClass
+proc device_get_type*(): GType{.cdecl, dynlib: lib, 
+                                importc: "gdk_device_get_type".}
+proc set_source*(device: PDevice, source: TInputSource){.cdecl, 
+    dynlib: lib, importc: "gdk_device_set_source".}
+proc set_mode*(device: PDevice, mode: TInputMode): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_device_set_mode".}
+proc set_key*(device: PDevice, index: guint, keyval: guint, 
+                     modifiers: TModifierType){.cdecl, dynlib: lib, 
     importc: "gdk_device_set_key".}
-proc gdk_device_set_axis_use*(device: PGdkDevice, index: guint, use: TGdkAxisUse){.
-    cdecl, dynlib: gdklib, importc: "gdk_device_set_axis_use".}
-proc gdk_device_get_state*(device: PGdkDevice, window: PGdkWindow,
-                           axes: Pgdouble, mask: PGdkModifierType){.cdecl,
-    dynlib: gdklib, importc: "gdk_device_get_state".}
-proc gdk_device_get_history*(device: PGdkDevice, window: PGdkWindow,
-                             start: guint32, stop: guint32,
-                             s: var PPGdkTimeCoord, n_events: Pgint): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_device_get_history".}
-proc gdk_device_free_history*(events: PPGdkTimeCoord, n_events: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_device_free_history".}
-proc gdk_device_get_axis*(device: PGdkDevice, axes: Pgdouble, use: TGdkAxisUse,
-                          value: Pgdouble): gboolean{.cdecl, dynlib: gdklib,
+proc set_axis_use*(device: PDevice, index: guint, use: TAxisUse){.cdecl, 
+    dynlib: lib, importc: "gdk_device_set_axis_use".}
+proc get_state*(device: PDevice, window: PWindow, axes: Pgdouble, 
+                       mask: PModifierType){.cdecl, dynlib: lib, 
+    importc: "gdk_device_get_state".}
+proc get_history*(device: PDevice, window: PWindow, start: guint32, 
+                         stop: guint32, s: var PPTimeCoord, n_events: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_device_get_history".}
+proc device_free_history*(events: PPTimeCoord, n_events: gint){.cdecl, 
+    dynlib: lib, importc: "gdk_device_free_history".}
+proc get_axis*(device: PDevice, axes: Pgdouble, use: TAxisUse, 
+                      value: Pgdouble): gboolean{.cdecl, dynlib: lib, 
     importc: "gdk_device_get_axis".}
-proc gdk_input_set_extension_events*(window: PGdkWindow, mask: gint,
-                                     mode: TGdkExtensionMode){.cdecl,
-    dynlib: gdklib, importc: "gdk_input_set_extension_events".}
-proc gdk_device_get_core_pointer*(): PGdkDevice{.cdecl, dynlib: gdklib,
+proc input_set_extension_events*(window: PWindow, mask: gint, 
+                                 mode: TExtensionMode){.cdecl, dynlib: lib, 
+    importc: "gdk_input_set_extension_events".}
+proc device_get_core_pointer*(): PDevice{.cdecl, dynlib: lib, 
     importc: "gdk_device_get_core_pointer".}
-proc GDK_TYPE_KEYMAP*(): GType
-proc GDK_KEYMAP*(anObject: Pointer): PGdkKeymap
-proc GDK_KEYMAP_CLASS*(klass: Pointer): PGdkKeymapClass
-proc GDK_IS_KEYMAP*(anObject: Pointer): bool
-proc GDK_IS_KEYMAP_CLASS*(klass: Pointer): bool
-proc GDK_KEYMAP_GET_CLASS*(obj: Pointer): PGdkKeymapClass
-proc gdk_keymap_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_keymap_get_type".}
-proc gdk_keymap_get_for_display*(display: PGdkDisplay): PGdkKeymap{.cdecl,
-    dynlib: gdklib, importc: "gdk_keymap_get_for_display".}
-proc gdk_keymap_lookup_key*(keymap: PGdkKeymap, key: PGdkKeymapKey): guint{.
-    cdecl, dynlib: gdklib, importc: "gdk_keymap_lookup_key".}
-proc gdk_keymap_translate_keyboard_state*(keymap: PGdkKeymap,
-    hardware_keycode: guint, state: TGdkModifierType, group: gint,
-    keyval: Pguint, effective_group: Pgint, level: Pgint,
-    consumed_modifiers: PGdkModifierType): gboolean{.cdecl, dynlib: gdklib,
-    importc: "gdk_keymap_translate_keyboard_state".}
-proc gdk_keymap_get_entries_for_keyval*(keymap: PGdkKeymap, keyval: guint,
-                                        s: var PGdkKeymapKey, n_keys: Pgint): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_keymap_get_entries_for_keyval".}
-proc gdk_keymap_get_entries_for_keycode*(keymap: PGdkKeymap,
-    hardware_keycode: guint, s: var PGdkKeymapKey, sasdf: var Pguint,
-    n_entries: Pgint): gboolean{.cdecl, dynlib: gdklib,
-                                 importc: "gdk_keymap_get_entries_for_keycode".}
-proc gdk_keymap_get_direction*(keymap: PGdkKeymap): TPangoDirection{.cdecl,
-    dynlib: gdklib, importc: "gdk_keymap_get_direction".}
-proc gdk_keyval_name*(keyval: guint): cstring{.cdecl, dynlib: gdklib,
+proc TYPE_KEYMAP*(): GType
+proc KEYMAP*(anObject: Pointer): PKeymap
+proc KEYMAP_CLASS*(klass: Pointer): PKeymapClass
+proc IS_KEYMAP*(anObject: Pointer): bool
+proc IS_KEYMAP_CLASS*(klass: Pointer): bool
+proc KEYMAP_GET_CLASS*(obj: Pointer): PKeymapClass
+proc keymap_get_type*(): GType{.cdecl, dynlib: lib, 
+                                importc: "gdk_keymap_get_type".}
+proc keymap_get_for_display*(display: PDisplay): PKeymap{.cdecl, dynlib: lib, 
+    importc: "gdk_keymap_get_for_display".}
+proc lookup_key*(keymap: PKeymap, key: PKeymapKey): guint{.cdecl, 
+    dynlib: lib, importc: "gdk_keymap_lookup_key".}
+proc translate_keyboard_state*(keymap: PKeymap, hardware_keycode: guint, 
+                                      state: TModifierType, group: gint, 
+                                      keyval: Pguint, effective_group: Pgint, 
+                                      level: Pgint, 
+                                      consumed_modifiers: PModifierType): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_keymap_translate_keyboard_state".}
+proc get_entries_for_keyval*(keymap: PKeymap, keyval: guint, 
+                                    s: var PKeymapKey, n_keys: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_keymap_get_entries_for_keyval".}
+proc get_entries_for_keycode*(keymap: PKeymap, hardware_keycode: guint, 
+                                     s: var PKeymapKey, sasdf: var Pguint, 
+                                     n_entries: Pgint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_keymap_get_entries_for_keycode".}
+proc get_direction*(keymap: PKeymap): TDirection{.cdecl, 
+    dynlib: lib, importc: "gdk_keymap_get_direction".}
+proc keyval_name*(keyval: guint): cstring{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_name".}
-proc gdk_keyval_from_name*(keyval_name: cstring): guint{.cdecl, dynlib: gdklib,
+proc keyval_from_name*(keyval_name: cstring): guint{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_from_name".}
-proc gdk_keyval_convert_case*(symbol: guint, lower: Pguint, upper: Pguint){.
-    cdecl, dynlib: gdklib, importc: "gdk_keyval_convert_case".}
-proc gdk_keyval_to_upper*(keyval: guint): guint{.cdecl, dynlib: gdklib,
+proc keyval_convert_case*(symbol: guint, lower: Pguint, upper: Pguint){.cdecl, 
+    dynlib: lib, importc: "gdk_keyval_convert_case".}
+proc keyval_to_upper*(keyval: guint): guint{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_to_upper".}
-proc gdk_keyval_to_lower*(keyval: guint): guint{.cdecl, dynlib: gdklib,
+proc keyval_to_lower*(keyval: guint): guint{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_to_lower".}
-proc gdk_keyval_is_upper*(keyval: guint): gboolean{.cdecl, dynlib: gdklib,
+proc keyval_is_upper*(keyval: guint): gboolean{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_is_upper".}
-proc gdk_keyval_is_lower*(keyval: guint): gboolean{.cdecl, dynlib: gdklib,
+proc keyval_is_lower*(keyval: guint): gboolean{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_is_lower".}
-proc gdk_keyval_to_unicode*(keyval: guint): guint32{.cdecl, dynlib: gdklib,
+proc keyval_to_unicode*(keyval: guint): guint32{.cdecl, dynlib: lib, 
     importc: "gdk_keyval_to_unicode".}
-proc gdk_unicode_to_keyval*(wc: guint32): guint{.cdecl, dynlib: gdklib,
+proc unicode_to_keyval*(wc: guint32): guint{.cdecl, dynlib: lib, 
     importc: "gdk_unicode_to_keyval".}
-const
-  GDK_KEY_VoidSymbol* = 0x00FFFFFF
-  GDK_KEY_BackSpace* = 0x0000FF08
-  GDK_KEY_Tab* = 0x0000FF09
-  GDK_KEY_Linefeed* = 0x0000FF0A
-  GDK_KEY_Clear* = 0x0000FF0B
-  GDK_KEY_Return* = 0x0000FF0D
-  GDK_KEY_Pause* = 0x0000FF13
-  GDK_KEY_Scroll_Lock* = 0x0000FF14
-  GDK_KEY_Sys_Req* = 0x0000FF15
-  GDK_KEY_Escape* = 0x0000FF1B
-  GDK_KEY_Delete* = 0x0000FFFF
-  GDK_KEY_Multi_key* = 0x0000FF20
-  GDK_KEY_Codeinput* = 0x0000FF37
-  GDK_KEY_SingleCandidate* = 0x0000FF3C
-  GDK_KEY_MultipleCandidate* = 0x0000FF3D
-  GDK_KEY_PreviousCandidate* = 0x0000FF3E
-  GDK_KEY_Kanji* = 0x0000FF21
-  GDK_KEY_Muhenkan* = 0x0000FF22
-  GDK_KEY_Henkan_Mode* = 0x0000FF23
-  GDK_KEY_Henkan* = 0x0000FF23
-  GDK_KEY_Romaji* = 0x0000FF24
-  GDK_KEY_Hiragana* = 0x0000FF25
-  GDK_KEY_Katakana* = 0x0000FF26
-  GDK_KEY_Hiragana_Katakana* = 0x0000FF27
-  GDK_KEY_Zenkaku* = 0x0000FF28
-  GDK_KEY_Hankaku* = 0x0000FF29
-  GDK_KEY_Zenkaku_Hankaku* = 0x0000FF2A
-  GDK_KEY_Touroku* = 0x0000FF2B
-  GDK_KEY_Massyo* = 0x0000FF2C
-  GDK_KEY_Kana_Lock* = 0x0000FF2D
-  GDK_KEY_Kana_Shift* = 0x0000FF2E
-  GDK_KEY_Eisu_Shift* = 0x0000FF2F
-  GDK_KEY_Eisu_toggle* = 0x0000FF30
-  GDK_KEY_Kanji_Bangou* = 0x0000FF37
-  GDK_KEY_Zen_Koho* = 0x0000FF3D
-  GDK_KEY_Mae_Koho* = 0x0000FF3E
-  GDK_KEY_Home* = 0x0000FF50
-  GDK_KEY_Left* = 0x0000FF51
-  GDK_KEY_Up* = 0x0000FF52
-  GDK_KEY_Right* = 0x0000FF53
-  GDK_KEY_Down* = 0x0000FF54
-  GDK_KEY_Prior* = 0x0000FF55
-  GDK_KEY_Page_Up* = 0x0000FF55
-  GDK_KEY_Next* = 0x0000FF56
-  GDK_KEY_Page_Down* = 0x0000FF56
-  GDK_KEY_End* = 0x0000FF57
-  GDK_KEY_Begin* = 0x0000FF58
-  GDK_KEY_Select* = 0x0000FF60
-  GDK_KEY_Print* = 0x0000FF61
-  GDK_KEY_Execute* = 0x0000FF62
-  GDK_KEY_Insert* = 0x0000FF63
-  GDK_KEY_Undo* = 0x0000FF65
-  GDK_KEY_Redo* = 0x0000FF66
-  GDK_KEY_Menu* = 0x0000FF67
-  GDK_KEY_Find* = 0x0000FF68
-  GDK_KEY_Cancel* = 0x0000FF69
-  GDK_KEY_Help* = 0x0000FF6A
-  GDK_KEY_Break* = 0x0000FF6B
-  GDK_KEY_Mode_switch* = 0x0000FF7E
-  GDK_KEY_script_switch* = 0x0000FF7E
-  GDK_KEY_Num_Lock* = 0x0000FF7F
-  GDK_KEY_KP_Space* = 0x0000FF80
-  GDK_KEY_KP_Tab* = 0x0000FF89
-  GDK_KEY_KP_Enter* = 0x0000FF8D
-  GDK_KEY_KP_F1* = 0x0000FF91
-  GDK_KEY_KP_F2* = 0x0000FF92
-  GDK_KEY_KP_F3* = 0x0000FF93
-  GDK_KEY_KP_F4* = 0x0000FF94
-  GDK_KEY_KP_Home* = 0x0000FF95
-  GDK_KEY_KP_Left* = 0x0000FF96
-  GDK_KEY_KP_Up* = 0x0000FF97
-  GDK_KEY_KP_Right* = 0x0000FF98
-  GDK_KEY_KP_Down* = 0x0000FF99
-  GDK_KEY_KP_Prior* = 0x0000FF9A
-  GDK_KEY_KP_Page_Up* = 0x0000FF9A
-  GDK_KEY_KP_Next* = 0x0000FF9B
-  GDK_KEY_KP_Page_Down* = 0x0000FF9B
-  GDK_KEY_KP_End* = 0x0000FF9C
-  GDK_KEY_KP_Begin* = 0x0000FF9D
-  GDK_KEY_KP_Insert* = 0x0000FF9E
-  GDK_KEY_KP_Delete* = 0x0000FF9F
-  GDK_KEY_KP_Equal* = 0x0000FFBD
-  GDK_KEY_KP_Multiply* = 0x0000FFAA
-  GDK_KEY_KP_Add* = 0x0000FFAB
-  GDK_KEY_KP_Separator* = 0x0000FFAC
-  GDK_KEY_KP_Subtract* = 0x0000FFAD
-  GDK_KEY_KP_Decimal* = 0x0000FFAE
-  GDK_KEY_KP_Divide* = 0x0000FFAF
-  GDK_KEY_KP_0* = 0x0000FFB0
-  GDK_KEY_KP_1* = 0x0000FFB1
-  GDK_KEY_KP_2* = 0x0000FFB2
-  GDK_KEY_KP_3* = 0x0000FFB3
-  GDK_KEY_KP_4* = 0x0000FFB4
-  GDK_KEY_KP_5* = 0x0000FFB5
-  GDK_KEY_KP_6* = 0x0000FFB6
-  GDK_KEY_KP_7* = 0x0000FFB7
-  GDK_KEY_KP_8* = 0x0000FFB8
-  GDK_KEY_KP_9* = 0x0000FFB9
-  GDK_KEY_F1* = 0x0000FFBE
-  GDK_KEY_F2* = 0x0000FFBF
-  GDK_KEY_F3* = 0x0000FFC0
-  GDK_KEY_F4* = 0x0000FFC1
-  GDK_KEY_F5* = 0x0000FFC2
-  GDK_KEY_F6* = 0x0000FFC3
-  GDK_KEY_F7* = 0x0000FFC4
-  GDK_KEY_F8* = 0x0000FFC5
-  GDK_KEY_F9* = 0x0000FFC6
-  GDK_KEY_F10* = 0x0000FFC7
-  GDK_KEY_F11* = 0x0000FFC8
-  GDK_KEY_L1* = 0x0000FFC8
-  GDK_KEY_F12* = 0x0000FFC9
-  GDK_KEY_L2* = 0x0000FFC9
-  GDK_KEY_F13* = 0x0000FFCA
-  GDK_KEY_L3* = 0x0000FFCA
-  GDK_KEY_F14* = 0x0000FFCB
-  GDK_KEY_L4* = 0x0000FFCB
-  GDK_KEY_F15* = 0x0000FFCC
-  GDK_KEY_L5* = 0x0000FFCC
-  GDK_KEY_F16* = 0x0000FFCD
-  GDK_KEY_L6* = 0x0000FFCD
-  GDK_KEY_F17* = 0x0000FFCE
-  GDK_KEY_L7* = 0x0000FFCE
-  GDK_KEY_F18* = 0x0000FFCF
-  GDK_KEY_L8* = 0x0000FFCF
-  GDK_KEY_F19* = 0x0000FFD0
-  GDK_KEY_L9* = 0x0000FFD0
-  GDK_KEY_F20* = 0x0000FFD1
-  GDK_KEY_L10* = 0x0000FFD1
-  GDK_KEY_F21* = 0x0000FFD2
-  GDK_KEY_R1* = 0x0000FFD2
-  GDK_KEY_F22* = 0x0000FFD3
-  GDK_KEY_R2* = 0x0000FFD3
-  GDK_KEY_F23* = 0x0000FFD4
-  GDK_KEY_R3* = 0x0000FFD4
-  GDK_KEY_F24* = 0x0000FFD5
-  GDK_KEY_R4* = 0x0000FFD5
-  GDK_KEY_F25* = 0x0000FFD6
-  GDK_KEY_R5* = 0x0000FFD6
-  GDK_KEY_F26* = 0x0000FFD7
-  GDK_KEY_R6* = 0x0000FFD7
-  GDK_KEY_F27* = 0x0000FFD8
-  GDK_KEY_R7* = 0x0000FFD8
-  GDK_KEY_F28* = 0x0000FFD9
-  GDK_KEY_R8* = 0x0000FFD9
-  GDK_KEY_F29* = 0x0000FFDA
-  GDK_KEY_R9* = 0x0000FFDA
-  GDK_KEY_F30* = 0x0000FFDB
-  GDK_KEY_R10* = 0x0000FFDB
-  GDK_KEY_F31* = 0x0000FFDC
-  GDK_KEY_R11* = 0x0000FFDC
-  GDK_KEY_F32* = 0x0000FFDD
-  GDK_KEY_R12* = 0x0000FFDD
-  GDK_KEY_F33* = 0x0000FFDE
-  GDK_KEY_R13* = 0x0000FFDE
-  GDK_KEY_F34* = 0x0000FFDF
-  GDK_KEY_R14* = 0x0000FFDF
-  GDK_KEY_F35* = 0x0000FFE0
-  GDK_KEY_R15* = 0x0000FFE0
-  GDK_KEY_Shift_L* = 0x0000FFE1
-  GDK_KEY_Shift_R* = 0x0000FFE2
-  GDK_KEY_Control_L* = 0x0000FFE3
-  GDK_KEY_Control_R* = 0x0000FFE4
-  GDK_KEY_Caps_Lock* = 0x0000FFE5
-  GDK_KEY_Shift_Lock* = 0x0000FFE6
-  GDK_KEY_Meta_L* = 0x0000FFE7
-  GDK_KEY_Meta_R* = 0x0000FFE8
-  GDK_KEY_Alt_L* = 0x0000FFE9
-  GDK_KEY_Alt_R* = 0x0000FFEA
-  GDK_KEY_Super_L* = 0x0000FFEB
-  GDK_KEY_Super_R* = 0x0000FFEC
-  GDK_KEY_Hyper_L* = 0x0000FFED
-  GDK_KEY_Hyper_R* = 0x0000FFEE
-  GDK_KEY_ISO_Lock* = 0x0000FE01
-  GDK_KEY_ISO_Level2_Latch* = 0x0000FE02
-  GDK_KEY_ISO_Level3_Shift* = 0x0000FE03
-  GDK_KEY_ISO_Level3_Latch* = 0x0000FE04
-  GDK_KEY_ISO_Level3_Lock* = 0x0000FE05
-  GDK_KEY_ISO_Group_Shift* = 0x0000FF7E
-  GDK_KEY_ISO_Group_Latch* = 0x0000FE06
-  GDK_KEY_ISO_Group_Lock* = 0x0000FE07
-  GDK_KEY_ISO_Next_Group* = 0x0000FE08
-  GDK_KEY_ISO_Next_Group_Lock* = 0x0000FE09
-  GDK_KEY_ISO_Prev_Group* = 0x0000FE0A
-  GDK_KEY_ISO_Prev_Group_Lock* = 0x0000FE0B
-  GDK_KEY_ISO_First_Group* = 0x0000FE0C
-  GDK_KEY_ISO_First_Group_Lock* = 0x0000FE0D
-  GDK_KEY_ISO_Last_Group* = 0x0000FE0E
-  GDK_KEY_ISO_Last_Group_Lock* = 0x0000FE0F
-  GDK_KEY_ISO_Left_Tab* = 0x0000FE20
-  GDK_KEY_ISO_Move_Line_Up* = 0x0000FE21
-  GDK_KEY_ISO_Move_Line_Down* = 0x0000FE22
-  GDK_KEY_ISO_Partial_Line_Up* = 0x0000FE23
-  GDK_KEY_ISO_Partial_Line_Down* = 0x0000FE24
-  GDK_KEY_ISO_Partial_Space_Left* = 0x0000FE25
-  GDK_KEY_ISO_Partial_Space_Right* = 0x0000FE26
-  GDK_KEY_ISO_Set_Margin_Left* = 0x0000FE27
-  GDK_KEY_ISO_Set_Margin_Right* = 0x0000FE28
-  GDK_KEY_ISO_Release_Margin_Left* = 0x0000FE29
-  GDK_KEY_ISO_Release_Margin_Right* = 0x0000FE2A
-  GDK_KEY_ISO_Release_Both_Margins* = 0x0000FE2B
-  GDK_KEY_ISO_Fast_Cursor_Left* = 0x0000FE2C
-  GDK_KEY_ISO_Fast_Cursor_Right* = 0x0000FE2D
-  GDK_KEY_ISO_Fast_Cursor_Up* = 0x0000FE2E
-  GDK_KEY_ISO_Fast_Cursor_Down* = 0x0000FE2F
-  GDK_KEY_ISO_Continuous_Underline* = 0x0000FE30
-  GDK_KEY_ISO_Discontinuous_Underline* = 0x0000FE31
-  GDK_KEY_ISO_Emphasize* = 0x0000FE32
-  GDK_KEY_ISO_Center_Object* = 0x0000FE33
-  GDK_KEY_ISO_Enter* = 0x0000FE34
-  GDK_KEY_dead_grave* = 0x0000FE50
-  GDK_KEY_dead_acute* = 0x0000FE51
-  GDK_KEY_dead_circumflex* = 0x0000FE52
-  GDK_KEY_dead_tilde* = 0x0000FE53
-  GDK_KEY_dead_macron* = 0x0000FE54
-  GDK_KEY_dead_breve* = 0x0000FE55
-  GDK_KEY_dead_abovedot* = 0x0000FE56
-  GDK_KEY_dead_diaeresis* = 0x0000FE57
-  GDK_KEY_dead_abovering* = 0x0000FE58
-  GDK_KEY_dead_doubleacute* = 0x0000FE59
-  GDK_KEY_dead_caron* = 0x0000FE5A
-  GDK_KEY_dead_cedilla* = 0x0000FE5B
-  GDK_KEY_dead_ogonek* = 0x0000FE5C
-  GDK_KEY_dead_iota* = 0x0000FE5D
-  GDK_KEY_dead_voiced_sound* = 0x0000FE5E
-  GDK_KEY_dead_semivoiced_sound* = 0x0000FE5F
-  GDK_KEY_dead_belowdot* = 0x0000FE60
-  GDK_KEY_First_Virtual_Screen* = 0x0000FED0
-  GDK_KEY_Prev_Virtual_Screen* = 0x0000FED1
-  GDK_KEY_Next_Virtual_Screen* = 0x0000FED2
-  GDK_KEY_Last_Virtual_Screen* = 0x0000FED4
-  GDK_KEY_Terminate_Server* = 0x0000FED5
-  GDK_KEY_AccessX_Enable* = 0x0000FE70
-  GDK_KEY_AccessX_Feedback_Enable* = 0x0000FE71
-  GDK_KEY_RepeatKeys_Enable* = 0x0000FE72
-  GDK_KEY_SlowKeys_Enable* = 0x0000FE73
-  GDK_KEY_BounceKeys_Enable* = 0x0000FE74
-  GDK_KEY_StickyKeys_Enable* = 0x0000FE75
-  GDK_KEY_MouseKeys_Enable* = 0x0000FE76
-  GDK_KEY_MouseKeys_Accel_Enable* = 0x0000FE77
-  GDK_KEY_Overlay1_Enable* = 0x0000FE78
-  GDK_KEY_Overlay2_Enable* = 0x0000FE79
-  GDK_KEY_AudibleBell_Enable* = 0x0000FE7A
-  GDK_KEY_Pointer_Left* = 0x0000FEE0
-  GDK_KEY_Pointer_Right* = 0x0000FEE1
-  GDK_KEY_Pointer_Up* = 0x0000FEE2
-  GDK_KEY_Pointer_Down* = 0x0000FEE3
-  GDK_KEY_Pointer_UpLeft* = 0x0000FEE4
-  GDK_KEY_Pointer_UpRight* = 0x0000FEE5
-  GDK_KEY_Pointer_DownLeft* = 0x0000FEE6
-  GDK_KEY_Pointer_DownRight* = 0x0000FEE7
-  GDK_KEY_Pointer_Button_Dflt* = 0x0000FEE8
-  GDK_KEY_Pointer_Button1* = 0x0000FEE9
-  GDK_KEY_Pointer_Button2* = 0x0000FEEA
-  GDK_KEY_Pointer_Button3* = 0x0000FEEB
-  GDK_KEY_Pointer_Button4* = 0x0000FEEC
-  GDK_KEY_Pointer_Button5* = 0x0000FEED
-  GDK_KEY_Pointer_DblClick_Dflt* = 0x0000FEEE
-  GDK_KEY_Pointer_DblClick1* = 0x0000FEEF
-  GDK_KEY_Pointer_DblClick2* = 0x0000FEF0
-  GDK_KEY_Pointer_DblClick3* = 0x0000FEF1
-  GDK_KEY_Pointer_DblClick4* = 0x0000FEF2
-  GDK_KEY_Pointer_DblClick5* = 0x0000FEF3
-  GDK_KEY_Pointer_Drag_Dflt* = 0x0000FEF4
-  GDK_KEY_Pointer_Drag1* = 0x0000FEF5
-  GDK_KEY_Pointer_Drag2* = 0x0000FEF6
-  GDK_KEY_Pointer_Drag3* = 0x0000FEF7
-  GDK_KEY_Pointer_Drag4* = 0x0000FEF8
-  GDK_KEY_Pointer_Drag5* = 0x0000FEFD
-  GDK_KEY_Pointer_EnableKeys* = 0x0000FEF9
-  GDK_KEY_Pointer_Accelerate* = 0x0000FEFA
-  GDK_KEY_Pointer_DfltBtnNext* = 0x0000FEFB
-  GDK_KEY_Pointer_DfltBtnPrev* = 0x0000FEFC
-  GDK_KEY_3270_Duplicate* = 0x0000FD01
-  GDK_KEY_3270_FieldMark* = 0x0000FD02
-  GDK_KEY_3270_Right2* = 0x0000FD03
-  GDK_KEY_3270_Left2* = 0x0000FD04
-  GDK_KEY_3270_BackTab* = 0x0000FD05
-  GDK_KEY_3270_EraseEOF* = 0x0000FD06
-  GDK_KEY_3270_EraseInput* = 0x0000FD07
-  GDK_KEY_3270_Reset* = 0x0000FD08
-  GDK_KEY_3270_Quit* = 0x0000FD09
-  GDK_KEY_3270_PA1* = 0x0000FD0A
-  GDK_KEY_3270_PA2* = 0x0000FD0B
-  GDK_KEY_3270_PA3* = 0x0000FD0C
-  GDK_KEY_3270_Test* = 0x0000FD0D
-  GDK_KEY_3270_Attn* = 0x0000FD0E
-  GDK_KEY_3270_CursorBlink* = 0x0000FD0F
-  GDK_KEY_3270_AltCursor* = 0x0000FD10
-  GDK_KEY_3270_KeyClick* = 0x0000FD11
-  GDK_KEY_3270_Jump* = 0x0000FD12
-  GDK_KEY_3270_Ident* = 0x0000FD13
-  GDK_KEY_3270_Rule* = 0x0000FD14
-  GDK_KEY_3270_Copy* = 0x0000FD15
-  GDK_KEY_3270_Play* = 0x0000FD16
-  GDK_KEY_3270_Setup* = 0x0000FD17
-  GDK_KEY_3270_Record* = 0x0000FD18
-  GDK_KEY_3270_ChangeScreen* = 0x0000FD19
-  GDK_KEY_3270_DeleteWord* = 0x0000FD1A
-  GDK_KEY_3270_ExSelect* = 0x0000FD1B
-  GDK_KEY_3270_CursorSelect* = 0x0000FD1C
-  GDK_KEY_3270_PrintScreen* = 0x0000FD1D
-  GDK_KEY_3270_Enter* = 0x0000FD1E
-  GDK_KEY_space* = 0x00000020
-  GDK_KEY_exclam* = 0x00000021
-  GDK_KEY_quotedbl* = 0x00000022
-  GDK_KEY_numbersign* = 0x00000023
-  GDK_KEY_dollar* = 0x00000024
-  GDK_KEY_percent* = 0x00000025
-  GDK_KEY_ampersand* = 0x00000026
-  GDK_KEY_apostrophe* = 0x00000027
-  GDK_KEY_quoteright* = 0x00000027
-  GDK_KEY_parenleft* = 0x00000028
-  GDK_KEY_parenright* = 0x00000029
-  GDK_KEY_asterisk* = 0x0000002A
-  GDK_KEY_plus* = 0x0000002B
-  GDK_KEY_comma* = 0x0000002C
-  GDK_KEY_minus* = 0x0000002D
-  GDK_KEY_period* = 0x0000002E
-  GDK_KEY_slash* = 0x0000002F
-  GDK_KEY_0* = 0x00000030
-  GDK_KEY_1* = 0x00000031
-  GDK_KEY_2* = 0x00000032
-  GDK_KEY_3* = 0x00000033
-  GDK_KEY_4* = 0x00000034
-  GDK_KEY_5* = 0x00000035
-  GDK_KEY_6* = 0x00000036
-  GDK_KEY_7* = 0x00000037
-  GDK_KEY_8* = 0x00000038
-  GDK_KEY_9* = 0x00000039
-  GDK_KEY_colon* = 0x0000003A
-  GDK_KEY_semicolon* = 0x0000003B
-  GDK_KEY_less* = 0x0000003C
-  GDK_KEY_equal* = 0x0000003D
-  GDK_KEY_greater* = 0x0000003E
-  GDK_KEY_question* = 0x0000003F
-  GDK_KEY_at* = 0x00000040
-  GDK_KEY_CAPITAL_A* = 0x00000041
-  GDK_KEY_CAPITAL_B* = 0x00000042
-  GDK_KEY_CAPITAL_C* = 0x00000043
-  GDK_KEY_CAPITAL_D* = 0x00000044
-  GDK_KEY_CAPITAL_E* = 0x00000045
-  GDK_KEY_CAPITAL_F* = 0x00000046
-  GDK_KEY_CAPITAL_G* = 0x00000047
-  GDK_KEY_CAPITAL_H* = 0x00000048
-  GDK_KEY_CAPITAL_I* = 0x00000049
-  GDK_KEY_CAPITAL_J* = 0x0000004A
-  GDK_KEY_CAPITAL_K* = 0x0000004B
-  GDK_KEY_CAPITAL_L* = 0x0000004C
-  GDK_KEY_CAPITAL_M* = 0x0000004D
-  GDK_KEY_CAPITAL_N* = 0x0000004E
-  GDK_KEY_CAPITAL_O* = 0x0000004F
-  GDK_KEY_CAPITAL_P* = 0x00000050
-  GDK_KEY_CAPITAL_Q* = 0x00000051
-  GDK_KEY_CAPITAL_R* = 0x00000052
-  GDK_KEY_CAPITAL_S* = 0x00000053
-  GDK_KEY_CAPITAL_T* = 0x00000054
-  GDK_KEY_CAPITAL_U* = 0x00000055
-  GDK_KEY_CAPITAL_V* = 0x00000056
-  GDK_KEY_CAPITAL_W* = 0x00000057
-  GDK_KEY_CAPITAL_X* = 0x00000058
-  GDK_KEY_CAPITAL_Y* = 0x00000059
-  GDK_KEY_CAPITAL_Z* = 0x0000005A
-  GDK_KEY_bracketleft* = 0x0000005B
-  GDK_KEY_backslash* = 0x0000005C
-  GDK_KEY_bracketright* = 0x0000005D
-  GDK_KEY_asciicircum* = 0x0000005E
-  GDK_KEY_underscore* = 0x0000005F
-  GDK_KEY_grave* = 0x00000060
-  GDK_KEY_quoteleft* = 0x00000060
-  GDK_KEY_a* = 0x00000061
-  GDK_KEY_b* = 0x00000062
-  GDK_KEY_c* = 0x00000063
-  GDK_KEY_d* = 0x00000064
-  GDK_KEY_e* = 0x00000065
-  GDK_KEY_f* = 0x00000066
-  GDK_KEY_g* = 0x00000067
-  GDK_KEY_h* = 0x00000068
-  GDK_KEY_i* = 0x00000069
-  GDK_KEY_j* = 0x0000006A
-  GDK_KEY_k* = 0x0000006B
-  GDK_KEY_l* = 0x0000006C
-  GDK_KEY_m* = 0x0000006D
-  GDK_KEY_n* = 0x0000006E
-  GDK_KEY_o* = 0x0000006F
-  GDK_KEY_p* = 0x00000070
-  GDK_KEY_q* = 0x00000071
-  GDK_KEY_r* = 0x00000072
-  GDK_KEY_s* = 0x00000073
-  GDK_KEY_t* = 0x00000074
-  GDK_KEY_u* = 0x00000075
-  GDK_KEY_v* = 0x00000076
-  GDK_KEY_w* = 0x00000077
-  GDK_KEY_x* = 0x00000078
-  GDK_KEY_y* = 0x00000079
-  GDK_KEY_z* = 0x0000007A
-  GDK_KEY_braceleft* = 0x0000007B
-  GDK_KEY_bar* = 0x0000007C
-  GDK_KEY_braceright* = 0x0000007D
-  GDK_KEY_asciitilde* = 0x0000007E
-  GDK_KEY_nobreakspace* = 0x000000A0
-  GDK_KEY_exclamdown* = 0x000000A1
-  GDK_KEY_cent* = 0x000000A2
-  GDK_KEY_sterling* = 0x000000A3
-  GDK_KEY_currency* = 0x000000A4
-  GDK_KEY_yen* = 0x000000A5
-  GDK_KEY_brokenbar* = 0x000000A6
-  GDK_KEY_section* = 0x000000A7
-  GDK_KEY_diaeresis* = 0x000000A8
-  GDK_KEY_copyright* = 0x000000A9
-  GDK_KEY_ordfeminine* = 0x000000AA
-  GDK_KEY_guillemotleft* = 0x000000AB
-  GDK_KEY_notsign* = 0x000000AC
-  GDK_KEY_hyphen* = 0x000000AD
-  GDK_KEY_registered* = 0x000000AE
-  GDK_KEY_macron* = 0x000000AF
-  GDK_KEY_degree* = 0x000000B0
-  GDK_KEY_plusminus* = 0x000000B1
-  GDK_KEY_twosuperior* = 0x000000B2
-  GDK_KEY_threesuperior* = 0x000000B3
-  GDK_KEY_acute* = 0x000000B4
-  GDK_KEY_mu* = 0x000000B5
-  GDK_KEY_paragraph* = 0x000000B6
-  GDK_KEY_periodcentered* = 0x000000B7
-  GDK_KEY_cedilla* = 0x000000B8
-  GDK_KEY_onesuperior* = 0x000000B9
-  GDK_KEY_masculine* = 0x000000BA
-  GDK_KEY_guillemotright* = 0x000000BB
-  GDK_KEY_onequarter* = 0x000000BC
-  GDK_KEY_onehalf* = 0x000000BD
-  GDK_KEY_threequarters* = 0x000000BE
-  GDK_KEY_questiondown* = 0x000000BF
-  GDK_KEY_CAPITAL_Agrave* = 0x000000C0
-  GDK_KEY_CAPITAL_Aacute* = 0x000000C1
-  GDK_KEY_CAPITAL_Acircumflex* = 0x000000C2
-  GDK_KEY_CAPITAL_Atilde* = 0x000000C3
-  GDK_KEY_CAPITAL_Adiaeresis* = 0x000000C4
-  GDK_KEY_CAPITAL_Aring* = 0x000000C5
-  GDK_KEY_CAPITAL_AE* = 0x000000C6
-  GDK_KEY_CAPITAL_Ccedilla* = 0x000000C7
-  GDK_KEY_CAPITAL_Egrave* = 0x000000C8
-  GDK_KEY_CAPITAL_Eacute* = 0x000000C9
-  GDK_KEY_CAPITAL_Ecircumflex* = 0x000000CA
-  GDK_KEY_CAPITAL_Ediaeresis* = 0x000000CB
-  GDK_KEY_CAPITAL_Igrave* = 0x000000CC
-  GDK_KEY_CAPITAL_Iacute* = 0x000000CD
-  GDK_KEY_CAPITAL_Icircumflex* = 0x000000CE
-  GDK_KEY_CAPITAL_Idiaeresis* = 0x000000CF
-  GDK_KEY_CAPITAL_ETH* = 0x000000D0
-  GDK_KEY_CAPITAL_Ntilde* = 0x000000D1
-  GDK_KEY_CAPITAL_Ograve* = 0x000000D2
-  GDK_KEY_CAPITAL_Oacute* = 0x000000D3
-  GDK_KEY_CAPITAL_Ocircumflex* = 0x000000D4
-  GDK_KEY_CAPITAL_Otilde* = 0x000000D5
-  GDK_KEY_CAPITAL_Odiaeresis* = 0x000000D6
-  GDK_KEY_multiply* = 0x000000D7
-  GDK_KEY_Ooblique* = 0x000000D8
-  GDK_KEY_CAPITAL_Ugrave* = 0x000000D9
-  GDK_KEY_CAPITAL_Uacute* = 0x000000DA
-  GDK_KEY_CAPITAL_Ucircumflex* = 0x000000DB
-  GDK_KEY_CAPITAL_Udiaeresis* = 0x000000DC
-  GDK_KEY_CAPITAL_Yacute* = 0x000000DD
-  GDK_KEY_CAPITAL_THORN* = 0x000000DE
-  GDK_KEY_ssharp* = 0x000000DF
-  GDK_KEY_agrave* = 0x000000E0
-  GDK_KEY_aacute* = 0x000000E1
-  GDK_KEY_acircumflex* = 0x000000E2
-  GDK_KEY_atilde* = 0x000000E3
-  GDK_KEY_adiaeresis* = 0x000000E4
-  GDK_KEY_aring* = 0x000000E5
-  GDK_KEY_ae* = 0x000000E6
-  GDK_KEY_ccedilla* = 0x000000E7
-  GDK_KEY_egrave* = 0x000000E8
-  GDK_KEY_eacute* = 0x000000E9
-  GDK_KEY_ecircumflex* = 0x000000EA
-  GDK_KEY_ediaeresis* = 0x000000EB
-  GDK_KEY_igrave* = 0x000000EC
-  GDK_KEY_iacute* = 0x000000ED
-  GDK_KEY_icircumflex* = 0x000000EE
-  GDK_KEY_idiaeresis* = 0x000000EF
-  GDK_KEY_eth* = 0x000000F0
-  GDK_KEY_ntilde* = 0x000000F1
-  GDK_KEY_ograve* = 0x000000F2
-  GDK_KEY_oacute* = 0x000000F3
-  GDK_KEY_ocircumflex* = 0x000000F4
-  GDK_KEY_otilde* = 0x000000F5
-  GDK_KEY_odiaeresis* = 0x000000F6
-  GDK_KEY_division* = 0x000000F7
-  GDK_KEY_oslash* = 0x000000F8
-  GDK_KEY_ugrave* = 0x000000F9
-  GDK_KEY_uacute* = 0x000000FA
-  GDK_KEY_ucircumflex* = 0x000000FB
-  GDK_KEY_udiaeresis* = 0x000000FC
-  GDK_KEY_yacute* = 0x000000FD
-  GDK_KEY_thorn* = 0x000000FE
-  GDK_KEY_ydiaeresis* = 0x000000FF
-  GDK_KEY_CAPITAL_Aogonek* = 0x000001A1
-  GDK_KEY_breve* = 0x000001A2
-  GDK_KEY_CAPITAL_Lstroke* = 0x000001A3
-  GDK_KEY_CAPITAL_Lcaron* = 0x000001A5
-  GDK_KEY_CAPITAL_Sacute* = 0x000001A6
-  GDK_KEY_CAPITAL_Scaron* = 0x000001A9
-  GDK_KEY_CAPITAL_Scedilla* = 0x000001AA
-  GDK_KEY_CAPITAL_Tcaron* = 0x000001AB
-  GDK_KEY_CAPITAL_Zacute* = 0x000001AC
-  GDK_KEY_CAPITAL_Zcaron* = 0x000001AE
-  GDK_KEY_CAPITAL_Zabovedot* = 0x000001AF
-  GDK_KEY_aogonek* = 0x000001B1
-  GDK_KEY_ogonek* = 0x000001B2
-  GDK_KEY_lstroke* = 0x000001B3
-  GDK_KEY_lcaron* = 0x000001B5
-  GDK_KEY_sacute* = 0x000001B6
-  GDK_KEY_caron* = 0x000001B7
-  GDK_KEY_scaron* = 0x000001B9
-  GDK_KEY_scedilla* = 0x000001BA
-  GDK_KEY_tcaron* = 0x000001BB
-  GDK_KEY_zacute* = 0x000001BC
-  GDK_KEY_doubleacute* = 0x000001BD
-  GDK_KEY_zcaron* = 0x000001BE
-  GDK_KEY_zabovedot* = 0x000001BF
-  GDK_KEY_CAPITAL_Racute* = 0x000001C0
-  GDK_KEY_CAPITAL_Abreve* = 0x000001C3
-  GDK_KEY_CAPITAL_Lacute* = 0x000001C5
-  GDK_KEY_CAPITAL_Cacute* = 0x000001C6
-  GDK_KEY_CAPITAL_Ccaron* = 0x000001C8
-  GDK_KEY_CAPITAL_Eogonek* = 0x000001CA
-  GDK_KEY_CAPITAL_Ecaron* = 0x000001CC
-  GDK_KEY_CAPITAL_Dcaron* = 0x000001CF
-  GDK_KEY_CAPITAL_Dstroke* = 0x000001D0
-  GDK_KEY_CAPITAL_Nacute* = 0x000001D1
-  GDK_KEY_CAPITAL_Ncaron* = 0x000001D2
-  GDK_KEY_CAPITAL_Odoubleacute* = 0x000001D5
-  GDK_KEY_CAPITAL_Rcaron* = 0x000001D8
-  GDK_KEY_CAPITAL_Uring* = 0x000001D9
-  GDK_KEY_CAPITAL_Udoubleacute* = 0x000001DB
-  GDK_KEY_CAPITAL_Tcedilla* = 0x000001DE
-  GDK_KEY_racute* = 0x000001E0
-  GDK_KEY_abreve* = 0x000001E3
-  GDK_KEY_lacute* = 0x000001E5
-  GDK_KEY_cacute* = 0x000001E6
-  GDK_KEY_ccaron* = 0x000001E8
-  GDK_KEY_eogonek* = 0x000001EA
-  GDK_KEY_ecaron* = 0x000001EC
-  GDK_KEY_dcaron* = 0x000001EF
-  GDK_KEY_dstroke* = 0x000001F0
-  GDK_KEY_nacute* = 0x000001F1
-  GDK_KEY_ncaron* = 0x000001F2
-  GDK_KEY_odoubleacute* = 0x000001F5
-  GDK_KEY_udoubleacute* = 0x000001FB
-  GDK_KEY_rcaron* = 0x000001F8
-  GDK_KEY_uring* = 0x000001F9
-  GDK_KEY_tcedilla* = 0x000001FE
-  GDK_KEY_abovedot* = 0x000001FF
-  GDK_KEY_CAPITAL_Hstroke* = 0x000002A1
-  GDK_KEY_CAPITAL_Hcircumflex* = 0x000002A6
-  GDK_KEY_CAPITAL_Iabovedot* = 0x000002A9
-  GDK_KEY_CAPITAL_Gbreve* = 0x000002AB
-  GDK_KEY_CAPITAL_Jcircumflex* = 0x000002AC
-  GDK_KEY_hstroke* = 0x000002B1
-  GDK_KEY_hcircumflex* = 0x000002B6
-  GDK_KEY_idotless* = 0x000002B9
-  GDK_KEY_gbreve* = 0x000002BB
-  GDK_KEY_jcircumflex* = 0x000002BC
-  GDK_KEY_CAPITAL_Cabovedot* = 0x000002C5
-  GDK_KEY_CAPITAL_Ccircumflex* = 0x000002C6
-  GDK_KEY_CAPITAL_Gabovedot* = 0x000002D5
-  GDK_KEY_CAPITAL_Gcircumflex* = 0x000002D8
-  GDK_KEY_CAPITAL_Ubreve* = 0x000002DD
-  GDK_KEY_CAPITAL_Scircumflex* = 0x000002DE
-  GDK_KEY_cabovedot* = 0x000002E5
-  GDK_KEY_ccircumflex* = 0x000002E6
-  GDK_KEY_gabovedot* = 0x000002F5
-  GDK_KEY_gcircumflex* = 0x000002F8
-  GDK_KEY_ubreve* = 0x000002FD
-  GDK_KEY_scircumflex* = 0x000002FE
-  GDK_KEY_kra* = 0x000003A2
-  GDK_KEY_kappa* = 0x000003A2
-  GDK_KEY_CAPITAL_Rcedilla* = 0x000003A3
-  GDK_KEY_CAPITAL_Itilde* = 0x000003A5
-  GDK_KEY_CAPITAL_Lcedilla* = 0x000003A6
-  GDK_KEY_CAPITAL_Emacron* = 0x000003AA
-  GDK_KEY_CAPITAL_Gcedilla* = 0x000003AB
-  GDK_KEY_CAPITAL_Tslash* = 0x000003AC
-  GDK_KEY_rcedilla* = 0x000003B3
-  GDK_KEY_itilde* = 0x000003B5
-  GDK_KEY_lcedilla* = 0x000003B6
-  GDK_KEY_emacron* = 0x000003BA
-  GDK_KEY_gcedilla* = 0x000003BB
-  GDK_KEY_tslash* = 0x000003BC
-  GDK_KEY_CAPITAL_ENG* = 0x000003BD
-  GDK_KEY_eng* = 0x000003BF
-  GDK_KEY_CAPITAL_Amacron* = 0x000003C0
-  GDK_KEY_CAPITAL_Iogonek* = 0x000003C7
-  GDK_KEY_CAPITAL_Eabovedot* = 0x000003CC
-  GDK_KEY_CAPITAL_Imacron* = 0x000003CF
-  GDK_KEY_CAPITAL_Ncedilla* = 0x000003D1
-  GDK_KEY_CAPITAL_Omacron* = 0x000003D2
-  GDK_KEY_CAPITAL_Kcedilla* = 0x000003D3
-  GDK_KEY_CAPITAL_Uogonek* = 0x000003D9
-  GDK_KEY_CAPITAL_Utilde* = 0x000003DD
-  GDK_KEY_CAPITAL_Umacron* = 0x000003DE
-  GDK_KEY_amacron* = 0x000003E0
-  GDK_KEY_iogonek* = 0x000003E7
-  GDK_KEY_eabovedot* = 0x000003EC
-  GDK_KEY_imacron* = 0x000003EF
-  GDK_KEY_ncedilla* = 0x000003F1
-  GDK_KEY_omacron* = 0x000003F2
-  GDK_KEY_kcedilla* = 0x000003F3
-  GDK_KEY_uogonek* = 0x000003F9
-  GDK_KEY_utilde* = 0x000003FD
-  GDK_KEY_umacron* = 0x000003FE
-  GDK_KEY_CAPITAL_OE* = 0x000013BC
-  GDK_KEY_oe* = 0x000013BD
-  GDK_KEY_CAPITAL_Ydiaeresis* = 0x000013BE
-  GDK_KEY_overline* = 0x0000047E
-  GDK_KEY_kana_fullstop* = 0x000004A1
-  GDK_KEY_kana_openingbracket* = 0x000004A2
-  GDK_KEY_kana_closingbracket* = 0x000004A3
-  GDK_KEY_kana_comma* = 0x000004A4
-  GDK_KEY_kana_conjunctive* = 0x000004A5
-  GDK_KEY_kana_middledot* = 0x000004A5
-  GDK_KEY_kana_WO* = 0x000004A6
-  GDK_KEY_kana_a* = 0x000004A7
-  GDK_KEY_kana_i* = 0x000004A8
-  GDK_KEY_kana_u* = 0x000004A9
-  GDK_KEY_kana_e* = 0x000004AA
-  GDK_KEY_kana_o* = 0x000004AB
-  GDK_KEY_kana_ya* = 0x000004AC
-  GDK_KEY_kana_yu* = 0x000004AD
-  GDK_KEY_kana_yo* = 0x000004AE
-  GDK_KEY_kana_tsu* = 0x000004AF
-  GDK_KEY_kana_tu* = 0x000004AF
-  GDK_KEY_prolongedsound* = 0x000004B0
-  GDK_KEY_kana_CAPITAL_A* = 0x000004B1
-  GDK_KEY_kana_CAPITAL_I* = 0x000004B2
-  GDK_KEY_kana_CAPITAL_U* = 0x000004B3
-  GDK_KEY_kana_CAPITAL_E* = 0x000004B4
-  GDK_KEY_kana_CAPITAL_O* = 0x000004B5
-  GDK_KEY_kana_KA* = 0x000004B6
-  GDK_KEY_kana_KI* = 0x000004B7
-  GDK_KEY_kana_KU* = 0x000004B8
-  GDK_KEY_kana_KE* = 0x000004B9
-  GDK_KEY_kana_KO* = 0x000004BA
-  GDK_KEY_kana_SA* = 0x000004BB
-  GDK_KEY_kana_SHI* = 0x000004BC
-  GDK_KEY_kana_SU* = 0x000004BD
-  GDK_KEY_kana_SE* = 0x000004BE
-  GDK_KEY_kana_SO* = 0x000004BF
-  GDK_KEY_kana_TA* = 0x000004C0
-  GDK_KEY_kana_CHI* = 0x000004C1
-  GDK_KEY_kana_TI* = 0x000004C1
-  GDK_KEY_kana_CAPITAL_TSU* = 0x000004C2
-  GDK_KEY_kana_CAPITAL_TU* = 0x000004C2
-  GDK_KEY_kana_TE* = 0x000004C3
-  GDK_KEY_kana_TO* = 0x000004C4
-  GDK_KEY_kana_NA* = 0x000004C5
-  GDK_KEY_kana_NI* = 0x000004C6
-  GDK_KEY_kana_NU* = 0x000004C7
-  GDK_KEY_kana_NE* = 0x000004C8
-  GDK_KEY_kana_NO* = 0x000004C9
-  GDK_KEY_kana_HA* = 0x000004CA
-  GDK_KEY_kana_HI* = 0x000004CB
-  GDK_KEY_kana_FU* = 0x000004CC
-  GDK_KEY_kana_HU* = 0x000004CC
-  GDK_KEY_kana_HE* = 0x000004CD
-  GDK_KEY_kana_HO* = 0x000004CE
-  GDK_KEY_kana_MA* = 0x000004CF
-  GDK_KEY_kana_MI* = 0x000004D0
-  GDK_KEY_kana_MU* = 0x000004D1
-  GDK_KEY_kana_ME* = 0x000004D2
-  GDK_KEY_kana_MO* = 0x000004D3
-  GDK_KEY_kana_CAPITAL_YA* = 0x000004D4
-  GDK_KEY_kana_CAPITAL_YU* = 0x000004D5
-  GDK_KEY_kana_CAPITAL_YO* = 0x000004D6
-  GDK_KEY_kana_RA* = 0x000004D7
-  GDK_KEY_kana_RI* = 0x000004D8
-  GDK_KEY_kana_RU* = 0x000004D9
-  GDK_KEY_kana_RE* = 0x000004DA
-  GDK_KEY_kana_RO* = 0x000004DB
-  GDK_KEY_kana_WA* = 0x000004DC
-  GDK_KEY_kana_N* = 0x000004DD
-  GDK_KEY_voicedsound* = 0x000004DE
-  GDK_KEY_semivoicedsound* = 0x000004DF
-  GDK_KEY_kana_switch* = 0x0000FF7E
-  GDK_KEY_Arabic_comma* = 0x000005AC
-  GDK_KEY_Arabic_semicolon* = 0x000005BB
-  GDK_KEY_Arabic_question_mark* = 0x000005BF
-  GDK_KEY_Arabic_hamza* = 0x000005C1
-  GDK_KEY_Arabic_maddaonalef* = 0x000005C2
-  GDK_KEY_Arabic_hamzaonalef* = 0x000005C3
-  GDK_KEY_Arabic_hamzaonwaw* = 0x000005C4
-  GDK_KEY_Arabic_hamzaunderalef* = 0x000005C5
-  GDK_KEY_Arabic_hamzaonyeh* = 0x000005C6
-  GDK_KEY_Arabic_alef* = 0x000005C7
-  GDK_KEY_Arabic_beh* = 0x000005C8
-  GDK_KEY_Arabic_tehmarbuta* = 0x000005C9
-  GDK_KEY_Arabic_teh* = 0x000005CA
-  GDK_KEY_Arabic_theh* = 0x000005CB
-  GDK_KEY_Arabic_jeem* = 0x000005CC
-  GDK_KEY_Arabic_hah* = 0x000005CD
-  GDK_KEY_Arabic_khah* = 0x000005CE
-  GDK_KEY_Arabic_dal* = 0x000005CF
-  GDK_KEY_Arabic_thal* = 0x000005D0
-  GDK_KEY_Arabic_ra* = 0x000005D1
-  GDK_KEY_Arabic_zain* = 0x000005D2
-  GDK_KEY_Arabic_seen* = 0x000005D3
-  GDK_KEY_Arabic_sheen* = 0x000005D4
-  GDK_KEY_Arabic_sad* = 0x000005D5
-  GDK_KEY_Arabic_dad* = 0x000005D6
-  GDK_KEY_Arabic_tah* = 0x000005D7
-  GDK_KEY_Arabic_zah* = 0x000005D8
-  GDK_KEY_Arabic_ain* = 0x000005D9
-  GDK_KEY_Arabic_ghain* = 0x000005DA
-  GDK_KEY_Arabic_tatweel* = 0x000005E0
-  GDK_KEY_Arabic_feh* = 0x000005E1
-  GDK_KEY_Arabic_qaf* = 0x000005E2
-  GDK_KEY_Arabic_kaf* = 0x000005E3
-  GDK_KEY_Arabic_lam* = 0x000005E4
-  GDK_KEY_Arabic_meem* = 0x000005E5
-  GDK_KEY_Arabic_noon* = 0x000005E6
-  GDK_KEY_Arabic_ha* = 0x000005E7
-  GDK_KEY_Arabic_heh* = 0x000005E7
-  GDK_KEY_Arabic_waw* = 0x000005E8
-  GDK_KEY_Arabic_alefmaksura* = 0x000005E9
-  GDK_KEY_Arabic_yeh* = 0x000005EA
-  GDK_KEY_Arabic_fathatan* = 0x000005EB
-  GDK_KEY_Arabic_dammatan* = 0x000005EC
-  GDK_KEY_Arabic_kasratan* = 0x000005ED
-  GDK_KEY_Arabic_fatha* = 0x000005EE
-  GDK_KEY_Arabic_damma* = 0x000005EF
-  GDK_KEY_Arabic_kasra* = 0x000005F0
-  GDK_KEY_Arabic_shadda* = 0x000005F1
-  GDK_KEY_Arabic_sukun* = 0x000005F2
-  GDK_KEY_Arabic_switch* = 0x0000FF7E
-  GDK_KEY_Serbian_dje* = 0x000006A1
-  GDK_KEY_Macedonia_gje* = 0x000006A2
-  GDK_KEY_Cyrillic_io* = 0x000006A3
-  GDK_KEY_Ukrainian_ie* = 0x000006A4
-  GDK_KEY_Ukranian_je* = 0x000006A4
-  GDK_KEY_Macedonia_dse* = 0x000006A5
-  GDK_KEY_Ukrainian_i* = 0x000006A6
-  GDK_KEY_Ukranian_i* = 0x000006A6
-  GDK_KEY_Ukrainian_yi* = 0x000006A7
-  GDK_KEY_Ukranian_yi* = 0x000006A7
-  GDK_KEY_Cyrillic_je* = 0x000006A8
-  GDK_KEY_Serbian_je* = 0x000006A8
-  GDK_KEY_Cyrillic_lje* = 0x000006A9
-  GDK_KEY_Serbian_lje* = 0x000006A9
-  GDK_KEY_Cyrillic_nje* = 0x000006AA
-  GDK_KEY_Serbian_nje* = 0x000006AA
-  GDK_KEY_Serbian_tshe* = 0x000006AB
-  GDK_KEY_Macedonia_kje* = 0x000006AC
-  GDK_KEY_Byelorussian_shortu* = 0x000006AE
-  GDK_KEY_Cyrillic_dzhe* = 0x000006AF
-  GDK_KEY_Serbian_dze* = 0x000006AF
-  GDK_KEY_numerosign* = 0x000006B0
-  GDK_KEY_Serbian_CAPITAL_DJE* = 0x000006B1
-  GDK_KEY_Macedonia_CAPITAL_GJE* = 0x000006B2
-  GDK_KEY_Cyrillic_CAPITAL_IO* = 0x000006B3
-  GDK_KEY_Ukrainian_CAPITAL_IE* = 0x000006B4
-  GDK_KEY_Ukranian_CAPITAL_JE* = 0x000006B4
-  GDK_KEY_Macedonia_CAPITAL_DSE* = 0x000006B5
-  GDK_KEY_Ukrainian_CAPITAL_I* = 0x000006B6
-  GDK_KEY_Ukranian_CAPITAL_I* = 0x000006B6
-  GDK_KEY_Ukrainian_CAPITAL_YI* = 0x000006B7
-  GDK_KEY_Ukranian_CAPITAL_YI* = 0x000006B7
-  GDK_KEY_Cyrillic_CAPITAL_JE* = 0x000006B8
-  GDK_KEY_Serbian_CAPITAL_JE* = 0x000006B8
-  GDK_KEY_Cyrillic_CAPITAL_LJE* = 0x000006B9
-  GDK_KEY_Serbian_CAPITAL_LJE* = 0x000006B9
-  GDK_KEY_Cyrillic_CAPITAL_NJE* = 0x000006BA
-  GDK_KEY_Serbian_CAPITAL_NJE* = 0x000006BA
-  GDK_KEY_Serbian_CAPITAL_TSHE* = 0x000006BB
-  GDK_KEY_Macedonia_CAPITAL_KJE* = 0x000006BC
-  GDK_KEY_Byelorussian_CAPITAL_SHORTU* = 0x000006BE
-  GDK_KEY_Cyrillic_CAPITAL_DZHE* = 0x000006BF
-  GDK_KEY_Serbian_CAPITAL_DZE* = 0x000006BF
-  GDK_KEY_Cyrillic_yu* = 0x000006C0
-  GDK_KEY_Cyrillic_a* = 0x000006C1
-  GDK_KEY_Cyrillic_be* = 0x000006C2
-  GDK_KEY_Cyrillic_tse* = 0x000006C3
-  GDK_KEY_Cyrillic_de* = 0x000006C4
-  GDK_KEY_Cyrillic_ie* = 0x000006C5
-  GDK_KEY_Cyrillic_ef* = 0x000006C6
-  GDK_KEY_Cyrillic_ghe* = 0x000006C7
-  GDK_KEY_Cyrillic_ha* = 0x000006C8
-  GDK_KEY_Cyrillic_i* = 0x000006C9
-  GDK_KEY_Cyrillic_shorti* = 0x000006CA
-  GDK_KEY_Cyrillic_ka* = 0x000006CB
-  GDK_KEY_Cyrillic_el* = 0x000006CC
-  GDK_KEY_Cyrillic_em* = 0x000006CD
-  GDK_KEY_Cyrillic_en* = 0x000006CE
-  GDK_KEY_Cyrillic_o* = 0x000006CF
-  GDK_KEY_Cyrillic_pe* = 0x000006D0
-  GDK_KEY_Cyrillic_ya* = 0x000006D1
-  GDK_KEY_Cyrillic_er* = 0x000006D2
-  GDK_KEY_Cyrillic_es* = 0x000006D3
-  GDK_KEY_Cyrillic_te* = 0x000006D4
-  GDK_KEY_Cyrillic_u* = 0x000006D5
-  GDK_KEY_Cyrillic_zhe* = 0x000006D6
-  GDK_KEY_Cyrillic_ve* = 0x000006D7
-  GDK_KEY_Cyrillic_softsign* = 0x000006D8
-  GDK_KEY_Cyrillic_yeru* = 0x000006D9
-  GDK_KEY_Cyrillic_ze* = 0x000006DA
-  GDK_KEY_Cyrillic_sha* = 0x000006DB
-  GDK_KEY_Cyrillic_e* = 0x000006DC
-  GDK_KEY_Cyrillic_shcha* = 0x000006DD
-  GDK_KEY_Cyrillic_che* = 0x000006DE
-  GDK_KEY_Cyrillic_hardsign* = 0x000006DF
-  GDK_KEY_Cyrillic_CAPITAL_YU* = 0x000006E0
-  GDK_KEY_Cyrillic_CAPITAL_A* = 0x000006E1
-  GDK_KEY_Cyrillic_CAPITAL_BE* = 0x000006E2
-  GDK_KEY_Cyrillic_CAPITAL_TSE* = 0x000006E3
-  GDK_KEY_Cyrillic_CAPITAL_DE* = 0x000006E4
-  GDK_KEY_Cyrillic_CAPITAL_IE* = 0x000006E5
-  GDK_KEY_Cyrillic_CAPITAL_EF* = 0x000006E6
-  GDK_KEY_Cyrillic_CAPITAL_GHE* = 0x000006E7
-  GDK_KEY_Cyrillic_CAPITAL_HA* = 0x000006E8
-  GDK_KEY_Cyrillic_CAPITAL_I* = 0x000006E9
-  GDK_KEY_Cyrillic_CAPITAL_SHORTI* = 0x000006EA
-  GDK_KEY_Cyrillic_CAPITAL_KA* = 0x000006EB
-  GDK_KEY_Cyrillic_CAPITAL_EL* = 0x000006EC
-  GDK_KEY_Cyrillic_CAPITAL_EM* = 0x000006ED
-  GDK_KEY_Cyrillic_CAPITAL_EN* = 0x000006EE
-  GDK_KEY_Cyrillic_CAPITAL_O* = 0x000006EF
-  GDK_KEY_Cyrillic_CAPITAL_PE* = 0x000006F0
-  GDK_KEY_Cyrillic_CAPITAL_YA* = 0x000006F1
-  GDK_KEY_Cyrillic_CAPITAL_ER* = 0x000006F2
-  GDK_KEY_Cyrillic_CAPITAL_ES* = 0x000006F3
-  GDK_KEY_Cyrillic_CAPITAL_TE* = 0x000006F4
-  GDK_KEY_Cyrillic_CAPITAL_U* = 0x000006F5
-  GDK_KEY_Cyrillic_CAPITAL_ZHE* = 0x000006F6
-  GDK_KEY_Cyrillic_CAPITAL_VE* = 0x000006F7
-  GDK_KEY_Cyrillic_CAPITAL_SOFTSIGN* = 0x000006F8
-  GDK_KEY_Cyrillic_CAPITAL_YERU* = 0x000006F9
-  GDK_KEY_Cyrillic_CAPITAL_ZE* = 0x000006FA
-  GDK_KEY_Cyrillic_CAPITAL_SHA* = 0x000006FB
-  GDK_KEY_Cyrillic_CAPITAL_E* = 0x000006FC
-  GDK_KEY_Cyrillic_CAPITAL_SHCHA* = 0x000006FD
-  GDK_KEY_Cyrillic_CAPITAL_CHE* = 0x000006FE
-  GDK_KEY_Cyrillic_CAPITAL_HARDSIGN* = 0x000006FF
-  GDK_KEY_Greek_CAPITAL_ALPHAaccent* = 0x000007A1
-  GDK_KEY_Greek_CAPITAL_EPSILONaccent* = 0x000007A2
-  GDK_KEY_Greek_CAPITAL_ETAaccent* = 0x000007A3
-  GDK_KEY_Greek_CAPITAL_IOTAaccent* = 0x000007A4
-  GDK_KEY_Greek_CAPITAL_IOTAdiaeresis* = 0x000007A5
-  GDK_KEY_Greek_CAPITAL_OMICRONaccent* = 0x000007A7
-  GDK_KEY_Greek_CAPITAL_UPSILONaccent* = 0x000007A8
-  GDK_KEY_Greek_CAPITAL_UPSILONdieresis* = 0x000007A9
-  GDK_KEY_Greek_CAPITAL_OMEGAaccent* = 0x000007AB
-  GDK_KEY_Greek_accentdieresis* = 0x000007AE
-  GDK_KEY_Greek_horizbar* = 0x000007AF
-  GDK_KEY_Greek_alphaaccent* = 0x000007B1
-  GDK_KEY_Greek_epsilonaccent* = 0x000007B2
-  GDK_KEY_Greek_etaaccent* = 0x000007B3
-  GDK_KEY_Greek_iotaaccent* = 0x000007B4
-  GDK_KEY_Greek_iotadieresis* = 0x000007B5
-  GDK_KEY_Greek_iotaaccentdieresis* = 0x000007B6
-  GDK_KEY_Greek_omicronaccent* = 0x000007B7
-  GDK_KEY_Greek_upsilonaccent* = 0x000007B8
-  GDK_KEY_Greek_upsilondieresis* = 0x000007B9
-  GDK_KEY_Greek_upsilonaccentdieresis* = 0x000007BA
-  GDK_KEY_Greek_omegaaccent* = 0x000007BB
-  GDK_KEY_Greek_CAPITAL_ALPHA* = 0x000007C1
-  GDK_KEY_Greek_CAPITAL_BETA* = 0x000007C2
-  GDK_KEY_Greek_CAPITAL_GAMMA* = 0x000007C3
-  GDK_KEY_Greek_CAPITAL_DELTA* = 0x000007C4
-  GDK_KEY_Greek_CAPITAL_EPSILON* = 0x000007C5
-  GDK_KEY_Greek_CAPITAL_ZETA* = 0x000007C6
-  GDK_KEY_Greek_CAPITAL_ETA* = 0x000007C7
-  GDK_KEY_Greek_CAPITAL_THETA* = 0x000007C8
-  GDK_KEY_Greek_CAPITAL_IOTA* = 0x000007C9
-  GDK_KEY_Greek_CAPITAL_KAPPA* = 0x000007CA
-  GDK_KEY_Greek_CAPITAL_LAMDA* = 0x000007CB
-  GDK_KEY_Greek_CAPITAL_LAMBDA* = 0x000007CB
-  GDK_KEY_Greek_CAPITAL_MU* = 0x000007CC
-  GDK_KEY_Greek_CAPITAL_NU* = 0x000007CD
-  GDK_KEY_Greek_CAPITAL_XI* = 0x000007CE
-  GDK_KEY_Greek_CAPITAL_OMICRON* = 0x000007CF
-  GDK_KEY_Greek_CAPITAL_PI* = 0x000007D0
-  GDK_KEY_Greek_CAPITAL_RHO* = 0x000007D1
-  GDK_KEY_Greek_CAPITAL_SIGMA* = 0x000007D2
-  GDK_KEY_Greek_CAPITAL_TAU* = 0x000007D4
-  GDK_KEY_Greek_CAPITAL_UPSILON* = 0x000007D5
-  GDK_KEY_Greek_CAPITAL_PHI* = 0x000007D6
-  GDK_KEY_Greek_CAPITAL_CHI* = 0x000007D7
-  GDK_KEY_Greek_CAPITAL_PSI* = 0x000007D8
-  GDK_KEY_Greek_CAPITAL_OMEGA* = 0x000007D9
-  GDK_KEY_Greek_alpha* = 0x000007E1
-  GDK_KEY_Greek_beta* = 0x000007E2
-  GDK_KEY_Greek_gamma* = 0x000007E3
-  GDK_KEY_Greek_delta* = 0x000007E4
-  GDK_KEY_Greek_epsilon* = 0x000007E5
-  GDK_KEY_Greek_zeta* = 0x000007E6
-  GDK_KEY_Greek_eta* = 0x000007E7
-  GDK_KEY_Greek_theta* = 0x000007E8
-  GDK_KEY_Greek_iota* = 0x000007E9
-  GDK_KEY_Greek_kappa* = 0x000007EA
-  GDK_KEY_Greek_lamda* = 0x000007EB
-  GDK_KEY_Greek_lambda* = 0x000007EB
-  GDK_KEY_Greek_mu* = 0x000007EC
-  GDK_KEY_Greek_nu* = 0x000007ED
-  GDK_KEY_Greek_xi* = 0x000007EE
-  GDK_KEY_Greek_omicron* = 0x000007EF
-  GDK_KEY_Greek_pi* = 0x000007F0
-  GDK_KEY_Greek_rho* = 0x000007F1
-  GDK_KEY_Greek_sigma* = 0x000007F2
-  GDK_KEY_Greek_finalsmallsigma* = 0x000007F3
-  GDK_KEY_Greek_tau* = 0x000007F4
-  GDK_KEY_Greek_upsilon* = 0x000007F5
-  GDK_KEY_Greek_phi* = 0x000007F6
-  GDK_KEY_Greek_chi* = 0x000007F7
-  GDK_KEY_Greek_psi* = 0x000007F8
-  GDK_KEY_Greek_omega* = 0x000007F9
-  GDK_KEY_Greek_switch* = 0x0000FF7E
-  GDK_KEY_leftradical* = 0x000008A1
-  GDK_KEY_topleftradical* = 0x000008A2
-  GDK_KEY_horizconnector* = 0x000008A3
-  GDK_KEY_topintegral* = 0x000008A4
-  GDK_KEY_botintegral* = 0x000008A5
-  GDK_KEY_vertconnector* = 0x000008A6
-  GDK_KEY_topleftsqbracket* = 0x000008A7
-  GDK_KEY_botleftsqbracket* = 0x000008A8
-  GDK_KEY_toprightsqbracket* = 0x000008A9
-  GDK_KEY_botrightsqbracket* = 0x000008AA
-  GDK_KEY_topleftparens* = 0x000008AB
-  GDK_KEY_botleftparens* = 0x000008AC
-  GDK_KEY_toprightparens* = 0x000008AD
-  GDK_KEY_botrightparens* = 0x000008AE
-  GDK_KEY_leftmiddlecurlybrace* = 0x000008AF
-  GDK_KEY_rightmiddlecurlybrace* = 0x000008B0
-  GDK_KEY_topleftsummation* = 0x000008B1
-  GDK_KEY_botleftsummation* = 0x000008B2
-  GDK_KEY_topvertsummationconnector* = 0x000008B3
-  GDK_KEY_botvertsummationconnector* = 0x000008B4
-  GDK_KEY_toprightsummation* = 0x000008B5
-  GDK_KEY_botrightsummation* = 0x000008B6
-  GDK_KEY_rightmiddlesummation* = 0x000008B7
-  GDK_KEY_lessthanequal* = 0x000008BC
-  GDK_KEY_notequal* = 0x000008BD
-  GDK_KEY_greaterthanequal* = 0x000008BE
-  GDK_KEY_integral* = 0x000008BF
-  GDK_KEY_therefore* = 0x000008C0
-  GDK_KEY_variation* = 0x000008C1
-  GDK_KEY_infinity* = 0x000008C2
-  GDK_KEY_nabla* = 0x000008C5
-  GDK_KEY_approximate* = 0x000008C8
-  GDK_KEY_similarequal* = 0x000008C9
-  GDK_KEY_ifonlyif* = 0x000008CD
-  GDK_KEY_implies* = 0x000008CE
-  GDK_KEY_identical* = 0x000008CF
-  GDK_KEY_radical* = 0x000008D6
-  GDK_KEY_includedin* = 0x000008DA
-  GDK_KEY_includes* = 0x000008DB
-  GDK_KEY_intersection* = 0x000008DC
-  GDK_KEY_union* = 0x000008DD
-  GDK_KEY_logicaland* = 0x000008DE
-  GDK_KEY_logicalor* = 0x000008DF
-  GDK_KEY_partialderivative* = 0x000008EF
-  GDK_KEY_function* = 0x000008F6
-  GDK_KEY_leftarrow* = 0x000008FB
-  GDK_KEY_uparrow* = 0x000008FC
-  GDK_KEY_rightarrow* = 0x000008FD
-  GDK_KEY_downarrow* = 0x000008FE
-  GDK_KEY_blank* = 0x000009DF
-  GDK_KEY_soliddiamond* = 0x000009E0
-  GDK_KEY_checkerboard* = 0x000009E1
-  GDK_KEY_ht* = 0x000009E2
-  GDK_KEY_ff* = 0x000009E3
-  GDK_KEY_cr* = 0x000009E4
-  GDK_KEY_lf* = 0x000009E5
-  GDK_KEY_nl* = 0x000009E8
-  GDK_KEY_vt* = 0x000009E9
-  GDK_KEY_lowrightcorner* = 0x000009EA
-  GDK_KEY_uprightcorner* = 0x000009EB
-  GDK_KEY_upleftcorner* = 0x000009EC
-  GDK_KEY_lowleftcorner* = 0x000009ED
-  GDK_KEY_crossinglines* = 0x000009EE
-  GDK_KEY_horizlinescan1* = 0x000009EF
-  GDK_KEY_horizlinescan3* = 0x000009F0
-  GDK_KEY_horizlinescan5* = 0x000009F1
-  GDK_KEY_horizlinescan7* = 0x000009F2
-  GDK_KEY_horizlinescan9* = 0x000009F3
-  GDK_KEY_leftt* = 0x000009F4
-  GDK_KEY_rightt* = 0x000009F5
-  GDK_KEY_bott* = 0x000009F6
-  GDK_KEY_topt* = 0x000009F7
-  GDK_KEY_vertbar* = 0x000009F8
-  GDK_KEY_emspace* = 0x00000AA1
-  GDK_KEY_enspace* = 0x00000AA2
-  GDK_KEY_em3space* = 0x00000AA3
-  GDK_KEY_em4space* = 0x00000AA4
-  GDK_KEY_digitspace* = 0x00000AA5
-  GDK_KEY_punctspace* = 0x00000AA6
-  GDK_KEY_thinspace* = 0x00000AA7
-  GDK_KEY_hairspace* = 0x00000AA8
-  GDK_KEY_emdash* = 0x00000AA9
-  GDK_KEY_endash* = 0x00000AAA
-  GDK_KEY_signifblank* = 0x00000AAC
-  GDK_KEY_ellipsis* = 0x00000AAE
-  GDK_KEY_doubbaselinedot* = 0x00000AAF
-  GDK_KEY_onethird* = 0x00000AB0
-  GDK_KEY_twothirds* = 0x00000AB1
-  GDK_KEY_onefifth* = 0x00000AB2
-  GDK_KEY_twofifths* = 0x00000AB3
-  GDK_KEY_threefifths* = 0x00000AB4
-  GDK_KEY_fourfifths* = 0x00000AB5
-  GDK_KEY_onesixth* = 0x00000AB6
-  GDK_KEY_fivesixths* = 0x00000AB7
-  GDK_KEY_careof* = 0x00000AB8
-  GDK_KEY_figdash* = 0x00000ABB
-  GDK_KEY_leftanglebracket* = 0x00000ABC
-  GDK_KEY_decimalpoint* = 0x00000ABD
-  GDK_KEY_rightanglebracket* = 0x00000ABE
-  GDK_KEY_marker* = 0x00000ABF
-  GDK_KEY_oneeighth* = 0x00000AC3
-  GDK_KEY_threeeighths* = 0x00000AC4
-  GDK_KEY_fiveeighths* = 0x00000AC5
-  GDK_KEY_seveneighths* = 0x00000AC6
-  GDK_KEY_trademark* = 0x00000AC9
-  GDK_KEY_signaturemark* = 0x00000ACA
-  GDK_KEY_trademarkincircle* = 0x00000ACB
-  GDK_KEY_leftopentriangle* = 0x00000ACC
-  GDK_KEY_rightopentriangle* = 0x00000ACD
-  GDK_KEY_emopencircle* = 0x00000ACE
-  GDK_KEY_emopenrectangle* = 0x00000ACF
-  GDK_KEY_leftsinglequotemark* = 0x00000AD0
-  GDK_KEY_rightsinglequotemark* = 0x00000AD1
-  GDK_KEY_leftdoublequotemark* = 0x00000AD2
-  GDK_KEY_rightdoublequotemark* = 0x00000AD3
-  GDK_KEY_prescription* = 0x00000AD4
-  GDK_KEY_minutes* = 0x00000AD6
-  GDK_KEY_seconds* = 0x00000AD7
-  GDK_KEY_latincross* = 0x00000AD9
-  GDK_KEY_hexagram* = 0x00000ADA
-  GDK_KEY_filledrectbullet* = 0x00000ADB
-  GDK_KEY_filledlefttribullet* = 0x00000ADC
-  GDK_KEY_filledrighttribullet* = 0x00000ADD
-  GDK_KEY_emfilledcircle* = 0x00000ADE
-  GDK_KEY_emfilledrect* = 0x00000ADF
-  GDK_KEY_enopencircbullet* = 0x00000AE0
-  GDK_KEY_enopensquarebullet* = 0x00000AE1
-  GDK_KEY_openrectbullet* = 0x00000AE2
-  GDK_KEY_opentribulletup* = 0x00000AE3
-  GDK_KEY_opentribulletdown* = 0x00000AE4
-  GDK_KEY_openstar* = 0x00000AE5
-  GDK_KEY_enfilledcircbullet* = 0x00000AE6
-  GDK_KEY_enfilledsqbullet* = 0x00000AE7
-  GDK_KEY_filledtribulletup* = 0x00000AE8
-  GDK_KEY_filledtribulletdown* = 0x00000AE9
-  GDK_KEY_leftpointer* = 0x00000AEA
-  GDK_KEY_rightpointer* = 0x00000AEB
-  GDK_KEY_club* = 0x00000AEC
-  GDK_KEY_diamond* = 0x00000AED
-  GDK_KEY_heart* = 0x00000AEE
-  GDK_KEY_maltesecross* = 0x00000AF0
-  GDK_KEY_dagger* = 0x00000AF1
-  GDK_KEY_doubledagger* = 0x00000AF2
-  GDK_KEY_checkmark* = 0x00000AF3
-  GDK_KEY_ballotcross* = 0x00000AF4
-  GDK_KEY_musicalsharp* = 0x00000AF5
-  GDK_KEY_musicalflat* = 0x00000AF6
-  GDK_KEY_malesymbol* = 0x00000AF7
-  GDK_KEY_femalesymbol* = 0x00000AF8
-  GDK_KEY_telephone* = 0x00000AF9
-  GDK_KEY_telephonerecorder* = 0x00000AFA
-  GDK_KEY_phonographcopyright* = 0x00000AFB
-  GDK_KEY_caret* = 0x00000AFC
-  GDK_KEY_singlelowquotemark* = 0x00000AFD
-  GDK_KEY_doublelowquotemark* = 0x00000AFE
-  GDK_KEY_cursor* = 0x00000AFF
-  GDK_KEY_leftcaret* = 0x00000BA3
-  GDK_KEY_rightcaret* = 0x00000BA6
-  GDK_KEY_downcaret* = 0x00000BA8
-  GDK_KEY_upcaret* = 0x00000BA9
-  GDK_KEY_overbar* = 0x00000BC0
-  GDK_KEY_downtack* = 0x00000BC2
-  GDK_KEY_upshoe* = 0x00000BC3
-  GDK_KEY_downstile* = 0x00000BC4
-  GDK_KEY_underbar* = 0x00000BC6
-  GDK_KEY_jot* = 0x00000BCA
-  GDK_KEY_quad* = 0x00000BCC
-  GDK_KEY_uptack* = 0x00000BCE
-  GDK_KEY_circle* = 0x00000BCF
-  GDK_KEY_upstile* = 0x00000BD3
-  GDK_KEY_downshoe* = 0x00000BD6
-  GDK_KEY_rightshoe* = 0x00000BD8
-  GDK_KEY_leftshoe* = 0x00000BDA
-  GDK_KEY_lefttack* = 0x00000BDC
-  GDK_KEY_righttack* = 0x00000BFC
-  GDK_KEY_hebrew_doublelowline* = 0x00000CDF
-  GDK_KEY_hebrew_aleph* = 0x00000CE0
-  GDK_KEY_hebrew_bet* = 0x00000CE1
-  GDK_KEY_hebrew_beth* = 0x00000CE1
-  GDK_KEY_hebrew_gimel* = 0x00000CE2
-  GDK_KEY_hebrew_gimmel* = 0x00000CE2
-  GDK_KEY_hebrew_dalet* = 0x00000CE3
-  GDK_KEY_hebrew_daleth* = 0x00000CE3
-  GDK_KEY_hebrew_he* = 0x00000CE4
-  GDK_KEY_hebrew_waw* = 0x00000CE5
-  GDK_KEY_hebrew_zain* = 0x00000CE6
-  GDK_KEY_hebrew_zayin* = 0x00000CE6
-  GDK_KEY_hebrew_chet* = 0x00000CE7
-  GDK_KEY_hebrew_het* = 0x00000CE7
-  GDK_KEY_hebrew_tet* = 0x00000CE8
-  GDK_KEY_hebrew_teth* = 0x00000CE8
-  GDK_KEY_hebrew_yod* = 0x00000CE9
-  GDK_KEY_hebrew_finalkaph* = 0x00000CEA
-  GDK_KEY_hebrew_kaph* = 0x00000CEB
-  GDK_KEY_hebrew_lamed* = 0x00000CEC
-  GDK_KEY_hebrew_finalmem* = 0x00000CED
-  GDK_KEY_hebrew_mem* = 0x00000CEE
-  GDK_KEY_hebrew_finalnun* = 0x00000CEF
-  GDK_KEY_hebrew_nun* = 0x00000CF0
-  GDK_KEY_hebrew_samech* = 0x00000CF1
-  GDK_KEY_hebrew_samekh* = 0x00000CF1
-  GDK_KEY_hebrew_ayin* = 0x00000CF2
-  GDK_KEY_hebrew_finalpe* = 0x00000CF3
-  GDK_KEY_hebrew_pe* = 0x00000CF4
-  GDK_KEY_hebrew_finalzade* = 0x00000CF5
-  GDK_KEY_hebrew_finalzadi* = 0x00000CF5
-  GDK_KEY_hebrew_zade* = 0x00000CF6
-  GDK_KEY_hebrew_zadi* = 0x00000CF6
-  GDK_KEY_hebrew_qoph* = 0x00000CF7
-  GDK_KEY_hebrew_kuf* = 0x00000CF7
-  GDK_KEY_hebrew_resh* = 0x00000CF8
-  GDK_KEY_hebrew_shin* = 0x00000CF9
-  GDK_KEY_hebrew_taw* = 0x00000CFA
-  GDK_KEY_hebrew_taf* = 0x00000CFA
-  GDK_KEY_Hebrew_switch* = 0x0000FF7E
-  GDK_KEY_Thai_kokai* = 0x00000DA1
-  GDK_KEY_Thai_khokhai* = 0x00000DA2
-  GDK_KEY_Thai_khokhuat* = 0x00000DA3
-  GDK_KEY_Thai_khokhwai* = 0x00000DA4
-  GDK_KEY_Thai_khokhon* = 0x00000DA5
-  GDK_KEY_Thai_khorakhang* = 0x00000DA6
-  GDK_KEY_Thai_ngongu* = 0x00000DA7
-  GDK_KEY_Thai_chochan* = 0x00000DA8
-  GDK_KEY_Thai_choching* = 0x00000DA9
-  GDK_KEY_Thai_chochang* = 0x00000DAA
-  GDK_KEY_Thai_soso* = 0x00000DAB
-  GDK_KEY_Thai_chochoe* = 0x00000DAC
-  GDK_KEY_Thai_yoying* = 0x00000DAD
-  GDK_KEY_Thai_dochada* = 0x00000DAE
-  GDK_KEY_Thai_topatak* = 0x00000DAF
-  GDK_KEY_Thai_thothan* = 0x00000DB0
-  GDK_KEY_Thai_thonangmontho* = 0x00000DB1
-  GDK_KEY_Thai_thophuthao* = 0x00000DB2
-  GDK_KEY_Thai_nonen* = 0x00000DB3
-  GDK_KEY_Thai_dodek* = 0x00000DB4
-  GDK_KEY_Thai_totao* = 0x00000DB5
-  GDK_KEY_Thai_thothung* = 0x00000DB6
-  GDK_KEY_Thai_thothahan* = 0x00000DB7
-  GDK_KEY_Thai_thothong* = 0x00000DB8
-  GDK_KEY_Thai_nonu* = 0x00000DB9
-  GDK_KEY_Thai_bobaimai* = 0x00000DBA
-  GDK_KEY_Thai_popla* = 0x00000DBB
-  GDK_KEY_Thai_phophung* = 0x00000DBC
-  GDK_KEY_Thai_fofa* = 0x00000DBD
-  GDK_KEY_Thai_phophan* = 0x00000DBE
-  GDK_KEY_Thai_fofan* = 0x00000DBF
-  GDK_KEY_Thai_phosamphao* = 0x00000DC0
-  GDK_KEY_Thai_moma* = 0x00000DC1
-  GDK_KEY_Thai_yoyak* = 0x00000DC2
-  GDK_KEY_Thai_rorua* = 0x00000DC3
-  GDK_KEY_Thai_ru* = 0x00000DC4
-  GDK_KEY_Thai_loling* = 0x00000DC5
-  GDK_KEY_Thai_lu* = 0x00000DC6
-  GDK_KEY_Thai_wowaen* = 0x00000DC7
-  GDK_KEY_Thai_sosala* = 0x00000DC8
-  GDK_KEY_Thai_sorusi* = 0x00000DC9
-  GDK_KEY_Thai_sosua* = 0x00000DCA
-  GDK_KEY_Thai_hohip* = 0x00000DCB
-  GDK_KEY_Thai_lochula* = 0x00000DCC
-  GDK_KEY_Thai_oang* = 0x00000DCD
-  GDK_KEY_Thai_honokhuk* = 0x00000DCE
-  GDK_KEY_Thai_paiyannoi* = 0x00000DCF
-  GDK_KEY_Thai_saraa* = 0x00000DD0
-  GDK_KEY_Thai_maihanakat* = 0x00000DD1
-  GDK_KEY_Thai_saraaa* = 0x00000DD2
-  GDK_KEY_Thai_saraam* = 0x00000DD3
-  GDK_KEY_Thai_sarai* = 0x00000DD4
-  GDK_KEY_Thai_saraii* = 0x00000DD5
-  GDK_KEY_Thai_saraue* = 0x00000DD6
-  GDK_KEY_Thai_sarauee* = 0x00000DD7
-  GDK_KEY_Thai_sarau* = 0x00000DD8
-  GDK_KEY_Thai_sarauu* = 0x00000DD9
-  GDK_KEY_Thai_phinthu* = 0x00000DDA
-  GDK_KEY_Thai_maihanakat_maitho* = 0x00000DDE
-  GDK_KEY_Thai_baht* = 0x00000DDF
-  GDK_KEY_Thai_sarae* = 0x00000DE0
-  GDK_KEY_Thai_saraae* = 0x00000DE1
-  GDK_KEY_Thai_sarao* = 0x00000DE2
-  GDK_KEY_Thai_saraaimaimuan* = 0x00000DE3
-  GDK_KEY_Thai_saraaimaimalai* = 0x00000DE4
-  GDK_KEY_Thai_lakkhangyao* = 0x00000DE5
-  GDK_KEY_Thai_maiyamok* = 0x00000DE6
-  GDK_KEY_Thai_maitaikhu* = 0x00000DE7
-  GDK_KEY_Thai_maiek* = 0x00000DE8
-  GDK_KEY_Thai_maitho* = 0x00000DE9
-  GDK_KEY_Thai_maitri* = 0x00000DEA
-  GDK_KEY_Thai_maichattawa* = 0x00000DEB
-  GDK_KEY_Thai_thanthakhat* = 0x00000DEC
-  GDK_KEY_Thai_nikhahit* = 0x00000DED
-  GDK_KEY_Thai_leksun* = 0x00000DF0
-  GDK_KEY_Thai_leknung* = 0x00000DF1
-  GDK_KEY_Thai_leksong* = 0x00000DF2
-  GDK_KEY_Thai_leksam* = 0x00000DF3
-  GDK_KEY_Thai_leksi* = 0x00000DF4
-  GDK_KEY_Thai_lekha* = 0x00000DF5
-  GDK_KEY_Thai_lekhok* = 0x00000DF6
-  GDK_KEY_Thai_lekchet* = 0x00000DF7
-  GDK_KEY_Thai_lekpaet* = 0x00000DF8
-  GDK_KEY_Thai_lekkao* = 0x00000DF9
-  GDK_KEY_Hangul* = 0x0000FF31
-  GDK_KEY_Hangul_Start* = 0x0000FF32
-  GDK_KEY_Hangul_End* = 0x0000FF33
-  GDK_KEY_Hangul_Hanja* = 0x0000FF34
-  GDK_KEY_Hangul_Jamo* = 0x0000FF35
-  GDK_KEY_Hangul_Romaja* = 0x0000FF36
-  GDK_KEY_Hangul_Codeinput* = 0x0000FF37
-  GDK_KEY_Hangul_Jeonja* = 0x0000FF38
-  GDK_KEY_Hangul_Banja* = 0x0000FF39
-  GDK_KEY_Hangul_PreHanja* = 0x0000FF3A
-  GDK_KEY_Hangul_PostHanja* = 0x0000FF3B
-  GDK_KEY_Hangul_SingleCandidate* = 0x0000FF3C
-  GDK_KEY_Hangul_MultipleCandidate* = 0x0000FF3D
-  GDK_KEY_Hangul_PreviousCandidate* = 0x0000FF3E
-  GDK_KEY_Hangul_Special* = 0x0000FF3F
-  GDK_KEY_Hangul_switch* = 0x0000FF7E
-  GDK_KEY_Hangul_Kiyeog* = 0x00000EA1
-  GDK_KEY_Hangul_SsangKiyeog* = 0x00000EA2
-  GDK_KEY_Hangul_KiyeogSios* = 0x00000EA3
-  GDK_KEY_Hangul_Nieun* = 0x00000EA4
-  GDK_KEY_Hangul_NieunJieuj* = 0x00000EA5
-  GDK_KEY_Hangul_NieunHieuh* = 0x00000EA6
-  GDK_KEY_Hangul_Dikeud* = 0x00000EA7
-  GDK_KEY_Hangul_SsangDikeud* = 0x00000EA8
-  GDK_KEY_Hangul_Rieul* = 0x00000EA9
-  GDK_KEY_Hangul_RieulKiyeog* = 0x00000EAA
-  GDK_KEY_Hangul_RieulMieum* = 0x00000EAB
-  GDK_KEY_Hangul_RieulPieub* = 0x00000EAC
-  GDK_KEY_Hangul_RieulSios* = 0x00000EAD
-  GDK_KEY_Hangul_RieulTieut* = 0x00000EAE
-  GDK_KEY_Hangul_RieulPhieuf* = 0x00000EAF
-  GDK_KEY_Hangul_RieulHieuh* = 0x00000EB0
-  GDK_KEY_Hangul_Mieum* = 0x00000EB1
-  GDK_KEY_Hangul_Pieub* = 0x00000EB2
-  GDK_KEY_Hangul_SsangPieub* = 0x00000EB3
-  GDK_KEY_Hangul_PieubSios* = 0x00000EB4
-  GDK_KEY_Hangul_Sios* = 0x00000EB5
-  GDK_KEY_Hangul_SsangSios* = 0x00000EB6
-  GDK_KEY_Hangul_Ieung* = 0x00000EB7
-  GDK_KEY_Hangul_Jieuj* = 0x00000EB8
-  GDK_KEY_Hangul_SsangJieuj* = 0x00000EB9
-  GDK_KEY_Hangul_Cieuc* = 0x00000EBA
-  GDK_KEY_Hangul_Khieuq* = 0x00000EBB
-  GDK_KEY_Hangul_Tieut* = 0x00000EBC
-  GDK_KEY_Hangul_Phieuf* = 0x00000EBD
-  GDK_KEY_Hangul_Hieuh* = 0x00000EBE
-  GDK_KEY_Hangul_A* = 0x00000EBF
-  GDK_KEY_Hangul_AE* = 0x00000EC0
-  GDK_KEY_Hangul_YA* = 0x00000EC1
-  GDK_KEY_Hangul_YAE* = 0x00000EC2
-  GDK_KEY_Hangul_EO* = 0x00000EC3
-  GDK_KEY_Hangul_E* = 0x00000EC4
-  GDK_KEY_Hangul_YEO* = 0x00000EC5
-  GDK_KEY_Hangul_YE* = 0x00000EC6
-  GDK_KEY_Hangul_O* = 0x00000EC7
-  GDK_KEY_Hangul_WA* = 0x00000EC8
-  GDK_KEY_Hangul_WAE* = 0x00000EC9
-  GDK_KEY_Hangul_OE* = 0x00000ECA
-  GDK_KEY_Hangul_YO* = 0x00000ECB
-  GDK_KEY_Hangul_U* = 0x00000ECC
-  GDK_KEY_Hangul_WEO* = 0x00000ECD
-  GDK_KEY_Hangul_WE* = 0x00000ECE
-  GDK_KEY_Hangul_WI* = 0x00000ECF
-  GDK_KEY_Hangul_YU* = 0x00000ED0
-  GDK_KEY_Hangul_EU* = 0x00000ED1
-  GDK_KEY_Hangul_YI* = 0x00000ED2
-  GDK_KEY_Hangul_I* = 0x00000ED3
-  GDK_KEY_Hangul_J_Kiyeog* = 0x00000ED4
-  GDK_KEY_Hangul_J_SsangKiyeog* = 0x00000ED5
-  GDK_KEY_Hangul_J_KiyeogSios* = 0x00000ED6
-  GDK_KEY_Hangul_J_Nieun* = 0x00000ED7
-  GDK_KEY_Hangul_J_NieunJieuj* = 0x00000ED8
-  GDK_KEY_Hangul_J_NieunHieuh* = 0x00000ED9
-  GDK_KEY_Hangul_J_Dikeud* = 0x00000EDA
-  GDK_KEY_Hangul_J_Rieul* = 0x00000EDB
-  GDK_KEY_Hangul_J_RieulKiyeog* = 0x00000EDC
-  GDK_KEY_Hangul_J_RieulMieum* = 0x00000EDD
-  GDK_KEY_Hangul_J_RieulPieub* = 0x00000EDE
-  GDK_KEY_Hangul_J_RieulSios* = 0x00000EDF
-  GDK_KEY_Hangul_J_RieulTieut* = 0x00000EE0
-  GDK_KEY_Hangul_J_RieulPhieuf* = 0x00000EE1
-  GDK_KEY_Hangul_J_RieulHieuh* = 0x00000EE2
-  GDK_KEY_Hangul_J_Mieum* = 0x00000EE3
-  GDK_KEY_Hangul_J_Pieub* = 0x00000EE4
-  GDK_KEY_Hangul_J_PieubSios* = 0x00000EE5
-  GDK_KEY_Hangul_J_Sios* = 0x00000EE6
-  GDK_KEY_Hangul_J_SsangSios* = 0x00000EE7
-  GDK_KEY_Hangul_J_Ieung* = 0x00000EE8
-  GDK_KEY_Hangul_J_Jieuj* = 0x00000EE9
-  GDK_KEY_Hangul_J_Cieuc* = 0x00000EEA
-  GDK_KEY_Hangul_J_Khieuq* = 0x00000EEB
-  GDK_KEY_Hangul_J_Tieut* = 0x00000EEC
-  GDK_KEY_Hangul_J_Phieuf* = 0x00000EED
-  GDK_KEY_Hangul_J_Hieuh* = 0x00000EEE
-  GDK_KEY_Hangul_RieulYeorinHieuh* = 0x00000EEF
-  GDK_KEY_Hangul_SunkyeongeumMieum* = 0x00000EF0
-  GDK_KEY_Hangul_SunkyeongeumPieub* = 0x00000EF1
-  GDK_KEY_Hangul_PanSios* = 0x00000EF2
-  GDK_KEY_Hangul_KkogjiDalrinIeung* = 0x00000EF3
-  GDK_KEY_Hangul_SunkyeongeumPhieuf* = 0x00000EF4
-  GDK_KEY_Hangul_YeorinHieuh* = 0x00000EF5
-  GDK_KEY_Hangul_AraeA* = 0x00000EF6
-  GDK_KEY_Hangul_AraeAE* = 0x00000EF7
-  GDK_KEY_Hangul_J_PanSios* = 0x00000EF8
-  GDK_KEY_Hangul_J_KkogjiDalrinIeung* = 0x00000EF9
-  GDK_KEY_Hangul_J_YeorinHieuh* = 0x00000EFA
-  GDK_KEY_Korean_Won* = 0x00000EFF
-  GDK_KEY_EcuSign* = 0x000020A0
-  GDK_KEY_ColonSign* = 0x000020A1
-  GDK_KEY_CruzeiroSign* = 0x000020A2
-  GDK_KEY_FFrancSign* = 0x000020A3
-  GDK_KEY_LiraSign* = 0x000020A4
-  GDK_KEY_MillSign* = 0x000020A5
-  GDK_KEY_NairaSign* = 0x000020A6
-  GDK_KEY_PesetaSign* = 0x000020A7
-  GDK_KEY_RupeeSign* = 0x000020A8
-  GDK_KEY_WonSign* = 0x000020A9
-  GDK_KEY_NewSheqelSign* = 0x000020AA
-  GDK_KEY_DongSign* = 0x000020AB
-  GDK_KEY_EuroSign* = 0x000020AC
-
-proc gdk_pango_context_get_for_screen*(screen: PGdkScreen): PPangoContext{.
-    cdecl, dynlib: gdklib, importc: "gdk_pango_context_get_for_screen".}
-proc gdk_pango_context_set_colormap*(context: PPangoContext,
-                                     colormap: PGdkColormap){.cdecl,
-    dynlib: gdklib, importc: "gdk_pango_context_set_colormap".}
-proc gdk_pango_layout_line_get_clip_region*(line: PPangoLayoutLine,
-    x_origin: gint, y_origin: gint, index_ranges: Pgint, n_ranges: gint): PGdkRegion{.
-    cdecl, dynlib: gdklib, importc: "gdk_pango_layout_line_get_clip_region".}
-proc gdk_pango_layout_get_clip_region*(layout: PPangoLayout, x_origin: gint,
-                                       y_origin: gint, index_ranges: Pgint,
-                                       n_ranges: gint): PGdkRegion{.cdecl,
-    dynlib: gdklib, importc: "gdk_pango_layout_get_clip_region".}
-proc gdk_pango_attr_stipple_new*(stipple: PGdkBitmap): PPangoAttribute{.cdecl,
-    dynlib: gdklib, importc: "gdk_pango_attr_stipple_new".}
-proc gdk_pango_attr_embossed_new*(embossed: gboolean): PPangoAttribute{.cdecl,
-    dynlib: gdklib, importc: "gdk_pango_attr_embossed_new".}
-proc gdk_pixbuf_render_threshold_alpha*(pixbuf: PGdkPixbuf, bitmap: PGdkBitmap,
-                                        src_x: int32, src_y: int32,
-                                        dest_x: int32, dest_y: int32,
-                                        width: int32, height: int32,
-                                        alpha_threshold: int32){.cdecl,
-    dynlib: gdklib, importc: "gdk_pixbuf_render_threshold_alpha".}
-proc gdk_pixbuf_render_to_drawable*(pixbuf: PGdkPixbuf, drawable: PGdkDrawable,
-                                    gc: PGdkGC, src_x: int32, src_y: int32,
-                                    dest_x: int32, dest_y: int32, width: int32,
-                                    height: int32, dither: TGdkRgbDither,
-                                    x_dither: int32, y_dither: int32){.cdecl,
-    dynlib: gdklib, importc: "gdk_pixbuf_render_to_drawable".}
-proc gdk_pixbuf_render_to_drawable_alpha*(pixbuf: PGdkPixbuf,
-    drawable: PGdkDrawable, src_x: int32, src_y: int32, dest_x: int32,
-    dest_y: int32, width: int32, height: int32, alpha_mode: TGdkPixbufAlphaMode,
-    alpha_threshold: int32, dither: TGdkRgbDither, x_dither: int32,
-    y_dither: int32){.cdecl, dynlib: gdklib,
-                      importc: "gdk_pixbuf_render_to_drawable_alpha".}
-proc gdk_pixbuf_render_pixmap_and_mask_for_colormap*(pixbuf: PGdkPixbuf,
-    colormap: PGdkColormap, n: var PGdkPixmap, nasdfdsafw4e: var PGdkBitmap,
-    alpha_threshold: int32){.cdecl, dynlib: gdklib, importc: "gdk_pixbuf_render_pixmap_and_mask_for_colormap".}
-proc gdk_pixbuf_get_from_drawable*(dest: PGdkPixbuf, src: PGdkDrawable,
-                                   cmap: PGdkColormap, src_x: int32,
-                                   src_y: int32, dest_x: int32, dest_y: int32,
-                                   width: int32, height: int32): PGdkPixbuf{.
-    cdecl, dynlib: gdklib, importc: "gdk_pixbuf_get_from_drawable".}
-proc gdk_pixbuf_get_from_image*(dest: PGdkPixbuf, src: PGdkImage,
-                                cmap: PGdkColormap, src_x: int32, src_y: int32,
-                                dest_x: int32, dest_y: int32, width: int32,
-                                height: int32): PGdkPixbuf{.cdecl,
-    dynlib: gdklib, importc: "gdk_pixbuf_get_from_image".}
-proc GDK_TYPE_PIXMAP*(): GType
-proc GDK_PIXMAP*(anObject: Pointer): PGdkPixmap
-proc GDK_PIXMAP_CLASS*(klass: Pointer): PGdkPixmapObjectClass
-proc GDK_IS_PIXMAP*(anObject: Pointer): bool
-proc GDK_IS_PIXMAP_CLASS*(klass: Pointer): bool
-proc GDK_PIXMAP_GET_CLASS*(obj: Pointer): PGdkPixmapObjectClass
-proc GDK_PIXMAP_OBJECT*(anObject: Pointer): PGdkPixmapObject
-proc gdk_pixmap_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_pixmap_get_type".}
-proc gdk_pixmap_new*(window: PGdkWindow, width: gint, height: gint, depth: gint): PGdkPixmap{.
-    cdecl, dynlib: gdklib, importc: "gdk_pixmap_new".}
-proc gdk_bitmap_create_from_data*(window: PGdkWindow, data: cstring, width: gint,
-                                  height: gint): PGdkBitmap{.cdecl,
-    dynlib: gdklib, importc: "gdk_bitmap_create_from_data".}
-proc gdk_pixmap_create_from_data*(window: PGdkWindow, data: cstring, width: gint,
-                                  height: gint, depth: gint, fg: PGdkColor,
-                                  bg: PGdkColor): PGdkPixmap{.cdecl,
-    dynlib: gdklib, importc: "gdk_pixmap_create_from_data".}
-proc gdk_pixmap_create_from_xpm*(window: PGdkWindow, k: var PGdkBitmap,
-                                 transparent_color: PGdkColor, filename: cstring): PGdkPixmap{.
-    cdecl, dynlib: gdklib, importc: "gdk_pixmap_create_from_xpm".}
-proc gdk_pixmap_colormap_create_from_xpm*(window: PGdkWindow,
-    colormap: PGdkColormap, k: var PGdkBitmap, transparent_color: PGdkColor,
-    filename: cstring): PGdkPixmap{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_colormap_create_from_xpm".}
-proc gdk_pixmap_create_from_xpm_d*(window: PGdkWindow, k: var PGdkBitmap,
-                                   transparent_color: PGdkColor, data: PPgchar): PGdkPixmap{.
-    cdecl, dynlib: gdklib, importc: "gdk_pixmap_create_from_xpm_d".}
-proc gdk_pixmap_colormap_create_from_xpm_d*(window: PGdkWindow,
-    colormap: PGdkColormap, k: var PGdkBitmap, transparent_color: PGdkColor,
-    data: PPgchar): PGdkPixmap{.cdecl, dynlib: gdklib, importc: "gdk_pixmap_colormap_create_from_xpm_d".}
-proc gdk_pixmap_foreign_new_for_display*(display: PGdkDisplay,
-    anid: TGdkNativeWindow): PGdkPixmap{.cdecl, dynlib: gdklib,
-    importc: "gdk_pixmap_foreign_new_for_display".}
-proc gdk_pixmap_lookup_for_display*(display: PGdkDisplay, anid: TGdkNativeWindow): PGdkPixmap{.
-    cdecl, dynlib: gdklib, importc: "gdk_pixmap_lookup_for_display".}
-proc gdk_atom_intern*(atom_name: cstring, only_if_exists: gboolean): TGdkAtom{.
-    cdecl, dynlib: gdklib, importc: "gdk_atom_intern".}
-proc gdk_atom_name*(atom: TGdkAtom): cstring{.cdecl, dynlib: gdklib,
-    importc: "gdk_atom_name".}
-proc gdk_property_get*(window: PGdkWindow, `property`: TGdkAtom,
-                       `type`: TGdkAtom, offset: gulong, length: gulong,
-                       pdelete: gint, actual_property_type: PGdkAtom,
-                       actual_format: Pgint, actual_length: Pgint,
-                       data: PPguchar): gboolean{.cdecl, dynlib: gdklib,
-    importc: "gdk_property_get".}
-proc gdk_property_change*(window: PGdkWindow, `property`: TGdkAtom,
-                          `type`: TGdkAtom, format: gint, mode: TGdkPropMode,
-                          data: Pguchar, nelements: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_property_change".}
-proc gdk_property_delete*(window: PGdkWindow, `property`: TGdkAtom){.cdecl,
-    dynlib: gdklib, importc: "gdk_property_delete".}
-proc gdk_text_property_to_text_list_for_display*(display: PGdkDisplay,
-    encoding: TGdkAtom, format: gint, text: Pguchar, length: gint,
-    t: var PPgchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_text_property_to_text_list_for_display".}
-proc gdk_text_property_to_utf8_list_for_display*(display: PGdkDisplay,
-    encoding: TGdkAtom, format: gint, text: Pguchar, length: gint,
-    t: var PPgchar): gint{.cdecl, dynlib: gdklib, importc: "gdk_text_property_to_utf8_list_for_display".}
-proc gdk_utf8_to_string_target*(str: cstring): cstring{.cdecl, dynlib: gdklib,
+const 
+  KEY_VoidSymbol* = 0x00FFFFFF
+  KEY_BackSpace* = 0x0000FF08
+  KEY_Tab* = 0x0000FF09
+  KEY_Linefeed* = 0x0000FF0A
+  KEY_Clear* = 0x0000FF0B
+  KEY_Return* = 0x0000FF0D
+  KEY_Pause* = 0x0000FF13
+  KEY_Scroll_Lock* = 0x0000FF14
+  KEY_Sys_Req* = 0x0000FF15
+  KEY_Escape* = 0x0000FF1B
+  KEY_Delete* = 0x0000FFFF
+  KEY_Multi_key* = 0x0000FF20
+  KEY_Codeinput* = 0x0000FF37
+  KEY_SingleCandidate* = 0x0000FF3C
+  KEY_MultipleCandidate* = 0x0000FF3D
+  KEY_PreviousCandidate* = 0x0000FF3E
+  KEY_Kanji* = 0x0000FF21
+  KEY_Muhenkan* = 0x0000FF22
+  KEY_Henkan_Mode* = 0x0000FF23
+  KEY_Henkan* = 0x0000FF23
+  KEY_Romaji* = 0x0000FF24
+  KEY_Hiragana* = 0x0000FF25
+  KEY_Katakana* = 0x0000FF26
+  KEY_Hiragana_Katakana* = 0x0000FF27
+  KEY_Zenkaku* = 0x0000FF28
+  KEY_Hankaku* = 0x0000FF29
+  KEY_Zenkaku_Hankaku* = 0x0000FF2A
+  KEY_Touroku* = 0x0000FF2B
+  KEY_Massyo* = 0x0000FF2C
+  KEY_Kana_Lock* = 0x0000FF2D
+  KEY_Kana_Shift* = 0x0000FF2E
+  KEY_Eisu_Shift* = 0x0000FF2F
+  KEY_Eisu_toggle* = 0x0000FF30
+  KEY_Kanji_Bangou* = 0x0000FF37
+  KEY_Zen_Koho* = 0x0000FF3D
+  KEY_Mae_Koho* = 0x0000FF3E
+  KEY_Home* = 0x0000FF50
+  KEY_Left* = 0x0000FF51
+  KEY_Up* = 0x0000FF52
+  KEY_Right* = 0x0000FF53
+  KEY_Down* = 0x0000FF54
+  KEY_Prior* = 0x0000FF55
+  KEY_Page_Up* = 0x0000FF55
+  KEY_Next* = 0x0000FF56
+  KEY_Page_Down* = 0x0000FF56
+  KEY_End* = 0x0000FF57
+  KEY_Begin* = 0x0000FF58
+  KEY_Select* = 0x0000FF60
+  KEY_Print* = 0x0000FF61
+  KEY_Execute* = 0x0000FF62
+  KEY_Insert* = 0x0000FF63
+  KEY_Undo* = 0x0000FF65
+  KEY_Redo* = 0x0000FF66
+  KEY_Menu* = 0x0000FF67
+  KEY_Find* = 0x0000FF68
+  KEY_Cancel* = 0x0000FF69
+  KEY_Help* = 0x0000FF6A
+  KEY_Break* = 0x0000FF6B
+  KEY_Mode_switch* = 0x0000FF7E
+  KEY_script_switch* = 0x0000FF7E
+  KEY_Num_Lock* = 0x0000FF7F
+  KEY_KP_Space* = 0x0000FF80
+  KEY_KP_Tab* = 0x0000FF89
+  KEY_KP_Enter* = 0x0000FF8D
+  KEY_KP_F1* = 0x0000FF91
+  KEY_KP_F2* = 0x0000FF92
+  KEY_KP_F3* = 0x0000FF93
+  KEY_KP_F4* = 0x0000FF94
+  KEY_KP_Home* = 0x0000FF95
+  KEY_KP_Left* = 0x0000FF96
+  KEY_KP_Up* = 0x0000FF97
+  KEY_KP_Right* = 0x0000FF98
+  KEY_KP_Down* = 0x0000FF99
+  KEY_KP_Prior* = 0x0000FF9A
+  KEY_KP_Page_Up* = 0x0000FF9A
+  KEY_KP_Next* = 0x0000FF9B
+  KEY_KP_Page_Down* = 0x0000FF9B
+  KEY_KP_End* = 0x0000FF9C
+  KEY_KP_Begin* = 0x0000FF9D
+  KEY_KP_Insert* = 0x0000FF9E
+  KEY_KP_Delete* = 0x0000FF9F
+  KEY_KP_Equal* = 0x0000FFBD
+  KEY_KP_Multiply* = 0x0000FFAA
+  KEY_KP_Add* = 0x0000FFAB
+  KEY_KP_Separator* = 0x0000FFAC
+  KEY_KP_Subtract* = 0x0000FFAD
+  KEY_KP_Decimal* = 0x0000FFAE
+  KEY_KP_Divide* = 0x0000FFAF
+  KEY_KP_0* = 0x0000FFB0
+  KEY_KP_1* = 0x0000FFB1
+  KEY_KP_2* = 0x0000FFB2
+  KEY_KP_3* = 0x0000FFB3
+  KEY_KP_4* = 0x0000FFB4
+  KEY_KP_5* = 0x0000FFB5
+  KEY_KP_6* = 0x0000FFB6
+  KEY_KP_7* = 0x0000FFB7
+  KEY_KP_8* = 0x0000FFB8
+  KEY_KP_9* = 0x0000FFB9
+  KEY_F1* = 0x0000FFBE
+  KEY_F2* = 0x0000FFBF
+  KEY_F3* = 0x0000FFC0
+  KEY_F4* = 0x0000FFC1
+  KEY_F5* = 0x0000FFC2
+  KEY_F6* = 0x0000FFC3
+  KEY_F7* = 0x0000FFC4
+  KEY_F8* = 0x0000FFC5
+  KEY_F9* = 0x0000FFC6
+  KEY_F10* = 0x0000FFC7
+  KEY_F11* = 0x0000FFC8
+  KEY_L1* = 0x0000FFC8
+  KEY_F12* = 0x0000FFC9
+  KEY_L2* = 0x0000FFC9
+  KEY_F13* = 0x0000FFCA
+  KEY_L3* = 0x0000FFCA
+  KEY_F14* = 0x0000FFCB
+  KEY_L4* = 0x0000FFCB
+  KEY_F15* = 0x0000FFCC
+  KEY_L5* = 0x0000FFCC
+  KEY_F16* = 0x0000FFCD
+  KEY_L6* = 0x0000FFCD
+  KEY_F17* = 0x0000FFCE
+  KEY_L7* = 0x0000FFCE
+  KEY_F18* = 0x0000FFCF
+  KEY_L8* = 0x0000FFCF
+  KEY_F19* = 0x0000FFD0
+  KEY_L9* = 0x0000FFD0
+  KEY_F20* = 0x0000FFD1
+  KEY_L10* = 0x0000FFD1
+  KEY_F21* = 0x0000FFD2
+  KEY_R1* = 0x0000FFD2
+  KEY_F22* = 0x0000FFD3
+  KEY_R2* = 0x0000FFD3
+  KEY_F23* = 0x0000FFD4
+  KEY_R3* = 0x0000FFD4
+  KEY_F24* = 0x0000FFD5
+  KEY_R4* = 0x0000FFD5
+  KEY_F25* = 0x0000FFD6
+  KEY_R5* = 0x0000FFD6
+  KEY_F26* = 0x0000FFD7
+  KEY_R6* = 0x0000FFD7
+  KEY_F27* = 0x0000FFD8
+  KEY_R7* = 0x0000FFD8
+  KEY_F28* = 0x0000FFD9
+  KEY_R8* = 0x0000FFD9
+  KEY_F29* = 0x0000FFDA
+  KEY_R9* = 0x0000FFDA
+  KEY_F30* = 0x0000FFDB
+  KEY_R10* = 0x0000FFDB
+  KEY_F31* = 0x0000FFDC
+  KEY_R11* = 0x0000FFDC
+  KEY_F32* = 0x0000FFDD
+  KEY_R12* = 0x0000FFDD
+  KEY_F33* = 0x0000FFDE
+  KEY_R13* = 0x0000FFDE
+  KEY_F34* = 0x0000FFDF
+  KEY_R14* = 0x0000FFDF
+  KEY_F35* = 0x0000FFE0
+  KEY_R15* = 0x0000FFE0
+  KEY_Shift_L* = 0x0000FFE1
+  KEY_Shift_R* = 0x0000FFE2
+  KEY_Control_L* = 0x0000FFE3
+  KEY_Control_R* = 0x0000FFE4
+  KEY_Caps_Lock* = 0x0000FFE5
+  KEY_Shift_Lock* = 0x0000FFE6
+  KEY_Meta_L* = 0x0000FFE7
+  KEY_Meta_R* = 0x0000FFE8
+  KEY_Alt_L* = 0x0000FFE9
+  KEY_Alt_R* = 0x0000FFEA
+  KEY_Super_L* = 0x0000FFEB
+  KEY_Super_R* = 0x0000FFEC
+  KEY_Hyper_L* = 0x0000FFED
+  KEY_Hyper_R* = 0x0000FFEE
+  KEY_ISO_Lock* = 0x0000FE01
+  KEY_ISO_Level2_Latch* = 0x0000FE02
+  KEY_ISO_Level3_Shift* = 0x0000FE03
+  KEY_ISO_Level3_Latch* = 0x0000FE04
+  KEY_ISO_Level3_Lock* = 0x0000FE05
+  KEY_ISO_Group_Shift* = 0x0000FF7E
+  KEY_ISO_Group_Latch* = 0x0000FE06
+  KEY_ISO_Group_Lock* = 0x0000FE07
+  KEY_ISO_Next_Group* = 0x0000FE08
+  KEY_ISO_Next_Group_Lock* = 0x0000FE09
+  KEY_ISO_Prev_Group* = 0x0000FE0A
+  KEY_ISO_Prev_Group_Lock* = 0x0000FE0B
+  KEY_ISO_First_Group* = 0x0000FE0C
+  KEY_ISO_First_Group_Lock* = 0x0000FE0D
+  KEY_ISO_Last_Group* = 0x0000FE0E
+  KEY_ISO_Last_Group_Lock* = 0x0000FE0F
+  KEY_ISO_Left_Tab* = 0x0000FE20
+  KEY_ISO_Move_Line_Up* = 0x0000FE21
+  KEY_ISO_Move_Line_Down* = 0x0000FE22
+  KEY_ISO_Partial_Line_Up* = 0x0000FE23
+  KEY_ISO_Partial_Line_Down* = 0x0000FE24
+  KEY_ISO_Partial_Space_Left* = 0x0000FE25
+  KEY_ISO_Partial_Space_Right* = 0x0000FE26
+  KEY_ISO_Set_Margin_Left* = 0x0000FE27
+  KEY_ISO_Set_Margin_Right* = 0x0000FE28
+  KEY_ISO_Release_Margin_Left* = 0x0000FE29
+  KEY_ISO_Release_Margin_Right* = 0x0000FE2A
+  KEY_ISO_Release_Both_Margins* = 0x0000FE2B
+  KEY_ISO_Fast_Cursor_Left* = 0x0000FE2C
+  KEY_ISO_Fast_Cursor_Right* = 0x0000FE2D
+  KEY_ISO_Fast_Cursor_Up* = 0x0000FE2E
+  KEY_ISO_Fast_Cursor_Down* = 0x0000FE2F
+  KEY_ISO_Continuous_Underline* = 0x0000FE30
+  KEY_ISO_Discontinuous_Underline* = 0x0000FE31
+  KEY_ISO_Emphasize* = 0x0000FE32
+  KEY_ISO_Center_Object* = 0x0000FE33
+  KEY_ISO_Enter* = 0x0000FE34
+  KEY_dead_grave* = 0x0000FE50
+  KEY_dead_acute* = 0x0000FE51
+  KEY_dead_circumflex* = 0x0000FE52
+  KEY_dead_tilde* = 0x0000FE53
+  KEY_dead_macron* = 0x0000FE54
+  KEY_dead_breve* = 0x0000FE55
+  KEY_dead_abovedot* = 0x0000FE56
+  KEY_dead_diaeresis* = 0x0000FE57
+  KEY_dead_abovering* = 0x0000FE58
+  KEY_dead_doubleacute* = 0x0000FE59
+  KEY_dead_caron* = 0x0000FE5A
+  KEY_dead_cedilla* = 0x0000FE5B
+  KEY_dead_ogonek* = 0x0000FE5C
+  KEY_dead_iota* = 0x0000FE5D
+  KEY_dead_voiced_sound* = 0x0000FE5E
+  KEY_dead_semivoiced_sound* = 0x0000FE5F
+  KEY_dead_belowdot* = 0x0000FE60
+  KEY_First_Virtual_Screen* = 0x0000FED0
+  KEY_Prev_Virtual_Screen* = 0x0000FED1
+  KEY_Next_Virtual_Screen* = 0x0000FED2
+  KEY_Last_Virtual_Screen* = 0x0000FED4
+  KEY_Terminate_Server* = 0x0000FED5
+  KEY_AccessX_Enable* = 0x0000FE70
+  KEY_AccessX_Feedback_Enable* = 0x0000FE71
+  KEY_RepeatKeys_Enable* = 0x0000FE72
+  KEY_SlowKeys_Enable* = 0x0000FE73
+  KEY_BounceKeys_Enable* = 0x0000FE74
+  KEY_StickyKeys_Enable* = 0x0000FE75
+  KEY_MouseKeys_Enable* = 0x0000FE76
+  KEY_MouseKeys_Accel_Enable* = 0x0000FE77
+  KEY_Overlay1_Enable* = 0x0000FE78
+  KEY_Overlay2_Enable* = 0x0000FE79
+  KEY_AudibleBell_Enable* = 0x0000FE7A
+  KEY_Pointer_Left* = 0x0000FEE0
+  KEY_Pointer_Right* = 0x0000FEE1
+  KEY_Pointer_Up* = 0x0000FEE2
+  KEY_Pointer_Down* = 0x0000FEE3
+  KEY_Pointer_UpLeft* = 0x0000FEE4
+  KEY_Pointer_UpRight* = 0x0000FEE5
+  KEY_Pointer_DownLeft* = 0x0000FEE6
+  KEY_Pointer_DownRight* = 0x0000FEE7
+  KEY_Pointer_Button_Dflt* = 0x0000FEE8
+  KEY_Pointer_Button1* = 0x0000FEE9
+  KEY_Pointer_Button2* = 0x0000FEEA
+  KEY_Pointer_Button3* = 0x0000FEEB
+  KEY_Pointer_Button4* = 0x0000FEEC
+  KEY_Pointer_Button5* = 0x0000FEED
+  KEY_Pointer_DblClick_Dflt* = 0x0000FEEE
+  KEY_Pointer_DblClick1* = 0x0000FEEF
+  KEY_Pointer_DblClick2* = 0x0000FEF0
+  KEY_Pointer_DblClick3* = 0x0000FEF1
+  KEY_Pointer_DblClick4* = 0x0000FEF2
+  KEY_Pointer_DblClick5* = 0x0000FEF3
+  KEY_Pointer_Drag_Dflt* = 0x0000FEF4
+  KEY_Pointer_Drag1* = 0x0000FEF5
+  KEY_Pointer_Drag2* = 0x0000FEF6
+  KEY_Pointer_Drag3* = 0x0000FEF7
+  KEY_Pointer_Drag4* = 0x0000FEF8
+  KEY_Pointer_Drag5* = 0x0000FEFD
+  KEY_Pointer_EnableKeys* = 0x0000FEF9
+  KEY_Pointer_Accelerate* = 0x0000FEFA
+  KEY_Pointer_DfltBtnNext* = 0x0000FEFB
+  KEY_Pointer_DfltBtnPrev* = 0x0000FEFC
+  KEY_3270_Duplicate* = 0x0000FD01
+  KEY_3270_FieldMark* = 0x0000FD02
+  KEY_3270_Right2* = 0x0000FD03
+  KEY_3270_Left2* = 0x0000FD04
+  KEY_3270_BackTab* = 0x0000FD05
+  KEY_3270_EraseEOF* = 0x0000FD06
+  KEY_3270_EraseInput* = 0x0000FD07
+  KEY_3270_Reset* = 0x0000FD08
+  KEY_3270_Quit* = 0x0000FD09
+  KEY_3270_PA1* = 0x0000FD0A
+  KEY_3270_PA2* = 0x0000FD0B
+  KEY_3270_PA3* = 0x0000FD0C
+  KEY_3270_Test* = 0x0000FD0D
+  KEY_3270_Attn* = 0x0000FD0E
+  KEY_3270_CursorBlink* = 0x0000FD0F
+  KEY_3270_AltCursor* = 0x0000FD10
+  KEY_3270_KeyClick* = 0x0000FD11
+  KEY_3270_Jump* = 0x0000FD12
+  KEY_3270_Ident* = 0x0000FD13
+  KEY_3270_Rule* = 0x0000FD14
+  KEY_3270_Copy* = 0x0000FD15
+  KEY_3270_Play* = 0x0000FD16
+  KEY_3270_Setup* = 0x0000FD17
+  KEY_3270_Record* = 0x0000FD18
+  KEY_3270_ChangeScreen* = 0x0000FD19
+  KEY_3270_DeleteWord* = 0x0000FD1A
+  KEY_3270_ExSelect* = 0x0000FD1B
+  KEY_3270_CursorSelect* = 0x0000FD1C
+  KEY_3270_PrintScreen* = 0x0000FD1D
+  KEY_3270_Enter* = 0x0000FD1E
+  KEY_space* = 0x00000020
+  KEY_exclam* = 0x00000021
+  KEY_quotedbl* = 0x00000022
+  KEY_numbersign* = 0x00000023
+  KEY_dollar* = 0x00000024
+  KEY_percent* = 0x00000025
+  KEY_ampersand* = 0x00000026
+  KEY_apostrophe* = 0x00000027
+  KEY_quoteright* = 0x00000027
+  KEY_parenleft* = 0x00000028
+  KEY_parenright* = 0x00000029
+  KEY_asterisk* = 0x0000002A
+  KEY_plus* = 0x0000002B
+  KEY_comma* = 0x0000002C
+  KEY_minus* = 0x0000002D
+  KEY_period* = 0x0000002E
+  KEY_slash* = 0x0000002F
+  KEY_0* = 0x00000030
+  KEY_1* = 0x00000031
+  KEY_2* = 0x00000032
+  KEY_3* = 0x00000033
+  KEY_4* = 0x00000034
+  KEY_5* = 0x00000035
+  KEY_6* = 0x00000036
+  KEY_7* = 0x00000037
+  KEY_8* = 0x00000038
+  KEY_9* = 0x00000039
+  KEY_colon* = 0x0000003A
+  KEY_semicolon* = 0x0000003B
+  KEY_less* = 0x0000003C
+  KEY_equal* = 0x0000003D
+  KEY_greater* = 0x0000003E
+  KEY_question* = 0x0000003F
+  KEY_at* = 0x00000040
+  KEY_CAPITAL_A* = 0x00000041
+  KEY_CAPITAL_B* = 0x00000042
+  KEY_CAPITAL_C* = 0x00000043
+  KEY_CAPITAL_D* = 0x00000044
+  KEY_CAPITAL_E* = 0x00000045
+  KEY_CAPITAL_F* = 0x00000046
+  KEY_CAPITAL_G* = 0x00000047
+  KEY_CAPITAL_H* = 0x00000048
+  KEY_CAPITAL_I* = 0x00000049
+  KEY_CAPITAL_J* = 0x0000004A
+  KEY_CAPITAL_K* = 0x0000004B
+  KEY_CAPITAL_L* = 0x0000004C
+  KEY_CAPITAL_M* = 0x0000004D
+  KEY_CAPITAL_N* = 0x0000004E
+  KEY_CAPITAL_O* = 0x0000004F
+  KEY_CAPITAL_P* = 0x00000050
+  KEY_CAPITAL_Q* = 0x00000051
+  KEY_CAPITAL_R* = 0x00000052
+  KEY_CAPITAL_S* = 0x00000053
+  KEY_CAPITAL_T* = 0x00000054
+  KEY_CAPITAL_U* = 0x00000055
+  KEY_CAPITAL_V* = 0x00000056
+  KEY_CAPITAL_W* = 0x00000057
+  KEY_CAPITAL_X* = 0x00000058
+  KEY_CAPITAL_Y* = 0x00000059
+  KEY_CAPITAL_Z* = 0x0000005A
+  KEY_bracketleft* = 0x0000005B
+  KEY_backslash* = 0x0000005C
+  KEY_bracketright* = 0x0000005D
+  KEY_asciicircum* = 0x0000005E
+  KEY_underscore* = 0x0000005F
+  KEY_grave* = 0x00000060
+  KEY_quoteleft* = 0x00000060
+  KEY_a* = 0x00000061
+  KEY_b* = 0x00000062
+  KEY_c* = 0x00000063
+  KEY_d* = 0x00000064
+  KEY_e* = 0x00000065
+  KEY_f* = 0x00000066
+  KEY_g* = 0x00000067
+  KEY_h* = 0x00000068
+  KEY_i* = 0x00000069
+  KEY_j* = 0x0000006A
+  KEY_k* = 0x0000006B
+  KEY_l* = 0x0000006C
+  KEY_m* = 0x0000006D
+  KEY_n* = 0x0000006E
+  KEY_o* = 0x0000006F
+  KEY_p* = 0x00000070
+  KEY_q* = 0x00000071
+  KEY_r* = 0x00000072
+  KEY_s* = 0x00000073
+  KEY_t* = 0x00000074
+  KEY_u* = 0x00000075
+  KEY_v* = 0x00000076
+  KEY_w* = 0x00000077
+  KEY_x* = 0x00000078
+  KEY_y* = 0x00000079
+  KEY_z* = 0x0000007A
+  KEY_braceleft* = 0x0000007B
+  KEY_bar* = 0x0000007C
+  KEY_braceright* = 0x0000007D
+  KEY_asciitilde* = 0x0000007E
+  KEY_nobreakspace* = 0x000000A0
+  KEY_exclamdown* = 0x000000A1
+  KEY_cent* = 0x000000A2
+  KEY_sterling* = 0x000000A3
+  KEY_currency* = 0x000000A4
+  KEY_yen* = 0x000000A5
+  KEY_brokenbar* = 0x000000A6
+  KEY_section* = 0x000000A7
+  KEY_diaeresis* = 0x000000A8
+  KEY_copyright* = 0x000000A9
+  KEY_ordfeminine* = 0x000000AA
+  KEY_guillemotleft* = 0x000000AB
+  KEY_notsign* = 0x000000AC
+  KEY_hyphen* = 0x000000AD
+  KEY_registered* = 0x000000AE
+  KEY_macron* = 0x000000AF
+  KEY_degree* = 0x000000B0
+  KEY_plusminus* = 0x000000B1
+  KEY_twosuperior* = 0x000000B2
+  KEY_threesuperior* = 0x000000B3
+  KEY_acute* = 0x000000B4
+  KEY_mu* = 0x000000B5
+  KEY_paragraph* = 0x000000B6
+  KEY_periodcentered* = 0x000000B7
+  KEY_cedilla* = 0x000000B8
+  KEY_onesuperior* = 0x000000B9
+  KEY_masculine* = 0x000000BA
+  KEY_guillemotright* = 0x000000BB
+  KEY_onequarter* = 0x000000BC
+  KEY_onehalf* = 0x000000BD
+  KEY_threequarters* = 0x000000BE
+  KEY_questiondown* = 0x000000BF
+  KEY_CAPITAL_Agrave* = 0x000000C0
+  KEY_CAPITAL_Aacute* = 0x000000C1
+  KEY_CAPITAL_Acircumflex* = 0x000000C2
+  KEY_CAPITAL_Atilde* = 0x000000C3
+  KEY_CAPITAL_Adiaeresis* = 0x000000C4
+  KEY_CAPITAL_Aring* = 0x000000C5
+  KEY_CAPITAL_AE* = 0x000000C6
+  KEY_CAPITAL_Ccedilla* = 0x000000C7
+  KEY_CAPITAL_Egrave* = 0x000000C8
+  KEY_CAPITAL_Eacute* = 0x000000C9
+  KEY_CAPITAL_Ecircumflex* = 0x000000CA
+  KEY_CAPITAL_Ediaeresis* = 0x000000CB
+  KEY_CAPITAL_Igrave* = 0x000000CC
+  KEY_CAPITAL_Iacute* = 0x000000CD
+  KEY_CAPITAL_Icircumflex* = 0x000000CE
+  KEY_CAPITAL_Idiaeresis* = 0x000000CF
+  KEY_CAPITAL_ETH* = 0x000000D0
+  KEY_CAPITAL_Ntilde* = 0x000000D1
+  KEY_CAPITAL_Ograve* = 0x000000D2
+  KEY_CAPITAL_Oacute* = 0x000000D3
+  KEY_CAPITAL_Ocircumflex* = 0x000000D4
+  KEY_CAPITAL_Otilde* = 0x000000D5
+  KEY_CAPITAL_Odiaeresis* = 0x000000D6
+  KEY_multiply* = 0x000000D7
+  KEY_Ooblique* = 0x000000D8
+  KEY_CAPITAL_Ugrave* = 0x000000D9
+  KEY_CAPITAL_Uacute* = 0x000000DA
+  KEY_CAPITAL_Ucircumflex* = 0x000000DB
+  KEY_CAPITAL_Udiaeresis* = 0x000000DC
+  KEY_CAPITAL_Yacute* = 0x000000DD
+  KEY_CAPITAL_THORN* = 0x000000DE
+  KEY_ssharp* = 0x000000DF
+  KEY_agrave* = 0x000000E0
+  KEY_aacute* = 0x000000E1
+  KEY_acircumflex* = 0x000000E2
+  KEY_atilde* = 0x000000E3
+  KEY_adiaeresis* = 0x000000E4
+  KEY_aring* = 0x000000E5
+  KEY_ae* = 0x000000E6
+  KEY_ccedilla* = 0x000000E7
+  KEY_egrave* = 0x000000E8
+  KEY_eacute* = 0x000000E9
+  KEY_ecircumflex* = 0x000000EA
+  KEY_ediaeresis* = 0x000000EB
+  KEY_igrave* = 0x000000EC
+  KEY_iacute* = 0x000000ED
+  KEY_icircumflex* = 0x000000EE
+  KEY_idiaeresis* = 0x000000EF
+  KEY_eth* = 0x000000F0
+  KEY_ntilde* = 0x000000F1
+  KEY_ograve* = 0x000000F2
+  KEY_oacute* = 0x000000F3
+  KEY_ocircumflex* = 0x000000F4
+  KEY_otilde* = 0x000000F5
+  KEY_odiaeresis* = 0x000000F6
+  KEY_division* = 0x000000F7
+  KEY_oslash* = 0x000000F8
+  KEY_ugrave* = 0x000000F9
+  KEY_uacute* = 0x000000FA
+  KEY_ucircumflex* = 0x000000FB
+  KEY_udiaeresis* = 0x000000FC
+  KEY_yacute* = 0x000000FD
+  KEY_thorn* = 0x000000FE
+  KEY_ydiaeresis* = 0x000000FF
+  KEY_CAPITAL_Aogonek* = 0x000001A1
+  KEY_breve* = 0x000001A2
+  KEY_CAPITAL_Lstroke* = 0x000001A3
+  KEY_CAPITAL_Lcaron* = 0x000001A5
+  KEY_CAPITAL_Sacute* = 0x000001A6
+  KEY_CAPITAL_Scaron* = 0x000001A9
+  KEY_CAPITAL_Scedilla* = 0x000001AA
+  KEY_CAPITAL_Tcaron* = 0x000001AB
+  KEY_CAPITAL_Zacute* = 0x000001AC
+  KEY_CAPITAL_Zcaron* = 0x000001AE
+  KEY_CAPITAL_Zabovedot* = 0x000001AF
+  KEY_aogonek* = 0x000001B1
+  KEY_ogonek* = 0x000001B2
+  KEY_lstroke* = 0x000001B3
+  KEY_lcaron* = 0x000001B5
+  KEY_sacute* = 0x000001B6
+  KEY_caron* = 0x000001B7
+  KEY_scaron* = 0x000001B9
+  KEY_scedilla* = 0x000001BA
+  KEY_tcaron* = 0x000001BB
+  KEY_zacute* = 0x000001BC
+  KEY_doubleacute* = 0x000001BD
+  KEY_zcaron* = 0x000001BE
+  KEY_zabovedot* = 0x000001BF
+  KEY_CAPITAL_Racute* = 0x000001C0
+  KEY_CAPITAL_Abreve* = 0x000001C3
+  KEY_CAPITAL_Lacute* = 0x000001C5
+  KEY_CAPITAL_Cacute* = 0x000001C6
+  KEY_CAPITAL_Ccaron* = 0x000001C8
+  KEY_CAPITAL_Eogonek* = 0x000001CA
+  KEY_CAPITAL_Ecaron* = 0x000001CC
+  KEY_CAPITAL_Dcaron* = 0x000001CF
+  KEY_CAPITAL_Dstroke* = 0x000001D0
+  KEY_CAPITAL_Nacute* = 0x000001D1
+  KEY_CAPITAL_Ncaron* = 0x000001D2
+  KEY_CAPITAL_Odoubleacute* = 0x000001D5
+  KEY_CAPITAL_Rcaron* = 0x000001D8
+  KEY_CAPITAL_Uring* = 0x000001D9
+  KEY_CAPITAL_Udoubleacute* = 0x000001DB
+  KEY_CAPITAL_Tcedilla* = 0x000001DE
+  KEY_racute* = 0x000001E0
+  KEY_abreve* = 0x000001E3
+  KEY_lacute* = 0x000001E5
+  KEY_cacute* = 0x000001E6
+  KEY_ccaron* = 0x000001E8
+  KEY_eogonek* = 0x000001EA
+  KEY_ecaron* = 0x000001EC
+  KEY_dcaron* = 0x000001EF
+  KEY_dstroke* = 0x000001F0
+  KEY_nacute* = 0x000001F1
+  KEY_ncaron* = 0x000001F2
+  KEY_odoubleacute* = 0x000001F5
+  KEY_udoubleacute* = 0x000001FB
+  KEY_rcaron* = 0x000001F8
+  KEY_uring* = 0x000001F9
+  KEY_tcedilla* = 0x000001FE
+  KEY_abovedot* = 0x000001FF
+  KEY_CAPITAL_Hstroke* = 0x000002A1
+  KEY_CAPITAL_Hcircumflex* = 0x000002A6
+  KEY_CAPITAL_Iabovedot* = 0x000002A9
+  KEY_CAPITAL_Gbreve* = 0x000002AB
+  KEY_CAPITAL_Jcircumflex* = 0x000002AC
+  KEY_hstroke* = 0x000002B1
+  KEY_hcircumflex* = 0x000002B6
+  KEY_idotless* = 0x000002B9
+  KEY_gbreve* = 0x000002BB
+  KEY_jcircumflex* = 0x000002BC
+  KEY_CAPITAL_Cabovedot* = 0x000002C5
+  KEY_CAPITAL_Ccircumflex* = 0x000002C6
+  KEY_CAPITAL_Gabovedot* = 0x000002D5
+  KEY_CAPITAL_Gcircumflex* = 0x000002D8
+  KEY_CAPITAL_Ubreve* = 0x000002DD
+  KEY_CAPITAL_Scircumflex* = 0x000002DE
+  KEY_cabovedot* = 0x000002E5
+  KEY_ccircumflex* = 0x000002E6
+  KEY_gabovedot* = 0x000002F5
+  KEY_gcircumflex* = 0x000002F8
+  KEY_ubreve* = 0x000002FD
+  KEY_scircumflex* = 0x000002FE
+  KEY_kra* = 0x000003A2
+  KEY_kappa* = 0x000003A2
+  KEY_CAPITAL_Rcedilla* = 0x000003A3
+  KEY_CAPITAL_Itilde* = 0x000003A5
+  KEY_CAPITAL_Lcedilla* = 0x000003A6
+  KEY_CAPITAL_Emacron* = 0x000003AA
+  KEY_CAPITAL_Gcedilla* = 0x000003AB
+  KEY_CAPITAL_Tslash* = 0x000003AC
+  KEY_rcedilla* = 0x000003B3
+  KEY_itilde* = 0x000003B5
+  KEY_lcedilla* = 0x000003B6
+  KEY_emacron* = 0x000003BA
+  KEY_gcedilla* = 0x000003BB
+  KEY_tslash* = 0x000003BC
+  KEY_CAPITAL_ENG* = 0x000003BD
+  KEY_eng* = 0x000003BF
+  KEY_CAPITAL_Amacron* = 0x000003C0
+  KEY_CAPITAL_Iogonek* = 0x000003C7
+  KEY_CAPITAL_Eabovedot* = 0x000003CC
+  KEY_CAPITAL_Imacron* = 0x000003CF
+  KEY_CAPITAL_Ncedilla* = 0x000003D1
+  KEY_CAPITAL_Omacron* = 0x000003D2
+  KEY_CAPITAL_Kcedilla* = 0x000003D3
+  KEY_CAPITAL_Uogonek* = 0x000003D9
+  KEY_CAPITAL_Utilde* = 0x000003DD
+  KEY_CAPITAL_Umacron* = 0x000003DE
+  KEY_amacron* = 0x000003E0
+  KEY_iogonek* = 0x000003E7
+  KEY_eabovedot* = 0x000003EC
+  KEY_imacron* = 0x000003EF
+  KEY_ncedilla* = 0x000003F1
+  KEY_omacron* = 0x000003F2
+  KEY_kcedilla* = 0x000003F3
+  KEY_uogonek* = 0x000003F9
+  KEY_utilde* = 0x000003FD
+  KEY_umacron* = 0x000003FE
+  KEY_CAPITAL_OE* = 0x000013BC
+  KEY_oe* = 0x000013BD
+  KEY_CAPITAL_Ydiaeresis* = 0x000013BE
+  KEY_overline* = 0x0000047E
+  KEY_kana_fullstop* = 0x000004A1
+  KEY_kana_openingbracket* = 0x000004A2
+  KEY_kana_closingbracket* = 0x000004A3
+  KEY_kana_comma* = 0x000004A4
+  KEY_kana_conjunctive* = 0x000004A5
+  KEY_kana_middledot* = 0x000004A5
+  KEY_kana_WO* = 0x000004A6
+  KEY_kana_a* = 0x000004A7
+  KEY_kana_i* = 0x000004A8
+  KEY_kana_u* = 0x000004A9
+  KEY_kana_e* = 0x000004AA
+  KEY_kana_o* = 0x000004AB
+  KEY_kana_ya* = 0x000004AC
+  KEY_kana_yu* = 0x000004AD
+  KEY_kana_yo* = 0x000004AE
+  KEY_kana_tsu* = 0x000004AF
+  KEY_kana_tu* = 0x000004AF
+  KEY_prolongedsound* = 0x000004B0
+  KEY_kana_CAPITAL_A* = 0x000004B1
+  KEY_kana_CAPITAL_I* = 0x000004B2
+  KEY_kana_CAPITAL_U* = 0x000004B3
+  KEY_kana_CAPITAL_E* = 0x000004B4
+  KEY_kana_CAPITAL_O* = 0x000004B5
+  KEY_kana_KA* = 0x000004B6
+  KEY_kana_KI* = 0x000004B7
+  KEY_kana_KU* = 0x000004B8
+  KEY_kana_KE* = 0x000004B9
+  KEY_kana_KO* = 0x000004BA
+  KEY_kana_SA* = 0x000004BB
+  KEY_kana_SHI* = 0x000004BC
+  KEY_kana_SU* = 0x000004BD
+  KEY_kana_SE* = 0x000004BE
+  KEY_kana_SO* = 0x000004BF
+  KEY_kana_TA* = 0x000004C0
+  KEY_kana_CHI* = 0x000004C1
+  KEY_kana_TI* = 0x000004C1
+  KEY_kana_CAPITAL_TSU* = 0x000004C2
+  KEY_kana_CAPITAL_TU* = 0x000004C2
+  KEY_kana_TE* = 0x000004C3
+  KEY_kana_TO* = 0x000004C4
+  KEY_kana_NA* = 0x000004C5
+  KEY_kana_NI* = 0x000004C6
+  KEY_kana_NU* = 0x000004C7
+  KEY_kana_NE* = 0x000004C8
+  KEY_kana_NO* = 0x000004C9
+  KEY_kana_HA* = 0x000004CA
+  KEY_kana_HI* = 0x000004CB
+  KEY_kana_FU* = 0x000004CC
+  KEY_kana_HU* = 0x000004CC
+  KEY_kana_HE* = 0x000004CD
+  KEY_kana_HO* = 0x000004CE
+  KEY_kana_MA* = 0x000004CF
+  KEY_kana_MI* = 0x000004D0
+  KEY_kana_MU* = 0x000004D1
+  KEY_kana_ME* = 0x000004D2
+  KEY_kana_MO* = 0x000004D3
+  KEY_kana_CAPITAL_YA* = 0x000004D4
+  KEY_kana_CAPITAL_YU* = 0x000004D5
+  KEY_kana_CAPITAL_YO* = 0x000004D6
+  KEY_kana_RA* = 0x000004D7
+  KEY_kana_RI* = 0x000004D8
+  KEY_kana_RU* = 0x000004D9
+  KEY_kana_RE* = 0x000004DA
+  KEY_kana_RO* = 0x000004DB
+  KEY_kana_WA* = 0x000004DC
+  KEY_kana_N* = 0x000004DD
+  KEY_voicedsound* = 0x000004DE
+  KEY_semivoicedsound* = 0x000004DF
+  KEY_kana_switch* = 0x0000FF7E
+  KEY_Arabic_comma* = 0x000005AC
+  KEY_Arabic_semicolon* = 0x000005BB
+  KEY_Arabic_question_mark* = 0x000005BF
+  KEY_Arabic_hamza* = 0x000005C1
+  KEY_Arabic_maddaonalef* = 0x000005C2
+  KEY_Arabic_hamzaonalef* = 0x000005C3
+  KEY_Arabic_hamzaonwaw* = 0x000005C4
+  KEY_Arabic_hamzaunderalef* = 0x000005C5
+  KEY_Arabic_hamzaonyeh* = 0x000005C6
+  KEY_Arabic_alef* = 0x000005C7
+  KEY_Arabic_beh* = 0x000005C8
+  KEY_Arabic_tehmarbuta* = 0x000005C9
+  KEY_Arabic_teh* = 0x000005CA
+  KEY_Arabic_theh* = 0x000005CB
+  KEY_Arabic_jeem* = 0x000005CC
+  KEY_Arabic_hah* = 0x000005CD
+  KEY_Arabic_khah* = 0x000005CE
+  KEY_Arabic_dal* = 0x000005CF
+  KEY_Arabic_thal* = 0x000005D0
+  KEY_Arabic_ra* = 0x000005D1
+  KEY_Arabic_zain* = 0x000005D2
+  KEY_Arabic_seen* = 0x000005D3
+  KEY_Arabic_sheen* = 0x000005D4
+  KEY_Arabic_sad* = 0x000005D5
+  KEY_Arabic_dad* = 0x000005D6
+  KEY_Arabic_tah* = 0x000005D7
+  KEY_Arabic_zah* = 0x000005D8
+  KEY_Arabic_ain* = 0x000005D9
+  KEY_Arabic_ghain* = 0x000005DA
+  KEY_Arabic_tatweel* = 0x000005E0
+  KEY_Arabic_feh* = 0x000005E1
+  KEY_Arabic_qaf* = 0x000005E2
+  KEY_Arabic_kaf* = 0x000005E3
+  KEY_Arabic_lam* = 0x000005E4
+  KEY_Arabic_meem* = 0x000005E5
+  KEY_Arabic_noon* = 0x000005E6
+  KEY_Arabic_ha* = 0x000005E7
+  KEY_Arabic_heh* = 0x000005E7
+  KEY_Arabic_waw* = 0x000005E8
+  KEY_Arabic_alefmaksura* = 0x000005E9
+  KEY_Arabic_yeh* = 0x000005EA
+  KEY_Arabic_fathatan* = 0x000005EB
+  KEY_Arabic_dammatan* = 0x000005EC
+  KEY_Arabic_kasratan* = 0x000005ED
+  KEY_Arabic_fatha* = 0x000005EE
+  KEY_Arabic_damma* = 0x000005EF
+  KEY_Arabic_kasra* = 0x000005F0
+  KEY_Arabic_shadda* = 0x000005F1
+  KEY_Arabic_sukun* = 0x000005F2
+  KEY_Arabic_switch* = 0x0000FF7E
+  KEY_Serbian_dje* = 0x000006A1
+  KEY_Macedonia_gje* = 0x000006A2
+  KEY_Cyrillic_io* = 0x000006A3
+  KEY_Ukrainian_ie* = 0x000006A4
+  KEY_Ukranian_je* = 0x000006A4
+  KEY_Macedonia_dse* = 0x000006A5
+  KEY_Ukrainian_i* = 0x000006A6
+  KEY_Ukranian_i* = 0x000006A6
+  KEY_Ukrainian_yi* = 0x000006A7
+  KEY_Ukranian_yi* = 0x000006A7
+  KEY_Cyrillic_je* = 0x000006A8
+  KEY_Serbian_je* = 0x000006A8
+  KEY_Cyrillic_lje* = 0x000006A9
+  KEY_Serbian_lje* = 0x000006A9
+  KEY_Cyrillic_nje* = 0x000006AA
+  KEY_Serbian_nje* = 0x000006AA
+  KEY_Serbian_tshe* = 0x000006AB
+  KEY_Macedonia_kje* = 0x000006AC
+  KEY_Byelorussian_shortu* = 0x000006AE
+  KEY_Cyrillic_dzhe* = 0x000006AF
+  KEY_Serbian_dze* = 0x000006AF
+  KEY_numerosign* = 0x000006B0
+  KEY_Serbian_CAPITAL_DJE* = 0x000006B1
+  KEY_Macedonia_CAPITAL_GJE* = 0x000006B2
+  KEY_Cyrillic_CAPITAL_IO* = 0x000006B3
+  KEY_Ukrainian_CAPITAL_IE* = 0x000006B4
+  KEY_Ukranian_CAPITAL_JE* = 0x000006B4
+  KEY_Macedonia_CAPITAL_DSE* = 0x000006B5
+  KEY_Ukrainian_CAPITAL_I* = 0x000006B6
+  KEY_Ukranian_CAPITAL_I* = 0x000006B6
+  KEY_Ukrainian_CAPITAL_YI* = 0x000006B7
+  KEY_Ukranian_CAPITAL_YI* = 0x000006B7
+  KEY_Cyrillic_CAPITAL_JE* = 0x000006B8
+  KEY_Serbian_CAPITAL_JE* = 0x000006B8
+  KEY_Cyrillic_CAPITAL_LJE* = 0x000006B9
+  KEY_Serbian_CAPITAL_LJE* = 0x000006B9
+  KEY_Cyrillic_CAPITAL_NJE* = 0x000006BA
+  KEY_Serbian_CAPITAL_NJE* = 0x000006BA
+  KEY_Serbian_CAPITAL_TSHE* = 0x000006BB
+  KEY_Macedonia_CAPITAL_KJE* = 0x000006BC
+  KEY_Byelorussian_CAPITAL_SHORTU* = 0x000006BE
+  KEY_Cyrillic_CAPITAL_DZHE* = 0x000006BF
+  KEY_Serbian_CAPITAL_DZE* = 0x000006BF
+  KEY_Cyrillic_yu* = 0x000006C0
+  KEY_Cyrillic_a* = 0x000006C1
+  KEY_Cyrillic_be* = 0x000006C2
+  KEY_Cyrillic_tse* = 0x000006C3
+  KEY_Cyrillic_de* = 0x000006C4
+  KEY_Cyrillic_ie* = 0x000006C5
+  KEY_Cyrillic_ef* = 0x000006C6
+  KEY_Cyrillic_ghe* = 0x000006C7
+  KEY_Cyrillic_ha* = 0x000006C8
+  KEY_Cyrillic_i* = 0x000006C9
+  KEY_Cyrillic_shorti* = 0x000006CA
+  KEY_Cyrillic_ka* = 0x000006CB
+  KEY_Cyrillic_el* = 0x000006CC
+  KEY_Cyrillic_em* = 0x000006CD
+  KEY_Cyrillic_en* = 0x000006CE
+  KEY_Cyrillic_o* = 0x000006CF
+  KEY_Cyrillic_pe* = 0x000006D0
+  KEY_Cyrillic_ya* = 0x000006D1
+  KEY_Cyrillic_er* = 0x000006D2
+  KEY_Cyrillic_es* = 0x000006D3
+  KEY_Cyrillic_te* = 0x000006D4
+  KEY_Cyrillic_u* = 0x000006D5
+  KEY_Cyrillic_zhe* = 0x000006D6
+  KEY_Cyrillic_ve* = 0x000006D7
+  KEY_Cyrillic_softsign* = 0x000006D8
+  KEY_Cyrillic_yeru* = 0x000006D9
+  KEY_Cyrillic_ze* = 0x000006DA
+  KEY_Cyrillic_sha* = 0x000006DB
+  KEY_Cyrillic_e* = 0x000006DC
+  KEY_Cyrillic_shcha* = 0x000006DD
+  KEY_Cyrillic_che* = 0x000006DE
+  KEY_Cyrillic_hardsign* = 0x000006DF
+  KEY_Cyrillic_CAPITAL_YU* = 0x000006E0
+  KEY_Cyrillic_CAPITAL_A* = 0x000006E1
+  KEY_Cyrillic_CAPITAL_BE* = 0x000006E2
+  KEY_Cyrillic_CAPITAL_TSE* = 0x000006E3
+  KEY_Cyrillic_CAPITAL_DE* = 0x000006E4
+  KEY_Cyrillic_CAPITAL_IE* = 0x000006E5
+  KEY_Cyrillic_CAPITAL_EF* = 0x000006E6
+  KEY_Cyrillic_CAPITAL_GHE* = 0x000006E7
+  KEY_Cyrillic_CAPITAL_HA* = 0x000006E8
+  KEY_Cyrillic_CAPITAL_I* = 0x000006E9
+  KEY_Cyrillic_CAPITAL_SHORTI* = 0x000006EA
+  KEY_Cyrillic_CAPITAL_KA* = 0x000006EB
+  KEY_Cyrillic_CAPITAL_EL* = 0x000006EC
+  KEY_Cyrillic_CAPITAL_EM* = 0x000006ED
+  KEY_Cyrillic_CAPITAL_EN* = 0x000006EE
+  KEY_Cyrillic_CAPITAL_O* = 0x000006EF
+  KEY_Cyrillic_CAPITAL_PE* = 0x000006F0
+  KEY_Cyrillic_CAPITAL_YA* = 0x000006F1
+  KEY_Cyrillic_CAPITAL_ER* = 0x000006F2
+  KEY_Cyrillic_CAPITAL_ES* = 0x000006F3
+  KEY_Cyrillic_CAPITAL_TE* = 0x000006F4
+  KEY_Cyrillic_CAPITAL_U* = 0x000006F5
+  KEY_Cyrillic_CAPITAL_ZHE* = 0x000006F6
+  KEY_Cyrillic_CAPITAL_VE* = 0x000006F7
+  KEY_Cyrillic_CAPITAL_SOFTSIGN* = 0x000006F8
+  KEY_Cyrillic_CAPITAL_YERU* = 0x000006F9
+  KEY_Cyrillic_CAPITAL_ZE* = 0x000006FA
+  KEY_Cyrillic_CAPITAL_SHA* = 0x000006FB
+  KEY_Cyrillic_CAPITAL_E* = 0x000006FC
+  KEY_Cyrillic_CAPITAL_SHCHA* = 0x000006FD
+  KEY_Cyrillic_CAPITAL_CHE* = 0x000006FE
+  KEY_Cyrillic_CAPITAL_HARDSIGN* = 0x000006FF
+  KEY_Greek_CAPITAL_ALPHAaccent* = 0x000007A1
+  KEY_Greek_CAPITAL_EPSILONaccent* = 0x000007A2
+  KEY_Greek_CAPITAL_ETAaccent* = 0x000007A3
+  KEY_Greek_CAPITAL_IOTAaccent* = 0x000007A4
+  KEY_Greek_CAPITAL_IOTAdiaeresis* = 0x000007A5
+  KEY_Greek_CAPITAL_OMICRONaccent* = 0x000007A7
+  KEY_Greek_CAPITAL_UPSILONaccent* = 0x000007A8
+  KEY_Greek_CAPITAL_UPSILONdieresis* = 0x000007A9
+  KEY_Greek_CAPITAL_OMEGAaccent* = 0x000007AB
+  KEY_Greek_accentdieresis* = 0x000007AE
+  KEY_Greek_horizbar* = 0x000007AF
+  KEY_Greek_alphaaccent* = 0x000007B1
+  KEY_Greek_epsilonaccent* = 0x000007B2
+  KEY_Greek_etaaccent* = 0x000007B3
+  KEY_Greek_iotaaccent* = 0x000007B4
+  KEY_Greek_iotadieresis* = 0x000007B5
+  KEY_Greek_iotaaccentdieresis* = 0x000007B6
+  KEY_Greek_omicronaccent* = 0x000007B7
+  KEY_Greek_upsilonaccent* = 0x000007B8
+  KEY_Greek_upsilondieresis* = 0x000007B9
+  KEY_Greek_upsilonaccentdieresis* = 0x000007BA
+  KEY_Greek_omegaaccent* = 0x000007BB
+  KEY_Greek_CAPITAL_ALPHA* = 0x000007C1
+  KEY_Greek_CAPITAL_BETA* = 0x000007C2
+  KEY_Greek_CAPITAL_GAMMA* = 0x000007C3
+  KEY_Greek_CAPITAL_DELTA* = 0x000007C4
+  KEY_Greek_CAPITAL_EPSILON* = 0x000007C5
+  KEY_Greek_CAPITAL_ZETA* = 0x000007C6
+  KEY_Greek_CAPITAL_ETA* = 0x000007C7
+  KEY_Greek_CAPITAL_THETA* = 0x000007C8
+  KEY_Greek_CAPITAL_IOTA* = 0x000007C9
+  KEY_Greek_CAPITAL_KAPPA* = 0x000007CA
+  KEY_Greek_CAPITAL_LAMDA* = 0x000007CB
+  KEY_Greek_CAPITAL_LAMBDA* = 0x000007CB
+  KEY_Greek_CAPITAL_MU* = 0x000007CC
+  KEY_Greek_CAPITAL_NU* = 0x000007CD
+  KEY_Greek_CAPITAL_XI* = 0x000007CE
+  KEY_Greek_CAPITAL_OMICRON* = 0x000007CF
+  KEY_Greek_CAPITAL_PI* = 0x000007D0
+  KEY_Greek_CAPITAL_RHO* = 0x000007D1
+  KEY_Greek_CAPITAL_SIGMA* = 0x000007D2
+  KEY_Greek_CAPITAL_TAU* = 0x000007D4
+  KEY_Greek_CAPITAL_UPSILON* = 0x000007D5
+  KEY_Greek_CAPITAL_PHI* = 0x000007D6
+  KEY_Greek_CAPITAL_CHI* = 0x000007D7
+  KEY_Greek_CAPITAL_PSI* = 0x000007D8
+  KEY_Greek_CAPITAL_OMEGA* = 0x000007D9
+  KEY_Greek_alpha* = 0x000007E1
+  KEY_Greek_beta* = 0x000007E2
+  KEY_Greek_gamma* = 0x000007E3
+  KEY_Greek_delta* = 0x000007E4
+  KEY_Greek_epsilon* = 0x000007E5
+  KEY_Greek_zeta* = 0x000007E6
+  KEY_Greek_eta* = 0x000007E7
+  KEY_Greek_theta* = 0x000007E8
+  KEY_Greek_iota* = 0x000007E9
+  KEY_Greek_kappa* = 0x000007EA
+  KEY_Greek_lamda* = 0x000007EB
+  KEY_Greek_lambda* = 0x000007EB
+  KEY_Greek_mu* = 0x000007EC
+  KEY_Greek_nu* = 0x000007ED
+  KEY_Greek_xi* = 0x000007EE
+  KEY_Greek_omicron* = 0x000007EF
+  KEY_Greek_pi* = 0x000007F0
+  KEY_Greek_rho* = 0x000007F1
+  KEY_Greek_sigma* = 0x000007F2
+  KEY_Greek_finalsmallsigma* = 0x000007F3
+  KEY_Greek_tau* = 0x000007F4
+  KEY_Greek_upsilon* = 0x000007F5
+  KEY_Greek_phi* = 0x000007F6
+  KEY_Greek_chi* = 0x000007F7
+  KEY_Greek_psi* = 0x000007F8
+  KEY_Greek_omega* = 0x000007F9
+  KEY_Greek_switch* = 0x0000FF7E
+  KEY_leftradical* = 0x000008A1
+  KEY_topleftradical* = 0x000008A2
+  KEY_horizconnector* = 0x000008A3
+  KEY_topintegral* = 0x000008A4
+  KEY_botintegral* = 0x000008A5
+  KEY_vertconnector* = 0x000008A6
+  KEY_topleftsqbracket* = 0x000008A7
+  KEY_botleftsqbracket* = 0x000008A8
+  KEY_toprightsqbracket* = 0x000008A9
+  KEY_botrightsqbracket* = 0x000008AA
+  KEY_topleftparens* = 0x000008AB
+  KEY_botleftparens* = 0x000008AC
+  KEY_toprightparens* = 0x000008AD
+  KEY_botrightparens* = 0x000008AE
+  KEY_leftmiddlecurlybrace* = 0x000008AF
+  KEY_rightmiddlecurlybrace* = 0x000008B0
+  KEY_topleftsummation* = 0x000008B1
+  KEY_botleftsummation* = 0x000008B2
+  KEY_topvertsummationconnector* = 0x000008B3
+  KEY_botvertsummationconnector* = 0x000008B4
+  KEY_toprightsummation* = 0x000008B5
+  KEY_botrightsummation* = 0x000008B6
+  KEY_rightmiddlesummation* = 0x000008B7
+  KEY_lessthanequal* = 0x000008BC
+  KEY_notequal* = 0x000008BD
+  KEY_greaterthanequal* = 0x000008BE
+  KEY_integral* = 0x000008BF
+  KEY_therefore* = 0x000008C0
+  KEY_variation* = 0x000008C1
+  KEY_infinity* = 0x000008C2
+  KEY_nabla* = 0x000008C5
+  KEY_approximate* = 0x000008C8
+  KEY_similarequal* = 0x000008C9
+  KEY_ifonlyif* = 0x000008CD
+  KEY_implies* = 0x000008CE
+  KEY_identical* = 0x000008CF
+  KEY_radical* = 0x000008D6
+  KEY_includedin* = 0x000008DA
+  KEY_includes* = 0x000008DB
+  KEY_intersection* = 0x000008DC
+  KEY_union* = 0x000008DD
+  KEY_logicaland* = 0x000008DE
+  KEY_logicalor* = 0x000008DF
+  KEY_partialderivative* = 0x000008EF
+  KEY_function* = 0x000008F6
+  KEY_leftarrow* = 0x000008FB
+  KEY_uparrow* = 0x000008FC
+  KEY_rightarrow* = 0x000008FD
+  KEY_downarrow* = 0x000008FE
+  KEY_blank* = 0x000009DF
+  KEY_soliddiamond* = 0x000009E0
+  KEY_checkerboard* = 0x000009E1
+  KEY_ht* = 0x000009E2
+  KEY_ff* = 0x000009E3
+  KEY_cr* = 0x000009E4
+  KEY_lf* = 0x000009E5
+  KEY_nl* = 0x000009E8
+  KEY_vt* = 0x000009E9
+  KEY_lowrightcorner* = 0x000009EA
+  KEY_uprightcorner* = 0x000009EB
+  KEY_upleftcorner* = 0x000009EC
+  KEY_lowleftcorner* = 0x000009ED
+  KEY_crossinglines* = 0x000009EE
+  KEY_horizlinescan1* = 0x000009EF
+  KEY_horizlinescan3* = 0x000009F0
+  KEY_horizlinescan5* = 0x000009F1
+  KEY_horizlinescan7* = 0x000009F2
+  KEY_horizlinescan9* = 0x000009F3
+  KEY_leftt* = 0x000009F4
+  KEY_rightt* = 0x000009F5
+  KEY_bott* = 0x000009F6
+  KEY_topt* = 0x000009F7
+  KEY_vertbar* = 0x000009F8
+  KEY_emspace* = 0x00000AA1
+  KEY_enspace* = 0x00000AA2
+  KEY_em3space* = 0x00000AA3
+  KEY_em4space* = 0x00000AA4
+  KEY_digitspace* = 0x00000AA5
+  KEY_punctspace* = 0x00000AA6
+  KEY_thinspace* = 0x00000AA7
+  KEY_hairspace* = 0x00000AA8
+  KEY_emdash* = 0x00000AA9
+  KEY_endash* = 0x00000AAA
+  KEY_signifblank* = 0x00000AAC
+  KEY_ellipsis* = 0x00000AAE
+  KEY_doubbaselinedot* = 0x00000AAF
+  KEY_onethird* = 0x00000AB0
+  KEY_twothirds* = 0x00000AB1
+  KEY_onefifth* = 0x00000AB2
+  KEY_twofifths* = 0x00000AB3
+  KEY_threefifths* = 0x00000AB4
+  KEY_fourfifths* = 0x00000AB5
+  KEY_onesixth* = 0x00000AB6
+  KEY_fivesixths* = 0x00000AB7
+  KEY_careof* = 0x00000AB8
+  KEY_figdash* = 0x00000ABB
+  KEY_leftanglebracket* = 0x00000ABC
+  KEY_decimalpoint* = 0x00000ABD
+  KEY_rightanglebracket* = 0x00000ABE
+  KEY_marker* = 0x00000ABF
+  KEY_oneeighth* = 0x00000AC3
+  KEY_threeeighths* = 0x00000AC4
+  KEY_fiveeighths* = 0x00000AC5
+  KEY_seveneighths* = 0x00000AC6
+  KEY_trademark* = 0x00000AC9
+  KEY_signaturemark* = 0x00000ACA
+  KEY_trademarkincircle* = 0x00000ACB
+  KEY_leftopentriangle* = 0x00000ACC
+  KEY_rightopentriangle* = 0x00000ACD
+  KEY_emopencircle* = 0x00000ACE
+  KEY_emopenrectangle* = 0x00000ACF
+  KEY_leftsinglequotemark* = 0x00000AD0
+  KEY_rightsinglequotemark* = 0x00000AD1
+  KEY_leftdoublequotemark* = 0x00000AD2
+  KEY_rightdoublequotemark* = 0x00000AD3
+  KEY_prescription* = 0x00000AD4
+  KEY_minutes* = 0x00000AD6
+  KEY_seconds* = 0x00000AD7
+  KEY_latincross* = 0x00000AD9
+  KEY_hexagram* = 0x00000ADA
+  KEY_filledrectbullet* = 0x00000ADB
+  KEY_filledlefttribullet* = 0x00000ADC
+  KEY_filledrighttribullet* = 0x00000ADD
+  KEY_emfilledcircle* = 0x00000ADE
+  KEY_emfilledrect* = 0x00000ADF
+  KEY_enopencircbullet* = 0x00000AE0
+  KEY_enopensquarebullet* = 0x00000AE1
+  KEY_openrectbullet* = 0x00000AE2
+  KEY_opentribulletup* = 0x00000AE3
+  KEY_opentribulletdown* = 0x00000AE4
+  KEY_openstar* = 0x00000AE5
+  KEY_enfilledcircbullet* = 0x00000AE6
+  KEY_enfilledsqbullet* = 0x00000AE7
+  KEY_filledtribulletup* = 0x00000AE8
+  KEY_filledtribulletdown* = 0x00000AE9
+  KEY_leftpointer* = 0x00000AEA
+  KEY_rightpointer* = 0x00000AEB
+  KEY_club* = 0x00000AEC
+  KEY_diamond* = 0x00000AED
+  KEY_heart* = 0x00000AEE
+  KEY_maltesecross* = 0x00000AF0
+  KEY_dagger* = 0x00000AF1
+  KEY_doubledagger* = 0x00000AF2
+  KEY_checkmark* = 0x00000AF3
+  KEY_ballotcross* = 0x00000AF4
+  KEY_musicalsharp* = 0x00000AF5
+  KEY_musicalflat* = 0x00000AF6
+  KEY_malesymbol* = 0x00000AF7
+  KEY_femalesymbol* = 0x00000AF8
+  KEY_telephone* = 0x00000AF9
+  KEY_telephonerecorder* = 0x00000AFA
+  KEY_phonographcopyright* = 0x00000AFB
+  KEY_caret* = 0x00000AFC
+  KEY_singlelowquotemark* = 0x00000AFD
+  KEY_doublelowquotemark* = 0x00000AFE
+  KEY_cursor* = 0x00000AFF
+  KEY_leftcaret* = 0x00000BA3
+  KEY_rightcaret* = 0x00000BA6
+  KEY_downcaret* = 0x00000BA8
+  KEY_upcaret* = 0x00000BA9
+  KEY_overbar* = 0x00000BC0
+  KEY_downtack* = 0x00000BC2
+  KEY_upshoe* = 0x00000BC3
+  KEY_downstile* = 0x00000BC4
+  KEY_underbar* = 0x00000BC6
+  KEY_jot* = 0x00000BCA
+  KEY_quad* = 0x00000BCC
+  KEY_uptack* = 0x00000BCE
+  KEY_circle* = 0x00000BCF
+  KEY_upstile* = 0x00000BD3
+  KEY_downshoe* = 0x00000BD6
+  KEY_rightshoe* = 0x00000BD8
+  KEY_leftshoe* = 0x00000BDA
+  KEY_lefttack* = 0x00000BDC
+  KEY_righttack* = 0x00000BFC
+  KEY_hebrew_doublelowline* = 0x00000CDF
+  KEY_hebrew_aleph* = 0x00000CE0
+  KEY_hebrew_bet* = 0x00000CE1
+  KEY_hebrew_beth* = 0x00000CE1
+  KEY_hebrew_gimel* = 0x00000CE2
+  KEY_hebrew_gimmel* = 0x00000CE2
+  KEY_hebrew_dalet* = 0x00000CE3
+  KEY_hebrew_daleth* = 0x00000CE3
+  KEY_hebrew_he* = 0x00000CE4
+  KEY_hebrew_waw* = 0x00000CE5
+  KEY_hebrew_zain* = 0x00000CE6
+  KEY_hebrew_zayin* = 0x00000CE6
+  KEY_hebrew_chet* = 0x00000CE7
+  KEY_hebrew_het* = 0x00000CE7
+  KEY_hebrew_tet* = 0x00000CE8
+  KEY_hebrew_teth* = 0x00000CE8
+  KEY_hebrew_yod* = 0x00000CE9
+  KEY_hebrew_finalkaph* = 0x00000CEA
+  KEY_hebrew_kaph* = 0x00000CEB
+  KEY_hebrew_lamed* = 0x00000CEC
+  KEY_hebrew_finalmem* = 0x00000CED
+  KEY_hebrew_mem* = 0x00000CEE
+  KEY_hebrew_finalnun* = 0x00000CEF
+  KEY_hebrew_nun* = 0x00000CF0
+  KEY_hebrew_samech* = 0x00000CF1
+  KEY_hebrew_samekh* = 0x00000CF1
+  KEY_hebrew_ayin* = 0x00000CF2
+  KEY_hebrew_finalpe* = 0x00000CF3
+  KEY_hebrew_pe* = 0x00000CF4
+  KEY_hebrew_finalzade* = 0x00000CF5
+  KEY_hebrew_finalzadi* = 0x00000CF5
+  KEY_hebrew_zade* = 0x00000CF6
+  KEY_hebrew_zadi* = 0x00000CF6
+  KEY_hebrew_qoph* = 0x00000CF7
+  KEY_hebrew_kuf* = 0x00000CF7
+  KEY_hebrew_resh* = 0x00000CF8
+  KEY_hebrew_shin* = 0x00000CF9
+  KEY_hebrew_taw* = 0x00000CFA
+  KEY_hebrew_taf* = 0x00000CFA
+  KEY_Hebrew_switch* = 0x0000FF7E
+  KEY_Thai_kokai* = 0x00000DA1
+  KEY_Thai_khokhai* = 0x00000DA2
+  KEY_Thai_khokhuat* = 0x00000DA3
+  KEY_Thai_khokhwai* = 0x00000DA4
+  KEY_Thai_khokhon* = 0x00000DA5
+  KEY_Thai_khorakhang* = 0x00000DA6
+  KEY_Thai_ngongu* = 0x00000DA7
+  KEY_Thai_chochan* = 0x00000DA8
+  KEY_Thai_choching* = 0x00000DA9
+  KEY_Thai_chochang* = 0x00000DAA
+  KEY_Thai_soso* = 0x00000DAB
+  KEY_Thai_chochoe* = 0x00000DAC
+  KEY_Thai_yoying* = 0x00000DAD
+  KEY_Thai_dochada* = 0x00000DAE
+  KEY_Thai_topatak* = 0x00000DAF
+  KEY_Thai_thothan* = 0x00000DB0
+  KEY_Thai_thonangmontho* = 0x00000DB1
+  KEY_Thai_thophuthao* = 0x00000DB2
+  KEY_Thai_nonen* = 0x00000DB3
+  KEY_Thai_dodek* = 0x00000DB4
+  KEY_Thai_totao* = 0x00000DB5
+  KEY_Thai_thothung* = 0x00000DB6
+  KEY_Thai_thothahan* = 0x00000DB7
+  KEY_Thai_thothong* = 0x00000DB8
+  KEY_Thai_nonu* = 0x00000DB9
+  KEY_Thai_bobaimai* = 0x00000DBA
+  KEY_Thai_popla* = 0x00000DBB
+  KEY_Thai_phophung* = 0x00000DBC
+  KEY_Thai_fofa* = 0x00000DBD
+  KEY_Thai_phophan* = 0x00000DBE
+  KEY_Thai_fofan* = 0x00000DBF
+  KEY_Thai_phosamphao* = 0x00000DC0
+  KEY_Thai_moma* = 0x00000DC1
+  KEY_Thai_yoyak* = 0x00000DC2
+  KEY_Thai_rorua* = 0x00000DC3
+  KEY_Thai_ru* = 0x00000DC4
+  KEY_Thai_loling* = 0x00000DC5
+  KEY_Thai_lu* = 0x00000DC6
+  KEY_Thai_wowaen* = 0x00000DC7
+  KEY_Thai_sosala* = 0x00000DC8
+  KEY_Thai_sorusi* = 0x00000DC9
+  KEY_Thai_sosua* = 0x00000DCA
+  KEY_Thai_hohip* = 0x00000DCB
+  KEY_Thai_lochula* = 0x00000DCC
+  KEY_Thai_oang* = 0x00000DCD
+  KEY_Thai_honokhuk* = 0x00000DCE
+  KEY_Thai_paiyannoi* = 0x00000DCF
+  KEY_Thai_saraa* = 0x00000DD0
+  KEY_Thai_maihanakat* = 0x00000DD1
+  KEY_Thai_saraaa* = 0x00000DD2
+  KEY_Thai_saraam* = 0x00000DD3
+  KEY_Thai_sarai* = 0x00000DD4
+  KEY_Thai_saraii* = 0x00000DD5
+  KEY_Thai_saraue* = 0x00000DD6
+  KEY_Thai_sarauee* = 0x00000DD7
+  KEY_Thai_sarau* = 0x00000DD8
+  KEY_Thai_sarauu* = 0x00000DD9
+  KEY_Thai_phinthu* = 0x00000DDA
+  KEY_Thai_maihanakat_maitho* = 0x00000DDE
+  KEY_Thai_baht* = 0x00000DDF
+  KEY_Thai_sarae* = 0x00000DE0
+  KEY_Thai_saraae* = 0x00000DE1
+  KEY_Thai_sarao* = 0x00000DE2
+  KEY_Thai_saraaimaimuan* = 0x00000DE3
+  KEY_Thai_saraaimaimalai* = 0x00000DE4
+  KEY_Thai_lakkhangyao* = 0x00000DE5
+  KEY_Thai_maiyamok* = 0x00000DE6
+  KEY_Thai_maitaikhu* = 0x00000DE7
+  KEY_Thai_maiek* = 0x00000DE8
+  KEY_Thai_maitho* = 0x00000DE9
+  KEY_Thai_maitri* = 0x00000DEA
+  KEY_Thai_maichattawa* = 0x00000DEB
+  KEY_Thai_thanthakhat* = 0x00000DEC
+  KEY_Thai_nikhahit* = 0x00000DED
+  KEY_Thai_leksun* = 0x00000DF0
+  KEY_Thai_leknung* = 0x00000DF1
+  KEY_Thai_leksong* = 0x00000DF2
+  KEY_Thai_leksam* = 0x00000DF3
+  KEY_Thai_leksi* = 0x00000DF4
+  KEY_Thai_lekha* = 0x00000DF5
+  KEY_Thai_lekhok* = 0x00000DF6
+  KEY_Thai_lekchet* = 0x00000DF7
+  KEY_Thai_lekpaet* = 0x00000DF8
+  KEY_Thai_lekkao* = 0x00000DF9
+  KEY_Hangul* = 0x0000FF31
+  KEY_Hangul_Start* = 0x0000FF32
+  KEY_Hangul_End* = 0x0000FF33
+  KEY_Hangul_Hanja* = 0x0000FF34
+  KEY_Hangul_Jamo* = 0x0000FF35
+  KEY_Hangul_Romaja* = 0x0000FF36
+  KEY_Hangul_Codeinput* = 0x0000FF37
+  KEY_Hangul_Jeonja* = 0x0000FF38
+  KEY_Hangul_Banja* = 0x0000FF39
+  KEY_Hangul_PreHanja* = 0x0000FF3A
+  KEY_Hangul_PostHanja* = 0x0000FF3B
+  KEY_Hangul_SingleCandidate* = 0x0000FF3C
+  KEY_Hangul_MultipleCandidate* = 0x0000FF3D
+  KEY_Hangul_PreviousCandidate* = 0x0000FF3E
+  KEY_Hangul_Special* = 0x0000FF3F
+  KEY_Hangul_switch* = 0x0000FF7E
+  KEY_Hangul_Kiyeog* = 0x00000EA1
+  KEY_Hangul_SsangKiyeog* = 0x00000EA2
+  KEY_Hangul_KiyeogSios* = 0x00000EA3
+  KEY_Hangul_Nieun* = 0x00000EA4
+  KEY_Hangul_NieunJieuj* = 0x00000EA5
+  KEY_Hangul_NieunHieuh* = 0x00000EA6
+  KEY_Hangul_Dikeud* = 0x00000EA7
+  KEY_Hangul_SsangDikeud* = 0x00000EA8
+  KEY_Hangul_Rieul* = 0x00000EA9
+  KEY_Hangul_RieulKiyeog* = 0x00000EAA
+  KEY_Hangul_RieulMieum* = 0x00000EAB
+  KEY_Hangul_RieulPieub* = 0x00000EAC
+  KEY_Hangul_RieulSios* = 0x00000EAD
+  KEY_Hangul_RieulTieut* = 0x00000EAE
+  KEY_Hangul_RieulPhieuf* = 0x00000EAF
+  KEY_Hangul_RieulHieuh* = 0x00000EB0
+  KEY_Hangul_Mieum* = 0x00000EB1
+  KEY_Hangul_Pieub* = 0x00000EB2
+  KEY_Hangul_SsangPieub* = 0x00000EB3
+  KEY_Hangul_PieubSios* = 0x00000EB4
+  KEY_Hangul_Sios* = 0x00000EB5
+  KEY_Hangul_SsangSios* = 0x00000EB6
+  KEY_Hangul_Ieung* = 0x00000EB7
+  KEY_Hangul_Jieuj* = 0x00000EB8
+  KEY_Hangul_SsangJieuj* = 0x00000EB9
+  KEY_Hangul_Cieuc* = 0x00000EBA
+  KEY_Hangul_Khieuq* = 0x00000EBB
+  KEY_Hangul_Tieut* = 0x00000EBC
+  KEY_Hangul_Phieuf* = 0x00000EBD
+  KEY_Hangul_Hieuh* = 0x00000EBE
+  KEY_Hangul_A* = 0x00000EBF
+  KEY_Hangul_AE* = 0x00000EC0
+  KEY_Hangul_YA* = 0x00000EC1
+  KEY_Hangul_YAE* = 0x00000EC2
+  KEY_Hangul_EO* = 0x00000EC3
+  KEY_Hangul_E* = 0x00000EC4
+  KEY_Hangul_YEO* = 0x00000EC5
+  KEY_Hangul_YE* = 0x00000EC6
+  KEY_Hangul_O* = 0x00000EC7
+  KEY_Hangul_WA* = 0x00000EC8
+  KEY_Hangul_WAE* = 0x00000EC9
+  KEY_Hangul_OE* = 0x00000ECA
+  KEY_Hangul_YO* = 0x00000ECB
+  KEY_Hangul_U* = 0x00000ECC
+  KEY_Hangul_WEO* = 0x00000ECD
+  KEY_Hangul_WE* = 0x00000ECE
+  KEY_Hangul_WI* = 0x00000ECF
+  KEY_Hangul_YU* = 0x00000ED0
+  KEY_Hangul_EU* = 0x00000ED1
+  KEY_Hangul_YI* = 0x00000ED2
+  KEY_Hangul_I* = 0x00000ED3
+  KEY_Hangul_J_Kiyeog* = 0x00000ED4
+  KEY_Hangul_J_SsangKiyeog* = 0x00000ED5
+  KEY_Hangul_J_KiyeogSios* = 0x00000ED6
+  KEY_Hangul_J_Nieun* = 0x00000ED7
+  KEY_Hangul_J_NieunJieuj* = 0x00000ED8
+  KEY_Hangul_J_NieunHieuh* = 0x00000ED9
+  KEY_Hangul_J_Dikeud* = 0x00000EDA
+  KEY_Hangul_J_Rieul* = 0x00000EDB
+  KEY_Hangul_J_RieulKiyeog* = 0x00000EDC
+  KEY_Hangul_J_RieulMieum* = 0x00000EDD
+  KEY_Hangul_J_RieulPieub* = 0x00000EDE
+  KEY_Hangul_J_RieulSios* = 0x00000EDF
+  KEY_Hangul_J_RieulTieut* = 0x00000EE0
+  KEY_Hangul_J_RieulPhieuf* = 0x00000EE1
+  KEY_Hangul_J_RieulHieuh* = 0x00000EE2
+  KEY_Hangul_J_Mieum* = 0x00000EE3
+  KEY_Hangul_J_Pieub* = 0x00000EE4
+  KEY_Hangul_J_PieubSios* = 0x00000EE5
+  KEY_Hangul_J_Sios* = 0x00000EE6
+  KEY_Hangul_J_SsangSios* = 0x00000EE7
+  KEY_Hangul_J_Ieung* = 0x00000EE8
+  KEY_Hangul_J_Jieuj* = 0x00000EE9
+  KEY_Hangul_J_Cieuc* = 0x00000EEA
+  KEY_Hangul_J_Khieuq* = 0x00000EEB
+  KEY_Hangul_J_Tieut* = 0x00000EEC
+  KEY_Hangul_J_Phieuf* = 0x00000EED
+  KEY_Hangul_J_Hieuh* = 0x00000EEE
+  KEY_Hangul_RieulYeorinHieuh* = 0x00000EEF
+  KEY_Hangul_SunkyeongeumMieum* = 0x00000EF0
+  KEY_Hangul_SunkyeongeumPieub* = 0x00000EF1
+  KEY_Hangul_PanSios* = 0x00000EF2
+  KEY_Hangul_KkogjiDalrinIeung* = 0x00000EF3
+  KEY_Hangul_SunkyeongeumPhieuf* = 0x00000EF4
+  KEY_Hangul_YeorinHieuh* = 0x00000EF5
+  KEY_Hangul_AraeA* = 0x00000EF6
+  KEY_Hangul_AraeAE* = 0x00000EF7
+  KEY_Hangul_J_PanSios* = 0x00000EF8
+  KEY_Hangul_J_KkogjiDalrinIeung* = 0x00000EF9
+  KEY_Hangul_J_YeorinHieuh* = 0x00000EFA
+  KEY_Korean_Won* = 0x00000EFF
+  KEY_EcuSign* = 0x000020A0
+  KEY_ColonSign* = 0x000020A1
+  KEY_CruzeiroSign* = 0x000020A2
+  KEY_FFrancSign* = 0x000020A3
+  KEY_LiraSign* = 0x000020A4
+  KEY_MillSign* = 0x000020A5
+  KEY_NairaSign* = 0x000020A6
+  KEY_PesetaSign* = 0x000020A7
+  KEY_RupeeSign* = 0x000020A8
+  KEY_WonSign* = 0x000020A9
+  KEY_NewSheqelSign* = 0x000020AA
+  KEY_DongSign* = 0x000020AB
+  KEY_EuroSign* = 0x000020AC
+
+proc pango_context_get_for_screen*(screen: PScreen): PContext{.cdecl, 
+    dynlib: lib, importc: "gdk_pango_context_get_for_screen".}
+proc pango_context_set_colormap*(context: PContext, colormap: PColormap){.
+    cdecl, dynlib: lib, importc: "gdk_pango_context_set_colormap".}
+proc pango_layout_line_get_clip_region*(line: PLayoutLine, x_origin: gint, 
+                                        y_origin: gint, index_ranges: Pgint, 
+                                        n_ranges: gint): PRegion{.cdecl, 
+    dynlib: lib, importc: "gdk_pango_layout_line_get_clip_region".}
+proc pango_layout_get_clip_region*(layout: PLayout, x_origin: gint, 
+                                   y_origin: gint, index_ranges: Pgint, 
+                                   n_ranges: gint): PRegion{.cdecl, dynlib: lib, 
+    importc: "gdk_pango_layout_get_clip_region".}
+proc pango_attr_stipple_new*(stipple: PBitmap): PAttribute{.cdecl, 
+    dynlib: lib, importc: "gdk_pango_attr_stipple_new".}
+proc pango_attr_embossed_new*(embossed: gboolean): PAttribute{.cdecl, 
+    dynlib: lib, importc: "gdk_pango_attr_embossed_new".}
+proc render_threshold_alpha*(pixbuf: PPixbuf, bitmap: PBitmap, 
+                                    src_x: int32, src_y: int32, dest_x: int32, 
+                                    dest_y: int32, width: int32, height: int32, 
+                                    alpha_threshold: int32){.cdecl, dynlib: lib, 
+    importc: "gdk_pixbuf_render_threshold_alpha".}
+proc render_to_drawable*(pixbuf: PPixbuf, drawable: PDrawable, gc: PGC, 
+                                src_x: int32, src_y: int32, dest_x: int32, 
+                                dest_y: int32, width: int32, height: int32, 
+                                dither: TRgbDither, x_dither: int32, 
+                                y_dither: int32){.cdecl, dynlib: lib, 
+    importc: "gdk_pixbuf_render_to_drawable".}
+proc render_to_drawable_alpha*(pixbuf: PPixbuf, drawable: PDrawable, 
+                                      src_x: int32, src_y: int32, dest_x: int32, 
+                                      dest_y: int32, width: int32, 
+                                      height: int32, 
+                                      alpha_mode: TPixbufAlphaMode, 
+                                      alpha_threshold: int32, 
+                                      dither: TRgbDither, x_dither: int32, 
+                                      y_dither: int32){.cdecl, dynlib: lib, 
+    importc: "gdk_pixbuf_render_to_drawable_alpha".}
+proc render_pixmap_and_mask_for_colormap*(pixbuf: PPixbuf, 
+    colormap: PColormap, n: var PPixmap, nasdfdsafw4e: var PBitmap, 
+    alpha_threshold: int32){.cdecl, dynlib: lib, importc: "gdk_pixbuf_render_pixmap_and_mask_for_colormap".}
+proc get_from_drawable*(dest: PPixbuf, src: PDrawable, cmap: PColormap, 
+                               src_x: int32, src_y: int32, dest_x: int32, 
+                               dest_y: int32, width: int32, height: int32): PPixbuf{.
+    cdecl, dynlib: lib, importc: "gdk_pixbuf_get_from_drawable".}
+proc get_from_image*(dest: PPixbuf, src: PImage, cmap: PColormap, 
+                            src_x: int32, src_y: int32, dest_x: int32, 
+                            dest_y: int32, width: int32, height: int32): PPixbuf{.
+    cdecl, dynlib: lib, importc: "gdk_pixbuf_get_from_image".}
+proc TYPE_PIXMAP*(): GType
+proc PIXMAP*(anObject: Pointer): PPixmap
+proc PIXMAP_CLASS*(klass: Pointer): PPixmapObjectClass
+proc IS_PIXMAP*(anObject: Pointer): bool
+proc IS_PIXMAP_CLASS*(klass: Pointer): bool
+proc PIXMAP_GET_CLASS*(obj: Pointer): PPixmapObjectClass
+proc PIXMAP_OBJECT*(anObject: Pointer): PPixmapObject
+proc pixmap_get_type*(): GType{.cdecl, dynlib: lib, 
+                                importc: "gdk_pixmap_get_type".}
+proc pixmap_new*(window: PWindow, width: gint, height: gint, depth: gint): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_new".}
+proc bitmap_create_from_data*(window: PWindow, data: cstring, width: gint, 
+                              height: gint): PBitmap{.cdecl, dynlib: lib, 
+    importc: "gdk_bitmap_create_from_data".}
+proc pixmap_create_from_data*(window: PWindow, data: cstring, width: gint, 
+                              height: gint, depth: gint, fg: PColor, bg: PColor): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_create_from_data".}
+proc pixmap_create_from_xpm*(window: PWindow, k: var PBitmap, 
+                             transparent_color: PColor, filename: cstring): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_create_from_xpm".}
+proc pixmap_colormap_create_from_xpm*(window: PWindow, colormap: PColormap, 
+                                      k: var PBitmap, transparent_color: PColor, 
+                                      filename: cstring): PPixmap{.cdecl, 
+    dynlib: lib, importc: "gdk_pixmap_colormap_create_from_xpm".}
+proc pixmap_create_from_xpm_d*(window: PWindow, k: var PBitmap, 
+                               transparent_color: PColor, data: PPgchar): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_create_from_xpm_d".}
+proc pixmap_colormap_create_from_xpm_d*(window: PWindow, colormap: PColormap, 
+                                        k: var PBitmap, 
+                                        transparent_color: PColor, data: PPgchar): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_colormap_create_from_xpm_d".}
+proc pixmap_foreign_new_for_display*(display: PDisplay, anid: TNativeWindow): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_foreign_new_for_display".}
+proc pixmap_lookup_for_display*(display: PDisplay, anid: TNativeWindow): PPixmap{.
+    cdecl, dynlib: lib, importc: "gdk_pixmap_lookup_for_display".}
+proc atom_intern*(atom_name: cstring, only_if_exists: gboolean): TAtom{.cdecl, 
+    dynlib: lib, importc: "gdk_atom_intern".}
+proc atom_name*(atom: TAtom): cstring{.cdecl, dynlib: lib, 
+                                       importc: "gdk_atom_name".}
+proc property_get*(window: PWindow, `property`: TAtom, `type`: TAtom, 
+                   offset: gulong, length: gulong, pdelete: gint, 
+                   actual_property_type: PAtom, actual_format: Pgint, 
+                   actual_length: Pgint, data: PPguchar): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_property_get".}
+proc property_change*(window: PWindow, `property`: TAtom, `type`: TAtom, 
+                      format: gint, mode: TPropMode, data: Pguchar, 
+                      nelements: gint){.cdecl, dynlib: lib, 
+                                        importc: "gdk_property_change".}
+proc property_delete*(window: PWindow, `property`: TAtom){.cdecl, dynlib: lib, 
+    importc: "gdk_property_delete".}
+proc text_property_to_text_list_for_display*(display: PDisplay, encoding: TAtom, 
+    format: gint, text: Pguchar, length: gint, t: var PPgchar): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_text_property_to_text_list_for_display".}
+proc text_property_to_utf8_list_for_display*(display: PDisplay, encoding: TAtom, 
+    format: gint, text: Pguchar, length: gint, t: var PPgchar): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_text_property_to_utf8_list_for_display".}
+proc utf8_to_string_target*(str: cstring): cstring{.cdecl, dynlib: lib, 
     importc: "gdk_utf8_to_string_target".}
-proc gdk_string_to_compound_text_for_display*(display: PGdkDisplay, str: cstring,
-    encoding: PGdkAtom, format: Pgint, ctext: PPguchar, length: Pgint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_string_to_compound_text_for_display".}
-proc gdk_utf8_to_compound_text_for_display*(display: PGdkDisplay, str: cstring,
-    encoding: PGdkAtom, format: Pgint, ctext: PPguchar, length: Pgint): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_utf8_to_compound_text_for_display".}
-proc gdk_free_text_list*(list: PPgchar){.cdecl, dynlib: gdklib,
-    importc: "gdk_free_text_list".}
-proc gdk_free_compound_text*(ctext: Pguchar){.cdecl, dynlib: gdklib,
+proc string_to_compound_text_for_display*(display: PDisplay, str: cstring, 
+    encoding: PAtom, format: Pgint, ctext: PPguchar, length: Pgint): gint{.
+    cdecl, dynlib: lib, importc: "gdk_string_to_compound_text_for_display".}
+proc utf8_to_compound_text_for_display*(display: PDisplay, str: cstring, 
+                                        encoding: PAtom, format: Pgint, 
+                                        ctext: PPguchar, length: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_utf8_to_compound_text_for_display".}
+proc free_text_list*(list: PPgchar){.cdecl, dynlib: lib, 
+                                     importc: "gdk_free_text_list".}
+proc free_compound_text*(ctext: Pguchar){.cdecl, dynlib: lib, 
     importc: "gdk_free_compound_text".}
-proc gdk_region_new*(): PGdkRegion{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_region_new".}
-proc gdk_region_polygon*(points: PGdkPoint, npoints: gint,
-                         fill_rule: TGdkFillRule): PGdkRegion{.cdecl,
-    dynlib: gdklib, importc: "gdk_region_polygon".}
-proc gdk_region_copy*(region: PGdkRegion): PGdkRegion{.cdecl, dynlib: gdklib,
+proc region_new*(): PRegion{.cdecl, dynlib: lib, importc: "gdk_region_new".}
+proc region_polygon*(points: PPoint, npoints: gint, fill_rule: TFillRule): PRegion{.
+    cdecl, dynlib: lib, importc: "gdk_region_polygon".}
+proc copy*(region: PRegion): PRegion{.cdecl, dynlib: lib, 
     importc: "gdk_region_copy".}
-proc gdk_region_rectangle*(rectangle: PGdkRectangle): PGdkRegion{.cdecl,
-    dynlib: gdklib, importc: "gdk_region_rectangle".}
-proc gdk_region_destroy*(region: PGdkRegion){.cdecl, dynlib: gdklib,
-    importc: "gdk_region_destroy".}
-proc gdk_region_get_clipbox*(region: PGdkRegion, rectangle: PGdkRectangle){.
-    cdecl, dynlib: gdklib, importc: "gdk_region_get_clipbox".}
-proc gdk_region_get_rectangles*(region: PGdkRegion, s: var PGdkRectangle,
-                                n_rectangles: Pgint){.cdecl, dynlib: gdklib,
+proc region_rectangle*(rectangle: PRectangle): PRegion{.cdecl, dynlib: lib, 
+    importc: "gdk_region_rectangle".}
+proc destroy*(region: PRegion){.cdecl, dynlib: lib, 
+                                       importc: "gdk_region_destroy".}
+proc get_clipbox*(region: PRegion, rectangle: PRectangle){.cdecl, 
+    dynlib: lib, importc: "gdk_region_get_clipbox".}
+proc get_rectangles*(region: PRegion, s: var PRectangle, 
+                            n_rectangles: Pgint){.cdecl, dynlib: lib, 
     importc: "gdk_region_get_rectangles".}
-proc gdk_region_empty*(region: PGdkRegion): gboolean{.cdecl, dynlib: gdklib,
+proc empty*(region: PRegion): gboolean{.cdecl, dynlib: lib, 
     importc: "gdk_region_empty".}
-proc gdk_region_equal*(region1: PGdkRegion, region2: PGdkRegion): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_region_equal".}
-proc gdk_region_point_in*(region: PGdkRegion, x: int32, y: int32): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_region_point_in".}
-proc gdk_region_rect_in*(region: PGdkRegion, rect: PGdkRectangle): TGdkOverlapType{.
-    cdecl, dynlib: gdklib, importc: "gdk_region_rect_in".}
-proc gdk_region_offset*(region: PGdkRegion, dx: gint, dy: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_region_offset".}
-proc gdk_region_shrink*(region: PGdkRegion, dx: gint, dy: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_region_shrink".}
-proc gdk_region_union_with_rect*(region: PGdkRegion, rect: PGdkRectangle){.
-    cdecl, dynlib: gdklib, importc: "gdk_region_union_with_rect".}
-proc gdk_region_intersect*(source1: PGdkRegion, source2: PGdkRegion){.cdecl,
-    dynlib: gdklib, importc: "gdk_region_intersect".}
-proc gdk_region_union*(source1: PGdkRegion, source2: PGdkRegion){.cdecl,
-    dynlib: gdklib, importc: "gdk_region_union".}
-proc gdk_region_subtract*(source1: PGdkRegion, source2: PGdkRegion){.cdecl,
-    dynlib: gdklib, importc: "gdk_region_subtract".}
-proc gdk_region_xor*(source1: PGdkRegion, source2: PGdkRegion){.cdecl,
-    dynlib: gdklib, importc: "gdk_region_xor".}
-proc gdk_region_spans_intersect_foreach*(region: PGdkRegion, spans: PGdkSpan,
-    n_spans: int32, sorted: gboolean, `function`: TGdkSpanFunc, data: gpointer){.
-    cdecl, dynlib: gdklib, importc: "gdk_region_spans_intersect_foreach".}
-proc gdk_rgb_find_color*(colormap: PGdkColormap, color: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_rgb_find_color".}
-proc gdk_draw_rgb_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint,
-                         width: gint, height: gint, dith: TGdkRgbDither,
-                         rgb_buf: Pguchar, rowstride: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_draw_rgb_image".}
-proc gdk_draw_rgb_image_dithalign*(drawable: PGdkDrawable, gc: PGdkGC, x: gint,
-                                   y: gint, width: gint, height: gint,
-                                   dith: TGdkRgbDither, rgb_buf: Pguchar,
-                                   rowstride: gint, xdith: gint, ydith: gint){.
-    cdecl, dynlib: gdklib, importc: "gdk_draw_rgb_image_dithalign".}
-proc gdk_draw_rgb_32_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint,
-                            y: gint, width: gint, height: gint,
-                            dith: TGdkRgbDither, buf: Pguchar, rowstride: gint){.
-    cdecl, dynlib: gdklib, importc: "gdk_draw_rgb_32_image".}
-proc gdk_draw_rgb_32_image_dithalign*(drawable: PGdkDrawable, gc: PGdkGC,
-                                      x: gint, y: gint, width: gint,
-                                      height: gint, dith: TGdkRgbDither,
-                                      buf: Pguchar, rowstride: gint,
-                                      xdith: gint, ydith: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_draw_rgb_32_image_dithalign".}
-proc gdk_draw_gray_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint, y: gint,
-                          width: gint, height: gint, dith: TGdkRgbDither,
-                          buf: Pguchar, rowstride: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_draw_gray_image".}
-proc gdk_draw_indexed_image*(drawable: PGdkDrawable, gc: PGdkGC, x: gint,
-                             y: gint, width: gint, height: gint,
-                             dith: TGdkRgbDither, buf: Pguchar, rowstride: gint,
-                             cmap: PGdkRgbCmap){.cdecl, dynlib: gdklib,
-    importc: "gdk_draw_indexed_image".}
-proc gdk_rgb_cmap_new*(colors: Pguint32, n_colors: gint): PGdkRgbCmap{.cdecl,
-    dynlib: gdklib, importc: "gdk_rgb_cmap_new".}
-proc gdk_rgb_cmap_free*(cmap: PGdkRgbCmap){.cdecl, dynlib: gdklib,
-    importc: "gdk_rgb_cmap_free".}
-proc gdk_rgb_set_verbose*(verbose: gboolean){.cdecl, dynlib: gdklib,
+proc equal*(region1: PRegion, region2: PRegion): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_region_equal".}
+proc point_in*(region: PRegion, x: int32, y: int32): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_region_point_in".}
+proc rect_in*(region: PRegion, rect: PRectangle): TOverlapType{.cdecl, 
+    dynlib: lib, importc: "gdk_region_rect_in".}
+proc offset*(region: PRegion, dx: gint, dy: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_region_offset".}
+proc shrink*(region: PRegion, dx: gint, dy: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_region_shrink".}
+proc union_with_rect*(region: PRegion, rect: PRectangle){.cdecl, 
+    dynlib: lib, importc: "gdk_region_union_with_rect".}
+proc intersect*(source1: PRegion, source2: PRegion){.cdecl, dynlib: lib, 
+    importc: "gdk_region_intersect".}
+proc union*(source1: PRegion, source2: PRegion){.cdecl, dynlib: lib, 
+    importc: "gdk_region_union".}
+proc subtract*(source1: PRegion, source2: PRegion){.cdecl, dynlib: lib, 
+    importc: "gdk_region_subtract".}
+proc `xor`*(source1: PRegion, source2: PRegion){.cdecl, dynlib: lib, 
+    importc: "gdk_region_xor".}
+proc spans_intersect_foreach*(region: PRegion, spans: PSpan, 
+                                     n_spans: int32, sorted: gboolean, 
+                                     `function`: TSpanFunc, data: gpointer){.
+    cdecl, dynlib: lib, importc: "gdk_region_spans_intersect_foreach".}
+proc rgb_find_color*(colormap: PColormap, color: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_rgb_find_color".}
+proc rgb_image*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                     width: gint, height: gint, dith: TRgbDither, 
+                     rgb_buf: Pguchar, rowstride: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_draw_rgb_image".}
+proc rgb_image_dithalign*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                               width: gint, height: gint, dith: TRgbDither, 
+                               rgb_buf: Pguchar, rowstride: gint, xdith: gint, 
+                               ydith: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_draw_rgb_image_dithalign".}
+proc rgb_32_image*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                        width: gint, height: gint, dith: TRgbDither, 
+                        buf: Pguchar, rowstride: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_draw_rgb_32_image".}
+proc rgb_32_image_dithalign*(drawable: PDrawable, gc: PGC, x: gint, 
+                                  y: gint, width: gint, height: gint, 
+                                  dith: TRgbDither, buf: Pguchar, 
+                                  rowstride: gint, xdith: gint, ydith: gint){.
+    cdecl, dynlib: lib, importc: "gdk_draw_rgb_32_image_dithalign".}
+proc gray_image*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                      width: gint, height: gint, dith: TRgbDither, buf: Pguchar, 
+                      rowstride: gint){.cdecl, dynlib: lib, 
+                                        importc: "gdk_draw_gray_image".}
+proc indexed_image*(drawable: PDrawable, gc: PGC, x: gint, y: gint, 
+                         width: gint, height: gint, dith: TRgbDither, 
+                         buf: Pguchar, rowstride: gint, cmap: PRgbCmap){.cdecl, 
+    dynlib: lib, importc: "gdk_draw_indexed_image".}
+proc rgb_cmap_new*(colors: Pguint32, n_colors: gint): PRgbCmap{.cdecl, 
+    dynlib: lib, importc: "gdk_rgb_cmap_new".}
+proc free*(cmap: PRgbCmap){.cdecl, dynlib: lib, 
+                                     importc: "gdk_rgb_cmap_free".}
+proc rgb_set_verbose*(verbose: gboolean){.cdecl, dynlib: lib, 
     importc: "gdk_rgb_set_verbose".}
-proc gdk_rgb_set_install*(install: gboolean){.cdecl, dynlib: gdklib,
+proc rgb_set_install*(install: gboolean){.cdecl, dynlib: lib, 
     importc: "gdk_rgb_set_install".}
-proc gdk_rgb_set_min_colors*(min_colors: gint){.cdecl, dynlib: gdklib,
+proc rgb_set_min_colors*(min_colors: gint){.cdecl, dynlib: lib, 
     importc: "gdk_rgb_set_min_colors".}
-proc GDK_TYPE_DISPLAY*(): GType
-proc GDK_DISPLAY_OBJECT*(anObject: pointer): PGdkDisplay
-proc GDK_DISPLAY_CLASS*(klass: pointer): PGdkDisplayClass
-proc GDK_IS_DISPLAY*(anObject: pointer): bool
-proc GDK_IS_DISPLAY_CLASS*(klass: pointer): bool
-proc GDK_DISPLAY_GET_CLASS*(obj: pointer): PGdkDisplayClass
-proc gdk_display_open*(display_name: cstring): PGdkDisplay{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_open".}
-proc gdk_display_get_name*(display: PGdkDisplay): cstring{.cdecl, dynlib: gdklib,
+proc TYPE_DISPLAY*(): GType
+proc DISPLAY_OBJECT*(anObject: pointer): PDisplay
+proc DISPLAY_CLASS*(klass: pointer): PDisplayClass
+proc IS_DISPLAY*(anObject: pointer): bool
+proc IS_DISPLAY_CLASS*(klass: pointer): bool
+proc DISPLAY_GET_CLASS*(obj: pointer): PDisplayClass
+proc display_open*(display_name: cstring): PDisplay{.cdecl, dynlib: lib, 
+    importc: "gdk_display_open".}
+proc get_name*(display: PDisplay): cstring{.cdecl, dynlib: lib, 
     importc: "gdk_display_get_name".}
-proc gdk_display_get_n_screens*(display: PGdkDisplay): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_get_n_screens".}
-proc gdk_display_get_screen*(display: PGdkDisplay, screen_num: gint): PGdkScreen{.
-    cdecl, dynlib: gdklib, importc: "gdk_display_get_screen".}
-proc gdk_display_get_default_screen*(display: PGdkDisplay): PGdkScreen{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_get_default_screen".}
-proc gdk_display_pointer_ungrab*(display: PGdkDisplay, time: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_display_pointer_ungrab".}
-proc gdk_display_keyboard_ungrab*(display: PGdkDisplay, time: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_display_keyboard_ungrab".}
-proc gdk_display_pointer_is_grabbed*(display: PGdkDisplay): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_pointer_is_grabbed".}
-proc gdk_display_beep*(display: PGdkDisplay){.cdecl, dynlib: gdklib,
-    importc: "gdk_display_beep".}
-proc gdk_display_sync*(display: PGdkDisplay){.cdecl, dynlib: gdklib,
-    importc: "gdk_display_sync".}
-proc gdk_display_close*(display: PGdkDisplay){.cdecl, dynlib: gdklib,
-    importc: "gdk_display_close".}
-proc gdk_display_list_devices*(display: PGdkDisplay): PGList{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_list_devices".}
-proc gdk_display_get_event*(display: PGdkDisplay): PGdkEvent{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_get_event".}
-proc gdk_display_peek_event*(display: PGdkDisplay): PGdkEvent{.cdecl,
-    dynlib: gdklib, importc: "gdk_display_peek_event".}
-proc gdk_display_put_event*(display: PGdkDisplay, event: PGdkEvent){.cdecl,
-    dynlib: gdklib, importc: "gdk_display_put_event".}
-proc gdk_display_add_client_message_filter*(display: PGdkDisplay,
-    message_type: TGdkAtom, func: TGdkFilterFunc, data: gpointer){.cdecl,
-    dynlib: gdklib, importc: "gdk_display_add_client_message_filter".}
-proc gdk_display_set_double_click_time*(display: PGdkDisplay, msec: guint){.
-    cdecl, dynlib: gdklib, importc: "gdk_display_set_double_click_time".}
-proc gdk_display_set_sm_client_id*(display: PGdkDisplay, sm_client_id: cstring){.
-    cdecl, dynlib: gdklib, importc: "gdk_display_set_sm_client_id".}
-proc gdk_set_default_display*(display: PGdkDisplay){.cdecl, dynlib: gdklib,
+proc get_n_screens*(display: PDisplay): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_display_get_n_screens".}
+proc get_screen*(display: PDisplay, screen_num: gint): PScreen{.cdecl, 
+    dynlib: lib, importc: "gdk_display_get_screen".}
+proc get_default_screen*(display: PDisplay): PScreen{.cdecl, 
+    dynlib: lib, importc: "gdk_display_get_default_screen".}
+proc pointer_ungrab*(display: PDisplay, time: guint32){.cdecl, 
+    dynlib: lib, importc: "gdk_display_pointer_ungrab".}
+proc keyboard_ungrab*(display: PDisplay, time: guint32){.cdecl, 
+    dynlib: lib, importc: "gdk_display_keyboard_ungrab".}
+proc pointer_is_grabbed*(display: PDisplay): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_display_pointer_is_grabbed".}
+proc beep*(display: PDisplay){.cdecl, dynlib: lib, 
+                                       importc: "gdk_display_beep".}
+proc sync*(display: PDisplay){.cdecl, dynlib: lib, 
+                                       importc: "gdk_display_sync".}
+proc close*(display: PDisplay){.cdecl, dynlib: lib, 
+                                        importc: "gdk_display_close".}
+proc list_devices*(display: PDisplay): PGList{.cdecl, dynlib: lib, 
+    importc: "gdk_display_list_devices".}
+proc get_event*(display: PDisplay): PEvent{.cdecl, dynlib: lib, 
+    importc: "gdk_display_get_event".}
+proc peek_event*(display: PDisplay): PEvent{.cdecl, dynlib: lib, 
+    importc: "gdk_display_peek_event".}
+proc put_event*(display: PDisplay, event: PEvent){.cdecl, dynlib: lib, 
+    importc: "gdk_display_put_event".}
+proc add_client_message_filter*(display: PDisplay, message_type: TAtom, 
+                                        func: TFilterFunc, data: gpointer){.
+    cdecl, dynlib: lib, importc: "gdk_display_add_client_message_filter".}
+proc set_double_click_time*(display: PDisplay, msec: guint){.cdecl, 
+    dynlib: lib, importc: "gdk_display_set_double_click_time".}
+proc set_sm_client_id*(display: PDisplay, sm_client_id: cstring){.cdecl, 
+    dynlib: lib, importc: "gdk_display_set_sm_client_id".}
+proc set_default_display*(display: PDisplay){.cdecl, dynlib: lib, 
     importc: "gdk_set_default_display".}
-proc gdk_get_default_display*(): PGdkDisplay{.cdecl, dynlib: gdklib,
-    importc: "gdk_get_default_display".}
-proc GDK_TYPE_SCREEN*(): GType
-proc GDK_SCREEN*(anObject: Pointer): PGdkScreen
-proc GDK_SCREEN_CLASS*(klass: Pointer): PGdkScreenClass
-proc GDK_IS_SCREEN*(anObject: Pointer): bool
-proc GDK_IS_SCREEN_CLASS*(klass: Pointer): bool
-proc GDK_SCREEN_GET_CLASS*(obj: Pointer): PGdkScreenClass
-proc gdk_screen_get_default_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_default_colormap".}
-proc gdk_screen_set_default_colormap*(screen: PGdkScreen, colormap: PGdkColormap){.
-    cdecl, dynlib: gdklib, importc: "gdk_screen_set_default_colormap".}
-proc gdk_screen_get_system_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_system_colormap".}
-proc gdk_screen_get_system_visual*(screen: PGdkScreen): PGdkVisual{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_system_visual".}
-proc gdk_screen_get_rgb_colormap*(screen: PGdkScreen): PGdkColormap{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_rgb_colormap".}
-proc gdk_screen_get_rgb_visual*(screen: PGdkScreen): PGdkVisual{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_rgb_visual".}
-proc gdk_screen_get_root_window*(screen: PGdkScreen): PGdkWindow{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_root_window".}
-proc gdk_screen_get_display*(screen: PGdkScreen): PGdkDisplay{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_display".}
-proc gdk_screen_get_number*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib,
+proc get_default_display*(): PDisplay{.cdecl, dynlib: lib, 
+                                       importc: "gdk_get_default_display".}
+proc TYPE_SCREEN*(): GType
+proc SCREEN*(anObject: Pointer): PScreen
+proc SCREEN_CLASS*(klass: Pointer): PScreenClass
+proc IS_SCREEN*(anObject: Pointer): bool
+proc IS_SCREEN_CLASS*(klass: Pointer): bool
+proc SCREEN_GET_CLASS*(obj: Pointer): PScreenClass
+proc get_default_colormap*(screen: PScreen): PColormap{.cdecl, 
+    dynlib: lib, importc: "gdk_screen_get_default_colormap".}
+proc set_default_colormap*(screen: PScreen, colormap: PColormap){.cdecl, 
+    dynlib: lib, importc: "gdk_screen_set_default_colormap".}
+proc get_system_colormap*(screen: PScreen): PColormap{.cdecl, 
+    dynlib: lib, importc: "gdk_screen_get_system_colormap".}
+proc get_system_visual*(screen: PScreen): PVisual{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_system_visual".}
+proc get_rgb_colormap*(screen: PScreen): PColormap{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_rgb_colormap".}
+proc get_rgb_visual*(screen: PScreen): PVisual{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_rgb_visual".}
+proc get_root_window*(screen: PScreen): PWindow{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_root_window".}
+proc get_display*(screen: PScreen): PDisplay{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_display".}
+proc get_number*(screen: PScreen): gint{.cdecl, dynlib: lib, 
     importc: "gdk_screen_get_number".}
-proc gdk_screen_get_window_at_pointer*(screen: PGdkScreen, win_x: Pgint,
-                                       win_y: Pgint): PGdkWindow{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_window_at_pointer".}
-proc gdk_screen_get_width*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib,
+proc get_window_at_pointer*(screen: PScreen, win_x: Pgint, win_y: Pgint): PWindow{.
+    cdecl, dynlib: lib, importc: "gdk_screen_get_window_at_pointer".}
+proc get_width*(screen: PScreen): gint{.cdecl, dynlib: lib, 
     importc: "gdk_screen_get_width".}
-proc gdk_screen_get_height*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib,
+proc get_height*(screen: PScreen): gint{.cdecl, dynlib: lib, 
     importc: "gdk_screen_get_height".}
-proc gdk_screen_get_width_mm*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib,
+proc get_width_mm*(screen: PScreen): gint{.cdecl, dynlib: lib, 
     importc: "gdk_screen_get_width_mm".}
-proc gdk_screen_get_height_mm*(screen: PGdkScreen): gint{.cdecl, dynlib: gdklib,
+proc get_height_mm*(screen: PScreen): gint{.cdecl, dynlib: lib, 
     importc: "gdk_screen_get_height_mm".}
-proc gdk_screen_close*(screen: PGdkScreen){.cdecl, dynlib: gdklib,
-    importc: "gdk_screen_close".}
-proc gdk_screen_list_visuals*(screen: PGdkScreen): PGList{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_list_visuals".}
-proc gdk_screen_get_toplevel_windows*(screen: PGdkScreen): PGList{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_toplevel_windows".}
-proc gdk_screen_get_n_monitors*(screen: PGdkScreen): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_n_monitors".}
-proc gdk_screen_get_monitor_geometry*(screen: PGdkScreen, monitor_num: gint,
-                                      dest: PGdkRectangle){.cdecl,
-    dynlib: gdklib, importc: "gdk_screen_get_monitor_geometry".}
-proc gdk_screen_get_monitor_at_point*(screen: PGdkScreen, x: gint, y: gint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_screen_get_monitor_at_point".}
-proc gdk_screen_get_monitor_at_window*(screen: PGdkScreen, window: PGdkWindow): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_screen_get_monitor_at_window".}
-proc gdk_screen_broadcast_client_message*(screen: PGdkScreen, event: PGdkEvent){.
-    cdecl, dynlib: gdklib, importc: "gdk_screen_broadcast_client_message".}
-proc gdk_get_default_screen*(): PGdkScreen{.cdecl, dynlib: gdklib,
-    importc: "gdk_get_default_screen".}
-proc gdk_screen_get_setting*(screen: PGdkScreen, name: cstring, value: PGValue): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_screen_get_setting".}
-proc GDK_SELECTION_PRIMARY*(): TGdkAtom
-proc GDK_SELECTION_SECONDARY*(): TGdkAtom
-proc GDK_SELECTION_CLIPBOARD*(): TGdkAtom
-proc GDK_TARGET_BITMAP*(): TGdkAtom
-proc GDK_TARGET_COLORMAP*(): TGdkAtom
-proc GDK_TARGET_DRAWABLE*(): TGdkAtom
-proc GDK_TARGET_PIXMAP*(): TGdkAtom
-proc GDK_TARGET_STRING*(): TGdkAtom
-proc GDK_SELECTION_TYPE_ATOM*(): TGdkAtom
-proc GDK_SELECTION_TYPE_BITMAP*(): TGdkAtom
-proc GDK_SELECTION_TYPE_COLORMAP*(): TGdkAtom
-proc GDK_SELECTION_TYPE_DRAWABLE*(): TGdkAtom
-proc GDK_SELECTION_TYPE_INTEGER*(): TGdkAtom
-proc GDK_SELECTION_TYPE_PIXMAP*(): TGdkAtom
-proc GDK_SELECTION_TYPE_WINDOW*(): TGdkAtom
-proc GDK_SELECTION_TYPE_STRING*(): TGdkAtom
-proc gdk_selection_owner_set_for_display*(display: PGdkDisplay,
-    owner: PGdkWindow, selection: TGdkAtom, time: guint32, send_event: gboolean): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_selection_owner_set_for_display".}
-proc gdk_selection_owner_get_for_display*(display: PGdkDisplay,
-    selection: TGdkAtom): PGdkWindow{.cdecl, dynlib: gdklib, importc: "gdk_selection_owner_get_for_display".}
-proc gdk_selection_convert*(requestor: PGdkWindow, selection: TGdkAtom,
-                            target: TGdkAtom, time: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_selection_convert".}
-proc gdk_selection_property_get*(requestor: PGdkWindow, data: PPguchar,
-                                 prop_type: PGdkAtom, prop_format: Pgint): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_selection_property_get".}
-proc gdk_selection_send_notify_for_display*(display: PGdkDisplay,
-    requestor: guint32, selection: TGdkAtom, target: TGdkAtom,
-    `property`: TGdkAtom, time: guint32){.cdecl, dynlib: gdklib,
-    importc: "gdk_selection_send_notify_for_display".}
-const
-  GDK_CURRENT_TIME* = 0
-  GDK_PARENT_RELATIVE* = 1
-  GDK_OK* = 0
-  GDK_ERROR* = - (1)
-  GDK_ERROR_PARAM* = - (2)
-  GDK_ERROR_FILE* = - (3)
-  GDK_ERROR_MEM* = - (4)
-  GDK_SHIFT_MASK* = 1 shl 0
-  GDK_LOCK_MASK* = 1 shl 1
-  GDK_CONTROL_MASK* = 1 shl 2
-  GDK_MOD1_MASK* = 1 shl 3
-  GDK_MOD2_MASK* = 1 shl 4
-  GDK_MOD3_MASK* = 1 shl 5
-  GDK_MOD4_MASK* = 1 shl 6
-  GDK_MOD5_MASK* = 1 shl 7
-  GDK_BUTTON1_MASK* = 1 shl 8
-  GDK_BUTTON2_MASK* = 1 shl 9
-  GDK_BUTTON3_MASK* = 1 shl 10
-  GDK_BUTTON4_MASK* = 1 shl 11
-  GDK_BUTTON5_MASK* = 1 shl 12
-  GDK_RELEASE_MASK* = 1 shl 30
-  GDK_MODIFIER_MASK* = ord(GDK_RELEASE_MASK) or 0x00001FFF
-  GDK_INPUT_READ* = 1 shl 0
-  GDK_INPUT_WRITE* = 1 shl 1
-  GDK_INPUT_EXCEPTION* = 1 shl 2
-  GDK_GRAB_SUCCESS* = 0
-  GDK_GRAB_ALREADY_GRABBED* = 1
-  GDK_GRAB_INVALID_TIME* = 2
-  GDK_GRAB_NOT_VIEWABLE* = 3
-  GDK_GRAB_FROZEN* = 4
-
-proc GDK_ATOM_TO_POINTER*(atom: TGdkAtom): Pointer
-proc GDK_POINTER_TO_ATOM*(p: Pointer): TGdkAtom
-proc `GDK_MAKE_ATOM`*(val: guint): TGdkAtom
-proc GDK_NONE*(): TGdkAtom
-proc GDK_TYPE_VISUAL*(): GType
-proc GDK_VISUAL*(anObject: Pointer): PGdkVisual
-proc GDK_VISUAL_CLASS*(klass: Pointer): PGdkVisualClass
-proc GDK_IS_VISUAL*(anObject: Pointer): bool
-proc GDK_IS_VISUAL_CLASS*(klass: Pointer): bool
-proc GDK_VISUAL_GET_CLASS*(obj: Pointer): PGdkVisualClass
-proc gdk_visual_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_visual_get_type".}
-const
-  GDK_WA_TITLE* = 1 shl 1
-  GDK_WA_X* = 1 shl 2
-  GDK_WA_Y* = 1 shl 3
-  GDK_WA_CURSOR* = 1 shl 4
-  GDK_WA_COLORMAP* = 1 shl 5
-  GDK_WA_VISUAL* = 1 shl 6
-  GDK_WA_WMCLASS* = 1 shl 7
-  GDK_WA_NOREDIR* = 1 shl 8
-  GDK_HINT_POS* = 1 shl 0
-  GDK_HINT_MIN_SIZE* = 1 shl 1
-  GDK_HINT_MAX_SIZE* = 1 shl 2
-  GDK_HINT_BASE_SIZE* = 1 shl 3
-  GDK_HINT_ASPECT* = 1 shl 4
-  GDK_HINT_RESIZE_INC* = 1 shl 5
-  GDK_HINT_WIN_GRAVITY* = 1 shl 6
-  GDK_HINT_USER_POS* = 1 shl 7
-  GDK_HINT_USER_SIZE* = 1 shl 8
-  GDK_DECOR_ALL* = 1 shl 0
-  GDK_DECOR_BORDER* = 1 shl 1
-  GDK_DECOR_RESIZEH* = 1 shl 2
-  GDK_DECOR_TITLE* = 1 shl 3
-  GDK_DECOR_MENU* = 1 shl 4
-  GDK_DECOR_MINIMIZE* = 1 shl 5
-  GDK_DECOR_MAXIMIZE* = 1 shl 6
-  GDK_FUNC_ALL* = 1 shl 0
-  GDK_FUNC_RESIZE* = 1 shl 1
-  GDK_FUNC_MOVE* = 1 shl 2
-  GDK_FUNC_MINIMIZE* = 1 shl 3
-  GDK_FUNC_MAXIMIZE* = 1 shl 4
-  GDK_FUNC_CLOSE* = 1 shl 5
-  GDK_GRAVITY_NORTH_WEST* = 1
-  GDK_GRAVITY_NORTH* = 2
-  GDK_GRAVITY_NORTH_EAST* = 3
-  GDK_GRAVITY_WEST* = 4
-  GDK_GRAVITY_CENTER* = 5
-  GDK_GRAVITY_EAST* = 6
-  GDK_GRAVITY_SOUTH_WEST* = 7
-  GDK_GRAVITY_SOUTH* = 8
-  GDK_GRAVITY_SOUTH_EAST* = 9
-  GDK_GRAVITY_STATIC* = 10
-
-proc GDK_TYPE_WINDOW*(): GType
-proc GDK_WINDOW*(anObject: Pointer): PGdkWindow
-proc GDK_WINDOW_CLASS*(klass: Pointer): PGdkWindowObjectClass
-proc GDK_IS_WINDOW*(anObject: Pointer): bool
-proc GDK_IS_WINDOW_CLASS*(klass: Pointer): bool
-proc GDK_WINDOW_GET_CLASS*(obj: Pointer): PGdkWindowObjectClass
-proc GDK_WINDOW_OBJECT*(anObject: Pointer): PGdkWindowObject
-const
-  bm_TGdkWindowObject_guffaw_gravity* = 0x00000001'i16
-  bp_TGdkWindowObject_guffaw_gravity* = 0'i16
-  bm_TGdkWindowObject_input_only* = 0x00000002'i16
-  bp_TGdkWindowObject_input_only* = 1'i16
-  bm_TGdkWindowObject_modal_hint* = 0x00000004'i16
-  bp_TGdkWindowObject_modal_hint* = 2'i16
-  bm_TGdkWindowObject_destroyed* = 0x00000018'i16
-  bp_TGdkWindowObject_destroyed* = 3'i16
-
-proc GdkWindowObject_guffaw_gravity*(a: var TGdkWindowObject): guint
-proc GdkWindowObject_set_guffaw_gravity*(a: var TGdkWindowObject,
-    `guffaw_gravity`: guint)
-proc GdkWindowObject_input_only*(a: var TGdkWindowObject): guint
-proc GdkWindowObject_set_input_only*(a: var TGdkWindowObject,
-                                     `input_only`: guint)
-proc GdkWindowObject_modal_hint*(a: var TGdkWindowObject): guint
-proc GdkWindowObject_set_modal_hint*(a: var TGdkWindowObject,
-                                     `modal_hint`: guint)
-proc GdkWindowObject_destroyed*(a: var TGdkWindowObject): guint
-proc GdkWindowObject_set_destroyed*(a: var TGdkWindowObject, `destroyed`: guint)
-proc gdk_window_object_get_type*(): GType{.cdecl, dynlib: gdklib,
-    importc: "gdk_window_object_get_type".}
-proc gdk_window_new*(parent: PGdkWindow, attributes: PGdkWindowAttr,
-                     attributes_mask: gint): PGdkWindow{.cdecl, dynlib: gdklib,
-    importc: "gdk_window_new".}
-proc gdk_window_destroy*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_destroy".}
-proc gdk_window_get_window_type*(window: PGdkWindow): TGdkWindowType{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_window_type".}
-proc gdk_window_at_pointer*(win_x: Pgint, win_y: Pgint): PGdkWindow{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_at_pointer".}
-proc gdk_window_show*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_show".}
-proc gdk_window_hide*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_hide".}
-proc gdk_window_withdraw*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_withdraw".}
-proc gdk_window_show_unraised*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc close*(screen: PScreen){.cdecl, dynlib: lib, 
+                                     importc: "gdk_screen_close".}
+proc list_visuals*(screen: PScreen): PGList{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_list_visuals".}
+proc get_toplevel_windows*(screen: PScreen): PGList{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_toplevel_windows".}
+proc get_n_monitors*(screen: PScreen): gint{.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_n_monitors".}
+proc get_monitor_geometry*(screen: PScreen, monitor_num: gint, 
+                                  dest: PRectangle){.cdecl, dynlib: lib, 
+    importc: "gdk_screen_get_monitor_geometry".}
+proc get_monitor_at_point*(screen: PScreen, x: gint, y: gint): gint{.
+    cdecl, dynlib: lib, importc: "gdk_screen_get_monitor_at_point".}
+proc get_monitor_at_window*(screen: PScreen, window: PWindow): gint{.
+    cdecl, dynlib: lib, importc: "gdk_screen_get_monitor_at_window".}
+proc broadcast_client_message*(screen: PScreen, event: PEvent){.cdecl, 
+    dynlib: lib, importc: "gdk_screen_broadcast_client_message".}
+proc get_default_screen*(): PScreen{.cdecl, dynlib: lib, 
+                                     importc: "gdk_get_default_screen".}
+proc get_setting*(screen: PScreen, name: cstring, value: PGValue): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_screen_get_setting".}
+proc SELECTION_PRIMARY*(): TAtom
+proc SELECTION_SECONDARY*(): TAtom
+proc SELECTION_CLIPBOARD*(): TAtom
+proc TARGET_BITMAP*(): TAtom
+proc TARGET_COLORMAP*(): TAtom
+proc TARGET_DRAWABLE*(): TAtom
+proc TARGET_PIXMAP*(): TAtom
+proc TARGET_STRING*(): TAtom
+proc SELECTION_TYPE_ATOM*(): TAtom
+proc SELECTION_TYPE_BITMAP*(): TAtom
+proc SELECTION_TYPE_COLORMAP*(): TAtom
+proc SELECTION_TYPE_DRAWABLE*(): TAtom
+proc SELECTION_TYPE_INTEGER*(): TAtom
+proc SELECTION_TYPE_PIXMAP*(): TAtom
+proc SELECTION_TYPE_WINDOW*(): TAtom
+proc SELECTION_TYPE_STRING*(): TAtom
+proc selection_owner_set_for_display*(display: PDisplay, owner: PWindow, 
+                                      selection: TAtom, time: guint32, 
+                                      send_event: gboolean): gboolean{.cdecl, 
+    dynlib: lib, importc: "gdk_selection_owner_set_for_display".}
+proc selection_owner_get_for_display*(display: PDisplay, selection: TAtom): PWindow{.
+    cdecl, dynlib: lib, importc: "gdk_selection_owner_get_for_display".}
+proc selection_convert*(requestor: PWindow, selection: TAtom, target: TAtom, 
+                        time: guint32){.cdecl, dynlib: lib, 
+                                        importc: "gdk_selection_convert".}
+proc selection_property_get*(requestor: PWindow, data: PPguchar, 
+                             prop_type: PAtom, prop_format: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_selection_property_get".}
+proc selection_send_notify_for_display*(display: PDisplay, requestor: guint32, 
+                                        selection: TAtom, target: TAtom, 
+                                        `property`: TAtom, time: guint32){.
+    cdecl, dynlib: lib, importc: "gdk_selection_send_notify_for_display".}
+const 
+  CURRENT_TIME* = 0
+  PARENT_RELATIVE* = 1
+  OK* = 0
+  ERROR* = - (1)
+  ERROR_PARAM* = - (2)
+  ERROR_FILE* = - (3)
+  ERROR_MEM* = - (4)
+  SHIFT_MASK* = 1 shl 0
+  LOCK_MASK* = 1 shl 1
+  CONTROL_MASK* = 1 shl 2
+  MOD1_MASK* = 1 shl 3
+  MOD2_MASK* = 1 shl 4
+  MOD3_MASK* = 1 shl 5
+  MOD4_MASK* = 1 shl 6
+  MOD5_MASK* = 1 shl 7
+  BUTTON1_MASK* = 1 shl 8
+  BUTTON2_MASK* = 1 shl 9
+  BUTTON3_MASK* = 1 shl 10
+  BUTTON4_MASK* = 1 shl 11
+  BUTTON5_MASK* = 1 shl 12
+  RELEASE_MASK* = 1 shl 30
+  MODIFIER_MASK* = ord(RELEASE_MASK) or 0x00001FFF
+  INPUT_READ* = 1 shl 0
+  INPUT_WRITE* = 1 shl 1
+  INPUT_EXCEPTION* = 1 shl 2
+  GRAB_SUCCESS* = 0
+  GRAB_ALREADY_GRABBED* = 1
+  GRAB_INVALID_TIME* = 2
+  GRAB_NOT_VIEWABLE* = 3
+  GRAB_FROZEN* = 4
+
+proc ATOM_TO_POINTER*(atom: TAtom): Pointer
+proc POINTER_TO_ATOM*(p: Pointer): TAtom
+proc `MAKE_ATOM`*(val: guint): TAtom
+proc NONE*(): TAtom
+proc TYPE_VISUAL*(): GType
+proc VISUAL*(anObject: Pointer): PVisual
+proc VISUAL_CLASS*(klass: Pointer): PVisualClass
+proc IS_VISUAL*(anObject: Pointer): bool
+proc IS_VISUAL_CLASS*(klass: Pointer): bool
+proc VISUAL_GET_CLASS*(obj: Pointer): PVisualClass
+proc visual_get_type*(): GType{.cdecl, dynlib: lib, 
+                                importc: "gdk_visual_get_type".}
+const 
+  WA_TITLE* = 1 shl 1
+  WA_X* = 1 shl 2
+  WA_Y* = 1 shl 3
+  WA_CURSOR* = 1 shl 4
+  WA_COLORMAP* = 1 shl 5
+  WA_VISUAL* = 1 shl 6
+  WA_WMCLASS* = 1 shl 7
+  WA_NOREDIR* = 1 shl 8
+  HINT_POS* = 1 shl 0
+  HINT_MIN_SIZE* = 1 shl 1
+  HINT_MAX_SIZE* = 1 shl 2
+  HINT_BASE_SIZE* = 1 shl 3
+  HINT_ASPECT* = 1 shl 4
+  HINT_RESIZE_INC* = 1 shl 5
+  HINT_WIN_GRAVITY* = 1 shl 6
+  HINT_USER_POS* = 1 shl 7
+  HINT_USER_SIZE* = 1 shl 8
+  DECOR_ALL* = 1 shl 0
+  DECOR_BORDER* = 1 shl 1
+  DECOR_RESIZEH* = 1 shl 2
+  DECOR_TITLE* = 1 shl 3
+  DECOR_MENU* = 1 shl 4
+  DECOR_MINIMIZE* = 1 shl 5
+  DECOR_MAXIMIZE* = 1 shl 6
+  FUNC_ALL* = 1 shl 0
+  FUNC_RESIZE* = 1 shl 1
+  FUNC_MOVE* = 1 shl 2
+  FUNC_MINIMIZE* = 1 shl 3
+  FUNC_MAXIMIZE* = 1 shl 4
+  FUNC_CLOSE* = 1 shl 5
+  GRAVITY_NORTH_WEST* = 1
+  GRAVITY_NORTH* = 2
+  GRAVITY_NORTH_EAST* = 3
+  GRAVITY_WEST* = 4
+  GRAVITY_CENTER* = 5
+  GRAVITY_EAST* = 6
+  GRAVITY_SOUTH_WEST* = 7
+  GRAVITY_SOUTH* = 8
+  GRAVITY_SOUTH_EAST* = 9
+  GRAVITY_STATIC* = 10
+
+proc TYPE_WINDOW*(): GType
+proc WINDOW*(anObject: Pointer): PWindow
+proc WINDOW_CLASS*(klass: Pointer): PWindowObjectClass
+proc IS_WINDOW*(anObject: Pointer): bool
+proc IS_WINDOW_CLASS*(klass: Pointer): bool
+proc WINDOW_GET_CLASS*(obj: Pointer): PWindowObjectClass
+proc WINDOW_OBJECT*(anObject: Pointer): PWindowObject
+const 
+  bm_TWindowObject_guffaw_gravity* = 0x0001'i16
+  bp_TWindowObject_guffaw_gravity* = 0'i16
+  bm_TWindowObject_input_only* = 0x0002'i16
+  bp_TWindowObject_input_only* = 1'i16
+  bm_TWindowObject_modal_hint* = 0x0004'i16
+  bp_TWindowObject_modal_hint* = 2'i16
+  bm_TWindowObject_destroyed* = 0x0018'i16
+  bp_TWindowObject_destroyed* = 3'i16
+
+proc WindowObject_guffaw_gravity*(a: var TWindowObject): guint
+proc WindowObject_set_guffaw_gravity*(a: var TWindowObject, 
+                                      `guffaw_gravity`: guint)
+proc WindowObject_input_only*(a: var TWindowObject): guint
+proc WindowObject_set_input_only*(a: var TWindowObject, `input_only`: guint)
+proc WindowObject_modal_hint*(a: var TWindowObject): guint
+proc WindowObject_set_modal_hint*(a: var TWindowObject, `modal_hint`: guint)
+proc WindowObject_destroyed*(a: var TWindowObject): guint
+proc WindowObject_set_destroyed*(a: var TWindowObject, `destroyed`: guint)
+proc window_object_get_type*(): GType{.cdecl, dynlib: lib, 
+                                       importc: "gdk_window_object_get_type".}
+proc new*(parent: PWindow, attributes: PWindowAttr, attributes_mask: gint): PWindow{.
+    cdecl, dynlib: lib, importc: "gdk_window_new".}
+proc destroy*(window: PWindow){.cdecl, dynlib: lib, 
+                                       importc: "gdk_window_destroy".}
+proc get_window_type*(window: PWindow): TWindowType{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_window_type".}
+proc window_at_pointer*(win_x: Pgint, win_y: Pgint): PWindow{.cdecl, 
+    dynlib: lib, importc: "gdk_window_at_pointer".}
+proc show*(window: PWindow){.cdecl, dynlib: lib, 
+                                    importc: "gdk_window_show".}
+proc hide*(window: PWindow){.cdecl, dynlib: lib, 
+                                    importc: "gdk_window_hide".}
+proc withdraw*(window: PWindow){.cdecl, dynlib: lib, 
+                                        importc: "gdk_window_withdraw".}
+proc show_unraised*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_show_unraised".}
-proc gdk_window_move*(window: PGdkWindow, x: gint, y: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_move".}
-proc gdk_window_resize*(window: PGdkWindow, width: gint, height: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_resize".}
-proc gdk_window_move_resize*(window: PGdkWindow, x: gint, y: gint, width: gint,
-                             height: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_move_resize".}
-proc gdk_window_reparent*(window: PGdkWindow, new_parent: PGdkWindow, x: gint,
-                          y: gint){.cdecl, dynlib: gdklib,
-                                    importc: "gdk_window_reparent".}
-proc gdk_window_clear*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_clear".}
-proc gdk_window_clear_area*(window: PGdkWindow, x: gint, y: gint, width: gint,
-                            height: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_clear_area".}
-proc gdk_window_clear_area_e*(window: PGdkWindow, x: gint, y: gint, width: gint,
-                              height: gint){.cdecl, dynlib: gdklib,
+proc move*(window: PWindow, x: gint, y: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_window_move".}
+proc resize*(window: PWindow, width: gint, height: gint){.cdecl, 
+    dynlib: lib, importc: "gdk_window_resize".}
+proc move_resize*(window: PWindow, x: gint, y: gint, width: gint, 
+                         height: gint){.cdecl, dynlib: lib, 
+                                        importc: "gdk_window_move_resize".}
+proc reparent*(window: PWindow, new_parent: PWindow, x: gint, y: gint){.
+    cdecl, dynlib: lib, importc: "gdk_window_reparent".}
+proc clear*(window: PWindow){.cdecl, dynlib: lib, 
+                                     importc: "gdk_window_clear".}
+proc clear_area*(window: PWindow, x: gint, y: gint, width: gint, 
+                        height: gint){.cdecl, dynlib: lib, 
+                                       importc: "gdk_window_clear_area".}
+proc clear_area_e*(window: PWindow, x: gint, y: gint, width: gint, 
+                          height: gint){.cdecl, dynlib: lib, 
     importc: "gdk_window_clear_area_e".}
-proc gdk_window_raise*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_raise".}
-proc gdk_window_lower*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_lower".}
-proc gdk_window_focus*(window: PGdkWindow, timestamp: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_focus".}
-proc gdk_window_set_user_data*(window: PGdkWindow, user_data: gpointer){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_user_data".}
-proc gdk_window_set_override_redirect*(window: PGdkWindow,
-                                       override_redirect: gboolean){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_override_redirect".}
-proc gdk_window_add_filter*(window: PGdkWindow, `function`: TGdkFilterFunc,
-                            data: gpointer){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_add_filter".}
-proc gdk_window_remove_filter*(window: PGdkWindow, `function`: TGdkFilterFunc,
-                               data: gpointer){.cdecl, dynlib: gdklib,
+proc `raise`*(window: PWindow){.cdecl, dynlib: lib, 
+                                importc: "gdk_window_raise".}
+proc lower*(window: PWindow){.cdecl, dynlib: lib, 
+                                     importc: "gdk_window_lower".}
+proc focus*(window: PWindow, timestamp: guint32){.cdecl, dynlib: lib, 
+    importc: "gdk_window_focus".}
+proc set_user_data*(window: PWindow, user_data: gpointer){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_user_data".}
+proc set_override_redirect*(window: PWindow, override_redirect: gboolean){.
+    cdecl, dynlib: lib, importc: "gdk_window_set_override_redirect".}
+proc add_filter*(window: PWindow, `function`: TFilterFunc, data: gpointer){.
+    cdecl, dynlib: lib, importc: "gdk_window_add_filter".}
+proc remove_filter*(window: PWindow, `function`: TFilterFunc, 
+                           data: gpointer){.cdecl, dynlib: lib, 
     importc: "gdk_window_remove_filter".}
-proc gdk_window_scroll*(window: PGdkWindow, dx: gint, dy: gint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_scroll".}
-proc gdk_window_shape_combine_mask*(window: PGdkWindow, mask: PGdkBitmap,
-                                    x: gint, y: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_shape_combine_mask".}
-proc gdk_window_shape_combine_region*(window: PGdkWindow,
-                                      shape_region: PGdkRegion, offset_x: gint,
-                                      offset_y: gint){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_shape_combine_region".}
-proc gdk_window_set_child_shapes*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc scroll*(window: PWindow, dx: gint, dy: gint){.cdecl, dynlib: lib, 
+    importc: "gdk_window_scroll".}
+proc shape_combine_mask*(window: PWindow, mask: PBitmap, x: gint, y: gint){.
+    cdecl, dynlib: lib, importc: "gdk_window_shape_combine_mask".}
+proc shape_combine_region*(window: PWindow, shape_region: PRegion, 
+                                  offset_x: gint, offset_y: gint){.cdecl, 
+    dynlib: lib, importc: "gdk_window_shape_combine_region".}
+proc set_child_shapes*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_set_child_shapes".}
-proc gdk_window_merge_child_shapes*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc merge_child_shapes*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_merge_child_shapes".}
-proc gdk_window_is_visible*(window: PGdkWindow): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_is_visible".}
-proc gdk_window_is_viewable*(window: PGdkWindow): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_is_viewable".}
-proc gdk_window_get_state*(window: PGdkWindow): TGdkWindowState{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_state".}
-proc gdk_window_set_static_gravities*(window: PGdkWindow, use_static: gboolean): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_window_set_static_gravities".}
-proc gdk_window_foreign_new_for_display*(display: PGdkDisplay,
-    anid: TGdkNativeWindow): PGdkWindow{.cdecl, dynlib: gdklib,
-    importc: "gdk_window_foreign_new_for_display".}
-proc gdk_window_lookup_for_display*(display: PGdkDisplay, anid: TGdkNativeWindow): PGdkWindow{.
-    cdecl, dynlib: gdklib, importc: "gdk_window_lookup_for_display".}
-proc gdk_window_set_type_hint*(window: PGdkWindow, hint: TGdkWindowTypeHint){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_set_type_hint".}
-proc gdk_window_set_modal_hint*(window: PGdkWindow, modal: gboolean){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_modal_hint".}
-proc gdk_window_set_geometry_hints*(window: PGdkWindow, geometry: PGdkGeometry,
-                                    geom_mask: TGdkWindowHints){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_geometry_hints".}
-proc gdk_set_sm_client_id*(sm_client_id: cstring){.cdecl, dynlib: gdklib,
+proc is_visible*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gdk_window_is_visible".}
+proc is_viewable*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gdk_window_is_viewable".}
+proc get_state*(window: PWindow): TWindowState{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_state".}
+proc set_static_gravities*(window: PWindow, use_static: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_window_set_static_gravities".}
+proc window_foreign_new_for_display*(display: PDisplay, anid: TNativeWindow): PWindow{.
+    cdecl, dynlib: lib, importc: "gdk_window_foreign_new_for_display".}
+proc window_lookup_for_display*(display: PDisplay, anid: TNativeWindow): PWindow{.
+    cdecl, dynlib: lib, importc: "gdk_window_lookup_for_display".}
+proc set_type_hint*(window: PWindow, hint: TWindowTypeHint){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_type_hint".}
+proc set_modal_hint*(window: PWindow, modal: gboolean){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_modal_hint".}
+proc set_geometry_hints*(window: PWindow, geometry: PGeometry, 
+                                geom_mask: TWindowHints){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_geometry_hints".}
+proc set_sm_client_id*(sm_client_id: cstring){.cdecl, dynlib: lib, 
     importc: "gdk_set_sm_client_id".}
-proc gdk_window_begin_paint_rect*(window: PGdkWindow, rectangle: PGdkRectangle){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_begin_paint_rect".}
-proc gdk_window_begin_paint_region*(window: PGdkWindow, region: PGdkRegion){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_begin_paint_region".}
-proc gdk_window_end_paint*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc begin_paint_rect*(window: PWindow, rectangle: PRectangle){.cdecl, 
+    dynlib: lib, importc: "gdk_window_begin_paint_rect".}
+proc begin_paint_region*(window: PWindow, region: PRegion){.cdecl, 
+    dynlib: lib, importc: "gdk_window_begin_paint_region".}
+proc end_paint*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_end_paint".}
-proc gdk_window_set_title*(window: PGdkWindow, title: cstring){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_title".}
-proc gdk_window_set_role*(window: PGdkWindow, role: cstring){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_role".}
-proc gdk_window_set_transient_for*(window: PGdkWindow, parent: PGdkWindow){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_set_transient_for".}
-proc gdk_window_set_background*(window: PGdkWindow, color: PGdkColor){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_background".}
-proc gdk_window_set_back_pixmap*(window: PGdkWindow, pixmap: PGdkPixmap,
-                                 parent_relative: gboolean){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_back_pixmap".}
-proc gdk_window_set_cursor*(window: PGdkWindow, cursor: PGdkCursor){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_cursor".}
-proc gdk_window_get_user_data*(window: PGdkWindow, data: gpointer){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_user_data".}
-proc gdk_window_get_geometry*(window: PGdkWindow, x: Pgint, y: Pgint,
-                              width: Pgint, height: Pgint, depth: Pgint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_geometry".}
-proc gdk_window_get_position*(window: PGdkWindow, x: Pgint, y: Pgint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_position".}
-proc gdk_window_get_origin*(window: PGdkWindow, x: Pgint, y: Pgint): gint{.
-    cdecl, dynlib: gdklib, importc: "gdk_window_get_origin".}
-proc gdk_window_get_root_origin*(window: PGdkWindow, x: Pgint, y: Pgint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_root_origin".}
-proc gdk_window_get_frame_extents*(window: PGdkWindow, rect: PGdkRectangle){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_get_frame_extents".}
-proc gdk_window_get_pointer*(window: PGdkWindow, x: Pgint, y: Pgint,
-                             mask: PGdkModifierType): PGdkWindow{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_pointer".}
-proc gdk_window_get_parent*(window: PGdkWindow): PGdkWindow{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_parent".}
-proc gdk_window_get_toplevel*(window: PGdkWindow): PGdkWindow{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_toplevel".}
-proc gdk_window_get_children*(window: PGdkWindow): PGList{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_children".}
-proc gdk_window_peek_children*(window: PGdkWindow): PGList{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_peek_children".}
-proc gdk_window_get_events*(window: PGdkWindow): TGdkEventMask{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_events".}
-proc gdk_window_set_events*(window: PGdkWindow, event_mask: TGdkEventMask){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_set_events".}
-proc gdk_window_set_icon_list*(window: PGdkWindow, pixbufs: PGList){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_icon_list".}
-proc gdk_window_set_icon*(window: PGdkWindow, icon_window: PGdkWindow,
-                          pixmap: PGdkPixmap, mask: PGdkBitmap){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_icon".}
-proc gdk_window_set_icon_name*(window: PGdkWindow, name: cstring){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_icon_name".}
-proc gdk_window_set_group*(window: PGdkWindow, leader: PGdkWindow){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_group".}
-proc gdk_window_set_decorations*(window: PGdkWindow,
-                                 decorations: TGdkWMDecoration){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_set_decorations".}
-proc gdk_window_get_decorations*(window: PGdkWindow,
-                                 decorations: PGdkWMDecoration): gboolean{.
-    cdecl, dynlib: gdklib, importc: "gdk_window_get_decorations".}
-proc gdk_window_set_functions*(window: PGdkWindow, functions: TGdkWMFunction){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_set_functions".}
-proc gdk_window_iconify*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_iconify".}
-proc gdk_window_deiconify*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc set_title*(window: PWindow, title: cstring){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_title".}
+proc set_role*(window: PWindow, role: cstring){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_role".}
+proc set_transient_for*(window: PWindow, parent: PWindow){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_transient_for".}
+proc set_background*(window: PWindow, color: PColor){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_background".}
+proc set_back_pixmap*(window: PWindow, pixmap: PPixmap, 
+                             parent_relative: gboolean){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_back_pixmap".}
+proc set_cursor*(window: PWindow, cursor: PCursor){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_cursor".}
+proc get_user_data*(window: PWindow, data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_user_data".}
+proc get_geometry*(window: PWindow, x: Pgint, y: Pgint, width: Pgint, 
+                          height: Pgint, depth: Pgint){.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_geometry".}
+proc get_position*(window: PWindow, x: Pgint, y: Pgint){.cdecl, 
+    dynlib: lib, importc: "gdk_window_get_position".}
+proc get_origin*(window: PWindow, x: Pgint, y: Pgint): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_window_get_origin".}
+proc get_root_origin*(window: PWindow, x: Pgint, y: Pgint){.cdecl, 
+    dynlib: lib, importc: "gdk_window_get_root_origin".}
+proc get_frame_extents*(window: PWindow, rect: PRectangle){.cdecl, 
+    dynlib: lib, importc: "gdk_window_get_frame_extents".}
+proc get_pointer*(window: PWindow, x: Pgint, y: Pgint, 
+                         mask: PModifierType): PWindow{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_pointer".}
+proc get_parent*(window: PWindow): PWindow{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_parent".}
+proc get_toplevel*(window: PWindow): PWindow{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_toplevel".}
+proc get_children*(window: PWindow): PGList{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_children".}
+proc peek_children*(window: PWindow): PGList{.cdecl, dynlib: lib, 
+    importc: "gdk_window_peek_children".}
+proc get_events*(window: PWindow): TEventMask{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_events".}
+proc set_events*(window: PWindow, event_mask: TEventMask){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_events".}
+proc set_icon_list*(window: PWindow, pixbufs: PGList){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_icon_list".}
+proc set_icon*(window: PWindow, icon_window: PWindow, pixmap: PPixmap, 
+                      mask: PBitmap){.cdecl, dynlib: lib, 
+                                      importc: "gdk_window_set_icon".}
+proc set_icon_name*(window: PWindow, name: cstring){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_icon_name".}
+proc set_group*(window: PWindow, leader: PWindow){.cdecl, dynlib: lib, 
+    importc: "gdk_window_set_group".}
+proc set_decorations*(window: PWindow, decorations: TWMDecoration){.
+    cdecl, dynlib: lib, importc: "gdk_window_set_decorations".}
+proc get_decorations*(window: PWindow, decorations: PWMDecoration): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_window_get_decorations".}
+proc set_functions*(window: PWindow, functions: TWMFunction){.cdecl, 
+    dynlib: lib, importc: "gdk_window_set_functions".}
+proc iconify*(window: PWindow){.cdecl, dynlib: lib, 
+                                       importc: "gdk_window_iconify".}
+proc deiconify*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_deiconify".}
-proc gdk_window_stick*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_stick".}
-proc gdk_window_unstick*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_unstick".}
-proc gdk_window_maximize*(window: PGdkWindow){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_maximize".}
-proc gdk_window_unmaximize*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc stick*(window: PWindow){.cdecl, dynlib: lib, 
+                                     importc: "gdk_window_stick".}
+proc unstick*(window: PWindow){.cdecl, dynlib: lib, 
+                                       importc: "gdk_window_unstick".}
+proc maximize*(window: PWindow){.cdecl, dynlib: lib, 
+                                        importc: "gdk_window_maximize".}
+proc unmaximize*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_unmaximize".}
-proc gdk_window_register_dnd*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc register_dnd*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_register_dnd".}
-proc gdk_window_begin_resize_drag*(window: PGdkWindow, edge: TGdkWindowEdge,
-                                   button: gint, root_x: gint, root_y: gint,
-                                   timestamp: guint32){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_begin_resize_drag".}
-proc gdk_window_begin_move_drag*(window: PGdkWindow, button: gint, root_x: gint,
-                                 root_y: gint, timestamp: guint32){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_begin_move_drag".}
-proc gdk_window_invalidate_rect*(window: PGdkWindow, rect: PGdkRectangle,
-                                 invalidate_children: gboolean){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_invalidate_rect".}
-proc gdk_window_invalidate_region*(window: PGdkWindow, region: PGdkRegion,
-                                   invalidate_children: gboolean){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_invalidate_region".}
-proc gdk_window_invalidate_maybe_recurse*(window: PGdkWindow,
-    region: PGdkRegion,
-    child_func: gdk_window_invalidate_maybe_recurse_child_func,
-    user_data: gpointer){.cdecl, dynlib: gdklib,
-                          importc: "gdk_window_invalidate_maybe_recurse".}
-proc gdk_window_get_update_area*(window: PGdkWindow): PGdkRegion{.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_update_area".}
-proc gdk_window_freeze_updates*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc begin_resize_drag*(window: PWindow, edge: TWindowEdge, button: gint, 
+                               root_x: gint, root_y: gint, timestamp: guint32){.
+    cdecl, dynlib: lib, importc: "gdk_window_begin_resize_drag".}
+proc begin_move_drag*(window: PWindow, button: gint, root_x: gint, 
+                             root_y: gint, timestamp: guint32){.cdecl, 
+    dynlib: lib, importc: "gdk_window_begin_move_drag".}
+proc invalidate_rect*(window: PWindow, rect: PRectangle, 
+                             invalidate_children: gboolean){.cdecl, dynlib: lib, 
+    importc: "gdk_window_invalidate_rect".}
+proc invalidate_region*(window: PWindow, region: PRegion, 
+                               invalidate_children: gboolean){.cdecl, 
+    dynlib: lib, importc: "gdk_window_invalidate_region".}
+proc invalidate_maybe_recurse*(window: PWindow, region: PRegion, 
+    child_func: window_invalidate_maybe_recurse_child_func, user_data: gpointer){.
+    cdecl, dynlib: lib, importc: "gdk_window_invalidate_maybe_recurse".}
+proc get_update_area*(window: PWindow): PRegion{.cdecl, dynlib: lib, 
+    importc: "gdk_window_get_update_area".}
+proc freeze_updates*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_freeze_updates".}
-proc gdk_window_thaw_updates*(window: PGdkWindow){.cdecl, dynlib: gdklib,
+proc thaw_updates*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gdk_window_thaw_updates".}
-proc gdk_window_process_all_updates*(){.cdecl, dynlib: gdklib, importc: "gdk_window_process_all_updates".}
-proc gdk_window_process_updates*(window: PGdkWindow, update_children: gboolean){.
-    cdecl, dynlib: gdklib, importc: "gdk_window_process_updates".}
-proc gdk_window_set_debug_updates*(setting: gboolean){.cdecl, dynlib: gdklib,
+proc window_process_all_updates*(){.cdecl, dynlib: lib, 
+                                    importc: "gdk_window_process_all_updates".}
+proc process_updates*(window: PWindow, update_children: gboolean){.cdecl, 
+    dynlib: lib, importc: "gdk_window_process_updates".}
+proc window_set_debug_updates*(setting: gboolean){.cdecl, dynlib: lib, 
     importc: "gdk_window_set_debug_updates".}
-proc gdk_window_constrain_size*(geometry: PGdkGeometry, flags: guint,
-                                width: gint, height: gint, new_width: Pgint,
-                                new_height: Pgint){.cdecl, dynlib: gdklib,
-    importc: "gdk_window_constrain_size".}
-proc gdk_window_get_internal_paint_info*(window: PGdkWindow,
-    e: var PGdkDrawable, x_offset: Pgint, y_offset: Pgint){.cdecl,
-    dynlib: gdklib, importc: "gdk_window_get_internal_paint_info".}
-proc gdk_set_pointer_hooks*(new_hooks: PGdkPointerHooks): PGdkPointerHooks{.
-    cdecl, dynlib: gdklib, importc: "gdk_set_pointer_hooks".}
-proc gdk_get_default_root_window*(): PGdkWindow{.cdecl, dynlib: gdklib,
+proc window_constrain_size*(geometry: PGeometry, flags: guint, width: gint, 
+                            height: gint, new_width: Pgint, new_height: Pgint){.
+    cdecl, dynlib: lib, importc: "gdk_window_constrain_size".}
+proc get_internal_paint_info*(window: PWindow, e: var PDrawable, 
+                                     x_offset: Pgint, y_offset: Pgint){.cdecl, 
+    dynlib: lib, importc: "gdk_window_get_internal_paint_info".}
+proc set_pointer_hooks*(new_hooks: PPointerHooks): PPointerHooks{.cdecl, 
+    dynlib: lib, importc: "gdk_set_pointer_hooks".}
+proc get_default_root_window*(): PWindow{.cdecl, dynlib: lib, 
     importc: "gdk_get_default_root_window".}
-proc gdk_parse_args*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: gdklib,
+proc parse_args*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: lib, 
     importc: "gdk_parse_args".}
-proc gdk_init*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: gdklib,
-    importc: "gdk_init".}
-proc gdk_init_check*(argc: Pgint, v: var PPgchar): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_init_check".}
-when not defined(GDK_DISABLE_DEPRECATED):
-  proc gdk_exit*(error_code: gint){.cdecl, dynlib: gdklib, importc: "gdk_exit".}
-proc gdk_set_locale*(): cstring{.cdecl, dynlib: gdklib, importc: "gdk_set_locale".}
-proc gdk_get_program_class*(): cstring{.cdecl, dynlib: gdklib,
-                                        importc: "gdk_get_program_class".}
-proc gdk_set_program_class*(program_class: cstring){.cdecl, dynlib: gdklib,
+proc init*(argc: Pgint, v: var PPgchar){.cdecl, dynlib: lib, importc: "gdk_init".}
+proc init_check*(argc: Pgint, v: var PPgchar): gboolean{.cdecl, dynlib: lib, 
+    importc: "gdk_init_check".}
+when not defined(DISABLE_DEPRECATED): 
+  proc exit*(error_code: gint){.cdecl, dynlib: lib, importc: "gdk_exit".}
+proc set_locale*(): cstring{.cdecl, dynlib: lib, importc: "gdk_set_locale".}
+proc get_program_class*(): cstring{.cdecl, dynlib: lib, 
+                                    importc: "gdk_get_program_class".}
+proc set_program_class*(program_class: cstring){.cdecl, dynlib: lib, 
     importc: "gdk_set_program_class".}
-proc gdk_error_trap_push*(){.cdecl, dynlib: gdklib,
-                             importc: "gdk_error_trap_push".}
-proc gdk_error_trap_pop*(): gint{.cdecl, dynlib: gdklib,
-                                  importc: "gdk_error_trap_pop".}
-when not defined(GDK_DISABLE_DEPRECATED):
-  proc gdk_set_use_xshm*(use_xshm: gboolean){.cdecl, dynlib: gdklib,
+proc error_trap_push*(){.cdecl, dynlib: lib, importc: "gdk_error_trap_push".}
+proc error_trap_pop*(): gint{.cdecl, dynlib: lib, importc: "gdk_error_trap_pop".}
+when not defined(DISABLE_DEPRECATED): 
+  proc set_use_xshm*(use_xshm: gboolean){.cdecl, dynlib: lib, 
       importc: "gdk_set_use_xshm".}
-  proc gdk_get_use_xshm*(): gboolean{.cdecl, dynlib: gdklib,
-                                     importc: "gdk_get_use_xshm".}
-proc gdk_get_display*(): cstring{.cdecl, dynlib: gdklib,
-                                 importc: "gdk_get_display".}
-proc gdk_get_display_arg_name*(): cstring{.cdecl, dynlib: gdklib,
-    importc: "gdk_get_display_arg_name".}
-when not defined(GDK_DISABLE_DEPRECATED):
-  proc gdk_input_add_full*(source: gint, condition: TGdkInputCondition,
-                          `function`: TGdkInputFunction, data: gpointer,
-                          destroy: TGdkDestroyNotify): gint{.cdecl,
-      dynlib: gdklib, importc: "gdk_input_add_full".}
-  proc gdk_input_add*(source: gint, condition: TGdkInputCondition,
-                     `function`: TGdkInputFunction, data: gpointer): gint{.
-      cdecl, dynlib: gdklib, importc: "gdk_input_add".}
-  proc gdk_input_remove*(tag: gint){.cdecl, dynlib: gdklib,
-                                    importc: "gdk_input_remove".}
-proc gdk_pointer_grab*(window: PGdkWindow, owner_events: gboolean,
-                       event_mask: TGdkEventMask, confine_to: PGdkWindow,
-                       cursor: PGdkCursor, time: guint32): TGdkGrabStatus{.
-    cdecl, dynlib: gdklib, importc: "gdk_pointer_grab".}
-proc gdk_keyboard_grab*(window: PGdkWindow, owner_events: gboolean,
-                        time: guint32): TGdkGrabStatus{.cdecl, dynlib: gdklib,
-    importc: "gdk_keyboard_grab".}
-when not defined(GDK_MULTIHEAD_SAFE):
-  proc gdk_pointer_ungrab*(time: guint32){.cdecl, dynlib: gdklib,
-      importc: "gdk_pointer_ungrab".}
-  proc gdk_keyboard_ungrab*(time: guint32){.cdecl, dynlib: gdklib,
-      importc: "gdk_keyboard_ungrab".}
-  proc gdk_pointer_is_grabbed*(): gboolean{.cdecl, dynlib: gdklib,
-      importc: "gdk_pointer_is_grabbed".}
-  proc gdk_screen_width*(): gint{.cdecl, dynlib: gdklib,
-                                 importc: "gdk_screen_width".}
-  proc gdk_screen_height*(): gint{.cdecl, dynlib: gdklib,
-                                  importc: "gdk_screen_height".}
-  proc gdk_screen_width_mm*(): gint{.cdecl, dynlib: gdklib,
-                                    importc: "gdk_screen_width_mm".}
-  proc gdk_screen_height_mm*(): gint{.cdecl, dynlib: gdklib,
-                                     importc: "gdk_screen_height_mm".}
-  proc gdk_beep*(){.cdecl, dynlib: gdklib, importc: "gdk_beep".}
-proc gdk_flush*(){.cdecl, dynlib: gdklib, importc: "gdk_flush".}
-when not defined(GDK_MULTIHEAD_SAFE):
-  proc gdk_set_double_click_time*(msec: guint){.cdecl, dynlib: gdklib,
+  proc get_use_xshm*(): gboolean{.cdecl, dynlib: lib, 
+                                  importc: "gdk_get_use_xshm".}
+proc get_display*(): cstring{.cdecl, dynlib: lib, importc: "gdk_get_display".}
+proc get_display_arg_name*(): cstring{.cdecl, dynlib: lib, 
+                                       importc: "gdk_get_display_arg_name".}
+when not defined(DISABLE_DEPRECATED): 
+  proc input_add_full*(source: gint, condition: TInputCondition, 
+                       `function`: TInputFunction, data: gpointer, 
+                       destroy: TDestroyNotify): gint{.cdecl, dynlib: lib, 
+      importc: "gdk_input_add_full".}
+  proc input_add*(source: gint, condition: TInputCondition, 
+                  `function`: TInputFunction, data: gpointer): gint{.cdecl, 
+      dynlib: lib, importc: "gdk_input_add".}
+  proc input_remove*(tag: gint){.cdecl, dynlib: lib, importc: "gdk_input_remove".}
+proc pointer_grab*(window: PWindow, owner_events: gboolean, 
+                   event_mask: TEventMask, confine_to: PWindow, cursor: PCursor, 
+                   time: guint32): TGrabStatus{.cdecl, dynlib: lib, 
+    importc: "gdk_pointer_grab".}
+proc keyboard_grab*(window: PWindow, owner_events: gboolean, time: guint32): TGrabStatus{.
+    cdecl, dynlib: lib, importc: "gdk_keyboard_grab".}
+when not defined(MULTIHEAD_SAFE): 
+  proc pointer_ungrab*(time: guint32){.cdecl, dynlib: lib, 
+                                       importc: "gdk_pointer_ungrab".}
+  proc keyboard_ungrab*(time: guint32){.cdecl, dynlib: lib, 
+                                        importc: "gdk_keyboard_ungrab".}
+  proc pointer_is_grabbed*(): gboolean{.cdecl, dynlib: lib, 
+                                        importc: "gdk_pointer_is_grabbed".}
+  proc screen_width*(): gint{.cdecl, dynlib: lib, importc: "gdk_screen_width".}
+  proc screen_height*(): gint{.cdecl, dynlib: lib, importc: "gdk_screen_height".}
+  proc screen_width_mm*(): gint{.cdecl, dynlib: lib, 
+                                 importc: "gdk_screen_width_mm".}
+  proc screen_height_mm*(): gint{.cdecl, dynlib: lib, 
+                                  importc: "gdk_screen_height_mm".}
+  proc beep*(){.cdecl, dynlib: lib, importc: "gdk_beep".}
+proc flush*(){.cdecl, dynlib: lib, importc: "gdk_flush".}
+when not defined(MULTIHEAD_SAFE): 
+  proc set_double_click_time*(msec: guint){.cdecl, dynlib: lib, 
       importc: "gdk_set_double_click_time".}
-proc gdk_rectangle_intersect*(src1: PGdkRectangle, src2: PGdkRectangle,
-                              dest: PGdkRectangle): gboolean{.cdecl,
-    dynlib: gdklib, importc: "gdk_rectangle_intersect".}
-proc gdk_rectangle_union*(src1: PGdkRectangle, src2: PGdkRectangle,
-                          dest: PGdkRectangle){.cdecl, dynlib: gdklib,
-    importc: "gdk_rectangle_union".}
-proc gdk_rectangle_get_type*(): GType{.cdecl, dynlib: gdklib,
-                                       importc: "gdk_rectangle_get_type".}
-proc GDK_TYPE_RECTANGLE*(): GType
-proc gdk_wcstombs*(src: PGdkWChar): cstring{.cdecl, dynlib: gdklib,
-    importc: "gdk_wcstombs".}
-proc gdk_mbstowcs*(dest: PGdkWChar, src: cstring, dest_max: gint): gint{.cdecl,
-    dynlib: gdklib, importc: "gdk_mbstowcs".}
-when not defined(GDK_MULTIHEAD_SAFE):
-  proc gdk_event_send_client_message*(event: PGdkEvent, xid: guint32): gboolean{.
-      cdecl, dynlib: gdklib, importc: "gdk_event_send_client_message".}
-  proc gdk_event_send_clientmessage_toall*(event: PGdkEvent){.cdecl,
-      dynlib: gdklib, importc: "gdk_event_send_clientmessage_toall".}
-proc gdk_event_send_client_message_for_display*(display: PGdkDisplay,
-    event: PGdkEvent, xid: guint32): gboolean{.cdecl, dynlib: gdklib,
-    importc: "gdk_event_send_client_message_for_display".}
-proc gdk_threads_enter*(){.cdecl, dynlib: gdklib, importc: "gdk_threads_enter".}
-proc gdk_threads_leave*(){.cdecl, dynlib: gdklib, importc: "gdk_threads_leave".}
-proc gdk_threads_init*(){.cdecl, dynlib: gdklib, importc: "gdk_threads_init".}
-
-proc GDK_TYPE_RECTANGLE*(): GType =
-  result = gdk_rectangle_get_type()
-
-proc GDK_TYPE_COLORMAP*(): GType =
-  result = gdk_colormap_get_type()
-
-proc GDK_COLORMAP*(anObject: pointer): PGdkColormap =
-  result = cast[PGdkColormap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_COLORMAP()))
-
-proc GDK_COLORMAP_CLASS*(klass: pointer): PGdkColormapClass =
-  result = cast[PGdkColormapClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_COLORMAP()))
-
-proc GDK_IS_COLORMAP*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_COLORMAP())
-
-proc GDK_IS_COLORMAP_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_COLORMAP())
-
-proc GDK_COLORMAP_GET_CLASS*(obj: pointer): PGdkColormapClass =
-  result = cast[PGdkColormapClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_COLORMAP()))
-
-proc GDK_TYPE_COLOR*(): GType =
-  result = gdk_color_get_type()
-
-proc gdk_cursor_destroy*(cursor: PGdkCursor) =
-  gdk_cursor_unref(cursor)
-
-proc GDK_TYPE_CURSOR*(): GType =
-  result = gdk_cursor_get_type()
-
-proc GDK_TYPE_DRAG_CONTEXT*(): GType =
-  result = gdk_drag_context_get_type()
-
-proc GDK_DRAG_CONTEXT*(anObject: Pointer): PGdkDragContext =
-  result = cast[PGdkDragContext](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      GDK_TYPE_DRAG_CONTEXT()))
-
-proc GDK_DRAG_CONTEXT_CLASS*(klass: Pointer): PGdkDragContextClass =
-  result = cast[PGdkDragContextClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GDK_TYPE_DRAG_CONTEXT()))
-
-proc GDK_IS_DRAG_CONTEXT*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DRAG_CONTEXT())
-
-proc GDK_IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DRAG_CONTEXT())
-
-proc GDK_DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PGdkDragContextClass =
-  result = cast[PGdkDragContextClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GDK_TYPE_DRAG_CONTEXT()))
-
-proc gdkregion_EXTENTCHECK*(r1, r2: PGdkRegionBox): bool =
-  result = ((r1.x2) > r2.x1) and ((r1.x1) < r2.x2) and
-      ((r1.y2) > r2.y1) and ((r1.y1) < r2.y2)
-
-proc gdkregion_EXTENTS*(r: PGdkRegionBox, idRect: PGdkRegion) =
-  if ((r.x1) < idRect.extents.x1):
+proc intersect*(src1: PRectangle, src2: PRectangle, dest: PRectangle): gboolean{.
+    cdecl, dynlib: lib, importc: "gdk_rectangle_intersect".}
+proc union*(src1: PRectangle, src2: PRectangle, dest: PRectangle){.
+    cdecl, dynlib: lib, importc: "gdk_rectangle_union".}
+proc rectangle_get_type*(): GType{.cdecl, dynlib: lib, 
+                                   importc: "gdk_rectangle_get_type".}
+proc TYPE_RECTANGLE*(): GType
+proc wcstombs*(src: PWChar): cstring{.cdecl, dynlib: lib, 
+                                      importc: "gdk_wcstombs".}
+proc mbstowcs*(dest: PWChar, src: cstring, dest_max: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gdk_mbstowcs".}
+when not defined(MULTIHEAD_SAFE): 
+  proc event_send_client_message*(event: PEvent, xid: guint32): gboolean{.cdecl, 
+      dynlib: lib, importc: "gdk_event_send_client_message".}
+  proc event_send_clientmessage_toall*(event: PEvent){.cdecl, dynlib: lib, 
+      importc: "gdk_event_send_clientmessage_toall".}
+proc event_send_client_message_for_display*(display: PDisplay, event: PEvent, 
+    xid: guint32): gboolean{.cdecl, dynlib: lib, importc: "gdk_event_send_client_message_for_display".}
+proc threads_enter*(){.cdecl, dynlib: lib, importc: "gdk_threads_enter".}
+proc threads_leave*(){.cdecl, dynlib: lib, importc: "gdk_threads_leave".}
+proc threads_init*(){.cdecl, dynlib: lib, importc: "gdk_threads_init".}
+proc TYPE_RECTANGLE*(): GType = 
+  result = rectangle_get_type()
+
+proc TYPE_COLORMAP*(): GType = 
+  result = colormap_get_type()
+
+proc COLORMAP*(anObject: pointer): PColormap = 
+  result = cast[PColormap](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_COLORMAP()))
+
+proc COLORMAP_CLASS*(klass: pointer): PColormapClass = 
+  result = cast[PColormapClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_COLORMAP()))
+
+proc IS_COLORMAP*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_COLORMAP())
+
+proc IS_COLORMAP_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_COLORMAP())
+
+proc COLORMAP_GET_CLASS*(obj: pointer): PColormapClass = 
+  result = cast[PColormapClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_COLORMAP()))
+
+proc TYPE_COLOR*(): GType = 
+  result = gdk2.color_get_type()
+
+proc destroy*(cursor: PCursor) = 
+  unref(cursor)
+
+proc TYPE_CURSOR*(): GType = 
+  result = cursor_get_type()
+
+proc TYPE_DRAG_CONTEXT*(): GType = 
+  result = drag_context_get_type()
+
+proc DRAG_CONTEXT*(anObject: Pointer): PDragContext = 
+  result = cast[PDragContext](G_TYPE_CHECK_INSTANCE_CAST(anObject, 
+      TYPE_DRAG_CONTEXT()))
+
+proc DRAG_CONTEXT_CLASS*(klass: Pointer): PDragContextClass = 
+  result = cast[PDragContextClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_DRAG_CONTEXT()))
+
+proc IS_DRAG_CONTEXT*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_DRAG_CONTEXT())
+
+proc IS_DRAG_CONTEXT_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_DRAG_CONTEXT())
+
+proc DRAG_CONTEXT_GET_CLASS*(obj: Pointer): PDragContextClass = 
+  result = cast[PDragContextClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_DRAG_CONTEXT()))
+
+proc region_EXTENTCHECK*(r1, r2: PRegionBox): bool = 
+  result = ((r1.x2) > r2.x1) and ((r1.x1) < r2.x2) and ((r1.y2) > r2.y1) and
+      ((r1.y1) < r2.y2)
+
+proc EXTENTS*(r: PRegionBox, idRect: PRegion) = 
+  if ((r.x1) < idRect.extents.x1): 
     idRect.extents.x1 = r.x1
-  if (r.y1) < idRect.extents.y1:
+  if (r.y1) < idRect.extents.y1: 
     idRect.extents.y1 = r.y1
-  if (r.x2) > idRect.extents.x2:
+  if (r.x2) > idRect.extents.x2: 
     idRect.extents.x2 = r.x2
 
-proc gdkregion_MEMCHECK*(reg: PGdkRegion, ARect, firstrect: var PGdkRegionBox): bool =
-  assert(false) # to implement
-
-proc gdkregion_CHECK_PREVIOUS*(Reg: PGdkRegion, R: PGdkRegionBox,
-                               Rx1, Ry1, Rx2, Ry2: gint): bool =
-  assert(false) # to implement
-
-proc gdkregion_ADDRECT*(reg: PGdkRegion, r: PGdkRegionBox,
-                        rx1, ry1, rx2, ry2: gint) =
+proc MEMCHECK*(reg: PRegion, ARect, firstrect: var PRegionBox): bool = 
+  assert(false)               # to implement
+  
+proc CHECK_PREVIOUS*(Reg: PRegion, R: PRegionBox, 
+                            Rx1, Ry1, Rx2, Ry2: gint): bool = 
+  assert(false)               # to implement
+  
+proc ADDRECT*(reg: PRegion, r: PRegionBox, rx1, ry1, rx2, ry2: gint) = 
   if (((rx1) < rx2) and ((ry1) < ry2) and
-      gdkregion_CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)):
+      CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)): 
     r.x1 = rx1
     r.y1 = ry1
     r.x2 = rx2
     r.y2 = ry2
 
-proc gdkregion_ADDRECTNOX*(reg: PGdkRegion, r: PGdkRegionBox,
-                           rx1, ry1, rx2, ry2: gint) =
+proc ADDRECTNOX*(reg: PRegion, r: PRegionBox, rx1, ry1, rx2, ry2: gint) = 
   if (((rx1) < rx2) and ((ry1) < ry2) and
-      gdkregion_CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)):
+      CHECK_PREVIOUS(reg, r, rx1, ry1, rx2, ry2)): 
     r.x1 = rx1
     r.y1 = ry1
     r.x2 = rx2
     r.y2 = ry2
-    inc(reg . numRects)
+    inc(reg.numRects)
 
-proc gdkregion_EMPTY_REGION*(pReg: PGdkRegion): bool =
+proc EMPTY_REGION*(pReg: PRegion): bool = 
   result = pReg.numRects == 0'i32
 
-proc gdkregion_REGION_NOT_EMPTY*(pReg: PGdkRegion): bool =
+proc REGION_NOT_EMPTY*(pReg: PRegion): bool = 
   result = pReg.numRects != 0'i32
 
-proc gdkregion_INBOX*(r: TGdkRegionBox, x, y: gint): bool =
-  result = ((((r.x2) > x) and ((r.x1) <= x)) and
-            ((r.y2) > y)) and ((r.y1) <= y)
+proc region_INBOX*(r: TRegionBox, x, y: gint): bool = 
+  result = ((((r.x2) > x) and ((r.x1) <= x)) and ((r.y2) > y)) and
+      ((r.y1) <= y)
 
-proc GDK_TYPE_DRAWABLE*(): GType =
-  result = gdk_drawable_get_type()
+proc TYPE_DRAWABLE*(): GType = 
+  result = drawable_get_type()
 
-proc GDK_DRAWABLE*(anObject: Pointer): PGdkDrawable =
-  result = cast[PGdkDrawable](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DRAWABLE()))
+proc DRAWABLE*(anObject: Pointer): PDrawable = 
+  result = cast[PDrawable](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_DRAWABLE()))
 
-proc GDK_DRAWABLE_CLASS*(klass: Pointer): PGdkDrawableClass =
-  result = cast[PGdkDrawableClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DRAWABLE()))
+proc DRAWABLE_CLASS*(klass: Pointer): PDrawableClass = 
+  result = cast[PDrawableClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_DRAWABLE()))
 
-proc GDK_IS_DRAWABLE*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DRAWABLE())
+proc IS_DRAWABLE*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_DRAWABLE())
 
-proc GDK_IS_DRAWABLE_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DRAWABLE())
+proc IS_DRAWABLE_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_DRAWABLE())
 
-proc GDK_DRAWABLE_GET_CLASS*(obj: Pointer): PGdkDrawableClass =
-  result = cast[PGdkDrawableClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DRAWABLE()))
+proc DRAWABLE_GET_CLASS*(obj: Pointer): PDrawableClass = 
+  result = cast[PDrawableClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_DRAWABLE()))
 
-proc gdk_draw_pixmap*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable,
-                      xsrc: gint, ysrc: gint, xdest: gint, ydest: gint,
-                      width: gint, height: gint) =
-  gdk_draw_drawable(drawable, gc, src, xsrc, ysrc, xdest, ydest, width, height)
+proc pixmap*(drawable: PDrawable, gc: PGC, src: PDrawable, xsrc: gint, 
+                  ysrc: gint, xdest: gint, ydest: gint, width: gint, 
+                  height: gint) = 
+  drawable(drawable, gc, src, xsrc, ysrc, xdest, ydest, width, height)
 
-proc gdk_draw_bitmap*(drawable: PGdkDrawable, gc: PGdkGC, src: PGdkDrawable,
-                      xsrc: gint, ysrc: gint, xdest: gint, ydest: gint,
-                      width: gint, height: gint) =
-  gdk_draw_drawable(drawable, gc, src, xsrc, ysrc, xdest, ydest, width, height)
+proc bitmap*(drawable: PDrawable, gc: PGC, src: PDrawable, xsrc: gint, 
+                  ysrc: gint, xdest: gint, ydest: gint, width: gint, 
+                  height: gint) = 
+  drawable(drawable, gc, src, xsrc, ysrc, xdest, ydest, width, height)
 
-proc GDK_TYPE_EVENT*(): GType =
-  result = gdk_event_get_type()
+proc TYPE_EVENT*(): GType = 
+  result = event_get_type()
 
-proc GDK_TYPE_FONT*(): GType =
-  result = gdk_font_get_type()
+proc TYPE_FONT*(): GType = 
+  result = gdk2.font_get_type()
 
-proc GDK_TYPE_GC*(): GType =
-  result = gdk_gc_get_type()
+proc TYPE_GC*(): GType = 
+  result = gc_get_type()
 
-proc GDK_GC*(anObject: Pointer): PGdkGC =
-  result = cast[PGdkGC](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_GC()))
+proc GC*(anObject: Pointer): PGC = 
+  result = cast[PGC](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_GC()))
 
-proc GDK_GC_CLASS*(klass: Pointer): PGdkGCClass =
-  result = cast[PGdkGCClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_GC()))
+proc GC_CLASS*(klass: Pointer): PGCClass = 
+  result = cast[PGCClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_GC()))
 
-proc GDK_IS_GC*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_GC())
+proc IS_GC*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_GC())
 
-proc GDK_IS_GC_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_GC())
+proc IS_GC_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_GC())
 
-proc GDK_GC_GET_CLASS*(obj: Pointer): PGdkGCClass =
-  result = cast[PGdkGCClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_GC()))
+proc GC_GET_CLASS*(obj: Pointer): PGCClass = 
+  result = cast[PGCClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_GC()))
 
-proc gdk_gc_destroy*(gc: PGdkGC) =
+proc destroy*(gc: PGC) = 
   g_object_unref(G_OBJECT(gc))
 
-proc GDK_TYPE_IMAGE*(): GType =
-  result = gdk_image_get_type()
+proc TYPE_IMAGE*(): GType = 
+  result = image_get_type()
 
-proc GDK_IMAGE*(anObject: Pointer): PGdkImage =
-  result = cast[PGdkImage](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_IMAGE()))
+proc IMAGE*(anObject: Pointer): PImage = 
+  result = cast[PImage](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_IMAGE()))
 
-proc GDK_IMAGE_CLASS*(klass: Pointer): PGdkImageClass =
-  result = cast[PGdkImageClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_IMAGE()))
+proc IMAGE_CLASS*(klass: Pointer): PImageClass = 
+  result = cast[PImageClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_IMAGE()))
 
-proc GDK_IS_IMAGE*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_IMAGE())
+proc IS_IMAGE*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_IMAGE())
 
-proc GDK_IS_IMAGE_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_IMAGE())
+proc IS_IMAGE_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_IMAGE())
 
-proc GDK_IMAGE_GET_CLASS*(obj: Pointer): PGdkImageClass =
-  result = cast[PGdkImageClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_IMAGE()))
+proc IMAGE_GET_CLASS*(obj: Pointer): PImageClass = 
+  result = cast[PImageClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_IMAGE()))
 
-proc gdk_image_destroy*(image: PGdkImage) =
+proc destroy*(image: PImage) = 
   g_object_unref(G_OBJECT(image))
 
-proc GDK_TYPE_DEVICE*(): GType =
-  result = gdk_device_get_type()
+proc TYPE_DEVICE*(): GType = 
+  result = device_get_type()
 
-proc GDK_DEVICE*(anObject: Pointer): PGdkDevice =
-  result = cast[PGdkDevice](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DEVICE()))
+proc DEVICE*(anObject: Pointer): PDevice = 
+  result = cast[PDevice](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_DEVICE()))
 
-proc GDK_DEVICE_CLASS*(klass: Pointer): PGdkDeviceClass =
-  result = cast[PGdkDeviceClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DEVICE()))
+proc DEVICE_CLASS*(klass: Pointer): PDeviceClass = 
+  result = cast[PDeviceClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_DEVICE()))
 
-proc GDK_IS_DEVICE*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DEVICE())
+proc IS_DEVICE*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_DEVICE())
 
-proc GDK_IS_DEVICE_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DEVICE())
+proc IS_DEVICE_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_DEVICE())
 
-proc GDK_DEVICE_GET_CLASS*(obj: Pointer): PGdkDeviceClass =
-  result = cast[PGdkDeviceClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DEVICE()))
+proc DEVICE_GET_CLASS*(obj: Pointer): PDeviceClass = 
+  result = cast[PDeviceClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_DEVICE()))
 
-proc GDK_TYPE_KEYMAP*(): GType =
-  result = gdk_keymap_get_type()
+proc TYPE_KEYMAP*(): GType = 
+  result = keymap_get_type()
 
-proc GDK_KEYMAP*(anObject: Pointer): PGdkKeymap =
-  result = cast[PGdkKeymap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_KEYMAP()))
+proc KEYMAP*(anObject: Pointer): PKeymap = 
+  result = cast[PKeymap](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_KEYMAP()))
 
-proc GDK_KEYMAP_CLASS*(klass: Pointer): PGdkKeymapClass =
-  result = cast[PGdkKeymapClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_KEYMAP()))
+proc KEYMAP_CLASS*(klass: Pointer): PKeymapClass = 
+  result = cast[PKeymapClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_KEYMAP()))
 
-proc GDK_IS_KEYMAP*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_KEYMAP())
+proc IS_KEYMAP*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_KEYMAP())
 
-proc GDK_IS_KEYMAP_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_KEYMAP())
+proc IS_KEYMAP_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_KEYMAP())
 
-proc GDK_KEYMAP_GET_CLASS*(obj: Pointer): PGdkKeymapClass =
-  result = cast[PGdkKeymapClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_KEYMAP()))
+proc KEYMAP_GET_CLASS*(obj: Pointer): PKeymapClass = 
+  result = cast[PKeymapClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_KEYMAP()))
 
-proc GDK_TYPE_PIXMAP*(): GType =
-  result = gdk_pixmap_get_type()
+proc TYPE_PIXMAP*(): GType = 
+  result = pixmap_get_type()
 
-proc GDK_PIXMAP*(anObject: Pointer): PGdkPixmap =
-  result = cast[PGdkPixmap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_PIXMAP()))
+proc PIXMAP*(anObject: Pointer): PPixmap = 
+  result = cast[PPixmap](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_PIXMAP()))
 
-proc GDK_PIXMAP_CLASS*(klass: Pointer): PGdkPixmapObjectClass =
-  result = cast[PGdkPixmapObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_PIXMAP()))
+proc PIXMAP_CLASS*(klass: Pointer): PPixmapObjectClass = 
+  result = cast[PPixmapObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_PIXMAP()))
 
-proc GDK_IS_PIXMAP*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXMAP())
+proc IS_PIXMAP*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_PIXMAP())
 
-proc GDK_IS_PIXMAP_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_PIXMAP())
+proc IS_PIXMAP_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_PIXMAP())
 
-proc GDK_PIXMAP_GET_CLASS*(obj: Pointer): PGdkPixmapObjectClass =
-  result = cast[PGdkPixmapObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_PIXMAP()))
+proc PIXMAP_GET_CLASS*(obj: Pointer): PPixmapObjectClass = 
+  result = cast[PPixmapObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_PIXMAP()))
 
-proc GDK_PIXMAP_OBJECT*(anObject: Pointer): PGdkPixmapObject =
-  result = cast[PGdkPixmapObject](GDK_PIXMAP(anObject))
+proc PIXMAP_OBJECT*(anObject: Pointer): PPixmapObject = 
+  result = cast[PPixmapObject](PIXMAP(anObject))
 
-proc gdk_bitmap_ref*(drawable: PGdkDrawable): PGdkDrawable =
-  result = GDK_DRAWABLE(g_object_ref(G_OBJECT(drawable)))
+proc bitmap_ref*(drawable: PDrawable): PDrawable = 
+  result = DRAWABLE(g_object_ref(G_OBJECT(drawable)))
 
-proc gdk_bitmap_unref*(drawable: PGdkDrawable) =
+proc bitmap_unref*(drawable: PDrawable) = 
   g_object_unref(G_OBJECT(drawable))
 
-proc gdk_pixmap_ref*(drawable: PGdkDrawable): PGdkDrawable =
-  result = GDK_DRAWABLE(g_object_ref(G_OBJECT(drawable)))
+proc pixmap_ref*(drawable: PDrawable): PDrawable = 
+  result = DRAWABLE(g_object_ref(G_OBJECT(drawable)))
 
-proc gdk_pixmap_unref*(drawable: PGdkDrawable) =
+proc pixmap_unref*(drawable: PDrawable) = 
   g_object_unref(G_OBJECT(drawable))
 
-proc gdk_rgb_get_cmap*(): PGdkColormap =
-  result = nil #gdk_rgb_get_colormap()
-
-proc GDK_TYPE_DISPLAY*(): GType =
+proc rgb_get_cmap*(): PColormap = 
+  result = nil                #gdk_rgb_get_colormap()
+  
+proc TYPE_DISPLAY*(): GType = 
   nil
   #result = nil
+  
+proc DISPLAY_OBJECT*(anObject: pointer): PDisplay = 
+  result = cast[PDisplay](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_DISPLAY()))
 
-proc GDK_DISPLAY_OBJECT*(anObject: pointer): PGdkDisplay =
-  result = cast[PGdkDisplay](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_DISPLAY()))
-
-proc GDK_DISPLAY_CLASS*(klass: pointer): PGdkDisplayClass =
-  result = cast[PGdkDisplayClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_DISPLAY()))
+proc DISPLAY_CLASS*(klass: pointer): PDisplayClass = 
+  result = cast[PDisplayClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_DISPLAY()))
 
-proc GDK_IS_DISPLAY*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_DISPLAY())
+proc IS_DISPLAY*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_DISPLAY())
 
-proc GDK_IS_DISPLAY_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_DISPLAY())
+proc IS_DISPLAY_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_DISPLAY())
 
-proc GDK_DISPLAY_GET_CLASS*(obj: pointer): PGdkDisplayClass =
-  result = cast[PGdkDisplayClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_DISPLAY()))
+proc DISPLAY_GET_CLASS*(obj: pointer): PDisplayClass = 
+  result = cast[PDisplayClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_DISPLAY()))
 
-proc GDK_TYPE_SCREEN*(): GType =
+proc TYPE_SCREEN*(): GType = 
   nil
 
-proc GDK_SCREEN*(anObject: Pointer): PGdkScreen =
-  result = cast[PGdkScreen](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_SCREEN()))
+proc SCREEN*(anObject: Pointer): PScreen = 
+  result = cast[PScreen](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_SCREEN()))
 
-proc GDK_SCREEN_CLASS*(klass: Pointer): PGdkScreenClass =
-  result = cast[PGdkScreenClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_SCREEN()))
+proc SCREEN_CLASS*(klass: Pointer): PScreenClass = 
+  result = cast[PScreenClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_SCREEN()))
 
-proc GDK_IS_SCREEN*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_SCREEN())
+proc IS_SCREEN*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_SCREEN())
 
-proc GDK_IS_SCREEN_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_SCREEN())
+proc IS_SCREEN_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_SCREEN())
 
-proc GDK_SCREEN_GET_CLASS*(obj: Pointer): PGdkScreenClass =
-  result = cast[PGdkScreenClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_SCREEN()))
+proc SCREEN_GET_CLASS*(obj: Pointer): PScreenClass = 
+  result = cast[PScreenClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_SCREEN()))
 
-proc GDK_SELECTION_PRIMARY*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(1)
+proc SELECTION_PRIMARY*(): TAtom = 
+  result = `MAKE_ATOM`(1)
 
-proc GDK_SELECTION_SECONDARY*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(2)
+proc SELECTION_SECONDARY*(): TAtom = 
+  result = `MAKE_ATOM`(2)
 
-proc GDK_SELECTION_CLIPBOARD*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(69)
+proc SELECTION_CLIPBOARD*(): TAtom = 
+  result = `MAKE_ATOM`(69)
 
-proc GDK_TARGET_BITMAP*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(5)
+proc TARGET_BITMAP*(): TAtom = 
+  result = `MAKE_ATOM`(5)
 
-proc GDK_TARGET_COLORMAP*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(7)
+proc TARGET_COLORMAP*(): TAtom = 
+  result = `MAKE_ATOM`(7)
 
-proc GDK_TARGET_DRAWABLE*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(17)
+proc TARGET_DRAWABLE*(): TAtom = 
+  result = `MAKE_ATOM`(17)
 
-proc GDK_TARGET_PIXMAP*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(20)
+proc TARGET_PIXMAP*(): TAtom = 
+  result = `MAKE_ATOM`(20)
 
-proc GDK_TARGET_STRING*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(31)
+proc TARGET_STRING*(): TAtom = 
+  result = `MAKE_ATOM`(31)
 
-proc GDK_SELECTION_TYPE_ATOM*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(4)
+proc SELECTION_TYPE_ATOM*(): TAtom = 
+  result = `MAKE_ATOM`(4)
 
-proc GDK_SELECTION_TYPE_BITMAP*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(5)
+proc SELECTION_TYPE_BITMAP*(): TAtom = 
+  result = `MAKE_ATOM`(5)
 
-proc GDK_SELECTION_TYPE_COLORMAP*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(7)
+proc SELECTION_TYPE_COLORMAP*(): TAtom = 
+  result = `MAKE_ATOM`(7)
 
-proc GDK_SELECTION_TYPE_DRAWABLE*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(17)
+proc SELECTION_TYPE_DRAWABLE*(): TAtom = 
+  result = `MAKE_ATOM`(17)
 
-proc GDK_SELECTION_TYPE_INTEGER*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(19)
+proc SELECTION_TYPE_INTEGER*(): TAtom = 
+  result = `MAKE_ATOM`(19)
 
-proc GDK_SELECTION_TYPE_PIXMAP*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(20)
+proc SELECTION_TYPE_PIXMAP*(): TAtom = 
+  result = `MAKE_ATOM`(20)
 
-proc GDK_SELECTION_TYPE_WINDOW*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(33)
+proc SELECTION_TYPE_WINDOW*(): TAtom = 
+  result = `MAKE_ATOM`(33)
 
-proc GDK_SELECTION_TYPE_STRING*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(31)
+proc SELECTION_TYPE_STRING*(): TAtom = 
+  result = `MAKE_ATOM`(31)
 
-proc GDK_ATOM_TO_POINTER*(atom: TGdkAtom): pointer =
+proc ATOM_TO_POINTER*(atom: TAtom): pointer = 
   result = cast[Pointer](atom)
 
-proc GDK_POINTER_TO_ATOM*(p: Pointer): TGdkAtom =
-  result = cast[TGdkAtom](p)
+proc POINTER_TO_ATOM*(p: Pointer): TAtom = 
+  result = cast[TAtom](p)
 
-proc `GDK_MAKE_ATOM`*(val: guint): TGdkAtom =
-  result = cast[TGdkAtom](val)
+proc `MAKE_ATOM`*(val: guint): TAtom = 
+  result = cast[TAtom](val)
 
-proc GDK_NONE*(): TGdkAtom =
-  result = `GDK_MAKE_ATOM`(0)
+proc NONE*(): TAtom = 
+  result = `MAKE_ATOM`(0)
 
-proc GDK_TYPE_VISUAL*(): GType =
-  result = gdk_visual_get_type()
+proc TYPE_VISUAL*(): GType = 
+  result = visual_get_type()
 
-proc GDK_VISUAL*(anObject: Pointer): PGdkVisual =
-  result = cast[PGdkVisual](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_VISUAL()))
+proc VISUAL*(anObject: Pointer): PVisual = 
+  result = cast[PVisual](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_VISUAL()))
 
-proc GDK_VISUAL_CLASS*(klass: Pointer): PGdkVisualClass =
-  result = cast[PGdkVisualClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_VISUAL()))
+proc VISUAL_CLASS*(klass: Pointer): PVisualClass = 
+  result = cast[PVisualClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_VISUAL()))
 
-proc GDK_IS_VISUAL*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_VISUAL())
+proc IS_VISUAL*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_VISUAL())
 
-proc GDK_IS_VISUAL_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_VISUAL())
+proc IS_VISUAL_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_VISUAL())
 
-proc GDK_VISUAL_GET_CLASS*(obj: Pointer): PGdkVisualClass =
-  result = cast[PGdkVisualClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_VISUAL()))
+proc VISUAL_GET_CLASS*(obj: Pointer): PVisualClass = 
+  result = cast[PVisualClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_VISUAL()))
 
-proc gdk_visual_ref*(v: PGdkVisual) =
+proc reference*(v: PVisual) = 
   discard g_object_ref(v)
 
-proc gdk_visual_unref*(v: PGdkVisual) =
+proc unref*(v: PVisual) = 
   g_object_unref(v)
 
-proc GDK_TYPE_WINDOW*(): GType =
-  result = gdk_window_object_get_type()
+proc TYPE_WINDOW*(): GType = 
+  result = window_object_get_type()
 
-proc GDK_WINDOW*(anObject: Pointer): PGdkWindow =
-  result = cast[PGdkWindow](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_WINDOW()))
+proc WINDOW*(anObject: Pointer): PWindow = 
+  result = cast[PWindow](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_WINDOW()))
 
-proc GDK_WINDOW_CLASS*(klass: Pointer): PGdkWindowObjectClass =
-  result = cast[PGdkWindowObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_WINDOW()))
+proc WINDOW_CLASS*(klass: Pointer): PWindowObjectClass = 
+  result = cast[PWindowObjectClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_WINDOW()))
 
-proc GDK_IS_WINDOW*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_WINDOW())
+proc IS_WINDOW*(anObject: Pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_WINDOW())
 
-proc GDK_IS_WINDOW_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_WINDOW())
+proc IS_WINDOW_CLASS*(klass: Pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_WINDOW())
 
-proc GDK_WINDOW_GET_CLASS*(obj: Pointer): PGdkWindowObjectClass =
-  result = cast[PGdkWindowObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_WINDOW()))
+proc WINDOW_GET_CLASS*(obj: Pointer): PWindowObjectClass = 
+  result = cast[PWindowObjectClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_WINDOW()))
 
-proc GDK_WINDOW_OBJECT*(anObject: Pointer): PGdkWindowObject =
-  result = cast[PGdkWindowObject](GDK_WINDOW(anObject))
+proc WINDOW_OBJECT*(anObject: Pointer): PWindowObject = 
+  result = cast[PWindowObject](WINDOW(anObject))
 
-proc GdkWindowObject_guffaw_gravity*(a: var TGdkWindowObject): guint =
-  result = (a.flag0 and bm_TGdkWindowObject_guffaw_gravity) shr
-      bp_TGdkWindowObject_guffaw_gravity
+proc WindowObject_guffaw_gravity*(a: var TWindowObject): guint = 
+  result = (a.flag0 and bm_TWindowObject_guffaw_gravity) shr
+      bp_TWindowObject_guffaw_gravity
 
-proc GdkWindowObject_set_guffaw_gravity*(a: var TGdkWindowObject,
-    `guffaw_gravity`: guint) =
+proc WindowObject_set_guffaw_gravity*(a: var TWindowObject, 
+                                      `guffaw_gravity`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`guffaw_gravity` shl bp_TGdkWindowObject_guffaw_gravity) and
-      bm_TGdkWindowObject_guffaw_gravity)
+      (int16(`guffaw_gravity` shl bp_TWindowObject_guffaw_gravity) and
+      bm_TWindowObject_guffaw_gravity)
 
-proc GdkWindowObject_input_only*(a: var TGdkWindowObject): guint =
-  result = (a.flag0 and bm_TGdkWindowObject_input_only) shr
-      bp_TGdkWindowObject_input_only
+proc WindowObject_input_only*(a: var TWindowObject): guint = 
+  result = (a.flag0 and bm_TWindowObject_input_only) shr
+      bp_TWindowObject_input_only
 
-proc GdkWindowObject_set_input_only*(a: var TGdkWindowObject,
-                                     `input_only`: guint) =
+proc WindowObject_set_input_only*(a: var TWindowObject, `input_only`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`input_only` shl bp_TGdkWindowObject_input_only) and
-      bm_TGdkWindowObject_input_only)
+      (int16(`input_only` shl bp_TWindowObject_input_only) and
+      bm_TWindowObject_input_only)
 
-proc GdkWindowObject_modal_hint*(a: var TGdkWindowObject): guint =
-  result = (a.flag0 and bm_TGdkWindowObject_modal_hint) shr
-      bp_TGdkWindowObject_modal_hint
+proc WindowObject_modal_hint*(a: var TWindowObject): guint = 
+  result = (a.flag0 and bm_TWindowObject_modal_hint) shr
+      bp_TWindowObject_modal_hint
 
-proc GdkWindowObject_set_modal_hint*(a: var TGdkWindowObject,
-                                     `modal_hint`: guint) =
+proc WindowObject_set_modal_hint*(a: var TWindowObject, `modal_hint`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`modal_hint` shl bp_TGdkWindowObject_modal_hint) and
-      bm_TGdkWindowObject_modal_hint)
+      (int16(`modal_hint` shl bp_TWindowObject_modal_hint) and
+      bm_TWindowObject_modal_hint)
 
-proc GdkWindowObject_destroyed*(a: var TGdkWindowObject): guint =
-  result = (a.flag0 and bm_TGdkWindowObject_destroyed) shr
-      bp_TGdkWindowObject_destroyed
+proc WindowObject_destroyed*(a: var TWindowObject): guint = 
+  result = (a.flag0 and bm_TWindowObject_destroyed) shr
+      bp_TWindowObject_destroyed
 
-proc GdkWindowObject_set_destroyed*(a: var TGdkWindowObject, `destroyed`: guint) =
+proc WindowObject_set_destroyed*(a: var TWindowObject, `destroyed`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`destroyed` shl bp_TGdkWindowObject_destroyed) and
-      bm_TGdkWindowObject_destroyed)
+      (int16(`destroyed` shl bp_TWindowObject_destroyed) and
+      bm_TWindowObject_destroyed)
 
-proc GDK_ROOT_PARENT*(): PGdkWindow =
-  result = gdk_get_default_root_window()
+proc ROOT_PARENT*(): PWindow = 
+  result = get_default_root_window()
 
-proc gdk_window_get_size*(drawable: PGdkDrawable, width: Pgint, height: Pgint) =
-  gdk_drawable_get_size(drawable, width, height)
+proc window_get_size*(drawable: PDrawable, width: Pgint, height: Pgint) = 
+  get_size(drawable, width, height)
 
-proc gdk_window_get_type*(window: PGdkWindow): TGdkWindowType =
-  result = gdk_window_get_window_type(window)
+proc get_type*(window: PWindow): TWindowType = 
+  result = get_window_type(window)
 
-proc gdk_window_get_colormap*(drawable: PGdkDrawable): PGdkColormap =
-  result = gdk_drawable_get_colormap(drawable)
+proc window_get_colormap*(drawable: PDrawable): PColormap = 
+  result = get_colormap(drawable)
 
-proc gdk_window_set_colormap*(drawable: PGdkDrawable, colormap: PGdkColormap) =
-  gdk_drawable_set_colormap(drawable, colormap)
+proc window_set_colormap*(drawable: PDrawable, colormap: PColormap) = 
+  set_colormap(drawable, colormap)
 
-proc gdk_window_get_visual*(drawable: PGdkDrawable): PGdkVisual =
-  result = gdk_drawable_get_visual(drawable)
+proc window_get_visual*(drawable: PDrawable): PVisual = 
+  result = get_visual(drawable)
 
-proc gdk_window_ref*(drawable: PGdkDrawable): PGdkDrawable =
-  result = GDK_DRAWABLE(g_object_ref(G_OBJECT(drawable)))
+proc window_ref*(drawable: PDrawable): PDrawable = 
+  result = DRAWABLE(g_object_ref(G_OBJECT(drawable)))
 
-proc gdk_window_unref*(drawable: PGdkDrawable) =
+proc window_unref*(drawable: PDrawable) = 
   g_object_unref(G_OBJECT(drawable))
 
-proc gdk_window_copy_area*(drawable: PGdkDrawable, gc: PGdkGC, x, y: gint,
-                           source_drawable: PGdkDrawable,
-                           source_x, source_y: gint, width, height: gint) =
-  gdk_draw_pixmap(drawable, gc, source_drawable, source_x, source_y, x, y,
-                  width, height)
+proc window_copy_area*(drawable: PDrawable, gc: PGC, x, y: gint, 
+                       source_drawable: PDrawable, source_x, source_y: gint, 
+                       width, height: gint) = 
+  pixmap(drawable, gc, source_drawable, source_x, source_y, x, y, width, 
+         height)
diff --git a/lib/wrappers/gtk/gdk2pixbuf.nim b/lib/wrappers/gtk/gdk2pixbuf.nim
deleted file mode 100755
index daaa1479b..000000000
--- a/lib/wrappers/gtk/gdk2pixbuf.nim
+++ /dev/null
@@ -1,277 +0,0 @@
-{.deadCodeElim: on.}
-
-import
-  glib2
-
-when defined(win32):
-  const
-    gdkpixbuflib = "libgdk_pixbuf-2.0-0.dll"
-elif defined(darwin):
-  const
-    gdkpixbuflib = "gdk_pixbuf-2.0.0"
-  # linklib gtk-x11-2.0
-  # linklib gdk-x11-2.0
-  # linklib pango-1.0.0
-  # linklib glib-2.0.0
-  # linklib gobject-2.0.0
-  # linklib gdk_pixbuf-2.0.0
-  # linklib atk-1.0.0
-else:
-  const
-    gdkpixbuflib = "libgdk_pixbuf-2.0.so"
-
-type
-  PGdkPixbuf* = pointer
-  PGdkPixbufAnimation* = pointer
-  PGdkPixbufAnimationIter* = pointer
-  PGdkPixbufAlphaMode* = ptr TGdkPixbufAlphaMode
-  TGdkPixbufAlphaMode* = enum
-    GDK_PIXBUF_ALPHA_BILEVEL, GDK_PIXBUF_ALPHA_FULL
-  PGdkColorspace* = ptr TGdkColorspace
-  TGdkColorspace* = enum
-    GDK_COLORSPACE_RGB
-  TGdkPixbufDestroyNotify* = proc (pixels: Pguchar, data: gpointer){.cdecl.}
-  PGdkPixbufError* = ptr TGdkPixbufError
-  TGdkPixbufError* = enum
-    GDK_PIXBUF_ERROR_CORRUPT_IMAGE, GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
-    GDK_PIXBUF_ERROR_BAD_OPTION, GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
-    GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION, GDK_PIXBUF_ERROR_FAILED
-  PGdkInterpType* = ptr TGdkInterpType
-  TGdkInterpType* = enum
-    GDK_INTERP_NEAREST, GDK_INTERP_TILES, GDK_INTERP_BILINEAR, GDK_INTERP_HYPER
-
-proc GDK_TYPE_PIXBUF*(): GType
-proc GDK_PIXBUF*(anObject: pointer): PGdkPixbuf
-proc GDK_IS_PIXBUF*(anObject: pointer): bool
-proc GDK_TYPE_PIXBUF_ANIMATION*(): GType
-proc GDK_PIXBUF_ANIMATION*(anObject: pointer): PGdkPixbufAnimation
-proc GDK_IS_PIXBUF_ANIMATION*(anObject: pointer): bool
-proc GDK_TYPE_PIXBUF_ANIMATION_ITER*(): GType
-proc GDK_PIXBUF_ANIMATION_ITER*(anObject: pointer): PGdkPixbufAnimationIter
-proc GDK_IS_PIXBUF_ANIMATION_ITER*(anObject: pointer): bool
-proc GDK_PIXBUF_ERROR*(): TGQuark
-proc gdk_pixbuf_error_quark*(): TGQuark{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_error_quark".}
-proc gdk_pixbuf_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib,
-                                    importc: "gdk_pixbuf_get_type".}
-when not defined(GDK_PIXBUF_DISABLE_DEPRECATED):
-  proc gdk_pixbuf_ref*(pixbuf: PGdkPixbuf): PGdkPixbuf{.cdecl,
-      dynlib: gdkpixbuflib, importc: "gdk_pixbuf_ref".}
-  proc gdk_pixbuf_unref*(pixbuf: PGdkPixbuf){.cdecl, dynlib: gdkpixbuflib,
-      importc: "gdk_pixbuf_unref".}
-proc gdk_pixbuf_get_colorspace*(pixbuf: PGdkPixbuf): TGdkColorspace{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_colorspace".}
-proc gdk_pixbuf_get_n_channels*(pixbuf: PGdkPixbuf): int32{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_n_channels".}
-proc gdk_pixbuf_get_has_alpha*(pixbuf: PGdkPixbuf): gboolean{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_has_alpha".}
-proc gdk_pixbuf_get_bits_per_sample*(pixbuf: PGdkPixbuf): int32{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_bits_per_sample".}
-proc gdk_pixbuf_get_pixels*(pixbuf: PGdkPixbuf): Pguchar{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_pixels".}
-proc gdk_pixbuf_get_width*(pixbuf: PGdkPixbuf): int32{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_width".}
-proc gdk_pixbuf_get_height*(pixbuf: PGdkPixbuf): int32{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_height".}
-proc gdk_pixbuf_get_rowstride*(pixbuf: PGdkPixbuf): int32{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_rowstride".}
-proc gdk_pixbuf_new*(colorspace: TGdkColorspace, has_alpha: gboolean,
-                     bits_per_sample: int32, width: int32, height: int32): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new".}
-proc gdk_pixbuf_copy*(pixbuf: PGdkPixbuf): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_copy".}
-proc gdk_pixbuf_new_subpixbuf*(src_pixbuf: PGdkPixbuf, src_x: int32,
-                               src_y: int32, width: int32, height: int32): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_subpixbuf".}
-proc gdk_pixbuf_new_from_file*(filename: cstring, error: pointer): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file".}
-proc gdk_pixbuf_new_from_data*(data: Pguchar, colorspace: TGdkColorspace,
-                               has_alpha: gboolean, bits_per_sample: int32,
-                               width: int32, height: int32, rowstride: int32,
-                               destroy_fn: TGdkPixbufDestroyNotify,
-                               destroy_fn_data: gpointer): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_data".}
-proc gdk_pixbuf_new_from_xpm_data*(data: PPchar): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_xpm_data".}
-proc gdk_pixbuf_new_from_inline*(data_length: gint, a: var guint8,
-                                 copy_pixels: gboolean, error: pointer): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_inline".}
-proc gdk_pixbuf_new_from_file_at_size*(filename: cstring, width, height: gint,
-                                       error: pointer): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file_at_size".}
-proc gdk_pixbuf_new_from_file_at_scale*(filename: cstring, width, height: gint,
-    preserve_aspect_ratio: gboolean, error: pointer): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_new_from_file_at_scale".}
-proc gdk_pixbuf_fill*(pixbuf: PGdkPixbuf, pixel: guint32){.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_fill".}
-proc gdk_pixbuf_save*(pixbuf: PGdkPixbuf, filename: cstring, `type`: cstring,
-                      error: pointer): gboolean{.cdecl, varargs,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_save".}
-proc gdk_pixbuf_savev*(pixbuf: PGdkPixbuf, filename: cstring, `type`: cstring,
-                       option_keys: PPchar, option_values: PPchar,
-                       error: pointer): gboolean{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_savev".}
-proc gdk_pixbuf_add_alpha*(pixbuf: PGdkPixbuf, substitute_color: gboolean,
-                           r: guchar, g: guchar, b: guchar): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_add_alpha".}
-proc gdk_pixbuf_copy_area*(src_pixbuf: PGdkPixbuf, src_x: int32, src_y: int32,
-                           width: int32, height: int32, dest_pixbuf: PGdkPixbuf,
-                           dest_x: int32, dest_y: int32){.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_copy_area".}
-proc gdk_pixbuf_saturate_and_pixelate*(src: PGdkPixbuf, dest: PGdkPixbuf,
-                                       saturation: gfloat, pixelate: gboolean){.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_saturate_and_pixelate".}
-proc gdk_pixbuf_scale*(src: PGdkPixbuf, dest: PGdkPixbuf, dest_x: int32,
-                       dest_y: int32, dest_width: int32, dest_height: int32,
-                       offset_x: float64, offset_y: float64, scale_x: float64,
-                       scale_y: float64, interp_type: TGdkInterpType){.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_scale".}
-proc gdk_pixbuf_composite*(src: PGdkPixbuf, dest: PGdkPixbuf, dest_x: int32,
-                           dest_y: int32, dest_width: int32, dest_height: int32,
-                           offset_x: float64, offset_y: float64,
-                           scale_x: float64, scale_y: float64,
-                           interp_type: TGdkInterpType, overall_alpha: int32){.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_composite".}
-proc gdk_pixbuf_composite_color*(src: PGdkPixbuf, dest: PGdkPixbuf,
-                                 dest_x: int32, dest_y: int32,
-                                 dest_width: int32, dest_height: int32,
-                                 offset_x: float64, offset_y: float64,
-                                 scale_x: float64, scale_y: float64,
-                                 interp_type: TGdkInterpType,
-                                 overall_alpha: int32, check_x: int32,
-                                 check_y: int32, check_size: int32,
-                                 color1: guint32, color2: guint32){.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_composite_color".}
-proc gdk_pixbuf_scale_simple*(src: PGdkPixbuf, dest_width: int32,
-                              dest_height: int32, interp_type: TGdkInterpType): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_scale_simple".}
-proc gdk_pixbuf_composite_color_simple*(src: PGdkPixbuf, dest_width: int32,
-                                        dest_height: int32,
-                                        interp_type: TGdkInterpType,
-                                        overall_alpha: int32, check_size: int32,
-                                        color1: guint32, color2: guint32): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_composite_color_simple".}
-proc gdk_pixbuf_animation_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_animation_get_type".}
-proc gdk_pixbuf_animation_new_from_file*(filename: cstring, error: pointer): PGdkPixbufAnimation{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_new_from_file".}
-when not defined(GDK_PIXBUF_DISABLE_DEPRECATED):
-  proc gdk_pixbuf_animation_ref*(animation: PGdkPixbufAnimation): PGdkPixbufAnimation{.
-      cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_ref".}
-  proc gdk_pixbuf_animation_unref*(animation: PGdkPixbufAnimation){.cdecl,
-      dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_unref".}
-proc gdk_pixbuf_animation_get_width*(animation: PGdkPixbufAnimation): int32{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_width".}
-proc gdk_pixbuf_animation_get_height*(animation: PGdkPixbufAnimation): int32{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_height".}
-proc gdk_pixbuf_animation_is_static_image*(animation: PGdkPixbufAnimation): gboolean{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_is_static_image".}
-proc gdk_pixbuf_animation_get_static_image*(animation: PGdkPixbufAnimation): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_animation_get_static_image".}
-proc gdk_pixbuf_animation_get_iter*(animation: PGdkPixbufAnimation,
-                                    e: var TGTimeVal): PGdkPixbufAnimationIter{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_get_iter".}
-proc gdk_pixbuf_animation_iter_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_animation_iter_get_type".}
-proc gdk_pixbuf_animation_iter_get_delay_time*(iter: PGdkPixbufAnimationIter): int32{.
-    cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_animation_iter_get_delay_time".}
-proc gdk_pixbuf_animation_iter_get_pixbuf*(iter: PGdkPixbufAnimationIter): PGdkPixbuf{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_get_pixbuf".}
-proc gdk_pixbuf_animation_iter_on_currently_loading_frame*(
-    iter: PGdkPixbufAnimationIter): gboolean{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_animation_iter_on_currently_loading_frame".}
-proc gdk_pixbuf_animation_iter_advance*(iter: PGdkPixbufAnimationIter,
-                                        e: var TGTimeVal): gboolean{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_animation_iter_advance".}
-proc gdk_pixbuf_get_option*(pixbuf: PGdkPixbuf, key: cstring): cstring{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_get_option".}
-type
-  PGdkPixbufLoader* = ptr TGdkPixbufLoader
-  TGdkPixbufLoader* {.final, pure.} = object
-    parent_instance*: TGObject
-    priv*: gpointer
-
-  PGdkPixbufLoaderClass* = ptr TGdkPixbufLoaderClass
-  TGdkPixbufLoaderClass* {.final, pure.} = object
-    parent_class*: TGObjectClass
-    area_prepared*: proc (loader: PGdkPixbufLoader){.cdecl.}
-    area_updated*: proc (loader: PGdkPixbufLoader, x: int32, y: int32,
-                         width: int32, height: int32){.cdecl.}
-    closed*: proc (loader: PGdkPixbufLoader){.cdecl.}
-
-
-proc GDK_TYPE_PIXBUF_LOADER*(): GType
-proc GDK_PIXBUF_LOADER*(obj: pointer): PGdkPixbufLoader
-proc GDK_PIXBUF_LOADER_CLASS*(klass: pointer): PGdkPixbufLoaderClass
-proc GDK_IS_PIXBUF_LOADER*(obj: pointer): bool
-proc GDK_IS_PIXBUF_LOADER_CLASS*(klass: pointer): bool
-proc GDK_PIXBUF_LOADER_GET_CLASS*(obj: pointer): PGdkPixbufLoaderClass
-proc gdk_pixbuf_loader_get_type*(): GType{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_loader_get_type".}
-proc gdk_pixbuf_loader_new*(): PGdkPixbufLoader{.cdecl, dynlib: gdkpixbuflib,
-    importc: "gdk_pixbuf_loader_new".}
-proc gdk_pixbuf_loader_new_with_type*(image_type: cstring, error: pointer): PGdkPixbufLoader{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_new_with_type".}
-proc gdk_pixbuf_loader_write*(loader: PGdkPixbufLoader, buf: Pguchar,
-                              count: gsize, error: pointer): gboolean{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_write".}
-proc gdk_pixbuf_loader_get_pixbuf*(loader: PGdkPixbufLoader): PGdkPixbuf{.cdecl,
-    dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_get_pixbuf".}
-proc gdk_pixbuf_loader_get_animation*(loader: PGdkPixbufLoader): PGdkPixbufAnimation{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_get_animation".}
-proc gdk_pixbuf_loader_close*(loader: PGdkPixbufLoader, error: pointer): gboolean{.
-    cdecl, dynlib: gdkpixbuflib, importc: "gdk_pixbuf_loader_close".}
-proc GDK_TYPE_PIXBUF_LOADER*(): GType =
-  result = gdk_pixbuf_loader_get_type()
-
-proc GDK_PIXBUF_LOADER*(obj: pointer): PGdkPixbufLoader =
-  result = cast[PGdkPixbufLoader](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      GDK_TYPE_PIXBUF_LOADER()))
-
-proc GDK_PIXBUF_LOADER_CLASS*(klass: pointer): PGdkPixbufLoaderClass =
-  result = cast[PGdkPixbufLoaderClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GDK_TYPE_PIXBUF_LOADER()))
-
-proc GDK_IS_PIXBUF_LOADER*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GDK_TYPE_PIXBUF_LOADER())
-
-proc GDK_IS_PIXBUF_LOADER_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_PIXBUF_LOADER())
-
-proc GDK_PIXBUF_LOADER_GET_CLASS*(obj: pointer): PGdkPixbufLoaderClass =
-  result = cast[PGdkPixbufLoaderClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GDK_TYPE_PIXBUF_LOADER()))
-
-proc GDK_TYPE_PIXBUF*(): GType =
-  result = gdk_pixbuf_get_type()
-
-proc GDK_PIXBUF*(anObject: pointer): PGdkPixbuf =
-  result = cast[PGdkPixbuf](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_PIXBUF()))
-
-proc GDK_IS_PIXBUF*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXBUF())
-
-proc GDK_TYPE_PIXBUF_ANIMATION*(): GType =
-  result = gdk_pixbuf_animation_get_type()
-
-proc GDK_PIXBUF_ANIMATION*(anObject: pointer): PGdkPixbufAnimation =
-  result = cast[PGdkPixbufAnimation](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      GDK_TYPE_PIXBUF_ANIMATION()))
-
-proc GDK_IS_PIXBUF_ANIMATION*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXBUF_ANIMATION())
-
-proc GDK_TYPE_PIXBUF_ANIMATION_ITER*(): GType =
-  result = gdk_pixbuf_animation_iter_get_type()
-
-proc GDK_PIXBUF_ANIMATION_ITER*(anObject: pointer): PGdkPixbufAnimationIter =
-  result = cast[PGdkPixbufAnimationIter](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-    GDK_TYPE_PIXBUF_ANIMATION_ITER()))
-
-proc GDK_IS_PIXBUF_ANIMATION_ITER*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_PIXBUF_ANIMATION_ITER())
-
-proc GDK_PIXBUF_ERROR*(): TGQuark =
-  result = gdk_pixbuf_error_quark()
diff --git a/lib/wrappers/gtk/gdkglext.nim b/lib/wrappers/gtk/gdkglext.nim
deleted file mode 100755
index 524b5f730..000000000
--- a/lib/wrappers/gtk/gdkglext.nim
+++ /dev/null
@@ -1,564 +0,0 @@
-{.deadCodeElim: on.}
-
-import 
-  Glib2, Gdk2
-
-when defined(WIN32): 
-  const 
-    GdkGLExtLib = "libgdkglext-win32-1.0-0.dll"
-else: 
-  const 
-    GdkGLExtLib = "libgdkglext-x11-1.0.so"
-type 
-  TGdkGLConfigAttrib* = int32
-  TGdkGLConfigCaveat* = int32
-  TGdkGLVisualType* = int32
-  TGdkGLTransparentType* = int32
-  TGdkGLDrawableTypeMask* = int32
-  TGdkGLRenderTypeMask* = int32
-  TGdkGLBufferMask* = int32
-  TGdkGLConfigError* = int32
-  TGdkGLRenderType* = int32
-  TGdkGLDrawableAttrib* = int32
-  TGdkGLPbufferAttrib* = int32
-  TGdkGLEventMask* = int32
-  TGdkGLEventType* = int32
-  TGdkGLDrawableType* = int32
-  TGdkGLProc* = Pointer
-  PGdkGLConfig* = ptr TGdkGLConfig
-  PGdkGLContext* = ptr TGdkGLContext
-  PGdkGLDrawable* = ptr TGdkGLDrawable
-  PGdkGLPixmap* = ptr TGdkGLPixmap
-  PGdkGLWindow* = ptr TGdkGLWindow
-  TGdkGLConfig* = object of TGObject
-    layer_plane*: gint
-    n_aux_buffers*: gint
-    n_sample_buffers*: gint
-    flag0*: int16
-
-  PGdkGLConfigClass* = ptr TGdkGLConfigClass
-  TGdkGLConfigClass* = object of TGObjectClass
-
-  TGdkGLContext* = object of TGObject
-
-  PGdkGLContextClass* = ptr TGdkGLContextClass
-  TGdkGLContextClass* = object of TGObjectClass
-
-  TGdkGLDrawable* = object of TGObject
-
-  PGdkGLDrawableClass* = ptr TGdkGLDrawableClass
-  TGdkGLDrawableClass* = object of TGTypeInterface
-    create_new_context*: proc (gldrawable: PGdkGLDrawable, 
-                               share_list: PGdkGLContext, direct: gboolean, 
-                               render_type: int32): PGdkGLContext{.cdecl.}
-    make_context_current*: proc (draw: PGdkGLDrawable, a_read: PGdkGLDrawable, 
-                                 glcontext: PGdkGLContext): gboolean{.cdecl.}
-    is_double_buffered*: proc (gldrawable: PGdkGLDrawable): gboolean{.cdecl.}
-    swap_buffers*: proc (gldrawable: PGdkGLDrawable){.cdecl.}
-    wait_gl*: proc (gldrawable: PGdkGLDrawable){.cdecl.}
-    wait_gdk*: proc (gldrawable: PGdkGLDrawable){.cdecl.}
-    gl_begin*: proc (draw: PGdkGLDrawable, a_read: PGdkGLDrawable, 
-                     glcontext: PGdkGLContext): gboolean{.cdecl.}
-    gl_end*: proc (gldrawable: PGdkGLDrawable){.cdecl.}
-    get_gl_config*: proc (gldrawable: PGdkGLDrawable): PGdkGLConfig{.cdecl.}
-    get_size*: proc (gldrawable: PGdkGLDrawable, width, height: PGInt){.cdecl.}
-
-  TGdkGLPixmap* = object of TGObject
-    drawable*: PGdkDrawable
-
-  PGdkGLPixmapClass* = ptr TGdkGLPixmapClass
-  TGdkGLPixmapClass* = object of TGObjectClass
-
-  TGdkGLWindow* = object of TGObject
-    drawable*: PGdkDrawable
-
-  PGdkGLWindowClass* = ptr TGdkGLWindowClass
-  TGdkGLWindowClass* = object of TGObjectClass
-
-
-const 
-  HEADER_GDKGLEXT_MAJOR_VERSION* = 1
-  HEADER_GDKGLEXT_MINOR_VERSION* = 0
-  HEADER_GDKGLEXT_MICRO_VERSION* = 6
-  HEADER_GDKGLEXT_INTERFACE_AGE* = 4
-  HEADER_GDKGLEXT_BINARY_AGE* = 6
-
-proc HEADER_GDKGLEXT_CHECK_VERSION*(major, minor, micro: guint): bool
-var 
-  gdkglext_major_version*{.importc, dynlib: GdkGLExtLib.}: guint
-  gdkglext_minor_version*{.importc, dynlib: GdkGLExtLib.}: guint
-  gdkglext_micro_version*{.importc, dynlib: GdkGLExtLib.}: guint
-  gdkglext_interface_age*{.importc, dynlib: GdkGLExtLib.}: guint
-  gdkglext_binary_age*{.importc, dynlib: GdkGLExtLib.}: guint
-
-const 
-  GDK_GL_SUCCESS* = 0
-  GDK_GL_ATTRIB_LIST_NONE* = 0
-  GDK_GL_USE_GL* = 1
-  GDK_GL_BUFFER_SIZE* = 2
-  GDK_GL_LEVEL* = 3
-  GDK_GL_RGBA* = 4
-  GDK_GL_DOUBLEBUFFER* = 5
-  GDK_GL_STEREO* = 6
-  GDK_GL_AUX_BUFFERS* = 7
-  GDK_GL_RED_SIZE* = 8
-  GDK_GL_GREEN_SIZE* = 9
-  GDK_GL_BLUE_SIZE* = 10
-  GDK_GL_ALPHA_SIZE* = 11
-  GDK_GL_DEPTH_SIZE* = 12
-  GDK_GL_STENCIL_SIZE* = 13
-  GDK_GL_ACCUM_RED_SIZE* = 14
-  GDK_GL_ACCUM_GREEN_SIZE* = 15
-  GDK_GL_ACCUM_BLUE_SIZE* = 16
-  GDK_GL_ACCUM_ALPHA_SIZE* = 17
-  GDK_GL_CONFIG_CAVEAT* = 0x00000020
-  GDK_GL_X_VISUAL_TYPE* = 0x00000022
-  GDK_GL_TRANSPARENT_TYPE* = 0x00000023
-  GDK_GL_TRANSPARENT_INDEX_VALUE* = 0x00000024
-  GDK_GL_TRANSPARENT_RED_VALUE* = 0x00000025
-  GDK_GL_TRANSPARENT_GREEN_VALUE* = 0x00000026
-  GDK_GL_TRANSPARENT_BLUE_VALUE* = 0x00000027
-  GDK_GL_TRANSPARENT_ALPHA_VALUE* = 0x00000028
-  GDK_GL_DRAWABLE_TYPE* = 0x00008010
-  GDK_GL_RENDER_TYPE* = 0x00008011
-  GDK_GL_X_RENDERABLE* = 0x00008012
-  GDK_GL_FBCONFIG_ID* = 0x00008013
-  GDK_GL_MAX_PBUFFER_WIDTH* = 0x00008016
-  GDK_GL_MAX_PBUFFER_HEIGHT* = 0x00008017
-  GDK_GL_MAX_PBUFFER_PIXELS* = 0x00008018
-  GDK_GL_VISUAL_ID* = 0x0000800B
-  GDK_GL_SCREEN* = 0x0000800C
-  GDK_GL_SAMPLE_BUFFERS* = 100000
-  GDK_GL_SAMPLES* = 100001
-  GDK_GL_DONT_CARE* = 0xFFFFFFFF
-  GDK_GL_NONE* = 0x00008000
-  GDK_GL_CONFIG_CAVEAT_DONT_CARE* = 0xFFFFFFFF
-  GDK_GL_CONFIG_CAVEAT_NONE* = 0x00008000
-  GDK_GL_SLOW_CONFIG* = 0x00008001
-  GDK_GL_NON_CONFORMANT_CONFIG* = 0x0000800D
-  GDK_GL_VISUAL_TYPE_DONT_CARE* = 0xFFFFFFFF
-  GDK_GL_TRUE_COLOR* = 0x00008002
-  GDK_GL_DIRECT_COLOR* = 0x00008003
-  GDK_GL_PSEUDO_COLOR* = 0x00008004
-  GDK_GL_STATIC_COLOR* = 0x00008005
-  GDK_GL_GRAY_SCALE* = 0x00008006
-  GDK_GL_STATIC_GRAY* = 0x00008007
-  GDK_GL_TRANSPARENT_NONE* = 0x00008000
-  GDK_GL_TRANSPARENT_RGB* = 0x00008008
-  GDK_GL_TRANSPARENT_INDEX* = 0x00008009
-  GDK_GL_WINDOW_BIT* = 1 shl 0
-  GDK_GL_PIXMAP_BIT* = 1 shl 1
-  GDK_GL_PBUFFER_BIT* = 1 shl 2
-  GDK_GL_RGBA_BIT* = 1 shl 0
-  GDK_GL_COLOR_INDEX_BIT* = 1 shl 1
-  GDK_GL_FRONT_LEFT_BUFFER_BIT* = 1 shl 0
-  GDK_GL_FRONT_RIGHT_BUFFER_BIT* = 1 shl 1
-  GDK_GL_BACK_LEFT_BUFFER_BIT* = 1 shl 2
-  GDK_GL_BACK_RIGHT_BUFFER_BIT* = 1 shl 3
-  GDK_GL_AUX_BUFFERS_BIT* = 1 shl 4
-  GDK_GL_DEPTH_BUFFER_BIT* = 1 shl 5
-  GDK_GL_STENCIL_BUFFER_BIT* = 1 shl 6
-  GDK_GL_ACCUM_BUFFER_BIT* = 1 shl 7
-  GDK_GL_BAD_SCREEN* = 1
-  GDK_GL_BAD_ATTRIBUTE* = 2
-  GDK_GL_NO_EXTENSION* = 3
-  GDK_GL_BAD_VISUAL* = 4
-  GDK_GL_BAD_CONTEXT* = 5
-  GDK_GL_BAD_VALUE* = 6
-  GDK_GL_BAD_ENUM* = 7
-  GDK_GL_RGBA_TYPE* = 0x00008014
-  GDK_GL_COLOR_INDEX_TYPE* = 0x00008015
-  GDK_GL_PRESERVED_CONTENTS* = 0x0000801B
-  GDK_GL_LARGEST_PBUFFER* = 0x0000801C
-  GDK_GL_WIDTH* = 0x0000801D
-  GDK_GL_HEIGHT* = 0x0000801E
-  GDK_GL_EVENT_MASK* = 0x0000801F
-  GDK_GL_PBUFFER_PRESERVED_CONTENTS* = 0x0000801B
-  GDK_GL_PBUFFER_LARGEST_PBUFFER* = 0x0000801C
-  GDK_GL_PBUFFER_HEIGHT* = 0x00008040
-  GDK_GL_PBUFFER_WIDTH* = 0x00008041
-  GDK_GL_PBUFFER_CLOBBER_MASK* = 1 shl 27
-  GDK_GL_DAMAGED* = 0x00008020
-  GDK_GL_SAVED* = 0x00008021
-  GDK_GL_WINDOW_VALUE* = 0x00008022
-  GDK_GL_PBUFFER* = 0x00008023
-
-proc gdk_gl_config_attrib_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_attrib_get_type".}
-proc GDK_TYPE_GL_CONFIG_ATTRIB*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_attrib_get_type".}
-proc gdk_gl_config_caveat_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_caveat_get_type".}
-proc GDK_TYPE_GL_CONFIG_CAVEAT*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_caveat_get_type".}
-proc gdk_gl_visual_type_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_visual_type_get_type".}
-proc GDK_TYPE_GL_VISUAL_TYPE*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                        importc: "gdk_gl_visual_type_get_type".}
-proc gdk_gl_transparent_type_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_transparent_type_get_type".}
-proc GDK_TYPE_GL_TRANSPARENT_TYPE*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_transparent_type_get_type".}
-proc gdk_gl_drawable_type_mask_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_type_mask_get_type".}
-proc GDK_TYPE_GL_DRAWABLE_TYPE_MASK*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_type_mask_get_type".}
-proc gdk_gl_render_type_mask_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_render_type_mask_get_type".}
-proc GDK_TYPE_GL_RENDER_TYPE_MASK*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_render_type_mask_get_type".}
-proc gdk_gl_buffer_mask_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_buffer_mask_get_type".}
-proc GDK_TYPE_GL_BUFFER_MASK*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                        importc: "gdk_gl_buffer_mask_get_type".}
-proc gdk_gl_config_error_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_error_get_type".}
-proc GDK_TYPE_GL_CONFIG_ERROR*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_error_get_type".}
-proc gdk_gl_render_type_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_render_type_get_type".}
-proc GDK_TYPE_GL_RENDER_TYPE*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                        importc: "gdk_gl_render_type_get_type".}
-proc gdk_gl_drawable_attrib_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_attrib_get_type".}
-proc GDK_TYPE_GL_DRAWABLE_ATTRIB*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_attrib_get_type".}
-proc gdk_gl_pbuffer_attrib_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_pbuffer_attrib_get_type".}
-proc GDK_TYPE_GL_PBUFFER_ATTRIB*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_pbuffer_attrib_get_type".}
-proc gdk_gl_event_mask_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_event_mask_get_type".}
-proc GDK_TYPE_GL_EVENT_MASK*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                       importc: "gdk_gl_event_mask_get_type".}
-proc gdk_gl_event_type_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_event_type_get_type".}
-proc GDK_TYPE_GL_EVENT_TYPE*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                       importc: "gdk_gl_event_type_get_type".}
-proc gdk_gl_drawable_type_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_type_get_type".}
-proc GDK_TYPE_GL_DRAWABLE_TYPE*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_type_get_type".}
-proc gdk_gl_config_mode_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_config_mode_get_type".}
-proc GDK_TYPE_GL_CONFIG_MODE*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                        importc: "gdk_gl_config_mode_get_type".}
-proc gdk_gl_parse_args*(argc: var int32, argv: ptr cstringArray): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_parse_args".}
-proc gdk_gl_init_check*(argc: var int32, argv: ptr cstringArray): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_init_check".}
-proc gdk_gl_init*(argc: var int32, argv: ptr cstringArray){.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_init".}
-proc gdk_gl_query_gl_extension*(extension: cstring): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_query_gl_extension".}
-proc gdk_gl_get_proc_address*(proc_name: cstring): TGdkGLProc{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_get_proc_address".}
-const 
-  bm_TGdkGLConfig_is_rgba* = 1 shl 0
-  bp_TGdkGLConfig_is_rgba* = 0
-  bm_TGdkGLConfig_is_double_buffered* = 1 shl 1
-  bp_TGdkGLConfig_is_double_buffered* = 1
-  bm_TGdkGLConfig_as_single_mode* = 1 shl 2
-  bp_TGdkGLConfig_as_single_mode* = 2
-  bm_TGdkGLConfig_is_stereo* = 1 shl 3
-  bp_TGdkGLConfig_is_stereo* = 3
-  bm_TGdkGLConfig_has_alpha* = 1 shl 4
-  bp_TGdkGLConfig_has_alpha* = 4
-  bm_TGdkGLConfig_has_depth_buffer* = 1 shl 5
-  bp_TGdkGLConfig_has_depth_buffer* = 5
-  bm_TGdkGLConfig_has_stencil_buffer* = 1 shl 6
-  bp_TGdkGLConfig_has_stencil_buffer* = 6
-  bm_TGdkGLConfig_has_accum_buffer* = 1 shl 7
-  bp_TGdkGLConfig_has_accum_buffer* = 7
-
-const 
-  GDK_GL_MODE_RGB* = 0
-  GDK_GL_MODE_RGBA* = 0
-  GDK_GL_MODE_INDEX* = 1 shl 0
-  GDK_GL_MODE_SINGLE* = 0
-  GDK_GL_MODE_DOUBLE* = 1 shl 1
-  GDK_GL_MODE_STEREO* = 1 shl 2
-  GDK_GL_MODE_ALPHA* = 1 shl 3
-  GDK_GL_MODE_DEPTH* = 1 shl 4
-  GDK_GL_MODE_STENCIL* = 1 shl 5
-  GDK_GL_MODE_ACCUM* = 1 shl 6
-  GDK_GL_MODE_MULTISAMPLE* = 1 shl 7
-
-type 
-  TGdkGLConfigMode* = int32
-  PGdkGLConfigMode* = ptr TGdkGLConfigMode
-
-proc GDK_TYPE_GL_CONFIG*(): GType
-proc GDK_GL_CONFIG*(anObject: Pointer): PGdkGLConfig
-proc GDK_GL_CONFIG_CLASS*(klass: Pointer): PGdkGLConfigClass
-proc GDK_IS_GL_CONFIG*(anObject: Pointer): bool
-proc GDK_IS_GL_CONFIG_CLASS*(klass: Pointer): bool
-proc GDK_GL_CONFIG_GET_CLASS*(obj: Pointer): PGdkGLConfigClass
-proc gdk_gl_config_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                       importc: "gdk_gl_config_get_type".}
-proc gdk_gl_config_get_screen*(glconfig: PGdkGLConfig): PGdkScreen{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_screen".}
-proc gdk_gl_config_get_attrib*(glconfig: PGdkGLConfig, attribute: int, 
-                               value: var cint): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_attrib".}
-proc gdk_gl_config_get_colormap*(glconfig: PGdkGLConfig): PGdkColormap{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_colormap".}
-proc gdk_gl_config_get_visual*(glconfig: PGdkGLConfig): PGdkVisual{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_visual".}
-proc gdk_gl_config_get_depth*(glconfig: PGdkGLConfig): gint{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_depth".}
-proc gdk_gl_config_get_layer_plane*(glconfig: PGdkGLConfig): gint{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_layer_plane".}
-proc gdk_gl_config_get_n_aux_buffers*(glconfig: PGdkGLConfig): gint{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_n_aux_buffers".}
-proc gdk_gl_config_get_n_sample_buffers*(glconfig: PGdkGLConfig): gint{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_get_n_sample_buffers".}
-proc gdk_gl_config_is_rgba*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_is_rgba".}
-proc gdk_gl_config_is_double_buffered*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_is_double_buffered".}
-proc gdk_gl_config_is_stereo*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_is_stereo".}
-proc gdk_gl_config_has_alpha*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_has_alpha".}
-proc gdk_gl_config_has_depth_buffer*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_has_depth_buffer".}
-proc gdk_gl_config_has_stencil_buffer*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_has_stencil_buffer".}
-proc gdk_gl_config_has_accum_buffer*(glconfig: PGdkGLConfig): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_config_has_accum_buffer".}
-proc GDK_TYPE_GL_CONTEXT*(): GType
-proc GDK_GL_CONTEXT*(anObject: Pointer): PGdkGLContext
-proc GDK_GL_CONTEXT_CLASS*(klass: Pointer): PGdkGLContextClass
-proc GDK_IS_GL_CONTEXT*(anObject: Pointer): bool
-proc GDK_IS_GL_CONTEXT_CLASS*(klass: Pointer): bool
-proc GDK_GL_CONTEXT_GET_CLASS*(obj: Pointer): PGdkGLContextClass
-proc gdk_gl_context_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                        importc: "gdk_gl_context_get_type".}
-proc gdk_gl_context_new*(gldrawable: PGdkGLDrawable, share_list: PGdkGLContext, 
-                         direct: gboolean, render_type: int32): PGdkGLContext{.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_context_new".}
-proc gdk_gl_context_destroy*(glcontext: PGdkGLContext){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_context_destroy".}
-proc gdk_gl_context_copy*(glcontext: PGdkGLContext, src: PGdkGLContext, 
-                          mask: int32): gboolean{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_context_copy".}
-proc gdk_gl_context_get_gl_drawable*(glcontext: PGdkGLContext): PGdkGLDrawable{.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_context_get_gl_drawable".}
-proc gdk_gl_context_get_gl_config*(glcontext: PGdkGLContext): PGdkGLConfig{.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_context_get_gl_config".}
-proc gdk_gl_context_get_share_list*(glcontext: PGdkGLContext): PGdkGLContext{.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_context_get_share_list".}
-proc gdk_gl_context_is_direct*(glcontext: PGdkGLContext): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_context_is_direct".}
-proc gdk_gl_context_get_render_type*(glcontext: PGdkGLContext): int32{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_context_get_render_type".}
-proc gdk_gl_context_get_current*(): PGdkGLContext{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_context_get_current".}
-proc GDK_TYPE_GL_DRAWABLE*(): GType
-proc GDK_GL_DRAWABLE*(inst: Pointer): PGdkGLDrawable
-proc GDK_GL_DRAWABLE_CLASS*(vtable: Pointer): PGdkGLDrawableClass
-proc GDK_IS_GL_DRAWABLE*(inst: Pointer): bool
-proc GDK_IS_GL_DRAWABLE_CLASS*(vtable: Pointer): bool
-proc GDK_GL_DRAWABLE_GET_CLASS*(inst: Pointer): PGdkGLDrawableClass
-proc gdk_gl_drawable_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_get_type".}
-proc gdk_gl_drawable_make_current*(gldrawable: PGdkGLDrawable, 
-                                   glcontext: PGdkGLContext): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_make_current".}
-proc gdk_gl_drawable_is_double_buffered*(gldrawable: PGdkGLDrawable): gboolean{.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_is_double_buffered".}
-proc gdk_gl_drawable_swap_buffers*(gldrawable: PGdkGLDrawable){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_swap_buffers".}
-proc gdk_gl_drawable_wait_gl*(gldrawable: PGdkGLDrawable){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_wait_gl".}
-proc gdk_gl_drawable_wait_gdk*(gldrawable: PGdkGLDrawable){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_wait_gdk".}
-proc gdk_gl_drawable_gl_begin*(gldrawable: PGdkGLDrawable, 
-                               glcontext: PGdkGLContext): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_gl_begin".}
-proc gdk_gl_drawable_gl_end*(gldrawable: PGdkGLDrawable){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_gl_end".}
-proc gdk_gl_drawable_get_gl_config*(gldrawable: PGdkGLDrawable): PGdkGLConfig{.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_get_gl_config".}
-proc gdk_gl_drawable_get_size*(gldrawable: PGdkGLDrawable, width, height: PGInt){.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_drawable_get_size".}
-proc gdk_gl_drawable_get_current*(): PGdkGLDrawable{.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_drawable_get_current".}
-proc GDK_TYPE_GL_PIXMAP*(): GType
-proc GDK_GL_PIXMAP*(anObject: Pointer): PGdkGLPixmap
-proc GDK_GL_PIXMAP_CLASS*(klass: Pointer): PGdkGLPixmapClass
-proc GDK_IS_GL_PIXMAP*(anObject: Pointer): bool
-proc GDK_IS_GL_PIXMAP_CLASS*(klass: Pointer): bool
-proc GDK_GL_PIXMAP_GET_CLASS*(obj: Pointer): PGdkGLPixmapClass
-proc gdk_gl_pixmap_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                       importc: "gdk_gl_pixmap_get_type".}
-proc gdk_gl_pixmap_new*(glconfig: PGdkGLConfig, pixmap: PGdkPixmap, 
-                        attrib_list: ptr int32): PGdkGLPixmap{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_pixmap_new".}
-proc gdk_gl_pixmap_destroy*(glpixmap: PGdkGLPixmap){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_pixmap_destroy".}
-proc gdk_gl_pixmap_get_pixmap*(glpixmap: PGdkGLPixmap): PGdkPixmap{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_pixmap_get_pixmap".}
-proc gdk_pixmap_set_gl_capability*(pixmap: PGdkPixmap, glconfig: PGdkGLConfig, 
-                                   attrib_list: ptr int32): PGdkGLPixmap{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_pixmap_set_gl_capability".}
-proc gdk_pixmap_unset_gl_capability*(pixmap: PGdkPixmap){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_pixmap_unset_gl_capability".}
-proc gdk_pixmap_is_gl_capable*(pixmap: PGdkPixmap): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_pixmap_is_gl_capable".}
-proc gdk_pixmap_get_gl_pixmap*(pixmap: PGdkPixmap): PGdkGLPixmap{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_pixmap_get_gl_pixmap".}
-proc gdk_pixmap_get_gl_drawable*(pixmap: PGdkPixmap): PGdkGLDrawable
-proc GDK_TYPE_GL_WINDOW*(): GType
-proc GDK_GL_WINDOW*(anObject: Pointer): PGdkGLWindow
-proc GDK_GL_WINDOW_CLASS*(klass: Pointer): PGdkGLWindowClass
-proc GDK_IS_GL_WINDOW*(anObject: Pointer): bool
-proc GDK_IS_GL_WINDOW_CLASS*(klass: Pointer): bool
-proc GDK_GL_WINDOW_GET_CLASS*(obj: Pointer): PGdkGLWindowClass
-proc gdk_gl_window_get_type*(): GType{.cdecl, dynlib: GdkGLExtLib, 
-                                       importc: "gdk_gl_window_get_type".}
-proc gdk_gl_window_new*(glconfig: PGdkGLConfig, window: PGdkWindow, 
-                        attrib_list: ptr int32): PGdkGLWindow{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_window_new".}
-proc gdk_gl_window_destroy*(glwindow: PGdkGLWindow){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_window_destroy".}
-proc gdk_gl_window_get_window*(glwindow: PGdkGLWindow): PGdkWindow{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_window_get_window".}
-proc gdk_window_set_gl_capability*(window: PGdkWindow, glconfig: PGdkGLConfig, 
-                                   attrib_list: ptr int32): PGdkGLWindow{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_window_set_gl_capability".}
-proc gdk_window_unset_gl_capability*(window: PGdkWindow){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_window_unset_gl_capability".}
-proc gdk_window_is_gl_capable*(window: PGdkWindow): gboolean{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_window_is_gl_capable".}
-proc gdk_window_get_gl_window*(window: PGdkWindow): PGdkGLWindow{.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_window_get_gl_window".}
-proc gdk_window_get_gl_drawable*(window: PGdkWindow): PGdkGLDrawable
-proc gdk_gl_draw_cube*(solid: gboolean, size: float64){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_draw_cube".}
-proc gdk_gl_draw_sphere*(solid: gboolean, radius: float64, slices: int32, 
-                         stacks: int32){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_draw_sphere".}
-proc gdk_gl_draw_cone*(solid: gboolean, base: float64, height: float64, 
-                       slices: int32, stacks: int32){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_draw_cone".}
-proc gdk_gl_draw_torus*(solid: gboolean, inner_radius: float64, 
-                        outer_radius: float64, nsides: int32, rings: int32){.
-    cdecl, dynlib: GdkGLExtLib, importc: "gdk_gl_draw_torus".}
-proc gdk_gl_draw_tetrahedron*(solid: gboolean){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_draw_tetrahedron".}
-proc gdk_gl_draw_octahedron*(solid: gboolean){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_draw_octahedron".}
-proc gdk_gl_draw_dodecahedron*(solid: gboolean){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_draw_dodecahedron".}
-proc gdk_gl_draw_icosahedron*(solid: gboolean){.cdecl, dynlib: GdkGLExtLib, 
-    importc: "gdk_gl_draw_icosahedron".}
-proc gdk_gl_draw_teapot*(solid: gboolean, scale: float64){.cdecl, 
-    dynlib: GdkGLExtLib, importc: "gdk_gl_draw_teapot".}
-proc HEADER_GDKGLEXT_CHECK_VERSION*(major, minor, micro: guint): bool = 
-  result = (HEADER_GDKGLEXT_MAJOR_VERSION > major) or
-      ((HEADER_GDKGLEXT_MAJOR_VERSION == major) and
-      (HEADER_GDKGLEXT_MINOR_VERSION > minor)) or
-      ((HEADER_GDKGLEXT_MAJOR_VERSION == major) and
-      (HEADER_GDKGLEXT_MINOR_VERSION == minor) and
-      (HEADER_GDKGLEXT_MICRO_VERSION >= micro))
-
-proc GDK_TYPE_GL_CONFIG*(): GType = 
-  result = gdk_gl_config_get_type()
-
-proc GDK_GL_CONFIG*(anObject: Pointer): PGdkGLConfig = 
-  result = cast[PGdkGLConfig](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_GL_CONFIG()))
-
-proc GDK_GL_CONFIG_CLASS*(klass: Pointer): PGdkGLConfigClass = 
-  result = cast[PGdkGLConfigClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_GL_CONFIG()))
-
-proc GDK_IS_GL_CONFIG*(anObject: Pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_GL_CONFIG())
-
-proc GDK_IS_GL_CONFIG_CLASS*(klass: Pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_GL_CONFIG())
-
-proc GDK_GL_CONFIG_GET_CLASS*(obj: Pointer): PGdkGLConfigClass = 
-  result = cast[PGdkGLConfigClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_GL_CONFIG()))
-
-proc GDK_TYPE_GL_CONTEXT*(): GType = 
-  result = gdk_gl_context_get_type()
-
-proc GDK_GL_CONTEXT*(anObject: Pointer): PGdkGLContext = 
-  result = cast[PGdkGLContext](G_TYPE_CHECK_INSTANCE_CAST(anObject, 
-      GDK_TYPE_GL_CONTEXT()))
-
-proc GDK_GL_CONTEXT_CLASS*(klass: Pointer): PGdkGLContextClass = 
-  result = cast[PGdkGLContextClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_GL_CONTEXT()))
-
-proc GDK_IS_GL_CONTEXT*(anObject: Pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_GL_CONTEXT())
-
-proc GDK_IS_GL_CONTEXT_CLASS*(klass: Pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_GL_CONTEXT())
-
-proc GDK_GL_CONTEXT_GET_CLASS*(obj: Pointer): PGdkGLContextClass = 
-  result = cast[PGdkGLContextClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_GL_CONTEXT()))
-
-proc GDK_TYPE_GL_DRAWABLE*(): GType = 
-  result = gdk_gl_drawable_get_type()
-
-proc GDK_GL_DRAWABLE*(inst: Pointer): PGdkGLDrawable = 
-  result = cast[PGdkGLDrawable](G_TYPE_CHECK_INSTANCE_CAST(inst, GDK_TYPE_GL_DRAWABLE()))
-
-proc GDK_GL_DRAWABLE_CLASS*(vtable: Pointer): PGdkGLDrawableClass = 
-  result = cast[PGdkGLDrawableClass](G_TYPE_CHECK_CLASS_CAST(vtable, 
-      GDK_TYPE_GL_DRAWABLE()))
-
-proc GDK_IS_GL_DRAWABLE*(inst: Pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(inst, GDK_TYPE_GL_DRAWABLE())
-
-proc GDK_IS_GL_DRAWABLE_CLASS*(vtable: Pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(vtable, GDK_TYPE_GL_DRAWABLE())
-
-proc GDK_GL_DRAWABLE_GET_CLASS*(inst: Pointer): PGdkGLDrawableClass = 
-  result = cast[PGdkGLDrawableClass](G_TYPE_INSTANCE_GET_INTERFACE(inst, 
-      GDK_TYPE_GL_DRAWABLE()))
-
-proc GDK_TYPE_GL_PIXMAP*(): GType = 
-  result = gdk_gl_pixmap_get_type()
-
-proc GDK_GL_PIXMAP*(anObject: Pointer): PGdkGLPixmap = 
-  result = cast[PGdkGLPixmap](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_GL_PIXMAP()))
-
-proc GDK_GL_PIXMAP_CLASS*(klass: Pointer): PGdkGLPixmapClass = 
-  result = cast[PGdkGLPixmapClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_GL_PIXMAP()))
-
-proc GDK_IS_GL_PIXMAP*(anObject: Pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_GL_PIXMAP())
-
-proc GDK_IS_GL_PIXMAP_CLASS*(klass: Pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_GL_PIXMAP())
-
-proc GDK_GL_PIXMAP_GET_CLASS*(obj: Pointer): PGdkGLPixmapClass = 
-  result = cast[PGdkGLPixmapClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_GL_PIXMAP()))
-
-proc gdk_pixmap_get_gl_drawable*(pixmap: PGdkPixmap): PGdkGLDrawable = 
-  result = GDK_GL_DRAWABLE(gdk_pixmap_get_gl_pixmap(pixmap))
-
-proc GDK_TYPE_GL_WINDOW*(): GType = 
-  result = gdk_gl_window_get_type()
-
-proc GDK_GL_WINDOW*(anObject: Pointer): PGdkGLWindow = 
-  result = cast[PGdkGLWindow](G_TYPE_CHECK_INSTANCE_CAST(anObject, GDK_TYPE_GL_WINDOW()))
-
-proc GDK_GL_WINDOW_CLASS*(klass: Pointer): PGdkGLWindowClass = 
-  result = cast[PGdkGLWindowClass](G_TYPE_CHECK_CLASS_CAST(klass, GDK_TYPE_GL_WINDOW()))
-
-proc GDK_IS_GL_WINDOW*(anObject: Pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GDK_TYPE_GL_WINDOW())
-
-proc GDK_IS_GL_WINDOW_CLASS*(klass: Pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GDK_TYPE_GL_WINDOW())
-
-proc GDK_GL_WINDOW_GET_CLASS*(obj: Pointer): PGdkGLWindowClass = 
-  result = cast[PGdkGLWindowClass](G_TYPE_INSTANCE_GET_CLASS(obj, GDK_TYPE_GL_WINDOW()))
-
-proc gdk_window_get_gl_drawable*(window: PGdkWindow): PGdkGLDrawable = 
-  result = GDK_GL_DRAWABLE(gdk_window_get_gl_window(window))
diff --git a/lib/wrappers/gtk/glib2.nim b/lib/wrappers/gtk/glib2.nim
deleted file mode 100755
index 3f33501e8..000000000
--- a/lib/wrappers/gtk/glib2.nim
+++ /dev/null
@@ -1,4503 +0,0 @@
-{.deadCodeElim: on.}
-
-when defined(windows):
-  const
-    gliblib = "libglib-2.0-0.dll"
-    gmodulelib = "libgmodule-2.0-0.dll"
-    gobjectlib = "libgobject-2.0-0.dll"
-else:
-  const
-    gliblib = "libglib-2.0.so"
-    gmodulelib = "libgmodule-2.0.so"
-    gobjectlib = "libgobject-2.0.so"
-    
-# gthreadlib = "libgthread-2.0.so"
-
-type
-  PGTypePlugin* = pointer
-  PGParamSpecPool* = pointer
-  PPchar* = ptr cstring
-  PPPchar* = ptr PPchar
-  PPPgchar* = ptr PPgchar
-  PPgchar* = ptr cstring
-  gchar* = char
-  gshort* = cshort
-  glong* = clong
-  gint* = cint
-  gboolean* = bool
-  guchar* = char
-  gushort* = int16
-  gulong* = int
-  guint* = cint
-  gfloat* = cfloat
-  gdouble* = cdouble
-  gpointer* = pointer
-  Pgshort* = ptr gshort
-  Pglong* = ptr glong
-  Pgint* = ptr gint
-  PPgint* = ptr Pgint
-  Pgboolean* = ptr gboolean
-  Pguchar* = ptr guchar
-  PPguchar* = ptr Pguchar
-  Pgushort* = ptr gushort
-  Pgulong* = ptr gulong
-  Pguint* = ptr guint
-  Pgfloat* = ptr gfloat
-  Pgdouble* = ptr gdouble
-  pgpointer* = ptr gpointer
-  gconstpointer* = pointer
-  PGCompareFunc* = ptr TGCompareFunc
-  TGCompareFunc* = proc (a, b: gconstpointer): gint{.cdecl.}
-  PGCompareDataFunc* = ptr TGCompareDataFunc
-  TGCompareDataFunc* = proc (a, b: gconstpointer, user_data: gpointer): gint{.
-      cdecl.}
-  PGEqualFunc* = ptr TGEqualFunc
-  TGEqualFunc* = proc (a, b: gconstpointer): gboolean{.cdecl.}
-  PGDestroyNotify* = ptr TGDestroyNotify
-  TGDestroyNotify* = proc (data: gpointer){.cdecl.}
-  PGFunc* = ptr TGFunc
-  TGFunc* = proc (data, userdata: gpointer, key: gconstpointer){.cdecl.}
-  PGHashFunc* = ptr TGHashFunc
-  TGHashFunc* = proc (key: gconstpointer): guint{.cdecl.}
-  PGHFunc* = ptr TGHFunc
-  TGHFunc* = proc (key, value, user_data: gpointer){.cdecl.}
-  PGFreeFunc* = proc (data: gpointer){.cdecl.}
-  PGTimeVal* = ptr TGTimeVal
-  TGTimeVal* {.final.} = object
-    tv_sec*: glong
-    tv_usec*: glong
-
-  guint64* = int64
-  gint8* = int8
-  guint8* = int8
-  gint16* = int16
-  guint16* = int16
-  gint32* = int32
-  guint32* = int32
-  gint64* = int64
-  gssize* = int32
-  gsize* = int32
-  Pgint8* = ptr gint8
-  Pguint8* = ptr guint8
-  Pgint16* = ptr gint16
-  Pguint16* = ptr guint16
-  Pgint32* = ptr gint32
-  Pguint32* = ptr guint32
-  Pgint64* = ptr gint64
-  Pguint64* = ptr guint64
-  pgssize* = ptr gssize
-  pgsize* = ptr gsize
-  TGQuark* = guint32
-  PGQuark* = ptr TGQuark
-  PGTypeCValue* = ptr TGTypeCValue
-  TGTypeCValue* {.final.} = object
-    v_double*: gdouble
-
-  GType* = gulong
-  PGType* = ptr GType
-  PGTypeClass* = ptr TGTypeClass
-  TGTypeClass* {.final.} = object
-    g_type*: GType
-
-  PGTypeInstance* = ptr TGTypeInstance
-  TGTypeInstance* {.final.} = object
-    g_class*: PGTypeClass
-
-  PGTypeInterface* = ptr TGTypeInterface
-  TGTypeInterface* {.pure.} = object
-    g_type*: GType
-    g_instance_type*: GType
-
-  PGTypeQuery* = ptr TGTypeQuery
-  TGTypeQuery* {.final.} = object
-    theType*: GType
-    type_name*: cstring
-    class_size*: guint
-    instance_size*: guint
-
-  PGValue* = ptr TGValue
-  TGValue* {.final.} = object
-    g_type*: GType
-    data*: array[0..1, gdouble]
-
-  PGData* = pointer
-  PPGData* = ptr PGData
-  PGSList* = ptr TGSList
-  PPGSList* = ptr PGSList
-  TGSList* {.final.} = object
-    data*: gpointer
-    next*: PGSList
-
-  PGList* = ptr TGList
-  TGList* {.final.} = object
-    data*: gpointer
-    next*: PGList
-    prev*: PGList
-
-  TGParamFlags* = int32
-  PGParamFlags* = ptr TGParamFlags
-  PGParamSpec* = ptr TGParamSpec
-  PPGParamSpec* = ptr PGParamSpec
-  TGParamSpec* {.final.} = object
-    g_type_instance*: TGTypeInstance
-    name*: cstring
-    flags*: TGParamFlags
-    value_type*: GType
-    owner_type*: GType
-    nick*: cstring
-    blurb*: cstring
-    qdata*: PGData
-    ref_count*: guint
-    param_id*: guint
-
-  PGParamSpecClass* = ptr TGParamSpecClass
-  TGParamSpecClass* {.final.} = object
-    g_type_class*: TGTypeClass
-    value_type*: GType
-    finalize*: proc (pspec: PGParamSpec){.cdecl.}
-    value_set_default*: proc (pspec: PGParamSpec, value: PGValue){.cdecl.}
-    value_validate*: proc (pspec: PGParamSpec, value: PGValue): gboolean{.cdecl.}
-    values_cmp*: proc (pspec: PGParamSpec, value1: PGValue, value2: PGValue): gint{.
-        cdecl.}
-    dummy*: array[0..3, gpointer]
-
-  PGParameter* = ptr TGParameter
-  TGParameter* {.final.} = object
-    name*: cstring
-    value*: TGValue
-
-  TGBoxedCopyFunc* = proc (boxed: gpointer): gpointer{.cdecl.}
-  TGBoxedFreeFunc* = proc (boxed: gpointer){.cdecl.}
-
-  PGsource = pointer # I don't know and don't care
-
-const
-  G_TYPE_FUNDAMENTAL_SHIFT* = 2
-  G_TYPE_FUNDAMENTAL_MAX* = 255 shl G_TYPE_FUNDAMENTAL_SHIFT
-  G_TYPE_INVALID* = GType(0 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_NONE* = GType(1 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_INTERFACE* = GType(2 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_CHAR* = GType(3 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_UCHAR* = GType(4 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_BOOLEAN* = GType(5 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_INT* = GType(6 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_UINT* = GType(7 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_LONG* = GType(8 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_ULONG* = GType(9 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_INT64* = GType(10 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_UINT64* = GType(11 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_ENUM* = GType(12 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_FLAGS* = GType(13 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_FLOAT* = GType(14 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_DOUBLE* = GType(15 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_STRING* = GType(16 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_POINTER* = GType(17 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_BOXED* = GType(18 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_PARAM* = GType(19 shl G_TYPE_FUNDAMENTAL_SHIFT)
-  G_TYPE_OBJECT* = GType(20 shl G_TYPE_FUNDAMENTAL_SHIFT)
-
-proc G_TYPE_MAKE_FUNDAMENTAL*(x: int): GType
-const
-  G_TYPE_RESERVED_GLIB_FIRST* = 21
-  G_TYPE_RESERVED_GLIB_LAST* = 31
-  G_TYPE_RESERVED_BSE_FIRST* = 32
-  G_TYPE_RESERVED_BSE_LAST* = 48
-  G_TYPE_RESERVED_USER_FIRST* = 49
-
-proc G_TYPE_IS_FUNDAMENTAL*(theType: GType): bool
-proc G_TYPE_IS_DERIVED*(theType: GType): bool
-proc G_TYPE_IS_INTERFACE*(theType: GType): bool
-proc G_TYPE_IS_CLASSED*(theType: GType): gboolean
-proc G_TYPE_IS_INSTANTIATABLE*(theType: GType): bool
-proc G_TYPE_IS_DERIVABLE*(theType: GType): bool
-proc G_TYPE_IS_DEEP_DERIVABLE*(theType: GType): bool
-proc G_TYPE_IS_ABSTRACT*(theType: GType): bool
-proc G_TYPE_IS_VALUE_ABSTRACT*(theType: GType): bool
-proc G_TYPE_IS_VALUE_TYPE*(theType: GType): bool
-proc G_TYPE_HAS_VALUE_TABLE*(theType: GType): bool
-proc G_TYPE_CHECK_INSTANCE*(instance: Pointer): gboolean
-proc G_TYPE_CHECK_INSTANCE_CAST*(instance: Pointer, g_type: GType): PGTypeInstance
-proc G_TYPE_CHECK_INSTANCE_TYPE*(instance: Pointer, g_type: GType): bool
-proc G_TYPE_INSTANCE_GET_CLASS*(instance: Pointer, g_type: GType): PGTypeClass
-proc G_TYPE_INSTANCE_GET_INTERFACE*(instance: Pointer, g_type: GType): Pointer
-proc G_TYPE_CHECK_CLASS_CAST*(g_class: pointer, g_type: GType): Pointer
-proc G_TYPE_CHECK_CLASS_TYPE*(g_class: pointer, g_type: GType): bool
-proc G_TYPE_CHECK_VALUE*(value: Pointer): bool
-proc G_TYPE_CHECK_VALUE_TYPE*(value: pointer, g_type: GType): bool
-proc G_TYPE_FROM_INSTANCE*(instance: Pointer): GType
-proc G_TYPE_FROM_CLASS*(g_class: Pointer): GType
-proc G_TYPE_FROM_INTERFACE*(g_iface: Pointer): GType
-type
-  TGTypeDebugFlags* = int32
-  PGTypeDebugFlags* = ptr TGTypeDebugFlags
-
-const
-  G_TYPE_DEBUG_NONE* = 0
-  G_TYPE_DEBUG_OBJECTS* = 1 shl 0
-  G_TYPE_DEBUG_SIGNALS* = 1 shl 1
-  G_TYPE_DEBUG_MASK* = 0x00000003
-
-proc g_type_init*(){.cdecl, dynlib: gobjectlib, importc: "g_type_init".}
-proc g_type_init_with_debug_flags*(debug_flags: TGTypeDebugFlags){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_init_with_debug_flags".}
-proc g_type_name*(theType: GType): cstring{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_name".}
-proc g_type_qname*(theType: GType): TGQuark{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_qname".}
-proc g_type_from_name*(name: cstring): GType{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_from_name".}
-proc g_type_parent*(theType: GType): GType{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_parent".}
-proc g_type_depth*(theType: GType): guint{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_depth".}
-proc g_type_next_base*(leaf_type: GType, root_type: GType): GType{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_next_base".}
-proc g_type_is_a*(theType: GType, is_a_type: GType): gboolean{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_is_a".}
-proc g_type_class_ref*(theType: GType): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_class_ref".}
-proc g_type_class_peek*(theType: GType): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_class_peek".}
-proc g_type_class_unref*(g_class: gpointer){.cdecl, dynlib: gobjectlib,
-    importc: "g_type_class_unref".}
-proc g_type_class_peek_parent*(g_class: gpointer): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_class_peek_parent".}
-proc g_type_interface_peek*(instance_class: gpointer, iface_type: GType): gpointer{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_interface_peek".}
-proc g_type_interface_peek_parent*(g_iface: gpointer): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_interface_peek_parent".}
-proc g_type_children*(theType: GType, n_children: Pguint): PGType{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_children".}
-proc g_type_interfaces*(theType: GType, n_interfaces: Pguint): PGType{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_interfaces".}
-proc g_type_set_qdata*(theType: GType, quark: TGQuark, data: gpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_set_qdata".}
-proc g_type_get_qdata*(theType: GType, quark: TGQuark): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_get_qdata".}
-proc g_type_query*(theType: GType, query: PGTypeQuery){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_query".}
-type
-  TGBaseInitFunc* = proc (g_class: gpointer){.cdecl.}
-  TGBaseFinalizeFunc* = proc (g_class: gpointer){.cdecl.}
-  TGClassInitFunc* = proc (g_class: gpointer, class_data: gpointer){.cdecl.}
-  TGClassFinalizeFunc* = proc (g_class: gpointer, class_data: gpointer){.cdecl.}
-  TGInstanceInitFunc* = proc (instance: PGTypeInstance, g_class: gpointer){.
-      cdecl.}
-  TGInterfaceInitFunc* = proc (g_iface: gpointer, iface_data: gpointer){.cdecl.}
-  TGInterfaceFinalizeFunc* = proc (g_iface: gpointer, iface_data: gpointer){.
-      cdecl.}
-  TGTypeClassCacheFunc* = proc (cache_data: gpointer, g_class: PGTypeClass): gboolean{.
-      cdecl.}
-  TGTypeFundamentalFlags* = int32
-  PGTypeFundamentalFlags* = ptr TGTypeFundamentalFlags
-
-const
-  G_TYPE_FLAG_CLASSED* = 1 shl 0
-  G_TYPE_FLAG_INSTANTIATABLE* = 1 shl 1
-  G_TYPE_FLAG_DERIVABLE* = 1 shl 2
-  G_TYPE_FLAG_DEEP_DERIVABLE* = 1 shl 3
-
-type
-  TGTypeFlags* = int32
-  PGTypeFlags* = ptr TGTypeFlags
-
-const
-  G_TYPE_FLAG_ABSTRACT* = 1 shl 4
-  G_TYPE_FLAG_VALUE_ABSTRACT* = 1 shl 5
-
-type
-  PGTypeValueTable* = ptr TGTypeValueTable
-  TGTypeValueTable* {.final.} = object
-    value_init*: proc (value: PGValue){.cdecl.}
-    value_free*: proc (value: PGValue){.cdecl.}
-    value_copy*: proc (src_value: PGValue, dest_value: PGValue){.cdecl.}
-    value_peek_pointer*: proc (value: PGValue): gpointer{.cdecl.}
-    collect_format*: cstring
-    collect_value*: proc (value: PGValue, n_collect_values: guint,
-                          collect_values: PGTypeCValue, collect_flags: guint): cstring{.
-        cdecl.}
-    lcopy_format*: cstring
-    lcopy_value*: proc (value: PGValue, n_collect_values: guint,
-                        collect_values: PGTypeCValue, collect_flags: guint): cstring{.
-        cdecl.}
-
-  PGTypeInfo* = ptr TGTypeInfo
-  TGTypeInfo* {.final.} = object
-    class_size*: guint16
-    base_init*: TGBaseInitFunc
-    base_finalize*: TGBaseFinalizeFunc
-    class_init*: TGClassInitFunc
-    class_finalize*: TGClassFinalizeFunc
-    class_data*: gconstpointer
-    instance_size*: guint16
-    n_preallocs*: guint16
-    instance_init*: TGInstanceInitFunc
-    value_table*: PGTypeValueTable
-
-  PGTypeFundamentalInfo* = ptr TGTypeFundamentalInfo
-  TGTypeFundamentalInfo* {.final.} = object
-    type_flags*: TGTypeFundamentalFlags
-
-  PGInterfaceInfo* = ptr TGInterfaceInfo
-  TGInterfaceInfo* {.final.} = object
-    interface_init*: TGInterfaceInitFunc
-    interface_finalize*: TGInterfaceFinalizeFunc
-    interface_data*: gpointer
-
-
-proc g_type_register_static*(parent_type: GType, type_name: cstring,
-                             info: PGTypeInfo, flags: TGTypeFlags): GType{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_register_static".}
-proc g_type_register_dynamic*(parent_type: GType, type_name: cstring,
-                              plugin: PGTypePlugin, flags: TGTypeFlags): GType{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_register_dynamic".}
-proc g_type_register_fundamental*(type_id: GType, type_name: cstring,
-                                  info: PGTypeInfo,
-                                  finfo: PGTypeFundamentalInfo,
-                                  flags: TGTypeFlags): GType{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_register_fundamental".}
-proc g_type_add_interface_static*(instance_type: GType, interface_type: GType,
-                                  info: PGInterfaceInfo){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_add_interface_static".}
-proc g_type_add_interface_dynamic*(instance_type: GType, interface_type: GType,
-                                   plugin: PGTypePlugin){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_add_interface_dynamic".}
-proc g_type_interface_add_prerequisite*(interface_type: GType,
-                                        prerequisite_type: GType){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_interface_add_prerequisite".}
-proc g_type_get_plugin*(theType: GType): PGTypePlugin{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_get_plugin".}
-proc g_type_interface_get_plugin*(instance_type: GType,
-                                  implementation_type: GType): PGTypePlugin{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_interface_get_plugin".}
-proc g_type_fundamental_next*(): GType{.cdecl, dynlib: gobjectlib,
-                                        importc: "g_type_fundamental_next".}
-proc g_type_fundamental*(type_id: GType): GType{.cdecl, dynlib: gobjectlib,
-    importc: "g_type_fundamental".}
-proc g_type_create_instance*(theType: GType): PGTypeInstance{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_create_instance".}
-proc g_type_free_instance*(instance: PGTypeInstance){.cdecl, dynlib: gobjectlib,
-    importc: "g_type_free_instance".}
-proc g_type_add_class_cache_func*(cache_data: gpointer,
-                                  cache_func: TGTypeClassCacheFunc){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_add_class_cache_func".}
-proc g_type_remove_class_cache_func*(cache_data: gpointer,
-                                     cache_func: TGTypeClassCacheFunc){.cdecl,
-    dynlib: gobjectlib, importc: "g_type_remove_class_cache_func".}
-proc g_type_class_unref_uncached*(g_class: gpointer){.cdecl, dynlib: gobjectlib,
-    importc: "g_type_class_unref_uncached".}
-proc g_type_value_table_peek*(theType: GType): PGTypeValueTable{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_value_table_peek".}
-proc private_g_type_check_instance*(instance: PGTypeInstance): gboolean{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_check_instance".}
-proc private_g_type_check_instance_cast*(instance: PGTypeInstance,
-    iface_type: GType): PGTypeInstance{.cdecl, dynlib: gobjectlib,
-                                        importc: "g_type_check_instance_cast".}
-proc private_g_type_check_instance_is_a*(instance: PGTypeInstance,
-    iface_type: GType): gboolean{.cdecl, dynlib: gobjectlib,
-                                  importc: "g_type_check_instance_is_a".}
-proc private_g_type_check_class_cast*(g_class: PGTypeClass, is_a_type: GType): PGTypeClass{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_check_class_cast".}
-proc private_g_type_check_class_is_a*(g_class: PGTypeClass, is_a_type: GType): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_check_class_is_a".}
-proc private_g_type_check_is_value_type*(theType: GType): gboolean{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_check_is_value_type".}
-proc private_g_type_check_value*(value: PGValue): gboolean{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_check_value".}
-proc private_g_type_check_value_holds*(value: PGValue, theType: GType): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_type_check_value_holds".}
-proc private_g_type_test_flags*(theType: GType, flags: guint): gboolean{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_test_flags".}
-proc g_type_name_from_instance*(instance: PGTypeInstance): cstring{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_name_from_instance".}
-proc g_type_name_from_class*(g_class: PGTypeClass): cstring{.cdecl,
-    dynlib: gobjectlib, importc: "g_type_name_from_class".}
-const
-  G_TYPE_FLAG_RESERVED_ID_BIT* = GType(1 shl 0)
-
-proc G_TYPE_IS_VALUE*(theType: GType): bool
-proc G_IS_VALUE*(value: pointer): bool
-proc G_VALUE_TYPE*(value: Pointer): GType
-proc G_VALUE_TYPE_NAME*(value: Pointer): cstring
-proc G_VALUE_HOLDS*(value: pointer, g_type: GType): bool
-type
-  TGValueTransform* = proc (src_value: PGValue, dest_value: PGValue){.cdecl.}
-
-proc g_value_init*(value: PGValue, g_type: GType): PGValue{.cdecl,
-    dynlib: gobjectlib, importc: "g_value_init".}
-proc g_value_copy*(src_value: PGValue, dest_value: PGValue){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_copy".}
-proc g_value_reset*(value: PGValue): PGValue{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_reset".}
-proc g_value_unset*(value: PGValue){.cdecl, dynlib: gobjectlib,
-                                     importc: "g_value_unset".}
-proc g_value_set_instance*(value: PGValue, instance: gpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_instance".}
-proc g_value_fits_pointer*(value: PGValue): gboolean{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_fits_pointer".}
-proc g_value_peek_pointer*(value: PGValue): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_peek_pointer".}
-proc g_value_type_compatible*(src_type: GType, dest_type: GType): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_type_compatible".}
-proc g_value_type_transformable*(src_type: GType, dest_type: GType): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_type_transformable".}
-proc g_value_transform*(src_value: PGValue, dest_value: PGValue): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_transform".}
-proc g_value_register_transform_func*(src_type: GType, dest_type: GType,
-                                      transform_func: TGValueTransform){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_register_transform_func".}
-const
-  G_VALUE_NOCOPY_CONTENTS* = 1 shl 27
-
-type
-  PGValueArray* = ptr TGValueArray
-  TGValueArray* {.final.} = object
-    n_values*: guint
-    values*: PGValue
-    n_prealloced*: guint
-
-
-proc g_value_array_get_nth*(value_array: PGValueArray, index: guint): PGValue{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_array_get_nth".}
-proc g_value_array_new*(n_prealloced: guint): PGValueArray{.cdecl,
-    dynlib: gobjectlib, importc: "g_value_array_new".}
-proc g_value_array_free*(value_array: PGValueArray){.cdecl, dynlib: gobjectlib,
-    importc: "g_value_array_free".}
-proc g_value_array_copy*(value_array: PGValueArray): PGValueArray{.cdecl,
-    dynlib: gobjectlib, importc: "g_value_array_copy".}
-proc g_value_array_prepend*(value_array: PGValueArray, value: PGValue): PGValueArray{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_array_prepend".}
-proc g_value_array_append*(value_array: PGValueArray, value: PGValue): PGValueArray{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_array_append".}
-proc g_value_array_insert*(value_array: PGValueArray, index: guint,
-                           value: PGValue): PGValueArray{.cdecl,
-    dynlib: gobjectlib, importc: "g_value_array_insert".}
-proc g_value_array_remove*(value_array: PGValueArray, index: guint): PGValueArray{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_array_remove".}
-proc g_value_array_sort*(value_array: PGValueArray, compare_func: TGCompareFunc): PGValueArray{.
-    cdecl, dynlib: gobjectlib, importc: "g_value_array_sort".}
-proc g_value_array_sort_with_data*(value_array: PGValueArray,
-                                   compare_func: TGCompareDataFunc,
-                                   user_data: gpointer): PGValueArray{.cdecl,
-    dynlib: gobjectlib, importc: "g_value_array_sort_with_data".}
-const
-  G_VALUE_COLLECT_INT* = 'i'
-  G_VALUE_COLLECT_LONG* = 'l'
-  G_VALUE_COLLECT_INT64* = 'q'
-  G_VALUE_COLLECT_DOUBLE* = 'd'
-  G_VALUE_COLLECT_POINTER* = 'p'
-  G_VALUE_COLLECT_FORMAT_MAX_LENGTH* = 8
-
-proc G_VALUE_HOLDS_CHAR*(value: PGValue): bool
-proc G_VALUE_HOLDS_UCHAR*(value: PGValue): bool
-proc G_VALUE_HOLDS_BOOLEAN*(value: PGValue): bool
-proc G_VALUE_HOLDS_INT*(value: PGValue): bool
-proc G_VALUE_HOLDS_UINT*(value: PGValue): bool
-proc G_VALUE_HOLDS_LONG*(value: PGValue): bool
-proc G_VALUE_HOLDS_ULONG*(value: PGValue): bool
-proc G_VALUE_HOLDS_INT64*(value: PGValue): bool
-proc G_VALUE_HOLDS_UINT64*(value: PGValue): bool
-proc G_VALUE_HOLDS_FLOAT*(value: PGValue): bool
-proc G_VALUE_HOLDS_DOUBLE*(value: PGValue): bool
-proc G_VALUE_HOLDS_STRING*(value: PGValue): bool
-proc G_VALUE_HOLDS_POINTER*(value: PGValue): bool
-proc g_value_set_char*(value: PGValue, v_char: gchar){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_char".}
-proc g_value_get_char*(value: PGValue): gchar{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_char".}
-proc g_value_set_uchar*(value: PGValue, v_uchar: guchar){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_uchar".}
-proc g_value_get_uchar*(value: PGValue): guchar{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_uchar".}
-proc g_value_set_boolean*(value: PGValue, v_boolean: gboolean){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_boolean".}
-proc g_value_get_boolean*(value: PGValue): gboolean{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_boolean".}
-proc g_value_set_int*(value: PGValue, v_int: gint){.cdecl, dynlib: gobjectlib,
-    importc: "g_value_set_int".}
-proc g_value_get_int*(value: PGValue): gint{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_int".}
-proc g_value_set_uint*(value: PGValue, v_uint: guint){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_uint".}
-proc g_value_get_uint*(value: PGValue): guint{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_uint".}
-proc g_value_set_long*(value: PGValue, v_long: glong){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_long".}
-proc g_value_get_long*(value: PGValue): glong{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_long".}
-proc g_value_set_ulong*(value: PGValue, v_ulong: gulong){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_ulong".}
-proc g_value_get_ulong*(value: PGValue): gulong{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_ulong".}
-proc g_value_set_int64*(value: PGValue, v_int64: gint64){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_int64".}
-proc g_value_get_int64*(value: PGValue): gint64{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_int64".}
-proc g_value_set_uint64*(value: PGValue, v_uint64: guint64){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_uint64".}
-proc g_value_get_uint64*(value: PGValue): guint64{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_uint64".}
-proc g_value_set_float*(value: PGValue, v_float: gfloat){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_float".}
-proc g_value_get_float*(value: PGValue): gfloat{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_float".}
-proc g_value_set_double*(value: PGValue, v_double: gdouble){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_double".}
-proc g_value_get_double*(value: PGValue): gdouble{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_double".}
-proc g_value_set_string*(value: PGValue, v_string: cstring){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_string".}
-proc g_value_set_static_string*(value: PGValue, v_string: cstring){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_static_string".}
-proc g_value_get_string*(value: PGValue): cstring{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_string".}
-proc g_value_dup_string*(value: PGValue): cstring{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_dup_string".}
-proc g_value_set_pointer*(value: PGValue, v_pointer: gpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_pointer".}
-proc g_value_get_pointer*(value: PGValue): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_pointer".}
-proc g_pointer_type_register_static*(name: cstring): GType{.cdecl,
-    dynlib: gobjectlib, importc: "g_pointer_type_register_static".}
-proc g_strdup_value_contents*(value: PGValue): cstring{.cdecl,
-    dynlib: gobjectlib, importc: "g_strdup_value_contents".}
-proc g_value_set_string_take_ownership*(value: PGValue, v_string: cstring){.
-    cdecl, dynlib: gobjectlib, importc: "g_value_set_string_take_ownership".}
-type
-  Tgchararray* = gchar
-  Pgchararray* = ptr Tgchararray
-
-proc G_TYPE_IS_PARAM*(theType: GType): bool
-proc G_PARAM_SPEC*(pspec: Pointer): PGParamSpec
-proc G_IS_PARAM_SPEC*(pspec: Pointer): bool
-proc G_PARAM_SPEC_CLASS*(pclass: Pointer): PGParamSpecClass
-proc G_IS_PARAM_SPEC_CLASS*(pclass: Pointer): bool
-proc G_PARAM_SPEC_GET_CLASS*(pspec: Pointer): PGParamSpecClass
-proc G_PARAM_SPEC_TYPE*(pspec: Pointer): GType
-proc G_PARAM_SPEC_TYPE_NAME*(pspec: Pointer): cstring
-proc G_PARAM_SPEC_VALUE_TYPE*(pspec: Pointer): GType
-proc G_VALUE_HOLDS_PARAM*(value: Pointer): bool
-const
-  G_PARAM_READABLE* = 1 shl 0
-  G_PARAM_WRITABLE* = 1 shl 1
-  G_PARAM_CONSTRUCT* = 1 shl 2
-  G_PARAM_CONSTRUCT_ONLY* = 1 shl 3
-  G_PARAM_LAX_VALIDATION* = 1 shl 4
-  G_PARAM_PRIVATE* = 1 shl 5
-  G_PARAM_READWRITE* = G_PARAM_READABLE or G_PARAM_WRITABLE
-  G_PARAM_MASK* = 0x000000FF
-  G_PARAM_USER_SHIFT* = 8
-
-proc g_param_spec_ref*(pspec: PGParamSpec): PGParamSpec{.cdecl, dynlib: gliblib,
-    importc: "g_param_spec_ref".}
-proc g_param_spec_unref*(pspec: PGParamSpec){.cdecl, dynlib: gliblib,
-    importc: "g_param_spec_unref".}
-proc g_param_spec_sink*(pspec: PGParamSpec){.cdecl, dynlib: gliblib,
-    importc: "g_param_spec_sink".}
-proc g_param_spec_get_qdata*(pspec: PGParamSpec, quark: TGQuark): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_get_qdata".}
-proc g_param_spec_set_qdata*(pspec: PGParamSpec, quark: TGQuark, data: gpointer){.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_set_qdata".}
-proc g_param_spec_set_qdata_full*(pspec: PGParamSpec, quark: TGQuark,
-                                  data: gpointer, destroy: TGDestroyNotify){.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_set_qdata_full".}
-proc g_param_spec_steal_qdata*(pspec: PGParamSpec, quark: TGQuark): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_steal_qdata".}
-proc g_param_value_set_default*(pspec: PGParamSpec, value: PGValue){.cdecl,
-    dynlib: gliblib, importc: "g_param_value_set_default".}
-proc g_param_value_defaults*(pspec: PGParamSpec, value: PGValue): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_param_value_defaults".}
-proc g_param_value_validate*(pspec: PGParamSpec, value: PGValue): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_param_value_validate".}
-proc g_param_value_convert*(pspec: PGParamSpec, src_value: PGValue,
-                            dest_value: PGValue, strict_validation: gboolean): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_param_value_convert".}
-proc g_param_values_cmp*(pspec: PGParamSpec, value1: PGValue, value2: PGValue): gint{.
-    cdecl, dynlib: gliblib, importc: "g_param_values_cmp".}
-proc g_param_spec_get_name*(pspec: PGParamSpec): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_param_spec_get_name".}
-proc g_param_spec_get_nick*(pspec: PGParamSpec): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_param_spec_get_nick".}
-proc g_param_spec_get_blurb*(pspec: PGParamSpec): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_param_spec_get_blurb".}
-proc g_value_set_param*(value: PGValue, param: PGParamSpec){.cdecl,
-    dynlib: gliblib, importc: "g_value_set_param".}
-proc g_value_get_param*(value: PGValue): PGParamSpec{.cdecl, dynlib: gliblib,
-    importc: "g_value_get_param".}
-proc g_value_dup_param*(value: PGValue): PGParamSpec{.cdecl, dynlib: gliblib,
-    importc: "g_value_dup_param".}
-proc g_value_set_param_take_ownership*(value: PGValue, param: PGParamSpec){.
-    cdecl, dynlib: gliblib, importc: "g_value_set_param_take_ownership".}
-type
-  PGParamSpecTypeInfo* = ptr TGParamSpecTypeInfo
-  TGParamSpecTypeInfo* {.final.} = object
-    instance_size*: guint16
-    n_preallocs*: guint16
-    instance_init*: proc (pspec: PGParamSpec){.cdecl.}
-    value_type*: GType
-    finalize*: proc (pspec: PGParamSpec){.cdecl.}
-    value_set_default*: proc (pspec: PGParamSpec, value: PGValue){.cdecl.}
-    value_validate*: proc (pspec: PGParamSpec, value: PGValue): gboolean{.cdecl.}
-    values_cmp*: proc (pspec: PGParamSpec, value1: PGValue, value2: PGValue): gint{.
-        cdecl.}
-
-
-proc g_param_type_register_static*(name: cstring,
-                                   pspec_info: PGParamSpecTypeInfo): GType{.
-    cdecl, dynlib: gliblib, importc: "g_param_type_register_static".}
-proc g_param_type_register_static_constant*(name: cstring,
-    pspec_info: PGParamSpecTypeInfo, opt_type: GType): GType{.cdecl,
-    dynlib: gliblib, importc: "`g_param_type_register_static_constant`".}
-proc g_param_spec_internal*(param_type: GType, name: cstring, nick: cstring,
-                            blurb: cstring, flags: TGParamFlags): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_internal".}
-proc g_param_spec_pool_new*(type_prefixing: gboolean): PGParamSpecPool{.cdecl,
-    dynlib: gliblib, importc: "g_param_spec_pool_new".}
-proc g_param_spec_pool_insert*(pool: PGParamSpecPool, pspec: PGParamSpec,
-                               owner_type: GType){.cdecl, dynlib: gliblib,
-    importc: "g_param_spec_pool_insert".}
-proc g_param_spec_pool_remove*(pool: PGParamSpecPool, pspec: PGParamSpec){.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_pool_remove".}
-proc g_param_spec_pool_lookup*(pool: PGParamSpecPool, param_name: cstring,
-                               owner_type: GType, walk_ancestors: gboolean): PGParamSpec{.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_pool_lookup".}
-proc g_param_spec_pool_list_owned*(pool: PGParamSpecPool, owner_type: GType): PGList{.
-    cdecl, dynlib: gliblib, importc: "g_param_spec_pool_list_owned".}
-proc g_param_spec_pool_list*(pool: PGParamSpecPool, owner_type: GType,
-                             n_pspecs_p: Pguint): PPGParamSpec{.cdecl,
-    dynlib: gliblib, importc: "g_param_spec_pool_list".}
-type
-  PGClosure* = ptr TGClosure
-  PGClosureNotifyData* = ptr TGClosureNotifyData
-  TGClosureNotify* = proc (data: gpointer, closure: PGClosure){.cdecl.}
-  TGClosure* {.final.} = object
-    flag0*: int32
-    marshal*: proc (closure: PGClosure, return_value: PGValue,
-                    n_param_values: guint, param_values: PGValue,
-                    invocation_hint, marshal_data: gpointer){.cdecl.}
-    data*: gpointer
-    notifiers*: PGClosureNotifyData
-
-  TGCallBackProcedure* = proc () {.cdecl.}
-  TGCallback* = proc () {.cdecl.}
-  TGClosureMarshal* = proc (closure: PGClosure, return_value: PGValue,
-                            n_param_values: guint, param_values: PGValue,
-                            invocation_hint: gpointer, marshal_data: gpointer){.
-      cdecl.}
-  TGClosureNotifyData* {.final.} = object
-    data*: gpointer
-    notify*: TGClosureNotify
-
-
-proc G_CLOSURE_NEEDS_MARSHAL*(closure: Pointer): bool
-proc G_CLOSURE_N_NOTIFIERS*(cl: PGClosure): int32
-proc G_CCLOSURE_SWAP_DATA*(cclosure: PGClosure): int32
-proc G_CALLBACK*(f: pointer): TGCallback
-const
-  bm_TGClosure_ref_count* = 0x00007FFF'i32
-  bp_TGClosure_ref_count* = 0'i32
-  bm_TGClosure_meta_marshal* = 0x00008000'i32
-  bp_TGClosure_meta_marshal* = 15'i32
-  bm_TGClosure_n_guards* = 0x00010000'i32
-  bp_TGClosure_n_guards* = 16'i32
-  bm_TGClosure_n_fnotifiers* = 0x00060000'i32
-  bp_TGClosure_n_fnotifiers* = 17'i32
-  bm_TGClosure_n_inotifiers* = 0x07F80000'i32
-  bp_TGClosure_n_inotifiers* = 19'i32
-  bm_TGClosure_in_inotify* = 0x08000000'i32
-  bp_TGClosure_in_inotify* = 27'i32
-  bm_TGClosure_floating* = 0x10000000'i32
-  bp_TGClosure_floating* = 28'i32
-  bm_TGClosure_derivative_flag* = 0x20000000'i32
-  bp_TGClosure_derivative_flag* = 29'i32
-  bm_TGClosure_in_marshal* = 0x40000000'i32
-  bp_TGClosure_in_marshal* = 30'i32
-  bm_TGClosure_is_invalid* = 0x80000000'i32
-  bp_TGClosure_is_invalid* = 31'i32
-
-proc ref_count*(a: var TGClosure): guint
-proc set_ref_count*(a: var TGClosure, ref_count: guint)
-proc meta_marshal*(a: PGClosure): guint
-proc set_meta_marshal*(a: var TGClosure, meta_marshal: guint)
-proc n_guards*(a: PGClosure): guint
-proc set_n_guards*(a: var TGClosure, n_guards: guint)
-proc n_fnotifiers*(a: PGClosure): guint
-proc set_n_fnotifiers*(a: var TGClosure, n_fnotifiers: guint)
-proc n_inotifiers*(a: PGClosure): guint
-proc in_inotify*(a: var TGClosure): guint
-proc set_in_inotify*(a: var TGClosure, in_inotify: guint)
-proc floating*(a: var TGClosure): guint
-proc set_floating*(a: var TGClosure, floating: guint)
-proc derivative_flag*(a: PGClosure): guint
-proc set_derivative_flag*(a: var TGClosure, derivative_flag: guint)
-proc in_marshal*(a: var TGClosure): guint
-proc set_in_marshal*(a: var TGClosure, in_marshal: guint)
-proc is_invalid*(a: var TGClosure): guint
-proc set_is_invalid*(a: var TGClosure, is_invalid: guint)
-type
-  PGCClosure* = ptr TGCClosure
-  TGCClosure* {.final.} = object
-    closure*: TGClosure
-    callback*: gpointer
-
-
-proc g_cclosure_new*(callback_func: TGCallback, user_data: gpointer,
-                     destroy_data: TGClosureNotify): PGClosure{.cdecl,
-    dynlib: gliblib, importc: "g_cclosure_new".}
-proc g_cclosure_new_swap*(callback_func: TGCallback, user_data: gpointer,
-                          destroy_data: TGClosureNotify): PGClosure{.cdecl,
-    dynlib: gliblib, importc: "g_cclosure_new_swap".}
-proc g_signal_type_cclosure_new*(itype: GType, struct_offset: guint): PGClosure{.
-    cdecl, dynlib: gliblib, importc: "g_signal_type_cclosure_new".}
-proc g_closure_ref*(closure: PGClosure): PGClosure{.cdecl, dynlib: gliblib,
-    importc: "g_closure_ref".}
-proc g_closure_sink*(closure: PGClosure){.cdecl, dynlib: gliblib,
-    importc: "g_closure_sink".}
-proc g_closure_unref*(closure: PGClosure){.cdecl, dynlib: gliblib,
-    importc: "g_closure_unref".}
-proc g_closure_new_simple*(sizeof_closure: guint, data: gpointer): PGClosure{.
-    cdecl, dynlib: gliblib, importc: "g_closure_new_simple".}
-proc g_closure_add_finalize_notifier*(closure: PGClosure, notify_data: gpointer,
-                                      notify_func: TGClosureNotify){.cdecl,
-    dynlib: gliblib, importc: "g_closure_add_finalize_notifier".}
-proc g_closure_remove_finalize_notifier*(closure: PGClosure,
-    notify_data: gpointer, notify_func: TGClosureNotify){.cdecl,
-    dynlib: gliblib, importc: "g_closure_remove_finalize_notifier".}
-proc g_closure_add_invalidate_notifier*(closure: PGClosure,
-                                        notify_data: gpointer,
-                                        notify_func: TGClosureNotify){.cdecl,
-    dynlib: gliblib, importc: "g_closure_add_invalidate_notifier".}
-proc g_closure_remove_invalidate_notifier*(closure: PGClosure,
-    notify_data: gpointer, notify_func: TGClosureNotify){.cdecl,
-    dynlib: gliblib, importc: "g_closure_remove_invalidate_notifier".}
-proc g_closure_add_marshal_guards*(closure: PGClosure,
-                                   pre_marshal_data: gpointer,
-                                   pre_marshal_notify: TGClosureNotify,
-                                   post_marshal_data: gpointer,
-                                   post_marshal_notify: TGClosureNotify){.cdecl,
-    dynlib: gliblib, importc: "g_closure_add_marshal_guards".}
-proc g_closure_set_marshal*(closure: PGClosure, marshal: TGClosureMarshal){.
-    cdecl, dynlib: gliblib, importc: "g_closure_set_marshal".}
-proc g_closure_set_meta_marshal*(closure: PGClosure, marshal_data: gpointer,
-                                 meta_marshal: TGClosureMarshal){.cdecl,
-    dynlib: gliblib, importc: "g_closure_set_meta_marshal".}
-proc g_closure_invalidate*(closure: PGClosure){.cdecl, dynlib: gliblib,
-    importc: "g_closure_invalidate".}
-proc g_closure_invoke*(closure: PGClosure, return_value: PGValue,
-                       n_param_values: guint, param_values: PGValue,
-                       invocation_hint: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_closure_invoke".}
-type
-  PGSignalInvocationHint* = ptr TGSignalInvocationHint
-  PGSignalCMarshaller* = ptr TGSignalCMarshaller
-  TGSignalCMarshaller* = TGClosureMarshal
-  TGSignalEmissionHook* = proc (ihint: PGSignalInvocationHint,
-                                n_param_values: guint, param_values: PGValue,
-                                data: gpointer): gboolean{.cdecl.}
-  TGSignalAccumulator* = proc (ihint: PGSignalInvocationHint,
-                               return_accu: PGValue, handler_return: PGValue,
-                               data: gpointer): gboolean{.cdecl.}
-  PGSignalFlags* = ptr TGSignalFlags
-  TGSignalFlags* = int32
-  TGSignalInvocationHint* {.final.} = object
-    signal_id*: guint
-    detail*: TGQuark
-    run_type*: TGSignalFlags
-
-  PGSignalQuery* = ptr TGSignalQuery
-  TGSignalQuery* {.final.} = object
-    signal_id*: guint
-    signal_name*: cstring
-    itype*: GType
-    signal_flags*: TGSignalFlags
-    return_type*: GType
-    n_params*: guint
-    param_types*: PGType
-
-
-const
-  G_SIGNAL_RUN_FIRST* = 1 shl 0
-  G_SIGNAL_RUN_LAST* = 1 shl 1
-  G_SIGNAL_RUN_CLEANUP* = 1 shl 2
-  G_SIGNAL_NO_RECURSE* = 1 shl 3
-  G_SIGNAL_DETAILED* = 1 shl 4
-  G_SIGNAL_ACTION* = 1 shl 5
-  G_SIGNAL_NO_HOOKS* = 1 shl 6
-  G_SIGNAL_FLAGS_MASK* = 0x0000007F
-
-type
-  PGConnectFlags* = ptr TGConnectFlags
-  TGConnectFlags* = int32
-
-const
-  G_CONNECT_AFTER* = 1 shl 0
-  G_CONNECT_SWAPPED* = 1 shl 1
-
-type
-  PGSignalMatchType* = ptr TGSignalMatchType
-  TGSignalMatchType* = int32
-
-const
-  G_SIGNAL_MATCH_ID* = 1 shl 0
-  G_SIGNAL_MATCH_DETAIL* = 1 shl 1
-  G_SIGNAL_MATCH_CLOSURE* = 1 shl 2
-  G_SIGNAL_MATCH_FUNC* = 1 shl 3
-  G_SIGNAL_MATCH_DATA* = 1 shl 4
-  G_SIGNAL_MATCH_UNBLOCKED* = 1 shl 5
-  G_SIGNAL_MATCH_MASK* = 0x0000003F
-  G_SIGNAL_TYPE_STATIC_SCOPE* = G_TYPE_FLAG_RESERVED_ID_BIT
-
-proc g_signal_newv*(signal_name: cstring, itype: GType,
-                    signal_flags: TGSignalFlags, class_closure: PGClosure,
-                    accumulator: TGSignalAccumulator, accu_data: gpointer,
-                    c_marshaller: TGSignalCMarshaller, return_type: GType,
-                    n_params: guint, param_types: PGType): guint{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_newv".}
-proc g_signal_emitv*(instance_and_params: PGValue, signal_id: guint,
-                     detail: TGQuark, return_value: PGValue){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_emitv".}
-proc g_signal_lookup*(name: cstring, itype: GType): guint{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_lookup".}
-proc g_signal_name*(signal_id: guint): cstring{.cdecl, dynlib: gobjectlib,
-    importc: "g_signal_name".}
-proc g_signal_query*(signal_id: guint, query: PGSignalQuery){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_query".}
-proc g_signal_list_ids*(itype: GType, n_ids: Pguint): Pguint{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_list_ids".}
-proc g_signal_parse_name*(detailed_signal: cstring, itype: GType,
-                          signal_id_p: Pguint, detail_p: PGQuark,
-                          force_detail_quark: gboolean): gboolean{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_parse_name".}
-proc g_signal_get_invocation_hint*(instance: gpointer): PGSignalInvocationHint{.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_get_invocation_hint".}
-proc g_signal_stop_emission*(instance: gpointer, signal_id: guint,
-                             detail: TGQuark){.cdecl, dynlib: gobjectlib,
-    importc: "g_signal_stop_emission".}
-proc g_signal_stop_emission_by_name*(instance: gpointer,
-                                     detailed_signal: cstring){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_stop_emission_by_name".}
-proc g_signal_add_emission_hook*(signal_id: guint, quark: TGQuark,
-                                 hook_func: TGSignalEmissionHook,
-                                 hook_data: gpointer,
-                                 data_destroy: TGDestroyNotify): gulong{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_add_emission_hook".}
-proc g_signal_remove_emission_hook*(signal_id: guint, hook_id: gulong){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_remove_emission_hook".}
-proc g_signal_has_handler_pending*(instance: gpointer, signal_id: guint,
-                                   detail: TGQuark, may_be_blocked: gboolean): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_has_handler_pending".}
-proc g_signal_connect_closure_by_id*(instance: gpointer, signal_id: guint,
-                                     detail: TGQuark, closure: PGClosure,
-                                     after: gboolean): gulong{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_connect_closure_by_id".}
-proc g_signal_connect_closure*(instance: gpointer, detailed_signal: cstring,
-                               closure: PGClosure, after: gboolean): gulong{.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_connect_closure".}
-proc g_signal_connect_data*(instance: gpointer, detailed_signal: cstring,
-                            c_handler: TGCallback, data: gpointer,
-                            destroy_data: TGClosureNotify,
-                            connect_flags: TGConnectFlags): gulong{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_connect_data".}
-proc g_signal_handler_block*(instance: gpointer, handler_id: gulong){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_handler_block".}
-proc g_signal_handler_unblock*(instance: gpointer, handler_id: gulong){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_handler_unblock".}
-proc g_signal_handler_disconnect*(instance: gpointer, handler_id: gulong){.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_handler_disconnect".}
-proc g_signal_handler_is_connected*(instance: gpointer, handler_id: gulong): gboolean{.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_handler_is_connected".}
-proc g_signal_handler_find*(instance: gpointer, mask: TGSignalMatchType,
-                            signal_id: guint, detail: TGQuark,
-                            closure: PGClosure, func: gpointer, data: gpointer): gulong{.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_handler_find".}
-proc g_signal_handlers_block_matched*(instance: gpointer,
-                                      mask: TGSignalMatchType, signal_id: guint,
-                                      detail: TGQuark, closure: PGClosure,
-                                      func: gpointer, data: gpointer): guint{.
-    cdecl, dynlib: gobjectlib, importc: "g_signal_handlers_block_matched".}
-proc g_signal_handlers_unblock_matched*(instance: gpointer,
-                                        mask: TGSignalMatchType,
-                                        signal_id: guint, detail: TGQuark,
-                                        closure: PGClosure, func: gpointer,
-                                        data: gpointer): guint{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_handlers_unblock_matched".}
-proc g_signal_handlers_disconnect_matched*(instance: gpointer,
-    mask: TGSignalMatchType, signal_id: guint, detail: TGQuark,
-    closure: PGClosure, func: gpointer, data: gpointer): guint{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_handlers_disconnect_matched".}
-proc g_signal_override_class_closure*(signal_id: guint, instance_type: GType,
-                                      class_closure: PGClosure){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_override_class_closure".}
-proc g_signal_chain_from_overridden*(instance_and_params: PGValue,
-                                     return_value: PGValue){.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_chain_from_overridden".}
-proc g_signal_connect*(instance: gpointer, detailed_signal: cstring,
-                       c_handler: TGCallback, data: gpointer): gulong
-proc g_signal_connect_after*(instance: gpointer, detailed_signal: cstring,
-                             c_handler: TGCallback, data: gpointer): gulong
-proc g_signal_connect_swapped*(instance: gpointer, detailed_signal: cstring,
-                               c_handler: TGCallback, data: gpointer): gulong
-proc g_signal_handlers_disconnect_by_func*(instance: gpointer,
-    func, data: gpointer): guint
-proc g_signal_handlers_block_by_func*(instance: gpointer, func, data: gpointer)
-proc g_signal_handlers_unblock_by_func*(instance: gpointer, func, data: gpointer)
-proc g_signal_handlers_destroy*(instance: gpointer){.cdecl, dynlib: gobjectlib,
-    importc: "g_signal_handlers_destroy".}
-proc g_signals_destroy*(itype: GType){.cdecl, dynlib: gobjectlib,
-                                       importc: "`g_signals_destroy`".}
-type
-  TGTypePluginUse* = proc (plugin: PGTypePlugin){.cdecl.}
-  TGTypePluginUnuse* = proc (plugin: PGTypePlugin){.cdecl.}
-  TGTypePluginCompleteTypeInfo* = proc (plugin: PGTypePlugin, g_type: GType,
-                                        info: PGTypeInfo,
-                                        value_table: PGTypeValueTable){.cdecl.}
-  TGTypePluginCompleteInterfaceInfo* = proc (plugin: PGTypePlugin,
-      instance_type: GType, interface_type: GType, info: PGInterfaceInfo){.cdecl.}
-  PGTypePluginClass* = ptr TGTypePluginClass
-  TGTypePluginClass* {.final.} = object
-    base_iface*: TGTypeInterface
-    use_plugin*: TGTypePluginUse
-    unuse_plugin*: TGTypePluginUnuse
-    complete_type_info*: TGTypePluginCompleteTypeInfo
-    complete_interface_info*: TGTypePluginCompleteInterfaceInfo
-
-
-proc G_TYPE_TYPE_PLUGIN*(): GType
-proc G_TYPE_PLUGIN*(inst: Pointer): PGTypePlugin
-proc G_TYPE_PLUGIN_CLASS*(vtable: Pointer): PGTypePluginClass
-proc G_IS_TYPE_PLUGIN*(inst: Pointer): bool
-proc G_IS_TYPE_PLUGIN_CLASS*(vtable: Pointer): bool
-proc G_TYPE_PLUGIN_GET_CLASS*(inst: Pointer): PGTypePluginClass
-proc g_type_plugin_get_type*(): GType{.cdecl, dynlib: gliblib,
-                                       importc: "g_type_plugin_get_type".}
-proc g_type_plugin_use*(plugin: PGTypePlugin){.cdecl, dynlib: gliblib,
-    importc: "g_type_plugin_use".}
-proc g_type_plugin_unuse*(plugin: PGTypePlugin){.cdecl, dynlib: gliblib,
-    importc: "g_type_plugin_unuse".}
-proc g_type_plugin_complete_type_info*(plugin: PGTypePlugin, g_type: GType,
-                                       info: PGTypeInfo,
-                                       value_table: PGTypeValueTable){.cdecl,
-    dynlib: gliblib, importc: "g_type_plugin_complete_type_info".}
-proc g_type_plugin_complete_interface_info*(plugin: PGTypePlugin,
-    instance_type: GType, interface_type: GType, info: PGInterfaceInfo){.cdecl,
-    dynlib: gliblib, importc: "g_type_plugin_complete_interface_info".}
-type
-  PGObject* = ptr TGObject
-  TGObject* {.pure.} = object
-    g_type_instance*: TGTypeInstance
-    ref_count*: guint
-    qdata*: PGData
-
-  TGObjectGetPropertyFunc* = proc (anObject: PGObject, property_id: guint,
-                                   value: PGValue, pspec: PGParamSpec){.cdecl.}
-  TGObjectSetPropertyFunc* = proc (anObject: PGObject, property_id: guint,
-                                   value: PGValue, pspec: PGParamSpec){.cdecl.}
-  TGObjectFinalizeFunc* = proc (anObject: PGObject){.cdecl.}
-  TGWeakNotify* = proc (data: gpointer, where_the_object_was: PGObject){.cdecl.}
-  PGObjectConstructParam* = ptr TGObjectConstructParam
-  PGObjectClass* = ptr TGObjectClass
-  TGObjectClass* {.pure.} = object
-    g_type_class*: TGTypeClass
-    construct_properties*: PGSList
-    constructor*: proc (theType: GType, n_construct_properties: guint,
-                        construct_properties: PGObjectConstructParam): PGObject{.
-        cdecl.}
-    set_property*: proc (anObject: PGObject, property_id: guint, value: PGValue,
-                         pspec: PGParamSpec){.cdecl.}
-    get_property*: proc (anObject: PGObject, property_id: guint, value: PGValue,
-                         pspec: PGParamSpec){.cdecl.}
-    dispose*: proc (anObject: PGObject){.cdecl.}
-    finalize*: proc (anObject: PGObject){.cdecl.}
-    dispatch_properties_changed*: proc (anObject: PGObject, n_pspecs: guint,
-                                        pspecs: PPGParamSpec){.cdecl.}
-    notify*: proc (anObject: PGObject, pspec: PGParamSpec){.cdecl.}
-    pdummy*: array[0..7, gpointer]
-
-  TGObjectConstructParam* {.final.} = object
-    pspec*: PGParamSpec
-    value*: PGValue
-
-
-proc G_TYPE_IS_OBJECT*(theType: GType): bool
-proc G_OBJECT*(anObject: pointer): PGObject
-proc G_OBJECT_CLASS*(class: Pointer): PGObjectClass
-proc G_IS_OBJECT*(anObject: pointer): bool
-proc G_IS_OBJECT_CLASS*(class: Pointer): bool
-proc G_OBJECT_GET_CLASS*(anObject: pointer): PGObjectClass
-proc G_OBJECT_TYPE*(anObject: pointer): GType
-proc G_OBJECT_TYPE_NAME*(anObject: pointer): cstring
-proc G_OBJECT_CLASS_TYPE*(class: Pointer): GType
-proc G_OBJECT_CLASS_NAME*(class: Pointer): cstring
-proc G_VALUE_HOLDS_OBJECT*(value: Pointer): bool
-proc g_object_class_install_property*(oclass: PGObjectClass, property_id: guint,
-                                      pspec: PGParamSpec){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_class_install_property".}
-proc g_object_class_find_property*(oclass: PGObjectClass, property_name: cstring): PGParamSpec{.
-    cdecl, dynlib: gobjectlib, importc: "g_object_class_find_property".}
-proc g_object_class_list_properties*(oclass: PGObjectClass, n_properties: Pguint): PPGParamSpec{.
-    cdecl, dynlib: gobjectlib, importc: "g_object_class_list_properties".}
-proc g_object_set_property*(anObject: PGObject, property_name: cstring,
-                            value: PGValue){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_set_property".}
-proc g_object_get_property*(anObject: PGObject, property_name: cstring,
-                            value: PGValue){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_get_property".}
-proc g_object_freeze_notify*(anObject: PGObject){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_freeze_notify".}
-proc g_object_notify*(anObject: PGObject, property_name: cstring){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_notify".}
-proc g_object_thaw_notify*(anObject: PGObject){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_thaw_notify".}
-proc g_object_ref*(anObject: gpointer): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_object_ref".}
-proc g_object_unref*(anObject: gpointer){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_unref".}
-proc g_object_weak_ref*(anObject: PGObject, notify: TGWeakNotify, data: gpointer){.
-    cdecl, dynlib: gobjectlib, importc: "g_object_weak_ref".}
-proc g_object_weak_unref*(anObject: PGObject, notify: TGWeakNotify,
-                          data: gpointer){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_weak_unref".}
-proc g_object_add_weak_pointer*(anObject: PGObject,
-                                weak_pointer_location: Pgpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_add_weak_pointer".}
-proc g_object_remove_weak_pointer*(anObject: PGObject,
-                                   weak_pointer_location: Pgpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_remove_weak_pointer".}
-proc g_object_get_qdata*(anObject: PGObject, quark: TGQuark): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_object_get_qdata".}
-proc g_object_set_qdata*(anObject: PGObject, quark: TGQuark, data: gpointer){.
-    cdecl, dynlib: gobjectlib, importc: "g_object_set_qdata".}
-proc g_object_set_qdata_full*(anObject: PGObject, quark: TGQuark,
-                              data: gpointer, destroy: TGDestroyNotify){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_set_qdata_full".}
-proc g_object_steal_qdata*(anObject: PGObject, quark: TGQuark): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_object_steal_qdata".}
-proc g_object_get_data*(anObject: PGObject, key: cstring): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_object_get_data".}
-proc g_object_set_data*(anObject: PGObject, key: cstring, data: gpointer){.
-    cdecl, dynlib: gobjectlib, importc: "g_object_set_data".}
-proc g_object_set_data_full*(anObject: PGObject, key: cstring, data: gpointer,
-                             destroy: TGDestroyNotify){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_set_data_full".}
-proc g_object_steal_data*(anObject: PGObject, key: cstring): gpointer{.cdecl,
-    dynlib: gobjectlib, importc: "g_object_steal_data".}
-proc g_object_watch_closure*(anObject: PGObject, closure: PGClosure){.cdecl,
-    dynlib: gobjectlib, importc: "g_object_watch_closure".}
-proc g_cclosure_new_object*(callback_func: TGCallback, anObject: PGObject): PGClosure{.
-    cdecl, dynlib: gobjectlib, importc: "g_cclosure_new_object".}
-proc g_cclosure_new_object_swap*(callback_func: TGCallback, anObject: PGObject): PGClosure{.
-    cdecl, dynlib: gobjectlib, importc: "g_cclosure_new_object_swap".}
-proc g_closure_new_object*(sizeof_closure: guint, anObject: PGObject): PGClosure{.
-    cdecl, dynlib: gobjectlib, importc: "g_closure_new_object".}
-proc g_value_set_object*(value: PGValue, v_object: gpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_object".}
-proc g_value_get_object*(value: PGValue): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_object".}
-proc g_value_dup_object*(value: PGValue): PGObject{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_dup_object".}
-proc g_signal_connect_object*(instance: gpointer, detailed_signal: cstring,
-                              c_handler: TGCallback, gobject: gpointer,
-                              connect_flags: TGConnectFlags): gulong{.cdecl,
-    dynlib: gobjectlib, importc: "g_signal_connect_object".}
-proc g_object_run_dispose*(anObject: PGObject){.cdecl, dynlib: gobjectlib,
-    importc: "g_object_run_dispose".}
-proc g_value_set_object_take_ownership*(value: PGValue, v_object: gpointer){.
-    cdecl, dynlib: gobjectlib, importc: "g_value_set_object_take_ownership".}
-proc G_OBJECT_WARN_INVALID_PSPEC*(anObject: gpointer, pname: cstring,
-                                  property_id: gint, pspec: gpointer)
-proc G_OBJECT_WARN_INVALID_PROPERTY_ID*(anObject: gpointer, property_id: gint,
-                                        pspec: gpointer)
-type
-  G_FLAGS_TYPE* = GType
-
-const
-  G_E* = 2.7182818284590451
-  G_LN2* = 0.6931471805599452
-  G_LN10* = 2.3025850929940455
-  G_PI* = 3.1415926535897936
-  G_PI_2* = 1.5707963267948968
-  G_PI_4* = 0.7853981633974483
-  G_SQRT2* = 1.4142135623730951
-  G_LITTLE_ENDIAN* = 1234
-  G_BIG_ENDIAN* = 4321
-  G_PDP_ENDIAN* = 3412
-
-proc GUINT16_SWAP_LE_BE_CONSTANT*(val: guint16): guint16
-proc GUINT32_SWAP_LE_BE_CONSTANT*(val: guint32): guint32
-type
-  PGEnumClass* = ptr TGEnumClass
-  PGEnumValue* = ptr TGEnumValue
-  TGEnumClass* {.final.} = object
-    g_type_class*: TGTypeClass
-    minimum*: gint
-    maximum*: gint
-    n_values*: guint
-    values*: PGEnumValue
-
-  TGEnumValue* {.final.} = object
-    value*: gint
-    value_name*: cstring
-    value_nick*: cstring
-
-  PGFlagsClass* = ptr TGFlagsClass
-  PGFlagsValue* = ptr TGFlagsValue
-  TGFlagsClass* {.final.} = object
-    g_type_class*: TGTypeClass
-    mask*: guint
-    n_values*: guint
-    values*: PGFlagsValue
-
-  TGFlagsValue* {.final.} = object
-    value*: guint
-    value_name*: cstring
-    value_nick*: cstring
-
-
-proc G_TYPE_IS_ENUM*(theType: GType): gboolean
-proc G_ENUM_CLASS*(class: pointer): PGEnumClass
-proc G_IS_ENUM_CLASS*(class: pointer): gboolean
-proc G_ENUM_CLASS_TYPE*(class: pointer): GType
-proc G_ENUM_CLASS_TYPE_NAME*(class: pointer): cstring
-proc G_TYPE_IS_FLAGS*(theType: GType): gboolean
-proc G_FLAGS_CLASS*(class: pointer): PGFlagsClass
-proc G_IS_FLAGS_CLASS*(class: pointer): gboolean
-proc G_FLAGS_CLASS_TYPE*(class: pointer): GType
-proc G_FLAGS_CLASS_TYPE_NAME*(class: pointer): cstring
-proc G_VALUE_HOLDS_ENUM*(value: pointer): gboolean
-proc G_VALUE_HOLDS_FLAGS*(value: pointer): gboolean
-proc g_enum_get_value*(enum_class: PGEnumClass, value: gint): PGEnumValue{.
-    cdecl, dynlib: gliblib, importc: "g_enum_get_value".}
-proc g_enum_get_value_by_name*(enum_class: PGEnumClass, name: cstring): PGEnumValue{.
-    cdecl, dynlib: gliblib, importc: "g_enum_get_value_by_name".}
-proc g_enum_get_value_by_nick*(enum_class: PGEnumClass, nick: cstring): PGEnumValue{.
-    cdecl, dynlib: gliblib, importc: "g_enum_get_value_by_nick".}
-proc g_flags_get_first_value*(flags_class: PGFlagsClass, value: guint): PGFlagsValue{.
-    cdecl, dynlib: gliblib, importc: "g_flags_get_first_value".}
-proc g_flags_get_value_by_name*(flags_class: PGFlagsClass, name: cstring): PGFlagsValue{.
-    cdecl, dynlib: gliblib, importc: "g_flags_get_value_by_name".}
-proc g_flags_get_value_by_nick*(flags_class: PGFlagsClass, nick: cstring): PGFlagsValue{.
-    cdecl, dynlib: gliblib, importc: "g_flags_get_value_by_nick".}
-proc g_value_set_enum*(value: PGValue, v_enum: gint){.cdecl, dynlib: gliblib,
-    importc: "g_value_set_enum".}
-proc g_value_get_enum*(value: PGValue): gint{.cdecl, dynlib: gliblib,
-    importc: "g_value_get_enum".}
-proc g_value_set_flags*(value: PGValue, v_flags: guint){.cdecl, dynlib: gliblib,
-    importc: "g_value_set_flags".}
-proc g_value_get_flags*(value: PGValue): guint{.cdecl, dynlib: gliblib,
-    importc: "g_value_get_flags".}
-proc g_enum_register_static*(name: cstring, const_static_values: PGEnumValue): GType{.
-    cdecl, dynlib: gliblib, importc: "g_enum_register_static".}
-proc g_flags_register_static*(name: cstring, const_static_values: PGFlagsValue): GType{.
-    cdecl, dynlib: gliblib, importc: "g_flags_register_static".}
-proc g_enum_complete_type_info*(g_enum_type: GType, info: PGTypeInfo,
-                                const_values: PGEnumValue){.cdecl,
-    dynlib: gliblib, importc: "g_enum_complete_type_info".}
-proc g_flags_complete_type_info*(g_flags_type: GType, info: PGTypeInfo,
-                                 const_values: PGFlagsValue){.cdecl,
-    dynlib: gliblib, importc: "g_flags_complete_type_info".}
-const
-  G_MINFLOAT* = 0.0
-  G_MAXFLOAT* = 1.6999999999999995E308
-  G_MINDOUBLE* = G_MINFLOAT
-  G_MAXDOUBLE* = G_MAXFLOAT
-  G_MAXSHORT* = 32767
-  G_MINSHORT* = - G_MAXSHORT - 1
-  G_MAXUSHORT* = 2 * G_MAXSHORT + 1
-  G_MAXINT* = 2147483647
-  G_MININT* = - G_MAXINT - 1
-  G_MAXUINT* = -1
-  G_MINLONG* = G_MININT
-  G_MAXLONG* = G_MAXINT
-  G_MAXULONG* = G_MAXUINT
-  G_MAXINT64* = high(int64)
-  G_MININT64* = low(int64)
-
-const
-  G_GINT16_FORMAT* = "hi"
-  G_GUINT16_FORMAT* = "hu"
-  G_GINT32_FORMAT* = 'i'
-  G_GUINT32_FORMAT* = 'u'
-  G_HAVE_GINT64* = 1
-  G_GINT64_FORMAT* = "I64i"
-  G_GUINT64_FORMAT* = "I64u"
-  GLIB_SIZEOF_VOID_P* = SizeOf(Pointer)
-  GLIB_SIZEOF_LONG* = SizeOf(int32)
-  GLIB_SIZEOF_SIZE_T* = SizeOf(int32)
-
-type
-  PGSystemThread* = ptr TGSystemThread
-  TGSystemThread* {.final.} = object
-    data*: array[0..3, char]
-    dummy_double*: float64
-    dummy_pointer*: pointer
-    dummy_long*: int32
-
-
-const
-  GLIB_SYSDEF_POLLIN* = 1
-  GLIB_SYSDEF_POLLOUT* = 4
-  GLIB_SYSDEF_POLLPRI* = 2
-  GLIB_SYSDEF_POLLERR* = 8
-  GLIB_SYSDEF_POLLHUP* = 16
-  GLIB_SYSDEF_POLLNVAL* = 32
-
-proc GUINT_TO_POINTER*(i: guint): pointer
-type
-  PGAsciiType* = ptr TGAsciiType
-  TGAsciiType* = int32
-
-const
-  G_ASCII_ALNUM* = 1 shl 0
-  G_ASCII_ALPHA* = 1 shl 1
-  G_ASCII_CNTRL* = 1 shl 2
-  G_ASCII_DIGIT* = 1 shl 3
-  G_ASCII_GRAPH* = 1 shl 4
-  G_ASCII_LOWER* = 1 shl 5
-  G_ASCII_PRINT* = 1 shl 6
-  G_ASCII_PUNCT* = 1 shl 7
-  G_ASCII_SPACE* = 1 shl 8
-  G_ASCII_UPPER* = 1 shl 9
-  G_ASCII_XDIGIT* = 1 shl 10
-
-proc g_ascii_tolower*(c: gchar): gchar{.cdecl, dynlib: gliblib,
-                                        importc: "g_ascii_tolower".}
-proc g_ascii_toupper*(c: gchar): gchar{.cdecl, dynlib: gliblib,
-                                        importc: "g_ascii_toupper".}
-proc g_ascii_digit_value*(c: gchar): gint{.cdecl, dynlib: gliblib,
-    importc: "g_ascii_digit_value".}
-proc g_ascii_xdigit_value*(c: gchar): gint{.cdecl, dynlib: gliblib,
-    importc: "g_ascii_xdigit_value".}
-const
-  G_STR_DELIMITERS* = "``-|> <."
-
-proc g_strdelimit*(str: cstring, delimiters: cstring, new_delimiter: gchar): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_strdelimit".}
-proc g_strcanon*(str: cstring, valid_chars: cstring, substitutor: gchar): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_strcanon".}
-proc g_strerror*(errnum: gint): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_strerror".}
-proc g_strsignal*(signum: gint): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_strsignal".}
-proc g_strreverse*(str: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_strreverse".}
-proc g_strlcpy*(dest: cstring, src: cstring, dest_size: gsize): gsize{.cdecl,
-    dynlib: gliblib, importc: "g_strlcpy".}
-proc g_strlcat*(dest: cstring, src: cstring, dest_size: gsize): gsize{.cdecl,
-    dynlib: gliblib, importc: "g_strlcat".}
-proc g_strstr_len*(haystack: cstring, haystack_len: gssize, needle: cstring): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_strstr_len".}
-proc g_strrstr*(haystack: cstring, needle: cstring): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_strrstr".}
-proc g_strrstr_len*(haystack: cstring, haystack_len: gssize, needle: cstring): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_strrstr_len".}
-proc g_str_has_suffix*(str: cstring, suffix: cstring): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_str_has_suffix".}
-proc g_str_has_prefix*(str: cstring, prefix: cstring): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_str_has_prefix".}
-proc g_strtod*(nptr: cstring, endptr: PPgchar): gdouble{.cdecl, dynlib: gliblib,
-    importc: "g_strtod".}
-proc g_ascii_strtod*(nptr: cstring, endptr: PPgchar): gdouble{.cdecl,
-    dynlib: gliblib, importc: "g_ascii_strtod".}
-const
-  G_ASCII_DTOSTR_BUF_SIZE* = 29 + 10
-
-proc g_ascii_dtostr*(buffer: cstring, buf_len: gint, d: gdouble): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_ascii_dtostr".}
-proc g_ascii_formatd*(buffer: cstring, buf_len: gint, format: cstring,
-                      d: gdouble): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_ascii_formatd".}
-proc g_strchug*(str: cstring): cstring{.cdecl, dynlib: gliblib,
-                                        importc: "g_strchug".}
-proc g_strchomp*(str: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_strchomp".}
-proc g_ascii_strcasecmp*(s1: cstring, s2: cstring): gint{.cdecl,
-    dynlib: gliblib, importc: "g_ascii_strcasecmp".}
-proc g_ascii_strncasecmp*(s1: cstring, s2: cstring, n: gsize): gint{.cdecl,
-    dynlib: gliblib, importc: "g_ascii_strncasecmp".}
-proc g_ascii_strdown*(str: cstring, len: gssize): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_ascii_strdown".}
-proc g_ascii_strup*(str: cstring, len: gssize): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_ascii_strup".}
-proc g_strdup*(str: cstring): cstring{.cdecl, dynlib: gliblib,
-                                       importc: "g_strdup".}
-proc g_strndup*(str: cstring, n: gsize): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_strndup".}
-proc g_strnfill*(length: gsize, fill_char: gchar): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_strnfill".}
-proc g_strcompress*(source: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_strcompress".}
-proc g_strescape*(source: cstring, exceptions: cstring): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_strescape".}
-proc g_memdup*(mem: gconstpointer, byte_size: guint): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_memdup".}
-proc g_strsplit*(str: cstring, delimiter: cstring, max_tokens: gint): PPgchar{.
-    cdecl, dynlib: gliblib, importc: "g_strsplit".}
-proc g_strjoinv*(separator: cstring, str_array: PPgchar): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_strjoinv".}
-proc g_strfreev*(str_array: PPgchar){.cdecl, dynlib: gliblib,
-                                      importc: "g_strfreev".}
-proc g_strdupv*(str_array: PPgchar): PPgchar{.cdecl, dynlib: gliblib,
-    importc: "g_strdupv".}
-proc g_stpcpy*(dest: cstring, src: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_stpcpy".}
-proc g_get_user_name*(): cstring{.cdecl, dynlib: gliblib,
-                                  importc: "g_get_user_name".}
-proc g_get_real_name*(): cstring{.cdecl, dynlib: gliblib,
-                                  importc: "g_get_real_name".}
-proc g_get_home_dir*(): cstring{.cdecl, dynlib: gliblib,
-                                 importc: "g_get_home_dir".}
-proc g_get_tmp_dir*(): cstring{.cdecl, dynlib: gliblib, importc: "g_get_tmp_dir".}
-proc g_get_prgname*(): cstring{.cdecl, dynlib: gliblib, importc: "g_get_prgname".}
-proc g_set_prgname*(prgname: cstring){.cdecl, dynlib: gliblib,
-                                       importc: "g_set_prgname".}
-type
-  PGDebugKey* = ptr TGDebugKey
-  TGDebugKey* {.final.} = object
-    key*: cstring
-    value*: guint
-
-
-proc g_parse_debug_string*(str: cstring, keys: PGDebugKey, nkeys: guint): guint{.
-    cdecl, dynlib: gliblib, importc: "g_parse_debug_string".}
-proc g_path_is_absolute*(file_name: cstring): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_path_is_absolute".}
-proc g_path_skip_root*(file_name: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_path_skip_root".}
-proc g_basename*(file_name: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_basename".}
-proc g_dirname*(file_name: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_path_get_dirname".}
-proc g_get_current_dir*(): cstring{.cdecl, dynlib: gliblib,
-                                    importc: "g_get_current_dir".}
-proc g_path_get_basename*(file_name: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_path_get_basename".}
-proc g_path_get_dirname*(file_name: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_path_get_dirname".}
-proc g_nullify_pointer*(nullify_location: Pgpointer){.cdecl, dynlib: gliblib,
-    importc: "g_nullify_pointer".}
-proc g_getenv*(variable: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_getenv".}
-type
-  TGVoidFunc* = proc (){.cdecl.}
-
-proc g_atexit*(func: TGVoidFunc){.cdecl, dynlib: gliblib, importc: "g_atexit".}
-proc g_find_program_in_path*(program: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_find_program_in_path".}
-proc g_bit_nth_lsf*(mask: gulong, nth_bit: gint): gint{.cdecl, dynlib: gliblib,
-    importc: "g_bit_nth_lsf".}
-proc g_bit_nth_msf*(mask: gulong, nth_bit: gint): gint{.cdecl, dynlib: gliblib,
-    importc: "g_bit_nth_msf".}
-proc g_bit_storage*(number: gulong): guint{.cdecl, dynlib: gliblib,
-    importc: "g_bit_storage".}
-type
-  PPGTrashStack* = ptr PGTrashStack
-  PGTrashStack* = ptr TGTrashStack
-  TGTrashStack* {.final.} = object
-    next*: PGTrashStack
-
-
-proc g_trash_stack_push*(stack_p: PPGTrashStack, data_p: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_trash_stack_push".}
-proc g_trash_stack_pop*(stack_p: PPGTrashStack): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_trash_stack_pop".}
-proc g_trash_stack_peek*(stack_p: PPGTrashStack): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_trash_stack_peek".}
-proc g_trash_stack_height*(stack_p: PPGTrashStack): guint{.cdecl,
-    dynlib: gliblib, importc: "g_trash_stack_height".}
-type
-  PGHashTable* = pointer
-  TGHRFunc* = proc (key, value, user_data: gpointer): gboolean{.cdecl.}
-
-proc g_hash_table_new*(hash_func: TGHashFunc, key_equal_func: TGEqualFunc): PGHashTable{.
-    cdecl, dynlib: gliblib, importc: "g_hash_table_new".}
-proc g_hash_table_new_full*(hash_func: TGHashFunc, key_equal_func: TGEqualFunc,
-                            key_destroy_func: TGDestroyNotify,
-                            value_destroy_func: TGDestroyNotify): PGHashTable{.
-    cdecl, dynlib: gliblib, importc: "g_hash_table_new_full".}
-proc g_hash_table_destroy*(hash_table: PGHashTable){.cdecl, dynlib: gliblib,
-    importc: "g_hash_table_destroy".}
-proc g_hash_table_insert*(hash_table: PGHashTable, key: gpointer,
-                          value: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_hash_table_insert".}
-proc g_hash_table_replace*(hash_table: PGHashTable, key: gpointer,
-                           value: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_hash_table_replace".}
-proc g_hash_table_remove*(hash_table: PGHashTable, key: gconstpointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_hash_table_remove".}
-proc g_hash_table_steal*(hash_table: PGHashTable, key: gconstpointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_hash_table_steal".}
-proc g_hash_table_lookup*(hash_table: PGHashTable, key: gconstpointer): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_hash_table_lookup".}
-proc g_hash_table_lookup_extended*(hash_table: PGHashTable,
-                                   lookup_key: gconstpointer,
-                                   orig_key: Pgpointer, value: Pgpointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_hash_table_lookup_extended".}
-proc g_hash_table_foreach*(hash_table: PGHashTable, func: TGHFunc,
-                           user_data: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_hash_table_foreach".}
-proc g_hash_table_foreach_remove*(hash_table: PGHashTable, func: TGHRFunc,
-                                  user_data: gpointer): guint{.cdecl,
-    dynlib: gliblib, importc: "g_hash_table_foreach_remove".}
-proc g_hash_table_foreach_steal*(hash_table: PGHashTable, func: TGHRFunc,
-                                 user_data: gpointer): guint{.cdecl,
-    dynlib: gliblib, importc: "g_hash_table_foreach_steal".}
-proc g_hash_table_size*(hash_table: PGHashTable): guint{.cdecl, dynlib: gliblib,
-    importc: "g_hash_table_size".}
-proc g_str_equal*(v: gconstpointer, v2: gconstpointer): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_str_equal".}
-proc g_str_hash*(v: gconstpointer): guint{.cdecl, dynlib: gliblib,
-    importc: "g_str_hash".}
-proc g_int_equal*(v: gconstpointer, v2: gconstpointer): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_int_equal".}
-proc g_int_hash*(v: gconstpointer): guint{.cdecl, dynlib: gliblib,
-    importc: "g_int_hash".}
-proc g_direct_hash*(v: gconstpointer): guint{.cdecl, dynlib: gliblib,
-    importc: "g_direct_hash".}
-proc g_direct_equal*(v: gconstpointer, v2: gconstpointer): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_direct_equal".}
-proc g_quark_try_string*(str: cstring): TGQuark{.cdecl, dynlib: gliblib,
-    importc: "g_quark_try_string".}
-proc g_quark_from_static_string*(str: cstring): TGQuark{.cdecl, dynlib: gliblib,
-    importc: "g_quark_from_static_string".}
-proc g_quark_from_string*(str: cstring): TGQuark{.cdecl, dynlib: gliblib,
-    importc: "g_quark_from_string".}
-proc g_quark_to_string*(quark: TGQuark): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_quark_to_string".}
-const
-  G_MEM_ALIGN* = GLIB_SIZEOF_VOID_P
-
-type
-  PGMemVTable* = ptr TGMemVTable
-  TGMemVTable* {.final.} = object
-    malloc*: proc (n_bytes: gsize): gpointer{.cdecl.}
-    realloc*: proc (mem: gpointer, n_bytes: gsize): gpointer{.cdecl.}
-    free*: proc (mem: gpointer){.cdecl.}
-    calloc*: proc (n_blocks: gsize, n_block_bytes: gsize): gpointer{.cdecl.}
-    try_malloc*: proc (n_bytes: gsize): gpointer{.cdecl.}
-    try_realloc*: proc (mem: gpointer, n_bytes: gsize): gpointer{.cdecl.}
-
-  PGMemChunk* = pointer
-  PGAllocator* = pointer
-
-proc g_malloc*(n_bytes: gulong): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_malloc".}
-proc g_malloc0*(n_bytes: gulong): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_malloc0".}
-proc g_realloc*(mem: gpointer, n_bytes: gulong): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_realloc".}
-proc g_free*(mem: gpointer){.cdecl, dynlib: gliblib, importc: "g_free".}
-proc g_try_malloc*(n_bytes: gulong): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_try_malloc".}
-proc g_try_realloc*(mem: gpointer, n_bytes: gulong): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_try_realloc".}
-#proc g_new*(bytes_per_struct, n_structs: gsize): gpointer
-#proc g_new0*(bytes_per_struct, n_structs: gsize): gpointer
-#proc g_renew*(struct_size: gsize, OldMem: gpointer, n_structs: gsize): gpointer
-proc g_mem_set_vtable*(vtable: PGMemVTable){.cdecl, dynlib: gliblib,
-    importc: "g_mem_set_vtable".}
-proc g_mem_is_system_malloc*(): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_mem_is_system_malloc".}
-proc g_mem_profile*(){.cdecl, dynlib: gliblib, importc: "g_mem_profile".}
-proc g_chunk_new*(chunk: Pointer): Pointer
-proc g_chunk_new0*(chunk: Pointer): Pointer
-proc g_chunk_free*(mem_chunk: PGMemChunk, mem: gpointer)
-const
-  G_ALLOC_ONLY* = 1
-  G_ALLOC_AND_FREE* = 2
-
-proc g_mem_chunk_new*(name: cstring, atom_size: gint, area_size: gulong,
-                      theType: gint): PGMemChunk{.cdecl, dynlib: gliblib,
-    importc: "g_mem_chunk_new".}
-proc g_mem_chunk_destroy*(mem_chunk: PGMemChunk){.cdecl, dynlib: gliblib,
-    importc: "g_mem_chunk_destroy".}
-proc g_mem_chunk_alloc*(mem_chunk: PGMemChunk): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_mem_chunk_alloc".}
-proc g_mem_chunk_alloc0*(mem_chunk: PGMemChunk): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_mem_chunk_alloc0".}
-proc g_mem_chunk_free*(mem_chunk: PGMemChunk, mem: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_mem_chunk_free".}
-proc g_mem_chunk_clean*(mem_chunk: PGMemChunk){.cdecl, dynlib: gliblib,
-    importc: "g_mem_chunk_clean".}
-proc g_mem_chunk_reset*(mem_chunk: PGMemChunk){.cdecl, dynlib: gliblib,
-    importc: "g_mem_chunk_reset".}
-proc g_mem_chunk_print*(mem_chunk: PGMemChunk){.cdecl, dynlib: gliblib,
-    importc: "g_mem_chunk_print".}
-proc g_mem_chunk_info*(){.cdecl, dynlib: gliblib, importc: "g_mem_chunk_info".}
-proc g_blow_chunks*(){.cdecl, dynlib: gliblib, importc: "g_blow_chunks".}
-proc g_allocator_new*(name: cstring, n_preallocs: guint): PGAllocator{.cdecl,
-    dynlib: gliblib, importc: "g_allocator_new".}
-proc g_allocator_free*(allocator: PGAllocator){.cdecl, dynlib: gliblib,
-    importc: "g_allocator_free".}
-const
-  G_ALLOCATOR_LIST* = 1
-  G_ALLOCATOR_SLIST* = 2
-  G_ALLOCATOR_NODE* = 3
-
-proc g_slist_push_allocator*(allocator: PGAllocator){.cdecl, dynlib: gliblib,
-    importc: "g_slist_push_allocator".}
-proc g_slist_pop_allocator*(){.cdecl, dynlib: gliblib,
-                               importc: "g_slist_pop_allocator".}
-proc g_slist_alloc*(): PGSList{.cdecl, dynlib: gliblib, importc: "g_slist_alloc".}
-proc g_slist_free*(list: PGSList){.cdecl, dynlib: gliblib,
-                                   importc: "g_slist_free".}
-proc g_slist_free_1*(list: PGSList){.cdecl, dynlib: gliblib,
-                                     importc: "g_slist_free_1".}
-proc g_slist_append*(list: PGSList, data: gpointer): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_append".}
-proc g_slist_prepend*(list: PGSList, data: gpointer): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_prepend".}
-proc g_slist_insert*(list: PGSList, data: gpointer, position: gint): PGSList{.
-    cdecl, dynlib: gliblib, importc: "g_slist_insert".}
-proc g_slist_insert_sorted*(list: PGSList, data: gpointer, func: TGCompareFunc): PGSList{.
-    cdecl, dynlib: gliblib, importc: "g_slist_insert_sorted".}
-proc g_slist_insert_before*(slist: PGSList, sibling: PGSList, data: gpointer): PGSList{.
-    cdecl, dynlib: gliblib, importc: "g_slist_insert_before".}
-proc g_slist_concat*(list1: PGSList, list2: PGSList): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_concat".}
-proc g_slist_remove*(list: PGSList, data: gconstpointer): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_remove".}
-proc g_slist_remove_all*(list: PGSList, data: gconstpointer): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_remove_all".}
-proc g_slist_remove_link*(list: PGSList, link: PGSList): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_remove_link".}
-proc g_slist_delete_link*(list: PGSList, link: PGSList): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_delete_link".}
-proc g_slist_reverse*(list: PGSList): PGSList{.cdecl, dynlib: gliblib,
-    importc: "g_slist_reverse".}
-proc g_slist_copy*(list: PGSList): PGSList{.cdecl, dynlib: gliblib,
-    importc: "g_slist_copy".}
-proc g_slist_nth*(list: PGSList, n: guint): PGSList{.cdecl, dynlib: gliblib,
-    importc: "g_slist_nth".}
-proc g_slist_find*(list: PGSList, data: gconstpointer): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_find".}
-proc g_slist_find_custom*(list: PGSList, data: gconstpointer,
-                          func: TGCompareFunc): PGSList{.cdecl, dynlib: gliblib,
-    importc: "g_slist_find_custom".}
-proc g_slist_position*(list: PGSList, llink: PGSList): gint{.cdecl,
-    dynlib: gliblib, importc: "g_slist_position".}
-proc g_slist_index*(list: PGSList, data: gconstpointer): gint{.cdecl,
-    dynlib: gliblib, importc: "g_slist_index".}
-proc g_slist_last*(list: PGSList): PGSList{.cdecl, dynlib: gliblib,
-    importc: "g_slist_last".}
-proc g_slist_length*(list: PGSList): guint{.cdecl, dynlib: gliblib,
-    importc: "g_slist_length".}
-proc g_slist_foreach*(list: PGSList, func: TGFunc, user_data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_slist_foreach".}
-proc g_slist_sort*(list: PGSList, compare_func: TGCompareFunc): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_sort".}
-proc g_slist_sort_with_data*(list: PGSList, compare_func: TGCompareDataFunc,
-                             user_data: gpointer): PGSList{.cdecl,
-    dynlib: gliblib, importc: "g_slist_sort_with_data".}
-proc g_slist_nth_data*(list: PGSList, n: guint): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_slist_nth_data".}
-proc g_slist_next*(slist: PGSList): PGSList
-proc g_list_push_allocator*(allocator: PGAllocator){.cdecl, dynlib: gliblib,
-    importc: "g_list_push_allocator".}
-proc g_list_pop_allocator*(){.cdecl, dynlib: gliblib,
-                              importc: "g_list_pop_allocator".}
-proc g_list_alloc*(): PGList{.cdecl, dynlib: gliblib, importc: "g_list_alloc".}
-proc g_list_free*(list: PGList){.cdecl, dynlib: gliblib, importc: "g_list_free".}
-proc g_list_free_1*(list: PGList){.cdecl, dynlib: gliblib,
-                                   importc: "g_list_free_1".}
-proc g_list_append*(list: PGList, data: gpointer): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_append".}
-proc g_list_prepend*(list: PGList, data: gpointer): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_prepend".}
-proc g_list_insert*(list: PGList, data: gpointer, position: gint): PGList{.
-    cdecl, dynlib: gliblib, importc: "g_list_insert".}
-proc g_list_insert_sorted*(list: PGList, data: gpointer, func: TGCompareFunc): PGList{.
-    cdecl, dynlib: gliblib, importc: "g_list_insert_sorted".}
-proc g_list_insert_before*(list: PGList, sibling: PGList, data: gpointer): PGList{.
-    cdecl, dynlib: gliblib, importc: "g_list_insert_before".}
-proc g_list_concat*(list1: PGList, list2: PGList): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_concat".}
-proc g_list_remove*(list: PGList, data: gconstpointer): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_remove".}
-proc g_list_remove_all*(list: PGList, data: gconstpointer): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_remove_all".}
-proc g_list_remove_link*(list: PGList, llink: PGList): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_remove_link".}
-proc g_list_delete_link*(list: PGList, link: PGList): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_delete_link".}
-proc g_list_reverse*(list: PGList): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_list_reverse".}
-proc g_list_copy*(list: PGList): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_list_copy".}
-proc g_list_nth*(list: PGList, n: guint): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_list_nth".}
-proc g_list_nth_prev*(list: PGList, n: guint): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_list_nth_prev".}
-proc g_list_find*(list: PGList, data: gconstpointer): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_find".}
-proc g_list_find_custom*(list: PGList, data: gconstpointer, func: TGCompareFunc): PGList{.
-    cdecl, dynlib: gliblib, importc: "g_list_find_custom".}
-proc g_list_position*(list: PGList, llink: PGList): gint{.cdecl,
-    dynlib: gliblib, importc: "g_list_position".}
-proc g_list_index*(list: PGList, data: gconstpointer): gint{.cdecl,
-    dynlib: gliblib, importc: "g_list_index".}
-proc g_list_last*(list: PGList): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_list_last".}
-proc g_list_first*(list: PGList): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_list_first".}
-proc g_list_length*(list: PGList): guint{.cdecl, dynlib: gliblib,
-    importc: "g_list_length".}
-proc g_list_foreach*(list: PGList, func: TGFunc, user_data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_list_foreach".}
-proc g_list_sort*(list: PGList, compare_func: TGCompareFunc): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_sort".}
-proc g_list_sort_with_data*(list: PGList, compare_func: TGCompareDataFunc,
-                            user_data: gpointer): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_list_sort_with_data".}
-proc g_list_nth_data*(list: PGList, n: guint): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_list_nth_data".}
-proc g_list_previous*(list: PGList): PGList
-proc g_list_next*(list: PGList): PGList
-type
-  PGCache* = pointer
-  TGCacheNewFunc* = proc (key: gpointer): gpointer{.cdecl.}
-  TGCacheDupFunc* = proc (value: gpointer): gpointer{.cdecl.}
-  TGCacheDestroyFunc* = proc (value: gpointer){.cdecl.}
-
-proc g_cache_new*(value_new_func: TGCacheNewFunc,
-                  value_destroy_func: TGCacheDestroyFunc,
-                  key_dup_func: TGCacheDupFunc,
-                  key_destroy_func: TGCacheDestroyFunc,
-                  hash_key_func: TGHashFunc, hash_value_func: TGHashFunc,
-                  key_equal_func: TGEqualFunc): PGCache{.cdecl, dynlib: gliblib,
-    importc: "g_cache_new".}
-proc g_cache_destroy*(cache: PGCache){.cdecl, dynlib: gliblib,
-                                       importc: "g_cache_destroy".}
-proc g_cache_insert*(cache: PGCache, key: gpointer): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_cache_insert".}
-proc g_cache_remove*(cache: PGCache, value: gconstpointer){.cdecl,
-    dynlib: gliblib, importc: "g_cache_remove".}
-proc g_cache_key_foreach*(cache: PGCache, func: TGHFunc, user_data: gpointer){.
-    cdecl, dynlib: gliblib, importc: "g_cache_key_foreach".}
-proc g_cache_value_foreach*(cache: PGCache, func: TGHFunc, user_data: gpointer){.
-    cdecl, dynlib: gliblib, importc: "g_cache_value_foreach".}
-type
-  PGCompletionFunc* = ptr TGCompletionFunc
-  TGCompletionFunc* = gchar
-  TGCompletionStrncmpFunc* = proc (s1: cstring, s2: cstring, n: gsize): gint{.
-      cdecl.}
-  PGCompletion* = ptr TGCompletion
-  TGCompletion* {.final.} = object
-    items*: PGList
-    func*: TGCompletionFunc
-    prefix*: cstring
-    cache*: PGList
-    strncmp_func*: TGCompletionStrncmpFunc
-
-
-proc g_completion_new*(func: TGCompletionFunc): PGCompletion{.cdecl,
-    dynlib: gliblib, importc: "g_completion_new".}
-proc g_completion_add_items*(cmp: PGCompletion, items: PGList){.cdecl,
-    dynlib: gliblib, importc: "g_completion_add_items".}
-proc g_completion_remove_items*(cmp: PGCompletion, items: PGList){.cdecl,
-    dynlib: gliblib, importc: "g_completion_remove_items".}
-proc g_completion_clear_items*(cmp: PGCompletion){.cdecl, dynlib: gliblib,
-    importc: "g_completion_clear_items".}
-proc g_completion_complete*(cmp: PGCompletion, prefix: cstring,
-                            new_prefix: PPgchar): PGList{.cdecl,
-    dynlib: gliblib, importc: "g_completion_complete".}
-proc g_completion_set_compare*(cmp: PGCompletion,
-                               strncmp_func: TGCompletionStrncmpFunc){.cdecl,
-    dynlib: gliblib, importc: "g_completion_set_compare".}
-proc g_completion_free*(cmp: PGCompletion){.cdecl, dynlib: gliblib,
-    importc: "g_completion_free".}
-type
-  PGConvertError* = ptr TGConvertError
-  TGConvertError* = enum
-    G_CONVERT_ERROR_NO_CONVERSION, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
-    G_CONVERT_ERROR_FAILED, G_CONVERT_ERROR_PARTIAL_INPUT,
-    G_CONVERT_ERROR_BAD_URI, G_CONVERT_ERROR_NOT_ABSOLUTE_PATH
-
-proc G_CONVERT_ERROR*(): TGQuark
-proc g_convert_error_quark*(): TGQuark{.cdecl, dynlib: gliblib,
-                                        importc: "g_convert_error_quark".}
-type
-  PGIConv* = ptr TGIConv
-  TGIConv* = pointer
-
-proc g_iconv_open*(to_codeset: cstring, from_codeset: cstring): TGIConv{.cdecl,
-    dynlib: gliblib, importc: "g_iconv_open".}
-proc g_iconv*(`converter`: TGIConv, inbuf: PPgchar, inbytes_left: Pgsize,
-              outbuf: PPgchar, outbytes_left: Pgsize): gsize{.cdecl,
-    dynlib: gliblib, importc: "g_iconv".}
-proc g_iconv_close*(`converter`: TGIConv): gint{.cdecl, dynlib: gliblib,
-    importc: "g_iconv_close".}
-proc g_convert*(str: cstring, len: gssize, to_codeset: cstring,
-                from_codeset: cstring, bytes_read: Pgsize,
-                bytes_written: Pgsize, error: pointer): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_convert".}
-proc g_convert_with_iconv*(str: cstring, len: gssize, `converter`: TGIConv,
-                           bytes_read: Pgsize, bytes_written: Pgsize,
-                           error: pointer): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_convert_with_iconv".}
-proc g_convert_with_fallback*(str: cstring, len: gssize, to_codeset: cstring,
-                              from_codeset: cstring, fallback: cstring,
-                              bytes_read: Pgsize, bytes_written: Pgsize,
-                              error: pointer): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_convert_with_fallback".}
-proc g_locale_to_utf8*(opsysstring: cstring, len: gssize, bytes_read: Pgsize,
-                       bytes_written: Pgsize, error: pointer): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_locale_to_utf8".}
-proc g_locale_from_utf8*(utf8string: cstring, len: gssize, bytes_read: Pgsize,
-                         bytes_written: Pgsize, error: pointer): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_locale_from_utf8".}
-proc g_filename_to_utf8*(opsysstring: cstring, len: gssize, bytes_read: Pgsize,
-                         bytes_written: Pgsize, error: pointer): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_filename_to_utf8".}
-proc g_filename_from_utf8*(utf8string: cstring, len: gssize, bytes_read: Pgsize,
-                           bytes_written: Pgsize, error: pointer): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_filename_from_utf8".}
-proc g_filename_from_uri*(uri: cstring, hostname: PPchar, error: pointer): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_filename_from_uri".}
-proc g_filename_to_uri*(filename: cstring, hostname: cstring, error: pointer): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_filename_to_uri".}
-type
-  TGDataForeachFunc* = proc (key_id: TGQuark, data: gpointer,
-                             user_data: gpointer){.cdecl.}
-
-proc g_datalist_init*(datalist: PPGData){.cdecl, dynlib: gliblib,
-    importc: "g_datalist_init".}
-proc g_datalist_clear*(datalist: PPGData){.cdecl, dynlib: gliblib,
-    importc: "g_datalist_clear".}
-proc g_datalist_id_get_data*(datalist: PPGData, key_id: TGQuark): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_datalist_id_get_data".}
-proc g_datalist_id_set_data_full*(datalist: PPGData, key_id: TGQuark,
-                                  data: gpointer, destroy_func: TGDestroyNotify){.
-    cdecl, dynlib: gliblib, importc: "g_datalist_id_set_data_full".}
-proc g_datalist_id_remove_no_notify*(datalist: PPGData, key_id: TGQuark): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_datalist_id_remove_no_notify".}
-proc g_datalist_foreach*(datalist: PPGData, func: TGDataForeachFunc,
-                         user_data: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_datalist_foreach".}
-proc g_datalist_id_set_data*(datalist: PPGData, key_id: TGQuark, data: gpointer)
-proc g_datalist_id_remove_data*(datalist: PPGData, key_id: TGQuark)
-proc g_datalist_get_data*(datalist: PPGData, key_str: cstring): PPGData
-proc g_datalist_set_data_full*(datalist: PPGData, key_str: cstring,
-                               data: gpointer, destroy_func: TGDestroyNotify)
-proc g_datalist_set_data*(datalist: PPGData, key_str: cstring, data: gpointer)
-proc g_datalist_remove_no_notify*(datalist: PPGData, key_str: cstring)
-proc g_datalist_remove_data*(datalist: PPGData, key_str: cstring)
-proc g_dataset_id_get_data*(dataset_location: gconstpointer, key_id: TGQuark): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_dataset_id_get_data".}
-proc g_dataset_id_set_data_full*(dataset_location: gconstpointer,
-                                 key_id: TGQuark, data: gpointer,
-                                 destroy_func: TGDestroyNotify){.cdecl,
-    dynlib: gliblib, importc: "g_dataset_id_set_data_full".}
-proc g_dataset_id_remove_no_notify*(dataset_location: gconstpointer,
-                                    key_id: TGQuark): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_dataset_id_remove_no_notify".}
-proc g_dataset_foreach*(dataset_location: gconstpointer,
-                        func: TGDataForeachFunc, user_data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_dataset_foreach".}
-proc g_dataset_id_set_data*(location: gconstpointer, key_id: TGQuark,
-                            data: gpointer)
-proc g_dataset_id_remove_data*(location: gconstpointer, key_id: TGQuark)
-proc g_dataset_get_data*(location: gconstpointer, key_str: cstring): gpointer
-proc g_dataset_set_data_full*(location: gconstpointer, key_str: cstring,
-                              data: gpointer, destroy_func: TGDestroyNotify)
-proc g_dataset_remove_no_notify*(location: gconstpointer, key_str: cstring)
-proc g_dataset_set_data*(location: gconstpointer, key_str: cstring,
-                         data: gpointer)
-proc g_dataset_remove_data*(location: gconstpointer, key_str: cstring)
-type
-  PGTime* = ptr TGTime
-  TGTime* = gint32
-  PGDateYear* = ptr TGDateYear
-  TGDateYear* = guint16
-  PGDateDay* = ptr TGDateDay
-  TGDateDay* = guint8
-  Ptm* = ptr Ttm
-  Ttm* {.final.} = object
-    tm_sec*: gint
-    tm_min*: gint
-    tm_hour*: gint
-    tm_mday*: gint
-    tm_mon*: gint
-    tm_year*: gint
-    tm_wday*: gint
-    tm_yday*: gint
-    tm_isdst*: gint
-    tm_gmtoff*: glong
-    tm_zone*: cstring
-
-
-type
-  PGDateDMY* = ptr TGDateDMY
-  TGDateDMY* = int
-
-const
-  G_DATE_DAY* = 0
-  G_DATE_MONTH* = 1
-  G_DATE_YEAR* = 2
-
-type
-  PGDateWeekday* = ptr TGDateWeekday
-  TGDateWeekday* = int
-
-const
-  G_DATE_BAD_WEEKDAY* = 0
-  G_DATE_MONDAY* = 1
-  G_DATE_TUESDAY* = 2
-  G_DATE_WEDNESDAY* = 3
-  G_DATE_THURSDAY* = 4
-  G_DATE_FRIDAY* = 5
-  G_DATE_SATURDAY* = 6
-  G_DATE_SUNDAY* = 7
-
-type
-  PGDateMonth* = ptr TGDateMonth
-  TGDateMonth* = int
-
-const
-  G_DATE_BAD_MONTH* = 0
-  G_DATE_JANUARY* = 1
-  G_DATE_FEBRUARY* = 2
-  G_DATE_MARCH* = 3
-  G_DATE_APRIL* = 4
-  G_DATE_MAY* = 5
-  G_DATE_JUNE* = 6
-  G_DATE_JULY* = 7
-  G_DATE_AUGUST* = 8
-  G_DATE_SEPTEMBER* = 9
-  G_DATE_OCTOBER* = 10
-  G_DATE_NOVEMBER* = 11
-  G_DATE_DECEMBER* = 12
-
-const
-  G_DATE_BAD_JULIAN* = 0
-  G_DATE_BAD_DAY* = 0
-  G_DATE_BAD_YEAR* = 0
-
-type
-  PGDate* = ptr TGDate
-  TGDate* {.final.} = object
-    flag0*: int32
-    flag1*: int32
-
-
-proc g_date_new*(): PGDate{.cdecl, dynlib: gliblib, importc: "g_date_new".}
-proc g_date_new_dmy*(day: TGDateDay, month: TGDateMonth, year: TGDateYear): PGDate{.
-    cdecl, dynlib: gliblib, importc: "g_date_new_dmy".}
-proc g_date_new_julian*(julian_day: guint32): PGDate{.cdecl, dynlib: gliblib,
-    importc: "g_date_new_julian".}
-proc g_date_free*(date: PGDate){.cdecl, dynlib: gliblib, importc: "g_date_free".}
-proc g_date_valid*(date: PGDate): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_date_valid".}
-proc g_date_valid_month*(month: TGDateMonth): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_date_valid_month".}
-proc g_date_valid_year*(year: TGDateYear): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_date_valid_year".}
-proc g_date_valid_weekday*(weekday: TGDateWeekday): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_date_valid_weekday".}
-proc g_date_valid_julian*(julian_date: guint32): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_date_valid_julian".}
-proc g_date_get_weekday*(date: PGDate): TGDateWeekday{.cdecl, dynlib: gliblib,
-    importc: "g_date_get_weekday".}
-proc g_date_get_month*(date: PGDate): TGDateMonth{.cdecl, dynlib: gliblib,
-    importc: "g_date_get_month".}
-proc g_date_get_year*(date: PGDate): TGDateYear{.cdecl, dynlib: gliblib,
-    importc: "g_date_get_year".}
-proc g_date_get_day*(date: PGDate): TGDateDay{.cdecl, dynlib: gliblib,
-    importc: "g_date_get_day".}
-proc g_date_get_julian*(date: PGDate): guint32{.cdecl, dynlib: gliblib,
-    importc: "g_date_get_julian".}
-proc g_date_get_day_of_year*(date: PGDate): guint{.cdecl, dynlib: gliblib,
-    importc: "g_date_get_day_of_year".}
-proc g_date_get_monday_week_of_year*(date: PGDate): guint{.cdecl,
-    dynlib: gliblib, importc: "g_date_get_monday_week_of_year".}
-proc g_date_get_sunday_week_of_year*(date: PGDate): guint{.cdecl,
-    dynlib: gliblib, importc: "g_date_get_sunday_week_of_year".}
-proc g_date_clear*(date: PGDate, n_dates: guint){.cdecl, dynlib: gliblib,
-    importc: "g_date_clear".}
-proc g_date_set_parse*(date: PGDate, str: cstring){.cdecl, dynlib: gliblib,
-    importc: "g_date_set_parse".}
-proc g_date_set_time*(date: PGDate, time: TGTime){.cdecl, dynlib: gliblib,
-    importc: "g_date_set_time".}
-proc g_date_set_month*(date: PGDate, month: TGDateMonth){.cdecl,
-    dynlib: gliblib, importc: "g_date_set_month".}
-proc g_date_set_day*(date: PGDate, day: TGDateDay){.cdecl, dynlib: gliblib,
-    importc: "g_date_set_day".}
-proc g_date_set_year*(date: PGDate, year: TGDateYear){.cdecl, dynlib: gliblib,
-    importc: "g_date_set_year".}
-proc g_date_set_dmy*(date: PGDate, day: TGDateDay, month: TGDateMonth,
-                     y: TGDateYear){.cdecl, dynlib: gliblib,
-                                     importc: "g_date_set_dmy".}
-proc g_date_set_julian*(date: PGDate, julian_date: guint32){.cdecl,
-    dynlib: gliblib, importc: "g_date_set_julian".}
-proc g_date_is_first_of_month*(date: PGDate): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_date_is_first_of_month".}
-proc g_date_is_last_of_month*(date: PGDate): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_date_is_last_of_month".}
-proc g_date_add_days*(date: PGDate, n_days: guint){.cdecl, dynlib: gliblib,
-    importc: "g_date_add_days".}
-proc g_date_subtract_days*(date: PGDate, n_days: guint){.cdecl, dynlib: gliblib,
-    importc: "g_date_subtract_days".}
-proc g_date_add_months*(date: PGDate, n_months: guint){.cdecl, dynlib: gliblib,
-    importc: "g_date_add_months".}
-proc g_date_subtract_months*(date: PGDate, n_months: guint){.cdecl,
-    dynlib: gliblib, importc: "g_date_subtract_months".}
-proc g_date_add_years*(date: PGDate, n_years: guint){.cdecl, dynlib: gliblib,
-    importc: "g_date_add_years".}
-proc g_date_subtract_years*(date: PGDate, n_years: guint){.cdecl,
-    dynlib: gliblib, importc: "g_date_subtract_years".}
-proc g_date_is_leap_year*(year: TGDateYear): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_date_is_leap_year".}
-proc g_date_get_days_in_month*(month: TGDateMonth, year: TGDateYear): guint8{.
-    cdecl, dynlib: gliblib, importc: "g_date_get_days_in_month".}
-proc g_date_get_monday_weeks_in_year*(year: TGDateYear): guint8{.cdecl,
-    dynlib: gliblib, importc: "g_date_get_monday_weeks_in_year".}
-proc g_date_get_sunday_weeks_in_year*(year: TGDateYear): guint8{.cdecl,
-    dynlib: gliblib, importc: "g_date_get_sunday_weeks_in_year".}
-proc g_date_days_between*(date1: PGDate, date2: PGDate): gint{.cdecl,
-    dynlib: gliblib, importc: "g_date_days_between".}
-proc g_date_compare*(lhs: PGDate, rhs: PGDate): gint{.cdecl, dynlib: gliblib,
-    importc: "g_date_compare".}
-proc g_date_to_struct_tm*(date: PGDate, tm: Ptm){.cdecl, dynlib: gliblib,
-    importc: "g_date_to_struct_tm".}
-proc g_date_clamp*(date: PGDate, min_date: PGDate, max_date: PGDate){.cdecl,
-    dynlib: gliblib, importc: "g_date_clamp".}
-proc g_date_order*(date1: PGDate, date2: PGDate){.cdecl, dynlib: gliblib,
-    importc: "g_date_order".}
-proc g_date_strftime*(s: cstring, slen: gsize, format: cstring, date: PGDate): gsize{.
-    cdecl, dynlib: gliblib, importc: "g_date_strftime".}
-type
-  PGDir* = pointer
-
-proc g_dir_open*(path: cstring, flags: guint, error: pointer): PGDir{.cdecl,
-    dynlib: gliblib, importc: "g_dir_open".}
-proc g_dir_read_name*(dir: PGDir): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_dir_read_name".}
-proc g_dir_rewind*(dir: PGDir){.cdecl, dynlib: gliblib, importc: "g_dir_rewind".}
-proc g_dir_close*(dir: PGDir){.cdecl, dynlib: gliblib, importc: "g_dir_close".}
-type
-  PGFileError* = ptr TGFileError
-  TGFileError* = gint
-
-type
-  PGFileTest* = ptr TGFileTest
-  TGFileTest* = int
-
-const
-  G_FILE_TEST_IS_REGULAR* = 1 shl 0
-  G_FILE_TEST_IS_SYMLINK* = 1 shl 1
-  G_FILE_TEST_IS_DIR* = 1 shl 2
-  G_FILE_TEST_IS_EXECUTABLE* = 1 shl 3
-  G_FILE_TEST_EXISTS* = 1 shl 4
-
-const
-  G_FILE_ERROR_EXIST* = 0
-  G_FILE_ERROR_ISDIR* = 1
-  G_FILE_ERROR_ACCES* = 2
-  G_FILE_ERROR_NAMETOOLONG* = 3
-  G_FILE_ERROR_NOENT* = 4
-  G_FILE_ERROR_NOTDIR* = 5
-  G_FILE_ERROR_NXIO* = 6
-  G_FILE_ERROR_NODEV* = 7
-  G_FILE_ERROR_ROFS* = 8
-  G_FILE_ERROR_TXTBSY* = 9
-  G_FILE_ERROR_FAULT* = 10
-  G_FILE_ERROR_LOOP* = 11
-  G_FILE_ERROR_NOSPC* = 12
-  G_FILE_ERROR_NOMEM* = 13
-  G_FILE_ERROR_MFILE* = 14
-  G_FILE_ERROR_NFILE* = 15
-  G_FILE_ERROR_BADF* = 16
-  G_FILE_ERROR_INVAL* = 17
-  G_FILE_ERROR_PIPE* = 18
-  G_FILE_ERROR_AGAIN* = 19
-  G_FILE_ERROR_INTR* = 20
-  G_FILE_ERROR_IO* = 21
-  G_FILE_ERROR_PERM* = 22
-  G_FILE_ERROR_FAILED* = 23
-
-proc G_FILE_ERROR*(): TGQuark
-proc g_file_error_quark*(): TGQuark{.cdecl, dynlib: gliblib,
-                                     importc: "g_file_error_quark".}
-proc g_file_error_from_errno*(err_no: gint): TGFileError{.cdecl,
-    dynlib: gliblib, importc: "g_file_error_from_errno".}
-proc g_file_test*(filename: cstring, test: TGFileTest): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_file_test".}
-proc g_file_get_contents*(filename: cstring, contents: PPgchar, length: Pgsize,
-                          error: pointer): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_file_get_contents".}
-proc g_mkstemp*(tmpl: cstring): int32{.cdecl, dynlib: gliblib,
-                                       importc: "g_mkstemp".}
-proc g_file_open_tmp*(tmpl: cstring, name_used: PPchar, error: pointer): int32{.
-    cdecl, dynlib: gliblib, importc: "g_file_open_tmp".}
-type
-  PGHook* = ptr TGHook
-  TGHook* {.final.} = object
-    data*: gpointer
-    next*: PGHook
-    prev*: PGHook
-    ref_count*: guint
-    hook_id*: gulong
-    flags*: guint
-    func*: gpointer
-    destroy*: TGDestroyNotify
-
-  PGHookList* = ptr TGHookList
-  TGHookCompareFunc* = proc (new_hook: PGHook, sibling: PGHook): gint{.cdecl.}
-  TGHookFindFunc* = proc (hook: PGHook, data: gpointer): gboolean{.cdecl.}
-  TGHookMarshaller* = proc (hook: PGHook, marshal_data: gpointer){.cdecl.}
-  TGHookCheckMarshaller* = proc (hook: PGHook, marshal_data: gpointer): gboolean{.
-      cdecl.}
-  TGHookFunc* = proc (data: gpointer){.cdecl.}
-  TGHookCheckFunc* = proc (data: gpointer): gboolean{.cdecl.}
-  TGHookFinalizeFunc* = proc (hook_list: PGHookList, hook: PGHook){.cdecl.}
-  TGHookList* {.final.} = object
-    seq_id*: gulong
-    flag0*: int32
-    hooks*: PGHook
-    hook_memchunk*: PGMemChunk
-    finalize_hook*: TGHookFinalizeFunc
-    dummy*: array[0..1, gpointer]
-
-
-type
-  PGHookFlagMask* = ptr TGHookFlagMask
-  TGHookFlagMask* = int
-
-const
-  G_HOOK_FLAG_ACTIVE* = 1'i32 shl 0'i32
-  G_HOOK_FLAG_IN_CALL* = 1'i32 shl 1'i32
-  G_HOOK_FLAG_MASK* = 0x0000000F'i32
-
-const
-  G_HOOK_FLAG_USER_SHIFT* = 4'i32
-  bm_TGHookList_hook_size* = 0x0000FFFF'i32
-  bp_TGHookList_hook_size* = 0'i32
-  bm_TGHookList_is_setup* = 0x00010000'i32
-  bp_TGHookList_is_setup* = 16'i32
-
-proc TGHookList_hook_size*(a: var TGHookList): guint
-proc TGHookList_set_hook_size*(a: var TGHookList, `hook_size`: guint)
-proc TGHookList_is_setup*(a: var TGHookList): guint
-proc TGHookList_set_is_setup*(a: var TGHookList, `is_setup`: guint)
-proc G_HOOK*(hook: pointer): PGHook
-proc G_HOOK_FLAGS*(hook: PGHook): guint
-proc G_HOOK_ACTIVE*(hook: PGHook): bool
-proc G_HOOK_IN_CALL*(hook: PGHook): bool
-proc G_HOOK_IS_VALID*(hook: PGHook): bool
-proc G_HOOK_IS_UNLINKED*(hook: PGHook): bool
-proc g_hook_list_init*(hook_list: PGHookList, hook_size: guint){.cdecl,
-    dynlib: gliblib, importc: "g_hook_list_init".}
-proc g_hook_list_clear*(hook_list: PGHookList){.cdecl, dynlib: gliblib,
-    importc: "g_hook_list_clear".}
-proc g_hook_alloc*(hook_list: PGHookList): PGHook{.cdecl, dynlib: gliblib,
-    importc: "g_hook_alloc".}
-proc g_hook_free*(hook_list: PGHookList, hook: PGHook){.cdecl, dynlib: gliblib,
-    importc: "g_hook_free".}
-proc g_hook_ref*(hook_list: PGHookList, hook: PGHook){.cdecl, dynlib: gliblib,
-    importc: "g_hook_ref".}
-proc g_hook_unref*(hook_list: PGHookList, hook: PGHook){.cdecl, dynlib: gliblib,
-    importc: "g_hook_unref".}
-proc g_hook_destroy*(hook_list: PGHookList, hook_id: gulong): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_hook_destroy".}
-proc g_hook_destroy_link*(hook_list: PGHookList, hook: PGHook){.cdecl,
-    dynlib: gliblib, importc: "g_hook_destroy_link".}
-proc g_hook_prepend*(hook_list: PGHookList, hook: PGHook){.cdecl,
-    dynlib: gliblib, importc: "g_hook_prepend".}
-proc g_hook_insert_before*(hook_list: PGHookList, sibling: PGHook, hook: PGHook){.
-    cdecl, dynlib: gliblib, importc: "g_hook_insert_before".}
-proc g_hook_insert_sorted*(hook_list: PGHookList, hook: PGHook,
-                           func: TGHookCompareFunc){.cdecl, dynlib: gliblib,
-    importc: "g_hook_insert_sorted".}
-proc g_hook_get*(hook_list: PGHookList, hook_id: gulong): PGHook{.cdecl,
-    dynlib: gliblib, importc: "g_hook_get".}
-proc g_hook_find*(hook_list: PGHookList, need_valids: gboolean,
-                  func: TGHookFindFunc, data: gpointer): PGHook{.cdecl,
-    dynlib: gliblib, importc: "g_hook_find".}
-proc g_hook_find_data*(hook_list: PGHookList, need_valids: gboolean,
-                       data: gpointer): PGHook{.cdecl, dynlib: gliblib,
-    importc: "g_hook_find_data".}
-proc g_hook_find_func*(hook_list: PGHookList, need_valids: gboolean,
-                       func: gpointer): PGHook{.cdecl, dynlib: gliblib,
-    importc: "g_hook_find_func".}
-proc g_hook_find_func_data*(hook_list: PGHookList, need_valids: gboolean,
-                            func: gpointer, data: gpointer): PGHook{.cdecl,
-    dynlib: gliblib, importc: "g_hook_find_func_data".}
-proc g_hook_first_valid*(hook_list: PGHookList, may_be_in_call: gboolean): PGHook{.
-    cdecl, dynlib: gliblib, importc: "g_hook_first_valid".}
-proc g_hook_next_valid*(hook_list: PGHookList, hook: PGHook,
-                        may_be_in_call: gboolean): PGHook{.cdecl,
-    dynlib: gliblib, importc: "g_hook_next_valid".}
-proc g_hook_compare_ids*(new_hook: PGHook, sibling: PGHook): gint{.cdecl,
-    dynlib: gliblib, importc: "g_hook_compare_ids".}
-proc g_hook_append*(hook_list: PGHookList, hook: PGHook)
-proc g_hook_list_invoke_check*(hook_list: PGHookList, may_recurse: gboolean){.
-    cdecl, dynlib: gliblib, importc: "g_hook_list_invoke_check".}
-proc g_hook_list_marshal*(hook_list: PGHookList, may_recurse: gboolean,
-                          marshaller: TGHookMarshaller, marshal_data: gpointer){.
-    cdecl, dynlib: gliblib, importc: "g_hook_list_marshal".}
-proc g_hook_list_marshal_check*(hook_list: PGHookList, may_recurse: gboolean,
-                                marshaller: TGHookCheckMarshaller,
-                                marshal_data: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_hook_list_marshal_check".}
-type
-  PGThreadPool* = ptr TGThreadPool
-  TGThreadPool* {.final.} = object
-    func*: TGFunc
-    user_data*: gpointer
-    exclusive*: gboolean
-
-
-proc g_thread_pool_new*(func: TGFunc, user_data: gpointer, max_threads: gint,
-                        exclusive: gboolean, error: pointer): PGThreadPool{.
-    cdecl, dynlib: gliblib, importc: "g_thread_pool_new".}
-proc g_thread_pool_push*(pool: PGThreadPool, data: gpointer, error: pointer){.
-    cdecl, dynlib: gliblib, importc: "g_thread_pool_push".}
-proc g_thread_pool_set_max_threads*(pool: PGThreadPool, max_threads: gint,
-                                    error: pointer){.cdecl, dynlib: gliblib,
-    importc: "g_thread_pool_set_max_threads".}
-proc g_thread_pool_get_max_threads*(pool: PGThreadPool): gint{.cdecl,
-    dynlib: gliblib, importc: "g_thread_pool_get_max_threads".}
-proc g_thread_pool_get_num_threads*(pool: PGThreadPool): guint{.cdecl,
-    dynlib: gliblib, importc: "g_thread_pool_get_num_threads".}
-proc g_thread_pool_unprocessed*(pool: PGThreadPool): guint{.cdecl,
-    dynlib: gliblib, importc: "g_thread_pool_unprocessed".}
-proc g_thread_pool_free*(pool: PGThreadPool, immediate: gboolean, wait: gboolean){.
-    cdecl, dynlib: gliblib, importc: "g_thread_pool_free".}
-proc g_thread_pool_set_max_unused_threads*(max_threads: gint){.cdecl,
-    dynlib: gliblib, importc: "g_thread_pool_set_max_unused_threads".}
-proc g_thread_pool_get_max_unused_threads*(): gint{.cdecl, dynlib: gliblib,
-    importc: "g_thread_pool_get_max_unused_threads".}
-proc g_thread_pool_get_num_unused_threads*(): guint{.cdecl, dynlib: gliblib,
-    importc: "g_thread_pool_get_num_unused_threads".}
-proc g_thread_pool_stop_unused_threads*(){.cdecl, dynlib: gliblib,
-    importc: "g_thread_pool_stop_unused_threads".}
-type
-  PGTimer* = pointer
-
-const
-  G_USEC_PER_SEC* = 1000000
-
-proc g_timer_new*(): PGTimer{.cdecl, dynlib: gliblib, importc: "g_timer_new".}
-proc g_timer_destroy*(timer: PGTimer){.cdecl, dynlib: gliblib,
-                                       importc: "g_timer_destroy".}
-proc g_timer_start*(timer: PGTimer){.cdecl, dynlib: gliblib,
-                                     importc: "g_timer_start".}
-proc g_timer_stop*(timer: PGTimer){.cdecl, dynlib: gliblib,
-                                    importc: "g_timer_stop".}
-proc g_timer_reset*(timer: PGTimer){.cdecl, dynlib: gliblib,
-                                     importc: "g_timer_reset".}
-proc g_timer_elapsed*(timer: PGTimer, microseconds: Pgulong): gdouble{.cdecl,
-    dynlib: gliblib, importc: "g_timer_elapsed".}
-proc g_usleep*(microseconds: gulong){.cdecl, dynlib: gliblib,
-                                      importc: "g_usleep".}
-proc g_time_val_add*(time: PGTimeVal, microseconds: glong){.cdecl,
-    dynlib: gliblib, importc: "g_time_val_add".}
-type
-  Pgunichar* = ptr gunichar
-  gunichar* = guint32
-  Pgunichar2* = ptr gunichar2
-  gunichar2* = guint16
-  PGUnicodeType* = ptr TGUnicodeType
-  TGUnicodeType* = enum
-    G_UNICODE_CONTROL, G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED,
-    G_UNICODE_PRIVATE_USE, G_UNICODE_SURROGATE, G_UNICODE_LOWERCASE_LETTER,
-    G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_LETTER,
-    G_UNICODE_TITLECASE_LETTER, G_UNICODE_UPPERCASE_LETTER,
-    G_UNICODE_COMBINING_MARK, G_UNICODE_ENCLOSING_MARK,
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_DECIMAL_NUMBER,
-    G_UNICODE_LETTER_NUMBER, G_UNICODE_OTHER_NUMBER,
-    G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION,
-    G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_FINAL_PUNCTUATION,
-    G_UNICODE_INITIAL_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION,
-    G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CURRENCY_SYMBOL,
-    G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL,
-    G_UNICODE_LINE_SEPARATOR, G_UNICODE_PARAGRAPH_SEPARATOR,
-    G_UNICODE_SPACE_SEPARATOR
-  PGUnicodeBreakType* = ptr TGUnicodeBreakType
-  TGUnicodeBreakType* = enum
-    G_UNICODE_BREAK_MANDATORY, G_UNICODE_BREAK_CARRIAGE_RETURN,
-    G_UNICODE_BREAK_LINE_FEED, G_UNICODE_BREAK_COMBINING_MARK,
-    G_UNICODE_BREAK_SURROGATE, G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
-    G_UNICODE_BREAK_INSEPARABLE, G_UNICODE_BREAK_NON_BREAKING_GLUE,
-    G_UNICODE_BREAK_CONTINGENT, G_UNICODE_BREAK_SPACE, G_UNICODE_BREAK_AFTER,
-    G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_BEFORE_AND_AFTER,
-    G_UNICODE_BREAK_HYPHEN, G_UNICODE_BREAK_NON_STARTER,
-    G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION,
-    G_UNICODE_BREAK_QUOTATION, G_UNICODE_BREAK_EXCLAMATION,
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_NUMERIC,
-    G_UNICODE_BREAK_INFIX_SEPARATOR, G_UNICODE_BREAK_SYMBOL,
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX,
-    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_AMBIGUOUS,
-    G_UNICODE_BREAK_UNKNOWN
-
-proc g_get_charset*(charset: PPchar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_get_charset".}
-proc g_unichar_isalnum*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isalnum".}
-proc g_unichar_isalpha*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isalpha".}
-proc g_unichar_iscntrl*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_iscntrl".}
-proc g_unichar_isdigit*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isdigit".}
-proc g_unichar_isgraph*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isgraph".}
-proc g_unichar_islower*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_islower".}
-proc g_unichar_isprint*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isprint".}
-proc g_unichar_ispunct*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_ispunct".}
-proc g_unichar_isspace*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isspace".}
-proc g_unichar_isupper*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isupper".}
-proc g_unichar_isxdigit*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isxdigit".}
-proc g_unichar_istitle*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_istitle".}
-proc g_unichar_isdefined*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_isdefined".}
-proc g_unichar_iswide*(c: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_iswide".}
-proc g_unichar_toupper*(c: gunichar): gunichar{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_toupper".}
-proc g_unichar_tolower*(c: gunichar): gunichar{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_tolower".}
-proc g_unichar_totitle*(c: gunichar): gunichar{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_totitle".}
-proc g_unichar_digit_value*(c: gunichar): gint{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_digit_value".}
-proc g_unichar_xdigit_value*(c: gunichar): gint{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_xdigit_value".}
-proc g_unichar_type*(c: gunichar): TGUnicodeType{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_type".}
-proc g_unichar_break_type*(c: gunichar): TGUnicodeBreakType{.cdecl,
-    dynlib: gliblib, importc: "g_unichar_break_type".}
-proc g_unicode_canonical_ordering*(str: Pgunichar, len: gsize){.cdecl,
-    dynlib: gliblib, importc: "g_unicode_canonical_ordering".}
-proc g_unicode_canonical_decomposition*(ch: gunichar, result_len: Pgsize): Pgunichar{.
-    cdecl, dynlib: gliblib, importc: "g_unicode_canonical_decomposition".}
-proc g_utf8_next_char*(p: pguchar): pguchar
-proc g_utf8_get_char*(p: cstring): gunichar{.cdecl, dynlib: gliblib,
-    importc: "g_utf8_get_char".}
-proc g_utf8_get_char_validated*(p: cstring, max_len: gssize): gunichar{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_get_char_validated".}
-proc g_utf8_offset_to_pointer*(str: cstring, offset: glong): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_offset_to_pointer".}
-proc g_utf8_pointer_to_offset*(str: cstring, pos: cstring): glong{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_pointer_to_offset".}
-proc g_utf8_prev_char*(p: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_utf8_prev_char".}
-proc g_utf8_find_next_char*(p: cstring, `end`: cstring): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_find_next_char".}
-proc g_utf8_find_prev_char*(str: cstring, p: cstring): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_find_prev_char".}
-proc g_utf8_strlen*(p: cstring, max: gssize): glong{.cdecl, dynlib: gliblib,
-    importc: "g_utf8_strlen".}
-proc g_utf8_strncpy*(dest: cstring, src: cstring, n: gsize): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_strncpy".}
-proc g_utf8_strchr*(p: cstring, len: gssize, c: gunichar): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_strchr".}
-proc g_utf8_strrchr*(p: cstring, len: gssize, c: gunichar): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_strrchr".}
-proc g_utf8_to_utf16*(str: cstring, len: glong, items_read: Pglong,
-                      items_written: Pglong, error: pointer): Pgunichar2{.
-    cdecl, dynlib: gliblib, importc: "g_utf8_to_utf16".}
-proc g_utf8_to_ucs4*(str: cstring, len: glong, items_read: Pglong,
-                     items_written: Pglong, error: pointer): Pgunichar{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_to_ucs4".}
-proc g_utf8_to_ucs4_fast*(str: cstring, len: glong, items_written: Pglong): Pgunichar{.
-    cdecl, dynlib: gliblib, importc: "g_utf8_to_ucs4_fast".}
-proc g_utf16_to_ucs4*(str: Pgunichar2, len: glong, items_read: Pglong,
-                      items_written: Pglong, error: pointer): Pgunichar{.cdecl,
-    dynlib: gliblib, importc: "g_utf16_to_ucs4".}
-proc g_utf16_to_utf8*(str: Pgunichar2, len: glong, items_read: Pglong,
-                      items_written: Pglong, error: pointer): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf16_to_utf8".}
-proc g_ucs4_to_utf16*(str: Pgunichar, len: glong, items_read: Pglong,
-                      items_written: Pglong, error: pointer): Pgunichar2{.
-    cdecl, dynlib: gliblib, importc: "g_ucs4_to_utf16".}
-proc g_ucs4_to_utf8*(str: Pgunichar, len: glong, items_read: Pglong,
-                     items_written: Pglong, error: pointer): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_ucs4_to_utf8".}
-proc g_unichar_to_utf8*(c: gunichar, outbuf: cstring): gint{.cdecl,
-    dynlib: gliblib, importc: "g_unichar_to_utf8".}
-proc g_utf8_validate*(str: cstring, max_len: gssize, `end`: PPgchar): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_utf8_validate".}
-proc g_unichar_validate*(ch: gunichar): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_unichar_validate".}
-proc g_utf8_strup*(str: cstring, len: gssize): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_utf8_strup".}
-proc g_utf8_strdown*(str: cstring, len: gssize): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_strdown".}
-proc g_utf8_casefold*(str: cstring, len: gssize): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_casefold".}
-type
-  PGNormalizeMode* = ptr TGNormalizeMode
-  TGNormalizeMode* = gint
-
-const
-  G_NORMALIZE_DEFAULT* = 0
-  G_NORMALIZE_NFD* = G_NORMALIZE_DEFAULT
-  G_NORMALIZE_DEFAULT_COMPOSE* = 1
-  G_NORMALIZE_NFC* = G_NORMALIZE_DEFAULT_COMPOSE
-  G_NORMALIZE_ALL* = 2
-  G_NORMALIZE_NFKD* = G_NORMALIZE_ALL
-  G_NORMALIZE_ALL_COMPOSE* = 3
-  G_NORMALIZE_NFKC* = G_NORMALIZE_ALL_COMPOSE
-
-proc g_utf8_normalize*(str: cstring, len: gssize, mode: TGNormalizeMode): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_utf8_normalize".}
-proc g_utf8_collate*(str1: cstring, str2: cstring): gint{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_collate".}
-proc g_utf8_collate_key*(str: cstring, len: gssize): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_utf8_collate_key".}
-type
-  PGString* = ptr TGString
-  TGString* {.final.} = object
-    str*: cstring
-    len*: gsize
-    allocated_len*: gsize
-
-  PGStringChunk* = pointer
-
-proc g_string_chunk_new*(size: gsize): PGStringChunk{.cdecl, dynlib: gliblib,
-    importc: "g_string_chunk_new".}
-proc g_string_chunk_free*(chunk: PGStringChunk){.cdecl, dynlib: gliblib,
-    importc: "g_string_chunk_free".}
-proc g_string_chunk_insert*(chunk: PGStringChunk, str: cstring): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_string_chunk_insert".}
-proc g_string_chunk_insert_const*(chunk: PGStringChunk, str: cstring): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_string_chunk_insert_const".}
-proc g_string_new*(init: cstring): PGString{.cdecl, dynlib: gliblib,
-    importc: "g_string_new".}
-proc g_string_new_len*(init: cstring, len: gssize): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_new_len".}
-proc g_string_sized_new*(dfl_size: gsize): PGString{.cdecl, dynlib: gliblib,
-    importc: "g_string_sized_new".}
-proc g_string_free*(str: PGString, free_segment: gboolean): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_string_free".}
-proc g_string_equal*(v: PGString, v2: PGString): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_string_equal".}
-proc g_string_hash*(str: PGString): guint{.cdecl, dynlib: gliblib,
-    importc: "g_string_hash".}
-proc g_string_assign*(str: PGString, rval: cstring): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_assign".}
-proc g_string_truncate*(str: PGString, len: gsize): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_truncate".}
-proc g_string_set_size*(str: PGString, len: gsize): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_set_size".}
-proc g_string_insert_len*(str: PGString, pos: gssize, val: cstring, len: gssize): PGString{.
-    cdecl, dynlib: gliblib, importc: "g_string_insert_len".}
-proc g_string_append*(str: PGString, val: cstring): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_append".}
-proc g_string_append_len*(str: PGString, val: cstring, len: gssize): PGString{.
-    cdecl, dynlib: gliblib, importc: "g_string_append_len".}
-proc g_string_append_c*(str: PGString, c: gchar): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_append_c".}
-proc g_string_append_unichar*(str: PGString, wc: gunichar): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_append_unichar".}
-proc g_string_prepend*(str: PGString, val: cstring): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_prepend".}
-proc g_string_prepend_c*(str: PGString, c: gchar): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_prepend_c".}
-proc g_string_prepend_unichar*(str: PGString, wc: gunichar): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_prepend_unichar".}
-proc g_string_prepend_len*(str: PGString, val: cstring, len: gssize): PGString{.
-    cdecl, dynlib: gliblib, importc: "g_string_prepend_len".}
-proc g_string_insert*(str: PGString, pos: gssize, val: cstring): PGString{.
-    cdecl, dynlib: gliblib, importc: "g_string_insert".}
-proc g_string_insert_c*(str: PGString, pos: gssize, c: gchar): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_insert_c".}
-proc g_string_insert_unichar*(str: PGString, pos: gssize, wc: gunichar): PGString{.
-    cdecl, dynlib: gliblib, importc: "g_string_insert_unichar".}
-proc g_string_erase*(str: PGString, pos: gssize, len: gssize): PGString{.cdecl,
-    dynlib: gliblib, importc: "g_string_erase".}
-proc g_string_ascii_down*(str: PGString): PGString{.cdecl, dynlib: gliblib,
-    importc: "g_string_ascii_down".}
-proc g_string_ascii_up*(str: PGString): PGString{.cdecl, dynlib: gliblib,
-    importc: "g_string_ascii_up".}
-proc g_string_down*(str: PGString): PGString{.cdecl, dynlib: gliblib,
-    importc: "g_string_down".}
-proc g_string_up*(str: PGString): PGString{.cdecl, dynlib: gliblib,
-    importc: "g_string_up".}
-type
-  PGIOError* = ptr TGIOError
-  TGIOError* = enum
-    G_IO_ERROR_NONE, G_IO_ERROR_AGAIN, G_IO_ERROR_INVAL, G_IO_ERROR_UNKNOWN
-
-proc G_IO_CHANNEL_ERROR*(): TGQuark
-type
-  PGIOChannelError* = ptr TGIOChannelError
-  TGIOChannelError* = enum
-    G_IO_CHANNEL_ERROR_FBIG, G_IO_CHANNEL_ERROR_INVAL, G_IO_CHANNEL_ERROR_IO,
-    G_IO_CHANNEL_ERROR_ISDIR, G_IO_CHANNEL_ERROR_NOSPC, G_IO_CHANNEL_ERROR_NXIO,
-    G_IO_CHANNEL_ERROR_OVERFLOW, G_IO_CHANNEL_ERROR_PIPE,
-    G_IO_CHANNEL_ERROR_FAILED
-  PGIOStatus* = ptr TGIOStatus
-  TGIOStatus* = enum
-    G_IO_STATUS_ERROR, G_IO_STATUS_NORMAL, G_IO_STATUS_EOF, G_IO_STATUS_AGAIN
-  PGSeekType* = ptr TGSeekType
-  TGSeekType* = enum
-    G_SEEK_CUR, G_SEEK_SET, G_SEEK_END
-  PGIOCondition* = ptr TGIOCondition
-  TGIOCondition* = gint
-
-const
-  G_IO_IN* = GLIB_SYSDEF_POLLIN
-  G_IO_OUT* = GLIB_SYSDEF_POLLOUT
-  G_IO_PRI* = GLIB_SYSDEF_POLLPRI
-  G_IO_ERR* = GLIB_SYSDEF_POLLERR
-  G_IO_HUP* = GLIB_SYSDEF_POLLHUP
-  G_IO_NVAL* = GLIB_SYSDEF_POLLNVAL
-
-type
-  PGIOFlags* = ptr TGIOFlags
-  TGIOFlags* = gint
-
-const
-  G_IO_FLAG_APPEND* = 1 shl 0
-  G_IO_FLAG_NONBLOCK* = 1 shl 1
-  G_IO_FLAG_IS_READABLE* = 1 shl 2
-  G_IO_FLAG_IS_WRITEABLE* = 1 shl 3
-  G_IO_FLAG_IS_SEEKABLE* = 1 shl 4
-  G_IO_FLAG_MASK* = (1 shl 5) - 1
-  G_IO_FLAG_GET_MASK* = G_IO_FLAG_MASK
-  G_IO_FLAG_SET_MASK* = G_IO_FLAG_APPEND or G_IO_FLAG_NONBLOCK
-
-type
-  PGIOChannel* = ptr TGIOChannel
-  TGIOFunc* = proc (source: PGIOChannel, condition: TGIOCondition,
-                    data: gpointer): gboolean{.cdecl.}
-  PGIOFuncs* = ptr TGIOFuncs
-  TGIOFuncs* {.final.} = object
-    io_read*: proc (channel: PGIOChannel, buf: cstring, count: gsize,
-                    bytes_read: Pgsize, err: pointer): TGIOStatus{.cdecl.}
-    io_write*: proc (channel: PGIOChannel, buf: cstring, count: gsize,
-                     bytes_written: Pgsize, err: pointer): TGIOStatus{.cdecl.}
-    io_seek*: proc (channel: PGIOChannel, offset: gint64, theType: TGSeekType,
-                    err: pointer): TGIOStatus{.cdecl.}
-    io_close*: proc (channel: PGIOChannel, err: pointer): TGIOStatus{.cdecl.}
-    io_create_watch*: proc (channel: PGIOChannel, condition: TGIOCondition): PGSource{.
-        cdecl.}
-    io_free*: proc (channel: PGIOChannel){.cdecl.}
-    io_set_flags*: proc (channel: PGIOChannel, flags: TGIOFlags, err: pointer): TGIOStatus{.
-        cdecl.}
-    io_get_flags*: proc (channel: PGIOChannel): TGIOFlags{.cdecl.}
-
-  TGIOChannel* {.final.} = object
-    ref_count*: guint
-    funcs*: PGIOFuncs
-    encoding*: cstring
-    read_cd*: TGIConv
-    write_cd*: TGIConv
-    line_term*: cstring
-    line_term_len*: guint
-    buf_size*: gsize
-    read_buf*: PGString
-    encoded_read_buf*: PGString
-    write_buf*: PGString
-    partial_write_buf*: array[0..5, gchar]
-    flag0*: guint16
-    reserved1*: gpointer
-    reserved2*: gpointer
-
-
-const
-  bm_TGIOChannel_use_buffer* = 0x00000001'i16
-  bp_TGIOChannel_use_buffer* = 0'i16
-  bm_TGIOChannel_do_encode* = 0x00000002'i16
-  bp_TGIOChannel_do_encode* = 1'i16
-  bm_TGIOChannel_close_on_unref* = 0x00000004'i16
-  bp_TGIOChannel_close_on_unref* = 2'i16
-  bm_TGIOChannel_is_readable* = 0x00000008'i16
-  bp_TGIOChannel_is_readable* = 3'i16
-  bm_TGIOChannel_is_writeable* = 0x00000010'i16
-  bp_TGIOChannel_is_writeable* = 4'i16
-  bm_TGIOChannel_is_seekable* = 0x00000020'i16
-  bp_TGIOChannel_is_seekable* = 5'i16
-
-proc TGIOChannel_use_buffer*(a: var TGIOChannel): guint
-proc TGIOChannel_set_use_buffer*(a: var TGIOChannel, `use_buffer`: guint)
-proc TGIOChannel_do_encode*(a: var TGIOChannel): guint
-proc TGIOChannel_set_do_encode*(a: var TGIOChannel, `do_encode`: guint)
-proc TGIOChannel_close_on_unref*(a: var TGIOChannel): guint
-proc TGIOChannel_set_close_on_unref*(a: var TGIOChannel, `close_on_unref`: guint)
-proc TGIOChannel_is_readable*(a: var TGIOChannel): guint
-proc TGIOChannel_set_is_readable*(a: var TGIOChannel, `is_readable`: guint)
-proc TGIOChannel_is_writeable*(a: var TGIOChannel): guint
-proc TGIOChannel_set_is_writeable*(a: var TGIOChannel, `is_writeable`: guint)
-proc TGIOChannel_is_seekable*(a: var TGIOChannel): guint
-proc TGIOChannel_set_is_seekable*(a: var TGIOChannel, `is_seekable`: guint)
-proc g_io_channel_init*(channel: PGIOChannel){.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_init".}
-proc g_io_channel_ref*(channel: PGIOChannel){.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_ref".}
-proc g_io_channel_unref*(channel: PGIOChannel){.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_unref".}
-proc g_io_channel_read*(channel: PGIOChannel, buf: cstring, count: gsize,
-                        bytes_read: Pgsize): TGIOError{.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_read".}
-proc g_io_channel_write*(channel: PGIOChannel, buf: cstring, count: gsize,
-                         bytes_written: Pgsize): TGIOError{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_write".}
-proc g_io_channel_seek*(channel: PGIOChannel, offset: gint64,
-                        theType: TGSeekType): TGIOError{.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_seek".}
-proc g_io_channel_close*(channel: PGIOChannel){.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_close".}
-proc g_io_channel_shutdown*(channel: PGIOChannel, flush: gboolean, err: pointer): TGIOStatus{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_shutdown".}
-proc g_io_add_watch_full*(channel: PGIOChannel, priority: gint,
-                          condition: TGIOCondition, func: TGIOFunc,
-                          user_data: gpointer, notify: TGDestroyNotify): guint{.
-    cdecl, dynlib: gliblib, importc: "g_io_add_watch_full".}
-proc g_io_create_watch*(channel: PGIOChannel, condition: TGIOCondition): PGSource{.
-    cdecl, dynlib: gliblib, importc: "g_io_create_watch".}
-proc g_io_add_watch*(channel: PGIOChannel, condition: TGIOCondition,
-                     func: TGIOFunc, user_data: gpointer): guint{.cdecl,
-    dynlib: gliblib, importc: "g_io_add_watch".}
-proc g_io_channel_set_buffer_size*(channel: PGIOChannel, size: gsize){.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_set_buffer_size".}
-proc g_io_channel_get_buffer_size*(channel: PGIOChannel): gsize{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_get_buffer_size".}
-proc g_io_channel_get_buffer_condition*(channel: PGIOChannel): TGIOCondition{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_get_buffer_condition".}
-proc g_io_channel_set_flags*(channel: PGIOChannel, flags: TGIOFlags,
-                             error: pointer): TGIOStatus{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_set_flags".}
-proc g_io_channel_get_flags*(channel: PGIOChannel): TGIOFlags{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_get_flags".}
-proc g_io_channel_set_line_term*(channel: PGIOChannel, line_term: cstring,
-                                 length: gint){.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_set_line_term".}
-proc g_io_channel_get_line_term*(channel: PGIOChannel, length: Pgint): cstring{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_get_line_term".}
-proc g_io_channel_set_buffered*(channel: PGIOChannel, buffered: gboolean){.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_set_buffered".}
-proc g_io_channel_get_buffered*(channel: PGIOChannel): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_get_buffered".}
-proc g_io_channel_set_encoding*(channel: PGIOChannel, encoding: cstring,
-                                error: pointer): TGIOStatus{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_set_encoding".}
-proc g_io_channel_get_encoding*(channel: PGIOChannel): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_get_encoding".}
-proc g_io_channel_set_close_on_unref*(channel: PGIOChannel, do_close: gboolean){.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_set_close_on_unref".}
-proc g_io_channel_get_close_on_unref*(channel: PGIOChannel): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_get_close_on_unref".}
-proc g_io_channel_flush*(channel: PGIOChannel, error: pointer): TGIOStatus{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_flush".}
-proc g_io_channel_read_line*(channel: PGIOChannel, str_return: PPgchar,
-                             length: Pgsize, terminator_pos: Pgsize,
-                             error: pointer): TGIOStatus{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_read_line".}
-proc g_io_channel_read_line_string*(channel: PGIOChannel, buffer: PGString,
-                                    terminator_pos: Pgsize, error: pointer): TGIOStatus{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_read_line_string".}
-proc g_io_channel_read_to_end*(channel: PGIOChannel, str_return: PPgchar,
-                               length: Pgsize, error: pointer): TGIOStatus{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_read_to_end".}
-proc g_io_channel_read_chars*(channel: PGIOChannel, buf: cstring, count: gsize,
-                              bytes_read: Pgsize, error: pointer): TGIOStatus{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_read_chars".}
-proc g_io_channel_read_unichar*(channel: PGIOChannel, thechar: Pgunichar,
-                                error: pointer): TGIOStatus{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_read_unichar".}
-proc g_io_channel_write_chars*(channel: PGIOChannel, buf: cstring,
-                               count: gssize, bytes_written: Pgsize,
-                               error: pointer): TGIOStatus{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_write_chars".}
-proc g_io_channel_write_unichar*(channel: PGIOChannel, thechar: gunichar,
-                                 error: pointer): TGIOStatus{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_write_unichar".}
-proc g_io_channel_seek_position*(channel: PGIOChannel, offset: gint64,
-                                 theType: TGSeekType, error: pointer): TGIOStatus{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_seek_position".}
-proc g_io_channel_new_file*(filename: cstring, mode: cstring, error: pointer): PGIOChannel{.
-    cdecl, dynlib: gliblib, importc: "g_io_channel_new_file".}
-proc g_io_channel_error_quark*(): TGQuark{.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_error_quark".}
-proc g_io_channel_error_from_errno*(en: gint): TGIOChannelError{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_error_from_errno".}
-proc g_io_channel_unix_new*(fd: int32): PGIOChannel{.cdecl, dynlib: gliblib,
-    importc: "g_io_channel_unix_new".}
-proc g_io_channel_unix_get_fd*(channel: PGIOChannel): gint{.cdecl,
-    dynlib: gliblib, importc: "g_io_channel_unix_get_fd".}
-const
-  G_LOG_LEVEL_USER_SHIFT* = 8
-
-type
-  PGLogLevelFlags* = ptr TGLogLevelFlags
-  TGLogLevelFlags* = int32
-
-const
-  G_LOG_FLAG_RECURSION* = 1 shl 0
-  G_LOG_FLAG_FATAL* = 1 shl 1
-  G_LOG_LEVEL_ERROR* = 1 shl 2
-  G_LOG_LEVEL_CRITICAL* = 1 shl 3
-  G_LOG_LEVEL_WARNING* = 1 shl 4
-  G_LOG_LEVEL_MESSAGE* = 1 shl 5
-  G_LOG_LEVEL_INFO* = 1 shl 6
-  G_LOG_LEVEL_DEBUG* = 1 shl 7
-  G_LOG_LEVEL_MASK* = not 3
-
-const
-  G_LOG_FATAL_MASK* = 5
-
-type
-  TGLogFunc* = proc (log_domain: cstring, log_level: TGLogLevelFlags,
-                     TheMessage: cstring, user_data: gpointer){.cdecl.}
-
-proc g_log_set_handler*(log_domain: cstring, log_levels: TGLogLevelFlags,
-                        log_func: TGLogFunc, user_data: gpointer): guint{.cdecl,
-    dynlib: gliblib, importc: "g_log_set_handler".}
-proc g_log_remove_handler*(log_domain: cstring, handler_id: guint){.cdecl,
-    dynlib: gliblib, importc: "g_log_remove_handler".}
-proc g_log_default_handler*(log_domain: cstring, log_level: TGLogLevelFlags,
-                            TheMessage: cstring, unused_data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_log_default_handler".}
-proc g_log_set_fatal_mask*(log_domain: cstring, fatal_mask: TGLogLevelFlags): TGLogLevelFlags{.
-    cdecl, dynlib: gliblib, importc: "g_log_set_fatal_mask".}
-proc g_log_set_always_fatal*(fatal_mask: TGLogLevelFlags): TGLogLevelFlags{.
-    cdecl, dynlib: gliblib, importc: "g_log_set_always_fatal".}
-proc `g_log_fallback_handler`*(log_domain: cstring, log_level: TGLogLevelFlags,
-                               message: cstring, unused_data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_log_fallback_handler".}
-const
-  G_LOG_DOMAIN* = nil
-
-when false:
-  proc g_error*(format: cstring){.varargs.}
-  proc g_message*(format: cstring){.varargs.}
-  proc g_critical*(format: cstring){.varargs.}
-  proc g_warning*(format: cstring){.varargs.}
-
-type
-  TGPrintFunc* = proc (str: cstring)
-
-proc g_set_print_handler*(func: TGPrintFunc): TGPrintFunc{.cdecl,
-    dynlib: gliblib, importc: "g_set_print_handler".}
-proc g_set_printerr_handler*(func: TGPrintFunc): TGPrintFunc{.cdecl,
-    dynlib: gliblib, importc: "g_set_printerr_handler".}
-type
-  PGMarkupError* = ptr TGMarkupError
-  TGMarkupError* = enum
-    G_MARKUP_ERROR_BAD_UTF8, G_MARKUP_ERROR_EMPTY, G_MARKUP_ERROR_PARSE,
-    G_MARKUP_ERROR_UNKNOWN_ELEMENT, G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
-    G_MARKUP_ERROR_INVALID_CONTENT
-
-proc G_MARKUP_ERROR*(): TGQuark
-proc g_markup_error_quark*(): TGQuark{.cdecl, dynlib: gliblib,
-                                       importc: "g_markup_error_quark".}
-type
-  PGMarkupParseFlags* = ptr TGMarkupParseFlags
-  TGMarkupParseFlags* = int
-
-const
-  G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG* = 1 shl 0
-
-type
-  PGMarkupParseContext* = ptr TGMarkupParseContext
-  TGMarkupParseContext* = pointer
-  PGMarkupParser* = ptr TGMarkupParser
-  TGMarkupParser* {.final.} = object
-    start_element*: proc (context: PGMarkupParseContext, element_name: cstring,
-                          attribute_names: PPgchar, attribute_values: PPgchar,
-                          user_data: gpointer, error: pointer){.cdecl.}
-    end_element*: proc (context: PGMarkupParseContext, element_name: cstring,
-                        user_data: gpointer, error: pointer){.cdecl.}
-    text*: proc (context: PGMarkupParseContext, text: cstring, text_len: gsize,
-                 user_data: gpointer, error: pointer){.cdecl.}
-    passthrough*: proc (context: PGMarkupParseContext,
-                        passthrough_text: cstring, text_len: gsize,
-                        user_data: gpointer, error: pointer){.cdecl.}
-    error*: proc (context: PGMarkupParseContext, error: pointer,
-                  user_data: gpointer){.cdecl.}
-
-
-proc g_markup_parse_context_new*(parser: PGMarkupParser,
-                                 flags: TGMarkupParseFlags, user_data: gpointer,
-                                 user_data_dnotify: TGDestroyNotify): PGMarkupParseContext{.
-    cdecl, dynlib: gliblib, importc: "g_markup_parse_context_new".}
-proc g_markup_parse_context_free*(context: PGMarkupParseContext){.cdecl,
-    dynlib: gliblib, importc: "g_markup_parse_context_free".}
-proc g_markup_parse_context_parse*(context: PGMarkupParseContext, text: cstring,
-                                   text_len: gssize, error: pointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_markup_parse_context_parse".}
-proc g_markup_parse_context_end_parse*(context: PGMarkupParseContext,
-                                       error: pointer): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_markup_parse_context_end_parse".}
-proc g_markup_parse_context_get_position*(context: PGMarkupParseContext,
-    line_number: Pgint, char_number: Pgint){.cdecl, dynlib: gliblib,
-    importc: "g_markup_parse_context_get_position".}
-proc g_markup_escape_text*(text: cstring, length: gssize): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_markup_escape_text".}
-type
-  PGNode* = ptr TGNode
-  TGNode* {.final.} = object
-    data*: gpointer
-    next*: PGNode
-    prev*: PGNode
-    parent*: PGNode
-    children*: PGNode
-
-  PGTraverseFlags* = ptr TGTraverseFlags
-  TGTraverseFlags* = gint
-
-const
-  G_TRAVERSE_LEAFS* = 1 shl 0
-  G_TRAVERSE_NON_LEAFS* = 1 shl 1
-  G_TRAVERSE_ALL* = G_TRAVERSE_LEAFS or G_TRAVERSE_NON_LEAFS
-  G_TRAVERSE_MASK* = 0x00000003
-
-type
-  PGTraverseType* = ptr TGTraverseType
-  TGTraverseType* = enum
-    G_IN_ORDER, G_PRE_ORDER, G_POST_ORDER, G_LEVEL_ORDER
-  TGNodeTraverseFunc* = proc (node: PGNode, data: gpointer): gboolean{.cdecl.}
-  TGNodeForeachFunc* = proc (node: PGNode, data: gpointer){.cdecl.}
-
-proc G_NODE_IS_ROOT*(node: PGNode): bool
-proc G_NODE_IS_LEAF*(node: PGNode): bool
-proc g_node_push_allocator*(allocator: PGAllocator){.cdecl, dynlib: gliblib,
-    importc: "g_node_push_allocator".}
-proc g_node_pop_allocator*(){.cdecl, dynlib: gliblib,
-                              importc: "g_node_pop_allocator".}
-proc g_node_new*(data: gpointer): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_new".}
-proc g_node_destroy*(root: PGNode){.cdecl, dynlib: gliblib,
-                                    importc: "g_node_destroy".}
-proc g_node_unlink*(node: PGNode){.cdecl, dynlib: gliblib,
-                                   importc: "g_node_unlink".}
-proc g_node_copy*(node: PGNode): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_copy".}
-proc g_node_insert*(parent: PGNode, position: gint, node: PGNode): PGNode{.
-    cdecl, dynlib: gliblib, importc: "g_node_insert".}
-proc g_node_insert_before*(parent: PGNode, sibling: PGNode, node: PGNode): PGNode{.
-    cdecl, dynlib: gliblib, importc: "g_node_insert_before".}
-proc g_node_insert_after*(parent: PGNode, sibling: PGNode, node: PGNode): PGNode{.
-    cdecl, dynlib: gliblib, importc: "g_node_insert_after".}
-proc g_node_prepend*(parent: PGNode, node: PGNode): PGNode{.cdecl,
-    dynlib: gliblib, importc: "g_node_prepend".}
-proc g_node_n_nodes*(root: PGNode, flags: TGTraverseFlags): guint{.cdecl,
-    dynlib: gliblib, importc: "g_node_n_nodes".}
-proc g_node_get_root*(node: PGNode): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_get_root".}
-proc g_node_is_ancestor*(node: PGNode, descendant: PGNode): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_node_is_ancestor".}
-proc g_node_depth*(node: PGNode): guint{.cdecl, dynlib: gliblib,
-    importc: "g_node_depth".}
-proc g_node_find*(root: PGNode, order: TGTraverseType, flags: TGTraverseFlags,
-                  data: gpointer): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_find".}
-proc g_node_append*(parent: PGNode, node: PGNode): PGNode
-proc g_node_insert_data*(parent: PGNode, position: gint, data: gpointer): PGNode
-proc g_node_insert_data_before*(parent: PGNode, sibling: PGNode, data: gpointer): PGNode
-proc g_node_prepend_data*(parent: PGNode, data: gpointer): PGNode
-proc g_node_append_data*(parent: PGNode, data: gpointer): PGNode
-proc g_node_traverse*(root: PGNode, order: TGTraverseType,
-                      flags: TGTraverseFlags, max_depth: gint,
-                      func: TGNodeTraverseFunc, data: gpointer): guint{.cdecl,
-    dynlib: gliblib, importc: "g_node_traverse".}
-proc g_node_max_height*(root: PGNode): guint{.cdecl, dynlib: gliblib,
-    importc: "g_node_max_height".}
-proc g_node_children_foreach*(node: PGNode, flags: TGTraverseFlags,
-                              func: TGNodeForeachFunc, data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_node_children_foreach".}
-proc g_node_reverse_children*(node: PGNode){.cdecl, dynlib: gliblib,
-    importc: "g_node_reverse_children".}
-proc g_node_n_children*(node: PGNode): guint{.cdecl, dynlib: gliblib,
-    importc: "g_node_n_children".}
-proc g_node_nth_child*(node: PGNode, n: guint): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_nth_child".}
-proc g_node_last_child*(node: PGNode): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_last_child".}
-proc g_node_find_child*(node: PGNode, flags: TGTraverseFlags, data: gpointer): PGNode{.
-    cdecl, dynlib: gliblib, importc: "g_node_find_child".}
-proc g_node_child_position*(node: PGNode, child: PGNode): gint{.cdecl,
-    dynlib: gliblib, importc: "g_node_child_position".}
-proc g_node_child_index*(node: PGNode, data: gpointer): gint{.cdecl,
-    dynlib: gliblib, importc: "g_node_child_index".}
-proc g_node_first_sibling*(node: PGNode): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_first_sibling".}
-proc g_node_last_sibling*(node: PGNode): PGNode{.cdecl, dynlib: gliblib,
-    importc: "g_node_last_sibling".}
-proc g_node_prev_sibling*(node: PGNode): PGNode
-proc g_node_next_sibling*(node: PGNode): PGNode
-proc g_node_first_child*(node: PGNode): PGNode
-type
-  PGTree* = pointer
-  TGTraverseFunc* = proc (key: gpointer, value: gpointer, data: gpointer): gboolean{.
-      cdecl.}
-
-proc g_tree_new*(key_compare_func: TGCompareFunc): PGTree{.cdecl,
-    dynlib: gliblib, importc: "g_tree_new".}
-proc g_tree_new_with_data*(key_compare_func: TGCompareDataFunc,
-                           key_compare_data: gpointer): PGTree{.cdecl,
-    dynlib: gliblib, importc: "g_tree_new_with_data".}
-proc g_tree_new_full*(key_compare_func: TGCompareDataFunc,
-                      key_compare_data: gpointer,
-                      key_destroy_func: TGDestroyNotify,
-                      value_destroy_func: TGDestroyNotify): PGTree{.cdecl,
-    dynlib: gliblib, importc: "g_tree_new_full".}
-proc g_tree_destroy*(tree: PGTree){.cdecl, dynlib: gliblib,
-                                    importc: "g_tree_destroy".}
-proc g_tree_insert*(tree: PGTree, key: gpointer, value: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_tree_insert".}
-proc g_tree_replace*(tree: PGTree, key: gpointer, value: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_tree_replace".}
-proc g_tree_remove*(tree: PGTree, key: gconstpointer){.cdecl, dynlib: gliblib,
-    importc: "g_tree_remove".}
-proc g_tree_steal*(tree: PGTree, key: gconstpointer){.cdecl, dynlib: gliblib,
-    importc: "g_tree_steal".}
-proc g_tree_lookup*(tree: PGTree, key: gconstpointer): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_tree_lookup".}
-proc g_tree_lookup_extended*(tree: PGTree, lookup_key: gconstpointer,
-                             orig_key: Pgpointer, value: Pgpointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_tree_lookup_extended".}
-proc g_tree_foreach*(tree: PGTree, func: TGTraverseFunc, user_data: gpointer){.
-    cdecl, dynlib: gliblib, importc: "g_tree_foreach".}
-proc g_tree_search*(tree: PGTree, search_func: TGCompareFunc,
-                    user_data: gconstpointer): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_tree_search".}
-proc g_tree_height*(tree: PGTree): gint{.cdecl, dynlib: gliblib,
-    importc: "g_tree_height".}
-proc g_tree_nnodes*(tree: PGTree): gint{.cdecl, dynlib: gliblib,
-    importc: "g_tree_nnodes".}
-type
-  PGPatternSpec* = pointer
-
-proc g_pattern_spec_new*(pattern: cstring): PGPatternSpec{.cdecl,
-    dynlib: gliblib, importc: "g_pattern_spec_new".}
-proc g_pattern_spec_free*(pspec: PGPatternSpec){.cdecl, dynlib: gliblib,
-    importc: "g_pattern_spec_free".}
-proc g_pattern_spec_equal*(pspec1: PGPatternSpec, pspec2: PGPatternSpec): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_pattern_spec_equal".}
-proc g_pattern_match*(pspec: PGPatternSpec, string_length: guint, str: cstring,
-                      string_reversed: cstring): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_pattern_match".}
-proc g_pattern_match_string*(pspec: PGPatternSpec, str: cstring): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_pattern_match_string".}
-proc g_pattern_match_simple*(pattern: cstring, str: cstring): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_pattern_match_simple".}
-proc g_spaced_primes_closest*(num: guint): guint{.cdecl, dynlib: gliblib,
-    importc: "g_spaced_primes_closest".}
-proc g_qsort_with_data*(pbase: gconstpointer, total_elems: gint, size: gsize,
-                        compare_func: TGCompareDataFunc, user_data: gpointer){.
-    cdecl, dynlib: gliblib, importc: "g_qsort_with_data".}
-type
-  PGQueue* = ptr TGQueue
-  TGQueue* {.final.} = object
-    head*: PGList
-    tail*: PGList
-    length*: guint
-
-
-proc g_queue_new*(): PGQueue{.cdecl, dynlib: gliblib, importc: "g_queue_new".}
-proc g_queue_free*(queue: PGQueue){.cdecl, dynlib: gliblib,
-                                    importc: "g_queue_free".}
-proc g_queue_push_head*(queue: PGQueue, data: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_queue_push_head".}
-proc g_queue_push_tail*(queue: PGQueue, data: gpointer){.cdecl, dynlib: gliblib,
-    importc: "g_queue_push_tail".}
-proc g_queue_pop_head*(queue: PGQueue): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_queue_pop_head".}
-proc g_queue_pop_tail*(queue: PGQueue): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_queue_pop_tail".}
-proc g_queue_is_empty*(queue: PGQueue): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_queue_is_empty".}
-proc g_queue_peek_head*(queue: PGQueue): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_queue_peek_head".}
-proc g_queue_peek_tail*(queue: PGQueue): gpointer{.cdecl, dynlib: gliblib,
-    importc: "g_queue_peek_tail".}
-proc g_queue_push_head_link*(queue: PGQueue, link: PGList){.cdecl,
-    dynlib: gliblib, importc: "g_queue_push_head_link".}
-proc g_queue_push_tail_link*(queue: PGQueue, link: PGList){.cdecl,
-    dynlib: gliblib, importc: "g_queue_push_tail_link".}
-proc g_queue_pop_head_link*(queue: PGQueue): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_queue_pop_head_link".}
-proc g_queue_pop_tail_link*(queue: PGQueue): PGList{.cdecl, dynlib: gliblib,
-    importc: "g_queue_pop_tail_link".}
-type
-  PGRand* = pointer
-
-proc g_rand_new_with_seed*(seed: guint32): PGRand{.cdecl, dynlib: gliblib,
-    importc: "g_rand_new_with_seed".}
-proc g_rand_new*(): PGRand{.cdecl, dynlib: gliblib, importc: "g_rand_new".}
-proc g_rand_free*(rand: PGRand){.cdecl, dynlib: gliblib, importc: "g_rand_free".}
-proc g_rand_set_seed*(rand: PGRand, seed: guint32){.cdecl, dynlib: gliblib,
-    importc: "g_rand_set_seed".}
-proc g_rand_boolean*(rand: PGRand): gboolean
-proc g_rand_int*(rand: PGRand): guint32{.cdecl, dynlib: gliblib,
-    importc: "g_rand_int".}
-proc g_rand_int_range*(rand: PGRand, `begin`: gint32, `end`: gint32): gint32{.
-    cdecl, dynlib: gliblib, importc: "g_rand_int_range".}
-proc g_rand_double*(rand: PGRand): gdouble{.cdecl, dynlib: gliblib,
-    importc: "g_rand_double".}
-proc g_rand_double_range*(rand: PGRand, `begin`: gdouble, `end`: gdouble): gdouble{.
-    cdecl, dynlib: gliblib, importc: "g_rand_double_range".}
-proc g_random_set_seed*(seed: guint32){.cdecl, dynlib: gliblib,
-                                        importc: "g_random_set_seed".}
-proc g_random_boolean*(): gboolean
-proc g_random_int*(): guint32{.cdecl, dynlib: gliblib, importc: "g_random_int".}
-proc g_random_int_range*(`begin`: gint32, `end`: gint32): gint32{.cdecl,
-    dynlib: gliblib, importc: "g_random_int_range".}
-proc g_random_double*(): gdouble{.cdecl, dynlib: gliblib,
-                                  importc: "g_random_double".}
-proc g_random_double_range*(`begin`: gdouble, `end`: gdouble): gdouble{.cdecl,
-    dynlib: gliblib, importc: "g_random_double_range".}
-type
-  PGTuples* = ptr TGTuples
-  TGTuples* {.final.} = object
-    len*: guint
-
-  PGRelation* = pointer
-
-proc g_relation_new*(fields: gint): PGRelation{.cdecl, dynlib: gliblib,
-    importc: "g_relation_new".}
-proc g_relation_destroy*(relation: PGRelation){.cdecl, dynlib: gliblib,
-    importc: "g_relation_destroy".}
-proc g_relation_index*(relation: PGRelation, field: gint, hash_func: TGHashFunc,
-                       key_equal_func: TGEqualFunc){.cdecl, dynlib: gliblib,
-    importc: "g_relation_index".}
-proc g_relation_delete*(relation: PGRelation, key: gconstpointer, field: gint): gint{.
-    cdecl, dynlib: gliblib, importc: "g_relation_delete".}
-proc g_relation_select*(relation: PGRelation, key: gconstpointer, field: gint): PGTuples{.
-    cdecl, dynlib: gliblib, importc: "g_relation_select".}
-proc g_relation_count*(relation: PGRelation, key: gconstpointer, field: gint): gint{.
-    cdecl, dynlib: gliblib, importc: "g_relation_count".}
-proc g_relation_print*(relation: PGRelation){.cdecl, dynlib: gliblib,
-    importc: "g_relation_print".}
-proc g_tuples_destroy*(tuples: PGTuples){.cdecl, dynlib: gliblib,
-    importc: "g_tuples_destroy".}
-proc g_tuples_index*(tuples: PGTuples, index: gint, field: gint): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_tuples_index".}
-type
-  PGTokenType* = ptr TGTokenType
-  TGTokenType* = gint
-
-const
-  G_TOKEN_LEFT_PAREN* = 40
-  G_TOKEN_RIGHT_PAREN* = 41
-  G_TOKEN_LEFT_CURLY* = 123
-  G_TOKEN_RIGHT_CURLY* = 125
-  G_TOKEN_LEFT_BRACE* = 91
-  G_TOKEN_RIGHT_BRACE* = 93
-  G_TOKEN_EQUAL_SIGN* = 61
-  G_TOKEN_COMMA* = 44
-  G_TOKEN_NONE* = 256
-  G_TOKEN_ERROR* = 257
-  G_TOKEN_CHAR* = 258
-  G_TOKEN_OCTAL* = 260
-  G_TOKEN_INT* = 261
-  G_TOKEN_HEX* = 262
-  G_TOKEN_FLOAT* = 263
-  G_TOKEN_STRING* = 264
-  G_TOKEN_SYMBOL* = 265
-  G_TOKEN_IDENTIFIER* = 266
-  G_TOKEN_IDENTIFIER_NULL* = 267
-  G_TOKEN_COMMENT_SINGLE* = 268
-  G_TOKEN_COMMENT_MULTI* = 269
-  G_TOKEN_LAST* = 270
-
-type
-  PGScanner* = ptr TGScanner
-  PGScannerConfig* = ptr TGScannerConfig
-  PGTokenValue* = ptr TGTokenValue
-  TGTokenValue* {.final.} = object
-    v_float*: gdouble
-
-  TGScannerMsgFunc* = proc (scanner: PGScanner, message: cstring,
-                            error: gboolean){.cdecl.}
-  TGScanner* {.final.} = object
-    user_data*: gpointer
-    max_parse_errors*: guint
-    parse_errors*: guint
-    input_name*: cstring
-    qdata*: PGData
-    config*: PGScannerConfig
-    token*: TGTokenType
-    value*: TGTokenValue
-    line*: guint
-    position*: guint
-    next_token*: TGTokenType
-    next_value*: TGTokenValue
-    next_line*: guint
-    next_position*: guint
-    symbol_table*: PGHashTable
-    input_fd*: gint
-    text*: cstring
-    text_end*: cstring
-    buffer*: cstring
-    scope_id*: guint
-    msg_handler*: TGScannerMsgFunc
-
-  TGScannerConfig* {.final.} = object
-    cset_skip_characters*: cstring
-    cset_identifier_first*: cstring
-    cset_identifier_nth*: cstring
-    cpair_comment_single*: cstring
-    flag0*: int32
-    padding_dummy*: guint
-
-
-const
-  G_CSET_A_2_Z_UCASE* = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-  G_CSET_a_2_z_lcase* = "abcdefghijklmnopqrstuvwxyz"
-  G_CSET_DIGITS* = "0123456789"
-
-const
-  bm_TGScannerConfig_case_sensitive* = 0x00000001'i32
-  bp_TGScannerConfig_case_sensitive* = 0'i32
-  bm_TGScannerConfig_skip_comment_multi* = 0x00000002'i32
-  bp_TGScannerConfig_skip_comment_multi* = 1'i32
-  bm_TGScannerConfig_skip_comment_single* = 0x00000004'i32
-  bp_TGScannerConfig_skip_comment_single* = 2'i32
-  bm_TGScannerConfig_scan_comment_multi* = 0x00000008'i32
-  bp_TGScannerConfig_scan_comment_multi* = 3'i32
-  bm_TGScannerConfig_scan_identifier* = 0x00000010'i32
-  bp_TGScannerConfig_scan_identifier* = 4'i32
-  bm_TGScannerConfig_scan_identifier_1char* = 0x00000020'i32
-  bp_TGScannerConfig_scan_identifier_1char* = 5'i32
-  bm_TGScannerConfig_scan_identifier_NULL* = 0x00000040'i32
-  bp_TGScannerConfig_scan_identifier_NULL* = 6'i32
-  bm_TGScannerConfig_scan_symbols* = 0x00000080'i32
-  bp_TGScannerConfig_scan_symbols* = 7'i32
-  bm_TGScannerConfig_scan_binary* = 0x00000100'i32
-  bp_TGScannerConfig_scan_binary* = 8'i32
-  bm_TGScannerConfig_scan_octal* = 0x00000200'i32
-  bp_TGScannerConfig_scan_octal* = 9'i32
-  bm_TGScannerConfig_scan_float* = 0x00000400'i32
-  bp_TGScannerConfig_scan_float* = 10'i32
-  bm_TGScannerConfig_scan_hex* = 0x00000800'i32
-  bp_TGScannerConfig_scan_hex* = 11'i32
-  bm_TGScannerConfig_scan_hex_dollar* = 0x00001000'i32
-  bp_TGScannerConfig_scan_hex_dollar* = 12'i32
-  bm_TGScannerConfig_scan_string_sq* = 0x00002000'i32
-  bp_TGScannerConfig_scan_string_sq* = 13'i32
-  bm_TGScannerConfig_scan_string_dq* = 0x00004000'i32
-  bp_TGScannerConfig_scan_string_dq* = 14'i32
-  bm_TGScannerConfig_numbers_2_int* = 0x00008000'i32
-  bp_TGScannerConfig_numbers_2_int* = 15'i32
-  bm_TGScannerConfig_int_2_float* = 0x00010000'i32
-  bp_TGScannerConfig_int_2_float* = 16'i32
-  bm_TGScannerConfig_identifier_2_string* = 0x00020000'i32
-  bp_TGScannerConfig_identifier_2_string* = 17'i32
-  bm_TGScannerConfig_char_2_token* = 0x00040000'i32
-  bp_TGScannerConfig_char_2_token* = 18'i32
-  bm_TGScannerConfig_symbol_2_token* = 0x00080000'i32
-  bp_TGScannerConfig_symbol_2_token* = 19'i32
-  bm_TGScannerConfig_scope_0_fallback* = 0x00100000'i32
-  bp_TGScannerConfig_scope_0_fallback* = 20'i32
-
-proc TGScannerConfig_case_sensitive*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_case_sensitive*(a: var TGScannerConfig,
-    `case_sensitive`: guint)
-proc TGScannerConfig_skip_comment_multi*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_skip_comment_multi*(a: var TGScannerConfig,
-    `skip_comment_multi`: guint)
-proc TGScannerConfig_skip_comment_single*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_skip_comment_single*(a: var TGScannerConfig,
-    `skip_comment_single`: guint)
-proc TGScannerConfig_scan_comment_multi*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_comment_multi*(a: var TGScannerConfig,
-    `scan_comment_multi`: guint)
-proc TGScannerConfig_scan_identifier*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_identifier*(a: var TGScannerConfig,
-    `scan_identifier`: guint)
-proc TGScannerConfig_scan_identifier_1char*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_identifier_1char*(a: var TGScannerConfig,
-    `scan_identifier_1char`: guint)
-proc TGScannerConfig_scan_identifier_NULL*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_identifier_NULL*(a: var TGScannerConfig,
-    `scan_identifier_NULL`: guint)
-proc TGScannerConfig_scan_symbols*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_symbols*(a: var TGScannerConfig,
-                                       `scan_symbols`: guint)
-proc TGScannerConfig_scan_binary*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_binary*(a: var TGScannerConfig,
-                                      `scan_binary`: guint)
-proc TGScannerConfig_scan_octal*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_octal*(a: var TGScannerConfig, `scan_octal`: guint)
-proc TGScannerConfig_scan_float*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_float*(a: var TGScannerConfig, `scan_float`: guint)
-proc TGScannerConfig_scan_hex*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_hex*(a: var TGScannerConfig, `scan_hex`: guint)
-proc TGScannerConfig_scan_hex_dollar*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_hex_dollar*(a: var TGScannerConfig,
-    `scan_hex_dollar`: guint)
-proc TGScannerConfig_scan_string_sq*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_string_sq*(a: var TGScannerConfig,
-    `scan_string_sq`: guint)
-proc TGScannerConfig_scan_string_dq*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scan_string_dq*(a: var TGScannerConfig,
-    `scan_string_dq`: guint)
-proc TGScannerConfig_numbers_2_int*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_numbers_2_int*(a: var TGScannerConfig,
-                                        `numbers_2_int`: guint)
-proc TGScannerConfig_int_2_float*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_int_2_float*(a: var TGScannerConfig,
-                                      `int_2_float`: guint)
-proc TGScannerConfig_identifier_2_string*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_identifier_2_string*(a: var TGScannerConfig,
-    `identifier_2_string`: guint)
-proc TGScannerConfig_char_2_token*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_char_2_token*(a: var TGScannerConfig,
-                                       `char_2_token`: guint)
-proc TGScannerConfig_symbol_2_token*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_symbol_2_token*(a: var TGScannerConfig,
-    `symbol_2_token`: guint)
-proc TGScannerConfig_scope_0_fallback*(a: var TGScannerConfig): guint
-proc TGScannerConfig_set_scope_0_fallback*(a: var TGScannerConfig,
-    `scope_0_fallback`: guint)
-proc g_scanner_new*(config_templ: PGScannerConfig): PGScanner{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_new".}
-proc g_scanner_destroy*(scanner: PGScanner){.cdecl, dynlib: gliblib,
-    importc: "g_scanner_destroy".}
-proc g_scanner_input_file*(scanner: PGScanner, input_fd: gint){.cdecl,
-    dynlib: gliblib, importc: "g_scanner_input_file".}
-proc g_scanner_sync_file_offset*(scanner: PGScanner){.cdecl, dynlib: gliblib,
-    importc: "g_scanner_sync_file_offset".}
-proc g_scanner_input_text*(scanner: PGScanner, text: cstring, text_len: guint){.
-    cdecl, dynlib: gliblib, importc: "g_scanner_input_text".}
-proc g_scanner_get_next_token*(scanner: PGScanner): TGTokenType{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_get_next_token".}
-proc g_scanner_peek_next_token*(scanner: PGScanner): TGTokenType{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_peek_next_token".}
-proc g_scanner_cur_token*(scanner: PGScanner): TGTokenType{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_cur_token".}
-proc g_scanner_cur_value*(scanner: PGScanner): TGTokenValue{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_cur_value".}
-proc g_scanner_cur_line*(scanner: PGScanner): guint{.cdecl, dynlib: gliblib,
-    importc: "g_scanner_cur_line".}
-proc g_scanner_cur_position*(scanner: PGScanner): guint{.cdecl, dynlib: gliblib,
-    importc: "g_scanner_cur_position".}
-proc g_scanner_eof*(scanner: PGScanner): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_scanner_eof".}
-proc g_scanner_set_scope*(scanner: PGScanner, scope_id: guint): guint{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_set_scope".}
-proc g_scanner_scope_add_symbol*(scanner: PGScanner, scope_id: guint,
-                                 symbol: cstring, value: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_scanner_scope_add_symbol".}
-proc g_scanner_scope_remove_symbol*(scanner: PGScanner, scope_id: guint,
-                                    symbol: cstring){.cdecl, dynlib: gliblib,
-    importc: "g_scanner_scope_remove_symbol".}
-proc g_scanner_scope_lookup_symbol*(scanner: PGScanner, scope_id: guint,
-                                    symbol: cstring): gpointer{.cdecl,
-    dynlib: gliblib, importc: "g_scanner_scope_lookup_symbol".}
-proc g_scanner_scope_foreach_symbol*(scanner: PGScanner, scope_id: guint,
-                                     func: TGHFunc, user_data: gpointer){.cdecl,
-    dynlib: gliblib, importc: "g_scanner_scope_foreach_symbol".}
-proc g_scanner_lookup_symbol*(scanner: PGScanner, symbol: cstring): gpointer{.
-    cdecl, dynlib: gliblib, importc: "g_scanner_lookup_symbol".}
-proc g_scanner_unexp_token*(scanner: PGScanner, expected_token: TGTokenType,
-                            identifier_spec: cstring, symbol_spec: cstring,
-                            symbol_name: cstring, `message`: cstring,
-                            is_error: gint){.cdecl, dynlib: gliblib,
-    importc: "g_scanner_unexp_token".}
-proc G_SHELL_ERROR*(): TGQuark
-type
-  PGShellError* = ptr TGShellError
-  TGShellError* = enum
-    G_SHELL_ERROR_BAD_QUOTING, G_SHELL_ERROR_EMPTY_STRING, G_SHELL_ERROR_FAILED
-
-proc g_shell_error_quark*(): TGQuark{.cdecl, dynlib: gliblib,
-                                      importc: "g_shell_error_quark".}
-proc g_shell_quote*(unquoted_string: cstring): cstring{.cdecl, dynlib: gliblib,
-    importc: "g_shell_quote".}
-proc g_shell_unquote*(quoted_string: cstring, error: pointer): cstring{.cdecl,
-    dynlib: gliblib, importc: "g_shell_unquote".}
-proc g_shell_parse_argv*(command_line: cstring, argcp: Pgint, argvp: PPPgchar,
-                         error: pointer): gboolean{.cdecl, dynlib: gliblib,
-    importc: "g_shell_parse_argv".}
-proc G_SPAWN_ERROR*(): TGQuark
-type
-  PGSpawnError* = ptr TGSpawnError
-  TGSpawnError* = enum
-    G_SPAWN_ERROR_FORK, G_SPAWN_ERROR_READ, G_SPAWN_ERROR_CHDIR,
-    G_SPAWN_ERROR_ACCES, G_SPAWN_ERROR_PERM, G_SPAWN_ERROR_2BIG,
-    G_SPAWN_ERROR_NOEXEC, G_SPAWN_ERROR_NAMETOOLONG, G_SPAWN_ERROR_NOENT,
-    G_SPAWN_ERROR_NOMEM, G_SPAWN_ERROR_NOTDIR, G_SPAWN_ERROR_LOOP,
-    G_SPAWN_ERROR_TXTBUSY, G_SPAWN_ERROR_IO, G_SPAWN_ERROR_NFILE,
-    G_SPAWN_ERROR_MFILE, G_SPAWN_ERROR_INVAL, G_SPAWN_ERROR_ISDIR,
-    G_SPAWN_ERROR_LIBBAD, G_SPAWN_ERROR_FAILED
-  TGSpawnChildSetupFunc* = proc (user_data: gpointer){.cdecl.}
-  PGSpawnFlags* = ptr TGSpawnFlags
-  TGSpawnFlags* = int
-
-const
-  G_SPAWN_LEAVE_DESCRIPTORS_OPEN* = 1 shl 0
-  G_SPAWN_DO_NOT_REAP_CHILD* = 1 shl 1
-  G_SPAWN_SEARCH_PATH* = 1 shl 2
-  G_SPAWN_STDOUT_TO_DEV_NULL* = 1 shl 3
-  G_SPAWN_STDERR_TO_DEV_NULL* = 1 shl 4
-  G_SPAWN_CHILD_INHERITS_STDIN* = 1 shl 5
-  G_SPAWN_FILE_AND_ARGV_ZERO* = 1 shl 6
-
-proc g_spawn_error_quark*(): TGQuark{.cdecl, dynlib: gliblib,
-                                      importc: "g_spawn_error_quark".}
-proc g_spawn_async*(working_directory: cstring, argv: PPgchar, envp: PPgchar,
-                    flags: TGSpawnFlags, child_setup: TGSpawnChildSetupFunc,
-                    user_data: gpointer, child_pid: Pgint, error: pointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_spawn_async".}
-proc g_spawn_async_with_pipes*(working_directory: cstring, argv: PPgchar,
-                               envp: PPgchar, flags: TGSpawnFlags,
-                               child_setup: TGSpawnChildSetupFunc,
-                               user_data: gpointer, child_pid: Pgint,
-                               standard_input: Pgint, standard_output: Pgint,
-                               standard_error: Pgint, error: pointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_spawn_async_with_pipes".}
-proc g_spawn_sync*(working_directory: cstring, argv: PPgchar, envp: PPgchar,
-                   flags: TGSpawnFlags, child_setup: TGSpawnChildSetupFunc,
-                   user_data: gpointer, standard_output: PPgchar,
-                   standard_error: PPgchar, exit_status: Pgint, error: pointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_spawn_sync".}
-proc g_spawn_command_line_sync*(command_line: cstring, standard_output: PPgchar,
-                                standard_error: PPgchar, exit_status: Pgint,
-                                error: pointer): gboolean{.cdecl,
-    dynlib: gliblib, importc: "g_spawn_command_line_sync".}
-proc g_spawn_command_line_async*(command_line: cstring, error: pointer): gboolean{.
-    cdecl, dynlib: gliblib, importc: "g_spawn_command_line_async".}
-proc G_TYPE_IS_BOXED*(theType: GType): gboolean
-proc G_VALUE_HOLDS_BOXED*(value: PGValue): gboolean
-proc G_TYPE_CLOSURE*(): GType
-proc G_TYPE_VALUE*(): GType
-proc G_TYPE_VALUE_ARRAY*(): GType
-proc G_TYPE_GSTRING*(): GType
-proc g_boxed_copy*(boxed_type: GType, src_boxed: gconstpointer): gpointer{.
-    cdecl, dynlib: gobjectlib, importc: "g_boxed_copy".}
-proc g_boxed_free*(boxed_type: GType, boxed: gpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_boxed_free".}
-proc g_value_set_boxed*(value: PGValue, v_boxed: gconstpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_boxed".}
-proc g_value_set_static_boxed*(value: PGValue, v_boxed: gconstpointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_value_set_static_boxed".}
-proc g_value_get_boxed*(value: PGValue): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_get_boxed".}
-proc g_value_dup_boxed*(value: PGValue): gpointer{.cdecl, dynlib: gobjectlib,
-    importc: "g_value_dup_boxed".}
-proc g_boxed_type_register_static*(name: cstring, boxed_copy: TGBoxedCopyFunc,
-                                   boxed_free: TGBoxedFreeFunc): GType{.cdecl,
-    dynlib: gobjectlib, importc: "g_boxed_type_register_static".}
-proc g_value_set_boxed_take_ownership*(value: PGValue, v_boxed: gconstpointer){.
-    cdecl, dynlib: gobjectlib, importc: "g_value_set_boxed_take_ownership".}
-proc g_closure_get_type*(): GType{.cdecl, dynlib: gobjectlib,
-                                   importc: "g_closure_get_type".}
-proc g_value_get_type*(): GType{.cdecl, dynlib: gobjectlib,
-                                 importc: "g_value_get_type".}
-proc g_value_array_get_type*(): GType{.cdecl, dynlib: gobjectlib,
-                                       importc: "g_value_array_get_type".}
-proc g_gstring_get_type*(): GType{.cdecl, dynlib: gobjectlib,
-                                   importc: "g_gstring_get_type".}
-type
-  PGModule* = pointer
-  TGModuleFlags* = int32
-  TGModuleCheckInit* = proc (module: PGModule): cstring{.cdecl.}
-  TGModuleUnload* = proc (module: PGModule){.cdecl.}
-
-const
-  G_MODULE_BIND_LAZY* = 1 shl 0
-  G_MODULE_BIND_MASK* = 1
-
-proc g_module_supported*(): gboolean{.cdecl, dynlib: gmodulelib,
-                                      importc: "g_module_supported".}
-proc g_module_open*(file_name: cstring, flags: TGModuleFlags): PGModule{.cdecl,
-    dynlib: gmodulelib, importc: "g_module_open".}
-proc g_module_close*(module: PGModule): gboolean{.cdecl, dynlib: gmodulelib,
-    importc: "g_module_close".}
-proc g_module_make_resident*(module: PGModule){.cdecl, dynlib: gmodulelib,
-    importc: "g_module_make_resident".}
-proc g_module_error*(): cstring{.cdecl, dynlib: gmodulelib,
-                                 importc: "g_module_error".}
-proc g_module_symbol*(module: PGModule, symbol_name: cstring, symbol: Pgpointer): gboolean{.
-    cdecl, dynlib: gmodulelib, importc: "g_module_symbol".}
-proc g_module_name*(module: PGModule): cstring{.cdecl, dynlib: gmodulelib,
-    importc: "g_module_name".}
-proc g_module_build_path*(directory: cstring, module_name: cstring): cstring{.
-    cdecl, dynlib: gmodulelib, importc: "g_module_build_path".}
-proc g_cclosure_marshal_VOID_VOID*(closure: PGClosure, return_value: PGValue,
-                                    n_param_values: GUInt,
-                                    param_values: PGValue,
-                                    invocation_hint: GPointer,
-                                    marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__VOID".}
-proc g_cclosure_marshal_VOID_BOOLEAN*(closure: PGClosure,
-                                       return_value: PGValue,
-                                       n_param_values: GUInt,
-                                       param_values: PGValue,
-                                       invocation_hint: GPointer,
-                                       marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__BOOLEAN".}
-proc g_cclosure_marshal_VOID_CHAR*(closure: PGClosure, return_value: PGValue,
-                                    n_param_values: GUInt,
-                                    param_values: PGValue,
-                                    invocation_hint: GPointer,
-                                    marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__CHAR".}
-proc g_cclosure_marshal_VOID_UCHAR*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__UCHAR".}
-proc g_cclosure_marshal_VOID_INT*(closure: PGClosure, return_value: PGValue,
-                                   n_param_values: GUInt, param_values: PGValue,
-                                   invocation_hint: GPointer,
-                                   marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__INT".}
-proc g_cclosure_marshal_VOID_UINT*(closure: PGClosure, return_value: PGValue,
-                                    n_param_values: GUInt,
-                                    param_values: PGValue,
-                                    invocation_hint: GPointer,
-                                    marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__UINT".}
-proc g_cclosure_marshal_VOID_LONG*(closure: PGClosure, return_value: PGValue,
-                                    n_param_values: GUInt,
-                                    param_values: PGValue,
-                                    invocation_hint: GPointer,
-                                    marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__LONG".}
-proc g_cclosure_marshal_VOID_ULONG*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__ULONG".}
-proc g_cclosure_marshal_VOID_ENUM*(closure: PGClosure, return_value: PGValue,
-                                    n_param_values: GUInt,
-                                    param_values: PGValue,
-                                    invocation_hint: GPointer,
-                                    marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__ENUM".}
-proc g_cclosure_marshal_VOID_FLAGS*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__FLAGS".}
-proc g_cclosure_marshal_VOID_FLOAT*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__FLOAT".}
-proc g_cclosure_marshal_VOID_DOUBLE*(closure: PGClosure, return_value: PGValue,
-                                      n_param_values: GUInt,
-                                      param_values: PGValue,
-                                      invocation_hint: GPointer,
-                                      marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__DOUBLE".}
-proc g_cclosure_marshal_VOID_STRING*(closure: PGClosure, return_value: PGValue,
-                                      n_param_values: GUInt,
-                                      param_values: PGValue,
-                                      invocation_hint: GPointer,
-                                      marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__STRING".}
-proc g_cclosure_marshal_VOID_PARAM*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__PARAM".}
-proc g_cclosure_marshal_VOID_BOXED*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__BOXED".}
-proc g_cclosure_marshal_VOID_POINTER*(closure: PGClosure,
-                                       return_value: PGValue,
-                                       n_param_values: GUInt,
-                                       param_values: PGValue,
-                                       invocation_hint: GPointer,
-                                       marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__POINTER".}
-proc g_cclosure_marshal_VOID_OBJECT*(closure: PGClosure, return_value: PGValue,
-                                      n_param_values: GUInt,
-                                      param_values: PGValue,
-                                      invocation_hint: GPointer,
-                                      marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__OBJECT".}
-proc g_cclosure_marshal_STRING_OBJECT_POINTER*(closure: PGClosure,
-    return_value: PGValue, n_param_values: GUInt, param_values: PGValue,
-    invocation_hint: GPointer, marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_STRING__OBJECT_POINTER".}
-proc g_cclosure_marshal_VOID_UINT_POINTER*(closure: PGClosure,
-    return_value: PGValue, n_param_values: GUInt, param_values: PGValue,
-    invocation_hint: GPointer, marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_VOID__UINT_POINTER".}
-proc g_cclosure_marshal_BOOLEAN_FLAGS*(closure: PGClosure,
-                                        return_value: PGValue,
-                                        n_param_values: GUInt,
-                                        param_values: PGValue,
-                                        invocation_hint: GPointer,
-                                        marshal_data: GPointer){.cdecl,
-    dynlib: gobjectlib, importc: "g_cclosure_marshal_BOOLEAN__FLAGS".}
-proc g_cclosure_marshal_BOOL_FLAGS*(closure: PGClosure, return_value: PGValue,
-                                     n_param_values: GUInt,
-                                     param_values: PGValue,
-                                     invocation_hint: GPointer,
-                                     marshal_data: GPointer){.cdecl,
-    dynlib: gliblib, importc: "g_cclosure_marshal_BOOLEAN__FLAGS".}
-
-proc GUINT16_SWAP_LE_BE_CONSTANT*(val: guint16): guint16 =
-  Result = ((val and 0x00FF'i16) shl 8'i16) or ((val and 0xFF00'i16) shr 8'i16)
-
-proc GUINT32_SWAP_LE_BE_CONSTANT*(val: guint32): guint32 =
-  Result = ((val and 0x000000FF'i32) shl 24'i32) or ((val and 0x0000FF00'i32) shl 8'i32) or
-      ((val and 0x00FF0000'i32) shr 8'i32) or ((val and 0xFF000000'i32) shr 24'i32)
-
-proc GUINT_TO_POINTER*(i: guint): pointer =
-  Result = cast[Pointer](TAddress(i))
-
-
-when false:
-
-  type
-    PGArray* = pointer
-
-  proc g_array_append_val*(a: PGArray, v: gpointer): PGArray =
-    result = g_array_append_vals(a, addr(v), 1)
-
-  proc g_array_prepend_val*(a: PGArray, v: gpointer): PGArray =
-    result = g_array_prepend_vals(a, addr(v), 1)
-
-  proc g_array_insert_val*(a: PGArray, i: guint, v: gpointer): PGArray =
-    result = g_array_insert_vals(a, i, addr(v), 1)
-
-  proc g_ptr_array_index*(parray: PGPtrArray, index: guint): gpointer =
-    result = cast[PGPointer](cast[int](parray ^. pdata) +
-        index * SizeOf(GPointer))^
-
-  proc G_THREAD_ERROR*(): TGQuark =
-    result = g_thread_error_quark()
-
-  proc g_mutex_lock*(mutex: PGMutex) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.mutex_lock(mutex)
-
-  proc g_mutex_trylock*(mutex: PGMutex): gboolean =
-    if g_threads_got_initialized:
-      result = g_thread_functions_for_glib_use.mutex_trylock(mutex)
-    else:
-      result = true
-
-  proc g_mutex_unlock*(mutex: PGMutex) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.mutex_unlock(mutex)
-
-  proc g_mutex_free*(mutex: PGMutex) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.mutex_free(mutex)
-
-  proc g_cond_wait*(cond: PGCond, mutex: PGMutex) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.cond_wait(cond, mutex)
-
-  proc g_cond_timed_wait*(cond: PGCond, mutex: PGMutex, end_time: PGTimeVal): gboolean =
-    if g_threads_got_initialized:
-      result = g_thread_functions_for_glib_use.cond_timed_wait(cond, mutex,
-          end_time)
-    else:
-      result = true
-
-  proc g_thread_supported*(): gboolean =
-    result = g_threads_got_initialized
-
-  proc g_mutex_new*(): PGMutex =
-    result = g_thread_functions_for_glib_use.mutex_new()
-
-  proc g_cond_new*(): PGCond =
-    result = g_thread_functions_for_glib_use.cond_new()
-
-  proc g_cond_signal*(cond: PGCond) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.cond_signal(cond)
-
-  proc g_cond_broadcast*(cond: PGCond) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.cond_broadcast(cond)
-
-  proc g_cond_free*(cond: PGCond) =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.cond_free(cond)
-
-  proc g_private_new*(dest: TGDestroyNotify): PGPrivate =
-    result = g_thread_functions_for_glib_use.private_new(dest)
-
-  proc g_private_get*(private_key: PGPrivate): gpointer =
-    if g_threads_got_initialized:
-      result = g_thread_functions_for_glib_use.private_get(private_key)
-    else:
-      result = private_key
-
-  proc g_private_set*(private_key: var PGPrivate, data: gpointer) =
-    if g_threads_got_initialized:
-      nil
-    else:
-      private_key = data
-
-  proc g_thread_yield*() =
-    if g_threads_got_initialized:
-      g_thread_functions_for_glib_use.thread_yield
-
-  proc g_thread_create*(func: TGThreadFunc, data: gpointer, joinable: gboolean,
-                        error: pointer): PGThread =
-    result = g_thread_create_full(func, data, 0, joinable, false,
-                                  G_THREAD_PRIORITY_NORMAL, error)
-
-  proc g_static_mutex_get_mutex*(mutex: PPGMutex): PGMutex =
-    result = g_static_mutex_get_mutex_impl(mutex)
-
-  proc g_static_mutex_lock*(mutex: PGStaticMutex) =
-    g_mutex_lock(g_static_mutex_get_mutex_impl(PPGMutex(mutex)))
-
-  proc g_static_mutex_trylock*(mutex: PGStaticMutex): gboolean =
-    result = g_mutex_trylock(g_static_mutex_get_mutex(PPGMutex(mutex)))
-
-  proc g_static_mutex_unlock*(mutex: PGStaticMutex) =
-    g_mutex_unlock(g_static_mutex_get_mutex_impl(PPGMutex(mutex)))
-
-  proc g_main_new*(is_running: gboolean): PGMainLoop =
-    result = g_main_loop_new(nil, is_running)
-
-  proc g_main_iteration*(may_block: gboolean): gboolean =
-    result = g_main_context_iteration(nil, may_block)
-
-  proc g_main_pending*(): gboolean =
-    result = g_main_context_pending(nil)
-
-  proc g_main_set_poll_func*(func: TGPollFunc) =
-    g_main_context_set_poll_func(nil, func)
-
-proc g_slist_next*(slist: PGSList): PGSList =
-  if slist != nil:
-    result = slist.next
-  else:
-    result = nil
-
-proc g_new*(bytes_per_struct, n_structs: int): gpointer =
-  result = g_malloc(n_structs * bytes_per_struct)
-
-proc g_new0*(bytes_per_struct, n_structs: int): gpointer =
-  result = g_malloc0(n_structs * bytes_per_struct)
-
-proc g_renew*(struct_size: int, OldMem: gpointer, n_structs: int): gpointer =
-  result = g_realloc(OldMem, struct_size * n_structs)
-
-proc g_chunk_new*(chunk: Pointer): Pointer =
-  result = g_mem_chunk_alloc(chunk)
-
-proc g_chunk_new0*(chunk: Pointer): Pointer =
-  result = g_mem_chunk_alloc0(chunk)
-
-proc g_chunk_free*(mem_chunk: PGMemChunk, mem: gpointer) =
-  g_mem_chunk_free(mem_chunk, mem)
-
-proc g_list_previous*(list: PGList): PGList =
-  if list != nil:
-    result = list.prev
-  else:
-    result = nil
-
-proc g_list_next*(list: PGList): PGList =
-  if list != nil:
-    result = list.next
-  else:
-    result = nil
-
-proc G_CONVERT_ERROR*(): TGQuark =
-  result = g_convert_error_quark()
-
-proc g_datalist_id_set_data*(datalist: PPGData, key_id: TGQuark, data: gpointer) =
-  g_datalist_id_set_data_full(datalist, key_id, data, TGDestroyNotify(nil))
-
-proc g_datalist_id_remove_data*(datalist: PPGData, key_id: TGQuark) =
-  g_datalist_id_set_data(datalist, key_id, nil)
-
-proc g_datalist_get_data*(datalist: PPGData, key_str: cstring): PPGData =
-  result = cast[PPGData](g_datalist_id_get_data(datalist,
-                                                g_quark_try_string(key_str)))
-
-proc g_datalist_set_data_full*(datalist: PPGData, key_str: cstring,
-                               data: gpointer, destroy_func: TGDestroyNotify) =
-  g_datalist_id_set_data_full(datalist, g_quark_from_string(key_str), data,
-                              destroy_func)
-
-proc g_datalist_set_data*(datalist: PPGData, key_str: cstring, data: gpointer) =
-  g_datalist_set_data_full(datalist, key_str, data, nil)
-
-proc g_datalist_remove_no_notify*(datalist: PPGData, key_str: cstring) =
-  discard g_datalist_id_remove_no_notify(datalist, g_quark_try_string(key_str))
-
-proc g_datalist_remove_data*(datalist: PPGData, key_str: cstring) =
-  g_datalist_id_set_data(datalist, g_quark_try_string(key_str), nil)
-
-proc g_dataset_id_set_data*(location: gconstpointer, key_id: TGQuark,
-                            data: gpointer) =
-  g_dataset_id_set_data_full(location, key_id, data, nil)
-
-proc g_dataset_id_remove_data*(location: gconstpointer, key_id: TGQuark) =
-  g_dataset_id_set_data(location, key_id, nil)
-
-proc g_dataset_get_data*(location: gconstpointer, key_str: cstring): gpointer =
-  result = g_dataset_id_get_data(location, g_quark_try_string(key_str))
-
-proc g_dataset_set_data_full*(location: gconstpointer, key_str: cstring,
-                              data: gpointer, destroy_func: TGDestroyNotify) =
-  g_dataset_id_set_data_full(location, g_quark_from_string(key_str), data,
-                             destroy_func)
-
-proc g_dataset_remove_no_notify*(location: gconstpointer, key_str: cstring) =
-  discard g_dataset_id_remove_no_notify(location, g_quark_try_string(key_str))
-
-proc g_dataset_set_data*(location: gconstpointer, key_str: cstring,
-                         data: gpointer) =
-  g_dataset_set_data_full(location, key_str, data, nil)
-
-proc g_dataset_remove_data*(location: gconstpointer, key_str: cstring) =
-  g_dataset_id_set_data(location, g_quark_try_string(key_str), nil)
-
-proc G_FILE_ERROR*(): TGQuark =
-  result = g_file_error_quark()
-
-proc TGHookList_hook_size*(a: var TGHookList): guint =
-  result = (a.flag0 and bm_TGHookList_hook_size) shr bp_TGHookList_hook_size
-
-proc TGHookList_set_hook_size*(a: var TGHookList, `hook_size`: guint) =
-  a.flag0 = a.flag0 or
-      ((`hook_size` shl bp_TGHookList_hook_size) and bm_TGHookList_hook_size)
-
-proc TGHookList_is_setup*(a: var TGHookList): guint =
-  result = (a.flag0 and bm_TGHookList_is_setup) shr bp_TGHookList_is_setup
-
-proc TGHookList_set_is_setup*(a: var TGHookList, `is_setup`: guint) =
-  a.flag0 = a.flag0 or
-      ((`is_setup` shl bp_TGHookList_is_setup) and bm_TGHookList_is_setup)
-
-proc G_HOOK*(hook: pointer): PGHook =
-  result = cast[PGHook](hook)
-
-proc G_HOOK_FLAGS*(hook: PGHook): guint =
-  result = hook.flags
-
-proc G_HOOK_ACTIVE*(hook: PGHook): bool =
-  result = (hook.flags and G_HOOK_FLAG_ACTIVE) != 0'i32
-
-proc G_HOOK_IN_CALL*(hook: PGHook): bool =
-  result = (hook.flags and G_HOOK_FLAG_IN_CALL) != 0'i32
-
-proc G_HOOK_IS_VALID*(hook: PGHook): bool =
-  result = (hook.hook_id != 0) and G_HOOK_ACTIVE(hook)
-
-proc G_HOOK_IS_UNLINKED*(hook: PGHook): bool =
-  result = (hook.next == nil) and (hook.prev == nil) and
-      (hook.hook_id == 0) and (hook.ref_count == 0'i32)
-
-proc g_hook_append*(hook_list: PGHookList, hook: PGHook) =
-  g_hook_insert_before(hook_list, nil, hook)
-
-proc G_IO_CHANNEL_ERROR*(): TGQuark =
-  result = g_io_channel_error_quark()
-
-proc TGIOChannel_use_buffer*(a: var TGIOChannel): guint =
-  result = (a.flag0 and bm_TGIOChannel_use_buffer) shr
-      bp_TGIOChannel_use_buffer
-
-proc TGIOChannel_set_use_buffer*(a: var TGIOChannel, `use_buffer`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`use_buffer` shl bp_TGIOChannel_use_buffer) and
-      bm_TGIOChannel_use_buffer)
-
-proc TGIOChannel_do_encode*(a: var TGIOChannel): guint =
-  result = (a.flag0 and bm_TGIOChannel_do_encode) shr
-      bp_TGIOChannel_do_encode
-
-proc TGIOChannel_set_do_encode*(a: var TGIOChannel, `do_encode`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`do_encode` shl bp_TGIOChannel_do_encode) and
-      bm_TGIOChannel_do_encode)
-
-proc TGIOChannel_close_on_unref*(a: var TGIOChannel): guint =
-  result = (a.flag0 and bm_TGIOChannel_close_on_unref) shr
-      bp_TGIOChannel_close_on_unref
-
-proc TGIOChannel_set_close_on_unref*(a: var TGIOChannel, `close_on_unref`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`close_on_unref` shl bp_TGIOChannel_close_on_unref) and
-      bm_TGIOChannel_close_on_unref)
-
-proc TGIOChannel_is_readable*(a: var TGIOChannel): guint =
-  result = (a.flag0 and bm_TGIOChannel_is_readable) shr
-      bp_TGIOChannel_is_readable
-
-proc TGIOChannel_set_is_readable*(a: var TGIOChannel, `is_readable`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_readable` shl bp_TGIOChannel_is_readable) and
-      bm_TGIOChannel_is_readable)
-
-proc TGIOChannel_is_writeable*(a: var TGIOChannel): guint =
-  result = (a.flag0 and bm_TGIOChannel_is_writeable) shr
-      bp_TGIOChannel_is_writeable
-
-proc TGIOChannel_set_is_writeable*(a: var TGIOChannel, `is_writeable`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_writeable` shl bp_TGIOChannel_is_writeable) and
-      bm_TGIOChannel_is_writeable)
-
-proc TGIOChannel_is_seekable*(a: var TGIOChannel): guint =
-  result = (a.flag0 and bm_TGIOChannel_is_seekable) shr
-      bp_TGIOChannel_is_seekable
-
-proc TGIOChannel_set_is_seekable*(a: var TGIOChannel, `is_seekable`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_seekable` shl bp_TGIOChannel_is_seekable) and
-      bm_TGIOChannel_is_seekable)
-
-proc g_utf8_next_char*(p: pguchar): pguchar =
-  result = cast[pguchar](cast[TAddress](p)+1) # p + ord((g_utf8_skip + p^ )^ )
-
-when false:
-  proc GLIB_CHECK_VERSION*(major, minor, micro: guint): bool =
-    result = ((GLIB_MAJOR_VERSION > major) or
-        ((GLIB_MAJOR_VERSION == major) and (GLIB_MINOR_VERSION > minor)) or
-        ((GLIB_MAJOR_VERSION == major) and (GLIB_MINOR_VERSION == minor) and
-        (GLIB_MICRO_VERSION >= micro)))
-
-  proc g_error*(format: cstring) =
-    g_log(G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format)
-
-  proc g_message*(format: cstring) =
-    g_log(G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format)
-
-  proc g_critical*(format: cstring) =
-    g_log(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, format)
-
-  proc g_warning*(format: cstring) =
-    g_log(G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, format)
-
-proc G_MARKUP_ERROR*(): TGQuark =
-  result = g_markup_error_quark()
-
-proc G_NODE_IS_ROOT*(node: PGNode): bool =
-  result = (node . parent == nil) and (node . next == nil) and
-      (node . prev == nil)
-
-proc G_NODE_IS_LEAF*(node: PGNode): bool =
-  result = node . children == nil
-
-proc g_node_append*(parent: PGNode, node: PGNode): PGNode =
-  result = g_node_insert_before(parent, nil, node)
-
-proc g_node_insert_data*(parent: PGNode, position: gint, data: gpointer): PGNode =
-  result = g_node_insert(parent, position, g_node_new(data))
-
-proc g_node_insert_data_before*(parent: PGNode, sibling: PGNode, data: gpointer): PGNode =
-  result = g_node_insert_before(parent, sibling, g_node_new(data))
-
-proc g_node_prepend_data*(parent: PGNode, data: gpointer): PGNode =
-  result = g_node_prepend(parent, g_node_new(data))
-
-proc g_node_append_data*(parent: PGNode, data: gpointer): PGNode =
-  result = g_node_insert_before(parent, nil, g_node_new(data))
-
-proc g_node_prev_sibling*(node: PGNode): PGNode =
-  if node != nil:
-    result = node.prev
-  else:
-    result = nil
-
-proc g_node_next_sibling*(node: PGNode): PGNode =
-  if node != nil:
-    result = node.next
-  else:
-    result = nil
-
-proc g_node_first_child*(node: PGNode): PGNode =
-  if node != nil:
-    result = node.children
-  else:
-    result = nil
-
-proc g_rand_boolean*(rand: PGRand): gboolean =
-  result = (int(g_rand_int(rand)) and (1 shl 15)) != 0
-
-proc g_random_boolean*(): gboolean =
-  result = (int(g_random_int()) and (1 shl 15)) != 0
-
-proc TGScannerConfig_case_sensitive*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_case_sensitive) shr
-      bp_TGScannerConfig_case_sensitive
-
-proc TGScannerConfig_set_case_sensitive*(a: var TGScannerConfig,
-    `case_sensitive`: guint) =
-  a.flag0 = a.flag0 or
-      ((`case_sensitive` shl bp_TGScannerConfig_case_sensitive) and
-      bm_TGScannerConfig_case_sensitive)
-
-proc TGScannerConfig_skip_comment_multi*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_skip_comment_multi) shr
-      bp_TGScannerConfig_skip_comment_multi
-
-proc TGScannerConfig_set_skip_comment_multi*(a: var TGScannerConfig,
-    `skip_comment_multi`: guint) =
-  a.flag0 = a.flag0 or
-      ((`skip_comment_multi` shl bp_TGScannerConfig_skip_comment_multi) and
-      bm_TGScannerConfig_skip_comment_multi)
-
-proc TGScannerConfig_skip_comment_single*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_skip_comment_single) shr
-      bp_TGScannerConfig_skip_comment_single
-
-proc TGScannerConfig_set_skip_comment_single*(a: var TGScannerConfig,
-    `skip_comment_single`: guint) =
-  a.flag0 = a.flag0 or
-      ((`skip_comment_single` shl bp_TGScannerConfig_skip_comment_single) and
-      bm_TGScannerConfig_skip_comment_single)
-
-proc TGScannerConfig_scan_comment_multi*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_comment_multi) shr
-      bp_TGScannerConfig_scan_comment_multi
-
-proc TGScannerConfig_set_scan_comment_multi*(a: var TGScannerConfig,
-    `scan_comment_multi`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_comment_multi` shl bp_TGScannerConfig_scan_comment_multi) and
-      bm_TGScannerConfig_scan_comment_multi)
-
-proc TGScannerConfig_scan_identifier*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_identifier) shr
-      bp_TGScannerConfig_scan_identifier
-
-proc TGScannerConfig_set_scan_identifier*(a: var TGScannerConfig,
-    `scan_identifier`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_identifier` shl bp_TGScannerConfig_scan_identifier) and
-      bm_TGScannerConfig_scan_identifier)
-
-proc TGScannerConfig_scan_identifier_1char*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_identifier_1char) shr
-      bp_TGScannerConfig_scan_identifier_1char
-
-proc TGScannerConfig_set_scan_identifier_1char*(a: var TGScannerConfig,
-    `scan_identifier_1char`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_identifier_1char` shl bp_TGScannerConfig_scan_identifier_1char) and
-      bm_TGScannerConfig_scan_identifier_1char)
-
-proc TGScannerConfig_scan_identifier_NULL*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_identifier_NULL) shr
-      bp_TGScannerConfig_scan_identifier_NULL
-
-proc TGScannerConfig_set_scan_identifier_NULL*(a: var TGScannerConfig,
-    `scan_identifier_NULL`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_identifier_NULL` shl bp_TGScannerConfig_scan_identifier_NULL) and
-      bm_TGScannerConfig_scan_identifier_NULL)
-
-proc TGScannerConfig_scan_symbols*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_symbols) shr
-      bp_TGScannerConfig_scan_symbols
-
-proc TGScannerConfig_set_scan_symbols*(a: var TGScannerConfig,
-                                       `scan_symbols`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_symbols` shl bp_TGScannerConfig_scan_symbols) and
-      bm_TGScannerConfig_scan_symbols)
-
-proc TGScannerConfig_scan_binary*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_binary) shr
-      bp_TGScannerConfig_scan_binary
-
-proc TGScannerConfig_set_scan_binary*(a: var TGScannerConfig,
-                                      `scan_binary`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_binary` shl bp_TGScannerConfig_scan_binary) and
-      bm_TGScannerConfig_scan_binary)
-
-proc TGScannerConfig_scan_octal*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_octal) shr
-      bp_TGScannerConfig_scan_octal
-
-proc TGScannerConfig_set_scan_octal*(a: var TGScannerConfig, `scan_octal`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_octal` shl bp_TGScannerConfig_scan_octal) and
-      bm_TGScannerConfig_scan_octal)
-
-proc TGScannerConfig_scan_float*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_float) shr
-      bp_TGScannerConfig_scan_float
-
-proc TGScannerConfig_set_scan_float*(a: var TGScannerConfig, `scan_float`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_float` shl bp_TGScannerConfig_scan_float) and
-      bm_TGScannerConfig_scan_float)
-
-proc TGScannerConfig_scan_hex*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_hex) shr
-      bp_TGScannerConfig_scan_hex
-
-proc TGScannerConfig_set_scan_hex*(a: var TGScannerConfig, `scan_hex`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_hex` shl bp_TGScannerConfig_scan_hex) and
-      bm_TGScannerConfig_scan_hex)
-
-proc TGScannerConfig_scan_hex_dollar*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_hex_dollar) shr
-      bp_TGScannerConfig_scan_hex_dollar
-
-proc TGScannerConfig_set_scan_hex_dollar*(a: var TGScannerConfig,
-    `scan_hex_dollar`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_hex_dollar` shl bp_TGScannerConfig_scan_hex_dollar) and
-      bm_TGScannerConfig_scan_hex_dollar)
-
-proc TGScannerConfig_scan_string_sq*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_string_sq) shr
-      bp_TGScannerConfig_scan_string_sq
-
-proc TGScannerConfig_set_scan_string_sq*(a: var TGScannerConfig,
-    `scan_string_sq`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_string_sq` shl bp_TGScannerConfig_scan_string_sq) and
-      bm_TGScannerConfig_scan_string_sq)
-
-proc TGScannerConfig_scan_string_dq*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scan_string_dq) shr
-      bp_TGScannerConfig_scan_string_dq
-
-proc TGScannerConfig_set_scan_string_dq*(a: var TGScannerConfig,
-    `scan_string_dq`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scan_string_dq` shl bp_TGScannerConfig_scan_string_dq) and
-      bm_TGScannerConfig_scan_string_dq)
-
-proc TGScannerConfig_numbers_2_int*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_numbers_2_int) shr
-      bp_TGScannerConfig_numbers_2_int
-
-proc TGScannerConfig_set_numbers_2_int*(a: var TGScannerConfig,
-                                        `numbers_2_int`: guint) =
-  a.flag0 = a.flag0 or
-      ((`numbers_2_int` shl bp_TGScannerConfig_numbers_2_int) and
-      bm_TGScannerConfig_numbers_2_int)
-
-proc TGScannerConfig_int_2_float*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_int_2_float) shr
-      bp_TGScannerConfig_int_2_float
-
-proc TGScannerConfig_set_int_2_float*(a: var TGScannerConfig,
-                                      `int_2_float`: guint) =
-  a.flag0 = a.flag0 or
-      ((`int_2_float` shl bp_TGScannerConfig_int_2_float) and
-      bm_TGScannerConfig_int_2_float)
-
-proc TGScannerConfig_identifier_2_string*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_identifier_2_string) shr
-      bp_TGScannerConfig_identifier_2_string
-
-proc TGScannerConfig_set_identifier_2_string*(a: var TGScannerConfig,
-    `identifier_2_string`: guint) =
-  a.flag0 = a.flag0 or
-      ((`identifier_2_string` shl bp_TGScannerConfig_identifier_2_string) and
-      bm_TGScannerConfig_identifier_2_string)
-
-proc TGScannerConfig_char_2_token*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_char_2_token) shr
-      bp_TGScannerConfig_char_2_token
-
-proc TGScannerConfig_set_char_2_token*(a: var TGScannerConfig,
-                                       `char_2_token`: guint) =
-  a.flag0 = a.flag0 or
-      ((`char_2_token` shl bp_TGScannerConfig_char_2_token) and
-      bm_TGScannerConfig_char_2_token)
-
-proc TGScannerConfig_symbol_2_token*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_symbol_2_token) shr
-      bp_TGScannerConfig_symbol_2_token
-
-proc TGScannerConfig_set_symbol_2_token*(a: var TGScannerConfig,
-    `symbol_2_token`: guint) =
-  a.flag0 = a.flag0 or
-      ((`symbol_2_token` shl bp_TGScannerConfig_symbol_2_token) and
-      bm_TGScannerConfig_symbol_2_token)
-
-proc TGScannerConfig_scope_0_fallback*(a: var TGScannerConfig): guint =
-  result = (a.flag0 and bm_TGScannerConfig_scope_0_fallback) shr
-      bp_TGScannerConfig_scope_0_fallback
-
-proc TGScannerConfig_set_scope_0_fallback*(a: var TGScannerConfig,
-    `scope_0_fallback`: guint) =
-  a.flag0 = a.flag0 or
-      ((`scope_0_fallback` shl bp_TGScannerConfig_scope_0_fallback) and
-      bm_TGScannerConfig_scope_0_fallback)
-
-proc g_scanner_freeze_symbol_table*(scanner: PGScanner) =
-  if Scanner == nil: nil
-
-proc g_scanner_thaw_symbol_table*(scanner: PGScanner) =
-  if Scanner == nil: nil
-
-proc G_SHELL_ERROR*(): TGQuark =
-  result = g_shell_error_quark()
-
-proc G_SPAWN_ERROR*(): TGQuark =
-  result = g_spawn_error_quark()
-
-when false:
-  proc g_ascii_isalnum*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_ALNUM) != 0
-
-  proc g_ascii_isalpha*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_ALPHA) != 0
-
-  proc g_ascii_iscntrl*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_CNTRL) != 0
-
-  proc g_ascii_isdigit*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_DIGIT) != 0
-
-  proc g_ascii_isgraph*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_GRAPH) != 0
-
-  proc g_ascii_islower*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_LOWER) != 0
-
-  proc g_ascii_isprint*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_PRINT) != 0
-
-  proc g_ascii_ispunct*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_PUNCT) != 0
-
-  proc g_ascii_isspace*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_SPACE) != 0
-
-  proc g_ascii_isupper*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_UPPER) != 0
-
-  proc g_ascii_isxdigit*(c: gchar): bool =
-    result = ((g_ascii_table[guchar(c)]) and G_ASCII_XDIGIT) != 0
-
-  proc g_strstrip*(str: cstring): cstring =
-    result = g_strchomp(g_strchug(str))
-
-proc G_TYPE_MAKE_FUNDAMENTAL*(x: int): GType =
-  result = GType(x shl G_TYPE_FUNDAMENTAL_SHIFT)
-
-proc G_TYPE_IS_FUNDAMENTAL*(theType: GType): bool =
-  result = theType <= G_TYPE_FUNDAMENTAL_MAX
-
-proc G_TYPE_IS_DERIVED*(theType: GType): bool =
-  result = theType > G_TYPE_FUNDAMENTAL_MAX
-
-proc G_TYPE_IS_INTERFACE*(theType: GType): bool =
-  result = (G_TYPE_FUNDAMENTAL(theType)) == G_TYPE_INTERFACE
-
-proc G_TYPE_IS_CLASSED*(theType: GType): gboolean =
-  result = private_g_type_test_flags(theType, G_TYPE_FLAG_CLASSED)
-
-proc G_TYPE_IS_INSTANTIATABLE*(theType: GType): bool =
-  result = private_g_type_test_flags(theType, G_TYPE_FLAG_INSTANTIATABLE)
-
-proc G_TYPE_IS_DERIVABLE*(theType: GType): bool =
-  result = private_g_type_test_flags(theType, G_TYPE_FLAG_DERIVABLE)
-
-proc G_TYPE_IS_DEEP_DERIVABLE*(theType: GType): bool =
-  result = private_g_type_test_flags(theType, G_TYPE_FLAG_DEEP_DERIVABLE)
-
-proc G_TYPE_IS_ABSTRACT*(theType: GType): bool =
-  result = private_g_type_test_flags(theType, G_TYPE_FLAG_ABSTRACT)
-
-proc G_TYPE_IS_VALUE_ABSTRACT*(theType: GType): bool =
-  result = private_g_type_test_flags(theType, G_TYPE_FLAG_VALUE_ABSTRACT)
-
-proc G_TYPE_IS_VALUE_TYPE*(theType: GType): bool =
-  result = private_g_type_check_is_value_type(theType)
-
-proc G_TYPE_HAS_VALUE_TABLE*(theType: GType): bool =
-  result = (g_type_value_table_peek(theType)) != nil
-
-proc G_TYPE_CHECK_INSTANCE*(instance: Pointer): gboolean =
-  result = private_g_type_check_instance(cast[PGTypeInstance](instance))
-
-proc G_TYPE_CHECK_INSTANCE_CAST*(instance: Pointer, g_type: GType): PGTypeInstance =
-  result = cast[PGTypeInstance](private_g_type_check_instance_cast(
-                                  cast[PGTypeInstance](instance), g_type))
-
-proc G_TYPE_CHECK_INSTANCE_TYPE*(instance: Pointer, g_type: GType): bool =
-  result = private_g_type_check_instance_is_a(
-             cast[PGTypeInstance](instance), g_type)
-
-proc G_TYPE_INSTANCE_GET_CLASS*(instance: Pointer, g_type: GType): PGTypeClass =
-  result = cast[PGTypeInstance](Instance).g_class
-  result = private_g_type_check_class_cast(result, g_type)
-
-proc G_TYPE_INSTANCE_GET_INTERFACE*(instance: Pointer, g_type: GType): Pointer =
-  result = g_type_interface_peek((cast[PGTypeInstance](instance)).g_class, g_type)
-
-proc G_TYPE_CHECK_CLASS_CAST*(g_class: pointer, g_type: GType): Pointer =
-  result = private_g_type_check_class_cast(cast[PGTypeClass](g_class), g_type)
-
-proc G_TYPE_CHECK_CLASS_TYPE*(g_class: pointer, g_type: GType): bool =
-  result = private_g_type_check_class_is_a(cast[PGTypeClass](g_class), g_type)
-
-proc G_TYPE_CHECK_VALUE*(value: Pointer): bool =
-  result = private_g_type_check_value(cast[PGValue](Value))
-
-proc G_TYPE_CHECK_VALUE_TYPE*(value: pointer, g_type: GType): bool =
-  result = private_g_type_check_value_holds(cast[PGValue](value), g_type)
-
-proc G_TYPE_FROM_INSTANCE*(instance: Pointer): GType =
-  result = G_TYPE_FROM_CLASS((cast[PGTypeInstance](instance)) . g_class)
-
-proc G_TYPE_FROM_CLASS*(g_class: Pointer): GType =
-  result = (cast[PGTypeClass](g_class)) . g_type
-
-proc G_TYPE_FROM_INTERFACE*(g_iface: Pointer): GType =
-  result = (cast[PGTypeInterface](g_iface)) . g_type
-
-proc G_TYPE_IS_VALUE*(theType: GType): bool =
-  result = private_g_type_check_is_value_type(theType)
-
-proc G_IS_VALUE*(value: Pointer): bool =
-  result = G_TYPE_CHECK_VALUE(value)
-
-proc G_VALUE_TYPE*(value: Pointer): GType =
-  result = (cast[PGValue](value)) . g_type
-
-proc G_VALUE_TYPE_NAME*(value: Pointer): cstring =
-  result = g_type_name(G_VALUE_TYPE(value))
-
-proc G_VALUE_HOLDS*(value: pointer, g_type: GType): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, g_type)
-
-proc G_TYPE_IS_PARAM*(theType: GType): bool =
-  result = (G_TYPE_FUNDAMENTAL(theType)) == G_TYPE_PARAM
-
-proc G_PARAM_SPEC*(pspec: Pointer): PGParamSpec =
-  result = cast[PGParamSpec](G_TYPE_CHECK_INSTANCE_CAST(pspec, G_TYPE_PARAM))
-
-proc G_IS_PARAM_SPEC*(pspec: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(pspec, G_TYPE_PARAM)
-
-proc G_PARAM_SPEC_CLASS*(pclass: Pointer): PGParamSpecClass =
-  result = cast[PGParamSpecClass](
-             G_TYPE_CHECK_CLASS_CAST(pclass, G_TYPE_PARAM))
-
-proc G_IS_PARAM_SPEC_CLASS*(pclass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(pclass, G_TYPE_PARAM)
-
-proc G_PARAM_SPEC_GET_CLASS*(pspec: Pointer): PGParamSpecClass =
-  result = cast[PGParamSpecClass](G_TYPE_INSTANCE_GET_CLASS(pspec, G_TYPE_PARAM))
-
-proc G_PARAM_SPEC_TYPE*(pspec: Pointer): GType =
-  result = G_TYPE_FROM_INSTANCE(pspec)
-
-proc G_PARAM_SPEC_TYPE_NAME*(pspec: Pointer): cstring =
-  result = g_type_name(G_PARAM_SPEC_TYPE(pspec))
-
-proc G_PARAM_SPEC_VALUE_TYPE*(pspec: Pointer): GType =
-  result = (G_PARAM_SPEC(pspec)) . value_type
-
-proc G_VALUE_HOLDS_PARAM*(value: Pointer): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_PARAM)
-
-proc G_CLOSURE_NEEDS_MARSHAL*(closure: Pointer): bool =
-  result = cast[PGClosure](closure).marshal == nil
-
-proc G_CLOSURE_N_NOTIFIERS*(cl: PGClosure): int32 =
-  result = ((meta_marshal(cl) + ((n_guards(cl)) shl 1'i32)) + (n_fnotifiers(cl))) +
-      (n_inotifiers(cl))
-
-proc G_CCLOSURE_SWAP_DATA*(cclosure: PGClosure): int32 =
-  result = derivative_flag(cclosure)
-
-proc G_CALLBACK*(f: pointer): TGCallback =
-  result = cast[TGCallback](f)
-
-proc ref_count*(a: var TGClosure): guint =
-  result = (a.flag0 and bm_TGClosure_ref_count) shr bp_TGClosure_ref_count
-
-proc set_ref_count*(a: var TGClosure, `ref_count`: guint) =
-  a.flag0 = a.flag0 or
-      ((`ref_count` shl bp_TGClosure_ref_count) and bm_TGClosure_ref_count)
-
-proc meta_marshal*(a: PGClosure): guint =
-  result = (a . flag0 and bm_TGClosure_meta_marshal) shr
-      bp_TGClosure_meta_marshal
-
-proc set_meta_marshal*(a: var TGClosure, `meta_marshal`: guint) =
-  a.flag0 = a.flag0 or
-      ((`meta_marshal` shl bp_TGClosure_meta_marshal) and
-      bm_TGClosure_meta_marshal)
-
-proc n_guards*(a: PGClosure): guint =
-  result = (a . flag0 and bm_TGClosure_n_guards) shr bp_TGClosure_n_guards
-
-proc set_n_guards*(a: var TGClosure, `n_guards`: guint) =
-  a.flag0 = a.flag0 or
-      ((`n_guards` shl bp_TGClosure_n_guards) and bm_TGClosure_n_guards)
-
-proc n_fnotifiers*(a: PGClosure): guint =
-  result = (a . flag0 and bm_TGClosure_n_fnotifiers) shr
-      bp_TGClosure_n_fnotifiers
-
-proc set_n_fnotifiers*(a: var TGClosure, `n_fnotifiers`: guint) =
-  a.flag0 = a.flag0 or
-      ((`n_fnotifiers` shl bp_TGClosure_n_fnotifiers) and
-      bm_TGClosure_n_fnotifiers)
-
-proc n_inotifiers*(a: PGClosure): guint =
-  result = (a . flag0 and bm_TGClosure_n_inotifiers) shr
-      bp_TGClosure_n_inotifiers
-
-proc set_n_inotifiers*(a: var TGClosure, `n_inotifiers`: guint) =
-  a.flag0 = a.flag0 or
-      ((`n_inotifiers` shl bp_TGClosure_n_inotifiers) and
-      bm_TGClosure_n_inotifiers)
-
-proc in_inotify*(a: var TGClosure): guint =
-  result = (a.flag0 and bm_TGClosure_in_inotify) shr bp_TGClosure_in_inotify
-
-proc set_in_inotify*(a: var TGClosure, `in_inotify`: guint) =
-  a.flag0 = a.flag0 or
-      ((`in_inotify` shl bp_TGClosure_in_inotify) and bm_TGClosure_in_inotify)
-
-proc floating*(a: var TGClosure): guint =
-  result = (a.flag0 and bm_TGClosure_floating) shr bp_TGClosure_floating
-
-proc set_floating*(a: var TGClosure, `floating`: guint) =
-  a.flag0 = a.flag0 or
-      ((`floating` shl bp_TGClosure_floating) and bm_TGClosure_floating)
-
-proc derivative_flag*(a: PGClosure): guint =
-  result = (a . flag0 and bm_TGClosure_derivative_flag) shr
-      bp_TGClosure_derivative_flag
-
-proc set_derivative_flag*(a: var TGClosure, `derivative_flag`: guint) =
-  a.flag0 = a.flag0 or
-      ((`derivative_flag` shl bp_TGClosure_derivative_flag) and
-      bm_TGClosure_derivative_flag)
-
-proc in_marshal*(a: var TGClosure): guint =
-  result = (a.flag0 and bm_TGClosure_in_marshal) shr bp_TGClosure_in_marshal
-
-proc set_in_marshal*(a: var TGClosure, in_marshal: guint) =
-  a.flag0 = a.flag0 or
-      ((in_marshal shl bp_TGClosure_in_marshal) and bm_TGClosure_in_marshal)
-
-proc is_invalid*(a: var TGClosure): guint =
-  result = (a.flag0 and bm_TGClosure_is_invalid) shr bp_TGClosure_is_invalid
-
-proc set_is_invalid*(a: var TGClosure, is_invalid: guint) =
-  a.flag0 = a.flag0 or
-      ((is_invalid shl bp_TGClosure_is_invalid) and bm_TGClosure_is_invalid)
-
-proc g_signal_connect*(instance: gpointer, detailed_signal: cstring,
-                       c_handler: TGCallback, data: gpointer): gulong =
-  result = g_signal_connect_data(instance, detailed_signal, c_handler, data,
-                                 nil, TGConnectFlags(0))
-
-proc g_signal_connect_after*(instance: gpointer, detailed_signal: cstring,
-                             c_handler: TGCallback, data: gpointer): gulong =
-  result = g_signal_connect_data(instance, detailed_signal, c_handler, data,
-                                 nil, G_CONNECT_AFTER)
-
-proc g_signal_connect_swapped*(instance: gpointer, detailed_signal: cstring,
-                               c_handler: TGCallback, data: gpointer): gulong =
-  result = g_signal_connect_data(instance, detailed_signal, c_handler, data,
-                                 nil, G_CONNECT_SWAPPED)
-
-proc g_signal_handlers_disconnect_by_func*(instance: gpointer,
-    func, data: gpointer): guint =
-  result = g_signal_handlers_disconnect_matched(instance,
-      TGSignalMatchType(G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA), 0, 0, nil,
-      func, data)
-
-proc g_signal_handlers_block_by_func*(instance: gpointer, func, data: gpointer) =
-  discard g_signal_handlers_block_matched(instance, TGSignalMatchType(
-      G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA), 0, 0, nil, func, data)
-
-proc g_signal_handlers_unblock_by_func*(instance: gpointer, func, data: gpointer) =
-  discard g_signal_handlers_unblock_matched(instance, TGSignalMatchType(
-      G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA), 0, 0, nil, func, data)
-
-proc G_TYPE_IS_OBJECT*(theType: GType): bool =
-  result = (G_TYPE_FUNDAMENTAL(theType)) == G_TYPE_OBJECT
-
-proc G_OBJECT*(anObject: pointer): PGObject =
-  result = cast[PGObject](G_TYPE_CHECK_INSTANCE_CAST(anObject, G_TYPE_OBJECT))
-
-proc G_OBJECT_CLASS*(class: Pointer): PGObjectClass =
-  result = cast[PGObjectClass](G_TYPE_CHECK_CLASS_CAST(class, G_TYPE_OBJECT))
-
-proc G_IS_OBJECT*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, G_TYPE_OBJECT)
-
-proc G_IS_OBJECT_CLASS*(class: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(class, G_TYPE_OBJECT)
-
-proc G_OBJECT_GET_CLASS*(anObject: pointer): PGObjectClass =
-  result = cast[PGObjectClass](G_TYPE_INSTANCE_GET_CLASS(anObject, G_TYPE_OBJECT))
-
-proc G_OBJECT_TYPE*(anObject: pointer): GType =
-  result = G_TYPE_FROM_INSTANCE(anObject)
-
-proc G_OBJECT_TYPE_NAME*(anObject: pointer): cstring =
-  result = g_type_name(G_OBJECT_TYPE(anObject))
-
-proc G_OBJECT_CLASS_TYPE*(class: Pointer): GType =
-  result = G_TYPE_FROM_CLASS(class)
-
-proc G_OBJECT_CLASS_NAME*(class: Pointer): cstring =
-  result = g_type_name(G_OBJECT_CLASS_TYPE(class))
-
-proc G_VALUE_HOLDS_OBJECT*(value: Pointer): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_OBJECT)
-
-proc G_OBJECT_WARN_INVALID_PROPERTY_ID*(anObject: gpointer, property_id: gint,
-                                        pspec: gpointer) =
-  G_OBJECT_WARN_INVALID_PSPEC(anObject, "property", property_id, pspec)
-
-proc G_OBJECT_WARN_INVALID_PSPEC*(anObject: gpointer, pname: cstring,
-                                  property_id: gint, pspec: gpointer) =
-  var
-    theObject: PGObject
-    pspec2: PGParamSpec
-    property_id: guint
-  theObject = cast[PGObject](anObject)
-  pspec2 = cast[PGParamSpec](pspec)
-  property_id = (property_id)
-  write(stdout, "invalid thingy\n")
-  #g_warning("%s: invalid %s id %u for \"%s\" of type `%s\' in `%s\'", "", pname,
-  #          `property_id`, `pspec` . name,
-  #          g_type_name(G_PARAM_SPEC_TYPE(`pspec`)),
-  #          G_OBJECT_TYPE_NAME(theobject))
-
-proc G_TYPE_TYPE_PLUGIN*(): GType =
-  result = g_type_plugin_get_type()
-
-proc G_TYPE_PLUGIN*(inst: Pointer): PGTypePlugin =
-  result = PGTypePlugin(G_TYPE_CHECK_INSTANCE_CAST(inst, G_TYPE_TYPE_PLUGIN()))
-
-proc G_TYPE_PLUGIN_CLASS*(vtable: Pointer): PGTypePluginClass =
-  result = cast[PGTypePluginClass](G_TYPE_CHECK_CLASS_CAST(vtable,
-    G_TYPE_TYPE_PLUGIN()))
-
-proc G_IS_TYPE_PLUGIN*(inst: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(inst, G_TYPE_TYPE_PLUGIN())
-
-proc G_IS_TYPE_PLUGIN_CLASS*(vtable: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(vtable, G_TYPE_TYPE_PLUGIN())
-
-proc G_TYPE_PLUGIN_GET_CLASS*(inst: Pointer): PGTypePluginClass =
-  result = cast[PGTypePluginClass](G_TYPE_INSTANCE_GET_INTERFACE(inst,
-      G_TYPE_TYPE_PLUGIN()))
-
-proc G_TYPE_IS_ENUM*(theType: GType): gboolean =
-  result = (G_TYPE_FUNDAMENTAL(theType) == G_TYPE_ENUM)
-
-proc G_ENUM_CLASS*(class: pointer): PGEnumClass =
-  result = cast[PGEnumClass](G_TYPE_CHECK_CLASS_CAST(class, G_TYPE_ENUM))
-
-proc G_IS_ENUM_CLASS*(class: pointer): gboolean =
-  result = G_TYPE_CHECK_CLASS_TYPE(class, G_TYPE_ENUM)
-
-proc G_ENUM_CLASS_TYPE*(class: pointer): GType =
-  result = G_TYPE_FROM_CLASS(class)
-
-proc G_ENUM_CLASS_TYPE_NAME*(class: pointer): cstring =
-  result = g_type_name(G_ENUM_CLASS_TYPE(class))
-
-proc G_TYPE_IS_FLAGS*(theType: GType): gboolean =
-  result = (G_TYPE_FUNDAMENTAL(theType)) == G_TYPE_FLAGS
-
-proc G_FLAGS_CLASS*(class: pointer): PGFlagsClass =
-  result = cast[PGFlagsClass](G_TYPE_CHECK_CLASS_CAST(class, G_TYPE_FLAGS))
-
-proc G_IS_FLAGS_CLASS*(class: pointer): gboolean =
-  result = G_TYPE_CHECK_CLASS_TYPE(class, G_TYPE_FLAGS)
-
-proc G_FLAGS_CLASS_TYPE*(class: pointer): GType =
-  result = G_TYPE_FROM_CLASS(class)
-
-proc G_FLAGS_CLASS_TYPE_NAME*(class: pointer): cstring =
-  result = g_type_name(G_FLAGS_TYPE(cast[TAddress](class)))
-
-proc G_VALUE_HOLDS_ENUM*(value: pointer): gboolean =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_ENUM)
-
-proc G_VALUE_HOLDS_FLAGS*(value: pointer): gboolean =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_FLAGS)
-
-proc CLAMP*(x, MinX, MaxX: int): int =
-  if x < MinX:
-    result = MinX
-  elif x > MaxX:
-    result = MaxX
-  else:
-    result = x
-
-proc GPOINTER_TO_SIZE*(p: GPointer): GSize =
-  result = GSize(cast[TAddress](p))
-
-proc GSIZE_TO_POINTER*(s: GSize): GPointer =
-  result = cast[GPointer](s)
-
-proc G_VALUE_HOLDS_CHAR*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_CHAR)
-
-proc G_VALUE_HOLDS_UCHAR*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_UCHAR)
-
-proc G_VALUE_HOLDS_BOOLEAN*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_BOOLEAN)
-
-proc G_VALUE_HOLDS_INT*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_INT)
-
-proc G_VALUE_HOLDS_UINT*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_UINT)
-
-proc G_VALUE_HOLDS_LONG*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_LONG)
-
-proc G_VALUE_HOLDS_ULONG*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_ULONG)
-
-proc G_VALUE_HOLDS_INT64*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_INT64)
-
-proc G_VALUE_HOLDS_UINT64*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_UINT64)
-
-proc G_VALUE_HOLDS_FLOAT*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_FLOAT)
-
-proc G_VALUE_HOLDS_DOUBLE*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_DOUBLE)
-
-proc G_VALUE_HOLDS_STRING*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_STRING)
-
-proc G_VALUE_HOLDS_POINTER*(value: PGValue): bool =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_POINTER)
-
-proc G_TYPE_IS_BOXED*(theType: GType): gboolean =
-  result = (G_TYPE_FUNDAMENTAL(theType)) == G_TYPE_BOXED
-
-proc G_VALUE_HOLDS_BOXED*(value: PGValue): gboolean =
-  result = G_TYPE_CHECK_VALUE_TYPE(value, G_TYPE_BOXED)
-
-proc G_TYPE_CLOSURE*(): GType =
-  result = g_closure_get_type()
-
-proc G_TYPE_VALUE*(): GType =
-  result = g_value_get_type()
-
-proc G_TYPE_VALUE_ARRAY*(): GType =
-  result = g_value_array_get_type()
-
-proc G_TYPE_GSTRING*(): GType =
-  result = g_gstring_get_type()
diff --git a/lib/wrappers/gtk/gtk2.nim b/lib/wrappers/gtk/gtk2.nim
index e7c5be7be..558debd59 100755
--- a/lib/wrappers/gtk/gtk2.nim
+++ b/lib/wrappers/gtk/gtk2.nim
@@ -1,14 +1,13 @@
 {.deadCodeElim: on.}
-
-import
+import 
   glib2, atk, pango, gdk2pixbuf, gdk2
 
-when defined(win32):
-  const
-    gtklib = "libgtk-win32-2.0-0.dll"
-elif defined(darwin):
-  const
-    gtklib = "gtk-x11-2.0"
+when defined(win32): 
+  const 
+    lib = "libgtk-win32-2.0-0.dll"
+elif defined(darwin): 
+  const 
+    lib = "gtk-x11-2.0"
   # linklib gtk-x11-2.0
   # linklib gdk-x11-2.0
   # linklib pango-1.0.0
@@ -16,158 +15,156 @@ elif defined(darwin):
   # linklib gobject-2.0.0
   # linklib gdk_pixbuf-2.0.0
   # linklib atk-1.0.0
-else:
-  const
-    gtklib = "libgtk-x11-2.0.so"
-type
-  PPPchar* = PPPgchar
-
-const
-  GTK_MAX_COMPOSE_LEN* = 7
-
-type
-  PGtkObject* = ptr TGtkObject
-  PPGtkObject* = ptr PGtkObject
-  PGtkArg* = ptr TGtkArg
-  PGtkType* = ptr TGtkType
-  TGtkType* = GType
-  PGtkWidget* = ptr TGtkWidget
-  PGtkMisc* = ptr TGtkMisc
-  PGtkLabel* = ptr TGtkLabel
-  PGtkMenu* = ptr TGtkMenu
-  PGtkAnchorType* = ptr TGtkAnchorType
-  TGtkAnchorType* = int32
-  PGtkArrowType* = ptr TGtkArrowType
-  TGtkArrowType* = int32
-  PGtkAttachOptions* = ptr TGtkAttachOptions
-  TGtkAttachOptions* = int32
-  PGtkButtonBoxStyle* = ptr TGtkButtonBoxStyle
-  TGtkButtonBoxStyle* = int32
-  PGtkCurveType* = ptr TGtkCurveType
-  TGtkCurveType* = int32
-  PGtkDeleteType* = ptr TGtkDeleteType
-  TGtkDeleteType* = int32
-  PGtkDirectionType* = ptr TGtkDirectionType
-  TGtkDirectionType* = int32
-  PGtkExpanderStyle* = ptr TGtkExpanderStyle
-  TGtkExpanderStyle* = int32
-  PPGtkIconSize* = ptr PGtkIconSize
-  PGtkIconSize* = ptr TGtkIconSize
-  TGtkIconSize* = int32
-  PGtkTextDirection* = ptr TGtkTextDirection
-  TGtkTextDirection* = int32
-  PGtkJustification* = ptr TGtkJustification
-  TGtkJustification* = int32
-  PGtkMenuDirectionType* = ptr TGtkMenuDirectionType
-  TGtkMenuDirectionType* = int32
-  PGtkMetricType* = ptr TGtkMetricType
-  TGtkMetricType* = int32
-  PGtkMovementStep* = ptr TGtkMovementStep
-  TGtkMovementStep* = int32
-  PGtkOrientation* = ptr TGtkOrientation
-  TGtkOrientation* = int32
-  PGtkCornerType* = ptr TGtkCornerType
-  TGtkCornerType* = int32
-  PGtkPackType* = ptr TGtkPackType
-  TGtkPackType* = int32
-  PGtkPathPriorityType* = ptr TGtkPathPriorityType
-  TGtkPathPriorityType* = int32
-  PGtkPathType* = ptr TGtkPathType
-  TGtkPathType* = int32
-  PGtkPolicyType* = ptr TGtkPolicyType
-  TGtkPolicyType* = int32
-  PGtkPositionType* = ptr TGtkPositionType
-  TGtkPositionType* = int32
-  PGtkReliefStyle* = ptr TGtkReliefStyle
-  TGtkReliefStyle* = int32
-  PGtkResizeMode* = ptr TGtkResizeMode
-  TGtkResizeMode* = int32
-  PGtkScrollType* = ptr TGtkScrollType
-  TGtkScrollType* = int32
-  PGtkSelectionMode* = ptr TGtkSelectionMode
-  TGtkSelectionMode* = int32
-  PGtkShadowType* = ptr TGtkShadowType
-  TGtkShadowType* = int32
-  PGtkStateType* = ptr TGtkStateType
-  TGtkStateType* = int32
-  PGtkSubmenuDirection* = ptr TGtkSubmenuDirection
-  TGtkSubmenuDirection* = int32
-  PGtkSubmenuPlacement* = ptr TGtkSubmenuPlacement
-  TGtkSubmenuPlacement* = int32
-  PGtkToolbarStyle* = ptr TGtkToolbarStyle
-  TGtkToolbarStyle* = int32
-  PGtkUpdateType* = ptr TGtkUpdateType
-  TGtkUpdateType* = int32
-  PGtkVisibility* = ptr TGtkVisibility
-  TGtkVisibility* = int32
-  PGtkWindowPosition* = ptr TGtkWindowPosition
-  TGtkWindowPosition* = int32
-  PGtkWindowType* = ptr TGtkWindowType
-  TGtkWindowType* = int32
-  PGtkWrapMode* = ptr TGtkWrapMode
-  TGtkWrapMode* = int32
-  PGtkSortType* = ptr TGtkSortType
-  TGtkSortType* = int32
-  PGtkStyle* = ptr TGtkStyle
-  PPGtkTreeModel* = ptr PGtkTreeModel
-  PGtkTreeModel* = pointer
-  PGtkTreePath* = pointer
-  PGtkTreeIter* = ptr TGtkTreeIter
-  PGtkSelectionData* = ptr TGtkSelectionData
-  PGtkTextTagTable* = ptr TGtkTextTagTable
-  PGtkTextBTreeNode* = pointer
-  PGtkTextBTree* = pointer
-  PGtkTextLine* = ptr TGtkTextLine
-  PGtkTreeViewColumn* = ptr TGtkTreeViewColumn
-  PGtkTreeView* = ptr TGtkTreeView
-  TGtkTreeViewColumnDropFunc* = proc (tree_view: PGtkTreeView,
-                                      column: PGtkTreeViewColumn,
-                                      prev_column: PGtkTreeViewColumn,
-                                      next_column: PGtkTreeViewColumn,
-                                      data: gpointer): gboolean{.cdecl.}
-  TGtkTreeViewMappingFunc* = proc (tree_view: PGtkTreeView, path: PGtkTreePath,
-                                   user_data: gpointer){.cdecl.}
-  TGtkTreeViewSearchEqualFunc* = proc (model: PGtkTreeModel, column: gint,
-                                       key: cstring, iter: PGtkTreeIter,
-                                       search_data: gpointer): gboolean{.cdecl.}
-  TGtkTreeDestroyCountFunc* = proc (tree_view: PGtkTreeView, path: PGtkTreePath,
-                                    children: gint, user_data: gpointer){.cdecl.}
-  PGtkTreeViewDropPosition* = ptr TGtkTreeViewDropPosition
-  TGtkTreeViewDropPosition* = enum
-    GTK_TREE_VIEW_DROP_BEFORE, GTK_TREE_VIEW_DROP_AFTER,
-    GTK_TREE_VIEW_DROP_INTO_OR_BEFORE, GTK_TREE_VIEW_DROP_INTO_OR_AFTER
-  PGtkObjectFlags* = ptr TGtkObjectFlags
-  TGtkObjectFlags* = int32
-  TGtkObject* = object of TGObject
+else: 
+  const 
+    lib = "libgtk-x11-2.0.so"
+
+const 
+  MAX_COMPOSE_LEN* = 7
+
+type 
+  PObject* = ptr TObject
+  PPGtkObject* = ptr PObject
+  PArg* = ptr TArg
+  PType* = ptr TType
+  TType* = GType
+  PWidget* = ptr TWidget
+  PMisc* = ptr TMisc
+  PLabel* = ptr TLabel
+  PMenu* = ptr TMenu
+  PAnchorType* = ptr TAnchorType
+  TAnchorType* = int32
+  PArrowType* = ptr TArrowType
+  TArrowType* = int32
+  PAttachOptions* = ptr TAttachOptions
+  TAttachOptions* = int32
+  PButtonBoxStyle* = ptr TButtonBoxStyle
+  TButtonBoxStyle* = int32
+  PCurveType* = ptr TCurveType
+  TCurveType* = int32
+  PDeleteType* = ptr TDeleteType
+  TDeleteType* = int32
+  PDirectionType* = ptr TDirectionType
+  TDirectionType* = int32
+  PExpanderStyle* = ptr TExpanderStyle
+  TExpanderStyle* = int32
+  PPGtkIconSize* = ptr PIconSize
+  PIconSize* = ptr TIconSize
+  TIconSize* = int32
+  PTextDirection* = ptr TTextDirection
+  TTextDirection* = int32
+  PJustification* = ptr TJustification
+  TJustification* = int32
+  PMenuDirectionType* = ptr TMenuDirectionType
+  TMenuDirectionType* = int32
+  PMetricType* = ptr TMetricType
+  TMetricType* = int32
+  PMovementStep* = ptr TMovementStep
+  TMovementStep* = int32
+  POrientation* = ptr TOrientation
+  TOrientation* = int32
+  PCornerType* = ptr TCornerType
+  TCornerType* = int32
+  PPackType* = ptr TPackType
+  TPackType* = int32
+  PPathPriorityType* = ptr TPathPriorityType
+  TPathPriorityType* = int32
+  PPathType* = ptr TPathType
+  TPathType* = int32
+  PPolicyType* = ptr TPolicyType
+  TPolicyType* = int32
+  PPositionType* = ptr TPositionType
+  TPositionType* = int32
+  PReliefStyle* = ptr TReliefStyle
+  TReliefStyle* = int32
+  PResizeMode* = ptr TResizeMode
+  TResizeMode* = int32
+  PScrollType* = ptr TScrollType
+  TScrollType* = int32
+  PSelectionMode* = ptr TSelectionMode
+  TSelectionMode* = int32
+  PShadowType* = ptr TShadowType
+  TShadowType* = int32
+  PStateType* = ptr TStateType
+  TStateType* = int32
+  PSubmenuDirection* = ptr TSubmenuDirection
+  TSubmenuDirection* = int32
+  PSubmenuPlacement* = ptr TSubmenuPlacement
+  TSubmenuPlacement* = int32
+  PToolbarStyle* = ptr TToolbarStyle
+  TToolbarStyle* = int32
+  PUpdateType* = ptr TUpdateType
+  TUpdateType* = int32
+  PVisibility* = ptr TVisibility
+  TVisibility* = int32
+  PWindowPosition* = ptr TWindowPosition
+  TWindowPosition* = int32
+  PWindowType* = ptr TWindowType
+  TWindowType* = int32
+  PWrapMode* = ptr TWrapMode
+  TWrapMode* = int32
+  PSortType* = ptr TSortType
+  TSortType* = int32
+  PStyle* = ptr TStyle
+  PPGtkTreeModel* = ptr PTreeModel
+  PTreeModel* = pointer
+  PTreePath* = pointer
+  PTreeIter* = ptr TTreeIter
+  PSelectionData* = ptr TSelectionData
+  PTextTagTable* = ptr TTextTagTable
+  PTextBTreeNode* = pointer
+  PTextBTree* = pointer
+  PTextLine* = ptr TTextLine
+  PTreeViewColumn* = ptr TTreeViewColumn
+  PTreeView* = ptr TTreeView
+  TTreeViewColumnDropFunc* = proc (tree_view: PTreeView, 
+                                   column: PTreeViewColumn, 
+                                   prev_column: PTreeViewColumn, 
+                                   next_column: PTreeViewColumn, data: gpointer): gboolean{.
+      cdecl.}
+  TTreeViewMappingFunc* = proc (tree_view: PTreeView, path: PTreePath, 
+                                user_data: gpointer){.cdecl.}
+  TTreeViewSearchEqualFunc* = proc (model: PTreeModel, column: gint, 
+                                    key: cstring, iter: PTreeIter, 
+                                    search_data: gpointer): gboolean{.cdecl.}
+  TTreeDestroyCountFunc* = proc (tree_view: PTreeView, path: PTreePath, 
+                                 children: gint, user_data: gpointer){.cdecl.}
+  PTreeViewDropPosition* = ptr TTreeViewDropPosition
+  TTreeViewDropPosition* = enum 
+    TREE_VIEW_DROP_BEFORE, TREE_VIEW_DROP_AFTER, TREE_VIEW_DROP_INTO_OR_BEFORE, 
+    TREE_VIEW_DROP_INTO_OR_AFTER
+  PObjectFlags* = ptr TObjectFlags
+  TObjectFlags* = int32
+  TObject* = object of TGObject
     flags*: guint32
 
-  PGtkObjectClass* = ptr TGtkObjectClass
-  TGtkObjectClass* = object of TGObjectClass
-    set_arg*: proc (anObject: PGtkObject, arg: PGtkArg, arg_id: guint){.cdecl.}
-    get_arg*: proc (anObject: PGtkObject, arg: PGtkArg, arg_id: guint){.cdecl.}
-    destroy*: proc (anObject: PGtkObject){.cdecl.}
-
-  PGtkFundamentalType* = ptr TGtkFundamentalType
-  TGtkFundamentalType* = GType
-  TGtkFunction* = proc (data: gpointer): gboolean{.cdecl.}
-  TGtkDestroyNotify* = proc (data: gpointer){.cdecl.}
-  TGtkCallbackMarshal* = proc (anObject: PGtkObject, data: gpointer,
-                               n_args: guint, args: PGtkArg){.cdecl.}
-  TGtkSignalFuncProc* = proc ()
-  TGtkSignalFunc* = proc (para1: TGtkSignalFuncProc){.cdecl.}
-  PGtkSignalMarshaller* = ptr TGtkSignalMarshaller
-  TGtkSignalMarshaller* = TGSignalCMarshaller
-  TGtkArgSignalData* {.final, pure.} = object
-    f*: TGtkSignalFunc
+  PObjectClass* = ptr TObjectClass
+  TObjectClass* = object of TGObjectClass
+    set_arg*: proc (anObject: PObject, arg: PArg, arg_id: guint){.cdecl.}
+    get_arg*: proc (anObject: PObject, arg: PArg, arg_id: guint){.cdecl.}
+    destroy*: proc (anObject: PObject){.cdecl.}
+
+  PFundamentalType* = ptr TFundamentalType
+  TFundamentalType* = GType
+  TFunction* = proc (data: gpointer): gboolean{.cdecl.}
+  TDestroyNotify* = proc (data: gpointer){.cdecl.}
+  TCallbackMarshal* = proc (anObject: PObject, data: gpointer, n_args: guint, 
+                            args: PArg){.cdecl.}
+  TSignalFuncProc* = proc ()
+  TSignalFunc* = proc (para1: TSignalFuncProc){.cdecl.}
+  PSignalMarshaller* = ptr TSignalMarshaller
+  TSignalMarshaller* = TGSignalCMarshaller
+  TArgSignalData*{.final, pure.} = object 
+    f*: TSignalFunc
     d*: gpointer
 
-  TGtkArg* {.final, pure.} = object
-    `type`*: TGtkType
+  TArg*{.final, pure.} = object 
+    `type`*: TType
     name*: cstring
     d*: gdouble               # was a union type
-
-  PGtkTypeInfo* = ptr TGtkTypeInfo
-  TGtkTypeInfo* {.final, pure.} = object
+  
+  PTypeInfo* = ptr TTypeInfo
+  TTypeInfo*{.final, pure.} = object 
     type_name*: cstring
     object_size*: guint
     class_size*: guint
@@ -176,335 +173,323 @@ type
     reserved_1*: gpointer
     reserved_2*: gpointer
     base_class_init_func*: pointer #TGtkClassInitFunc
-
-  PGtkEnumValue* = ptr TGtkEnumValue
-  TGtkEnumValue* = TGEnumValue
-  PGtkFlagValue* = ptr TGtkFlagValue
-  TGtkFlagValue* = TGFlagsValue
-  PGtkWidgetFlags* = ptr TGtkWidgetFlags
-  TGtkWidgetFlags* = int32
-  PGtkWidgetHelpType* = ptr TGtkWidgetHelpType
-  TGtkWidgetHelpType* = enum
-    GTK_WIDGET_HELP_TOOLTIP, GTK_WIDGET_HELP_WHATS_THIS
-  PGtkAllocation* = ptr TGtkAllocation
-  TGtkAllocation* = TGdkRectangle
-  TGtkCallback* = proc (widget: PGtkWidget, data: gpointer){.cdecl.}
-  PGtkRequisition* = ptr TGtkRequisition
-  TGtkRequisition* {.final, pure.} = object
+  
+  PEnumValue* = ptr TEnumValue
+  TEnumValue* = TGEnumValue
+  PFlagValue* = ptr TFlagValue
+  TFlagValue* = TGFlagsValue
+  PWidgetFlags* = ptr TWidgetFlags
+  TWidgetFlags* = int32
+  PWidgetHelpType* = ptr TWidgetHelpType
+  TWidgetHelpType* = enum 
+    WIDGET_HELP_TOOLTIP, WIDGET_HELP_WHATS_THIS
+  PAllocation* = ptr TAllocation
+  TAllocation* = Gdk2.TRectangle
+  TCallback* = proc (widget: PWidget, data: gpointer){.cdecl.}
+  PRequisition* = ptr TRequisition
+  TRequisition*{.final, pure.} = object 
     width*: gint
     height*: gint
 
-  TGtkWidget* = object of TGtkObject
+  TWidget* = object of TObject
     private_flags*: guint16
     state*: guint8
     saved_state*: guint8
     name*: cstring
-    style*: PGtkStyle
-    requisition*: TGtkRequisition
-    allocation*: TGtkAllocation
-    window*: PGdkWindow
-    parent*: PGtkWidget
-
-  PGtkWidgetClass* = ptr TGtkWidgetClass
-  TGtkWidgetClass* = object of TGtkObjectClass
+    style*: PStyle
+    requisition*: TRequisition
+    allocation*: TAllocation
+    window*: Gdk2.PWindow
+    parent*: PWidget
+
+  PWidgetClass* = ptr TWidgetClass
+  TWidgetClass* = object of TObjectClass
     activate_signal*: guint
     set_scroll_adjustments_signal*: guint
-    dispatch_child_properties_changed*: proc (widget: PGtkWidget,
-        n_pspecs: guint, pspecs: PPGParamSpec){.cdecl.}
-    show*: proc (widget: PGtkWidget){.cdecl.}
-    show_all*: proc (widget: PGtkWidget){.cdecl.}
-    hide*: proc (widget: PGtkWidget){.cdecl.}
-    hide_all*: proc (widget: PGtkWidget){.cdecl.}
-    map*: proc (widget: PGtkWidget){.cdecl.}
-    unmap*: proc (widget: PGtkWidget){.cdecl.}
-    realize*: proc (widget: PGtkWidget){.cdecl.}
-    unrealize*: proc (widget: PGtkWidget){.cdecl.}
-    size_request*: proc (widget: PGtkWidget, requisition: PGtkRequisition){.
-        cdecl.}
-    size_allocate*: proc (widget: PGtkWidget, allocation: PGtkAllocation){.cdecl.}
-    state_changed*: proc (widget: PGtkWidget, previous_state: TGtkStateType){.
-        cdecl.}
-    parent_set*: proc (widget: PGtkWidget, previous_parent: PGtkWidget){.cdecl.}
-    hierarchy_changed*: proc (widget: PGtkWidget, previous_toplevel: PGtkWidget){.
+    dispatch_child_properties_changed*: proc (widget: PWidget, n_pspecs: guint, 
+        pspecs: PPGParamSpec){.cdecl.}
+    show*: proc (widget: PWidget){.cdecl.}
+    show_all*: proc (widget: PWidget){.cdecl.}
+    hide*: proc (widget: PWidget){.cdecl.}
+    hide_all*: proc (widget: PWidget){.cdecl.}
+    map*: proc (widget: PWidget){.cdecl.}
+    unmap*: proc (widget: PWidget){.cdecl.}
+    realize*: proc (widget: PWidget){.cdecl.}
+    unrealize*: proc (widget: PWidget){.cdecl.}
+    size_request*: proc (widget: PWidget, requisition: PRequisition){.cdecl.}
+    size_allocate*: proc (widget: PWidget, allocation: PAllocation){.cdecl.}
+    state_changed*: proc (widget: PWidget, previous_state: TStateType){.cdecl.}
+    parent_set*: proc (widget: PWidget, previous_parent: PWidget){.cdecl.}
+    hierarchy_changed*: proc (widget: PWidget, previous_toplevel: PWidget){.
         cdecl.}
-    style_set*: proc (widget: PGtkWidget, previous_style: PGtkStyle){.cdecl.}
-    direction_changed*: proc (widget: PGtkWidget,
-                              previous_direction: TGtkTextDirection){.cdecl.}
-    grab_notify*: proc (widget: PGtkWidget, was_grabbed: gboolean){.cdecl.}
-    child_notify*: proc (widget: PGtkWidget, pspec: PGParamSpec){.cdecl.}
-    mnemonic_activate*: proc (widget: PGtkWidget, group_cycling: gboolean): gboolean{.
+    style_set*: proc (widget: PWidget, previous_style: PStyle){.cdecl.}
+    direction_changed*: proc (widget: PWidget, 
+                              previous_direction: TTextDirection){.cdecl.}
+    grab_notify*: proc (widget: PWidget, was_grabbed: gboolean){.cdecl.}
+    child_notify*: proc (widget: PWidget, pspec: PGParamSpec){.cdecl.}
+    mnemonic_activate*: proc (widget: PWidget, group_cycling: gboolean): gboolean{.
         cdecl.}
-    grab_focus*: proc (widget: PGtkWidget){.cdecl.}
-    focus*: proc (widget: PGtkWidget, direction: TGtkDirectionType): gboolean{.
+    grab_focus*: proc (widget: PWidget){.cdecl.}
+    focus*: proc (widget: PWidget, direction: TDirectionType): gboolean{.cdecl.}
+    event*: proc (widget: PWidget, event: Gdk2.PEvent): gboolean{.cdecl.}
+    button_press_event*: proc (widget: PWidget, event: PEventButton): gboolean{.
         cdecl.}
-    event*: proc (widget: PGtkWidget, event: PGdkEvent): gboolean{.cdecl.}
-    button_press_event*: proc (widget: PGtkWidget, event: PGdkEventButton): gboolean{.
+    button_release_event*: proc (widget: PWidget, event: PEventButton): gboolean{.
         cdecl.}
-    button_release_event*: proc (widget: PGtkWidget, event: PGdkEventButton): gboolean{.
+    scroll_event*: proc (widget: PWidget, event: PEventScroll): gboolean{.
         cdecl.}
-    scroll_event*: proc (widget: PGtkWidget, event: PGdkEventScroll): gboolean{.
+    motion_notify_event*: proc (widget: PWidget, event: PEventMotion): gboolean{.
         cdecl.}
-    motion_notify_event*: proc (widget: PGtkWidget, event: PGdkEventMotion): gboolean{.
+    delete_event*: proc (widget: PWidget, event: PEventAny): gboolean{.cdecl.}
+    destroy_event*: proc (widget: PWidget, event: PEventAny): gboolean{.cdecl.}
+    expose_event*: proc (widget: PWidget, event: PEventExpose): gboolean{.
         cdecl.}
-    delete_event*: proc (widget: PGtkWidget, event: PGdkEventAny): gboolean{.
+    key_press_event*: proc (widget: PWidget, event: PEventKey): gboolean{.
         cdecl.}
-    destroy_event*: proc (widget: PGtkWidget, event: PGdkEventAny): gboolean{.
+    key_release_event*: proc (widget: PWidget, event: PEventKey): gboolean{.
         cdecl.}
-    expose_event*: proc (widget: PGtkWidget, event: PGdkEventExpose): gboolean{.
+    enter_notify_event*: proc (widget: PWidget, event: PEventCrossing): gboolean{.
         cdecl.}
-    key_press_event*: proc (widget: PGtkWidget, event: PGdkEventKey): gboolean{.
+    leave_notify_event*: proc (widget: PWidget, event: PEventCrossing): gboolean{.
         cdecl.}
-    key_release_event*: proc (widget: PGtkWidget, event: PGdkEventKey): gboolean{.
+    configure_event*: proc (widget: PWidget, event: PEventConfigure): gboolean{.
         cdecl.}
-    enter_notify_event*: proc (widget: PGtkWidget, event: PGdkEventCrossing): gboolean{.
+    focus_in_event*: proc (widget: PWidget, event: PEventFocus): gboolean{.
         cdecl.}
-    leave_notify_event*: proc (widget: PGtkWidget, event: PGdkEventCrossing): gboolean{.
+    focus_out_event*: proc (widget: PWidget, event: PEventFocus): gboolean{.
         cdecl.}
-    configure_event*: proc (widget: PGtkWidget, event: PGdkEventConfigure): gboolean{.
+    map_event*: proc (widget: PWidget, event: PEventAny): gboolean{.cdecl.}
+    unmap_event*: proc (widget: PWidget, event: PEventAny): gboolean{.cdecl.}
+    property_notify_event*: proc (widget: PWidget, event: PEventProperty): gboolean{.
         cdecl.}
-    focus_in_event*: proc (widget: PGtkWidget, event: PGdkEventFocus): gboolean{.
+    selection_clear_event*: proc (widget: PWidget, event: PEventSelection): gboolean{.
         cdecl.}
-    focus_out_event*: proc (widget: PGtkWidget, event: PGdkEventFocus): gboolean{.
+    selection_request_event*: proc (widget: PWidget, event: PEventSelection): gboolean{.
         cdecl.}
-    map_event*: proc (widget: PGtkWidget, event: PGdkEventAny): gboolean{.cdecl.}
-    unmap_event*: proc (widget: PGtkWidget, event: PGdkEventAny): gboolean{.
+    selection_notify_event*: proc (widget: PWidget, event: PEventSelection): gboolean{.
         cdecl.}
-    property_notify_event*: proc (widget: PGtkWidget, event: PGdkEventProperty): gboolean{.
+    proximity_in_event*: proc (widget: PWidget, event: PEventProximity): gboolean{.
         cdecl.}
-    selection_clear_event*: proc (widget: PGtkWidget, event: PGdkEventSelection): gboolean{.
+    proximity_out_event*: proc (widget: PWidget, event: PEventProximity): gboolean{.
         cdecl.}
-    selection_request_event*: proc (widget: PGtkWidget,
-                                    event: PGdkEventSelection): gboolean{.cdecl.}
-    selection_notify_event*: proc (widget: PGtkWidget, event: PGdkEventSelection): gboolean{.
+    visibility_notify_event*: proc (widget: PWidget, event: PEventVisibility): gboolean{.
         cdecl.}
-    proximity_in_event*: proc (widget: PGtkWidget, event: PGdkEventProximity): gboolean{.
+    client_event*: proc (widget: PWidget, event: PEventClient): gboolean{.
         cdecl.}
-    proximity_out_event*: proc (widget: PGtkWidget, event: PGdkEventProximity): gboolean{.
+    no_expose_event*: proc (widget: PWidget, event: PEventAny): gboolean{.
         cdecl.}
-    visibility_notify_event*: proc (widget: PGtkWidget,
-                                    event: PGdkEventVisibility): gboolean{.cdecl.}
-    client_event*: proc (widget: PGtkWidget, event: PGdkEventClient): gboolean{.
+    window_state_event*: proc (widget: PWidget, event: PEventWindowState): gboolean{.
         cdecl.}
-    no_expose_event*: proc (widget: PGtkWidget, event: PGdkEventAny): gboolean{.
-        cdecl.}
-    window_state_event*: proc (widget: PGtkWidget, event: PGdkEventWindowState): gboolean{.
-        cdecl.}
-    selection_get*: proc (widget: PGtkWidget, selection_data: PGtkSelectionData,
+    selection_get*: proc (widget: PWidget, selection_data: PSelectionData, 
                           info: guint, time: guint){.cdecl.}
-    selection_received*: proc (widget: PGtkWidget,
-                               selection_data: PGtkSelectionData, time: guint){.
-        cdecl.}
-    drag_begin*: proc (widget: PGtkWidget, context: PGdkDragContext){.cdecl.}
-    drag_end*: proc (widget: PGtkWidget, context: PGdkDragContext){.cdecl.}
-    drag_data_get*: proc (widget: PGtkWidget, context: PGdkDragContext,
-                          selection_data: PGtkSelectionData, info: guint,
+    selection_received*: proc (widget: PWidget, selection_data: PSelectionData, 
+                               time: guint){.cdecl.}
+    drag_begin*: proc (widget: PWidget, context: PDragContext){.cdecl.}
+    drag_end*: proc (widget: PWidget, context: PDragContext){.cdecl.}
+    drag_data_get*: proc (widget: PWidget, context: PDragContext, 
+                          selection_data: PSelectionData, info: guint, 
                           time: guint){.cdecl.}
-    drag_data_delete*: proc (widget: PGtkWidget, context: PGdkDragContext){.
-        cdecl.}
-    drag_leave*: proc (widget: PGtkWidget, context: PGdkDragContext, time: guint){.
+    drag_data_delete*: proc (widget: PWidget, context: PDragContext){.cdecl.}
+    drag_leave*: proc (widget: PWidget, context: PDragContext, time: guint){.
         cdecl.}
-    drag_motion*: proc (widget: PGtkWidget, context: PGdkDragContext, x: gint,
+    drag_motion*: proc (widget: PWidget, context: PDragContext, x: gint, 
                         y: gint, time: guint): gboolean{.cdecl.}
-    drag_drop*: proc (widget: PGtkWidget, context: PGdkDragContext, x: gint,
+    drag_drop*: proc (widget: PWidget, context: PDragContext, x: gint, 
                       y: gint, time: guint): gboolean{.cdecl.}
-    drag_data_received*: proc (widget: PGtkWidget, context: PGdkDragContext,
-                               x: gint, y: gint,
-                               selection_data: PGtkSelectionData, info: guint,
-                               time: guint){.cdecl.}
-    popup_menu*: proc (widget: PGtkWidget): gboolean{.cdecl.}
-    show_help*: proc (widget: PGtkWidget, help_type: TGtkWidgetHelpType): gboolean{.
+    drag_data_received*: proc (widget: PWidget, context: PDragContext, 
+                               x: gint, y: gint, selection_data: PSelectionData, 
+                               info: guint, time: guint){.cdecl.}
+    popup_menu*: proc (widget: PWidget): gboolean{.cdecl.}
+    show_help*: proc (widget: PWidget, help_type: TWidgetHelpType): gboolean{.
         cdecl.}
-    get_accessible*: proc (widget: PGtkWidget): PAtkObject{.cdecl.}
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
-    gtk_reserved5*: proc (){.cdecl.}
-    gtk_reserved6*: proc (){.cdecl.}
-    gtk_reserved7*: proc (){.cdecl.}
-    gtk_reserved8*: proc (){.cdecl.}
-
-  PGtkWidgetAuxInfo* = ptr TGtkWidgetAuxInfo
-  TGtkWidgetAuxInfo* {.final, pure.} = object
+    get_accessible*: proc (widget: PWidget): atk.PObject{.cdecl.}
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
+    reserved5*: proc (){.cdecl.}
+    reserved6*: proc (){.cdecl.}
+    reserved7*: proc (){.cdecl.}
+    reserved8*: proc (){.cdecl.}
+
+  PWidgetAuxInfo* = ptr TWidgetAuxInfo
+  TWidgetAuxInfo*{.final, pure.} = object 
     x*: gint
     y*: gint
     width*: gint
     height*: gint
     flag0*: guint16
 
-  PGtkWidgetShapeInfo* = ptr TGtkWidgetShapeInfo
-  TGtkWidgetShapeInfo* {.final, pure.} = object
+  PWidgetShapeInfo* = ptr TWidgetShapeInfo
+  TWidgetShapeInfo*{.final, pure.} = object 
     offset_x*: gint16
     offset_y*: gint16
-    shape_mask*: PGdkBitmap
+    shape_mask*: gdk2.PBitmap
 
-  TGtkMisc* = object of TGtkWidget
+  TMisc* = object of TWidget
     xalign*: gfloat
     yalign*: gfloat
     xpad*: guint16
     ypad*: guint16
 
-  PGtkMiscClass* = ptr TGtkMiscClass
-  TGtkMiscClass* = object of TGtkWidgetClass
-
-  PGtkAccelFlags* = ptr TGtkAccelFlags
-  TGtkAccelFlags* = int32
-  PGtkAccelGroup* = ptr TGtkAccelGroup
-  PGtkAccelGroupEntry* = ptr TGtkAccelGroupEntry
-  TGtkAccelGroupActivate* = proc (accel_group: PGtkAccelGroup,
-                                  acceleratable: PGObject, keyval: guint,
-                                  modifier: TGdkModifierType): gboolean{.cdecl.}
-  TGtkAccelGroup* = object of TGObject
+  PMiscClass* = ptr TMiscClass
+  TMiscClass* = object of TWidgetClass
+  PAccelFlags* = ptr TAccelFlags
+  TAccelFlags* = int32
+  PAccelGroup* = ptr TAccelGroup
+  PAccelGroupEntry* = ptr TAccelGroupEntry
+  TAccelGroupActivate* = proc (accel_group: PAccelGroup, 
+                               acceleratable: PGObject, keyval: guint, 
+                               modifier: gdk2.TModifierType): gboolean{.cdecl.}
+  TAccelGroup* = object of TGObject
     lock_count*: guint
-    modifier_mask*: TGdkModifierType
+    modifier_mask*: gdk2.TModifierType
     acceleratables*: PGSList
     n_accels*: guint
-    priv_accels*: PGtkAccelGroupEntry
+    priv_accels*: PAccelGroupEntry
 
-  PGtkAccelGroupClass* = ptr TGtkAccelGroupClass
-  TGtkAccelGroupClass* = object of TGObjectClass
-    accel_changed*: proc (accel_group: PGtkAccelGroup, keyval: guint,
-                          modifier: TGdkModifierType, accel_closure: PGClosure){.
+  PAccelGroupClass* = ptr TAccelGroupClass
+  TAccelGroupClass* = object of TGObjectClass
+    accel_changed*: proc (accel_group: PAccelGroup, keyval: guint, 
+                          modifier: gdk2.TModifierType, accel_closure: PGClosure){.
         cdecl.}
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
 
-  PGtkAccelKey* = ptr TGtkAccelKey
-  TGtkAccelKey* {.final, pure.} = object
+  PAccelKey* = ptr TAccelKey
+  TAccelKey*{.final, pure.} = object 
     accel_key*: guint
-    accel_mods*: TGdkModifierType
+    accel_mods*: gdk2.TModifierType
     flag0*: guint16
 
-  TGtkAccelGroupEntry* {.final, pure.} = object
-    key*: TGtkAccelKey
+  TAccelGroupEntry*{.final, pure.} = object 
+    key*: TAccelKey
     closure*: PGClosure
     accel_path_quark*: TGQuark
 
-  Tgtk_accel_group_find_func* = proc (key: PGtkAccelKey, closure: PGClosure,
-                                      data: gpointer): gboolean{.cdecl.}
-  PGtkContainer* = ptr TGtkContainer
-  TGtkContainer* = object of TGtkWidget
-    focus_child*: PGtkWidget
-    GtkContainer_flag0*: int32
-
-  PGtkContainerClass* = ptr TGtkContainerClass
-  TGtkContainerClass* = object of TGtkWidgetClass
-    add*: proc (container: PGtkContainer, widget: PGtkWidget){.cdecl.}
-    remove*: proc (container: PGtkContainer, widget: PGtkWidget){.cdecl.}
-    check_resize*: proc (container: PGtkContainer){.cdecl.}
-    forall*: proc (container: PGtkContainer, include_internals: gboolean,
-                   callback: TGtkCallback, callback_data: gpointer){.cdecl.}
-    set_focus_child*: proc (container: PGtkContainer, widget: PGtkWidget){.cdecl.}
-    child_type*: proc (container: PGtkContainer): TGtkType{.cdecl.}
-    composite_name*: proc (container: PGtkContainer, child: PGtkWidget): cstring{.
+  Taccel_group_find_func* = proc (key: PAccelKey, closure: PGClosure, 
+                                  data: gpointer): gboolean{.cdecl.}
+  PContainer* = ptr TContainer
+  TContainer* = object of TWidget
+    focus_child*: PWidget
+    Container_flag0*: int32
+
+  PContainerClass* = ptr TContainerClass
+  TContainerClass* = object of TWidgetClass
+    add*: proc (container: PContainer, widget: PWidget){.cdecl.}
+    remove*: proc (container: PContainer, widget: PWidget){.cdecl.}
+    check_resize*: proc (container: PContainer){.cdecl.}
+    forall*: proc (container: PContainer, include_internals: gboolean, 
+                   callback: TCallback, callback_data: gpointer){.cdecl.}
+    set_focus_child*: proc (container: PContainer, widget: PWidget){.cdecl.}
+    child_type*: proc (container: PContainer): TType{.cdecl.}
+    composite_name*: proc (container: PContainer, child: PWidget): cstring{.
         cdecl.}
-    set_child_property*: proc (container: PGtkContainer, child: PGtkWidget,
-                               property_id: guint, value: PGValue,
+    set_child_property*: proc (container: PContainer, child: PWidget, 
+                               property_id: guint, value: PGValue, 
                                pspec: PGParamSpec){.cdecl.}
-    get_child_property*: proc (container: PGtkContainer, child: PGtkWidget,
-                               property_id: guint, value: PGValue,
+    get_child_property*: proc (container: PContainer, child: PWidget, 
+                               property_id: guint, value: PGValue, 
                                pspec: PGParamSpec){.cdecl.}
-    gtk_reserved20: proc (){.cdecl.}
-    gtk_reserved21: proc (){.cdecl.}
-    gtk_reserved23: proc (){.cdecl.}
-    gtk_reserved24: proc (){.cdecl.}
-
-  PGtkBin* = ptr TGtkBin
-  TGtkBin* = object of TGtkContainer
-    child*: PGtkWidget
-
-  PGtkBinClass* = ptr TGtkBinClass
-  TGtkBinClass* = object of TGtkContainerClass
-
-  PGtkWindowGeometryInfo* = pointer
-  PGtkWindowGroup* = ptr TGtkWindowGroup
-  PGtkWindow* = ptr TGtkWindow
-  TGtkWindow* = object of TGtkBin
+    reserved20: proc (){.cdecl.}
+    reserved21: proc (){.cdecl.}
+    reserved23: proc (){.cdecl.}
+    reserved24: proc (){.cdecl.}
+
+  PBin* = ptr TBin
+  TBin* = object of TContainer
+    child*: PWidget
+
+  PBinClass* = ptr TBinClass
+  TBinClass* = object of TContainerClass
+  PWindowGeometryInfo* = pointer
+  PWindowGroup* = ptr TWindowGroup
+  PWindow* = ptr TWindow
+  TWindow* = object of TBin
     title*: cstring
     wmclass_name*: cstring
     wmclass_class*: cstring
     wm_role*: cstring
-    focus_widget*: PGtkWidget
-    default_widget*: PGtkWidget
-    transient_parent*: PGtkWindow
-    geometry_info*: PGtkWindowGeometryInfo
-    frame*: PGdkWindow
-    group*: PGtkWindowGroup
+    focus_widget*: PWidget
+    default_widget*: PWidget
+    transient_parent*: PWindow
+    geometry_info*: PWindowGeometryInfo
+    frame*: gdk2.PWindow
+    group*: PWindowGroup
     configure_request_count*: guint16
-    gtkwindow_flag0*: int32
+    window_flag0*: int32
     frame_left*: guint
     frame_top*: guint
     frame_right*: guint
     frame_bottom*: guint
     keys_changed_handler*: guint
-    mnemonic_modifier*: TGdkModifierType
-    screen*: PGdkScreen
-
-  PGtkWindowClass* = ptr TGtkWindowClass
-  TGtkWindowClass* = object of TGtkBinClass
-    set_focus*: proc (window: PGtkWindow, focus: PGtkWidget){.cdecl.}
-    frame_event*: proc (window: PGtkWindow, event: PGdkEvent): gboolean{.cdecl.}
-    activate_focus*: proc (window: PGtkWindow){.cdecl.}
-    activate_default*: proc (window: PGtkWindow){.cdecl.}
-    move_focus*: proc (window: PGtkWindow, direction: TGtkDirectionType){.cdecl.}
-    keys_changed*: proc (window: PGtkWindow){.cdecl.}
-    gtk_reserved30: proc (){.cdecl.}
-    gtk_reserved31: proc (){.cdecl.}
-    gtk_reserved32: proc (){.cdecl.}
-    gtk_reserved33: proc (){.cdecl.}
-
-  TGtkWindowGroup* = object of TGObject
+    mnemonic_modifier*: gdk2.TModifierType
+    screen*: gdk2.PScreen
+
+  PWindowClass* = ptr TWindowClass
+  TWindowClass* = object of TBinClass
+    set_focus*: proc (window: PWindow, focus: PWidget){.cdecl.}
+    frame_event*: proc (window: PWindow, event: gdk2.PEvent): gboolean{.cdecl.}
+    activate_focus*: proc (window: PWindow){.cdecl.}
+    activate_default*: proc (window: PWindow){.cdecl.}
+    move_focus*: proc (window: PWindow, direction: TDirectionType){.cdecl.}
+    keys_changed*: proc (window: PWindow){.cdecl.}
+    reserved30: proc (){.cdecl.}
+    reserved31: proc (){.cdecl.}
+    reserved32: proc (){.cdecl.}
+    reserved33: proc (){.cdecl.}
+
+  TWindowGroup* = object of TGObject
     grabs*: PGSList
 
-  PGtkWindowGroupClass* = ptr TGtkWindowGroupClass
-  TGtkWindowGroupClass* = object of TGObjectClass
-    gtk_reserved40: proc (){.cdecl.}
-    gtk_reserved41: proc (){.cdecl.}
-    gtk_reserved42: proc (){.cdecl.}
-    gtk_reserved43: proc (){.cdecl.}
-
-  TGtkWindowKeysForeachFunc* = proc (window: PGtkWindow, keyval: guint,
-                                     modifiers: TGdkModifierType,
-                                     is_mnemonic: gboolean, data: gpointer){.
-      cdecl.}
-  PGtkLabelSelectionInfo* = pointer
-  TGtkLabel* = object of TGtkMisc
+  PWindowGroupClass* = ptr TWindowGroupClass
+  TWindowGroupClass* = object of TGObjectClass
+    reserved40: proc (){.cdecl.}
+    reserved41: proc (){.cdecl.}
+    reserved42: proc (){.cdecl.}
+    reserved43: proc (){.cdecl.}
+
+  TWindowKeysForeachFunc* = proc (window: PWindow, keyval: guint, 
+                                  modifiers: gdk2.TModifierType, 
+                                  is_mnemonic: gboolean, data: gpointer){.cdecl.}
+  PLabelSelectionInfo* = pointer
+  TLabel* = object of TMisc
     `label`*: cstring
-    GtkLabel_flag0*: guint16
+    Label_flag0*: guint16
     mnemonic_keyval*: guint
     text*: cstring
-    attrs*: PPangoAttrList
-    effective_attrs*: PPangoAttrList
-    layout*: PPangoLayout
-    mnemonic_widget*: PGtkWidget
-    mnemonic_window*: PGtkWindow
-    select_info*: PGtkLabelSelectionInfo
-
-  PGtkLabelClass* = ptr TGtkLabelClass
-  TGtkLabelClass* = object of TGtkMiscClass
-    move_cursor*: proc (`label`: PGtkLabel, step: TGtkMovementStep, count: gint,
+    attrs*: pango.PAttrList
+    effective_attrs*: pango.PAttrList
+    layout*: pango.PLayout
+    mnemonic_widget*: PWidget
+    mnemonic_window*: PWindow
+    select_info*: PLabelSelectionInfo
+
+  PLabelClass* = ptr TLabelClass
+  TLabelClass* = object of TMiscClass
+    move_cursor*: proc (`label`: PLabel, step: TMovementStep, count: gint, 
                         extend_selection: gboolean){.cdecl.}
-    copy_clipboard*: proc (`label`: PGtkLabel){.cdecl.}
-    populate_popup*: proc (`label`: PGtkLabel, menu: PGtkMenu){.cdecl.}
-    gtk_reserved50: proc (){.cdecl.}
-    gtk_reserved51: proc (){.cdecl.}
-    gtk_reserved52: proc (){.cdecl.}
-    gtk_reserved53: proc (){.cdecl.}
-
-  PGtkAccelLabel* = ptr TGtkAccelLabel
-  TGtkAccelLabel* = object of TGtkLabel
+    copy_clipboard*: proc (`label`: PLabel){.cdecl.}
+    populate_popup*: proc (`label`: PLabel, menu: PMenu){.cdecl.}
+    reserved50: proc (){.cdecl.}
+    reserved51: proc (){.cdecl.}
+    reserved52: proc (){.cdecl.}
+    reserved53: proc (){.cdecl.}
+
+  PAccelLabel* = ptr TAccelLabel
+  TAccelLabel* = object of TLabel
     queue_id*: guint
     accel_padding*: guint
-    accel_widget*: PGtkWidget
+    accel_widget*: PWidget
     accel_closure*: PGClosure
-    accel_group*: PGtkAccelGroup
+    accel_group*: PAccelGroup
     accel_string*: cstring
     accel_string_width*: guint16
 
-  PGtkAccelLabelClass* = ptr TGtkAccelLabelClass
-  TGtkAccelLabelClass* = object of TGtkLabelClass
+  PAccelLabelClass* = ptr TAccelLabelClass
+  TAccelLabelClass* = object of TLabelClass
     signal_quote1*: cstring
     signal_quote2*: cstring
     mod_name_shift*: cstring
@@ -512,29 +497,29 @@ type
     mod_name_alt*: cstring
     mod_separator*: cstring
     accel_seperator*: cstring
-    GtkAccelLabelClass_flag0*: guint16
-    gtk_reserved61: proc (){.cdecl.}
-    gtk_reserved62: proc (){.cdecl.}
-    gtk_reserved63: proc (){.cdecl.}
-    gtk_reserved64: proc (){.cdecl.}
-
-  TGtkAccelMapForeach* = proc (data: gpointer, accel_path: cstring,
-                               accel_key: guint, accel_mods: TGdkModifierType,
-                               changed: gboolean){.cdecl.}
-  PGtkAccessible* = ptr TGtkAccessible
-  TGtkAccessible* = object of TAtkObject
-    widget*: PGtkWidget
-
-  PGtkAccessibleClass* = ptr TGtkAccessibleClass
-  TGtkAccessibleClass* = object of TAtkObjectClass
-    connect_widget_destroyed*: proc (accessible: PGtkAccessible){.cdecl.}
-    gtk_reserved71: proc (){.cdecl.}
-    gtk_reserved72: proc (){.cdecl.}
-    gtk_reserved73: proc (){.cdecl.}
-    gtk_reserved74: proc (){.cdecl.}
-
-  PGtkAdjustment* = ptr TGtkAdjustment
-  TGtkAdjustment* = object of TGtkObject
+    AccelLabelClass_flag0*: guint16
+    reserved61: proc (){.cdecl.}
+    reserved62: proc (){.cdecl.}
+    reserved63: proc (){.cdecl.}
+    reserved64: proc (){.cdecl.}
+
+  TAccelMapForeach* = proc (data: gpointer, accel_path: cstring, 
+                            accel_key: guint, accel_mods: gdk2.TModifierType, 
+                            changed: gboolean){.cdecl.}
+  PAccessible* = ptr TAccessible
+  TAccessible* = object of atk.TObject
+    widget*: PWidget
+
+  PAccessibleClass* = ptr TAccessibleClass
+  TAccessibleClass* = object of atk.TObjectClass
+    connect_widget_destroyed*: proc (accessible: PAccessible){.cdecl.}
+    reserved71: proc (){.cdecl.}
+    reserved72: proc (){.cdecl.}
+    reserved73: proc (){.cdecl.}
+    reserved74: proc (){.cdecl.}
+
+  PAdjustment* = ptr TAdjustment
+  TAdjustment* = object of TObject
     lower*: gdouble
     upper*: gdouble
     value*: gdouble
@@ -542,142 +527,137 @@ type
     page_increment*: gdouble
     page_size*: gdouble
 
-  PGtkAdjustmentClass* = ptr TGtkAdjustmentClass
-  TGtkAdjustmentClass* = object of TGtkObjectClass
-    changed*: proc (adjustment: PGtkAdjustment){.cdecl.}
-    value_changed*: proc (adjustment: PGtkAdjustment){.cdecl.}
-    gtk_reserved81: proc (){.cdecl.}
-    gtk_reserved82: proc (){.cdecl.}
-    gtk_reserved83: proc (){.cdecl.}
-    gtk_reserved84: proc (){.cdecl.}
-
-  PGtkAlignment* = ptr TGtkAlignment
-  TGtkAlignment* = object of TGtkBin
+  PAdjustmentClass* = ptr TAdjustmentClass
+  TAdjustmentClass* = object of TObjectClass
+    changed*: proc (adjustment: PAdjustment){.cdecl.}
+    value_changed*: proc (adjustment: PAdjustment){.cdecl.}
+    reserved81: proc (){.cdecl.}
+    reserved82: proc (){.cdecl.}
+    reserved83: proc (){.cdecl.}
+    reserved84: proc (){.cdecl.}
+
+  PAlignment* = ptr TAlignment
+  TAlignment* = object of TBin
     xalign*: gfloat
     yalign*: gfloat
     xscale*: gfloat
     yscale*: gfloat
 
-  PGtkAlignmentClass* = ptr TGtkAlignmentClass
-  TGtkAlignmentClass* = object of TGtkBinClass
-
-  PGtkFrame* = ptr TGtkFrame
-  TGtkFrame* = object of TGtkBin
-    label_widget*: PGtkWidget
+  PAlignmentClass* = ptr TAlignmentClass
+  TAlignmentClass* = object of TBinClass
+  PFrame* = ptr TFrame
+  TFrame* = object of TBin
+    label_widget*: PWidget
     shadow_type*: gint16
     label_xalign*: gfloat
     label_yalign*: gfloat
-    child_allocation*: TGtkAllocation
+    child_allocation*: TAllocation
 
-  PGtkFrameClass* = ptr TGtkFrameClass
-  TGtkFrameClass* = object of TGtkBinClass
-    compute_child_allocation*: proc (frame: PGtkFrame,
-                                     allocation: PGtkAllocation){.cdecl.}
+  PFrameClass* = ptr TFrameClass
+  TFrameClass* = object of TBinClass
+    compute_child_allocation*: proc (frame: PFrame, allocation: PAllocation){.
+        cdecl.}
 
-  PGtkAspectFrame* = ptr TGtkAspectFrame
-  TGtkAspectFrame* = object of TGtkFrame
+  PAspectFrame* = ptr TAspectFrame
+  TAspectFrame* = object of TFrame
     xalign*: gfloat
     yalign*: gfloat
     ratio*: gfloat
     obey_child*: gboolean
-    center_allocation*: TGtkAllocation
+    center_allocation*: TAllocation
 
-  PGtkAspectFrameClass* = ptr TGtkAspectFrameClass
-  TGtkAspectFrameClass* = object of TGtkFrameClass
-
-  PGtkArrow* = ptr TGtkArrow
-  TGtkArrow* = object of TGtkMisc
+  PAspectFrameClass* = ptr TAspectFrameClass
+  TAspectFrameClass* = object of TFrameClass
+  PArrow* = ptr TArrow
+  TArrow* = object of TMisc
     arrow_type*: gint16
     shadow_type*: gint16
 
-  PGtkArrowClass* = ptr TGtkArrowClass
-  TGtkArrowClass* = object of TGtkMiscClass
-
-  PGtkBindingEntry* = ptr TGtkBindingEntry
-  PGtkBindingSignal* = ptr TGtkBindingSignal
-  PGtkBindingArg* = ptr TGtkBindingArg
-  PGtkBindingSet* = ptr TGtkBindingSet
-  TGtkBindingSet* {.final, pure.} = object
+  PArrowClass* = ptr TArrowClass
+  TArrowClass* = object of TMiscClass
+  PBindingEntry* = ptr TBindingEntry
+  PBindingSignal* = ptr TBindingSignal
+  PBindingArg* = ptr TBindingArg
+  PBindingSet* = ptr TBindingSet
+  TBindingSet*{.final, pure.} = object 
     set_name*: cstring
     priority*: gint
     widget_path_pspecs*: PGSList
     widget_class_pspecs*: PGSList
     class_branch_pspecs*: PGSList
-    entries*: PGtkBindingEntry
-    current*: PGtkBindingEntry
+    entries*: PBindingEntry
+    current*: PBindingEntry
     flag0*: guint16
 
-  TGtkBindingEntry* {.final, pure.} = object
+  TBindingEntry*{.final, pure.} = object 
     keyval*: guint
-    modifiers*: TGdkModifierType
-    binding_set*: PGtkBindingSet
+    modifiers*: gdk2.TModifierType
+    binding_set*: PBindingSet
     flag0*: guint16
-    set_next*: PGtkBindingEntry
-    hash_next*: PGtkBindingEntry
-    signals*: PGtkBindingSignal
+    set_next*: PBindingEntry
+    hash_next*: PBindingEntry
+    signals*: PBindingSignal
 
-  TGtkBindingSignal* {.final, pure.} = object
-    next*: PGtkBindingSignal
+  TBindingSignal*{.final, pure.} = object 
+    next*: PBindingSignal
     signal_name*: cstring
     n_args*: guint
-    args*: PGtkBindingArg
+    args*: PBindingArg
 
-  TGtkBindingArg* {.final, pure.} = object
-    arg_type*: TGtkType
+  TBindingArg*{.final, pure.} = object 
+    arg_type*: TType
     d*: gdouble
 
-  PGtkBox* = ptr TGtkBox
-  TGtkBox* = object of TGtkContainer
+  PBox* = ptr TBox
+  TBox* = object of TContainer
     children*: PGList
     spacing*: gint16
-    gtkbox_flag0*: guint16
-
-  PGtkBoxClass* = ptr TGtkBoxClass
-  TGtkBoxClass* = object of TGtkContainerClass
+    box_flag0*: guint16
 
-  PGtkBoxChild* = ptr TGtkBoxChild
-  TGtkBoxChild* {.final, pure.} = object
-    widget*: PGtkWidget
+  PBoxClass* = ptr TBoxClass
+  TBoxClass* = object of TContainerClass
+  PBoxChild* = ptr TBoxChild
+  TBoxChild*{.final, pure.} = object 
+    widget*: PWidget
     padding*: guint16
     flag0*: guint16
 
-  PGtkButtonBox* = ptr TGtkButtonBox
-  TGtkButtonBox* = object of TGtkBox
+  PButtonBox* = ptr TButtonBox
+  TButtonBox* = object of TBox
     child_min_width*: gint
     child_min_height*: gint
     child_ipad_x*: gint
     child_ipad_y*: gint
-    layout_style*: TGtkButtonBoxStyle
+    layout_style*: TButtonBoxStyle
 
-  PGtkButtonBoxClass* = ptr TGtkButtonBoxClass
-  TGtkButtonBoxClass* = object of TGtkBoxClass
-
-  PGtkButton* = ptr TGtkButton
-  TGtkButton* = object of TGtkBin
-    event_window*: PGdkWindow
+  PButtonBoxClass* = ptr TButtonBoxClass
+  TButtonBoxClass* = object of TBoxClass
+  PButton* = ptr TButton
+  TButton* = object of TBin
+    event_window*: gdk2.PWindow
     label_text*: cstring
     activate_timeout*: guint
-    gtkbutton_flag0*: guint16
-
-  PGtkButtonClass* = ptr TGtkButtonClass
-  TGtkButtonClass* = object of TGtkBinClass
-    pressed*: proc (button: PGtkButton){.cdecl.}
-    released*: proc (button: PGtkButton){.cdecl.}
-    clicked*: proc (button: PGtkButton){.cdecl.}
-    enter*: proc (button: PGtkButton){.cdecl.}
-    leave*: proc (button: PGtkButton){.cdecl.}
-    activate*: proc (button: PGtkButton){.cdecl.}
-    gtk_reserved101: proc (){.cdecl.}
-    gtk_reserved102: proc (){.cdecl.}
-    gtk_reserved103: proc (){.cdecl.}
-    gtk_reserved104: proc (){.cdecl.}
-
-  PGtkCalendarDisplayOptions* = ptr TGtkCalendarDisplayOptions
-  TGtkCalendarDisplayOptions* = int32
-  PGtkCalendar* = ptr TGtkCalendar
-  TGtkCalendar* = object of TGtkWidget
-    header_style*: PGtkStyle
-    label_style*: PGtkStyle
+    button_flag0*: guint16
+
+  PButtonClass* = ptr TButtonClass
+  TButtonClass* = object of TBinClass
+    pressed*: proc (button: PButton){.cdecl.}
+    released*: proc (button: PButton){.cdecl.}
+    clicked*: proc (button: PButton){.cdecl.}
+    enter*: proc (button: PButton){.cdecl.}
+    leave*: proc (button: PButton){.cdecl.}
+    activate*: proc (button: PButton){.cdecl.}
+    reserved101: proc (){.cdecl.}
+    reserved102: proc (){.cdecl.}
+    reserved103: proc (){.cdecl.}
+    reserved104: proc (){.cdecl.}
+
+  PCalendarDisplayOptions* = ptr TCalendarDisplayOptions
+  TCalendarDisplayOptions* = int32
+  PCalendar* = ptr TCalendar
+  TCalendar* = object of TWidget
+    header_style*: PStyle
+    label_style*: PStyle
     month*: gint
     year*: gint
     selected_day*: gint
@@ -685,259 +665,251 @@ type
     day*: array[0..5, array[0..6, gint]]
     num_marked_dates*: gint
     marked_date*: array[0..30, gint]
-    display_flags*: TGtkCalendarDisplayOptions
-    marked_date_color*: array[0..30, TGdkColor]
-    gc*: PGdkGC
-    xor_gc*: PGdkGC
+    display_flags*: TCalendarDisplayOptions
+    marked_date_color*: array[0..30, gdk2.TColor]
+    gc*: gdk2.PGC
+    xor_gc*: gdk2.PGC
     focus_row*: gint
     focus_col*: gint
     highlight_row*: gint
     highlight_col*: gint
     private_data*: gpointer
     grow_space*: array[0..31, gchar]
-    gtk_reserved111: proc (){.cdecl.}
-    gtk_reserved112: proc (){.cdecl.}
-    gtk_reserved113: proc (){.cdecl.}
-    gtk_reserved114: proc (){.cdecl.}
-
-  PGtkCalendarClass* = ptr TGtkCalendarClass
-  TGtkCalendarClass* = object of TGtkWidgetClass
-    month_changed*: proc (calendar: PGtkCalendar){.cdecl.}
-    day_selected*: proc (calendar: PGtkCalendar){.cdecl.}
-    day_selected_double_click*: proc (calendar: PGtkCalendar){.cdecl.}
-    prev_month*: proc (calendar: PGtkCalendar){.cdecl.}
-    next_month*: proc (calendar: PGtkCalendar){.cdecl.}
-    prev_year*: proc (calendar: PGtkCalendar){.cdecl.}
-    next_year*: proc (calendar: PGtkCalendar){.cdecl.}
-
-  PGtkCellEditable* = pointer
-  PGtkCellEditableIface* = ptr TGtkCellEditableIface
-  TGtkCellEditableIface* = object of TGTypeInterface
-    editing_done*: proc (cell_editable: PGtkCellEditable){.cdecl.}
-    remove_widget*: proc (cell_editable: PGtkCellEditable){.cdecl.}
-    start_editing*: proc (cell_editable: PGtkCellEditable, event: PGdkEvent){.
-        cdecl.}
-
-  PGtkCellRendererState* = ptr TGtkCellRendererState
-  TGtkCellRendererState* = int32
-  PGtkCellRendererMode* = ptr TGtkCellRendererMode
-  TGtkCellRendererMode* = enum
-    GTK_CELL_RENDERER_MODE_INERT, GTK_CELL_RENDERER_MODE_ACTIVATABLE,
-    GTK_CELL_RENDERER_MODE_EDITABLE
-  PGtkCellRenderer* = ptr TGtkCellRenderer
-  TGtkCellRenderer* = object of  TGtkObject
+    reserved111: proc (){.cdecl.}
+    reserved112: proc (){.cdecl.}
+    reserved113: proc (){.cdecl.}
+    reserved114: proc (){.cdecl.}
+
+  PCalendarClass* = ptr TCalendarClass
+  TCalendarClass* = object of TWidgetClass
+    month_changed*: proc (calendar: PCalendar){.cdecl.}
+    day_selected*: proc (calendar: PCalendar){.cdecl.}
+    day_selected_double_click*: proc (calendar: PCalendar){.cdecl.}
+    prev_month*: proc (calendar: PCalendar){.cdecl.}
+    next_month*: proc (calendar: PCalendar){.cdecl.}
+    prev_year*: proc (calendar: PCalendar){.cdecl.}
+    next_year*: proc (calendar: PCalendar){.cdecl.}
+
+  PCellEditable* = pointer
+  PCellEditableIface* = ptr TCellEditableIface
+  TCellEditableIface* = object of TGTypeInterface
+    editing_done*: proc (cell_editable: PCellEditable){.cdecl.}
+    remove_widget*: proc (cell_editable: PCellEditable){.cdecl.}
+    start_editing*: proc (cell_editable: PCellEditable, event: gdk2.PEvent){.cdecl.}
+
+  PCellRendererState* = ptr TCellRendererState
+  TCellRendererState* = int32
+  PCellRendererMode* = ptr TCellRendererMode
+  TCellRendererMode* = enum 
+    CELL_RENDERER_MODE_INERT, CELL_RENDERER_MODE_ACTIVATABLE, 
+    CELL_RENDERER_MODE_EDITABLE
+  PCellRenderer* = ptr TCellRenderer
+  TCellRenderer* = object of TObject
     xalign*: gfloat
     yalign*: gfloat
     width*: gint
     height*: gint
     xpad*: guint16
     ypad*: guint16
-    GtkCellRenderer_flag0*: guint16
+    CellRenderer_flag0*: guint16
 
-  PGtkCellRendererClass* = ptr TGtkCellRendererClass
-  TGtkCellRendererClass* = object of TGtkObjectClass
-    get_size*: proc (cell: PGtkCellRenderer, widget: PGtkWidget,
-                     cell_area: PGdkRectangle, x_offset: Pgint, y_offset: Pgint,
+  PCellRendererClass* = ptr TCellRendererClass
+  TCellRendererClass* = object of TObjectClass
+    get_size*: proc (cell: PCellRenderer, widget: PWidget, 
+                     cell_area: gdk2.PRectangle, x_offset: Pgint, y_offset: Pgint, 
                      width: Pgint, height: Pgint){.cdecl.}
-    render*: proc (cell: PGtkCellRenderer, window: PGdkWindow,
-                   widget: PGtkWidget, background_area: PGdkRectangle,
-                   cell_area: PGdkRectangle, expose_area: PGdkRectangle,
-                   flags: TGtkCellRendererState){.cdecl.}
-    activate*: proc (cell: PGtkCellRenderer, event: PGdkEvent,
-                     widget: PGtkWidget, path: cstring,
-                     background_area: PGdkRectangle, cell_area: PGdkRectangle,
-                     flags: TGtkCellRendererState): gboolean{.cdecl.}
-    start_editing*: proc (cell: PGtkCellRenderer, event: PGdkEvent,
-                          widget: PGtkWidget, path: cstring,
-                          background_area: PGdkRectangle,
-                          cell_area: PGdkRectangle, flags: TGtkCellRendererState): PGtkCellEditable{.
+    render*: proc (cell: PCellRenderer, window: gdk2.PWindow, widget: PWidget, 
+                   background_area: gdk2.PRectangle, cell_area: gdk2.PRectangle, 
+                   expose_area: gdk2.PRectangle, flags: TCellRendererState){.cdecl.}
+    activate*: proc (cell: PCellRenderer, event: gdk2.PEvent, widget: PWidget, 
+                     path: cstring, background_area: gdk2.PRectangle, 
+                     cell_area: gdk2.PRectangle, flags: TCellRendererState): gboolean{.
         cdecl.}
-    gtk_reserved121: proc (){.cdecl.}
-    gtk_reserved122: proc (){.cdecl.}
-    gtk_reserved123: proc (){.cdecl.}
-    gtk_reserved124: proc (){.cdecl.}
+    start_editing*: proc (cell: PCellRenderer, event: gdk2.PEvent, 
+                          widget: PWidget, path: cstring, 
+                          background_area: gdk2.PRectangle, 
+                          cell_area: gdk2.PRectangle, flags: TCellRendererState): PCellEditable{.
+        cdecl.}
+    reserved121: proc (){.cdecl.}
+    reserved122: proc (){.cdecl.}
+    reserved123: proc (){.cdecl.}
+    reserved124: proc (){.cdecl.}
 
-  PGtkCellRendererText* = ptr TGtkCellRendererText
-  TGtkCellRendererText* = object of TGtkCellRenderer
+  PCellRendererText* = ptr TCellRendererText
+  TCellRendererText* = object of TCellRenderer
     text*: cstring
-    font*: PPangoFontDescription
+    font*: pango.PFontDescription
     font_scale*: gdouble
-    foreground*: TPangoColor
-    background*: TPangoColor
-    extra_attrs*: PPangoAttrList
-    underline_style*: TPangoUnderline
+    foreground*: pango.TColor
+    background*: pango.TColor
+    extra_attrs*: pango.PAttrList
+    underline_style*: pango.TUnderline
     rise*: gint
     fixed_height_rows*: gint
-    GtkCellRendererText_flag0*: guint16
+    CellRendererText_flag0*: guint16
 
-  PGtkCellRendererTextClass* = ptr TGtkCellRendererTextClass
-  TGtkCellRendererTextClass* = object of TGtkCellRendererClass
-    edited*: proc (cell_renderer_text: PGtkCellRendererText, path: cstring,
+  PCellRendererTextClass* = ptr TCellRendererTextClass
+  TCellRendererTextClass* = object of TCellRendererClass
+    edited*: proc (cell_renderer_text: PCellRendererText, path: cstring, 
                    new_text: cstring){.cdecl.}
-    gtk_reserved131: proc (){.cdecl.}
-    gtk_reserved132: proc (){.cdecl.}
-    gtk_reserved133: proc (){.cdecl.}
-    gtk_reserved134: proc (){.cdecl.}
-
-  PGtkCellRendererToggle* = ptr TGtkCellRendererToggle
-  TGtkCellRendererToggle* = object of TGtkCellRenderer
-    GtkCellRendererToggle_flag0*: guint16
-
-  PGtkCellRendererToggleClass* = ptr TGtkCellRendererToggleClass
-  TGtkCellRendererToggleClass* = object of TGtkCellRendererClass
-    toggled*: proc (cell_renderer_toggle: PGtkCellRendererToggle, path: cstring){.
+    reserved131: proc (){.cdecl.}
+    reserved132: proc (){.cdecl.}
+    reserved133: proc (){.cdecl.}
+    reserved134: proc (){.cdecl.}
+
+  PCellRendererToggle* = ptr TCellRendererToggle
+  TCellRendererToggle* = object of TCellRenderer
+    CellRendererToggle_flag0*: guint16
+
+  PCellRendererToggleClass* = ptr TCellRendererToggleClass
+  TCellRendererToggleClass* = object of TCellRendererClass
+    toggled*: proc (cell_renderer_toggle: PCellRendererToggle, path: cstring){.
         cdecl.}
-    gtk_reserved141: proc (){.cdecl.}
-    gtk_reserved142: proc (){.cdecl.}
-    gtk_reserved143: proc (){.cdecl.}
-    gtk_reserved144: proc (){.cdecl.}
-
-  PGtkCellRendererPixbuf* = ptr TGtkCellRendererPixbuf
-  TGtkCellRendererPixbuf* = object of TGtkCellRenderer
-    pixbuf*: PGdkPixbuf
-    pixbuf_expander_open*: PGdkPixbuf
-    pixbuf_expander_closed*: PGdkPixbuf
-
-  PGtkCellRendererPixbufClass* = ptr TGtkCellRendererPixbufClass
-  TGtkCellRendererPixbufClass* = object of TGtkCellRendererClass
-    gtk_reserved151: proc (){.cdecl.}
-    gtk_reserved152: proc (){.cdecl.}
-    gtk_reserved153: proc (){.cdecl.}
-    gtk_reserved154: proc (){.cdecl.}
-
-  PGtkItem* = ptr TGtkItem
-  TGtkItem* = object of TGtkBin
-
-  PGtkItemClass* = ptr TGtkItemClass
-  TGtkItemClass* = object of TGtkBinClass
-    select*: proc (item: PGtkItem){.cdecl.}
-    deselect*: proc (item: PGtkItem){.cdecl.}
-    toggle*: proc (item: PGtkItem){.cdecl.}
-    gtk_reserved161: proc (){.cdecl.}
-    gtk_reserved162: proc (){.cdecl.}
-    gtk_reserved163: proc (){.cdecl.}
-    gtk_reserved164: proc (){.cdecl.}
-
-  PGtkMenuItem* = ptr TGtkMenuItem
-  TGtkMenuItem* = object of TGtkItem
-    submenu*: PGtkWidget
-    event_window*: PGdkWindow
+    reserved141: proc (){.cdecl.}
+    reserved142: proc (){.cdecl.}
+    reserved143: proc (){.cdecl.}
+    reserved144: proc (){.cdecl.}
+
+  PCellRendererPixbuf* = ptr TCellRendererPixbuf
+  TCellRendererPixbuf* = object of TCellRenderer
+    pixbuf*: gdk2pixbuf.PPixbuf
+    pixbuf_expander_open*: gdk2pixbuf.PPixbuf
+    pixbuf_expander_closed*: gdk2pixbuf.PPixbuf
+
+  PCellRendererPixbufClass* = ptr TCellRendererPixbufClass
+  TCellRendererPixbufClass* = object of TCellRendererClass
+    reserved151: proc (){.cdecl.}
+    reserved152: proc (){.cdecl.}
+    reserved153: proc (){.cdecl.}
+    reserved154: proc (){.cdecl.}
+
+  PItem* = ptr TItem
+  TItem* = object of TBin
+  PItemClass* = ptr TItemClass
+  TItemClass* = object of TBinClass
+    select*: proc (item: PItem){.cdecl.}
+    deselect*: proc (item: PItem){.cdecl.}
+    toggle*: proc (item: PItem){.cdecl.}
+    reserved161: proc (){.cdecl.}
+    reserved162: proc (){.cdecl.}
+    reserved163: proc (){.cdecl.}
+    reserved164: proc (){.cdecl.}
+
+  PMenuItem* = ptr TMenuItem
+  TMenuItem* = object of TItem
+    submenu*: PWidget
+    event_window*: gdk2.PWindow
     toggle_size*: guint16
     accelerator_width*: guint16
     accel_path*: cstring
-    GtkMenuItem_flag0*: guint16
+    MenuItem_flag0*: guint16
     timer*: guint
 
-  PGtkMenuItemClass* = ptr TGtkMenuItemClass
-  TGtkMenuItemClass* = object of TGtkItemClass
-    GtkMenuItemClass_flag0*: guint16
-    activate*: proc (menu_item: PGtkMenuItem){.cdecl.}
-    activate_item*: proc (menu_item: PGtkMenuItem){.cdecl.}
-    toggle_size_request*: proc (menu_item: PGtkMenuItem, requisition: Pgint){.
-        cdecl.}
-    toggle_size_allocate*: proc (menu_item: PGtkMenuItem, allocation: gint){.
+  PMenuItemClass* = ptr TMenuItemClass
+  TMenuItemClass* = object of TItemClass
+    MenuItemClass_flag0*: guint16
+    activate*: proc (menu_item: PMenuItem){.cdecl.}
+    activate_item*: proc (menu_item: PMenuItem){.cdecl.}
+    toggle_size_request*: proc (menu_item: PMenuItem, requisition: Pgint){.cdecl.}
+    toggle_size_allocate*: proc (menu_item: PMenuItem, allocation: gint){.cdecl.}
+    reserved171: proc (){.cdecl.}
+    reserved172: proc (){.cdecl.}
+    reserved173: proc (){.cdecl.}
+    reserved174: proc (){.cdecl.}
+
+  PToggleButton* = ptr TToggleButton
+  TToggleButton* = object of TButton
+    ToggleButton_flag0*: guint16
+
+  PToggleButtonClass* = ptr TToggleButtonClass
+  TToggleButtonClass* = object of TButtonClass
+    toggled*: proc (toggle_button: PToggleButton){.cdecl.}
+    reserved171: proc (){.cdecl.}
+    reserved172: proc (){.cdecl.}
+    reserved173: proc (){.cdecl.}
+    reserved174: proc (){.cdecl.}
+
+  PCheckButton* = ptr TCheckButton
+  TCheckButton* = object of TToggleButton
+  PCheckButtonClass* = ptr TCheckButtonClass
+  TCheckButtonClass* = object of TToggleButtonClass
+    draw_indicator*: proc (check_button: PCheckButton, area: gdk2.PRectangle){.
         cdecl.}
-    gtk_reserved171: proc (){.cdecl.}
-    gtk_reserved172: proc (){.cdecl.}
-    gtk_reserved173: proc (){.cdecl.}
-    gtk_reserved174: proc (){.cdecl.}
-
-  PGtkToggleButton* = ptr TGtkToggleButton
-  TGtkToggleButton* = object of TGtkButton
-    GtkToggleButton_flag0*: guint16
-
-  PGtkToggleButtonClass* = ptr TGtkToggleButtonClass
-  TGtkToggleButtonClass* = object of TGtkButtonClass
-    toggled*: proc (toggle_button: PGtkToggleButton){.cdecl.}
-    gtk_reserved171: proc (){.cdecl.}
-    gtk_reserved172: proc (){.cdecl.}
-    gtk_reserved173: proc (){.cdecl.}
-    gtk_reserved174: proc (){.cdecl.}
-
-  PGtkCheckButton* = ptr TGtkCheckButton
-  TGtkCheckButton* = object of TGtkToggleButton
-
-  PGtkCheckButtonClass* = ptr TGtkCheckButtonClass
-  TGtkCheckButtonClass* = object of TGtkToggleButtonClass
-    draw_indicator*: proc (check_button: PGtkCheckButton, area: PGdkRectangle){.
+    reserved181: proc (){.cdecl.}
+    reserved182: proc (){.cdecl.}
+    reserved183: proc (){.cdecl.}
+    reserved184: proc (){.cdecl.}
+
+  PCheckMenuItem* = ptr TCheckMenuItem
+  TCheckMenuItem* = object of TMenuItem
+    CheckMenuItem_flag0*: guint16
+
+  PCheckMenuItemClass* = ptr TCheckMenuItemClass
+  TCheckMenuItemClass* = object of TMenuItemClass
+    toggled*: proc (check_menu_item: PCheckMenuItem){.cdecl.}
+    draw_indicator*: proc (check_menu_item: PCheckMenuItem, area: gdk2.PRectangle){.
         cdecl.}
-    gtk_reserved181: proc (){.cdecl.}
-    gtk_reserved182: proc (){.cdecl.}
-    gtk_reserved183: proc (){.cdecl.}
-    gtk_reserved184: proc (){.cdecl.}
-
-  PGtkCheckMenuItem* = ptr TGtkCheckMenuItem
-  TGtkCheckMenuItem* = object of TGtkMenuItem
-    GtkCheckMenuItem_flag0*: guint16
-
-  PGtkCheckMenuItemClass* = ptr TGtkCheckMenuItemClass
-  TGtkCheckMenuItemClass* = object of TGtkMenuItemClass
-    toggled*: proc (check_menu_item: PGtkCheckMenuItem){.cdecl.}
-    draw_indicator*: proc (check_menu_item: PGtkCheckMenuItem,
-                           area: PGdkRectangle){.cdecl.}
-    gtk_reserved191: proc (){.cdecl.}
-    gtk_reserved192: proc (){.cdecl.}
-    gtk_reserved193: proc (){.cdecl.}
-    gtk_reserved194: proc (){.cdecl.}
-
-  PGtkClipboard* = pointer
-  TGtkClipboardReceivedFunc* = proc (clipboard: PGtkClipboard,
-                                     selection_data: PGtkSelectionData,
-                                     data: gpointer){.cdecl.}
-  TGtkClipboardTextReceivedFunc* = proc (clipboard: PGtkClipboard, text: cstring,
-      data: gpointer){.cdecl.}
-  TGtkClipboardGetFunc* = proc (clipboard: PGtkClipboard,
-                                selection_data: PGtkSelectionData, info: guint,
-                                user_data_or_owner: gpointer){.cdecl.}
-  TGtkClipboardClearFunc* = proc (clipboard: PGtkClipboard,
-                                  user_data_or_owner: gpointer){.cdecl.}
-  PGtkCList* = ptr TGtkCList
-  PGtkCListColumn* = ptr TGtkCListColumn
-  PGtkCListRow* = ptr TGtkCListRow
-  PGtkCell* = ptr TGtkCell
-  PGtkCellType* = ptr TGtkCellType
-  TGtkCellType* = enum
-    GTK_CELL_EMPTY, GTK_CELL_TEXT, GTK_CELL_PIXMAP, GTK_CELL_PIXTEXT,
-    GTK_CELL_WIDGET
-  PGtkCListDragPos* = ptr TGtkCListDragPos
-  TGtkCListDragPos* = enum
-    GTK_CLIST_DRAG_NONE, GTK_CLIST_DRAG_BEFORE, GTK_CLIST_DRAG_INTO,
-    GTK_CLIST_DRAG_AFTER
-  PGtkButtonAction* = ptr TGtkButtonAction
-  TGtkButtonAction* = int32
-  TGtkCListCompareFunc* = proc (clist: PGtkCList, ptr1: gconstpointer,
-                                ptr2: gconstpointer): gint{.cdecl.}
-  PGtkCListCellInfo* = ptr TGtkCListCellInfo
-  TGtkCListCellInfo* {.final, pure.} = object
+    reserved191: proc (){.cdecl.}
+    reserved192: proc (){.cdecl.}
+    reserved193: proc (){.cdecl.}
+    reserved194: proc (){.cdecl.}
+
+  PClipboard* = pointer
+  TClipboardReceivedFunc* = proc (clipboard: PClipboard, 
+                                  selection_data: PSelectionData, data: gpointer){.
+      cdecl.}
+  TClipboardTextReceivedFunc* = proc (clipboard: PClipboard, text: cstring, 
+                                      data: gpointer){.cdecl.}
+  TClipboardGetFunc* = proc (clipboard: PClipboard, 
+                             selection_data: PSelectionData, info: guint, 
+                             user_data_or_owner: gpointer){.cdecl.}
+  TClipboardClearFunc* = proc (clipboard: PClipboard, 
+                               user_data_or_owner: gpointer){.cdecl.}
+  PCList* = ptr TCList
+  PCListColumn* = ptr TCListColumn
+  PCListRow* = ptr TCListRow
+  PCell* = ptr TCell
+  PCellType* = ptr TCellType
+  TCellType* = enum 
+    CELL_EMPTY, CELL_TEXT, CELL_PIXMAP, CELL_PIXTEXT, CELL_WIDGET
+  PCListDragPos* = ptr TCListDragPos
+  TCListDragPos* = enum 
+    CLIST_DRAG_NONE, CLIST_DRAG_BEFORE, CLIST_DRAG_INTO, CLIST_DRAG_AFTER
+  PButtonAction* = ptr TButtonAction
+  TButtonAction* = int32
+  TCListCompareFunc* = proc (clist: PCList, ptr1: gconstpointer, 
+                             ptr2: gconstpointer): gint{.cdecl.}
+  PCListCellInfo* = ptr TCListCellInfo
+  TCListCellInfo*{.final, pure.} = object 
     row*: gint
     column*: gint
 
-  PGtkCListDestInfo* = ptr TGtkCListDestInfo
-  TGtkCListDestInfo* {.final, pure.} = object
-    cell*: TGtkCListCellInfo
-    insert_pos*: TGtkCListDragPos
+  PCListDestInfo* = ptr TCListDestInfo
+  TCListDestInfo*{.final, pure.} = object 
+    cell*: TCListCellInfo
+    insert_pos*: TCListDragPos
 
-  TGtkCList* = object of TGtkContainer
-    GtkCList_flags*: guint16
+  TCList* = object of TContainer
+    CList_flags*: guint16
     row_mem_chunk*: PGMemChunk
     cell_mem_chunk*: PGMemChunk
     freeze_count*: guint
-    internal_allocation*: TGdkRectangle
+    internal_allocation*: gdk2.TRectangle
     rows*: gint
     row_height*: gint
     row_list*: PGList
     row_list_end*: PGList
     columns*: gint
-    column_title_area*: TGdkRectangle
-    title_window*: PGdkWindow
-    column*: PGtkCListColumn
-    clist_window*: PGdkWindow
+    column_title_area*: gdk2.TRectangle
+    title_window*: gdk2.PWindow
+    column*: PCListColumn
+    clist_window*: gdk2.PWindow
     clist_window_width*: gint
     clist_window_height*: gint
     hoffset*: gint
     voffset*: gint
-    shadow_type*: TGtkShadowType
-    selection_mode*: TGtkSelectionMode
+    shadow_type*: TShadowType
+    selection_mode*: TSelectionMode
     selection*: PGList
     selection_end*: PGList
     undo_selection*: PGList
@@ -945,461 +917,447 @@ type
     undo_anchor*: gint
     button_actions*: array[0..4, guint8]
     drag_button*: guint8
-    click_cell*: TGtkCListCellInfo
-    hadjustment*: PGtkAdjustment
-    vadjustment*: PGtkAdjustment
-    xor_gc*: PGdkGC
-    fg_gc*: PGdkGC
-    bg_gc*: PGdkGC
-    cursor_drag*: PGdkCursor
+    click_cell*: TCListCellInfo
+    hadjustment*: PAdjustment
+    vadjustment*: PAdjustment
+    xor_gc*: gdk2.PGC
+    fg_gc*: gdk2.PGC
+    bg_gc*: gdk2.PGC
+    cursor_drag*: gdk2.PCursor
     x_drag*: gint
     focus_row*: gint
     focus_header_column*: gint
     anchor*: gint
-    anchor_state*: TGtkStateType
+    anchor_state*: TStateType
     drag_pos*: gint
     htimer*: gint
     vtimer*: gint
-    sort_type*: TGtkSortType
-    compare*: TGtkCListCompareFunc
+    sort_type*: TSortType
+    compare*: TCListCompareFunc
     sort_column*: gint
     drag_highlight_row*: gint
-    drag_highlight_pos*: TGtkCListDragPos
-
-  PGtkCListClass* = ptr TGtkCListClass
-  TGtkCListClass* = object of TGtkContainerClass
-    set_scroll_adjustments*: proc (clist: PGtkCList,
-                                   hadjustment: PGtkAdjustment,
-                                   vadjustment: PGtkAdjustment){.cdecl.}
-    refresh*: proc (clist: PGtkCList){.cdecl.}
-    select_row*: proc (clist: PGtkCList, row: gint, column: gint,
-                       event: PGdkEvent){.cdecl.}
-    unselect_row*: proc (clist: PGtkCList, row: gint, column: gint,
-                         event: PGdkEvent){.cdecl.}
-    row_move*: proc (clist: PGtkCList, source_row: gint, dest_row: gint){.cdecl.}
-    click_column*: proc (clist: PGtkCList, column: gint){.cdecl.}
-    resize_column*: proc (clist: PGtkCList, column: gint, width: gint){.cdecl.}
-    toggle_focus_row*: proc (clist: PGtkCList){.cdecl.}
-    select_all*: proc (clist: PGtkCList){.cdecl.}
-    unselect_all*: proc (clist: PGtkCList){.cdecl.}
-    undo_selection*: proc (clist: PGtkCList){.cdecl.}
-    start_selection*: proc (clist: PGtkCList){.cdecl.}
-    end_selection*: proc (clist: PGtkCList){.cdecl.}
-    extend_selection*: proc (clist: PGtkCList, scroll_type: TGtkScrollType,
+    drag_highlight_pos*: TCListDragPos
+
+  PCListClass* = ptr TCListClass
+  TCListClass* = object of TContainerClass
+    set_scroll_adjustments*: proc (clist: PCList, hadjustment: PAdjustment, 
+                                   vadjustment: PAdjustment){.cdecl.}
+    refresh*: proc (clist: PCList){.cdecl.}
+    select_row*: proc (clist: PCList, row: gint, column: gint, event: gdk2.PEvent){.
+        cdecl.}
+    unselect_row*: proc (clist: PCList, row: gint, column: gint, 
+                         event: gdk2.PEvent){.cdecl.}
+    row_move*: proc (clist: PCList, source_row: gint, dest_row: gint){.cdecl.}
+    click_column*: proc (clist: PCList, column: gint){.cdecl.}
+    resize_column*: proc (clist: PCList, column: gint, width: gint){.cdecl.}
+    toggle_focus_row*: proc (clist: PCList){.cdecl.}
+    select_all*: proc (clist: PCList){.cdecl.}
+    unselect_all*: proc (clist: PCList){.cdecl.}
+    undo_selection*: proc (clist: PCList){.cdecl.}
+    start_selection*: proc (clist: PCList){.cdecl.}
+    end_selection*: proc (clist: PCList){.cdecl.}
+    extend_selection*: proc (clist: PCList, scroll_type: TScrollType, 
                              position: gfloat, auto_start_selection: gboolean){.
         cdecl.}
-    scroll_horizontal*: proc (clist: PGtkCList, scroll_type: TGtkScrollType,
+    scroll_horizontal*: proc (clist: PCList, scroll_type: TScrollType, 
                               position: gfloat){.cdecl.}
-    scroll_vertical*: proc (clist: PGtkCList, scroll_type: TGtkScrollType,
+    scroll_vertical*: proc (clist: PCList, scroll_type: TScrollType, 
                             position: gfloat){.cdecl.}
-    toggle_add_mode*: proc (clist: PGtkCList){.cdecl.}
-    abort_column_resize*: proc (clist: PGtkCList){.cdecl.}
-    resync_selection*: proc (clist: PGtkCList, event: PGdkEvent){.cdecl.}
-    selection_find*: proc (clist: PGtkCList, row_number: gint,
+    toggle_add_mode*: proc (clist: PCList){.cdecl.}
+    abort_column_resize*: proc (clist: PCList){.cdecl.}
+    resync_selection*: proc (clist: PCList, event: gdk2.PEvent){.cdecl.}
+    selection_find*: proc (clist: PCList, row_number: gint, 
                            row_list_element: PGList): PGList{.cdecl.}
-    draw_row*: proc (clist: PGtkCList, area: PGdkRectangle, row: gint,
-                     clist_row: PGtkCListRow){.cdecl.}
-    draw_drag_highlight*: proc (clist: PGtkCList, target_row: PGtkCListRow,
-                                target_row_number: gint,
-                                drag_pos: TGtkCListDragPos){.cdecl.}
-    clear*: proc (clist: PGtkCList){.cdecl.}
-    fake_unselect_all*: proc (clist: PGtkCList, row: gint){.cdecl.}
-    sort_list*: proc (clist: PGtkCList){.cdecl.}
-    insert_row*: proc (clist: PGtkCList, row: gint): gint{.cdecl, varargs.}
-    remove_row*: proc (clist: PGtkCList, row: gint){.cdecl.}
-    set_cell_contents*: proc (clist: PGtkCList, clist_row: PGtkCListRow,
-                              column: gint, thetype: TGtkCellType, text: cstring,
-                              spacing: guint8, pixmap: PGdkPixmap,
-                              mask: PGdkBitmap){.cdecl.}
-    cell_size_request*: proc (clist: PGtkCList, clist_row: PGtkCListRow,
-                              column: gint, requisition: PGtkRequisition){.cdecl.}
+    draw_row*: proc (clist: PCList, area: gdk2.PRectangle, row: gint, 
+                     clist_row: PCListRow){.cdecl.}
+    draw_drag_highlight*: proc (clist: PCList, target_row: PCListRow, 
+                                target_row_number: gint, drag_pos: TCListDragPos){.
+        cdecl.}
+    clear*: proc (clist: PCList){.cdecl.}
+    fake_unselect_all*: proc (clist: PCList, row: gint){.cdecl.}
+    sort_list*: proc (clist: PCList){.cdecl.}
+    insert_row*: proc (clist: PCList, row: gint): gint{.cdecl, varargs.}
+    remove_row*: proc (clist: PCList, row: gint){.cdecl.}
+    set_cell_contents*: proc (clist: PCList, clist_row: PCListRow, column: gint, 
+                              thetype: TCellType, text: cstring, 
+                              spacing: guint8, pixmap: gdk2.PPixmap, 
+                              mask: gdk2.PBitmap){.cdecl.}
+    cell_size_request*: proc (clist: PCList, clist_row: PCListRow, column: gint, 
+                              requisition: PRequisition){.cdecl.}
 
   PGPtrArray = pointer
   PGArray = pointer
-  TGtkCListColumn* {.final, pure.} = object
+  TCListColumn*{.final, pure.} = object 
     title*: cstring
-    area*: TGdkRectangle
-    button*: PGtkWidget
-    window*: PGdkWindow
+    area*: gdk2.TRectangle
+    button*: PWidget
+    window*: gdk2.PWindow
     width*: gint
     min_width*: gint
     max_width*: gint
-    justification*: TGtkJustification
+    justification*: TJustification
     flag0*: guint16
 
-  TGtkCListRow* {.final, pure.} = object
-    cell*: PGtkCell
-    state*: TGtkStateType
-    foreground*: TGdkColor
-    background*: TGdkColor
-    style*: PGtkStyle
+  TCListRow*{.final, pure.} = object 
+    cell*: PCell
+    state*: TStateType
+    foreground*: gdk2.TColor
+    background*: gdk2.TColor
+    style*: PStyle
     data*: gpointer
-    destroy*: TGtkDestroyNotify
+    destroy*: TDestroyNotify
     flag0*: guint16
 
-  PGtkCellText* = ptr TGtkCellText
-  TGtkCellText* {.final, pure.} = object
-    `type`*: TGtkCellType
+  PCellText* = ptr TCellText
+  TCellText*{.final, pure.} = object 
+    `type`*: TCellType
     vertical*: gint16
     horizontal*: gint16
-    style*: PGtkStyle
+    style*: PStyle
     text*: cstring
 
-  PGtkCellPixmap* = ptr TGtkCellPixmap
-  TGtkCellPixmap* {.final, pure.} = object
-    `type`*: TGtkCellType
+  PCellPixmap* = ptr TCellPixmap
+  TCellPixmap*{.final, pure.} = object 
+    `type`*: TCellType
     vertical*: gint16
     horizontal*: gint16
-    style*: PGtkStyle
-    pixmap*: PGdkPixmap
-    mask*: PGdkBitmap
+    style*: PStyle
+    pixmap*: gdk2.PPixmap
+    mask*: gdk2.PBitmap
 
-  PGtkCellPixText* = ptr TGtkCellPixText
-  TGtkCellPixText* {.final, pure.} = object
-    `type`*: TGtkCellType
+  PCellPixText* = ptr TCellPixText
+  TCellPixText*{.final, pure.} = object 
+    `type`*: TCellType
     vertical*: gint16
     horizontal*: gint16
-    style*: PGtkStyle
+    style*: PStyle
     text*: cstring
     spacing*: guint8
-    pixmap*: PGdkPixmap
-    mask*: PGdkBitmap
+    pixmap*: gdk2.PPixmap
+    mask*: gdk2.PBitmap
 
-  PGtkCellWidget* = ptr TGtkCellWidget
-  TGtkCellWidget* {.final, pure.} = object
-    `type`*: TGtkCellType
+  PCellWidget* = ptr TCellWidget
+  TCellWidget*{.final, pure.} = object 
+    `type`*: TCellType
     vertical*: gint16
     horizontal*: gint16
-    style*: PGtkStyle
-    widget*: PGtkWidget
+    style*: PStyle
+    widget*: PWidget
 
-  TGtkCell* {.final, pure.} = object
-    `type`*: TGtkCellType
+  TCell*{.final, pure.} = object 
+    `type`*: TCellType
     vertical*: gint16
     horizontal*: gint16
-    style*: PGtkStyle
+    style*: PStyle
     text*: cstring
     spacing*: guint8
-    pixmap*: PGdkPixmap
-    mask*: PGdkBitmap
-
-  PGtkDialogFlags* = ptr TGtkDialogFlags
-  TGtkDialogFlags* = int32
-  PGtkResponseType* = ptr TGtkResponseType
-  TGtkResponseType* = int32
-  PGtkDialog* = ptr TGtkDialog
-  TGtkDialog* = object of TGtkWindow
-    vbox*: PGtkWidget
-    action_area*: PGtkWidget
-    separator*: PGtkWidget
-
-  PGtkDialogClass* = ptr TGtkDialogClass
-  TGtkDialogClass* = object of TGtkWindowClass
-    response*: proc (dialog: PGtkDialog, response_id: gint){.cdecl.}
-    closeFile*: proc (dialog: PGtkDialog){.cdecl.}
-    gtk_reserved201: proc (){.cdecl.}
-    gtk_reserved202: proc (){.cdecl.}
-    gtk_reserved203: proc (){.cdecl.}
-    gtk_reserved204: proc (){.cdecl.}
-
-  PGtkVBox* = ptr TGtkVBox
-  TGtkVBox* = object of TGtkBox
-
-  PGtkVBoxClass* = ptr TGtkVBoxClass
-  TGtkVBoxClass* = object of TGtkBoxClass
-
-  TGtkColorSelectionChangePaletteFunc* = proc (colors: PGdkColor, n_colors: gint){.
+    pixmap*: gdk2.PPixmap
+    mask*: gdk2.PBitmap
+
+  PDialogFlags* = ptr TDialogFlags
+  TDialogFlags* = int32
+  PResponseType* = ptr TResponseType
+  TResponseType* = int32
+  PDialog* = ptr TDialog
+  TDialog* = object of TWindow
+    vbox*: PWidget
+    action_area*: PWidget
+    separator*: PWidget
+
+  PDialogClass* = ptr TDialogClass
+  TDialogClass* = object of TWindowClass
+    response*: proc (dialog: PDialog, response_id: gint){.cdecl.}
+    closeFile*: proc (dialog: PDialog){.cdecl.}
+    reserved201: proc (){.cdecl.}
+    reserved202: proc (){.cdecl.}
+    reserved203: proc (){.cdecl.}
+    reserved204: proc (){.cdecl.}
+
+  PVBox* = ptr TVBox
+  TVBox* = object of TBox
+  PVBoxClass* = ptr TVBoxClass
+  TVBoxClass* = object of TBoxClass
+  TColorSelectionChangePaletteFunc* = proc (colors: gdk2.PColor, n_colors: gint){.
       cdecl.}
-  TGtkColorSelectionChangePaletteWithScreenFunc* = proc (screen: PGdkScreen,
-      colors: PGdkColor, n_colors: gint){.cdecl.}
-  PGtkColorSelection* = ptr TGtkColorSelection
-  TGtkColorSelection* = object of TGtkVBox
+  TColorSelectionChangePaletteWithScreenFunc* = proc (screen: gdk2.PScreen, 
+      colors: gdk2.PColor, n_colors: gint){.cdecl.}
+  PColorSelection* = ptr TColorSelection
+  TColorSelection* = object of TVBox
     private_data*: gpointer
 
-  PGtkColorSelectionClass* = ptr TGtkColorSelectionClass
-  TGtkColorSelectionClass* = object of TGtkVBoxClass
-    color_changed*: proc (color_selection: PGtkColorSelection){.cdecl.}
-    gtk_reserved211: proc (){.cdecl.}
-    gtk_reserved212: proc (){.cdecl.}
-    gtk_reserved213: proc (){.cdecl.}
-    gtk_reserved214: proc (){.cdecl.}
-
-  PGtkColorSelectionDialog* = ptr TGtkColorSelectionDialog
-  TGtkColorSelectionDialog* = object of TGtkDialog
-    colorsel*: PGtkWidget
-    ok_button*: PGtkWidget
-    cancel_button*: PGtkWidget
-    help_button*: PGtkWidget
-
-  PGtkColorSelectionDialogClass* = ptr TGtkColorSelectionDialogClass
-  TGtkColorSelectionDialogClass* = object of TGtkDialogClass
-    gtk_reserved221: proc (){.cdecl.}
-    gtk_reserved222: proc (){.cdecl.}
-    gtk_reserved223: proc (){.cdecl.}
-    gtk_reserved224: proc (){.cdecl.}
-
-  PGtkHBox* = ptr TGtkHBox
-  TGtkHBox* = object of TGtkBox
-
-  PGtkHBoxClass* = ptr TGtkHBoxClass
-  TGtkHBoxClass* = object of TGtkBoxClass
-
-  PGtkCombo* = ptr TGtkCombo
-  TGtkCombo* = object of TGtkHBox
-    entry*: PGtkWidget
-    button*: PGtkWidget
-    popup*: PGtkWidget
-    popwin*: PGtkWidget
-    list*: PGtkWidget
+  PColorSelectionClass* = ptr TColorSelectionClass
+  TColorSelectionClass* = object of TVBoxClass
+    color_changed*: proc (color_selection: PColorSelection){.cdecl.}
+    reserved211: proc (){.cdecl.}
+    reserved212: proc (){.cdecl.}
+    reserved213: proc (){.cdecl.}
+    reserved214: proc (){.cdecl.}
+
+  PColorSelectionDialog* = ptr TColorSelectionDialog
+  TColorSelectionDialog* = object of TDialog
+    colorsel*: PWidget
+    ok_button*: PWidget
+    cancel_button*: PWidget
+    help_button*: PWidget
+
+  PColorSelectionDialogClass* = ptr TColorSelectionDialogClass
+  TColorSelectionDialogClass* = object of TDialogClass
+    reserved221: proc (){.cdecl.}
+    reserved222: proc (){.cdecl.}
+    reserved223: proc (){.cdecl.}
+    reserved224: proc (){.cdecl.}
+
+  PHBox* = ptr THBox
+  THBox* = object of TBox
+  PHBoxClass* = ptr THBoxClass
+  THBoxClass* = object of TBoxClass
+  PCombo* = ptr TCombo
+  TCombo* = object of THBox
+    entry*: PWidget
+    button*: PWidget
+    popup*: PWidget
+    popwin*: PWidget
+    list*: PWidget
     entry_change_id*: guint
     list_change_id*: guint
-    GtkCombo_flag0*: guint16
+    Combo_flag0*: guint16
     current_button*: guint16
     activate_id*: guint
 
-  PGtkComboClass* = ptr TGtkComboClass
-  TGtkComboClass* = object of TGtkHBoxClass
-    gtk_reserved231: proc (){.cdecl.}
-    gtk_reserved232: proc (){.cdecl.}
-    gtk_reserved233: proc (){.cdecl.}
-    gtk_reserved234: proc (){.cdecl.}
-
-  PGtkCTreePos* = ptr TGtkCTreePos
-  TGtkCTreePos* = enum
-    GTK_CTREE_POS_BEFORE, GTK_CTREE_POS_AS_CHILD, GTK_CTREE_POS_AFTER
-  PGtkCTreeLineStyle* = ptr TGtkCTreeLineStyle
-  TGtkCTreeLineStyle* = enum
-    GTK_CTREE_LINES_NONE, GTK_CTREE_LINES_SOLID, GTK_CTREE_LINES_DOTTED,
-    GTK_CTREE_LINES_TABBED
-  PGtkCTreeExpanderStyle* = ptr TGtkCTreeExpanderStyle
-  TGtkCTreeExpanderStyle* = enum
-    GTK_CTREE_EXPANDER_NONE, GTK_CTREE_EXPANDER_SQUARE,
-    GTK_CTREE_EXPANDER_TRIANGLE, GTK_CTREE_EXPANDER_CIRCULAR
-  PGtkCTreeExpansionType* = ptr TGtkCTreeExpansionType
-  TGtkCTreeExpansionType* = enum
-    GTK_CTREE_EXPANSION_EXPAND, GTK_CTREE_EXPANSION_EXPAND_RECURSIVE,
-    GTK_CTREE_EXPANSION_COLLAPSE, GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE,
-    GTK_CTREE_EXPANSION_TOGGLE, GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE
-  PGtkCTree* = ptr TGtkCTree
-  PGtkCTreeNode* = ptr TGtkCTreeNode
-  TGtkCTreeFunc* = proc (ctree: PGtkCTree, node: PGtkCTreeNode, data: gpointer){.
-      cdecl.}
-  TGtkCTreeGNodeFunc* = proc (ctree: PGtkCTree, depth: guint, gnode: PGNode,
-                              cnode: PGtkCTreeNode, data: gpointer): gboolean{.
+  PComboClass* = ptr TComboClass
+  TComboClass* = object of THBoxClass
+    reserved231: proc (){.cdecl.}
+    reserved232: proc (){.cdecl.}
+    reserved233: proc (){.cdecl.}
+    reserved234: proc (){.cdecl.}
+
+  PCTreePos* = ptr TCTreePos
+  TCTreePos* = enum 
+    CTREE_POS_BEFORE, CTREE_POS_AS_CHILD, CTREE_POS_AFTER
+  PCTreeLineStyle* = ptr TCTreeLineStyle
+  TCTreeLineStyle* = enum 
+    CTREE_LINES_NONE, CTREE_LINES_SOLID, CTREE_LINES_DOTTED, CTREE_LINES_TABBED
+  PCTreeExpanderStyle* = ptr TCTreeExpanderStyle
+  TCTreeExpanderStyle* = enum 
+    CTREE_EXPANDER_NONE, CTREE_EXPANDER_SQUARE, CTREE_EXPANDER_TRIANGLE, 
+    CTREE_EXPANDER_CIRCULAR
+  PCTreeExpansionType* = ptr TCTreeExpansionType
+  TCTreeExpansionType* = enum 
+    CTREE_EXPANSION_EXPAND, CTREE_EXPANSION_EXPAND_RECURSIVE, 
+    CTREE_EXPANSION_COLLAPSE, CTREE_EXPANSION_COLLAPSE_RECURSIVE, 
+    CTREE_EXPANSION_TOGGLE, CTREE_EXPANSION_TOGGLE_RECURSIVE
+  PCTree* = ptr TCTree
+  PCTreeNode* = ptr TCTreeNode
+  TCTreeFunc* = proc (ctree: PCTree, node: PCTreeNode, data: gpointer){.cdecl.}
+  TCTreeGNodeFunc* = proc (ctree: PCTree, depth: guint, gnode: PGNode, 
+                           cnode: PCTreeNode, data: gpointer): gboolean{.cdecl.}
+  TCTreeCompareDragFunc* = proc (ctree: PCTree, source_node: PCTreeNode, 
+                                 new_parent: PCTreeNode, new_sibling: PCTreeNode): gboolean{.
       cdecl.}
-  TGtkCTreeCompareDragFunc* = proc (ctree: PGtkCTree,
-                                    source_node: PGtkCTreeNode,
-                                    new_parent: PGtkCTreeNode,
-                                    new_sibling: PGtkCTreeNode): gboolean{.cdecl.}
-  TGtkCTree* = object of TGtkCList
-    lines_gc*: PGdkGC
+  TCTree* = object of TCList
+    lines_gc*: gdk2.PGC
     tree_indent*: gint
     tree_spacing*: gint
     tree_column*: gint
-    GtkCTree_flag0*: guint16
-    drag_compare*: TGtkCTreeCompareDragFunc
+    CTree_flag0*: guint16
+    drag_compare*: TCTreeCompareDragFunc
 
-  PGtkCTreeClass* = ptr TGtkCTreeClass
-  TGtkCTreeClass* = object of TGtkCListClass
-    tree_select_row*: proc (ctree: PGtkCTree, row: PGtkCTreeNode, column: gint){.
-        cdecl.}
-    tree_unselect_row*: proc (ctree: PGtkCTree, row: PGtkCTreeNode, column: gint){.
+  PCTreeClass* = ptr TCTreeClass
+  TCTreeClass* = object of TCListClass
+    tree_select_row*: proc (ctree: PCTree, row: PCTreeNode, column: gint){.cdecl.}
+    tree_unselect_row*: proc (ctree: PCTree, row: PCTreeNode, column: gint){.
         cdecl.}
-    tree_expand*: proc (ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl.}
-    tree_collapse*: proc (ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl.}
-    tree_move*: proc (ctree: PGtkCTree, node: PGtkCTreeNode,
-                      new_parent: PGtkCTreeNode, new_sibling: PGtkCTreeNode){.
-        cdecl.}
-    change_focus_row_expansion*: proc (ctree: PGtkCTree,
-                                       action: TGtkCTreeExpansionType){.cdecl.}
-
-  PGtkCTreeRow* = ptr TGtkCTreeRow
-  TGtkCTreeRow* {.final, pure.} = object
-    row*: TGtkCListRow
-    parent*: PGtkCTreeNode
-    sibling*: PGtkCTreeNode
-    children*: PGtkCTreeNode
-    pixmap_closed*: PGdkPixmap
-    mask_closed*: PGdkBitmap
-    pixmap_opened*: PGdkPixmap
-    mask_opened*: PGdkBitmap
+    tree_expand*: proc (ctree: PCTree, node: PCTreeNode){.cdecl.}
+    tree_collapse*: proc (ctree: PCTree, node: PCTreeNode){.cdecl.}
+    tree_move*: proc (ctree: PCTree, node: PCTreeNode, new_parent: PCTreeNode, 
+                      new_sibling: PCTreeNode){.cdecl.}
+    change_focus_row_expansion*: proc (ctree: PCTree, 
+                                       action: TCTreeExpansionType){.cdecl.}
+
+  PCTreeRow* = ptr TCTreeRow
+  TCTreeRow*{.final, pure.} = object 
+    row*: TCListRow
+    parent*: PCTreeNode
+    sibling*: PCTreeNode
+    children*: PCTreeNode
+    pixmap_closed*: gdk2.PPixmap
+    mask_closed*: gdk2.PBitmap
+    pixmap_opened*: gdk2.PPixmap
+    mask_opened*: gdk2.PBitmap
     level*: guint16
-    GtkCTreeRow_flag0*: guint16
+    CTreeRow_flag0*: guint16
 
-  TGtkCTreeNode* {.final, pure.} = object
+  TCTreeNode*{.final, pure.} = object 
     list*: TGList
 
-  PGtkDrawingArea* = ptr TGtkDrawingArea
-  TGtkDrawingArea* = object of TGtkWidget
+  PDrawingArea* = ptr TDrawingArea
+  TDrawingArea* = object of TWidget
     draw_data*: gpointer
 
-  PGtkDrawingAreaClass* = ptr TGtkDrawingAreaClass
-  TGtkDrawingAreaClass* = object of TGtkWidgetClass
-    gtk_reserved241: proc (){.cdecl.}
-    gtk_reserved242: proc (){.cdecl.}
-    gtk_reserved243: proc (){.cdecl.}
-    gtk_reserved244: proc (){.cdecl.}
+  PDrawingAreaClass* = ptr TDrawingAreaClass
+  TDrawingAreaClass* = object of TWidgetClass
+    reserved241: proc (){.cdecl.}
+    reserved242: proc (){.cdecl.}
+    reserved243: proc (){.cdecl.}
+    reserved244: proc (){.cdecl.}
 
   Tctlpoint* = array[0..1, gfloat]
   Pctlpoint* = ptr Tctlpoint
-  PGtkCurve* = ptr TGtkCurve
-  TGtkCurve* = object of TGtkDrawingArea
+  PCurve* = ptr TCurve
+  TCurve* = object of TDrawingArea
     cursor_type*: gint
     min_x*: gfloat
     max_x*: gfloat
     min_y*: gfloat
     max_y*: gfloat
-    pixmap*: PGdkPixmap
-    curve_type*: TGtkCurveType
+    pixmap*: gdk2.PPixmap
+    curve_type*: TCurveType
     height*: gint
     grab_point*: gint
     last*: gint
     num_points*: gint
-    point*: PGdkPoint
+    point*: gdk2.PPoint
     num_ctlpoints*: gint
     ctlpoint*: Pctlpoint
 
-  PGtkCurveClass* = ptr TGtkCurveClass
-  TGtkCurveClass* = object of TGtkDrawingAreaClass
-    curve_type_changed*: proc (curve: PGtkCurve){.cdecl.}
-    gtk_reserved251: proc (){.cdecl.}
-    gtk_reserved252: proc (){.cdecl.}
-    gtk_reserved253: proc (){.cdecl.}
-    gtk_reserved254: proc (){.cdecl.}
-
-  PGtkDestDefaults* = ptr TGtkDestDefaults
-  TGtkDestDefaults* = int32
-  PGtkTargetFlags* = ptr TGtkTargetFlags
-  TGtkTargetFlags* = int32
-  PGtkEditable* = pointer
-  PGtkEditableClass* = ptr TGtkEditableClass
-  TGtkEditableClass* = object of TGTypeInterface
-    insert_text*: proc (editable: PGtkEditable, text: cstring, length: gint,
+  PCurveClass* = ptr TCurveClass
+  TCurveClass* = object of TDrawingAreaClass
+    curve_type_changed*: proc (curve: PCurve){.cdecl.}
+    reserved251: proc (){.cdecl.}
+    reserved252: proc (){.cdecl.}
+    reserved253: proc (){.cdecl.}
+    reserved254: proc (){.cdecl.}
+
+  PDestDefaults* = ptr TDestDefaults
+  TDestDefaults* = int32
+  PTargetFlags* = ptr TTargetFlags
+  TTargetFlags* = int32
+  PEditable* = pointer
+  PEditableClass* = ptr TEditableClass
+  TEditableClass* = object of TGTypeInterface
+    insert_text*: proc (editable: PEditable, text: cstring, length: gint, 
                         position: Pgint){.cdecl.}
-    delete_text*: proc (editable: PGtkEditable, start_pos: gint, end_pos: gint){.
+    delete_text*: proc (editable: PEditable, start_pos: gint, end_pos: gint){.
         cdecl.}
-    changed*: proc (editable: PGtkEditable){.cdecl.}
-    do_insert_text*: proc (editable: PGtkEditable, text: cstring, length: gint,
+    changed*: proc (editable: PEditable){.cdecl.}
+    do_insert_text*: proc (editable: PEditable, text: cstring, length: gint, 
                            position: Pgint){.cdecl.}
-    do_delete_text*: proc (editable: PGtkEditable, start_pos: gint,
-                           end_pos: gint){.cdecl.}
-    get_chars*: proc (editable: PGtkEditable, start_pos: gint, end_pos: gint): cstring{.
+    do_delete_text*: proc (editable: PEditable, start_pos: gint, end_pos: gint){.
+        cdecl.}
+    get_chars*: proc (editable: PEditable, start_pos: gint, end_pos: gint): cstring{.
         cdecl.}
-    set_selection_bounds*: proc (editable: PGtkEditable, start_pos: gint,
+    set_selection_bounds*: proc (editable: PEditable, start_pos: gint, 
                                  end_pos: gint){.cdecl.}
-    get_selection_bounds*: proc (editable: PGtkEditable, start_pos: Pgint,
+    get_selection_bounds*: proc (editable: PEditable, start_pos: Pgint, 
                                  end_pos: Pgint): gboolean{.cdecl.}
-    set_position*: proc (editable: PGtkEditable, position: gint){.cdecl.}
-    get_position*: proc (editable: PGtkEditable): gint{.cdecl.}
-
-  PGtkIMContext* = ptr TGtkIMContext
-  TGtkIMContext* = object of TGObject
-
-  PGtkIMContextClass* = ptr TGtkIMContextClass
-  TGtkIMContextClass* = object of TGtkObjectClass
-    preedit_start*: proc (context: PGtkIMContext){.cdecl.}
-    preedit_end*: proc (context: PGtkIMContext){.cdecl.}
-    preedit_changed*: proc (context: PGtkIMContext){.cdecl.}
-    commit*: proc (context: PGtkIMContext, str: cstring){.cdecl.}
-    retrieve_surrounding*: proc (context: PGtkIMContext): gboolean{.cdecl.}
-    delete_surrounding*: proc (context: PGtkIMContext, offset: gint,
-                               n_chars: gint): gboolean{.cdecl.}
-    set_client_window*: proc (context: PGtkIMContext, window: PGdkWindow){.cdecl.}
-    get_preedit_string*: proc (context: PGtkIMContext, str: PPgchar,
-                               attrs: var PPangoAttrList, cursor_pos: Pgint){.
-        cdecl.}
-    filter_keypress*: proc (context: PGtkIMContext, event: PGdkEventKey): gboolean{.
+    set_position*: proc (editable: PEditable, position: gint){.cdecl.}
+    get_position*: proc (editable: PEditable): gint{.cdecl.}
+
+  PIMContext* = ptr TIMContext
+  TIMContext* = object of TGObject
+  PIMContextClass* = ptr TIMContextClass
+  TIMContextClass* = object of TObjectClass
+    preedit_start*: proc (context: PIMContext){.cdecl.}
+    preedit_end*: proc (context: PIMContext){.cdecl.}
+    preedit_changed*: proc (context: PIMContext){.cdecl.}
+    commit*: proc (context: PIMContext, str: cstring){.cdecl.}
+    retrieve_surrounding*: proc (context: PIMContext): gboolean{.cdecl.}
+    delete_surrounding*: proc (context: PIMContext, offset: gint, n_chars: gint): gboolean{.
         cdecl.}
-    focus_in*: proc (context: PGtkIMContext){.cdecl.}
-    focus_out*: proc (context: PGtkIMContext){.cdecl.}
-    reset*: proc (context: PGtkIMContext){.cdecl.}
-    set_cursor_location*: proc (context: PGtkIMContext, area: PGdkRectangle){.
+    set_client_window*: proc (context: PIMContext, window: gdk2.PWindow){.cdecl.}
+    get_preedit_string*: proc (context: PIMContext, str: PPgchar, 
+                               attrs: var pango.PAttrList, cursor_pos: Pgint){.
         cdecl.}
-    set_use_preedit*: proc (context: PGtkIMContext, use_preedit: gboolean){.
+    filter_keypress*: proc (context: PIMContext, event: gdk2.PEventKey): gboolean{.
         cdecl.}
-    set_surrounding*: proc (context: PGtkIMContext, text: cstring, len: gint,
+    focus_in*: proc (context: PIMContext){.cdecl.}
+    focus_out*: proc (context: PIMContext){.cdecl.}
+    reset*: proc (context: PIMContext){.cdecl.}
+    set_cursor_location*: proc (context: PIMContext, area: gdk2.PRectangle){.cdecl.}
+    set_use_preedit*: proc (context: PIMContext, use_preedit: gboolean){.cdecl.}
+    set_surrounding*: proc (context: PIMContext, text: cstring, len: gint, 
                             cursor_index: gint){.cdecl.}
-    get_surrounding*: proc (context: PGtkIMContext, text: PPgchar,
+    get_surrounding*: proc (context: PIMContext, text: PPgchar, 
                             cursor_index: Pgint): gboolean{.cdecl.}
-    gtk_reserved261: proc (){.cdecl.}
-    gtk_reserved262: proc (){.cdecl.}
-    gtk_reserved263: proc (){.cdecl.}
-    gtk_reserved264: proc (){.cdecl.}
-    gtk_reserved265: proc (){.cdecl.}
-    gtk_reserved266: proc (){.cdecl.}
-
-  PGtkMenuShell* = ptr TGtkMenuShell
-  TGtkMenuShell* = object of TGtkContainer
+    reserved261: proc (){.cdecl.}
+    reserved262: proc (){.cdecl.}
+    reserved263: proc (){.cdecl.}
+    reserved264: proc (){.cdecl.}
+    reserved265: proc (){.cdecl.}
+    reserved266: proc (){.cdecl.}
+
+  PMenuShell* = ptr TMenuShell
+  TMenuShell* = object of TContainer
     children*: PGList
-    active_menu_item*: PGtkWidget
-    parent_menu_shell*: PGtkWidget
+    active_menu_item*: PWidget
+    parent_menu_shell*: PWidget
     button*: guint
     activate_time*: guint32
-    GtkMenuShell_flag0*: guint16
-
-  PGtkMenuShellClass* = ptr TGtkMenuShellClass
-  TGtkMenuShellClass* = object of TGtkContainerClass
-    GtkMenuShellClass_flag0*: guint16
-    deactivate*: proc (menu_shell: PGtkMenuShell){.cdecl.}
-    selection_done*: proc (menu_shell: PGtkMenuShell){.cdecl.}
-    move_current*: proc (menu_shell: PGtkMenuShell,
-                         direction: TGtkMenuDirectionType){.cdecl.}
-    activate_current*: proc (menu_shell: PGtkMenuShell, force_hide: gboolean){.
+    MenuShell_flag0*: guint16
+
+  PMenuShellClass* = ptr TMenuShellClass
+  TMenuShellClass* = object of TContainerClass
+    MenuShellClass_flag0*: guint16
+    deactivate*: proc (menu_shell: PMenuShell){.cdecl.}
+    selection_done*: proc (menu_shell: PMenuShell){.cdecl.}
+    move_current*: proc (menu_shell: PMenuShell, direction: TMenuDirectionType){.
         cdecl.}
-    cancel*: proc (menu_shell: PGtkMenuShell){.cdecl.}
-    select_item*: proc (menu_shell: PGtkMenuShell, menu_item: PGtkWidget){.cdecl.}
-    insert*: proc (menu_shell: PGtkMenuShell, child: PGtkWidget, position: gint){.
+    activate_current*: proc (menu_shell: PMenuShell, force_hide: gboolean){.
         cdecl.}
-    gtk_reserved271: proc (){.cdecl.}
-    gtk_reserved272: proc (){.cdecl.}
-    gtk_reserved273: proc (){.cdecl.}
-    gtk_reserved274: proc (){.cdecl.}
-
-  TGtkMenuPositionFunc* = proc (menu: PGtkMenu, x: Pgint, y: Pgint,
-                                push_in: Pgboolean, user_data: gpointer){.cdecl.}
-  TGtkMenuDetachFunc* = proc (attach_widget: PGtkWidget, menu: PGtkMenu){.cdecl.}
-  TGtkMenu* = object of TGtkMenuShell
-    parent_menu_item*: PGtkWidget
-    old_active_menu_item*: PGtkWidget
-    accel_group*: PGtkAccelGroup
+    cancel*: proc (menu_shell: PMenuShell){.cdecl.}
+    select_item*: proc (menu_shell: PMenuShell, menu_item: PWidget){.cdecl.}
+    insert*: proc (menu_shell: PMenuShell, child: PWidget, position: gint){.
+        cdecl.}
+    reserved271: proc (){.cdecl.}
+    reserved272: proc (){.cdecl.}
+    reserved273: proc (){.cdecl.}
+    reserved274: proc (){.cdecl.}
+
+  TMenuPositionFunc* = proc (menu: PMenu, x: Pgint, y: Pgint, 
+                             push_in: Pgboolean, user_data: gpointer){.cdecl.}
+  TMenuDetachFunc* = proc (attach_widget: PWidget, menu: PMenu){.cdecl.}
+  TMenu* = object of TMenuShell
+    parent_menu_item*: PWidget
+    old_active_menu_item*: PWidget
+    accel_group*: PAccelGroup
     accel_path*: cstring
-    position_func*: TGtkMenuPositionFunc
+    position_func*: TMenuPositionFunc
     position_func_data*: gpointer
     toggle_size*: guint
-    toplevel*: PGtkWidget
-    tearoff_window*: PGtkWidget
-    tearoff_hbox*: PGtkWidget
-    tearoff_scrollbar*: PGtkWidget
-    tearoff_adjustment*: PGtkAdjustment
-    view_window*: PGdkWindow
-    bin_window*: PGdkWindow
+    toplevel*: PWidget
+    tearoff_window*: PWidget
+    tearoff_hbox*: PWidget
+    tearoff_scrollbar*: PWidget
+    tearoff_adjustment*: PAdjustment
+    view_window*: gdk2.PWindow
+    bin_window*: gdk2.PWindow
     scroll_offset*: gint
     saved_scroll_offset*: gint
     scroll_step*: gint
     timeout_id*: guint
-    navigation_region*: PGdkRegion
+    navigation_region*: gdk2.PRegion
     navigation_timeout*: guint
-    GtkMenu_flag0*: guint16
+    Menu_flag0*: guint16
 
-  PGtkMenuClass* = ptr TGtkMenuClass
-  TGtkMenuClass* = object of TGtkMenuShellClass
-    gtk_reserved281: proc (){.cdecl.}
-    gtk_reserved282: proc (){.cdecl.}
-    gtk_reserved283: proc (){.cdecl.}
-    gtk_reserved284: proc (){.cdecl.}
+  PMenuClass* = ptr TMenuClass
+  TMenuClass* = object of TMenuShellClass
+    reserved281: proc (){.cdecl.}
+    reserved282: proc (){.cdecl.}
+    reserved283: proc (){.cdecl.}
+    reserved284: proc (){.cdecl.}
 
-  PGtkEntry* = ptr TGtkEntry
-  TGtkEntry* = object of TGtkWidget
+  PEntry* = ptr TEntry
+  TEntry* = object of TWidget
     text*: cstring
-    GtkEntry_flag0*: guint16
+    Entry_flag0*: guint16
     text_length*: guint16
     text_max_length*: guint16
-    text_area*: PGdkWindow
-    im_context*: PGtkIMContext
-    popup_menu*: PGtkWidget
+    text_area*: gdk2.PWindow
+    im_context*: PIMContext
+    popup_menu*: PWidget
     current_pos*: gint
     selection_bound*: gint
-    cached_layout*: PPangoLayout
+    cached_layout*: pango.PLayout
     flag1*: guint16
     button*: guint
     blink_timeout*: guint
@@ -1417,206 +1375,197 @@ type
     invisible_char*: gunichar
     width_chars*: gint
 
-  PGtkEntryClass* = ptr TGtkEntryClass
-  TGtkEntryClass* = object of TGtkWidgetClass
-    populate_popup*: proc (entry: PGtkEntry, menu: PGtkMenu){.cdecl.}
-    activate*: proc (entry: PGtkEntry){.cdecl.}
-    move_cursor*: proc (entry: PGtkEntry, step: TGtkMovementStep, count: gint,
+  PEntryClass* = ptr TEntryClass
+  TEntryClass* = object of TWidgetClass
+    populate_popup*: proc (entry: PEntry, menu: PMenu){.cdecl.}
+    activate*: proc (entry: PEntry){.cdecl.}
+    move_cursor*: proc (entry: PEntry, step: TMovementStep, count: gint, 
                         extend_selection: gboolean){.cdecl.}
-    insert_at_cursor*: proc (entry: PGtkEntry, str: cstring){.cdecl.}
-    delete_from_cursor*: proc (entry: PGtkEntry, thetype: TGtkDeleteType,
-                               count: gint){.cdecl.}
-    cut_clipboard*: proc (entry: PGtkEntry){.cdecl.}
-    copy_clipboard*: proc (entry: PGtkEntry){.cdecl.}
-    paste_clipboard*: proc (entry: PGtkEntry){.cdecl.}
-    toggle_overwrite*: proc (entry: PGtkEntry){.cdecl.}
-    gtk_reserved291: proc (){.cdecl.}
-    gtk_reserved292: proc (){.cdecl.}
-    gtk_reserved293: proc (){.cdecl.}
-    gtk_reserved294: proc (){.cdecl.}
-
-  PGtkEventBox* = ptr TGtkEventBox
-  TGtkEventBox* = object of TGtkBin
-
-  PGtkEventBoxClass* = ptr TGtkEventBoxClass
-  TGtkEventBoxClass* = object of TGtkBinClass
-
-  PGtkFileSelection* = ptr TGtkFileSelection
-  TGtkFileSelection* = object of TGtkDialog
-    dir_list*: PGtkWidget
-    file_list*: PGtkWidget
-    selection_entry*: PGtkWidget
-    selection_text*: PGtkWidget
-    main_vbox*: PGtkWidget
-    ok_button*: PGtkWidget
-    cancel_button*: PGtkWidget
-    help_button*: PGtkWidget
-    history_pulldown*: PGtkWidget
-    history_menu*: PGtkWidget
+    insert_at_cursor*: proc (entry: PEntry, str: cstring){.cdecl.}
+    delete_from_cursor*: proc (entry: PEntry, thetype: TDeleteType, count: gint){.
+        cdecl.}
+    cut_clipboard*: proc (entry: PEntry){.cdecl.}
+    copy_clipboard*: proc (entry: PEntry){.cdecl.}
+    paste_clipboard*: proc (entry: PEntry){.cdecl.}
+    toggle_overwrite*: proc (entry: PEntry){.cdecl.}
+    reserved291: proc (){.cdecl.}
+    reserved292: proc (){.cdecl.}
+    reserved293: proc (){.cdecl.}
+    reserved294: proc (){.cdecl.}
+
+  PEventBox* = ptr TEventBox
+  TEventBox* = object of TBin
+  PEventBoxClass* = ptr TEventBoxClass
+  TEventBoxClass* = object of TBinClass
+  PFileSelection* = ptr TFileSelection
+  TFileSelection* = object of TDialog
+    dir_list*: PWidget
+    file_list*: PWidget
+    selection_entry*: PWidget
+    selection_text*: PWidget
+    main_vbox*: PWidget
+    ok_button*: PWidget
+    cancel_button*: PWidget
+    help_button*: PWidget
+    history_pulldown*: PWidget
+    history_menu*: PWidget
     history_list*: PGList
-    fileop_dialog*: PGtkWidget
-    fileop_entry*: PGtkWidget
+    fileop_dialog*: PWidget
+    fileop_entry*: PWidget
     fileop_file*: cstring
     cmpl_state*: gpointer
-    fileop_c_dir*: PGtkWidget
-    fileop_del_file*: PGtkWidget
-    fileop_ren_file*: PGtkWidget
-    button_area*: PGtkWidget
-    gtkFileSelection_action_area*: PGtkWidget
+    fileop_c_dir*: PWidget
+    fileop_del_file*: PWidget
+    fileop_ren_file*: PWidget
+    button_area*: PWidget
+    FileSelection_action_area*: PWidget
     selected_names*: PGPtrArray
     last_selected*: cstring
 
-  PGtkFileSelectionClass* = ptr TGtkFileSelectionClass
-  TGtkFileSelectionClass* = object of TGtkDialogClass
-    gtk_reserved301: proc (){.cdecl.}
-    gtk_reserved302: proc (){.cdecl.}
-    gtk_reserved303: proc (){.cdecl.}
-    gtk_reserved304: proc (){.cdecl.}
+  PFileSelectionClass* = ptr TFileSelectionClass
+  TFileSelectionClass* = object of TDialogClass
+    reserved301: proc (){.cdecl.}
+    reserved302: proc (){.cdecl.}
+    reserved303: proc (){.cdecl.}
+    reserved304: proc (){.cdecl.}
 
-  PGtkFixed* = ptr TGtkFixed
-  TGtkFixed* = object of TGtkContainer
+  PFixed* = ptr TFixed
+  TFixed* = object of TContainer
     children*: PGList
 
-  PGtkFixedClass* = ptr TGtkFixedClass
-  TGtkFixedClass* = object of TGtkContainerClass
-
-  PGtkFixedChild* = ptr TGtkFixedChild
-  TGtkFixedChild* {.final, pure.} = object
-    widget*: PGtkWidget
+  PFixedClass* = ptr TFixedClass
+  TFixedClass* = object of TContainerClass
+  PFixedChild* = ptr TFixedChild
+  TFixedChild*{.final, pure.} = object 
+    widget*: PWidget
     x*: gint
     y*: gint
 
-  PGtkFontSelection* = ptr TGtkFontSelection
-  TGtkFontSelection* = object of TGtkVBox
-    font_entry*: PGtkWidget
-    family_list*: PGtkWidget
-    font_style_entry*: PGtkWidget
-    face_list*: PGtkWidget
-    size_entry*: PGtkWidget
-    size_list*: PGtkWidget
-    pixels_button*: PGtkWidget
-    points_button*: PGtkWidget
-    filter_button*: PGtkWidget
-    preview_entry*: PGtkWidget
-    family*: PPangoFontFamily
-    face*: PPangoFontFace
+  PFontSelection* = ptr TFontSelection
+  TFontSelection* = object of TVBox
+    font_entry*: PWidget
+    family_list*: PWidget
+    font_style_entry*: PWidget
+    face_list*: PWidget
+    size_entry*: PWidget
+    size_list*: PWidget
+    pixels_button*: PWidget
+    points_button*: PWidget
+    filter_button*: PWidget
+    preview_entry*: PWidget
+    family*: pango.PFontFamily
+    face*: pango.PFontFace
     size*: gint
-    font*: PGdkFont
-
-  PGtkFontSelectionClass* = ptr TGtkFontSelectionClass
-  TGtkFontSelectionClass* = object of TGtkVBoxClass
-    gtk_reserved311: proc (){.cdecl.}
-    gtk_reserved312: proc (){.cdecl.}
-    gtk_reserved313: proc (){.cdecl.}
-    gtk_reserved314: proc (){.cdecl.}
-
-  PGtkFontSelectionDialog* = ptr TGtkFontSelectionDialog
-  TGtkFontSelectionDialog* = object of TGtkDialog
-    fontsel*: PGtkWidget
-    main_vbox*: PGtkWidget
-    GtkFontSelectionDialog_action_area*: PGtkWidget
-    ok_button*: PGtkWidget
-    apply_button*: PGtkWidget
-    cancel_button*: PGtkWidget
+    font*: gdk2.PFont
+
+  PFontSelectionClass* = ptr TFontSelectionClass
+  TFontSelectionClass* = object of TVBoxClass
+    reserved311: proc (){.cdecl.}
+    reserved312: proc (){.cdecl.}
+    reserved313: proc (){.cdecl.}
+    reserved314: proc (){.cdecl.}
+
+  PFontSelectionDialog* = ptr TFontSelectionDialog
+  TFontSelectionDialog* = object of TDialog
+    fontsel*: PWidget
+    main_vbox*: PWidget
+    FontSelectionDialog_action_area*: PWidget
+    ok_button*: PWidget
+    apply_button*: PWidget
+    cancel_button*: PWidget
     dialog_width*: gint
     auto_resize*: gboolean
 
-  PGtkFontSelectionDialogClass* = ptr TGtkFontSelectionDialogClass
-  TGtkFontSelectionDialogClass* = object of TGtkDialogClass
-    gtk_reserved321: proc (){.cdecl.}
-    gtk_reserved322: proc (){.cdecl.}
-    gtk_reserved323: proc (){.cdecl.}
-    gtk_reserved324: proc (){.cdecl.}
-
-  PGtkGammaCurve* = ptr TGtkGammaCurve
-  TGtkGammaCurve* = object of TGtkVBox
-    table*: PGtkWidget
-    curve*: PGtkWidget
-    button*: array[0..4, PGtkWidget]
+  PFontSelectionDialogClass* = ptr TFontSelectionDialogClass
+  TFontSelectionDialogClass* = object of TDialogClass
+    reserved321: proc (){.cdecl.}
+    reserved322: proc (){.cdecl.}
+    reserved323: proc (){.cdecl.}
+    reserved324: proc (){.cdecl.}
+
+  PGammaCurve* = ptr TGammaCurve
+  TGammaCurve* = object of TVBox
+    table*: PWidget
+    curve*: PWidget
+    button*: array[0..4, PWidget]
     gamma*: gfloat
-    gamma_dialog*: PGtkWidget
-    gamma_text*: PGtkWidget
-
-  PGtkGammaCurveClass* = ptr TGtkGammaCurveClass
-  TGtkGammaCurveClass* = object of TGtkVBoxClass
-    gtk_reserved331: proc (){.cdecl.}
-    gtk_reserved332: proc (){.cdecl.}
-    gtk_reserved333: proc (){.cdecl.}
-    gtk_reserved334: proc (){.cdecl.}
-
-  PGtkHandleBox* = ptr TGtkHandleBox
-  TGtkHandleBox* = object of TGtkBin
-    bin_window*: PGdkWindow
-    float_window*: PGdkWindow
-    shadow_type*: TGtkShadowType
-    GtkHandleBox_flag0*: guint16
+    gamma_dialog*: PWidget
+    gamma_text*: PWidget
+
+  PGammaCurveClass* = ptr TGammaCurveClass
+  TGammaCurveClass* = object of TVBoxClass
+    reserved331: proc (){.cdecl.}
+    reserved332: proc (){.cdecl.}
+    reserved333: proc (){.cdecl.}
+    reserved334: proc (){.cdecl.}
+
+  PHandleBox* = ptr THandleBox
+  THandleBox* = object of TBin
+    bin_window*: gdk2.PWindow
+    float_window*: gdk2.PWindow
+    shadow_type*: TShadowType
+    HandleBox_flag0*: guint16
     deskoff_x*: gint
     deskoff_y*: gint
-    attach_allocation*: TGtkAllocation
-    float_allocation*: TGtkAllocation
-
-  PGtkHandleBoxClass* = ptr TGtkHandleBoxClass
-  TGtkHandleBoxClass* = object of TGtkBinClass
-    child_attached*: proc (handle_box: PGtkHandleBox, child: PGtkWidget){.cdecl.}
-    child_detached*: proc (handle_box: PGtkHandleBox, child: PGtkWidget){.cdecl.}
-    gtk_reserved341: proc (){.cdecl.}
-    gtk_reserved342: proc (){.cdecl.}
-    gtk_reserved343: proc (){.cdecl.}
-    gtk_reserved344: proc (){.cdecl.}
-
-  PGtkPaned* = ptr TGtkPaned
-  TGtkPaned* = object of TGtkContainer
-    child1*: PGtkWidget
-    child2*: PGtkWidget
-    handle*: PGdkWindow
-    xor_gc*: PGdkGC
-    cursor_type*: TGdkCursorType
-    handle_pos*: TGdkRectangle
+    attach_allocation*: TAllocation
+    float_allocation*: TAllocation
+
+  PHandleBoxClass* = ptr THandleBoxClass
+  THandleBoxClass* = object of TBinClass
+    child_attached*: proc (handle_box: PHandleBox, child: PWidget){.cdecl.}
+    child_detached*: proc (handle_box: PHandleBox, child: PWidget){.cdecl.}
+    reserved341: proc (){.cdecl.}
+    reserved342: proc (){.cdecl.}
+    reserved343: proc (){.cdecl.}
+    reserved344: proc (){.cdecl.}
+
+  PPaned* = ptr TPaned
+  TPaned* = object of TContainer
+    child1*: PWidget
+    child2*: PWidget
+    handle*: gdk2.PWindow
+    xor_gc*: gdk2.PGC
+    cursor_type*: gdk2.TCursorType
+    handle_pos*: gdk2.TRectangle
     child1_size*: gint
     last_allocation*: gint
     min_position*: gint
     max_position*: gint
-    GtkPaned_flag0*: guint16
-    last_child1_focus*: PGtkWidget
-    last_child2_focus*: PGtkWidget
-    saved_focus*: PGtkWidget
+    Paned_flag0*: guint16
+    last_child1_focus*: PWidget
+    last_child2_focus*: PWidget
+    saved_focus*: PWidget
     drag_pos*: gint
     original_position*: gint
 
-  PGtkPanedClass* = ptr TGtkPanedClass
-  TGtkPanedClass* = object of TGtkContainerClass
-    cycle_child_focus*: proc (paned: PGtkPaned, reverse: gboolean): gboolean{.
-        cdecl.}
-    toggle_handle_focus*: proc (paned: PGtkPaned): gboolean{.cdecl.}
-    move_handle*: proc (paned: PGtkPaned, scroll: TGtkScrollType): gboolean{.
+  PPanedClass* = ptr TPanedClass
+  TPanedClass* = object of TContainerClass
+    cycle_child_focus*: proc (paned: PPaned, reverse: gboolean): gboolean{.cdecl.}
+    toggle_handle_focus*: proc (paned: PPaned): gboolean{.cdecl.}
+    move_handle*: proc (paned: PPaned, scroll: TScrollType): gboolean{.cdecl.}
+    cycle_handle_focus*: proc (paned: PPaned, reverse: gboolean): gboolean{.
         cdecl.}
-    cycle_handle_focus*: proc (paned: PGtkPaned, reverse: gboolean): gboolean{.
-        cdecl.}
-    accept_position*: proc (paned: PGtkPaned): gboolean{.cdecl.}
-    cancel_position*: proc (paned: PGtkPaned): gboolean{.cdecl.}
-    gtk_reserved351: proc (){.cdecl.}
-    gtk_reserved352: proc (){.cdecl.}
-    gtk_reserved353: proc (){.cdecl.}
-    gtk_reserved354: proc (){.cdecl.}
-
-  PGtkHButtonBox* = ptr TGtkHButtonBox
-  TGtkHButtonBox* = object of TGtkButtonBox
-
-  PGtkHButtonBoxClass* = ptr TGtkHButtonBoxClass
-  TGtkHButtonBoxClass* = object of TGtkButtonBoxClass
-
-  PGtkHPaned* = ptr TGtkHPaned
-  TGtkHPaned* = object of TGtkPaned
-
-  PGtkHPanedClass* = ptr TGtkHPanedClass
-  TGtkHPanedClass* = object of TGtkPanedClass
-
-  PGtkRulerMetric* = ptr TGtkRulerMetric
-  PGtkRuler* = ptr TGtkRuler
-  TGtkRuler* = object of TGtkWidget
-    backing_store*: PGdkPixmap
-    non_gr_exp_gc*: PGdkGC
-    metric*: PGtkRulerMetric
+    accept_position*: proc (paned: PPaned): gboolean{.cdecl.}
+    cancel_position*: proc (paned: PPaned): gboolean{.cdecl.}
+    reserved351: proc (){.cdecl.}
+    reserved352: proc (){.cdecl.}
+    reserved353: proc (){.cdecl.}
+    reserved354: proc (){.cdecl.}
+
+  PHButtonBox* = ptr THButtonBox
+  THButtonBox* = object of TButtonBox
+  PHButtonBoxClass* = ptr THButtonBoxClass
+  THButtonBoxClass* = object of TButtonBoxClass
+  PHPaned* = ptr THPaned
+  THPaned* = object of TPaned
+  PHPanedClass* = ptr THPanedClass
+  THPanedClass* = object of TPanedClass
+  PRulerMetric* = ptr TRulerMetric
+  PRuler* = ptr TRuler
+  TRuler* = object of TWidget
+    backing_store*: gdk2.PPixmap
+    non_gr_exp_gc*: gdk2.PGC
+    metric*: PRulerMetric
     xsrc*: gint
     ysrc*: gint
     slider_size*: gint
@@ -1625,1106 +1574,1068 @@ type
     position*: gdouble
     max_size*: gdouble
 
-  PGtkRulerClass* = ptr TGtkRulerClass
-  TGtkRulerClass* = object of TGtkWidgetClass
-    draw_ticks*: proc (ruler: PGtkRuler){.cdecl.}
-    draw_pos*: proc (ruler: PGtkRuler){.cdecl.}
-    gtk_reserved361: proc (){.cdecl.}
-    gtk_reserved362: proc (){.cdecl.}
-    gtk_reserved363: proc (){.cdecl.}
-    gtk_reserved364: proc (){.cdecl.}
+  PRulerClass* = ptr TRulerClass
+  TRulerClass* = object of TWidgetClass
+    draw_ticks*: proc (ruler: PRuler){.cdecl.}
+    draw_pos*: proc (ruler: PRuler){.cdecl.}
+    reserved361: proc (){.cdecl.}
+    reserved362: proc (){.cdecl.}
+    reserved363: proc (){.cdecl.}
+    reserved364: proc (){.cdecl.}
 
-  TGtkRulerMetric* {.final, pure.} = object
+  TRulerMetric*{.final, pure.} = object 
     metric_name*: cstring
     abbrev*: cstring
     pixels_per_unit*: gdouble
     ruler_scale*: array[0..9, gdouble]
     subdivide*: array[0..4, gint]
 
-  PGtkHRuler* = ptr TGtkHRuler
-  TGtkHRuler* = object of TGtkRuler
-
-  PGtkHRulerClass* = ptr TGtkHRulerClass
-  TGtkHRulerClass* = object of TGtkRulerClass
-
-  PGtkRcContext* = pointer
-  PGtkSettings* = ptr TGtkSettings
-  TGtkSettings* = object of TGObject
+  PHRuler* = ptr THRuler
+  THRuler* = object of TRuler
+  PHRulerClass* = ptr THRulerClass
+  THRulerClass* = object of TRulerClass
+  PRcContext* = pointer
+  PSettings* = ptr TSettings
+  TSettings* = object of TGObject
     queued_settings*: PGData
     property_values*: PGValue
-    rc_context*: PGtkRcContext
-    screen*: PGdkScreen
-
-  PGtkSettingsClass* = ptr TGtkSettingsClass
-  TGtkSettingsClass* = object of TGObjectClass
+    rc_context*: PRcContext
+    screen*: gdk2.PScreen
 
-  PGtkSettingsValue* = ptr TGtkSettingsValue
-  TGtkSettingsValue* {.final, pure.} = object
+  PSettingsClass* = ptr TSettingsClass
+  TSettingsClass* = object of TGObjectClass
+  PSettingsValue* = ptr TSettingsValue
+  TSettingsValue*{.final, pure.} = object 
     origin*: cstring
     value*: TGValue
 
-  PGtkRcFlags* = ptr TGtkRcFlags
-  TGtkRcFlags* = int32
-  PGtkRcStyle* = ptr TGtkRcStyle
-  TGtkRcStyle* = object of TGObject
+  PRcFlags* = ptr TRcFlags
+  TRcFlags* = int32
+  PRcStyle* = ptr TRcStyle
+  TRcStyle* = object of TGObject
     name*: cstring
     bg_pixmap_name*: array[0..4, cstring]
-    font_desc*: PPangoFontDescription
-    color_flags*: array[0..4, TGtkRcFlags]
-    fg*: array[0..4, TGdkColor]
-    bg*: array[0..4, TGdkColor]
-    text*: array[0..4, TGdkColor]
-    base*: array[0..4, TGdkColor]
+    font_desc*: pango.PFontDescription
+    color_flags*: array[0..4, TRcFlags]
+    fg*: array[0..4, gdk2.TColor]
+    bg*: array[0..4, gdk2.TColor]
+    text*: array[0..4, gdk2.TColor]
+    base*: array[0..4, gdk2.TColor]
     xthickness*: gint
     ythickness*: gint
     rc_properties*: PGArray
     rc_style_lists*: PGSList
     icon_factories*: PGSList
-    GtkRcStyle_flag0*: guint16
-
-  PGtkRcStyleClass* = ptr TGtkRcStyleClass
-  TGtkRcStyleClass* = object of TGObjectClass
-    create_rc_style*: proc (rc_style: PGtkRcStyle): PGtkRcStyle{.cdecl.}
-    parse*: proc (rc_style: PGtkRcStyle, settings: PGtkSettings,
-                  scanner: PGScanner): guint{.cdecl.}
-    merge*: proc (dest: PGtkRcStyle, src: PGtkRcStyle){.cdecl.}
-    create_style*: proc (rc_style: PGtkRcStyle): PGtkStyle{.cdecl.}
-    gtk_reserved371: proc (){.cdecl.}
-    gtk_reserved372: proc (){.cdecl.}
-    gtk_reserved373: proc (){.cdecl.}
-    gtk_reserved374: proc (){.cdecl.}
-
-  PGtkRcTokenType* = ptr TGtkRcTokenType
-  TGtkRcTokenType* = enum
-    GTK_RC_TOKEN_INVALID, GTK_RC_TOKEN_INCLUDE, GTK_RC_TOKEN_NORMAL,
-    GTK_RC_TOKEN_ACTIVE, GTK_RC_TOKEN_PRELIGHT, GTK_RC_TOKEN_SELECTED,
-    GTK_RC_TOKEN_INSENSITIVE, GTK_RC_TOKEN_FG, GTK_RC_TOKEN_BG,
-    GTK_RC_TOKEN_TEXT, GTK_RC_TOKEN_BASE, GTK_RC_TOKEN_XTHICKNESS,
-    GTK_RC_TOKEN_YTHICKNESS, GTK_RC_TOKEN_FONT, GTK_RC_TOKEN_FONTSET,
-    GTK_RC_TOKEN_FONT_NAME, GTK_RC_TOKEN_BG_PIXMAP, GTK_RC_TOKEN_PIXMAP_PATH,
-    GTK_RC_TOKEN_STYLE, GTK_RC_TOKEN_BINDING, GTK_RC_TOKEN_BIND,
-    GTK_RC_TOKEN_WIDGET, GTK_RC_TOKEN_WIDGET_CLASS, GTK_RC_TOKEN_CLASS,
-    GTK_RC_TOKEN_LOWEST, GTK_RC_TOKEN_GTK, GTK_RC_TOKEN_APPLICATION,
-    GTK_RC_TOKEN_THEME, GTK_RC_TOKEN_RC, GTK_RC_TOKEN_HIGHEST,
-    GTK_RC_TOKEN_ENGINE, GTK_RC_TOKEN_MODULE_PATH, GTK_RC_TOKEN_IM_MODULE_PATH,
-    GTK_RC_TOKEN_IM_MODULE_FILE, GTK_RC_TOKEN_STOCK, GTK_RC_TOKEN_LTR,
-    GTK_RC_TOKEN_RTL, GTK_RC_TOKEN_LAST
-  PGtkRcProperty* = ptr TGtkRcProperty
-  TGtkRcProperty* {.final, pure.} = object
+    RcStyle_flag0*: guint16
+
+  PRcStyleClass* = ptr TRcStyleClass
+  TRcStyleClass* = object of TGObjectClass
+    create_rc_style*: proc (rc_style: PRcStyle): PRcStyle{.cdecl.}
+    parse*: proc (rc_style: PRcStyle, settings: PSettings, scanner: PGScanner): guint{.
+        cdecl.}
+    merge*: proc (dest: PRcStyle, src: PRcStyle){.cdecl.}
+    create_style*: proc (rc_style: PRcStyle): PStyle{.cdecl.}
+    reserved371: proc (){.cdecl.}
+    reserved372: proc (){.cdecl.}
+    reserved373: proc (){.cdecl.}
+    reserved374: proc (){.cdecl.}
+
+  PRcTokenType* = ptr TRcTokenType
+  TRcTokenType* = enum 
+    RC_TOKEN_INVALID, RC_TOKEN_INCLUDE, RC_TOKEN_NORMAL, RC_TOKEN_ACTIVE, 
+    RC_TOKEN_PRELIGHT, RC_TOKEN_SELECTED, RC_TOKEN_INSENSITIVE, RC_TOKEN_FG, 
+    RC_TOKEN_BG, RC_TOKEN_TEXT, RC_TOKEN_BASE, RC_TOKEN_XTHICKNESS, 
+    RC_TOKEN_YTHICKNESS, RC_TOKEN_FONT, RC_TOKEN_FONTSET, RC_TOKEN_FONT_NAME, 
+    RC_TOKEN_BG_PIXMAP, RC_TOKEN_PIXMAP_PATH, RC_TOKEN_STYLE, RC_TOKEN_BINDING, 
+    RC_TOKEN_BIND, RC_TOKEN_WIDGET, RC_TOKEN_WIDGET_CLASS, RC_TOKEN_CLASS, 
+    RC_TOKEN_LOWEST, RC_TOKEN_GTK, RC_TOKEN_APPLICATION, RC_TOKEN_THEME, 
+    RC_TOKEN_RC, RC_TOKEN_HIGHEST, RC_TOKEN_ENGINE, RC_TOKEN_MODULE_PATH, 
+    RC_TOKEN_IM_MODULE_PATH, RC_TOKEN_IM_MODULE_FILE, RC_TOKEN_STOCK, 
+    RC_TOKEN_LTR, RC_TOKEN_RTL, RC_TOKEN_LAST
+  PRcProperty* = ptr TRcProperty
+  TRcProperty*{.final, pure.} = object 
     type_name*: TGQuark
     property_name*: TGQuark
     origin*: cstring
     value*: TGValue
 
-  PGtkIconSource* = pointer
-  TGtkRcPropertyParser* = proc (pspec: PGParamSpec, rc_string: PGString,
-                                property_value: PGValue): gboolean{.cdecl.}
-  TGtkStyle* = object of TGObject
-    fg*: array[0..4, TGdkColor]
-    bg*: array[0..4, TGdkColor]
-    light*: array[0..4, TGdkColor]
-    dark*: array[0..4, TGdkColor]
-    mid*: array[0..4, TGdkColor]
-    text*: array[0..4, TGdkColor]
-    base*: array[0..4, TGdkColor]
-    text_aa*: array[0..4, TGdkColor]
-    black*: TGdkColor
-    white*: TGdkColor
-    font_desc*: PPangoFontDescription
+  PIconSource* = pointer
+  TRcPropertyParser* = proc (pspec: PGParamSpec, rc_string: PGString, 
+                             property_value: PGValue): gboolean{.cdecl.}
+  TStyle* = object of TGObject
+    fg*: array[0..4, gdk2.TColor]
+    bg*: array[0..4, gdk2.TColor]
+    light*: array[0..4, gdk2.TColor]
+    dark*: array[0..4, gdk2.TColor]
+    mid*: array[0..4, gdk2.TColor]
+    text*: array[0..4, gdk2.TColor]
+    base*: array[0..4, gdk2.TColor]
+    text_aa*: array[0..4, gdk2.TColor]
+    black*: gdk2.TColor
+    white*: gdk2.TColor
+    font_desc*: pango.PFontDescription
     xthickness*: gint
     ythickness*: gint
-    fg_gc*: array[0..4, PGdkGC]
-    bg_gc*: array[0..4, PGdkGC]
-    light_gc*: array[0..4, PGdkGC]
-    dark_gc*: array[0..4, PGdkGC]
-    mid_gc*: array[0..4, PGdkGC]
-    text_gc*: array[0..4, PGdkGC]
-    base_gc*: array[0..4, PGdkGC]
-    text_aa_gc*: array[0..4, PGdkGC]
-    black_gc*: PGdkGC
-    white_gc*: PGdkGC
-    bg_pixmap*: array[0..4, PGdkPixmap]
+    fg_gc*: array[0..4, gdk2.PGC]
+    bg_gc*: array[0..4, gdk2.PGC]
+    light_gc*: array[0..4, gdk2.PGC]
+    dark_gc*: array[0..4, gdk2.PGC]
+    mid_gc*: array[0..4, gdk2.PGC]
+    text_gc*: array[0..4, gdk2.PGC]
+    base_gc*: array[0..4, gdk2.PGC]
+    text_aa_gc*: array[0..4, gdk2.PGC]
+    black_gc*: gdk2.PGC
+    white_gc*: gdk2.PGC
+    bg_pixmap*: array[0..4, gdk2.PPixmap]
     attach_count*: gint
     depth*: gint
-    colormap*: PGdkColormap
-    private_font*: PGdkFont
-    private_font_desc*: PPangoFontDescription
-    rc_style*: PGtkRcStyle
+    colormap*: gdk2.PColormap
+    private_font*: gdk2.PFont
+    private_font_desc*: pango.PFontDescription
+    rc_style*: PRcStyle
     styles*: PGSList
     property_cache*: PGArray
     icon_factories*: PGSList
 
-  PGtkStyleClass* = ptr TGtkStyleClass
-  TGtkStyleClass* = object of TGObjectClass
-    realize*: proc (style: PGtkStyle){.cdecl.}
-    unrealize*: proc (style: PGtkStyle){.cdecl.}
-    copy*: proc (style: PGtkStyle, src: PGtkStyle){.cdecl.}
-    clone*: proc (style: PGtkStyle): PGtkStyle{.cdecl.}
-    init_from_rc*: proc (style: PGtkStyle, rc_style: PGtkRcStyle){.cdecl.}
-    set_background*: proc (style: PGtkStyle, window: PGdkWindow,
-                           state_type: TGtkStateType){.cdecl.}
-    render_icon*: proc (style: PGtkStyle, source: PGtkIconSource,
-                        direction: TGtkTextDirection, state: TGtkStateType,
-                        size: TGtkIconSize, widget: PGtkWidget, detail: cstring): PGdkPixbuf{.
+  PStyleClass* = ptr TStyleClass
+  TStyleClass* = object of TGObjectClass
+    realize*: proc (style: PStyle){.cdecl.}
+    unrealize*: proc (style: PStyle){.cdecl.}
+    copy*: proc (style: PStyle, src: PStyle){.cdecl.}
+    clone*: proc (style: PStyle): PStyle{.cdecl.}
+    init_from_rc*: proc (style: PStyle, rc_style: PRcStyle){.cdecl.}
+    set_background*: proc (style: PStyle, window: gdk2.PWindow, 
+                           state_type: TStateType){.cdecl.}
+    render_icon*: proc (style: PStyle, source: PIconSource, 
+                        direction: TTextDirection, state: TStateType, 
+                        size: TIconSize, widget: PWidget, detail: cstring): gdk2pixbuf.PPixbuf{.
         cdecl.}
-    draw_hline*: proc (style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, area: PGdkRectangle,
-                       widget: PGtkWidget, detail: cstring, x1: gint, x2: gint,
+    draw_hline*: proc (style: PStyle, window: gdk2.PWindow, 
+                       state_type: TStateType, area: gdk2.PRectangle, 
+                       widget: PWidget, detail: cstring, x1: gint, x2: gint, 
                        y: gint){.cdecl.}
-    draw_vline*: proc (style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, area: PGdkRectangle,
-                       widget: PGtkWidget, detail: cstring, y1: gint, y2: gint,
+    draw_vline*: proc (style: PStyle, window: gdk2.PWindow, 
+                       state_type: TStateType, area: gdk2.PRectangle, 
+                       widget: PWidget, detail: cstring, y1: gint, y2: gint, 
                        x: gint){.cdecl.}
-    draw_shadow*: proc (style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
+    draw_shadow*: proc (style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, shadow_type: TShadowType, 
+                        area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
                         x: gint, y: gint, width: gint, height: gint){.cdecl.}
-    draw_polygon*: proc (style: PGtkStyle, window: PGdkWindow,
-                         state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                         area: PGdkRectangle, widget: PGtkWidget,
-                         detail: cstring, point: PGdkPoint, npoints: gint,
-                         fill: gboolean){.cdecl.}
-    draw_arrow*: proc (style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                       arrow_type: TGtkArrowType, fill: gboolean, x: gint,
-                       y: gint, width: gint, height: gint){.cdecl.}
-    draw_diamond*: proc (style: PGtkStyle, window: PGdkWindow,
-                         state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                         area: PGdkRectangle, widget: PGtkWidget,
-                         detail: cstring, x: gint, y: gint, width: gint,
-                         height: gint){.cdecl.}
-    draw_string*: proc (style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, area: PGdkRectangle,
-                        widget: PGtkWidget, detail: cstring, x: gint, y: gint,
+    draw_polygon*: proc (style: PStyle, window: gdk2.PWindow, 
+                         state_type: TStateType, shadow_type: TShadowType, 
+                         area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                         point: gdk2.PPoint, npoints: gint, fill: gboolean){.cdecl.}
+    draw_arrow*: proc (style: PStyle, window: gdk2.PWindow, 
+                       state_type: TStateType, shadow_type: TShadowType, 
+                       area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                       arrow_type: TArrowType, fill: gboolean, x: gint, y: gint, 
+                       width: gint, height: gint){.cdecl.}
+    draw_diamond*: proc (style: PStyle, window: gdk2.PWindow, 
+                         state_type: TStateType, shadow_type: TShadowType, 
+                         area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                         x: gint, y: gint, width: gint, height: gint){.cdecl.}
+    draw_string*: proc (style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, area: gdk2.PRectangle, 
+                        widget: PWidget, detail: cstring, x: gint, y: gint, 
                         `string`: cstring){.cdecl.}
-    draw_box*: proc (style: PGtkStyle, window: PGdkWindow,
-                     state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                     area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                     x: gint, y: gint, width: gint, height: gint){.cdecl.}
-    draw_flat_box*: proc (style: PGtkStyle, window: PGdkWindow,
-                          state_type: TGtkStateType,
-                          shadow_type: TGtkShadowType, area: PGdkRectangle,
-                          widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                          width: gint, height: gint){.cdecl.}
-    draw_check*: proc (style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
+    draw_box*: proc (style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                     shadow_type: TShadowType, area: gdk2.PRectangle, 
+                     widget: PWidget, detail: cstring, x: gint, y: gint, 
+                     width: gint, height: gint){.cdecl.}
+    draw_flat_box*: proc (style: PStyle, window: gdk2.PWindow, 
+                          state_type: TStateType, shadow_type: TShadowType, 
+                          area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                          x: gint, y: gint, width: gint, height: gint){.cdecl.}
+    draw_check*: proc (style: PStyle, window: gdk2.PWindow, 
+                       state_type: TStateType, shadow_type: TShadowType, 
+                       area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
                        x: gint, y: gint, width: gint, height: gint){.cdecl.}
-    draw_option*: proc (style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
+    draw_option*: proc (style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, shadow_type: TShadowType, 
+                        area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
                         x: gint, y: gint, width: gint, height: gint){.cdecl.}
-    draw_tab*: proc (style: PGtkStyle, window: PGdkWindow,
-                     state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                     area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                     x: gint, y: gint, width: gint, height: gint){.cdecl.}
-    draw_shadow_gap*: proc (style: PGtkStyle, window: PGdkWindow,
-                            state_type: TGtkStateType,
-                            shadow_type: TGtkShadowType, area: PGdkRectangle,
-                            widget: PGtkWidget, detail: cstring, x: gint,
-                            y: gint, width: gint, height: gint,
-                            gap_side: TGtkPositionType, gap_x: gint,
+    draw_tab*: proc (style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                     shadow_type: TShadowType, area: gdk2.PRectangle, 
+                     widget: PWidget, detail: cstring, x: gint, y: gint, 
+                     width: gint, height: gint){.cdecl.}
+    draw_shadow_gap*: proc (style: PStyle, window: gdk2.PWindow, 
+                            state_type: TStateType, shadow_type: TShadowType, 
+                            area: gdk2.PRectangle, widget: PWidget, 
+                            detail: cstring, x: gint, y: gint, width: gint, 
+                            height: gint, gap_side: TPositionType, gap_x: gint, 
                             gap_width: gint){.cdecl.}
-    draw_box_gap*: proc (style: PGtkStyle, window: PGdkWindow,
-                         state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                         area: PGdkRectangle, widget: PGtkWidget,
-                         detail: cstring, x: gint, y: gint, width: gint,
-                         height: gint, gap_side: TGtkPositionType, gap_x: gint,
-                         gap_width: gint){.cdecl.}
-    draw_extension*: proc (style: PGtkStyle, window: PGdkWindow,
-                           state_type: TGtkStateType,
-                           shadow_type: TGtkShadowType, area: PGdkRectangle,
-                           widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                           width: gint, height: gint, gap_side: TGtkPositionType){.
+    draw_box_gap*: proc (style: PStyle, window: gdk2.PWindow, 
+                         state_type: TStateType, shadow_type: TShadowType, 
+                         area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                         x: gint, y: gint, width: gint, height: gint, 
+                         gap_side: TPositionType, gap_x: gint, gap_width: gint){.
         cdecl.}
-    draw_focus*: proc (style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, area: PGdkRectangle,
-                       widget: PGtkWidget, detail: cstring, x: gint, y: gint,
+    draw_extension*: proc (style: PStyle, window: gdk2.PWindow, 
+                           state_type: TStateType, shadow_type: TShadowType, 
+                           area: gdk2.PRectangle, widget: PWidget, 
+                           detail: cstring, x: gint, y: gint, width: gint, 
+                           height: gint, gap_side: TPositionType){.cdecl.}
+    draw_focus*: proc (style: PStyle, window: gdk2.PWindow, 
+                       state_type: TStateType, area: gdk2.PRectangle, 
+                       widget: PWidget, detail: cstring, x: gint, y: gint, 
                        width: gint, height: gint){.cdecl.}
-    draw_slider*: proc (style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                        x: gint, y: gint, width: gint, height: gint,
-                        orientation: TGtkOrientation){.cdecl.}
-    draw_handle*: proc (style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                        x: gint, y: gint, width: gint, height: gint,
-                        orientation: TGtkOrientation){.cdecl.}
-    draw_expander*: proc (style: PGtkStyle, window: PGdkWindow,
-                          state_type: TGtkStateType, area: PGdkRectangle,
-                          widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                          expander_style: TGtkExpanderStyle){.cdecl.}
-    draw_layout*: proc (style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, use_text: gboolean,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                        x: gint, y: gint, layout: PPangoLayout){.cdecl.}
-    draw_resize_grip*: proc (style: PGtkStyle, window: PGdkWindow,
-                             state_type: TGtkStateType, area: PGdkRectangle,
-                             widget: PGtkWidget, detail: cstring,
-                             edge: TGdkWindowEdge, x: gint, y: gint,
+    draw_slider*: proc (style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, shadow_type: TShadowType, 
+                        area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                        x: gint, y: gint, width: gint, height: gint, 
+                        orientation: TOrientation){.cdecl.}
+    draw_handle*: proc (style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, shadow_type: TShadowType, 
+                        area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                        x: gint, y: gint, width: gint, height: gint, 
+                        orientation: TOrientation){.cdecl.}
+    draw_expander*: proc (style: PStyle, window: gdk2.PWindow, 
+                          state_type: TStateType, area: gdk2.PRectangle, 
+                          widget: PWidget, detail: cstring, x: gint, y: gint, 
+                          expander_style: TExpanderStyle){.cdecl.}
+    draw_layout*: proc (style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, use_text: gboolean, 
+                        area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                        x: gint, y: gint, layout: pango.PLayout){.cdecl.}
+    draw_resize_grip*: proc (style: PStyle, window: gdk2.PWindow, 
+                             state_type: TStateType, area: gdk2.PRectangle, 
+                             widget: PWidget, detail: cstring, 
+                             edge: gdk2.TWindowEdge, x: gint, y: gint, 
                              width: gint, height: gint){.cdecl.}
-    gtk_reserved381: proc (){.cdecl.}
-    gtk_reserved382: proc (){.cdecl.}
-    gtk_reserved383: proc (){.cdecl.}
-    gtk_reserved384: proc (){.cdecl.}
-    gtk_reserved385: proc (){.cdecl.}
-    gtk_reserved386: proc (){.cdecl.}
-    gtk_reserved387: proc (){.cdecl.}
-    gtk_reserved388: proc (){.cdecl.}
-    gtk_reserved389: proc (){.cdecl.}
-    gtk_reserved3810: proc (){.cdecl.}
-    gtk_reserved3811: proc (){.cdecl.}
-    gtk_reserved3812: proc (){.cdecl.}
-
-  PGtkBorder* = ptr TGtkBorder
-  TGtkBorder* {.final, pure.} = object
+    reserved381: proc (){.cdecl.}
+    reserved382: proc (){.cdecl.}
+    reserved383: proc (){.cdecl.}
+    reserved384: proc (){.cdecl.}
+    reserved385: proc (){.cdecl.}
+    reserved386: proc (){.cdecl.}
+    reserved387: proc (){.cdecl.}
+    reserved388: proc (){.cdecl.}
+    reserved389: proc (){.cdecl.}
+    reserved3810: proc (){.cdecl.}
+    reserved3811: proc (){.cdecl.}
+    reserved3812: proc (){.cdecl.}
+
+  PBorder* = ptr TBorder
+  TBorder*{.final, pure.} = object 
     left*: gint
     right*: gint
     top*: gint
     bottom*: gint
 
-  PGtkRangeLayout* = pointer
-  PGtkRangeStepTimer* = pointer
-  PGtkRange* = ptr TGtkRange
-  TGtkRange* = object of TGtkWidget
-    adjustment*: PGtkAdjustment
-    update_policy*: TGtkUpdateType
-    GtkRange_flag0*: guint16
+  PRangeLayout* = pointer
+  PRangeStepTimer* = pointer
+  PRange* = ptr TRange
+  TRange* = object of TWidget
+    adjustment*: PAdjustment
+    update_policy*: TUpdateType
+    Range_flag0*: guint16
     min_slider_size*: gint
-    orientation*: TGtkOrientation
-    range_rect*: TGdkRectangle
+    orientation*: TOrientation
+    range_rect*: gdk2.TRectangle
     slider_start*: gint
     slider_end*: gint
     round_digits*: gint
     flag1*: guint16
-    layout*: PGtkRangeLayout
-    timer*: PGtkRangeStepTimer
+    layout*: PRangeLayout
+    timer*: PRangeStepTimer
     slide_initial_slider_position*: gint
     slide_initial_coordinate*: gint
     update_timeout_id*: guint
-    event_window*: PGdkWindow
+    event_window*: gdk2.PWindow
 
-  PGtkRangeClass* = ptr TGtkRangeClass
-  TGtkRangeClass* = object of TGtkWidgetClass
+  PRangeClass* = ptr TRangeClass
+  TRangeClass* = object of TWidgetClass
     slider_detail*: cstring
     stepper_detail*: cstring
-    value_changed*: proc (range: PGtkRange){.cdecl.}
-    adjust_bounds*: proc (range: PGtkRange, new_value: gdouble){.cdecl.}
-    move_slider*: proc (range: PGtkRange, scroll: TGtkScrollType){.cdecl.}
-    get_range_border*: proc (range: PGtkRange, border: PGtkBorder){.cdecl.}
-    gtk_reserved401: proc (){.cdecl.}
-    gtk_reserved402: proc (){.cdecl.}
-    gtk_reserved403: proc (){.cdecl.}
-    gtk_reserved404: proc (){.cdecl.}
-
-  PGtkScale* = ptr TGtkScale
-  TGtkScale* = object of TGtkRange
+    value_changed*: proc (range: PRange){.cdecl.}
+    adjust_bounds*: proc (range: PRange, new_value: gdouble){.cdecl.}
+    move_slider*: proc (range: PRange, scroll: TScrollType){.cdecl.}
+    get_range_border*: proc (range: PRange, border: PBorder){.cdecl.}
+    reserved401: proc (){.cdecl.}
+    reserved402: proc (){.cdecl.}
+    reserved403: proc (){.cdecl.}
+    reserved404: proc (){.cdecl.}
+
+  PScale* = ptr TScale
+  TScale* = object of TRange
     digits*: gint
-    GtkScale_flag0*: guint16
-
-  PGtkScaleClass* = ptr TGtkScaleClass
-  TGtkScaleClass* = object of TGtkRangeClass
-    format_value*: proc (scale: PGtkScale, value: gdouble): cstring{.cdecl.}
-    draw_value*: proc (scale: PGtkScale){.cdecl.}
-    gtk_reserved411: proc (){.cdecl.}
-    gtk_reserved412: proc (){.cdecl.}
-    gtk_reserved413: proc (){.cdecl.}
-    gtk_reserved414: proc (){.cdecl.}
-
-  PGtkHScale* = ptr TGtkHScale
-  TGtkHScale* = object of TGtkScale
-
-  PGtkHScaleClass* = ptr TGtkHScaleClass
-  TGtkHScaleClass* = object of TGtkScaleClass
-
-  PGtkScrollbar* = ptr TGtkScrollbar
-  TGtkScrollbar* = object of TGtkRange
-
-  PGtkScrollbarClass* = ptr TGtkScrollbarClass
-  TGtkScrollbarClass* = object of TGtkRangeClass
-    gtk_reserved421: proc (){.cdecl.}
-    gtk_reserved422: proc (){.cdecl.}
-    gtk_reserved423: proc (){.cdecl.}
-    gtk_reserved424: proc (){.cdecl.}
-
-  PGtkHScrollbar* = ptr TGtkHScrollbar
-  TGtkHScrollbar* = object of TGtkScrollbar
-
-  PGtkHScrollbarClass* = ptr TGtkHScrollbarClass
-  TGtkHScrollbarClass* = object of TGtkScrollbarClass
-
-  PGtkSeparator* = ptr TGtkSeparator
-  TGtkSeparator* = object of TGtkWidget
-
-  PGtkSeparatorClass* = ptr TGtkSeparatorClass
-  TGtkSeparatorClass* = object of TGtkWidgetClass
-
-  PGtkHSeparator* = ptr TGtkHSeparator
-  TGtkHSeparator* = object of TGtkSeparator
-
-  PGtkHSeparatorClass* = ptr TGtkHSeparatorClass
-  TGtkHSeparatorClass* = object of TGtkSeparatorClass
-
-  PGtkIconFactory* = ptr TGtkIconFactory
-  TGtkIconFactory* = object of TGObject
+    Scale_flag0*: guint16
+
+  PScaleClass* = ptr TScaleClass
+  TScaleClass* = object of TRangeClass
+    format_value*: proc (scale: PScale, value: gdouble): cstring{.cdecl.}
+    draw_value*: proc (scale: PScale){.cdecl.}
+    reserved411: proc (){.cdecl.}
+    reserved412: proc (){.cdecl.}
+    reserved413: proc (){.cdecl.}
+    reserved414: proc (){.cdecl.}
+
+  PHScale* = ptr THScale
+  THScale* = object of TScale
+  PHScaleClass* = ptr THScaleClass
+  THScaleClass* = object of TScaleClass
+  PScrollbar* = ptr TScrollbar
+  TScrollbar* = object of TRange
+  PScrollbarClass* = ptr TScrollbarClass
+  TScrollbarClass* = object of TRangeClass
+    reserved421: proc (){.cdecl.}
+    reserved422: proc (){.cdecl.}
+    reserved423: proc (){.cdecl.}
+    reserved424: proc (){.cdecl.}
+
+  PHScrollbar* = ptr THScrollbar
+  THScrollbar* = object of TScrollbar
+  PHScrollbarClass* = ptr THScrollbarClass
+  THScrollbarClass* = object of TScrollbarClass
+  PSeparator* = ptr TSeparator
+  TSeparator* = object of TWidget
+  PSeparatorClass* = ptr TSeparatorClass
+  TSeparatorClass* = object of TWidgetClass
+  PHSeparator* = ptr THSeparator
+  THSeparator* = object of TSeparator
+  PHSeparatorClass* = ptr THSeparatorClass
+  THSeparatorClass* = object of TSeparatorClass
+  PIconFactory* = ptr TIconFactory
+  TIconFactory* = object of TGObject
     icons*: PGHashTable
 
-  PGtkIconFactoryClass* = ptr TGtkIconFactoryClass
-  TGtkIconFactoryClass* = object of TGObjectClass
-    gtk_reserved431: proc (){.cdecl.}
-    gtk_reserved432: proc (){.cdecl.}
-    gtk_reserved433: proc (){.cdecl.}
-    gtk_reserved434: proc (){.cdecl.}
+  PIconFactoryClass* = ptr TIconFactoryClass
+  TIconFactoryClass* = object of TGObjectClass
+    reserved431: proc (){.cdecl.}
+    reserved432: proc (){.cdecl.}
+    reserved433: proc (){.cdecl.}
+    reserved434: proc (){.cdecl.}
 
-  PGtkIconSet* = pointer
-  PGtkImagePixmapData* = ptr TGtkImagePixmapData
-  TGtkImagePixmapData* {.final, pure.} = object
-    pixmap*: PGdkPixmap
+  PIconSet* = pointer
+  PImagePixmapData* = ptr TImagePixmapData
+  TImagePixmapData*{.final, pure.} = object 
+    pixmap*: gdk2.PPixmap
 
-  PGtkImageImageData* = ptr TGtkImageImageData
-  TGtkImageImageData* {.final, pure.} = object
-    image*: PGdkImage
+  PImageImageData* = ptr TImageImageData
+  TImageImageData*{.final, pure.} = object 
+    image*: gdk2.PImage
 
-  PGtkImagePixbufData* = ptr TGtkImagePixbufData
-  TGtkImagePixbufData* {.final, pure.} = object
-    pixbuf*: PGdkPixbuf
+  PImagePixbufData* = ptr TImagePixbufData
+  TImagePixbufData*{.final, pure.} = object 
+    pixbuf*: gdk2pixbuf.PPixbuf
 
-  PGtkImageStockData* = ptr TGtkImageStockData
-  TGtkImageStockData* {.final, pure.} = object
+  PImageStockData* = ptr TImageStockData
+  TImageStockData*{.final, pure.} = object 
     stock_id*: cstring
 
-  PGtkImageIconSetData* = ptr TGtkImageIconSetData
-  TGtkImageIconSetData* {.final, pure.} = object
-    icon_set*: PGtkIconSet
+  PImageIconSetData* = ptr TImageIconSetData
+  TImageIconSetData*{.final, pure.} = object 
+    icon_set*: PIconSet
 
-  PGtkImageAnimationData* = ptr TGtkImageAnimationData
-  TGtkImageAnimationData* {.final, pure.} = object
-    anim*: PGdkPixbufAnimation
-    iter*: PGdkPixbufAnimationIter
+  PImageAnimationData* = ptr TImageAnimationData
+  TImageAnimationData*{.final, pure.} = object 
+    anim*: gdk2pixbuf.PPixbufAnimation
+    iter*: gdk2pixbuf.PPixbufAnimationIter
     frame_timeout*: guint
 
-  PGtkImageType* = ptr TGtkImageType
-  TGtkImageType* = enum
-    GTK_IMAGE_EMPTY, GTK_IMAGE_PIXMAP, GTK_IMAGE_IMAGE, GTK_IMAGE_PIXBUF,
-    GTK_IMAGE_STOCK, GTK_IMAGE_ICON_SET, GTK_IMAGE_ANIMATION
-  PGtkImage* = ptr TGtkImage
-  TGtkImage* = object of TGtkMisc
-    storage_type*: TGtkImageType
-    pixmap*: TGtkImagePixmapData
-    mask*: PGdkBitmap
-    icon_size*: TGtkIconSize
-
-  PGtkImageClass* = ptr TGtkImageClass
-  TGtkImageClass* = object of TGtkMiscClass
-    gtk_reserved441: proc (){.cdecl.}
-    gtk_reserved442: proc (){.cdecl.}
-    gtk_reserved443: proc (){.cdecl.}
-    gtk_reserved444: proc (){.cdecl.}
-
-  PGtkImageMenuItem* = ptr TGtkImageMenuItem
-  TGtkImageMenuItem* = object of TGtkMenuItem
-    image*: PGtkWidget
-
-  PGtkImageMenuItemClass* = ptr TGtkImageMenuItemClass
-  TGtkImageMenuItemClass* = object of TGtkMenuItemClass
-
-  PGtkIMContextSimple* = ptr TGtkIMContextSimple
-  TGtkIMContextSimple* = object of TGtkIMContext
+  PImageType* = ptr TImageType
+  TImageType* = enum 
+    IMAGE_EMPTY, IMAGE_PIXMAP, IMAGE_IMAGE, IMAGE_PIXBUF, IMAGE_STOCK, 
+    IMAGE_ICON_SET, IMAGE_ANIMATION
+  PImage* = ptr TImage
+  TImage* = object of TMisc
+    storage_type*: TImageType
+    pixmap*: TImagePixmapData
+    mask*: gdk2.PBitmap
+    icon_size*: TIconSize
+
+  PImageClass* = ptr TImageClass
+  TImageClass* = object of TMiscClass
+    reserved441: proc (){.cdecl.}
+    reserved442: proc (){.cdecl.}
+    reserved443: proc (){.cdecl.}
+    reserved444: proc (){.cdecl.}
+
+  PImageMenuItem* = ptr TImageMenuItem
+  TImageMenuItem* = object of TMenuItem
+    image*: PWidget
+
+  PImageMenuItemClass* = ptr TImageMenuItemClass
+  TImageMenuItemClass* = object of TMenuItemClass
+  PIMContextSimple* = ptr TIMContextSimple
+  TIMContextSimple* = object of TIMContext
     tables*: PGSList
-    compose_buffer*: array[0..(GTK_MAX_COMPOSE_LEN + 1) - 1, guint]
+    compose_buffer*: array[0..(MAX_COMPOSE_LEN + 1) - 1, guint]
     tentative_match*: gunichar
     tentative_match_len*: gint
-    GtkIMContextSimple_flag0*: guint16
-
-  PGtkIMContextSimpleClass* = ptr TGtkIMContextSimpleClass
-  TGtkIMContextSimpleClass* = object of TGtkIMContextClass
-
-  PGtkIMMulticontext* = ptr TGtkIMMulticontext
-  TGtkIMMulticontext* = object of TGtkIMContext
-    slave*: PGtkIMContext
-    client_window*: PGdkWindow
+    IMContextSimple_flag0*: guint16
+
+  PIMContextSimpleClass* = ptr TIMContextSimpleClass
+  TIMContextSimpleClass* = object of TIMContextClass
+  PIMMulticontext* = ptr TIMMulticontext
+  TIMMulticontext* = object of TIMContext
+    slave*: PIMContext
+    client_window*: gdk2.PWindow
     context_id*: cstring
 
-  PGtkIMMulticontextClass* = ptr TGtkIMMulticontextClass
-  TGtkIMMulticontextClass* = object of TGtkIMContextClass
-    gtk_reserved451: proc (){.cdecl.}
-    gtk_reserved452: proc (){.cdecl.}
-    gtk_reserved453: proc (){.cdecl.}
-    gtk_reserved454: proc (){.cdecl.}
-
-  PGtkInputDialog* = ptr TGtkInputDialog
-  TGtkInputDialog* = object of TGtkDialog
-    axis_list*: PGtkWidget
-    axis_listbox*: PGtkWidget
-    mode_optionmenu*: PGtkWidget
-    close_button*: PGtkWidget
-    save_button*: PGtkWidget
-    axis_items*: array[0..(GDK_AXIS_LAST) - 1, PGtkWidget]
-    current_device*: PGdkDevice
-    keys_list*: PGtkWidget
-    keys_listbox*: PGtkWidget
-
-  PGtkInputDialogClass* = ptr TGtkInputDialogClass
-  TGtkInputDialogClass* = object of TGtkDialogClass
-    enable_device*: proc (inputd: PGtkInputDialog, device: PGdkDevice){.cdecl.}
-    disable_device*: proc (inputd: PGtkInputDialog, device: PGdkDevice){.cdecl.}
-    gtk_reserved461: proc (){.cdecl.}
-    gtk_reserved462: proc (){.cdecl.}
-    gtk_reserved463: proc (){.cdecl.}
-    gtk_reserved464: proc (){.cdecl.}
-
-  PGtkInvisible* = ptr TGtkInvisible
-  TGtkInvisible* = object of TGtkWidget
+  PIMMulticontextClass* = ptr TIMMulticontextClass
+  TIMMulticontextClass* = object of TIMContextClass
+    reserved451: proc (){.cdecl.}
+    reserved452: proc (){.cdecl.}
+    reserved453: proc (){.cdecl.}
+    reserved454: proc (){.cdecl.}
+
+  PInputDialog* = ptr TInputDialog
+  TInputDialog* = object of TDialog
+    axis_list*: PWidget
+    axis_listbox*: PWidget
+    mode_optionmenu*: PWidget
+    close_button*: PWidget
+    save_button*: PWidget
+    axis_items*: array[0..(gdk2.AXIS_LAST) - 1, PWidget]
+    current_device*: gdk2.PDevice
+    keys_list*: PWidget
+    keys_listbox*: PWidget
+
+  PInputDialogClass* = ptr TInputDialogClass
+  TInputDialogClass* = object of TDialogClass
+    enable_device*: proc (inputd: PInputDialog, device: gdk2.PDevice){.cdecl.}
+    disable_device*: proc (inputd: PInputDialog, device: gdk2.PDevice){.cdecl.}
+    reserved461: proc (){.cdecl.}
+    reserved462: proc (){.cdecl.}
+    reserved463: proc (){.cdecl.}
+    reserved464: proc (){.cdecl.}
+
+  PInvisible* = ptr TInvisible
+  TInvisible* = object of TWidget
     has_user_ref_count*: gboolean
-    screen*: PGdkScreen
-
-  PGtkInvisibleClass* = ptr TGtkInvisibleClass
-  TGtkInvisibleClass* = object of TGtkWidgetClass
-    gtk_reserved701: proc (){.cdecl.}
-    gtk_reserved702: proc (){.cdecl.}
-    gtk_reserved703: proc (){.cdecl.}
-    gtk_reserved704: proc (){.cdecl.}
-
-  TGtkPrintFunc* = proc (func_data: gpointer, str: cstring){.cdecl.}
-  PGtkTranslateFunc* = ptr TGtkTranslateFunc
-  TGtkTranslateFunc* = gchar
-  TGtkItemFactoryCallback* = proc (){.cdecl.}
-  TGtkItemFactoryCallback1* = proc (callback_data: gpointer,
-                                    callback_action: guint, widget: PGtkWidget){.
-      cdecl.}
-  PGtkItemFactory* = ptr TGtkItemFactory
-  TGtkItemFactory* = object of TGtkObject
+    screen*: gdk2.PScreen
+
+  PInvisibleClass* = ptr TInvisibleClass
+  TInvisibleClass* = object of TWidgetClass
+    reserved701: proc (){.cdecl.}
+    reserved702: proc (){.cdecl.}
+    reserved703: proc (){.cdecl.}
+    reserved704: proc (){.cdecl.}
+
+  TPrintFunc* = proc (func_data: gpointer, str: cstring){.cdecl.}
+  PTranslateFunc* = ptr TTranslateFunc
+  TTranslateFunc* = gchar
+  TItemFactoryCallback* = proc (){.cdecl.}
+  TItemFactoryCallback1* = proc (callback_data: gpointer, 
+                                 callback_action: guint, widget: PWidget){.cdecl.}
+  PItemFactory* = ptr TItemFactory
+  TItemFactory* = object of TObject
     path*: cstring
-    accel_group*: PGtkAccelGroup
-    widget*: PGtkWidget
+    accel_group*: PAccelGroup
+    widget*: PWidget
     items*: PGSList
-    translate_func*: TGtkTranslateFunc
+    translate_func*: TTranslateFunc
     translate_data*: gpointer
-    translate_notify*: TGtkDestroyNotify
+    translate_notify*: TDestroyNotify
 
-  PGtkItemFactoryClass* = ptr TGtkItemFactoryClass
-  TGtkItemFactoryClass* = object of TGtkObjectClass
+  PItemFactoryClass* = ptr TItemFactoryClass
+  TItemFactoryClass* = object of TObjectClass
     item_ht*: PGHashTable
-    gtk_reserved471: proc (){.cdecl.}
-    gtk_reserved472: proc (){.cdecl.}
-    gtk_reserved473: proc (){.cdecl.}
-    gtk_reserved474: proc (){.cdecl.}
+    reserved471: proc (){.cdecl.}
+    reserved472: proc (){.cdecl.}
+    reserved473: proc (){.cdecl.}
+    reserved474: proc (){.cdecl.}
 
-  PGtkItemFactoryEntry* = ptr TGtkItemFactoryEntry
-  TGtkItemFactoryEntry* {.final, pure.} = object
+  PItemFactoryEntry* = ptr TItemFactoryEntry
+  TItemFactoryEntry*{.final, pure.} = object 
     path*: cstring
     accelerator*: cstring
-    callback*: TGtkItemFactoryCallback
+    callback*: TItemFactoryCallback
     callback_action*: guint
     item_type*: cstring
     extra_data*: gconstpointer
 
-  PGtkItemFactoryItem* = ptr TGtkItemFactoryItem
-  TGtkItemFactoryItem* {.final, pure.} = object
+  PItemFactoryItem* = ptr TItemFactoryItem
+  TItemFactoryItem*{.final, pure.} = object 
     path*: cstring
     widgets*: PGSList
 
-  PGtkLayout* = ptr TGtkLayout
-  TGtkLayout* = object of TGtkContainer
+  PLayout* = ptr TLayout
+  TLayout* = object of TContainer
     children*: PGList
     width*: guint
     height*: guint
-    hadjustment*: PGtkAdjustment
-    vadjustment*: PGtkAdjustment
-    bin_window*: PGdkWindow
-    visibility*: TGdkVisibilityState
+    hadjustment*: PAdjustment
+    vadjustment*: PAdjustment
+    bin_window*: gdk2.PWindow
+    visibility*: gdk2.TVisibilityState
     scroll_x*: gint
     scroll_y*: gint
     freeze_count*: guint
 
-  PGtkLayoutClass* = ptr TGtkLayoutClass
-  TGtkLayoutClass* = object of TGtkContainerClass
-    set_scroll_adjustments*: proc (layout: PGtkLayout,
-                                   hadjustment: PGtkAdjustment,
-                                   vadjustment: PGtkAdjustment){.cdecl.}
-    gtk_reserved481: proc (){.cdecl.}
-    gtk_reserved482: proc (){.cdecl.}
-    gtk_reserved483: proc (){.cdecl.}
-    gtk_reserved484: proc (){.cdecl.}
-
-  PGtkList* = ptr TGtkList
-  TGtkList* = object of TGtkContainer
+  PLayoutClass* = ptr TLayoutClass
+  TLayoutClass* = object of TContainerClass
+    set_scroll_adjustments*: proc (layout: PLayout, hadjustment: PAdjustment, 
+                                   vadjustment: PAdjustment){.cdecl.}
+    reserved481: proc (){.cdecl.}
+    reserved482: proc (){.cdecl.}
+    reserved483: proc (){.cdecl.}
+    reserved484: proc (){.cdecl.}
+
+  PList* = ptr TList
+  TList* = object of TContainer
     children*: PGList
     selection*: PGList
     undo_selection*: PGList
     undo_unselection*: PGList
-    last_focus_child*: PGtkWidget
-    undo_focus_child*: PGtkWidget
+    last_focus_child*: PWidget
+    undo_focus_child*: PWidget
     htimer*: guint
     vtimer*: guint
     anchor*: gint
     drag_pos*: gint
-    anchor_state*: TGtkStateType
-    GtkList_flag0*: guint16
+    anchor_state*: TStateType
+    List_flag0*: guint16
 
-  PGtkListClass* = ptr TGtkListClass
-  TGtkListClass* = object of TGtkContainerClass
-    selection_changed*: proc (list: PGtkList){.cdecl.}
-    select_child*: proc (list: PGtkList, child: PGtkWidget){.cdecl.}
-    unselect_child*: proc (list: PGtkList, child: PGtkWidget){.cdecl.}
+  PListClass* = ptr TListClass
+  TListClass* = object of TContainerClass
+    selection_changed*: proc (list: PList){.cdecl.}
+    select_child*: proc (list: PList, child: PWidget){.cdecl.}
+    unselect_child*: proc (list: PList, child: PWidget){.cdecl.}
 
-  TGtkTreeModelForeachFunc* = proc (model: PGtkTreeModel, path: PGtkTreePath,
-                                    iter: PGtkTreeIter, data: gpointer): gboolean{.
+  TTreeModelForeachFunc* = proc (model: PTreeModel, path: PTreePath, 
+                                 iter: PTreeIter, data: gpointer): gboolean{.
       cdecl.}
-  PGtkTreeModelFlags* = ptr TGtkTreeModelFlags
-  TGtkTreeModelFlags* = int32
-  TGtkTreeIter* {.final, pure.} = object
+  PTreeModelFlags* = ptr TTreeModelFlags
+  TTreeModelFlags* = int32
+  TTreeIter*{.final, pure.} = object 
     stamp*: gint
     user_data*: gpointer
     user_data2*: gpointer
     user_data3*: gpointer
 
-  PGtkTreeModelIface* = ptr TGtkTreeModelIface
-  TGtkTreeModelIface* = object of TGTypeInterface
-    row_changed*: proc (tree_model: PGtkTreeModel, path: PGtkTreePath,
-                        iter: PGtkTreeIter){.cdecl.}
-    row_inserted*: proc (tree_model: PGtkTreeModel, path: PGtkTreePath,
-                         iter: PGtkTreeIter){.cdecl.}
-    row_has_child_toggled*: proc (tree_model: PGtkTreeModel, path: PGtkTreePath,
-                                  iter: PGtkTreeIter){.cdecl.}
-    row_deleted*: proc (tree_model: PGtkTreeModel, path: PGtkTreePath){.cdecl.}
-    rows_reordered*: proc (tree_model: PGtkTreeModel, path: PGtkTreePath,
-                           iter: PGtkTreeIter, new_order: Pgint){.cdecl.}
-    get_flags*: proc (tree_model: PGtkTreeModel): TGtkTreeModelFlags{.cdecl.}
-    get_n_columns*: proc (tree_model: PGtkTreeModel): gint{.cdecl.}
-    get_column_type*: proc (tree_model: PGtkTreeModel, index: gint): GType{.
-        cdecl.}
-    get_iter*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                     path: PGtkTreePath): gboolean{.cdecl.}
-    get_path*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter): PGtkTreePath{.
-        cdecl.}
-    get_value*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                      column: gint, value: PGValue){.cdecl.}
-    iter_next*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter): gboolean{.
+  PTreeModelIface* = ptr TTreeModelIface
+  TTreeModelIface* = object of TGTypeInterface
+    row_changed*: proc (tree_model: PTreeModel, path: PTreePath, iter: PTreeIter){.
         cdecl.}
-    iter_children*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                          parent: PGtkTreeIter): gboolean{.cdecl.}
-    iter_has_child*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter): gboolean{.
+    row_inserted*: proc (tree_model: PTreeModel, path: PTreePath, 
+                         iter: PTreeIter){.cdecl.}
+    row_has_child_toggled*: proc (tree_model: PTreeModel, path: PTreePath, 
+                                  iter: PTreeIter){.cdecl.}
+    row_deleted*: proc (tree_model: PTreeModel, path: PTreePath){.cdecl.}
+    rows_reordered*: proc (tree_model: PTreeModel, path: PTreePath, 
+                           iter: PTreeIter, new_order: Pgint){.cdecl.}
+    get_flags*: proc (tree_model: PTreeModel): TTreeModelFlags{.cdecl.}
+    get_n_columns*: proc (tree_model: PTreeModel): gint{.cdecl.}
+    get_column_type*: proc (tree_model: PTreeModel, index: gint): GType{.cdecl.}
+    get_iter*: proc (tree_model: PTreeModel, iter: PTreeIter, path: PTreePath): gboolean{.
         cdecl.}
-    iter_n_children*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter): gint{.
+    get_path*: proc (tree_model: PTreeModel, iter: PTreeIter): PTreePath{.cdecl.}
+    get_value*: proc (tree_model: PTreeModel, iter: PTreeIter, column: gint, 
+                      value: PGValue){.cdecl.}
+    iter_next*: proc (tree_model: PTreeModel, iter: PTreeIter): gboolean{.cdecl.}
+    iter_children*: proc (tree_model: PTreeModel, iter: PTreeIter, 
+                          parent: PTreeIter): gboolean{.cdecl.}
+    iter_has_child*: proc (tree_model: PTreeModel, iter: PTreeIter): gboolean{.
         cdecl.}
-    iter_nth_child*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                           parent: PGtkTreeIter, n: gint): gboolean{.cdecl.}
-    iter_parent*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                        child: PGtkTreeIter): gboolean{.cdecl.}
-    ref_node*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter){.cdecl.}
-    unref_node*: proc (tree_model: PGtkTreeModel, iter: PGtkTreeIter){.cdecl.}
-
-  PGtkTreeSortable* = pointer
-  TGtkTreeIterCompareFunc* = proc (model: PGtkTreeModel, a: PGtkTreeIter,
-                                   b: PGtkTreeIter, user_data: gpointer): gint{.
-      cdecl.}
-  PGtkTreeSortableIface* = ptr TGtkTreeSortableIface
-  TGtkTreeSortableIface* = object of TGTypeInterface
-    sort_column_changed*: proc (sortable: PGtkTreeSortable){.cdecl.}
-    get_sort_column_id*: proc (sortable: PGtkTreeSortable,
-                               sort_column_id: Pgint, order: PGtkSortType): gboolean{.
+    iter_n_children*: proc (tree_model: PTreeModel, iter: PTreeIter): gint{.
         cdecl.}
-    set_sort_column_id*: proc (sortable: PGtkTreeSortable, sort_column_id: gint,
-                               order: TGtkSortType){.cdecl.}
-    set_sort_func*: proc (sortable: PGtkTreeSortable, sort_column_id: gint,
-                          func: TGtkTreeIterCompareFunc, data: gpointer,
-                          destroy: TGtkDestroyNotify){.cdecl.}
-    set_default_sort_func*: proc (sortable: PGtkTreeSortable,
-                                  func: TGtkTreeIterCompareFunc, data: gpointer,
-                                  destroy: TGtkDestroyNotify){.cdecl.}
-    has_default_sort_func*: proc (sortable: PGtkTreeSortable): gboolean{.cdecl.}
-
-  PGtkTreeModelSort* = ptr TGtkTreeModelSort
-  TGtkTreeModelSort* = object of TGObject
+    iter_nth_child*: proc (tree_model: PTreeModel, iter: PTreeIter, 
+                           parent: PTreeIter, n: gint): gboolean{.cdecl.}
+    iter_parent*: proc (tree_model: PTreeModel, iter: PTreeIter, 
+                        child: PTreeIter): gboolean{.cdecl.}
+    ref_node*: proc (tree_model: PTreeModel, iter: PTreeIter){.cdecl.}
+    unref_node*: proc (tree_model: PTreeModel, iter: PTreeIter){.cdecl.}
+
+  PTreeSortable* = pointer
+  TTreeIterCompareFunc* = proc (model: PTreeModel, a: PTreeIter, b: PTreeIter, 
+                                user_data: gpointer): gint{.cdecl.}
+  PTreeSortableIface* = ptr TTreeSortableIface
+  TTreeSortableIface* = object of TGTypeInterface
+    sort_column_changed*: proc (sortable: PTreeSortable){.cdecl.}
+    get_sort_column_id*: proc (sortable: PTreeSortable, sort_column_id: Pgint, 
+                               order: PSortType): gboolean{.cdecl.}
+    set_sort_column_id*: proc (sortable: PTreeSortable, sort_column_id: gint, 
+                               order: TSortType){.cdecl.}
+    set_sort_func*: proc (sortable: PTreeSortable, sort_column_id: gint, 
+                          func: TTreeIterCompareFunc, data: gpointer, 
+                          destroy: TDestroyNotify){.cdecl.}
+    set_default_sort_func*: proc (sortable: PTreeSortable, 
+                                  func: TTreeIterCompareFunc, data: gpointer, 
+                                  destroy: TDestroyNotify){.cdecl.}
+    has_default_sort_func*: proc (sortable: PTreeSortable): gboolean{.cdecl.}
+
+  PTreeModelSort* = ptr TTreeModelSort
+  TTreeModelSort* = object of TGObject
     root*: gpointer
     stamp*: gint
     child_flags*: guint
-    child_model*: PGtkTreeModel
+    child_model*: PTreeModel
     zero_ref_count*: gint
     sort_list*: PGList
     sort_column_id*: gint
-    order*: TGtkSortType
-    default_sort_func*: TGtkTreeIterCompareFunc
+    order*: TSortType
+    default_sort_func*: TTreeIterCompareFunc
     default_sort_data*: gpointer
-    default_sort_destroy*: TGtkDestroyNotify
+    default_sort_destroy*: TDestroyNotify
     changed_id*: guint
     inserted_id*: guint
     has_child_toggled_id*: guint
     deleted_id*: guint
     reordered_id*: guint
 
-  PGtkTreeModelSortClass* = ptr TGtkTreeModelSortClass
-  TGtkTreeModelSortClass* = object of TGObjectClass
-    gtk_reserved491: proc (){.cdecl.}
-    gtk_reserved492: proc (){.cdecl.}
-    gtk_reserved493: proc (){.cdecl.}
-    gtk_reserved494: proc (){.cdecl.}
+  PTreeModelSortClass* = ptr TTreeModelSortClass
+  TTreeModelSortClass* = object of TGObjectClass
+    reserved491: proc (){.cdecl.}
+    reserved492: proc (){.cdecl.}
+    reserved493: proc (){.cdecl.}
+    reserved494: proc (){.cdecl.}
 
-  PGtkListStore* = ptr TGtkListStore
-  TGtkListStore* = object of TGObject
+  PListStore* = ptr TListStore
+  TListStore* = object of TGObject
     stamp*: gint
     root*: gpointer
     tail*: gpointer
     sort_list*: PGList
     n_columns*: gint
     sort_column_id*: gint
-    order*: TGtkSortType
+    order*: TSortType
     column_headers*: PGType
     length*: gint
-    default_sort_func*: TGtkTreeIterCompareFunc
+    default_sort_func*: TTreeIterCompareFunc
     default_sort_data*: gpointer
-    default_sort_destroy*: TGtkDestroyNotify
-    GtkListStore_flag0*: guint16
-
-  PGtkListStoreClass* = ptr TGtkListStoreClass
-  TGtkListStoreClass* = object of TGObjectClass
-    gtk_reserved501: proc (){.cdecl.}
-    gtk_reserved502: proc (){.cdecl.}
-    gtk_reserved503: proc (){.cdecl.}
-    gtk_reserved504: proc (){.cdecl.}
-
-  TGtkModuleInitFunc* = proc (argc: Pgint, argv: PPPgchar){.cdecl.}
-  TGtkKeySnoopFunc* = proc (grab_widget: PGtkWidget, event: PGdkEventKey,
-                            func_data: gpointer): gint{.cdecl.}
-  PGtkMenuBar* = ptr TGtkMenuBar
-  TGtkMenuBar* = object of TGtkMenuShell
-
-  PGtkMenuBarClass* = ptr TGtkMenuBarClass
-  TGtkMenuBarClass* = object of TGtkMenuShellClass
-    gtk_reserved511: proc (){.cdecl.}
-    gtk_reserved512: proc (){.cdecl.}
-    gtk_reserved513: proc (){.cdecl.}
-    gtk_reserved514: proc (){.cdecl.}
-
-  PGtkMessageType* = ptr TGtkMessageType
-  TGtkMessageType* = enum
-    GTK_MESSAGE_INFO, GTK_MESSAGE_WARNING, GTK_MESSAGE_QUESTION,
-    GTK_MESSAGE_ERROR
-  PGtkButtonsType* = ptr TGtkButtonsType
-  TGtkButtonsType* = enum
-    GTK_BUTTONS_NONE, GTK_BUTTONS_OK, GTK_BUTTONS_CLOSE, GTK_BUTTONS_CANCEL,
-    GTK_BUTTONS_YES_NO, GTK_BUTTONS_OK_CANCEL
-  PGtkMessageDialog* = ptr TGtkMessageDialog
-  TGtkMessageDialog* = object of TGtkDialog
-    image*: PGtkWidget
-    label*: PGtkWidget
-
-  PGtkMessageDialogClass* = ptr TGtkMessageDialogClass
-  TGtkMessageDialogClass* = object of TGtkDialogClass
-    gtk_reserved521: proc (){.cdecl.}
-    gtk_reserved522: proc (){.cdecl.}
-    gtk_reserved523: proc (){.cdecl.}
-    gtk_reserved524: proc (){.cdecl.}
-
-  PGtkNotebookPage* = pointer
-  PGtkNotebookTab* = ptr TGtkNotebookTab
-  TGtkNotebookTab* = enum
-    GTK_NOTEBOOK_TAB_FIRST, GTK_NOTEBOOK_TAB_LAST
-  PGtkNotebook* = ptr TGtkNotebook
-  TGtkNotebook* = object of TGtkContainer
-    cur_page*: PGtkNotebookPage
+    default_sort_destroy*: TDestroyNotify
+    ListStore_flag0*: guint16
+
+  PListStoreClass* = ptr TListStoreClass
+  TListStoreClass* = object of TGObjectClass
+    reserved501: proc (){.cdecl.}
+    reserved502: proc (){.cdecl.}
+    reserved503: proc (){.cdecl.}
+    reserved504: proc (){.cdecl.}
+
+  TModuleInitFunc* = proc (argc: Pgint, argv: PPPgchar){.cdecl.}
+  TKeySnoopFunc* = proc (grab_widget: PWidget, event: gdk2.PEventKey, 
+                         func_data: gpointer): gint{.cdecl.}
+  PMenuBar* = ptr TMenuBar
+  TMenuBar* = object of TMenuShell
+  PMenuBarClass* = ptr TMenuBarClass
+  TMenuBarClass* = object of TMenuShellClass
+    reserved511: proc (){.cdecl.}
+    reserved512: proc (){.cdecl.}
+    reserved513: proc (){.cdecl.}
+    reserved514: proc (){.cdecl.}
+
+  PMessageType* = ptr TMessageType
+  TMessageType* = enum 
+    MESSAGE_INFO, MESSAGE_WARNING, MESSAGE_QUESTION, MESSAGE_ERROR
+  PButtonsType* = ptr TButtonsType
+  TButtonsType* = enum 
+    BUTTONS_NONE, BUTTONS_OK, BUTTONS_CLOSE, BUTTONS_CANCEL, BUTTONS_YES_NO, 
+    BUTTONS_OK_CANCEL
+  PMessageDialog* = ptr TMessageDialog
+  TMessageDialog* = object of TDialog
+    image*: PWidget
+    label*: PWidget
+
+  PMessageDialogClass* = ptr TMessageDialogClass
+  TMessageDialogClass* = object of TDialogClass
+    reserved521: proc (){.cdecl.}
+    reserved522: proc (){.cdecl.}
+    reserved523: proc (){.cdecl.}
+    reserved524: proc (){.cdecl.}
+
+  PNotebookPage* = pointer
+  PNotebookTab* = ptr TNotebookTab
+  TNotebookTab* = enum 
+    NOTEBOOK_TAB_FIRST, NOTEBOOK_TAB_LAST
+  PNotebook* = ptr TNotebook
+  TNotebook* = object of TContainer
+    cur_page*: PNotebookPage
     children*: PGList
     first_tab*: PGList
     focus_tab*: PGList
-    menu*: PGtkWidget
-    event_window*: PGdkWindow
+    menu*: PWidget
+    event_window*: gdk2.PWindow
     timer*: guint32
     tab_hborder*: guint16
     tab_vborder*: guint16
-    GtkNotebook_flag0*: guint16
+    Notebook_flag0*: guint16
 
-  PGtkNotebookClass* = ptr TGtkNotebookClass
-  TGtkNotebookClass* = object of TGtkContainerClass
-    switch_page*: proc (notebook: PGtkNotebook, page: PGtkNotebookPage,
+  PNotebookClass* = ptr TNotebookClass
+  TNotebookClass* = object of TContainerClass
+    switch_page*: proc (notebook: PNotebook, page: PNotebookPage, 
                         page_num: guint){.cdecl.}
-    select_page*: proc (notebook: PGtkNotebook, move_focus: gboolean): gboolean{.
+    select_page*: proc (notebook: PNotebook, move_focus: gboolean): gboolean{.
         cdecl.}
-    focus_tab*: proc (notebook: PGtkNotebook, thetype: TGtkNotebookTab): gboolean{.
+    focus_tab*: proc (notebook: PNotebook, thetype: TNotebookTab): gboolean{.
         cdecl.}
-    change_current_page*: proc (notebook: PGtkNotebook, offset: gint){.cdecl.}
-    move_focus_out*: proc (notebook: PGtkNotebook, direction: TGtkDirectionType){.
+    change_current_page*: proc (notebook: PNotebook, offset: gint){.cdecl.}
+    move_focus_out*: proc (notebook: PNotebook, direction: TDirectionType){.
         cdecl.}
-    gtk_reserved531: proc (){.cdecl.}
-    gtk_reserved532: proc (){.cdecl.}
-    gtk_reserved533: proc (){.cdecl.}
-    gtk_reserved534: proc (){.cdecl.}
+    reserved531: proc (){.cdecl.}
+    reserved532: proc (){.cdecl.}
+    reserved533: proc (){.cdecl.}
+    reserved534: proc (){.cdecl.}
 
-  PGtkOldEditable* = ptr TGtkOldEditable
-  TGtkOldEditable* = object of TGtkWidget
+  POldEditable* = ptr TOldEditable
+  TOldEditable* = object of TWidget
     current_pos*: guint
     selection_start_pos*: guint
     selection_end_pos*: guint
-    GtkOldEditable_flag0*: guint16
+    OldEditable_flag0*: guint16
     clipboard_text*: cstring
 
-  TGtkTextFunction* = proc (editable: PGtkOldEditable, time: guint32){.cdecl.}
-  PGtkOldEditableClass* = ptr TGtkOldEditableClass
-  TGtkOldEditableClass* = object of TGtkWidgetClass
-    activate*: proc (editable: PGtkOldEditable){.cdecl.}
-    set_editable*: proc (editable: PGtkOldEditable, is_editable: gboolean){.
+  TTextFunction* = proc (editable: POldEditable, time: guint32){.cdecl.}
+  POldEditableClass* = ptr TOldEditableClass
+  TOldEditableClass* = object of TWidgetClass
+    activate*: proc (editable: POldEditable){.cdecl.}
+    set_editable*: proc (editable: POldEditable, is_editable: gboolean){.cdecl.}
+    move_cursor*: proc (editable: POldEditable, x: gint, y: gint){.cdecl.}
+    move_word*: proc (editable: POldEditable, n: gint){.cdecl.}
+    move_page*: proc (editable: POldEditable, x: gint, y: gint){.cdecl.}
+    move_to_row*: proc (editable: POldEditable, row: gint){.cdecl.}
+    move_to_column*: proc (editable: POldEditable, row: gint){.cdecl.}
+    kill_char*: proc (editable: POldEditable, direction: gint){.cdecl.}
+    kill_word*: proc (editable: POldEditable, direction: gint){.cdecl.}
+    kill_line*: proc (editable: POldEditable, direction: gint){.cdecl.}
+    cut_clipboard*: proc (editable: POldEditable){.cdecl.}
+    copy_clipboard*: proc (editable: POldEditable){.cdecl.}
+    paste_clipboard*: proc (editable: POldEditable){.cdecl.}
+    update_text*: proc (editable: POldEditable, start_pos: gint, end_pos: gint){.
+        cdecl.}
+    get_chars*: proc (editable: POldEditable, start_pos: gint, end_pos: gint): cstring{.
         cdecl.}
-    move_cursor*: proc (editable: PGtkOldEditable, x: gint, y: gint){.cdecl.}
-    move_word*: proc (editable: PGtkOldEditable, n: gint){.cdecl.}
-    move_page*: proc (editable: PGtkOldEditable, x: gint, y: gint){.cdecl.}
-    move_to_row*: proc (editable: PGtkOldEditable, row: gint){.cdecl.}
-    move_to_column*: proc (editable: PGtkOldEditable, row: gint){.cdecl.}
-    kill_char*: proc (editable: PGtkOldEditable, direction: gint){.cdecl.}
-    kill_word*: proc (editable: PGtkOldEditable, direction: gint){.cdecl.}
-    kill_line*: proc (editable: PGtkOldEditable, direction: gint){.cdecl.}
-    cut_clipboard*: proc (editable: PGtkOldEditable){.cdecl.}
-    copy_clipboard*: proc (editable: PGtkOldEditable){.cdecl.}
-    paste_clipboard*: proc (editable: PGtkOldEditable){.cdecl.}
-    update_text*: proc (editable: PGtkOldEditable, start_pos: gint,
-                        end_pos: gint){.cdecl.}
-    get_chars*: proc (editable: PGtkOldEditable, start_pos: gint, end_pos: gint): cstring{.
+    set_selection*: proc (editable: POldEditable, start_pos: gint, end_pos: gint){.
         cdecl.}
-    set_selection*: proc (editable: PGtkOldEditable, start_pos: gint,
-                          end_pos: gint){.cdecl.}
-    set_position*: proc (editable: PGtkOldEditable, position: gint){.cdecl.}
-
-  PGtkOptionMenu* = ptr TGtkOptionMenu
-  TGtkOptionMenu* = object of TGtkButton
-    menu*: PGtkWidget
-    menu_item*: PGtkWidget
+    set_position*: proc (editable: POldEditable, position: gint){.cdecl.}
+
+  POptionMenu* = ptr TOptionMenu
+  TOptionMenu* = object of TButton
+    menu*: PWidget
+    menu_item*: PWidget
     width*: guint16
     height*: guint16
 
-  PGtkOptionMenuClass* = ptr TGtkOptionMenuClass
-  TGtkOptionMenuClass* = object of TGtkButtonClass
-    changed*: proc (option_menu: PGtkOptionMenu){.cdecl.}
-    gtk_reserved541: proc (){.cdecl.}
-    gtk_reserved542: proc (){.cdecl.}
-    gtk_reserved543: proc (){.cdecl.}
-    gtk_reserved544: proc (){.cdecl.}
-
-  PGtkPixmap* = ptr TGtkPixmap
-  TGtkPixmap* = object of TGtkMisc
-    pixmap*: PGdkPixmap
-    mask*: PGdkBitmap
-    pixmap_insensitive*: PGdkPixmap
-    GtkPixmap_flag0*: guint16
-
-  PGtkPixmapClass* = ptr TGtkPixmapClass
-  TGtkPixmapClass* = object of TGtkMiscClass
-
-  PGtkPlug* = ptr TGtkPlug
-  TGtkPlug* = object of TGtkWindow
-    socket_window*: PGdkWindow
-    modality_window*: PGtkWidget
-    modality_group*: PGtkWindowGroup
+  POptionMenuClass* = ptr TOptionMenuClass
+  TOptionMenuClass* = object of TButtonClass
+    changed*: proc (option_menu: POptionMenu){.cdecl.}
+    reserved541: proc (){.cdecl.}
+    reserved542: proc (){.cdecl.}
+    reserved543: proc (){.cdecl.}
+    reserved544: proc (){.cdecl.}
+
+  PPixmap* = ptr TPixmap
+  TPixmap* = object of TMisc
+    pixmap*: gdk2.PPixmap
+    mask*: gdk2.PBitmap
+    pixmap_insensitive*: gdk2.PPixmap
+    Pixmap_flag0*: guint16
+
+  PPixmapClass* = ptr TPixmapClass
+  TPixmapClass* = object of TMiscClass
+  PPlug* = ptr TPlug
+  TPlug* = object of TWindow
+    socket_window*: gdk2.PWindow
+    modality_window*: PWidget
+    modality_group*: PWindowGroup
     grabbed_keys*: PGHashTable
-    GtkPlug_flag0*: guint16
-
-  PGtkPlugClass* = ptr TGtkPlugClass
-  TGtkPlugClass* = object of TGtkWindowClass
-    embedded*: proc (plug: PGtkPlug){.cdecl.}
-    gtk_reserved551: proc (){.cdecl.}
-    gtk_reserved552: proc (){.cdecl.}
-    gtk_reserved553: proc (){.cdecl.}
-    gtk_reserved554: proc (){.cdecl.}
-
-  PGtkPreview* = ptr TGtkPreview
-  TGtkPreview* = object of TGtkWidget
+    Plug_flag0*: guint16
+
+  PPlugClass* = ptr TPlugClass
+  TPlugClass* = object of TWindowClass
+    embedded*: proc (plug: PPlug){.cdecl.}
+    reserved551: proc (){.cdecl.}
+    reserved552: proc (){.cdecl.}
+    reserved553: proc (){.cdecl.}
+    reserved554: proc (){.cdecl.}
+
+  PPreview* = ptr TPreview
+  TPreview* = object of TWidget
     buffer*: Pguchar
     buffer_width*: guint16
     buffer_height*: guint16
     bpp*: guint16
     rowstride*: guint16
-    dither*: TGdkRgbDither
-    GtkPreview_flag0*: guint16
+    dither*: gdk2.TRgbDither
+    Preview_flag0*: guint16
 
-  PGtkPreviewInfo* = ptr TGtkPreviewInfo
-  TGtkPreviewInfo* {.final, pure.} = object
+  PPreviewInfo* = ptr TPreviewInfo
+  TPreviewInfo*{.final, pure.} = object 
     lookup*: Pguchar
     gamma*: gdouble
 
-  PGtkDitherInfo* = ptr TGtkDitherInfo
-  TGtkDitherInfo* {.final, pure.} = object
+  PDitherInfo* = ptr TDitherInfo
+  TDitherInfo*{.final, pure.} = object 
     c*: array[0..3, guchar]
 
-  PGtkPreviewClass* = ptr TGtkPreviewClass
-  TGtkPreviewClass* = object of TGtkWidgetClass
-    info*: TGtkPreviewInfo
+  PPreviewClass* = ptr TPreviewClass
+  TPreviewClass* = object of TWidgetClass
+    info*: TPreviewInfo
 
-  PGtkProgress* = ptr TGtkProgress
-  TGtkProgress* = object of TGtkWidget
-    adjustment*: PGtkAdjustment
-    offscreen_pixmap*: PGdkPixmap
+  PProgress* = ptr TProgress
+  TProgress* = object of TWidget
+    adjustment*: PAdjustment
+    offscreen_pixmap*: gdk2.PPixmap
     format*: cstring
     x_align*: gfloat
     y_align*: gfloat
-    GtkProgress_flag0*: guint16
-
-  PGtkProgressClass* = ptr TGtkProgressClass
-  TGtkProgressClass* = object of TGtkWidgetClass
-    paint*: proc (progress: PGtkProgress){.cdecl.}
-    update*: proc (progress: PGtkProgress){.cdecl.}
-    act_mode_enter*: proc (progress: PGtkProgress){.cdecl.}
-    gtk_reserved561: proc (){.cdecl.}
-    gtk_reserved562: proc (){.cdecl.}
-    gtk_reserved563: proc (){.cdecl.}
-    gtk_reserved564: proc (){.cdecl.}
-
-  PGtkProgressBarStyle* = ptr TGtkProgressBarStyle
-  TGtkProgressBarStyle* = enum
-    GTK_PROGRESS_CONTINUOUS, GTK_PROGRESS_DISCRETE
-  PGtkProgressBarOrientation* = ptr TGtkProgressBarOrientation
-  TGtkProgressBarOrientation* = enum
-    GTK_PROGRESS_LEFT_TO_RIGHT, GTK_PROGRESS_RIGHT_TO_LEFT,
-    GTK_PROGRESS_BOTTOM_TO_TOP, GTK_PROGRESS_TOP_TO_BOTTOM
-  PGtkProgressBar* = ptr TGtkProgressBar
-  TGtkProgressBar* = object of TGtkProgress
-    bar_style*: TGtkProgressBarStyle
-    orientation*: TGtkProgressBarOrientation
+    Progress_flag0*: guint16
+
+  PProgressClass* = ptr TProgressClass
+  TProgressClass* = object of TWidgetClass
+    paint*: proc (progress: PProgress){.cdecl.}
+    update*: proc (progress: PProgress){.cdecl.}
+    act_mode_enter*: proc (progress: PProgress){.cdecl.}
+    reserved561: proc (){.cdecl.}
+    reserved562: proc (){.cdecl.}
+    reserved563: proc (){.cdecl.}
+    reserved564: proc (){.cdecl.}
+
+  PProgressBarStyle* = ptr TProgressBarStyle
+  TProgressBarStyle* = enum 
+    PROGRESS_CONTINUOUS, PROGRESS_DISCRETE
+  PProgressBarOrientation* = ptr TProgressBarOrientation
+  TProgressBarOrientation* = enum 
+    PROGRESS_LEFT_TO_RIGHT, PROGRESS_RIGHT_TO_LEFT, PROGRESS_BOTTOM_TO_TOP, 
+    PROGRESS_TOP_TO_BOTTOM
+  PProgressBar* = ptr TProgressBar
+  TProgressBar* = object of TProgress
+    bar_style*: TProgressBarStyle
+    orientation*: TProgressBarOrientation
     blocks*: guint
     in_block*: gint
     activity_pos*: gint
     activity_step*: guint
     activity_blocks*: guint
     pulse_fraction*: gdouble
-    GtkProgressBar_flag0*: guint16
+    ProgressBar_flag0*: guint16
 
-  PGtkProgressBarClass* = ptr TGtkProgressBarClass
-  TGtkProgressBarClass* = object of TGtkProgressClass
-    gtk_reserved571: proc (){.cdecl.}
-    gtk_reserved572: proc (){.cdecl.}
-    gtk_reserved573: proc (){.cdecl.}
-    gtk_reserved574: proc (){.cdecl.}
+  PProgressBarClass* = ptr TProgressBarClass
+  TProgressBarClass* = object of TProgressClass
+    reserved571: proc (){.cdecl.}
+    reserved572: proc (){.cdecl.}
+    reserved573: proc (){.cdecl.}
+    reserved574: proc (){.cdecl.}
 
-  PGtkRadioButton* = ptr TGtkRadioButton
-  TGtkRadioButton* = object of TGtkCheckButton
+  PRadioButton* = ptr TRadioButton
+  TRadioButton* = object of TCheckButton
     group*: PGSList
 
-  PGtkRadioButtonClass* = ptr TGtkRadioButtonClass
-  TGtkRadioButtonClass* = object of TGtkCheckButtonClass
-    gtk_reserved581: proc (){.cdecl.}
-    gtk_reserved582: proc (){.cdecl.}
-    gtk_reserved583: proc (){.cdecl.}
-    gtk_reserved584: proc (){.cdecl.}
+  PRadioButtonClass* = ptr TRadioButtonClass
+  TRadioButtonClass* = object of TCheckButtonClass
+    reserved581: proc (){.cdecl.}
+    reserved582: proc (){.cdecl.}
+    reserved583: proc (){.cdecl.}
+    reserved584: proc (){.cdecl.}
 
-  PGtkRadioMenuItem* = ptr TGtkRadioMenuItem
-  TGtkRadioMenuItem* = object of TGtkCheckMenuItem
+  PRadioMenuItem* = ptr TRadioMenuItem
+  TRadioMenuItem* = object of TCheckMenuItem
     group*: PGSList
 
-  PGtkRadioMenuItemClass* = ptr TGtkRadioMenuItemClass
-  TGtkRadioMenuItemClass* = object of TGtkCheckMenuItemClass
-    gtk_reserved591: proc (){.cdecl.}
-    gtk_reserved592: proc (){.cdecl.}
-    gtk_reserved593: proc (){.cdecl.}
-    gtk_reserved594: proc (){.cdecl.}
-
-  PGtkScrolledWindow* = ptr TGtkScrolledWindow
-  TGtkScrolledWindow* = object of TGtkBin
-    hscrollbar*: PGtkWidget
-    vscrollbar*: PGtkWidget
-    GtkScrolledWindow_flag0*: guint16
+  PRadioMenuItemClass* = ptr TRadioMenuItemClass
+  TRadioMenuItemClass* = object of TCheckMenuItemClass
+    reserved591: proc (){.cdecl.}
+    reserved592: proc (){.cdecl.}
+    reserved593: proc (){.cdecl.}
+    reserved594: proc (){.cdecl.}
+
+  PScrolledWindow* = ptr TScrolledWindow
+  TScrolledWindow* = object of TBin
+    hscrollbar*: PWidget
+    vscrollbar*: PWidget
+    ScrolledWindow_flag0*: guint16
     shadow_type*: guint16
 
-  PGtkScrolledWindowClass* = ptr TGtkScrolledWindowClass
-  TGtkScrolledWindowClass* = object of TGtkBinClass
+  PScrolledWindowClass* = ptr TScrolledWindowClass
+  TScrolledWindowClass* = object of TBinClass
     scrollbar_spacing*: gint
-    scroll_child*: proc (scrolled_window: PGtkScrolledWindow,
-                         scroll: TGtkScrollType, horizontal: gboolean){.cdecl.}
-    move_focus_out*: proc (scrolled_window: PGtkScrolledWindow,
-                           direction: TGtkDirectionType){.cdecl.}
-    gtk_reserved601: proc (){.cdecl.}
-    gtk_reserved602: proc (){.cdecl.}
-    gtk_reserved603: proc (){.cdecl.}
-    gtk_reserved604: proc (){.cdecl.}
-
-  TGtkSelectionData* {.final, pure.} = object
-    selection*: TGdkAtom
-    target*: TGdkAtom
-    thetype*: TGdkAtom
+    scroll_child*: proc (scrolled_window: PScrolledWindow, scroll: TScrollType, 
+                         horizontal: gboolean){.cdecl.}
+    move_focus_out*: proc (scrolled_window: PScrolledWindow, 
+                           direction: TDirectionType){.cdecl.}
+    reserved601: proc (){.cdecl.}
+    reserved602: proc (){.cdecl.}
+    reserved603: proc (){.cdecl.}
+    reserved604: proc (){.cdecl.}
+
+  TSelectionData*{.final, pure.} = object 
+    selection*: gdk2.TAtom
+    target*: gdk2.TAtom
+    thetype*: gdk2.TAtom
     format*: gint
     data*: Pguchar
     length*: gint
-    display*: PGdkDisplay
+    display*: gdk2.PDisplay
 
-  PGtkTargetEntry* = ptr TGtkTargetEntry
-  TGtkTargetEntry* {.final, pure.} = object
+  PTargetEntry* = ptr TTargetEntry
+  TTargetEntry*{.final, pure.} = object 
     target*: cstring
     flags*: guint
     info*: guint
 
-  PGtkTargetList* = ptr TGtkTargetList
-  TGtkTargetList* {.final, pure.} = object
+  PTargetList* = ptr TTargetList
+  TTargetList*{.final, pure.} = object 
     list*: PGList
     ref_count*: guint
 
-  PGtkTargetPair* = ptr TGtkTargetPair
-  TGtkTargetPair* {.final, pure.} = object
-    target*: TGdkAtom
+  PTargetPair* = ptr TTargetPair
+  TTargetPair*{.final, pure.} = object 
+    target*: gdk2.TAtom
     flags*: guint
     info*: guint
 
-  PGtkSeparatorMenuItem* = ptr TGtkSeparatorMenuItem
-  TGtkSeparatorMenuItem* = object of TGtkMenuItem
-
-  PGtkSeparatorMenuItemClass* = ptr TGtkSeparatorMenuItemClass
-  TGtkSeparatorMenuItemClass* = object of TGtkMenuItemClass
-
-  PGtkSizeGroup* = ptr TGtkSizeGroup
-  TGtkSizeGroup* = object of TGObject
+  PSeparatorMenuItem* = ptr TSeparatorMenuItem
+  TSeparatorMenuItem* = object of TMenuItem
+  PSeparatorMenuItemClass* = ptr TSeparatorMenuItemClass
+  TSeparatorMenuItemClass* = object of TMenuItemClass
+  PSizeGroup* = ptr TSizeGroup
+  TSizeGroup* = object of TGObject
     widgets*: PGSList
     mode*: guint8
-    GtkSizeGroup_flag0*: guint16
-    requisition*: TGtkRequisition
-
-  PGtkSizeGroupClass* = ptr TGtkSizeGroupClass
-  TGtkSizeGroupClass* = object of TGObjectClass
-    gtk_reserved611: proc (){.cdecl.}
-    gtk_reserved612: proc (){.cdecl.}
-    gtk_reserved613: proc (){.cdecl.}
-    gtk_reserved614: proc (){.cdecl.}
-
-  PGtkSizeGroupMode* = ptr TGtkSizeGroupMode
-  TGtkSizeGroupMode* = enum
-    GTK_SIZE_GROUP_NONE, GTK_SIZE_GROUP_HORIZONTAL, GTK_SIZE_GROUP_VERTICAL,
-    GTK_SIZE_GROUP_BOTH
-  PGtkSocket* = ptr TGtkSocket
-  TGtkSocket* = object of TGtkContainer
+    SizeGroup_flag0*: guint16
+    requisition*: TRequisition
+
+  PSizeGroupClass* = ptr TSizeGroupClass
+  TSizeGroupClass* = object of TGObjectClass
+    reserved611: proc (){.cdecl.}
+    reserved612: proc (){.cdecl.}
+    reserved613: proc (){.cdecl.}
+    reserved614: proc (){.cdecl.}
+
+  PSizeGroupMode* = ptr TSizeGroupMode
+  TSizeGroupMode* = enum 
+    SIZE_GROUP_NONE, SIZE_GROUP_HORIZONTAL, SIZE_GROUP_VERTICAL, SIZE_GROUP_BOTH
+  PSocket* = ptr TSocket
+  TSocket* = object of TContainer
     request_width*: guint16
     request_height*: guint16
     current_width*: guint16
     current_height*: guint16
-    plug_window*: PGdkWindow
-    plug_widget*: PGtkWidget
+    plug_window*: gdk2.PWindow
+    plug_widget*: PWidget
     xembed_version*: gshort
-    GtkSocket_flag0*: guint16
-    accel_group*: PGtkAccelGroup
-    toplevel*: PGtkWidget
-
-  PGtkSocketClass* = ptr TGtkSocketClass
-  TGtkSocketClass* = object of TGtkContainerClass
-    plug_added*: proc (socket: PGtkSocket){.cdecl.}
-    plug_removed*: proc (socket: PGtkSocket): gboolean{.cdecl.}
-    gtk_reserved621: proc (){.cdecl.}
-    gtk_reserved622: proc (){.cdecl.}
-    gtk_reserved623: proc (){.cdecl.}
-    gtk_reserved624: proc (){.cdecl.}
-
-  PGtkSpinButtonUpdatePolicy* = ptr TGtkSpinButtonUpdatePolicy
-  TGtkSpinButtonUpdatePolicy* = enum
-    GTK_UPDATE_ALWAYS, GTK_UPDATE_IF_VALID
-  PGtkSpinType* = ptr TGtkSpinType
-  TGtkSpinType* = enum
-    GTK_SPIN_STEP_FORWARD, GTK_SPIN_STEP_BACKWARD, GTK_SPIN_PAGE_FORWARD,
-    GTK_SPIN_PAGE_BACKWARD, GTK_SPIN_HOME, GTK_SPIN_END, GTK_SPIN_USER_DEFINED
-  PGtkSpinButton* = ptr TGtkSpinButton
-  TGtkSpinButton* = object of TGtkEntry
-    adjustment*: PGtkAdjustment
-    panel*: PGdkWindow
+    Socket_flag0*: guint16
+    accel_group*: PAccelGroup
+    toplevel*: PWidget
+
+  PSocketClass* = ptr TSocketClass
+  TSocketClass* = object of TContainerClass
+    plug_added*: proc (socket: PSocket){.cdecl.}
+    plug_removed*: proc (socket: PSocket): gboolean{.cdecl.}
+    reserved621: proc (){.cdecl.}
+    reserved622: proc (){.cdecl.}
+    reserved623: proc (){.cdecl.}
+    reserved624: proc (){.cdecl.}
+
+  PSpinButtonUpdatePolicy* = ptr TSpinButtonUpdatePolicy
+  TSpinButtonUpdatePolicy* = enum 
+    UPDATE_ALWAYS, UPDATE_IF_VALID
+  PSpinType* = ptr TSpinType
+  TSpinType* = enum 
+    SPIN_STEP_FORWARD, SPIN_STEP_BACKWARD, SPIN_PAGE_FORWARD, 
+    SPIN_PAGE_BACKWARD, SPIN_HOME, SPIN_END, SPIN_USER_DEFINED
+  PSpinButton* = ptr TSpinButton
+  TSpinButton* = object of TEntry
+    adjustment*: PAdjustment
+    panel*: gdk2.PWindow
     timer*: guint32
     climb_rate*: gdouble
     timer_step*: gdouble
-    update_policy*: TGtkSpinButtonUpdatePolicy
-    GtkSpinButton_flag0*: int32
-
-  PGtkSpinButtonClass* = ptr TGtkSpinButtonClass
-  TGtkSpinButtonClass* = object of TGtkEntryClass
-    input*: proc (spin_button: PGtkSpinButton, new_value: Pgdouble): gint{.cdecl.}
-    output*: proc (spin_button: PGtkSpinButton): gint{.cdecl.}
-    value_changed*: proc (spin_button: PGtkSpinButton){.cdecl.}
-    change_value*: proc (spin_button: PGtkSpinButton, scroll: TGtkScrollType){.
-        cdecl.}
-    gtk_reserved631: proc (){.cdecl.}
-    gtk_reserved632: proc (){.cdecl.}
-    gtk_reserved633: proc (){.cdecl.}
-    gtk_reserved634: proc (){.cdecl.}
-
-  PGtkStockItem* = ptr TGtkStockItem
-  TGtkStockItem* {.final, pure.} = object
+    update_policy*: TSpinButtonUpdatePolicy
+    SpinButton_flag0*: int32
+
+  PSpinButtonClass* = ptr TSpinButtonClass
+  TSpinButtonClass* = object of TEntryClass
+    input*: proc (spin_button: PSpinButton, new_value: Pgdouble): gint{.cdecl.}
+    output*: proc (spin_button: PSpinButton): gint{.cdecl.}
+    value_changed*: proc (spin_button: PSpinButton){.cdecl.}
+    change_value*: proc (spin_button: PSpinButton, scroll: TScrollType){.cdecl.}
+    reserved631: proc (){.cdecl.}
+    reserved632: proc (){.cdecl.}
+    reserved633: proc (){.cdecl.}
+    reserved634: proc (){.cdecl.}
+
+  PStockItem* = ptr TStockItem
+  TStockItem*{.final, pure.} = object 
     stock_id*: cstring
     label*: cstring
-    modifier*: TGdkModifierType
+    modifier*: gdk2.TModifierType
     keyval*: guint
     translation_domain*: cstring
 
-  PGtkStatusbar* = ptr TGtkStatusbar
-  TGtkStatusbar* = object of TGtkHBox
-    frame*: PGtkWidget
-    `label`*: PGtkWidget
+  PStatusbar* = ptr TStatusbar
+  TStatusbar* = object of THBox
+    frame*: PWidget
+    `label`*: PWidget
     messages*: PGSList
     keys*: PGSList
     seq_context_id*: guint
     seq_message_id*: guint
-    grip_window*: PGdkWindow
-    GtkStatusbar_flag0*: guint16
+    grip_window*: gdk2.PWindow
+    Statusbar_flag0*: guint16
 
-  PGtkStatusbarClass* = ptr TGtkStatusbarClass
-  TGtkStatusbarClass* = object of TGtkHBoxClass
+  PStatusbarClass* = ptr TStatusbarClass
+  TStatusbarClass* = object of THBoxClass
     messages_mem_chunk*: PGMemChunk
-    text_pushed*: proc (statusbar: PGtkStatusbar, context_id: guint,
-                        text: cstring){.cdecl.}
-    text_popped*: proc (statusbar: PGtkStatusbar, context_id: guint,
-                        text: cstring){.cdecl.}
-    gtk_reserved641: proc (){.cdecl.}
-    gtk_reserved642: proc (){.cdecl.}
-    gtk_reserved643: proc (){.cdecl.}
-    gtk_reserved644: proc (){.cdecl.}
-
-  PGtkTableRowCol* = ptr TGtkTableRowCol
-  PGtkTable* = ptr TGtkTable
-  TGtkTable* = object of TGtkContainer
+    text_pushed*: proc (statusbar: PStatusbar, context_id: guint, text: cstring){.
+        cdecl.}
+    text_popped*: proc (statusbar: PStatusbar, context_id: guint, text: cstring){.
+        cdecl.}
+    reserved641: proc (){.cdecl.}
+    reserved642: proc (){.cdecl.}
+    reserved643: proc (){.cdecl.}
+    reserved644: proc (){.cdecl.}
+
+  PTableRowCol* = ptr TTableRowCol
+  PTable* = ptr TTable
+  TTable* = object of TContainer
     children*: PGList
-    rows*: PGtkTableRowCol
-    cols*: PGtkTableRowCol
+    rows*: PTableRowCol
+    cols*: PTableRowCol
     nrows*: guint16
     ncols*: guint16
     column_spacing*: guint16
     row_spacing*: guint16
-    GtkTable_flag0*: guint16
-
-  PGtkTableClass* = ptr TGtkTableClass
-  TGtkTableClass* = object of TGtkContainerClass
+    Table_flag0*: guint16
 
-  PGtkTableChild* = ptr TGtkTableChild
-  TGtkTableChild* {.final, pure.} = object
-    widget*: PGtkWidget
+  PTableClass* = ptr TTableClass
+  TTableClass* = object of TContainerClass
+  PTableChild* = ptr TTableChild
+  TTableChild*{.final, pure.} = object 
+    widget*: PWidget
     left_attach*: guint16
     right_attach*: guint16
     top_attach*: guint16
     bottom_attach*: guint16
     xpadding*: guint16
     ypadding*: guint16
-    GtkTableChild_flag0*: guint16
+    TableChild_flag0*: guint16
 
-  TGtkTableRowCol* {.final, pure.} = object
+  TTableRowCol*{.final, pure.} = object 
     requisition*: guint16
     allocation*: guint16
     spacing*: guint16
     flag0*: guint16
 
-  PGtkTearoffMenuItem* = ptr TGtkTearoffMenuItem
-  TGtkTearoffMenuItem* = object of TGtkMenuItem
-    GtkTearoffMenuItem_flag0*: guint16
+  PTearoffMenuItem* = ptr TTearoffMenuItem
+  TTearoffMenuItem* = object of TMenuItem
+    TearoffMenuItem_flag0*: guint16
 
-  PGtkTearoffMenuItemClass* = ptr TGtkTearoffMenuItemClass
-  TGtkTearoffMenuItemClass* = object of TGtkMenuItemClass
-    gtk_reserved651: proc (){.cdecl.}
-    gtk_reserved652: proc (){.cdecl.}
-    gtk_reserved653: proc (){.cdecl.}
-    gtk_reserved654: proc (){.cdecl.}
+  PTearoffMenuItemClass* = ptr TTearoffMenuItemClass
+  TTearoffMenuItemClass* = object of TMenuItemClass
+    reserved651: proc (){.cdecl.}
+    reserved652: proc (){.cdecl.}
+    reserved653: proc (){.cdecl.}
+    reserved654: proc (){.cdecl.}
 
-  PGtkTextFont* = pointer
-  PGtkPropertyMark* = ptr TGtkPropertyMark
-  TGtkPropertyMark* {.final, pure.} = object
+  PTextFont* = pointer
+  PPropertyMark* = ptr TPropertyMark
+  TPropertyMark*{.final, pure.} = object 
     `property`*: PGList
     offset*: guint
     index*: guint
 
-  PGtkText* = ptr TGtkText
-  TGtkText* = object of TGtkOldEditable
-    text_area*: PGdkWindow
-    hadj*: PGtkAdjustment
-    vadj*: PGtkAdjustment
-    gc*: PGdkGC
-    line_wrap_bitmap*: PGdkPixmap
-    line_arrow_bitmap*: PGdkPixmap
+  PText* = ptr TText
+  TText* = object of TOldEditable
+    text_area*: gdk2.PWindow
+    hadj*: PAdjustment
+    vadj*: PAdjustment
+    gc*: gdk2.PGC
+    line_wrap_bitmap*: gdk2.PPixmap
+    line_arrow_bitmap*: gdk2.PPixmap
     text*: Pguchar
     text_len*: guint
     gap_position*: guint
@@ -2735,38 +2646,38 @@ type
     first_cut_pixels*: guint
     first_onscreen_hor_pixel*: guint
     first_onscreen_ver_pixel*: guint
-    GtkText_flag0*: guint16
+    Text_flag0*: guint16
     freeze_count*: guint
     text_properties*: PGList
     text_properties_end*: PGList
-    point*: TGtkPropertyMark
+    point*: TPropertyMark
     scratch_buffer*: Pguchar
     scratch_buffer_len*: guint
     last_ver_value*: gint
     cursor_pos_x*: gint
     cursor_pos_y*: gint
-    cursor_mark*: TGtkPropertyMark
-    cursor_char*: TGdkWChar
+    cursor_mark*: TPropertyMark
+    cursor_char*: gdk2.TWChar
     cursor_char_offset*: gchar
     cursor_virtual_x*: gint
     cursor_drawn_level*: gint
     current_line*: PGList
     tab_stops*: PGList
     default_tab_width*: gint
-    current_font*: PGtkTextFont
+    current_font*: PTextFont
     timer*: gint
     button*: guint
-    bg_gc*: PGdkGC
+    bg_gc*: gdk2.PGC
 
-  PGtkTextClass* = ptr TGtkTextClass
-  TGtkTextClass* = object of TGtkOldEditableClass
-    set_scroll_adjustments*: proc (text: PGtkText, hadjustment: PGtkAdjustment,
-                                   vadjustment: PGtkAdjustment){.cdecl.}
+  PTextClass* = ptr TTextClass
+  TTextClass* = object of TOldEditableClass
+    set_scroll_adjustments*: proc (text: PText, hadjustment: PAdjustment, 
+                                   vadjustment: PAdjustment){.cdecl.}
 
-  PGtkTextSearchFlags* = ptr TGtkTextSearchFlags
-  TGtkTextSearchFlags* = int32
-  PGtkTextIter* = ptr TGtkTextIter
-  TGtkTextIter* {.final, pure.} = object
+  PTextSearchFlags* = ptr TTextSearchFlags
+  TTextSearchFlags* = int32
+  PTextIter* = ptr TTextIter
+  TTextIter*{.final, pure.} = object 
     dummy1*: gpointer
     dummy2*: gpointer
     dummy3*: gint
@@ -2782,43 +2693,43 @@ type
     dummy13*: gint
     dummy14*: gpointer
 
-  TGtkTextCharPredicate* = proc (ch: gunichar, user_data: gpointer): gboolean{.
+  TTextCharPredicate* = proc (ch: gunichar, user_data: gpointer): gboolean{.
       cdecl.}
-  PGtkTextTagClass* = ptr TGtkTextTagClass
-  PGtkTextAttributes* = ptr TGtkTextAttributes
-  PGtkTextTag* = ptr TGtkTextTag
-  PPGtkTextTag* = ptr PGtkTextTag
-  TGtkTextTag* = object of TGObject
-    table*: PGtkTextTagTable
+  PTextTagClass* = ptr TTextTagClass
+  PTextAttributes* = ptr TTextAttributes
+  PTextTag* = ptr TTextTag
+  PPGtkTextTag* = ptr PTextTag
+  TTextTag* = object of TGObject
+    table*: PTextTagTable
     name*: cstring
     priority*: int32
-    values*: PGtkTextAttributes
-    GtkTextTag_flag0*: int32
-
-  TGtkTextTagClass* = object of TGObjectClass
-    event*: proc (tag: PGtkTextTag, event_object: PGObject, event: PGdkEvent,
-                  iter: PGtkTextIter): gboolean{.cdecl.}
-    gtk_reserved661: proc (){.cdecl.}
-    gtk_reserved662: proc (){.cdecl.}
-    gtk_reserved663: proc (){.cdecl.}
-    gtk_reserved664: proc (){.cdecl.}
-
-  PGtkTextAppearance* = ptr TGtkTextAppearance
-  TGtkTextAppearance* {.final, pure.} = object
-    bg_color*: TGdkColor
-    fg_color*: TGdkColor
-    bg_stipple*: PGdkBitmap
-    fg_stipple*: PGdkBitmap
+    values*: PTextAttributes
+    TextTag_flag0*: int32
+
+  TTextTagClass* = object of TGObjectClass
+    event*: proc (tag: PTextTag, event_object: PGObject, event: gdk2.PEvent, 
+                  iter: PTextIter): gboolean{.cdecl.}
+    reserved661: proc (){.cdecl.}
+    reserved662: proc (){.cdecl.}
+    reserved663: proc (){.cdecl.}
+    reserved664: proc (){.cdecl.}
+
+  PTextAppearance* = ptr TTextAppearance
+  TTextAppearance*{.final, pure.} = object 
+    bg_color*: gdk2.TColor
+    fg_color*: gdk2.TColor
+    bg_stipple*: gdk2.PBitmap
+    fg_stipple*: gdk2.PBitmap
     rise*: gint
     padding1*: gpointer
     flag0*: guint16
 
-  TGtkTextAttributes* {.final, pure.} = object
+  TTextAttributes*{.final, pure.} = object 
     refcount*: guint
-    appearance*: TGtkTextAppearance
-    justification*: TGtkJustification
-    direction*: TGtkTextDirection
-    font*: PPangoFontDescription
+    appearance*: TTextAppearance
+    justification*: TJustification
+    direction*: TTextDirection
+    font*: pango.PFontDescription
     font_scale*: gdouble
     left_margin*: gint
     indent*: gint
@@ -2826,218 +2737,216 @@ type
     pixels_above_lines*: gint
     pixels_below_lines*: gint
     pixels_inside_wrap*: gint
-    tabs*: PPangoTabArray
-    wrap_mode*: TGtkWrapMode
-    language*: PPangoLanguage
+    tabs*: pango.PTabArray
+    wrap_mode*: TWrapMode
+    language*: pango.PLanguage
     padding1*: gpointer
     flag0*: guint16
 
-  TGtkTextTagTableForeach* = proc (tag: PGtkTextTag, data: gpointer){.cdecl.}
-  TGtkTextTagTable* = object of TGObject
+  TTextTagTableForeach* = proc (tag: PTextTag, data: gpointer){.cdecl.}
+  TTextTagTable* = object of TGObject
     hash*: PGHashTable
     anonymous*: PGSList
     anon_count*: gint
     buffers*: PGSList
 
-  PGtkTextTagTableClass* = ptr TGtkTextTagTableClass
-  TGtkTextTagTableClass* = object of TGObjectClass
-    tag_changed*: proc (table: PGtkTextTagTable, tag: PGtkTextTag,
+  PTextTagTableClass* = ptr TTextTagTableClass
+  TTextTagTableClass* = object of TGObjectClass
+    tag_changed*: proc (table: PTextTagTable, tag: PTextTag, 
                         size_changed: gboolean){.cdecl.}
-    tag_added*: proc (table: PGtkTextTagTable, tag: PGtkTextTag){.cdecl.}
-    tag_removed*: proc (table: PGtkTextTagTable, tag: PGtkTextTag){.cdecl.}
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
-
-  PGtkTextMark* = ptr TGtkTextMark
-  TGtkTextMark* = object of TGObject
+    tag_added*: proc (table: PTextTagTable, tag: PTextTag){.cdecl.}
+    tag_removed*: proc (table: PTextTagTable, tag: PTextTag){.cdecl.}
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
+
+  PTextMark* = ptr TTextMark
+  TTextMark* = object of TGObject
     segment*: gpointer
 
-  PGtkTextMarkClass* = ptr TGtkTextMarkClass
-  TGtkTextMarkClass* = object of TGObjectClass
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
+  PTextMarkClass* = ptr TTextMarkClass
+  TTextMarkClass* = object of TGObjectClass
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
 
-  PGtkTextMarkBody* = ptr TGtkTextMarkBody
-  TGtkTextMarkBody* {.final, pure.} = object
-    obj*: PGtkTextMark
+  PTextMarkBody* = ptr TTextMarkBody
+  TTextMarkBody*{.final, pure.} = object 
+    obj*: PTextMark
     name*: cstring
-    tree*: PGtkTextBTree
-    line*: PGtkTextLine
+    tree*: PTextBTree
+    line*: PTextLine
     flag0*: guint16
 
-  PGtkTextChildAnchor* = ptr TGtkTextChildAnchor
-  TGtkTextChildAnchor* = object of TGObject
+  PTextChildAnchor* = ptr TTextChildAnchor
+  TTextChildAnchor* = object of TGObject
     segment*: gpointer
 
-  PGtkTextChildAnchorClass* = ptr TGtkTextChildAnchorClass
-  TGtkTextChildAnchorClass* = object of TGObjectClass
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
+  PTextChildAnchorClass* = ptr TTextChildAnchorClass
+  TTextChildAnchorClass* = object of TGObjectClass
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
 
-  PGtkTextPixbuf* = ptr TGtkTextPixbuf
-  TGtkTextPixbuf* {.final, pure.} = object
-    pixbuf*: PGdkPixbuf
+  PTextPixbuf* = ptr TTextPixbuf
+  TTextPixbuf*{.final, pure.} = object 
+    pixbuf*: gdk2pixbuf.PPixbuf
 
-  PGtkTextChildBody* = ptr TGtkTextChildBody
-  TGtkTextChildBody* {.final, pure.} = object
-    obj*: PGtkTextChildAnchor
+  PTextChildBody* = ptr TTextChildBody
+  TTextChildBody*{.final, pure.} = object 
+    obj*: PTextChildAnchor
     widgets*: PGSList
-    tree*: PGtkTextBTree
-    line*: PGtkTextLine
-
-  PGtkTextLineSegment* = ptr TGtkTextLineSegment
-  PGtkTextLineSegmentClass* = ptr TGtkTextLineSegmentClass
-  PGtkTextTagInfo* = ptr TGtkTextTagInfo
-  TGtkTextTagInfo* {.final, pure.} = object
-    tag*: PGtkTextTag
-    tag_root*: PGtkTextBTreeNode
+    tree*: PTextBTree
+    line*: PTextLine
+
+  PTextLineSegment* = ptr TTextLineSegment
+  PTextLineSegmentClass* = ptr TTextLineSegmentClass
+  PTextTagInfo* = ptr TTextTagInfo
+  TTextTagInfo*{.final, pure.} = object 
+    tag*: PTextTag
+    tag_root*: PTextBTreeNode
     toggle_count*: gint
 
-  PGtkTextToggleBody* = ptr TGtkTextToggleBody
-  TGtkTextToggleBody* {.final, pure.} = object
-    info*: PGtkTextTagInfo
+  PTextToggleBody* = ptr TTextToggleBody
+  TTextToggleBody*{.final, pure.} = object 
+    info*: PTextTagInfo
     inNodeCounts*: gboolean
 
-  TGtkTextLineSegment* {.final, pure.} = object
-    `type`*: PGtkTextLineSegmentClass
-    next*: PGtkTextLineSegment
+  TTextLineSegment*{.final, pure.} = object 
+    `type`*: PTextLineSegmentClass
+    next*: PTextLineSegment
     char_count*: int32
     byte_count*: int32
-    body*: TGtkTextChildBody
-
-  PGtkTextSegSplitFunc* = ptr TGtkTextSegSplitFunc
-  TGtkTextSegSplitFunc* = TGtkTextLineSegment
-  TGtkTextSegDeleteFunc* = proc (seg: PGtkTextLineSegment, line: PGtkTextLine,
-                                 tree_gone: gboolean): gboolean{.cdecl.}
-  PGtkTextSegCleanupFunc* = ptr TGtkTextSegCleanupFunc
-  TGtkTextSegCleanupFunc* = TGtkTextLineSegment
-  TGtkTextSegLineChangeFunc* = proc (seg: PGtkTextLineSegment,
-                                     line: PGtkTextLine){.cdecl.}
-  TGtkTextSegCheckFunc* = proc (seg: PGtkTextLineSegment, line: PGtkTextLine){.
-      cdecl.}
-  TGtkTextLineSegmentClass* {.final, pure.} = object
+    body*: TTextChildBody
+
+  PTextSegSplitFunc* = ptr TTextSegSplitFunc
+  TTextSegSplitFunc* = TTextLineSegment
+  TTextSegDeleteFunc* = proc (seg: PTextLineSegment, line: PTextLine, 
+                              tree_gone: gboolean): gboolean{.cdecl.}
+  PTextSegCleanupFunc* = ptr TTextSegCleanupFunc
+  TTextSegCleanupFunc* = TTextLineSegment
+  TTextSegLineChangeFunc* = proc (seg: PTextLineSegment, line: PTextLine){.cdecl.}
+  TTextSegCheckFunc* = proc (seg: PTextLineSegment, line: PTextLine){.cdecl.}
+  TTextLineSegmentClass*{.final, pure.} = object 
     name*: cstring
     leftGravity*: gboolean
-    splitFunc*: TGtkTextSegSplitFunc
-    deleteFunc*: TGtkTextSegDeleteFunc
-    cleanupFunc*: TGtkTextSegCleanupFunc
-    lineChangeFunc*: TGtkTextSegLineChangeFunc
-    checkFunc*: TGtkTextSegCheckFunc
-
-  PGtkTextLineData* = ptr TGtkTextLineData
-  TGtkTextLineData* {.final, pure.} = object
+    splitFunc*: TTextSegSplitFunc
+    deleteFunc*: TTextSegDeleteFunc
+    cleanupFunc*: TTextSegCleanupFunc
+    lineChangeFunc*: TTextSegLineChangeFunc
+    checkFunc*: TTextSegCheckFunc
+
+  PTextLineData* = ptr TTextLineData
+  TTextLineData*{.final, pure.} = object 
     view_id*: gpointer
-    next*: PGtkTextLineData
+    next*: PTextLineData
     height*: gint
     flag0*: int32
 
-  TGtkTextLine* {.final, pure.} = object
-    parent*: PGtkTextBTreeNode
-    next*: PGtkTextLine
-    segments*: PGtkTextLineSegment
-    views*: PGtkTextLineData
-
-  PGtkTextLogAttrCache* = pointer
-  PGtkTextBuffer* = ptr TGtkTextBuffer
-  TGtkTextBuffer* = object of TGObject
-    tag_table*: PGtkTextTagTable
-    btree*: PGtkTextBTree
+  TTextLine*{.final, pure.} = object 
+    parent*: PTextBTreeNode
+    next*: PTextLine
+    segments*: PTextLineSegment
+    views*: PTextLineData
+
+  PTextLogAttrCache* = pointer
+  PTextBuffer* = ptr TTextBuffer
+  TTextBuffer* = object of TGObject
+    tag_table*: PTextTagTable
+    btree*: PTextBTree
     clipboard_contents_buffers*: PGSList
     selection_clipboards*: PGSList
-    log_attr_cache*: PGtkTextLogAttrCache
+    log_attr_cache*: PTextLogAttrCache
     user_action_count*: guint
-    GtkTextBuffer_flag0*: guint16
+    TextBuffer_flag0*: guint16
 
-  PGtkTextBufferClass* = ptr TGtkTextBufferClass
-  TGtkTextBufferClass* = object of TGObjectClass
-    insert_text*: proc (buffer: PGtkTextBuffer, pos: PGtkTextIter, text: cstring,
+  PTextBufferClass* = ptr TTextBufferClass
+  TTextBufferClass* = object of TGObjectClass
+    insert_text*: proc (buffer: PTextBuffer, pos: PTextIter, text: cstring, 
                         length: gint){.cdecl.}
-    insert_pixbuf*: proc (buffer: PGtkTextBuffer, pos: PGtkTextIter,
-                          pixbuf: PGdkPixbuf){.cdecl.}
-    insert_child_anchor*: proc (buffer: PGtkTextBuffer, pos: PGtkTextIter,
-                                anchor: PGtkTextChildAnchor){.cdecl.}
-    delete_range*: proc (buffer: PGtkTextBuffer, start: PGtkTextIter,
-                         theEnd: PGtkTextIter){.cdecl.}
-    changed*: proc (buffer: PGtkTextBuffer){.cdecl.}
-    modified_changed*: proc (buffer: PGtkTextBuffer){.cdecl.}
-    mark_set*: proc (buffer: PGtkTextBuffer, location: PGtkTextIter,
-                     mark: PGtkTextMark){.cdecl.}
-    mark_deleted*: proc (buffer: PGtkTextBuffer, mark: PGtkTextMark){.cdecl.}
-    apply_tag*: proc (buffer: PGtkTextBuffer, tag: PGtkTextTag,
-                      start_char: PGtkTextIter, end_char: PGtkTextIter){.cdecl.}
-    remove_tag*: proc (buffer: PGtkTextBuffer, tag: PGtkTextTag,
-                       start_char: PGtkTextIter, end_char: PGtkTextIter){.cdecl.}
-    begin_user_action*: proc (buffer: PGtkTextBuffer){.cdecl.}
-    end_user_action*: proc (buffer: PGtkTextBuffer){.cdecl.}
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
-    gtk_reserved5: proc (){.cdecl.}
-    gtk_reserved6: proc (){.cdecl.}
-
-  PGtkTextLineDisplay* = ptr TGtkTextLineDisplay
-  PGtkTextLayout* = ptr TGtkTextLayout
-  TGtkTextLayout* = object of TGObject
+    insert_pixbuf*: proc (buffer: PTextBuffer, pos: PTextIter, 
+                          pixbuf: gdk2pixbuf.PPixbuf){.cdecl.}
+    insert_child_anchor*: proc (buffer: PTextBuffer, pos: PTextIter, 
+                                anchor: PTextChildAnchor){.cdecl.}
+    delete_range*: proc (buffer: PTextBuffer, start: PTextIter, 
+                         theEnd: PTextIter){.cdecl.}
+    changed*: proc (buffer: PTextBuffer){.cdecl.}
+    modified_changed*: proc (buffer: PTextBuffer){.cdecl.}
+    mark_set*: proc (buffer: PTextBuffer, location: PTextIter, mark: PTextMark){.
+        cdecl.}
+    mark_deleted*: proc (buffer: PTextBuffer, mark: PTextMark){.cdecl.}
+    apply_tag*: proc (buffer: PTextBuffer, tag: PTextTag, start_char: PTextIter, 
+                      end_char: PTextIter){.cdecl.}
+    remove_tag*: proc (buffer: PTextBuffer, tag: PTextTag, 
+                       start_char: PTextIter, end_char: PTextIter){.cdecl.}
+    begin_user_action*: proc (buffer: PTextBuffer){.cdecl.}
+    end_user_action*: proc (buffer: PTextBuffer){.cdecl.}
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
+    reserved5: proc (){.cdecl.}
+    reserved6: proc (){.cdecl.}
+
+  PTextLineDisplay* = ptr TTextLineDisplay
+  PTextLayout* = ptr TTextLayout
+  TTextLayout* = object of TGObject
     screen_width*: gint
     width*: gint
     height*: gint
-    buffer*: PGtkTextBuffer
-    default_style*: PGtkTextAttributes
-    ltr_context*: PPangoContext
-    rtl_context*: PPangoContext
-    one_style_cache*: PGtkTextAttributes
-    one_display_cache*: PGtkTextLineDisplay
+    buffer*: PTextBuffer
+    default_style*: PTextAttributes
+    ltr_context*: pango.PContext
+    rtl_context*: pango.PContext
+    one_style_cache*: PTextAttributes
+    one_display_cache*: PTextLineDisplay
     wrap_loop_count*: gint
-    GtkTextLayout_flag0*: guint16
+    TextLayout_flag0*: guint16
     preedit_string*: cstring
-    preedit_attrs*: PPangoAttrList
+    preedit_attrs*: pango.PAttrList
     preedit_len*: gint
     preedit_cursor*: gint
 
-  PGtkTextLayoutClass* = ptr TGtkTextLayoutClass
-  TGtkTextLayoutClass* = object of TGObjectClass
-    invalidated*: proc (layout: PGtkTextLayout){.cdecl.}
-    changed*: proc (layout: PGtkTextLayout, y: gint, old_height: gint,
+  PTextLayoutClass* = ptr TTextLayoutClass
+  TTextLayoutClass* = object of TGObjectClass
+    invalidated*: proc (layout: PTextLayout){.cdecl.}
+    changed*: proc (layout: PTextLayout, y: gint, old_height: gint, 
                     new_height: gint){.cdecl.}
-    wrap*: proc (layout: PGtkTextLayout, line: PGtkTextLine,
-                 line_data: PGtkTextLineData): PGtkTextLineData{.cdecl.}
-    get_log_attrs*: proc (layout: PGtkTextLayout, line: PGtkTextLine,
-                          attrs: var PPangoLogAttr, n_attrs: Pgint){.cdecl.}
-    invalidate*: proc (layout: PGtkTextLayout, start: PGtkTextIter,
-                       theEnd: PGtkTextIter){.cdecl.}
-    free_line_data*: proc (layout: PGtkTextLayout, line: PGtkTextLine,
-                           line_data: PGtkTextLineData){.cdecl.}
-    allocate_child*: proc (layout: PGtkTextLayout, child: PGtkWidget, x: gint,
-                           y: gint){.cdecl.}
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
-
-  PGtkTextAttrAppearance* = ptr TGtkTextAttrAppearance
-  TGtkTextAttrAppearance* {.final, pure.} = object
-    attr*: TPangoAttribute
-    appearance*: TGtkTextAppearance
-
-  PGtkTextCursorDisplay* = ptr TGtkTextCursorDisplay
-  TGtkTextCursorDisplay* {.final, pure.} = object
+    wrap*: proc (layout: PTextLayout, line: PTextLine, line_data: PTextLineData): PTextLineData{.
+        cdecl.}
+    get_log_attrs*: proc (layout: PTextLayout, line: PTextLine, 
+                          attrs: var pango.PLogAttr, n_attrs: Pgint){.cdecl.}
+    invalidate*: proc (layout: PTextLayout, start: PTextIter, theEnd: PTextIter){.
+        cdecl.}
+    free_line_data*: proc (layout: PTextLayout, line: PTextLine, 
+                           line_data: PTextLineData){.cdecl.}
+    allocate_child*: proc (layout: PTextLayout, child: PWidget, x: gint, y: gint){.
+        cdecl.}
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
+
+  PTextAttrAppearance* = ptr TTextAttrAppearance
+  TTextAttrAppearance*{.final, pure.} = object 
+    attr*: pango.TAttribute
+    appearance*: TTextAppearance
+
+  PTextCursorDisplay* = ptr TTextCursorDisplay
+  TTextCursorDisplay*{.final, pure.} = object 
     x*: gint
     y*: gint
     height*: gint
     flag0*: guint16
 
-  TGtkTextLineDisplay* {.final, pure.} = object
-    layout*: PPangoLayout
+  TTextLineDisplay*{.final, pure.} = object 
+    layout*: pango.PLayout
     cursors*: PGSList
     shaped_objects*: PGSList
-    direction*: TGtkTextDirection
+    direction*: TTextDirection
     width*: gint
     total_width*: gint
     height*: gint
@@ -3048,294 +2957,286 @@ type
     bottom_margin*: gint
     insert_index*: gint
     size_only*: gboolean
-    line*: PGtkTextLine
-
-  PGtkTextWindow* = pointer
-  PGtkTextPendingScroll* = pointer
-  PGtkTextWindowType* = ptr TGtkTextWindowType
-  TGtkTextWindowType* = enum
-    GTK_TEXT_WINDOW_PRIVATE, GTK_TEXT_WINDOW_WIDGET, GTK_TEXT_WINDOW_TEXT,
-    GTK_TEXT_WINDOW_LEFT, GTK_TEXT_WINDOW_RIGHT, GTK_TEXT_WINDOW_TOP,
-    GTK_TEXT_WINDOW_BOTTOM
-  PGtkTextView* = ptr TGtkTextView
-  TGtkTextView* = object of TGtkContainer
-    layout*: PGtkTextLayout
-    buffer*: PGtkTextBuffer
+    line*: PTextLine
+
+  PTextWindow* = pointer
+  PTextPendingScroll* = pointer
+  PTextWindowType* = ptr TTextWindowType
+  TTextWindowType* = enum 
+    TEXT_WINDOW_PRIVATE, TEXT_WINDOW_WIDGET, TEXT_WINDOW_TEXT, TEXT_WINDOW_LEFT, 
+    TEXT_WINDOW_RIGHT, TEXT_WINDOW_TOP, TEXT_WINDOW_BOTTOM
+  PTextView* = ptr TTextView
+  TTextView* = object of TContainer
+    layout*: PTextLayout
+    buffer*: PTextBuffer
     selection_drag_handler*: guint
     scroll_timeout*: guint
     pixels_above_lines*: gint
     pixels_below_lines*: gint
     pixels_inside_wrap*: gint
-    wrap_mode*: TGtkWrapMode
-    justify*: TGtkJustification
+    wrap_mode*: TWrapMode
+    justify*: TJustification
     left_margin*: gint
     right_margin*: gint
     indent*: gint
-    tabs*: PPangoTabArray
-    GtkTextView_flag0*: guint16
-    text_window*: PGtkTextWindow
-    left_window*: PGtkTextWindow
-    right_window*: PGtkTextWindow
-    top_window*: PGtkTextWindow
-    bottom_window*: PGtkTextWindow
-    hadjustment*: PGtkAdjustment
-    vadjustment*: PGtkAdjustment
+    tabs*: pango.PTabArray
+    TextView_flag0*: guint16
+    text_window*: PTextWindow
+    left_window*: PTextWindow
+    right_window*: PTextWindow
+    top_window*: PTextWindow
+    bottom_window*: PTextWindow
+    hadjustment*: PAdjustment
+    vadjustment*: PAdjustment
     xoffset*: gint
     yoffset*: gint
     width*: gint
     height*: gint
     virtual_cursor_x*: gint
     virtual_cursor_y*: gint
-    first_para_mark*: PGtkTextMark
+    first_para_mark*: PTextMark
     first_para_pixels*: gint
-    dnd_mark*: PGtkTextMark
+    dnd_mark*: PTextMark
     blink_timeout*: guint
     first_validate_idle*: guint
     incremental_validate_idle*: guint
-    im_context*: PGtkIMContext
-    popup_menu*: PGtkWidget
+    im_context*: PIMContext
+    popup_menu*: PWidget
     drag_start_x*: gint
     drag_start_y*: gint
     children*: PGSList
-    pending_scroll*: PGtkTextPendingScroll
+    pending_scroll*: PTextPendingScroll
     pending_place_cursor_button*: gint
 
-  PGtkTextViewClass* = ptr TGtkTextViewClass
-  TGtkTextViewClass* = object of TGtkContainerClass
-    set_scroll_adjustments*: proc (text_view: PGtkTextView,
-                                   hadjustment: PGtkAdjustment,
-                                   vadjustment: PGtkAdjustment){.cdecl.}
-    populate_popup*: proc (text_view: PGtkTextView, menu: PGtkMenu){.cdecl.}
-    move_cursor*: proc (text_view: PGtkTextView, step: TGtkMovementStep,
-                        count: gint, extend_selection: gboolean){.cdecl.}
-    page_horizontally*: proc (text_view: PGtkTextView, count: gint,
+  PTextViewClass* = ptr TTextViewClass
+  TTextViewClass* = object of TContainerClass
+    set_scroll_adjustments*: proc (text_view: PTextView, 
+                                   hadjustment: PAdjustment, 
+                                   vadjustment: PAdjustment){.cdecl.}
+    populate_popup*: proc (text_view: PTextView, menu: PMenu){.cdecl.}
+    move_cursor*: proc (text_view: PTextView, step: TMovementStep, count: gint, 
+                        extend_selection: gboolean){.cdecl.}
+    page_horizontally*: proc (text_view: PTextView, count: gint, 
                               extend_selection: gboolean){.cdecl.}
-    set_anchor*: proc (text_view: PGtkTextView){.cdecl.}
-    insert_at_cursor*: proc (text_view: PGtkTextView, str: cstring){.cdecl.}
-    delete_from_cursor*: proc (text_view: PGtkTextView, thetype: TGtkDeleteType,
+    set_anchor*: proc (text_view: PTextView){.cdecl.}
+    insert_at_cursor*: proc (text_view: PTextView, str: cstring){.cdecl.}
+    delete_from_cursor*: proc (text_view: PTextView, thetype: TDeleteType, 
                                count: gint){.cdecl.}
-    cut_clipboard*: proc (text_view: PGtkTextView){.cdecl.}
-    copy_clipboard*: proc (text_view: PGtkTextView){.cdecl.}
-    paste_clipboard*: proc (text_view: PGtkTextView){.cdecl.}
-    toggle_overwrite*: proc (text_view: PGtkTextView){.cdecl.}
-    move_focus*: proc (text_view: PGtkTextView, direction: TGtkDirectionType){.
-        cdecl.}
-    gtk_reserved711: proc (){.cdecl.}
-    gtk_reserved712: proc (){.cdecl.}
-    gtk_reserved713: proc (){.cdecl.}
-    gtk_reserved714: proc (){.cdecl.}
-    gtk_reserved715: proc (){.cdecl.}
-    gtk_reserved716: proc (){.cdecl.}
-    gtk_reserved717: proc (){.cdecl.}
-    gtk_reserved718: proc (){.cdecl.}
-
-  PGtkTipsQuery* = ptr TGtkTipsQuery
-  TGtkTipsQuery* = object of TGtkLabel
-    GtkTipsQuery_flag0*: guint16
+    cut_clipboard*: proc (text_view: PTextView){.cdecl.}
+    copy_clipboard*: proc (text_view: PTextView){.cdecl.}
+    paste_clipboard*: proc (text_view: PTextView){.cdecl.}
+    toggle_overwrite*: proc (text_view: PTextView){.cdecl.}
+    move_focus*: proc (text_view: PTextView, direction: TDirectionType){.cdecl.}
+    reserved711: proc (){.cdecl.}
+    reserved712: proc (){.cdecl.}
+    reserved713: proc (){.cdecl.}
+    reserved714: proc (){.cdecl.}
+    reserved715: proc (){.cdecl.}
+    reserved716: proc (){.cdecl.}
+    reserved717: proc (){.cdecl.}
+    reserved718: proc (){.cdecl.}
+
+  PTipsQuery* = ptr TTipsQuery
+  TTipsQuery* = object of TLabel
+    TipsQuery_flag0*: guint16
     label_inactive*: cstring
     label_no_tip*: cstring
-    caller*: PGtkWidget
-    last_crossed*: PGtkWidget
-    query_cursor*: PGdkCursor
-
-  PGtkTipsQueryClass* = ptr TGtkTipsQueryClass
-  TGtkTipsQueryClass* = object of TGtkLabelClass
-    start_query*: proc (tips_query: PGtkTipsQuery){.cdecl.}
-    stop_query*: proc (tips_query: PGtkTipsQuery){.cdecl.}
-    widget_entered*: proc (tips_query: PGtkTipsQuery, widget: PGtkWidget,
+    caller*: PWidget
+    last_crossed*: PWidget
+    query_cursor*: gdk2.PCursor
+
+  PTipsQueryClass* = ptr TTipsQueryClass
+  TTipsQueryClass* = object of TLabelClass
+    start_query*: proc (tips_query: PTipsQuery){.cdecl.}
+    stop_query*: proc (tips_query: PTipsQuery){.cdecl.}
+    widget_entered*: proc (tips_query: PTipsQuery, widget: PWidget, 
                            tip_text: cstring, tip_private: cstring){.cdecl.}
-    widget_selected*: proc (tips_query: PGtkTipsQuery, widget: PGtkWidget,
-                            tip_text: cstring, tip_private: cstring,
-                            event: PGdkEventButton): gint{.cdecl.}
-    gtk_reserved721: proc (){.cdecl.}
-    gtk_reserved722: proc (){.cdecl.}
-    gtk_reserved723: proc (){.cdecl.}
-    gtk_reserved724: proc (){.cdecl.}
-
-  PGtkTooltips* = ptr TGtkTooltips
-  PGtkTooltipsData* = ptr TGtkTooltipsData
-  TGtkTooltipsData* {.final, pure.} = object
-    tooltips*: PGtkTooltips
-    widget*: PGtkWidget
+    widget_selected*: proc (tips_query: PTipsQuery, widget: PWidget, 
+                            tip_text: cstring, tip_private: cstring, 
+                            event: gdk2.PEventButton): gint{.cdecl.}
+    reserved721: proc (){.cdecl.}
+    reserved722: proc (){.cdecl.}
+    reserved723: proc (){.cdecl.}
+    reserved724: proc (){.cdecl.}
+
+  PTooltips* = ptr TTooltips
+  PTooltipsData* = ptr TTooltipsData
+  TTooltipsData*{.final, pure.} = object 
+    tooltips*: PTooltips
+    widget*: PWidget
     tip_text*: cstring
     tip_private*: cstring
 
-  TGtkTooltips* = object of TGtkObject
-    tip_window*: PGtkWidget
-    tip_label*: PGtkWidget
-    active_tips_data*: PGtkTooltipsData
+  TTooltips* = object of TObject
+    tip_window*: PWidget
+    tip_label*: PWidget
+    active_tips_data*: PTooltipsData
     tips_data_list*: PGList
-    GtkTooltips_flag0*: int32
+    Tooltips_flag0*: int32
     flag1*: guint16
     timer_tag*: gint
     last_popdown*: TGTimeVal
 
-  PGtkTooltipsClass* = ptr TGtkTooltipsClass
-  TGtkTooltipsClass* = object of TGtkObjectClass
-    gtk_reserved1: proc (){.cdecl.}
-    gtk_reserved2: proc (){.cdecl.}
-    gtk_reserved3: proc (){.cdecl.}
-    gtk_reserved4: proc (){.cdecl.}
-
-  PGtkToolbarChildType* = ptr TGtkToolbarChildType
-  TGtkToolbarChildType* = enum
-    GTK_TOOLBAR_CHILD_SPACE, GTK_TOOLBAR_CHILD_BUTTON,
-    GTK_TOOLBAR_CHILD_TOGGLEBUTTON, GTK_TOOLBAR_CHILD_RADIOBUTTON,
-    GTK_TOOLBAR_CHILD_WIDGET
-  PGtkToolbarSpaceStyle* = ptr TGtkToolbarSpaceStyle
-  TGtkToolbarSpaceStyle* = enum
-    GTK_TOOLBAR_SPACE_EMPTY, GTK_TOOLBAR_SPACE_LINE
-  PGtkToolbarChild* = ptr TGtkToolbarChild
-  TGtkToolbarChild* {.final, pure.} = object
-    `type`*: TGtkToolbarChildType
-    widget*: PGtkWidget
-    icon*: PGtkWidget
-    label*: PGtkWidget
-
-  PGtkToolbar* = ptr TGtkToolbar
-  TGtkToolbar* = object of TGtkContainer
+  PTooltipsClass* = ptr TTooltipsClass
+  TTooltipsClass* = object of TObjectClass
+    reserved1: proc (){.cdecl.}
+    reserved2: proc (){.cdecl.}
+    reserved3: proc (){.cdecl.}
+    reserved4: proc (){.cdecl.}
+
+  PToolbarChildType* = ptr TToolbarChildType
+  TToolbarChildType* = enum 
+    TOOLBAR_CHILD_SPACE, TOOLBAR_CHILD_BUTTON, TOOLBAR_CHILD_TOGGLEBUTTON, 
+    TOOLBAR_CHILD_RADIOBUTTON, TOOLBAR_CHILD_WIDGET
+  PToolbarSpaceStyle* = ptr TToolbarSpaceStyle
+  TToolbarSpaceStyle* = enum 
+    TOOLBAR_SPACE_EMPTY, TOOLBAR_SPACE_LINE
+  PToolbarChild* = ptr TToolbarChild
+  TToolbarChild*{.final, pure.} = object 
+    `type`*: TToolbarChildType
+    widget*: PWidget
+    icon*: PWidget
+    label*: PWidget
+
+  PToolbar* = ptr TToolbar
+  TToolbar* = object of TContainer
     num_children*: gint
     children*: PGList
-    orientation*: TGtkOrientation
-    GtkToolbar_style*: TGtkToolbarStyle
-    icon_size*: TGtkIconSize
-    tooltips*: PGtkTooltips
+    orientation*: TOrientation
+    Toolbar_style*: TToolbarStyle
+    icon_size*: TIconSize
+    tooltips*: PTooltips
     button_maxw*: gint
     button_maxh*: gint
     style_set_connection*: guint
     icon_size_connection*: guint
-    GtkToolbar_flag0*: guint16
-
-  PGtkToolbarClass* = ptr TGtkToolbarClass
-  TGtkToolbarClass* = object of TGtkContainerClass
-    orientation_changed*: proc (toolbar: PGtkToolbar,
-                                orientation: TGtkOrientation){.cdecl.}
-    style_changed*: proc (toolbar: PGtkToolbar, style: TGtkToolbarStyle){.cdecl.}
-    gtk_reserved731: proc (){.cdecl.}
-    gtk_reserved732: proc (){.cdecl.}
-    gtk_reserved733: proc (){.cdecl.}
-    gtk_reserved734: proc (){.cdecl.}
-
-  PGtkTreeViewMode* = ptr TGtkTreeViewMode
-  TGtkTreeViewMode* = enum
-    GTK_TREE_VIEW_LINE, GTK_TREE_VIEW_ITEM
-  PGtkTree* = ptr TGtkTree
-  TGtkTree* = object of TGtkContainer
+    Toolbar_flag0*: guint16
+
+  PToolbarClass* = ptr TToolbarClass
+  TToolbarClass* = object of TContainerClass
+    orientation_changed*: proc (toolbar: PToolbar, orientation: TOrientation){.
+        cdecl.}
+    style_changed*: proc (toolbar: PToolbar, style: TToolbarStyle){.cdecl.}
+    reserved731: proc (){.cdecl.}
+    reserved732: proc (){.cdecl.}
+    reserved733: proc (){.cdecl.}
+    reserved734: proc (){.cdecl.}
+
+  PTreeViewMode* = ptr TTreeViewMode
+  TTreeViewMode* = enum 
+    TREE_VIEW_LINE, TREE_VIEW_ITEM
+  PTree* = ptr TTree
+  TTree* = object of TContainer
     children*: PGList
-    root_tree*: PGtkTree
-    tree_owner*: PGtkWidget
+    root_tree*: PTree
+    tree_owner*: PWidget
     selection*: PGList
     level*: guint
     indent_value*: guint
     current_indent*: guint
-    GtkTree_flag0*: guint16
-
-  PGtkTreeClass* = ptr TGtkTreeClass
-  TGtkTreeClass* = object of TGtkContainerClass
-    selection_changed*: proc (tree: PGtkTree){.cdecl.}
-    select_child*: proc (tree: PGtkTree, child: PGtkWidget){.cdecl.}
-    unselect_child*: proc (tree: PGtkTree, child: PGtkWidget){.cdecl.}
-
-  PGtkTreeDragSource* = pointer
-  PGtkTreeDragDest* = pointer
-  PGtkTreeDragSourceIface* = ptr TGtkTreeDragSourceIface
-  TGtkTreeDragSourceIface* = object of TGTypeInterface
-    row_draggable*: proc (drag_source: PGtkTreeDragSource, path: PGtkTreePath): gboolean{.
+    Tree_flag0*: guint16
+
+  PTreeClass* = ptr TTreeClass
+  TTreeClass* = object of TContainerClass
+    selection_changed*: proc (tree: PTree){.cdecl.}
+    select_child*: proc (tree: PTree, child: PWidget){.cdecl.}
+    unselect_child*: proc (tree: PTree, child: PWidget){.cdecl.}
+
+  PTreeDragSource* = pointer
+  PTreeDragDest* = pointer
+  PTreeDragSourceIface* = ptr TTreeDragSourceIface
+  TTreeDragSourceIface* = object of TGTypeInterface
+    row_draggable*: proc (drag_source: PTreeDragSource, path: PTreePath): gboolean{.
         cdecl.}
-    drag_data_get*: proc (drag_source: PGtkTreeDragSource, path: PGtkTreePath,
-                          selection_data: PGtkSelectionData): gboolean{.cdecl.}
-    drag_data_delete*: proc (drag_source: PGtkTreeDragSource, path: PGtkTreePath): gboolean{.
+    drag_data_get*: proc (drag_source: PTreeDragSource, path: PTreePath, 
+                          selection_data: PSelectionData): gboolean{.cdecl.}
+    drag_data_delete*: proc (drag_source: PTreeDragSource, path: PTreePath): gboolean{.
         cdecl.}
 
-  PGtkTreeDragDestIface* = ptr TGtkTreeDragDestIface
-  TGtkTreeDragDestIface* = object of TGTypeInterface
-    drag_data_received*: proc (drag_dest: PGtkTreeDragDest, dest: PGtkTreePath,
-                               selection_data: PGtkSelectionData): gboolean{.
-        cdecl.}
-    row_drop_possible*: proc (drag_dest: PGtkTreeDragDest,
-                              dest_path: PGtkTreePath,
-                              selection_data: PGtkSelectionData): gboolean{.
-        cdecl.}
-
-  PGtkTreeItem* = ptr TGtkTreeItem
-  TGtkTreeItem* = object of TGtkItem
-    subtree*: PGtkWidget
-    pixmaps_box*: PGtkWidget
-    plus_pix_widget*: PGtkWidget
-    minus_pix_widget*: PGtkWidget
+  PTreeDragDestIface* = ptr TTreeDragDestIface
+  TTreeDragDestIface* = object of TGTypeInterface
+    drag_data_received*: proc (drag_dest: PTreeDragDest, dest: PTreePath, 
+                               selection_data: PSelectionData): gboolean{.cdecl.}
+    row_drop_possible*: proc (drag_dest: PTreeDragDest, dest_path: PTreePath, 
+                              selection_data: PSelectionData): gboolean{.cdecl.}
+
+  PTreeItem* = ptr TTreeItem
+  TTreeItem* = object of TItem
+    subtree*: PWidget
+    pixmaps_box*: PWidget
+    plus_pix_widget*: PWidget
+    minus_pix_widget*: PWidget
     pixmaps*: PGList
-    GtkTreeItem_flag0*: guint16
-
-  PGtkTreeItemClass* = ptr TGtkTreeItemClass
-  TGtkTreeItemClass* = object of TGtkItemClass
-    expand*: proc (tree_item: PGtkTreeItem){.cdecl.}
-    collapse*: proc (tree_item: PGtkTreeItem){.cdecl.}
-
-  PGtkTreeSelection* = ptr TGtkTreeSelection
-  TGtkTreeSelectionFunc* = proc (selection: PGtkTreeSelection,
-                                 model: PGtkTreeModel, path: PGtkTreePath,
-                                 path_currently_selected: gboolean,
-                                 data: gpointer): gboolean{.cdecl.}
-  TGtkTreeSelectionForeachFunc* = proc (model: PGtkTreeModel,
-                                        path: PGtkTreePath, iter: PGtkTreeIter,
-                                        data: gpointer){.cdecl.}
-  TGtkTreeSelection* = object of TGObject
-    tree_view*: PGtkTreeView
-    thetype*: TGtkSelectionMode
-    user_func*: TGtkTreeSelectionFunc
+    TreeItem_flag0*: guint16
+
+  PTreeItemClass* = ptr TTreeItemClass
+  TTreeItemClass* = object of TItemClass
+    expand*: proc (tree_item: PTreeItem){.cdecl.}
+    collapse*: proc (tree_item: PTreeItem){.cdecl.}
+
+  PTreeSelection* = ptr TTreeSelection
+  TTreeSelectionFunc* = proc (selection: PTreeSelection, model: PTreeModel, 
+                              path: PTreePath, 
+                              path_currently_selected: gboolean, data: gpointer): gboolean{.
+      cdecl.}
+  TTreeSelectionForeachFunc* = proc (model: PTreeModel, path: PTreePath, 
+                                     iter: PTreeIter, data: gpointer){.cdecl.}
+  TTreeSelection* = object of TGObject
+    tree_view*: PTreeView
+    thetype*: TSelectionMode
+    user_func*: TTreeSelectionFunc
     user_data*: gpointer
-    destroy*: TGtkDestroyNotify
-
-  PGtkTreeSelectionClass* = ptr TGtkTreeSelectionClass
-  TGtkTreeSelectionClass* = object of TGObjectClass
-    changed*: proc (selection: PGtkTreeSelection){.cdecl.}
-    gtk_reserved741: proc (){.cdecl.}
-    gtk_reserved742: proc (){.cdecl.}
-    gtk_reserved743: proc (){.cdecl.}
-    gtk_reserved744: proc (){.cdecl.}
-
-  PGtkTreeStore* = ptr TGtkTreeStore
-  TGtkTreeStore* = object of TGObject
+    destroy*: TDestroyNotify
+
+  PTreeSelectionClass* = ptr TTreeSelectionClass
+  TTreeSelectionClass* = object of TGObjectClass
+    changed*: proc (selection: PTreeSelection){.cdecl.}
+    reserved741: proc (){.cdecl.}
+    reserved742: proc (){.cdecl.}
+    reserved743: proc (){.cdecl.}
+    reserved744: proc (){.cdecl.}
+
+  PTreeStore* = ptr TTreeStore
+  TTreeStore* = object of TGObject
     stamp*: gint
     root*: gpointer
     last*: gpointer
     n_columns*: gint
     sort_column_id*: gint
     sort_list*: PGList
-    order*: TGtkSortType
+    order*: TSortType
     column_headers*: PGType
-    default_sort_func*: TGtkTreeIterCompareFunc
+    default_sort_func*: TTreeIterCompareFunc
     default_sort_data*: gpointer
-    default_sort_destroy*: TGtkDestroyNotify
-    GtkTreeStore_flag0*: guint16
-
-  PGtkTreeStoreClass* = ptr TGtkTreeStoreClass
-  TGtkTreeStoreClass* = object of TGObjectClass
-    gtk_reserved751: proc (){.cdecl.}
-    gtk_reserved752: proc (){.cdecl.}
-    gtk_reserved753: proc (){.cdecl.}
-    gtk_reserved754: proc (){.cdecl.}
-
-  PGtkTreeViewColumnSizing* = ptr TGtkTreeViewColumnSizing
-  TGtkTreeViewColumnSizing* = enum
-    GTK_TREE_VIEW_COLUMN_GROW_ONLY, GTK_TREE_VIEW_COLUMN_AUTOSIZE,
-    GTK_TREE_VIEW_COLUMN_FIXED
-  TGtkTreeCellDataFunc* = proc (tree_column: PGtkTreeViewColumn,
-                                cell: PGtkCellRenderer,
-                                tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                                data: gpointer){.cdecl.}
-  TGtkTreeViewColumn* = object of TGtkObject
-    tree_view*: PGtkWidget
-    button*: PGtkWidget
-    child*: PGtkWidget
-    arrow*: PGtkWidget
-    alignment*: PGtkWidget
-    window*: PGdkWindow
-    editable_widget*: PGtkCellEditable
+    default_sort_destroy*: TDestroyNotify
+    TreeStore_flag0*: guint16
+
+  PTreeStoreClass* = ptr TTreeStoreClass
+  TTreeStoreClass* = object of TGObjectClass
+    reserved751: proc (){.cdecl.}
+    reserved752: proc (){.cdecl.}
+    reserved753: proc (){.cdecl.}
+    reserved754: proc (){.cdecl.}
+
+  PTreeViewColumnSizing* = ptr TTreeViewColumnSizing
+  TTreeViewColumnSizing* = enum 
+    TREE_VIEW_COLUMN_GROW_ONLY, TREE_VIEW_COLUMN_AUTOSIZE, 
+    TREE_VIEW_COLUMN_FIXED
+  TTreeCellDataFunc* = proc (tree_column: PTreeViewColumn, cell: PCellRenderer, 
+                             tree_model: PTreeModel, iter: PTreeIter, 
+                             data: gpointer){.cdecl.}
+  TTreeViewColumn* = object of TObject
+    tree_view*: PWidget
+    button*: PWidget
+    child*: PWidget
+    arrow*: PWidget
+    alignment*: PWidget
+    window*: gdk2.PWindow
+    editable_widget*: PCellEditable
     xalign*: gfloat
     property_changed_signal*: guint
     spacing*: gint
-    column_type*: TGtkTreeViewColumnSizing
+    column_type*: TTreeViewColumnSizing
     requested_width*: gint
     button_request*: gint
     resized_width*: gint
@@ -3350,679 +3251,652 @@ type
     sort_clicked_signal*: guint
     sort_column_changed_signal*: guint
     sort_column_id*: gint
-    sort_order*: TGtkSortType
-    GtkTreeViewColumn_flag0*: guint16
-
-  PGtkTreeViewColumnClass* = ptr TGtkTreeViewColumnClass
-  TGtkTreeViewColumnClass* = object of TGtkObjectClass
-    clicked*: proc (tree_column: PGtkTreeViewColumn){.cdecl.}
-    gtk_reserved751: proc (){.cdecl.}
-    gtk_reserved752: proc (){.cdecl.}
-    gtk_reserved753: proc (){.cdecl.}
-    gtk_reserved754: proc (){.cdecl.}
-
-  PGtkRBNodeColor* = ptr TGtkRBNodeColor
-  TGtkRBNodeColor* = int32
-  PGtkRBTree* = ptr TGtkRBTree
-  PGtkRBNode* = ptr TGtkRBNode
-  TGtkRBTreeTraverseFunc* = proc (tree: PGtkRBTree, node: PGtkRBNode,
-                                  data: gpointer){.cdecl.}
-  TGtkRBTree* {.final, pure.} = object
-    root*: PGtkRBNode
-    `nil`*: PGtkRBNode
-    parent_tree*: PGtkRBTree
-    parent_node*: PGtkRBNode
-
-  TGtkRBNode* {.final, pure.} = object
+    sort_order*: TSortType
+    TreeViewColumn_flag0*: guint16
+
+  PTreeViewColumnClass* = ptr TTreeViewColumnClass
+  TTreeViewColumnClass* = object of TObjectClass
+    clicked*: proc (tree_column: PTreeViewColumn){.cdecl.}
+    reserved751: proc (){.cdecl.}
+    reserved752: proc (){.cdecl.}
+    reserved753: proc (){.cdecl.}
+    reserved754: proc (){.cdecl.}
+
+  PRBNodeColor* = ptr TRBNodeColor
+  TRBNodeColor* = int32
+  PRBTree* = ptr TRBTree
+  PRBNode* = ptr TRBNode
+  TRBTreeTraverseFunc* = proc (tree: PRBTree, node: PRBNode, data: gpointer){.
+      cdecl.}
+  TRBTree*{.final, pure.} = object 
+    root*: PRBNode
+    `nil`*: PRBNode
+    parent_tree*: PRBTree
+    parent_node*: PRBNode
+
+  TRBNode*{.final, pure.} = object 
     flag0*: guint16
-    left*: PGtkRBNode
-    right*: PGtkRBNode
-    parent*: PGtkRBNode
+    left*: PRBNode
+    right*: PRBNode
+    parent*: PRBNode
     count*: gint
     offset*: gint
-    children*: PGtkRBTree
-
-  PGtkTreeRowReference* = pointer
-  PGtkTreeViewFlags* = ptr TGtkTreeViewFlags
-  TGtkTreeViewFlags* = int32
-  TGtkTreeViewSearchDialogPositionFunc* = proc (tree_view: PGtkTreeView,
-      search_dialog: PGtkWidget){.cdecl.}
-  PGtkTreeViewColumnReorder* = ptr TGtkTreeViewColumnReorder
-  TGtkTreeViewColumnReorder* {.final, pure.} = object
+    children*: PRBTree
+
+  PTreeRowReference* = pointer
+  PTreeViewFlags* = ptr TTreeViewFlags
+  TTreeViewFlags* = int32
+  TTreeViewSearchDialogPositionFunc* = proc (tree_view: PTreeView, 
+      search_dialog: PWidget){.cdecl.}
+  PTreeViewColumnReorder* = ptr TTreeViewColumnReorder
+  TTreeViewColumnReorder*{.final, pure.} = object 
     left_align*: gint
     right_align*: gint
-    left_column*: PGtkTreeViewColumn
-    right_column*: PGtkTreeViewColumn
+    left_column*: PTreeViewColumn
+    right_column*: PTreeViewColumn
 
-  PGtkTreeViewPrivate* = ptr TGtkTreeViewPrivate
-  TGtkTreeViewPrivate* {.final, pure.} = object
-    model*: PGtkTreeModel
+  PTreeViewPrivate* = ptr TTreeViewPrivate
+  TTreeViewPrivate*{.final, pure.} = object 
+    model*: PTreeModel
     flags*: guint
-    tree*: PGtkRBTree
-    button_pressed_node*: PGtkRBNode
-    button_pressed_tree*: PGtkRBTree
+    tree*: PRBTree
+    button_pressed_node*: PRBNode
+    button_pressed_tree*: PRBTree
     children*: PGList
     width*: gint
     height*: gint
     expander_size*: gint
-    hadjustment*: PGtkAdjustment
-    vadjustment*: PGtkAdjustment
-    bin_window*: PGdkWindow
-    header_window*: PGdkWindow
-    drag_window*: PGdkWindow
-    drag_highlight_window*: PGdkWindow
-    drag_column*: PGtkTreeViewColumn
-    last_button_press*: PGtkTreeRowReference
-    last_button_press_2*: PGtkTreeRowReference
-    top_row*: PGtkTreeRowReference
+    hadjustment*: PAdjustment
+    vadjustment*: PAdjustment
+    bin_window*: gdk2.PWindow
+    header_window*: gdk2.PWindow
+    drag_window*: gdk2.PWindow
+    drag_highlight_window*: gdk2.PWindow
+    drag_column*: PTreeViewColumn
+    last_button_press*: PTreeRowReference
+    last_button_press_2*: PTreeRowReference
+    top_row*: PTreeRowReference
     top_row_dy*: gint
     dy*: gint
     drag_column_x*: gint
-    expander_column*: PGtkTreeViewColumn
-    edited_column*: PGtkTreeViewColumn
+    expander_column*: PTreeViewColumn
+    edited_column*: PTreeViewColumn
     presize_handler_timer*: guint
     validate_rows_timer*: guint
     scroll_sync_timer*: guint
-    focus_column*: PGtkTreeViewColumn
-    anchor*: PGtkTreeRowReference
-    cursor*: PGtkTreeRowReference
+    focus_column*: PTreeViewColumn
+    anchor*: PTreeRowReference
+    cursor*: PTreeRowReference
     drag_pos*: gint
     x_drag*: gint
-    prelight_node*: PGtkRBNode
-    prelight_tree*: PGtkRBTree
-    expanded_collapsed_node*: PGtkRBNode
-    expanded_collapsed_tree*: PGtkRBTree
+    prelight_node*: PRBNode
+    prelight_tree*: PRBTree
+    expanded_collapsed_node*: PRBNode
+    expanded_collapsed_tree*: PRBTree
     expand_collapse_timeout*: guint
-    selection*: PGtkTreeSelection
+    selection*: PTreeSelection
     n_columns*: gint
     columns*: PGList
     header_height*: gint
-    column_drop_func*: TGtkTreeViewColumnDropFunc
+    column_drop_func*: TTreeViewColumnDropFunc
     column_drop_func_data*: gpointer
-    column_drop_func_data_destroy*: TGtkDestroyNotify
+    column_drop_func_data_destroy*: TDestroyNotify
     column_drag_info*: PGList
-    cur_reorder*: PGtkTreeViewColumnReorder
-    destroy_count_func*: TGtkTreeDestroyCountFunc
+    cur_reorder*: PTreeViewColumnReorder
+    destroy_count_func*: TTreeDestroyCountFunc
     destroy_count_data*: gpointer
-    destroy_count_destroy*: TGtkDestroyNotify
+    destroy_count_destroy*: TDestroyNotify
     scroll_timeout*: guint
-    drag_dest_row*: PGtkTreeRowReference
-    drag_dest_pos*: TGtkTreeViewDropPosition
+    drag_dest_row*: PTreeRowReference
+    drag_dest_pos*: TTreeViewDropPosition
     open_dest_timeout*: guint
     pressed_button*: gint
     press_start_x*: gint
     press_start_y*: gint
-    scroll_to_path*: PGtkTreeRowReference
-    scroll_to_column*: PGtkTreeViewColumn
+    scroll_to_path*: PTreeRowReference
+    scroll_to_column*: PTreeViewColumn
     scroll_to_row_align*: gfloat
     scroll_to_col_align*: gfloat
     flag0*: guint16
     search_column*: gint
-    search_dialog_position_func*: TGtkTreeViewSearchDialogPositionFunc
-    search_equal_func*: TGtkTreeViewSearchEqualFunc
+    search_dialog_position_func*: TTreeViewSearchDialogPositionFunc
+    search_equal_func*: TTreeViewSearchEqualFunc
     search_user_data*: gpointer
-    search_destroy*: TGtkDestroyNotify
-
-  TGtkTreeView* = object of TGtkContainer
-    priv*: PGtkTreeViewPrivate
-
-  PGtkTreeViewClass* = ptr TGtkTreeViewClass
-  TGtkTreeViewClass* = object of TGtkContainerClass
-    set_scroll_adjustments*: proc (tree_view: PGtkTreeView,
-                                   hadjustment: PGtkAdjustment,
-                                   vadjustment: PGtkAdjustment){.cdecl.}
-    row_activated*: proc (tree_view: PGtkTreeView, path: PGtkTreePath,
-                          column: PGtkTreeViewColumn){.cdecl.}
-    test_expand_row*: proc (tree_view: PGtkTreeView, iter: PGtkTreeIter,
-                            path: PGtkTreePath): gboolean{.cdecl.}
-    test_collapse_row*: proc (tree_view: PGtkTreeView, iter: PGtkTreeIter,
-                              path: PGtkTreePath): gboolean{.cdecl.}
-    row_expanded*: proc (tree_view: PGtkTreeView, iter: PGtkTreeIter,
-                         path: PGtkTreePath){.cdecl.}
-    row_collapsed*: proc (tree_view: PGtkTreeView, iter: PGtkTreeIter,
-                          path: PGtkTreePath){.cdecl.}
-    columns_changed*: proc (tree_view: PGtkTreeView){.cdecl.}
-    cursor_changed*: proc (tree_view: PGtkTreeView){.cdecl.}
-    move_cursor*: proc (tree_view: PGtkTreeView, step: TGtkMovementStep,
-                        count: gint): gboolean{.cdecl.}
-    select_all*: proc (tree_view: PGtkTreeView){.cdecl.}
-    unselect_all*: proc (tree_view: PGtkTreeView){.cdecl.}
-    select_cursor_row*: proc (tree_view: PGtkTreeView, start_editing: gboolean){.
+    search_destroy*: TDestroyNotify
+
+  TTreeView* = object of TContainer
+    priv*: PTreeViewPrivate
+
+  PTreeViewClass* = ptr TTreeViewClass
+  TTreeViewClass* = object of TContainerClass
+    set_scroll_adjustments*: proc (tree_view: PTreeView, 
+                                   hadjustment: PAdjustment, 
+                                   vadjustment: PAdjustment){.cdecl.}
+    row_activated*: proc (tree_view: PTreeView, path: PTreePath, 
+                          column: PTreeViewColumn){.cdecl.}
+    test_expand_row*: proc (tree_view: PTreeView, iter: PTreeIter, 
+                            path: PTreePath): gboolean{.cdecl.}
+    test_collapse_row*: proc (tree_view: PTreeView, iter: PTreeIter, 
+                              path: PTreePath): gboolean{.cdecl.}
+    row_expanded*: proc (tree_view: PTreeView, iter: PTreeIter, path: PTreePath){.
+        cdecl.}
+    row_collapsed*: proc (tree_view: PTreeView, iter: PTreeIter, path: PTreePath){.
+        cdecl.}
+    columns_changed*: proc (tree_view: PTreeView){.cdecl.}
+    cursor_changed*: proc (tree_view: PTreeView){.cdecl.}
+    move_cursor*: proc (tree_view: PTreeView, step: TMovementStep, count: gint): gboolean{.
         cdecl.}
-    toggle_cursor_row*: proc (tree_view: PGtkTreeView){.cdecl.}
-    expand_collapse_cursor_row*: proc (tree_view: PGtkTreeView,
-                                       logical: gboolean, expand: gboolean,
-                                       open_all: gboolean){.cdecl.}
-    select_cursor_parent*: proc (tree_view: PGtkTreeView){.cdecl.}
-    start_interactive_search*: proc (tree_view: PGtkTreeView){.cdecl.}
-    gtk_reserved760: proc (){.cdecl.}
-    gtk_reserved761: proc (){.cdecl.}
-    gtk_reserved762: proc (){.cdecl.}
-    gtk_reserved763: proc (){.cdecl.}
-    gtk_reserved764: proc (){.cdecl.}
-
-  PGtkVButtonBox* = ptr TGtkVButtonBox
-  TGtkVButtonBox* = object of TGtkButtonBox
-
-  PGtkVButtonBoxClass* = ptr TGtkVButtonBoxClass
-  TGtkVButtonBoxClass* = object of TGtkButtonBoxClass
-
-  PGtkViewport* = ptr TGtkViewport
-  TGtkViewport* = object of TGtkBin
-    shadow_type*: TGtkShadowType
-    view_window*: PGdkWindow
-    bin_window*: PGdkWindow
-    hadjustment*: PGtkAdjustment
-    vadjustment*: PGtkAdjustment
-
-  PGtkViewportClass* = ptr TGtkViewportClass
-  TGtkViewportClass* = object of TGtkBinClass
-    set_scroll_adjustments*: proc (viewport: PGtkViewport,
-                                   hadjustment: PGtkAdjustment,
-                                   vadjustment: PGtkAdjustment){.cdecl.}
-
-  PGtkVPaned* = ptr TGtkVPaned
-  TGtkVPaned* = object of TGtkPaned
-
-  PGtkVPanedClass* = ptr TGtkVPanedClass
-  TGtkVPanedClass* = object of TGtkPanedClass
-
-  PGtkVRuler* = ptr TGtkVRuler
-  TGtkVRuler* = object of TGtkRuler
-
-  PGtkVRulerClass* = ptr TGtkVRulerClass
-  TGtkVRulerClass* = object of TGtkRulerClass
-
-  PGtkVScale* = ptr TGtkVScale
-  TGtkVScale* = object of TGtkScale
-
-  PGtkVScaleClass* = ptr TGtkVScaleClass
-  TGtkVScaleClass* = object of TGtkScaleClass
-
-  PGtkVScrollbar* = ptr TGtkVScrollbar
-  TGtkVScrollbar* = object of TGtkScrollbar
-
-  PGtkVScrollbarClass* = ptr TGtkVScrollbarClass
-  TGtkVScrollbarClass* = object of TGtkScrollbarClass
-
-  PGtkVSeparator* = ptr TGtkVSeparator
-  TGtkVSeparator* = object of TGtkSeparator
-
-  PGtkVSeparatorClass* = ptr TGtkVSeparatorClass
-  TGtkVSeparatorClass* = object of TGtkSeparatorClass
-
-
-const
-  GTK_IN_DESTRUCTION* = 1 shl 0
-  GTK_FLOATING* = 1 shl 1
-  GTK_RESERVED_1* = 1 shl 2
-  GTK_RESERVED_2* = 1 shl 3
-  GTK_ARG_READABLE* = G_PARAM_READABLE
-  GTK_ARG_WRITABLE* = G_PARAM_WRITABLE
-  GTK_ARG_CONSTRUCT* = G_PARAM_CONSTRUCT
-  GTK_ARG_CONSTRUCT_ONLY* = G_PARAM_CONSTRUCT_ONLY
-  GTK_ARG_CHILD_ARG* = 1 shl 4
-
-proc GTK_TYPE_OBJECT*(): GType
-proc GTK_OBJECT*(anObject: pointer): PGtkObject
-proc GTK_OBJECT_CLASS*(klass: pointer): PGtkObjectClass
-proc GTK_IS_OBJECT*(anObject: pointer): bool
-proc GTK_IS_OBJECT_CLASS*(klass: pointer): bool
-proc GTK_OBJECT_GET_CLASS*(anObject: pointer): PGtkObjectClass
-proc GTK_OBJECT_TYPE*(anObject: pointer): GType
-proc GTK_OBJECT_TYPE_NAME*(anObject: pointer): cstring
-proc GTK_OBJECT_FLAGS*(obj: pointer): guint32
-proc GTK_OBJECT_FLOATING*(obj: pointer): gboolean
-proc GTK_OBJECT_SET_FLAGS*(obj: pointer, flag: guint32)
-proc GTK_OBJECT_UNSET_FLAGS*(obj: pointer, flag: guint32)
-proc gtk_object_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_object_get_type".}
-proc gtk_object_new*(thetype: TGtkType, first_property_name: cstring): PGtkObject{.
-    cdecl, varargs, dynlib: gtklib, importc: "gtk_object_new".}
-proc gtk_object_sink*(anObject: PGtkObject){.cdecl, dynlib: gtklib,
-    importc: "gtk_object_sink".}
-proc gtk_object_destroy*(anObject: PGtkObject){.cdecl, dynlib: gtklib,
+    select_all*: proc (tree_view: PTreeView){.cdecl.}
+    unselect_all*: proc (tree_view: PTreeView){.cdecl.}
+    select_cursor_row*: proc (tree_view: PTreeView, start_editing: gboolean){.
+        cdecl.}
+    toggle_cursor_row*: proc (tree_view: PTreeView){.cdecl.}
+    expand_collapse_cursor_row*: proc (tree_view: PTreeView, logical: gboolean, 
+                                       expand: gboolean, open_all: gboolean){.
+        cdecl.}
+    select_cursor_parent*: proc (tree_view: PTreeView){.cdecl.}
+    start_interactive_search*: proc (tree_view: PTreeView){.cdecl.}
+    reserved760: proc (){.cdecl.}
+    reserved761: proc (){.cdecl.}
+    reserved762: proc (){.cdecl.}
+    reserved763: proc (){.cdecl.}
+    reserved764: proc (){.cdecl.}
+
+  PVButtonBox* = ptr TVButtonBox
+  TVButtonBox* = object of TButtonBox
+  PVButtonBoxClass* = ptr TVButtonBoxClass
+  TVButtonBoxClass* = object of TButtonBoxClass
+  PViewport* = ptr TViewport
+  TViewport* = object of TBin
+    shadow_type*: TShadowType
+    view_window*: gdk2.PWindow
+    bin_window*: gdk2.PWindow
+    hadjustment*: PAdjustment
+    vadjustment*: PAdjustment
+
+  PViewportClass* = ptr TViewportClass
+  TViewportClass* = object of TBinClass
+    set_scroll_adjustments*: proc (viewport: PViewport, 
+                                   hadjustment: PAdjustment, 
+                                   vadjustment: PAdjustment){.cdecl.}
+
+  PVPaned* = ptr TVPaned
+  TVPaned* = object of TPaned
+  PVPanedClass* = ptr TVPanedClass
+  TVPanedClass* = object of TPanedClass
+  PVRuler* = ptr TVRuler
+  TVRuler* = object of TRuler
+  PVRulerClass* = ptr TVRulerClass
+  TVRulerClass* = object of TRulerClass
+  PVScale* = ptr TVScale
+  TVScale* = object of TScale
+  PVScaleClass* = ptr TVScaleClass
+  TVScaleClass* = object of TScaleClass
+  PVScrollbar* = ptr TVScrollbar
+  TVScrollbar* = object of TScrollbar
+  PVScrollbarClass* = ptr TVScrollbarClass
+  TVScrollbarClass* = object of TScrollbarClass
+  PVSeparator* = ptr TVSeparator
+  TVSeparator* = object of TSeparator
+  PVSeparatorClass* = ptr TVSeparatorClass
+  TVSeparatorClass* = object of TSeparatorClass
+
+const 
+  IN_DESTRUCTION* = 1 shl 0
+  FLOATING* = 1 shl 1
+  RESERVED_1* = 1 shl 2
+  RESERVED_2* = 1 shl 3
+  ARG_READABLE* = G_PARAM_READABLE
+  ARG_WRITABLE* = G_PARAM_WRITABLE
+  ARG_CONSTRUCT* = G_PARAM_CONSTRUCT
+  ARG_CONSTRUCT_ONLY* = G_PARAM_CONSTRUCT_ONLY
+  ARG_CHILD_ARG* = 1 shl 4
+
+proc TYPE_OBJECT*(): GType
+proc `OBJECT`*(anObject: pointer): PObject
+proc OBJECT_CLASS*(klass: pointer): PObjectClass
+proc IS_OBJECT*(anObject: pointer): bool
+proc IS_OBJECT_CLASS*(klass: pointer): bool
+proc OBJECT_GET_CLASS*(anObject: pointer): PObjectClass
+proc OBJECT_TYPE*(anObject: pointer): GType
+proc OBJECT_TYPE_NAME*(anObject: pointer): cstring
+proc OBJECT_FLAGS*(obj: pointer): guint32
+proc OBJECT_FLOATING*(obj: pointer): gboolean
+proc OBJECT_SET_FLAGS*(obj: pointer, flag: guint32)
+proc OBJECT_UNSET_FLAGS*(obj: pointer, flag: guint32)
+proc object_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_object_get_type".}
+proc object_new*(thetype: TType, first_property_name: cstring): PObject{.cdecl, 
+    varargs, dynlib: lib, importc: "gtk_object_new".}
+proc sink*(anObject: PObject){.cdecl, dynlib: lib, 
+                                      importc: "gtk_object_sink".}
+proc destroy*(anObject: PObject){.cdecl, dynlib: lib, 
     importc: "gtk_object_destroy".}
-const
-  GTK_TYPE_INVALID* = G_TYPE_INVALID
-  GTK_TYPE_NONE* = G_TYPE_NONE
-  GTK_TYPE_ENUM* = G_TYPE_ENUM
-  GTK_TYPE_FLAGS* = G_TYPE_FLAGS
-  GTK_TYPE_CHAR* = G_TYPE_CHAR
-  GTK_TYPE_UCHAR* = G_TYPE_UCHAR
-  GTK_TYPE_BOOL* = G_TYPE_BOOLEAN
-  GTK_TYPE_INT* = G_TYPE_INT
-  GTK_TYPE_UINT* = G_TYPE_UINT
-  GTK_TYPE_LONG* = G_TYPE_LONG
-  GTK_TYPE_ULONG* = G_TYPE_ULONG
-  GTK_TYPE_FLOAT* = G_TYPE_FLOAT
-  GTK_TYPE_DOUBLE* = G_TYPE_DOUBLE
-  GTK_TYPE_STRING* = G_TYPE_STRING
-  GTK_TYPE_BOXED* = G_TYPE_BOXED
-  GTK_TYPE_POINTER* = G_TYPE_POINTER
-
-proc GTK_TYPE_IDENTIFIER*(): GType
-proc gtk_identifier_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_identifier_get_type".}
-proc GTK_SIGNAL_FUNC*(f: pointer): TGtkSignalFunc
-proc gtk_type_class*(thetype: TGtkType): gpointer{.cdecl, dynlib: gtklib,
+const 
+  TYPE_INVALID* = G_TYPE_INVALID
+  TYPE_NONE* = G_TYPE_NONE
+  TYPE_ENUM* = G_TYPE_ENUM
+  TYPE_FLAGS* = G_TYPE_FLAGS
+  TYPE_CHAR* = G_TYPE_CHAR
+  TYPE_UCHAR* = G_TYPE_UCHAR
+  TYPE_BOOL* = G_TYPE_BOOLEAN
+  TYPE_INT* = G_TYPE_INT
+  TYPE_UINT* = G_TYPE_UINT
+  TYPE_LONG* = G_TYPE_LONG
+  TYPE_ULONG* = G_TYPE_ULONG
+  TYPE_FLOAT* = G_TYPE_FLOAT
+  TYPE_DOUBLE* = G_TYPE_DOUBLE
+  TYPE_STRING* = G_TYPE_STRING
+  TYPE_BOXED* = G_TYPE_BOXED
+  TYPE_POINTER* = G_TYPE_POINTER
+
+proc TYPE_IDENTIFIER*(): GType
+proc identifier_get_type*(): GType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_identifier_get_type".}
+proc SIGNAL_FUNC*(f: pointer): TSignalFunc
+proc type_class*(thetype: TType): gpointer{.cdecl, dynlib: lib, 
     importc: "gtk_type_class".}
-const
-  GTK_TOPLEVEL* = 1 shl 4
-  GTK_NO_WINDOW* = 1 shl 5
-  GTK_REALIZED* = 1 shl 6
-  GTK_MAPPED* = 1 shl 7
-  GTK_VISIBLE* = 1 shl 8
-  GTK_SENSITIVE* = 1 shl 9
-  GTK_PARENT_SENSITIVE* = 1 shl 10
-  GTK_CAN_FOCUS* = 1 shl 11
-  GTK_HAS_FOCUS* = 1 shl 12
-  GTK_CAN_DEFAULT* = 1 shl 13
-  GTK_HAS_DEFAULT* = 1 shl 14
-  GTK_HAS_GRAB* = 1 shl 15
-  GTK_RC_STYLE* = 1 shl 16
-  GTK_COMPOSITE_CHILD* = 1 shl 17
-  GTK_NO_REPARENT* = 1 shl 18
-  GTK_APP_PAINTABLE* = 1 shl 19
-  GTK_RECEIVES_DEFAULT* = 1 shl 20
-  GTK_DOUBLE_BUFFERED* = 1 shl 21
-
-const
-  bm_TGtkWidgetAuxInfo_x_set* = 0x00000001'i16
+const 
+  TOPLEVEL* = 1 shl 4
+  NO_WINDOW* = 1 shl 5
+  constREALIZED* = 1 shl 6
+  MAPPED* = 1 shl 7
+  constVISIBLE* = 1 shl 8
+  SENSITIVE* = 1 shl 9
+  PARENT_SENSITIVE* = 1 shl 10
+  CAN_FOCUS* = 1 shl 11
+  constHAS_FOCUS* = 1 shl 12
+  CAN_DEFAULT* = 1 shl 13
+  HAS_DEFAULT* = 1 shl 14
+  HAS_GRAB* = 1 shl 15
+  RC_STYLE* = 1 shl 16
+  COMPOSITE_CHILD* = 1 shl 17
+  NO_REPARENT* = 1 shl 18
+  APP_PAINTABLE* = 1 shl 19
+  RECEIVES_DEFAULT* = 1 shl 20
+  DOUBLE_BUFFERED* = 1 shl 21
+
+const 
+  bm_TGtkWidgetAuxInfo_x_set* = 0x0001'i16
   bp_TGtkWidgetAuxInfo_x_set* = 0'i16
-  bm_TGtkWidgetAuxInfo_y_set* = 0x00000002'i16
+  bm_TGtkWidgetAuxInfo_y_set* = 0x0002'i16
   bp_TGtkWidgetAuxInfo_y_set* = 1'i16
 
-proc GTK_TYPE_WIDGET*(): GType
-proc GTK_WIDGET*(widget: pointer): PGtkWidget
-proc GTK_WIDGET_CLASS*(klass: pointer): PGtkWidgetClass
-proc GTK_IS_WIDGET*(widget: pointer): bool
-proc GTK_IS_WIDGET_CLASS*(klass: pointer): bool
-proc GTK_WIDGET_GET_CLASS*(obj: pointer): PGtkWidgetClass
-proc GTK_WIDGET_TYPE*(wid: pointer): GType
-proc GTK_WIDGET_STATE*(wid: pointer): int32
-proc GTK_WIDGET_SAVED_STATE*(wid: pointer): int32
-proc GTK_WIDGET_FLAGS*(wid: pointer): guint32
-proc GTK_WIDGET_TOPLEVEL*(wid: pointer): gboolean
-proc GTK_WIDGET_NO_WINDOW*(wid: pointer): gboolean
-proc GTK_WIDGET_REALIZED*(wid: pointer): gboolean
-proc GTK_WIDGET_MAPPED*(wid: pointer): gboolean
-proc GTK_WIDGET_VISIBLE*(wid: pointer): gboolean
-proc GTK_WIDGET_DRAWABLE*(wid: pointer): gboolean
-proc GTK_WIDGET_SENSITIVE*(wid: pointer): gboolean
-proc GTK_WIDGET_PARENT_SENSITIVE*(wid: pointer): gboolean
-proc GTK_WIDGET_IS_SENSITIVE*(wid: pointer): gboolean
-proc GTK_WIDGET_CAN_FOCUS*(wid: pointer): gboolean
-proc GTK_WIDGET_HAS_FOCUS*(wid: pointer): gboolean
-proc GTK_WIDGET_CAN_DEFAULT*(wid: pointer): gboolean
-proc GTK_WIDGET_HAS_DEFAULT*(wid: pointer): gboolean
-proc GTK_WIDGET_HAS_GRAB*(wid: pointer): gboolean
-proc GTK_WIDGET_RC_STYLE*(wid: pointer): gboolean
-proc GTK_WIDGET_COMPOSITE_CHILD*(wid: pointer): gboolean
-proc GTK_WIDGET_APP_PAINTABLE*(wid: pointer): gboolean
-proc GTK_WIDGET_RECEIVES_DEFAULT*(wid: pointer): gboolean
-proc GTK_WIDGET_DOUBLE_BUFFERED*(wid: pointer): gboolean
-proc GTK_WIDGET_SET_FLAGS*(wid: PGtkWidget, flags: TGtkWidgetFlags): TGtkWidgetFlags
-proc GTK_WIDGET_UNSET_FLAGS*(wid: PGtkWidget, flags: TGtkWidgetFlags): TGtkWidgetFlags
-proc GTK_TYPE_REQUISITION*(): GType
-proc x_set*(a: var TGtkWidgetAuxInfo): guint
-proc set_x_set*(a: var TGtkWidgetAuxInfo, x_set: guint)
-proc y_set*(a: var TGtkWidgetAuxInfo): guint
-proc set_y_set*(a: var TGtkWidgetAuxInfo, y_set: guint)
-proc gtk_widget_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_widget_get_type".}
-proc gtk_widget_ref*(widget: PGtkWidget): PGtkWidget{.cdecl, dynlib: gtklib,
+proc TYPE_WIDGET*(): GType
+proc WIDGET*(widget: pointer): PWidget
+proc WIDGET_CLASS*(klass: pointer): PWidgetClass
+proc IS_WIDGET*(widget: pointer): bool
+proc IS_WIDGET_CLASS*(klass: pointer): bool
+proc WIDGET_GET_CLASS*(obj: pointer): PWidgetClass
+proc WIDGET_TYPE*(wid: pointer): GType
+proc WIDGET_STATE*(wid: pointer): int32
+proc WIDGET_SAVED_STATE*(wid: pointer): int32
+proc WIDGET_FLAGS*(wid: pointer): guint32
+proc WIDGET_TOPLEVEL*(wid: pointer): gboolean
+proc WIDGET_NO_WINDOW*(wid: pointer): gboolean
+proc WIDGET_REALIZED*(wid: pointer): gboolean
+proc WIDGET_MAPPED*(wid: pointer): gboolean
+proc WIDGET_VISIBLE*(wid: pointer): gboolean
+proc WIDGET_DRAWABLE*(wid: pointer): gboolean
+proc WIDGET_SENSITIVE*(wid: pointer): gboolean
+proc WIDGET_PARENT_SENSITIVE*(wid: pointer): gboolean
+proc WIDGET_IS_SENSITIVE*(wid: pointer): gboolean
+proc WIDGET_CAN_FOCUS*(wid: pointer): gboolean
+proc WIDGET_HAS_FOCUS*(wid: pointer): gboolean
+proc WIDGET_CAN_DEFAULT*(wid: pointer): gboolean
+proc WIDGET_HAS_DEFAULT*(wid: pointer): gboolean
+proc WIDGET_HAS_GRAB*(wid: pointer): gboolean
+proc WIDGET_RC_STYLE*(wid: pointer): gboolean
+proc WIDGET_COMPOSITE_CHILD*(wid: pointer): gboolean
+proc WIDGET_APP_PAINTABLE*(wid: pointer): gboolean
+proc WIDGET_RECEIVES_DEFAULT*(wid: pointer): gboolean
+proc WIDGET_DOUBLE_BUFFERED*(wid: pointer): gboolean
+proc SET_FLAGS*(wid: PWidget, flags: TWidgetFlags): TWidgetFlags
+proc UNSET_FLAGS*(wid: PWidget, flags: TWidgetFlags): TWidgetFlags
+proc TYPE_REQUISITION*(): GType
+proc x_set*(a: var TWidgetAuxInfo): guint
+proc set_x_set*(a: var TWidgetAuxInfo, x_set: guint)
+proc y_set*(a: var TWidgetAuxInfo): guint
+proc set_y_set*(a: var TWidgetAuxInfo, y_set: guint)
+proc widget_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_widget_get_type".}
+proc reference*(widget: PWidget): PWidget{.cdecl, dynlib: lib, 
     importc: "gtk_widget_ref".}
-proc gtk_widget_unref*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_unref".}
-proc gtk_widget_destroy*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_destroy".}
-proc gtk_widget_destroyed*(widget: PGtkWidget, r: var PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_destroyed".}
-proc gtk_widget_unparent*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_unparent".}
-proc gtk_widget_show*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_show".}
-proc gtk_widget_show_now*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_show_now".}
-proc gtk_widget_hide*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_hide".}
-proc gtk_widget_show_all*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_show_all".}
-proc gtk_widget_hide_all*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_hide_all".}
-proc gtk_widget_map*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_map".}
-proc gtk_widget_unmap*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_unmap".}
-proc gtk_widget_realize*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_realize".}
-proc gtk_widget_unrealize*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc unref*(widget: PWidget){.cdecl, dynlib: lib, 
+                                     importc: "gtk_widget_unref".}
+proc destroy*(widget: PWidget){.cdecl, dynlib: lib, 
+                                       importc: "gtk_widget_destroy".}
+proc destroyed*(widget: PWidget, r: var PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_destroyed".}
+proc unparent*(widget: PWidget){.cdecl, dynlib: lib, 
+                                        importc: "gtk_widget_unparent".}
+proc show*(widget: PWidget){.cdecl, dynlib: lib, 
+                                    importc: "gtk_widget_show".}
+proc show_now*(widget: PWidget){.cdecl, dynlib: lib, 
+                                        importc: "gtk_widget_show_now".}
+proc hide*(widget: PWidget){.cdecl, dynlib: lib, 
+                                    importc: "gtk_widget_hide".}
+proc show_all*(widget: PWidget){.cdecl, dynlib: lib, 
+                                        importc: "gtk_widget_show_all".}
+proc hide_all*(widget: PWidget){.cdecl, dynlib: lib, 
+                                        importc: "gtk_widget_hide_all".}
+proc map*(widget: PWidget){.cdecl, dynlib: lib, importc: "gtk_widget_map".}
+proc unmap*(widget: PWidget){.cdecl, dynlib: lib, 
+                                     importc: "gtk_widget_unmap".}
+proc realize*(widget: PWidget){.cdecl, dynlib: lib, 
+                                       importc: "gtk_widget_realize".}
+proc unrealize*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_unrealize".}
-proc gtk_widget_queue_draw*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc queue_draw*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_queue_draw".}
-proc gtk_widget_queue_draw_area*(widget: PGtkWidget, x: gint, y: gint,
-                                 width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_queue_draw_area".}
-proc gtk_widget_queue_resize*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc queue_draw_area*(widget: PWidget, x: gint, y: gint, width: gint, 
+                             height: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_queue_draw_area".}
+proc queue_resize*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_queue_resize".}
-proc gtk_widget_size_request*(widget: PGtkWidget, requisition: PGtkRequisition){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_size_request".}
-proc gtk_widget_size_allocate*(widget: PGtkWidget, allocation: PGtkAllocation){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_size_allocate".}
-proc gtk_widget_get_child_requisition*(widget: PGtkWidget,
-                                       requisition: PGtkRequisition){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_child_requisition".}
-proc gtk_widget_add_accelerator*(widget: PGtkWidget, accel_signal: cstring,
-                                 accel_group: PGtkAccelGroup, accel_key: guint,
-                                 accel_mods: TGdkModifierType,
-                                 accel_flags: TGtkAccelFlags){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_add_accelerator".}
-proc gtk_widget_remove_accelerator*(widget: PGtkWidget,
-                                    accel_group: PGtkAccelGroup,
-                                    accel_key: guint,
-                                    accel_mods: TGdkModifierType): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_remove_accelerator".}
-proc gtk_widget_set_accel_path*(widget: PGtkWidget, accel_path: cstring,
-                                accel_group: PGtkAccelGroup){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_accel_path".}
-proc gtk_widget_get_accel_path*(widget: PGtkWidget, locked: Pgboolean): cstring{.
-    cdecl, dynlib: gtklib, importc: "_gtk_widget_get_accel_path".}
-proc gtk_widget_list_accel_closures*(widget: PGtkWidget): PGList{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_list_accel_closures".}
-proc gtk_widget_mnemonic_activate*(widget: PGtkWidget, group_cycling: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_mnemonic_activate".}
-proc gtk_widget_event*(widget: PGtkWidget, event: PGdkEvent): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_event".}
-proc gtk_widget_send_expose*(widget: PGtkWidget, event: PGdkEvent): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_send_expose".}
-proc gtk_widget_activate*(widget: PGtkWidget): gboolean{.cdecl, dynlib: gtklib,
+proc size_request*(widget: PWidget, requisition: PRequisition){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_size_request".}
+proc size_allocate*(widget: PWidget, allocation: PAllocation){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_size_allocate".}
+proc get_child_requisition*(widget: PWidget, requisition: PRequisition){.
+    cdecl, dynlib: lib, importc: "gtk_widget_get_child_requisition".}
+proc add_accelerator*(widget: PWidget, accel_signal: cstring, 
+                             accel_group: PAccelGroup, accel_key: guint, 
+                             accel_mods: gdk2.TModifierType, 
+                             accel_flags: TAccelFlags){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_add_accelerator".}
+proc remove_accelerator*(widget: PWidget, accel_group: PAccelGroup, 
+                                accel_key: guint, accel_mods: gdk2.TModifierType): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_widget_remove_accelerator".}
+proc set_accel_path*(widget: PWidget, accel_path: cstring, 
+                            accel_group: PAccelGroup){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_accel_path".}
+proc get_accel_path*(widget: PWidget, locked: Pgboolean): cstring{.cdecl, 
+    dynlib: lib, importc: "_gtk_widget_get_accel_path".}
+proc list_accel_closures*(widget: PWidget): PGList{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_list_accel_closures".}
+proc mnemonic_activate*(widget: PWidget, group_cycling: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_widget_mnemonic_activate".}
+proc event*(widget: PWidget, event: gdk2.PEvent): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_event".}
+proc send_expose*(widget: PWidget, event: gdk2.PEvent): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_send_expose".}
+proc activate*(widget: PWidget): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_widget_activate".}
-proc gtk_widget_set_scroll_adjustments*(widget: PGtkWidget,
-                                        hadjustment: PGtkAdjustment,
-                                        vadjustment: PGtkAdjustment): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_scroll_adjustments".}
-proc gtk_widget_reparent*(widget: PGtkWidget, new_parent: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_reparent".}
-proc gtk_widget_intersect*(widget: PGtkWidget, area: PGdkRectangle,
-                           intersection: PGdkRectangle): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_intersect".}
-proc gtk_widget_region_intersect*(widget: PGtkWidget, region: PGdkRegion): PGdkRegion{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_region_intersect".}
-proc gtk_widget_freeze_child_notify*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc set_scroll_adjustments*(widget: PWidget, hadjustment: PAdjustment, 
+                                    vadjustment: PAdjustment): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_scroll_adjustments".}
+proc reparent*(widget: PWidget, new_parent: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_reparent".}
+proc intersect*(widget: PWidget, area: gdk2.PRectangle, 
+                       intersection: gdk2.PRectangle): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_intersect".}
+proc region_intersect*(widget: PWidget, region: gdk2.PRegion): gdk2.PRegion{.
+    cdecl, dynlib: lib, importc: "gtk_widget_region_intersect".}
+proc freeze_child_notify*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_freeze_child_notify".}
-proc gtk_widget_child_notify*(widget: PGtkWidget, child_property: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_child_notify".}
-proc gtk_widget_thaw_child_notify*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc child_notify*(widget: PWidget, child_property: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_child_notify".}
+proc thaw_child_notify*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_thaw_child_notify".}
-proc gtk_widget_is_focus*(widget: PGtkWidget): gboolean{.cdecl, dynlib: gtklib,
+proc is_focus*(widget: PWidget): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_widget_is_focus".}
-proc gtk_widget_grab_focus*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc grab_focus*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_grab_focus".}
-proc gtk_widget_grab_default*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc grab_default*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_grab_default".}
-proc gtk_widget_set_name*(widget: PGtkWidget, name: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_name".}
-proc gtk_widget_get_name*(widget: PGtkWidget): cstring{.cdecl, dynlib: gtklib,
+proc set_name*(widget: PWidget, name: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_name".}
+proc get_name*(widget: PWidget): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_widget_get_name".}
-proc gtk_widget_set_state*(widget: PGtkWidget, state: TGtkStateType){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_state".}
-proc gtk_widget_set_sensitive*(widget: PGtkWidget, sensitive: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_sensitive".}
-proc gtk_widget_set_app_paintable*(widget: PGtkWidget, app_paintable: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_app_paintable".}
-proc gtk_widget_set_double_buffered*(widget: PGtkWidget,
-                                     double_buffered: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_double_buffered".}
-proc gtk_widget_set_redraw_on_allocate*(widget: PGtkWidget,
-                                        redraw_on_allocate: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_redraw_on_allocate".}
-proc gtk_widget_set_parent*(widget: PGtkWidget, parent: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_parent".}
-proc gtk_widget_set_parent_window*(widget: PGtkWidget, parent_window: PGdkWindow){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_parent_window".}
-proc gtk_widget_set_child_visible*(widget: PGtkWidget, is_visible: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_child_visible".}
-proc gtk_widget_get_child_visible*(widget: PGtkWidget): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_child_visible".}
-proc gtk_widget_get_parent*(widget: PGtkWidget): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_parent".}
-proc gtk_widget_get_parent_window*(widget: PGtkWidget): PGdkWindow{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_parent_window".}
-proc gtk_widget_child_focus*(widget: PGtkWidget, direction: TGtkDirectionType): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_child_focus".}
-proc gtk_widget_set_size_request*(widget: PGtkWidget, width: gint, height: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_size_request".}
-proc gtk_widget_get_size_request*(widget: PGtkWidget, width: Pgint,
-                                  height: Pgint){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_get_size_request".}
-proc gtk_widget_set_events*(widget: PGtkWidget, events: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_events".}
-proc gtk_widget_add_events*(widget: PGtkWidget, events: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_add_events".}
-proc gtk_widget_set_extension_events*(widget: PGtkWidget,
-                                      mode: TGdkExtensionMode){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_extension_events".}
-proc gtk_widget_get_extension_events*(widget: PGtkWidget): TGdkExtensionMode{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_get_extension_events".}
-proc gtk_widget_get_toplevel*(widget: PGtkWidget): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_toplevel".}
-proc gtk_widget_get_ancestor*(widget: PGtkWidget, widget_type: TGtkType): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_get_ancestor".}
-proc gtk_widget_get_colormap*(widget: PGtkWidget): PGdkColormap{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_colormap".}
-proc gtk_widget_get_visual*(widget: PGtkWidget): PGdkVisual{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_visual".}
-proc gtk_widget_get_screen*(widget: PGtkWidget): PGdkScreen{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_screen".}
-proc gtk_widget_has_screen*(widget: PGtkWidget): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_has_screen".}
-proc gtk_widget_get_display*(widget: PGtkWidget): PGdkDisplay{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_display".}
-proc gtk_widget_get_root_window*(widget: PGtkWidget): PGdkWindow{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_root_window".}
-proc gtk_widget_get_settings*(widget: PGtkWidget): PGtkSettings{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_settings".}
-proc gtk_widget_get_clipboard*(widget: PGtkWidget, selection: TGdkAtom): PGtkClipboard{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_get_clipboard".}
-proc gtk_widget_get_accessible*(widget: PGtkWidget): PAtkObject{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_accessible".}
-proc gtk_widget_set_colormap*(widget: PGtkWidget, colormap: PGdkColormap){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_colormap".}
-proc gtk_widget_get_events*(widget: PGtkWidget): gint{.cdecl, dynlib: gtklib,
+proc set_state*(widget: PWidget, state: TStateType){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_state".}
+proc set_sensitive*(widget: PWidget, sensitive: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_sensitive".}
+proc set_app_paintable*(widget: PWidget, app_paintable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_app_paintable".}
+proc set_double_buffered*(widget: PWidget, double_buffered: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_widget_set_double_buffered".}
+proc set_redraw_on_allocate*(widget: PWidget, 
+                                    redraw_on_allocate: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_redraw_on_allocate".}
+proc set_parent*(widget: PWidget, parent: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_parent".}
+proc set_parent_window*(widget: PWidget, parent_window: gdk2.PWindow){.
+    cdecl, dynlib: lib, importc: "gtk_widget_set_parent_window".}
+proc set_child_visible*(widget: PWidget, is_visible: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_child_visible".}
+proc get_child_visible*(widget: PWidget): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_child_visible".}
+proc get_parent*(widget: PWidget): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_parent".}
+proc get_parent_window*(widget: PWidget): gdk2.PWindow{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_parent_window".}
+proc child_focus*(widget: PWidget, direction: TDirectionType): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_widget_child_focus".}
+proc set_size_request*(widget: PWidget, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "gtk_widget_set_size_request".}
+proc get_size_request*(widget: PWidget, width: Pgint, height: Pgint){.
+    cdecl, dynlib: lib, importc: "gtk_widget_get_size_request".}
+proc set_events*(widget: PWidget, events: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_events".}
+proc add_events*(widget: PWidget, events: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_add_events".}
+proc set_extension_events*(widget: PWidget, mode: gdk2.TExtensionMode){.
+    cdecl, dynlib: lib, importc: "gtk_widget_set_extension_events".}
+proc get_extension_events*(widget: PWidget): gdk2.TExtensionMode{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_get_extension_events".}
+proc get_toplevel*(widget: PWidget): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_toplevel".}
+proc get_ancestor*(widget: PWidget, widget_type: TType): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_get_ancestor".}
+proc get_colormap*(widget: PWidget): gdk2.PColormap{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_colormap".}
+proc get_visual*(widget: PWidget): gdk2.PVisual{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_visual".}
+proc get_screen*(widget: PWidget): gdk2.PScreen{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_screen".}
+proc has_screen*(widget: PWidget): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_has_screen".}
+proc get_display*(widget: PWidget): gdk2.PDisplay{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_display".}
+proc get_root_window*(widget: PWidget): gdk2.PWindow{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_root_window".}
+proc get_settings*(widget: PWidget): PSettings{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_settings".}
+proc get_clipboard*(widget: PWidget, selection: gdk2.TAtom): PClipboard{.
+    cdecl, dynlib: lib, importc: "gtk_widget_get_clipboard".}
+proc get_accessible*(widget: PWidget): atk.PObject{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_accessible".}
+proc set_colormap*(widget: PWidget, colormap: gdk2.PColormap){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_colormap".}
+proc get_events*(widget: PWidget): gint{.cdecl, dynlib: lib, 
     importc: "gtk_widget_get_events".}
-proc gtk_widget_get_pointer*(widget: PGtkWidget, x: Pgint, y: Pgint){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_pointer".}
-proc gtk_widget_is_ancestor*(widget: PGtkWidget, ancestor: PGtkWidget): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_is_ancestor".}
-proc gtk_widget_translate_coordinates*(src_widget: PGtkWidget,
-                                       dest_widget: PGtkWidget, src_x: gint,
-                                       src_y: gint, dest_x: Pgint, dest_y: Pgint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_translate_coordinates".}
-proc gtk_widget_hide_on_delete*(widget: PGtkWidget): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_hide_on_delete".}
-proc gtk_widget_set_style*(widget: PGtkWidget, style: PGtkStyle){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_style".}
-proc gtk_widget_ensure_style*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc get_pointer*(widget: PWidget, x: Pgint, y: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_get_pointer".}
+proc is_ancestor*(widget: PWidget, ancestor: PWidget): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_is_ancestor".}
+proc translate_coordinates*(src_widget: PWidget, dest_widget: PWidget, 
+                                   src_x: gint, src_y: gint, dest_x: Pgint, 
+                                   dest_y: Pgint): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_translate_coordinates".}
+proc hide_on_delete*(widget: PWidget): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_hide_on_delete".}
+proc set_style*(widget: PWidget, style: PStyle){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_style".}
+proc ensure_style*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_ensure_style".}
-proc gtk_widget_get_style*(widget: PGtkWidget): PGtkStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_style".}
-proc gtk_widget_modify_style*(widget: PGtkWidget, style: PGtkRcStyle){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_modify_style".}
-proc gtk_widget_get_modifier_style*(widget: PGtkWidget): PGtkRcStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_modifier_style".}
-proc gtk_widget_modify_fg*(widget: PGtkWidget, state: TGtkStateType,
-                           color: PGdkColor){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_modify_fg".}
-proc gtk_widget_modify_bg*(widget: PGtkWidget, state: TGtkStateType,
-                           color: PGdkColor){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_modify_bg".}
-proc gtk_widget_modify_text*(widget: PGtkWidget, state: TGtkStateType,
-                             color: PGdkColor){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_modify_text".}
-proc gtk_widget_modify_base*(widget: PGtkWidget, state: TGtkStateType,
-                             color: PGdkColor){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_modify_base".}
-proc gtk_widget_modify_font*(widget: PGtkWidget,
-                             font_desc: PPangoFontDescription){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_modify_font".}
-proc gtk_widget_create_pango_context*(widget: PGtkWidget): PPangoContext{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_create_pango_context".}
-proc gtk_widget_get_pango_context*(widget: PGtkWidget): PPangoContext{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_pango_context".}
-proc gtk_widget_create_pango_layout*(widget: PGtkWidget, text: cstring): PPangoLayout{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_create_pango_layout".}
-proc gtk_widget_render_icon*(widget: PGtkWidget, stock_id: cstring,
-                             size: TGtkIconSize, detail: cstring): PGdkPixbuf{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_render_icon".}
-proc gtk_widget_set_composite_name*(widget: PGtkWidget, name: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_composite_name".}
-proc gtk_widget_get_composite_name*(widget: PGtkWidget): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_composite_name".}
-proc gtk_widget_reset_rc_styles*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc get_style*(widget: PWidget): PStyle{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_style".}
+proc modify_style*(widget: PWidget, style: PRcStyle){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_modify_style".}
+proc get_modifier_style*(widget: PWidget): PRcStyle{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_modifier_style".}
+proc modify_fg*(widget: PWidget, state: TStateType, color: gdk2.PColor){.
+    cdecl, dynlib: lib, importc: "gtk_widget_modify_fg".}
+proc modify_bg*(widget: PWidget, state: TStateType, color: gdk2.PColor){.
+    cdecl, dynlib: lib, importc: "gtk_widget_modify_bg".}
+proc modify_text*(widget: PWidget, state: TStateType, color: gdk2.PColor){.
+    cdecl, dynlib: lib, importc: "gtk_widget_modify_text".}
+proc modify_base*(widget: PWidget, state: TStateType, color: gdk2.PColor){.
+    cdecl, dynlib: lib, importc: "gtk_widget_modify_base".}
+proc modify_font*(widget: PWidget, font_desc: pango.PFontDescription){.
+    cdecl, dynlib: lib, importc: "gtk_widget_modify_font".}
+proc create_pango_context*(widget: PWidget): pango.PContext{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_create_pango_context".}
+proc get_pango_context*(widget: PWidget): pango.PContext{.cdecl, 
+    dynlib: lib, importc: "gtk_widget_get_pango_context".}
+proc create_pango_layout*(widget: PWidget, text: cstring): pango.PLayout{.
+    cdecl, dynlib: lib, importc: "gtk_widget_create_pango_layout".}
+proc render_icon*(widget: PWidget, stock_id: cstring, size: TIconSize, 
+                         detail: cstring): gdk2pixbuf.PPixbuf{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_render_icon".}
+proc set_composite_name*(widget: PWidget, name: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_composite_name".}
+proc get_composite_name*(widget: PWidget): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_composite_name".}
+proc reset_rc_styles*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_reset_rc_styles".}
-proc gtk_widget_push_colormap*(cmap: PGdkColormap){.cdecl, dynlib: gtklib,
+proc widget_push_colormap*(cmap: gdk2.PColormap){.cdecl, dynlib: lib, 
     importc: "gtk_widget_push_colormap".}
-proc gtk_widget_push_composite_child*(){.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_push_composite_child".}
-proc gtk_widget_pop_composite_child*(){.cdecl, dynlib: gtklib, importc: "gtk_widget_pop_composite_child".}
-proc gtk_widget_pop_colormap*(){.cdecl, dynlib: gtklib,
-                                 importc: "gtk_widget_pop_colormap".}
-proc gtk_widget_class_install_style_property*(klass: PGtkWidgetClass,
-    pspec: PGParamSpec){.cdecl, dynlib: gtklib,
+proc widget_push_composite_child*(){.cdecl, dynlib: lib, 
+                                     importc: "gtk_widget_push_composite_child".}
+proc widget_pop_composite_child*(){.cdecl, dynlib: lib, 
+                                    importc: "gtk_widget_pop_composite_child".}
+proc widget_pop_colormap*(){.cdecl, dynlib: lib, 
+                             importc: "gtk_widget_pop_colormap".}
+proc install_style_property*(klass: PWidgetClass, 
+    pspec: PGParamSpec){.cdecl, dynlib: lib, 
                          importc: "gtk_widget_class_install_style_property".}
-proc gtk_widget_class_install_style_property_parser*(klass: PGtkWidgetClass,
-    pspec: PGParamSpec, parser: TGtkRcPropertyParser){.cdecl, dynlib: gtklib,
+proc install_style_property_parser*(klass: PWidgetClass, 
+    pspec: PGParamSpec, parser: TRcPropertyParser){.cdecl, dynlib: lib, 
     importc: "gtk_widget_class_install_style_property_parser".}
-proc gtk_widget_class_find_style_property*(klass: PGtkWidgetClass,
-    property_name: cstring): PGParamSpec{.cdecl, dynlib: gtklib,
-    importc: "gtk_widget_class_find_style_property".}
-proc gtk_widget_class_list_style_properties*(klass: PGtkWidgetClass,
-    n_properties: Pguint): PPGParamSpec{.cdecl, dynlib: gtklib,
+proc find_style_property*(klass: PWidgetClass, 
+                                       property_name: cstring): PGParamSpec{.
+    cdecl, dynlib: lib, importc: "gtk_widget_class_find_style_property".}
+proc list_style_properties*(klass: PWidgetClass, 
+    n_properties: Pguint): PPGParamSpec{.cdecl, dynlib: lib, 
     importc: "gtk_widget_class_list_style_properties".}
-proc gtk_widget_style_get_property*(widget: PGtkWidget, property_name: cstring,
-                                    value: PGValue){.cdecl, dynlib: gtklib,
+proc style_get_property*(widget: PWidget, property_name: cstring, 
+                                value: PGValue){.cdecl, dynlib: lib, 
     importc: "gtk_widget_style_get_property".}
-proc gtk_widget_set_default_colormap*(colormap: PGdkColormap){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_default_colormap".}
-proc gtk_widget_get_default_style*(): PGtkStyle{.cdecl, dynlib: gtklib,
+proc widget_set_default_colormap*(colormap: gdk2.PColormap){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_default_colormap".}
+proc widget_get_default_style*(): PStyle{.cdecl, dynlib: lib, 
     importc: "gtk_widget_get_default_style".}
-proc gtk_widget_set_direction*(widget: PGtkWidget, dir: TGtkTextDirection){.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_set_direction".}
-proc gtk_widget_get_direction*(widget: PGtkWidget): TGtkTextDirection{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_direction".}
-proc gtk_widget_set_default_direction*(dir: TGtkTextDirection){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_set_default_direction".}
-proc gtk_widget_get_default_direction*(): TGtkTextDirection{.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_get_default_direction".}
-proc gtk_widget_shape_combine_mask*(widget: PGtkWidget, shape_mask: PGdkBitmap,
-                                    offset_x: gint, offset_y: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_shape_combine_mask".}
-proc gtk_widget_reset_shapes*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc set_direction*(widget: PWidget, dir: TTextDirection){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_set_direction".}
+proc get_direction*(widget: PWidget): TTextDirection{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_direction".}
+proc widget_set_default_direction*(dir: TTextDirection){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_set_default_direction".}
+proc widget_get_default_direction*(): TTextDirection{.cdecl, dynlib: lib, 
+    importc: "gtk_widget_get_default_direction".}
+proc shape_combine_mask*(widget: PWidget, shape_mask: gdk2.PBitmap, 
+                                offset_x: gint, offset_y: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_widget_shape_combine_mask".}
+proc reset_shapes*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_widget_reset_shapes".}
-proc gtk_widget_path*(widget: PGtkWidget, path_length: Pguint, path: PPgchar,
-                      path_reversed: PPgchar){.cdecl, dynlib: gtklib,
+proc path*(widget: PWidget, path_length: Pguint, path: PPgchar, 
+                  path_reversed: PPgchar){.cdecl, dynlib: lib, 
     importc: "gtk_widget_path".}
-proc gtk_widget_class_path*(widget: PGtkWidget, path_length: Pguint,
-                            path: PPgchar, path_reversed: PPgchar){.cdecl,
-    dynlib: gtklib, importc: "gtk_widget_class_path".}
-proc gtk_requisition_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_requisition_get_type".}
-proc gtk_requisition_copy*(requisition: PGtkRequisition): PGtkRequisition{.
-    cdecl, dynlib: gtklib, importc: "gtk_requisition_copy".}
-proc gtk_requisition_free*(requisition: PGtkRequisition){.cdecl, dynlib: gtklib,
+proc class_path*(widget: PWidget, path_length: Pguint, path: PPgchar, 
+                        path_reversed: PPgchar){.cdecl, dynlib: lib, 
+    importc: "gtk_widget_class_path".}
+proc requisition_get_type*(): GType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_requisition_get_type".}
+proc copy*(requisition: PRequisition): PRequisition{.cdecl, 
+    dynlib: lib, importc: "gtk_requisition_copy".}
+proc free*(requisition: PRequisition){.cdecl, dynlib: lib, 
     importc: "gtk_requisition_free".}
-proc gtk_widget_get_aux_info*(widget: PGtkWidget, create: gboolean): PGtkWidgetAuxInfo{.
-    cdecl, dynlib: gtklib, importc: "gtk_widget_get_aux_info".}
-proc gtk_widget_propagate_hierarchy_changed*(widget: PGtkWidget,
-    previous_toplevel: PGtkWidget){.cdecl, dynlib: gtklib, importc: "_gtk_widget_propagate_hierarchy_changed".}
-proc gtk_widget_peek_colormap*(): PGdkColormap{.cdecl, dynlib: gtklib,
+proc get_aux_info*(widget: PWidget, create: gboolean): PWidgetAuxInfo{.
+    cdecl, dynlib: lib, importc: "gtk_widget_get_aux_info".}
+proc propagate_hierarchy_changed*(widget: PWidget, 
+    previous_toplevel: PWidget){.cdecl, dynlib: lib, importc: "_gtk_widget_propagate_hierarchy_changed".}
+proc widget_peek_colormap*(): gdk2.PColormap{.cdecl, dynlib: lib, 
     importc: "_gtk_widget_peek_colormap".}
-proc GTK_TYPE_MISC*(): GType
-proc GTK_MISC*(obj: pointer): PGtkMisc
-proc GTK_MISC_CLASS*(klass: pointer): PGtkMiscClass
-proc GTK_IS_MISC*(obj: pointer): bool
-proc GTK_IS_MISC_CLASS*(klass: pointer): bool
-proc GTK_MISC_GET_CLASS*(obj: pointer): PGtkMiscClass
-proc gtk_misc_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_misc_get_type".}
-proc gtk_misc_set_alignment*(misc: PGtkMisc, xalign: gfloat, yalign: gfloat){.
-    cdecl, dynlib: gtklib, importc: "gtk_misc_set_alignment".}
-proc gtk_misc_get_alignment*(misc: PGtkMisc, xalign, yalign: var Pgfloat){.
-    cdecl, dynlib: gtklib, importc: "gtk_misc_get_alignment".}
-proc gtk_misc_set_padding*(misc: PGtkMisc, xpad: gint, ypad: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_misc_set_padding".}
-proc gtk_misc_get_padding*(misc: PGtkMisc, xpad, ypad: var Pgint){.cdecl,
-    dynlib: gtklib, importc: "gtk_misc_get_padding".}
-const
-  GTK_ACCEL_VISIBLE* = 1 shl 0
-  GTK_ACCEL_LOCKED* = 1 shl 1
-  GTK_ACCEL_MASK* = 0x00000007
-  bm_TGtkAccelKey_accel_flags* = 0x0000FFFF'i16
+proc TYPE_MISC*(): GType
+proc MISC*(obj: pointer): PMisc
+proc MISC_CLASS*(klass: pointer): PMiscClass
+proc IS_MISC*(obj: pointer): bool
+proc IS_MISC_CLASS*(klass: pointer): bool
+proc MISC_GET_CLASS*(obj: pointer): PMiscClass
+proc misc_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_misc_get_type".}
+proc set_alignment*(misc: PMisc, xalign: gfloat, yalign: gfloat){.cdecl, 
+    dynlib: lib, importc: "gtk_misc_set_alignment".}
+proc get_alignment*(misc: PMisc, xalign, yalign: var Pgfloat){.cdecl, 
+    dynlib: lib, importc: "gtk_misc_get_alignment".}
+proc set_padding*(misc: PMisc, xpad: gint, ypad: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_misc_set_padding".}
+proc get_padding*(misc: PMisc, xpad, ypad: var Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_misc_get_padding".}
+const 
+  ACCEL_VISIBLE* = 1 shl 0
+  ACCEL_LOCKED* = 1 shl 1
+  ACCEL_MASK* = 0x00000007
+  bm_TGtkAccelKey_accel_flags* = 0xFFFF'i16
   bp_TGtkAccelKey_accel_flags* = 0'i16
 
-proc GTK_TYPE_ACCEL_GROUP*(): GType
-proc GTK_ACCEL_GROUP*(anObject: pointer): PGtkAccelGroup
-proc GTK_ACCEL_GROUP_CLASS*(klass: pointer): PGtkAccelGroupClass
-proc GTK_IS_ACCEL_GROUP*(anObject: pointer): bool
-proc GTK_IS_ACCEL_GROUP_CLASS*(klass: pointer): bool
-proc GTK_ACCEL_GROUP_GET_CLASS*(obj: pointer): PGtkAccelGroupClass
-proc accel_flags*(a: var TGtkAccelKey): guint
-proc set_accel_flags*(a: var TGtkAccelKey, `accel_flags`: guint)
-proc gtk_accel_group_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_accel_group_get_type".}
-proc gtk_accel_group_new*(): PGtkAccelGroup{.cdecl, dynlib: gtklib,
-    importc: "gtk_accel_group_new".}
-proc gtk_accel_group_lock*(accel_group: PGtkAccelGroup){.cdecl, dynlib: gtklib,
+proc TYPE_ACCEL_GROUP*(): GType
+proc ACCEL_GROUP*(anObject: pointer): PAccelGroup
+proc ACCEL_GROUP_CLASS*(klass: pointer): PAccelGroupClass
+proc IS_ACCEL_GROUP*(anObject: pointer): bool
+proc IS_ACCEL_GROUP_CLASS*(klass: pointer): bool
+proc ACCEL_GROUP_GET_CLASS*(obj: pointer): PAccelGroupClass
+proc accel_flags*(a: var TAccelKey): guint
+proc set_accel_flags*(a: var TAccelKey, `accel_flags`: guint)
+proc accel_group_get_type*(): GType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_accel_group_get_type".}
+proc accel_group_new*(): PAccelGroup{.cdecl, dynlib: lib, 
+                                      importc: "gtk_accel_group_new".}
+proc lock*(accel_group: PAccelGroup){.cdecl, dynlib: lib, 
     importc: "gtk_accel_group_lock".}
-proc gtk_accel_group_unlock*(accel_group: PGtkAccelGroup){.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_group_unlock".}
-proc gtk_accel_group_connect*(accel_group: PGtkAccelGroup, accel_key: guint,
-                              accel_mods: TGdkModifierType,
-                              accel_flags: TGtkAccelFlags, closure: PGClosure){.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_connect".}
-proc gtk_accel_group_connect_by_path*(accel_group: PGtkAccelGroup,
-                                      accel_path: cstring, closure: PGClosure){.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_connect_by_path".}
-proc gtk_accel_group_disconnect*(accel_group: PGtkAccelGroup, closure: PGClosure): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_disconnect".}
-proc gtk_accel_group_disconnect_key*(accel_group: PGtkAccelGroup,
-                                     accel_key: guint,
-                                     accel_mods: TGdkModifierType): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_disconnect_key".}
-proc gtk_accel_group_attach*(accel_group: PGtkAccelGroup, anObject: PGObject){.
-    cdecl, dynlib: gtklib, importc: "_gtk_accel_group_attach".}
-proc gtk_accel_group_detach*(accel_group: PGtkAccelGroup, anObject: PGObject){.
-    cdecl, dynlib: gtklib, importc: "_gtk_accel_group_detach".}
-proc gtk_accel_groups_activate*(anObject: PGObject, accel_key: guint,
-                                accel_mods: TGdkModifierType): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_groups_activate".}
-proc gtk_accel_groups_from_object*(anObject: PGObject): PGSList{.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_groups_from_object".}
-proc gtk_accel_group_find*(accel_group: PGtkAccelGroup,
-                           find_func: Tgtk_accel_group_find_func, data: gpointer): PGtkAccelKey{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_find".}
-proc gtk_accel_group_from_accel_closure*(closure: PGClosure): PGtkAccelGroup{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_from_accel_closure".}
-proc gtk_accelerator_valid*(keyval: guint, modifiers: TGdkModifierType): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_accelerator_valid".}
-proc gtk_accelerator_parse*(accelerator: cstring, accelerator_key: Pguint,
-                            accelerator_mods: PGdkModifierType){.cdecl,
-    dynlib: gtklib, importc: "gtk_accelerator_parse".}
-proc gtk_accelerator_name*(accelerator_key: guint,
-                           accelerator_mods: TGdkModifierType): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_accelerator_name".}
-proc gtk_accelerator_set_default_mod_mask*(default_mod_mask: TGdkModifierType){.
-    cdecl, dynlib: gtklib, importc: "gtk_accelerator_set_default_mod_mask".}
-proc gtk_accelerator_get_default_mod_mask*(): guint{.cdecl, dynlib: gtklib,
+proc unlock*(accel_group: PAccelGroup){.cdecl, dynlib: lib, 
+    importc: "gtk_accel_group_unlock".}
+proc connect*(accel_group: PAccelGroup, accel_key: guint, 
+                          accel_mods: gdk2.TModifierType, 
+                          accel_flags: TAccelFlags, closure: PGClosure){.cdecl, 
+    dynlib: lib, importc: "gtk_accel_group_connect".}
+proc connect_by_path*(accel_group: PAccelGroup, accel_path: cstring, 
+                                  closure: PGClosure){.cdecl, dynlib: lib, 
+    importc: "gtk_accel_group_connect_by_path".}
+proc disconnect*(accel_group: PAccelGroup, closure: PGClosure): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_accel_group_disconnect".}
+proc disconnect_key*(accel_group: PAccelGroup, accel_key: guint, 
+                                 accel_mods: gdk2.TModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_accel_group_disconnect_key".}
+proc attach*(accel_group: PAccelGroup, anObject: PGObject){.cdecl, 
+    dynlib: lib, importc: "_gtk_accel_group_attach".}
+proc detach*(accel_group: PAccelGroup, anObject: PGObject){.cdecl, 
+    dynlib: lib, importc: "_gtk_accel_group_detach".}
+proc accel_groups_activate*(anObject: PGObject, accel_key: guint, 
+                            accel_mods: gdk2.TModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_accel_groups_activate".}
+proc accel_groups_from_object*(anObject: PGObject): PGSList{.cdecl, dynlib: lib, 
+    importc: "gtk_accel_groups_from_object".}
+proc find*(accel_group: PAccelGroup, 
+                       find_func: Taccel_group_find_func, data: gpointer): PAccelKey{.
+    cdecl, dynlib: lib, importc: "gtk_accel_group_find".}
+proc accel_group_from_accel_closure*(closure: PGClosure): PAccelGroup{.cdecl, 
+    dynlib: lib, importc: "gtk_accel_group_from_accel_closure".}
+proc accelerator_valid*(keyval: guint, modifiers: gdk2.TModifierType): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_accelerator_valid".}
+proc accelerator_parse*(accelerator: cstring, accelerator_key: Pguint, 
+                        accelerator_mods: gdk2.PModifierType){.cdecl, dynlib: lib, 
+    importc: "gtk_accelerator_parse".}
+proc accelerator_name*(accelerator_key: guint, 
+                       accelerator_mods: gdk2.TModifierType): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_accelerator_name".}
+proc accelerator_set_default_mod_mask*(default_mod_mask: gdk2.TModifierType){.
+    cdecl, dynlib: lib, importc: "gtk_accelerator_set_default_mod_mask".}
+proc accelerator_get_default_mod_mask*(): guint{.cdecl, dynlib: lib, 
     importc: "gtk_accelerator_get_default_mod_mask".}
-proc gtk_accel_group_query*(accel_group: PGtkAccelGroup, accel_key: guint,
-                            accel_mods: TGdkModifierType, n_entries: Pguint): PGtkAccelGroupEntry{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_group_query".}
-proc gtk_accel_group_reconnect*(accel_group: PGtkAccelGroup,
-                                accel_path_quark: TGQuark){.cdecl,
-    dynlib: gtklib, importc: "_gtk_accel_group_reconnect".}
-const
+proc query*(accel_group: PAccelGroup, accel_key: guint, 
+                        accel_mods: gdk2.TModifierType, n_entries: Pguint): PAccelGroupEntry{.
+    cdecl, dynlib: lib, importc: "gtk_accel_group_query".}
+proc reconnect*(accel_group: PAccelGroup, accel_path_quark: TGQuark){.
+    cdecl, dynlib: lib, importc: "_gtk_accel_group_reconnect".}
+const 
   bm_TGtkContainer_border_width* = 0x0000FFFF'i32
   bp_TGtkContainer_border_width* = 0'i32
   bm_TGtkContainer_need_resize* = 0x00010000'i32
@@ -4034,121 +3908,113 @@ const
   bm_TGtkContainer_has_focus_chain* = 0x00100000'i32
   bp_TGtkContainer_has_focus_chain* = 20'i32
 
-proc GTK_TYPE_CONTAINER*(): GType
-proc GTK_CONTAINER*(obj: pointer): PGtkContainer
-proc GTK_CONTAINER_CLASS*(klass: pointer): PGtkContainerClass
-proc GTK_IS_CONTAINER*(obj: pointer): bool
-proc GTK_IS_CONTAINER_CLASS*(klass: pointer): bool
-proc GTK_CONTAINER_GET_CLASS*(obj: pointer): PGtkContainerClass
-proc GTK_IS_RESIZE_CONTAINER*(widget: pointer): bool
-proc border_width*(a: var TGtkContainer): guint
-proc set_border_width*(a: var TGtkContainer, `border_width`: guint)
-proc need_resize*(a: var TGtkContainer): guint
-proc set_need_resize*(a: var TGtkContainer, `need_resize`: guint)
-proc resize_mode*(a: PGtkContainer): guint
-proc set_resize_mode*(a: var TGtkContainer, `resize_mode`: guint)
-proc reallocate_redraws*(a: var TGtkContainer): guint
-proc set_reallocate_redraws*(a: var TGtkContainer, `reallocate_redraws`: guint)
-proc has_focus_chain*(a: var TGtkContainer): guint
-proc set_has_focus_chain*(a: var TGtkContainer, `has_focus_chain`: guint)
-proc gtk_container_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_container_get_type".}
-proc gtk_container_set_border_width*(container: PGtkContainer,
-                                     border_width: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_set_border_width".}
-proc gtk_container_get_border_width*(container: PGtkContainer): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_container_get_border_width".}
-proc gtk_container_add*(container: PGtkContainer, widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_add".}
-proc gtk_container_remove*(container: PGtkContainer, widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_remove".}
-proc gtk_container_set_resize_mode*(container: PGtkContainer,
-                                    resize_mode: TGtkResizeMode){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_set_resize_mode".}
-proc gtk_container_get_resize_mode*(container: PGtkContainer): TGtkResizeMode{.
-    cdecl, dynlib: gtklib, importc: "gtk_container_get_resize_mode".}
-proc gtk_container_check_resize*(container: PGtkContainer){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_check_resize".}
-proc gtk_container_foreach*(container: PGtkContainer, callback: TGtkCallback,
-                            callback_data: gpointer){.cdecl, dynlib: gtklib,
+proc TYPE_CONTAINER*(): GType
+proc CONTAINER*(obj: pointer): PContainer
+proc CONTAINER_CLASS*(klass: pointer): PContainerClass
+proc IS_CONTAINER*(obj: pointer): bool
+proc IS_CONTAINER_CLASS*(klass: pointer): bool
+proc CONTAINER_GET_CLASS*(obj: pointer): PContainerClass
+proc IS_RESIZE_CONTAINER*(widget: pointer): bool
+proc border_width*(a: var TContainer): guint
+proc set_border_width*(a: var TContainer, `border_width`: guint)
+proc need_resize*(a: var TContainer): guint
+proc set_need_resize*(a: var TContainer, `need_resize`: guint)
+proc resize_mode*(a: PContainer): guint
+proc set_resize_mode*(a: var TContainer, `resize_mode`: guint)
+proc reallocate_redraws*(a: var TContainer): guint
+proc set_reallocate_redraws*(a: var TContainer, `reallocate_redraws`: guint)
+proc has_focus_chain*(a: var TContainer): guint
+proc set_has_focus_chain*(a: var TContainer, `has_focus_chain`: guint)
+proc container_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_container_get_type".}
+proc set_border_width*(container: PContainer, border_width: guint){.
+    cdecl, dynlib: lib, importc: "gtk_container_set_border_width".}
+proc get_border_width*(container: PContainer): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_container_get_border_width".}
+proc add*(container: PContainer, widget: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_container_add".}
+proc remove*(container: PContainer, widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_container_remove".}
+proc set_resize_mode*(container: PContainer, resize_mode: TResizeMode){.
+    cdecl, dynlib: lib, importc: "gtk_container_set_resize_mode".}
+proc get_resize_mode*(container: PContainer): TResizeMode{.cdecl, 
+    dynlib: lib, importc: "gtk_container_get_resize_mode".}
+proc check_resize*(container: PContainer){.cdecl, dynlib: lib, 
+    importc: "gtk_container_check_resize".}
+proc foreach*(container: PContainer, callback: TCallback, 
+                        callback_data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_container_foreach".}
-proc gtk_container_get_children*(container: PGtkContainer): PGList{.cdecl,
-    dynlib: gtklib, importc: "gtk_container_get_children".}
-proc gtk_container_propagate_expose*(container: PGtkContainer,
-                                     child: PGtkWidget, event: PGdkEventExpose){.
-    cdecl, dynlib: gtklib, importc: "gtk_container_propagate_expose".}
-proc gtk_container_set_focus_chain*(container: PGtkContainer,
-                                    focusable_widgets: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_set_focus_chain".}
-proc gtk_container_get_focus_chain*(container: PGtkContainer, s: var PGList): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_container_get_focus_chain".}
-proc gtk_container_unset_focus_chain*(container: PGtkContainer){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_unset_focus_chain".}
-proc gtk_container_set_reallocate_redraws*(container: PGtkContainer,
-    needs_redraws: gboolean){.cdecl, dynlib: gtklib,
-                              importc: "gtk_container_set_reallocate_redraws".}
-proc gtk_container_set_focus_child*(container: PGtkContainer, child: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_container_set_focus_child".}
-proc gtk_container_set_focus_vadjustment*(container: PGtkContainer,
-    adjustment: PGtkAdjustment){.cdecl, dynlib: gtklib,
-                                 importc: "gtk_container_set_focus_vadjustment".}
-proc gtk_container_get_focus_vadjustment*(container: PGtkContainer): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_container_get_focus_vadjustment".}
-proc gtk_container_set_focus_hadjustment*(container: PGtkContainer,
-    adjustment: PGtkAdjustment){.cdecl, dynlib: gtklib,
-                                 importc: "gtk_container_set_focus_hadjustment".}
-proc gtk_container_get_focus_hadjustment*(container: PGtkContainer): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_container_get_focus_hadjustment".}
-proc gtk_container_resize_children*(container: PGtkContainer){.cdecl,
-    dynlib: gtklib, importc: "gtk_container_resize_children".}
-proc gtk_container_child_type*(container: PGtkContainer): TGtkType{.cdecl,
-    dynlib: gtklib, importc: "gtk_container_child_type".}
-proc gtk_container_class_install_child_property*(cclass: PGtkContainerClass,
-    property_id: guint, pspec: PGParamSpec){.cdecl, dynlib: gtklib,
+proc get_children*(container: PContainer): PGList{.cdecl, dynlib: lib, 
+    importc: "gtk_container_get_children".}
+proc propagate_expose*(container: PContainer, child: PWidget, 
+                                 event: gdk2.PEventExpose){.cdecl, dynlib: lib, 
+    importc: "gtk_container_propagate_expose".}
+proc set_focus_chain*(container: PContainer, focusable_widgets: PGList){.
+    cdecl, dynlib: lib, importc: "gtk_container_set_focus_chain".}
+proc get_focus_chain*(container: PContainer, s: var PGList): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_container_get_focus_chain".}
+proc unset_focus_chain*(container: PContainer){.cdecl, dynlib: lib, 
+    importc: "gtk_container_unset_focus_chain".}
+proc set_reallocate_redraws*(container: PContainer, 
+                                       needs_redraws: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_container_set_reallocate_redraws".}
+proc set_focus_child*(container: PContainer, child: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_container_set_focus_child".}
+proc set_focus_vadjustment*(container: PContainer, 
+                                      adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_container_set_focus_vadjustment".}
+proc get_focus_vadjustment*(container: PContainer): PAdjustment{.
+    cdecl, dynlib: lib, importc: "gtk_container_get_focus_vadjustment".}
+proc set_focus_hadjustment*(container: PContainer, 
+                                      adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_container_set_focus_hadjustment".}
+proc get_focus_hadjustment*(container: PContainer): PAdjustment{.
+    cdecl, dynlib: lib, importc: "gtk_container_get_focus_hadjustment".}
+proc resize_children*(container: PContainer){.cdecl, dynlib: lib, 
+    importc: "gtk_container_resize_children".}
+proc child_type*(container: PContainer): TType{.cdecl, dynlib: lib, 
+    importc: "gtk_container_child_type".}
+proc install_child_property*(cclass: PContainerClass, 
+    property_id: guint, pspec: PGParamSpec){.cdecl, dynlib: lib, 
     importc: "gtk_container_class_install_child_property".}
-proc gtk_container_class_find_child_property*(cclass: PGObjectClass,
-    property_name: cstring): PGParamSpec{.cdecl, dynlib: gtklib,
+proc container_class_find_child_property*(cclass: PGObjectClass, 
+    property_name: cstring): PGParamSpec{.cdecl, dynlib: lib, 
     importc: "gtk_container_class_find_child_property".}
-proc gtk_container_class_list_child_properties*(cclass: PGObjectClass,
-    n_properties: Pguint): PPGParamSpec{.cdecl, dynlib: gtklib,
+proc container_class_list_child_properties*(cclass: PGObjectClass, 
+    n_properties: Pguint): PPGParamSpec{.cdecl, dynlib: lib, 
     importc: "gtk_container_class_list_child_properties".}
-proc gtk_container_child_set_property*(container: PGtkContainer,
-                                       child: PGtkWidget, property_name: cstring,
-                                       value: PGValue){.cdecl, dynlib: gtklib,
-    importc: "gtk_container_child_set_property".}
-proc gtk_container_child_get_property*(container: PGtkContainer,
-                                       child: PGtkWidget, property_name: cstring,
-                                       value: PGValue){.cdecl, dynlib: gtklib,
-    importc: "gtk_container_child_get_property".}
-proc GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID*(anObject: pointer,
+proc child_set_property*(container: PContainer, child: PWidget, 
+                                   property_name: cstring, value: PGValue){.
+    cdecl, dynlib: lib, importc: "gtk_container_child_set_property".}
+proc child_get_property*(container: PContainer, child: PWidget, 
+                                   property_name: cstring, value: PGValue){.
+    cdecl, dynlib: lib, importc: "gtk_container_child_get_property".}
+proc CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID*(anObject: pointer, 
     property_id: guint, pspec: pointer)
-proc gtk_container_forall*(container: PGtkContainer, callback: TGtkCallback,
-                           callback_data: gpointer){.cdecl, dynlib: gtklib,
+proc forall*(container: PContainer, callback: TCallback, 
+                       callback_data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_container_forall".}
-proc gtk_container_queue_resize*(container: PGtkContainer){.cdecl,
-    dynlib: gtklib, importc: "_gtk_container_queue_resize".}
-proc gtk_container_clear_resize_widgets*(container: PGtkContainer){.cdecl,
-    dynlib: gtklib, importc: "_gtk_container_clear_resize_widgets".}
-proc gtk_container_child_composite_name*(container: PGtkContainer,
-    child: PGtkWidget): cstring{.cdecl, dynlib: gtklib,
-                                importc: "_gtk_container_child_composite_name".}
-proc gtk_container_dequeue_resize_handler*(container: PGtkContainer){.cdecl,
-    dynlib: gtklib, importc: "_gtk_container_dequeue_resize_handler".}
-proc gtk_container_focus_sort*(container: PGtkContainer, children: PGList,
-                                 direction: TGtkDirectionType,
-                                 old_focus: PGtkWidget): PGList{.cdecl,
-    dynlib: gtklib, importc: "_gtk_container_focus_sort".}
-proc GTK_TYPE_BIN*(): GType
-proc GTK_BIN*(obj: pointer): PGtkBin
-proc GTK_BIN_CLASS*(klass: pointer): PGtkBinClass
-proc GTK_IS_BIN*(obj: pointer): bool
-proc GTK_IS_BIN_CLASS*(klass: pointer): bool
-proc GTK_BIN_GET_CLASS*(obj: pointer): PGtkBinClass
-proc gtk_bin_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_bin_get_type".}
-proc gtk_bin_get_child*(bin: PGtkBin): PGtkWidget{.cdecl, dynlib: gtklib,
+proc queue_resize*(container: PContainer){.cdecl, dynlib: lib, 
+    importc: "_gtk_container_queue_resize".}
+proc clear_resize_widgets*(container: PContainer){.cdecl, dynlib: lib, 
+    importc: "_gtk_container_clear_resize_widgets".}
+proc child_composite_name*(container: PContainer, child: PWidget): cstring{.
+    cdecl, dynlib: lib, importc: "_gtk_container_child_composite_name".}
+proc dequeue_resize_handler*(container: PContainer){.cdecl, 
+    dynlib: lib, importc: "_gtk_container_dequeue_resize_handler".}
+proc focus_sort*(container: PContainer, children: PGList, 
+                           direction: TDirectionType, old_focus: PWidget): PGList{.
+    cdecl, dynlib: lib, importc: "_gtk_container_focus_sort".}
+proc TYPE_BIN*(): GType
+proc BIN*(obj: pointer): PBin
+proc BIN_CLASS*(klass: pointer): PBinClass
+proc IS_BIN*(obj: pointer): bool
+proc IS_BIN_CLASS*(klass: pointer): bool
+proc BIN_GET_CLASS*(obj: pointer): PBinClass
+proc bin_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_bin_get_type".}
+proc get_child*(bin: PBin): PWidget{.cdecl, dynlib: lib, 
     importc: "gtk_bin_get_child".}
-const
+const 
   bm_TGtkWindow_allow_shrink* = 0x00000001'i32
   bp_TGtkWindow_allow_shrink* = 0'i32
   bm_TGtkWindow_allow_grow* = 0x00000002'i32
@@ -4186,1187 +4052,1142 @@ const
   bm_TGtkWindow_gravity* = 0x1F000000'i32
   bp_TGtkWindow_gravity* = 24'i32
 
-proc GTK_TYPE_WINDOW*(): GType
-proc GTK_WINDOW*(obj: pointer): PGtkWindow
-proc GTK_WINDOW_CLASS*(klass: pointer): PGtkWindowClass
-proc GTK_IS_WINDOW*(obj: pointer): bool
-proc GTK_IS_WINDOW_CLASS*(klass: pointer): bool
-proc GTK_WINDOW_GET_CLASS*(obj: pointer): PGtkWindowClass
-proc allow_shrink*(a: var TGtkWindow): guint
-proc set_allow_shrink*(a: var TGtkWindow, `allow_shrink`: guint)
-proc allow_grow*(a: var TGtkWindow): guint
-proc set_allow_grow*(a: var TGtkWindow, `allow_grow`: guint)
-proc configure_notify_received*(a: var TGtkWindow): guint
-proc set_configure_notify_received*(a: var TGtkWindow,
+proc TYPE_WINDOW*(): GType
+proc WINDOW*(obj: pointer): PWindow
+proc WINDOW_CLASS*(klass: pointer): PWindowClass
+proc IS_WINDOW*(obj: pointer): bool
+proc IS_WINDOW_CLASS*(klass: pointer): bool
+proc WINDOW_GET_CLASS*(obj: pointer): PWindowClass
+proc allow_shrink*(a: var TWindow): guint
+proc set_allow_shrink*(a: var TWindow, `allow_shrink`: guint)
+proc allow_grow*(a: var TWindow): guint
+proc set_allow_grow*(a: var TWindow, `allow_grow`: guint)
+proc configure_notify_received*(a: var TWindow): guint
+proc set_configure_notify_received*(a: var TWindow, 
                                     `configure_notify_received`: guint)
-proc need_default_position*(a: var TGtkWindow): guint
-proc set_need_default_position*(a: var TGtkWindow,
-                                `need_default_position`: guint)
-proc need_default_size*(a: var TGtkWindow): guint
-proc set_need_default_size*(a: var TGtkWindow, `need_default_size`: guint)
-proc position*(a: var TGtkWindow): guint
-proc set_position*(a: var TGtkWindow, `position`: guint)
-proc get_type*(a: var TGtkWindow): guint
-proc set_type*(a: var TGtkWindow, `type`: guint)
-proc has_user_ref_count*(a: var TGtkWindow): guint
-proc set_has_user_ref_count*(a: var TGtkWindow, `has_user_ref_count`: guint)
-proc has_focus*(a: var TGtkWindow): guint
-proc set_has_focus*(a: var TGtkWindow, `has_focus`: guint)
-proc modal*(a: var TGtkWindow): guint
-proc set_modal*(a: var TGtkWindow, `modal`: guint)
-proc destroy_with_parent*(a: var TGtkWindow): guint
-proc set_destroy_with_parent*(a: var TGtkWindow, `destroy_with_parent`: guint)
-proc has_frame*(a: var TGtkWindow): guint
-proc set_has_frame*(a: var TGtkWindow, `has_frame`: guint)
-proc iconify_initially*(a: var TGtkWindow): guint
-proc set_iconify_initially*(a: var TGtkWindow, `iconify_initially`: guint)
-proc stick_initially*(a: var TGtkWindow): guint
-proc set_stick_initially*(a: var TGtkWindow, `stick_initially`: guint)
-proc maximize_initially*(a: var TGtkWindow): guint
-proc set_maximize_initially*(a: var TGtkWindow, `maximize_initially`: guint)
-proc decorated*(a: var TGtkWindow): guint
-proc set_decorated*(a: var TGtkWindow, `decorated`: guint)
-proc type_hint*(a: var TGtkWindow): guint
-proc set_type_hint*(a: var TGtkWindow, `type_hint`: guint)
-proc gravity*(a: var TGtkWindow): guint
-proc set_gravity*(a: var TGtkWindow, `gravity`: guint)
-proc GTK_TYPE_WINDOW_GROUP*(): GType
-proc GTK_WINDOW_GROUP*(anObject: pointer): PGtkWindowGroup
-proc GTK_WINDOW_GROUP_CLASS*(klass: pointer): PGtkWindowGroupClass
-proc GTK_IS_WINDOW_GROUP*(anObject: pointer): bool
-proc GTK_IS_WINDOW_GROUP_CLASS*(klass: pointer): bool
-proc GTK_WINDOW_GROUP_GET_CLASS*(obj: pointer): PGtkWindowGroupClass
-proc gtk_window_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_window_get_type".}
-proc gtk_window_new*(thetype: TGtkWindowType): PGtkWindow {.cdecl,
-    dynlib: gtklib, importc: "gtk_window_new".}
-proc gtk_window_set_title*(window: PGtkWindow, title: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_title".}
-proc gtk_window_get_title*(window: PGtkWindow): cstring{.cdecl, dynlib: gtklib,
+proc need_default_position*(a: var TWindow): guint
+proc set_need_default_position*(a: var TWindow, `need_default_position`: guint)
+proc need_default_size*(a: var TWindow): guint
+proc set_need_default_size*(a: var TWindow, `need_default_size`: guint)
+proc position*(a: var TWindow): guint
+proc set_position*(a: var TWindow, `position`: guint)
+proc get_type*(a: var TWindow): guint
+proc set_type*(a: var TWindow, `type`: guint)
+proc has_user_ref_count*(a: var TWindow): guint
+proc set_has_user_ref_count*(a: var TWindow, `has_user_ref_count`: guint)
+proc has_focus*(a: var TWindow): guint
+proc set_has_focus*(a: var TWindow, `has_focus`: guint)
+proc modal*(a: var TWindow): guint
+proc set_modal*(a: var TWindow, `modal`: guint)
+proc destroy_with_parent*(a: var TWindow): guint
+proc set_destroy_with_parent*(a: var TWindow, `destroy_with_parent`: guint)
+proc has_frame*(a: var TWindow): guint
+proc set_has_frame*(a: var TWindow, `has_frame`: guint)
+proc iconify_initially*(a: var TWindow): guint
+proc set_iconify_initially*(a: var TWindow, `iconify_initially`: guint)
+proc stick_initially*(a: var TWindow): guint
+proc set_stick_initially*(a: var TWindow, `stick_initially`: guint)
+proc maximize_initially*(a: var TWindow): guint
+proc set_maximize_initially*(a: var TWindow, `maximize_initially`: guint)
+proc decorated*(a: var TWindow): guint
+proc set_decorated*(a: var TWindow, `decorated`: guint)
+proc type_hint*(a: var TWindow): guint
+proc set_type_hint*(a: var TWindow, `type_hint`: guint)
+proc gravity*(a: var TWindow): guint
+proc set_gravity*(a: var TWindow, `gravity`: guint)
+proc TYPE_WINDOW_GROUP*(): GType
+proc WINDOW_GROUP*(anObject: pointer): PWindowGroup
+proc WINDOW_GROUP_CLASS*(klass: pointer): PWindowGroupClass
+proc IS_WINDOW_GROUP*(anObject: pointer): bool
+proc IS_WINDOW_GROUP_CLASS*(klass: pointer): bool
+proc WINDOW_GROUP_GET_CLASS*(obj: pointer): PWindowGroupClass
+proc window_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_window_get_type".}
+proc window_new*(thetype: TWindowType): PWindow{.cdecl, dynlib: lib, 
+    importc: "gtk_window_new".}
+proc set_title*(window: PWindow, title: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_title".}
+proc get_title*(window: PWindow): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_window_get_title".}
-proc gtk_window_set_wmclass*(window: PGtkWindow, wmclass_name: cstring,
-                             wmclass_class: cstring){.cdecl, dynlib: gtklib,
+proc set_wmclass*(window: PWindow, wmclass_name: cstring, 
+                         wmclass_class: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_window_set_wmclass".}
-proc gtk_window_set_role*(window: PGtkWindow, role: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_role".}
-proc gtk_window_get_role*(window: PGtkWindow): cstring{.cdecl, dynlib: gtklib,
+proc set_role*(window: PWindow, role: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_role".}
+proc get_role*(window: PWindow): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_window_get_role".}
-proc gtk_window_add_accel_group*(window: PGtkWindow, accel_group: PGtkAccelGroup){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_add_accel_group".}
-proc gtk_window_remove_accel_group*(window: PGtkWindow,
-                                    accel_group: PGtkAccelGroup){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_remove_accel_group".}
-proc gtk_window_set_position*(window: PGtkWindow, position: TGtkWindowPosition){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_set_position".}
-proc gtk_window_activate_focus*(window: PGtkWindow): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_activate_focus".}
-proc gtk_window_set_focus*(window: PGtkWindow, focus: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_focus".}
-proc gtk_window_get_focus*(window: PGtkWindow): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_focus".}
-proc gtk_window_set_default*(window: PGtkWindow, default_widget: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_set_default".}
-proc gtk_window_activate_default*(window: PGtkWindow): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_activate_default".}
-proc gtk_window_set_transient_for*(window: PGtkWindow, parent: PGtkWindow){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_set_transient_for".}
-proc gtk_window_get_transient_for*(window: PGtkWindow): PGtkWindow{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_transient_for".}
-proc gtk_window_set_type_hint*(window: PGtkWindow, hint: TGdkWindowTypeHint){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_set_type_hint".}
-proc gtk_window_get_type_hint*(window: PGtkWindow): TGdkWindowTypeHint{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_type_hint".}
-proc gtk_window_set_destroy_with_parent*(window: PGtkWindow, setting: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_set_destroy_with_parent".}
-proc gtk_window_get_destroy_with_parent*(window: PGtkWindow): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_destroy_with_parent".}
-proc gtk_window_set_resizable*(window: PGtkWindow, resizable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_resizable".}
-proc gtk_window_get_resizable*(window: PGtkWindow): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_resizable".}
-proc gtk_window_set_gravity*(window: PGtkWindow, gravity: TGdkGravity){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_gravity".}
-proc gtk_window_get_gravity*(window: PGtkWindow): TGdkGravity{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_gravity".}
-proc gtk_window_set_geometry_hints*(window: PGtkWindow,
-                                    geometry_widget: PGtkWidget,
-                                    geometry: PGdkGeometry,
-                                    geom_mask: TGdkWindowHints){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_geometry_hints".}
-proc gtk_window_set_screen*(window: PGtkWindow, screen: PGdkScreen){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_screen".}
-proc gtk_window_get_screen*(window: PGtkWindow): PGdkScreen{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_screen".}
-proc gtk_window_set_has_frame*(window: PGtkWindow, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_has_frame".}
-proc gtk_window_get_has_frame*(window: PGtkWindow): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_has_frame".}
-proc gtk_window_set_frame_dimensions*(window: PGtkWindow, left: gint, top: gint,
-                                      right: gint, bottom: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_frame_dimensions".}
-proc gtk_window_get_frame_dimensions*(window: PGtkWindow, left: Pgint,
-                                      top: Pgint, right: Pgint, bottom: Pgint){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_get_frame_dimensions".}
-proc gtk_window_set_decorated*(window: PGtkWindow, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_decorated".}
-proc gtk_window_get_decorated*(window: PGtkWindow): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_decorated".}
-proc gtk_window_set_icon_list*(window: PGtkWindow, list: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_icon_list".}
-proc gtk_window_get_icon_list*(window: PGtkWindow): PGList{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_icon_list".}
-proc gtk_window_set_icon*(window: PGtkWindow, icon: PGdkPixbuf){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_icon".}
-proc gtk_window_get_icon*(window: PGtkWindow): PGdkPixbuf{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_get_icon".}
-proc gtk_window_set_default_icon_list*(list: PGList){.cdecl, dynlib: gtklib,
+proc add_accel_group*(window: PWindow, accel_group: PAccelGroup){.cdecl, 
+    dynlib: lib, importc: "gtk_window_add_accel_group".}
+proc remove_accel_group*(window: PWindow, accel_group: PAccelGroup){.
+    cdecl, dynlib: lib, importc: "gtk_window_remove_accel_group".}
+proc set_position*(window: PWindow, position: TWindowPosition){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_position".}
+proc activate_focus*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_window_activate_focus".}
+proc set_focus*(window: PWindow, focus: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_focus".}
+proc get_focus*(window: PWindow): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_focus".}
+proc set_default*(window: PWindow, default_widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_default".}
+proc activate_default*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_window_activate_default".}
+proc set_transient_for*(window: PWindow, parent: PWindow){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_transient_for".}
+proc get_transient_for*(window: PWindow): PWindow{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_transient_for".}
+proc set_type_hint*(window: PWindow, hint: gdk2.TWindowTypeHint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_type_hint".}
+proc get_type_hint*(window: PWindow): gdk2.TWindowTypeHint{.cdecl, 
+    dynlib: lib, importc: "gtk_window_get_type_hint".}
+proc set_destroy_with_parent*(window: PWindow, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_destroy_with_parent".}
+proc get_destroy_with_parent*(window: PWindow): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_window_get_destroy_with_parent".}
+proc set_resizable*(window: PWindow, resizable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_resizable".}
+proc get_resizable*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_resizable".}
+proc set_gravity*(window: PWindow, gravity: gdk2.TGravity){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_gravity".}
+proc get_gravity*(window: PWindow): gdk2.TGravity{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_gravity".}
+proc set_geometry_hints*(window: PWindow, geometry_widget: PWidget, 
+                                geometry: gdk2.PGeometry, 
+                                geom_mask: gdk2.TWindowHints){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_geometry_hints".}
+proc set_screen*(window: PWindow, screen: gdk2.PScreen){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_screen".}
+proc get_screen*(window: PWindow): gdk2.PScreen{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_screen".}
+proc set_has_frame*(window: PWindow, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_has_frame".}
+proc get_has_frame*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_has_frame".}
+proc set_frame_dimensions*(window: PWindow, left: gint, top: gint, 
+                                  right: gint, bottom: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_frame_dimensions".}
+proc get_frame_dimensions*(window: PWindow, left: Pgint, top: Pgint, 
+                                  right: Pgint, bottom: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_get_frame_dimensions".}
+proc set_decorated*(window: PWindow, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_window_set_decorated".}
+proc get_decorated*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_decorated".}
+proc set_icon_list*(window: PWindow, list: PGList){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_icon_list".}
+proc get_icon_list*(window: PWindow): PGList{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_icon_list".}
+proc set_icon*(window: PWindow, icon: gdk2pixbuf.PPixbuf){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_icon".}
+proc get_icon*(window: PWindow): gdk2pixbuf.PPixbuf{.cdecl, dynlib: lib, 
+    importc: "gtk_window_get_icon".}
+proc window_set_default_icon_list*(list: PGList){.cdecl, dynlib: lib, 
     importc: "gtk_window_set_default_icon_list".}
-proc gtk_window_get_default_icon_list*(): PGList{.cdecl, dynlib: gtklib,
+proc window_get_default_icon_list*(): PGList{.cdecl, dynlib: lib, 
     importc: "gtk_window_get_default_icon_list".}
-proc gtk_window_set_modal*(window: PGtkWindow, modal: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_modal".}
-proc gtk_window_get_modal*(window: PGtkWindow): gboolean{.cdecl, dynlib: gtklib,
+proc set_modal*(window: PWindow, modal: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_modal".}
+proc get_modal*(window: PWindow): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_window_get_modal".}
-proc gtk_window_list_toplevels*(): PGList{.cdecl, dynlib: gtklib,
-    importc: "gtk_window_list_toplevels".}
-proc gtk_window_add_mnemonic*(window: PGtkWindow, keyval: guint,
-                              target: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_add_mnemonic".}
-proc gtk_window_remove_mnemonic*(window: PGtkWindow, keyval: guint,
-                                 target: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_remove_mnemonic".}
-proc gtk_window_mnemonic_activate*(window: PGtkWindow, keyval: guint,
-                                   modifier: TGdkModifierType): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_window_mnemonic_activate".}
-proc gtk_window_set_mnemonic_modifier*(window: PGtkWindow,
-                                       modifier: TGdkModifierType){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_set_mnemonic_modifier".}
-proc gtk_window_get_mnemonic_modifier*(window: PGtkWindow): TGdkModifierType{.
-    cdecl, dynlib: gtklib, importc: "gtk_window_get_mnemonic_modifier".}
-proc gtk_window_present*(window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_present".}
-proc gtk_window_iconify*(window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_iconify".}
-proc gtk_window_deiconify*(window: PGtkWindow){.cdecl, dynlib: gtklib,
+proc window_list_toplevels*(): PGList{.cdecl, dynlib: lib, 
+                                       importc: "gtk_window_list_toplevels".}
+proc add_mnemonic*(window: PWindow, keyval: guint, target: PWidget){.
+    cdecl, dynlib: lib, importc: "gtk_window_add_mnemonic".}
+proc remove_mnemonic*(window: PWindow, keyval: guint, target: PWidget){.
+    cdecl, dynlib: lib, importc: "gtk_window_remove_mnemonic".}
+proc mnemonic_activate*(window: PWindow, keyval: guint, 
+                               modifier: gdk2.TModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_window_mnemonic_activate".}
+proc set_mnemonic_modifier*(window: PWindow, modifier: gdk2.TModifierType){.
+    cdecl, dynlib: lib, importc: "gtk_window_set_mnemonic_modifier".}
+proc get_mnemonic_modifier*(window: PWindow): gdk2.TModifierType{.cdecl, 
+    dynlib: lib, importc: "gtk_window_get_mnemonic_modifier".}
+proc present*(window: PWindow){.cdecl, dynlib: lib, 
+                                       importc: "gtk_window_present".}
+proc iconify*(window: PWindow){.cdecl, dynlib: lib, 
+                                       importc: "gtk_window_iconify".}
+proc deiconify*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gtk_window_deiconify".}
-proc gtk_window_stick*(window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_stick".}
-proc gtk_window_unstick*(window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_unstick".}
-proc gtk_window_maximize*(window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_maximize".}
-proc gtk_window_unmaximize*(window: PGtkWindow){.cdecl, dynlib: gtklib,
+proc stick*(window: PWindow){.cdecl, dynlib: lib, 
+                                     importc: "gtk_window_stick".}
+proc unstick*(window: PWindow){.cdecl, dynlib: lib, 
+                                       importc: "gtk_window_unstick".}
+proc maximize*(window: PWindow){.cdecl, dynlib: lib, 
+                                        importc: "gtk_window_maximize".}
+proc unmaximize*(window: PWindow){.cdecl, dynlib: lib, 
     importc: "gtk_window_unmaximize".}
-proc gtk_window_begin_resize_drag*(window: PGtkWindow, edge: TGdkWindowEdge,
-                                   button: gint, root_x: gint, root_y: gint,
-                                   timestamp: guint32){.cdecl, dynlib: gtklib,
+proc begin_resize_drag*(window: PWindow, edge: gdk2.TWindowEdge, 
+                               button: gint, root_x: gint, root_y: gint, 
+                               timestamp: guint32){.cdecl, dynlib: lib, 
     importc: "gtk_window_begin_resize_drag".}
-proc gtk_window_begin_move_drag*(window: PGtkWindow, button: gint, root_x: gint,
-                                 root_y: gint, timestamp: guint32){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_begin_move_drag".}
-proc gtk_window_set_default_size*(window: PGtkWindow, width: gint, height: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_set_default_size".}
-proc gtk_window_get_default_size*(window: PGtkWindow, width: Pgint,
-                                  height: Pgint){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_get_default_size".}
-proc gtk_window_resize*(window: PGtkWindow, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_resize".}
-proc gtk_window_get_size*(window: PGtkWindow, width: Pgint, height: Pgint){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_get_size".}
-proc gtk_window_move*(window: PGtkWindow, x: gint, y: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_move".}
-proc gtk_window_get_position*(window: PGtkWindow, root_x: Pgint, root_y: Pgint){.
-    cdecl, dynlib: gtklib, importc: "gtk_window_get_position".}
-proc gtk_window_parse_geometry*(window: PGtkWindow, geometry: cstring): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_window_parse_geometry".}
-proc gtk_window_reshow_with_initial_size*(window: PGtkWindow){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_reshow_with_initial_size".}
-proc gtk_window_group_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_window_group_get_type".}
-proc gtk_window_group_new*(): PGtkWindowGroup{.cdecl, dynlib: gtklib,
-    importc: "gtk_window_group_new".}
-proc gtk_window_group_add_window*(window_group: PGtkWindowGroup,
-                                  window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_group_add_window".}
-proc gtk_window_group_remove_window*(window_group: PGtkWindowGroup,
-                                     window: PGtkWindow){.cdecl, dynlib: gtklib,
-    importc: "gtk_window_group_remove_window".}
-proc gtk_window_set_default_icon_name*(name: cstring) {.
-    cdecl, dynlib: gtklib, importc.}
-proc gtk_window_internal_set_focus*(window: PGtkWindow, focus: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "_gtk_window_internal_set_focus".}
-proc gtk_window_remove_embedded_xid*(window: PGtkWindow, xid: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_remove_embedded_xid".}
-proc gtk_window_add_embedded_xid*(window: PGtkWindow, xid: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_window_add_embedded_xid".}
-proc gtk_window_reposition*(window: PGtkWindow, x: gint, y: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_window_reposition".}
-proc gtk_window_constrain_size*(window: PGtkWindow, width: gint, height: gint,
-                                  new_width: Pgint, new_height: Pgint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_window_constrain_size".}
-proc gtk_window_get_group*(window: PGtkWindow): PGtkWindowGroup{.cdecl,
-    dynlib: gtklib, importc: "_gtk_window_get_group".}
-proc gtk_window_activate_key*(window: PGtkWindow, event: PGdkEventKey): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_window_activate_key".}
-proc gtk_window_keys_foreach*(window: PGtkWindow,
-                                func: TGtkWindowKeysForeachFunc,
-                                func_data: gpointer){.cdecl, dynlib: gtklib,
+proc begin_move_drag*(window: PWindow, button: gint, root_x: gint, 
+                             root_y: gint, timestamp: guint32){.cdecl, 
+    dynlib: lib, importc: "gtk_window_begin_move_drag".}
+proc set_default_size*(window: PWindow, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "gtk_window_set_default_size".}
+proc get_default_size*(window: PWindow, width: Pgint, height: Pgint){.
+    cdecl, dynlib: lib, importc: "gtk_window_get_default_size".}
+proc resize*(window: PWindow, width: gint, height: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_resize".}
+proc get_size*(window: PWindow, width: Pgint, height: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_get_size".}
+proc move*(window: PWindow, x: gint, y: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_window_move".}
+proc get_position*(window: PWindow, root_x: Pgint, root_y: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_get_position".}
+proc parse_geometry*(window: PWindow, geometry: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_window_parse_geometry".}
+proc reshow_with_initial_size*(window: PWindow){.cdecl, dynlib: lib, 
+    importc: "gtk_window_reshow_with_initial_size".}
+proc window_group_get_type*(): GType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_window_group_get_type".}
+proc window_group_new*(): PWindowGroup{.cdecl, dynlib: lib, 
+                                        importc: "gtk_window_group_new".}
+proc add_window*(window_group: PWindowGroup, window: PWindow){.
+    cdecl, dynlib: lib, importc: "gtk_window_group_add_window".}
+proc remove_window*(window_group: PWindowGroup, window: PWindow){.
+    cdecl, dynlib: lib, importc: "gtk_window_group_remove_window".}
+proc window_set_default_icon_name*(name: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_window_set_default_icon_name".}
+proc internal_set_focus*(window: PWindow, focus: PWidget){.cdecl, 
+    dynlib: lib, importc: "_gtk_window_internal_set_focus".}
+proc remove_embedded_xid*(window: PWindow, xid: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_window_remove_embedded_xid".}
+proc add_embedded_xid*(window: PWindow, xid: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_window_add_embedded_xid".}
+proc reposition*(window: PWindow, x: gint, y: gint){.cdecl, dynlib: lib, 
+    importc: "_gtk_window_reposition".}
+proc constrain_size*(window: PWindow, width: gint, height: gint, 
+                            new_width: Pgint, new_height: Pgint){.cdecl, 
+    dynlib: lib, importc: "_gtk_window_constrain_size".}
+proc get_group*(window: PWindow): PWindowGroup{.cdecl, dynlib: lib, 
+    importc: "_gtk_window_get_group".}
+proc activate_key*(window: PWindow, event: gdk2.PEventKey): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_window_activate_key".}
+proc keys_foreach*(window: PWindow, func: TWindowKeysForeachFunc, 
+                          func_data: gpointer){.cdecl, dynlib: lib, 
     importc: "_gtk_window_keys_foreach".}
-proc gtk_window_query_nonaccels*(window: PGtkWindow, accel_key: guint,
-                                   accel_mods: TGdkModifierType): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_window_query_nonaccels".}
-const
-  bm_TGtkLabel_jtype* = 0x00000003'i16
+proc query_nonaccels*(window: PWindow, accel_key: guint, 
+                             accel_mods: gdk2.TModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_window_query_nonaccels".}
+const 
+  bm_TGtkLabel_jtype* = 0x0003'i16
   bp_TGtkLabel_jtype* = 0'i16
-  bm_TGtkLabel_wrap* = 0x00000004'i16
+  bm_TGtkLabel_wrap* = 0x0004'i16
   bp_TGtkLabel_wrap* = 2'i16
-  bm_TGtkLabel_use_underline* = 0x00000008'i16
+  bm_TGtkLabel_use_underline* = 0x0008'i16
   bp_TGtkLabel_use_underline* = 3'i16
-  bm_TGtkLabel_use_markup* = 0x00000010'i16
+  bm_TGtkLabel_use_markup* = 0x0010'i16
   bp_TGtkLabel_use_markup* = 4'i16
 
-proc GTK_TYPE_LABEL*(): GType
-proc GTK_LABEL*(obj: pointer): PGtkLabel
-proc GTK_LABEL_CLASS*(klass: pointer): PGtkLabelClass
-proc GTK_IS_LABEL*(obj: pointer): bool
-proc GTK_IS_LABEL_CLASS*(klass: pointer): bool
-proc GTK_LABEL_GET_CLASS*(obj: pointer): PGtkLabelClass
-proc jtype*(a: var TGtkLabel): guint
-proc set_jtype*(a: var TGtkLabel, `jtype`: guint)
-proc wrap*(a: var TGtkLabel): guint
-proc set_wrap*(a: var TGtkLabel, `wrap`: guint)
-proc use_underline*(a: var TGtkLabel): guint
-proc set_use_underline*(a: var TGtkLabel, `use_underline`: guint)
-proc use_markup*(a: var TGtkLabel): guint
-proc set_use_markup*(a: var TGtkLabel, `use_markup`: guint)
-proc gtk_label_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_label_get_type".}
-proc gtk_label_new*(str: cstring): PGtkLabel {.cdecl, dynlib: gtklib,
-    importc: "gtk_label_new".}
-proc gtk_label_new_with_mnemonic*(str: cstring): PGtkLabel {.cdecl,
-    dynlib: gtklib, importc: "gtk_label_new_with_mnemonic".}
-proc gtk_label_set_text*(`label`: PGtkLabel, str: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_text".}
-proc gtk_label_get_text*(`label`: PGtkLabel): cstring{.cdecl, dynlib: gtklib,
+proc TYPE_LABEL*(): GType
+proc LABEL*(obj: pointer): PLabel
+proc LABEL_CLASS*(klass: pointer): PLabelClass
+proc IS_LABEL*(obj: pointer): bool
+proc IS_LABEL_CLASS*(klass: pointer): bool
+proc LABEL_GET_CLASS*(obj: pointer): PLabelClass
+proc jtype*(a: var TLabel): guint
+proc set_jtype*(a: var TLabel, `jtype`: guint)
+proc wrap*(a: var TLabel): guint
+proc set_wrap*(a: var TLabel, `wrap`: guint)
+proc use_underline*(a: var TLabel): guint
+proc set_use_underline*(a: var TLabel, `use_underline`: guint)
+proc use_markup*(a: var TLabel): guint
+proc set_use_markup*(a: var TLabel, `use_markup`: guint)
+proc label_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_label_get_type".}
+proc label_new*(str: cstring): PLabel{.cdecl, dynlib: lib, 
+                                       importc: "gtk_label_new".}
+proc label_new_with_mnemonic*(str: cstring): PLabel{.cdecl, dynlib: lib, 
+    importc: "gtk_label_new_with_mnemonic".}
+proc set_text*(`label`: PLabel, str: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_label_set_text".}
+proc get_text*(`label`: PLabel): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_label_get_text".}
-proc gtk_label_set_attributes*(`label`: PGtkLabel, attrs: PPangoAttrList){.
-    cdecl, dynlib: gtklib, importc: "gtk_label_set_attributes".}
-proc gtk_label_get_attributes*(`label`: PGtkLabel): PPangoAttrList{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_attributes".}
-proc gtk_label_set_label*(`label`: PGtkLabel, str: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_label".}
-proc gtk_label_get_label*(`label`: PGtkLabel): cstring{.cdecl, dynlib: gtklib,
+proc set_attributes*(`label`: PLabel, attrs: pango.PAttrList){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_attributes".}
+proc get_attributes*(`label`: PLabel): pango.PAttrList{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_attributes".}
+proc set_label*(`label`: PLabel, str: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_label_set_label".}
+proc get_label*(`label`: PLabel): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_label_get_label".}
-proc gtk_label_set_markup*(`label`: PGtkLabel, str: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_markup".}
-proc gtk_label_set_use_markup*(`label`: PGtkLabel, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_use_markup".}
-proc gtk_label_get_use_markup*(`label`: PGtkLabel): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_use_markup".}
-proc gtk_label_set_use_underline*(`label`: PGtkLabel, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_use_underline".}
-proc gtk_label_get_use_underline*(`label`: PGtkLabel): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_use_underline".}
-proc gtk_label_set_markup_with_mnemonic*(`label`: PGtkLabel, str: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_label_set_markup_with_mnemonic".}
-proc gtk_label_get_mnemonic_keyval*(`label`: PGtkLabel): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_mnemonic_keyval".}
-proc gtk_label_set_mnemonic_widget*(`label`: PGtkLabel, widget: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_label_set_mnemonic_widget".}
-proc gtk_label_get_mnemonic_widget*(`label`: PGtkLabel): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_mnemonic_widget".}
-proc gtk_label_set_text_with_mnemonic*(`label`: PGtkLabel, str: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_text_with_mnemonic".}
-proc gtk_label_set_justify*(`label`: PGtkLabel, jtype: TGtkJustification){.
-    cdecl, dynlib: gtklib, importc: "gtk_label_set_justify".}
-proc gtk_label_get_justify*(`label`: PGtkLabel): TGtkJustification{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_justify".}
-proc gtk_label_set_pattern*(`label`: PGtkLabel, pattern: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_pattern".}
-proc gtk_label_set_line_wrap*(`label`: PGtkLabel, wrap: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_line_wrap".}
-proc gtk_label_get_line_wrap*(`label`: PGtkLabel): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_line_wrap".}
-proc gtk_label_set_selectable*(`label`: PGtkLabel, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_label_set_selectable".}
-proc gtk_label_get_selectable*(`label`: PGtkLabel): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_selectable".}
-proc gtk_label_select_region*(`label`: PGtkLabel, start_offset: gint,
-                              end_offset: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_label_select_region".}
-proc gtk_label_get_selection_bounds*(`label`: PGtkLabel, start: Pgint,
-                                     theEnd: Pgint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_selection_bounds".}
-proc gtk_label_get_layout*(`label`: PGtkLabel): PPangoLayout{.cdecl,
-    dynlib: gtklib, importc: "gtk_label_get_layout".}
-proc gtk_label_get_layout_offsets*(`label`: PGtkLabel, x: Pgint, y: Pgint){.
-    cdecl, dynlib: gtklib, importc: "gtk_label_get_layout_offsets".}
-const
-  bm_TGtkAccelLabelClass_latin1_to_char* = 0x00000001'i16
+proc set_markup*(`label`: PLabel, str: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_label_set_markup".}
+proc set_use_markup*(`label`: PLabel, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_use_markup".}
+proc get_use_markup*(`label`: PLabel): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_use_markup".}
+proc set_use_underline*(`label`: PLabel, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_use_underline".}
+proc get_use_underline*(`label`: PLabel): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_use_underline".}
+proc set_markup_with_mnemonic*(`label`: PLabel, str: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_markup_with_mnemonic".}
+proc get_mnemonic_keyval*(`label`: PLabel): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_mnemonic_keyval".}
+proc set_mnemonic_widget*(`label`: PLabel, widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_mnemonic_widget".}
+proc get_mnemonic_widget*(`label`: PLabel): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_mnemonic_widget".}
+proc set_text_with_mnemonic*(`label`: PLabel, str: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_text_with_mnemonic".}
+proc set_justify*(`label`: PLabel, jtype: TJustification){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_justify".}
+proc get_justify*(`label`: PLabel): TJustification{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_justify".}
+proc set_pattern*(`label`: PLabel, pattern: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_label_set_pattern".}
+proc set_line_wrap*(`label`: PLabel, wrap: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_label_set_line_wrap".}
+proc get_line_wrap*(`label`: PLabel): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_line_wrap".}
+proc set_selectable*(`label`: PLabel, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_label_set_selectable".}
+proc get_selectable*(`label`: PLabel): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_selectable".}
+proc select_region*(`label`: PLabel, start_offset: gint, end_offset: gint){.
+    cdecl, dynlib: lib, importc: "gtk_label_select_region".}
+proc get_selection_bounds*(`label`: PLabel, start: Pgint, theEnd: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_label_get_selection_bounds".}
+proc get_layout*(`label`: PLabel): pango.PLayout{.cdecl, dynlib: lib, 
+    importc: "gtk_label_get_layout".}
+proc get_layout_offsets*(`label`: PLabel, x: Pgint, y: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_label_get_layout_offsets".}
+const 
+  bm_TGtkAccelLabelClass_latin1_to_char* = 0x0001'i16
   bp_TGtkAccelLabelClass_latin1_to_char* = 0'i16
 
-proc GTK_TYPE_ACCEL_LABEL*(): GType
-proc GTK_ACCEL_LABEL*(obj: pointer): PGtkAccelLabel
-proc GTK_ACCEL_LABEL_CLASS*(klass: pointer): PGtkAccelLabelClass
-proc GTK_IS_ACCEL_LABEL*(obj: pointer): bool
-proc GTK_IS_ACCEL_LABEL_CLASS*(klass: pointer): bool
-proc GTK_ACCEL_LABEL_GET_CLASS*(obj: pointer): PGtkAccelLabelClass
-proc latin1_to_char*(a: var TGtkAccelLabelClass): guint
-proc set_latin1_to_char*(a: var TGtkAccelLabelClass, `latin1_to_char`: guint)
-proc gtk_accel_label_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_accel_label_get_type".}
-proc gtk_accel_label_new*(`string`: cstring): PGtkAccelLabel {.cdecl, dynlib: gtklib,
+proc TYPE_ACCEL_LABEL*(): GType
+proc ACCEL_LABEL*(obj: pointer): PAccelLabel
+proc ACCEL_LABEL_CLASS*(klass: pointer): PAccelLabelClass
+proc IS_ACCEL_LABEL*(obj: pointer): bool
+proc IS_ACCEL_LABEL_CLASS*(klass: pointer): bool
+proc ACCEL_LABEL_GET_CLASS*(obj: pointer): PAccelLabelClass
+proc latin1_to_char*(a: var TAccelLabelClass): guint
+proc set_latin1_to_char*(a: var TAccelLabelClass, `latin1_to_char`: guint)
+proc accel_label_get_type*(): TType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_accel_label_get_type".}
+proc accel_label_new*(`string`: cstring): PAccelLabel{.cdecl, dynlib: lib, 
     importc: "gtk_accel_label_new".}
-proc gtk_accel_label_get_accel_widget*(accel_label: PGtkAccelLabel): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_label_get_accel_widget".}
-proc gtk_accel_label_get_accel_width*(accel_label: PGtkAccelLabel): guint{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_label_get_accel_width".}
-proc gtk_accel_label_set_accel_widget*(accel_label: PGtkAccelLabel,
-                                       accel_widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_label_set_accel_widget".}
-proc gtk_accel_label_set_accel_closure*(accel_label: PGtkAccelLabel,
-                                        accel_closure: PGClosure){.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_label_set_accel_closure".}
-proc gtk_accel_label_refetch*(accel_label: PGtkAccelLabel): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_label_refetch".}
-proc gtk_accel_map_add_entry*(accel_path: cstring, accel_key: guint,
-                              accel_mods: TGdkModifierType){.cdecl,
-    dynlib: gtklib, importc: "gtk_accel_map_add_entry".}
-proc gtk_accel_map_lookup_entry*(accel_path: cstring, key: PGtkAccelKey): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_map_lookup_entry".}
-proc gtk_accel_map_change_entry*(accel_path: cstring, accel_key: guint,
-                                 accel_mods: TGdkModifierType, replace: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_map_change_entry".}
-proc gtk_accel_map_load*(file_name: cstring){.cdecl, dynlib: gtklib,
+proc get_accel_widget*(accel_label: PAccelLabel): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_accel_label_get_accel_widget".}
+proc get_accel_width*(accel_label: PAccelLabel): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_accel_label_get_accel_width".}
+proc set_accel_widget*(accel_label: PAccelLabel, 
+                                   accel_widget: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_accel_label_set_accel_widget".}
+proc set_accel_closure*(accel_label: PAccelLabel, 
+                                    accel_closure: PGClosure){.cdecl, 
+    dynlib: lib, importc: "gtk_accel_label_set_accel_closure".}
+proc refetch*(accel_label: PAccelLabel): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_accel_label_refetch".}
+proc accel_map_add_entry*(accel_path: cstring, accel_key: guint, 
+                          accel_mods: gdk2.TModifierType){.cdecl, dynlib: lib, 
+    importc: "gtk_accel_map_add_entry".}
+proc accel_map_lookup_entry*(accel_path: cstring, key: PAccelKey): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_accel_map_lookup_entry".}
+proc accel_map_change_entry*(accel_path: cstring, accel_key: guint, 
+                             accel_mods: gdk2.TModifierType, replace: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_accel_map_change_entry".}
+proc accel_map_load*(file_name: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_accel_map_load".}
-proc gtk_accel_map_save*(file_name: cstring){.cdecl, dynlib: gtklib,
+proc accel_map_save*(file_name: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_accel_map_save".}
-proc gtk_accel_map_foreach*(data: gpointer, foreach_func: TGtkAccelMapForeach){.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_map_foreach".}
-proc gtk_accel_map_load_fd*(fd: gint){.cdecl, dynlib: gtklib,
-                                       importc: "gtk_accel_map_load_fd".}
-proc gtk_accel_map_load_scanner*(scanner: PGScanner){.cdecl, dynlib: gtklib,
+proc accel_map_foreach*(data: gpointer, foreach_func: TAccelMapForeach){.cdecl, 
+    dynlib: lib, importc: "gtk_accel_map_foreach".}
+proc accel_map_load_fd*(fd: gint){.cdecl, dynlib: lib, 
+                                   importc: "gtk_accel_map_load_fd".}
+proc accel_map_load_scanner*(scanner: PGScanner){.cdecl, dynlib: lib, 
     importc: "gtk_accel_map_load_scanner".}
-proc gtk_accel_map_save_fd*(fd: gint){.cdecl, dynlib: gtklib,
-                                       importc: "gtk_accel_map_save_fd".}
-proc gtk_accel_map_add_filter*(filter_pattern: cstring){.cdecl, dynlib: gtklib,
+proc accel_map_save_fd*(fd: gint){.cdecl, dynlib: lib, 
+                                   importc: "gtk_accel_map_save_fd".}
+proc accel_map_add_filter*(filter_pattern: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_accel_map_add_filter".}
-proc gtk_accel_map_foreach_unfiltered*(data: gpointer,
-                                       foreach_func: TGtkAccelMapForeach){.
-    cdecl, dynlib: gtklib, importc: "gtk_accel_map_foreach_unfiltered".}
-proc gtk_accel_map_init*(){.cdecl, dynlib: gtklib,
-                              importc: "_gtk_accel_map_init".}
-proc gtk_accel_map_add_group*(accel_path: cstring, accel_group: PGtkAccelGroup){.
-    cdecl, dynlib: gtklib, importc: "_gtk_accel_map_add_group".}
-proc gtk_accel_map_remove_group*(accel_path: cstring,
-                                   accel_group: PGtkAccelGroup){.cdecl,
-    dynlib: gtklib, importc: "_gtk_accel_map_remove_group".}
-proc gtk_accel_path_is_valid*(accel_path: cstring): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_accel_path_is_valid".}
-proc GTK_TYPE_ACCESSIBLE*(): GType
-proc GTK_ACCESSIBLE*(obj: pointer): PGtkAccessible
-proc GTK_ACCESSIBLE_CLASS*(klass: pointer): PGtkAccessibleClass
-proc GTK_IS_ACCESSIBLE*(obj: pointer): bool
-proc GTK_IS_ACCESSIBLE_CLASS*(klass: pointer): bool
-proc GTK_ACCESSIBLE_GET_CLASS*(obj: pointer): PGtkAccessibleClass
-proc gtk_accessible_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_accessible_get_type".}
-proc gtk_accessible_connect_widget_destroyed*(accessible: PGtkAccessible){.
-    cdecl, dynlib: gtklib, importc: "gtk_accessible_connect_widget_destroyed".}
-proc GTK_TYPE_ADJUSTMENT*(): GType
-proc GTK_ADJUSTMENT*(obj: pointer): PGtkAdjustment
-proc GTK_ADJUSTMENT_CLASS*(klass: pointer): PGtkAdjustmentClass
-proc GTK_IS_ADJUSTMENT*(obj: pointer): bool
-proc GTK_IS_ADJUSTMENT_CLASS*(klass: pointer): bool
-proc GTK_ADJUSTMENT_GET_CLASS*(obj: pointer): PGtkAdjustmentClass
-proc gtk_adjustment_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_adjustment_get_type".}
-proc gtk_adjustment_new*(value: gdouble, lower: gdouble, upper: gdouble,
-                         step_increment: gdouble, page_increment: gdouble,
-                         page_size: gdouble): PGtkAdjustment {.cdecl, dynlib: gtklib,
+proc accel_map_foreach_unfiltered*(data: gpointer, 
+                                   foreach_func: TAccelMapForeach){.cdecl, 
+    dynlib: lib, importc: "gtk_accel_map_foreach_unfiltered".}
+proc accel_map_init*(){.cdecl, dynlib: lib, importc: "_gtk_accel_map_init".}
+proc accel_map_add_group*(accel_path: cstring, accel_group: PAccelGroup){.cdecl, 
+    dynlib: lib, importc: "_gtk_accel_map_add_group".}
+proc accel_map_remove_group*(accel_path: cstring, accel_group: PAccelGroup){.
+    cdecl, dynlib: lib, importc: "_gtk_accel_map_remove_group".}
+proc accel_path_is_valid*(accel_path: cstring): gboolean{.cdecl, dynlib: lib, 
+    importc: "_gtk_accel_path_is_valid".}
+proc TYPE_ACCESSIBLE*(): GType
+proc ACCESSIBLE*(obj: pointer): PAccessible
+proc ACCESSIBLE_CLASS*(klass: pointer): PAccessibleClass
+proc IS_ACCESSIBLE*(obj: pointer): bool
+proc IS_ACCESSIBLE_CLASS*(klass: pointer): bool
+proc ACCESSIBLE_GET_CLASS*(obj: pointer): PAccessibleClass
+proc accessible_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_accessible_get_type".}
+proc connect_widget_destroyed*(accessible: PAccessible){.cdecl, 
+    dynlib: lib, importc: "gtk_accessible_connect_widget_destroyed".}
+proc TYPE_ADJUSTMENT*(): GType
+proc ADJUSTMENT*(obj: pointer): PAdjustment
+proc ADJUSTMENT_CLASS*(klass: pointer): PAdjustmentClass
+proc IS_ADJUSTMENT*(obj: pointer): bool
+proc IS_ADJUSTMENT_CLASS*(klass: pointer): bool
+proc ADJUSTMENT_GET_CLASS*(obj: pointer): PAdjustmentClass
+proc adjustment_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_adjustment_get_type".}
+proc adjustment_new*(value: gdouble, lower: gdouble, upper: gdouble, 
+                     step_increment: gdouble, page_increment: gdouble, 
+                     page_size: gdouble): PAdjustment{.cdecl, dynlib: lib, 
     importc: "gtk_adjustment_new".}
-proc gtk_adjustment_changed*(adjustment: PGtkAdjustment){.cdecl, dynlib: gtklib,
+proc changed*(adjustment: PAdjustment){.cdecl, dynlib: lib, 
     importc: "gtk_adjustment_changed".}
-proc gtk_adjustment_value_changed*(adjustment: PGtkAdjustment){.cdecl,
-    dynlib: gtklib, importc: "gtk_adjustment_value_changed".}
-proc gtk_adjustment_clamp_page*(adjustment: PGtkAdjustment, lower: gdouble,
-                                upper: gdouble){.cdecl, dynlib: gtklib,
+proc value_changed*(adjustment: PAdjustment){.cdecl, dynlib: lib, 
+    importc: "gtk_adjustment_value_changed".}
+proc clamp_page*(adjustment: PAdjustment, lower: gdouble, 
+                            upper: gdouble){.cdecl, dynlib: lib, 
     importc: "gtk_adjustment_clamp_page".}
-proc gtk_adjustment_get_value*(adjustment: PGtkAdjustment): gdouble{.cdecl,
-    dynlib: gtklib, importc: "gtk_adjustment_get_value".}
-proc gtk_adjustment_set_value*(adjustment: PGtkAdjustment, value: gdouble){.
-    cdecl, dynlib: gtklib, importc: "gtk_adjustment_set_value".}
-proc GTK_TYPE_ALIGNMENT*(): GType
-proc GTK_ALIGNMENT*(obj: pointer): PGtkAlignment
-proc GTK_ALIGNMENT_CLASS*(klass: pointer): PGtkAlignmentClass
-proc GTK_IS_ALIGNMENT*(obj: pointer): bool
-proc GTK_IS_ALIGNMENT_CLASS*(klass: pointer): bool
-proc GTK_ALIGNMENT_GET_CLASS*(obj: pointer): PGtkAlignmentClass
-proc gtk_alignment_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_alignment_get_type".}
-proc gtk_alignment_new*(xalign: gfloat, yalign: gfloat, xscale: gfloat,
-                        yscale: gfloat): PGtkAlignment {.cdecl, dynlib: gtklib,
+proc get_value*(adjustment: PAdjustment): gdouble{.cdecl, 
+    dynlib: lib, importc: "gtk_adjustment_get_value".}
+proc set_value*(adjustment: PAdjustment, value: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_adjustment_set_value".}
+proc TYPE_ALIGNMENT*(): GType
+proc ALIGNMENT*(obj: pointer): PAlignment
+proc ALIGNMENT_CLASS*(klass: pointer): PAlignmentClass
+proc IS_ALIGNMENT*(obj: pointer): bool
+proc IS_ALIGNMENT_CLASS*(klass: pointer): bool
+proc ALIGNMENT_GET_CLASS*(obj: pointer): PAlignmentClass
+proc alignment_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_alignment_get_type".}
+proc alignment_new*(xalign: gfloat, yalign: gfloat, xscale: gfloat, 
+                    yscale: gfloat): PAlignment{.cdecl, dynlib: lib, 
     importc: "gtk_alignment_new".}
-proc gtk_alignment_set*(alignment: PGtkAlignment, xalign: gfloat,
-                        yalign: gfloat, xscale: gfloat, yscale: gfloat){.cdecl,
-    dynlib: gtklib, importc: "gtk_alignment_set".}
-proc GTK_TYPE_FRAME*(): GType
-proc GTK_FRAME*(obj: pointer): PGtkFrame
-proc GTK_FRAME_CLASS*(klass: pointer): PGtkFrameClass
-proc GTK_IS_FRAME*(obj: pointer): bool
-proc GTK_IS_FRAME_CLASS*(klass: pointer): bool
-proc GTK_FRAME_GET_CLASS*(obj: pointer): PGtkFrameClass
-proc gtk_frame_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_frame_get_type".}
-proc gtk_frame_new*(`label`: cstring): PGtkFrame {.cdecl, dynlib: gtklib,
+proc set*(alignment: PAlignment, xalign: gfloat, yalign: gfloat, 
+                    xscale: gfloat, yscale: gfloat){.cdecl, dynlib: lib, 
+    importc: "gtk_alignment_set".}
+proc TYPE_FRAME*(): GType
+proc FRAME*(obj: pointer): PFrame
+proc FRAME_CLASS*(klass: pointer): PFrameClass
+proc IS_FRAME*(obj: pointer): bool
+proc IS_FRAME_CLASS*(klass: pointer): bool
+proc FRAME_GET_CLASS*(obj: pointer): PFrameClass
+proc frame_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_frame_get_type".}
+proc frame_new*(`label`: cstring): PFrame{.cdecl, dynlib: lib, 
     importc: "gtk_frame_new".}
-proc gtk_frame_set_label*(frame: PGtkFrame, `label`: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_frame_set_label".}
-proc gtk_frame_get_label*(frame: PGtkFrame): cstring{.cdecl, dynlib: gtklib,
+proc set_label*(frame: PFrame, `label`: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_frame_set_label".}
+proc get_label*(frame: PFrame): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_frame_get_label".}
-proc gtk_frame_set_label_widget*(frame: PGtkFrame, label_widget: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_frame_set_label_widget".}
-proc gtk_frame_get_label_widget*(frame: PGtkFrame): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_frame_get_label_widget".}
-proc gtk_frame_set_label_align*(frame: PGtkFrame, xalign: gfloat, yalign: gfloat){.
-    cdecl, dynlib: gtklib, importc: "gtk_frame_set_label_align".}
-proc gtk_frame_get_label_align*(frame: PGtkFrame, xalign: Pgfloat,
-                                yalign: Pgfloat){.cdecl, dynlib: gtklib,
-    importc: "gtk_frame_get_label_align".}
-proc gtk_frame_set_shadow_type*(frame: PGtkFrame, thetype: TGtkShadowType){.
-    cdecl, dynlib: gtklib, importc: "gtk_frame_set_shadow_type".}
-proc gtk_frame_get_shadow_type*(frame: PGtkFrame): TGtkShadowType{.cdecl,
-    dynlib: gtklib, importc: "gtk_frame_get_shadow_type".}
-proc GTK_TYPE_ASPECT_FRAME*(): GType
-proc GTK_ASPECT_FRAME*(obj: pointer): PGtkAspectFrame
-proc GTK_ASPECT_FRAME_CLASS*(klass: pointer): PGtkAspectFrameClass
-proc GTK_IS_ASPECT_FRAME*(obj: pointer): bool
-proc GTK_IS_ASPECT_FRAME_CLASS*(klass: pointer): bool
-proc GTK_ASPECT_FRAME_GET_CLASS*(obj: pointer): PGtkAspectFrameClass
-proc gtk_aspect_frame_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_aspect_frame_get_type".}
-proc gtk_aspect_frame_new*(`label`: cstring, xalign: gfloat, yalign: gfloat,
-                           ratio: gfloat, obey_child: gboolean): PGtkAspectFrame {.
-    cdecl, dynlib: gtklib, importc: "gtk_aspect_frame_new".}
-proc gtk_aspect_frame_set*(aspect_frame: PGtkAspectFrame, xalign: gfloat,
-                           yalign: gfloat, ratio: gfloat, obey_child: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_aspect_frame_set".}
-proc GTK_TYPE_ARROW*(): GType
-proc GTK_ARROW*(obj: pointer): PGtkArrow
-proc GTK_ARROW_CLASS*(klass: pointer): PGtkArrowClass
-proc GTK_IS_ARROW*(obj: pointer): bool
-proc GTK_IS_ARROW_CLASS*(klass: pointer): bool
-proc GTK_ARROW_GET_CLASS*(obj: pointer): PGtkArrowClass
-proc gtk_arrow_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_arrow_get_type".}
-proc gtk_arrow_new*(arrow_type: TGtkArrowType, shadow_type: TGtkShadowType): PGtkArrow{.
-    cdecl, dynlib: gtklib, importc: "gtk_arrow_new".}
-proc gtk_arrow_set*(arrow: PGtkArrow, arrow_type: TGtkArrowType,
-                    shadow_type: TGtkShadowType){.cdecl, dynlib: gtklib,
-    importc: "gtk_arrow_set".}
-const
-  bm_TGtkBindingSet_parsed* = 0x00000001'i16
+proc set_label_widget*(frame: PFrame, label_widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_frame_set_label_widget".}
+proc get_label_widget*(frame: PFrame): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_frame_get_label_widget".}
+proc set_label_align*(frame: PFrame, xalign: gfloat, yalign: gfloat){.
+    cdecl, dynlib: lib, importc: "gtk_frame_set_label_align".}
+proc get_label_align*(frame: PFrame, xalign: Pgfloat, yalign: Pgfloat){.
+    cdecl, dynlib: lib, importc: "gtk_frame_get_label_align".}
+proc set_shadow_type*(frame: PFrame, thetype: TShadowType){.cdecl, 
+    dynlib: lib, importc: "gtk_frame_set_shadow_type".}
+proc get_shadow_type*(frame: PFrame): TShadowType{.cdecl, dynlib: lib, 
+    importc: "gtk_frame_get_shadow_type".}
+proc TYPE_ASPECT_FRAME*(): GType
+proc ASPECT_FRAME*(obj: pointer): PAspectFrame
+proc ASPECT_FRAME_CLASS*(klass: pointer): PAspectFrameClass
+proc IS_ASPECT_FRAME*(obj: pointer): bool
+proc IS_ASPECT_FRAME_CLASS*(klass: pointer): bool
+proc ASPECT_FRAME_GET_CLASS*(obj: pointer): PAspectFrameClass
+proc aspect_frame_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_aspect_frame_get_type".}
+proc aspect_frame_new*(`label`: cstring, xalign: gfloat, yalign: gfloat, 
+                       ratio: gfloat, obey_child: gboolean): PAspectFrame{.
+    cdecl, dynlib: lib, importc: "gtk_aspect_frame_new".}
+proc set*(aspect_frame: PAspectFrame, xalign: gfloat, 
+                       yalign: gfloat, ratio: gfloat, obey_child: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_aspect_frame_set".}
+proc TYPE_ARROW*(): GType
+proc ARROW*(obj: pointer): PArrow
+proc ARROW_CLASS*(klass: pointer): PArrowClass
+proc IS_ARROW*(obj: pointer): bool
+proc IS_ARROW_CLASS*(klass: pointer): bool
+proc ARROW_GET_CLASS*(obj: pointer): PArrowClass
+proc arrow_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_arrow_get_type".}
+proc arrow_new*(arrow_type: TArrowType, shadow_type: TShadowType): PArrow{.
+    cdecl, dynlib: lib, importc: "gtk_arrow_new".}
+proc set*(arrow: PArrow, arrow_type: TArrowType, shadow_type: TShadowType){.
+    cdecl, dynlib: lib, importc: "gtk_arrow_set".}
+const 
+  bm_TGtkBindingSet_parsed* = 0x0001'i16
   bp_TGtkBindingSet_parsed* = 0'i16
-  bm_TGtkBindingEntry_destroyed* = 0x00000001'i16
+  bm_TGtkBindingEntry_destroyed* = 0x0001'i16
   bp_TGtkBindingEntry_destroyed* = 0'i16
-  bm_TGtkBindingEntry_in_emission* = 0x00000002'i16
+  bm_TGtkBindingEntry_in_emission* = 0x0002'i16
   bp_TGtkBindingEntry_in_emission* = 1'i16
 
-proc gtk_binding_entry_add*(binding_set: PGtkBindingSet, keyval: guint,
-                            modifiers: TGdkModifierType)
-proc parsed*(a: var TGtkBindingSet): guint
-proc set_parsed*(a: var TGtkBindingSet, `parsed`: guint)
-proc destroyed*(a: var TGtkBindingEntry): guint
-proc set_destroyed*(a: var TGtkBindingEntry, `destroyed`: guint)
-proc in_emission*(a: var TGtkBindingEntry): guint
-proc set_in_emission*(a: var TGtkBindingEntry, `in_emission`: guint)
-proc gtk_binding_set_new*(set_name: cstring): PGtkBindingSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_set_new".}
-proc gtk_binding_set_by_class*(object_class: gpointer): PGtkBindingSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_set_by_class".}
-proc gtk_binding_set_find*(set_name: cstring): PGtkBindingSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_set_find".}
-proc gtk_bindings_activate*(anObject: PGtkObject, keyval: guint,
-                            modifiers: TGdkModifierType): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_bindings_activate".}
-proc gtk_binding_set_activate*(binding_set: PGtkBindingSet, keyval: guint,
-                               modifiers: TGdkModifierType, anObject: PGtkObject): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_binding_set_activate".}
-proc gtk_binding_entry_clear*(binding_set: PGtkBindingSet, keyval: guint,
-                              modifiers: TGdkModifierType){.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_entry_clear".}
-proc gtk_binding_set_add_path*(binding_set: PGtkBindingSet,
-                               path_type: TGtkPathType, path_pattern: cstring,
-                               priority: TGtkPathPriorityType){.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_set_add_path".}
-proc gtk_binding_entry_remove*(binding_set: PGtkBindingSet, keyval: guint,
-                               modifiers: TGdkModifierType){.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_entry_remove".}
-proc gtk_binding_entry_add_signall*(binding_set: PGtkBindingSet, keyval: guint,
-                                    modifiers: TGdkModifierType,
-                                    signal_name: cstring, binding_args: PGSList){.
-    cdecl, dynlib: gtklib, importc: "gtk_binding_entry_add_signall".}
-proc gtk_binding_parse_binding*(scanner: PGScanner): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_binding_parse_binding".}
-proc gtk_bindings_activate_event*(anObject: PGtkObject, event: PGdkEventKey): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_bindings_activate_event".}
-proc gtk_binding_reset_parsed*(){.cdecl, dynlib: gtklib,
-                                  importc: "_gtk_binding_reset_parsed".}
-const
-  bm_TGtkBox_homogeneous* = 0x00000001'i16
+proc entry_add*(binding_set: PBindingSet, keyval: guint, 
+                        modifiers: gdk2.TModifierType)
+proc parsed*(a: var TBindingSet): guint
+proc set_parsed*(a: var TBindingSet, `parsed`: guint)
+proc destroyed*(a: var TBindingEntry): guint
+proc set_destroyed*(a: var TBindingEntry, `destroyed`: guint)
+proc in_emission*(a: var TBindingEntry): guint
+proc set_in_emission*(a: var TBindingEntry, `in_emission`: guint)
+proc binding_set_new*(set_name: cstring): PBindingSet{.cdecl, dynlib: lib, 
+    importc: "gtk_binding_set_new".}
+proc binding_set_by_class*(object_class: gpointer): PBindingSet{.cdecl, 
+    dynlib: lib, importc: "gtk_binding_set_by_class".}
+proc binding_set_find*(set_name: cstring): PBindingSet{.cdecl, dynlib: lib, 
+    importc: "gtk_binding_set_find".}
+proc bindings_activate*(anObject: PObject, keyval: guint, 
+                        modifiers: gdk2.TModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_bindings_activate".}
+proc activate*(binding_set: PBindingSet, keyval: guint, 
+                           modifiers: gdk2.TModifierType, anObject: PObject): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_binding_set_activate".}
+proc entry_clear*(binding_set: PBindingSet, keyval: guint, 
+                          modifiers: gdk2.TModifierType){.cdecl, dynlib: lib, 
+    importc: "gtk_binding_entry_clear".}
+proc add_path*(binding_set: PBindingSet, path_type: TPathType, 
+                           path_pattern: cstring, priority: TPathPriorityType){.
+    cdecl, dynlib: lib, importc: "gtk_binding_set_add_path".}
+proc entry_remove*(binding_set: PBindingSet, keyval: guint, 
+                           modifiers: gdk2.TModifierType){.cdecl, dynlib: lib, 
+    importc: "gtk_binding_entry_remove".}
+proc entry_add_signall*(binding_set: PBindingSet, keyval: guint, 
+                                modifiers: gdk2.TModifierType, 
+                                signal_name: cstring, binding_args: PGSList){.
+    cdecl, dynlib: lib, importc: "gtk_binding_entry_add_signall".}
+proc binding_parse_binding*(scanner: PGScanner): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_binding_parse_binding".}
+proc bindings_activate_event*(anObject: PObject, event: gdk2.PEventKey): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_bindings_activate_event".}
+proc binding_reset_parsed*(){.cdecl, dynlib: lib, 
+                              importc: "_gtk_binding_reset_parsed".}
+const 
+  bm_TGtkBox_homogeneous* = 0x0001'i16
   bp_TGtkBox_homogeneous* = 0'i16
-  bm_TGtkBoxChild_expand* = 0x00000001'i16
+  bm_TGtkBoxChild_expand* = 0x0001'i16
   bp_TGtkBoxChild_expand* = 0'i16
-  bm_TGtkBoxChild_fill* = 0x00000002'i16
+  bm_TGtkBoxChild_fill* = 0x0002'i16
   bp_TGtkBoxChild_fill* = 1'i16
-  bm_TGtkBoxChild_pack* = 0x00000004'i16
+  bm_TGtkBoxChild_pack* = 0x0004'i16
   bp_TGtkBoxChild_pack* = 2'i16
-  bm_TGtkBoxChild_is_secondary* = 0x00000008'i16
+  bm_TGtkBoxChild_is_secondary* = 0x0008'i16
   bp_TGtkBoxChild_is_secondary* = 3'i16
 
-proc GTK_TYPE_BOX*(): GType
-proc GTK_BOX*(obj: pointer): PGtkBox
-proc GTK_BOX_CLASS*(klass: pointer): PGtkBoxClass
-proc GTK_IS_BOX*(obj: pointer): bool
-proc GTK_IS_BOX_CLASS*(klass: pointer): bool
-proc GTK_BOX_GET_CLASS*(obj: pointer): PGtkBoxClass
-proc homogeneous*(a: var TGtkBox): guint
-proc set_homogeneous*(a: var TGtkBox, `homogeneous`: guint)
-proc expand*(a: var TGtkBoxChild): guint
-proc set_expand*(a: var TGtkBoxChild, `expand`: guint)
-proc fill*(a: var TGtkBoxChild): guint
-proc set_fill*(a: var TGtkBoxChild, `fill`: guint)
-proc pack*(a: var TGtkBoxChild): guint
-proc set_pack*(a: var TGtkBoxChild, `pack`: guint)
-proc is_secondary*(a: var TGtkBoxChild): guint
-proc set_is_secondary*(a: var TGtkBoxChild, `is_secondary`: guint)
-proc gtk_box_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_box_get_type".}
-proc gtk_box_pack_start*(box: PGtkBox, child: PGtkWidget, expand: gboolean,
-                         fill: gboolean, padding: guint){.cdecl, dynlib: gtklib,
+proc TYPE_BOX*(): GType
+proc BOX*(obj: pointer): PBox
+proc BOX_CLASS*(klass: pointer): PBoxClass
+proc IS_BOX*(obj: pointer): bool
+proc IS_BOX_CLASS*(klass: pointer): bool
+proc BOX_GET_CLASS*(obj: pointer): PBoxClass
+proc homogeneous*(a: var TBox): guint
+proc set_homogeneous*(a: var TBox, `homogeneous`: guint)
+proc expand*(a: var TBoxChild): guint
+proc set_expand*(a: var TBoxChild, `expand`: guint)
+proc fill*(a: var TBoxChild): guint
+proc set_fill*(a: var TBoxChild, `fill`: guint)
+proc pack*(a: var TBoxChild): guint
+proc set_pack*(a: var TBoxChild, `pack`: guint)
+proc is_secondary*(a: var TBoxChild): guint
+proc set_is_secondary*(a: var TBoxChild, `is_secondary`: guint)
+proc box_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_box_get_type".}
+proc pack_start*(box: PBox, child: PWidget, expand: gboolean, 
+                     fill: gboolean, padding: guint){.cdecl, dynlib: lib, 
     importc: "gtk_box_pack_start".}
-proc gtk_box_pack_end*(box: PGtkBox, child: PGtkWidget, expand: gboolean,
-                       fill: gboolean, padding: guint){.cdecl, dynlib: gtklib,
-    importc: "gtk_box_pack_end".}
-proc gtk_box_pack_start_defaults*(box: PGtkBox, widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_box_pack_start_defaults".}
-proc gtk_box_pack_end_defaults*(box: PGtkBox, widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_box_pack_end_defaults".}
-proc gtk_box_set_homogeneous*(box: PGtkBox, homogeneous: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_box_set_homogeneous".}
-proc gtk_box_get_homogeneous*(box: PGtkBox): gboolean{.cdecl, dynlib: gtklib,
+proc pack_end*(box: PBox, child: PWidget, expand: gboolean, fill: gboolean, 
+                   padding: guint){.cdecl, dynlib: lib, 
+                                    importc: "gtk_box_pack_end".}
+proc pack_start_defaults*(box: PBox, widget: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_box_pack_start_defaults".}
+proc pack_end_defaults*(box: PBox, widget: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_box_pack_end_defaults".}
+proc set_homogeneous*(box: PBox, homogeneous: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_box_set_homogeneous".}
+proc get_homogeneous*(box: PBox): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_box_get_homogeneous".}
-proc gtk_box_set_spacing*(box: PGtkBox, spacing: gint){.cdecl, dynlib: gtklib,
+proc set_spacing*(box: PBox, spacing: gint){.cdecl, dynlib: lib, 
     importc: "gtk_box_set_spacing".}
-proc gtk_box_get_spacing*(box: PGtkBox): gint{.cdecl, dynlib: gtklib,
-    importc: "gtk_box_get_spacing".}
-proc gtk_box_reorder_child*(box: PGtkBox, child: PGtkWidget, position: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_box_reorder_child".}
-proc gtk_box_query_child_packing*(box: PGtkBox, child: PGtkWidget,
-                                  expand: Pgboolean, fill: Pgboolean,
-                                  padding: Pguint, pack_type: PGtkPackType){.
-    cdecl, dynlib: gtklib, importc: "gtk_box_query_child_packing".}
-proc gtk_box_set_child_packing*(box: PGtkBox, child: PGtkWidget,
-                                expand: gboolean, fill: gboolean,
-                                padding: guint, pack_type: TGtkPackType){.cdecl,
-    dynlib: gtklib, importc: "gtk_box_set_child_packing".}
-const
-  GTK_BUTTONBOX_DEFAULT* = - (1)
-
-proc GTK_TYPE_BUTTON_BOX*(): GType
-proc GTK_BUTTON_BOX*(obj: pointer): PGtkButtonBox
-proc GTK_BUTTON_BOX_CLASS*(klass: pointer): PGtkButtonBoxClass
-proc GTK_IS_BUTTON_BOX*(obj: pointer): bool
-proc GTK_IS_BUTTON_BOX_CLASS*(klass: pointer): bool
-proc GTK_BUTTON_BOX_GET_CLASS*(obj: pointer): PGtkButtonBoxClass
-proc gtk_button_box_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_button_box_get_type".}
-proc gtk_button_box_get_layout*(widget: PGtkButtonBox): TGtkButtonBoxStyle{.
-    cdecl, dynlib: gtklib, importc: "gtk_button_box_get_layout".}
-proc gtk_button_box_set_layout*(widget: PGtkButtonBox,
-                                layout_style: TGtkButtonBoxStyle){.cdecl,
-    dynlib: gtklib, importc: "gtk_button_box_set_layout".}
-proc gtk_button_box_set_child_secondary*(widget: PGtkButtonBox,
-    child: PGtkWidget, is_secondary: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_button_box_set_child_secondary".}
-proc gtk_button_box_child_requisition*(widget: PGtkWidget,
-    nvis_children: var int32, nvis_secondaries: var int32, width: var int32,
-    height: var int32){.cdecl, dynlib: gtklib,
-                       importc: "_gtk_button_box_child_requisition".}
-const
-  bm_TGtkButton_constructed* = 0x00000001'i16
+proc get_spacing*(box: PBox): gint{.cdecl, dynlib: lib, 
+                                        importc: "gtk_box_get_spacing".}
+proc reorder_child*(box: PBox, child: PWidget, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_box_reorder_child".}
+proc query_child_packing*(box: PBox, child: PWidget, expand: Pgboolean, 
+                              fill: Pgboolean, padding: Pguint, 
+                              pack_type: PPackType){.cdecl, dynlib: lib, 
+    importc: "gtk_box_query_child_packing".}
+proc set_child_packing*(box: PBox, child: PWidget, expand: gboolean, 
+                            fill: gboolean, padding: guint, pack_type: TPackType){.
+    cdecl, dynlib: lib, importc: "gtk_box_set_child_packing".}
+const 
+  BUTTONBOX_DEFAULT* = - (1)
+
+proc TYPE_BUTTON_BOX*(): GType
+proc BUTTON_BOX*(obj: pointer): PButtonBox
+proc BUTTON_BOX_CLASS*(klass: pointer): PButtonBoxClass
+proc IS_BUTTON_BOX*(obj: pointer): bool
+proc IS_BUTTON_BOX_CLASS*(klass: pointer): bool
+proc BUTTON_BOX_GET_CLASS*(obj: pointer): PButtonBoxClass
+proc button_box_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_button_box_get_type".}
+proc get_layout*(widget: PButtonBox): TButtonBoxStyle{.cdecl, 
+    dynlib: lib, importc: "gtk_button_box_get_layout".}
+proc set_layout*(widget: PButtonBox, layout_style: TButtonBoxStyle){.
+    cdecl, dynlib: lib, importc: "gtk_button_box_set_layout".}
+proc set_child_secondary*(widget: PButtonBox, child: PWidget, 
+                                     is_secondary: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_button_box_set_child_secondary".}
+proc button_box_child_requisition*(widget: PWidget, nvis_children: var int32, 
+                                   nvis_secondaries: var int32, 
+                                   width: var int32, height: var int32){.cdecl, 
+    dynlib: lib, importc: "_gtk_button_box_child_requisition".}
+const 
+  bm_TGtkButton_constructed* = 0x0001'i16
   bp_TGtkButton_constructed* = 0'i16
-  bm_TGtkButton_in_button* = 0x00000002'i16
+  bm_TGtkButton_in_button* = 0x0002'i16
   bp_TGtkButton_in_button* = 1'i16
-  bm_TGtkButton_button_down* = 0x00000004'i16
+  bm_TGtkButton_button_down* = 0x0004'i16
   bp_TGtkButton_button_down* = 2'i16
-  bm_TGtkButton_relief* = 0x00000018'i16
+  bm_TGtkButton_relief* = 0x0018'i16
   bp_TGtkButton_relief* = 3'i16
-  bm_TGtkButton_use_underline* = 0x00000020'i16
+  bm_TGtkButton_use_underline* = 0x0020'i16
   bp_TGtkButton_use_underline* = 5'i16
-  bm_TGtkButton_use_stock* = 0x00000040'i16
+  bm_TGtkButton_use_stock* = 0x0040'i16
   bp_TGtkButton_use_stock* = 6'i16
-  bm_TGtkButton_depressed* = 0x00000080'i16
+  bm_TGtkButton_depressed* = 0x0080'i16
   bp_TGtkButton_depressed* = 7'i16
-  bm_TGtkButton_depress_on_activate* = 0x00000100'i16
+  bm_TGtkButton_depress_on_activate* = 0x0100'i16
   bp_TGtkButton_depress_on_activate* = 8'i16
 
-proc GTK_TYPE_BUTTON*(): GType
-proc GTK_BUTTON*(obj: pointer): PGtkButton
-proc GTK_BUTTON_CLASS*(klass: pointer): PGtkButtonClass
-proc GTK_IS_BUTTON*(obj: pointer): bool
-proc GTK_IS_BUTTON_CLASS*(klass: pointer): bool
-proc GTK_BUTTON_GET_CLASS*(obj: pointer): PGtkButtonClass
-proc constructed*(a: var TGtkButton): guint
-proc set_constructed*(a: var TGtkButton, `constructed`: guint)
-proc in_button*(a: var TGtkButton): guint
-proc set_in_button*(a: var TGtkButton, `in_button`: guint)
-proc button_down*(a: var TGtkButton): guint
-proc set_button_down*(a: var TGtkButton, `button_down`: guint)
-proc relief*(a: var TGtkButton): guint
-proc set_relief*(a: var TGtkButton, `relief`: guint)
-proc use_underline*(a: var TGtkButton): guint
-proc set_use_underline*(a: var TGtkButton, `use_underline`: guint)
-proc use_stock*(a: var TGtkButton): guint
-proc set_use_stock*(a: var TGtkButton, `use_stock`: guint)
-proc depressed*(a: var TGtkButton): guint
-proc set_depressed*(a: var TGtkButton, `depressed`: guint)
-proc depress_on_activate*(a: var TGtkButton): guint
-proc set_depress_on_activate*(a: var TGtkButton, `depress_on_activate`: guint)
-proc gtk_button_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_button_get_type".}
-proc gtk_button_new*(): PGtkButton {.cdecl, dynlib: gtklib,
-                                    importc: "gtk_button_new".}
-proc gtk_button_new_with_label*(`label`: cstring): PGtkButton {.cdecl,
-    dynlib: gtklib, importc: "gtk_button_new_with_label".}
-proc gtk_button_new_from_stock*(stock_id: cstring): PGtkButton {.cdecl,
-    dynlib: gtklib, importc: "gtk_button_new_from_stock".}
-proc gtk_button_new_with_mnemonic*(`label`: cstring): PGtkButton {.cdecl,
-    dynlib: gtklib, importc: "gtk_button_new_with_mnemonic".}
-proc gtk_button_pressed*(button: PGtkButton){.cdecl, dynlib: gtklib,
-    importc: "gtk_button_pressed".}
-proc gtk_button_released*(button: PGtkButton){.cdecl, dynlib: gtklib,
-    importc: "gtk_button_released".}
-proc gtk_button_clicked*(button: PGtkButton){.cdecl, dynlib: gtklib,
-    importc: "gtk_button_clicked".}
-proc gtk_button_enter*(button: PGtkButton){.cdecl, dynlib: gtklib,
-    importc: "gtk_button_enter".}
-proc gtk_button_leave*(button: PGtkButton){.cdecl, dynlib: gtklib,
-    importc: "gtk_button_leave".}
-proc gtk_button_set_relief*(button: PGtkButton, newstyle: TGtkReliefStyle){.
-    cdecl, dynlib: gtklib, importc: "gtk_button_set_relief".}
-proc gtk_button_get_relief*(button: PGtkButton): TGtkReliefStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_button_get_relief".}
-proc gtk_button_set_label*(button: PGtkButton, `label`: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_button_set_label".}
-proc gtk_button_get_label*(button: PGtkButton): cstring{.cdecl, dynlib: gtklib,
+proc TYPE_BUTTON*(): GType
+proc BUTTON*(obj: pointer): PButton
+proc BUTTON_CLASS*(klass: pointer): PButtonClass
+proc IS_BUTTON*(obj: pointer): bool
+proc IS_BUTTON_CLASS*(klass: pointer): bool
+proc BUTTON_GET_CLASS*(obj: pointer): PButtonClass
+proc constructed*(a: var TButton): guint
+proc set_constructed*(a: var TButton, `constructed`: guint)
+proc in_button*(a: var TButton): guint
+proc set_in_button*(a: var TButton, `in_button`: guint)
+proc button_down*(a: var TButton): guint
+proc set_button_down*(a: var TButton, `button_down`: guint)
+proc relief*(a: var TButton): guint
+proc set_relief*(a: var TButton, `relief`: guint)
+proc use_underline*(a: var TButton): guint
+proc set_use_underline*(a: var TButton, `use_underline`: guint)
+proc use_stock*(a: var TButton): guint
+proc set_use_stock*(a: var TButton, `use_stock`: guint)
+proc depressed*(a: var TButton): guint
+proc set_depressed*(a: var TButton, `depressed`: guint)
+proc depress_on_activate*(a: var TButton): guint
+proc set_depress_on_activate*(a: var TButton, `depress_on_activate`: guint)
+proc button_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_button_get_type".}
+proc button_new*(): PButton{.cdecl, dynlib: lib, importc: "gtk_button_new".}
+proc button_new_with_label*(`label`: cstring): PButton{.cdecl, dynlib: lib, 
+    importc: "gtk_button_new_with_label".}
+proc button_new_from_stock*(stock_id: cstring): PButton{.cdecl, dynlib: lib, 
+    importc: "gtk_button_new_from_stock".}
+proc button_new_with_mnemonic*(`label`: cstring): PButton{.cdecl, dynlib: lib, 
+    importc: "gtk_button_new_with_mnemonic".}
+proc pressed*(button: PButton){.cdecl, dynlib: lib, 
+                                       importc: "gtk_button_pressed".}
+proc released*(button: PButton){.cdecl, dynlib: lib, 
+                                        importc: "gtk_button_released".}
+proc clicked*(button: PButton){.cdecl, dynlib: lib, 
+                                       importc: "gtk_button_clicked".}
+proc enter*(button: PButton){.cdecl, dynlib: lib, 
+                                     importc: "gtk_button_enter".}
+proc leave*(button: PButton){.cdecl, dynlib: lib, 
+                                     importc: "gtk_button_leave".}
+proc set_relief*(button: PButton, newstyle: TReliefStyle){.cdecl, 
+    dynlib: lib, importc: "gtk_button_set_relief".}
+proc get_relief*(button: PButton): TReliefStyle{.cdecl, dynlib: lib, 
+    importc: "gtk_button_get_relief".}
+proc set_label*(button: PButton, `label`: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_button_set_label".}
+proc get_label*(button: PButton): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_button_get_label".}
-proc gtk_button_set_use_underline*(button: PGtkButton, use_underline: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_button_set_use_underline".}
-proc gtk_button_get_use_underline*(button: PGtkButton): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_button_get_use_underline".}
-proc gtk_button_set_use_stock*(button: PGtkButton, use_stock: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_button_set_use_stock".}
-proc gtk_button_get_use_stock*(button: PGtkButton): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_button_get_use_stock".}
-proc gtk_button_set_depressed*(button: PGtkButton, depressed: gboolean){.
-    cdecl, dynlib: gtklib, importc: "_gtk_button_set_depressed".}
-proc gtk_button_paint*(button: PGtkButton, area: PGdkRectangle,
-                         state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                         main_detail: cstring, default_detail: cstring){.cdecl,
-    dynlib: gtklib, importc: "_gtk_button_paint".}
-proc gtk_button_set_image*(button: PGtkButton, image: PGtkWidget) {.cdecl,
-    dynlib: gtklib, importc.}
-proc gtk_button_get_image*(button: PGtkButton): PGtkWidget {.cdecl, 
-    dynlib: gtklib, importc.}
-    
-const
-  GTK_CALENDAR_SHOW_HEADING* = 1 shl 0
-  GTK_CALENDAR_SHOW_DAY_NAMES* = 1 shl 1
-  GTK_CALENDAR_NO_MONTH_CHANGE* = 1 shl 2
-  GTK_CALENDAR_SHOW_WEEK_NUMBERS* = 1 shl 3
-  GTK_CALENDAR_WEEK_START_MONDAY* = 1 shl 4
-
-proc GTK_TYPE_CALENDAR*(): GType
-proc GTK_CALENDAR*(obj: pointer): PGtkCalendar
-proc GTK_CALENDAR_CLASS*(klass: pointer): PGtkCalendarClass
-proc GTK_IS_CALENDAR*(obj: pointer): bool
-proc GTK_IS_CALENDAR_CLASS*(klass: pointer): bool
-proc GTK_CALENDAR_GET_CLASS*(obj: pointer): PGtkCalendarClass
-proc gtk_calendar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_calendar_get_type".}
-proc gtk_calendar_new*(): PGtkCalendar {.cdecl, dynlib: gtklib,
-                                      importc: "gtk_calendar_new".}
-proc gtk_calendar_select_month*(calendar: PGtkCalendar, month: guint,
-                                year: guint): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_calendar_select_month".}
-proc gtk_calendar_select_day*(calendar: PGtkCalendar, day: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_calendar_select_day".}
-proc gtk_calendar_mark_day*(calendar: PGtkCalendar, day: guint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_calendar_mark_day".}
-proc gtk_calendar_unmark_day*(calendar: PGtkCalendar, day: guint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_calendar_unmark_day".}
-proc gtk_calendar_clear_marks*(calendar: PGtkCalendar){.cdecl, dynlib: gtklib,
+proc set_use_underline*(button: PButton, use_underline: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_button_set_use_underline".}
+proc get_use_underline*(button: PButton): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_button_get_use_underline".}
+proc set_use_stock*(button: PButton, use_stock: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_button_set_use_stock".}
+proc get_use_stock*(button: PButton): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_button_get_use_stock".}
+proc set_depressed*(button: PButton, depressed: gboolean){.cdecl, 
+    dynlib: lib, importc: "_gtk_button_set_depressed".}
+proc paint*(button: PButton, area: gdk2.PRectangle, state_type: TStateType, 
+                   shadow_type: TShadowType, main_detail: cstring, 
+                   default_detail: cstring){.cdecl, dynlib: lib, 
+    importc: "_gtk_button_paint".}
+proc set_image*(button: PButton, image: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_button_set_image".}
+proc get_image*(button: PButton): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_button_get_image".}
+const 
+  CALENDAR_SHOW_HEADING* = 1 shl 0
+  CALENDAR_SHOW_DAY_NAMES* = 1 shl 1
+  CALENDAR_NO_MONTH_CHANGE* = 1 shl 2
+  CALENDAR_SHOW_WEEK_NUMBERS* = 1 shl 3
+  CALENDAR_WEEK_START_MONDAY* = 1 shl 4
+
+proc TYPE_CALENDAR*(): GType
+proc CALENDAR*(obj: pointer): PCalendar
+proc CALENDAR_CLASS*(klass: pointer): PCalendarClass
+proc IS_CALENDAR*(obj: pointer): bool
+proc IS_CALENDAR_CLASS*(klass: pointer): bool
+proc CALENDAR_GET_CLASS*(obj: pointer): PCalendarClass
+proc calendar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_calendar_get_type".}
+proc calendar_new*(): PCalendar{.cdecl, dynlib: lib, importc: "gtk_calendar_new".}
+proc select_month*(calendar: PCalendar, month: guint, year: guint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_calendar_select_month".}
+proc select_day*(calendar: PCalendar, day: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_calendar_select_day".}
+proc mark_day*(calendar: PCalendar, day: guint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_calendar_mark_day".}
+proc unmark_day*(calendar: PCalendar, day: guint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_calendar_unmark_day".}
+proc clear_marks*(calendar: PCalendar){.cdecl, dynlib: lib, 
     importc: "gtk_calendar_clear_marks".}
-proc gtk_calendar_display_options*(calendar: PGtkCalendar,
-                                   flags: TGtkCalendarDisplayOptions){.cdecl,
-    dynlib: gtklib, importc: "gtk_calendar_display_options".}
-proc gtk_calendar_get_date*(calendar: PGtkCalendar, year: Pguint, month: Pguint,
-                            day: Pguint){.cdecl, dynlib: gtklib,
-    importc: "gtk_calendar_get_date".}
-proc gtk_calendar_freeze*(calendar: PGtkCalendar){.cdecl, dynlib: gtklib,
+proc display_options*(calendar: PCalendar, 
+                               flags: TCalendarDisplayOptions){.cdecl, 
+    dynlib: lib, importc: "gtk_calendar_display_options".}
+proc get_date*(calendar: PCalendar, year: Pguint, month: Pguint, 
+                        day: Pguint){.cdecl, dynlib: lib, 
+                                      importc: "gtk_calendar_get_date".}
+proc freeze*(calendar: PCalendar){.cdecl, dynlib: lib, 
     importc: "gtk_calendar_freeze".}
-proc gtk_calendar_thaw*(calendar: PGtkCalendar){.cdecl, dynlib: gtklib,
+proc thaw*(calendar: PCalendar){.cdecl, dynlib: lib, 
     importc: "gtk_calendar_thaw".}
-proc GTK_TYPE_CELL_EDITABLE*(): GType
-proc GTK_CELL_EDITABLE*(obj: pointer): PGtkCellEditable
-proc GTK_CELL_EDITABLE_CLASS*(obj: pointer): PGtkCellEditableIface
-proc GTK_IS_CELL_EDITABLE*(obj: pointer): bool
-proc GTK_CELL_EDITABLE_GET_IFACE*(obj: pointer): PGtkCellEditableIface
-proc gtk_cell_editable_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_cell_editable_get_type".}
-proc gtk_cell_editable_start_editing*(cell_editable: PGtkCellEditable,
-                                      event: PGdkEvent){.cdecl, dynlib: gtklib,
-    importc: "gtk_cell_editable_start_editing".}
-proc gtk_cell_editable_editing_done*(cell_editable: PGtkCellEditable){.cdecl,
-    dynlib: gtklib, importc: "gtk_cell_editable_editing_done".}
-proc gtk_cell_editable_remove_widget*(cell_editable: PGtkCellEditable){.cdecl,
-    dynlib: gtklib, importc: "gtk_cell_editable_remove_widget".}
-const
-  GTK_CELL_RENDERER_SELECTED* = 1 shl 0
-  GTK_CELL_RENDERER_PRELIT* = 1 shl 1
-  GTK_CELL_RENDERER_INSENSITIVE* = 1 shl 2
-  GTK_CELL_RENDERER_SORTED* = 1 shl 3
-
-const
-  bm_TGtkCellRenderer_mode* = 0x00000003'i16
+proc TYPE_CELL_EDITABLE*(): GType
+proc CELL_EDITABLE*(obj: pointer): PCellEditable
+proc CELL_EDITABLE_CLASS*(obj: pointer): PCellEditableIface
+proc IS_CELL_EDITABLE*(obj: pointer): bool
+proc CELL_EDITABLE_GET_IFACE*(obj: pointer): PCellEditableIface
+proc cell_editable_get_type*(): GType{.cdecl, dynlib: lib, 
+                                       importc: "gtk_cell_editable_get_type".}
+proc start_editing*(cell_editable: PCellEditable, event: gdk2.PEvent){.
+    cdecl, dynlib: lib, importc: "gtk_cell_editable_start_editing".}
+proc editing_done*(cell_editable: PCellEditable){.cdecl, 
+    dynlib: lib, importc: "gtk_cell_editable_editing_done".}
+proc remove_widget*(cell_editable: PCellEditable){.cdecl, 
+    dynlib: lib, importc: "gtk_cell_editable_remove_widget".}
+const 
+  CELL_RENDERER_SELECTED* = 1 shl 0
+  CELL_RENDERER_PRELIT* = 1 shl 1
+  CELL_RENDERER_INSENSITIVE* = 1 shl 2
+  CELL_RENDERER_SORTED* = 1 shl 3
+
+const 
+  bm_TGtkCellRenderer_mode* = 0x0003'i16
   bp_TGtkCellRenderer_mode* = 0'i16
-  bm_TGtkCellRenderer_visible* = 0x00000004'i16
+  bm_TGtkCellRenderer_visible* = 0x0004'i16
   bp_TGtkCellRenderer_visible* = 2'i16
-  bm_TGtkCellRenderer_is_expander* = 0x00000008'i16
+  bm_TGtkCellRenderer_is_expander* = 0x0008'i16
   bp_TGtkCellRenderer_is_expander* = 3'i16
-  bm_TGtkCellRenderer_is_expanded* = 0x00000010'i16
+  bm_TGtkCellRenderer_is_expanded* = 0x0010'i16
   bp_TGtkCellRenderer_is_expanded* = 4'i16
-  bm_TGtkCellRenderer_cell_background_set* = 0x00000020'i16
+  bm_TGtkCellRenderer_cell_background_set* = 0x0020'i16
   bp_TGtkCellRenderer_cell_background_set* = 5'i16
 
-proc GTK_TYPE_CELL_RENDERER*(): GType
-proc GTK_CELL_RENDERER*(obj: pointer): PGtkCellRenderer
-proc GTK_CELL_RENDERER_CLASS*(klass: pointer): PGtkCellRendererClass
-proc GTK_IS_CELL_RENDERER*(obj: pointer): bool
-proc GTK_IS_CELL_RENDERER_CLASS*(klass: pointer): bool
-proc GTK_CELL_RENDERER_GET_CLASS*(obj: pointer): PGtkCellRendererClass
-proc mode*(a: var TGtkCellRenderer): guint
-proc set_mode*(a: var TGtkCellRenderer, `mode`: guint)
-proc visible*(a: var TGtkCellRenderer): guint
-proc set_visible*(a: var TGtkCellRenderer, `visible`: guint)
-proc is_expander*(a: var TGtkCellRenderer): guint
-proc set_is_expander*(a: var TGtkCellRenderer, `is_expander`: guint)
-proc is_expanded*(a: var TGtkCellRenderer): guint
-proc set_is_expanded*(a: var TGtkCellRenderer, `is_expanded`: guint)
-proc cell_background_set*(a: var TGtkCellRenderer): guint
-proc set_cell_background_set*(a: var TGtkCellRenderer,
-                              `cell_background_set`: guint)
-proc gtk_cell_renderer_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_cell_renderer_get_type".}
-proc gtk_cell_renderer_get_size*(cell: PGtkCellRenderer, widget: PGtkWidget,
-                                 cell_area: PGdkRectangle, x_offset: Pgint,
-                                 y_offset: Pgint, width: Pgint, height: Pgint){.
-    cdecl, dynlib: gtklib, importc: "gtk_cell_renderer_get_size".}
-proc gtk_cell_renderer_render*(cell: PGtkCellRenderer, window: PGdkWindow,
-                               widget: PGtkWidget,
-                               background_area: PGdkRectangle,
-                               cell_area: PGdkRectangle,
-                               expose_area: PGdkRectangle,
-                               flags: TGtkCellRendererState){.cdecl,
-    dynlib: gtklib, importc: "gtk_cell_renderer_render".}
-proc gtk_cell_renderer_activate*(cell: PGtkCellRenderer, event: PGdkEvent,
-                                 widget: PGtkWidget, path: cstring,
-                                 background_area: PGdkRectangle,
-                                 cell_area: PGdkRectangle,
-                                 flags: TGtkCellRendererState): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_cell_renderer_activate".}
-proc gtk_cell_renderer_start_editing*(cell: PGtkCellRenderer, event: PGdkEvent,
-                                      widget: PGtkWidget, path: cstring,
-                                      background_area: PGdkRectangle,
-                                      cell_area: PGdkRectangle,
-                                      flags: TGtkCellRendererState): PGtkCellEditable{.
-    cdecl, dynlib: gtklib, importc: "gtk_cell_renderer_start_editing".}
-proc gtk_cell_renderer_set_fixed_size*(cell: PGtkCellRenderer, width: gint,
-                                       height: gint){.cdecl, dynlib: gtklib,
+proc TYPE_CELL_RENDERER*(): GType
+proc CELL_RENDERER*(obj: pointer): PCellRenderer
+proc CELL_RENDERER_CLASS*(klass: pointer): PCellRendererClass
+proc IS_CELL_RENDERER*(obj: pointer): bool
+proc IS_CELL_RENDERER_CLASS*(klass: pointer): bool
+proc CELL_RENDERER_GET_CLASS*(obj: pointer): PCellRendererClass
+proc mode*(a: var TCellRenderer): guint
+proc set_mode*(a: var TCellRenderer, `mode`: guint)
+proc visible*(a: var TCellRenderer): guint
+proc set_visible*(a: var TCellRenderer, `visible`: guint)
+proc is_expander*(a: var TCellRenderer): guint
+proc set_is_expander*(a: var TCellRenderer, `is_expander`: guint)
+proc is_expanded*(a: var TCellRenderer): guint
+proc set_is_expanded*(a: var TCellRenderer, `is_expanded`: guint)
+proc cell_background_set*(a: var TCellRenderer): guint
+proc set_cell_background_set*(a: var TCellRenderer, `cell_background_set`: guint)
+proc cell_renderer_get_type*(): GType{.cdecl, dynlib: lib, 
+                                       importc: "gtk_cell_renderer_get_type".}
+proc get_size*(cell: PCellRenderer, widget: PWidget, 
+                             cell_area: gdk2.PRectangle, x_offset: Pgint, 
+                             y_offset: Pgint, width: Pgint, height: Pgint){.
+    cdecl, dynlib: lib, importc: "gtk_cell_renderer_get_size".}
+proc render*(cell: PCellRenderer, window: gdk2.PWindow, 
+                           widget: PWidget, background_area: gdk2.PRectangle, 
+                           cell_area: gdk2.PRectangle, expose_area: gdk2.PRectangle, 
+                           flags: TCellRendererState){.cdecl, dynlib: lib, 
+    importc: "gtk_cell_renderer_render".}
+proc activate*(cell: PCellRenderer, event: gdk2.PEvent, 
+                             widget: PWidget, path: cstring, 
+                             background_area: gdk2.PRectangle, 
+                             cell_area: gdk2.PRectangle, flags: TCellRendererState): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_cell_renderer_activate".}
+proc start_editing*(cell: PCellRenderer, event: gdk2.PEvent, 
+                                  widget: PWidget, path: cstring, 
+                                  background_area: gdk2.PRectangle, 
+                                  cell_area: gdk2.PRectangle, 
+                                  flags: TCellRendererState): PCellEditable{.
+    cdecl, dynlib: lib, importc: "gtk_cell_renderer_start_editing".}
+proc set_fixed_size*(cell: PCellRenderer, width: gint, 
+                                   height: gint){.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_set_fixed_size".}
-proc gtk_cell_renderer_get_fixed_size*(cell: PGtkCellRenderer, width: Pgint,
-                                       height: Pgint){.cdecl, dynlib: gtklib,
+proc get_fixed_size*(cell: PCellRenderer, width: Pgint, 
+                                   height: Pgint){.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_get_fixed_size".}
-const
-  bm_TGtkCellRendererText_strikethrough* = 0x00000001'i16
+const 
+  bm_TGtkCellRendererText_strikethrough* = 0x0001'i16
   bp_TGtkCellRendererText_strikethrough* = 0'i16
-  bm_TGtkCellRendererText_editable* = 0x00000002'i16
+  bm_TGtkCellRendererText_editable* = 0x0002'i16
   bp_TGtkCellRendererText_editable* = 1'i16
-  bm_TGtkCellRendererText_scale_set* = 0x00000004'i16
+  bm_TGtkCellRendererText_scale_set* = 0x0004'i16
   bp_TGtkCellRendererText_scale_set* = 2'i16
-  bm_TGtkCellRendererText_foreground_set* = 0x00000008'i16
+  bm_TGtkCellRendererText_foreground_set* = 0x0008'i16
   bp_TGtkCellRendererText_foreground_set* = 3'i16
-  bm_TGtkCellRendererText_background_set* = 0x00000010'i16
+  bm_TGtkCellRendererText_background_set* = 0x0010'i16
   bp_TGtkCellRendererText_background_set* = 4'i16
-  bm_TGtkCellRendererText_underline_set* = 0x00000020'i16
+  bm_TGtkCellRendererText_underline_set* = 0x0020'i16
   bp_TGtkCellRendererText_underline_set* = 5'i16
-  bm_TGtkCellRendererText_rise_set* = 0x00000040'i16
+  bm_TGtkCellRendererText_rise_set* = 0x0040'i16
   bp_TGtkCellRendererText_rise_set* = 6'i16
-  bm_TGtkCellRendererText_strikethrough_set* = 0x00000080'i16
+  bm_TGtkCellRendererText_strikethrough_set* = 0x0080'i16
   bp_TGtkCellRendererText_strikethrough_set* = 7'i16
-  bm_TGtkCellRendererText_editable_set* = 0x00000100'i16
+  bm_TGtkCellRendererText_editable_set* = 0x0100'i16
   bp_TGtkCellRendererText_editable_set* = 8'i16
-  bm_TGtkCellRendererText_calc_fixed_height* = 0x00000200'i16
+  bm_TGtkCellRendererText_calc_fixed_height* = 0x0200'i16
   bp_TGtkCellRendererText_calc_fixed_height* = 9'i16
 
-proc GTK_TYPE_CELL_RENDERER_TEXT*(): GType
-proc GTK_CELL_RENDERER_TEXT*(obj: pointer): PGtkCellRendererText
-proc GTK_CELL_RENDERER_TEXT_CLASS*(klass: pointer): PGtkCellRendererTextClass
-proc GTK_IS_CELL_RENDERER_TEXT*(obj: pointer): bool
-proc GTK_IS_CELL_RENDERER_TEXT_CLASS*(klass: pointer): bool
-proc GTK_CELL_RENDERER_TEXT_GET_CLASS*(obj: pointer): PGtkCellRendererTextClass
-proc strikethrough*(a: var TGtkCellRendererText): guint
-proc set_strikethrough*(a: var TGtkCellRendererText, `strikethrough`: guint)
-proc editable*(a: var TGtkCellRendererText): guint
-proc set_editable*(a: var TGtkCellRendererText, `editable`: guint)
-proc scale_set*(a: var TGtkCellRendererText): guint
-proc set_scale_set*(a: var TGtkCellRendererText, `scale_set`: guint)
-proc foreground_set*(a: var TGtkCellRendererText): guint
-proc set_foreground_set*(a: var TGtkCellRendererText, `foreground_set`: guint)
-proc background_set*(a: var TGtkCellRendererText): guint
-proc set_background_set*(a: var TGtkCellRendererText, `background_set`: guint)
-proc underline_set*(a: var TGtkCellRendererText): guint
-proc set_underline_set*(a: var TGtkCellRendererText, `underline_set`: guint)
-proc rise_set*(a: var TGtkCellRendererText): guint
-proc set_rise_set*(a: var TGtkCellRendererText, `rise_set`: guint)
-proc strikethrough_set*(a: var TGtkCellRendererText): guint
-proc set_strikethrough_set*(a: var TGtkCellRendererText,
-                            `strikethrough_set`: guint)
-proc editable_set*(a: var TGtkCellRendererText): guint
-proc set_editable_set*(a: var TGtkCellRendererText, `editable_set`: guint)
-proc calc_fixed_height*(a: var TGtkCellRendererText): guint
-proc set_calc_fixed_height*(a: var TGtkCellRendererText,
-                            `calc_fixed_height`: guint)
-proc gtk_cell_renderer_text_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_CELL_RENDERER_TEXT*(): GType
+proc CELL_RENDERER_TEXT*(obj: pointer): PCellRendererText
+proc CELL_RENDERER_TEXT_CLASS*(klass: pointer): PCellRendererTextClass
+proc IS_CELL_RENDERER_TEXT*(obj: pointer): bool
+proc IS_CELL_RENDERER_TEXT_CLASS*(klass: pointer): bool
+proc CELL_RENDERER_TEXT_GET_CLASS*(obj: pointer): PCellRendererTextClass
+proc strikethrough*(a: var TCellRendererText): guint
+proc set_strikethrough*(a: var TCellRendererText, `strikethrough`: guint)
+proc editable*(a: var TCellRendererText): guint
+proc set_editable*(a: var TCellRendererText, `editable`: guint)
+proc scale_set*(a: var TCellRendererText): guint
+proc set_scale_set*(a: var TCellRendererText, `scale_set`: guint)
+proc foreground_set*(a: var TCellRendererText): guint
+proc set_foreground_set*(a: var TCellRendererText, `foreground_set`: guint)
+proc background_set*(a: var TCellRendererText): guint
+proc set_background_set*(a: var TCellRendererText, `background_set`: guint)
+proc underline_set*(a: var TCellRendererText): guint
+proc set_underline_set*(a: var TCellRendererText, `underline_set`: guint)
+proc rise_set*(a: var TCellRendererText): guint
+proc set_rise_set*(a: var TCellRendererText, `rise_set`: guint)
+proc strikethrough_set*(a: var TCellRendererText): guint
+proc set_strikethrough_set*(a: var TCellRendererText, `strikethrough_set`: guint)
+proc editable_set*(a: var TCellRendererText): guint
+proc set_editable_set*(a: var TCellRendererText, `editable_set`: guint)
+proc calc_fixed_height*(a: var TCellRendererText): guint
+proc set_calc_fixed_height*(a: var TCellRendererText, `calc_fixed_height`: guint)
+proc cell_renderer_text_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_text_get_type".}
-proc gtk_cell_renderer_text_new*(): PGtkCellRenderer{.cdecl, dynlib: gtklib,
+proc cell_renderer_text_new*(): PCellRenderer{.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_text_new".}
-proc gtk_cell_renderer_text_set_fixed_height_from_font*(
-    renderer: PGtkCellRendererText, number_of_rows: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_cell_renderer_text_set_fixed_height_from_font".}
-const
-  bm_TGtkCellRendererToggle_active* = 0x00000001'i16
+proc text_set_fixed_height_from_font*(renderer: PCellRendererText, 
+    number_of_rows: gint){.cdecl, dynlib: lib, importc: "gtk_cell_renderer_text_set_fixed_height_from_font".}
+const 
+  bm_TGtkCellRendererToggle_active* = 0x0001'i16
   bp_TGtkCellRendererToggle_active* = 0'i16
-  bm_TGtkCellRendererToggle_activatable* = 0x00000002'i16
+  bm_TGtkCellRendererToggle_activatable* = 0x0002'i16
   bp_TGtkCellRendererToggle_activatable* = 1'i16
-  bm_TGtkCellRendererToggle_radio* = 0x00000004'i16
+  bm_TGtkCellRendererToggle_radio* = 0x0004'i16
   bp_TGtkCellRendererToggle_radio* = 2'i16
 
-proc GTK_TYPE_CELL_RENDERER_TOGGLE*(): GType
-proc GTK_CELL_RENDERER_TOGGLE*(obj: pointer): PGtkCellRendererToggle
-proc GTK_CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): PGtkCellRendererToggleClass
-proc GTK_IS_CELL_RENDERER_TOGGLE*(obj: pointer): bool
-proc GTK_IS_CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): bool
-proc GTK_CELL_RENDERER_TOGGLE_GET_CLASS*(obj: pointer): PGtkCellRendererToggleClass
-proc active*(a: var TGtkCellRendererToggle): guint
-proc set_active*(a: var TGtkCellRendererToggle, `active`: guint)
-proc activatable*(a: var TGtkCellRendererToggle): guint
-proc set_activatable*(a: var TGtkCellRendererToggle, `activatable`: guint)
-proc radio*(a: var TGtkCellRendererToggle): guint
-proc set_radio*(a: var TGtkCellRendererToggle, `radio`: guint)
-proc gtk_cell_renderer_toggle_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_CELL_RENDERER_TOGGLE*(): GType
+proc CELL_RENDERER_TOGGLE*(obj: pointer): PCellRendererToggle
+proc CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): PCellRendererToggleClass
+proc IS_CELL_RENDERER_TOGGLE*(obj: pointer): bool
+proc IS_CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): bool
+proc CELL_RENDERER_TOGGLE_GET_CLASS*(obj: pointer): PCellRendererToggleClass
+proc active*(a: var TCellRendererToggle): guint
+proc set_active*(a: var TCellRendererToggle, `active`: guint)
+proc activatable*(a: var TCellRendererToggle): guint
+proc set_activatable*(a: var TCellRendererToggle, `activatable`: guint)
+proc radio*(a: var TCellRendererToggle): guint
+proc set_radio*(a: var TCellRendererToggle, `radio`: guint)
+proc cell_renderer_toggle_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_toggle_get_type".}
-proc gtk_cell_renderer_toggle_new*(): PGtkCellRenderer{.cdecl, dynlib: gtklib,
+proc cell_renderer_toggle_new*(): PCellRenderer{.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_toggle_new".}
-proc gtk_cell_renderer_toggle_get_radio*(toggle: PGtkCellRendererToggle): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_cell_renderer_toggle_get_radio".}
-proc gtk_cell_renderer_toggle_set_radio*(toggle: PGtkCellRendererToggle,
-    radio: gboolean){.cdecl, dynlib: gtklib,
-                      importc: "gtk_cell_renderer_toggle_set_radio".}
-proc gtk_cell_renderer_toggle_get_active*(toggle: PGtkCellRendererToggle): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_cell_renderer_toggle_get_active".}
-proc gtk_cell_renderer_toggle_set_active*(toggle: PGtkCellRendererToggle,
-    setting: gboolean){.cdecl, dynlib: gtklib,
-                        importc: "gtk_cell_renderer_toggle_set_active".}
-proc GTK_TYPE_CELL_RENDERER_PIXBUF*(): GType
-proc GTK_CELL_RENDERER_PIXBUF*(obj: pointer): PGtkCellRendererPixbuf
-proc GTK_CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): PGtkCellRendererPixbufClass
-proc GTK_IS_CELL_RENDERER_PIXBUF*(obj: pointer): bool
-proc GTK_IS_CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): bool
-proc GTK_CELL_RENDERER_PIXBUF_GET_CLASS*(obj: pointer): PGtkCellRendererPixbufClass
-proc gtk_cell_renderer_pixbuf_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc toggle_get_radio*(toggle: PCellRendererToggle): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_cell_renderer_toggle_get_radio".}
+proc toggle_set_radio*(toggle: PCellRendererToggle, 
+                                     radio: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_cell_renderer_toggle_set_radio".}
+proc toggle_get_active*(toggle: PCellRendererToggle): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_cell_renderer_toggle_get_active".}
+proc toggle_set_active*(toggle: PCellRendererToggle, 
+                                      setting: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_cell_renderer_toggle_set_active".}
+proc TYPE_CELL_RENDERER_PIXBUF*(): GType
+proc CELL_RENDERER_PIXBUF*(obj: pointer): PCellRendererPixbuf
+proc CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): PCellRendererPixbufClass
+proc IS_CELL_RENDERER_PIXBUF*(obj: pointer): bool
+proc IS_CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): bool
+proc CELL_RENDERER_PIXBUF_GET_CLASS*(obj: pointer): PCellRendererPixbufClass
+proc cell_renderer_pixbuf_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_pixbuf_get_type".}
-proc gtk_cell_renderer_pixbuf_new*(): PGtkCellRenderer{.cdecl, dynlib: gtklib,
+proc cell_renderer_pixbuf_new*(): PCellRenderer{.cdecl, dynlib: lib, 
     importc: "gtk_cell_renderer_pixbuf_new".}
-proc GTK_TYPE_ITEM*(): GType
-proc GTK_ITEM*(obj: pointer): PGtkItem
-proc GTK_ITEM_CLASS*(klass: pointer): PGtkItemClass
-proc GTK_IS_ITEM*(obj: pointer): bool
-proc GTK_IS_ITEM_CLASS*(klass: pointer): bool
-proc GTK_ITEM_GET_CLASS*(obj: pointer): PGtkItemClass
-proc gtk_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_item_get_type".}
-proc gtk_item_select*(item: PGtkItem){.cdecl, dynlib: gtklib,
-                                       importc: "gtk_item_select".}
-proc gtk_item_deselect*(item: PGtkItem){.cdecl, dynlib: gtklib,
-    importc: "gtk_item_deselect".}
-proc gtk_item_toggle*(item: PGtkItem){.cdecl, dynlib: gtklib,
-                                       importc: "gtk_item_toggle".}
-const
-  bm_TGtkMenuItem_show_submenu_indicator* = 0x00000001'i16
+proc TYPE_ITEM*(): GType
+proc ITEM*(obj: pointer): PItem
+proc ITEM_CLASS*(klass: pointer): PItemClass
+proc IS_ITEM*(obj: pointer): bool
+proc IS_ITEM_CLASS*(klass: pointer): bool
+proc ITEM_GET_CLASS*(obj: pointer): PItemClass
+proc item_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_item_get_type".}
+proc select*(item: PItem){.cdecl, dynlib: lib, importc: "gtk_item_select".}
+proc deselect*(item: PItem){.cdecl, dynlib: lib, 
+                                  importc: "gtk_item_deselect".}
+proc toggle*(item: PItem){.cdecl, dynlib: lib, importc: "gtk_item_toggle".}
+const 
+  bm_TGtkMenuItem_show_submenu_indicator* = 0x0001'i16
   bp_TGtkMenuItem_show_submenu_indicator* = 0'i16
-  bm_TGtkMenuItem_submenu_placement* = 0x00000002'i16
+  bm_TGtkMenuItem_submenu_placement* = 0x0002'i16
   bp_TGtkMenuItem_submenu_placement* = 1'i16
-  bm_TGtkMenuItem_submenu_direction* = 0x00000004'i16
+  bm_TGtkMenuItem_submenu_direction* = 0x0004'i16
   bp_TGtkMenuItem_submenu_direction* = 2'i16
-  bm_TGtkMenuItem_right_justify* = 0x00000008'i16
+  bm_TGtkMenuItem_right_justify* = 0x0008'i16
   bp_TGtkMenuItem_right_justify* = 3'i16
-  bm_TGtkMenuItem_timer_from_keypress* = 0x00000010'i16
+  bm_TGtkMenuItem_timer_from_keypress* = 0x0010'i16
   bp_TGtkMenuItem_timer_from_keypress* = 4'i16
-  bm_TGtkMenuItemClass_hide_on_activate* = 0x00000001'i16
+  bm_TGtkMenuItemClass_hide_on_activate* = 0x0001'i16
   bp_TGtkMenuItemClass_hide_on_activate* = 0'i16
 
-proc GTK_TYPE_MENU_ITEM*(): GType
-proc GTK_MENU_ITEM*(obj: pointer): PGtkMenuItem
-proc GTK_MENU_ITEM_CLASS*(klass: pointer): PGtkMenuItemClass
-proc GTK_IS_MENU_ITEM*(obj: pointer): bool
-proc GTK_IS_MENU_ITEM_CLASS*(klass: pointer): bool
-proc GTK_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkMenuItemClass
-proc show_submenu_indicator*(a: var TGtkMenuItem): guint
-proc set_show_submenu_indicator*(a: var TGtkMenuItem,
+proc TYPE_MENU_ITEM*(): GType
+proc MENU_ITEM*(obj: pointer): PMenuItem
+proc MENU_ITEM_CLASS*(klass: pointer): PMenuItemClass
+proc IS_MENU_ITEM*(obj: pointer): bool
+proc IS_MENU_ITEM_CLASS*(klass: pointer): bool
+proc MENU_ITEM_GET_CLASS*(obj: pointer): PMenuItemClass
+proc show_submenu_indicator*(a: var TMenuItem): guint
+proc set_show_submenu_indicator*(a: var TMenuItem, 
                                  `show_submenu_indicator`: guint)
-proc submenu_placement*(a: var TGtkMenuItem): guint
-proc set_submenu_placement*(a: var TGtkMenuItem, `submenu_placement`: guint)
-proc submenu_direction*(a: var TGtkMenuItem): guint
-proc set_submenu_direction*(a: var TGtkMenuItem, `submenu_direction`: guint)
-proc right_justify*(a: var TGtkMenuItem): guint
-proc set_right_justify*(a: var TGtkMenuItem, `right_justify`: guint)
-proc timer_from_keypress*(a: var TGtkMenuItem): guint
-proc set_timer_from_keypress*(a: var TGtkMenuItem, `timer_from_keypress`: guint)
-proc hide_on_activate*(a: var TGtkMenuItemClass): guint
-proc set_hide_on_activate*(a: var TGtkMenuItemClass, `hide_on_activate`: guint)
-proc gtk_menu_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_menu_item_get_type".}
-proc gtk_menu_item_new*(): PGtkMenuItem {.cdecl, dynlib: gtklib,
-                                       importc: "gtk_menu_item_new".}
-proc gtk_menu_item_new_with_label*(`label`: cstring): PGtkMenuItem {.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_item_new_with_label".}
-proc gtk_menu_item_new_with_mnemonic*(`label`: cstring): PGtkMenuItem {.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_item_new_with_mnemonic".}
-proc gtk_menu_item_set_submenu*(menu_item: PGtkMenuItem, submenu: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_item_set_submenu".}
-proc gtk_menu_item_get_submenu*(menu_item: PGtkMenuItem): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_item_get_submenu".}
-proc gtk_menu_item_remove_submenu*(menu_item: PGtkMenuItem){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_item_remove_submenu".}
-proc gtk_menu_item_select*(menu_item: PGtkMenuItem){.cdecl, dynlib: gtklib,
+proc submenu_placement*(a: var TMenuItem): guint
+proc set_submenu_placement*(a: var TMenuItem, `submenu_placement`: guint)
+proc submenu_direction*(a: var TMenuItem): guint
+proc set_submenu_direction*(a: var TMenuItem, `submenu_direction`: guint)
+proc right_justify*(a: var TMenuItem): guint
+proc set_right_justify*(a: var TMenuItem, `right_justify`: guint)
+proc timer_from_keypress*(a: var TMenuItem): guint
+proc set_timer_from_keypress*(a: var TMenuItem, `timer_from_keypress`: guint)
+proc hide_on_activate*(a: var TMenuItemClass): guint
+proc set_hide_on_activate*(a: var TMenuItemClass, `hide_on_activate`: guint)
+proc menu_item_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_menu_item_get_type".}
+proc menu_item_new*(): PMenuItem{.cdecl, dynlib: lib, 
+                                  importc: "gtk_menu_item_new".}
+proc menu_item_new_with_label*(`label`: cstring): PMenuItem{.cdecl, dynlib: lib, 
+    importc: "gtk_menu_item_new_with_label".}
+proc menu_item_new_with_mnemonic*(`label`: cstring): PMenuItem{.cdecl, 
+    dynlib: lib, importc: "gtk_menu_item_new_with_mnemonic".}
+proc set_submenu*(menu_item: PMenuItem, submenu: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_item_set_submenu".}
+proc get_submenu*(menu_item: PMenuItem): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_menu_item_get_submenu".}
+proc remove_submenu*(menu_item: PMenuItem){.cdecl, dynlib: lib, 
+    importc: "gtk_menu_item_remove_submenu".}
+proc select*(menu_item: PMenuItem){.cdecl, dynlib: lib, 
     importc: "gtk_menu_item_select".}
-proc gtk_menu_item_deselect*(menu_item: PGtkMenuItem){.cdecl, dynlib: gtklib,
+proc deselect*(menu_item: PMenuItem){.cdecl, dynlib: lib, 
     importc: "gtk_menu_item_deselect".}
-proc gtk_menu_item_activate*(menu_item: PGtkMenuItem){.cdecl, dynlib: gtklib,
+proc activate*(menu_item: PMenuItem){.cdecl, dynlib: lib, 
     importc: "gtk_menu_item_activate".}
-proc gtk_menu_item_toggle_size_request*(menu_item: PGtkMenuItem,
-                                        requisition: Pgint){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_item_toggle_size_request".}
-proc gtk_menu_item_toggle_size_allocate*(menu_item: PGtkMenuItem,
-    allocation: gint){.cdecl, dynlib: gtklib,
-                       importc: "gtk_menu_item_toggle_size_allocate".}
-proc gtk_menu_item_set_right_justified*(menu_item: PGtkMenuItem,
-                                        right_justified: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_item_set_right_justified".}
-proc gtk_menu_item_get_right_justified*(menu_item: PGtkMenuItem): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_item_get_right_justified".}
-proc gtk_menu_item_set_accel_path*(menu_item: PGtkMenuItem, accel_path: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_item_set_accel_path".}
-proc gtk_menu_item_refresh_accel_path*(menu_item: PGtkMenuItem,
-    prefix: cstring, accel_group: PGtkAccelGroup, group_changed: gboolean){.
-    cdecl, dynlib: gtklib, importc: "_gtk_menu_item_refresh_accel_path".}
-proc gtk_menu_item_is_selectable*(menu_item: PGtkWidget): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_menu_item_is_selectable".}
-const
-  bm_TGtkToggleButton_active* = 0x00000001'i16
+proc toggle_size_request*(menu_item: PMenuItem, requisition: Pgint){.
+    cdecl, dynlib: lib, importc: "gtk_menu_item_toggle_size_request".}
+proc toggle_size_allocate*(menu_item: PMenuItem, allocation: gint){.
+    cdecl, dynlib: lib, importc: "gtk_menu_item_toggle_size_allocate".}
+proc set_right_justified*(menu_item: PMenuItem, 
+                                    right_justified: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_item_set_right_justified".}
+proc get_right_justified*(menu_item: PMenuItem): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_menu_item_get_right_justified".}
+proc set_accel_path*(menu_item: PMenuItem, accel_path: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_menu_item_set_accel_path".}
+proc refresh_accel_path*(menu_item: PMenuItem, prefix: cstring, 
+                                   accel_group: PAccelGroup, 
+                                   group_changed: gboolean){.cdecl, dynlib: lib, 
+    importc: "_gtk_menu_item_refresh_accel_path".}
+proc menu_item_is_selectable*(menu_item: PWidget): gboolean{.cdecl, dynlib: lib, 
+    importc: "_gtk_menu_item_is_selectable".}
+const 
+  bm_TGtkToggleButton_active* = 0x0001'i16
   bp_TGtkToggleButton_active* = 0'i16
-  bm_TGtkToggleButton_draw_indicator* = 0x00000002'i16
+  bm_TGtkToggleButton_draw_indicator* = 0x0002'i16
   bp_TGtkToggleButton_draw_indicator* = 1'i16
-  bm_TGtkToggleButton_inconsistent* = 0x00000004'i16
+  bm_TGtkToggleButton_inconsistent* = 0x0004'i16
   bp_TGtkToggleButton_inconsistent* = 2'i16
 
-proc GTK_TYPE_TOGGLE_BUTTON*(): GType
-proc GTK_TOGGLE_BUTTON*(obj: pointer): PGtkToggleButton
-proc GTK_TOGGLE_BUTTON_CLASS*(klass: pointer): PGtkToggleButtonClass
-proc GTK_IS_TOGGLE_BUTTON*(obj: pointer): bool
-proc GTK_IS_TOGGLE_BUTTON_CLASS*(klass: pointer): bool
-proc GTK_TOGGLE_BUTTON_GET_CLASS*(obj: pointer): PGtkToggleButtonClass
-proc active*(a: var TGtkToggleButton): guint
-proc set_active*(a: var TGtkToggleButton, `active`: guint)
-proc draw_indicator*(a: var TGtkToggleButton): guint
-proc set_draw_indicator*(a: var TGtkToggleButton, `draw_indicator`: guint)
-proc inconsistent*(a: var TGtkToggleButton): guint
-proc set_inconsistent*(a: var TGtkToggleButton, `inconsistent`: guint)
-proc gtk_toggle_button_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_toggle_button_get_type".}
-proc gtk_toggle_button_new*(): PGtkToggleButton {.cdecl, dynlib: gtklib,
+proc TYPE_TOGGLE_BUTTON*(): GType
+proc TOGGLE_BUTTON*(obj: pointer): PToggleButton
+proc TOGGLE_BUTTON_CLASS*(klass: pointer): PToggleButtonClass
+proc IS_TOGGLE_BUTTON*(obj: pointer): bool
+proc IS_TOGGLE_BUTTON_CLASS*(klass: pointer): bool
+proc TOGGLE_BUTTON_GET_CLASS*(obj: pointer): PToggleButtonClass
+proc active*(a: var TToggleButton): guint
+proc set_active*(a: var TToggleButton, `active`: guint)
+proc draw_indicator*(a: var TToggleButton): guint
+proc set_draw_indicator*(a: var TToggleButton, `draw_indicator`: guint)
+proc inconsistent*(a: var TToggleButton): guint
+proc set_inconsistent*(a: var TToggleButton, `inconsistent`: guint)
+proc toggle_button_get_type*(): TType{.cdecl, dynlib: lib, 
+                                       importc: "gtk_toggle_button_get_type".}
+proc toggle_button_new*(): PToggleButton{.cdecl, dynlib: lib, 
     importc: "gtk_toggle_button_new".}
-proc gtk_toggle_button_new_with_label*(`label`: cstring): PGtkToggleButton {.cdecl,
-    dynlib: gtklib, importc: "gtk_toggle_button_new_with_label".}
-proc gtk_toggle_button_new_with_mnemonic*(`label`: cstring): PGtkToggleButton {.cdecl,
-    dynlib: gtklib, importc: "gtk_toggle_button_new_with_mnemonic".}
-proc gtk_toggle_button_set_mode*(toggle_button: PGtkToggleButton,
-                                 draw_indicator: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_toggle_button_set_mode".}
-proc gtk_toggle_button_get_mode*(toggle_button: PGtkToggleButton): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_toggle_button_get_mode".}
-proc gtk_toggle_button_set_active*(toggle_button: PGtkToggleButton,
-                                   is_active: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_toggle_button_set_active".}
-proc gtk_toggle_button_get_active*(toggle_button: PGtkToggleButton): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_toggle_button_get_active".}
-proc gtk_toggle_button_toggled*(toggle_button: PGtkToggleButton){.cdecl,
-    dynlib: gtklib, importc: "gtk_toggle_button_toggled".}
-proc gtk_toggle_button_set_inconsistent*(toggle_button: PGtkToggleButton,
-    setting: gboolean){.cdecl, dynlib: gtklib,
-                        importc: "gtk_toggle_button_set_inconsistent".}
-proc gtk_toggle_button_get_inconsistent*(toggle_button: PGtkToggleButton): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_toggle_button_get_inconsistent".}
-proc GTK_TYPE_CHECK_BUTTON*(): GType
-proc GTK_CHECK_BUTTON*(obj: pointer): PGtkCheckButton
-proc GTK_CHECK_BUTTON_CLASS*(klass: pointer): PGtkCheckButtonClass
-proc GTK_IS_CHECK_BUTTON*(obj: pointer): bool
-proc GTK_IS_CHECK_BUTTON_CLASS*(klass: pointer): bool
-proc GTK_CHECK_BUTTON_GET_CLASS*(obj: pointer): PGtkCheckButtonClass
-proc gtk_check_button_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_check_button_get_type".}
-proc gtk_check_button_new*(): PGtkCheckButton{.cdecl, dynlib: gtklib,
-    importc: "gtk_check_button_new".}
-proc gtk_check_button_new_with_label*(`label`: cstring): PGtkCheckButton{.cdecl,
-    dynlib: gtklib, importc: "gtk_check_button_new_with_label".}
-proc gtk_check_button_new_with_mnemonic*(`label`: cstring): PGtkCheckButton {.cdecl,
-    dynlib: gtklib, importc: "gtk_check_button_new_with_mnemonic".}
-proc gtk_check_button_get_props*(check_button: PGtkCheckButton,
-                                   indicator_size: Pgint,
-                                   indicator_spacing: Pgint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_check_button_get_props".}
-const
-  bm_TGtkCheckMenuItem_active* = 0x00000001'i16
+proc toggle_button_new_with_label*(`label`: cstring): PToggleButton{.cdecl, 
+    dynlib: lib, importc: "gtk_toggle_button_new_with_label".}
+proc toggle_button_new_with_mnemonic*(`label`: cstring): PToggleButton{.cdecl, 
+    dynlib: lib, importc: "gtk_toggle_button_new_with_mnemonic".}
+proc set_mode*(toggle_button: PToggleButton, 
+                             draw_indicator: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_toggle_button_set_mode".}
+proc get_mode*(toggle_button: PToggleButton): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_toggle_button_get_mode".}
+proc set_active*(toggle_button: PToggleButton, is_active: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_toggle_button_set_active".}
+proc get_active*(toggle_button: PToggleButton): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_toggle_button_get_active".}
+proc toggled*(toggle_button: PToggleButton){.cdecl, dynlib: lib, 
+    importc: "gtk_toggle_button_toggled".}
+proc set_inconsistent*(toggle_button: PToggleButton, 
+                                     setting: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_toggle_button_set_inconsistent".}
+proc get_inconsistent*(toggle_button: PToggleButton): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_toggle_button_get_inconsistent".}
+proc TYPE_CHECK_BUTTON*(): GType
+proc CHECK_BUTTON*(obj: pointer): PCheckButton
+proc CHECK_BUTTON_CLASS*(klass: pointer): PCheckButtonClass
+proc IS_CHECK_BUTTON*(obj: pointer): bool
+proc IS_CHECK_BUTTON_CLASS*(klass: pointer): bool
+proc CHECK_BUTTON_GET_CLASS*(obj: pointer): PCheckButtonClass
+proc check_button_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_check_button_get_type".}
+proc check_button_new*(): PCheckButton{.cdecl, dynlib: lib, 
+                                        importc: "gtk_check_button_new".}
+proc check_button_new_with_label*(`label`: cstring): PCheckButton{.cdecl, 
+    dynlib: lib, importc: "gtk_check_button_new_with_label".}
+proc check_button_new_with_mnemonic*(`label`: cstring): PCheckButton{.cdecl, 
+    dynlib: lib, importc: "gtk_check_button_new_with_mnemonic".}
+proc get_props*(check_button: PCheckButton, indicator_size: Pgint, 
+                             indicator_spacing: Pgint){.cdecl, dynlib: lib, 
+    importc: "_gtk_check_button_get_props".}
+const 
+  bm_TGtkCheckMenuItem_active* = 0x0001'i16
   bp_TGtkCheckMenuItem_active* = 0'i16
-  bm_TGtkCheckMenuItem_always_show_toggle* = 0x00000002'i16
+  bm_TGtkCheckMenuItem_always_show_toggle* = 0x0002'i16
   bp_TGtkCheckMenuItem_always_show_toggle* = 1'i16
-  bm_TGtkCheckMenuItem_inconsistent* = 0x00000004'i16
+  bm_TGtkCheckMenuItem_inconsistent* = 0x0004'i16
   bp_TGtkCheckMenuItem_inconsistent* = 2'i16
 
-proc GTK_TYPE_CHECK_MENU_ITEM*(): GType
-proc GTK_CHECK_MENU_ITEM*(obj: pointer): PGtkCheckMenuItem
-proc GTK_CHECK_MENU_ITEM_CLASS*(klass: pointer): PGtkCheckMenuItemClass
-proc GTK_IS_CHECK_MENU_ITEM*(obj: pointer): bool
-proc GTK_IS_CHECK_MENU_ITEM_CLASS*(klass: pointer): bool
-proc GTK_CHECK_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkCheckMenuItemClass
-proc active*(a: var TGtkCheckMenuItem): guint
-proc set_active*(a: var TGtkCheckMenuItem, `active`: guint)
-proc always_show_toggle*(a: var TGtkCheckMenuItem): guint
-proc set_always_show_toggle*(a: var TGtkCheckMenuItem,
-                             `always_show_toggle`: guint)
-proc inconsistent*(a: var TGtkCheckMenuItem): guint
-proc set_inconsistent*(a: var TGtkCheckMenuItem, `inconsistent`: guint)
-proc gtk_check_menu_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_CHECK_MENU_ITEM*(): GType
+proc CHECK_MENU_ITEM*(obj: pointer): PCheckMenuItem
+proc CHECK_MENU_ITEM_CLASS*(klass: pointer): PCheckMenuItemClass
+proc IS_CHECK_MENU_ITEM*(obj: pointer): bool
+proc IS_CHECK_MENU_ITEM_CLASS*(klass: pointer): bool
+proc CHECK_MENU_ITEM_GET_CLASS*(obj: pointer): PCheckMenuItemClass
+proc active*(a: var TCheckMenuItem): guint
+proc set_active*(a: var TCheckMenuItem, `active`: guint)
+proc always_show_toggle*(a: var TCheckMenuItem): guint
+proc set_always_show_toggle*(a: var TCheckMenuItem, `always_show_toggle`: guint)
+proc inconsistent*(a: var TCheckMenuItem): guint
+proc set_inconsistent*(a: var TCheckMenuItem, `inconsistent`: guint)
+proc check_menu_item_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_check_menu_item_get_type".}
-proc gtk_check_menu_item_new*(): PGtkWidget{.cdecl, dynlib: gtklib,
-    importc: "gtk_check_menu_item_new".}
-proc gtk_check_menu_item_new_with_label*(`label`: cstring): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_check_menu_item_new_with_label".}
-proc gtk_check_menu_item_new_with_mnemonic*(`label`: cstring): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_check_menu_item_new_with_mnemonic".}
-proc gtk_check_menu_item_set_active*(check_menu_item: PGtkCheckMenuItem,
-                                     is_active: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_check_menu_item_set_active".}
-proc gtk_check_menu_item_get_active*(check_menu_item: PGtkCheckMenuItem): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_check_menu_item_get_active".}
-proc gtk_check_menu_item_toggled*(check_menu_item: PGtkCheckMenuItem){.cdecl,
-    dynlib: gtklib, importc: "gtk_check_menu_item_toggled".}
-proc gtk_check_menu_item_set_inconsistent*(check_menu_item: PGtkCheckMenuItem,
-    setting: gboolean){.cdecl, dynlib: gtklib,
-                        importc: "gtk_check_menu_item_set_inconsistent".}
-proc gtk_check_menu_item_get_inconsistent*(check_menu_item: PGtkCheckMenuItem): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_check_menu_item_get_inconsistent".}
-proc gtk_clipboard_get_for_display*(display: PGdkDisplay, selection: TGdkAtom): PGtkClipboard{.
-    cdecl, dynlib: gtklib, importc: "gtk_clipboard_get_for_display".}
-proc gtk_clipboard_get_display*(clipboard: PGtkClipboard): PGdkDisplay{.cdecl,
-    dynlib: gtklib, importc: "gtk_clipboard_get_display".}
-proc gtk_clipboard_set_with_data*(clipboard: PGtkClipboard,
-                                  targets: PGtkTargetEntry, n_targets: guint,
-                                  get_func: TGtkClipboardGetFunc,
-                                  clear_func: TGtkClipboardClearFunc,
-                                  user_data: gpointer): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_clipboard_set_with_data".}
-proc gtk_clipboard_set_with_owner*(clipboard: PGtkClipboard,
-                                   targets: PGtkTargetEntry, n_targets: guint,
-                                   get_func: TGtkClipboardGetFunc,
-                                   clear_func: TGtkClipboardClearFunc,
-                                   owner: PGObject): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_clipboard_set_with_owner".}
-proc gtk_clipboard_get_owner*(clipboard: PGtkClipboard): PGObject{.cdecl,
-    dynlib: gtklib, importc: "gtk_clipboard_get_owner".}
-proc gtk_clipboard_clear*(clipboard: PGtkClipboard){.cdecl, dynlib: gtklib,
+proc check_menu_item_new*(): PWidget{.cdecl, dynlib: lib, 
+                                      importc: "gtk_check_menu_item_new".}
+proc check_menu_item_new_with_label*(`label`: cstring): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_check_menu_item_new_with_label".}
+proc check_menu_item_new_with_mnemonic*(`label`: cstring): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_check_menu_item_new_with_mnemonic".}
+proc item_set_active*(check_menu_item: PCheckMenuItem, 
+                                 is_active: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_check_menu_item_set_active".}
+proc item_get_active*(check_menu_item: PCheckMenuItem): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_check_menu_item_get_active".}
+proc item_toggled*(check_menu_item: PCheckMenuItem){.cdecl, 
+    dynlib: lib, importc: "gtk_check_menu_item_toggled".}
+proc item_set_inconsistent*(check_menu_item: PCheckMenuItem, 
+                                       setting: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_check_menu_item_set_inconsistent".}
+proc item_get_inconsistent*(check_menu_item: PCheckMenuItem): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_check_menu_item_get_inconsistent".}
+proc clipboard_get_for_display*(display: gdk2.PDisplay, selection: gdk2.TAtom): PClipboard{.
+    cdecl, dynlib: lib, importc: "gtk_clipboard_get_for_display".}
+proc get_display*(clipboard: PClipboard): gdk2.PDisplay{.cdecl, 
+    dynlib: lib, importc: "gtk_clipboard_get_display".}
+proc set_with_data*(clipboard: PClipboard, targets: PTargetEntry, 
+                              n_targets: guint, get_func: TClipboardGetFunc, 
+                              clear_func: TClipboardClearFunc, 
+                              user_data: gpointer): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_clipboard_set_with_data".}
+proc set_with_owner*(clipboard: PClipboard, targets: PTargetEntry, 
+                               n_targets: guint, get_func: TClipboardGetFunc, 
+                               clear_func: TClipboardClearFunc, owner: PGObject): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_clipboard_set_with_owner".}
+proc get_owner*(clipboard: PClipboard): PGObject{.cdecl, dynlib: lib, 
+    importc: "gtk_clipboard_get_owner".}
+proc clear*(clipboard: PClipboard){.cdecl, dynlib: lib, 
     importc: "gtk_clipboard_clear".}
-proc gtk_clipboard_set_text*(clipboard: PGtkClipboard, text: cstring, len: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_clipboard_set_text".}
-proc gtk_clipboard_request_contents*(clipboard: PGtkClipboard, target: TGdkAtom,
-                                     callback: TGtkClipboardReceivedFunc,
-                                     user_data: gpointer){.cdecl,
-    dynlib: gtklib, importc: "gtk_clipboard_request_contents".}
-proc gtk_clipboard_request_text*(clipboard: PGtkClipboard,
-                                 callback: TGtkClipboardTextReceivedFunc,
-                                 user_data: gpointer){.cdecl, dynlib: gtklib,
+proc set_text*(clipboard: PClipboard, text: cstring, len: gint){.
+    cdecl, dynlib: lib, importc: "gtk_clipboard_set_text".}
+proc request_contents*(clipboard: PClipboard, target: gdk2.TAtom, 
+                                 callback: TClipboardReceivedFunc, 
+                                 user_data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gtk_clipboard_request_contents".}
+proc request_text*(clipboard: PClipboard, 
+                             callback: TClipboardTextReceivedFunc, 
+                             user_data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_clipboard_request_text".}
-proc gtk_clipboard_wait_for_contents*(clipboard: PGtkClipboard, target: TGdkAtom): PGtkSelectionData{.
-    cdecl, dynlib: gtklib, importc: "gtk_clipboard_wait_for_contents".}
-proc gtk_clipboard_wait_for_text*(clipboard: PGtkClipboard): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_clipboard_wait_for_text".}
-proc gtk_clipboard_wait_is_text_available*(clipboard: PGtkClipboard): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_clipboard_wait_is_text_available".}
-const
-  GTK_CLIST_IN_DRAG* = 1 shl 0
-  GTK_CLIST_ROW_HEIGHT_SET* = 1 shl 1
-  GTK_CLIST_SHOW_TITLES* = 1 shl 2
-  GTK_CLIST_ADD_MODE* = 1 shl 4
-  GTK_CLIST_AUTO_SORT* = 1 shl 5
-  GTK_CLIST_AUTO_RESIZE_BLOCKED* = 1 shl 6
-  GTK_CLIST_REORDERABLE* = 1 shl 7
-  GTK_CLIST_USE_DRAG_ICONS* = 1 shl 8
-  GTK_CLIST_DRAW_DRAG_LINE* = 1 shl 9
-  GTK_CLIST_DRAW_DRAG_RECT* = 1 shl 10
-  GTK_BUTTON_IGNORED* = 0
-  GTK_BUTTON_SELECTS* = 1 shl 0
-  GTK_BUTTON_DRAGS* = 1 shl 1
-  GTK_BUTTON_EXPANDS* = 1 shl 2
-
-const
-  bm_TGtkCListColumn_visible* = 0x00000001'i16
+proc wait_for_contents*(clipboard: PClipboard, target: gdk2.TAtom): PSelectionData{.
+    cdecl, dynlib: lib, importc: "gtk_clipboard_wait_for_contents".}
+proc wait_for_text*(clipboard: PClipboard): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_clipboard_wait_for_text".}
+proc wait_is_text_available*(clipboard: PClipboard): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_clipboard_wait_is_text_available".}
+const 
+  CLIST_IN_DRAG* = 1 shl 0
+  CLIST_ROW_HEIGHT_SET* = 1 shl 1
+  CLIST_SHOW_TITLES* = 1 shl 2
+  CLIST_ADD_MODE* = 1 shl 4
+  CLIST_AUTO_SORT* = 1 shl 5
+  CLIST_AUTO_RESIZE_BLOCKED* = 1 shl 6
+  CLIST_REORDERABLE* = 1 shl 7
+  CLIST_USE_DRAG_ICONS* = 1 shl 8
+  CLIST_DRAW_DRAG_LINE* = 1 shl 9
+  CLIST_DRAW_DRAG_RECT* = 1 shl 10
+  BUTTON_IGNORED* = 0
+  BUTTON_SELECTS* = 1 shl 0
+  BUTTON_DRAGS* = 1 shl 1
+  BUTTON_EXPANDS* = 1 shl 2
+
+const 
+  bm_TGtkCListColumn_visible* = 0x0001'i16
   bp_TGtkCListColumn_visible* = 0'i16
-  bm_TGtkCListColumn_width_set* = 0x00000002'i16
+  bm_TGtkCListColumn_width_set* = 0x0002'i16
   bp_TGtkCListColumn_width_set* = 1'i16
-  bm_TGtkCListColumn_resizeable* = 0x00000004'i16
+  bm_TGtkCListColumn_resizeable* = 0x0004'i16
   bp_TGtkCListColumn_resizeable* = 2'i16
-  bm_TGtkCListColumn_auto_resize* = 0x00000008'i16
+  bm_TGtkCListColumn_auto_resize* = 0x0008'i16
   bp_TGtkCListColumn_auto_resize* = 3'i16
-  bm_TGtkCListColumn_button_passive* = 0x00000010'i16
+  bm_TGtkCListColumn_button_passive* = 0x0010'i16
   bp_TGtkCListColumn_button_passive* = 4'i16
-  bm_TGtkCListRow_fg_set* = 0x00000001'i16
+  bm_TGtkCListRow_fg_set* = 0x0001'i16
   bp_TGtkCListRow_fg_set* = 0'i16
-  bm_TGtkCListRow_bg_set* = 0x00000002'i16
+  bm_TGtkCListRow_bg_set* = 0x0002'i16
   bp_TGtkCListRow_bg_set* = 1'i16
-  bm_TGtkCListRow_selectable* = 0x00000004'i16
+  bm_TGtkCListRow_selectable* = 0x0004'i16
   bp_TGtkCListRow_selectable* = 2'i16
 
-proc GTK_TYPE_CLIST*(): GType
-proc GTK_CLIST*(obj: pointer): PGtkCList
-proc GTK_CLIST_CLASS*(klass: pointer): PGtkCListClass
-proc GTK_IS_CLIST*(obj: pointer): bool
-proc GTK_IS_CLIST_CLASS*(klass: pointer): bool
-proc GTK_CLIST_GET_CLASS*(obj: pointer): PGtkCListClass
-proc GTK_CLIST_FLAGS*(clist: pointer): guint16
-proc GTK_CLIST_SET_FLAG*(clist: PGtkCList, flag: guint16)
-proc GTK_CLIST_UNSET_FLAG*(clist: PGtkCList, flag: guint16)
+proc TYPE_CLIST*(): GType
+proc CLIST*(obj: pointer): PCList
+proc CLIST_CLASS*(klass: pointer): PCListClass
+proc IS_CLIST*(obj: pointer): bool
+proc IS_CLIST_CLASS*(klass: pointer): bool
+proc CLIST_GET_CLASS*(obj: pointer): PCListClass
+proc CLIST_FLAGS*(clist: pointer): guint16
+proc SET_FLAG*(clist: PCList, flag: guint16)
+proc UNSET_FLAG*(clist: PCList, flag: guint16)
 #proc GTK_CLIST_IN_DRAG_get*(clist: pointer): bool
 #proc GTK_CLIST_ROW_HEIGHT_SET_get*(clist: pointer): bool
 #proc GTK_CLIST_SHOW_TITLES_get*(clist: pointer): bool
@@ -5382,3237 +5203,3082 @@ proc GTK_CLIST_UNSET_FLAG*(clist: PGtkCList, flag: guint16)
 #proc GTK_CELL_PIXMAP_get*(cell: pointer): PGtkCellPixmap
 #proc GTK_CELL_PIXTEXT_get*(cell: pointer): PGtkCellPixText
 #proc GTK_CELL_WIDGET_get*(cell: pointer): PGtkCellWidget
-proc visible*(a: var TGtkCListColumn): guint
-proc set_visible*(a: var TGtkCListColumn, `visible`: guint)
-proc width_set*(a: var TGtkCListColumn): guint
-proc set_width_set*(a: var TGtkCListColumn, `width_set`: guint)
-proc resizeable*(a: var TGtkCListColumn): guint
-proc set_resizeable*(a: var TGtkCListColumn, `resizeable`: guint)
-proc auto_resize*(a: var TGtkCListColumn): guint
-proc set_auto_resize*(a: var TGtkCListColumn, `auto_resize`: guint)
-proc button_passive*(a: var TGtkCListColumn): guint
-proc set_button_passive*(a: var TGtkCListColumn, `button_passive`: guint)
-proc fg_set*(a: var TGtkCListRow): guint
-proc set_fg_set*(a: var TGtkCListRow, `fg_set`: guint)
-proc bg_set*(a: var TGtkCListRow): guint
-proc set_bg_set*(a: var TGtkCListRow, `bg_set`: guint)
-proc selectable*(a: var TGtkCListRow): guint
-proc set_selectable*(a: var TGtkCListRow, `selectable`: guint)
-proc gtk_clist_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_clist_get_type".}
-proc gtk_clist_new*(columns: gint): PGtkCList {.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_new".}
-proc gtk_clist_set_hadjustment*(clist: PGtkCList, adjustment: PGtkAdjustment){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_hadjustment".}
-proc gtk_clist_set_vadjustment*(clist: PGtkCList, adjustment: PGtkAdjustment){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_vadjustment".}
-proc gtk_clist_get_hadjustment*(clist: PGtkCList): PGtkAdjustment{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_hadjustment".}
-proc gtk_clist_get_vadjustment*(clist: PGtkCList): PGtkAdjustment{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_vadjustment".}
-proc gtk_clist_set_shadow_type*(clist: PGtkCList, thetype: TGtkShadowType){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_shadow_type".}
-proc gtk_clist_set_selection_mode*(clist: PGtkCList, mode: TGtkSelectionMode){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_selection_mode".}
-proc gtk_clist_set_reorderable*(clist: PGtkCList, reorderable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_reorderable".}
-proc gtk_clist_set_use_drag_icons*(clist: PGtkCList, use_icons: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_use_drag_icons".}
-proc gtk_clist_set_button_actions*(clist: PGtkCList, button: guint,
-                                   button_actions: guint8){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_button_actions".}
-proc gtk_clist_freeze*(clist: PGtkCList){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_freeze".}
-proc gtk_clist_thaw*(clist: PGtkCList){.cdecl, dynlib: gtklib,
-                                        importc: "gtk_clist_thaw".}
-proc gtk_clist_column_titles_show*(clist: PGtkCList){.cdecl, dynlib: gtklib,
+
+proc visible*(a: var TCListColumn): guint
+proc set_visible*(a: var TCListColumn, `visible`: guint)
+proc width_set*(a: var TCListColumn): guint
+proc set_width_set*(a: var TCListColumn, `width_set`: guint)
+proc resizeable*(a: var TCListColumn): guint
+proc set_resizeable*(a: var TCListColumn, `resizeable`: guint)
+proc auto_resize*(a: var TCListColumn): guint
+proc set_auto_resize*(a: var TCListColumn, `auto_resize`: guint)
+proc button_passive*(a: var TCListColumn): guint
+proc set_button_passive*(a: var TCListColumn, `button_passive`: guint)
+proc fg_set*(a: var TCListRow): guint
+proc set_fg_set*(a: var TCListRow, `fg_set`: guint)
+proc bg_set*(a: var TCListRow): guint
+proc set_bg_set*(a: var TCListRow, `bg_set`: guint)
+proc selectable*(a: var TCListRow): guint
+proc set_selectable*(a: var TCListRow, `selectable`: guint)
+proc clist_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_clist_get_type".}
+proc clist_new*(columns: gint): PCList{.cdecl, dynlib: lib, 
+                                        importc: "gtk_clist_new".}
+proc set_hadjustment*(clist: PCList, adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_hadjustment".}
+proc set_vadjustment*(clist: PCList, adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_vadjustment".}
+proc get_hadjustment*(clist: PCList): PAdjustment{.cdecl, dynlib: lib, 
+    importc: "gtk_clist_get_hadjustment".}
+proc get_vadjustment*(clist: PCList): PAdjustment{.cdecl, dynlib: lib, 
+    importc: "gtk_clist_get_vadjustment".}
+proc set_shadow_type*(clist: PCList, thetype: TShadowType){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_shadow_type".}
+proc set_selection_mode*(clist: PCList, mode: TSelectionMode){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_selection_mode".}
+proc set_reorderable*(clist: PCList, reorderable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_reorderable".}
+proc set_use_drag_icons*(clist: PCList, use_icons: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_use_drag_icons".}
+proc set_button_actions*(clist: PCList, button: guint, 
+                               button_actions: guint8){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_button_actions".}
+proc freeze*(clist: PCList){.cdecl, dynlib: lib, 
+                                   importc: "gtk_clist_freeze".}
+proc thaw*(clist: PCList){.cdecl, dynlib: lib, importc: "gtk_clist_thaw".}
+proc column_titles_show*(clist: PCList){.cdecl, dynlib: lib, 
     importc: "gtk_clist_column_titles_show".}
-proc gtk_clist_column_titles_hide*(clist: PGtkCList){.cdecl, dynlib: gtklib,
+proc column_titles_hide*(clist: PCList){.cdecl, dynlib: lib, 
     importc: "gtk_clist_column_titles_hide".}
-proc gtk_clist_column_title_active*(clist: PGtkCList, column: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_column_title_active".}
-proc gtk_clist_column_title_passive*(clist: PGtkCList, column: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_column_title_passive".}
-proc gtk_clist_column_titles_active*(clist: PGtkCList){.cdecl, dynlib: gtklib,
+proc column_title_active*(clist: PCList, column: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_column_title_active".}
+proc column_title_passive*(clist: PCList, column: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_column_title_passive".}
+proc column_titles_active*(clist: PCList){.cdecl, dynlib: lib, 
     importc: "gtk_clist_column_titles_active".}
-proc gtk_clist_column_titles_passive*(clist: PGtkCList){.cdecl, dynlib: gtklib,
+proc column_titles_passive*(clist: PCList){.cdecl, dynlib: lib, 
     importc: "gtk_clist_column_titles_passive".}
-proc gtk_clist_set_column_title*(clist: PGtkCList, column: gint, title: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_column_title".}
-proc gtk_clist_get_column_title*(clist: PGtkCList, column: gint): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_column_title".}
-proc gtk_clist_set_column_widget*(clist: PGtkCList, column: gint,
-                                  widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_set_column_widget".}
-proc gtk_clist_get_column_widget*(clist: PGtkCList, column: gint): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_get_column_widget".}
-proc gtk_clist_set_column_justification*(clist: PGtkCList, column: gint,
-    justification: TGtkJustification){.cdecl, dynlib: gtklib, importc: "gtk_clist_set_column_justification".}
-proc gtk_clist_set_column_visibility*(clist: PGtkCList, column: gint,
-                                      visible: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_set_column_visibility".}
-proc gtk_clist_set_column_resizeable*(clist: PGtkCList, column: gint,
-                                      resizeable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_column_resizeable".}
-proc gtk_clist_set_column_auto_resize*(clist: PGtkCList, column: gint,
-                                       auto_resize: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_column_auto_resize".}
-proc gtk_clist_columns_autosize*(clist: PGtkCList): gint{.cdecl, dynlib: gtklib,
+proc set_column_title*(clist: PCList, column: gint, title: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_column_title".}
+proc get_column_title*(clist: PCList, column: gint): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_get_column_title".}
+proc set_column_widget*(clist: PCList, column: gint, widget: PWidget){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_column_widget".}
+proc get_column_widget*(clist: PCList, column: gint): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_get_column_widget".}
+proc set_column_justification*(clist: PCList, column: gint, 
+                                     justification: TJustification){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_column_justification".}
+proc set_column_visibility*(clist: PCList, column: gint, visible: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_column_visibility".}
+proc set_column_resizeable*(clist: PCList, column: gint, 
+                                  resizeable: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_column_resizeable".}
+proc set_column_auto_resize*(clist: PCList, column: gint, 
+                                   auto_resize: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_column_auto_resize".}
+proc columns_autosize*(clist: PCList): gint{.cdecl, dynlib: lib, 
     importc: "gtk_clist_columns_autosize".}
-proc gtk_clist_optimal_column_width*(clist: PGtkCList, column: gint): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_optimal_column_width".}
-proc gtk_clist_set_column_width*(clist: PGtkCList, column: gint, width: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_column_width".}
-proc gtk_clist_set_column_min_width*(clist: PGtkCList, column: gint,
-                                     min_width: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_set_column_min_width".}
-proc gtk_clist_set_column_max_width*(clist: PGtkCList, column: gint,
-                                     max_width: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_set_column_max_width".}
-proc gtk_clist_set_row_height*(clist: PGtkCList, height: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_row_height".}
-proc gtk_clist_moveto*(clist: PGtkCList, row: gint, column: gint,
-                       row_align: gfloat, col_align: gfloat){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_moveto".}
-proc gtk_clist_row_is_visible*(clist: PGtkCList, row: gint): TGtkVisibility{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_row_is_visible".}
-proc gtk_clist_get_cell_type*(clist: PGtkCList, row: gint, column: gint): TGtkCellType{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_get_cell_type".}
-proc gtk_clist_set_text*(clist: PGtkCList, row: gint, column: gint, text: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_text".}
-proc gtk_clist_get_text*(clist: PGtkCList, row: gint, column: gint,
-                         text: PPgchar): gint{.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_get_text".}
-proc gtk_clist_set_pixmap*(clist: PGtkCList, row: gint, column: gint,
-                           pixmap: PGdkPixmap, mask: PGdkBitmap){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_pixmap".}
-proc gtk_clist_get_pixmap*(clist: PGtkCList, row: gint, column: gint,
-                           pixmap: var PGdkPixmap, mask: var PGdkBitmap): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_get_pixmap".}
-proc gtk_clist_set_pixtext*(clist: PGtkCList, row: gint, column: gint,
-                            text: cstring, spacing: guint8, pixmap: PGdkPixmap,
-                            mask: PGdkBitmap){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_set_pixtext".}
-proc gtk_clist_set_foreground*(clist: PGtkCList, row: gint, color: PGdkColor){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_foreground".}
-proc gtk_clist_set_background*(clist: PGtkCList, row: gint, color: PGdkColor){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_background".}
-proc gtk_clist_set_cell_style*(clist: PGtkCList, row: gint, column: gint,
-                               style: PGtkStyle){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_set_cell_style".}
-proc gtk_clist_get_cell_style*(clist: PGtkCList, row: gint, column: gint): PGtkStyle{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_get_cell_style".}
-proc gtk_clist_set_row_style*(clist: PGtkCList, row: gint, style: PGtkStyle){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_row_style".}
-proc gtk_clist_get_row_style*(clist: PGtkCList, row: gint): PGtkStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_row_style".}
-proc gtk_clist_set_shift*(clist: PGtkCList, row: gint, column: gint,
-                          vertical: gint, horizontal: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_shift".}
-proc gtk_clist_set_selectable*(clist: PGtkCList, row: gint, selectable: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_selectable".}
-proc gtk_clist_get_selectable*(clist: PGtkCList, row: gint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_selectable".}
-proc gtk_clist_remove*(clist: PGtkCList, row: gint){.cdecl, dynlib: gtklib,
+proc optimal_column_width*(clist: PCList, column: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_optimal_column_width".}
+proc set_column_width*(clist: PCList, column: gint, width: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_column_width".}
+proc set_column_min_width*(clist: PCList, column: gint, min_width: gint){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_column_min_width".}
+proc set_column_max_width*(clist: PCList, column: gint, max_width: gint){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_column_max_width".}
+proc set_row_height*(clist: PCList, height: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_row_height".}
+proc moveto*(clist: PCList, row: gint, column: gint, row_align: gfloat, 
+                   col_align: gfloat){.cdecl, dynlib: lib, 
+                                       importc: "gtk_clist_moveto".}
+proc row_is_visible*(clist: PCList, row: gint): TVisibility{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_row_is_visible".}
+proc get_cell_type*(clist: PCList, row: gint, column: gint): TCellType{.
+    cdecl, dynlib: lib, importc: "gtk_clist_get_cell_type".}
+proc set_text*(clist: PCList, row: gint, column: gint, text: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_text".}
+proc get_text*(clist: PCList, row: gint, column: gint, text: PPgchar): gint{.
+    cdecl, dynlib: lib, importc: "gtk_clist_get_text".}
+proc set_pixmap*(clist: PCList, row: gint, column: gint, 
+                       pixmap: gdk2.PPixmap, mask: gdk2.PBitmap){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_pixmap".}
+proc get_pixmap*(clist: PCList, row: gint, column: gint, 
+                       pixmap: var gdk2.PPixmap, mask: var gdk2.PBitmap): gint{.
+    cdecl, dynlib: lib, importc: "gtk_clist_get_pixmap".}
+proc set_pixtext*(clist: PCList, row: gint, column: gint, text: cstring, 
+                        spacing: guint8, pixmap: gdk2.PPixmap, mask: gdk2.PBitmap){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_pixtext".}
+proc set_foreground*(clist: PCList, row: gint, color: gdk2.PColor){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_foreground".}
+proc set_background*(clist: PCList, row: gint, color: gdk2.PColor){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_background".}
+proc set_cell_style*(clist: PCList, row: gint, column: gint, style: PStyle){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_cell_style".}
+proc get_cell_style*(clist: PCList, row: gint, column: gint): PStyle{.
+    cdecl, dynlib: lib, importc: "gtk_clist_get_cell_style".}
+proc set_row_style*(clist: PCList, row: gint, style: PStyle){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_row_style".}
+proc get_row_style*(clist: PCList, row: gint): PStyle{.cdecl, dynlib: lib, 
+    importc: "gtk_clist_get_row_style".}
+proc set_shift*(clist: PCList, row: gint, column: gint, vertical: gint, 
+                      horizontal: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_shift".}
+proc set_selectable*(clist: PCList, row: gint, selectable: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_clist_set_selectable".}
+proc get_selectable*(clist: PCList, row: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_get_selectable".}
+proc remove*(clist: PCList, row: gint){.cdecl, dynlib: lib, 
     importc: "gtk_clist_remove".}
-proc gtk_clist_set_row_data*(clist: PGtkCList, row: gint, data: gpointer){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_set_row_data".}
-proc gtk_clist_set_row_data_full*(clist: PGtkCList, row: gint, data: gpointer,
-                                  destroy: TGtkDestroyNotify){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_row_data_full".}
-proc gtk_clist_get_row_data*(clist: PGtkCList, row: gint): gpointer{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_row_data".}
-proc gtk_clist_find_row_from_data*(clist: PGtkCList, data: gpointer): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_find_row_from_data".}
-proc gtk_clist_select_row*(clist: PGtkCList, row: gint, column: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_select_row".}
-proc gtk_clist_unselect_row*(clist: PGtkCList, row: gint, column: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_unselect_row".}
-proc gtk_clist_undo_selection*(clist: PGtkCList){.cdecl, dynlib: gtklib,
+proc set_row_data*(clist: PCList, row: gint, data: gpointer){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_row_data".}
+proc set_row_data_full*(clist: PCList, row: gint, data: gpointer, 
+                              destroy: TDestroyNotify){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_row_data_full".}
+proc get_row_data*(clist: PCList, row: gint): gpointer{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_get_row_data".}
+proc find_row_from_data*(clist: PCList, data: gpointer): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_clist_find_row_from_data".}
+proc select_row*(clist: PCList, row: gint, column: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_select_row".}
+proc unselect_row*(clist: PCList, row: gint, column: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_unselect_row".}
+proc undo_selection*(clist: PCList){.cdecl, dynlib: lib, 
     importc: "gtk_clist_undo_selection".}
-proc gtk_clist_clear*(clist: PGtkCList){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_clear".}
-proc gtk_clist_get_selection_info*(clist: PGtkCList, x: gint, y: gint,
-                                   row: Pgint, column: Pgint): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_get_selection_info".}
-proc gtk_clist_select_all*(clist: PGtkCList){.cdecl, dynlib: gtklib,
-    importc: "gtk_clist_select_all".}
-proc gtk_clist_unselect_all*(clist: PGtkCList){.cdecl, dynlib: gtklib,
+proc clear*(clist: PCList){.cdecl, dynlib: lib, importc: "gtk_clist_clear".}
+proc get_selection_info*(clist: PCList, x: gint, y: gint, row: Pgint, 
+                               column: Pgint): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_clist_get_selection_info".}
+proc select_all*(clist: PCList){.cdecl, dynlib: lib, 
+                                       importc: "gtk_clist_select_all".}
+proc unselect_all*(clist: PCList){.cdecl, dynlib: lib, 
     importc: "gtk_clist_unselect_all".}
-proc gtk_clist_swap_rows*(clist: PGtkCList, row1: gint, row2: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_swap_rows".}
-proc gtk_clist_row_move*(clist: PGtkCList, source_row: gint, dest_row: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_clist_row_move".}
-proc gtk_clist_set_compare_func*(clist: PGtkCList,
-                                 cmp_func: TGtkCListCompareFunc){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_compare_func".}
-proc gtk_clist_set_sort_column*(clist: PGtkCList, column: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_sort_column".}
-proc gtk_clist_set_sort_type*(clist: PGtkCList, sort_type: TGtkSortType){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_sort_type".}
-proc gtk_clist_sort*(clist: PGtkCList){.cdecl, dynlib: gtklib,
-                                        importc: "gtk_clist_sort".}
-proc gtk_clist_set_auto_sort*(clist: PGtkCList, auto_sort: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_clist_set_auto_sort".}
-proc gtk_clist_create_cell_layout*(clist: PGtkCList, clist_row: PGtkCListRow,
-                                     column: gint): PPangoLayout{.cdecl,
-    dynlib: gtklib, importc: "_gtk_clist_create_cell_layout".}
-const
-  GTK_DIALOG_MODAL* = 1 shl 0
-  GTK_DIALOG_DESTROY_WITH_PARENT* = 1 shl 1
-  GTK_DIALOG_NO_SEPARATOR* = 1 shl 2
-  GTK_RESPONSE_NONE* = - (1)
-  GTK_RESPONSE_REJECT* = - (2)
-  GTK_RESPONSE_ACCEPT* = - (3)
-  GTK_RESPONSE_DELETE_EVENT* = - (4)
-  GTK_RESPONSE_OK* = - (5)
-  GTK_RESPONSE_CANCEL* = - (6)
-  GTK_RESPONSE_CLOSE* = - (7)
-  GTK_RESPONSE_YES* = - (8)
-  GTK_RESPONSE_NO* = - (9)
-  GTK_RESPONSE_APPLY* = - (10)
-  GTK_RESPONSE_HELP* = - (11)
-
-proc GTK_TYPE_DIALOG*(): GType
-proc GTK_DIALOG*(obj: pointer): PGtkDialog
-proc GTK_DIALOG_CLASS*(klass: pointer): PGtkDialogClass
-proc GTK_IS_DIALOG*(obj: pointer): bool
-proc GTK_IS_DIALOG_CLASS*(klass: pointer): bool
-proc GTK_DIALOG_GET_CLASS*(obj: pointer): PGtkDialogClass
-proc gtk_dialog_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_dialog_get_type".}
-proc gtk_dialog_new*(): PGtkDialog {.cdecl, dynlib: gtklib,
-                                    importc: "gtk_dialog_new".}
-proc gtk_dialog_add_action_widget*(dialog: PGtkDialog, child: PGtkWidget,
-                                   response_id: gint){.cdecl, dynlib: gtklib,
+proc swap_rows*(clist: PCList, row1: gint, row2: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_swap_rows".}
+proc row_move*(clist: PCList, source_row: gint, dest_row: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_row_move".}
+proc set_compare_func*(clist: PCList, cmp_func: TCListCompareFunc){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_compare_func".}
+proc set_sort_column*(clist: PCList, column: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_clist_set_sort_column".}
+proc set_sort_type*(clist: PCList, sort_type: TSortType){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_sort_type".}
+proc sort*(clist: PCList){.cdecl, dynlib: lib, importc: "gtk_clist_sort".}
+proc set_auto_sort*(clist: PCList, auto_sort: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_clist_set_auto_sort".}
+proc create_cell_layout*(clist: PCList, clist_row: PCListRow, column: gint): pango.PLayout{.
+    cdecl, dynlib: lib, importc: "_gtk_clist_create_cell_layout".}
+const 
+  DIALOG_MODAL* = 1 shl 0
+  DIALOG_DESTROY_WITH_PARENT* = 1 shl 1
+  DIALOG_NO_SEPARATOR* = 1 shl 2
+  RESPONSE_NONE* = - (1)
+  RESPONSE_REJECT* = - (2)
+  RESPONSE_ACCEPT* = - (3)
+  RESPONSE_DELETE_EVENT* = - (4)
+  RESPONSE_OK* = - (5)
+  RESPONSE_CANCEL* = - (6)
+  RESPONSE_CLOSE* = - (7)
+  RESPONSE_YES* = - (8)
+  RESPONSE_NO* = - (9)
+  RESPONSE_APPLY* = - (10)
+  RESPONSE_HELP* = - (11)
+
+proc TYPE_DIALOG*(): GType
+proc DIALOG*(obj: pointer): PDialog
+proc DIALOG_CLASS*(klass: pointer): PDialogClass
+proc IS_DIALOG*(obj: pointer): bool
+proc IS_DIALOG_CLASS*(klass: pointer): bool
+proc DIALOG_GET_CLASS*(obj: pointer): PDialogClass
+proc dialog_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_dialog_get_type".}
+proc dialog_new*(): PDialog{.cdecl, dynlib: lib, importc: "gtk_dialog_new".}
+proc add_action_widget*(dialog: PDialog, child: PWidget, 
+                               response_id: gint){.cdecl, dynlib: lib, 
     importc: "gtk_dialog_add_action_widget".}
-proc gtk_dialog_add_button*(dialog: PGtkDialog, button_text: cstring,
-                            response_id: gint): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_dialog_add_button".}
-proc gtk_dialog_set_response_sensitive*(dialog: PGtkDialog, response_id: gint,
-                                        setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_dialog_set_response_sensitive".}
-proc gtk_dialog_set_default_response*(dialog: PGtkDialog, response_id: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_dialog_set_default_response".}
-proc gtk_dialog_set_has_separator*(dialog: PGtkDialog, setting: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_dialog_set_has_separator".}
-proc gtk_dialog_get_has_separator*(dialog: PGtkDialog): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_dialog_get_has_separator".}
-proc gtk_dialog_response*(dialog: PGtkDialog, response_id: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_dialog_response".}
-proc gtk_dialog_run*(dialog: PGtkDialog): gint{.cdecl, dynlib: gtklib,
+proc add_button*(dialog: PDialog, button_text: cstring, response_id: gint): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_dialog_add_button".}
+proc set_response_sensitive*(dialog: PDialog, response_id: gint, 
+                                    setting: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_dialog_set_response_sensitive".}
+proc set_default_response*(dialog: PDialog, response_id: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_dialog_set_default_response".}
+proc set_has_separator*(dialog: PDialog, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_dialog_set_has_separator".}
+proc get_has_separator*(dialog: PDialog): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_dialog_get_has_separator".}
+proc response*(dialog: PDialog, response_id: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_dialog_response".}
+proc run*(dialog: PDialog): gint{.cdecl, dynlib: lib, 
     importc: "gtk_dialog_run".}
-proc gtk_show_about_dialog*(parent: PGtkWindow, firstPropertyName: cstring) {.
-    cdecl, dynlib: gtklib, importc: "gtk_show_about_dialog", varargs.}
-    
-proc GTK_TYPE_VBOX*(): GType
-proc GTK_VBOX*(obj: pointer): PGtkVBox
-proc GTK_VBOX_CLASS*(klass: pointer): PGtkVBoxClass
-proc GTK_IS_VBOX*(obj: pointer): bool
-proc GTK_IS_VBOX_CLASS*(klass: pointer): bool
-proc GTK_VBOX_GET_CLASS*(obj: pointer): PGtkVBoxClass
-proc gtk_vbox_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_vbox_get_type".}
-proc gtk_vbox_new*(homogeneous: gboolean, spacing: gint): PGtkVBox {.cdecl,
-    dynlib: gtklib, importc: "gtk_vbox_new".}
-proc GTK_TYPE_COLOR_SELECTION*(): GType
-proc GTK_COLOR_SELECTION*(obj: pointer): PGtkColorSelection
-proc GTK_COLOR_SELECTION_CLASS*(klass: pointer): PGtkColorSelectionClass
-proc GTK_IS_COLOR_SELECTION*(obj: pointer): bool
-proc GTK_IS_COLOR_SELECTION_CLASS*(klass: pointer): bool
-proc GTK_COLOR_SELECTION_GET_CLASS*(obj: pointer): PGtkColorSelectionClass
-proc gtk_color_selection_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc show_about_dialog*(parent: PWindow, firstPropertyName: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_show_about_dialog", varargs.}
+proc TYPE_VBOX*(): GType
+proc VBOX*(obj: pointer): PVBox
+proc VBOX_CLASS*(klass: pointer): PVBoxClass
+proc IS_VBOX*(obj: pointer): bool
+proc IS_VBOX_CLASS*(klass: pointer): bool
+proc VBOX_GET_CLASS*(obj: pointer): PVBoxClass
+proc vbox_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_vbox_get_type".}
+proc vbox_new*(homogeneous: gboolean, spacing: gint): PVBox{.cdecl, dynlib: lib, 
+    importc: "gtk_vbox_new".}
+proc TYPE_COLOR_SELECTION*(): GType
+proc COLOR_SELECTION*(obj: pointer): PColorSelection
+proc COLOR_SELECTION_CLASS*(klass: pointer): PColorSelectionClass
+proc IS_COLOR_SELECTION*(obj: pointer): bool
+proc IS_COLOR_SELECTION_CLASS*(klass: pointer): bool
+proc COLOR_SELECTION_GET_CLASS*(obj: pointer): PColorSelectionClass
+proc color_selection_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_color_selection_get_type".}
-proc gtk_color_selection_new*(): PGtkColorSelection {.cdecl, dynlib: gtklib,
+proc color_selection_new*(): PColorSelection{.cdecl, dynlib: lib, 
     importc: "gtk_color_selection_new".}
-proc gtk_color_selection_get_has_opacity_control*(colorsel: PGtkColorSelection): gboolean{.
-    cdecl, dynlib: gtklib,
-    importc: "gtk_color_selection_get_has_opacity_control".}
-proc gtk_color_selection_set_has_opacity_control*(colorsel: PGtkColorSelection,
-    has_opacity: gboolean){.cdecl, dynlib: gtklib, importc: "gtk_color_selection_set_has_opacity_control".}
-proc gtk_color_selection_get_has_palette*(colorsel: PGtkColorSelection): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_color_selection_get_has_palette".}
-proc gtk_color_selection_set_has_palette*(colorsel: PGtkColorSelection,
-    has_palette: gboolean){.cdecl, dynlib: gtklib,
-                            importc: "gtk_color_selection_set_has_palette".}
-proc gtk_color_selection_set_current_color*(colorsel: PGtkColorSelection,
-    color: PGdkColor){.cdecl, dynlib: gtklib,
-                       importc: "gtk_color_selection_set_current_color".}
-proc gtk_color_selection_set_current_alpha*(colorsel: PGtkColorSelection,
-    alpha: guint16){.cdecl, dynlib: gtklib,
-                     importc: "gtk_color_selection_set_current_alpha".}
-proc gtk_color_selection_get_current_color*(colorsel: PGtkColorSelection,
-    color: PGdkColor){.cdecl, dynlib: gtklib,
-                       importc: "gtk_color_selection_get_current_color".}
-proc gtk_color_selection_get_current_alpha*(colorsel: PGtkColorSelection): guint16{.
-    cdecl, dynlib: gtklib, importc: "gtk_color_selection_get_current_alpha".}
-proc gtk_color_selection_set_previous_color*(colorsel: PGtkColorSelection,
-    color: PGdkColor){.cdecl, dynlib: gtklib,
+proc get_has_opacity_control*(colorsel: PColorSelection): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_color_selection_get_has_opacity_control".}
+proc set_has_opacity_control*(colorsel: PColorSelection, 
+    has_opacity: gboolean){.cdecl, dynlib: lib, importc: "gtk_color_selection_set_has_opacity_control".}
+proc get_has_palette*(colorsel: PColorSelection): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_color_selection_get_has_palette".}
+proc set_has_palette*(colorsel: PColorSelection, 
+                                      has_palette: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_color_selection_set_has_palette".}
+proc set_current_color*(colorsel: PColorSelection, 
+                                        color: gdk2.PColor){.cdecl, dynlib: lib, 
+    importc: "gtk_color_selection_set_current_color".}
+proc set_current_alpha*(colorsel: PColorSelection, 
+                                        alpha: guint16){.cdecl, dynlib: lib, 
+    importc: "gtk_color_selection_set_current_alpha".}
+proc get_current_color*(colorsel: PColorSelection, 
+                                        color: gdk2.PColor){.cdecl, dynlib: lib, 
+    importc: "gtk_color_selection_get_current_color".}
+proc get_current_alpha*(colorsel: PColorSelection): guint16{.
+    cdecl, dynlib: lib, importc: "gtk_color_selection_get_current_alpha".}
+proc set_previous_color*(colorsel: PColorSelection, 
+    color: gdk2.PColor){.cdecl, dynlib: lib, 
                        importc: "gtk_color_selection_set_previous_color".}
-proc gtk_color_selection_set_previous_alpha*(colorsel: PGtkColorSelection,
-    alpha: guint16){.cdecl, dynlib: gtklib,
+proc set_previous_alpha*(colorsel: PColorSelection, 
+    alpha: guint16){.cdecl, dynlib: lib, 
                      importc: "gtk_color_selection_set_previous_alpha".}
-proc gtk_color_selection_get_previous_color*(colorsel: PGtkColorSelection,
-    color: PGdkColor){.cdecl, dynlib: gtklib,
+proc get_previous_color*(colorsel: PColorSelection, 
+    color: gdk2.PColor){.cdecl, dynlib: lib, 
                        importc: "gtk_color_selection_get_previous_color".}
-proc gtk_color_selection_get_previous_alpha*(colorsel: PGtkColorSelection): guint16{.
-    cdecl, dynlib: gtklib, importc: "gtk_color_selection_get_previous_alpha".}
-proc gtk_color_selection_is_adjusting*(colorsel: PGtkColorSelection): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_color_selection_is_adjusting".}
-proc gtk_color_selection_palette_from_string*(str: cstring,
-    colors: var PGdkColor, n_colors: Pgint): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_color_selection_palette_from_string".}
-proc gtk_color_selection_palette_to_string*(colors: PGdkColor, n_colors: gint): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_color_selection_palette_to_string".}
-proc gtk_color_selection_set_change_palette_with_screen_hook*(
-    func: TGtkColorSelectionChangePaletteWithScreenFunc): TGtkColorSelectionChangePaletteWithScreenFunc{.
-    cdecl, dynlib: gtklib,
+proc get_previous_alpha*(colorsel: PColorSelection): guint16{.
+    cdecl, dynlib: lib, importc: "gtk_color_selection_get_previous_alpha".}
+proc is_adjusting*(colorsel: PColorSelection): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_color_selection_is_adjusting".}
+proc color_selection_palette_from_string*(str: cstring, colors: var gdk2.PColor, 
+    n_colors: Pgint): gboolean{.cdecl, dynlib: lib, importc: "gtk_color_selection_palette_from_string".}
+proc color_selection_palette_to_string*(colors: gdk2.PColor, n_colors: gint): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_color_selection_palette_to_string".}
+proc color_selection_set_change_palette_with_screen_hook*(
+    func: TColorSelectionChangePaletteWithScreenFunc): TColorSelectionChangePaletteWithScreenFunc{.
+    cdecl, dynlib: lib, 
     importc: "gtk_color_selection_set_change_palette_with_screen_hook".}
-proc GTK_TYPE_COLOR_SELECTION_DIALOG*(): GType
-proc GTK_COLOR_SELECTION_DIALOG*(obj: pointer): PGtkColorSelectionDialog
-proc GTK_COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): PGtkColorSelectionDialogClass
-proc GTK_IS_COLOR_SELECTION_DIALOG*(obj: pointer): bool
-proc GTK_IS_COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): bool
-proc GTK_COLOR_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PGtkColorSelectionDialogClass
-proc gtk_color_selection_dialog_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_COLOR_SELECTION_DIALOG*(): GType
+proc COLOR_SELECTION_DIALOG*(obj: pointer): PColorSelectionDialog
+proc COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): PColorSelectionDialogClass
+proc IS_COLOR_SELECTION_DIALOG*(obj: pointer): bool
+proc IS_COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): bool
+proc COLOR_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PColorSelectionDialogClass
+proc color_selection_dialog_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_color_selection_dialog_get_type".}
-proc gtk_color_selection_dialog_new*(title: cstring): PGtkColorSelectionDialog {.cdecl,
-    dynlib: gtklib, importc: "gtk_color_selection_dialog_new".}
-proc GTK_TYPE_HBOX*(): GType
-proc GTK_HBOX*(obj: pointer): PGtkHBox
-proc GTK_HBOX_CLASS*(klass: pointer): PGtkHBoxClass
-proc GTK_IS_HBOX*(obj: pointer): bool
-proc GTK_IS_HBOX_CLASS*(klass: pointer): bool
-proc GTK_HBOX_GET_CLASS*(obj: pointer): PGtkHBoxClass
-proc gtk_hbox_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_hbox_get_type".}
-proc gtk_hbox_new*(homogeneous: gboolean, spacing: gint): PGtkHBox {.cdecl,
-    dynlib: gtklib, importc: "gtk_hbox_new".}
-const
-  bm_TGtkCombo_value_in_list* = 0x00000001'i16
+proc color_selection_dialog_new*(title: cstring): PColorSelectionDialog{.cdecl, 
+    dynlib: lib, importc: "gtk_color_selection_dialog_new".}
+proc TYPE_HBOX*(): GType
+proc HBOX*(obj: pointer): PHBox
+proc HBOX_CLASS*(klass: pointer): PHBoxClass
+proc IS_HBOX*(obj: pointer): bool
+proc IS_HBOX_CLASS*(klass: pointer): bool
+proc HBOX_GET_CLASS*(obj: pointer): PHBoxClass
+proc hbox_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_hbox_get_type".}
+proc hbox_new*(homogeneous: gboolean, spacing: gint): PHBox{.cdecl, dynlib: lib, 
+    importc: "gtk_hbox_new".}
+const 
+  bm_TGtkCombo_value_in_list* = 0x0001'i16
   bp_TGtkCombo_value_in_list* = 0'i16
-  bm_TGtkCombo_ok_if_empty* = 0x00000002'i16
+  bm_TGtkCombo_ok_if_empty* = 0x0002'i16
   bp_TGtkCombo_ok_if_empty* = 1'i16
-  bm_TGtkCombo_case_sensitive* = 0x00000004'i16
+  bm_TGtkCombo_case_sensitive* = 0x0004'i16
   bp_TGtkCombo_case_sensitive* = 2'i16
-  bm_TGtkCombo_use_arrows* = 0x00000008'i16
+  bm_TGtkCombo_use_arrows* = 0x0008'i16
   bp_TGtkCombo_use_arrows* = 3'i16
-  bm_TGtkCombo_use_arrows_always* = 0x00000010'i16
+  bm_TGtkCombo_use_arrows_always* = 0x0010'i16
   bp_TGtkCombo_use_arrows_always* = 4'i16
 
-proc GTK_TYPE_COMBO*(): GType
-proc GTK_COMBO*(obj: pointer): PGtkCombo
-proc GTK_COMBO_CLASS*(klass: pointer): PGtkComboClass
-proc GTK_IS_COMBO*(obj: pointer): bool
-proc GTK_IS_COMBO_CLASS*(klass: pointer): bool
-proc GTK_COMBO_GET_CLASS*(obj: pointer): PGtkComboClass
-proc value_in_list*(a: var TGtkCombo): guint
-proc set_value_in_list*(a: var TGtkCombo, `value_in_list`: guint)
-proc ok_if_empty*(a: var TGtkCombo): guint
-proc set_ok_if_empty*(a: var TGtkCombo, `ok_if_empty`: guint)
-proc case_sensitive*(a: var TGtkCombo): guint
-proc set_case_sensitive*(a: var TGtkCombo, `case_sensitive`: guint)
-proc use_arrows*(a: var TGtkCombo): guint
-proc set_use_arrows*(a: var TGtkCombo, `use_arrows`: guint)
-proc use_arrows_always*(a: var TGtkCombo): guint
-proc set_use_arrows_always*(a: var TGtkCombo, `use_arrows_always`: guint)
-proc gtk_combo_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_combo_get_type".}
-proc gtk_combo_new*(): PGtkCombo {.cdecl, dynlib: gtklib,
-                                   importc: "gtk_combo_new".}
-proc gtk_combo_set_value_in_list*(combo: PGtkCombo, val: gboolean,
-                                  ok_if_empty: gboolean){.cdecl, dynlib: gtklib,
+proc TYPE_COMBO*(): GType
+proc COMBO*(obj: pointer): PCombo
+proc COMBO_CLASS*(klass: pointer): PComboClass
+proc IS_COMBO*(obj: pointer): bool
+proc IS_COMBO_CLASS*(klass: pointer): bool
+proc COMBO_GET_CLASS*(obj: pointer): PComboClass
+proc value_in_list*(a: var TCombo): guint
+proc set_value_in_list*(a: var TCombo, `value_in_list`: guint)
+proc ok_if_empty*(a: var TCombo): guint
+proc set_ok_if_empty*(a: var TCombo, `ok_if_empty`: guint)
+proc case_sensitive*(a: var TCombo): guint
+proc set_case_sensitive*(a: var TCombo, `case_sensitive`: guint)
+proc use_arrows*(a: var TCombo): guint
+proc set_use_arrows*(a: var TCombo, `use_arrows`: guint)
+proc use_arrows_always*(a: var TCombo): guint
+proc set_use_arrows_always*(a: var TCombo, `use_arrows_always`: guint)
+proc combo_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_combo_get_type".}
+proc combo_new*(): PCombo{.cdecl, dynlib: lib, importc: "gtk_combo_new".}
+proc set_value_in_list*(combo: PCombo, val: gboolean, 
+                              ok_if_empty: gboolean){.cdecl, dynlib: lib, 
     importc: "gtk_combo_set_value_in_list".}
-proc gtk_combo_set_use_arrows*(combo: PGtkCombo, val: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_combo_set_use_arrows".}
-proc gtk_combo_set_use_arrows_always*(combo: PGtkCombo, val: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_combo_set_use_arrows_always".}
-proc gtk_combo_set_case_sensitive*(combo: PGtkCombo, val: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_combo_set_case_sensitive".}
-proc gtk_combo_set_item_string*(combo: PGtkCombo, item: PGtkItem,
-                                item_value: cstring){.cdecl, dynlib: gtklib,
-    importc: "gtk_combo_set_item_string".}
-proc gtk_combo_set_popdown_strings*(combo: PGtkCombo, strings: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_combo_set_popdown_strings".}
-proc gtk_combo_disable_activate*(combo: PGtkCombo){.cdecl, dynlib: gtklib,
+proc set_use_arrows*(combo: PCombo, val: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_combo_set_use_arrows".}
+proc set_use_arrows_always*(combo: PCombo, val: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_combo_set_use_arrows_always".}
+proc set_case_sensitive*(combo: PCombo, val: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_combo_set_case_sensitive".}
+proc set_item_string*(combo: PCombo, item: PItem, item_value: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_combo_set_item_string".}
+proc set_popdown_strings*(combo: PCombo, strings: PGList){.cdecl, 
+    dynlib: lib, importc: "gtk_combo_set_popdown_strings".}
+proc disable_activate*(combo: PCombo){.cdecl, dynlib: lib, 
     importc: "gtk_combo_disable_activate".}
-const
-  bm_TGtkCTree_line_style* = 0x00000003'i16
+const 
+  bm_TGtkCTree_line_style* = 0x0003'i16
   bp_TGtkCTree_line_style* = 0'i16
-  bm_TGtkCTree_expander_style* = 0x0000000C'i16
+  bm_TGtkCTree_expander_style* = 0x000C'i16
   bp_TGtkCTree_expander_style* = 2'i16
-  bm_TGtkCTree_show_stub* = 0x00000010'i16
+  bm_TGtkCTree_show_stub* = 0x0010'i16
   bp_TGtkCTree_show_stub* = 4'i16
-  bm_TGtkCTreeRow_is_leaf* = 0x00000001'i16
+  bm_TGtkCTreeRow_is_leaf* = 0x0001'i16
   bp_TGtkCTreeRow_is_leaf* = 0'i16
-  bm_TGtkCTreeRow_expanded* = 0x00000002'i16
+  bm_TGtkCTreeRow_expanded* = 0x0002'i16
   bp_TGtkCTreeRow_expanded* = 1'i16
 
-proc GTK_TYPE_CTREE*(): GType
-proc GTK_CTREE*(obj: pointer): PGtkCTree
-proc GTK_CTREE_CLASS*(klass: pointer): PGtkCTreeClass
-proc GTK_IS_CTREE*(obj: pointer): bool
-proc GTK_IS_CTREE_CLASS*(klass: pointer): bool
-proc GTK_CTREE_GET_CLASS*(obj: pointer): PGtkCTreeClass
-proc GTK_CTREE_ROW*(`node`: TAddress): PGtkCTreeRow
-proc GTK_CTREE_NODE*(`node`: TAddress): PGtkCTreeNode
-proc GTK_CTREE_NODE_NEXT*(`nnode`: TAddress): PGtkCTreeNode
-proc GTK_CTREE_NODE_PREV*(`pnode`: TAddress): PGtkCTreeNode
-proc GTK_CTREE_FUNC*(`func`: TAddress): TGtkCTreeFunc
-proc GTK_TYPE_CTREE_NODE*(): GType
-proc line_style*(a: var TGtkCTree): guint
-proc set_line_style*(a: var TGtkCTree, `line_style`: guint)
-proc expander_style*(a: var TGtkCTree): guint
-proc set_expander_style*(a: var TGtkCTree, `expander_style`: guint)
-proc show_stub*(a: var TGtkCTree): guint
-proc set_show_stub*(a: var TGtkCTree, `show_stub`: guint)
-proc is_leaf*(a: var TGtkCTreeRow): guint
-proc set_is_leaf*(a: var TGtkCTreeRow, `is_leaf`: guint)
-proc expanded*(a: var TGtkCTreeRow): guint
-proc set_expanded*(a: var TGtkCTreeRow, `expanded`: guint)
-proc gtk_ctree_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_ctree_get_type".}
-proc gtk_ctree_new*(columns: gint, tree_column: gint): PGtkCTree {.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_new".}
-proc gtk_ctree_insert_node*(ctree: PGtkCTree, parent: PGtkCTreeNode,
-                            sibling: PGtkCTreeNode, text: openarray[cstring],
-                            spacing: guint8, pixmap_closed: PGdkPixmap,
-                            mask_closed: PGdkBitmap, pixmap_opened: PGdkPixmap,
-                            mask_opened: PGdkBitmap, is_leaf: gboolean,
-                            expanded: gboolean): PGtkCTreeNode{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_insert_node".}
-proc gtk_ctree_remove_node*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_remove_node".}
-proc gtk_ctree_insert_gnode*(ctree: PGtkCTree, parent: PGtkCTreeNode,
-                             sibling: PGtkCTreeNode, gnode: PGNode,
-                             fun: TGtkCTreeGNodeFunc, data: gpointer): PGtkCTreeNode{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_insert_gnode".}
-proc gtk_ctree_export_to_gnode*(ctree: PGtkCTree, parent: PGNode,
-                                sibling: PGNode, node: PGtkCTreeNode,
-                                fun: TGtkCTreeGNodeFunc, data: gpointer): PGNode{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_export_to_gnode".}
-proc gtk_ctree_post_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                               fun: TGtkCTreeFunc, data: gpointer){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_post_recursive".}
-proc gtk_ctree_post_recursive_to_depth*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                        depth: gint, fun: TGtkCTreeFunc,
-                                        data: gpointer){.cdecl, dynlib: gtklib,
+proc TYPE_CTREE*(): GType
+proc CTREE*(obj: pointer): PCTree
+proc CTREE_CLASS*(klass: pointer): PCTreeClass
+proc IS_CTREE*(obj: pointer): bool
+proc IS_CTREE_CLASS*(klass: pointer): bool
+proc CTREE_GET_CLASS*(obj: pointer): PCTreeClass
+proc CTREE_ROW*(node: TAddress): PCTreeRow
+proc CTREE_NODE*(node: TAddress): PCTreeNode
+proc CTREE_NODE_NEXT*(nnode: TAddress): PCTreeNode
+proc CTREE_NODE_PREV*(pnode: TAddress): PCTreeNode
+proc CTREE_FUNC*(fun: TAddress): TCTreeFunc
+proc TYPE_CTREE_NODE*(): GType
+proc line_style*(a: var TCTree): guint
+proc set_line_style*(a: var TCTree, `line_style`: guint)
+proc expander_style*(a: var TCTree): guint
+proc set_expander_style*(a: var TCTree, `expander_style`: guint)
+proc show_stub*(a: var TCTree): guint
+proc set_show_stub*(a: var TCTree, `show_stub`: guint)
+proc is_leaf*(a: var TCTreeRow): guint
+proc set_is_leaf*(a: var TCTreeRow, `is_leaf`: guint)
+proc expanded*(a: var TCTreeRow): guint
+proc set_expanded*(a: var TCTreeRow, `expanded`: guint)
+proc ctree_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_ctree_get_type".}
+proc ctree_new*(columns: gint, tree_column: gint): PCTree{.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_new".}
+proc insert_node*(ctree: PCTree, parent: PCTreeNode, sibling: PCTreeNode, 
+                        text: openarray[cstring], spacing: guint8, 
+                        pixmap_closed: gdk2.PPixmap, mask_closed: gdk2.PBitmap, 
+                        pixmap_opened: gdk2.PPixmap, mask_opened: gdk2.PBitmap, 
+                        is_leaf: gboolean, expanded: gboolean): PCTreeNode{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_insert_node".}
+proc remove_node*(ctree: PCTree, node: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_remove_node".}
+proc insert_gnode*(ctree: PCTree, parent: PCTreeNode, sibling: PCTreeNode, 
+                         gnode: PGNode, fun: TCTreeGNodeFunc, data: gpointer): PCTreeNode{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_insert_gnode".}
+proc export_to_gnode*(ctree: PCTree, parent: PGNode, sibling: PGNode, 
+                            node: PCTreeNode, fun: TCTreeGNodeFunc, 
+                            data: gpointer): PGNode{.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_export_to_gnode".}
+proc post_recursive*(ctree: PCTree, node: PCTreeNode, fun: TCTreeFunc, 
+                           data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_post_recursive".}
+proc post_recursive_to_depth*(ctree: PCTree, node: PCTreeNode, 
+                                    depth: gint, fun: TCTreeFunc, 
+                                    data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_ctree_post_recursive_to_depth".}
-proc gtk_ctree_pre_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                              fun: TGtkCTreeFunc, data: gpointer){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_pre_recursive".}
-proc gtk_ctree_pre_recursive_to_depth*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                       depth: gint, fun: TGtkCTreeFunc,
-                                       data: gpointer){.cdecl, dynlib: gtklib,
+proc pre_recursive*(ctree: PCTree, node: PCTreeNode, fun: TCTreeFunc, 
+                          data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_pre_recursive".}
+proc pre_recursive_to_depth*(ctree: PCTree, node: PCTreeNode, 
+                                   depth: gint, fun: TCTreeFunc, 
+                                   data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_ctree_pre_recursive_to_depth".}
-proc gtk_ctree_is_viewable*(ctree: PGtkCTree, node: PGtkCTreeNode): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_is_viewable".}
-proc gtk_ctree_last*(ctree: PGtkCTree, node: PGtkCTreeNode): PGtkCTreeNode{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_last".}
-proc gtk_ctree_find_node_ptr*(ctree: PGtkCTree, ctree_row: PGtkCTreeRow): PGtkCTreeNode{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_find_node_ptr".}
-proc gtk_ctree_node_nth*(ctree: PGtkCTree, row: guint): PGtkCTreeNode{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_nth".}
-proc gtk_ctree_find*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                     child: PGtkCTreeNode): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_find".}
-proc gtk_ctree_is_ancestor*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                            child: PGtkCTreeNode): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_is_ancestor".}
-proc gtk_ctree_find_by_row_data*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                 data: gpointer): PGtkCTreeNode{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_find_by_row_data".}
-proc gtk_ctree_find_all_by_row_data*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                     data: gpointer): PGList{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_find_all_by_row_data".}
-proc gtk_ctree_find_by_row_data_custom*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                        data: gpointer, fun: TGCompareFunc): PGtkCTreeNode{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_find_by_row_data_custom".}
-proc gtk_ctree_find_all_by_row_data_custom*(ctree: PGtkCTree,
-    node: PGtkCTreeNode, data: gpointer, fun: TGCompareFunc): PGList{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_find_all_by_row_data_custom".}
-proc gtk_ctree_is_hot_spot*(ctree: PGtkCTree, x: gint, y: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_is_hot_spot".}
-proc gtk_ctree_move*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                     new_parent: PGtkCTreeNode, new_sibling: PGtkCTreeNode){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_move".}
-proc gtk_ctree_expand*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_expand".}
-proc gtk_ctree_expand_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_expand_recursive".}
-proc gtk_ctree_expand_to_depth*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                depth: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_expand_to_depth".}
-proc gtk_ctree_collapse*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_collapse".}
-proc gtk_ctree_collapse_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_collapse_recursive".}
-proc gtk_ctree_collapse_to_depth*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                  depth: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_collapse_to_depth".}
-proc gtk_ctree_toggle_expansion*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_toggle_expansion".}
-proc gtk_ctree_toggle_expansion_recursive*(ctree: PGtkCTree,
-    node: PGtkCTreeNode){.cdecl, dynlib: gtklib,
-                           importc: "gtk_ctree_toggle_expansion_recursive".}
-proc gtk_ctree_select*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_select".}
-proc gtk_ctree_select_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_select_recursive".}
-proc gtk_ctree_unselect*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_unselect".}
-proc gtk_ctree_unselect_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_unselect_recursive".}
-proc gtk_ctree_real_select_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                      state: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_real_select_recursive".}
-proc gtk_ctree_node_set_text*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                              column: gint, text: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_set_text".}
-proc gtk_ctree_node_set_pixmap*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                column: gint, pixmap: PGdkPixmap,
-                                mask: PGdkBitmap){.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_node_set_pixmap".}
-proc gtk_ctree_node_set_pixtext*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                 column: gint, text: cstring, spacing: guint8,
-                                 pixmap: PGdkPixmap, mask: PGdkBitmap){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_set_pixtext".}
-proc gtk_ctree_set_node_info*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                              text: cstring, spacing: guint8,
-                              pixmap_closed: PGdkPixmap,
-                              mask_closed: PGdkBitmap,
-                              pixmap_opened: PGdkPixmap,
-                              mask_opened: PGdkBitmap, is_leaf: gboolean,
-                              expanded: gboolean){.cdecl, dynlib: gtklib,
+proc is_viewable*(ctree: PCTree, node: PCTreeNode): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_is_viewable".}
+proc last*(ctree: PCTree, node: PCTreeNode): PCTreeNode{.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_last".}
+proc find_node_ptr*(ctree: PCTree, ctree_row: PCTreeRow): PCTreeNode{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_find_node_ptr".}
+proc node_nth*(ctree: PCTree, row: guint): PCTreeNode{.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_node_nth".}
+proc find*(ctree: PCTree, node: PCTreeNode, child: PCTreeNode): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_find".}
+proc is_ancestor*(ctree: PCTree, node: PCTreeNode, child: PCTreeNode): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_is_ancestor".}
+proc find_by_row_data*(ctree: PCTree, node: PCTreeNode, data: gpointer): PCTreeNode{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_find_by_row_data".}
+proc find_all_by_row_data*(ctree: PCTree, node: PCTreeNode, 
+                                 data: gpointer): PGList{.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_find_all_by_row_data".}
+proc find_by_row_data_custom*(ctree: PCTree, node: PCTreeNode, 
+                                    data: gpointer, fun: TGCompareFunc): PCTreeNode{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_find_by_row_data_custom".}
+proc find_all_by_row_data_custom*(ctree: PCTree, node: PCTreeNode, 
+                                        data: gpointer, fun: TGCompareFunc): PGList{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_find_all_by_row_data_custom".}
+proc is_hot_spot*(ctree: PCTree, x: gint, y: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_is_hot_spot".}
+proc move*(ctree: PCTree, node: PCTreeNode, new_parent: PCTreeNode, 
+                 new_sibling: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_move".}
+proc expand*(ctree: PCTree, node: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_expand".}
+proc expand_recursive*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_expand_recursive".}
+proc expand_to_depth*(ctree: PCTree, node: PCTreeNode, depth: gint){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_expand_to_depth".}
+proc collapse*(ctree: PCTree, node: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_collapse".}
+proc collapse_recursive*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_collapse_recursive".}
+proc collapse_to_depth*(ctree: PCTree, node: PCTreeNode, depth: gint){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_collapse_to_depth".}
+proc toggle_expansion*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_toggle_expansion".}
+proc toggle_expansion_recursive*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_toggle_expansion_recursive".}
+proc select*(ctree: PCTree, node: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_select".}
+proc select_recursive*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_select_recursive".}
+proc unselect*(ctree: PCTree, node: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_unselect".}
+proc unselect_recursive*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_unselect_recursive".}
+proc real_select_recursive*(ctree: PCTree, node: PCTreeNode, state: gint){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_real_select_recursive".}
+proc node_set_text*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                          text: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_node_set_text".}
+proc node_set_pixmap*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                            pixmap: gdk2.PPixmap, mask: gdk2.PBitmap){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_node_set_pixmap".}
+proc node_set_pixtext*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                             text: cstring, spacing: guint8, pixmap: gdk2.PPixmap, 
+                             mask: gdk2.PBitmap){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_node_set_pixtext".}
+proc set_node_info*(ctree: PCTree, node: PCTreeNode, text: cstring, 
+                          spacing: guint8, pixmap_closed: gdk2.PPixmap, 
+                          mask_closed: gdk2.PBitmap, pixmap_opened: gdk2.PPixmap, 
+                          mask_opened: gdk2.PBitmap, is_leaf: gboolean, 
+                          expanded: gboolean){.cdecl, dynlib: lib, 
     importc: "gtk_ctree_set_node_info".}
-proc gtk_ctree_node_set_shift*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                               column: gint, vertical: gint, horizontal: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_node_set_shift".}
-proc gtk_ctree_node_set_selectable*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                    selectable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_set_selectable".}
-proc gtk_ctree_node_get_selectable*(ctree: PGtkCTree, node: PGtkCTreeNode): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_node_get_selectable".}
-proc gtk_ctree_node_get_cell_type*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                   column: gint): TGtkCellType{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_get_cell_type".}
-proc gtk_ctree_node_get_text*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                              column: gint, text: PPgchar): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_get_text".}
-proc gtk_ctree_node_set_row_style*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                   style: PGtkStyle){.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_node_set_row_style".}
-proc gtk_ctree_node_get_row_style*(ctree: PGtkCTree, node: PGtkCTreeNode): PGtkStyle{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_node_get_row_style".}
-proc gtk_ctree_node_set_cell_style*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                    column: gint, style: PGtkStyle){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_set_cell_style".}
-proc gtk_ctree_node_get_cell_style*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                    column: gint): PGtkStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_get_cell_style".}
-proc gtk_ctree_node_set_foreground*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                    color: PGdkColor){.cdecl, dynlib: gtklib,
+proc node_set_shift*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                           vertical: gint, horizontal: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_node_set_shift".}
+proc node_set_selectable*(ctree: PCTree, node: PCTreeNode, 
+                                selectable: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_node_set_selectable".}
+proc node_get_selectable*(ctree: PCTree, node: PCTreeNode): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_get_selectable".}
+proc node_get_cell_type*(ctree: PCTree, node: PCTreeNode, column: gint): TCellType{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_get_cell_type".}
+proc node_get_text*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                          text: PPgchar): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_node_get_text".}
+proc node_set_row_style*(ctree: PCTree, node: PCTreeNode, style: PStyle){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_set_row_style".}
+proc node_get_row_style*(ctree: PCTree, node: PCTreeNode): PStyle{.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_node_get_row_style".}
+proc node_set_cell_style*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                                style: PStyle){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_node_set_cell_style".}
+proc node_get_cell_style*(ctree: PCTree, node: PCTreeNode, column: gint): PStyle{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_get_cell_style".}
+proc node_set_foreground*(ctree: PCTree, node: PCTreeNode, 
+                                color: gdk2.PColor){.cdecl, dynlib: lib, 
     importc: "gtk_ctree_node_set_foreground".}
-proc gtk_ctree_node_set_background*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                    color: PGdkColor){.cdecl, dynlib: gtklib,
+proc node_set_background*(ctree: PCTree, node: PCTreeNode, 
+                                color: gdk2.PColor){.cdecl, dynlib: lib, 
     importc: "gtk_ctree_node_set_background".}
-proc gtk_ctree_node_set_row_data*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                  data: gpointer){.cdecl, dynlib: gtklib,
-    importc: "gtk_ctree_node_set_row_data".}
-proc gtk_ctree_node_set_row_data_full*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                                       data: gpointer,
-                                       destroy: TGtkDestroyNotify){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_node_set_row_data_full".}
-proc gtk_ctree_node_get_row_data*(ctree: PGtkCTree, node: PGtkCTreeNode): gpointer{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_node_get_row_data".}
-proc gtk_ctree_node_moveto*(ctree: PGtkCTree, node: PGtkCTreeNode,
-                            column: gint, row_align: gfloat, col_align: gfloat){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_node_moveto".}
-proc gtk_ctree_node_is_visible*(ctree: PGtkCTree, node: PGtkCTreeNode): TGtkVisibility{.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_node_is_visible".}
-proc gtk_ctree_set_indent*(ctree: PGtkCTree, indent: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_set_indent".}
-proc gtk_ctree_set_spacing*(ctree: PGtkCTree, spacing: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_set_spacing".}
-proc gtk_ctree_set_show_stub*(ctree: PGtkCTree, show_stub: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_set_show_stub".}
-proc gtk_ctree_set_line_style*(ctree: PGtkCTree, line_style: TGtkCTreeLineStyle){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_set_line_style".}
-proc gtk_ctree_set_expander_style*(ctree: PGtkCTree,
-                                   expander_style: TGtkCTreeExpanderStyle){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_set_expander_style".}
-proc gtk_ctree_set_drag_compare_func*(ctree: PGtkCTree,
-                                      cmp_func: TGtkCTreeCompareDragFunc){.
-    cdecl, dynlib: gtklib, importc: "gtk_ctree_set_drag_compare_func".}
-proc gtk_ctree_sort_node*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_sort_node".}
-proc gtk_ctree_sort_recursive*(ctree: PGtkCTree, node: PGtkCTreeNode){.cdecl,
-    dynlib: gtklib, importc: "gtk_ctree_sort_recursive".}
-proc gtk_ctree_set_reorderable*(t: pointer, r: bool)
-proc gtk_ctree_node_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_ctree_node_get_type".}
-proc GTK_TYPE_DRAWING_AREA*(): GType
-proc GTK_DRAWING_AREA*(obj: pointer): PGtkDrawingArea
-proc GTK_DRAWING_AREA_CLASS*(klass: pointer): PGtkDrawingAreaClass
-proc GTK_IS_DRAWING_AREA*(obj: pointer): bool
-proc GTK_IS_DRAWING_AREA_CLASS*(klass: pointer): bool
-proc GTK_DRAWING_AREA_GET_CLASS*(obj: pointer): PGtkDrawingAreaClass
-proc gtk_drawing_area_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_drawing_area_get_type".}
-proc gtk_drawing_area_new*(): PGtkDrawingArea {.cdecl, dynlib: gtklib,
-    importc: "gtk_drawing_area_new".}
-proc GTK_TYPE_CURVE*(): GType
-proc GTK_CURVE*(obj: pointer): PGtkCurve
-proc GTK_CURVE_CLASS*(klass: pointer): PGtkCurveClass
-proc GTK_IS_CURVE*(obj: pointer): bool
-proc GTK_IS_CURVE_CLASS*(klass: pointer): bool
-proc GTK_CURVE_GET_CLASS*(obj: pointer): PGtkCurveClass
-proc gtk_curve_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_curve_get_type".}
-proc gtk_curve_new*(): PGtkCurve {.cdecl, dynlib: gtklib,
-                                   importc: "gtk_curve_new".}
-proc gtk_curve_reset*(curve: PGtkCurve){.cdecl, dynlib: gtklib,
-    importc: "gtk_curve_reset".}
-proc gtk_curve_set_gamma*(curve: PGtkCurve, gamma: gfloat){.cdecl,
-    dynlib: gtklib, importc: "gtk_curve_set_gamma".}
-proc gtk_curve_set_range*(curve: PGtkCurve, min_x: gfloat, max_x: gfloat,
-                          min_y: gfloat, max_y: gfloat){.cdecl, dynlib: gtklib,
+proc node_set_row_data*(ctree: PCTree, node: PCTreeNode, data: gpointer){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_set_row_data".}
+proc node_set_row_data_full*(ctree: PCTree, node: PCTreeNode, 
+                                   data: gpointer, destroy: TDestroyNotify){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_set_row_data_full".}
+proc node_get_row_data*(ctree: PCTree, node: PCTreeNode): gpointer{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_get_row_data".}
+proc node_moveto*(ctree: PCTree, node: PCTreeNode, column: gint, 
+                        row_align: gfloat, col_align: gfloat){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_node_moveto".}
+proc node_is_visible*(ctree: PCTree, node: PCTreeNode): TVisibility{.
+    cdecl, dynlib: lib, importc: "gtk_ctree_node_is_visible".}
+proc set_indent*(ctree: PCTree, indent: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_set_indent".}
+proc set_spacing*(ctree: PCTree, spacing: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_set_spacing".}
+proc set_show_stub*(ctree: PCTree, show_stub: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_set_show_stub".}
+proc set_line_style*(ctree: PCTree, line_style: TCTreeLineStyle){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_set_line_style".}
+proc set_expander_style*(ctree: PCTree, 
+                               expander_style: TCTreeExpanderStyle){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_set_expander_style".}
+proc set_drag_compare_func*(ctree: PCTree, cmp_func: TCTreeCompareDragFunc){.
+    cdecl, dynlib: lib, importc: "gtk_ctree_set_drag_compare_func".}
+proc sort_node*(ctree: PCTree, node: PCTreeNode){.cdecl, dynlib: lib, 
+    importc: "gtk_ctree_sort_node".}
+proc sort_recursive*(ctree: PCTree, node: PCTreeNode){.cdecl, 
+    dynlib: lib, importc: "gtk_ctree_sort_recursive".}
+proc ctree_set_reorderable*(t: pointer, r: bool)
+proc ctree_node_get_type*(): GType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_ctree_node_get_type".}
+proc TYPE_DRAWING_AREA*(): GType
+proc DRAWING_AREA*(obj: pointer): PDrawingArea
+proc DRAWING_AREA_CLASS*(klass: pointer): PDrawingAreaClass
+proc IS_DRAWING_AREA*(obj: pointer): bool
+proc IS_DRAWING_AREA_CLASS*(klass: pointer): bool
+proc DRAWING_AREA_GET_CLASS*(obj: pointer): PDrawingAreaClass
+proc drawing_area_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_drawing_area_get_type".}
+proc drawing_area_new*(): PDrawingArea{.cdecl, dynlib: lib, 
+                                        importc: "gtk_drawing_area_new".}
+proc TYPE_CURVE*(): GType
+proc CURVE*(obj: pointer): PCurve
+proc CURVE_CLASS*(klass: pointer): PCurveClass
+proc IS_CURVE*(obj: pointer): bool
+proc IS_CURVE_CLASS*(klass: pointer): bool
+proc CURVE_GET_CLASS*(obj: pointer): PCurveClass
+proc curve_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_curve_get_type".}
+proc curve_new*(): PCurve{.cdecl, dynlib: lib, importc: "gtk_curve_new".}
+proc reset*(curve: PCurve){.cdecl, dynlib: lib, importc: "gtk_curve_reset".}
+proc set_gamma*(curve: PCurve, gamma: gfloat){.cdecl, dynlib: lib, 
+    importc: "gtk_curve_set_gamma".}
+proc set_range*(curve: PCurve, min_x: gfloat, max_x: gfloat, 
+                      min_y: gfloat, max_y: gfloat){.cdecl, dynlib: lib, 
     importc: "gtk_curve_set_range".}
-proc gtk_curve_set_curve_type*(curve: PGtkCurve, thetype: TGtkCurveType){.cdecl,
-    dynlib: gtklib, importc: "gtk_curve_set_curve_type".}
-const
-  GTK_DEST_DEFAULT_MOTION* = 1 shl 0
-  GTK_DEST_DEFAULT_HIGHLIGHT* = 1 shl 1
-  GTK_DEST_DEFAULT_DROP* = 1 shl 2
-  GTK_DEST_DEFAULT_ALL* = 0x00000007
-  GTK_TARGET_SAME_APP* = 1 shl 0
-  GTK_TARGET_SAME_WIDGET* = 1 shl 1
-
-proc gtk_drag_get_data*(widget: PGtkWidget, context: PGdkDragContext,
-                        target: TGdkAtom, time: guint32){.cdecl, dynlib: gtklib,
-    importc: "gtk_drag_get_data".}
-proc gtk_drag_finish*(context: PGdkDragContext, success: gboolean,
-                      del: gboolean, time: guint32){.cdecl, dynlib: gtklib,
-    importc: "gtk_drag_finish".}
-proc gtk_drag_get_source_widget*(context: PGdkDragContext): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_drag_get_source_widget".}
-proc gtk_drag_highlight*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_drag_highlight".}
-proc gtk_drag_unhighlight*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc set_curve_type*(curve: PCurve, thetype: TCurveType){.cdecl, 
+    dynlib: lib, importc: "gtk_curve_set_curve_type".}
+const 
+  DEST_DEFAULT_MOTION* = 1 shl 0
+  DEST_DEFAULT_HIGHLIGHT* = 1 shl 1
+  DEST_DEFAULT_DROP* = 1 shl 2
+  DEST_DEFAULT_ALL* = 0x00000007
+  TARGET_SAME_APP* = 1 shl 0
+  TARGET_SAME_WIDGET* = 1 shl 1
+
+proc drag_get_data*(widget: PWidget, context: gdk2.PDragContext, target: gdk2.TAtom, 
+                    time: guint32){.cdecl, dynlib: lib, 
+                                    importc: "gtk_drag_get_data".}
+proc drag_finish*(context: gdk2.PDragContext, success: gboolean, del: gboolean, 
+                  time: guint32){.cdecl, dynlib: lib, importc: "gtk_drag_finish".}
+proc drag_get_source_widget*(context: gdk2.PDragContext): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_drag_get_source_widget".}
+proc drag_highlight*(widget: PWidget){.cdecl, dynlib: lib, 
+                                       importc: "gtk_drag_highlight".}
+proc drag_unhighlight*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_drag_unhighlight".}
-proc gtk_drag_dest_set*(widget: PGtkWidget, flags: TGtkDestDefaults,
-                        targets: PGtkTargetEntry, n_targets: gint,
-                        actions: TGdkDragAction){.cdecl, dynlib: gtklib,
+proc drag_dest_set*(widget: PWidget, flags: TDestDefaults, 
+                    targets: PTargetEntry, n_targets: gint, 
+                    actions: gdk2.TDragAction){.cdecl, dynlib: lib, 
     importc: "gtk_drag_dest_set".}
-proc gtk_drag_dest_set_proxy*(widget: PGtkWidget, proxy_window: PGdkWindow,
-                              protocol: TGdkDragProtocol,
-                              use_coordinates: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_drag_dest_set_proxy".}
-proc gtk_drag_dest_unset*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_drag_dest_unset".}
-proc gtk_drag_dest_find_target*(widget: PGtkWidget, context: PGdkDragContext,
-                                target_list: PGtkTargetList): TGdkAtom{.cdecl,
-    dynlib: gtklib, importc: "gtk_drag_dest_find_target".}
-proc gtk_drag_dest_get_target_list*(widget: PGtkWidget): PGtkTargetList{.cdecl,
-    dynlib: gtklib, importc: "gtk_drag_dest_get_target_list".}
-proc gtk_drag_dest_set_target_list*(widget: PGtkWidget,
-                                    target_list: PGtkTargetList){.cdecl,
-    dynlib: gtklib, importc: "gtk_drag_dest_set_target_list".}
-proc gtk_drag_source_set*(widget: PGtkWidget,
-                          start_button_mask: TGdkModifierType,
-                          targets: PGtkTargetEntry, n_targets: gint,
-                          actions: TGdkDragAction){.cdecl, dynlib: gtklib,
+proc drag_dest_set_proxy*(widget: PWidget, proxy_window: gdk2.PWindow, 
+                          protocol: gdk2.TDragProtocol, use_coordinates: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_drag_dest_set_proxy".}
+proc drag_dest_unset*(widget: PWidget){.cdecl, dynlib: lib, 
+                                        importc: "gtk_drag_dest_unset".}
+proc drag_dest_find_target*(widget: PWidget, context: gdk2.PDragContext, 
+                            target_list: PTargetList): gdk2.TAtom{.cdecl, 
+    dynlib: lib, importc: "gtk_drag_dest_find_target".}
+proc drag_dest_get_target_list*(widget: PWidget): PTargetList{.cdecl, 
+    dynlib: lib, importc: "gtk_drag_dest_get_target_list".}
+proc drag_dest_set_target_list*(widget: PWidget, target_list: PTargetList){.
+    cdecl, dynlib: lib, importc: "gtk_drag_dest_set_target_list".}
+proc drag_source_set*(widget: PWidget, start_button_mask: gdk2.TModifierType, 
+                      targets: PTargetEntry, n_targets: gint, 
+                      actions: gdk2.TDragAction){.cdecl, dynlib: lib, 
     importc: "gtk_drag_source_set".}
-proc gtk_drag_source_unset*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc drag_source_unset*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_drag_source_unset".}
-proc gtk_drag_source_set_icon*(widget: PGtkWidget, colormap: PGdkColormap,
-                               pixmap: PGdkPixmap, mask: PGdkBitmap){.cdecl,
-    dynlib: gtklib, importc: "gtk_drag_source_set_icon".}
-proc gtk_drag_source_set_icon_pixbuf*(widget: PGtkWidget, pixbuf: PGdkPixbuf){.
-    cdecl, dynlib: gtklib, importc: "gtk_drag_source_set_icon_pixbuf".}
-proc gtk_drag_source_set_icon_stock*(widget: PGtkWidget, stock_id: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_drag_source_set_icon_stock".}
-proc gtk_drag_begin*(widget: PGtkWidget, targets: PGtkTargetList,
-                     actions: TGdkDragAction, button: gint, event: PGdkEvent): PGdkDragContext{.
-    cdecl, dynlib: gtklib, importc: "gtk_drag_begin".}
-proc gtk_drag_set_icon_widget*(context: PGdkDragContext, widget: PGtkWidget,
-                               hot_x: gint, hot_y: gint){.cdecl, dynlib: gtklib,
+proc drag_source_set_icon*(widget: PWidget, colormap: gdk2.PColormap, 
+                           pixmap: gdk2.PPixmap, mask: gdk2.PBitmap){.cdecl, 
+    dynlib: lib, importc: "gtk_drag_source_set_icon".}
+proc drag_source_set_icon_pixbuf*(widget: PWidget, pixbuf: gdk2pixbuf.PPixbuf){.cdecl, 
+    dynlib: lib, importc: "gtk_drag_source_set_icon_pixbuf".}
+proc drag_source_set_icon_stock*(widget: PWidget, stock_id: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_drag_source_set_icon_stock".}
+proc drag_begin*(widget: PWidget, targets: PTargetList, actions: gdk2.TDragAction, 
+                 button: gint, event: gdk2.PEvent): gdk2.PDragContext{.cdecl, 
+    dynlib: lib, importc: "gtk_drag_begin".}
+proc drag_set_icon_widget*(context: gdk2.PDragContext, widget: PWidget, 
+                           hot_x: gint, hot_y: gint){.cdecl, dynlib: lib, 
     importc: "gtk_drag_set_icon_widget".}
-proc gtk_drag_set_icon_pixmap*(context: PGdkDragContext, colormap: PGdkColormap,
-                               pixmap: PGdkPixmap, mask: PGdkBitmap,
-                               hot_x: gint, hot_y: gint){.cdecl, dynlib: gtklib,
+proc drag_set_icon_pixmap*(context: gdk2.PDragContext, colormap: gdk2.PColormap, 
+                           pixmap: gdk2.PPixmap, mask: gdk2.PBitmap, hot_x: gint, 
+                           hot_y: gint){.cdecl, dynlib: lib, 
     importc: "gtk_drag_set_icon_pixmap".}
-proc gtk_drag_set_icon_pixbuf*(context: PGdkDragContext, pixbuf: PGdkPixbuf,
-                               hot_x: gint, hot_y: gint){.cdecl, dynlib: gtklib,
+proc drag_set_icon_pixbuf*(context: gdk2.PDragContext, pixbuf: gdk2pixbuf.PPixbuf, 
+                           hot_x: gint, hot_y: gint){.cdecl, dynlib: lib, 
     importc: "gtk_drag_set_icon_pixbuf".}
-proc gtk_drag_set_icon_stock*(context: PGdkDragContext, stock_id: cstring,
-                              hot_x: gint, hot_y: gint){.cdecl, dynlib: gtklib,
+proc drag_set_icon_stock*(context: gdk2.PDragContext, stock_id: cstring, 
+                          hot_x: gint, hot_y: gint){.cdecl, dynlib: lib, 
     importc: "gtk_drag_set_icon_stock".}
-proc gtk_drag_set_icon_default*(context: PGdkDragContext){.cdecl,
-    dynlib: gtklib, importc: "gtk_drag_set_icon_default".}
-proc gtk_drag_check_threshold*(widget: PGtkWidget, start_x: gint, start_y: gint,
-                               current_x: gint, current_y: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_drag_check_threshold".}
-proc gtk_drag_source_handle_event*(widget: PGtkWidget, event: PGdkEvent){.
-    cdecl, dynlib: gtklib, importc: "_gtk_drag_source_handle_event".}
-proc gtk_drag_dest_handle_event*(toplevel: PGtkWidget, event: PGdkEvent){.
-    cdecl, dynlib: gtklib, importc: "_gtk_drag_dest_handle_event".}
-proc GTK_TYPE_EDITABLE*(): GType
-proc GTK_EDITABLE*(obj: pointer): PGtkEditable
-proc GTK_EDITABLE_CLASS*(vtable: pointer): PGtkEditableClass
-proc GTK_IS_EDITABLE*(obj: pointer): bool
-proc GTK_IS_EDITABLE_CLASS*(vtable: pointer): bool
-proc GTK_EDITABLE_GET_CLASS*(inst: pointer): PGtkEditableClass
-proc gtk_editable_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_editable_get_type".}
-proc gtk_editable_select_region*(editable: PGtkEditable, start: gint,
-                                 theEnd: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_editable_select_region".}
-proc gtk_editable_get_selection_bounds*(editable: PGtkEditable, start: Pgint,
-                                        theEnd: Pgint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_get_selection_bounds".}
-proc gtk_editable_insert_text*(editable: PGtkEditable, new_text: cstring,
-                               new_text_length: gint, position: Pgint){.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_insert_text".}
-proc gtk_editable_delete_text*(editable: PGtkEditable, start_pos: gint,
-                               end_pos: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_editable_delete_text".}
-proc gtk_editable_get_chars*(editable: PGtkEditable, start_pos: gint,
-                             end_pos: gint): cstring{.cdecl, dynlib: gtklib,
-    importc: "gtk_editable_get_chars".}
-proc gtk_editable_cut_clipboard*(editable: PGtkEditable){.cdecl, dynlib: gtklib,
+proc drag_set_icon_default*(context: gdk2.PDragContext){.cdecl, dynlib: lib, 
+    importc: "gtk_drag_set_icon_default".}
+proc drag_check_threshold*(widget: PWidget, start_x: gint, start_y: gint, 
+                           current_x: gint, current_y: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_drag_check_threshold".}
+proc drag_source_handle_event*(widget: PWidget, event: gdk2.PEvent){.cdecl, 
+    dynlib: lib, importc: "_gtk_drag_source_handle_event".}
+proc drag_dest_handle_event*(toplevel: PWidget, event: gdk2.PEvent){.cdecl, 
+    dynlib: lib, importc: "_gtk_drag_dest_handle_event".}
+proc TYPE_EDITABLE*(): GType
+proc EDITABLE*(obj: pointer): PEditable
+proc EDITABLE_CLASS*(vtable: pointer): PEditableClass
+proc IS_EDITABLE*(obj: pointer): bool
+proc IS_EDITABLE_CLASS*(vtable: pointer): bool
+proc EDITABLE_GET_CLASS*(inst: pointer): PEditableClass
+proc editable_get_type*(): TType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_editable_get_type".}
+proc select_region*(editable: PEditable, start: gint, theEnd: gint){.
+    cdecl, dynlib: lib, importc: "gtk_editable_select_region".}
+proc get_selection_bounds*(editable: PEditable, start: Pgint, 
+                                    theEnd: Pgint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_editable_get_selection_bounds".}
+proc insert_text*(editable: PEditable, new_text: cstring, 
+                           new_text_length: gint, position: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_editable_insert_text".}
+proc delete_text*(editable: PEditable, start_pos: gint, end_pos: gint){.
+    cdecl, dynlib: lib, importc: "gtk_editable_delete_text".}
+proc get_chars*(editable: PEditable, start_pos: gint, end_pos: gint): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_editable_get_chars".}
+proc cut_clipboard*(editable: PEditable){.cdecl, dynlib: lib, 
     importc: "gtk_editable_cut_clipboard".}
-proc gtk_editable_copy_clipboard*(editable: PGtkEditable){.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_copy_clipboard".}
-proc gtk_editable_paste_clipboard*(editable: PGtkEditable){.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_paste_clipboard".}
-proc gtk_editable_delete_selection*(editable: PGtkEditable){.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_delete_selection".}
-proc gtk_editable_set_position*(editable: PGtkEditable, position: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_set_position".}
-proc gtk_editable_get_position*(editable: PGtkEditable): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_get_position".}
-proc gtk_editable_set_editable*(editable: PGtkEditable, is_editable: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_editable_set_editable".}
-proc gtk_editable_get_editable*(editable: PGtkEditable): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_editable_get_editable".}
-proc GTK_TYPE_IM_CONTEXT*(): GType
-proc GTK_IM_CONTEXT*(obj: pointer): PGtkIMContext
-proc GTK_IM_CONTEXT_CLASS*(klass: pointer): PGtkIMContextClass
-proc GTK_IS_IM_CONTEXT*(obj: pointer): bool
-proc GTK_IS_IM_CONTEXT_CLASS*(klass: pointer): bool
-proc GTK_IM_CONTEXT_GET_CLASS*(obj: pointer): PGtkIMContextClass
-proc gtk_im_context_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_im_context_get_type".}
-proc gtk_im_context_set_client_window*(context: PGtkIMContext,
-                                       window: PGdkWindow){.cdecl,
-    dynlib: gtklib, importc: "gtk_im_context_set_client_window".}
-proc gtk_im_context_filter_keypress*(context: PGtkIMContext, event: PGdkEventKey): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_im_context_filter_keypress".}
-proc gtk_im_context_focus_in*(context: PGtkIMContext){.cdecl, dynlib: gtklib,
+proc copy_clipboard*(editable: PEditable){.cdecl, dynlib: lib, 
+    importc: "gtk_editable_copy_clipboard".}
+proc paste_clipboard*(editable: PEditable){.cdecl, dynlib: lib, 
+    importc: "gtk_editable_paste_clipboard".}
+proc delete_selection*(editable: PEditable){.cdecl, dynlib: lib, 
+    importc: "gtk_editable_delete_selection".}
+proc set_position*(editable: PEditable, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_editable_set_position".}
+proc get_position*(editable: PEditable): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_editable_get_position".}
+proc set_editable*(editable: PEditable, is_editable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_editable_set_editable".}
+proc get_editable*(editable: PEditable): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_editable_get_editable".}
+proc TYPE_IM_CONTEXT*(): GType
+proc IM_CONTEXT*(obj: pointer): PIMContext
+proc IM_CONTEXT_CLASS*(klass: pointer): PIMContextClass
+proc IS_IM_CONTEXT*(obj: pointer): bool
+proc IS_IM_CONTEXT_CLASS*(klass: pointer): bool
+proc IM_CONTEXT_GET_CLASS*(obj: pointer): PIMContextClass
+proc im_context_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_im_context_get_type".}
+proc set_client_window*(context: PIMContext, window: gdk2.PWindow){.
+    cdecl, dynlib: lib, importc: "gtk_im_context_set_client_window".}
+proc filter_keypress*(context: PIMContext, event: gdk2.PEventKey): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_im_context_filter_keypress".}
+proc focus_in*(context: PIMContext){.cdecl, dynlib: lib, 
     importc: "gtk_im_context_focus_in".}
-proc gtk_im_context_focus_out*(context: PGtkIMContext){.cdecl, dynlib: gtklib,
+proc focus_out*(context: PIMContext){.cdecl, dynlib: lib, 
     importc: "gtk_im_context_focus_out".}
-proc gtk_im_context_reset*(context: PGtkIMContext){.cdecl, dynlib: gtklib,
+proc reset*(context: PIMContext){.cdecl, dynlib: lib, 
     importc: "gtk_im_context_reset".}
-proc gtk_im_context_set_cursor_location*(context: PGtkIMContext,
-    area: PGdkRectangle){.cdecl, dynlib: gtklib,
-                          importc: "gtk_im_context_set_cursor_location".}
-proc gtk_im_context_set_use_preedit*(context: PGtkIMContext,
-                                     use_preedit: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_im_context_set_use_preedit".}
-proc gtk_im_context_set_surrounding*(context: PGtkIMContext, text: cstring,
-                                     len: gint, cursor_index: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_im_context_set_surrounding".}
-proc gtk_im_context_get_surrounding*(context: PGtkIMContext, text: PPgchar,
-                                     cursor_index: Pgint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_im_context_get_surrounding".}
-proc gtk_im_context_delete_surrounding*(context: PGtkIMContext, offset: gint,
-                                        n_chars: gint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_im_context_delete_surrounding".}
-const
-  bm_TGtkMenuShell_active* = 0x00000001'i16
+proc set_cursor_location*(context: PIMContext, area: gdk2.PRectangle){.
+    cdecl, dynlib: lib, importc: "gtk_im_context_set_cursor_location".}
+proc set_use_preedit*(context: PIMContext, use_preedit: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_im_context_set_use_preedit".}
+proc set_surrounding*(context: PIMContext, text: cstring, len: gint, 
+                                 cursor_index: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_im_context_set_surrounding".}
+proc get_surrounding*(context: PIMContext, text: PPgchar, 
+                                 cursor_index: Pgint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_im_context_get_surrounding".}
+proc delete_surrounding*(context: PIMContext, offset: gint, 
+                                    n_chars: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_im_context_delete_surrounding".}
+const 
+  bm_TGtkMenuShell_active* = 0x0001'i16
   bp_TGtkMenuShell_active* = 0'i16
-  bm_TGtkMenuShell_have_grab* = 0x00000002'i16
+  bm_TGtkMenuShell_have_grab* = 0x0002'i16
   bp_TGtkMenuShell_have_grab* = 1'i16
-  bm_TGtkMenuShell_have_xgrab* = 0x00000004'i16
+  bm_TGtkMenuShell_have_xgrab* = 0x0004'i16
   bp_TGtkMenuShell_have_xgrab* = 2'i16
-  bm_TGtkMenuShell_ignore_leave* = 0x00000008'i16
+  bm_TGtkMenuShell_ignore_leave* = 0x0008'i16
   bp_TGtkMenuShell_ignore_leave* = 3'i16
-  bm_TGtkMenuShell_menu_flag* = 0x00000010'i16
+  bm_TGtkMenuShell_menu_flag* = 0x0010'i16
   bp_TGtkMenuShell_menu_flag* = 4'i16
-  bm_TGtkMenuShell_ignore_enter* = 0x00000020'i16
+  bm_TGtkMenuShell_ignore_enter* = 0x0020'i16
   bp_TGtkMenuShell_ignore_enter* = 5'i16
-  bm_TGtkMenuShellClass_submenu_placement* = 0x00000001'i16
+  bm_TGtkMenuShellClass_submenu_placement* = 0x0001'i16
   bp_TGtkMenuShellClass_submenu_placement* = 0'i16
 
-proc GTK_TYPE_MENU_SHELL*(): GType
-proc GTK_MENU_SHELL*(obj: pointer): PGtkMenuShell
-proc GTK_MENU_SHELL_CLASS*(klass: pointer): PGtkMenuShellClass
-proc GTK_IS_MENU_SHELL*(obj: pointer): bool
-proc GTK_IS_MENU_SHELL_CLASS*(klass: pointer): bool
-proc GTK_MENU_SHELL_GET_CLASS*(obj: pointer): PGtkMenuShellClass
-proc active*(a: var TGtkMenuShell): guint
-proc set_active*(a: var TGtkMenuShell, `active`: guint)
-proc have_grab*(a: var TGtkMenuShell): guint
-proc set_have_grab*(a: var TGtkMenuShell, `have_grab`: guint)
-proc have_xgrab*(a: var TGtkMenuShell): guint
-proc set_have_xgrab*(a: var TGtkMenuShell, `have_xgrab`: guint)
-proc ignore_leave*(a: var TGtkMenuShell): guint
-proc set_ignore_leave*(a: var TGtkMenuShell, `ignore_leave`: guint)
-proc menu_flag*(a: var TGtkMenuShell): guint
-proc set_menu_flag*(a: var TGtkMenuShell, `menu_flag`: guint)
-proc ignore_enter*(a: var TGtkMenuShell): guint
-proc set_ignore_enter*(a: var TGtkMenuShell, `ignore_enter`: guint)
-proc submenu_placement*(a: var TGtkMenuShellClass): guint
-proc set_submenu_placement*(a: var TGtkMenuShellClass,
-                            `submenu_placement`: guint)
-proc gtk_menu_shell_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_menu_shell_get_type".}
-proc gtk_menu_shell_append*(menu_shell: PGtkMenuShell, child: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_shell_append".}
-proc gtk_menu_shell_prepend*(menu_shell: PGtkMenuShell, child: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_shell_prepend".}
-proc gtk_menu_shell_insert*(menu_shell: PGtkMenuShell, child: PGtkWidget,
-                            position: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_menu_shell_insert".}
-proc gtk_menu_shell_deactivate*(menu_shell: PGtkMenuShell){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_shell_deactivate".}
-proc gtk_menu_shell_select_item*(menu_shell: PGtkMenuShell,
-                                 menu_item: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_menu_shell_select_item".}
-proc gtk_menu_shell_deselect*(menu_shell: PGtkMenuShell){.cdecl, dynlib: gtklib,
+proc TYPE_MENU_SHELL*(): GType
+proc MENU_SHELL*(obj: pointer): PMenuShell
+proc MENU_SHELL_CLASS*(klass: pointer): PMenuShellClass
+proc IS_MENU_SHELL*(obj: pointer): bool
+proc IS_MENU_SHELL_CLASS*(klass: pointer): bool
+proc MENU_SHELL_GET_CLASS*(obj: pointer): PMenuShellClass
+proc active*(a: var TMenuShell): guint
+proc set_active*(a: var TMenuShell, `active`: guint)
+proc have_grab*(a: var TMenuShell): guint
+proc set_have_grab*(a: var TMenuShell, `have_grab`: guint)
+proc have_xgrab*(a: var TMenuShell): guint
+proc set_have_xgrab*(a: var TMenuShell, `have_xgrab`: guint)
+proc ignore_leave*(a: var TMenuShell): guint
+proc set_ignore_leave*(a: var TMenuShell, `ignore_leave`: guint)
+proc menu_flag*(a: var TMenuShell): guint
+proc set_menu_flag*(a: var TMenuShell, `menu_flag`: guint)
+proc ignore_enter*(a: var TMenuShell): guint
+proc set_ignore_enter*(a: var TMenuShell, `ignore_enter`: guint)
+proc submenu_placement*(a: var TMenuShellClass): guint
+proc set_submenu_placement*(a: var TMenuShellClass, `submenu_placement`: guint)
+proc menu_shell_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_menu_shell_get_type".}
+proc append*(menu_shell: PMenuShell, child: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_shell_append".}
+proc prepend*(menu_shell: PMenuShell, child: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_shell_prepend".}
+proc insert*(menu_shell: PMenuShell, child: PWidget, position: gint){.
+    cdecl, dynlib: lib, importc: "gtk_menu_shell_insert".}
+proc deactivate*(menu_shell: PMenuShell){.cdecl, dynlib: lib, 
+    importc: "gtk_menu_shell_deactivate".}
+proc select_item*(menu_shell: PMenuShell, menu_item: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_shell_select_item".}
+proc deselect*(menu_shell: PMenuShell){.cdecl, dynlib: lib, 
     importc: "gtk_menu_shell_deselect".}
-proc gtk_menu_shell_activate_item*(menu_shell: PGtkMenuShell,
-                                   menu_item: PGtkWidget,
-                                   force_deactivate: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_shell_activate_item".}
-proc gtk_menu_shell_select_first*(menu_shell: PGtkMenuShell){.cdecl,
-    dynlib: gtklib, importc: "_gtk_menu_shell_select_first".}
-proc gtk_menu_shell_activate*(menu_shell: PGtkMenuShell){.cdecl,
-    dynlib: gtklib, importc: "_gtk_menu_shell_activate".}
-const
-  bm_TGtkMenu_needs_destruction_ref_count* = 0x00000001'i16
+proc activate_item*(menu_shell: PMenuShell, menu_item: PWidget, 
+                               force_deactivate: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_menu_shell_activate_item".}
+proc select_first*(menu_shell: PMenuShell){.cdecl, dynlib: lib, 
+    importc: "_gtk_menu_shell_select_first".}
+proc activate*(menu_shell: PMenuShell){.cdecl, dynlib: lib, 
+    importc: "_gtk_menu_shell_activate".}
+const 
+  bm_TGtkMenu_needs_destruction_ref_count* = 0x0001'i16
   bp_TGtkMenu_needs_destruction_ref_count* = 0'i16
-  bm_TGtkMenu_torn_off* = 0x00000002'i16
+  bm_TGtkMenu_torn_off* = 0x0002'i16
   bp_TGtkMenu_torn_off* = 1'i16
-  bm_TGtkMenu_tearoff_active* = 0x00000004'i16
+  bm_TGtkMenu_tearoff_active* = 0x0004'i16
   bp_TGtkMenu_tearoff_active* = 2'i16
-  bm_TGtkMenu_scroll_fast* = 0x00000008'i16
+  bm_TGtkMenu_scroll_fast* = 0x0008'i16
   bp_TGtkMenu_scroll_fast* = 3'i16
-  bm_TGtkMenu_upper_arrow_visible* = 0x00000010'i16
+  bm_TGtkMenu_upper_arrow_visible* = 0x0010'i16
   bp_TGtkMenu_upper_arrow_visible* = 4'i16
-  bm_TGtkMenu_lower_arrow_visible* = 0x00000020'i16
+  bm_TGtkMenu_lower_arrow_visible* = 0x0020'i16
   bp_TGtkMenu_lower_arrow_visible* = 5'i16
-  bm_TGtkMenu_upper_arrow_prelight* = 0x00000040'i16
+  bm_TGtkMenu_upper_arrow_prelight* = 0x0040'i16
   bp_TGtkMenu_upper_arrow_prelight* = 6'i16
-  bm_TGtkMenu_lower_arrow_prelight* = 0x00000080'i16
+  bm_TGtkMenu_lower_arrow_prelight* = 0x0080'i16
   bp_TGtkMenu_lower_arrow_prelight* = 7'i16
 
-proc GTK_TYPE_MENU*(): GType
-proc GTK_MENU*(obj: pointer): PGtkMenu
-proc GTK_MENU_CLASS*(klass: pointer): PGtkMenuClass
-proc GTK_IS_MENU*(obj: pointer): bool
-proc GTK_IS_MENU_CLASS*(klass: pointer): bool
-proc GTK_MENU_GET_CLASS*(obj: pointer): PGtkMenuClass
-proc needs_destruction_ref_count*(a: var TGtkMenu): guint
-proc set_needs_destruction_ref_count*(a: var TGtkMenu,
+proc TYPE_MENU*(): GType
+proc MENU*(obj: pointer): PMenu
+proc MENU_CLASS*(klass: pointer): PMenuClass
+proc IS_MENU*(obj: pointer): bool
+proc IS_MENU_CLASS*(klass: pointer): bool
+proc MENU_GET_CLASS*(obj: pointer): PMenuClass
+proc needs_destruction_ref_count*(a: var TMenu): guint
+proc set_needs_destruction_ref_count*(a: var TMenu, 
                                       `needs_destruction_ref_count`: guint)
-proc torn_off*(a: var TGtkMenu): guint
-proc set_torn_off*(a: var TGtkMenu, `torn_off`: guint)
-proc tearoff_active*(a: var TGtkMenu): guint
-proc set_tearoff_active*(a: var TGtkMenu, `tearoff_active`: guint)
-proc scroll_fast*(a: var TGtkMenu): guint
-proc set_scroll_fast*(a: var TGtkMenu, `scroll_fast`: guint)
-proc upper_arrow_visible*(a: var TGtkMenu): guint
-proc set_upper_arrow_visible*(a: var TGtkMenu, `upper_arrow_visible`: guint)
-proc lower_arrow_visible*(a: var TGtkMenu): guint
-proc set_lower_arrow_visible*(a: var TGtkMenu, `lower_arrow_visible`: guint)
-proc upper_arrow_prelight*(a: var TGtkMenu): guint
-proc set_upper_arrow_prelight*(a: var TGtkMenu, `upper_arrow_prelight`: guint)
-proc lower_arrow_prelight*(a: var TGtkMenu): guint
-proc set_lower_arrow_prelight*(a: var TGtkMenu, `lower_arrow_prelight`: guint)
-proc gtk_menu_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_menu_get_type".}
-proc gtk_menu_new*(): PGtkMenu {.cdecl, dynlib: gtklib, importc: "gtk_menu_new".}
-proc gtk_menu_popup*(menu: PGtkMenu, parent_menu_shell: PGtkWidget,
-                     parent_menu_item: PGtkWidget, fun: TGtkMenuPositionFunc,
-                     data: gpointer, button: guint, activate_time: guint32){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_popup".}
-proc gtk_menu_reposition*(menu: PGtkMenu){.cdecl, dynlib: gtklib,
-    importc: "gtk_menu_reposition".}
-proc gtk_menu_popdown*(menu: PGtkMenu){.cdecl, dynlib: gtklib,
-                                        importc: "gtk_menu_popdown".}
-proc gtk_menu_get_active*(menu: PGtkMenu): PGtkWidget{.cdecl, dynlib: gtklib,
+proc torn_off*(a: var TMenu): guint
+proc set_torn_off*(a: var TMenu, `torn_off`: guint)
+proc tearoff_active*(a: var TMenu): guint
+proc set_tearoff_active*(a: var TMenu, `tearoff_active`: guint)
+proc scroll_fast*(a: var TMenu): guint
+proc set_scroll_fast*(a: var TMenu, `scroll_fast`: guint)
+proc upper_arrow_visible*(a: var TMenu): guint
+proc set_upper_arrow_visible*(a: var TMenu, `upper_arrow_visible`: guint)
+proc lower_arrow_visible*(a: var TMenu): guint
+proc set_lower_arrow_visible*(a: var TMenu, `lower_arrow_visible`: guint)
+proc upper_arrow_prelight*(a: var TMenu): guint
+proc set_upper_arrow_prelight*(a: var TMenu, `upper_arrow_prelight`: guint)
+proc lower_arrow_prelight*(a: var TMenu): guint
+proc set_lower_arrow_prelight*(a: var TMenu, `lower_arrow_prelight`: guint)
+proc menu_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_menu_get_type".}
+proc menu_new*(): PMenu{.cdecl, dynlib: lib, importc: "gtk_menu_new".}
+proc popup*(menu: PMenu, parent_menu_shell: PWidget, 
+                 parent_menu_item: PWidget, fun: TMenuPositionFunc, 
+                 data: gpointer, button: guint, activate_time: guint32){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_popup".}
+proc reposition*(menu: PMenu){.cdecl, dynlib: lib, 
+                                    importc: "gtk_menu_reposition".}
+proc popdown*(menu: PMenu){.cdecl, dynlib: lib, importc: "gtk_menu_popdown".}
+proc get_active*(menu: PMenu): PWidget{.cdecl, dynlib: lib, 
     importc: "gtk_menu_get_active".}
-proc gtk_menu_set_active*(menu: PGtkMenu, index: guint){.cdecl, dynlib: gtklib,
+proc set_active*(menu: PMenu, index: guint){.cdecl, dynlib: lib, 
     importc: "gtk_menu_set_active".}
-proc gtk_menu_set_accel_group*(menu: PGtkMenu, accel_group: PGtkAccelGroup){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_set_accel_group".}
-proc gtk_menu_get_accel_group*(menu: PGtkMenu): PGtkAccelGroup{.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_get_accel_group".}
-proc gtk_menu_set_accel_path*(menu: PGtkMenu, accel_path: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_set_accel_path".}
-proc gtk_menu_attach_to_widget*(menu: PGtkMenu, attach_widget: PGtkWidget,
-                                detacher: TGtkMenuDetachFunc){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_attach_to_widget".}
-proc gtk_menu_detach*(menu: PGtkMenu){.cdecl, dynlib: gtklib,
-                                       importc: "gtk_menu_detach".}
-proc gtk_menu_get_attach_widget*(menu: PGtkMenu): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_get_attach_widget".}
-proc gtk_menu_set_tearoff_state*(menu: PGtkMenu, torn_off: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_set_tearoff_state".}
-proc gtk_menu_get_tearoff_state*(menu: PGtkMenu): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_get_tearoff_state".}
-proc gtk_menu_set_title*(menu: PGtkMenu, title: cstring){.cdecl, dynlib: gtklib,
+proc set_accel_group*(menu: PMenu, accel_group: PAccelGroup){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_set_accel_group".}
+proc get_accel_group*(menu: PMenu): PAccelGroup{.cdecl, dynlib: lib, 
+    importc: "gtk_menu_get_accel_group".}
+proc set_accel_path*(menu: PMenu, accel_path: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_menu_set_accel_path".}
+proc attach_to_widget*(menu: PMenu, attach_widget: PWidget, 
+                            detacher: TMenuDetachFunc){.cdecl, dynlib: lib, 
+    importc: "gtk_menu_attach_to_widget".}
+proc detach*(menu: PMenu){.cdecl, dynlib: lib, importc: "gtk_menu_detach".}
+proc get_attach_widget*(menu: PMenu): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_menu_get_attach_widget".}
+proc set_tearoff_state*(menu: PMenu, torn_off: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_set_tearoff_state".}
+proc get_tearoff_state*(menu: PMenu): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_menu_get_tearoff_state".}
+proc set_title*(menu: PMenu, title: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_menu_set_title".}
-proc gtk_menu_get_title*(menu: PGtkMenu): cstring{.cdecl, dynlib: gtklib,
+proc get_title*(menu: PMenu): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_menu_get_title".}
-proc gtk_menu_reorder_child*(menu: PGtkMenu, child: PGtkWidget, position: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_menu_reorder_child".}
-proc gtk_menu_set_screen*(menu: PGtkMenu, screen: PGdkScreen){.cdecl,
-    dynlib: gtklib, importc: "gtk_menu_set_screen".}
-const
-  bm_TGtkEntry_editable* = 0x00000001'i16
+proc reorder_child*(menu: PMenu, child: PWidget, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_menu_reorder_child".}
+proc set_screen*(menu: PMenu, screen: gdk2.PScreen){.cdecl, dynlib: lib, 
+    importc: "gtk_menu_set_screen".}
+const 
+  bm_TGtkEntry_editable* = 0x0001'i16
   bp_TGtkEntry_editable* = 0'i16
-  bm_TGtkEntry_visible* = 0x00000002'i16
+  bm_TGtkEntry_visible* = 0x0002'i16
   bp_TGtkEntry_visible* = 1'i16
-  bm_TGtkEntry_overwrite_mode* = 0x00000004'i16
+  bm_TGtkEntry_overwrite_mode* = 0x0004'i16
   bp_TGtkEntry_overwrite_mode* = 2'i16
-  bm_TGtkEntry_in_drag* = 0x00000008'i16
+  bm_TGtkEntry_in_drag* = 0x0008'i16
   bp_TGtkEntry_in_drag* = 3'i16
-  bm_TGtkEntry_cache_includes_preedit* = 0x00000001'i16
+  bm_TGtkEntry_cache_includes_preedit* = 0x0001'i16
   bp_TGtkEntry_cache_includes_preedit* = 0'i16
-  bm_TGtkEntry_need_im_reset* = 0x00000002'i16
+  bm_TGtkEntry_need_im_reset* = 0x0002'i16
   bp_TGtkEntry_need_im_reset* = 1'i16
-  bm_TGtkEntry_has_frame* = 0x00000004'i16
+  bm_TGtkEntry_has_frame* = 0x0004'i16
   bp_TGtkEntry_has_frame* = 2'i16
-  bm_TGtkEntry_activates_default* = 0x00000008'i16
+  bm_TGtkEntry_activates_default* = 0x0008'i16
   bp_TGtkEntry_activates_default* = 3'i16
-  bm_TGtkEntry_cursor_visible* = 0x00000010'i16
+  bm_TGtkEntry_cursor_visible* = 0x0010'i16
   bp_TGtkEntry_cursor_visible* = 4'i16
-  bm_TGtkEntry_in_click* = 0x00000020'i16
+  bm_TGtkEntry_in_click* = 0x0020'i16
   bp_TGtkEntry_in_click* = 5'i16
-  bm_TGtkEntry_is_cell_renderer* = 0x00000040'i16
+  bm_TGtkEntry_is_cell_renderer* = 0x0040'i16
   bp_TGtkEntry_is_cell_renderer* = 6'i16
-  bm_TGtkEntry_editing_canceled* = 0x00000080'i16
+  bm_TGtkEntry_editing_canceled* = 0x0080'i16
   bp_TGtkEntry_editing_canceled* = 7'i16
-  bm_TGtkEntry_mouse_cursor_obscured* = 0x00000100'i16
+  bm_TGtkEntry_mouse_cursor_obscured* = 0x0100'i16
   bp_TGtkEntry_mouse_cursor_obscured* = 8'i16
 
-proc GTK_TYPE_ENTRY*(): GType
-proc GTK_ENTRY*(obj: pointer): PGtkEntry
-proc GTK_ENTRY_CLASS*(klass: pointer): PGtkEntryClass
-proc GTK_IS_ENTRY*(obj: pointer): bool
-proc GTK_IS_ENTRY_CLASS*(klass: pointer): bool
-proc GTK_ENTRY_GET_CLASS*(obj: pointer): PGtkEntryClass
-proc editable*(a: var TGtkEntry): guint
-proc set_editable*(a: var TGtkEntry, `editable`: guint)
-proc visible*(a: var TGtkEntry): guint
-proc set_visible*(a: var TGtkEntry, `visible`: guint)
-proc overwrite_mode*(a: var TGtkEntry): guint
-proc set_overwrite_mode*(a: var TGtkEntry, `overwrite_mode`: guint)
-proc in_drag*(a: var TGtkEntry): guint
-proc set_in_drag*(a: var TGtkEntry, `in_drag`: guint)
-proc cache_includes_preedit*(a: var TGtkEntry): guint
-proc set_cache_includes_preedit*(a: var TGtkEntry,
-                                 `cache_includes_preedit`: guint)
-proc need_im_reset*(a: var TGtkEntry): guint
-proc set_need_im_reset*(a: var TGtkEntry, `need_im_reset`: guint)
-proc has_frame*(a: var TGtkEntry): guint
-proc set_has_frame*(a: var TGtkEntry, `has_frame`: guint)
-proc activates_default*(a: var TGtkEntry): guint
-proc set_activates_default*(a: var TGtkEntry, `activates_default`: guint)
-proc cursor_visible*(a: var TGtkEntry): guint
-proc set_cursor_visible*(a: var TGtkEntry, `cursor_visible`: guint)
-proc in_click*(a: var TGtkEntry): guint
-proc set_in_click*(a: var TGtkEntry, `in_click`: guint)
-proc is_cell_renderer*(a: var TGtkEntry): guint
-proc set_is_cell_renderer*(a: var TGtkEntry, `is_cell_renderer`: guint)
-proc editing_canceled*(a: var TGtkEntry): guint
-proc set_editing_canceled*(a: var TGtkEntry, `editing_canceled`: guint)
-proc mouse_cursor_obscured*(a: var TGtkEntry): guint
-proc set_mouse_cursor_obscured*(a: var TGtkEntry, `mouse_cursor_obscured`: guint)
-proc gtk_entry_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_entry_get_type".}
-proc gtk_entry_new*(): PGtkEntry {.cdecl, dynlib: gtklib,
-                                   importc: "gtk_entry_new".}
-proc gtk_entry_set_visibility*(entry: PGtkEntry, visible: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_set_visibility".}
-proc gtk_entry_get_visibility*(entry: PGtkEntry): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_get_visibility".}
-proc gtk_entry_set_invisible_char*(entry: PGtkEntry, ch: gunichar){.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_set_invisible_char".}
-proc gtk_entry_get_invisible_char*(entry: PGtkEntry): gunichar{.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_get_invisible_char".}
-proc gtk_entry_set_has_frame*(entry: PGtkEntry, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_set_has_frame".}
-proc gtk_entry_get_has_frame*(entry: PGtkEntry): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_get_has_frame".}
-proc gtk_entry_set_max_length*(entry: PGtkEntry, max: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_set_max_length".}
-proc gtk_entry_get_max_length*(entry: PGtkEntry): gint{.cdecl, dynlib: gtklib,
+proc TYPE_ENTRY*(): GType
+proc ENTRY*(obj: pointer): PEntry
+proc ENTRY_CLASS*(klass: pointer): PEntryClass
+proc IS_ENTRY*(obj: pointer): bool
+proc IS_ENTRY_CLASS*(klass: pointer): bool
+proc ENTRY_GET_CLASS*(obj: pointer): PEntryClass
+proc editable*(a: var TEntry): guint
+proc set_editable*(a: var TEntry, `editable`: guint)
+proc visible*(a: var TEntry): guint
+proc set_visible*(a: var TEntry, `visible`: guint)
+proc overwrite_mode*(a: var TEntry): guint
+proc set_overwrite_mode*(a: var TEntry, `overwrite_mode`: guint)
+proc in_drag*(a: var TEntry): guint
+proc set_in_drag*(a: var TEntry, `in_drag`: guint)
+proc cache_includes_preedit*(a: var TEntry): guint
+proc set_cache_includes_preedit*(a: var TEntry, `cache_includes_preedit`: guint)
+proc need_im_reset*(a: var TEntry): guint
+proc set_need_im_reset*(a: var TEntry, `need_im_reset`: guint)
+proc has_frame*(a: var TEntry): guint
+proc set_has_frame*(a: var TEntry, `has_frame`: guint)
+proc activates_default*(a: var TEntry): guint
+proc set_activates_default*(a: var TEntry, `activates_default`: guint)
+proc cursor_visible*(a: var TEntry): guint
+proc set_cursor_visible*(a: var TEntry, `cursor_visible`: guint)
+proc in_click*(a: var TEntry): guint
+proc set_in_click*(a: var TEntry, `in_click`: guint)
+proc is_cell_renderer*(a: var TEntry): guint
+proc set_is_cell_renderer*(a: var TEntry, `is_cell_renderer`: guint)
+proc editing_canceled*(a: var TEntry): guint
+proc set_editing_canceled*(a: var TEntry, `editing_canceled`: guint)
+proc mouse_cursor_obscured*(a: var TEntry): guint
+proc set_mouse_cursor_obscured*(a: var TEntry, `mouse_cursor_obscured`: guint)
+proc entry_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_entry_get_type".}
+proc entry_new*(): PEntry{.cdecl, dynlib: lib, importc: "gtk_entry_new".}
+proc set_visibility*(entry: PEntry, visible: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_entry_set_visibility".}
+proc get_visibility*(entry: PEntry): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_entry_get_visibility".}
+proc set_invisible_char*(entry: PEntry, ch: gunichar){.cdecl, dynlib: lib, 
+    importc: "gtk_entry_set_invisible_char".}
+proc get_invisible_char*(entry: PEntry): gunichar{.cdecl, dynlib: lib, 
+    importc: "gtk_entry_get_invisible_char".}
+proc set_has_frame*(entry: PEntry, setting: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_entry_set_has_frame".}
+proc get_has_frame*(entry: PEntry): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_entry_get_has_frame".}
+proc set_max_length*(entry: PEntry, max: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_entry_set_max_length".}
+proc get_max_length*(entry: PEntry): gint{.cdecl, dynlib: lib, 
     importc: "gtk_entry_get_max_length".}
-proc gtk_entry_set_activates_default*(entry: PGtkEntry, setting: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_entry_set_activates_default".}
-proc gtk_entry_get_activates_default*(entry: PGtkEntry): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_get_activates_default".}
-proc gtk_entry_set_width_chars*(entry: PGtkEntry, n_chars: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_set_width_chars".}
-proc gtk_entry_get_width_chars*(entry: PGtkEntry): gint{.cdecl, dynlib: gtklib,
+proc set_activates_default*(entry: PEntry, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_entry_set_activates_default".}
+proc get_activates_default*(entry: PEntry): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_entry_get_activates_default".}
+proc set_width_chars*(entry: PEntry, n_chars: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_entry_set_width_chars".}
+proc get_width_chars*(entry: PEntry): gint{.cdecl, dynlib: lib, 
     importc: "gtk_entry_get_width_chars".}
-proc gtk_entry_set_text*(entry: PGtkEntry, text: cstring){.cdecl, dynlib: gtklib,
+proc set_text*(entry: PEntry, text: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_entry_set_text".}
-proc gtk_entry_get_text*(entry: PGtkEntry): cstring{.cdecl, dynlib: gtklib,
+proc get_text*(entry: PEntry): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_entry_get_text".}
-proc gtk_entry_get_layout*(entry: PGtkEntry): PPangoLayout{.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_get_layout".}
-proc gtk_entry_get_layout_offsets*(entry: PGtkEntry, x: Pgint, y: Pgint){.cdecl,
-    dynlib: gtklib, importc: "gtk_entry_get_layout_offsets".}
-const
-  GTK_ANCHOR_CENTER* = 0
-  GTK_ANCHOR_NORTH* = 1
-  GTK_ANCHOR_NORTH_WEST* = 2
-  GTK_ANCHOR_NORTH_EAST* = 3
-  GTK_ANCHOR_SOUTH* = 4
-  GTK_ANCHOR_SOUTH_WEST* = 5
-  GTK_ANCHOR_SOUTH_EAST* = 6
-  GTK_ANCHOR_WEST* = 7
-  GTK_ANCHOR_EAST* = 8
-  GTK_ANCHOR_N* = GTK_ANCHOR_NORTH
-  GTK_ANCHOR_NW* = GTK_ANCHOR_NORTH_WEST
-  GTK_ANCHOR_NE* = GTK_ANCHOR_NORTH_EAST
-  GTK_ANCHOR_S* = GTK_ANCHOR_SOUTH
-  GTK_ANCHOR_SW* = GTK_ANCHOR_SOUTH_WEST
-  GTK_ANCHOR_SE* = GTK_ANCHOR_SOUTH_EAST
-  GTK_ANCHOR_W* = GTK_ANCHOR_WEST
-  GTK_ANCHOR_E* = GTK_ANCHOR_EAST
-  GTK_ARROW_UP* = 0
-  GTK_ARROW_DOWN* = 1
-  GTK_ARROW_LEFT* = 2
-  GTK_ARROW_RIGHT* = 3
-  GTK_EXPAND* = 1 shl 0
-  GTK_SHRINK* = 1 shl 1
-  GTK_FILL* = 1 shl 2
-  GTK_BUTTONBOX_DEFAULT_STYLE* = 0
-  GTK_BUTTONBOX_SPREAD* = 1
-  GTK_BUTTONBOX_EDGE* = 2
-  GTK_BUTTONBOX_START* = 3
-  GTK_BUTTONBOX_END* = 4
-  GTK_CURVE_TYPE_LINEAR* = 0
-  GTK_CURVE_TYPE_SPLINE* = 1
-  GTK_CURVE_TYPE_FREE* = 2
-  GTK_DELETE_CHARS* = 0
-  GTK_DELETE_WORD_ENDS* = 1
-  GTK_DELETE_WORDS* = 2
-  GTK_DELETE_DISPLAY_LINES* = 3
-  GTK_DELETE_DISPLAY_LINE_ENDS* = 4
-  GTK_DELETE_PARAGRAPH_ENDS* = 5
-  GTK_DELETE_PARAGRAPHS* = 6
-  GTK_DELETE_WHITESPACE* = 7
-  GTK_DIR_TAB_FORWARD* = 0
-  GTK_DIR_TAB_BACKWARD* = 1
-  GTK_DIR_UP* = 2
-  GTK_DIR_DOWN* = 3
-  GTK_DIR_LEFT* = 4
-  GTK_DIR_RIGHT* = 5
-  GTK_EXPANDER_COLLAPSED* = 0
-  GTK_EXPANDER_SEMI_COLLAPSED* = 1
-  GTK_EXPANDER_SEMI_EXPANDED* = 2
-  GTK_EXPANDER_EXPANDED* = 3
-  GTK_ICON_SIZE_INVALID* = 0
-  GTK_ICON_SIZE_MENU* = 1
-  GTK_ICON_SIZE_SMALL_TOOLBAR* = 2
-  GTK_ICON_SIZE_LARGE_TOOLBAR* = 3
-  GTK_ICON_SIZE_BUTTON* = 4
-  GTK_ICON_SIZE_DND* = 5
-  GTK_ICON_SIZE_DIALOG* = 6
-  GTK_TEXT_DIR_NONE* = 0
-  GTK_TEXT_DIR_LTR* = 1
-  GTK_TEXT_DIR_RTL* = 2
-  GTK_JUSTIFY_LEFT* = 0
-  GTK_JUSTIFY_RIGHT* = 1
-  GTK_JUSTIFY_CENTER* = 2
-  GTK_JUSTIFY_FILL* = 3
-  GTK_MENU_DIR_PARENT* = 0
-  GTK_MENU_DIR_CHILD* = 1
-  GTK_MENU_DIR_NEXT* = 2
-  GTK_MENU_DIR_PREV* = 3
-  GTK_PIXELS* = 0
-  GTK_INCHES* = 1
-  GTK_CENTIMETERS* = 2
-  GTK_MOVEMENT_LOGICAL_POSITIONS* = 0
-  GTK_MOVEMENT_VISUAL_POSITIONS* = 1
-  GTK_MOVEMENT_WORDS* = 2
-  GTK_MOVEMENT_DISPLAY_LINES* = 3
-  GTK_MOVEMENT_DISPLAY_LINE_ENDS* = 4
-  GTK_MOVEMENT_PARAGRAPHS* = 5
-  GTK_MOVEMENT_PARAGRAPH_ENDS* = 6
-  GTK_MOVEMENT_PAGES* = 7
-  GTK_MOVEMENT_BUFFER_ENDS* = 8
-  GTK_ORIENTATION_HORIZONTAL* = 0
-  GTK_ORIENTATION_VERTICAL* = 1
-  GTK_CORNER_TOP_LEFT* = 0
-  GTK_CORNER_BOTTOM_LEFT* = 1
-  GTK_CORNER_TOP_RIGHT* = 2
-  GTK_CORNER_BOTTOM_RIGHT* = 3
-  GTK_PACK_START* = 0
-  GTK_PACK_END* = 1
-  GTK_PATH_PRIO_LOWEST* = 0
-  GTK_PATH_PRIO_GTK* = 4
-  GTK_PATH_PRIO_APPLICATION* = 8
-  GTK_PATH_PRIO_THEME* = 10
-  GTK_PATH_PRIO_RC* = 12
-  GTK_PATH_PRIO_HIGHEST* = 15
-  GTK_PATH_WIDGET* = 0
-  GTK_PATH_WIDGET_CLASS* = 1
-  GTK_PATH_CLASS* = 2
-  GTK_POLICY_ALWAYS* = 0
-  GTK_POLICY_AUTOMATIC* = 1
-  GTK_POLICY_NEVER* = 2
-  GTK_POS_LEFT* = 0
-  GTK_POS_RIGHT* = 1
-  GTK_POS_TOP* = 2
-  GTK_POS_BOTTOM* = 3
-  GTK_PREVIEW_COLOR* = 0
-  GTK_PREVIEW_GRAYSCALE* = 1
-  GTK_RELIEF_NORMAL* = 0
-  GTK_RELIEF_HALF* = 1
-  GTK_RELIEF_NONE* = 2
-  GTK_RESIZE_PARENT* = 0
-  GTK_RESIZE_QUEUE* = 1
-  GTK_RESIZE_IMMEDIATE* = 2
-  GTK_SCROLL_NONE* = 0
-  GTK_SCROLL_JUMP* = 1
-  GTK_SCROLL_STEP_BACKWARD* = 2
-  GTK_SCROLL_STEP_FORWARD* = 3
-  GTK_SCROLL_PAGE_BACKWARD* = 4
-  GTK_SCROLL_PAGE_FORWARD* = 5
-  GTK_SCROLL_STEP_UP* = 6
-  GTK_SCROLL_STEP_DOWN* = 7
-  GTK_SCROLL_PAGE_UP* = 8
-  GTK_SCROLL_PAGE_DOWN* = 9
-  GTK_SCROLL_STEP_LEFT* = 10
-  GTK_SCROLL_STEP_RIGHT* = 11
-  GTK_SCROLL_PAGE_LEFT* = 12
-  GTK_SCROLL_PAGE_RIGHT* = 13
-  GTK_SCROLL_START* = 14
-  GTK_SCROLL_END* = 15
-  GTK_SELECTION_NONE* = 0
-  GTK_SELECTION_SINGLE* = 1
-  GTK_SELECTION_BROWSE* = 2
-  GTK_SELECTION_MULTIPLE* = 3
-  GTK_SELECTION_EXTENDED* = GTK_SELECTION_MULTIPLE
-  GTK_SHADOW_NONE* = 0
-  GTK_SHADOW_IN* = 1
-  GTK_SHADOW_OUT* = 2
-  GTK_SHADOW_ETCHED_IN* = 3
-  GTK_SHADOW_ETCHED_OUT* = 4
-  GTK_STATE_NORMAL* = 0
-  GTK_STATE_ACTIVE* = 1
-  GTK_STATE_PRELIGHT* = 2
-  GTK_STATE_SELECTED* = 3
-  GTK_STATE_INSENSITIVE* = 4
-  GTK_DIRECTION_LEFT* = 0
-  GTK_DIRECTION_RIGHT* = 1
-  GTK_TOP_BOTTOM* = 0
-  GTK_LEFT_RIGHT* = 1
-  GTK_TOOLBAR_ICONS* = 0
-  GTK_TOOLBAR_TEXT* = 1
-  GTK_TOOLBAR_BOTH* = 2
-  GTK_TOOLBAR_BOTH_HORIZ* = 3
-  GTK_UPDATE_CONTINUOUS* = 0
-  GTK_UPDATE_DISCONTINUOUS* = 1
-  GTK_UPDATE_DELAYED* = 2
-  GTK_VISIBILITY_NONE* = 0
-  GTK_VISIBILITY_PARTIAL* = 1
-  GTK_VISIBILITY_FULL* = 2
-  GTK_WIN_POS_NONE* = 0
-  GTK_WIN_POS_CENTER* = 1
-  GTK_WIN_POS_MOUSE* = 2
-  GTK_WIN_POS_CENTER_ALWAYS* = 3
-  GTK_WIN_POS_CENTER_ON_PARENT* = 4
-  GTK_WINDOW_TOPLEVEL* = 0
-  GTK_WINDOW_POPUP* = 1
-  GTK_WRAP_NONE* = 0
-  GTK_WRAP_CHAR* = 1
-  GTK_WRAP_WORD* = 2
-  GTK_SORT_ASCENDING* = 0
-  GTK_SORT_DESCENDING* = 1
-
-proc GTK_TYPE_EVENT_BOX*(): GType
-proc GTK_EVENT_BOX*(obj: pointer): PGtkEventBox
-proc GTK_EVENT_BOX_CLASS*(klass: pointer): PGtkEventBoxClass
-proc GTK_IS_EVENT_BOX*(obj: pointer): bool
-proc GTK_IS_EVENT_BOX_CLASS*(klass: pointer): bool
-proc GTK_EVENT_BOX_GET_CLASS*(obj: pointer): PGtkEventBoxClass
-proc gtk_event_box_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_event_box_get_type".}
-proc gtk_event_box_new*(): PGtkEventBox {.cdecl, dynlib: gtklib,
-                                          importc: "gtk_event_box_new".}
-const
+proc get_layout*(entry: PEntry): pango.PLayout{.cdecl, dynlib: lib, 
+    importc: "gtk_entry_get_layout".}
+proc get_layout_offsets*(entry: PEntry, x: Pgint, y: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_entry_get_layout_offsets".}
+const 
+  ANCHOR_CENTER* = 0
+  ANCHOR_NORTH* = 1
+  ANCHOR_NORTH_WEST* = 2
+  ANCHOR_NORTH_EAST* = 3
+  ANCHOR_SOUTH* = 4
+  ANCHOR_SOUTH_WEST* = 5
+  ANCHOR_SOUTH_EAST* = 6
+  ANCHOR_WEST* = 7
+  ANCHOR_EAST* = 8
+  ANCHOR_N* = ANCHOR_NORTH
+  ANCHOR_NW* = ANCHOR_NORTH_WEST
+  ANCHOR_NE* = ANCHOR_NORTH_EAST
+  ANCHOR_S* = ANCHOR_SOUTH
+  ANCHOR_SW* = ANCHOR_SOUTH_WEST
+  ANCHOR_SE* = ANCHOR_SOUTH_EAST
+  ANCHOR_W* = ANCHOR_WEST
+  ANCHOR_E* = ANCHOR_EAST
+  ARROW_UP* = 0
+  ARROW_DOWN* = 1
+  ARROW_LEFT* = 2
+  ARROW_RIGHT* = 3
+  constEXPAND* = 1 shl 0
+  constSHRINK* = 1 shl 1
+  constFILL* = 1 shl 2
+  BUTTONBOX_DEFAULT_STYLE* = 0
+  BUTTONBOX_SPREAD* = 1
+  BUTTONBOX_EDGE* = 2
+  BUTTONBOX_START* = 3
+  BUTTONBOX_END* = 4
+  CURVE_TYPE_LINEAR* = 0
+  CURVE_TYPE_SPLINE* = 1
+  CURVE_TYPE_FREE* = 2
+  DELETE_CHARS* = 0
+  DELETE_WORD_ENDS* = 1
+  DELETE_WORDS* = 2
+  DELETE_DISPLAY_LINES* = 3
+  DELETE_DISPLAY_LINE_ENDS* = 4
+  DELETE_PARAGRAPH_ENDS* = 5
+  DELETE_PARAGRAPHS* = 6
+  DELETE_WHITESPACE* = 7
+  DIR_TAB_FORWARD* = 0
+  DIR_TAB_BACKWARD* = 1
+  DIR_UP* = 2
+  DIR_DOWN* = 3
+  DIR_LEFT* = 4
+  DIR_RIGHT* = 5
+  EXPANDER_COLLAPSED* = 0
+  EXPANDER_SEMI_COLLAPSED* = 1
+  EXPANDER_SEMI_EXPANDED* = 2
+  EXPANDER_EXPANDED* = 3
+  ICON_SIZE_INVALID* = 0
+  ICON_SIZE_MENU* = 1
+  ICON_SIZE_SMALL_TOOLBAR* = 2
+  ICON_SIZE_LARGE_TOOLBAR* = 3
+  ICON_SIZE_BUTTON* = 4
+  ICON_SIZE_DND* = 5
+  ICON_SIZE_DIALOG* = 6
+  TEXT_DIR_NONE* = 0
+  TEXT_DIR_LTR* = 1
+  TEXT_DIR_RTL* = 2
+  JUSTIFY_LEFT* = 0
+  JUSTIFY_RIGHT* = 1
+  JUSTIFY_CENTER* = 2
+  JUSTIFY_FILL* = 3
+  MENU_DIR_PARENT* = 0
+  MENU_DIR_CHILD* = 1
+  MENU_DIR_NEXT* = 2
+  MENU_DIR_PREV* = 3
+  PIXELS* = 0
+  INCHES* = 1
+  CENTIMETERS* = 2
+  MOVEMENT_LOGICAL_POSITIONS* = 0
+  MOVEMENT_VISUAL_POSITIONS* = 1
+  MOVEMENT_WORDS* = 2
+  MOVEMENT_DISPLAY_LINES* = 3
+  MOVEMENT_DISPLAY_LINE_ENDS* = 4
+  MOVEMENT_PARAGRAPHS* = 5
+  MOVEMENT_PARAGRAPH_ENDS* = 6
+  MOVEMENT_PAGES* = 7
+  MOVEMENT_BUFFER_ENDS* = 8
+  ORIENTATION_HORIZONTAL* = 0
+  ORIENTATION_VERTICAL* = 1
+  CORNER_TOP_LEFT* = 0
+  CORNER_BOTTOM_LEFT* = 1
+  CORNER_TOP_RIGHT* = 2
+  CORNER_BOTTOM_RIGHT* = 3
+  constPACK_START* = 0
+  constPACK_END* = 1
+  PATH_PRIO_LOWEST* = 0
+  PATH_PRIO_GTK* = 4
+  PATH_PRIO_APPLICATION* = 8
+  PATH_PRIO_THEME* = 10
+  PATH_PRIO_RC* = 12
+  PATH_PRIO_HIGHEST* = 15
+  PATH_WIDGET* = 0
+  PATH_WIDGET_CLASS* = 1
+  PATH_CLASS* = 2
+  POLICY_ALWAYS* = 0
+  POLICY_AUTOMATIC* = 1
+  POLICY_NEVER* = 2
+  POS_LEFT* = 0
+  POS_RIGHT* = 1
+  POS_TOP* = 2
+  POS_BOTTOM* = 3
+  PREVIEW_COLOR* = 0
+  PREVIEW_GRAYSCALE* = 1
+  RELIEF_NORMAL* = 0
+  RELIEF_HALF* = 1
+  RELIEF_NONE* = 2
+  RESIZE_PARENT* = 0
+  RESIZE_QUEUE* = 1
+  RESIZE_IMMEDIATE* = 2
+  SCROLL_NONE* = 0
+  SCROLL_JUMP* = 1
+  SCROLL_STEP_BACKWARD* = 2
+  SCROLL_STEP_FORWARD* = 3
+  SCROLL_PAGE_BACKWARD* = 4
+  SCROLL_PAGE_FORWARD* = 5
+  SCROLL_STEP_UP* = 6
+  SCROLL_STEP_DOWN* = 7
+  SCROLL_PAGE_UP* = 8
+  SCROLL_PAGE_DOWN* = 9
+  SCROLL_STEP_LEFT* = 10
+  SCROLL_STEP_RIGHT* = 11
+  SCROLL_PAGE_LEFT* = 12
+  SCROLL_PAGE_RIGHT* = 13
+  SCROLL_START* = 14
+  SCROLL_END* = 15
+  SELECTION_NONE* = 0
+  SELECTION_SINGLE* = 1
+  SELECTION_BROWSE* = 2
+  SELECTION_MULTIPLE* = 3
+  SELECTION_EXTENDED* = SELECTION_MULTIPLE
+  SHADOW_NONE* = 0
+  SHADOW_IN* = 1
+  SHADOW_OUT* = 2
+  SHADOW_ETCHED_IN* = 3
+  SHADOW_ETCHED_OUT* = 4
+  STATE_NORMAL* = 0
+  STATE_ACTIVE* = 1
+  STATE_PRELIGHT* = 2
+  STATE_SELECTED* = 3
+  STATE_INSENSITIVE* = 4
+  DIRECTION_LEFT* = 0
+  DIRECTION_RIGHT* = 1
+  TOP_BOTTOM* = 0
+  LEFT_RIGHT* = 1
+  TOOLBAR_ICONS* = 0
+  TOOLBAR_TEXT* = 1
+  TOOLBAR_BOTH* = 2
+  TOOLBAR_BOTH_HORIZ* = 3
+  UPDATE_CONTINUOUS* = 0
+  UPDATE_DISCONTINUOUS* = 1
+  UPDATE_DELAYED* = 2
+  VISIBILITY_NONE* = 0
+  VISIBILITY_PARTIAL* = 1
+  VISIBILITY_FULL* = 2
+  WIN_POS_NONE* = 0
+  WIN_POS_CENTER* = 1
+  WIN_POS_MOUSE* = 2
+  WIN_POS_CENTER_ALWAYS* = 3
+  WIN_POS_CENTER_ON_PARENT* = 4
+  WINDOW_TOPLEVEL* = 0
+  WINDOW_POPUP* = 1
+  WRAP_NONE* = 0
+  WRAP_CHAR* = 1
+  WRAP_WORD* = 2
+  SORT_ASCENDING* = 0
+  SORT_DESCENDING* = 1
+
+proc TYPE_EVENT_BOX*(): GType
+proc EVENT_BOX*(obj: pointer): PEventBox
+proc EVENT_BOX_CLASS*(klass: pointer): PEventBoxClass
+proc IS_EVENT_BOX*(obj: pointer): bool
+proc IS_EVENT_BOX_CLASS*(klass: pointer): bool
+proc EVENT_BOX_GET_CLASS*(obj: pointer): PEventBoxClass
+proc event_box_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_event_box_get_type".}
+proc event_box_new*(): PEventBox{.cdecl, dynlib: lib, 
+                                  importc: "gtk_event_box_new".}
+const 
   FNM_PATHNAME* = 1 shl 0
   FNM_NOESCAPE* = 1 shl 1
   FNM_PERIOD* = 1 shl 2
 
-const
+const 
   FNM_FILE_NAME* = FNM_PATHNAME
   FNM_LEADING_DIR* = 1 shl 3
   FNM_CASEFOLD* = 1 shl 4
 
-const
+const 
   FNM_NOMATCH* = 1
 
-proc fnmatch*(`pattern`: char, `string`: char, `flags`: gint): gint{.cdecl,
-    dynlib: gtklib, importc: "fnmatch".}
-proc GTK_TYPE_FILE_SELECTION*(): GType
-proc GTK_FILE_SELECTION*(obj: pointer): PGtkFileSelection
-proc GTK_FILE_SELECTION_CLASS*(klass: pointer): PGtkFileSelectionClass
-proc GTK_IS_FILE_SELECTION*(obj: pointer): bool
-proc GTK_IS_FILE_SELECTION_CLASS*(klass: pointer): bool
-proc GTK_FILE_SELECTION_GET_CLASS*(obj: pointer): PGtkFileSelectionClass
-proc gtk_file_selection_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_file_selection_get_type".}
-proc gtk_file_selection_new*(title: cstring): PGtkFileSelection {.cdecl, dynlib: gtklib,
+proc fnmatch*(`pattern`: char, `string`: char, `flags`: gint): gint{.cdecl, 
+    dynlib: lib, importc: "fnmatch".}
+proc TYPE_FILE_SELECTION*(): GType
+proc FILE_SELECTION*(obj: pointer): PFileSelection
+proc FILE_SELECTION_CLASS*(klass: pointer): PFileSelectionClass
+proc IS_FILE_SELECTION*(obj: pointer): bool
+proc IS_FILE_SELECTION_CLASS*(klass: pointer): bool
+proc FILE_SELECTION_GET_CLASS*(obj: pointer): PFileSelectionClass
+proc file_selection_get_type*(): TType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_file_selection_get_type".}
+proc file_selection_new*(title: cstring): PFileSelection{.cdecl, dynlib: lib, 
     importc: "gtk_file_selection_new".}
-proc gtk_file_selection_set_filename*(filesel: PGtkFileSelection,
-                                      filename: cstring){.cdecl, dynlib: gtklib,
-    importc: "gtk_file_selection_set_filename".}
-proc gtk_file_selection_get_filename*(filesel: PGtkFileSelection): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_selection_get_filename".}
-proc gtk_file_selection_complete*(filesel: PGtkFileSelection, pattern: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_file_selection_complete".}
-proc gtk_file_selection_show_fileop_buttons*(filesel: PGtkFileSelection){.cdecl,
-    dynlib: gtklib, importc: "gtk_file_selection_show_fileop_buttons".}
-proc gtk_file_selection_hide_fileop_buttons*(filesel: PGtkFileSelection){.cdecl,
-    dynlib: gtklib, importc: "gtk_file_selection_hide_fileop_buttons".}
-proc gtk_file_selection_get_selections*(filesel: PGtkFileSelection): PPgchar{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_selection_get_selections".}
-proc gtk_file_selection_set_select_multiple*(filesel: PGtkFileSelection,
-    select_multiple: gboolean){.cdecl, dynlib: gtklib, importc: "gtk_file_selection_set_select_multiple".}
-proc gtk_file_selection_get_select_multiple*(filesel: PGtkFileSelection): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_selection_get_select_multiple".}
-proc GTK_TYPE_FIXED*(): GType
-proc GTK_FIXED*(obj: pointer): PGtkFixed
-proc GTK_FIXED_CLASS*(klass: pointer): PGtkFixedClass
-proc GTK_IS_FIXED*(obj: pointer): bool
-proc GTK_IS_FIXED_CLASS*(klass: pointer): bool
-proc GTK_FIXED_GET_CLASS*(obj: pointer): PGtkFixedClass
-proc gtk_fixed_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_fixed_get_type".}
-proc gtk_fixed_new*(): PGtkFixed {.cdecl, dynlib: gtklib,
-                                   importc: "gtk_fixed_new".}
-proc gtk_fixed_put*(fixed: PGtkFixed, widget: PGtkWidget, x: gint, y: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_fixed_put".}
-proc gtk_fixed_move*(fixed: PGtkFixed, widget: PGtkWidget, x: gint, y: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_fixed_move".}
-proc gtk_fixed_set_has_window*(fixed: PGtkFixed, has_window: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_fixed_set_has_window".}
-proc gtk_fixed_get_has_window*(fixed: PGtkFixed): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_fixed_get_has_window".}
-proc GTK_TYPE_FONT_SELECTION*(): GType
-proc GTK_FONT_SELECTION*(obj: pointer): PGtkFontSelection
-proc GTK_FONT_SELECTION_CLASS*(klass: pointer): PGtkFontSelectionClass
-proc GTK_IS_FONT_SELECTION*(obj: pointer): bool
-proc GTK_IS_FONT_SELECTION_CLASS*(klass: pointer): bool
-proc GTK_FONT_SELECTION_GET_CLASS*(obj: pointer): PGtkFontSelectionClass
-proc GTK_TYPE_FONT_SELECTION_DIALOG*(): GType
-proc GTK_FONT_SELECTION_DIALOG*(obj: pointer): PGtkFontSelectionDialog
-proc GTK_FONT_SELECTION_DIALOG_CLASS*(klass: pointer): PGtkFontSelectionDialogClass
-proc GTK_IS_FONT_SELECTION_DIALOG*(obj: pointer): bool
-proc GTK_IS_FONT_SELECTION_DIALOG_CLASS*(klass: pointer): bool
-proc GTK_FONT_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PGtkFontSelectionDialogClass
-proc gtk_font_selection_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_font_selection_get_type".}
-proc gtk_font_selection_new*(): PGtkFontSelection{.cdecl, dynlib: gtklib,
+proc set_filename*(filesel: PFileSelection, filename: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_file_selection_set_filename".}
+proc get_filename*(filesel: PFileSelection): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_file_selection_get_filename".}
+proc complete*(filesel: PFileSelection, pattern: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_file_selection_complete".}
+proc show_fileop_buttons*(filesel: PFileSelection){.cdecl, 
+    dynlib: lib, importc: "gtk_file_selection_show_fileop_buttons".}
+proc hide_fileop_buttons*(filesel: PFileSelection){.cdecl, 
+    dynlib: lib, importc: "gtk_file_selection_hide_fileop_buttons".}
+proc get_selections*(filesel: PFileSelection): PPgchar{.cdecl, 
+    dynlib: lib, importc: "gtk_file_selection_get_selections".}
+proc set_select_multiple*(filesel: PFileSelection, 
+    select_multiple: gboolean){.cdecl, dynlib: lib, importc: "gtk_file_selection_set_select_multiple".}
+proc get_select_multiple*(filesel: PFileSelection): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_selection_get_select_multiple".}
+proc TYPE_FIXED*(): GType
+proc FIXED*(obj: pointer): PFixed
+proc FIXED_CLASS*(klass: pointer): PFixedClass
+proc IS_FIXED*(obj: pointer): bool
+proc IS_FIXED_CLASS*(klass: pointer): bool
+proc FIXED_GET_CLASS*(obj: pointer): PFixedClass
+proc fixed_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_fixed_get_type".}
+proc fixed_new*(): PFixed{.cdecl, dynlib: lib, importc: "gtk_fixed_new".}
+proc put*(fixed: PFixed, widget: PWidget, x: gint, y: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_fixed_put".}
+proc move*(fixed: PFixed, widget: PWidget, x: gint, y: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_fixed_move".}
+proc set_has_window*(fixed: PFixed, has_window: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_fixed_set_has_window".}
+proc get_has_window*(fixed: PFixed): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_fixed_get_has_window".}
+proc TYPE_FONT_SELECTION*(): GType
+proc FONT_SELECTION*(obj: pointer): PFontSelection
+proc FONT_SELECTION_CLASS*(klass: pointer): PFontSelectionClass
+proc IS_FONT_SELECTION*(obj: pointer): bool
+proc IS_FONT_SELECTION_CLASS*(klass: pointer): bool
+proc FONT_SELECTION_GET_CLASS*(obj: pointer): PFontSelectionClass
+proc TYPE_FONT_SELECTION_DIALOG*(): GType
+proc FONT_SELECTION_DIALOG*(obj: pointer): PFontSelectionDialog
+proc FONT_SELECTION_DIALOG_CLASS*(klass: pointer): PFontSelectionDialogClass
+proc IS_FONT_SELECTION_DIALOG*(obj: pointer): bool
+proc IS_FONT_SELECTION_DIALOG_CLASS*(klass: pointer): bool
+proc FONT_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PFontSelectionDialogClass
+proc font_selection_get_type*(): TType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_font_selection_get_type".}
+proc font_selection_new*(): PFontSelection{.cdecl, dynlib: lib, 
     importc: "gtk_font_selection_new".}
-proc gtk_font_selection_get_font_name*(fontsel: PGtkFontSelection): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_font_selection_get_font_name".}
-proc gtk_font_selection_set_font_name*(fontsel: PGtkFontSelection,
-                                       fontname: cstring): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_font_selection_set_font_name".}
-proc gtk_font_selection_get_preview_text*(fontsel: PGtkFontSelection): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_font_selection_get_preview_text".}
-proc gtk_font_selection_set_preview_text*(fontsel: PGtkFontSelection,
-    text: cstring){.cdecl, dynlib: gtklib,
-                   importc: "gtk_font_selection_set_preview_text".}
-proc gtk_font_selection_dialog_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc get_font_name*(fontsel: PFontSelection): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_font_selection_get_font_name".}
+proc set_font_name*(fontsel: PFontSelection, fontname: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_font_selection_set_font_name".}
+proc get_preview_text*(fontsel: PFontSelection): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_font_selection_get_preview_text".}
+proc set_preview_text*(fontsel: PFontSelection, text: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_font_selection_set_preview_text".}
+proc font_selection_dialog_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_font_selection_dialog_get_type".}
-proc gtk_font_selection_dialog_new*(title: cstring): PGtkFontSelectionDialog{.cdecl,
-    dynlib: gtklib, importc: "gtk_font_selection_dialog_new".}
-proc gtk_font_selection_dialog_get_font_name*(fsd: PGtkFontSelectionDialog): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_font_selection_dialog_get_font_name".}
-proc gtk_font_selection_dialog_set_font_name*(fsd: PGtkFontSelectionDialog,
-    fontname: cstring): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_font_selection_dialog_set_font_name".}
-proc gtk_font_selection_dialog_get_preview_text*(fsd: PGtkFontSelectionDialog): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_font_selection_dialog_get_preview_text".}
-proc gtk_font_selection_dialog_set_preview_text*(fsd: PGtkFontSelectionDialog,
-    text: cstring){.cdecl, dynlib: gtklib,
-                   importc: "gtk_font_selection_dialog_set_preview_text".}
-proc GTK_TYPE_GAMMA_CURVE*(): GType
-proc GTK_GAMMA_CURVE*(obj: pointer): PGtkGammaCurve
-proc GTK_GAMMA_CURVE_CLASS*(klass: pointer): PGtkGammaCurveClass
-proc GTK_IS_GAMMA_CURVE*(obj: pointer): bool
-proc GTK_IS_GAMMA_CURVE_CLASS*(klass: pointer): bool
-proc GTK_GAMMA_CURVE_GET_CLASS*(obj: pointer): PGtkGammaCurveClass
-proc gtk_gamma_curve_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_gamma_curve_get_type".}
-proc gtk_gamma_curve_new*(): PGtkGammaCurve{.cdecl, dynlib: gtklib,
-    importc: "gtk_gamma_curve_new".}
-proc gtk_gc_get*(depth: gint, colormap: PGdkColormap, values: PGdkGCValues,
-                 values_mask: TGdkGCValuesMask): PGdkGC{.cdecl, dynlib: gtklib,
+proc font_selection_dialog_new*(title: cstring): PFontSelectionDialog{.cdecl, 
+    dynlib: lib, importc: "gtk_font_selection_dialog_new".}
+proc dialog_get_font_name*(fsd: PFontSelectionDialog): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_font_selection_dialog_get_font_name".}
+proc dialog_set_font_name*(fsd: PFontSelectionDialog, 
+    fontname: cstring): gboolean{.cdecl, dynlib: lib, importc: "gtk_font_selection_dialog_set_font_name".}
+proc dialog_get_preview_text*(fsd: PFontSelectionDialog): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_font_selection_dialog_get_preview_text".}
+proc dialog_set_preview_text*(fsd: PFontSelectionDialog, 
+    text: cstring){.cdecl, dynlib: lib, 
+                    importc: "gtk_font_selection_dialog_set_preview_text".}
+proc TYPE_GAMMA_CURVE*(): GType
+proc GAMMA_CURVE*(obj: pointer): PGammaCurve
+proc GAMMA_CURVE_CLASS*(klass: pointer): PGammaCurveClass
+proc IS_GAMMA_CURVE*(obj: pointer): bool
+proc IS_GAMMA_CURVE_CLASS*(klass: pointer): bool
+proc GAMMA_CURVE_GET_CLASS*(obj: pointer): PGammaCurveClass
+proc gamma_curve_get_type*(): TType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_gamma_curve_get_type".}
+proc gamma_curve_new*(): PGammaCurve{.cdecl, dynlib: lib, 
+                                      importc: "gtk_gamma_curve_new".}
+proc gc_get*(depth: gint, colormap: gdk2.PColormap, values: gdk2.PGCValues, 
+             values_mask: gdk2.TGCValuesMask): gdk2.PGC{.cdecl, dynlib: lib, 
     importc: "gtk_gc_get".}
-proc gtk_gc_release*(gc: PGdkGC){.cdecl, dynlib: gtklib,
-                                  importc: "gtk_gc_release".}
-const
-  bm_TGtkHandleBox_handle_position* = 0x00000003'i16
+proc gc_release*(gc: gdk2.PGC){.cdecl, dynlib: lib, importc: "gtk_gc_release".}
+const 
+  bm_TGtkHandleBox_handle_position* = 0x0003'i16
   bp_TGtkHandleBox_handle_position* = 0'i16
-  bm_TGtkHandleBox_float_window_mapped* = 0x00000004'i16
+  bm_TGtkHandleBox_float_window_mapped* = 0x0004'i16
   bp_TGtkHandleBox_float_window_mapped* = 2'i16
-  bm_TGtkHandleBox_child_detached* = 0x00000008'i16
+  bm_TGtkHandleBox_child_detached* = 0x0008'i16
   bp_TGtkHandleBox_child_detached* = 3'i16
-  bm_TGtkHandleBox_in_drag* = 0x00000010'i16
+  bm_TGtkHandleBox_in_drag* = 0x0010'i16
   bp_TGtkHandleBox_in_drag* = 4'i16
-  bm_TGtkHandleBox_shrink_on_detach* = 0x00000020'i16
+  bm_TGtkHandleBox_shrink_on_detach* = 0x0020'i16
   bp_TGtkHandleBox_shrink_on_detach* = 5'i16
-  bm_TGtkHandleBox_snap_edge* = 0x000001C0'i16
+  bm_TGtkHandleBox_snap_edge* = 0x01C0'i16
   bp_TGtkHandleBox_snap_edge* = 6'i16
 
-proc GTK_TYPE_HANDLE_BOX*(): GType
-proc GTK_HANDLE_BOX*(obj: pointer): PGtkHandleBox
-proc GTK_HANDLE_BOX_CLASS*(klass: pointer): PGtkHandleBoxClass
-proc GTK_IS_HANDLE_BOX*(obj: pointer): bool
-proc GTK_IS_HANDLE_BOX_CLASS*(klass: pointer): bool
-proc GTK_HANDLE_BOX_GET_CLASS*(obj: pointer): PGtkHandleBoxClass
-proc handle_position*(a: var TGtkHandleBox): guint
-proc set_handle_position*(a: var TGtkHandleBox, `handle_position`: guint)
-proc float_window_mapped*(a: var TGtkHandleBox): guint
-proc set_float_window_mapped*(a: var TGtkHandleBox, `float_window_mapped`: guint)
-proc child_detached*(a: var TGtkHandleBox): guint
-proc set_child_detached*(a: var TGtkHandleBox, `child_detached`: guint)
-proc in_drag*(a: var TGtkHandleBox): guint
-proc set_in_drag*(a: var TGtkHandleBox, `in_drag`: guint)
-proc shrink_on_detach*(a: var TGtkHandleBox): guint
-proc set_shrink_on_detach*(a: var TGtkHandleBox, `shrink_on_detach`: guint)
-proc snap_edge*(a: var TGtkHandleBox): gint
-proc set_snap_edge*(a: var TGtkHandleBox, `snap_edge`: gint)
-proc gtk_handle_box_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_handle_box_get_type".}
-proc gtk_handle_box_new*(): PGtkHandleBox{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_handle_box_new".}
-proc gtk_handle_box_set_shadow_type*(handle_box: PGtkHandleBox,
-                                     thetype: TGtkShadowType){.cdecl,
-    dynlib: gtklib, importc: "gtk_handle_box_set_shadow_type".}
-proc gtk_handle_box_get_shadow_type*(handle_box: PGtkHandleBox): TGtkShadowType{.
-    cdecl, dynlib: gtklib, importc: "gtk_handle_box_get_shadow_type".}
-proc gtk_handle_box_set_handle_position*(handle_box: PGtkHandleBox,
-    position: TGtkPositionType){.cdecl, dynlib: gtklib,
-                                 importc: "gtk_handle_box_set_handle_position".}
-proc gtk_handle_box_get_handle_position*(handle_box: PGtkHandleBox): TGtkPositionType{.
-    cdecl, dynlib: gtklib, importc: "gtk_handle_box_get_handle_position".}
-proc gtk_handle_box_set_snap_edge*(handle_box: PGtkHandleBox,
-                                   edge: TGtkPositionType){.cdecl,
-    dynlib: gtklib, importc: "gtk_handle_box_set_snap_edge".}
-proc gtk_handle_box_get_snap_edge*(handle_box: PGtkHandleBox): TGtkPositionType{.
-    cdecl, dynlib: gtklib, importc: "gtk_handle_box_get_snap_edge".}
-const
-  bm_TGtkPaned_position_set* = 0x00000001'i16
+proc TYPE_HANDLE_BOX*(): GType
+proc HANDLE_BOX*(obj: pointer): PHandleBox
+proc HANDLE_BOX_CLASS*(klass: pointer): PHandleBoxClass
+proc IS_HANDLE_BOX*(obj: pointer): bool
+proc IS_HANDLE_BOX_CLASS*(klass: pointer): bool
+proc HANDLE_BOX_GET_CLASS*(obj: pointer): PHandleBoxClass
+proc handle_position*(a: var THandleBox): guint
+proc set_handle_position*(a: var THandleBox, `handle_position`: guint)
+proc float_window_mapped*(a: var THandleBox): guint
+proc set_float_window_mapped*(a: var THandleBox, `float_window_mapped`: guint)
+proc child_detached*(a: var THandleBox): guint
+proc set_child_detached*(a: var THandleBox, `child_detached`: guint)
+proc in_drag*(a: var THandleBox): guint
+proc set_in_drag*(a: var THandleBox, `in_drag`: guint)
+proc shrink_on_detach*(a: var THandleBox): guint
+proc set_shrink_on_detach*(a: var THandleBox, `shrink_on_detach`: guint)
+proc snap_edge*(a: var THandleBox): gint
+proc set_snap_edge*(a: var THandleBox, `snap_edge`: gint)
+proc handle_box_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_handle_box_get_type".}
+proc handle_box_new*(): PHandleBox{.cdecl, dynlib: lib, 
+                                    importc: "gtk_handle_box_new".}
+proc set_shadow_type*(handle_box: PHandleBox, thetype: TShadowType){.
+    cdecl, dynlib: lib, importc: "gtk_handle_box_set_shadow_type".}
+proc get_shadow_type*(handle_box: PHandleBox): TShadowType{.cdecl, 
+    dynlib: lib, importc: "gtk_handle_box_get_shadow_type".}
+proc set_handle_position*(handle_box: PHandleBox, 
+                                     position: TPositionType){.cdecl, 
+    dynlib: lib, importc: "gtk_handle_box_set_handle_position".}
+proc get_handle_position*(handle_box: PHandleBox): TPositionType{.
+    cdecl, dynlib: lib, importc: "gtk_handle_box_get_handle_position".}
+proc set_snap_edge*(handle_box: PHandleBox, edge: TPositionType){.
+    cdecl, dynlib: lib, importc: "gtk_handle_box_set_snap_edge".}
+proc get_snap_edge*(handle_box: PHandleBox): TPositionType{.cdecl, 
+    dynlib: lib, importc: "gtk_handle_box_get_snap_edge".}
+const 
+  bm_TGtkPaned_position_set* = 0x0001'i16
   bp_TGtkPaned_position_set* = 0'i16
-  bm_TGtkPaned_in_drag* = 0x00000002'i16
+  bm_TGtkPaned_in_drag* = 0x0002'i16
   bp_TGtkPaned_in_drag* = 1'i16
-  bm_TGtkPaned_child1_shrink* = 0x00000004'i16
+  bm_TGtkPaned_child1_shrink* = 0x0004'i16
   bp_TGtkPaned_child1_shrink* = 2'i16
-  bm_TGtkPaned_child1_resize* = 0x00000008'i16
+  bm_TGtkPaned_child1_resize* = 0x0008'i16
   bp_TGtkPaned_child1_resize* = 3'i16
-  bm_TGtkPaned_child2_shrink* = 0x00000010'i16
+  bm_TGtkPaned_child2_shrink* = 0x0010'i16
   bp_TGtkPaned_child2_shrink* = 4'i16
-  bm_TGtkPaned_child2_resize* = 0x00000020'i16
+  bm_TGtkPaned_child2_resize* = 0x0020'i16
   bp_TGtkPaned_child2_resize* = 5'i16
-  bm_TGtkPaned_orientation* = 0x00000040'i16
+  bm_TGtkPaned_orientation* = 0x0040'i16
   bp_TGtkPaned_orientation* = 6'i16
-  bm_TGtkPaned_in_recursion* = 0x00000080'i16
+  bm_TGtkPaned_in_recursion* = 0x0080'i16
   bp_TGtkPaned_in_recursion* = 7'i16
-  bm_TGtkPaned_handle_prelit* = 0x00000100'i16
+  bm_TGtkPaned_handle_prelit* = 0x0100'i16
   bp_TGtkPaned_handle_prelit* = 8'i16
 
-proc GTK_TYPE_PANED*(): GType
-proc GTK_PANED*(obj: pointer): PGtkPaned
-proc GTK_PANED_CLASS*(klass: pointer): PGtkPanedClass
-proc GTK_IS_PANED*(obj: pointer): bool
-proc GTK_IS_PANED_CLASS*(klass: pointer): bool
-proc GTK_PANED_GET_CLASS*(obj: pointer): PGtkPanedClass
-proc position_set*(a: var TGtkPaned): guint
-proc set_position_set*(a: var TGtkPaned, `position_set`: guint)
-proc in_drag*(a: var TGtkPaned): guint
-proc set_in_drag*(a: var TGtkPaned, `in_drag`: guint)
-proc child1_shrink*(a: var TGtkPaned): guint
-proc set_child1_shrink*(a: var TGtkPaned, `child1_shrink`: guint)
-proc child1_resize*(a: var TGtkPaned): guint
-proc set_child1_resize*(a: var TGtkPaned, `child1_resize`: guint)
-proc child2_shrink*(a: var TGtkPaned): guint
-proc set_child2_shrink*(a: var TGtkPaned, `child2_shrink`: guint)
-proc child2_resize*(a: var TGtkPaned): guint
-proc set_child2_resize*(a: var TGtkPaned, `child2_resize`: guint)
-proc orientation*(a: var TGtkPaned): guint
-proc set_orientation*(a: var TGtkPaned, `orientation`: guint)
-proc in_recursion*(a: var TGtkPaned): guint
-proc set_in_recursion*(a: var TGtkPaned, `in_recursion`: guint)
-proc handle_prelit*(a: var TGtkPaned): guint
-proc set_handle_prelit*(a: var TGtkPaned, `handle_prelit`: guint)
-proc gtk_paned_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_paned_get_type".}
-proc gtk_paned_add1*(paned: PGtkPaned, child: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_paned_add1".}
-proc gtk_paned_add2*(paned: PGtkPaned, child: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_paned_add2".}
-proc gtk_paned_pack1*(paned: PGtkPaned, child: PGtkWidget, resize: gboolean,
-                      shrink: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_paned_pack1".}
-proc gtk_paned_pack2*(paned: PGtkPaned, child: PGtkWidget, resize: gboolean,
-                      shrink: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_paned_pack2".}
-proc gtk_paned_get_position*(paned: PGtkPaned): gint{.cdecl, dynlib: gtklib,
+proc TYPE_PANED*(): GType
+proc PANED*(obj: pointer): PPaned
+proc PANED_CLASS*(klass: pointer): PPanedClass
+proc IS_PANED*(obj: pointer): bool
+proc IS_PANED_CLASS*(klass: pointer): bool
+proc PANED_GET_CLASS*(obj: pointer): PPanedClass
+proc position_set*(a: var TPaned): guint
+proc set_position_set*(a: var TPaned, `position_set`: guint)
+proc in_drag*(a: var TPaned): guint
+proc set_in_drag*(a: var TPaned, `in_drag`: guint)
+proc child1_shrink*(a: var TPaned): guint
+proc set_child1_shrink*(a: var TPaned, `child1_shrink`: guint)
+proc child1_resize*(a: var TPaned): guint
+proc set_child1_resize*(a: var TPaned, `child1_resize`: guint)
+proc child2_shrink*(a: var TPaned): guint
+proc set_child2_shrink*(a: var TPaned, `child2_shrink`: guint)
+proc child2_resize*(a: var TPaned): guint
+proc set_child2_resize*(a: var TPaned, `child2_resize`: guint)
+proc orientation*(a: var TPaned): guint
+proc set_orientation*(a: var TPaned, `orientation`: guint)
+proc in_recursion*(a: var TPaned): guint
+proc set_in_recursion*(a: var TPaned, `in_recursion`: guint)
+proc handle_prelit*(a: var TPaned): guint
+proc set_handle_prelit*(a: var TPaned, `handle_prelit`: guint)
+proc paned_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_paned_get_type".}
+proc add1*(paned: PPaned, child: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_paned_add1".}
+proc add2*(paned: PPaned, child: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_paned_add2".}
+proc pack1*(paned: PPaned, child: PWidget, resize: gboolean, 
+                  shrink: gboolean){.cdecl, dynlib: lib, 
+                                     importc: "gtk_paned_pack1".}
+proc pack2*(paned: PPaned, child: PWidget, resize: gboolean, 
+                  shrink: gboolean){.cdecl, dynlib: lib, 
+                                     importc: "gtk_paned_pack2".}
+proc get_position*(paned: PPaned): gint{.cdecl, dynlib: lib, 
     importc: "gtk_paned_get_position".}
-proc gtk_paned_set_position*(paned: PGtkPaned, position: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paned_set_position".}
-proc gtk_paned_compute_position*(paned: PGtkPaned, allocation: gint,
-                                 child1_req: gint, child2_req: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paned_compute_position".}
-proc GTK_TYPE_HBUTTON_BOX*(): GType
-proc GTK_HBUTTON_BOX*(obj: pointer): PGtkHButtonBox
-proc GTK_HBUTTON_BOX_CLASS*(klass: pointer): PGtkHButtonBoxClass
-proc GTK_IS_HBUTTON_BOX*(obj: pointer): bool
-proc GTK_IS_HBUTTON_BOX_CLASS*(klass: pointer): bool
-proc GTK_HBUTTON_BOX_GET_CLASS*(obj: pointer): PGtkHButtonBoxClass
-proc gtk_hbutton_box_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_hbutton_box_get_type".}
-proc gtk_hbutton_box_new*(): PGtkHButtonBox{.cdecl, dynlib: gtklib,
-    importc: "gtk_hbutton_box_new".}
-proc GTK_TYPE_HPANED*(): GType
-proc GTK_HPANED*(obj: pointer): PGtkHPaned
-proc GTK_HPANED_CLASS*(klass: pointer): PGtkHPanedClass
-proc GTK_IS_HPANED*(obj: pointer): bool
-proc GTK_IS_HPANED_CLASS*(klass: pointer): bool
-proc GTK_HPANED_GET_CLASS*(obj: pointer): PGtkHPanedClass
-proc gtk_hpaned_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_hpaned_get_type".}
-proc gtk_hpaned_new*(): PGtkHPaned{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_hpaned_new".}
-proc GTK_TYPE_RULER*(): GType
-proc GTK_RULER*(obj: pointer): PGtkRuler
-proc GTK_RULER_CLASS*(klass: pointer): PGtkRulerClass
-proc GTK_IS_RULER*(obj: pointer): bool
-proc GTK_IS_RULER_CLASS*(klass: pointer): bool
-proc GTK_RULER_GET_CLASS*(obj: pointer): PGtkRulerClass
-proc gtk_ruler_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_ruler_get_type".}
-proc gtk_ruler_set_metric*(ruler: PGtkRuler, metric: TGtkMetricType){.cdecl,
-    dynlib: gtklib, importc: "gtk_ruler_set_metric".}
-proc gtk_ruler_set_range*(ruler: PGtkRuler, lower: gdouble, upper: gdouble,
-                          position: gdouble, max_size: gdouble){.cdecl,
-    dynlib: gtklib, importc: "gtk_ruler_set_range".}
-proc gtk_ruler_draw_ticks*(ruler: PGtkRuler){.cdecl, dynlib: gtklib,
-    importc: "gtk_ruler_draw_ticks".}
-proc gtk_ruler_draw_pos*(ruler: PGtkRuler){.cdecl, dynlib: gtklib,
-    importc: "gtk_ruler_draw_pos".}
-proc gtk_ruler_get_metric*(ruler: PGtkRuler): TGtkMetricType{.cdecl,
-    dynlib: gtklib, importc: "gtk_ruler_get_metric".}
-proc gtk_ruler_get_range*(ruler: PGtkRuler, lower: Pgdouble, upper: Pgdouble,
-                          position: Pgdouble, max_size: Pgdouble){.cdecl,
-    dynlib: gtklib, importc: "gtk_ruler_get_range".}
-proc GTK_TYPE_HRULER*(): GType
-proc GTK_HRULER*(obj: pointer): PGtkHRuler
-proc GTK_HRULER_CLASS*(klass: pointer): PGtkHRulerClass
-proc GTK_IS_HRULER*(obj: pointer): bool
-proc GTK_IS_HRULER_CLASS*(klass: pointer): bool
-proc GTK_HRULER_GET_CLASS*(obj: pointer): PGtkHRulerClass
-proc gtk_hruler_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_hruler_get_type".}
-proc gtk_hruler_new*(): PGtkHRuler{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_hruler_new".}
-proc GTK_TYPE_SETTINGS*(): GType
-proc GTK_SETTINGS*(obj: pointer): PGtkSettings
-proc GTK_SETTINGS_CLASS*(klass: pointer): PGtkSettingsClass
-proc GTK_IS_SETTINGS*(obj: pointer): bool
-proc GTK_IS_SETTINGS_CLASS*(klass: pointer): bool
-proc GTK_SETTINGS_GET_CLASS*(obj: pointer): PGtkSettingsClass
-proc gtk_settings_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_settings_get_type".}
-proc gtk_settings_get_for_screen*(screen: PGdkScreen): PGtkSettings{.cdecl,
-    dynlib: gtklib, importc: "gtk_settings_get_for_screen".}
-proc gtk_settings_install_property*(pspec: PGParamSpec){.cdecl, dynlib: gtklib,
+proc set_position*(paned: PPaned, position: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paned_set_position".}
+proc compute_position*(paned: PPaned, allocation: gint, child1_req: gint, 
+                             child2_req: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paned_compute_position".}
+proc TYPE_HBUTTON_BOX*(): GType
+proc HBUTTON_BOX*(obj: pointer): PHButtonBox
+proc HBUTTON_BOX_CLASS*(klass: pointer): PHButtonBoxClass
+proc IS_HBUTTON_BOX*(obj: pointer): bool
+proc IS_HBUTTON_BOX_CLASS*(klass: pointer): bool
+proc HBUTTON_BOX_GET_CLASS*(obj: pointer): PHButtonBoxClass
+proc hbutton_box_get_type*(): TType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_hbutton_box_get_type".}
+proc hbutton_box_new*(): PHButtonBox{.cdecl, dynlib: lib, 
+                                      importc: "gtk_hbutton_box_new".}
+proc TYPE_HPANED*(): GType
+proc HPANED*(obj: pointer): PHPaned
+proc HPANED_CLASS*(klass: pointer): PHPanedClass
+proc IS_HPANED*(obj: pointer): bool
+proc IS_HPANED_CLASS*(klass: pointer): bool
+proc HPANED_GET_CLASS*(obj: pointer): PHPanedClass
+proc hpaned_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_hpaned_get_type".}
+proc hpaned_new*(): PHPaned{.cdecl, dynlib: lib, importc: "gtk_hpaned_new".}
+proc TYPE_RULER*(): GType
+proc RULER*(obj: pointer): PRuler
+proc RULER_CLASS*(klass: pointer): PRulerClass
+proc IS_RULER*(obj: pointer): bool
+proc IS_RULER_CLASS*(klass: pointer): bool
+proc RULER_GET_CLASS*(obj: pointer): PRulerClass
+proc ruler_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_ruler_get_type".}
+proc set_metric*(ruler: PRuler, metric: TMetricType){.cdecl, dynlib: lib, 
+    importc: "gtk_ruler_set_metric".}
+proc set_range*(ruler: PRuler, lower: gdouble, upper: gdouble, 
+                      position: gdouble, max_size: gdouble){.cdecl, dynlib: lib, 
+    importc: "gtk_ruler_set_range".}
+proc draw_ticks*(ruler: PRuler){.cdecl, dynlib: lib, 
+                                       importc: "gtk_ruler_draw_ticks".}
+proc draw_pos*(ruler: PRuler){.cdecl, dynlib: lib, 
+                                     importc: "gtk_ruler_draw_pos".}
+proc get_metric*(ruler: PRuler): TMetricType{.cdecl, dynlib: lib, 
+    importc: "gtk_ruler_get_metric".}
+proc get_range*(ruler: PRuler, lower: Pgdouble, upper: Pgdouble, 
+                      position: Pgdouble, max_size: Pgdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_ruler_get_range".}
+proc TYPE_HRULER*(): GType
+proc HRULER*(obj: pointer): PHRuler
+proc HRULER_CLASS*(klass: pointer): PHRulerClass
+proc IS_HRULER*(obj: pointer): bool
+proc IS_HRULER_CLASS*(klass: pointer): bool
+proc HRULER_GET_CLASS*(obj: pointer): PHRulerClass
+proc hruler_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_hruler_get_type".}
+proc hruler_new*(): PHRuler{.cdecl, dynlib: lib, importc: "gtk_hruler_new".}
+proc TYPE_SETTINGS*(): GType
+proc SETTINGS*(obj: pointer): PSettings
+proc SETTINGS_CLASS*(klass: pointer): PSettingsClass
+proc IS_SETTINGS*(obj: pointer): bool
+proc IS_SETTINGS_CLASS*(klass: pointer): bool
+proc SETTINGS_GET_CLASS*(obj: pointer): PSettingsClass
+proc settings_get_type*(): GType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_settings_get_type".}
+proc settings_get_for_screen*(screen: gdk2.PScreen): PSettings{.cdecl, 
+    dynlib: lib, importc: "gtk_settings_get_for_screen".}
+proc settings_install_property*(pspec: PGParamSpec){.cdecl, dynlib: lib, 
     importc: "gtk_settings_install_property".}
-proc gtk_settings_install_property_parser*(pspec: PGParamSpec,
-    parser: TGtkRcPropertyParser){.cdecl, dynlib: gtklib, importc: "gtk_settings_install_property_parser".}
-proc gtk_rc_property_parse_color*(pspec: PGParamSpec, gstring: PGString,
-                                  property_value: PGValue): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_property_parse_color".}
-proc gtk_rc_property_parse_enum*(pspec: PGParamSpec, gstring: PGString,
-                                 property_value: PGValue): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_property_parse_enum".}
-proc gtk_rc_property_parse_flags*(pspec: PGParamSpec, gstring: PGString,
-                                  property_value: PGValue): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_property_parse_flags".}
-proc gtk_rc_property_parse_requisition*(pspec: PGParamSpec, gstring: PGString,
-                                        property_value: PGValue): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_rc_property_parse_requisition".}
-proc gtk_rc_property_parse_border*(pspec: PGParamSpec, gstring: PGString,
-                                   property_value: PGValue): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_property_parse_border".}
-proc gtk_settings_set_property_value*(settings: PGtkSettings, name: cstring,
-                                      svalue: PGtkSettingsValue){.cdecl,
-    dynlib: gtklib, importc: "gtk_settings_set_property_value".}
-proc gtk_settings_set_string_property*(settings: PGtkSettings, name: cstring,
-                                       v_string: cstring, origin: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_settings_set_string_property".}
-proc gtk_settings_set_long_property*(settings: PGtkSettings, name: cstring,
-                                     v_long: glong, origin: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_settings_set_long_property".}
-proc gtk_settings_set_double_property*(settings: PGtkSettings, name: cstring,
-                                       v_double: gdouble, origin: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_settings_set_double_property".}
-proc gtk_settings_handle_event*(event: PGdkEventSetting){.cdecl,
-    dynlib: gtklib, importc: "_gtk_settings_handle_event".}
-proc gtk_rc_property_parser_from_type*(thetype: GType): TGtkRcPropertyParser{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rc_property_parser_from_type".}
-proc gtk_settings_parse_convert*(parser: TGtkRcPropertyParser,
-                                   src_value: PGValue, pspec: PGParamSpec,
-                                   dest_value: PGValue): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_settings_parse_convert".}
-const
-  GTK_RC_FG* = 1 shl 0
-  GTK_RC_BG* = 1 shl 1
-  GTK_RC_TEXT* = 1 shl 2
-  GTK_RC_BASE* = 1 shl 3
-  bm_TGtkRcStyle_engine_specified* = 0x00000001'i16
+proc settings_install_property_parser*(pspec: PGParamSpec, 
+                                       parser: TRcPropertyParser){.cdecl, 
+    dynlib: lib, importc: "gtk_settings_install_property_parser".}
+proc rc_property_parse_color*(pspec: PGParamSpec, gstring: PGString, 
+                              property_value: PGValue): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_property_parse_color".}
+proc rc_property_parse_enum*(pspec: PGParamSpec, gstring: PGString, 
+                             property_value: PGValue): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_property_parse_enum".}
+proc rc_property_parse_flags*(pspec: PGParamSpec, gstring: PGString, 
+                              property_value: PGValue): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_property_parse_flags".}
+proc rc_property_parse_requisition*(pspec: PGParamSpec, gstring: PGString, 
+                                    property_value: PGValue): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_property_parse_requisition".}
+proc rc_property_parse_border*(pspec: PGParamSpec, gstring: PGString, 
+                               property_value: PGValue): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_property_parse_border".}
+proc set_property_value*(settings: PSettings, name: cstring, 
+                                  svalue: PSettingsValue){.cdecl, dynlib: lib, 
+    importc: "gtk_settings_set_property_value".}
+proc set_string_property*(settings: PSettings, name: cstring, 
+                                   v_string: cstring, origin: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_settings_set_string_property".}
+proc set_long_property*(settings: PSettings, name: cstring, 
+                                 v_long: glong, origin: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_settings_set_long_property".}
+proc set_double_property*(settings: PSettings, name: cstring, 
+                                   v_double: gdouble, origin: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_settings_set_double_property".}
+proc settings_handle_event*(event: gdk2.PEventSetting){.cdecl, dynlib: lib, 
+    importc: "_gtk_settings_handle_event".}
+proc rc_property_parser_from_type*(thetype: GType): TRcPropertyParser{.cdecl, 
+    dynlib: lib, importc: "_gtk_rc_property_parser_from_type".}
+proc settings_parse_convert*(parser: TRcPropertyParser, src_value: PGValue, 
+                             pspec: PGParamSpec, dest_value: PGValue): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_settings_parse_convert".}
+const 
+  RC_FG* = 1 shl 0
+  RC_BG* = 1 shl 1
+  RC_TEXT* = 1 shl 2
+  RC_BASE* = 1 shl 3
+  bm_TGtkRcStyle_engine_specified* = 0x0001'i16
   bp_TGtkRcStyle_engine_specified* = 0'i16
 
-proc GTK_TYPE_RC_STYLE*(): GType
-proc GTK_RC_STYLE_get*(anObject: pointer): PGtkRcStyle
-proc GTK_RC_STYLE_CLASS*(klass: pointer): PGtkRcStyleClass
-proc GTK_IS_RC_STYLE*(anObject: pointer): bool
-proc GTK_IS_RC_STYLE_CLASS*(klass: pointer): bool
-proc GTK_RC_STYLE_GET_CLASS*(obj: pointer): PGtkRcStyleClass
-proc engine_specified*(a: var TGtkRcStyle): guint
-proc set_engine_specified*(a: var TGtkRcStyle, `engine_specified`: guint)
-proc gtk_rc_init*(){.cdecl, dynlib: gtklib, importc: "_gtk_rc_init".}
-proc gtk_rc_add_default_file*(filename: cstring){.cdecl, dynlib: gtklib,
+proc TYPE_RC_STYLE*(): GType
+proc RC_STYLE_get*(anObject: pointer): PRcStyle
+proc RC_STYLE_CLASS*(klass: pointer): PRcStyleClass
+proc IS_RC_STYLE*(anObject: pointer): bool
+proc IS_RC_STYLE_CLASS*(klass: pointer): bool
+proc RC_STYLE_GET_CLASS*(obj: pointer): PRcStyleClass
+proc engine_specified*(a: var TRcStyle): guint
+proc set_engine_specified*(a: var TRcStyle, `engine_specified`: guint)
+proc rc_init*(){.cdecl, dynlib: lib, importc: "_gtk_rc_init".}
+proc rc_add_default_file*(filename: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_rc_add_default_file".}
-proc gtk_rc_set_default_files*(filenames: PPgchar){.cdecl, dynlib: gtklib,
+proc rc_set_default_files*(filenames: PPgchar){.cdecl, dynlib: lib, 
     importc: "gtk_rc_set_default_files".}
-proc gtk_rc_get_default_files*(): PPgchar{.cdecl, dynlib: gtklib,
-    importc: "gtk_rc_get_default_files".}
-proc gtk_rc_get_style*(widget: PGtkWidget): PGtkStyle{.cdecl, dynlib: gtklib,
+proc rc_get_default_files*(): PPgchar{.cdecl, dynlib: lib, 
+                                       importc: "gtk_rc_get_default_files".}
+proc rc_get_style*(widget: PWidget): PStyle{.cdecl, dynlib: lib, 
     importc: "gtk_rc_get_style".}
-proc gtk_rc_get_style_by_paths*(settings: PGtkSettings, widget_path: cstring,
-                                class_path: cstring, thetype: GType): PGtkStyle{.
-    cdecl, dynlib: gtklib, importc: "gtk_rc_get_style_by_paths".}
-proc gtk_rc_reparse_all_for_settings*(settings: PGtkSettings,
-                                      force_load: gboolean): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_reparse_all_for_settings".}
-proc gtk_rc_find_pixmap_in_path*(settings: PGtkSettings, scanner: PGScanner,
-                                 pixmap_file: cstring): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_find_pixmap_in_path".}
-proc gtk_rc_parse*(filename: cstring){.cdecl, dynlib: gtklib,
-                                      importc: "gtk_rc_parse".}
-proc gtk_rc_parse_string*(rc_string: cstring){.cdecl, dynlib: gtklib,
+proc rc_get_style_by_paths*(settings: PSettings, widget_path: cstring, 
+                            class_path: cstring, thetype: GType): PStyle{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_get_style_by_paths".}
+proc rc_reparse_all_for_settings*(settings: PSettings, force_load: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_rc_reparse_all_for_settings".}
+proc rc_find_pixmap_in_path*(settings: PSettings, scanner: PGScanner, 
+                             pixmap_file: cstring): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_rc_find_pixmap_in_path".}
+proc rc_parse*(filename: cstring){.cdecl, dynlib: lib, importc: "gtk_rc_parse".}
+proc rc_parse_string*(rc_string: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_rc_parse_string".}
-proc gtk_rc_reparse_all*(): gboolean{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_rc_reparse_all".}
-proc gtk_rc_style_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_rc_style_get_type".}
-proc gtk_rc_style_new*(): PGtkRcStyle{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_rc_style_new".}
-proc gtk_rc_style_copy*(orig: PGtkRcStyle): PGtkRcStyle{.cdecl, dynlib: gtklib,
+proc rc_reparse_all*(): gboolean{.cdecl, dynlib: lib, 
+                                  importc: "gtk_rc_reparse_all".}
+proc rc_style_get_type*(): GType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_rc_style_get_type".}
+proc rc_style_new*(): PRcStyle{.cdecl, dynlib: lib, importc: "gtk_rc_style_new".}
+proc copy*(orig: PRcStyle): PRcStyle{.cdecl, dynlib: lib, 
     importc: "gtk_rc_style_copy".}
-proc gtk_rc_style_ref*(rc_style: PGtkRcStyle){.cdecl, dynlib: gtklib,
-    importc: "gtk_rc_style_ref".}
-proc gtk_rc_style_unref*(rc_style: PGtkRcStyle){.cdecl, dynlib: gtklib,
+proc reference*(rc_style: PRcStyle){.cdecl, dynlib: lib, 
+                                        importc: "gtk_rc_style_ref".}
+proc unref*(rc_style: PRcStyle){.cdecl, dynlib: lib, 
     importc: "gtk_rc_style_unref".}
-proc gtk_rc_find_module_in_path*(module_file: cstring): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_find_module_in_path".}
-proc gtk_rc_get_theme_dir*(): cstring{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_rc_get_theme_dir".}
-proc gtk_rc_get_module_dir*(): cstring{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_rc_get_module_dir".}
-proc gtk_rc_get_im_module_path*(): cstring{.cdecl, dynlib: gtklib,
-    importc: "gtk_rc_get_im_module_path".}
-proc gtk_rc_get_im_module_file*(): cstring{.cdecl, dynlib: gtklib,
-    importc: "gtk_rc_get_im_module_file".}
-proc gtk_rc_scanner_new*(): PGScanner{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_rc_scanner_new".}
-proc gtk_rc_parse_color*(scanner: PGScanner, color: PGdkColor): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_rc_parse_color".}
-proc gtk_rc_parse_state*(scanner: PGScanner, state: PGtkStateType): guint{.
-    cdecl, dynlib: gtklib, importc: "gtk_rc_parse_state".}
-proc gtk_rc_parse_priority*(scanner: PGScanner, priority: PGtkPathPriorityType): guint{.
-    cdecl, dynlib: gtklib, importc: "gtk_rc_parse_priority".}
-proc gtk_rc_style_lookup_rc_property*(rc_style: PGtkRcStyle,
-                                        type_name: TGQuark,
-                                        property_name: TGQuark): PGtkRcProperty{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rc_style_lookup_rc_property".}
-proc gtk_rc_context_get_default_font_name*(settings: PGtkSettings): cstring{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rc_context_get_default_font_name".}
-proc GTK_TYPE_STYLE*(): GType
-proc GTK_STYLE*(anObject: pointer): PGtkStyle
-proc GTK_STYLE_CLASS*(klass: pointer): PGtkStyleClass
-proc GTK_IS_STYLE*(anObject: pointer): bool
-proc GTK_IS_STYLE_CLASS*(klass: pointer): bool
-proc GTK_STYLE_GET_CLASS*(obj: pointer): PGtkStyleClass
-proc GTK_TYPE_BORDER*(): GType
-proc GTK_STYLE_ATTACHED*(style: pointer): bool
-proc gtk_style_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                   importc: "gtk_style_get_type".}
-proc gtk_style_new*(): PGtkStyle{.cdecl, dynlib: gtklib,
-                                  importc: "gtk_style_new".}
-proc gtk_style_copy*(style: PGtkStyle): PGtkStyle{.cdecl, dynlib: gtklib,
+proc rc_find_module_in_path*(module_file: cstring): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_rc_find_module_in_path".}
+proc rc_get_theme_dir*(): cstring{.cdecl, dynlib: lib, 
+                                   importc: "gtk_rc_get_theme_dir".}
+proc rc_get_module_dir*(): cstring{.cdecl, dynlib: lib, 
+                                    importc: "gtk_rc_get_module_dir".}
+proc rc_get_im_module_path*(): cstring{.cdecl, dynlib: lib, 
+                                        importc: "gtk_rc_get_im_module_path".}
+proc rc_get_im_module_file*(): cstring{.cdecl, dynlib: lib, 
+                                        importc: "gtk_rc_get_im_module_file".}
+proc rc_scanner_new*(): PGScanner{.cdecl, dynlib: lib, 
+                                   importc: "gtk_rc_scanner_new".}
+proc rc_parse_color*(scanner: PGScanner, color: gdk2.PColor): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_parse_color".}
+proc rc_parse_state*(scanner: PGScanner, state: PStateType): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_rc_parse_state".}
+proc rc_parse_priority*(scanner: PGScanner, priority: PPathPriorityType): guint{.
+    cdecl, dynlib: lib, importc: "gtk_rc_parse_priority".}
+proc lookup_rc_property*(rc_style: PRcStyle, type_name: TGQuark, 
+                                  property_name: TGQuark): PRcProperty{.cdecl, 
+    dynlib: lib, importc: "_gtk_rc_style_lookup_rc_property".}
+proc rc_context_get_default_font_name*(settings: PSettings): cstring{.cdecl, 
+    dynlib: lib, importc: "_gtk_rc_context_get_default_font_name".}
+proc TYPE_STYLE*(): GType
+proc STYLE*(anObject: pointer): PStyle
+proc STYLE_CLASS*(klass: pointer): PStyleClass
+proc IS_STYLE*(anObject: pointer): bool
+proc IS_STYLE_CLASS*(klass: pointer): bool
+proc STYLE_GET_CLASS*(obj: pointer): PStyleClass
+proc TYPE_BORDER*(): GType
+proc STYLE_ATTACHED*(style: pointer): bool
+proc style_get_type*(): GType{.cdecl, dynlib: lib, importc: "gtk_style_get_type".}
+proc style_new*(): PStyle{.cdecl, dynlib: lib, importc: "gtk_style_new".}
+proc copy*(style: PStyle): PStyle{.cdecl, dynlib: lib, 
     importc: "gtk_style_copy".}
-proc gtk_style_attach*(style: PGtkStyle, window: PGdkWindow): PGtkStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_style_attach".}
-proc gtk_style_detach*(style: PGtkStyle){.cdecl, dynlib: gtklib,
-    importc: "gtk_style_detach".}
-proc gtk_style_set_background*(style: PGtkStyle, window: PGdkWindow,
-                               state_type: TGtkStateType){.cdecl,
-    dynlib: gtklib, importc: "gtk_style_set_background".}
-proc gtk_style_apply_default_background*(style: PGtkStyle, window: PGdkWindow,
-    set_bg: gboolean, state_type: TGtkStateType, area: PGdkRectangle, x: gint,
-    y: gint, width: gint, height: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_style_apply_default_background".}
-proc gtk_style_lookup_icon_set*(style: PGtkStyle, stock_id: cstring): PGtkIconSet{.
-    cdecl, dynlib: gtklib, importc: "gtk_style_lookup_icon_set".}
-proc gtk_style_render_icon*(style: PGtkStyle, source: PGtkIconSource,
-                            direction: TGtkTextDirection, state: TGtkStateType,
-                            size: TGtkIconSize, widget: PGtkWidget,
-                            detail: cstring): PGdkPixbuf{.cdecl, dynlib: gtklib,
-    importc: "gtk_style_render_icon".}
-proc gtk_paint_hline*(style: PGtkStyle, window: PGdkWindow,
-                      state_type: TGtkStateType, area: PGdkRectangle,
-                      widget: PGtkWidget, detail: cstring, x1: gint, x2: gint,
-                      y: gint){.cdecl, dynlib: gtklib,
-                                importc: "gtk_paint_hline".}
-proc gtk_paint_vline*(style: PGtkStyle, window: PGdkWindow,
-                      state_type: TGtkStateType, area: PGdkRectangle,
-                      widget: PGtkWidget, detail: cstring, y1: gint, y2: gint,
-                      x: gint){.cdecl, dynlib: gtklib,
-                                importc: "gtk_paint_vline".}
-proc gtk_paint_shadow*(style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                       x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_shadow".}
-proc gtk_paint_polygon*(style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                        points: PGdkPoint, npoints: gint, fill: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_paint_polygon".}
-proc gtk_paint_arrow*(style: PGtkStyle, window: PGdkWindow,
-                      state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                      area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                      arrow_type: TGtkArrowType, fill: gboolean, x: gint,
-                      y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_arrow".}
-proc gtk_paint_diamond*(style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                        x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_diamond".}
-proc gtk_paint_box*(style: PGtkStyle, window: PGdkWindow,
-                    state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                    area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                    x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_box".}
-proc gtk_paint_flat_box*(style: PGtkStyle, window: PGdkWindow,
-                         state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                         area: PGdkRectangle, widget: PGtkWidget,
-                         detail: cstring, x: gint, y: gint, width: gint,
-                         height: gint){.cdecl, dynlib: gtklib,
-                                        importc: "gtk_paint_flat_box".}
-proc gtk_paint_check*(style: PGtkStyle, window: PGdkWindow,
-                      state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                      area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                      x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_check".}
-proc gtk_paint_option*(style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                       x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_option".}
-proc gtk_paint_tab*(style: PGtkStyle, window: PGdkWindow,
-                    state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                    area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                    x: gint, y: gint, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_tab".}
-proc gtk_paint_shadow_gap*(style: PGtkStyle, window: PGdkWindow,
-                           state_type: TGtkStateType,
-                           shadow_type: TGtkShadowType, area: PGdkRectangle,
-                           widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                           width: gint, height: gint,
-                           gap_side: TGtkPositionType, gap_x: gint,
-                           gap_width: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_paint_shadow_gap".}
-proc gtk_paint_box_gap*(style: PGtkStyle, window: PGdkWindow,
-                        state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                        area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                        x: gint, y: gint, width: gint, height: gint,
-                        gap_side: TGtkPositionType, gap_x: gint, gap_width: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_paint_box_gap".}
-proc gtk_paint_extension*(style: PGtkStyle, window: PGdkWindow,
-                          state_type: TGtkStateType,
-                          shadow_type: TGtkShadowType, area: PGdkRectangle,
-                          widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                          width: gint, height: gint, gap_side: TGtkPositionType){.
-    cdecl, dynlib: gtklib, importc: "gtk_paint_extension".}
-proc gtk_paint_focus*(style: PGtkStyle, window: PGdkWindow,
-                      state_type: TGtkStateType, area: PGdkRectangle,
-                      widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                      width: gint, height: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_paint_focus".}
-proc gtk_paint_slider*(style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                       x: gint, y: gint, width: gint, height: gint,
-                       orientation: TGtkOrientation){.cdecl, dynlib: gtklib,
-    importc: "gtk_paint_slider".}
-proc gtk_paint_handle*(style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, shadow_type: TGtkShadowType,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                       x: gint, y: gint, width: gint, height: gint,
-                       orientation: TGtkOrientation){.cdecl, dynlib: gtklib,
-    importc: "gtk_paint_handle".}
-proc gtk_paint_expander*(style: PGtkStyle, window: PGdkWindow,
-                         state_type: TGtkStateType, area: PGdkRectangle,
-                         widget: PGtkWidget, detail: cstring, x: gint, y: gint,
-                         expander_style: TGtkExpanderStyle){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_expander".}
-proc gtk_paint_layout*(style: PGtkStyle, window: PGdkWindow,
-                       state_type: TGtkStateType, use_text: gboolean,
-                       area: PGdkRectangle, widget: PGtkWidget, detail: cstring,
-                       x: gint, y: gint, layout: PPangoLayout){.cdecl,
-    dynlib: gtklib, importc: "gtk_paint_layout".}
-proc gtk_paint_resize_grip*(style: PGtkStyle, window: PGdkWindow,
-                            state_type: TGtkStateType, area: PGdkRectangle,
-                            widget: PGtkWidget, detail: cstring,
-                            edge: TGdkWindowEdge, x: gint, y: gint, width: gint,
-                            height: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_paint_resize_grip".}
-proc gtk_border_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_border_get_type".}
-proc gtk_border_copy*(border: PGtkBorder): PGtkBorder{.cdecl, dynlib: gtklib,
+proc attach*(style: PStyle, window: gdk2.PWindow): PStyle{.cdecl, 
+    dynlib: lib, importc: "gtk_style_attach".}
+proc detach*(style: PStyle){.cdecl, dynlib: lib, 
+                                   importc: "gtk_style_detach".}
+proc set_background*(style: PStyle, window: gdk2.PWindow, 
+                           state_type: TStateType){.cdecl, dynlib: lib, 
+    importc: "gtk_style_set_background".}
+proc apply_default_background*(style: PStyle, window: gdk2.PWindow, 
+                                     set_bg: gboolean, state_type: TStateType, 
+                                     area: gdk2.PRectangle, x: gint, y: gint, 
+                                     width: gint, height: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_style_apply_default_background".}
+proc lookup_icon_set*(style: PStyle, stock_id: cstring): PIconSet{.cdecl, 
+    dynlib: lib, importc: "gtk_style_lookup_icon_set".}
+proc render_icon*(style: PStyle, source: PIconSource, 
+                        direction: TTextDirection, state: TStateType, 
+                        size: TIconSize, widget: PWidget, detail: cstring): gdk2pixbuf.PPixbuf{.
+    cdecl, dynlib: lib, importc: "gtk_style_render_icon".}
+proc paint_hline*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                  area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                  x1: gint, x2: gint, y: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_hline".}
+proc paint_vline*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                  area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                  y1: gint, y2: gint, x: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_vline".}
+proc paint_shadow*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                   shadow_type: TShadowType, area: gdk2.PRectangle, 
+                   widget: PWidget, detail: cstring, x: gint, y: gint, 
+                   width: gint, height: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_shadow".}
+proc paint_polygon*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                    shadow_type: TShadowType, area: gdk2.PRectangle, 
+                    widget: PWidget, detail: cstring, points: gdk2.PPoint, 
+                    npoints: gint, fill: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_polygon".}
+proc paint_arrow*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                  shadow_type: TShadowType, area: gdk2.PRectangle, 
+                  widget: PWidget, detail: cstring, arrow_type: TArrowType, 
+                  fill: gboolean, x: gint, y: gint, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "gtk_paint_arrow".}
+proc paint_diamond*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                    shadow_type: TShadowType, area: gdk2.PRectangle, 
+                    widget: PWidget, detail: cstring, x: gint, y: gint, 
+                    width: gint, height: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_diamond".}
+proc paint_box*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                shadow_type: TShadowType, area: gdk2.PRectangle, widget: PWidget, 
+                detail: cstring, x: gint, y: gint, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "gtk_paint_box".}
+proc paint_flat_box*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                     shadow_type: TShadowType, area: gdk2.PRectangle, 
+                     widget: PWidget, detail: cstring, x: gint, y: gint, 
+                     width: gint, height: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_flat_box".}
+proc paint_check*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                  shadow_type: TShadowType, area: gdk2.PRectangle, 
+                  widget: PWidget, detail: cstring, x: gint, y: gint, 
+                  width: gint, height: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_check".}
+proc paint_option*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                   shadow_type: TShadowType, area: gdk2.PRectangle, 
+                   widget: PWidget, detail: cstring, x: gint, y: gint, 
+                   width: gint, height: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_option".}
+proc paint_tab*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                shadow_type: TShadowType, area: gdk2.PRectangle, widget: PWidget, 
+                detail: cstring, x: gint, y: gint, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "gtk_paint_tab".}
+proc paint_shadow_gap*(style: PStyle, window: gdk2.PWindow, 
+                       state_type: TStateType, shadow_type: TShadowType, 
+                       area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                       x: gint, y: gint, width: gint, height: gint, 
+                       gap_side: TPositionType, gap_x: gint, gap_width: gint){.
+    cdecl, dynlib: lib, importc: "gtk_paint_shadow_gap".}
+proc paint_box_gap*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                    shadow_type: TShadowType, area: gdk2.PRectangle, 
+                    widget: PWidget, detail: cstring, x: gint, y: gint, 
+                    width: gint, height: gint, gap_side: TPositionType, 
+                    gap_x: gint, gap_width: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_paint_box_gap".}
+proc paint_extension*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                      shadow_type: TShadowType, area: gdk2.PRectangle, 
+                      widget: PWidget, detail: cstring, x: gint, y: gint, 
+                      width: gint, height: gint, gap_side: TPositionType){.
+    cdecl, dynlib: lib, importc: "gtk_paint_extension".}
+proc paint_focus*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                  area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                  x: gint, y: gint, width: gint, height: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_paint_focus".}
+proc paint_slider*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                   shadow_type: TShadowType, area: gdk2.PRectangle, 
+                   widget: PWidget, detail: cstring, x: gint, y: gint, 
+                   width: gint, height: gint, orientation: TOrientation){.cdecl, 
+    dynlib: lib, importc: "gtk_paint_slider".}
+proc paint_handle*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                   shadow_type: TShadowType, area: gdk2.PRectangle, 
+                   widget: PWidget, detail: cstring, x: gint, y: gint, 
+                   width: gint, height: gint, orientation: TOrientation){.cdecl, 
+    dynlib: lib, importc: "gtk_paint_handle".}
+proc paint_expander*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                     area: gdk2.PRectangle, widget: PWidget, detail: cstring, 
+                     x: gint, y: gint, expander_style: TExpanderStyle){.cdecl, 
+    dynlib: lib, importc: "gtk_paint_expander".}
+proc paint_layout*(style: PStyle, window: gdk2.PWindow, state_type: TStateType, 
+                   use_text: gboolean, area: gdk2.PRectangle, widget: PWidget, 
+                   detail: cstring, x: gint, y: gint, layout: pango.PLayout){.
+    cdecl, dynlib: lib, importc: "gtk_paint_layout".}
+proc paint_resize_grip*(style: PStyle, window: gdk2.PWindow, 
+                        state_type: TStateType, area: gdk2.PRectangle, 
+                        widget: PWidget, detail: cstring, edge: gdk2.TWindowEdge, 
+                        x: gint, y: gint, width: gint, height: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_paint_resize_grip".}
+proc border_get_type*(): GType{.cdecl, dynlib: lib, 
+                                importc: "gtk_border_get_type".}
+proc copy*(border: PBorder): PBorder{.cdecl, dynlib: lib, 
     importc: "gtk_border_copy".}
-proc gtk_border_free*(border: PGtkBorder){.cdecl, dynlib: gtklib,
-    importc: "gtk_border_free".}
-proc gtk_style_peek_property_value*(style: PGtkStyle, widget_type: GType,
-                                      pspec: PGParamSpec,
-                                      parser: TGtkRcPropertyParser): PGValue{.
-    cdecl, dynlib: gtklib, importc: "_gtk_style_peek_property_value".}
-proc gtk_get_insertion_cursor_gc*(widget: PGtkWidget, is_primary: gboolean): PGdkGC{.
-    cdecl, dynlib: gtklib, importc: "_gtk_get_insertion_cursor_gc".}
-proc gtk_draw_insertion_cursor*(widget: PGtkWidget, drawable: PGdkDrawable,
-                                  gc: PGdkGC, location: PGdkRectangle,
-                                  direction: TGtkTextDirection,
-                                  draw_arrow: gboolean){.cdecl, dynlib: gtklib,
+proc free*(border: PBorder){.cdecl, dynlib: lib, 
+                                    importc: "gtk_border_free".}
+proc peek_property_value*(style: PStyle, widget_type: GType, 
+                                pspec: PGParamSpec, parser: TRcPropertyParser): PGValue{.
+    cdecl, dynlib: lib, importc: "_gtk_style_peek_property_value".}
+proc get_insertion_cursor_gc*(widget: PWidget, is_primary: gboolean): gdk2.PGC{.
+    cdecl, dynlib: lib, importc: "_gtk_get_insertion_cursor_gc".}
+proc draw_insertion_cursor*(widget: PWidget, drawable: gdk2.PDrawable, gc: gdk2.PGC, 
+                            location: gdk2.PRectangle, direction: TTextDirection, 
+                            draw_arrow: gboolean){.cdecl, dynlib: lib, 
     importc: "_gtk_draw_insertion_cursor".}
-const
-  bm_TGtkRange_inverted* = 0x00000001'i16
+const 
+  bm_TGtkRange_inverted* = 0x0001'i16
   bp_TGtkRange_inverted* = 0'i16
-  bm_TGtkRange_flippable* = 0x00000002'i16
+  bm_TGtkRange_flippable* = 0x0002'i16
   bp_TGtkRange_flippable* = 1'i16
-  bm_TGtkRange_has_stepper_a* = 0x00000004'i16
+  bm_TGtkRange_has_stepper_a* = 0x0004'i16
   bp_TGtkRange_has_stepper_a* = 2'i16
-  bm_TGtkRange_has_stepper_b* = 0x00000008'i16
+  bm_TGtkRange_has_stepper_b* = 0x0008'i16
   bp_TGtkRange_has_stepper_b* = 3'i16
-  bm_TGtkRange_has_stepper_c* = 0x00000010'i16
+  bm_TGtkRange_has_stepper_c* = 0x0010'i16
   bp_TGtkRange_has_stepper_c* = 4'i16
-  bm_TGtkRange_has_stepper_d* = 0x00000020'i16
+  bm_TGtkRange_has_stepper_d* = 0x0020'i16
   bp_TGtkRange_has_stepper_d* = 5'i16
-  bm_TGtkRange_need_recalc* = 0x00000040'i16
+  bm_TGtkRange_need_recalc* = 0x0040'i16
   bp_TGtkRange_need_recalc* = 6'i16
-  bm_TGtkRange_slider_size_fixed* = 0x00000080'i16
+  bm_TGtkRange_slider_size_fixed* = 0x0080'i16
   bp_TGtkRange_slider_size_fixed* = 7'i16
-  bm_TGtkRange_trough_click_forward* = 0x00000001'i16
+  bm_TGtkRange_trough_click_forward* = 0x0001'i16
   bp_TGtkRange_trough_click_forward* = 0'i16
-  bm_TGtkRange_update_pending* = 0x00000002'i16
+  bm_TGtkRange_update_pending* = 0x0002'i16
   bp_TGtkRange_update_pending* = 1'i16
 
-proc GTK_TYPE_RANGE*(): GType
-proc GTK_RANGE*(obj: pointer): PGtkRange
-proc GTK_RANGE_CLASS*(klass: pointer): PGtkRangeClass
-proc GTK_IS_RANGE*(obj: pointer): bool
-proc GTK_IS_RANGE_CLASS*(klass: pointer): bool
-proc GTK_RANGE_GET_CLASS*(obj: pointer): PGtkRangeClass
-proc inverted*(a: var TGtkRange): guint
-proc set_inverted*(a: var TGtkRange, `inverted`: guint)
-proc flippable*(a: var TGtkRange): guint
-proc set_flippable*(a: var TGtkRange, `flippable`: guint)
-proc has_stepper_a*(a: var TGtkRange): guint
-proc set_has_stepper_a*(a: var TGtkRange, `has_stepper_a`: guint)
-proc has_stepper_b*(a: var TGtkRange): guint
-proc set_has_stepper_b*(a: var TGtkRange, `has_stepper_b`: guint)
-proc has_stepper_c*(a: var TGtkRange): guint
-proc set_has_stepper_c*(a: var TGtkRange, `has_stepper_c`: guint)
-proc has_stepper_d*(a: var TGtkRange): guint
-proc set_has_stepper_d*(a: var TGtkRange, `has_stepper_d`: guint)
-proc need_recalc*(a: var TGtkRange): guint
-proc set_need_recalc*(a: var TGtkRange, `need_recalc`: guint)
-proc slider_size_fixed*(a: var TGtkRange): guint
-proc set_slider_size_fixed*(a: var TGtkRange, `slider_size_fixed`: guint)
-proc trough_click_forward*(a: var TGtkRange): guint
-proc set_trough_click_forward*(a: var TGtkRange, `trough_click_forward`: guint)
-proc update_pending*(a: var TGtkRange): guint
-proc set_update_pending*(a: var TGtkRange, `update_pending`: guint)
-proc gtk_range_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_range_get_type".}
-proc gtk_range_set_update_policy*(range: PGtkRange, policy: TGtkUpdateType){.
-    cdecl, dynlib: gtklib, importc: "gtk_range_set_update_policy".}
-proc gtk_range_get_update_policy*(range: PGtkRange): TGtkUpdateType{.cdecl,
-    dynlib: gtklib, importc: "gtk_range_get_update_policy".}
-proc gtk_range_set_adjustment*(range: PGtkRange, adjustment: PGtkAdjustment){.
-    cdecl, dynlib: gtklib, importc: "gtk_range_set_adjustment".}
-proc gtk_range_get_adjustment*(range: PGtkRange): PGtkAdjustment{.cdecl,
-    dynlib: gtklib, importc: "gtk_range_get_adjustment".}
-proc gtk_range_set_inverted*(range: PGtkRange, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_range_set_inverted".}
-proc gtk_range_get_inverted*(range: PGtkRange): gboolean{.cdecl, dynlib: gtklib,
+proc TYPE_RANGE*(): GType
+proc RANGE*(obj: pointer): PRange
+proc RANGE_CLASS*(klass: pointer): PRangeClass
+proc IS_RANGE*(obj: pointer): bool
+proc IS_RANGE_CLASS*(klass: pointer): bool
+proc RANGE_GET_CLASS*(obj: pointer): PRangeClass
+proc inverted*(a: var TRange): guint
+proc set_inverted*(a: var TRange, `inverted`: guint)
+proc flippable*(a: var TRange): guint
+proc set_flippable*(a: var TRange, `flippable`: guint)
+proc has_stepper_a*(a: var TRange): guint
+proc set_has_stepper_a*(a: var TRange, `has_stepper_a`: guint)
+proc has_stepper_b*(a: var TRange): guint
+proc set_has_stepper_b*(a: var TRange, `has_stepper_b`: guint)
+proc has_stepper_c*(a: var TRange): guint
+proc set_has_stepper_c*(a: var TRange, `has_stepper_c`: guint)
+proc has_stepper_d*(a: var TRange): guint
+proc set_has_stepper_d*(a: var TRange, `has_stepper_d`: guint)
+proc need_recalc*(a: var TRange): guint
+proc set_need_recalc*(a: var TRange, `need_recalc`: guint)
+proc slider_size_fixed*(a: var TRange): guint
+proc set_slider_size_fixed*(a: var TRange, `slider_size_fixed`: guint)
+proc trough_click_forward*(a: var TRange): guint
+proc set_trough_click_forward*(a: var TRange, `trough_click_forward`: guint)
+proc update_pending*(a: var TRange): guint
+proc set_update_pending*(a: var TRange, `update_pending`: guint)
+proc range_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_range_get_type".}
+proc set_update_policy*(range: PRange, policy: TUpdateType){.cdecl, 
+    dynlib: lib, importc: "gtk_range_set_update_policy".}
+proc get_update_policy*(range: PRange): TUpdateType{.cdecl, dynlib: lib, 
+    importc: "gtk_range_get_update_policy".}
+proc set_adjustment*(range: PRange, adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_range_set_adjustment".}
+proc get_adjustment*(range: PRange): PAdjustment{.cdecl, dynlib: lib, 
+    importc: "gtk_range_get_adjustment".}
+proc set_inverted*(range: PRange, setting: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_range_set_inverted".}
+proc get_inverted*(range: PRange): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_range_get_inverted".}
-proc gtk_range_set_increments*(range: PGtkRange, step: gdouble, page: gdouble){.
-    cdecl, dynlib: gtklib, importc: "gtk_range_set_increments".}
-proc gtk_range_set_range*(range: PGtkRange, min: gdouble, max: gdouble){.cdecl,
-    dynlib: gtklib, importc: "gtk_range_set_range".}
-proc gtk_range_set_value*(range: PGtkRange, value: gdouble){.cdecl,
-    dynlib: gtklib, importc: "gtk_range_set_value".}
-proc gtk_range_get_value*(range: PGtkRange): gdouble{.cdecl, dynlib: gtklib,
+proc set_increments*(range: PRange, step: gdouble, page: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_range_set_increments".}
+proc set_range*(range: PRange, min: gdouble, max: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_range_set_range".}
+proc set_value*(range: PRange, value: gdouble){.cdecl, dynlib: lib, 
+    importc: "gtk_range_set_value".}
+proc get_value*(range: PRange): gdouble{.cdecl, dynlib: lib, 
     importc: "gtk_range_get_value".}
-const
-  bm_TGtkScale_draw_value* = 0x00000001'i16
+const 
+  bm_TGtkScale_draw_value* = 0x0001'i16
   bp_TGtkScale_draw_value* = 0'i16
-  bm_TGtkScale_value_pos* = 0x00000006'i16
+  bm_TGtkScale_value_pos* = 0x0006'i16
   bp_TGtkScale_value_pos* = 1'i16
 
-proc GTK_TYPE_SCALE*(): GType
-proc GTK_SCALE*(obj: pointer): PGtkScale
-proc GTK_SCALE_CLASS*(klass: pointer): PGtkScaleClass
-proc GTK_IS_SCALE*(obj: pointer): bool
-proc GTK_IS_SCALE_CLASS*(klass: pointer): bool
-proc GTK_SCALE_GET_CLASS*(obj: pointer): PGtkScaleClass
-proc draw_value*(a: var TGtkScale): guint
-proc set_draw_value*(a: var TGtkScale, `draw_value`: guint)
-proc value_pos*(a: var TGtkScale): guint
-proc set_value_pos*(a: var TGtkScale, `value_pos`: guint)
-proc gtk_scale_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_scale_get_type".}
-proc gtk_scale_set_digits*(scale: PGtkScale, digits: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_scale_set_digits".}
-proc gtk_scale_get_digits*(scale: PGtkScale): gint{.cdecl, dynlib: gtklib,
+proc TYPE_SCALE*(): GType
+proc SCALE*(obj: pointer): PScale
+proc SCALE_CLASS*(klass: pointer): PScaleClass
+proc IS_SCALE*(obj: pointer): bool
+proc IS_SCALE_CLASS*(klass: pointer): bool
+proc SCALE_GET_CLASS*(obj: pointer): PScaleClass
+proc draw_value*(a: var TScale): guint
+proc set_draw_value*(a: var TScale, `draw_value`: guint)
+proc value_pos*(a: var TScale): guint
+proc set_value_pos*(a: var TScale, `value_pos`: guint)
+proc scale_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_scale_get_type".}
+proc set_digits*(scale: PScale, digits: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_scale_set_digits".}
+proc get_digits*(scale: PScale): gint{.cdecl, dynlib: lib, 
     importc: "gtk_scale_get_digits".}
-proc gtk_scale_set_draw_value*(scale: PGtkScale, draw_value: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_scale_set_draw_value".}
-proc gtk_scale_get_draw_value*(scale: PGtkScale): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_scale_get_draw_value".}
-proc gtk_scale_set_value_pos*(scale: PGtkScale, pos: TGtkPositionType){.cdecl,
-    dynlib: gtklib, importc: "gtk_scale_set_value_pos".}
-proc gtk_scale_get_value_pos*(scale: PGtkScale): TGtkPositionType{.cdecl,
-    dynlib: gtklib, importc: "gtk_scale_get_value_pos".}
-proc gtk_scale_get_value_size*(scale: PGtkScale, width: Pgint, height: Pgint){.
-    cdecl, dynlib: gtklib, importc: "_gtk_scale_get_value_size".}
-proc gtk_scale_format_value*(scale: PGtkScale, value: gdouble): cstring{.cdecl,
-    dynlib: gtklib, importc: "_gtk_scale_format_value".}
-proc GTK_TYPE_HSCALE*(): GType
-proc GTK_HSCALE*(obj: pointer): PGtkHScale
-proc GTK_HSCALE_CLASS*(klass: pointer): PGtkHScaleClass
-proc GTK_IS_HSCALE*(obj: pointer): bool
-proc GTK_IS_HSCALE_CLASS*(klass: pointer): bool
-proc GTK_HSCALE_GET_CLASS*(obj: pointer): PGtkHScaleClass
-proc gtk_hscale_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_hscale_get_type".}
-proc gtk_hscale_new*(adjustment: PGtkAdjustment): PGtkHScale{.cdecl,
-    dynlib: gtklib, importc: "gtk_hscale_new".}
-proc gtk_hscale_new_with_range*(min: gdouble, max: gdouble, step: gdouble): PGtkHScale{.
-    cdecl, dynlib: gtklib, importc: "gtk_hscale_new_with_range".}
-proc GTK_TYPE_SCROLLBAR*(): GType
-proc GTK_SCROLLBAR*(obj: pointer): PGtkScrollbar
-proc GTK_SCROLLBAR_CLASS*(klass: pointer): PGtkScrollbarClass
-proc GTK_IS_SCROLLBAR*(obj: pointer): bool
-proc GTK_IS_SCROLLBAR_CLASS*(klass: pointer): bool
-proc GTK_SCROLLBAR_GET_CLASS*(obj: pointer): PGtkScrollbarClass
-proc gtk_scrollbar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_scrollbar_get_type".}
-proc GTK_TYPE_HSCROLLBAR*(): GType
-proc GTK_HSCROLLBAR*(obj: pointer): PGtkHScrollbar
-proc GTK_HSCROLLBAR_CLASS*(klass: pointer): PGtkHScrollbarClass
-proc GTK_IS_HSCROLLBAR*(obj: pointer): bool
-proc GTK_IS_HSCROLLBAR_CLASS*(klass: pointer): bool
-proc GTK_HSCROLLBAR_GET_CLASS*(obj: pointer): PGtkHScrollbarClass
-proc gtk_hscrollbar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_hscrollbar_get_type".}
-proc gtk_hscrollbar_new*(adjustment: PGtkAdjustment): PGtkHScrollbar{.cdecl,
-    dynlib: gtklib, importc: "gtk_hscrollbar_new".}
-proc GTK_TYPE_SEPARATOR*(): GType
-proc GTK_SEPARATOR*(obj: pointer): PGtkSeparator
-proc GTK_SEPARATOR_CLASS*(klass: pointer): PGtkSeparatorClass
-proc GTK_IS_SEPARATOR*(obj: pointer): bool
-proc GTK_IS_SEPARATOR_CLASS*(klass: pointer): bool
-proc GTK_SEPARATOR_GET_CLASS*(obj: pointer): PGtkSeparatorClass
-proc gtk_separator_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_separator_get_type".}
-proc GTK_TYPE_HSEPARATOR*(): GType
-proc GTK_HSEPARATOR*(obj: pointer): PGtkHSeparator
-proc GTK_HSEPARATOR_CLASS*(klass: pointer): PGtkHSeparatorClass
-proc GTK_IS_HSEPARATOR*(obj: pointer): bool
-proc GTK_IS_HSEPARATOR_CLASS*(klass: pointer): bool
-proc GTK_HSEPARATOR_GET_CLASS*(obj: pointer): PGtkHSeparatorClass
-proc gtk_hseparator_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_hseparator_get_type".}
-proc gtk_hseparator_new*(): PGtkHSeparator{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_hseparator_new".}
-proc GTK_TYPE_ICON_FACTORY*(): GType
-proc GTK_ICON_FACTORY*(anObject: pointer): PGtkIconFactory
-proc GTK_ICON_FACTORY_CLASS*(klass: pointer): PGtkIconFactoryClass
-proc GTK_IS_ICON_FACTORY*(anObject: pointer): bool
-proc GTK_IS_ICON_FACTORY_CLASS*(klass: pointer): bool
-proc GTK_ICON_FACTORY_GET_CLASS*(obj: pointer): PGtkIconFactoryClass
-proc GTK_TYPE_ICON_SET*(): GType
-proc GTK_TYPE_ICON_SOURCE*(): GType
-proc gtk_icon_factory_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_icon_factory_get_type".}
-proc gtk_icon_factory_new*(): PGtkIconFactory{.cdecl, dynlib: gtklib,
-    importc: "gtk_icon_factory_new".}
-proc gtk_icon_factory_add*(factory: PGtkIconFactory, stock_id: cstring,
-                           icon_set: PGtkIconSet){.cdecl, dynlib: gtklib,
+proc set_draw_value*(scale: PScale, draw_value: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_scale_set_draw_value".}
+proc get_draw_value*(scale: PScale): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_scale_get_draw_value".}
+proc set_value_pos*(scale: PScale, pos: TPositionType){.cdecl, 
+    dynlib: lib, importc: "gtk_scale_set_value_pos".}
+proc get_value_pos*(scale: PScale): TPositionType{.cdecl, dynlib: lib, 
+    importc: "gtk_scale_get_value_pos".}
+proc get_value_size*(scale: PScale, width: Pgint, height: Pgint){.cdecl, 
+    dynlib: lib, importc: "_gtk_scale_get_value_size".}
+proc format_value*(scale: PScale, value: gdouble): cstring{.cdecl, 
+    dynlib: lib, importc: "_gtk_scale_format_value".}
+proc TYPE_HSCALE*(): GType
+proc HSCALE*(obj: pointer): PHScale
+proc HSCALE_CLASS*(klass: pointer): PHScaleClass
+proc IS_HSCALE*(obj: pointer): bool
+proc IS_HSCALE_CLASS*(klass: pointer): bool
+proc HSCALE_GET_CLASS*(obj: pointer): PHScaleClass
+proc hscale_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_hscale_get_type".}
+proc hscale_new*(adjustment: PAdjustment): PHScale{.cdecl, dynlib: lib, 
+    importc: "gtk_hscale_new".}
+proc hscale_new_with_range*(min: gdouble, max: gdouble, step: gdouble): PHScale{.
+    cdecl, dynlib: lib, importc: "gtk_hscale_new_with_range".}
+proc TYPE_SCROLLBAR*(): GType
+proc SCROLLBAR*(obj: pointer): PScrollbar
+proc SCROLLBAR_CLASS*(klass: pointer): PScrollbarClass
+proc IS_SCROLLBAR*(obj: pointer): bool
+proc IS_SCROLLBAR_CLASS*(klass: pointer): bool
+proc SCROLLBAR_GET_CLASS*(obj: pointer): PScrollbarClass
+proc scrollbar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_scrollbar_get_type".}
+proc TYPE_HSCROLLBAR*(): GType
+proc HSCROLLBAR*(obj: pointer): PHScrollbar
+proc HSCROLLBAR_CLASS*(klass: pointer): PHScrollbarClass
+proc IS_HSCROLLBAR*(obj: pointer): bool
+proc IS_HSCROLLBAR_CLASS*(klass: pointer): bool
+proc HSCROLLBAR_GET_CLASS*(obj: pointer): PHScrollbarClass
+proc hscrollbar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_hscrollbar_get_type".}
+proc hscrollbar_new*(adjustment: PAdjustment): PHScrollbar{.cdecl, dynlib: lib, 
+    importc: "gtk_hscrollbar_new".}
+proc TYPE_SEPARATOR*(): GType
+proc SEPARATOR*(obj: pointer): PSeparator
+proc SEPARATOR_CLASS*(klass: pointer): PSeparatorClass
+proc IS_SEPARATOR*(obj: pointer): bool
+proc IS_SEPARATOR_CLASS*(klass: pointer): bool
+proc SEPARATOR_GET_CLASS*(obj: pointer): PSeparatorClass
+proc separator_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_separator_get_type".}
+proc TYPE_HSEPARATOR*(): GType
+proc HSEPARATOR*(obj: pointer): PHSeparator
+proc HSEPARATOR_CLASS*(klass: pointer): PHSeparatorClass
+proc IS_HSEPARATOR*(obj: pointer): bool
+proc IS_HSEPARATOR_CLASS*(klass: pointer): bool
+proc HSEPARATOR_GET_CLASS*(obj: pointer): PHSeparatorClass
+proc hseparator_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_hseparator_get_type".}
+proc hseparator_new*(): PHSeparator{.cdecl, dynlib: lib, 
+                                     importc: "gtk_hseparator_new".}
+proc TYPE_ICON_FACTORY*(): GType
+proc ICON_FACTORY*(anObject: pointer): PIconFactory
+proc ICON_FACTORY_CLASS*(klass: pointer): PIconFactoryClass
+proc IS_ICON_FACTORY*(anObject: pointer): bool
+proc IS_ICON_FACTORY_CLASS*(klass: pointer): bool
+proc ICON_FACTORY_GET_CLASS*(obj: pointer): PIconFactoryClass
+proc TYPE_ICON_SET*(): GType
+proc TYPE_ICON_SOURCE*(): GType
+proc icon_factory_get_type*(): GType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_icon_factory_get_type".}
+proc icon_factory_new*(): PIconFactory{.cdecl, dynlib: lib, 
+                                        importc: "gtk_icon_factory_new".}
+proc add*(factory: PIconFactory, stock_id: cstring, 
+                       icon_set: PIconSet){.cdecl, dynlib: lib, 
     importc: "gtk_icon_factory_add".}
-proc gtk_icon_factory_lookup*(factory: PGtkIconFactory, stock_id: cstring): PGtkIconSet{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_factory_lookup".}
-proc gtk_icon_factory_add_default*(factory: PGtkIconFactory){.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_factory_add_default".}
-proc gtk_icon_factory_remove_default*(factory: PGtkIconFactory){.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_factory_remove_default".}
-proc gtk_icon_factory_lookup_default*(stock_id: cstring): PGtkIconSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_factory_lookup_default".}
-proc gtk_icon_size_lookup*(size: TGtkIconSize, width: Pgint, height: Pgint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_size_lookup".}
-proc gtk_icon_size_register*(name: cstring, width: gint, height: gint): TGtkIconSize{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_size_register".}
-proc gtk_icon_size_register_alias*(alias: cstring, target: TGtkIconSize){.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_size_register_alias".}
-proc gtk_icon_size_from_name*(name: cstring): TGtkIconSize{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_size_from_name".}
-proc gtk_icon_size_get_name*(size: TGtkIconSize): cstring{.cdecl, dynlib: gtklib,
+proc lookup*(factory: PIconFactory, stock_id: cstring): PIconSet{.
+    cdecl, dynlib: lib, importc: "gtk_icon_factory_lookup".}
+proc add_default*(factory: PIconFactory){.cdecl, dynlib: lib, 
+    importc: "gtk_icon_factory_add_default".}
+proc remove_default*(factory: PIconFactory){.cdecl, dynlib: lib, 
+    importc: "gtk_icon_factory_remove_default".}
+proc icon_factory_lookup_default*(stock_id: cstring): PIconSet{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_factory_lookup_default".}
+proc icon_size_lookup*(size: TIconSize, width: Pgint, height: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_icon_size_lookup".}
+proc icon_size_register*(name: cstring, width: gint, height: gint): TIconSize{.
+    cdecl, dynlib: lib, importc: "gtk_icon_size_register".}
+proc icon_size_register_alias*(alias: cstring, target: TIconSize){.cdecl, 
+    dynlib: lib, importc: "gtk_icon_size_register_alias".}
+proc icon_size_from_name*(name: cstring): TIconSize{.cdecl, dynlib: lib, 
+    importc: "gtk_icon_size_from_name".}
+proc icon_size_get_name*(size: TIconSize): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_icon_size_get_name".}
-proc gtk_icon_set_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_icon_set_get_type".}
-proc gtk_icon_set_new*(): PGtkIconSet{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_icon_set_new".}
-proc gtk_icon_set_new_from_pixbuf*(pixbuf: PGdkPixbuf): PGtkIconSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_set_new_from_pixbuf".}
-proc gtk_icon_set_ref*(icon_set: PGtkIconSet): PGtkIconSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_set_ref".}
-proc gtk_icon_set_unref*(icon_set: PGtkIconSet){.cdecl, dynlib: gtklib,
+proc icon_set_get_type*(): GType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_icon_set_get_type".}
+proc icon_set_new*(): PIconSet{.cdecl, dynlib: lib, importc: "gtk_icon_set_new".}
+proc icon_set_new_from_pixbuf*(pixbuf: gdk2pixbuf.PPixbuf): PIconSet{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_set_new_from_pixbuf".}
+proc reference*(icon_set: PIconSet): PIconSet{.cdecl, dynlib: lib, 
+    importc: "gtk_icon_set_ref".}
+proc unref*(icon_set: PIconSet){.cdecl, dynlib: lib, 
     importc: "gtk_icon_set_unref".}
-proc gtk_icon_set_copy*(icon_set: PGtkIconSet): PGtkIconSet{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_set_copy".}
-proc gtk_icon_set_render_icon*(icon_set: PGtkIconSet, style: PGtkStyle,
-                               direction: TGtkTextDirection,
-                               state: TGtkStateType, size: TGtkIconSize,
-                               widget: PGtkWidget, detail: cstring): PGdkPixbuf{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_set_render_icon".}
-proc gtk_icon_set_add_source*(icon_set: PGtkIconSet, source: PGtkIconSource){.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_set_add_source".}
-proc gtk_icon_set_get_sizes*(icon_set: PGtkIconSet, sizes: PPGtkIconSize,
-                             n_sizes: pgint){.cdecl, dynlib: gtklib,
+proc copy*(icon_set: PIconSet): PIconSet{.cdecl, dynlib: lib, 
+    importc: "gtk_icon_set_copy".}
+proc render_icon*(icon_set: PIconSet, style: PStyle, 
+                           direction: TTextDirection, state: TStateType, 
+                           size: TIconSize, widget: PWidget, detail: cstring): gdk2pixbuf.PPixbuf{.
+    cdecl, dynlib: lib, importc: "gtk_icon_set_render_icon".}
+proc add_source*(icon_set: PIconSet, source: PIconSource){.cdecl, 
+    dynlib: lib, importc: "gtk_icon_set_add_source".}
+proc get_sizes*(icon_set: PIconSet, sizes: PPGtkIconSize, 
+                         n_sizes: pgint){.cdecl, dynlib: lib, 
     importc: "gtk_icon_set_get_sizes".}
-proc gtk_icon_source_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_icon_source_get_type".}
-proc gtk_icon_source_new*(): PGtkIconSource{.cdecl, dynlib: gtklib,
-    importc: "gtk_icon_source_new".}
-proc gtk_icon_source_copy*(source: PGtkIconSource): PGtkIconSource{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_source_copy".}
-proc gtk_icon_source_free*(source: PGtkIconSource){.cdecl, dynlib: gtklib,
+proc icon_source_get_type*(): GType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_icon_source_get_type".}
+proc icon_source_new*(): PIconSource{.cdecl, dynlib: lib, 
+                                      importc: "gtk_icon_source_new".}
+proc copy*(source: PIconSource): PIconSource{.cdecl, dynlib: lib, 
+    importc: "gtk_icon_source_copy".}
+proc free*(source: PIconSource){.cdecl, dynlib: lib, 
     importc: "gtk_icon_source_free".}
-proc gtk_icon_source_set_filename*(source: PGtkIconSource, filename: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_set_filename".}
-proc gtk_icon_source_set_pixbuf*(source: PGtkIconSource, pixbuf: PGdkPixbuf){.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_set_pixbuf".}
-proc gtk_icon_source_get_filename*(source: PGtkIconSource): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_source_get_filename".}
-proc gtk_icon_source_get_pixbuf*(source: PGtkIconSource): PGdkPixbuf{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_source_get_pixbuf".}
-proc gtk_icon_source_set_direction_wildcarded*(source: PGtkIconSource,
-    setting: gboolean){.cdecl, dynlib: gtklib,
+proc set_filename*(source: PIconSource, filename: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_set_filename".}
+proc set_pixbuf*(source: PIconSource, pixbuf: gdk2pixbuf.PPixbuf){.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_set_pixbuf".}
+proc get_filename*(source: PIconSource): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_get_filename".}
+proc get_pixbuf*(source: PIconSource): gdk2pixbuf.PPixbuf{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_get_pixbuf".}
+proc set_direction_wildcarded*(source: PIconSource, 
+    setting: gboolean){.cdecl, dynlib: lib, 
                         importc: "gtk_icon_source_set_direction_wildcarded".}
-proc gtk_icon_source_set_state_wildcarded*(source: PGtkIconSource,
-    setting: gboolean){.cdecl, dynlib: gtklib,
-                        importc: "gtk_icon_source_set_state_wildcarded".}
-proc gtk_icon_source_set_size_wildcarded*(source: PGtkIconSource,
-    setting: gboolean){.cdecl, dynlib: gtklib,
-                        importc: "gtk_icon_source_set_size_wildcarded".}
-proc gtk_icon_source_get_size_wildcarded*(source: PGtkIconSource): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_get_size_wildcarded".}
-proc gtk_icon_source_get_state_wildcarded*(source: PGtkIconSource): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_get_state_wildcarded".}
-proc gtk_icon_source_get_direction_wildcarded*(source: PGtkIconSource): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_get_direction_wildcarded".}
-proc gtk_icon_source_set_direction*(source: PGtkIconSource,
-                                    direction: TGtkTextDirection){.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_source_set_direction".}
-proc gtk_icon_source_set_state*(source: PGtkIconSource, state: TGtkStateType){.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_set_state".}
-proc gtk_icon_source_set_size*(source: PGtkIconSource, size: TGtkIconSize){.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_set_size".}
-proc gtk_icon_source_get_direction*(source: PGtkIconSource): TGtkTextDirection{.
-    cdecl, dynlib: gtklib, importc: "gtk_icon_source_get_direction".}
-proc gtk_icon_source_get_state*(source: PGtkIconSource): TGtkStateType{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_source_get_state".}
-proc gtk_icon_source_get_size*(source: PGtkIconSource): TGtkIconSize{.cdecl,
-    dynlib: gtklib, importc: "gtk_icon_source_get_size".}
-proc gtk_icon_set_invalidate_caches*(){.cdecl, dynlib: gtklib,
-    importc: "_gtk_icon_set_invalidate_caches".}
-proc gtk_icon_factory_list_ids*(): PGSList{.cdecl, dynlib: gtklib,
-    importc: "_gtk_icon_factory_list_ids".}
-proc GTK_TYPE_IMAGE*(): GType
-proc GTK_IMAGE*(obj: pointer): PGtkImage
-proc GTK_IMAGE_CLASS*(klass: pointer): PGtkImageClass
-proc GTK_IS_IMAGE*(obj: pointer): bool
-proc GTK_IS_IMAGE_CLASS*(klass: pointer): bool
-proc GTK_IMAGE_GET_CLASS*(obj: pointer): PGtkImageClass
-proc gtk_image_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_image_get_type".}
-proc gtk_image_new*(): PGtkImage{.cdecl, dynlib: gtklib,
-                                   importc: "gtk_image_new".}
-proc gtk_image_new_from_pixmap*(pixmap: PGdkPixmap, mask: PGdkBitmap): PGtkImage{.
-    cdecl, dynlib: gtklib, importc: "gtk_image_new_from_pixmap".}
-proc gtk_image_new_from_image*(image: PGdkImage, mask: PGdkBitmap): PGtkImage{.
-    cdecl, dynlib: gtklib, importc: "gtk_image_new_from_image".}
-proc gtk_image_new_from_file*(filename: cstring): PGtkImage{.cdecl,
-    dynlib: gtklib, importc: "gtk_image_new_from_file".}
-proc gtk_image_new_from_pixbuf*(pixbuf: PGdkPixbuf): PGtkImage{.cdecl,
-    dynlib: gtklib, importc: "gtk_image_new_from_pixbuf".}
-proc gtk_image_new_from_stock*(stock_id: cstring, size: TGtkIconSize): PGtkImage{.
-    cdecl, dynlib: gtklib, importc: "gtk_image_new_from_stock".}
-proc gtk_image_new_from_icon_set*(icon_set: PGtkIconSet, size: TGtkIconSize): PGtkImage{.
-    cdecl, dynlib: gtklib, importc: "gtk_image_new_from_icon_set".}
-proc gtk_image_new_from_animation*(animation: PGdkPixbufAnimation): PGtkImage{.
-    cdecl, dynlib: gtklib, importc: "gtk_image_new_from_animation".}
-proc gtk_image_set_from_pixmap*(image: PGtkImage, pixmap: PGdkPixmap,
-                                mask: PGdkBitmap){.cdecl, dynlib: gtklib,
-    importc: "gtk_image_set_from_pixmap".}
-proc gtk_image_set_from_image*(image: PGtkImage, gdk_image: PGdkImage,
-                               mask: PGdkBitmap){.cdecl, dynlib: gtklib,
-    importc: "gtk_image_set_from_image".}
-proc gtk_image_set_from_file*(image: PGtkImage, filename: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_image_set_from_file".}
-proc gtk_image_set_from_pixbuf*(image: PGtkImage, pixbuf: PGdkPixbuf){.cdecl,
-    dynlib: gtklib, importc: "gtk_image_set_from_pixbuf".}
-proc gtk_image_set_from_stock*(image: PGtkImage, stock_id: cstring,
-                               size: TGtkIconSize){.cdecl, dynlib: gtklib,
-    importc: "gtk_image_set_from_stock".}
-proc gtk_image_set_from_icon_set*(image: PGtkImage, icon_set: PGtkIconSet,
-                                  size: TGtkIconSize){.cdecl, dynlib: gtklib,
-    importc: "gtk_image_set_from_icon_set".}
-proc gtk_image_set_from_animation*(image: PGtkImage,
-                                   animation: PGdkPixbufAnimation){.cdecl,
-    dynlib: gtklib, importc: "gtk_image_set_from_animation".}
-proc gtk_image_get_storage_type*(image: PGtkImage): TGtkImageType{.cdecl,
-    dynlib: gtklib, importc: "gtk_image_get_storage_type".}
-proc gtk_image_get_pixbuf*(image: PGtkImage): PGdkPixbuf{.cdecl, dynlib: gtklib,
+proc set_state_wildcarded*(source: PIconSource, setting: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_icon_source_set_state_wildcarded".}
+proc set_size_wildcarded*(source: PIconSource, setting: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_icon_source_set_size_wildcarded".}
+proc get_size_wildcarded*(source: PIconSource): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_get_size_wildcarded".}
+proc get_state_wildcarded*(source: PIconSource): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_get_state_wildcarded".}
+proc get_direction_wildcarded*(source: PIconSource): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_icon_source_get_direction_wildcarded".}
+proc set_direction*(source: PIconSource, direction: TTextDirection){.
+    cdecl, dynlib: lib, importc: "gtk_icon_source_set_direction".}
+proc set_state*(source: PIconSource, state: TStateType){.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_set_state".}
+proc set_size*(source: PIconSource, size: TIconSize){.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_set_size".}
+proc get_direction*(source: PIconSource): TTextDirection{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_get_direction".}
+proc get_state*(source: PIconSource): TStateType{.cdecl, 
+    dynlib: lib, importc: "gtk_icon_source_get_state".}
+proc get_size*(source: PIconSource): TIconSize{.cdecl, dynlib: lib, 
+    importc: "gtk_icon_source_get_size".}
+proc icon_set_invalidate_caches*(){.cdecl, dynlib: lib, 
+                                    importc: "_gtk_icon_set_invalidate_caches".}
+proc icon_factory_list_ids*(): PGSList{.cdecl, dynlib: lib, 
+                                        importc: "_gtk_icon_factory_list_ids".}
+proc TYPE_IMAGE*(): GType
+proc IMAGE*(obj: pointer): PImage
+proc IMAGE_CLASS*(klass: pointer): PImageClass
+proc IS_IMAGE*(obj: pointer): bool
+proc IS_IMAGE_CLASS*(klass: pointer): bool
+proc IMAGE_GET_CLASS*(obj: pointer): PImageClass
+proc image_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_image_get_type".}
+proc image_new*(): PImage{.cdecl, dynlib: lib, importc: "gtk_image_new".}
+proc image_new_from_pixmap*(pixmap: gdk2.PPixmap, mask: gdk2.PBitmap): PImage{.
+    cdecl, dynlib: lib, importc: "gtk_image_new_from_pixmap".}
+proc image_new_from_image*(image: gdk2.PImage, mask: gdk2.PBitmap): PImage{.cdecl, 
+    dynlib: lib, importc: "gtk_image_new_from_image".}
+proc image_new_from_file*(filename: cstring): PImage{.cdecl, dynlib: lib, 
+    importc: "gtk_image_new_from_file".}
+proc image_new_from_pixbuf*(pixbuf: gdk2pixbuf.PPixbuf): PImage{.cdecl, dynlib: lib, 
+    importc: "gtk_image_new_from_pixbuf".}
+proc image_new_from_stock*(stock_id: cstring, size: TIconSize): PImage{.cdecl, 
+    dynlib: lib, importc: "gtk_image_new_from_stock".}
+proc image_new_from_icon_set*(icon_set: PIconSet, size: TIconSize): PImage{.
+    cdecl, dynlib: lib, importc: "gtk_image_new_from_icon_set".}
+proc image_new_from_animation*(animation: gdk2pixbuf.PPixbufAnimation): PImage{.cdecl, 
+    dynlib: lib, importc: "gtk_image_new_from_animation".}
+proc set_from_pixmap*(image: PImage, pixmap: gdk2.PPixmap, mask: gdk2.PBitmap){.
+    cdecl, dynlib: lib, importc: "gtk_image_set_from_pixmap".}
+proc set_from_image*(image: PImage, gdk_image: gdk2.PImage, mask: gdk2.PBitmap){.
+    cdecl, dynlib: lib, importc: "gtk_image_set_from_image".}
+proc set_from_file*(image: PImage, filename: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_image_set_from_file".}
+proc set_from_pixbuf*(image: PImage, pixbuf: gdk2pixbuf.PPixbuf){.cdecl, 
+    dynlib: lib, importc: "gtk_image_set_from_pixbuf".}
+proc set_from_stock*(image: PImage, stock_id: cstring, size: TIconSize){.
+    cdecl, dynlib: lib, importc: "gtk_image_set_from_stock".}
+proc set_from_icon_set*(image: PImage, icon_set: PIconSet, size: TIconSize){.
+    cdecl, dynlib: lib, importc: "gtk_image_set_from_icon_set".}
+proc set_from_animation*(image: PImage, animation: gdk2pixbuf.PPixbufAnimation){.
+    cdecl, dynlib: lib, importc: "gtk_image_set_from_animation".}
+proc get_storage_type*(image: PImage): TImageType{.cdecl, dynlib: lib, 
+    importc: "gtk_image_get_storage_type".}
+proc get_pixbuf*(image: PImage): gdk2pixbuf.PPixbuf{.cdecl, dynlib: lib, 
     importc: "gtk_image_get_pixbuf".}
-proc gtk_image_get_stock*(image: PGtkImage, stock_id: PPgchar,
-                          size: PGtkIconSize){.cdecl, dynlib: gtklib,
-    importc: "gtk_image_get_stock".}
-proc gtk_image_get_animation*(image: PGtkImage): PGdkPixbufAnimation{.cdecl,
-    dynlib: gtklib, importc: "gtk_image_get_animation".}
-proc GTK_TYPE_IMAGE_MENU_ITEM*(): GType
-proc GTK_IMAGE_MENU_ITEM*(obj: pointer): PGtkImageMenuItem
-proc GTK_IMAGE_MENU_ITEM_CLASS*(klass: pointer): PGtkImageMenuItemClass
-proc GTK_IS_IMAGE_MENU_ITEM*(obj: pointer): bool
-proc GTK_IS_IMAGE_MENU_ITEM_CLASS*(klass: pointer): bool
-proc GTK_IMAGE_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkImageMenuItemClass
-proc gtk_image_menu_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc get_stock*(image: PImage, stock_id: PPgchar, size: PIconSize){.cdecl, 
+    dynlib: lib, importc: "gtk_image_get_stock".}
+proc get_animation*(image: PImage): gdk2pixbuf.PPixbufAnimation{.cdecl, 
+    dynlib: lib, importc: "gtk_image_get_animation".}
+proc TYPE_IMAGE_MENU_ITEM*(): GType
+proc IMAGE_MENU_ITEM*(obj: pointer): PImageMenuItem
+proc IMAGE_MENU_ITEM_CLASS*(klass: pointer): PImageMenuItemClass
+proc IS_IMAGE_MENU_ITEM*(obj: pointer): bool
+proc IS_IMAGE_MENU_ITEM_CLASS*(klass: pointer): bool
+proc IMAGE_MENU_ITEM_GET_CLASS*(obj: pointer): PImageMenuItemClass
+proc image_menu_item_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_image_menu_item_get_type".}
-proc gtk_image_menu_item_new*(): PGtkImageMenuItem{.cdecl, dynlib: gtklib,
+proc image_menu_item_new*(): PImageMenuItem{.cdecl, dynlib: lib, 
     importc: "gtk_image_menu_item_new".}
-proc gtk_image_menu_item_new_with_label*(`label`: cstring): PGtkImageMenuItem{.cdecl,
-    dynlib: gtklib, importc: "gtk_image_menu_item_new_with_label".}
-proc gtk_image_menu_item_new_with_mnemonic*(`label`: cstring): PGtkImageMenuItem{.cdecl,
-    dynlib: gtklib, importc: "gtk_image_menu_item_new_with_mnemonic".}
-proc gtk_image_menu_item_new_from_stock*(stock_id: cstring,
-    accel_group: PGtkAccelGroup): PGtkImageMenuItem{.cdecl, dynlib: gtklib,
-    importc: "gtk_image_menu_item_new_from_stock".}
-proc gtk_image_menu_item_set_image*(image_menu_item: PGtkImageMenuItem,
-                                    image: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_image_menu_item_set_image".}
-proc gtk_image_menu_item_get_image*(image_menu_item: PGtkImageMenuItem): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_image_menu_item_get_image".}
-const
-  bm_TGtkIMContextSimple_in_hex_sequence* = 0x00000001'i16
+proc image_menu_item_new_with_label*(`label`: cstring): PImageMenuItem{.cdecl, 
+    dynlib: lib, importc: "gtk_image_menu_item_new_with_label".}
+proc image_menu_item_new_with_mnemonic*(`label`: cstring): PImageMenuItem{.
+    cdecl, dynlib: lib, importc: "gtk_image_menu_item_new_with_mnemonic".}
+proc image_menu_item_new_from_stock*(stock_id: cstring, accel_group: PAccelGroup): PImageMenuItem{.
+    cdecl, dynlib: lib, importc: "gtk_image_menu_item_new_from_stock".}
+proc item_set_image*(image_menu_item: PImageMenuItem, image: PWidget){.
+    cdecl, dynlib: lib, importc: "gtk_image_menu_item_set_image".}
+proc item_get_image*(image_menu_item: PImageMenuItem): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_image_menu_item_get_image".}
+const 
+  bm_TGtkIMContextSimple_in_hex_sequence* = 0x0001'i16
   bp_TGtkIMContextSimple_in_hex_sequence* = 0'i16
 
-proc GTK_TYPE_IM_CONTEXT_SIMPLE*(): GType
-proc GTK_IM_CONTEXT_SIMPLE*(obj: pointer): PGtkIMContextSimple
-proc GTK_IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): PGtkIMContextSimpleClass
-proc GTK_IS_IM_CONTEXT_SIMPLE*(obj: pointer): bool
-proc GTK_IS_IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): bool
-proc GTK_IM_CONTEXT_SIMPLE_GET_CLASS*(obj: pointer): PGtkIMContextSimpleClass
-proc in_hex_sequence*(a: var TGtkIMContextSimple): guint
-proc set_in_hex_sequence*(a: var TGtkIMContextSimple, `in_hex_sequence`: guint)
-proc gtk_im_context_simple_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_IM_CONTEXT_SIMPLE*(): GType
+proc IM_CONTEXT_SIMPLE*(obj: pointer): PIMContextSimple
+proc IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): PIMContextSimpleClass
+proc IS_IM_CONTEXT_SIMPLE*(obj: pointer): bool
+proc IS_IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): bool
+proc IM_CONTEXT_SIMPLE_GET_CLASS*(obj: pointer): PIMContextSimpleClass
+proc in_hex_sequence*(a: var TIMContextSimple): guint
+proc set_in_hex_sequence*(a: var TIMContextSimple, `in_hex_sequence`: guint)
+proc im_context_simple_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_im_context_simple_get_type".}
-proc gtk_im_context_simple_new*(): PGtkIMContext{.cdecl, dynlib: gtklib,
+proc im_context_simple_new*(): PIMContext{.cdecl, dynlib: lib, 
     importc: "gtk_im_context_simple_new".}
-proc gtk_im_context_simple_add_table*(context_simple: PGtkIMContextSimple,
-                                      data: Pguint16, max_seq_len: gint,
-                                      n_seqs: gint){.cdecl, dynlib: gtklib,
+proc simple_add_table*(context_simple: PIMContextSimple, 
+                                  data: Pguint16, max_seq_len: gint, 
+                                  n_seqs: gint){.cdecl, dynlib: lib, 
     importc: "gtk_im_context_simple_add_table".}
-proc GTK_TYPE_IM_MULTICONTEXT*(): GType
-proc GTK_IM_MULTICONTEXT*(obj: pointer): PGtkIMMulticontext
-proc GTK_IM_MULTICONTEXT_CLASS*(klass: pointer): PGtkIMMulticontextClass
-proc GTK_IS_IM_MULTICONTEXT*(obj: pointer): bool
-proc GTK_IS_IM_MULTICONTEXT_CLASS*(klass: pointer): bool
-proc GTK_IM_MULTICONTEXT_GET_CLASS*(obj: pointer): PGtkIMMulticontextClass
-proc gtk_im_multicontext_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_IM_MULTICONTEXT*(): GType
+proc IM_MULTICONTEXT*(obj: pointer): PIMMulticontext
+proc IM_MULTICONTEXT_CLASS*(klass: pointer): PIMMulticontextClass
+proc IS_IM_MULTICONTEXT*(obj: pointer): bool
+proc IS_IM_MULTICONTEXT_CLASS*(klass: pointer): bool
+proc IM_MULTICONTEXT_GET_CLASS*(obj: pointer): PIMMulticontextClass
+proc im_multicontext_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_im_multicontext_get_type".}
-proc gtk_im_multicontext_new*(): PGtkIMContext{.cdecl, dynlib: gtklib,
+proc im_multicontext_new*(): PIMContext{.cdecl, dynlib: lib, 
     importc: "gtk_im_multicontext_new".}
-proc gtk_im_multicontext_append_menuitems*(context: PGtkIMMulticontext,
-    menushell: PGtkMenuShell){.cdecl, dynlib: gtklib,
-                               importc: "gtk_im_multicontext_append_menuitems".}
-proc GTK_TYPE_INPUT_DIALOG*(): GType
-proc GTK_INPUT_DIALOG*(obj: pointer): PGtkInputDialog
-proc GTK_INPUT_DIALOG_CLASS*(klass: pointer): PGtkInputDialogClass
-proc GTK_IS_INPUT_DIALOG*(obj: pointer): bool
-proc GTK_IS_INPUT_DIALOG_CLASS*(klass: pointer): bool
-proc GTK_INPUT_DIALOG_GET_CLASS*(obj: pointer): PGtkInputDialogClass
-proc gtk_input_dialog_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_input_dialog_get_type".}
-proc gtk_input_dialog_new*(): PGtkInputDialog{.cdecl, dynlib: gtklib,
-    importc: "gtk_input_dialog_new".}
-proc GTK_TYPE_INVISIBLE*(): GType
-proc GTK_INVISIBLE*(obj: pointer): PGtkInvisible
-proc GTK_INVISIBLE_CLASS*(klass: pointer): PGtkInvisibleClass
-proc GTK_IS_INVISIBLE*(obj: pointer): bool
-proc GTK_IS_INVISIBLE_CLASS*(klass: pointer): bool
-proc GTK_INVISIBLE_GET_CLASS*(obj: pointer): PGtkInvisibleClass
-proc gtk_invisible_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_invisible_get_type".}
-proc gtk_invisible_new*(): PGtkInvisible{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_invisible_new".}
-proc gtk_invisible_new_for_screen*(screen: PGdkScreen): PGtkInvisible{.cdecl,
-    dynlib: gtklib, importc: "gtk_invisible_new_for_screen".}
-proc gtk_invisible_set_screen*(invisible: PGtkInvisible, screen: PGdkScreen){.
-    cdecl, dynlib: gtklib, importc: "gtk_invisible_set_screen".}
-proc gtk_invisible_get_screen*(invisible: PGtkInvisible): PGdkScreen{.cdecl,
-    dynlib: gtklib, importc: "gtk_invisible_get_screen".}
-proc GTK_TYPE_ITEM_FACTORY*(): GType
-proc GTK_ITEM_FACTORY*(anObject: pointer): PGtkItemFactory
-proc GTK_ITEM_FACTORY_CLASS*(klass: pointer): PGtkItemFactoryClass
-proc GTK_IS_ITEM_FACTORY*(anObject: pointer): bool
-proc GTK_IS_ITEM_FACTORY_CLASS*(klass: pointer): bool
-proc GTK_ITEM_FACTORY_GET_CLASS*(obj: pointer): PGtkItemFactoryClass
-proc gtk_item_factory_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_item_factory_get_type".}
-proc gtk_item_factory_new*(container_type: TGtkType, path: cstring,
-                           accel_group: PGtkAccelGroup): PGtkItemFactory{.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_new".}
-proc gtk_item_factory_construct*(ifactory: PGtkItemFactory,
-                                 container_type: TGtkType, path: cstring,
-                                 accel_group: PGtkAccelGroup){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_construct".}
-proc gtk_item_factory_add_foreign*(accel_widget: PGtkWidget, full_path: cstring,
-                                   accel_group: PGtkAccelGroup, keyval: guint,
-                                   modifiers: TGdkModifierType){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_add_foreign".}
-proc gtk_item_factory_from_widget*(widget: PGtkWidget): PGtkItemFactory{.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_from_widget".}
-proc gtk_item_factory_path_from_widget*(widget: PGtkWidget): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_path_from_widget".}
-proc gtk_item_factory_get_item*(ifactory: PGtkItemFactory, path: cstring): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_item_factory_get_item".}
-proc gtk_item_factory_get_widget*(ifactory: PGtkItemFactory, path: cstring): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_item_factory_get_widget".}
-proc gtk_item_factory_get_widget_by_action*(ifactory: PGtkItemFactory,
-    action: guint): PGtkWidget{.cdecl, dynlib: gtklib, importc: "gtk_item_factory_get_widget_by_action".}
-proc gtk_item_factory_get_item_by_action*(ifactory: PGtkItemFactory,
-    action: guint): PGtkWidget{.cdecl, dynlib: gtklib,
-                                importc: "gtk_item_factory_get_item_by_action".}
-proc gtk_item_factory_create_item*(ifactory: PGtkItemFactory,
-                                   entry: PGtkItemFactoryEntry,
-                                   callback_data: gpointer, callback_type: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_item_factory_create_item".}
-proc gtk_item_factory_create_items*(ifactory: PGtkItemFactory, n_entries: guint,
-                                    entries: PGtkItemFactoryEntry,
-                                    callback_data: gpointer){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_create_items".}
-proc gtk_item_factory_delete_item*(ifactory: PGtkItemFactory, path: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_item_factory_delete_item".}
-proc gtk_item_factory_delete_entry*(ifactory: PGtkItemFactory,
-                                    entry: PGtkItemFactoryEntry){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_delete_entry".}
-proc gtk_item_factory_delete_entries*(ifactory: PGtkItemFactory,
-                                      n_entries: guint,
-                                      entries: PGtkItemFactoryEntry){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_delete_entries".}
-proc gtk_item_factory_popup*(ifactory: PGtkItemFactory, x: guint, y: guint,
-                             mouse_button: guint, time: guint32){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_popup".}
-proc gtk_item_factory_popup_with_data*(ifactory: PGtkItemFactory,
-                                       popup_data: gpointer,
-                                       destroy: TGtkDestroyNotify, x: guint,
-                                       y: guint, mouse_button: guint,
-                                       time: guint32){.cdecl, dynlib: gtklib,
-    importc: "gtk_item_factory_popup_with_data".}
-proc gtk_item_factory_popup_data*(ifactory: PGtkItemFactory): gpointer{.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_popup_data".}
-proc gtk_item_factory_popup_data_from_widget*(widget: PGtkWidget): gpointer{.
-    cdecl, dynlib: gtklib, importc: "gtk_item_factory_popup_data_from_widget".}
-proc gtk_item_factory_set_translate_func*(ifactory: PGtkItemFactory,
-    fun: TGtkTranslateFunc, data: gpointer, notify: TGtkDestroyNotify){.cdecl,
-    dynlib: gtklib, importc: "gtk_item_factory_set_translate_func".}
-proc GTK_TYPE_LAYOUT*(): GType
-proc GTK_LAYOUT*(obj: pointer): PGtkLayout
-proc GTK_LAYOUT_CLASS*(klass: pointer): PGtkLayoutClass
-proc GTK_IS_LAYOUT*(obj: pointer): bool
-proc GTK_IS_LAYOUT_CLASS*(klass: pointer): bool
-proc GTK_LAYOUT_GET_CLASS*(obj: pointer): PGtkLayoutClass
-proc gtk_layout_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_layout_get_type".}
-proc gtk_layout_new*(hadjustment: PGtkAdjustment, vadjustment: PGtkAdjustment): PGtkLayout{.
-    cdecl, dynlib: gtklib, importc: "gtk_layout_new".}
-proc gtk_layout_put*(layout: PGtkLayout, child_widget: PGtkWidget, x: gint,
-                     y: gint){.cdecl, dynlib: gtklib, importc: "gtk_layout_put".}
-proc gtk_layout_move*(layout: PGtkLayout, child_widget: PGtkWidget, x: gint,
-                      y: gint){.cdecl, dynlib: gtklib,
-                                importc: "gtk_layout_move".}
-proc gtk_layout_set_size*(layout: PGtkLayout, width: guint, height: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_layout_set_size".}
-proc gtk_layout_get_size*(layout: PGtkLayout, width: Pguint, height: Pguint){.
-    cdecl, dynlib: gtklib, importc: "gtk_layout_get_size".}
-proc gtk_layout_get_hadjustment*(layout: PGtkLayout): PGtkAdjustment{.cdecl,
-    dynlib: gtklib, importc: "gtk_layout_get_hadjustment".}
-proc gtk_layout_get_vadjustment*(layout: PGtkLayout): PGtkAdjustment{.cdecl,
-    dynlib: gtklib, importc: "gtk_layout_get_vadjustment".}
-proc gtk_layout_set_hadjustment*(layout: PGtkLayout, adjustment: PGtkAdjustment){.
-    cdecl, dynlib: gtklib, importc: "gtk_layout_set_hadjustment".}
-proc gtk_layout_set_vadjustment*(layout: PGtkLayout, adjustment: PGtkAdjustment){.
-    cdecl, dynlib: gtklib, importc: "gtk_layout_set_vadjustment".}
-const
-  bm_TGtkList_selection_mode* = 0x00000003'i16
+proc append_menuitems*(context: PIMMulticontext, 
+                                       menushell: PMenuShell){.cdecl, 
+    dynlib: lib, importc: "gtk_im_multicontext_append_menuitems".}
+proc TYPE_INPUT_DIALOG*(): GType
+proc INPUT_DIALOG*(obj: pointer): PInputDialog
+proc INPUT_DIALOG_CLASS*(klass: pointer): PInputDialogClass
+proc IS_INPUT_DIALOG*(obj: pointer): bool
+proc IS_INPUT_DIALOG_CLASS*(klass: pointer): bool
+proc INPUT_DIALOG_GET_CLASS*(obj: pointer): PInputDialogClass
+proc input_dialog_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_input_dialog_get_type".}
+proc input_dialog_new*(): PInputDialog{.cdecl, dynlib: lib, 
+                                        importc: "gtk_input_dialog_new".}
+proc TYPE_INVISIBLE*(): GType
+proc INVISIBLE*(obj: pointer): PInvisible
+proc INVISIBLE_CLASS*(klass: pointer): PInvisibleClass
+proc IS_INVISIBLE*(obj: pointer): bool
+proc IS_INVISIBLE_CLASS*(klass: pointer): bool
+proc INVISIBLE_GET_CLASS*(obj: pointer): PInvisibleClass
+proc invisible_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_invisible_get_type".}
+proc invisible_new*(): PInvisible{.cdecl, dynlib: lib, 
+                                   importc: "gtk_invisible_new".}
+proc invisible_new_for_screen*(screen: gdk2.PScreen): PInvisible{.cdecl, 
+    dynlib: lib, importc: "gtk_invisible_new_for_screen".}
+proc set_screen*(invisible: PInvisible, screen: gdk2.PScreen){.cdecl, 
+    dynlib: lib, importc: "gtk_invisible_set_screen".}
+proc get_screen*(invisible: PInvisible): gdk2.PScreen{.cdecl, 
+    dynlib: lib, importc: "gtk_invisible_get_screen".}
+proc TYPE_ITEM_FACTORY*(): GType
+proc ITEM_FACTORY*(anObject: pointer): PItemFactory
+proc ITEM_FACTORY_CLASS*(klass: pointer): PItemFactoryClass
+proc IS_ITEM_FACTORY*(anObject: pointer): bool
+proc IS_ITEM_FACTORY_CLASS*(klass: pointer): bool
+proc ITEM_FACTORY_GET_CLASS*(obj: pointer): PItemFactoryClass
+proc item_factory_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_item_factory_get_type".}
+proc item_factory_new*(container_type: TType, path: cstring, 
+                       accel_group: PAccelGroup): PItemFactory{.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_new".}
+proc construct*(ifactory: PItemFactory, container_type: TType, 
+                             path: cstring, accel_group: PAccelGroup){.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_construct".}
+proc item_factory_add_foreign*(accel_widget: PWidget, full_path: cstring, 
+                               accel_group: PAccelGroup, keyval: guint, 
+                               modifiers: gdk2.TModifierType){.cdecl, dynlib: lib, 
+    importc: "gtk_item_factory_add_foreign".}
+proc item_factory_from_widget*(widget: PWidget): PItemFactory{.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_from_widget".}
+proc item_factory_path_from_widget*(widget: PWidget): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_path_from_widget".}
+proc get_item*(ifactory: PItemFactory, path: cstring): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_item_factory_get_item".}
+proc get_widget*(ifactory: PItemFactory, path: cstring): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_item_factory_get_widget".}
+proc get_widget_by_action*(ifactory: PItemFactory, action: guint): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_item_factory_get_widget_by_action".}
+proc get_item_by_action*(ifactory: PItemFactory, action: guint): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_item_factory_get_item_by_action".}
+proc create_item*(ifactory: PItemFactory, entry: PItemFactoryEntry, 
+                               callback_data: gpointer, callback_type: guint){.
+    cdecl, dynlib: lib, importc: "gtk_item_factory_create_item".}
+proc create_items*(ifactory: PItemFactory, n_entries: guint, 
+                                entries: PItemFactoryEntry, 
+                                callback_data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gtk_item_factory_create_items".}
+proc delete_item*(ifactory: PItemFactory, path: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_delete_item".}
+proc delete_entry*(ifactory: PItemFactory, entry: PItemFactoryEntry){.
+    cdecl, dynlib: lib, importc: "gtk_item_factory_delete_entry".}
+proc delete_entries*(ifactory: PItemFactory, n_entries: guint, 
+                                  entries: PItemFactoryEntry){.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_delete_entries".}
+proc popup*(ifactory: PItemFactory, x: guint, y: guint, 
+                         mouse_button: guint, time: guint32){.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_popup".}
+proc popup_with_data*(ifactory: PItemFactory, popup_data: gpointer, 
+                                   destroy: TDestroyNotify, x: guint, y: guint, 
+                                   mouse_button: guint, time: guint32){.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_popup_with_data".}
+proc popup_data*(ifactory: PItemFactory): gpointer{.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_popup_data".}
+proc item_factory_popup_data_from_widget*(widget: PWidget): gpointer{.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_popup_data_from_widget".}
+proc set_translate_func*(ifactory: PItemFactory, 
+                                      fun: TTranslateFunc, data: gpointer, 
+                                      notify: TDestroyNotify){.cdecl, 
+    dynlib: lib, importc: "gtk_item_factory_set_translate_func".}
+proc TYPE_LAYOUT*(): GType
+proc LAYOUT*(obj: pointer): PLayout
+proc LAYOUT_CLASS*(klass: pointer): PLayoutClass
+proc IS_LAYOUT*(obj: pointer): bool
+proc IS_LAYOUT_CLASS*(klass: pointer): bool
+proc LAYOUT_GET_CLASS*(obj: pointer): PLayoutClass
+proc layout_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_layout_get_type".}
+proc layout_new*(hadjustment: PAdjustment, vadjustment: PAdjustment): PLayout{.
+    cdecl, dynlib: lib, importc: "gtk_layout_new".}
+proc put*(layout: PLayout, child_widget: PWidget, x: gint, y: gint){.
+    cdecl, dynlib: lib, importc: "gtk_layout_put".}
+proc move*(layout: PLayout, child_widget: PWidget, x: gint, y: gint){.
+    cdecl, dynlib: lib, importc: "gtk_layout_move".}
+proc set_size*(layout: PLayout, width: guint, height: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_layout_set_size".}
+proc get_size*(layout: PLayout, width: Pguint, height: Pguint){.cdecl, 
+    dynlib: lib, importc: "gtk_layout_get_size".}
+proc get_hadjustment*(layout: PLayout): PAdjustment{.cdecl, dynlib: lib, 
+    importc: "gtk_layout_get_hadjustment".}
+proc get_vadjustment*(layout: PLayout): PAdjustment{.cdecl, dynlib: lib, 
+    importc: "gtk_layout_get_vadjustment".}
+proc set_hadjustment*(layout: PLayout, adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_layout_set_hadjustment".}
+proc set_vadjustment*(layout: PLayout, adjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_layout_set_vadjustment".}
+const 
+  bm_TGtkList_selection_mode* = 0x0003'i16
   bp_TGtkList_selection_mode* = 0'i16
-  bm_TGtkList_drag_selection* = 0x00000004'i16
+  bm_TGtkList_drag_selection* = 0x0004'i16
   bp_TGtkList_drag_selection* = 2'i16
-  bm_TGtkList_add_mode* = 0x00000008'i16
+  bm_TGtkList_add_mode* = 0x0008'i16
   bp_TGtkList_add_mode* = 3'i16
 
-proc GTK_TYPE_LIST*(): GType
-proc GTK_LIST*(obj: pointer): PGtkList
-proc GTK_LIST_CLASS*(klass: pointer): PGtkListClass
-proc GTK_IS_LIST*(obj: pointer): bool
-proc GTK_IS_LIST_CLASS*(klass: pointer): bool
-proc GTK_LIST_GET_CLASS*(obj: pointer): PGtkListClass
-proc selection_mode*(a: var TGtkList): guint
-proc set_selection_mode*(a: var TGtkList, `selection_mode`: guint)
-proc drag_selection*(a: var TGtkList): guint
-proc set_drag_selection*(a: var TGtkList, `drag_selection`: guint)
-proc add_mode*(a: var TGtkList): guint
-proc set_add_mode*(a: var TGtkList, `add_mode`: guint)
-proc gtk_list_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_list_get_type".}
-proc gtk_list_new*(): PGtkList{.cdecl, dynlib: gtklib, importc: "gtk_list_new".}
-proc gtk_list_insert_items*(list: PGtkList, items: PGList, position: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_insert_items".}
-proc gtk_list_append_items*(list: PGtkList, items: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_append_items".}
-proc gtk_list_prepend_items*(list: PGtkList, items: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_prepend_items".}
-proc gtk_list_remove_items*(list: PGtkList, items: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_remove_items".}
-proc gtk_list_remove_items_no_unref*(list: PGtkList, items: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_remove_items_no_unref".}
-proc gtk_list_clear_items*(list: PGtkList, start: gint, theEnd: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_clear_items".}
-proc gtk_list_select_item*(list: PGtkList, item: gint){.cdecl, dynlib: gtklib,
+proc TYPE_LIST*(): GType
+proc LIST*(obj: pointer): PList
+proc LIST_CLASS*(klass: pointer): PListClass
+proc IS_LIST*(obj: pointer): bool
+proc IS_LIST_CLASS*(klass: pointer): bool
+proc LIST_GET_CLASS*(obj: pointer): PListClass
+proc selection_mode*(a: var TList): guint
+proc set_selection_mode*(a: var TList, `selection_mode`: guint)
+proc drag_selection*(a: var TList): guint
+proc set_drag_selection*(a: var TList, `drag_selection`: guint)
+proc add_mode*(a: var TList): guint
+proc set_add_mode*(a: var TList, `add_mode`: guint)
+proc list_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_list_get_type".}
+proc list_new*(): PList{.cdecl, dynlib: lib, importc: "gtk_list_new".}
+proc insert_items*(list: PList, items: PGList, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_list_insert_items".}
+proc append_items*(list: PList, items: PGList){.cdecl, dynlib: lib, 
+    importc: "gtk_list_append_items".}
+proc prepend_items*(list: PList, items: PGList){.cdecl, dynlib: lib, 
+    importc: "gtk_list_prepend_items".}
+proc remove_items*(list: PList, items: PGList){.cdecl, dynlib: lib, 
+    importc: "gtk_list_remove_items".}
+proc remove_items_no_unref*(list: PList, items: PGList){.cdecl, 
+    dynlib: lib, importc: "gtk_list_remove_items_no_unref".}
+proc clear_items*(list: PList, start: gint, theEnd: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_list_clear_items".}
+proc select_item*(list: PList, item: gint){.cdecl, dynlib: lib, 
     importc: "gtk_list_select_item".}
-proc gtk_list_unselect_item*(list: PGtkList, item: gint){.cdecl, dynlib: gtklib,
+proc unselect_item*(list: PList, item: gint){.cdecl, dynlib: lib, 
     importc: "gtk_list_unselect_item".}
-proc gtk_list_select_child*(list: PGtkList, child: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_select_child".}
-proc gtk_list_unselect_child*(list: PGtkList, child: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_unselect_child".}
-proc gtk_list_child_position*(list: PGtkList, child: PGtkWidget): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_list_child_position".}
-proc gtk_list_set_selection_mode*(list: PGtkList, mode: TGtkSelectionMode){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_set_selection_mode".}
-proc gtk_list_extend_selection*(list: PGtkList, scroll_type: TGtkScrollType,
-                                position: gfloat, auto_start_selection: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_extend_selection".}
-proc gtk_list_start_selection*(list: PGtkList){.cdecl, dynlib: gtklib,
+proc select_child*(list: PList, child: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_list_select_child".}
+proc unselect_child*(list: PList, child: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_list_unselect_child".}
+proc child_position*(list: PList, child: PWidget): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_list_child_position".}
+proc set_selection_mode*(list: PList, mode: TSelectionMode){.cdecl, 
+    dynlib: lib, importc: "gtk_list_set_selection_mode".}
+proc extend_selection*(list: PList, scroll_type: TScrollType, 
+                            position: gfloat, auto_start_selection: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_list_extend_selection".}
+proc start_selection*(list: PList){.cdecl, dynlib: lib, 
     importc: "gtk_list_start_selection".}
-proc gtk_list_end_selection*(list: PGtkList){.cdecl, dynlib: gtklib,
-    importc: "gtk_list_end_selection".}
-proc gtk_list_select_all*(list: PGtkList){.cdecl, dynlib: gtklib,
-    importc: "gtk_list_select_all".}
-proc gtk_list_unselect_all*(list: PGtkList){.cdecl, dynlib: gtklib,
-    importc: "gtk_list_unselect_all".}
-proc gtk_list_scroll_horizontal*(list: PGtkList, scroll_type: TGtkScrollType,
-                                 position: gfloat){.cdecl, dynlib: gtklib,
+proc end_selection*(list: PList){.cdecl, dynlib: lib, 
+                                       importc: "gtk_list_end_selection".}
+proc select_all*(list: PList){.cdecl, dynlib: lib, 
+                                    importc: "gtk_list_select_all".}
+proc unselect_all*(list: PList){.cdecl, dynlib: lib, 
+                                      importc: "gtk_list_unselect_all".}
+proc scroll_horizontal*(list: PList, scroll_type: TScrollType, 
+                             position: gfloat){.cdecl, dynlib: lib, 
     importc: "gtk_list_scroll_horizontal".}
-proc gtk_list_scroll_vertical*(list: PGtkList, scroll_type: TGtkScrollType,
-                               position: gfloat){.cdecl, dynlib: gtklib,
+proc scroll_vertical*(list: PList, scroll_type: TScrollType, 
+                           position: gfloat){.cdecl, dynlib: lib, 
     importc: "gtk_list_scroll_vertical".}
-proc gtk_list_toggle_add_mode*(list: PGtkList){.cdecl, dynlib: gtklib,
+proc toggle_add_mode*(list: PList){.cdecl, dynlib: lib, 
     importc: "gtk_list_toggle_add_mode".}
-proc gtk_list_toggle_focus_row*(list: PGtkList){.cdecl, dynlib: gtklib,
+proc toggle_focus_row*(list: PList){.cdecl, dynlib: lib, 
     importc: "gtk_list_toggle_focus_row".}
-proc gtk_list_toggle_row*(list: PGtkList, item: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_toggle_row".}
-proc gtk_list_undo_selection*(list: PGtkList){.cdecl, dynlib: gtklib,
-    importc: "gtk_list_undo_selection".}
-proc gtk_list_end_drag_selection*(list: PGtkList){.cdecl, dynlib: gtklib,
+proc toggle_row*(list: PList, item: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_list_toggle_row".}
+proc undo_selection*(list: PList){.cdecl, dynlib: lib, 
+                                        importc: "gtk_list_undo_selection".}
+proc end_drag_selection*(list: PList){.cdecl, dynlib: lib, 
     importc: "gtk_list_end_drag_selection".}
-const
-  GTK_TREE_MODEL_ITERS_PERSIST* = 1 shl 0
-  GTK_TREE_MODEL_LIST_ONLY* = 1 shl 1
-
-proc GTK_TYPE_TREE_MODEL*(): GType
-proc GTK_TREE_MODEL*(obj: pointer): PGtkTreeModel
-proc GTK_IS_TREE_MODEL*(obj: pointer): bool
-proc GTK_TREE_MODEL_GET_IFACE*(obj: pointer): PGtkTreeModelIface
-proc GTK_TYPE_TREE_ITER*(): GType
-proc GTK_TYPE_TREE_PATH*(): GType
-proc gtk_tree_path_new*(): PGtkTreePath{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_path_new".}
-proc gtk_tree_path_new_from_string*(path: cstring): PGtkTreePath{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_new_from_string".}
-proc gtk_tree_path_to_string*(path: PGtkTreePath): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_to_string".}
-proc gtk_tree_path_new_root*(): PGtkTreePath
-proc gtk_tree_path_new_first*(): PGtkTreePath{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_path_new_first".}
-proc gtk_tree_path_append_index*(path: PGtkTreePath, index: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_append_index".}
-proc gtk_tree_path_prepend_index*(path: PGtkTreePath, index: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_prepend_index".}
-proc gtk_tree_path_get_depth*(path: PGtkTreePath): gint{.cdecl, dynlib: gtklib,
+const 
+  TREE_MODEL_ITERS_PERSIST* = 1 shl 0
+  TREE_MODEL_LIST_ONLY* = 1 shl 1
+
+proc TYPE_TREE_MODEL*(): GType
+proc TREE_MODEL*(obj: pointer): PTreeModel
+proc IS_TREE_MODEL*(obj: pointer): bool
+proc TREE_MODEL_GET_IFACE*(obj: pointer): PTreeModelIface
+proc TYPE_TREE_ITER*(): GType
+proc TYPE_TREE_PATH*(): GType
+proc tree_path_new*(): PTreePath{.cdecl, dynlib: lib, 
+                                  importc: "gtk_tree_path_new".}
+proc tree_path_new_from_string*(path: cstring): PTreePath{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_new_from_string".}
+proc to_string*(path: PTreePath): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_to_string".}
+proc tree_path_new_root*(): PTreePath
+proc tree_path_new_first*(): PTreePath{.cdecl, dynlib: lib, 
+                                        importc: "gtk_tree_path_new_first".}
+proc append_index*(path: PTreePath, index: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_append_index".}
+proc prepend_index*(path: PTreePath, index: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_prepend_index".}
+proc get_depth*(path: PTreePath): gint{.cdecl, dynlib: lib, 
     importc: "gtk_tree_path_get_depth".}
-proc gtk_tree_path_get_indices*(path: PGtkTreePath): Pgint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_get_indices".}
-proc gtk_tree_path_free*(path: PGtkTreePath){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_path_free".}
-proc gtk_tree_path_copy*(path: PGtkTreePath): PGtkTreePath{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_copy".}
-proc gtk_tree_path_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_tree_path_get_type".}
-proc gtk_tree_path_compare*(a: PGtkTreePath, b: PGtkTreePath): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_path_compare".}
-proc gtk_tree_path_next*(path: PGtkTreePath){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_path_next".}
-proc gtk_tree_path_prev*(path: PGtkTreePath): gboolean{.cdecl, dynlib: gtklib,
+proc get_indices*(path: PTreePath): Pgint{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_get_indices".}
+proc free*(path: PTreePath){.cdecl, dynlib: lib, 
+                                       importc: "gtk_tree_path_free".}
+proc copy*(path: PTreePath): PTreePath{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_copy".}
+proc tree_path_get_type*(): GType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_tree_path_get_type".}
+proc compare*(a: PTreePath, b: PTreePath): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_path_compare".}
+proc next*(path: PTreePath){.cdecl, dynlib: lib, 
+                                       importc: "gtk_tree_path_next".}
+proc prev*(path: PTreePath): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_tree_path_prev".}
-proc gtk_tree_path_up*(path: PGtkTreePath): gboolean{.cdecl, dynlib: gtklib,
+proc up*(path: PTreePath): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_tree_path_up".}
-proc gtk_tree_path_down*(path: PGtkTreePath){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_path_down".}
-proc gtk_tree_path_is_ancestor*(path: PGtkTreePath, descendant: PGtkTreePath): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_path_is_ancestor".}
-proc gtk_tree_path_is_descendant*(path: PGtkTreePath, ancestor: PGtkTreePath): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_path_is_descendant".}
-proc gtk_tree_row_reference_new*(model: PGtkTreeModel, path: PGtkTreePath): PGtkTreeRowReference{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_new".}
-proc gtk_tree_row_reference_new_proxy*(proxy: PGObject, model: PGtkTreeModel,
-                                       path: PGtkTreePath): PGtkTreeRowReference{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_new_proxy".}
-proc gtk_tree_row_reference_get_path*(reference: PGtkTreeRowReference): PGtkTreePath{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_get_path".}
-proc gtk_tree_row_reference_valid*(reference: PGtkTreeRowReference): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_valid".}
-proc gtk_tree_row_reference_free*(reference: PGtkTreeRowReference){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_row_reference_free".}
-proc gtk_tree_row_reference_inserted*(proxy: PGObject, path: PGtkTreePath){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_inserted".}
-proc gtk_tree_row_reference_deleted*(proxy: PGObject, path: PGtkTreePath){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_deleted".}
-proc gtk_tree_row_reference_reordered*(proxy: PGObject, path: PGtkTreePath,
-                                       iter: PGtkTreeIter, new_order: Pgint){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_row_reference_reordered".}
-proc gtk_tree_iter_copy*(iter: PGtkTreeIter): PGtkTreeIter{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_iter_copy".}
-proc gtk_tree_iter_free*(iter: PGtkTreeIter){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_iter_free".}
-proc gtk_tree_iter_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_tree_iter_get_type".}
-proc gtk_tree_model_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_get_type".}
-proc gtk_tree_model_get_flags*(tree_model: PGtkTreeModel): TGtkTreeModelFlags{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_get_flags".}
-proc gtk_tree_model_get_n_columns*(tree_model: PGtkTreeModel): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_get_n_columns".}
-proc gtk_tree_model_get_column_type*(tree_model: PGtkTreeModel, index: gint): GType{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_get_column_type".}
-proc gtk_tree_model_get_iter*(tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                              path: PGtkTreePath): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_get_iter".}
-proc gtk_tree_model_get_iter_from_string*(tree_model: PGtkTreeModel,
-    iter: PGtkTreeIter, path_string: cstring): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_get_iter_from_string".}
-proc gtk_tree_model_get_iter_root*(tree_model: PGtkTreeModel, iter: PGtkTreeIter): gboolean
-proc gtk_tree_model_get_iter_first*(tree_model: PGtkTreeModel,
-                                    iter: PGtkTreeIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_get_iter_first".}
-proc gtk_tree_model_get_path*(tree_model: PGtkTreeModel, iter: PGtkTreeIter): PGtkTreePath{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_get_path".}
-proc gtk_tree_model_get_value*(tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                               column: gint, value: PGValue){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_get_value".}
-proc gtk_tree_model_iter_next*(tree_model: PGtkTreeModel, iter: PGtkTreeIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_iter_next".}
-proc gtk_tree_model_iter_children*(tree_model: PGtkTreeModel,
-                                   iter: PGtkTreeIter, parent: PGtkTreeIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_iter_children".}
-proc gtk_tree_model_iter_has_child*(tree_model: PGtkTreeModel,
-                                    iter: PGtkTreeIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_iter_has_child".}
-proc gtk_tree_model_iter_n_children*(tree_model: PGtkTreeModel,
-                                     iter: PGtkTreeIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_iter_n_children".}
-proc gtk_tree_model_iter_nth_child*(tree_model: PGtkTreeModel,
-                                    iter: PGtkTreeIter, parent: PGtkTreeIter,
-                                    n: gint): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_iter_nth_child".}
-proc gtk_tree_model_iter_parent*(tree_model: PGtkTreeModel, iter: PGtkTreeIter,
-                                 child: PGtkTreeIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_model_iter_parent".}
-proc gtk_tree_model_ref_node*(tree_model: PGtkTreeModel, iter: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_ref_node".}
-proc gtk_tree_model_unref_node*(tree_model: PGtkTreeModel, iter: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_unref_node".}
-proc gtk_tree_model_foreach*(model: PGtkTreeModel,
-                             fun: TGtkTreeModelForeachFunc,
-                             user_data: gpointer){.cdecl, dynlib: gtklib,
+proc down*(path: PTreePath){.cdecl, dynlib: lib, 
+                                       importc: "gtk_tree_path_down".}
+proc is_ancestor*(path: PTreePath, descendant: PTreePath): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_path_is_ancestor".}
+proc is_descendant*(path: PTreePath, ancestor: PTreePath): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_path_is_descendant".}
+proc row_reference_new*(model: PTreeModel, path: PTreePath): PTreeRowReference{.
+    cdecl, dynlib: lib, importc: "gtk_tree_row_reference_new".}
+proc tree_row_reference_new_proxy*(proxy: PGObject, model: PTreeModel, 
+                                   path: PTreePath): PTreeRowReference{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_row_reference_new_proxy".}
+proc reference_get_path*(reference: PTreeRowReference): PTreePath{.
+    cdecl, dynlib: lib, importc: "gtk_tree_row_reference_get_path".}
+proc reference_valid*(reference: PTreeRowReference): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_row_reference_valid".}
+proc reference_free*(reference: PTreeRowReference){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_row_reference_free".}
+proc tree_row_reference_inserted*(proxy: PGObject, path: PTreePath){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_row_reference_inserted".}
+proc tree_row_reference_deleted*(proxy: PGObject, path: PTreePath){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_row_reference_deleted".}
+proc tree_row_reference_reordered*(proxy: PGObject, path: PTreePath, 
+                                   iter: PTreeIter, new_order: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_row_reference_reordered".}
+proc copy*(iter: PTreeIter): PTreeIter{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_iter_copy".}
+proc free*(iter: PTreeIter){.cdecl, dynlib: lib, 
+                                       importc: "gtk_tree_iter_free".}
+proc tree_iter_get_type*(): GType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_tree_iter_get_type".}
+proc tree_model_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_tree_model_get_type".}
+proc get_flags*(tree_model: PTreeModel): TTreeModelFlags{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_get_flags".}
+proc get_n_columns*(tree_model: PTreeModel): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_get_n_columns".}
+proc get_column_type*(tree_model: PTreeModel, index: gint): GType{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_get_column_type".}
+proc get_iter*(tree_model: PTreeModel, iter: PTreeIter, 
+                          path: PTreePath): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_model_get_iter".}
+proc get_iter_from_string*(tree_model: PTreeModel, iter: PTreeIter, 
+                                      path_string: cstring): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_get_iter_from_string".}
+proc get_iter_root*(tree_model: PTreeModel, iter: PTreeIter): gboolean
+proc get_iter_first*(tree_model: PTreeModel, iter: PTreeIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_get_iter_first".}
+proc get_path*(tree_model: PTreeModel, iter: PTreeIter): PTreePath{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_get_path".}
+proc get_value*(tree_model: PTreeModel, iter: PTreeIter, 
+                           column: gint, value: PGValue){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_model_get_value".}
+proc iter_next*(tree_model: PTreeModel, iter: PTreeIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_iter_next".}
+proc iter_children*(tree_model: PTreeModel, iter: PTreeIter, 
+                               parent: PTreeIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_model_iter_children".}
+proc iter_has_child*(tree_model: PTreeModel, iter: PTreeIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_iter_has_child".}
+proc iter_n_children*(tree_model: PTreeModel, iter: PTreeIter): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_iter_n_children".}
+proc iter_nth_child*(tree_model: PTreeModel, iter: PTreeIter, 
+                                parent: PTreeIter, n: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_iter_nth_child".}
+proc iter_parent*(tree_model: PTreeModel, iter: PTreeIter, 
+                             child: PTreeIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_model_iter_parent".}
+proc ref_node*(tree_model: PTreeModel, iter: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_ref_node".}
+proc unref_node*(tree_model: PTreeModel, iter: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_unref_node".}
+proc foreach*(model: PTreeModel, fun: TTreeModelForeachFunc, 
+                         user_data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_tree_model_foreach".}
-proc gtk_tree_model_row_changed*(tree_model: PGtkTreeModel, path: PGtkTreePath,
-                                 iter: PGtkTreeIter){.cdecl, dynlib: gtklib,
+proc row_changed*(tree_model: PTreeModel, path: PTreePath, 
+                             iter: PTreeIter){.cdecl, dynlib: lib, 
     importc: "gtk_tree_model_row_changed".}
-proc gtk_tree_model_row_inserted*(tree_model: PGtkTreeModel, path: PGtkTreePath,
-                                  iter: PGtkTreeIter){.cdecl, dynlib: gtklib,
+proc row_inserted*(tree_model: PTreeModel, path: PTreePath, 
+                              iter: PTreeIter){.cdecl, dynlib: lib, 
     importc: "gtk_tree_model_row_inserted".}
-proc gtk_tree_model_row_has_child_toggled*(tree_model: PGtkTreeModel,
-    path: PGtkTreePath, iter: PGtkTreeIter){.cdecl, dynlib: gtklib,
+proc row_has_child_toggled*(tree_model: PTreeModel, path: PTreePath, 
+                                       iter: PTreeIter){.cdecl, dynlib: lib, 
     importc: "gtk_tree_model_row_has_child_toggled".}
-proc gtk_tree_model_row_deleted*(tree_model: PGtkTreeModel, path: PGtkTreePath){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_row_deleted".}
-proc gtk_tree_model_rows_reordered*(tree_model: PGtkTreeModel,
-                                    path: PGtkTreePath, iter: PGtkTreeIter,
-                                    new_order: Pgint){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_rows_reordered".}
-const
-  GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID* = - (1)
-
-proc GTK_TYPE_TREE_SORTABLE*(): GType
-proc GTK_TREE_SORTABLE*(obj: pointer): PGtkTreeSortable
-proc GTK_TREE_SORTABLE_CLASS*(obj: pointer): PGtkTreeSortableIface
-proc GTK_IS_TREE_SORTABLE*(obj: pointer): bool
-proc GTK_TREE_SORTABLE_GET_IFACE*(obj: pointer): PGtkTreeSortableIface
-proc gtk_tree_sortable_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_sortable_get_type".}
-proc gtk_tree_sortable_sort_column_changed*(sortable: PGtkTreeSortable){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_sortable_sort_column_changed".}
-proc gtk_tree_sortable_get_sort_column_id*(sortable: PGtkTreeSortable,
-    sort_column_id: Pgint, order: PGtkSortType): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_sortable_get_sort_column_id".}
-proc gtk_tree_sortable_set_sort_column_id*(sortable: PGtkTreeSortable,
-    sort_column_id: gint, order: TGtkSortType){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_sortable_set_sort_column_id".}
-proc gtk_tree_sortable_set_sort_func*(sortable: PGtkTreeSortable,
-                                      sort_column_id: gint,
-                                      sort_func: TGtkTreeIterCompareFunc,
-                                      user_data: gpointer,
-                                      destroy: TGtkDestroyNotify){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_sortable_set_sort_func".}
-proc gtk_tree_sortable_set_default_sort_func*(sortable: PGtkTreeSortable,
-    sort_func: TGtkTreeIterCompareFunc, user_data: gpointer,
-    destroy: TGtkDestroyNotify){.cdecl, dynlib: gtklib, importc: "gtk_tree_sortable_set_default_sort_func".}
-proc gtk_tree_sortable_has_default_sort_func*(sortable: PGtkTreeSortable): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_sortable_has_default_sort_func".}
-proc GTK_TYPE_TREE_MODEL_SORT*(): GType
-proc GTK_TREE_MODEL_SORT*(obj: pointer): PGtkTreeModelSort
-proc GTK_TREE_MODEL_SORT_CLASS*(klass: pointer): PGtkTreeModelSortClass
-proc GTK_IS_TREE_MODEL_SORT*(obj: pointer): bool
-proc GTK_IS_TREE_MODEL_SORT_CLASS*(klass: pointer): bool
-proc GTK_TREE_MODEL_SORT_GET_CLASS*(obj: pointer): PGtkTreeModelSortClass
-proc gtk_tree_model_sort_get_type*(): GType{.cdecl, dynlib: gtklib,
+proc row_deleted*(tree_model: PTreeModel, path: PTreePath){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_row_deleted".}
+proc rows_reordered*(tree_model: PTreeModel, path: PTreePath, 
+                                iter: PTreeIter, new_order: Pgint){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_rows_reordered".}
+const 
+  TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID* = - (1)
+
+proc TYPE_TREE_SORTABLE*(): GType
+proc TREE_SORTABLE*(obj: pointer): PTreeSortable
+proc TREE_SORTABLE_CLASS*(obj: pointer): PTreeSortableIface
+proc IS_TREE_SORTABLE*(obj: pointer): bool
+proc TREE_SORTABLE_GET_IFACE*(obj: pointer): PTreeSortableIface
+proc tree_sortable_get_type*(): GType{.cdecl, dynlib: lib, 
+                                       importc: "gtk_tree_sortable_get_type".}
+proc sort_column_changed*(sortable: PTreeSortable){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_sortable_sort_column_changed".}
+proc get_sort_column_id*(sortable: PTreeSortable, 
+                                       sort_column_id: Pgint, order: PSortType): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_sortable_get_sort_column_id".}
+proc set_sort_column_id*(sortable: PTreeSortable, 
+                                       sort_column_id: gint, order: TSortType){.
+    cdecl, dynlib: lib, importc: "gtk_tree_sortable_set_sort_column_id".}
+proc set_sort_func*(sortable: PTreeSortable, sort_column_id: gint, 
+                                  sort_func: TTreeIterCompareFunc, 
+                                  user_data: gpointer, destroy: TDestroyNotify){.
+    cdecl, dynlib: lib, importc: "gtk_tree_sortable_set_sort_func".}
+proc set_default_sort_func*(sortable: PTreeSortable, 
+    sort_func: TTreeIterCompareFunc, user_data: gpointer, 
+    destroy: TDestroyNotify){.cdecl, dynlib: lib, importc: "gtk_tree_sortable_set_default_sort_func".}
+proc has_default_sort_func*(sortable: PTreeSortable): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_sortable_has_default_sort_func".}
+proc TYPE_TREE_MODEL_SORT*(): GType
+proc TREE_MODEL_SORT*(obj: pointer): PTreeModelSort
+proc TREE_MODEL_SORT_CLASS*(klass: pointer): PTreeModelSortClass
+proc IS_TREE_MODEL_SORT*(obj: pointer): bool
+proc IS_TREE_MODEL_SORT_CLASS*(klass: pointer): bool
+proc TREE_MODEL_SORT_GET_CLASS*(obj: pointer): PTreeModelSortClass
+proc tree_model_sort_get_type*(): GType{.cdecl, dynlib: lib, 
     importc: "gtk_tree_model_sort_get_type".}
-proc gtk_tree_model_sort_new_with_model*(child_model: PGtkTreeModel): PGtkTreeModel{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_sort_new_with_model".}
-proc gtk_tree_model_sort_get_model*(tree_model: PGtkTreeModelSort): PGtkTreeModel{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_sort_get_model".}
-proc gtk_tree_model_sort_convert_child_path_to_path*(
-    tree_model_sort: PGtkTreeModelSort, child_path: PGtkTreePath): PGtkTreePath{.
-    cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_sort_convert_child_path_to_path".}
-proc gtk_tree_model_sort_convert_child_iter_to_iter*(
-    tree_model_sort: PGtkTreeModelSort, sort_iter: PGtkTreeIter,
-    child_iter: PGtkTreeIter){.cdecl, dynlib: gtklib, importc: "gtk_tree_model_sort_convert_child_iter_to_iter".}
-proc gtk_tree_model_sort_convert_path_to_child_path*(
-    tree_model_sort: PGtkTreeModelSort, sorted_path: PGtkTreePath): PGtkTreePath{.
-    cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_sort_convert_path_to_child_path".}
-proc gtk_tree_model_sort_convert_iter_to_child_iter*(
-    tree_model_sort: PGtkTreeModelSort, child_iter: PGtkTreeIter,
-    sorted_iter: PGtkTreeIter){.cdecl, dynlib: gtklib, importc: "gtk_tree_model_sort_convert_iter_to_child_iter".}
-proc gtk_tree_model_sort_reset_default_sort_func*(
-    tree_model_sort: PGtkTreeModelSort){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_model_sort_reset_default_sort_func".}
-proc gtk_tree_model_sort_clear_cache*(tree_model_sort: PGtkTreeModelSort){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_model_sort_clear_cache".}
-const
-  bm_TGtkListStore_columns_dirty* = 0x00000001'i16
+proc sort_new_with_model*(child_model: PTreeModel): PTreeModel{.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_sort_new_with_model".}
+proc sort_get_model*(tree_model: PTreeModelSort): PTreeModel{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_sort_get_model".}
+proc tree_model_sort_convert_child_path_to_path*(
+    tree_model_sort: PTreeModelSort, child_path: PTreePath): PTreePath{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_sort_convert_child_path_to_path".}
+proc tree_model_sort_convert_child_iter_to_iter*(
+    tree_model_sort: PTreeModelSort, sort_iter: PTreeIter, child_iter: PTreeIter){.
+    cdecl, dynlib: lib, 
+    importc: "gtk_tree_model_sort_convert_child_iter_to_iter".}
+proc tree_model_sort_convert_path_to_child_path*(
+    tree_model_sort: PTreeModelSort, sorted_path: PTreePath): PTreePath{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_sort_convert_path_to_child_path".}
+proc tree_model_sort_convert_iter_to_child_iter*(
+    tree_model_sort: PTreeModelSort, child_iter: PTreeIter, 
+    sorted_iter: PTreeIter){.cdecl, dynlib: lib, importc: "gtk_tree_model_sort_convert_iter_to_child_iter".}
+proc sort_reset_default_sort_func*(tree_model_sort: PTreeModelSort){.
+    cdecl, dynlib: lib, importc: "gtk_tree_model_sort_reset_default_sort_func".}
+proc sort_clear_cache*(tree_model_sort: PTreeModelSort){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_model_sort_clear_cache".}
+const 
+  bm_TGtkListStore_columns_dirty* = 0x0001'i16
   bp_TGtkListStore_columns_dirty* = 0'i16
 
-proc GTK_TYPE_LIST_STORE*(): GType
-proc GTK_LIST_STORE*(obj: pointer): PGtkListStore
-proc GTK_LIST_STORE_CLASS*(klass: pointer): PGtkListStoreClass
-proc GTK_IS_LIST_STORE*(obj: pointer): bool
-proc GTK_IS_LIST_STORE_CLASS*(klass: pointer): bool
-proc GTK_LIST_STORE_GET_CLASS*(obj: pointer): PGtkListStoreClass
-proc columns_dirty*(a: var TGtkListStore): guint
-proc set_columns_dirty*(a: var TGtkListStore, `columns_dirty`: guint)
-proc gtk_list_store_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_list_store_get_type".}
-proc gtk_list_store_newv*(n_columns: gint, types: PGType): PGtkListStore{.cdecl,
-    dynlib: gtklib, importc: "gtk_list_store_newv".}
-proc gtk_list_store_set_column_types*(list_store: PGtkListStore,
-                                      n_columns: gint, types: PGType){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_store_set_column_types".}
-proc gtk_list_store_set_value*(list_store: PGtkListStore, iter: PGtkTreeIter,
-                               column: gint, value: PGValue){.cdecl,
-    dynlib: gtklib, importc: "gtk_list_store_set_value".}
-proc gtk_list_store_remove*(list_store: PGtkListStore, iter: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_store_remove".}
-proc gtk_list_store_insert*(list_store: PGtkListStore, iter: PGtkTreeIter,
-                            position: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_list_store_insert".}
-proc gtk_list_store_insert_before*(list_store: PGtkListStore,
-                                   iter: PGtkTreeIter, sibling: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_store_insert_before".}
-proc gtk_list_store_insert_after*(list_store: PGtkListStore, iter: PGtkTreeIter,
-                                  sibling: PGtkTreeIter){.cdecl, dynlib: gtklib,
+proc TYPE_LIST_STORE*(): GType
+proc LIST_STORE*(obj: pointer): PListStore
+proc LIST_STORE_CLASS*(klass: pointer): PListStoreClass
+proc IS_LIST_STORE*(obj: pointer): bool
+proc IS_LIST_STORE_CLASS*(klass: pointer): bool
+proc LIST_STORE_GET_CLASS*(obj: pointer): PListStoreClass
+proc columns_dirty*(a: var TListStore): guint
+proc set_columns_dirty*(a: var TListStore, `columns_dirty`: guint)
+proc list_store_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_list_store_get_type".}
+proc list_store_newv*(n_columns: gint, types: PGType): PListStore{.cdecl, 
+    dynlib: lib, importc: "gtk_list_store_newv".}
+proc set_column_types*(list_store: PListStore, n_columns: gint, 
+                                  types: PGType){.cdecl, dynlib: lib, 
+    importc: "gtk_list_store_set_column_types".}
+proc set_value*(list_store: PListStore, iter: PTreeIter, 
+                           column: gint, value: PGValue){.cdecl, dynlib: lib, 
+    importc: "gtk_list_store_set_value".}
+proc remove*(list_store: PListStore, iter: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_list_store_remove".}
+proc insert*(list_store: PListStore, iter: PTreeIter, position: gint){.
+    cdecl, dynlib: lib, importc: "gtk_list_store_insert".}
+proc insert_before*(list_store: PListStore, iter: PTreeIter, 
+                               sibling: PTreeIter){.cdecl, dynlib: lib, 
+    importc: "gtk_list_store_insert_before".}
+proc insert_after*(list_store: PListStore, iter: PTreeIter, 
+                              sibling: PTreeIter){.cdecl, dynlib: lib, 
     importc: "gtk_list_store_insert_after".}
-proc gtk_list_store_prepend*(list_store: PGtkListStore, iter: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_store_prepend".}
-proc gtk_list_store_append*(list_store: PGtkListStore, iter: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_list_store_append".}
-proc gtk_list_store_clear*(list_store: PGtkListStore){.cdecl, dynlib: gtklib,
+proc prepend*(list_store: PListStore, iter: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_list_store_prepend".}
+proc append*(list_store: PListStore, iter: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_list_store_append".}
+proc clear*(list_store: PListStore){.cdecl, dynlib: lib, 
     importc: "gtk_list_store_clear".}
-
-when false:
-  const
-    GTK_PRIORITY_RESIZE* = G_PRIORITY_HIGH_IDLE + 10
-
-proc gtk_check_version*(required_major: guint, required_minor: guint,
-                        required_micro: guint): cstring{.cdecl, dynlib: gtklib,
+when false: 
+  const 
+    PRIORITY_RESIZE* = G_PRIORITY_HIGH_IDLE + 10
+proc check_version*(required_major: guint, required_minor: guint, 
+                    required_micro: guint): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_check_version".}
-proc gtk_disable_setlocale*(){.cdecl, dynlib: gtklib,
-                               importc: "gtk_disable_setlocale".}
-proc gtk_set_locale*(): cstring{.cdecl, dynlib: gtklib, importc: "gtk_set_locale".}
-proc gtk_get_default_language*(): PPangoLanguage{.cdecl, dynlib: gtklib,
+proc disable_setlocale*(){.cdecl, dynlib: lib, importc: "gtk_disable_setlocale".}
+proc set_locale*(): cstring{.cdecl, dynlib: lib, importc: "gtk_set_locale".}
+proc get_default_language*(): pango.PLanguage{.cdecl, dynlib: lib, 
     importc: "gtk_get_default_language".}
-proc gtk_events_pending*(): gint{.cdecl, dynlib: gtklib,
-                                  importc: "gtk_events_pending".}
-proc gtk_main_do_event*(event: PGdkEvent){.cdecl, dynlib: gtklib,
-    importc: "gtk_main_do_event".}
-proc gtk_main*(){.cdecl, dynlib: gtklib, importc: "gtk_main".}
-proc gtk_init*(argc, argv: pointer){.cdecl, dynlib: gtklib, importc: "gtk_init".}
-proc gtk_main_level*(): guint{.cdecl, dynlib: gtklib, importc: "gtk_main_level".}
-proc gtk_main_quit*(){.cdecl, dynlib: gtklib, importc: "gtk_main_quit".}
-proc gtk_main_iteration*(): gboolean{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_main_iteration".}
-proc gtk_main_iteration_do*(blocking: gboolean): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_main_iteration_do".}
-proc gtk_true*(): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_true".}
-proc gtk_false*(): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_false".}
-proc gtk_grab_add*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-                                        importc: "gtk_grab_add".}
-proc gtk_grab_get_current*(): PGtkWidget{.cdecl, dynlib: gtklib,
-    importc: "gtk_grab_get_current".}
-proc gtk_grab_remove*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "gtk_grab_remove".}
-proc gtk_init_add*(`function`: TGtkFunction, data: gpointer){.cdecl,
-    dynlib: gtklib, importc: "gtk_init_add".}
-proc gtk_quit_add_destroy*(main_level: guint, anObject: PGtkObject){.cdecl,
-    dynlib: gtklib, importc: "gtk_quit_add_destroy".}
-proc gtk_quit_add*(main_level: guint, `function`: TGtkFunction, data: gpointer): guint{.
-    cdecl, dynlib: gtklib, importc: "gtk_quit_add".}
-proc gtk_quit_add_full*(main_level: guint, `function`: TGtkFunction,
-                        marshal: TGtkCallbackMarshal, data: gpointer,
-                        destroy: TGtkDestroyNotify): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_quit_add_full".}
-proc gtk_quit_remove*(quit_handler_id: guint){.cdecl, dynlib: gtklib,
+proc events_pending*(): gint{.cdecl, dynlib: lib, importc: "gtk_events_pending".}
+proc main_do_event*(event: gdk2.PEvent){.cdecl, dynlib: lib, 
+                                       importc: "gtk_main_do_event".}
+proc main*(){.cdecl, dynlib: lib, importc: "gtk_main".}
+proc init*(argc, argv: pointer){.cdecl, dynlib: lib, importc: "gtk_init".}
+proc main_level*(): guint{.cdecl, dynlib: lib, importc: "gtk_main_level".}
+proc main_quit*(){.cdecl, dynlib: lib, importc: "gtk_main_quit".}
+proc main_iteration*(): gboolean{.cdecl, dynlib: lib, 
+                                  importc: "gtk_main_iteration".}
+proc main_iteration_do*(blocking: gboolean): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_main_iteration_do".}
+proc gtkTrue*(): gboolean{.cdecl, dynlib: lib, importc: "gtk_true".}
+proc gtkFalse*(): gboolean{.cdecl, dynlib: lib, importc: "gtk_false".}
+proc grab_add*(widget: PWidget){.cdecl, dynlib: lib, importc: "gtk_grab_add".}
+proc grab_get_current*(): PWidget{.cdecl, dynlib: lib, 
+                                   importc: "gtk_grab_get_current".}
+proc grab_remove*(widget: PWidget){.cdecl, dynlib: lib, 
+                                    importc: "gtk_grab_remove".}
+proc init_add*(`function`: TFunction, data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gtk_init_add".}
+proc quit_add_destroy*(main_level: guint, anObject: PObject){.cdecl, 
+    dynlib: lib, importc: "gtk_quit_add_destroy".}
+proc quit_add*(main_level: guint, `function`: TFunction, data: gpointer): guint{.
+    cdecl, dynlib: lib, importc: "gtk_quit_add".}
+proc quit_add_full*(main_level: guint, `function`: TFunction, 
+                    marshal: TCallbackMarshal, data: gpointer, 
+                    destroy: TDestroyNotify): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_quit_add_full".}
+proc quit_remove*(quit_handler_id: guint){.cdecl, dynlib: lib, 
     importc: "gtk_quit_remove".}
-proc gtk_quit_remove_by_data*(data: gpointer){.cdecl, dynlib: gtklib,
+proc quit_remove_by_data*(data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_quit_remove_by_data".}
-proc gtk_timeout_add*(interval: guint32, `function`: TGtkFunction,
-                      data: gpointer): guint{.cdecl, dynlib: gtklib,
-    importc: "gtk_timeout_add".}
-proc gtk_timeout_add_full*(interval: guint32, `function`: TGtkFunction,
-                           marshal: TGtkCallbackMarshal, data: gpointer,
-                           destroy: TGtkDestroyNotify): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_timeout_add_full".}
-proc gtk_timeout_remove*(timeout_handler_id: guint){.cdecl, dynlib: gtklib,
+proc timeout_add*(interval: guint32, `function`: TFunction, data: gpointer): guint{.
+    cdecl, dynlib: lib, importc: "gtk_timeout_add".}
+proc timeout_add_full*(interval: guint32, `function`: TFunction, 
+                       marshal: TCallbackMarshal, data: gpointer, 
+                       destroy: TDestroyNotify): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_timeout_add_full".}
+proc timeout_remove*(timeout_handler_id: guint){.cdecl, dynlib: lib, 
     importc: "gtk_timeout_remove".}
-proc gtk_idle_add*(`function`: TGtkFunction, data: gpointer): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_idle_add".}
-proc gtk_idle_add_priority*(priority: gint, `function`: TGtkFunction,
-                            data: gpointer): guint{.cdecl, dynlib: gtklib,
-    importc: "gtk_idle_add_priority".}
-proc gtk_idle_add_full*(priority: gint, `function`: TGtkFunction,
-                        marshal: TGtkCallbackMarshal, data: gpointer,
-                        destroy: TGtkDestroyNotify): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_idle_add_full".}
-proc gtk_idle_remove*(idle_handler_id: guint){.cdecl, dynlib: gtklib,
+proc idle_add*(`function`: TFunction, data: gpointer): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_idle_add".}
+proc idle_add_priority*(priority: gint, `function`: TFunction, data: gpointer): guint{.
+    cdecl, dynlib: lib, importc: "gtk_idle_add_priority".}
+proc idle_add_full*(priority: gint, `function`: TFunction, 
+                    marshal: TCallbackMarshal, data: gpointer, 
+                    destroy: TDestroyNotify): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_idle_add_full".}
+proc idle_remove*(idle_handler_id: guint){.cdecl, dynlib: lib, 
     importc: "gtk_idle_remove".}
-proc gtk_idle_remove_by_data*(data: gpointer){.cdecl, dynlib: gtklib,
+proc idle_remove_by_data*(data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_idle_remove_by_data".}
-proc gtk_input_add_full*(source: gint, condition: TGdkInputCondition,
-                         `function`: TGdkInputFunction,
-                         marshal: TGtkCallbackMarshal, data: gpointer,
-                         destroy: TGtkDestroyNotify): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_input_add_full".}
-proc gtk_input_remove*(input_handler_id: guint){.cdecl, dynlib: gtklib,
+proc input_add_full*(source: gint, condition: gdk2.TInputCondition, 
+                     `function`: gdk2.TInputFunction, marshal: TCallbackMarshal, 
+                     data: gpointer, destroy: TDestroyNotify): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_input_add_full".}
+proc input_remove*(input_handler_id: guint){.cdecl, dynlib: lib, 
     importc: "gtk_input_remove".}
-proc gtk_key_snooper_install*(snooper: TGtkKeySnoopFunc, func_data: gpointer): guint{.
-    cdecl, dynlib: gtklib, importc: "gtk_key_snooper_install".}
-proc gtk_key_snooper_remove*(snooper_handler_id: guint){.cdecl, dynlib: gtklib,
+proc key_snooper_install*(snooper: TKeySnoopFunc, func_data: gpointer): guint{.
+    cdecl, dynlib: lib, importc: "gtk_key_snooper_install".}
+proc key_snooper_remove*(snooper_handler_id: guint){.cdecl, dynlib: lib, 
     importc: "gtk_key_snooper_remove".}
-proc gtk_get_current_event*(): PGdkEvent{.cdecl, dynlib: gtklib,
-    importc: "gtk_get_current_event".}
-proc gtk_get_current_event_time*(): guint32{.cdecl, dynlib: gtklib,
+proc get_current_event*(): gdk2.PEvent{.cdecl, dynlib: lib, 
+                                      importc: "gtk_get_current_event".}
+proc get_current_event_time*(): guint32{.cdecl, dynlib: lib, 
     importc: "gtk_get_current_event_time".}
-proc gtk_get_current_event_state*(state: PGdkModifierType): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_get_current_event_state".}
-proc gtk_get_event_widget*(event: PGdkEvent): PGtkWidget{.cdecl, dynlib: gtklib,
+proc get_current_event_state*(state: gdk2.PModifierType): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_get_current_event_state".}
+proc get_event_widget*(event: gdk2.PEvent): PWidget{.cdecl, dynlib: lib, 
     importc: "gtk_get_event_widget".}
-proc gtk_propagate_event*(widget: PGtkWidget, event: PGdkEvent){.cdecl,
-    dynlib: gtklib, importc: "gtk_propagate_event".}
-proc gtk_boolean_handled_accumulator*(ihint: PGSignalInvocationHint,
-                                        return_accu: PGValue,
-                                        handler_return: PGValue, dummy: gpointer): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_boolean_handled_accumulator".}
-proc gtk_find_module*(name: cstring, thetype: cstring): cstring{.cdecl,
-    dynlib: gtklib, importc: "_gtk_find_module".}
-proc gtk_get_module_path*(thetype: cstring): PPgchar{.cdecl, dynlib: gtklib,
+proc propagate_event*(widget: PWidget, event: gdk2.PEvent){.cdecl, dynlib: lib, 
+    importc: "gtk_propagate_event".}
+proc boolean_handled_accumulator*(ihint: PGSignalInvocationHint, 
+                                  return_accu: PGValue, handler_return: PGValue, 
+                                  dummy: gpointer): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_boolean_handled_accumulator".}
+proc find_module*(name: cstring, thetype: cstring): cstring{.cdecl, dynlib: lib, 
+    importc: "_gtk_find_module".}
+proc get_module_path*(thetype: cstring): PPgchar{.cdecl, dynlib: lib, 
     importc: "_gtk_get_module_path".}
-proc GTK_TYPE_MENU_BAR*(): GType
-proc GTK_MENU_BAR*(obj: pointer): PGtkMenuBar
-proc GTK_MENU_BAR_CLASS*(klass: pointer): PGtkMenuBarClass
-proc GTK_IS_MENU_BAR*(obj: pointer): bool
-proc GTK_IS_MENU_BAR_CLASS*(klass: pointer): bool
-proc GTK_MENU_BAR_GET_CLASS*(obj: pointer): PGtkMenuBarClass
-proc gtk_menu_bar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_menu_bar_get_type".}
-proc gtk_menu_bar_new*(): PGtkMenuBar{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_menu_bar_new".}
-proc gtk_menu_bar_cycle_focus*(menubar: PGtkMenuBar, dir: TGtkDirectionType){.
-    cdecl, dynlib: gtklib, importc: "_gtk_menu_bar_cycle_focus".}
-proc GTK_TYPE_MESSAGE_DIALOG*(): GType
-proc GTK_MESSAGE_DIALOG*(obj: pointer): PGtkMessageDialog
-proc GTK_MESSAGE_DIALOG_CLASS*(klass: pointer): PGtkMessageDialogClass
-proc GTK_IS_MESSAGE_DIALOG*(obj: pointer): bool
-proc GTK_IS_MESSAGE_DIALOG_CLASS*(klass: pointer): bool
-proc GTK_MESSAGE_DIALOG_GET_CLASS*(obj: pointer): PGtkMessageDialogClass
-proc gtk_message_dialog_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_message_dialog_get_type".}
-const
-  bm_TGtkNotebook_show_tabs* = 0x00000001'i16
+proc TYPE_MENU_BAR*(): GType
+proc MENU_BAR*(obj: pointer): PMenuBar
+proc MENU_BAR_CLASS*(klass: pointer): PMenuBarClass
+proc IS_MENU_BAR*(obj: pointer): bool
+proc IS_MENU_BAR_CLASS*(klass: pointer): bool
+proc MENU_BAR_GET_CLASS*(obj: pointer): PMenuBarClass
+proc menu_bar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_menu_bar_get_type".}
+proc menu_bar_new*(): PMenuBar{.cdecl, dynlib: lib, importc: "gtk_menu_bar_new".}
+proc cycle_focus*(menubar: PMenuBar, dir: TDirectionType){.cdecl, 
+    dynlib: lib, importc: "_gtk_menu_bar_cycle_focus".}
+proc TYPE_MESSAGE_DIALOG*(): GType
+proc MESSAGE_DIALOG*(obj: pointer): PMessageDialog
+proc MESSAGE_DIALOG_CLASS*(klass: pointer): PMessageDialogClass
+proc IS_MESSAGE_DIALOG*(obj: pointer): bool
+proc IS_MESSAGE_DIALOG_CLASS*(klass: pointer): bool
+proc MESSAGE_DIALOG_GET_CLASS*(obj: pointer): PMessageDialogClass
+proc message_dialog_get_type*(): TType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_message_dialog_get_type".}
+const 
+  bm_TGtkNotebook_show_tabs* = 0x0001'i16
   bp_TGtkNotebook_show_tabs* = 0'i16
-  bm_TGtkNotebook_homogeneous* = 0x00000002'i16
+  bm_TGtkNotebook_homogeneous* = 0x0002'i16
   bp_TGtkNotebook_homogeneous* = 1'i16
-  bm_TGtkNotebook_show_border* = 0x00000004'i16
+  bm_TGtkNotebook_show_border* = 0x0004'i16
   bp_TGtkNotebook_show_border* = 2'i16
-  bm_TGtkNotebook_tab_pos* = 0x00000018'i16
+  bm_TGtkNotebook_tab_pos* = 0x0018'i16
   bp_TGtkNotebook_tab_pos* = 3'i16
-  bm_TGtkNotebook_scrollable* = 0x00000020'i16
+  bm_TGtkNotebook_scrollable* = 0x0020'i16
   bp_TGtkNotebook_scrollable* = 5'i16
-  bm_TGtkNotebook_in_child* = 0x000000C0'i16
+  bm_TGtkNotebook_in_child* = 0x00C0'i16
   bp_TGtkNotebook_in_child* = 6'i16
-  bm_TGtkNotebook_click_child* = 0x00000300'i16
+  bm_TGtkNotebook_click_child* = 0x0300'i16
   bp_TGtkNotebook_click_child* = 8'i16
-  bm_TGtkNotebook_button* = 0x00000C00'i16
+  bm_TGtkNotebook_button* = 0x0C00'i16
   bp_TGtkNotebook_button* = 10'i16
-  bm_TGtkNotebook_need_timer* = 0x00001000'i16
+  bm_TGtkNotebook_need_timer* = 0x1000'i16
   bp_TGtkNotebook_need_timer* = 12'i16
-  bm_TGtkNotebook_child_has_focus* = 0x00002000'i16
+  bm_TGtkNotebook_child_has_focus* = 0x2000'i16
   bp_TGtkNotebook_child_has_focus* = 13'i16
-  bm_TGtkNotebook_have_visible_child* = 0x00004000'i16
+  bm_TGtkNotebook_have_visible_child* = 0x4000'i16
   bp_TGtkNotebook_have_visible_child* = 14'i16
-  bm_TGtkNotebook_focus_out* = 0x00008000'i16
+  bm_TGtkNotebook_focus_out* = 0x8000'i16
   bp_TGtkNotebook_focus_out* = 15'i16
 
-proc GTK_TYPE_NOTEBOOK*(): GType
-proc GTK_NOTEBOOK*(obj: pointer): PGtkNotebook
-proc GTK_NOTEBOOK_CLASS*(klass: pointer): PGtkNotebookClass
-proc GTK_IS_NOTEBOOK*(obj: pointer): bool
-proc GTK_IS_NOTEBOOK_CLASS*(klass: pointer): bool
-proc GTK_NOTEBOOK_GET_CLASS*(obj: pointer): PGtkNotebookClass
-proc show_tabs*(a: var TGtkNotebook): guint
-proc set_show_tabs*(a: var TGtkNotebook, `show_tabs`: guint)
-proc homogeneous*(a: var TGtkNotebook): guint
-proc set_homogeneous*(a: var TGtkNotebook, `homogeneous`: guint)
-proc show_border*(a: var TGtkNotebook): guint
-proc set_show_border*(a: var TGtkNotebook, `show_border`: guint)
-proc tab_pos*(a: var TGtkNotebook): guint
-proc set_tab_pos*(a: var TGtkNotebook, `tab_pos`: guint)
-proc scrollable*(a: var TGtkNotebook): guint
-proc set_scrollable*(a: var TGtkNotebook, `scrollable`: guint)
-proc in_child*(a: var TGtkNotebook): guint
-proc set_in_child*(a: var TGtkNotebook, `in_child`: guint)
-proc click_child*(a: var TGtkNotebook): guint
-proc set_click_child*(a: var TGtkNotebook, `click_child`: guint)
-proc button*(a: var TGtkNotebook): guint
-proc set_button*(a: var TGtkNotebook, `button`: guint)
-proc need_timer*(a: var TGtkNotebook): guint
-proc set_need_timer*(a: var TGtkNotebook, `need_timer`: guint)
-proc child_has_focus*(a: var TGtkNotebook): guint
-proc set_child_has_focus*(a: var TGtkNotebook, `child_has_focus`: guint)
-proc have_visible_child*(a: var TGtkNotebook): guint
-proc set_have_visible_child*(a: var TGtkNotebook, `have_visible_child`: guint)
-proc focus_out*(a: var TGtkNotebook): guint
-proc set_focus_out*(a: var TGtkNotebook, `focus_out`: guint)
-proc gtk_notebook_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_notebook_get_type".}
-proc gtk_notebook_new*(): PGtkNotebook{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_notebook_new".}
-proc gtk_notebook_append_page*(notebook: PGtkNotebook, child: PGtkWidget,
-                               tab_label: PGtkWidget): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_append_page".}
-proc gtk_notebook_append_page_menu*(notebook: PGtkNotebook, child: PGtkWidget,
-                                    tab_label: PGtkWidget,
-                                    menu_label: PGtkWidget): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_append_page_menu".}
-proc gtk_notebook_prepend_page*(notebook: PGtkNotebook, child: PGtkWidget,
-                                tab_label: PGtkWidget): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_prepend_page".}
-proc gtk_notebook_prepend_page_menu*(notebook: PGtkNotebook, child: PGtkWidget,
-                                     tab_label: PGtkWidget,
-                                     menu_label: PGtkWidget): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_prepend_page_menu".}
-proc gtk_notebook_insert_page*(notebook: PGtkNotebook, child: PGtkWidget,
-                               tab_label: PGtkWidget, position: gint): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_insert_page".}
-proc gtk_notebook_insert_page_menu*(notebook: PGtkNotebook, child: PGtkWidget,
-                                    tab_label: PGtkWidget,
-                                    menu_label: PGtkWidget, position: gint): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_insert_page_menu".}
-proc gtk_notebook_remove_page*(notebook: PGtkNotebook, page_num: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_remove_page".}
-proc gtk_notebook_get_current_page*(notebook: PGtkNotebook): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_get_current_page".}
-proc gtk_notebook_get_n_pages*(notebook: PGtkNotebook): gint {.cdecl, 
-    dynlib: gtklib, importc.}
-proc gtk_notebook_get_nth_page*(notebook: PGtkNotebook, page_num: gint): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_get_nth_page".}
-proc gtk_notebook_page_num*(notebook: PGtkNotebook, child: PGtkWidget): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_page_num".}
-proc gtk_notebook_set_current_page*(notebook: PGtkNotebook, page_num: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_current_page".}
-proc gtk_notebook_next_page*(notebook: PGtkNotebook){.cdecl, dynlib: gtklib,
+proc TYPE_NOTEBOOK*(): GType
+proc NOTEBOOK*(obj: pointer): PNotebook
+proc NOTEBOOK_CLASS*(klass: pointer): PNotebookClass
+proc IS_NOTEBOOK*(obj: pointer): bool
+proc IS_NOTEBOOK_CLASS*(klass: pointer): bool
+proc NOTEBOOK_GET_CLASS*(obj: pointer): PNotebookClass
+proc show_tabs*(a: var TNotebook): guint
+proc set_show_tabs*(a: var TNotebook, `show_tabs`: guint)
+proc homogeneous*(a: var TNotebook): guint
+proc set_homogeneous*(a: var TNotebook, `homogeneous`: guint)
+proc show_border*(a: var TNotebook): guint
+proc set_show_border*(a: var TNotebook, `show_border`: guint)
+proc tab_pos*(a: var TNotebook): guint
+proc set_tab_pos*(a: var TNotebook, `tab_pos`: guint)
+proc scrollable*(a: var TNotebook): guint
+proc set_scrollable*(a: var TNotebook, `scrollable`: guint)
+proc in_child*(a: var TNotebook): guint
+proc set_in_child*(a: var TNotebook, `in_child`: guint)
+proc click_child*(a: var TNotebook): guint
+proc set_click_child*(a: var TNotebook, `click_child`: guint)
+proc button*(a: var TNotebook): guint
+proc set_button*(a: var TNotebook, `button`: guint)
+proc need_timer*(a: var TNotebook): guint
+proc set_need_timer*(a: var TNotebook, `need_timer`: guint)
+proc child_has_focus*(a: var TNotebook): guint
+proc set_child_has_focus*(a: var TNotebook, `child_has_focus`: guint)
+proc have_visible_child*(a: var TNotebook): guint
+proc set_have_visible_child*(a: var TNotebook, `have_visible_child`: guint)
+proc focus_out*(a: var TNotebook): guint
+proc set_focus_out*(a: var TNotebook, `focus_out`: guint)
+proc notebook_get_type*(): TType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_notebook_get_type".}
+proc notebook_new*(): PNotebook{.cdecl, dynlib: lib, importc: "gtk_notebook_new".}
+proc append_page*(notebook: PNotebook, child: PWidget, 
+                           tab_label: PWidget): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_append_page".}
+proc append_page_menu*(notebook: PNotebook, child: PWidget, 
+                                tab_label: PWidget, menu_label: PWidget): gint{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_append_page_menu".}
+proc prepend_page*(notebook: PNotebook, child: PWidget, 
+                            tab_label: PWidget): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_prepend_page".}
+proc prepend_page_menu*(notebook: PNotebook, child: PWidget, 
+                                 tab_label: PWidget, menu_label: PWidget): gint{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_prepend_page_menu".}
+proc insert_page*(notebook: PNotebook, child: PWidget, 
+                           tab_label: PWidget, position: gint): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_insert_page".}
+proc insert_page_menu*(notebook: PNotebook, child: PWidget, 
+                                tab_label: PWidget, menu_label: PWidget, 
+                                position: gint): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_insert_page_menu".}
+proc remove_page*(notebook: PNotebook, page_num: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_remove_page".}
+proc get_current_page*(notebook: PNotebook): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_get_current_page".}
+proc get_n_pages*(notebook: PNotebook): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_get_n_pages".}
+proc get_nth_page*(notebook: PNotebook, page_num: gint): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_get_nth_page".}
+proc page_num*(notebook: PNotebook, child: PWidget): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_page_num".}
+proc set_current_page*(notebook: PNotebook, page_num: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_set_current_page".}
+proc next_page*(notebook: PNotebook){.cdecl, dynlib: lib, 
     importc: "gtk_notebook_next_page".}
-proc gtk_notebook_prev_page*(notebook: PGtkNotebook){.cdecl, dynlib: gtklib,
+proc prev_page*(notebook: PNotebook){.cdecl, dynlib: lib, 
     importc: "gtk_notebook_prev_page".}
-proc gtk_notebook_set_show_border*(notebook: PGtkNotebook, show_border: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_show_border".}
-proc gtk_notebook_get_show_border*(notebook: PGtkNotebook): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_get_show_border".}
-proc gtk_notebook_set_show_tabs*(notebook: PGtkNotebook, show_tabs: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_show_tabs".}
-proc gtk_notebook_get_show_tabs*(notebook: PGtkNotebook): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_get_show_tabs".}
-proc gtk_notebook_set_tab_pos*(notebook: PGtkNotebook, pos: TGtkPositionType){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_tab_pos".}
-proc gtk_notebook_get_tab_pos*(notebook: PGtkNotebook): TGtkPositionType{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_get_tab_pos".}
-proc gtk_notebook_set_scrollable*(notebook: PGtkNotebook, scrollable: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_scrollable".}
-proc gtk_notebook_get_scrollable*(notebook: PGtkNotebook): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_get_scrollable".}
-proc gtk_notebook_popup_enable*(notebook: PGtkNotebook){.cdecl, dynlib: gtklib,
+proc set_show_border*(notebook: PNotebook, show_border: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_notebook_set_show_border".}
+proc get_show_border*(notebook: PNotebook): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_get_show_border".}
+proc set_show_tabs*(notebook: PNotebook, show_tabs: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_set_show_tabs".}
+proc get_show_tabs*(notebook: PNotebook): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_get_show_tabs".}
+proc set_tab_pos*(notebook: PNotebook, pos: TPositionType){.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_set_tab_pos".}
+proc get_tab_pos*(notebook: PNotebook): TPositionType{.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_get_tab_pos".}
+proc set_scrollable*(notebook: PNotebook, scrollable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_set_scrollable".}
+proc get_scrollable*(notebook: PNotebook): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_get_scrollable".}
+proc popup_enable*(notebook: PNotebook){.cdecl, dynlib: lib, 
     importc: "gtk_notebook_popup_enable".}
-proc gtk_notebook_popup_disable*(notebook: PGtkNotebook){.cdecl, dynlib: gtklib,
+proc popup_disable*(notebook: PNotebook){.cdecl, dynlib: lib, 
     importc: "gtk_notebook_popup_disable".}
-proc gtk_notebook_get_tab_label*(notebook: PGtkNotebook, child: PGtkWidget): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_get_tab_label".}
-proc gtk_notebook_set_tab_label*(notebook: PGtkNotebook, child: PGtkWidget,
-                                 tab_label: PGtkWidget){.cdecl, dynlib: gtklib,
+proc get_tab_label*(notebook: PNotebook, child: PWidget): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_get_tab_label".}
+proc set_tab_label*(notebook: PNotebook, child: PWidget, 
+                             tab_label: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_notebook_set_tab_label".}
-proc gtk_notebook_set_tab_label_text*(notebook: PGtkNotebook, child: PGtkWidget,
-                                      tab_text: cstring){.cdecl, dynlib: gtklib,
+proc set_tab_label_text*(notebook: PNotebook, child: PWidget, 
+                                  tab_text: cstring){.cdecl, dynlib: lib, 
     importc: "gtk_notebook_set_tab_label_text".}
-proc gtk_notebook_get_tab_label_text*(notebook: PGtkNotebook, child: PGtkWidget): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_get_tab_label_text".}
-proc gtk_notebook_get_menu_label*(notebook: PGtkNotebook, child: PGtkWidget): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_get_menu_label".}
-proc gtk_notebook_set_menu_label*(notebook: PGtkNotebook, child: PGtkWidget,
-                                  menu_label: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_notebook_set_menu_label".}
-proc gtk_notebook_set_menu_label_text*(notebook: PGtkNotebook,
-                                       child: PGtkWidget, menu_text: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_menu_label_text".}
-proc gtk_notebook_get_menu_label_text*(notebook: PGtkNotebook, child: PGtkWidget): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_get_menu_label_text".}
-proc gtk_notebook_query_tab_label_packing*(notebook: PGtkNotebook,
-    child: PGtkWidget, expand: Pgboolean, fill: Pgboolean,
-    pack_type: PGtkPackType){.cdecl, dynlib: gtklib,
-                              importc: "gtk_notebook_query_tab_label_packing".}
-proc gtk_notebook_set_tab_label_packing*(notebook: PGtkNotebook,
-    child: PGtkWidget, expand: gboolean, fill: gboolean, pack_type: TGtkPackType){.
-    cdecl, dynlib: gtklib, importc: "gtk_notebook_set_tab_label_packing".}
-proc gtk_notebook_reorder_child*(notebook: PGtkNotebook, child: PGtkWidget,
-                                 position: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_notebook_reorder_child".}
-const
-  bm_TGtkOldEditable_has_selection* = 0x00000001'i16
+proc get_tab_label_text*(notebook: PNotebook, child: PWidget): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_get_tab_label_text".}
+proc get_menu_label*(notebook: PNotebook, child: PWidget): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_get_menu_label".}
+proc set_menu_label*(notebook: PNotebook, child: PWidget, 
+                              menu_label: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_set_menu_label".}
+proc set_menu_label_text*(notebook: PNotebook, child: PWidget, 
+                                   menu_text: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_set_menu_label_text".}
+proc get_menu_label_text*(notebook: PNotebook, child: PWidget): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_notebook_get_menu_label_text".}
+proc query_tab_label_packing*(notebook: PNotebook, child: PWidget, 
+                                       expand: Pgboolean, fill: Pgboolean, 
+                                       pack_type: PPackType){.cdecl, 
+    dynlib: lib, importc: "gtk_notebook_query_tab_label_packing".}
+proc set_tab_label_packing*(notebook: PNotebook, child: PWidget, 
+                                     expand: gboolean, fill: gboolean, 
+                                     pack_type: TPackType){.cdecl, dynlib: lib, 
+    importc: "gtk_notebook_set_tab_label_packing".}
+proc reorder_child*(notebook: PNotebook, child: PWidget, position: gint){.
+    cdecl, dynlib: lib, importc: "gtk_notebook_reorder_child".}
+const 
+  bm_TGtkOldEditable_has_selection* = 0x0001'i16
   bp_TGtkOldEditable_has_selection* = 0'i16
-  bm_TGtkOldEditable_editable* = 0x00000002'i16
+  bm_TGtkOldEditable_editable* = 0x0002'i16
   bp_TGtkOldEditable_editable* = 1'i16
-  bm_TGtkOldEditable_visible* = 0x00000004'i16
+  bm_TGtkOldEditable_visible* = 0x0004'i16
   bp_TGtkOldEditable_visible* = 2'i16
 
-proc GTK_TYPE_OLD_EDITABLE*(): GType
-proc GTK_OLD_EDITABLE*(obj: pointer): PGtkOldEditable
-proc GTK_OLD_EDITABLE_CLASS*(klass: pointer): PGtkOldEditableClass
-proc GTK_IS_OLD_EDITABLE*(obj: pointer): bool
-proc GTK_IS_OLD_EDITABLE_CLASS*(klass: pointer): bool
-proc GTK_OLD_EDITABLE_GET_CLASS*(obj: pointer): PGtkOldEditableClass
-proc has_selection*(a: var TGtkOldEditable): guint
-proc set_has_selection*(a: var TGtkOldEditable, `has_selection`: guint)
-proc editable*(a: var TGtkOldEditable): guint
-proc set_editable*(a: var TGtkOldEditable, `editable`: guint)
-proc visible*(a: var TGtkOldEditable): guint
-proc set_visible*(a: var TGtkOldEditable, `visible`: guint)
-proc gtk_old_editable_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_old_editable_get_type".}
-proc gtk_old_editable_claim_selection*(old_editable: PGtkOldEditable,
-                                       claim: gboolean, time: guint32){.cdecl,
-    dynlib: gtklib, importc: "gtk_old_editable_claim_selection".}
-proc gtk_old_editable_changed*(old_editable: PGtkOldEditable){.cdecl,
-    dynlib: gtklib, importc: "gtk_old_editable_changed".}
-proc GTK_TYPE_OPTION_MENU*(): GType
-proc GTK_OPTION_MENU*(obj: pointer): PGtkOptionMenu
-proc GTK_OPTION_MENU_CLASS*(klass: pointer): PGtkOptionMenuClass
-proc GTK_IS_OPTION_MENU*(obj: pointer): bool
-proc GTK_IS_OPTION_MENU_CLASS*(klass: pointer): bool
-proc GTK_OPTION_MENU_GET_CLASS*(obj: pointer): PGtkOptionMenuClass
-proc gtk_option_menu_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_option_menu_get_type".}
-proc gtk_option_menu_new*(): PGtkOptionMenu{.cdecl, dynlib: gtklib,
-    importc: "gtk_option_menu_new".}
-proc gtk_option_menu_get_menu*(option_menu: PGtkOptionMenu): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_option_menu_get_menu".}
-proc gtk_option_menu_set_menu*(option_menu: PGtkOptionMenu, menu: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_option_menu_set_menu".}
-proc gtk_option_menu_remove_menu*(option_menu: PGtkOptionMenu){.cdecl,
-    dynlib: gtklib, importc: "gtk_option_menu_remove_menu".}
-proc gtk_option_menu_get_history*(option_menu: PGtkOptionMenu): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_option_menu_get_history".}
-proc gtk_option_menu_set_history*(option_menu: PGtkOptionMenu, index: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_option_menu_set_history".}
-const
-  bm_TGtkPixmap_build_insensitive* = 0x00000001'i16
+proc TYPE_OLD_EDITABLE*(): GType
+proc OLD_EDITABLE*(obj: pointer): POldEditable
+proc OLD_EDITABLE_CLASS*(klass: pointer): POldEditableClass
+proc IS_OLD_EDITABLE*(obj: pointer): bool
+proc IS_OLD_EDITABLE_CLASS*(klass: pointer): bool
+proc OLD_EDITABLE_GET_CLASS*(obj: pointer): POldEditableClass
+proc has_selection*(a: var TOldEditable): guint
+proc set_has_selection*(a: var TOldEditable, `has_selection`: guint)
+proc editable*(a: var TOldEditable): guint
+proc set_editable*(a: var TOldEditable, `editable`: guint)
+proc visible*(a: var TOldEditable): guint
+proc set_visible*(a: var TOldEditable, `visible`: guint)
+proc old_editable_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_old_editable_get_type".}
+proc claim_selection*(old_editable: POldEditable, claim: gboolean, 
+                                   time: guint32){.cdecl, dynlib: lib, 
+    importc: "gtk_old_editable_claim_selection".}
+proc changed*(old_editable: POldEditable){.cdecl, dynlib: lib, 
+    importc: "gtk_old_editable_changed".}
+proc TYPE_OPTION_MENU*(): GType
+proc OPTION_MENU*(obj: pointer): POptionMenu
+proc OPTION_MENU_CLASS*(klass: pointer): POptionMenuClass
+proc IS_OPTION_MENU*(obj: pointer): bool
+proc IS_OPTION_MENU_CLASS*(klass: pointer): bool
+proc OPTION_MENU_GET_CLASS*(obj: pointer): POptionMenuClass
+proc option_menu_get_type*(): TType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_option_menu_get_type".}
+proc option_menu_new*(): POptionMenu{.cdecl, dynlib: lib, 
+                                      importc: "gtk_option_menu_new".}
+proc get_menu*(option_menu: POptionMenu): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_option_menu_get_menu".}
+proc set_menu*(option_menu: POptionMenu, menu: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_option_menu_set_menu".}
+proc remove_menu*(option_menu: POptionMenu){.cdecl, dynlib: lib, 
+    importc: "gtk_option_menu_remove_menu".}
+proc get_history*(option_menu: POptionMenu): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_option_menu_get_history".}
+proc set_history*(option_menu: POptionMenu, index: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_option_menu_set_history".}
+const 
+  bm_TGtkPixmap_build_insensitive* = 0x0001'i16
   bp_TGtkPixmap_build_insensitive* = 0'i16
 
-proc GTK_TYPE_PIXMAP*(): GType
-proc GTK_PIXMAP*(obj: pointer): PGtkPixmap
-proc GTK_PIXMAP_CLASS*(klass: pointer): PGtkPixmapClass
-proc GTK_IS_PIXMAP*(obj: pointer): bool
-proc GTK_IS_PIXMAP_CLASS*(klass: pointer): bool
-proc GTK_PIXMAP_GET_CLASS*(obj: pointer): PGtkPixmapClass
-proc build_insensitive*(a: var TGtkPixmap): guint
-proc set_build_insensitive*(a: var TGtkPixmap, `build_insensitive`: guint)
-proc gtk_pixmap_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_pixmap_get_type".}
-proc gtk_pixmap_new*(pixmap: PGdkPixmap, mask: PGdkBitmap): PGtkPixmap{.cdecl,
-    dynlib: gtklib, importc: "gtk_pixmap_new".}
-proc gtk_pixmap_set*(pixmap: PGtkPixmap, val: PGdkPixmap, mask: PGdkBitmap){.
-    cdecl, dynlib: gtklib, importc: "gtk_pixmap_set".}
-proc gtk_pixmap_get*(pixmap: PGtkPixmap, val: var PGdkPixmap,
-                     mask: var PGdkBitmap){.cdecl, dynlib: gtklib,
-    importc: "gtk_pixmap_get".}
-proc gtk_pixmap_set_build_insensitive*(pixmap: PGtkPixmap, build: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_pixmap_set_build_insensitive".}
-const
-  bm_TGtkPlug_same_app* = 0x00000001'i16
+proc TYPE_PIXMAP*(): GType
+proc PIXMAP*(obj: pointer): PPixmap
+proc PIXMAP_CLASS*(klass: pointer): PPixmapClass
+proc IS_PIXMAP*(obj: pointer): bool
+proc IS_PIXMAP_CLASS*(klass: pointer): bool
+proc PIXMAP_GET_CLASS*(obj: pointer): PPixmapClass
+proc build_insensitive*(a: var TPixmap): guint
+proc set_build_insensitive*(a: var TPixmap, `build_insensitive`: guint)
+proc pixmap_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_pixmap_get_type".}
+proc pixmap_new*(pixmap: gdk2.PPixmap, mask: gdk2.PBitmap): PPixmap{.cdecl, 
+    dynlib: lib, importc: "gtk_pixmap_new".}
+proc set*(pixmap: PPixmap, val: gdk2.PPixmap, mask: gdk2.PBitmap){.cdecl, 
+    dynlib: lib, importc: "gtk_pixmap_set".}
+proc get*(pixmap: PPixmap, val: var gdk2.PPixmap, mask: var gdk2.PBitmap){.
+    cdecl, dynlib: lib, importc: "gtk_pixmap_get".}
+proc set_build_insensitive*(pixmap: PPixmap, build: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_pixmap_set_build_insensitive".}
+const 
+  bm_TGtkPlug_same_app* = 0x0001'i16
   bp_TGtkPlug_same_app* = 0'i16
 
-proc GTK_TYPE_PLUG*(): GType
-proc GTK_PLUG*(obj: pointer): PGtkPlug
-proc GTK_PLUG_CLASS*(klass: pointer): PGtkPlugClass
-proc GTK_IS_PLUG*(obj: pointer): bool
-proc GTK_IS_PLUG_CLASS*(klass: pointer): bool
-proc GTK_PLUG_GET_CLASS*(obj: pointer): PGtkPlugClass
-proc same_app*(a: var TGtkPlug): guint
-proc set_same_app*(a: var TGtkPlug, `same_app`: guint)
-proc gtk_plug_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_plug_get_type".}
-proc gtk_plug_construct_for_display*(plug: PGtkPlug, display: PGdkDisplay,
-                                     socket_id: TGdkNativeWindow){.cdecl,
-    dynlib: gtklib, importc: "gtk_plug_construct_for_display".}
-proc gtk_plug_new_for_display*(display: PGdkDisplay, socket_id: TGdkNativeWindow): PGtkPlug{.
-    cdecl, dynlib: gtklib, importc: "gtk_plug_new_for_display".}
-proc gtk_plug_get_id*(plug: PGtkPlug): TGdkNativeWindow{.cdecl, dynlib: gtklib,
+proc TYPE_PLUG*(): GType
+proc PLUG*(obj: pointer): PPlug
+proc PLUG_CLASS*(klass: pointer): PPlugClass
+proc IS_PLUG*(obj: pointer): bool
+proc IS_PLUG_CLASS*(klass: pointer): bool
+proc PLUG_GET_CLASS*(obj: pointer): PPlugClass
+proc same_app*(a: var TPlug): guint
+proc set_same_app*(a: var TPlug, `same_app`: guint)
+proc plug_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_plug_get_type".}
+proc construct_for_display*(plug: PPlug, display: gdk2.PDisplay, 
+                                 socket_id: gdk2.TNativeWindow){.cdecl, 
+    dynlib: lib, importc: "gtk_plug_construct_for_display".}
+proc plug_new_for_display*(display: gdk2.PDisplay, socket_id: gdk2.TNativeWindow): PPlug{.
+    cdecl, dynlib: lib, importc: "gtk_plug_new_for_display".}
+proc get_id*(plug: PPlug): gdk2.TNativeWindow{.cdecl, dynlib: lib, 
     importc: "gtk_plug_get_id".}
-proc gtk_plug_add_to_socket*(plug: PGtkPlug, socket: PGtkSocket){.cdecl,
-    dynlib: gtklib, importc: "_gtk_plug_add_to_socket".}
-proc gtk_plug_remove_from_socket*(plug: PGtkPlug, socket: PGtkSocket){.cdecl,
-    dynlib: gtklib, importc: "_gtk_plug_remove_from_socket".}
-const
-  bm_TGtkPreview_type* = 0x00000001'i16
+proc add_to_socket*(plug: PPlug, socket: PSocket){.cdecl, dynlib: lib, 
+    importc: "_gtk_plug_add_to_socket".}
+proc remove_from_socket*(plug: PPlug, socket: PSocket){.cdecl, dynlib: lib, 
+    importc: "_gtk_plug_remove_from_socket".}
+const 
+  bm_TGtkPreview_type* = 0x0001'i16
   bp_TGtkPreview_type* = 0'i16
-  bm_TGtkPreview_expand* = 0x00000002'i16
+  bm_TGtkPreview_expand* = 0x0002'i16
   bp_TGtkPreview_expand* = 1'i16
 
-proc GTK_TYPE_PREVIEW*(): GType
-proc GTK_PREVIEW*(obj: pointer): PGtkPreview
-proc GTK_PREVIEW_CLASS*(klass: pointer): PGtkPreviewClass
-proc GTK_IS_PREVIEW*(obj: pointer): bool
-proc GTK_IS_PREVIEW_CLASS*(klass: pointer): bool
-proc GTK_PREVIEW_GET_CLASS*(obj: pointer): PGtkPreviewClass
-proc get_type*(a: var TGtkPreview): guint
-proc set_type*(a: var TGtkPreview, `type`: guint)
-proc get_expand*(a: var TGtkPreview): guint
-proc set_expand*(a: var TGtkPreview, `expand`: guint)
-proc gtk_preview_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_preview_get_type".}
-proc gtk_preview_uninit*(){.cdecl, dynlib: gtklib, importc: "gtk_preview_uninit".}
-proc gtk_preview_new*(thetype: TGtkPreviewClass): PGtkPreview{.cdecl,
-    dynlib: gtklib, importc: "gtk_preview_new".}
-proc gtk_preview_size*(preview: PGtkPreview, width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_preview_size".}
-proc gtk_preview_put*(preview: PGtkPreview, window: PGdkWindow, gc: PGdkGC,
-                      srcx: gint, srcy: gint, destx: gint, desty: gint,
-                      width: gint, height: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_preview_put".}
-proc gtk_preview_draw_row*(preview: PGtkPreview, data: Pguchar, x: gint,
-                           y: gint, w: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_preview_draw_row".}
-proc gtk_preview_set_expand*(preview: PGtkPreview, expand: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_preview_set_expand".}
-proc gtk_preview_set_gamma*(gamma: float64){.cdecl, dynlib: gtklib,
+proc TYPE_PREVIEW*(): GType
+proc PREVIEW*(obj: pointer): PPreview
+proc PREVIEW_CLASS*(klass: pointer): PPreviewClass
+proc IS_PREVIEW*(obj: pointer): bool
+proc IS_PREVIEW_CLASS*(klass: pointer): bool
+proc PREVIEW_GET_CLASS*(obj: pointer): PPreviewClass
+proc get_type*(a: var TPreview): guint
+proc set_type*(a: var TPreview, `type`: guint)
+proc get_expand*(a: var TPreview): guint
+proc set_expand*(a: var TPreview, `expand`: guint)
+proc preview_get_type*(): TType{.cdecl, dynlib: lib, 
+                                 importc: "gtk_preview_get_type".}
+proc preview_uninit*(){.cdecl, dynlib: lib, importc: "gtk_preview_uninit".}
+proc preview_new*(thetype: TPreviewClass): PPreview{.cdecl, dynlib: lib, 
+    importc: "gtk_preview_new".}
+proc size*(preview: PPreview, width: gint, height: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_preview_size".}
+proc put*(preview: PPreview, window: gdk2.PWindow, gc: gdk2.PGC, srcx: gint, 
+                  srcy: gint, destx: gint, desty: gint, width: gint, 
+                  height: gint){.cdecl, dynlib: lib, importc: "gtk_preview_put".}
+proc draw_row*(preview: PPreview, data: Pguchar, x: gint, y: gint, 
+                       w: gint){.cdecl, dynlib: lib, 
+                                 importc: "gtk_preview_draw_row".}
+proc set_expand*(preview: PPreview, expand: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_preview_set_expand".}
+proc preview_set_gamma*(gamma: float64){.cdecl, dynlib: lib, 
     importc: "gtk_preview_set_gamma".}
-proc gtk_preview_set_color_cube*(nred_shades: guint, ngreen_shades: guint,
-                                 nblue_shades: guint, ngray_shades: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_preview_set_color_cube".}
-proc gtk_preview_set_install_cmap*(install_cmap: gint){.cdecl, dynlib: gtklib,
+proc preview_set_color_cube*(nred_shades: guint, ngreen_shades: guint, 
+                             nblue_shades: guint, ngray_shades: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_preview_set_color_cube".}
+proc preview_set_install_cmap*(install_cmap: gint){.cdecl, dynlib: lib, 
     importc: "gtk_preview_set_install_cmap".}
-proc gtk_preview_set_reserved*(nreserved: gint){.cdecl, dynlib: gtklib,
+proc preview_set_reserved*(nreserved: gint){.cdecl, dynlib: lib, 
     importc: "gtk_preview_set_reserved".}
-proc gtk_preview_set_dither*(preview: PGtkPreview, dither: TGdkRgbDither){.
-    cdecl, dynlib: gtklib, importc: "gtk_preview_set_dither".}
-proc gtk_preview_get_info*(): PGtkPreviewInfo{.cdecl, dynlib: gtklib,
-    importc: "gtk_preview_get_info".}
-proc gtk_preview_reset*(){.cdecl, dynlib: gtklib, importc: "gtk_preview_reset".}
-const
-  bm_TGtkProgress_show_text* = 0x00000001'i16
+proc set_dither*(preview: PPreview, dither: gdk2.TRgbDither){.cdecl, 
+    dynlib: lib, importc: "gtk_preview_set_dither".}
+proc preview_get_info*(): PPreviewInfo{.cdecl, dynlib: lib, 
+                                        importc: "gtk_preview_get_info".}
+proc preview_reset*(){.cdecl, dynlib: lib, importc: "gtk_preview_reset".}
+const 
+  bm_TGtkProgress_show_text* = 0x0001'i16
   bp_TGtkProgress_show_text* = 0'i16
-  bm_TGtkProgress_activity_mode* = 0x00000002'i16
+  bm_TGtkProgress_activity_mode* = 0x0002'i16
   bp_TGtkProgress_activity_mode* = 1'i16
-  bm_TGtkProgress_use_text_format* = 0x00000004'i16
+  bm_TGtkProgress_use_text_format* = 0x0004'i16
   bp_TGtkProgress_use_text_format* = 2'i16
 
-proc show_text*(a: var TGtkProgress): guint
-proc set_show_text*(a: var TGtkProgress, `show_text`: guint)
-proc activity_mode*(a: var TGtkProgress): guint
-proc set_activity_mode*(a: var TGtkProgress, `activity_mode`: guint)
-proc use_text_format*(a: var TGtkProgress): guint
-proc set_use_text_format*(a: var TGtkProgress, `use_text_format`: guint)
-const
-  bm_TGtkProgressBar_activity_dir* = 0x00000001'i16
+proc show_text*(a: var TProgress): guint
+proc set_show_text*(a: var TProgress, `show_text`: guint)
+proc activity_mode*(a: var TProgress): guint
+proc set_activity_mode*(a: var TProgress, `activity_mode`: guint)
+proc use_text_format*(a: var TProgress): guint
+proc set_use_text_format*(a: var TProgress, `use_text_format`: guint)
+const 
+  bm_TGtkProgressBar_activity_dir* = 0x0001'i16
   bp_TGtkProgressBar_activity_dir* = 0'i16
 
-proc GTK_TYPE_PROGRESS_BAR*(): GType
-proc GTK_PROGRESS_BAR*(obj: pointer): PGtkProgressBar
-proc GTK_PROGRESS_BAR_CLASS*(klass: pointer): PGtkProgressBarClass
-proc GTK_IS_PROGRESS_BAR*(obj: pointer): bool
-proc GTK_IS_PROGRESS_BAR_CLASS*(klass: pointer): bool
-proc GTK_PROGRESS_BAR_GET_CLASS*(obj: pointer): PGtkProgressBarClass
-proc activity_dir*(a: var TGtkProgressBar): guint
-proc set_activity_dir*(a: var TGtkProgressBar, `activity_dir`: guint)
-proc gtk_progress_bar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_progress_bar_get_type".}
-proc gtk_progress_bar_new*(): PGtkProgressBar{.cdecl, dynlib: gtklib,
-    importc: "gtk_progress_bar_new".}
-proc gtk_progress_bar_pulse*(pbar: PGtkProgressBar){.cdecl, dynlib: gtklib,
+proc TYPE_PROGRESS_BAR*(): GType
+proc PROGRESS_BAR*(obj: pointer): PProgressBar
+proc PROGRESS_BAR_CLASS*(klass: pointer): PProgressBarClass
+proc IS_PROGRESS_BAR*(obj: pointer): bool
+proc IS_PROGRESS_BAR_CLASS*(klass: pointer): bool
+proc PROGRESS_BAR_GET_CLASS*(obj: pointer): PProgressBarClass
+proc activity_dir*(a: var TProgressBar): guint
+proc set_activity_dir*(a: var TProgressBar, `activity_dir`: guint)
+proc progress_bar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_progress_bar_get_type".}
+proc progress_bar_new*(): PProgressBar{.cdecl, dynlib: lib, 
+                                        importc: "gtk_progress_bar_new".}
+proc pulse*(pbar: PProgressBar){.cdecl, dynlib: lib, 
     importc: "gtk_progress_bar_pulse".}
-proc gtk_progress_bar_set_text*(pbar: PGtkProgressBar, text: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_progress_bar_set_text".}
-proc gtk_progress_bar_set_fraction*(pbar: PGtkProgressBar, fraction: gdouble){.
-    cdecl, dynlib: gtklib, importc: "gtk_progress_bar_set_fraction".}
-proc gtk_progress_bar_set_pulse_step*(pbar: PGtkProgressBar, fraction: gdouble){.
-    cdecl, dynlib: gtklib, importc: "gtk_progress_bar_set_pulse_step".}
-proc gtk_progress_bar_set_orientation*(pbar: PGtkProgressBar,
-                                       orientation: TGtkProgressBarOrientation){.
-    cdecl, dynlib: gtklib, importc: "gtk_progress_bar_set_orientation".}
-proc gtk_progress_bar_get_text*(pbar: PGtkProgressBar): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_progress_bar_get_text".}
-proc gtk_progress_bar_get_fraction*(pbar: PGtkProgressBar): gdouble{.cdecl,
-    dynlib: gtklib, importc: "gtk_progress_bar_get_fraction".}
-proc gtk_progress_bar_get_pulse_step*(pbar: PGtkProgressBar): gdouble{.cdecl,
-    dynlib: gtklib, importc: "gtk_progress_bar_get_pulse_step".}
-proc gtk_progress_bar_get_orientation*(pbar: PGtkProgressBar): TGtkProgressBarOrientation{.
-    cdecl, dynlib: gtklib, importc: "gtk_progress_bar_get_orientation".}
-proc GTK_TYPE_RADIO_BUTTON*(): GType
-proc GTK_RADIO_BUTTON*(obj: pointer): PGtkRadioButton
-proc GTK_RADIO_BUTTON_CLASS*(klass: pointer): PGtkRadioButtonClass
-proc GTK_IS_RADIO_BUTTON*(obj: pointer): bool
-proc GTK_IS_RADIO_BUTTON_CLASS*(klass: pointer): bool
-proc GTK_RADIO_BUTTON_GET_CLASS*(obj: pointer): PGtkRadioButtonClass
-proc gtk_radio_button_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_radio_button_get_type".}
-proc gtk_radio_button_new*(group: PGSList): PGtkRadioButton{.cdecl, dynlib: gtklib,
+proc set_text*(pbar: PProgressBar, text: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_progress_bar_set_text".}
+proc set_fraction*(pbar: PProgressBar, fraction: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_progress_bar_set_fraction".}
+proc set_pulse_step*(pbar: PProgressBar, fraction: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_progress_bar_set_pulse_step".}
+proc set_orientation*(pbar: PProgressBar, 
+                                   orientation: TProgressBarOrientation){.cdecl, 
+    dynlib: lib, importc: "gtk_progress_bar_set_orientation".}
+proc get_text*(pbar: PProgressBar): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_progress_bar_get_text".}
+proc get_fraction*(pbar: PProgressBar): gdouble{.cdecl, 
+    dynlib: lib, importc: "gtk_progress_bar_get_fraction".}
+proc get_pulse_step*(pbar: PProgressBar): gdouble{.cdecl, 
+    dynlib: lib, importc: "gtk_progress_bar_get_pulse_step".}
+proc get_orientation*(pbar: PProgressBar): TProgressBarOrientation{.
+    cdecl, dynlib: lib, importc: "gtk_progress_bar_get_orientation".}
+proc TYPE_RADIO_BUTTON*(): GType
+proc RADIO_BUTTON*(obj: pointer): PRadioButton
+proc RADIO_BUTTON_CLASS*(klass: pointer): PRadioButtonClass
+proc IS_RADIO_BUTTON*(obj: pointer): bool
+proc IS_RADIO_BUTTON_CLASS*(klass: pointer): bool
+proc RADIO_BUTTON_GET_CLASS*(obj: pointer): PRadioButtonClass
+proc radio_button_get_type*(): TType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_radio_button_get_type".}
+proc radio_button_new*(group: PGSList): PRadioButton{.cdecl, dynlib: lib, 
     importc: "gtk_radio_button_new".}
-proc gtk_radio_button_new_from_widget*(group: PGtkRadioButton): PGtkRadioButton{.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_button_new_from_widget".}
-proc gtk_radio_button_new_with_label*(group: PGSList, `label`: cstring): PGtkRadioButton{.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_button_new_with_label".}
-proc gtk_radio_button_new_with_label_from_widget*(group: PGtkRadioButton,
-    `label`: cstring): PGtkRadioButton{.cdecl, dynlib: gtklib, importc: "gtk_radio_button_new_with_label_from_widget".}
-proc gtk_radio_button_new_with_mnemonic*(group: PGSList, `label`: cstring): PGtkRadioButton{.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_button_new_with_mnemonic".}
-proc gtk_radio_button_new_with_mnemonic_from_widget*(group: PGtkRadioButton,
-    `label`: cstring): PGtkRadioButton{.cdecl, dynlib: gtklib, importc: "gtk_radio_button_new_with_mnemonic_from_widget".}
-proc gtk_radio_button_get_group*(radio_button: PGtkRadioButton): PGSList{.cdecl,
-    dynlib: gtklib, importc: "gtk_radio_button_get_group".}
-proc gtk_radio_button_set_group*(radio_button: PGtkRadioButton, group: PGSList){.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_button_set_group".}
-proc GTK_TYPE_RADIO_MENU_ITEM*(): GType
-proc GTK_RADIO_MENU_ITEM*(obj: pointer): PGtkRadioMenuItem
-proc GTK_RADIO_MENU_ITEM_CLASS*(klass: pointer): PGtkRadioMenuItemClass
-proc GTK_IS_RADIO_MENU_ITEM*(obj: pointer): bool
-proc GTK_IS_RADIO_MENU_ITEM_CLASS*(klass: pointer): bool
-proc GTK_RADIO_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkRadioMenuItemClass
-proc gtk_radio_menu_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc new_from_widget*(group: PRadioButton): PRadioButton{.cdecl, 
+    dynlib: lib, importc: "gtk_radio_button_new_from_widget".}
+proc radio_button_new_with_label*(group: PGSList, `label`: cstring): PRadioButton{.
+    cdecl, dynlib: lib, importc: "gtk_radio_button_new_with_label".}
+proc new_with_label_from_widget*(group: PRadioButton, 
+    `label`: cstring): PRadioButton{.cdecl, dynlib: lib, importc: "gtk_radio_button_new_with_label_from_widget".}
+proc radio_button_new_with_mnemonic*(group: PGSList, `label`: cstring): PRadioButton{.
+    cdecl, dynlib: lib, importc: "gtk_radio_button_new_with_mnemonic".}
+proc new_with_mnemonic_from_widget*(group: PRadioButton, 
+    `label`: cstring): PRadioButton{.cdecl, dynlib: lib, importc: "gtk_radio_button_new_with_mnemonic_from_widget".}
+proc get_group*(radio_button: PRadioButton): PGSList{.cdecl, 
+    dynlib: lib, importc: "gtk_radio_button_get_group".}
+proc set_group*(radio_button: PRadioButton, group: PGSList){.cdecl, 
+    dynlib: lib, importc: "gtk_radio_button_set_group".}
+proc TYPE_RADIO_MENU_ITEM*(): GType
+proc RADIO_MENU_ITEM*(obj: pointer): PRadioMenuItem
+proc RADIO_MENU_ITEM_CLASS*(klass: pointer): PRadioMenuItemClass
+proc IS_RADIO_MENU_ITEM*(obj: pointer): bool
+proc IS_RADIO_MENU_ITEM_CLASS*(klass: pointer): bool
+proc RADIO_MENU_ITEM_GET_CLASS*(obj: pointer): PRadioMenuItemClass
+proc radio_menu_item_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_radio_menu_item_get_type".}
-proc gtk_radio_menu_item_new*(group: PGSList): PGtkRadioMenuItem{.cdecl,
-    dynlib: gtklib, importc: "gtk_radio_menu_item_new".}
-proc gtk_radio_menu_item_new_with_label*(group: PGSList, `label`: cstring): PGtkRadioMenuItem{.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_menu_item_new_with_label".}
-proc gtk_radio_menu_item_new_with_mnemonic*(group: PGSList, `label`: cstring): PGtkRadioMenuItem{.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_menu_item_new_with_mnemonic".}
-proc gtk_radio_menu_item_get_group*(radio_menu_item: PGtkRadioMenuItem): PGSList{.
-    cdecl, dynlib: gtklib, importc: "gtk_radio_menu_item_get_group".}
-proc gtk_radio_menu_item_set_group*(radio_menu_item: PGtkRadioMenuItem,
-                                    group: PGSList){.cdecl, dynlib: gtklib,
-    importc: "gtk_radio_menu_item_set_group".}
-const
-  bm_TGtkScrolledWindow_hscrollbar_policy* = 0x00000003'i16
+proc radio_menu_item_new*(group: PGSList): PRadioMenuItem{.cdecl, dynlib: lib, 
+    importc: "gtk_radio_menu_item_new".}
+proc radio_menu_item_new_with_label*(group: PGSList, `label`: cstring): PRadioMenuItem{.
+    cdecl, dynlib: lib, importc: "gtk_radio_menu_item_new_with_label".}
+proc radio_menu_item_new_with_mnemonic*(group: PGSList, `label`: cstring): PRadioMenuItem{.
+    cdecl, dynlib: lib, importc: "gtk_radio_menu_item_new_with_mnemonic".}
+proc item_get_group*(radio_menu_item: PRadioMenuItem): PGSList{.
+    cdecl, dynlib: lib, importc: "gtk_radio_menu_item_get_group".}
+proc item_set_group*(radio_menu_item: PRadioMenuItem, group: PGSList){.
+    cdecl, dynlib: lib, importc: "gtk_radio_menu_item_set_group".}
+const 
+  bm_TGtkScrolledWindow_hscrollbar_policy* = 0x0003'i16
   bp_TGtkScrolledWindow_hscrollbar_policy* = 0'i16
-  bm_TGtkScrolledWindow_vscrollbar_policy* = 0x0000000C'i16
+  bm_TGtkScrolledWindow_vscrollbar_policy* = 0x000C'i16
   bp_TGtkScrolledWindow_vscrollbar_policy* = 2'i16
-  bm_TGtkScrolledWindow_hscrollbar_visible* = 0x00000010'i16
+  bm_TGtkScrolledWindow_hscrollbar_visible* = 0x0010'i16
   bp_TGtkScrolledWindow_hscrollbar_visible* = 4'i16
-  bm_TGtkScrolledWindow_vscrollbar_visible* = 0x00000020'i16
+  bm_TGtkScrolledWindow_vscrollbar_visible* = 0x0020'i16
   bp_TGtkScrolledWindow_vscrollbar_visible* = 5'i16
-  bm_TGtkScrolledWindow_window_placement* = 0x000000C0'i16
+  bm_TGtkScrolledWindow_window_placement* = 0x00C0'i16
   bp_TGtkScrolledWindow_window_placement* = 6'i16
-  bm_TGtkScrolledWindow_focus_out* = 0x00000100'i16
+  bm_TGtkScrolledWindow_focus_out* = 0x0100'i16
   bp_TGtkScrolledWindow_focus_out* = 8'i16
 
-proc GTK_TYPE_SCROLLED_WINDOW*(): GType
-proc GTK_SCROLLED_WINDOW*(obj: pointer): PGtkScrolledWindow
-proc GTK_SCROLLED_WINDOW_CLASS*(klass: pointer): PGtkScrolledWindowClass
-proc GTK_IS_SCROLLED_WINDOW*(obj: pointer): bool
-proc GTK_IS_SCROLLED_WINDOW_CLASS*(klass: pointer): bool
-proc GTK_SCROLLED_WINDOW_GET_CLASS*(obj: pointer): PGtkScrolledWindowClass
-proc hscrollbar_policy*(a: var TGtkScrolledWindow): guint
-proc set_hscrollbar_policy*(a: var TGtkScrolledWindow,
-                            `hscrollbar_policy`: guint)
-proc vscrollbar_policy*(a: var TGtkScrolledWindow): guint
-proc set_vscrollbar_policy*(a: var TGtkScrolledWindow,
-                            `vscrollbar_policy`: guint)
-proc hscrollbar_visible*(a: var TGtkScrolledWindow): guint
-proc set_hscrollbar_visible*(a: var TGtkScrolledWindow,
-                             `hscrollbar_visible`: guint)
-proc vscrollbar_visible*(a: var TGtkScrolledWindow): guint
-proc set_vscrollbar_visible*(a: var TGtkScrolledWindow,
-                             `vscrollbar_visible`: guint)
-proc window_placement*(a: var TGtkScrolledWindow): guint
-proc set_window_placement*(a: var TGtkScrolledWindow, `window_placement`: guint)
-proc focus_out*(a: var TGtkScrolledWindow): guint
-proc set_focus_out*(a: var TGtkScrolledWindow, `focus_out`: guint)
-proc gtk_scrolled_window_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_SCROLLED_WINDOW*(): GType
+proc SCROLLED_WINDOW*(obj: pointer): PScrolledWindow
+proc SCROLLED_WINDOW_CLASS*(klass: pointer): PScrolledWindowClass
+proc IS_SCROLLED_WINDOW*(obj: pointer): bool
+proc IS_SCROLLED_WINDOW_CLASS*(klass: pointer): bool
+proc SCROLLED_WINDOW_GET_CLASS*(obj: pointer): PScrolledWindowClass
+proc hscrollbar_policy*(a: var TScrolledWindow): guint
+proc set_hscrollbar_policy*(a: var TScrolledWindow, `hscrollbar_policy`: guint)
+proc vscrollbar_policy*(a: var TScrolledWindow): guint
+proc set_vscrollbar_policy*(a: var TScrolledWindow, `vscrollbar_policy`: guint)
+proc hscrollbar_visible*(a: var TScrolledWindow): guint
+proc set_hscrollbar_visible*(a: var TScrolledWindow, `hscrollbar_visible`: guint)
+proc vscrollbar_visible*(a: var TScrolledWindow): guint
+proc set_vscrollbar_visible*(a: var TScrolledWindow, `vscrollbar_visible`: guint)
+proc window_placement*(a: var TScrolledWindow): guint
+proc set_window_placement*(a: var TScrolledWindow, `window_placement`: guint)
+proc focus_out*(a: var TScrolledWindow): guint
+proc set_focus_out*(a: var TScrolledWindow, `focus_out`: guint)
+proc scrolled_window_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_scrolled_window_get_type".}
-proc gtk_scrolled_window_new*(hadjustment: PGtkAdjustment,
-                              vadjustment: PGtkAdjustment): PGtkScrolledWindow{.cdecl,
-    dynlib: gtklib, importc: "gtk_scrolled_window_new".}
-proc gtk_scrolled_window_set_hadjustment*(scrolled_window: PGtkScrolledWindow,
-    hadjustment: PGtkAdjustment){.cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_set_hadjustment".}
-proc gtk_scrolled_window_set_vadjustment*(scrolled_window: PGtkScrolledWindow,
-    hadjustment: PGtkAdjustment){.cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_set_vadjustment".}
-proc gtk_scrolled_window_get_hadjustment*(scrolled_window: PGtkScrolledWindow): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_get_hadjustment".}
-proc gtk_scrolled_window_get_vadjustment*(scrolled_window: PGtkScrolledWindow): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_get_vadjustment".}
-proc gtk_scrolled_window_set_policy*(scrolled_window: PGtkScrolledWindow,
-                                     hscrollbar_policy: TGtkPolicyType,
-                                     vscrollbar_policy: TGtkPolicyType){.cdecl,
-    dynlib: gtklib, importc: "gtk_scrolled_window_set_policy".}
-proc gtk_scrolled_window_get_policy*(scrolled_window: PGtkScrolledWindow,
-                                     hscrollbar_policy: PGtkPolicyType,
-                                     vscrollbar_policy: PGtkPolicyType){.cdecl,
-    dynlib: gtklib, importc: "gtk_scrolled_window_get_policy".}
-proc gtk_scrolled_window_set_placement*(scrolled_window: PGtkScrolledWindow,
-                                        window_placement: TGtkCornerType){.
-    cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_set_placement".}
-proc gtk_scrolled_window_get_placement*(scrolled_window: PGtkScrolledWindow): TGtkCornerType{.
-    cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_get_placement".}
-proc gtk_scrolled_window_set_shadow_type*(scrolled_window: PGtkScrolledWindow,
-    thetype: TGtkShadowType){.cdecl, dynlib: gtklib,
-                              importc: "gtk_scrolled_window_set_shadow_type".}
-proc gtk_scrolled_window_get_shadow_type*(scrolled_window: PGtkScrolledWindow): TGtkShadowType{.
-    cdecl, dynlib: gtklib, importc: "gtk_scrolled_window_get_shadow_type".}
-proc gtk_scrolled_window_add_with_viewport*(scrolled_window: PGtkScrolledWindow,
-    child: PGtkWidget){.cdecl, dynlib: gtklib,
-                        importc: "gtk_scrolled_window_add_with_viewport".}
-proc GTK_TYPE_SELECTION_DATA*(): GType
-proc gtk_target_list_new*(targets: PGtkTargetEntry, ntargets: guint): PGtkTargetList{.
-    cdecl, dynlib: gtklib, importc: "gtk_target_list_new".}
-proc gtk_target_list_ref*(list: PGtkTargetList){.cdecl, dynlib: gtklib,
+proc scrolled_window_new*(hadjustment: PAdjustment, vadjustment: PAdjustment): PScrolledWindow{.
+    cdecl, dynlib: lib, importc: "gtk_scrolled_window_new".}
+proc set_hadjustment*(scrolled_window: PScrolledWindow, 
+                                      hadjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_scrolled_window_set_hadjustment".}
+proc set_vadjustment*(scrolled_window: PScrolledWindow, 
+                                      hadjustment: PAdjustment){.cdecl, 
+    dynlib: lib, importc: "gtk_scrolled_window_set_vadjustment".}
+proc get_hadjustment*(scrolled_window: PScrolledWindow): PAdjustment{.
+    cdecl, dynlib: lib, importc: "gtk_scrolled_window_get_hadjustment".}
+proc get_vadjustment*(scrolled_window: PScrolledWindow): PAdjustment{.
+    cdecl, dynlib: lib, importc: "gtk_scrolled_window_get_vadjustment".}
+proc set_policy*(scrolled_window: PScrolledWindow, 
+                                 hscrollbar_policy: TPolicyType, 
+                                 vscrollbar_policy: TPolicyType){.cdecl, 
+    dynlib: lib, importc: "gtk_scrolled_window_set_policy".}
+proc get_policy*(scrolled_window: PScrolledWindow, 
+                                 hscrollbar_policy: PPolicyType, 
+                                 vscrollbar_policy: PPolicyType){.cdecl, 
+    dynlib: lib, importc: "gtk_scrolled_window_get_policy".}
+proc set_placement*(scrolled_window: PScrolledWindow, 
+                                    window_placement: TCornerType){.cdecl, 
+    dynlib: lib, importc: "gtk_scrolled_window_set_placement".}
+proc get_placement*(scrolled_window: PScrolledWindow): TCornerType{.
+    cdecl, dynlib: lib, importc: "gtk_scrolled_window_get_placement".}
+proc set_shadow_type*(scrolled_window: PScrolledWindow, 
+                                      thetype: TShadowType){.cdecl, dynlib: lib, 
+    importc: "gtk_scrolled_window_set_shadow_type".}
+proc get_shadow_type*(scrolled_window: PScrolledWindow): TShadowType{.
+    cdecl, dynlib: lib, importc: "gtk_scrolled_window_get_shadow_type".}
+proc add_with_viewport*(scrolled_window: PScrolledWindow, 
+                                        child: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_scrolled_window_add_with_viewport".}
+proc TYPE_SELECTION_DATA*(): GType
+proc list_new*(targets: PTargetEntry, ntargets: guint): PTargetList{.
+    cdecl, dynlib: lib, importc: "gtk_target_list_new".}
+proc reference*(list: PTargetList){.cdecl, dynlib: lib, 
     importc: "gtk_target_list_ref".}
-proc gtk_target_list_unref*(list: PGtkTargetList){.cdecl, dynlib: gtklib,
+proc unref*(list: PTargetList){.cdecl, dynlib: lib, 
     importc: "gtk_target_list_unref".}
-proc gtk_target_list_add*(list: PGtkTargetList, target: TGdkAtom, flags: guint,
-                          info: guint){.cdecl, dynlib: gtklib,
-                                        importc: "gtk_target_list_add".}
-proc gtk_target_list_add_table*(list: PGtkTargetList, targets: PGtkTargetEntry,
-                                ntargets: guint){.cdecl, dynlib: gtklib,
+proc add*(list: PTargetList, target: gdk2.TAtom, flags: guint, 
+                      info: guint){.cdecl, dynlib: lib, 
+                                    importc: "gtk_target_list_add".}
+proc add_table*(list: PTargetList, targets: PTargetEntry, 
+                            ntargets: guint){.cdecl, dynlib: lib, 
     importc: "gtk_target_list_add_table".}
-proc gtk_target_list_remove*(list: PGtkTargetList, target: TGdkAtom){.cdecl,
-    dynlib: gtklib, importc: "gtk_target_list_remove".}
-proc gtk_target_list_find*(list: PGtkTargetList, target: TGdkAtom, info: Pguint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_target_list_find".}
-proc gtk_selection_owner_set*(widget: PGtkWidget, selection: TGdkAtom,
-                              time: guint32): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_selection_owner_set".}
-proc gtk_selection_owner_set_for_display*(display: PGdkDisplay,
-    widget: PGtkWidget, selection: TGdkAtom, time: guint32): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_selection_owner_set_for_display".}
-proc gtk_selection_add_target*(widget: PGtkWidget, selection: TGdkAtom,
-                               target: TGdkAtom, info: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_selection_add_target".}
-proc gtk_selection_add_targets*(widget: PGtkWidget, selection: TGdkAtom,
-                                targets: PGtkTargetEntry, ntargets: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_add_targets".}
-proc gtk_selection_clear_targets*(widget: PGtkWidget, selection: TGdkAtom){.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_clear_targets".}
-proc gtk_selection_convert*(widget: PGtkWidget, selection: TGdkAtom,
-                            target: TGdkAtom, time: guint32): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_selection_convert".}
-proc gtk_selection_data_set*(selection_data: PGtkSelectionData,
-                             thetype: TGdkAtom, format: gint, data: Pguchar,
-                             length: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_selection_data_set".}
-proc gtk_selection_data_set_text*(selection_data: PGtkSelectionData,
-                                  str: cstring, len: gint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_selection_data_set_text".}
-proc gtk_selection_data_get_text*(selection_data: PGtkSelectionData): Pguchar{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_data_get_text".}
-proc gtk_selection_data_targets_include_text*(selection_data: PGtkSelectionData): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_data_targets_include_text".}
-proc gtk_selection_remove_all*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc remove*(list: PTargetList, target: gdk2.TAtom){.cdecl, 
+    dynlib: lib, importc: "gtk_target_list_remove".}
+proc find*(list: PTargetList, target: gdk2.TAtom, info: Pguint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_target_list_find".}
+proc selection_owner_set*(widget: PWidget, selection: gdk2.TAtom, time: guint32): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_owner_set".}
+proc selection_owner_set_for_display*(display: gdk2.PDisplay, widget: PWidget, 
+                                      selection: gdk2.TAtom, time: guint32): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_owner_set_for_display".}
+proc selection_add_target*(widget: PWidget, selection: gdk2.TAtom, 
+                           target: gdk2.TAtom, info: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_selection_add_target".}
+proc selection_add_targets*(widget: PWidget, selection: gdk2.TAtom, 
+                            targets: PTargetEntry, ntargets: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_selection_add_targets".}
+proc selection_clear_targets*(widget: PWidget, selection: gdk2.TAtom){.cdecl, 
+    dynlib: lib, importc: "gtk_selection_clear_targets".}
+proc selection_convert*(widget: PWidget, selection: gdk2.TAtom, target: gdk2.TAtom, 
+                        time: guint32): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_selection_convert".}
+proc set*(selection_data: PSelectionData, thetype: gdk2.TAtom, 
+                         format: gint, data: Pguchar, length: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_selection_data_set".}
+proc set_text*(selection_data: PSelectionData, str: cstring, 
+                              len: gint): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_selection_data_set_text".}
+proc get_text*(selection_data: PSelectionData): Pguchar{.cdecl, 
+    dynlib: lib, importc: "gtk_selection_data_get_text".}
+proc targets_include_text*(selection_data: PSelectionData): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_data_targets_include_text".}
+proc selection_remove_all*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "gtk_selection_remove_all".}
-proc gtk_selection_clear*(widget: PGtkWidget, event: PGdkEventSelection): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_clear".}
-proc gtk_selection_request*(widget: PGtkWidget, event: PGdkEventSelection): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_request".}
-proc gtk_selection_incr_event*(window: PGdkWindow, event: PGdkEventProperty): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_incr_event".}
-proc gtk_selection_notify*(widget: PGtkWidget, event: PGdkEventSelection): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_notify".}
-proc gtk_selection_property_notify*(widget: PGtkWidget, event: PGdkEventProperty): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_property_notify".}
-proc gtk_selection_data_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_selection_data_get_type".}
-proc gtk_selection_data_copy*(data: PGtkSelectionData): PGtkSelectionData{.
-    cdecl, dynlib: gtklib, importc: "gtk_selection_data_copy".}
-proc gtk_selection_data_free*(data: PGtkSelectionData){.cdecl, dynlib: gtklib,
+proc selection_clear*(widget: PWidget, event: gdk2.PEventSelection): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_clear".}
+proc selection_request*(widget: PWidget, event: gdk2.PEventSelection): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_request".}
+proc selection_incr_event*(window: gdk2.PWindow, event: gdk2.PEventProperty): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_incr_event".}
+proc selection_notify*(widget: PWidget, event: gdk2.PEventSelection): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_notify".}
+proc selection_property_notify*(widget: PWidget, event: gdk2.PEventProperty): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_selection_property_notify".}
+proc selection_data_get_type*(): GType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_selection_data_get_type".}
+proc copy*(data: PSelectionData): PSelectionData{.cdecl, 
+    dynlib: lib, importc: "gtk_selection_data_copy".}
+proc free*(data: PSelectionData){.cdecl, dynlib: lib, 
     importc: "gtk_selection_data_free".}
-proc GTK_TYPE_SEPARATOR_MENU_ITEM*(): GType
-proc GTK_SEPARATOR_MENU_ITEM*(obj: pointer): PGtkSeparatorMenuItem
-proc GTK_SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): PGtkSeparatorMenuItemClass
-proc GTK_IS_SEPARATOR_MENU_ITEM*(obj: pointer): bool
-proc GTK_IS_SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): bool
-proc GTK_SEPARATOR_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkSeparatorMenuItemClass
-proc gtk_separator_menu_item_get_type*(): GType{.cdecl, dynlib: gtklib,
+proc TYPE_SEPARATOR_MENU_ITEM*(): GType
+proc SEPARATOR_MENU_ITEM*(obj: pointer): PSeparatorMenuItem
+proc SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): PSeparatorMenuItemClass
+proc IS_SEPARATOR_MENU_ITEM*(obj: pointer): bool
+proc IS_SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): bool
+proc SEPARATOR_MENU_ITEM_GET_CLASS*(obj: pointer): PSeparatorMenuItemClass
+proc separator_menu_item_get_type*(): GType{.cdecl, dynlib: lib, 
     importc: "gtk_separator_menu_item_get_type".}
-proc gtk_separator_menu_item_new*(): PGtkSeparatorMenuItem{.cdecl, dynlib: gtklib,
+proc separator_menu_item_new*(): PSeparatorMenuItem{.cdecl, dynlib: lib, 
     importc: "gtk_separator_menu_item_new".}
-const
-  bm_TGtkSizeGroup_have_width* = 0x00000001'i16
+const 
+  bm_TGtkSizeGroup_have_width* = 0x0001'i16
   bp_TGtkSizeGroup_have_width* = 0'i16
-  bm_TGtkSizeGroup_have_height* = 0x00000002'i16
+  bm_TGtkSizeGroup_have_height* = 0x0002'i16
   bp_TGtkSizeGroup_have_height* = 1'i16
 
-proc GTK_TYPE_SIZE_GROUP*(): GType
-proc GTK_SIZE_GROUP*(obj: pointer): PGtkSizeGroup
-proc GTK_SIZE_GROUP_CLASS*(klass: pointer): PGtkSizeGroupClass
-proc GTK_IS_SIZE_GROUP*(obj: pointer): bool
-proc GTK_IS_SIZE_GROUP_CLASS*(klass: pointer): bool
-proc GTK_SIZE_GROUP_GET_CLASS*(obj: pointer): PGtkSizeGroupClass
-proc have_width*(a: var TGtkSizeGroup): guint
-proc set_have_width*(a: var TGtkSizeGroup, `have_width`: guint)
-proc have_height*(a: var TGtkSizeGroup): guint
-proc set_have_height*(a: var TGtkSizeGroup, `have_height`: guint)
-proc gtk_size_group_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_size_group_get_type".}
-proc gtk_size_group_new*(mode: TGtkSizeGroupMode): PGtkSizeGroup{.cdecl,
-    dynlib: gtklib, importc: "gtk_size_group_new".}
-proc gtk_size_group_set_mode*(size_group: PGtkSizeGroup, mode: TGtkSizeGroupMode){.
-    cdecl, dynlib: gtklib, importc: "gtk_size_group_set_mode".}
-proc gtk_size_group_get_mode*(size_group: PGtkSizeGroup): TGtkSizeGroupMode{.
-    cdecl, dynlib: gtklib, importc: "gtk_size_group_get_mode".}
-proc gtk_size_group_add_widget*(size_group: PGtkSizeGroup, widget: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_size_group_add_widget".}
-proc gtk_size_group_remove_widget*(size_group: PGtkSizeGroup, widget: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_size_group_remove_widget".}
-proc gtk_size_group_get_child_requisition*(widget: PGtkWidget,
-    requisition: PGtkRequisition){.cdecl, dynlib: gtklib, importc: "_gtk_size_group_get_child_requisition".}
-proc gtk_size_group_compute_requisition*(widget: PGtkWidget,
-    requisition: PGtkRequisition){.cdecl, dynlib: gtklib, importc: "_gtk_size_group_compute_requisition".}
-proc gtk_size_group_queue_resize*(widget: PGtkWidget){.cdecl, dynlib: gtklib,
+proc TYPE_SIZE_GROUP*(): GType
+proc SIZE_GROUP*(obj: pointer): PSizeGroup
+proc SIZE_GROUP_CLASS*(klass: pointer): PSizeGroupClass
+proc IS_SIZE_GROUP*(obj: pointer): bool
+proc IS_SIZE_GROUP_CLASS*(klass: pointer): bool
+proc SIZE_GROUP_GET_CLASS*(obj: pointer): PSizeGroupClass
+proc have_width*(a: var TSizeGroup): guint
+proc set_have_width*(a: var TSizeGroup, `have_width`: guint)
+proc have_height*(a: var TSizeGroup): guint
+proc set_have_height*(a: var TSizeGroup, `have_height`: guint)
+proc size_group_get_type*(): GType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_size_group_get_type".}
+proc size_group_new*(mode: TSizeGroupMode): PSizeGroup{.cdecl, dynlib: lib, 
+    importc: "gtk_size_group_new".}
+proc set_mode*(size_group: PSizeGroup, mode: TSizeGroupMode){.cdecl, 
+    dynlib: lib, importc: "gtk_size_group_set_mode".}
+proc get_mode*(size_group: PSizeGroup): TSizeGroupMode{.cdecl, 
+    dynlib: lib, importc: "gtk_size_group_get_mode".}
+proc add_widget*(size_group: PSizeGroup, widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_size_group_add_widget".}
+proc remove_widget*(size_group: PSizeGroup, widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_size_group_remove_widget".}
+proc size_group_get_child_requisition*(widget: PWidget, 
+                                       requisition: PRequisition){.cdecl, 
+    dynlib: lib, importc: "_gtk_size_group_get_child_requisition".}
+proc size_group_compute_requisition*(widget: PWidget, requisition: PRequisition){.
+    cdecl, dynlib: lib, importc: "_gtk_size_group_compute_requisition".}
+proc size_group_queue_resize*(widget: PWidget){.cdecl, dynlib: lib, 
     importc: "_gtk_size_group_queue_resize".}
-const
-  bm_TGtkSocket_same_app* = 0x00000001'i16
+const 
+  bm_TGtkSocket_same_app* = 0x0001'i16
   bp_TGtkSocket_same_app* = 0'i16
-  bm_TGtkSocket_focus_in* = 0x00000002'i16
+  bm_TGtkSocket_focus_in* = 0x0002'i16
   bp_TGtkSocket_focus_in* = 1'i16
-  bm_TGtkSocket_have_size* = 0x00000004'i16
+  bm_TGtkSocket_have_size* = 0x0004'i16
   bp_TGtkSocket_have_size* = 2'i16
-  bm_TGtkSocket_need_map* = 0x00000008'i16
+  bm_TGtkSocket_need_map* = 0x0008'i16
   bp_TGtkSocket_need_map* = 3'i16
-  bm_TGtkSocket_is_mapped* = 0x00000010'i16
+  bm_TGtkSocket_is_mapped* = 0x0010'i16
   bp_TGtkSocket_is_mapped* = 4'i16
 
-proc GTK_TYPE_SOCKET*(): GType
-proc GTK_SOCKET*(obj: pointer): PGtkSocket
-proc GTK_SOCKET_CLASS*(klass: pointer): PGtkSocketClass
-proc GTK_IS_SOCKET*(obj: pointer): bool
-proc GTK_IS_SOCKET_CLASS*(klass: pointer): bool
-proc GTK_SOCKET_GET_CLASS*(obj: pointer): PGtkSocketClass
-proc same_app*(a: var TGtkSocket): guint
-proc set_same_app*(a: var TGtkSocket, `same_app`: guint)
-proc focus_in*(a: var TGtkSocket): guint
-proc set_focus_in*(a: var TGtkSocket, `focus_in`: guint)
-proc have_size*(a: var TGtkSocket): guint
-proc set_have_size*(a: var TGtkSocket, `have_size`: guint)
-proc need_map*(a: var TGtkSocket): guint
-proc set_need_map*(a: var TGtkSocket, `need_map`: guint)
-proc is_mapped*(a: var TGtkSocket): guint
-proc set_is_mapped*(a: var TGtkSocket, `is_mapped`: guint)
-proc gtk_socket_new*(): PGtkSocket {.cdecl, dynlib: gtklib,
-                                    importc: "gtk_socket_new".}
-proc gtk_socket_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_socket_get_type".}
-proc gtk_socket_add_id*(socket: PGtkSocket, window_id: TGdkNativeWindow){.cdecl,
-    dynlib: gtklib, importc: "gtk_socket_add_id".}
-proc gtk_socket_get_id*(socket: PGtkSocket): TGdkNativeWindow{.cdecl,
-    dynlib: gtklib, importc: "gtk_socket_get_id".}
-const
-  GTK_INPUT_ERROR* = - (1)
+proc TYPE_SOCKET*(): GType
+proc SOCKET*(obj: pointer): PSocket
+proc SOCKET_CLASS*(klass: pointer): PSocketClass
+proc IS_SOCKET*(obj: pointer): bool
+proc IS_SOCKET_CLASS*(klass: pointer): bool
+proc SOCKET_GET_CLASS*(obj: pointer): PSocketClass
+proc same_app*(a: var TSocket): guint
+proc set_same_app*(a: var TSocket, `same_app`: guint)
+proc focus_in*(a: var TSocket): guint
+proc set_focus_in*(a: var TSocket, `focus_in`: guint)
+proc have_size*(a: var TSocket): guint
+proc set_have_size*(a: var TSocket, `have_size`: guint)
+proc need_map*(a: var TSocket): guint
+proc set_need_map*(a: var TSocket, `need_map`: guint)
+proc is_mapped*(a: var TSocket): guint
+proc set_is_mapped*(a: var TSocket, `is_mapped`: guint)
+proc socket_new*(): PSocket{.cdecl, dynlib: lib, importc: "gtk_socket_new".}
+proc socket_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_socket_get_type".}
+proc add_id*(socket: PSocket, window_id: gdk2.TNativeWindow){.cdecl, 
+    dynlib: lib, importc: "gtk_socket_add_id".}
+proc get_id*(socket: PSocket): gdk2.TNativeWindow{.cdecl, dynlib: lib, 
+    importc: "gtk_socket_get_id".}
+const 
+  INPUT_ERROR* = - (1)
   bm_TGtkSpinButton_in_child* = 0x00000003'i32
   bp_TGtkSpinButton_in_child* = 0'i32
   bm_TGtkSpinButton_click_child* = 0x0000000C'i32
@@ -8632,588 +8298,569 @@ const
   bm_TGtkSpinButton_snap_to_ticks* = 0x00400000'i32
   bp_TGtkSpinButton_snap_to_ticks* = 22'i32
 
-proc GTK_TYPE_SPIN_BUTTON*(): GType
-proc GTK_SPIN_BUTTON*(obj: pointer): PGtkSpinButton
-proc GTK_SPIN_BUTTON_CLASS*(klass: pointer): PGtkSpinButtonClass
-proc GTK_IS_SPIN_BUTTON*(obj: pointer): bool
-proc GTK_IS_SPIN_BUTTON_CLASS*(klass: pointer): bool
-proc GTK_SPIN_BUTTON_GET_CLASS*(obj: pointer): PGtkSpinButtonClass
-proc in_child*(a: var TGtkSpinButton): guint
-proc set_in_child*(a: var TGtkSpinButton, `in_child`: guint)
-proc click_child*(a: var TGtkSpinButton): guint
-proc set_click_child*(a: var TGtkSpinButton, `click_child`: guint)
-proc button*(a: var TGtkSpinButton): guint
-proc set_button*(a: var TGtkSpinButton, `button`: guint)
-proc need_timer*(a: var TGtkSpinButton): guint
-proc set_need_timer*(a: var TGtkSpinButton, `need_timer`: guint)
-proc timer_calls*(a: var TGtkSpinButton): guint
-proc set_timer_calls*(a: var TGtkSpinButton, `timer_calls`: guint)
-proc digits*(a: var TGtkSpinButton): guint
-proc set_digits*(a: var TGtkSpinButton, `digits`: guint)
-proc numeric*(a: var TGtkSpinButton): guint
-proc set_numeric*(a: var TGtkSpinButton, `numeric`: guint)
-proc wrap*(a: var TGtkSpinButton): guint
-proc set_wrap*(a: var TGtkSpinButton, `wrap`: guint)
-proc snap_to_ticks*(a: var TGtkSpinButton): guint
-proc set_snap_to_ticks*(a: var TGtkSpinButton, `snap_to_ticks`: guint)
-proc gtk_spin_button_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_spin_button_get_type".}
-proc gtk_spin_button_configure*(spin_button: PGtkSpinButton,
-                                adjustment: PGtkAdjustment, climb_rate: gdouble,
-                                digits: guint){.cdecl, dynlib: gtklib,
-    importc: "gtk_spin_button_configure".}
-proc gtk_spin_button_new*(adjustment: PGtkAdjustment, climb_rate: gdouble,
-                          digits: guint): PGtkSpinButton{.cdecl, dynlib: gtklib,
+proc TYPE_SPIN_BUTTON*(): GType
+proc SPIN_BUTTON*(obj: pointer): PSpinButton
+proc SPIN_BUTTON_CLASS*(klass: pointer): PSpinButtonClass
+proc IS_SPIN_BUTTON*(obj: pointer): bool
+proc IS_SPIN_BUTTON_CLASS*(klass: pointer): bool
+proc SPIN_BUTTON_GET_CLASS*(obj: pointer): PSpinButtonClass
+proc in_child*(a: var TSpinButton): guint
+proc set_in_child*(a: var TSpinButton, `in_child`: guint)
+proc click_child*(a: var TSpinButton): guint
+proc set_click_child*(a: var TSpinButton, `click_child`: guint)
+proc button*(a: var TSpinButton): guint
+proc set_button*(a: var TSpinButton, `button`: guint)
+proc need_timer*(a: var TSpinButton): guint
+proc set_need_timer*(a: var TSpinButton, `need_timer`: guint)
+proc timer_calls*(a: var TSpinButton): guint
+proc set_timer_calls*(a: var TSpinButton, `timer_calls`: guint)
+proc digits*(a: var TSpinButton): guint
+proc set_digits*(a: var TSpinButton, `digits`: guint)
+proc numeric*(a: var TSpinButton): guint
+proc set_numeric*(a: var TSpinButton, `numeric`: guint)
+proc wrap*(a: var TSpinButton): guint
+proc set_wrap*(a: var TSpinButton, `wrap`: guint)
+proc snap_to_ticks*(a: var TSpinButton): guint
+proc set_snap_to_ticks*(a: var TSpinButton, `snap_to_ticks`: guint)
+proc spin_button_get_type*(): TType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_spin_button_get_type".}
+proc configure*(spin_button: PSpinButton, adjustment: PAdjustment, 
+                            climb_rate: gdouble, digits: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_configure".}
+proc spin_button_new*(adjustment: PAdjustment, climb_rate: gdouble, 
+                      digits: guint): PSpinButton{.cdecl, dynlib: lib, 
     importc: "gtk_spin_button_new".}
-proc gtk_spin_button_new_with_range*(min: gdouble, max: gdouble, step: gdouble): PGtkSpinButton{.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_new_with_range".}
-proc gtk_spin_button_set_adjustment*(spin_button: PGtkSpinButton,
-                                     adjustment: PGtkAdjustment){.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_set_adjustment".}
-proc gtk_spin_button_get_adjustment*(spin_button: PGtkSpinButton): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_get_adjustment".}
-proc gtk_spin_button_set_digits*(spin_button: PGtkSpinButton, digits: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_set_digits".}
-proc gtk_spin_button_get_digits*(spin_button: PGtkSpinButton): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_get_digits".}
-proc gtk_spin_button_set_increments*(spin_button: PGtkSpinButton, step: gdouble,
-                                     page: gdouble){.cdecl, dynlib: gtklib,
+proc spin_button_new_with_range*(min: gdouble, max: gdouble, step: gdouble): PSpinButton{.
+    cdecl, dynlib: lib, importc: "gtk_spin_button_new_with_range".}
+proc set_adjustment*(spin_button: PSpinButton, 
+                                 adjustment: PAdjustment){.cdecl, dynlib: lib, 
+    importc: "gtk_spin_button_set_adjustment".}
+proc get_adjustment*(spin_button: PSpinButton): PAdjustment{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_adjustment".}
+proc set_digits*(spin_button: PSpinButton, digits: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_set_digits".}
+proc get_digits*(spin_button: PSpinButton): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_digits".}
+proc set_increments*(spin_button: PSpinButton, step: gdouble, 
+                                 page: gdouble){.cdecl, dynlib: lib, 
     importc: "gtk_spin_button_set_increments".}
-proc gtk_spin_button_get_increments*(spin_button: PGtkSpinButton,
-                                     step: Pgdouble, page: Pgdouble){.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_get_increments".}
-proc gtk_spin_button_set_range*(spin_button: PGtkSpinButton, min: gdouble,
-                                max: gdouble){.cdecl, dynlib: gtklib,
-    importc: "gtk_spin_button_set_range".}
-proc gtk_spin_button_get_range*(spin_button: PGtkSpinButton, min: Pgdouble,
-                                max: Pgdouble){.cdecl, dynlib: gtklib,
+proc get_increments*(spin_button: PSpinButton, step: Pgdouble, 
+                                 page: Pgdouble){.cdecl, dynlib: lib, 
+    importc: "gtk_spin_button_get_increments".}
+proc set_range*(spin_button: PSpinButton, min: gdouble, max: gdouble){.
+    cdecl, dynlib: lib, importc: "gtk_spin_button_set_range".}
+proc get_range*(spin_button: PSpinButton, min: Pgdouble, 
+                            max: Pgdouble){.cdecl, dynlib: lib, 
     importc: "gtk_spin_button_get_range".}
-proc gtk_spin_button_get_value*(spin_button: PGtkSpinButton): gdouble{.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_get_value".}
-proc gtk_spin_button_get_value_as_int*(spin_button: PGtkSpinButton): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_get_value_as_int".}
-proc gtk_spin_button_set_value*(spin_button: PGtkSpinButton, value: gdouble){.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_set_value".}
-proc gtk_spin_button_set_update_policy*(spin_button: PGtkSpinButton,
-                                        policy: TGtkSpinButtonUpdatePolicy){.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_set_update_policy".}
-proc gtk_spin_button_get_update_policy*(spin_button: PGtkSpinButton): TGtkSpinButtonUpdatePolicy{.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_get_update_policy".}
-proc gtk_spin_button_set_numeric*(spin_button: PGtkSpinButton, numeric: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_set_numeric".}
-proc gtk_spin_button_get_numeric*(spin_button: PGtkSpinButton): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_get_numeric".}
-proc gtk_spin_button_spin*(spin_button: PGtkSpinButton, direction: TGtkSpinType,
-                           increment: gdouble){.cdecl, dynlib: gtklib,
+proc get_value*(spin_button: PSpinButton): gdouble{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_value".}
+proc get_value_as_int*(spin_button: PSpinButton): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_value_as_int".}
+proc set_value*(spin_button: PSpinButton, value: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_set_value".}
+proc set_update_policy*(spin_button: PSpinButton, 
+                                    policy: TSpinButtonUpdatePolicy){.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_set_update_policy".}
+proc get_update_policy*(spin_button: PSpinButton): TSpinButtonUpdatePolicy{.
+    cdecl, dynlib: lib, importc: "gtk_spin_button_get_update_policy".}
+proc set_numeric*(spin_button: PSpinButton, numeric: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_spin_button_set_numeric".}
+proc get_numeric*(spin_button: PSpinButton): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_numeric".}
+proc spin*(spin_button: PSpinButton, direction: TSpinType, 
+                       increment: gdouble){.cdecl, dynlib: lib, 
     importc: "gtk_spin_button_spin".}
-proc gtk_spin_button_set_wrap*(spin_button: PGtkSpinButton, wrap: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_set_wrap".}
-proc gtk_spin_button_get_wrap*(spin_button: PGtkSpinButton): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_get_wrap".}
-proc gtk_spin_button_set_snap_to_ticks*(spin_button: PGtkSpinButton,
-                                        snap_to_ticks: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_set_snap_to_ticks".}
-proc gtk_spin_button_get_snap_to_ticks*(spin_button: PGtkSpinButton): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_spin_button_get_snap_to_ticks".}
-proc gtk_spin_button_update*(spin_button: PGtkSpinButton){.cdecl,
-    dynlib: gtklib, importc: "gtk_spin_button_update".}
-const
-  GTK_STOCK_DIALOG_INFO* = "gtk-dialog-info"
-  GTK_STOCK_DIALOG_WARNING* = "gtk-dialog-warning"
-  GTK_STOCK_DIALOG_ERROR* = "gtk-dialog-error"
-  GTK_STOCK_DIALOG_QUESTION* = "gtk-dialog-question"
-  GTK_STOCK_DND* = "gtk-dnd"
-  GTK_STOCK_DND_MULTIPLE* = "gtk-dnd-multiple"
-  GTK_STOCK_ABOUT* = "gtk-about"
-  GTK_STOCK_ADD_name* = "gtk-add"
-  GTK_STOCK_APPLY* = "gtk-apply"
-  GTK_STOCK_BOLD* = "gtk-bold"
-  GTK_STOCK_CANCEL* = "gtk-cancel"
-  GTK_STOCK_CDROM* = "gtk-cdrom"
-  GTK_STOCK_CLEAR* = "gtk-clear"
-  GTK_STOCK_CLOSE* = "gtk-close"
-  GTK_STOCK_COLOR_PICKER* = "gtk-color-picker"
-  GTK_STOCK_CONVERT* = "gtk-convert"
-  GTK_STOCK_CONNECT* = "gtk-connect"
-  GTK_STOCK_COPY* = "gtk-copy"
-  GTK_STOCK_CUT* = "gtk-cut"
-  GTK_STOCK_DELETE* = "gtk-delete"
-  GTK_STOCK_EDIT* = "gtk-edit"
-  GTK_STOCK_EXECUTE* = "gtk-execute"
-  GTK_STOCK_FIND* = "gtk-find"
-  GTK_STOCK_FIND_AND_REPLACE* = "gtk-find-and-replace"
-  GTK_STOCK_FLOPPY* = "gtk-floppy"
-  GTK_STOCK_GOTO_BOTTOM* = "gtk-goto-bottom"
-  GTK_STOCK_GOTO_FIRST* = "gtk-goto-first"
-  GTK_STOCK_GOTO_LAST* = "gtk-goto-last"
-  GTK_STOCK_GOTO_TOP* = "gtk-goto-top"
-  GTK_STOCK_GO_BACK* = "gtk-go-back"
-  GTK_STOCK_GO_DOWN* = "gtk-go-down"
-  GTK_STOCK_GO_FORWARD* = "gtk-go-forward"
-  GTK_STOCK_GO_UP* = "gtk-go-up"
-  GTK_STOCK_HELP* = "gtk-help"
-  GTK_STOCK_HOME* = "gtk-home"
-  GTK_STOCK_INDEX* = "gtk-index"
-  GTK_STOCK_ITALIC* = "gtk-italic"
-  GTK_STOCK_JUMP_TO* = "gtk-jump-to"
-  GTK_STOCK_JUSTIFY_CENTER* = "gtk-justify-center"
-  GTK_STOCK_JUSTIFY_FILL* = "gtk-justify-fill"
-  GTK_STOCK_JUSTIFY_LEFT* = "gtk-justify-left"
-  GTK_STOCK_JUSTIFY_RIGHT* = "gtk-justify-right"
-  GTK_STOCK_MEDIA_FORWARD* = "gtk-media-forward"
-  GTK_STOCK_MEDIA_NEXT* = "gtk-media-next"
-  GTK_STOCK_MEDIA_PAUSE* = "gtk-media-pause"
-  GTK_STOCK_MEDIA_PLAY* = "gtk-media-play"
-  GTK_STOCK_MEDIA_PREVIOUS* = "gtk-media-previous"
-  GTK_STOCK_MEDIA_RECORD* = "gtk-media-record"
-  GTK_STOCK_MEDIA_REWIND* = "gtk-media-rewind"
-  GTK_STOCK_MEDIA_STOP* = "gtk-media-stop"
-  GTK_STOCK_MISSING_IMAGE* = "gtk-missing-image"
-  GTK_STOCK_NEW* = "gtk-new"
-  GTK_STOCK_NO* = "gtk-no"
-  GTK_STOCK_OK* = "gtk-ok"
-  GTK_STOCK_OPEN* = "gtk-open"
-  GTK_STOCK_PASTE* = "gtk-paste"
-  GTK_STOCK_PREFERENCES* = "gtk-preferences"
-  GTK_STOCK_PRINT* = "gtk-print"
-  GTK_STOCK_PRINT_PREVIEW* = "gtk-print-preview"
-  GTK_STOCK_PROPERTIES* = "gtk-properties"
-  GTK_STOCK_QUIT* = "gtk-quit"
-  GTK_STOCK_REDO* = "gtk-redo"
-  GTK_STOCK_REFRESH* = "gtk-refresh"
-  GTK_STOCK_REMOVE* = "gtk-remove"
-  GTK_STOCK_REVERT_TO_SAVED* = "gtk-revert-to-saved"
-  GTK_STOCK_SAVE* = "gtk-save"
-  GTK_STOCK_SAVE_AS* = "gtk-save-as"
-  GTK_STOCK_SELECT_COLOR* = "gtk-select-color"
-  GTK_STOCK_SELECT_FONT* = "gtk-select-font"
-  GTK_STOCK_SORT_ASCENDING* = "gtk-sort-ascending"
-  GTK_STOCK_SORT_DESCENDING* = "gtk-sort-descending"
-  GTK_STOCK_SPELL_CHECK* = "gtk-spell-check"
-  GTK_STOCK_STOP* = "gtk-stop"
-  GTK_STOCK_STRIKETHROUGH* = "gtk-strikethrough"
-  GTK_STOCK_UNDELETE* = "gtk-undelete"
-  GTK_STOCK_UNDERLINE* = "gtk-underline"
-  GTK_STOCK_UNDO* = "gtk-undo"
-  GTK_STOCK_YES* = "gtk-yes"
-  GTK_STOCK_ZOOM_100* = "gtk-zoom-100"
-  GTK_STOCK_ZOOM_FIT* = "gtk-zoom-fit"
-  GTK_STOCK_ZOOM_IN* = "gtk-zoom-in"
-  GTK_STOCK_ZOOM_OUT* = "gtk-zoom-out"
-
-proc gtk_stock_add*(items: PGtkStockItem, n_items: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_stock_add".}
-proc gtk_stock_add_static*(items: PGtkStockItem, n_items: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_stock_add_static".}
-proc gtk_stock_lookup*(stock_id: cstring, item: PGtkStockItem): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_stock_lookup".}
-proc gtk_stock_list_ids*(): PGSList{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_stock_list_ids".}
-proc gtk_stock_item_copy*(item: PGtkStockItem): PGtkStockItem{.cdecl,
-    dynlib: gtklib, importc: "gtk_stock_item_copy".}
-proc gtk_stock_item_free*(item: PGtkStockItem){.cdecl, dynlib: gtklib,
+proc set_wrap*(spin_button: PSpinButton, wrap: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_set_wrap".}
+proc get_wrap*(spin_button: PSpinButton): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_wrap".}
+proc set_snap_to_ticks*(spin_button: PSpinButton, 
+                                    snap_to_ticks: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_set_snap_to_ticks".}
+proc get_snap_to_ticks*(spin_button: PSpinButton): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_spin_button_get_snap_to_ticks".}
+proc update*(spin_button: PSpinButton){.cdecl, dynlib: lib, 
+    importc: "gtk_spin_button_update".}
+const 
+  STOCK_DIALOG_INFO* = "gtk-dialog-info"
+  STOCK_DIALOG_WARNING* = "gtk-dialog-warning"
+  STOCK_DIALOG_ERROR* = "gtk-dialog-error"
+  STOCK_DIALOG_QUESTION* = "gtk-dialog-question"
+  STOCK_DND* = "gtk-dnd"
+  STOCK_DND_MULTIPLE* = "gtk-dnd-multiple"
+  STOCK_ABOUT* = "gtk-about"
+  STOCK_ADD_name* = "gtk-add"
+  STOCK_APPLY* = "gtk-apply"
+  STOCK_BOLD* = "gtk-bold"
+  STOCK_CANCEL* = "gtk-cancel"
+  STOCK_CDROM* = "gtk-cdrom"
+  STOCK_CLEAR* = "gtk-clear"
+  STOCK_CLOSE* = "gtk-close"
+  STOCK_COLOR_PICKER* = "gtk-color-picker"
+  STOCK_CONVERT* = "gtk-convert"
+  STOCK_CONNECT* = "gtk-connect"
+  STOCK_COPY* = "gtk-copy"
+  STOCK_CUT* = "gtk-cut"
+  STOCK_DELETE* = "gtk-delete"
+  STOCK_EDIT* = "gtk-edit"
+  STOCK_EXECUTE* = "gtk-execute"
+  STOCK_FIND* = "gtk-find"
+  STOCK_FIND_AND_REPLACE* = "gtk-find-and-replace"
+  STOCK_FLOPPY* = "gtk-floppy"
+  STOCK_GOTO_BOTTOM* = "gtk-goto-bottom"
+  STOCK_GOTO_FIRST* = "gtk-goto-first"
+  STOCK_GOTO_LAST* = "gtk-goto-last"
+  STOCK_GOTO_TOP* = "gtk-goto-top"
+  STOCK_GO_BACK* = "gtk-go-back"
+  STOCK_GO_DOWN* = "gtk-go-down"
+  STOCK_GO_FORWARD* = "gtk-go-forward"
+  STOCK_GO_UP* = "gtk-go-up"
+  STOCK_HELP* = "gtk-help"
+  STOCK_HOME* = "gtk-home"
+  STOCK_INDEX* = "gtk-index"
+  STOCK_ITALIC* = "gtk-italic"
+  STOCK_JUMP_TO* = "gtk-jump-to"
+  STOCK_JUSTIFY_CENTER* = "gtk-justify-center"
+  STOCK_JUSTIFY_FILL* = "gtk-justify-fill"
+  STOCK_JUSTIFY_LEFT* = "gtk-justify-left"
+  STOCK_JUSTIFY_RIGHT* = "gtk-justify-right"
+  STOCK_MEDIA_FORWARD* = "gtk-media-forward"
+  STOCK_MEDIA_NEXT* = "gtk-media-next"
+  STOCK_MEDIA_PAUSE* = "gtk-media-pause"
+  STOCK_MEDIA_PLAY* = "gtk-media-play"
+  STOCK_MEDIA_PREVIOUS* = "gtk-media-previous"
+  STOCK_MEDIA_RECORD* = "gtk-media-record"
+  STOCK_MEDIA_REWIND* = "gtk-media-rewind"
+  STOCK_MEDIA_STOP* = "gtk-media-stop"
+  STOCK_MISSING_IMAGE* = "gtk-missing-image"
+  STOCK_NEW* = "gtk-new"
+  STOCK_NO* = "gtk-no"
+  STOCK_OK* = "gtk-ok"
+  STOCK_OPEN* = "gtk-open"
+  STOCK_PASTE* = "gtk-paste"
+  STOCK_PREFERENCES* = "gtk-preferences"
+  STOCK_PRINT* = "gtk-print"
+  STOCK_PRINT_PREVIEW* = "gtk-print-preview"
+  STOCK_PROPERTIES* = "gtk-properties"
+  STOCK_QUIT* = "gtk-quit"
+  STOCK_REDO* = "gtk-redo"
+  STOCK_REFRESH* = "gtk-refresh"
+  STOCK_REMOVE* = "gtk-remove"
+  STOCK_REVERT_TO_SAVED* = "gtk-revert-to-saved"
+  STOCK_SAVE* = "gtk-save"
+  STOCK_SAVE_AS* = "gtk-save-as"
+  STOCK_SELECT_COLOR* = "gtk-select-color"
+  STOCK_SELECT_FONT* = "gtk-select-font"
+  STOCK_SORT_ASCENDING* = "gtk-sort-ascending"
+  STOCK_SORT_DESCENDING* = "gtk-sort-descending"
+  STOCK_SPELL_CHECK* = "gtk-spell-check"
+  STOCK_STOP* = "gtk-stop"
+  STOCK_STRIKETHROUGH* = "gtk-strikethrough"
+  STOCK_UNDELETE* = "gtk-undelete"
+  STOCK_UNDERLINE* = "gtk-underline"
+  STOCK_UNDO* = "gtk-undo"
+  STOCK_YES* = "gtk-yes"
+  STOCK_ZOOM_100* = "gtk-zoom-100"
+  STOCK_ZOOM_FIT* = "gtk-zoom-fit"
+  STOCK_ZOOM_IN* = "gtk-zoom-in"
+  STOCK_ZOOM_OUT* = "gtk-zoom-out"
+
+proc add*(items: PStockItem, n_items: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_stock_add".}
+proc add_static*(items: PStockItem, n_items: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_stock_add_static".}
+proc stock_lookup*(stock_id: cstring, item: PStockItem): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_stock_lookup".}
+proc stock_list_ids*(): PGSList{.cdecl, dynlib: lib, 
+                                 importc: "gtk_stock_list_ids".}
+proc copy*(item: PStockItem): PStockItem{.cdecl, dynlib: lib, 
+    importc: "gtk_stock_item_copy".}
+proc free*(item: PStockItem){.cdecl, dynlib: lib, 
     importc: "gtk_stock_item_free".}
-proc GTK_TYPE_STATUSBAR*(): GType
-proc GTK_STATUSBAR*(obj: pointer): PGtkStatusbar
-proc GTK_STATUSBAR_CLASS*(klass: pointer): PGtkStatusbarClass
-proc GTK_IS_STATUSBAR*(obj: pointer): bool
-proc GTK_IS_STATUSBAR_CLASS*(klass: pointer): bool
-proc GTK_STATUSBAR_GET_CLASS*(obj: pointer): PGtkStatusbarClass
-const
-  bm_TGtkStatusbar_has_resize_grip* = 0x00000001'i16
+proc TYPE_STATUSBAR*(): GType
+proc STATUSBAR*(obj: pointer): PStatusbar
+proc STATUSBAR_CLASS*(klass: pointer): PStatusbarClass
+proc IS_STATUSBAR*(obj: pointer): bool
+proc IS_STATUSBAR_CLASS*(klass: pointer): bool
+proc STATUSBAR_GET_CLASS*(obj: pointer): PStatusbarClass
+const 
+  bm_TGtkStatusbar_has_resize_grip* = 0x0001'i16
   bp_TGtkStatusbar_has_resize_grip* = 0'i16
 
-proc has_resize_grip*(a: var TGtkStatusbar): guint
-proc set_has_resize_grip*(a: var TGtkStatusbar, `has_resize_grip`: guint)
-proc gtk_statusbar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_statusbar_get_type".}
-proc gtk_statusbar_new*(): PGtkStatusbar{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_statusbar_new".}
-proc gtk_statusbar_get_context_id*(statusbar: PGtkStatusbar,
-                                   context_description: cstring): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_statusbar_get_context_id".}
-proc gtk_statusbar_push*(statusbar: PGtkStatusbar, context_id: guint,
-                         text: cstring): guint{.cdecl, dynlib: gtklib,
-    importc: "gtk_statusbar_push".}
-proc gtk_statusbar_pop*(statusbar: PGtkStatusbar, context_id: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_statusbar_pop".}
-proc gtk_statusbar_remove*(statusbar: PGtkStatusbar, context_id: guint,
-                           message_id: guint){.cdecl, dynlib: gtklib,
+proc has_resize_grip*(a: var TStatusbar): guint
+proc set_has_resize_grip*(a: var TStatusbar, `has_resize_grip`: guint)
+proc statusbar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_statusbar_get_type".}
+proc statusbar_new*(): PStatusbar{.cdecl, dynlib: lib, 
+                                   importc: "gtk_statusbar_new".}
+proc get_context_id*(statusbar: PStatusbar, 
+                               context_description: cstring): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_statusbar_get_context_id".}
+proc push*(statusbar: PStatusbar, context_id: guint, text: cstring): guint{.
+    cdecl, dynlib: lib, importc: "gtk_statusbar_push".}
+proc pop*(statusbar: PStatusbar, context_id: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_statusbar_pop".}
+proc remove*(statusbar: PStatusbar, context_id: guint, 
+                       message_id: guint){.cdecl, dynlib: lib, 
     importc: "gtk_statusbar_remove".}
-proc gtk_statusbar_set_has_resize_grip*(statusbar: PGtkStatusbar,
-                                        setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_statusbar_set_has_resize_grip".}
-proc gtk_statusbar_get_has_resize_grip*(statusbar: PGtkStatusbar): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_statusbar_get_has_resize_grip".}
-const
-  bm_TGtkTable_homogeneous* = 0x00000001'i16
+proc set_has_resize_grip*(statusbar: PStatusbar, setting: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_statusbar_set_has_resize_grip".}
+proc get_has_resize_grip*(statusbar: PStatusbar): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_statusbar_get_has_resize_grip".}
+const 
+  bm_TGtkTable_homogeneous* = 0x0001'i16
   bp_TGtkTable_homogeneous* = 0'i16
-  bm_TGtkTableChild_xexpand* = 0x00000001'i16
+  bm_TGtkTableChild_xexpand* = 0x0001'i16
   bp_TGtkTableChild_xexpand* = 0'i16
-  bm_TGtkTableChild_yexpand* = 0x00000002'i16
+  bm_TGtkTableChild_yexpand* = 0x0002'i16
   bp_TGtkTableChild_yexpand* = 1'i16
-  bm_TGtkTableChild_xshrink* = 0x00000004'i16
+  bm_TGtkTableChild_xshrink* = 0x0004'i16
   bp_TGtkTableChild_xshrink* = 2'i16
-  bm_TGtkTableChild_yshrink* = 0x00000008'i16
+  bm_TGtkTableChild_yshrink* = 0x0008'i16
   bp_TGtkTableChild_yshrink* = 3'i16
-  bm_TGtkTableChild_xfill* = 0x00000010'i16
+  bm_TGtkTableChild_xfill* = 0x0010'i16
   bp_TGtkTableChild_xfill* = 4'i16
-  bm_TGtkTableChild_yfill* = 0x00000020'i16
+  bm_TGtkTableChild_yfill* = 0x0020'i16
   bp_TGtkTableChild_yfill* = 5'i16
-  bm_TGtkTableRowCol_need_expand* = 0x00000001'i16
+  bm_TGtkTableRowCol_need_expand* = 0x0001'i16
   bp_TGtkTableRowCol_need_expand* = 0'i16
-  bm_TGtkTableRowCol_need_shrink* = 0x00000002'i16
+  bm_TGtkTableRowCol_need_shrink* = 0x0002'i16
   bp_TGtkTableRowCol_need_shrink* = 1'i16
-  bm_TGtkTableRowCol_expand* = 0x00000004'i16
+  bm_TGtkTableRowCol_expand* = 0x0004'i16
   bp_TGtkTableRowCol_expand* = 2'i16
-  bm_TGtkTableRowCol_shrink* = 0x00000008'i16
+  bm_TGtkTableRowCol_shrink* = 0x0008'i16
   bp_TGtkTableRowCol_shrink* = 3'i16
-  bm_TGtkTableRowCol_empty* = 0x00000010'i16
+  bm_TGtkTableRowCol_empty* = 0x0010'i16
   bp_TGtkTableRowCol_empty* = 4'i16
 
-proc GTK_TYPE_TABLE*(): GType
-proc GTK_TABLE*(obj: pointer): PGtkTable
-proc GTK_TABLE_CLASS*(klass: pointer): PGtkTableClass
-proc GTK_IS_TABLE*(obj: pointer): bool
-proc GTK_IS_TABLE_CLASS*(klass: pointer): bool
-proc GTK_TABLE_GET_CLASS*(obj: pointer): PGtkTableClass
-proc homogeneous*(a: var TGtkTable): guint
-proc set_homogeneous*(a: var TGtkTable, `homogeneous`: guint)
-proc xexpand*(a: var TGtkTableChild): guint
-proc set_xexpand*(a: var TGtkTableChild, `xexpand`: guint)
-proc yexpand*(a: var TGtkTableChild): guint
-proc set_yexpand*(a: var TGtkTableChild, `yexpand`: guint)
-proc xshrink*(a: var TGtkTableChild): guint
-proc set_xshrink*(a: var TGtkTableChild, `xshrink`: guint)
-proc yshrink*(a: var TGtkTableChild): guint
-proc set_yshrink*(a: var TGtkTableChild, `yshrink`: guint)
-proc xfill*(a: var TGtkTableChild): guint
-proc set_xfill*(a: var TGtkTableChild, `xfill`: guint)
-proc yfill*(a: var TGtkTableChild): guint
-proc set_yfill*(a: var TGtkTableChild, `yfill`: guint)
-proc need_expand*(a: var TGtkTableRowCol): guint
-proc set_need_expand*(a: var TGtkTableRowCol, `need_expand`: guint)
-proc need_shrink*(a: var TGtkTableRowCol): guint
-proc set_need_shrink*(a: var TGtkTableRowCol, `need_shrink`: guint)
-proc expand*(a: var TGtkTableRowCol): guint
-proc set_expand*(a: var TGtkTableRowCol, `expand`: guint)
-proc shrink*(a: var TGtkTableRowCol): guint
-proc set_shrink*(a: var TGtkTableRowCol, `shrink`: guint)
-proc empty*(a: var TGtkTableRowCol): guint
-proc set_empty*(a: var TGtkTableRowCol, `empty`: guint)
-proc gtk_table_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_table_get_type".}
-proc gtk_table_new*(rows: guint, columns: guint, homogeneous: gboolean): PGtkTable{.
-    cdecl, dynlib: gtklib, importc: "gtk_table_new".}
-proc gtk_table_resize*(table: PGtkTable, rows: guint, columns: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_table_resize".}
-proc gtk_table_attach*(table: PGtkTable, child: PGtkWidget, left_attach: guint,
-                       right_attach: guint, top_attach: guint,
-                       bottom_attach: guint, xoptions: TGtkAttachOptions,
-                       yoptions: TGtkAttachOptions, xpadding: guint,
-                       ypadding: guint){.cdecl, dynlib: gtklib,
+proc TYPE_TABLE*(): GType
+proc TABLE*(obj: pointer): PTable
+proc TABLE_CLASS*(klass: pointer): PTableClass
+proc IS_TABLE*(obj: pointer): bool
+proc IS_TABLE_CLASS*(klass: pointer): bool
+proc TABLE_GET_CLASS*(obj: pointer): PTableClass
+proc homogeneous*(a: var TTable): guint
+proc set_homogeneous*(a: var TTable, `homogeneous`: guint)
+proc xexpand*(a: var TTableChild): guint
+proc set_xexpand*(a: var TTableChild, `xexpand`: guint)
+proc yexpand*(a: var TTableChild): guint
+proc set_yexpand*(a: var TTableChild, `yexpand`: guint)
+proc xshrink*(a: var TTableChild): guint
+proc set_xshrink*(a: var TTableChild, `xshrink`: guint)
+proc yshrink*(a: var TTableChild): guint
+proc set_yshrink*(a: var TTableChild, `yshrink`: guint)
+proc xfill*(a: var TTableChild): guint
+proc set_xfill*(a: var TTableChild, `xfill`: guint)
+proc yfill*(a: var TTableChild): guint
+proc set_yfill*(a: var TTableChild, `yfill`: guint)
+proc need_expand*(a: var TTableRowCol): guint
+proc set_need_expand*(a: var TTableRowCol, `need_expand`: guint)
+proc need_shrink*(a: var TTableRowCol): guint
+proc set_need_shrink*(a: var TTableRowCol, `need_shrink`: guint)
+proc expand*(a: var TTableRowCol): guint
+proc set_expand*(a: var TTableRowCol, `expand`: guint)
+proc shrink*(a: var TTableRowCol): guint
+proc set_shrink*(a: var TTableRowCol, `shrink`: guint)
+proc empty*(a: var TTableRowCol): guint
+proc set_empty*(a: var TTableRowCol, `empty`: guint)
+proc table_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_table_get_type".}
+proc table_new*(rows: guint, columns: guint, homogeneous: gboolean): PTable{.
+    cdecl, dynlib: lib, importc: "gtk_table_new".}
+proc resize*(table: PTable, rows: guint, columns: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_table_resize".}
+proc attach*(table: PTable, child: PWidget, left_attach: guint, 
+                   right_attach: guint, top_attach: guint, bottom_attach: guint, 
+                   xoptions: TAttachOptions, yoptions: TAttachOptions, 
+                   xpadding: guint, ypadding: guint){.cdecl, dynlib: lib, 
     importc: "gtk_table_attach".}
-proc gtk_table_attach_defaults*(table: PGtkTable, widget: PGtkWidget,
-                                left_attach: guint, right_attach: guint,
-                                top_attach: guint, bottom_attach: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_table_attach_defaults".}
-proc gtk_table_set_row_spacing*(table: PGtkTable, row: guint, spacing: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_table_set_row_spacing".}
-proc gtk_table_get_row_spacing*(table: PGtkTable, row: guint): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_table_get_row_spacing".}
-proc gtk_table_set_col_spacing*(table: PGtkTable, column: guint, spacing: guint){.
-    cdecl, dynlib: gtklib, importc: "gtk_table_set_col_spacing".}
-proc gtk_table_get_col_spacing*(table: PGtkTable, column: guint): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_table_get_col_spacing".}
-proc gtk_table_set_row_spacings*(table: PGtkTable, spacing: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_table_set_row_spacings".}
-proc gtk_table_get_default_row_spacing*(table: PGtkTable): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_table_get_default_row_spacing".}
-proc gtk_table_set_col_spacings*(table: PGtkTable, spacing: guint){.cdecl,
-    dynlib: gtklib, importc: "gtk_table_set_col_spacings".}
-proc gtk_table_get_default_col_spacing*(table: PGtkTable): guint{.cdecl,
-    dynlib: gtklib, importc: "gtk_table_get_default_col_spacing".}
-proc gtk_table_set_homogeneous*(table: PGtkTable, homogeneous: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_table_set_homogeneous".}
-proc gtk_table_get_homogeneous*(table: PGtkTable): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_table_get_homogeneous".}
-const
-  bm_TGtkTearoffMenuItem_torn_off* = 0x00000001'i16
+proc attach_defaults*(table: PTable, widget: PWidget, left_attach: guint, 
+                            right_attach: guint, top_attach: guint, 
+                            bottom_attach: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_table_attach_defaults".}
+proc set_row_spacing*(table: PTable, row: guint, spacing: guint){.cdecl, 
+    dynlib: lib, importc: "gtk_table_set_row_spacing".}
+proc get_row_spacing*(table: PTable, row: guint): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_table_get_row_spacing".}
+proc set_col_spacing*(table: PTable, column: guint, spacing: guint){.
+    cdecl, dynlib: lib, importc: "gtk_table_set_col_spacing".}
+proc get_col_spacing*(table: PTable, column: guint): guint{.cdecl, 
+    dynlib: lib, importc: "gtk_table_get_col_spacing".}
+proc set_row_spacings*(table: PTable, spacing: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_table_set_row_spacings".}
+proc get_default_row_spacing*(table: PTable): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_table_get_default_row_spacing".}
+proc set_col_spacings*(table: PTable, spacing: guint){.cdecl, dynlib: lib, 
+    importc: "gtk_table_set_col_spacings".}
+proc get_default_col_spacing*(table: PTable): guint{.cdecl, dynlib: lib, 
+    importc: "gtk_table_get_default_col_spacing".}
+proc set_homogeneous*(table: PTable, homogeneous: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_table_set_homogeneous".}
+proc get_homogeneous*(table: PTable): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_table_get_homogeneous".}
+const 
+  bm_TGtkTearoffMenuItem_torn_off* = 0x0001'i16
   bp_TGtkTearoffMenuItem_torn_off* = 0'i16
 
-proc GTK_TYPE_TEAROFF_MENU_ITEM*(): GType
-proc GTK_TEAROFF_MENU_ITEM*(obj: pointer): PGtkTearoffMenuItem
-proc GTK_TEAROFF_MENU_ITEM_CLASS*(klass: pointer): PGtkTearoffMenuItemClass
-proc GTK_IS_TEAROFF_MENU_ITEM*(obj: pointer): bool
-proc GTK_IS_TEAROFF_MENU_ITEM_CLASS*(klass: pointer): bool
-proc GTK_TEAROFF_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkTearoffMenuItemClass
-proc torn_off*(a: var TGtkTearoffMenuItem): guint
-proc set_torn_off*(a: var TGtkTearoffMenuItem, `torn_off`: guint)
-proc gtk_tearoff_menu_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc TYPE_TEAROFF_MENU_ITEM*(): GType
+proc TEAROFF_MENU_ITEM*(obj: pointer): PTearoffMenuItem
+proc TEAROFF_MENU_ITEM_CLASS*(klass: pointer): PTearoffMenuItemClass
+proc IS_TEAROFF_MENU_ITEM*(obj: pointer): bool
+proc IS_TEAROFF_MENU_ITEM_CLASS*(klass: pointer): bool
+proc TEAROFF_MENU_ITEM_GET_CLASS*(obj: pointer): PTearoffMenuItemClass
+proc torn_off*(a: var TTearoffMenuItem): guint
+proc set_torn_off*(a: var TTearoffMenuItem, `torn_off`: guint)
+proc tearoff_menu_item_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_tearoff_menu_item_get_type".}
-proc gtk_tearoff_menu_item_new*(): PGtkTearoffMenuItem{.cdecl, dynlib: gtklib,
+proc tearoff_menu_item_new*(): PTearoffMenuItem{.cdecl, dynlib: lib, 
     importc: "gtk_tearoff_menu_item_new".}
-const
-  bm_TGtkText_line_wrap* = 0x00000001'i16
+const 
+  bm_TGtkText_line_wrap* = 0x0001'i16
   bp_TGtkText_line_wrap* = 0'i16
-  bm_TGtkText_word_wrap* = 0x00000002'i16
+  bm_TGtkText_word_wrap* = 0x0002'i16
   bp_TGtkText_word_wrap* = 1'i16
-  bm_TGtkText_use_wchar* = 0x00000004'i16
+  bm_TGtkText_use_wchar* = 0x0004'i16
   bp_TGtkText_use_wchar* = 2'i16
 
-proc GTK_TYPE_TEXT*(): GType
-proc GTK_TEXT*(obj: pointer): PGtkText
-proc GTK_TEXT_CLASS*(klass: pointer): PGtkTextClass
-proc GTK_IS_TEXT*(obj: pointer): bool
-proc GTK_IS_TEXT_CLASS*(klass: pointer): bool
-proc GTK_TEXT_GET_CLASS*(obj: pointer): PGtkTextClass
-proc line_wrap*(a: PGtkText): guint
-proc set_line_wrap*(a: PGtkText, `line_wrap`: guint)
-proc word_wrap*(a: PGtkText): guint
-proc set_word_wrap*(a: PGtkText, `word_wrap`: guint)
-proc use_wchar*(a: PGtkText): gboolean
-proc set_use_wchar*(a: PGtkText, `use_wchar`: gboolean)
-proc gtk_text_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_text_get_type".}
-proc gtk_text_new*(hadj: PGtkAdjustment, vadj: PGtkAdjustment): PGtkText{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_new".}
-proc gtk_text_set_editable*(text: PGtkText, editable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_set_editable".}
-proc gtk_text_set_word_wrap*(text: PGtkText, word_wrap: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_set_word_wrap".}
-proc gtk_text_set_line_wrap*(text: PGtkText, line_wrap: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_set_line_wrap".}
-proc gtk_text_set_adjustments*(text: PGtkText, hadj: PGtkAdjustment,
-                               vadj: PGtkAdjustment){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_set_adjustments".}
-proc gtk_text_set_point*(text: PGtkText, index: guint){.cdecl, dynlib: gtklib,
+proc TYPE_TEXT*(): GType
+proc TEXT*(obj: pointer): PText
+proc TEXT_CLASS*(klass: pointer): PTextClass
+proc IS_TEXT*(obj: pointer): bool
+proc IS_TEXT_CLASS*(klass: pointer): bool
+proc TEXT_GET_CLASS*(obj: pointer): PTextClass
+proc line_wrap*(a: PText): guint
+proc set_line_wrap*(a: PText, `line_wrap`: guint)
+proc word_wrap*(a: PText): guint
+proc set_word_wrap*(a: PText, `word_wrap`: guint)
+proc use_wchar*(a: PText): gboolean
+proc set_use_wchar*(a: PText, `use_wchar`: gboolean)
+proc text_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_text_get_type".}
+proc text_new*(hadj: PAdjustment, vadj: PAdjustment): PText{.cdecl, dynlib: lib, 
+    importc: "gtk_text_new".}
+proc set_editable*(text: PText, editable: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_text_set_editable".}
+proc set_word_wrap*(text: PText, word_wrap: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_text_set_word_wrap".}
+proc set_line_wrap*(text: PText, line_wrap: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_text_set_line_wrap".}
+proc set_adjustments*(text: PText, hadj: PAdjustment, vadj: PAdjustment){.
+    cdecl, dynlib: lib, importc: "gtk_text_set_adjustments".}
+proc set_point*(text: PText, index: guint){.cdecl, dynlib: lib, 
     importc: "gtk_text_set_point".}
-proc gtk_text_get_point*(text: PGtkText): guint{.cdecl, dynlib: gtklib,
+proc get_point*(text: PText): guint{.cdecl, dynlib: lib, 
     importc: "gtk_text_get_point".}
-proc gtk_text_get_length*(text: PGtkText): guint{.cdecl, dynlib: gtklib,
+proc get_length*(text: PText): guint{.cdecl, dynlib: lib, 
     importc: "gtk_text_get_length".}
-proc gtk_text_freeze*(text: PGtkText){.cdecl, dynlib: gtklib,
-                                       importc: "gtk_text_freeze".}
-proc gtk_text_thaw*(text: PGtkText){.cdecl, dynlib: gtklib,
-                                     importc: "gtk_text_thaw".}
-proc gtk_text_insert*(text: PGtkText, font: PGdkFont, fore: PGdkColor,
-                      back: PGdkColor, chars: cstring, length: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_insert".}
-proc gtk_text_backward_delete*(text: PGtkText, nchars: guint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_backward_delete".}
-proc gtk_text_forward_delete*(text: PGtkText, nchars: guint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_forward_delete".}
-proc GTK_TEXT_INDEX_WCHAR*(t: PGtkText, index: guint): guint32
-proc GTK_TEXT_INDEX_UCHAR*(t: PGtkText, index: guint): GUChar
-const
-  GTK_TEXT_SEARCH_VISIBLE_ONLY* = 0
-  GTK_TEXT_SEARCH_TEXT_ONLY* = 1
-
-proc GTK_TYPE_TEXT_ITER*(): GType
-proc gtk_text_iter_get_buffer*(iter: PGtkTextIter): PGtkTextBuffer{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_buffer".}
-proc gtk_text_iter_copy*(iter: PGtkTextIter): PGtkTextIter{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_copy".}
-proc gtk_text_iter_free*(iter: PGtkTextIter){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_iter_free".}
-proc gtk_text_iter_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_text_iter_get_type".}
-proc gtk_text_iter_get_offset*(iter: PGtkTextIter): gint{.cdecl, dynlib: gtklib,
+proc freeze*(text: PText){.cdecl, dynlib: lib, importc: "gtk_text_freeze".}
+proc thaw*(text: PText){.cdecl, dynlib: lib, importc: "gtk_text_thaw".}
+proc insert*(text: PText, font: gdk2.PFont, fore: gdk2.PColor, back: gdk2.PColor, 
+                  chars: cstring, length: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_insert".}
+proc backward_delete*(text: PText, nchars: guint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_backward_delete".}
+proc forward_delete*(text: PText, nchars: guint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_forward_delete".}
+proc INDEX_WCHAR*(t: PText, index: guint): guint32
+proc INDEX_UCHAR*(t: PText, index: guint): GUChar
+const 
+  TEXT_SEARCH_VISIBLE_ONLY* = 0
+  TEXT_SEARCH_TEXT_ONLY* = 1
+
+proc TYPE_TEXT_ITER*(): GType
+proc get_buffer*(iter: PTextIter): PTextBuffer{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_buffer".}
+proc copy*(iter: PTextIter): PTextIter{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_copy".}
+proc free*(iter: PTextIter){.cdecl, dynlib: lib, 
+                                       importc: "gtk_text_iter_free".}
+proc text_iter_get_type*(): GType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_text_iter_get_type".}
+proc get_offset*(iter: PTextIter): gint{.cdecl, dynlib: lib, 
     importc: "gtk_text_iter_get_offset".}
-proc gtk_text_iter_get_line*(iter: PGtkTextIter): gint{.cdecl, dynlib: gtklib,
+proc get_line*(iter: PTextIter): gint{.cdecl, dynlib: lib, 
     importc: "gtk_text_iter_get_line".}
-proc gtk_text_iter_get_line_offset*(iter: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_line_offset".}
-proc gtk_text_iter_get_line_index*(iter: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_line_index".}
-proc gtk_text_iter_get_visible_line_offset*(iter: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_visible_line_offset".}
-proc gtk_text_iter_get_visible_line_index*(iter: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_visible_line_index".}
-proc gtk_text_iter_get_char*(iter: PGtkTextIter): gunichar{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_char".}
-proc gtk_text_iter_get_slice*(start: PGtkTextIter, theEnd: PGtkTextIter): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_get_slice".}
-proc gtk_text_iter_get_text*(start: PGtkTextIter, theEnd: PGtkTextIter): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_get_text".}
-proc gtk_text_iter_get_visible_slice*(start: PGtkTextIter, theEnd: PGtkTextIter): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_get_visible_slice".}
-proc gtk_text_iter_get_visible_text*(start: PGtkTextIter, theEnd: PGtkTextIter): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_get_visible_text".}
-proc gtk_text_iter_get_pixbuf*(iter: PGtkTextIter): PGdkPixbuf{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_pixbuf".}
-proc gtk_text_iter_get_marks*(iter: PGtkTextIter): PGSList{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_marks".}
-proc gtk_text_iter_get_child_anchor*(iter: PGtkTextIter): PGtkTextChildAnchor{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_get_child_anchor".}
-proc gtk_text_iter_get_toggled_tags*(iter: PGtkTextIter, toggled_on: gboolean): PGSList{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_get_toggled_tags".}
-proc gtk_text_iter_begins_tag*(iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_begins_tag".}
-proc gtk_text_iter_ends_tag*(iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_ends_tag".}
-proc gtk_text_iter_toggles_tag*(iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_toggles_tag".}
-proc gtk_text_iter_has_tag*(iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_has_tag".}
-proc gtk_text_iter_get_tags*(iter: PGtkTextIter): PGSList{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_tags".}
-proc gtk_text_iter_editable*(iter: PGtkTextIter, default_setting: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_editable".}
-proc gtk_text_iter_can_insert*(iter: PGtkTextIter, default_editability: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_can_insert".}
-proc gtk_text_iter_starts_word*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_starts_word".}
-proc gtk_text_iter_ends_word*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_ends_word".}
-proc gtk_text_iter_inside_word*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_inside_word".}
-proc gtk_text_iter_starts_sentence*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_starts_sentence".}
-proc gtk_text_iter_ends_sentence*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_ends_sentence".}
-proc gtk_text_iter_inside_sentence*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_inside_sentence".}
-proc gtk_text_iter_starts_line*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_starts_line".}
-proc gtk_text_iter_ends_line*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_ends_line".}
-proc gtk_text_iter_is_cursor_position*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_is_cursor_position".}
-proc gtk_text_iter_get_chars_in_line*(iter: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_chars_in_line".}
-proc gtk_text_iter_get_bytes_in_line*(iter: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_bytes_in_line".}
-proc gtk_text_iter_get_attributes*(iter: PGtkTextIter,
-                                   values: PGtkTextAttributes): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_attributes".}
-proc gtk_text_iter_get_language*(iter: PGtkTextIter): PPangoLanguage{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_get_language".}
-proc gtk_text_iter_is_end*(iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib,
+proc get_line_offset*(iter: PTextIter): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_line_offset".}
+proc get_line_index*(iter: PTextIter): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_line_index".}
+proc get_visible_line_offset*(iter: PTextIter): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_get_visible_line_offset".}
+proc get_visible_line_index*(iter: PTextIter): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_get_visible_line_index".}
+proc get_char*(iter: PTextIter): gunichar{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_char".}
+proc get_slice*(start: PTextIter, theEnd: PTextIter): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_get_slice".}
+proc get_text*(start: PTextIter, theEnd: PTextIter): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_get_text".}
+proc get_visible_slice*(start: PTextIter, theEnd: PTextIter): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_get_visible_slice".}
+proc get_visible_text*(start: PTextIter, theEnd: PTextIter): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_get_visible_text".}
+proc get_pixbuf*(iter: PTextIter): gdk2pixbuf.PPixbuf{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_pixbuf".}
+proc get_marks*(iter: PTextIter): PGSList{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_marks".}
+proc get_child_anchor*(iter: PTextIter): PTextChildAnchor{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_get_child_anchor".}
+proc get_toggled_tags*(iter: PTextIter, toggled_on: gboolean): PGSList{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_get_toggled_tags".}
+proc begins_tag*(iter: PTextIter, tag: PTextTag): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_begins_tag".}
+proc ends_tag*(iter: PTextIter, tag: PTextTag): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_ends_tag".}
+proc toggles_tag*(iter: PTextIter, tag: PTextTag): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_toggles_tag".}
+proc has_tag*(iter: PTextIter, tag: PTextTag): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_has_tag".}
+proc get_tags*(iter: PTextIter): PGSList{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_tags".}
+proc editable*(iter: PTextIter, default_setting: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_editable".}
+proc can_insert*(iter: PTextIter, default_editability: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_can_insert".}
+proc starts_word*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_starts_word".}
+proc ends_word*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_ends_word".}
+proc inside_word*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_inside_word".}
+proc starts_sentence*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_starts_sentence".}
+proc ends_sentence*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_ends_sentence".}
+proc inside_sentence*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_inside_sentence".}
+proc starts_line*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_starts_line".}
+proc ends_line*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_ends_line".}
+proc is_cursor_position*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_is_cursor_position".}
+proc get_chars_in_line*(iter: PTextIter): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_chars_in_line".}
+proc get_bytes_in_line*(iter: PTextIter): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_get_bytes_in_line".}
+proc get_attributes*(iter: PTextIter, values: PTextAttributes): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_get_attributes".}
+proc get_language*(iter: PTextIter): pango.PLanguage{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_get_language".}
+proc is_end*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_text_iter_is_end".}
-proc gtk_text_iter_is_start*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_is_start".}
-proc gtk_text_iter_forward_char*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_forward_char".}
-proc gtk_text_iter_backward_char*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_backward_char".}
-proc gtk_text_iter_forward_chars*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_chars".}
-proc gtk_text_iter_backward_chars*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_chars".}
-proc gtk_text_iter_forward_line*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_forward_line".}
-proc gtk_text_iter_backward_line*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_backward_line".}
-proc gtk_text_iter_forward_lines*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_lines".}
-proc gtk_text_iter_backward_lines*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_lines".}
-proc gtk_text_iter_forward_word_end*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_forward_word_end".}
-proc gtk_text_iter_backward_word_start*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_backward_word_start".}
-proc gtk_text_iter_forward_word_ends*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_word_ends".}
-proc gtk_text_iter_backward_word_starts*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_word_starts".}
-proc gtk_text_iter_forward_sentence_end*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_forward_sentence_end".}
-proc gtk_text_iter_backward_sentence_start*(iter: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_sentence_start".}
-proc gtk_text_iter_forward_sentence_ends*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_sentence_ends".}
-proc gtk_text_iter_backward_sentence_starts*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_sentence_starts".}
-proc gtk_text_iter_forward_cursor_position*(iter: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_cursor_position".}
-proc gtk_text_iter_backward_cursor_position*(iter: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_cursor_position".}
-proc gtk_text_iter_forward_cursor_positions*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_cursor_positions".}
-proc gtk_text_iter_backward_cursor_positions*(iter: PGtkTextIter, count: gint): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_cursor_positions".}
-proc gtk_text_iter_set_offset*(iter: PGtkTextIter, char_offset: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_set_offset".}
-proc gtk_text_iter_set_line*(iter: PGtkTextIter, line_number: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_set_line".}
-proc gtk_text_iter_set_line_offset*(iter: PGtkTextIter, char_on_line: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_set_line_offset".}
-proc gtk_text_iter_set_line_index*(iter: PGtkTextIter, byte_on_line: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_set_line_index".}
-proc gtk_text_iter_forward_to_end*(iter: PGtkTextIter){.cdecl, dynlib: gtklib,
+proc is_start*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_is_start".}
+proc forward_char*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_forward_char".}
+proc backward_char*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_backward_char".}
+proc forward_chars*(iter: PTextIter, count: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_forward_chars".}
+proc backward_chars*(iter: PTextIter, count: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_backward_chars".}
+proc forward_line*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_forward_line".}
+proc backward_line*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_backward_line".}
+proc forward_lines*(iter: PTextIter, count: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_forward_lines".}
+proc backward_lines*(iter: PTextIter, count: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_backward_lines".}
+proc forward_word_end*(iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_forward_word_end".}
+proc backward_word_start*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_backward_word_start".}
+proc forward_word_ends*(iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_forward_word_ends".}
+proc backward_word_starts*(iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_backward_word_starts".}
+proc forward_sentence_end*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_forward_sentence_end".}
+proc backward_sentence_start*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_backward_sentence_start".}
+proc forward_sentence_ends*(iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_forward_sentence_ends".}
+proc backward_sentence_starts*(iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_backward_sentence_starts".}
+proc forward_cursor_position*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_forward_cursor_position".}
+proc backward_cursor_position*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_backward_cursor_position".}
+proc forward_cursor_positions*(iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_forward_cursor_positions".}
+proc backward_cursor_positions*(iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_backward_cursor_positions".}
+proc set_offset*(iter: PTextIter, char_offset: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_set_offset".}
+proc set_line*(iter: PTextIter, line_number: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_set_line".}
+proc set_line_offset*(iter: PTextIter, char_on_line: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_set_line_offset".}
+proc set_line_index*(iter: PTextIter, byte_on_line: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_set_line_index".}
+proc forward_to_end*(iter: PTextIter){.cdecl, dynlib: lib, 
     importc: "gtk_text_iter_forward_to_end".}
-proc gtk_text_iter_forward_to_line_end*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_forward_to_line_end".}
-proc gtk_text_iter_set_visible_line_offset*(iter: PGtkTextIter,
-    char_on_line: gint){.cdecl, dynlib: gtklib,
-                         importc: "gtk_text_iter_set_visible_line_offset".}
-proc gtk_text_iter_set_visible_line_index*(iter: PGtkTextIter,
-    byte_on_line: gint){.cdecl, dynlib: gtklib,
-                         importc: "gtk_text_iter_set_visible_line_index".}
-proc gtk_text_iter_forward_to_tag_toggle*(iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_to_tag_toggle".}
-proc gtk_text_iter_backward_to_tag_toggle*(iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_to_tag_toggle".}
-proc gtk_text_iter_forward_find_char*(iter: PGtkTextIter,
-                                      pred: TGtkTextCharPredicate,
-                                      user_data: gpointer, limit: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_find_char".}
-proc gtk_text_iter_backward_find_char*(iter: PGtkTextIter,
-                                       pred: TGtkTextCharPredicate,
-                                       user_data: gpointer, limit: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_find_char".}
-proc gtk_text_iter_forward_search*(iter: PGtkTextIter, str: cstring,
-                                   flags: TGtkTextSearchFlags,
-                                   match_start: PGtkTextIter,
-                                   match_end: PGtkTextIter, limit: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_forward_search".}
-proc gtk_text_iter_backward_search*(iter: PGtkTextIter, str: cstring,
-                                    flags: TGtkTextSearchFlags,
-                                    match_start: PGtkTextIter,
-                                    match_end: PGtkTextIter, limit: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_backward_search".}
-proc gtk_text_iter_equal*(lhs: PGtkTextIter, rhs: PGtkTextIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_iter_equal".}
-proc gtk_text_iter_compare*(lhs: PGtkTextIter, rhs: PGtkTextIter): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_compare".}
-proc gtk_text_iter_in_range*(iter: PGtkTextIter, start: PGtkTextIter,
-                             theEnd: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_in_range".}
-proc gtk_text_iter_order*(first: PGtkTextIter, second: PGtkTextIter){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_iter_order".}
-proc GTK_TYPE_TEXT_TAG*(): GType
-proc GTK_TEXT_TAG*(obj: pointer): PGtkTextTag
-proc GTK_TEXT_TAG_CLASS*(klass: pointer): PGtkTextTagClass
-proc GTK_IS_TEXT_TAG*(obj: pointer): bool
-proc GTK_IS_TEXT_TAG_CLASS*(klass: pointer): bool
-proc GTK_TEXT_TAG_GET_CLASS*(obj: pointer): PGtkTextTagClass
-proc GTK_TYPE_TEXT_ATTRIBUTES*(): GType
-proc gtk_text_tag_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                      importc: "gtk_text_tag_get_type".}
-proc gtk_text_tag_new*(name: cstring): PGtkTextTag{.cdecl, dynlib: gtklib,
+proc forward_to_line_end*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_forward_to_line_end".}
+proc set_visible_line_offset*(iter: PTextIter, char_on_line: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_set_visible_line_offset".}
+proc set_visible_line_index*(iter: PTextIter, byte_on_line: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_set_visible_line_index".}
+proc forward_to_tag_toggle*(iter: PTextIter, tag: PTextTag): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_forward_to_tag_toggle".}
+proc backward_to_tag_toggle*(iter: PTextIter, tag: PTextTag): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_backward_to_tag_toggle".}
+proc forward_find_char*(iter: PTextIter, pred: TTextCharPredicate, 
+                                  user_data: gpointer, limit: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_forward_find_char".}
+proc backward_find_char*(iter: PTextIter, pred: TTextCharPredicate, 
+                                   user_data: gpointer, limit: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_backward_find_char".}
+proc forward_search*(iter: PTextIter, str: cstring, 
+                               flags: TTextSearchFlags, match_start: PTextIter, 
+                               match_end: PTextIter, limit: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_forward_search".}
+proc backward_search*(iter: PTextIter, str: cstring, 
+                                flags: TTextSearchFlags, match_start: PTextIter, 
+                                match_end: PTextIter, limit: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_backward_search".}
+proc equal*(lhs: PTextIter, rhs: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_equal".}
+proc compare*(lhs: PTextIter, rhs: PTextIter): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_iter_compare".}
+proc in_range*(iter: PTextIter, start: PTextIter, theEnd: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_iter_in_range".}
+proc order*(first: PTextIter, second: PTextIter){.cdecl, dynlib: lib, 
+    importc: "gtk_text_iter_order".}
+proc TYPE_TEXT_TAG*(): GType
+proc TEXT_TAG*(obj: pointer): PTextTag
+proc TEXT_TAG_CLASS*(klass: pointer): PTextTagClass
+proc IS_TEXT_TAG*(obj: pointer): bool
+proc IS_TEXT_TAG_CLASS*(klass: pointer): bool
+proc TEXT_TAG_GET_CLASS*(obj: pointer): PTextTagClass
+proc TYPE_TEXT_ATTRIBUTES*(): GType
+proc text_tag_get_type*(): GType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_text_tag_get_type".}
+proc text_tag_new*(name: cstring): PTextTag{.cdecl, dynlib: lib, 
     importc: "gtk_text_tag_new".}
-proc gtk_text_tag_get_priority*(tag: PGtkTextTag): gint{.cdecl, dynlib: gtklib,
+proc get_priority*(tag: PTextTag): gint{.cdecl, dynlib: lib, 
     importc: "gtk_text_tag_get_priority".}
-proc gtk_text_tag_set_priority*(tag: PGtkTextTag, priority: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_tag_set_priority".}
-proc gtk_text_tag_event*(tag: PGtkTextTag, event_object: PGObject,
-                         event: PGdkEvent, iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_tag_event".}
-proc gtk_text_attributes_new*(): PGtkTextAttributes{.cdecl, dynlib: gtklib,
+proc set_priority*(tag: PTextTag, priority: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_tag_set_priority".}
+proc event*(tag: PTextTag, event_object: PGObject, event: gdk2.PEvent, 
+                     iter: PTextIter): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_tag_event".}
+proc text_attributes_new*(): PTextAttributes{.cdecl, dynlib: lib, 
     importc: "gtk_text_attributes_new".}
-proc gtk_text_attributes_copy*(src: PGtkTextAttributes): PGtkTextAttributes{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_attributes_copy".}
-proc gtk_text_attributes_copy_values*(src: PGtkTextAttributes,
-                                      dest: PGtkTextAttributes){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_attributes_copy_values".}
-proc gtk_text_attributes_unref*(values: PGtkTextAttributes){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_attributes_unref".}
-proc gtk_text_attributes_ref*(values: PGtkTextAttributes){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_attributes_ref".}
-proc gtk_text_attributes_get_type*(): GType{.cdecl, dynlib: gtklib,
+proc copy*(src: PTextAttributes): PTextAttributes{.cdecl, 
+    dynlib: lib, importc: "gtk_text_attributes_copy".}
+proc copy_values*(src: PTextAttributes, dest: PTextAttributes){.
+    cdecl, dynlib: lib, importc: "gtk_text_attributes_copy_values".}
+proc unref*(values: PTextAttributes){.cdecl, dynlib: lib, 
+    importc: "gtk_text_attributes_unref".}
+proc reference*(values: PTextAttributes){.cdecl, dynlib: lib, 
+    importc: "gtk_text_attributes_ref".}
+proc text_attributes_get_type*(): GType{.cdecl, dynlib: lib, 
     importc: "gtk_text_attributes_get_type".}
-const
+const 
   bm_TGtkTextTag_bg_color_set* = 0x00000001'i32
   bp_TGtkTextTag_bg_color_set* = 0'i32
   bm_TGtkTextTag_bg_stipple_set* = 0x00000002'i32
@@ -9263,980 +8910,945 @@ const
   bm_TGtkTextTag_pad3* = 0x00800000'i32
   bp_TGtkTextTag_pad3* = 23'i32
 
-proc bg_color_set*(a: var TGtkTextTag): guint
-proc set_bg_color_set*(a: var TGtkTextTag, `bg_color_set`: guint)
-proc bg_stipple_set*(a: var TGtkTextTag): guint
-proc set_bg_stipple_set*(a: var TGtkTextTag, `bg_stipple_set`: guint)
-proc fg_color_set*(a: var TGtkTextTag): guint
-proc set_fg_color_set*(a: var TGtkTextTag, `fg_color_set`: guint)
-proc scale_set*(a: var TGtkTextTag): guint
-proc set_scale_set*(a: var TGtkTextTag, `scale_set`: guint)
-proc fg_stipple_set*(a: var TGtkTextTag): guint
-proc set_fg_stipple_set*(a: var TGtkTextTag, `fg_stipple_set`: guint)
-proc justification_set*(a: var TGtkTextTag): guint
-proc set_justification_set*(a: var TGtkTextTag, `justification_set`: guint)
-proc left_margin_set*(a: var TGtkTextTag): guint
-proc set_left_margin_set*(a: var TGtkTextTag, `left_margin_set`: guint)
-proc indent_set*(a: var TGtkTextTag): guint
-proc set_indent_set*(a: var TGtkTextTag, `indent_set`: guint)
-proc rise_set*(a: var TGtkTextTag): guint
-proc set_rise_set*(a: var TGtkTextTag, `rise_set`: guint)
-proc strikethrough_set*(a: var TGtkTextTag): guint
-proc set_strikethrough_set*(a: var TGtkTextTag, `strikethrough_set`: guint)
-proc right_margin_set*(a: var TGtkTextTag): guint
-proc set_right_margin_set*(a: var TGtkTextTag, `right_margin_set`: guint)
-proc pixels_above_lines_set*(a: var TGtkTextTag): guint
-proc set_pixels_above_lines_set*(a: var TGtkTextTag,
+proc bg_color_set*(a: var TTextTag): guint
+proc set_bg_color_set*(a: var TTextTag, `bg_color_set`: guint)
+proc bg_stipple_set*(a: var TTextTag): guint
+proc set_bg_stipple_set*(a: var TTextTag, `bg_stipple_set`: guint)
+proc fg_color_set*(a: var TTextTag): guint
+proc set_fg_color_set*(a: var TTextTag, `fg_color_set`: guint)
+proc scale_set*(a: var TTextTag): guint
+proc set_scale_set*(a: var TTextTag, `scale_set`: guint)
+proc fg_stipple_set*(a: var TTextTag): guint
+proc set_fg_stipple_set*(a: var TTextTag, `fg_stipple_set`: guint)
+proc justification_set*(a: var TTextTag): guint
+proc set_justification_set*(a: var TTextTag, `justification_set`: guint)
+proc left_margin_set*(a: var TTextTag): guint
+proc set_left_margin_set*(a: var TTextTag, `left_margin_set`: guint)
+proc indent_set*(a: var TTextTag): guint
+proc set_indent_set*(a: var TTextTag, `indent_set`: guint)
+proc rise_set*(a: var TTextTag): guint
+proc set_rise_set*(a: var TTextTag, `rise_set`: guint)
+proc strikethrough_set*(a: var TTextTag): guint
+proc set_strikethrough_set*(a: var TTextTag, `strikethrough_set`: guint)
+proc right_margin_set*(a: var TTextTag): guint
+proc set_right_margin_set*(a: var TTextTag, `right_margin_set`: guint)
+proc pixels_above_lines_set*(a: var TTextTag): guint
+proc set_pixels_above_lines_set*(a: var TTextTag, 
                                  `pixels_above_lines_set`: guint)
-proc pixels_below_lines_set*(a: var TGtkTextTag): guint
-proc set_pixels_below_lines_set*(a: var TGtkTextTag,
+proc pixels_below_lines_set*(a: var TTextTag): guint
+proc set_pixels_below_lines_set*(a: var TTextTag, 
                                  `pixels_below_lines_set`: guint)
-proc pixels_inside_wrap_set*(a: var TGtkTextTag): guint
-proc set_pixels_inside_wrap_set*(a: var TGtkTextTag,
+proc pixels_inside_wrap_set*(a: var TTextTag): guint
+proc set_pixels_inside_wrap_set*(a: var TTextTag, 
                                  `pixels_inside_wrap_set`: guint)
-proc tabs_set*(a: var TGtkTextTag): guint
-proc set_tabs_set*(a: var TGtkTextTag, `tabs_set`: guint)
-proc underline_set*(a: var TGtkTextTag): guint
-proc set_underline_set*(a: var TGtkTextTag, `underline_set`: guint)
-proc wrap_mode_set*(a: var TGtkTextTag): guint
-proc set_wrap_mode_set*(a: var TGtkTextTag, `wrap_mode_set`: guint)
-proc bg_full_height_set*(a: var TGtkTextTag): guint
-proc set_bg_full_height_set*(a: var TGtkTextTag, `bg_full_height_set`: guint)
-proc invisible_set*(a: var TGtkTextTag): guint
-proc set_invisible_set*(a: var TGtkTextTag, `invisible_set`: guint)
-proc editable_set*(a: var TGtkTextTag): guint
-proc set_editable_set*(a: var TGtkTextTag, `editable_set`: guint)
-proc language_set*(a: var TGtkTextTag): guint
-proc set_language_set*(a: var TGtkTextTag, `language_set`: guint)
-proc pad1*(a: var TGtkTextTag): guint
-proc set_pad1*(a: var TGtkTextTag, `pad1`: guint)
-proc pad2*(a: var TGtkTextTag): guint
-proc set_pad2*(a: var TGtkTextTag, `pad2`: guint)
-proc pad3*(a: var TGtkTextTag): guint
-proc set_pad3*(a: var TGtkTextTag, `pad3`: guint)
-const
-  bm_TGtkTextAppearance_underline* = 0x0000000F'i16
+proc tabs_set*(a: var TTextTag): guint
+proc set_tabs_set*(a: var TTextTag, `tabs_set`: guint)
+proc underline_set*(a: var TTextTag): guint
+proc set_underline_set*(a: var TTextTag, `underline_set`: guint)
+proc wrap_mode_set*(a: var TTextTag): guint
+proc set_wrap_mode_set*(a: var TTextTag, `wrap_mode_set`: guint)
+proc bg_full_height_set*(a: var TTextTag): guint
+proc set_bg_full_height_set*(a: var TTextTag, `bg_full_height_set`: guint)
+proc invisible_set*(a: var TTextTag): guint
+proc set_invisible_set*(a: var TTextTag, `invisible_set`: guint)
+proc editable_set*(a: var TTextTag): guint
+proc set_editable_set*(a: var TTextTag, `editable_set`: guint)
+proc language_set*(a: var TTextTag): guint
+proc set_language_set*(a: var TTextTag, `language_set`: guint)
+proc pad1*(a: var TTextTag): guint
+proc set_pad1*(a: var TTextTag, `pad1`: guint)
+proc pad2*(a: var TTextTag): guint
+proc set_pad2*(a: var TTextTag, `pad2`: guint)
+proc pad3*(a: var TTextTag): guint
+proc set_pad3*(a: var TTextTag, `pad3`: guint)
+const 
+  bm_TGtkTextAppearance_underline* = 0x000F'i16
   bp_TGtkTextAppearance_underline* = 0'i16
-  bm_TGtkTextAppearance_strikethrough* = 0x00000010'i16
+  bm_TGtkTextAppearance_strikethrough* = 0x0010'i16
   bp_TGtkTextAppearance_strikethrough* = 4'i16
-  bm_TGtkTextAppearance_draw_bg* = 0x00000020'i16
+  bm_TGtkTextAppearance_draw_bg* = 0x0020'i16
   bp_TGtkTextAppearance_draw_bg* = 5'i16
-  bm_TGtkTextAppearance_inside_selection* = 0x00000040'i16
+  bm_TGtkTextAppearance_inside_selection* = 0x0040'i16
   bp_TGtkTextAppearance_inside_selection* = 6'i16
-  bm_TGtkTextAppearance_is_text* = 0x00000080'i16
+  bm_TGtkTextAppearance_is_text* = 0x0080'i16
   bp_TGtkTextAppearance_is_text* = 7'i16
-  bm_TGtkTextAppearance_pad1* = 0x00000100'i16
+  bm_TGtkTextAppearance_pad1* = 0x0100'i16
   bp_TGtkTextAppearance_pad1* = 8'i16
-  bm_TGtkTextAppearance_pad2* = 0x00000200'i16
+  bm_TGtkTextAppearance_pad2* = 0x0200'i16
   bp_TGtkTextAppearance_pad2* = 9'i16
-  bm_TGtkTextAppearance_pad3* = 0x00000400'i16
+  bm_TGtkTextAppearance_pad3* = 0x0400'i16
   bp_TGtkTextAppearance_pad3* = 10'i16
-  bm_TGtkTextAppearance_pad4* = 0x00000800'i16
+  bm_TGtkTextAppearance_pad4* = 0x0800'i16
   bp_TGtkTextAppearance_pad4* = 11'i16
 
-proc underline*(a: var TGtkTextAppearance): guint
-proc set_underline*(a: var TGtkTextAppearance, `underline`: guint)
-proc strikethrough*(a: var TGtkTextAppearance): guint
-proc set_strikethrough*(a: var TGtkTextAppearance, `strikethrough`: guint)
-proc draw_bg*(a: var TGtkTextAppearance): guint
-proc set_draw_bg*(a: var TGtkTextAppearance, `draw_bg`: guint)
-proc inside_selection*(a: var TGtkTextAppearance): guint
-proc set_inside_selection*(a: var TGtkTextAppearance, `inside_selection`: guint)
-proc is_text*(a: var TGtkTextAppearance): guint
-proc set_is_text*(a: var TGtkTextAppearance, `is_text`: guint)
-proc pad1*(a: var TGtkTextAppearance): guint
-proc set_pad1*(a: var TGtkTextAppearance, `pad1`: guint)
-proc pad2*(a: var TGtkTextAppearance): guint
-proc set_pad2*(a: var TGtkTextAppearance, `pad2`: guint)
-proc pad3*(a: var TGtkTextAppearance): guint
-proc set_pad3*(a: var TGtkTextAppearance, `pad3`: guint)
-proc pad4*(a: var TGtkTextAppearance): guint
-proc set_pad4*(a: var TGtkTextAppearance, `pad4`: guint)
-const
-  bm_TGtkTextAttributes_invisible* = 0x00000001'i16
+proc underline*(a: var TTextAppearance): guint
+proc set_underline*(a: var TTextAppearance, `underline`: guint)
+proc strikethrough*(a: var TTextAppearance): guint
+proc set_strikethrough*(a: var TTextAppearance, `strikethrough`: guint)
+proc draw_bg*(a: var TTextAppearance): guint
+proc set_draw_bg*(a: var TTextAppearance, `draw_bg`: guint)
+proc inside_selection*(a: var TTextAppearance): guint
+proc set_inside_selection*(a: var TTextAppearance, `inside_selection`: guint)
+proc is_text*(a: var TTextAppearance): guint
+proc set_is_text*(a: var TTextAppearance, `is_text`: guint)
+proc pad1*(a: var TTextAppearance): guint
+proc set_pad1*(a: var TTextAppearance, `pad1`: guint)
+proc pad2*(a: var TTextAppearance): guint
+proc set_pad2*(a: var TTextAppearance, `pad2`: guint)
+proc pad3*(a: var TTextAppearance): guint
+proc set_pad3*(a: var TTextAppearance, `pad3`: guint)
+proc pad4*(a: var TTextAppearance): guint
+proc set_pad4*(a: var TTextAppearance, `pad4`: guint)
+const 
+  bm_TGtkTextAttributes_invisible* = 0x0001'i16
   bp_TGtkTextAttributes_invisible* = 0'i16
-  bm_TGtkTextAttributes_bg_full_height* = 0x00000002'i16
+  bm_TGtkTextAttributes_bg_full_height* = 0x0002'i16
   bp_TGtkTextAttributes_bg_full_height* = 1'i16
-  bm_TGtkTextAttributes_editable* = 0x00000004'i16
+  bm_TGtkTextAttributes_editable* = 0x0004'i16
   bp_TGtkTextAttributes_editable* = 2'i16
-  bm_TGtkTextAttributes_realized* = 0x00000008'i16
+  bm_TGtkTextAttributes_realized* = 0x0008'i16
   bp_TGtkTextAttributes_realized* = 3'i16
-  bm_TGtkTextAttributes_pad1* = 0x00000010'i16
+  bm_TGtkTextAttributes_pad1* = 0x0010'i16
   bp_TGtkTextAttributes_pad1* = 4'i16
-  bm_TGtkTextAttributes_pad2* = 0x00000020'i16
+  bm_TGtkTextAttributes_pad2* = 0x0020'i16
   bp_TGtkTextAttributes_pad2* = 5'i16
-  bm_TGtkTextAttributes_pad3* = 0x00000040'i16
+  bm_TGtkTextAttributes_pad3* = 0x0040'i16
   bp_TGtkTextAttributes_pad3* = 6'i16
-  bm_TGtkTextAttributes_pad4* = 0x00000080'i16
+  bm_TGtkTextAttributes_pad4* = 0x0080'i16
   bp_TGtkTextAttributes_pad4* = 7'i16
 
-proc invisible*(a: var TGtkTextAttributes): guint
-proc set_invisible*(a: var TGtkTextAttributes, `invisible`: guint)
-proc bg_full_height*(a: var TGtkTextAttributes): guint
-proc set_bg_full_height*(a: var TGtkTextAttributes, `bg_full_height`: guint)
-proc editable*(a: var TGtkTextAttributes): guint
-proc set_editable*(a: var TGtkTextAttributes, `editable`: guint)
-proc realized*(a: var TGtkTextAttributes): guint
-proc set_realized*(a: var TGtkTextAttributes, `realized`: guint)
-proc pad1*(a: var TGtkTextAttributes): guint
-proc set_pad1*(a: var TGtkTextAttributes, `pad1`: guint)
-proc pad2*(a: var TGtkTextAttributes): guint
-proc set_pad2*(a: var TGtkTextAttributes, `pad2`: guint)
-proc pad3*(a: var TGtkTextAttributes): guint
-proc set_pad3*(a: var TGtkTextAttributes, `pad3`: guint)
-proc pad4*(a: var TGtkTextAttributes): guint
-proc set_pad4*(a: var TGtkTextAttributes, `pad4`: guint)
-proc GTK_TYPE_TEXT_TAG_TABLE*(): GType
-proc GTK_TEXT_TAG_TABLE*(obj: pointer): PGtkTextTagTable
-proc GTK_TEXT_TAG_TABLE_CLASS*(klass: pointer): PGtkTextTagTableClass
-proc GTK_IS_TEXT_TAG_TABLE*(obj: pointer): bool
-proc GTK_IS_TEXT_TAG_TABLE_CLASS*(klass: pointer): bool
-proc GTK_TEXT_TAG_TABLE_GET_CLASS*(obj: pointer): PGtkTextTagTableClass
-proc gtk_text_tag_table_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_tag_table_get_type".}
-proc gtk_text_tag_table_new*(): PGtkTextTagTable{.cdecl, dynlib: gtklib,
+proc invisible*(a: var TTextAttributes): guint
+proc set_invisible*(a: var TTextAttributes, `invisible`: guint)
+proc bg_full_height*(a: var TTextAttributes): guint
+proc set_bg_full_height*(a: var TTextAttributes, `bg_full_height`: guint)
+proc editable*(a: var TTextAttributes): guint
+proc set_editable*(a: var TTextAttributes, `editable`: guint)
+proc realized*(a: var TTextAttributes): guint
+proc set_realized*(a: var TTextAttributes, `realized`: guint)
+proc pad1*(a: var TTextAttributes): guint
+proc set_pad1*(a: var TTextAttributes, `pad1`: guint)
+proc pad2*(a: var TTextAttributes): guint
+proc set_pad2*(a: var TTextAttributes, `pad2`: guint)
+proc pad3*(a: var TTextAttributes): guint
+proc set_pad3*(a: var TTextAttributes, `pad3`: guint)
+proc pad4*(a: var TTextAttributes): guint
+proc set_pad4*(a: var TTextAttributes, `pad4`: guint)
+proc TYPE_TEXT_TAG_TABLE*(): GType
+proc TEXT_TAG_TABLE*(obj: pointer): PTextTagTable
+proc TEXT_TAG_TABLE_CLASS*(klass: pointer): PTextTagTableClass
+proc IS_TEXT_TAG_TABLE*(obj: pointer): bool
+proc IS_TEXT_TAG_TABLE_CLASS*(klass: pointer): bool
+proc TEXT_TAG_TABLE_GET_CLASS*(obj: pointer): PTextTagTableClass
+proc text_tag_table_get_type*(): GType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_text_tag_table_get_type".}
+proc text_tag_table_new*(): PTextTagTable{.cdecl, dynlib: lib, 
     importc: "gtk_text_tag_table_new".}
-proc gtk_text_tag_table_add*(table: PGtkTextTagTable, tag: PGtkTextTag){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_tag_table_add".}
-proc gtk_text_tag_table_remove*(table: PGtkTextTagTable, tag: PGtkTextTag){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_tag_table_remove".}
-proc gtk_text_tag_table_lookup*(table: PGtkTextTagTable, name: cstring): PGtkTextTag{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_tag_table_lookup".}
-proc gtk_text_tag_table_foreach*(table: PGtkTextTagTable,
-                                 fun: TGtkTextTagTableForeach, data: gpointer){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_tag_table_foreach".}
-proc gtk_text_tag_table_get_size*(table: PGtkTextTagTable): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_tag_table_get_size".}
-proc gtk_text_tag_table_add_buffer*(table: PGtkTextTagTable, buffer: gpointer){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_tag_table_add_buffer".}
-proc gtk_text_tag_table_remove_buffer*(table: PGtkTextTagTable,
-    buffer: gpointer){.cdecl, dynlib: gtklib,
-                       importc: "_gtk_text_tag_table_remove_buffer".}
-proc GTK_TYPE_TEXT_MARK*(): GType
-proc GTK_TEXT_MARK*(anObject: pointer): PGtkTextMark
-proc GTK_TEXT_MARK_CLASS*(klass: pointer): PGtkTextMarkClass
-proc GTK_IS_TEXT_MARK*(anObject: pointer): bool
-proc GTK_IS_TEXT_MARK_CLASS*(klass: pointer): bool
-proc GTK_TEXT_MARK_GET_CLASS*(obj: pointer): PGtkTextMarkClass
-proc gtk_text_mark_get_type*(): GType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_text_mark_get_type".}
-proc gtk_text_mark_set_visible*(mark: PGtkTextMark, setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_mark_set_visible".}
-proc gtk_text_mark_get_visible*(mark: PGtkTextMark): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_mark_get_visible".}
-proc gtk_text_mark_get_name*(mark: PGtkTextMark): cstring{.cdecl, dynlib: gtklib,
+proc table_add*(table: PTextTagTable, tag: PTextTag){.cdecl, 
+    dynlib: lib, importc: "gtk_text_tag_table_add".}
+proc table_remove*(table: PTextTagTable, tag: PTextTag){.cdecl, 
+    dynlib: lib, importc: "gtk_text_tag_table_remove".}
+proc table_lookup*(table: PTextTagTable, name: cstring): PTextTag{.
+    cdecl, dynlib: lib, importc: "gtk_text_tag_table_lookup".}
+proc table_foreach*(table: PTextTagTable, fun: TTextTagTableForeach, 
+                             data: gpointer){.cdecl, dynlib: lib, 
+    importc: "gtk_text_tag_table_foreach".}
+proc table_get_size*(table: PTextTagTable): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_tag_table_get_size".}
+proc table_add_buffer*(table: PTextTagTable, buffer: gpointer){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_tag_table_add_buffer".}
+proc table_remove_buffer*(table: PTextTagTable, buffer: gpointer){.
+    cdecl, dynlib: lib, importc: "_gtk_text_tag_table_remove_buffer".}
+proc TYPE_TEXT_MARK*(): GType
+proc TEXT_MARK*(anObject: pointer): PTextMark
+proc TEXT_MARK_CLASS*(klass: pointer): PTextMarkClass
+proc IS_TEXT_MARK*(anObject: pointer): bool
+proc IS_TEXT_MARK_CLASS*(klass: pointer): bool
+proc TEXT_MARK_GET_CLASS*(obj: pointer): PTextMarkClass
+proc text_mark_get_type*(): GType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_text_mark_get_type".}
+proc set_visible*(mark: PTextMark, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_text_mark_set_visible".}
+proc get_visible*(mark: PTextMark): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_mark_get_visible".}
+proc get_name*(mark: PTextMark): cstring{.cdecl, dynlib: lib, 
     importc: "gtk_text_mark_get_name".}
-proc gtk_text_mark_get_deleted*(mark: PGtkTextMark): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_mark_get_deleted".}
-proc gtk_text_mark_get_buffer*(mark: PGtkTextMark): PGtkTextBuffer{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_mark_get_buffer".}
-proc gtk_text_mark_get_left_gravity*(mark: PGtkTextMark): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_mark_get_left_gravity".}
-const
-  bm_TGtkTextMarkBody_visible* = 0x00000001'i16
+proc get_deleted*(mark: PTextMark): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_mark_get_deleted".}
+proc get_buffer*(mark: PTextMark): PTextBuffer{.cdecl, dynlib: lib, 
+    importc: "gtk_text_mark_get_buffer".}
+proc get_left_gravity*(mark: PTextMark): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_mark_get_left_gravity".}
+const 
+  bm_TGtkTextMarkBody_visible* = 0x0001'i16
   bp_TGtkTextMarkBody_visible* = 0'i16
-  bm_TGtkTextMarkBody_not_deleteable* = 0x00000002'i16
+  bm_TGtkTextMarkBody_not_deleteable* = 0x0002'i16
   bp_TGtkTextMarkBody_not_deleteable* = 1'i16
 
-proc visible*(a: var TGtkTextMarkBody): guint
-proc set_visible*(a: var TGtkTextMarkBody, `visible`: guint)
-proc not_deleteable*(a: var TGtkTextMarkBody): guint
-proc set_not_deleteable*(a: var TGtkTextMarkBody, `not_deleteable`: guint)
-proc gtk_mark_segment_new*(tree: PGtkTextBTree, left_gravity: gboolean,
-                             name: cstring): PGtkTextLineSegment{.cdecl,
-    dynlib: gtklib, importc: "_gtk_mark_segment_new".}
-proc GTK_TYPE_TEXT_CHILD_ANCHOR*(): GType
-proc GTK_TEXT_CHILD_ANCHOR*(anObject: pointer): PGtkTextChildAnchor
-proc GTK_TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): PGtkTextChildAnchorClass
-proc GTK_IS_TEXT_CHILD_ANCHOR*(anObject: pointer): bool
-proc GTK_IS_TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): bool
-proc GTK_TEXT_CHILD_ANCHOR_GET_CLASS*(obj: pointer): PGtkTextChildAnchorClass
-proc gtk_text_child_anchor_get_type*(): GType{.cdecl, dynlib: gtklib,
+proc visible*(a: var TTextMarkBody): guint
+proc set_visible*(a: var TTextMarkBody, `visible`: guint)
+proc not_deleteable*(a: var TTextMarkBody): guint
+proc set_not_deleteable*(a: var TTextMarkBody, `not_deleteable`: guint)
+proc mark_segment_new*(tree: PTextBTree, left_gravity: gboolean, name: cstring): PTextLineSegment{.
+    cdecl, dynlib: lib, importc: "_gtk_mark_segment_new".}
+proc TYPE_TEXT_CHILD_ANCHOR*(): GType
+proc TEXT_CHILD_ANCHOR*(anObject: pointer): PTextChildAnchor
+proc TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): PTextChildAnchorClass
+proc IS_TEXT_CHILD_ANCHOR*(anObject: pointer): bool
+proc IS_TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): bool
+proc TEXT_CHILD_ANCHOR_GET_CLASS*(obj: pointer): PTextChildAnchorClass
+proc text_child_anchor_get_type*(): GType{.cdecl, dynlib: lib, 
     importc: "gtk_text_child_anchor_get_type".}
-proc gtk_text_child_anchor_new*(): PGtkTextChildAnchor{.cdecl, dynlib: gtklib,
+proc text_child_anchor_new*(): PTextChildAnchor{.cdecl, dynlib: lib, 
     importc: "gtk_text_child_anchor_new".}
-proc gtk_text_child_anchor_get_widgets*(anchor: PGtkTextChildAnchor): PGList{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_child_anchor_get_widgets".}
-proc gtk_text_child_anchor_get_deleted*(anchor: PGtkTextChildAnchor): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_child_anchor_get_deleted".}
-proc gtk_pixbuf_segment_new*(pixbuf: PGdkPixbuf): PGtkTextLineSegment{.cdecl,
-    dynlib: gtklib, importc: "_gtk_pixbuf_segment_new".}
-proc gtk_widget_segment_new*(anchor: PGtkTextChildAnchor): PGtkTextLineSegment{.
-    cdecl, dynlib: gtklib, importc: "_gtk_widget_segment_new".}
-proc gtk_widget_segment_add*(widget_segment: PGtkTextLineSegment,
-                               child: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "_gtk_widget_segment_add".}
-proc gtk_widget_segment_remove*(widget_segment: PGtkTextLineSegment,
-                                  child: PGtkWidget){.cdecl, dynlib: gtklib,
-    importc: "_gtk_widget_segment_remove".}
-proc gtk_widget_segment_ref*(widget_segment: PGtkTextLineSegment){.cdecl,
-    dynlib: gtklib, importc: "_gtk_widget_segment_ref".}
-proc gtk_widget_segment_unref*(widget_segment: PGtkTextLineSegment){.cdecl,
-    dynlib: gtklib, importc: "_gtk_widget_segment_unref".}
-proc gtk_anchored_child_get_layout*(child: PGtkWidget): PGtkTextLayout{.cdecl,
-    dynlib: gtklib, importc: "_gtk_anchored_child_get_layout".}
-proc gtk_text_line_segment_split*(iter: PGtkTextIter): PGtkTextLineSegment{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_line_segment_split".}
-proc gtk_char_segment_new*(text: cstring, len: guint): PGtkTextLineSegment{.
-    cdecl, dynlib: gtklib, importc: "_gtk_char_segment_new".}
-proc gtk_char_segment_new_from_two_strings*(text1: cstring, len1: guint,
-    text2: cstring, len2: guint): PGtkTextLineSegment{.cdecl, dynlib: gtklib,
-    importc: "_gtk_char_segment_new_from_two_strings".}
-proc gtk_toggle_segment_new*(info: PGtkTextTagInfo, StateOn: gboolean): PGtkTextLineSegment{.
-    cdecl, dynlib: gtklib, importc: "_gtk_toggle_segment_new".}
-proc gtk_text_btree_new*(table: PGtkTextTagTable, buffer: PGtkTextBuffer): PGtkTextBTree{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_new".}
-proc gtk_text_btree_ref*(tree: PGtkTextBTree){.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_ref".}
-proc gtk_text_btree_unref*(tree: PGtkTextBTree){.cdecl, dynlib: gtklib,
+proc anchor_get_widgets*(anchor: PTextChildAnchor): PGList{.cdecl, 
+    dynlib: lib, importc: "gtk_text_child_anchor_get_widgets".}
+proc anchor_get_deleted*(anchor: PTextChildAnchor): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_child_anchor_get_deleted".}
+proc pixbuf_segment_new*(pixbuf: gdk2pixbuf.PPixbuf): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_pixbuf_segment_new".}
+proc widget_segment_new*(anchor: PTextChildAnchor): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_widget_segment_new".}
+proc widget_segment_add*(widget_segment: PTextLineSegment, child: PWidget){.
+    cdecl, dynlib: lib, importc: "_gtk_widget_segment_add".}
+proc widget_segment_remove*(widget_segment: PTextLineSegment, child: PWidget){.
+    cdecl, dynlib: lib, importc: "_gtk_widget_segment_remove".}
+proc widget_segment_ref*(widget_segment: PTextLineSegment){.cdecl, dynlib: lib, 
+    importc: "_gtk_widget_segment_ref".}
+proc widget_segment_unref*(widget_segment: PTextLineSegment){.cdecl, 
+    dynlib: lib, importc: "_gtk_widget_segment_unref".}
+proc anchored_child_get_layout*(child: PWidget): PTextLayout{.cdecl, 
+    dynlib: lib, importc: "_gtk_anchored_child_get_layout".}
+proc line_segment_split*(iter: PTextIter): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "gtk_text_line_segment_split".}
+proc char_segment_new*(text: cstring, len: guint): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_char_segment_new".}
+proc char_segment_new_from_two_strings*(text1: cstring, len1: guint, 
+                                        text2: cstring, len2: guint): PTextLineSegment{.
+    cdecl, dynlib: lib, importc: "_gtk_char_segment_new_from_two_strings".}
+proc toggle_segment_new*(info: PTextTagInfo, StateOn: gboolean): PTextLineSegment{.
+    cdecl, dynlib: lib, importc: "_gtk_toggle_segment_new".}
+proc btree_new*(table: PTextTagTable, buffer: PTextBuffer): PTextBTree{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_new".}
+proc reference*(tree: PTextBTree){.cdecl, dynlib: lib, 
+                                   importc: "_gtk_text_btree_ref".}
+proc unref*(tree: PTextBTree){.cdecl, dynlib: lib, 
     importc: "_gtk_text_btree_unref".}
-proc gtk_text_btree_get_buffer*(tree: PGtkTextBTree): PGtkTextBuffer{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_buffer".}
-proc gtk_text_btree_get_chars_changed_stamp*(tree: PGtkTextBTree): guint{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_chars_changed_stamp".}
-proc gtk_text_btree_get_segments_changed_stamp*(tree: PGtkTextBTree): guint{.
-    cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_segments_changed_stamp".}
-proc gtk_text_btree_segments_changed*(tree: PGtkTextBTree){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_segments_changed".}
-proc gtk_text_btree_is_end*(tree: PGtkTextBTree, line: PGtkTextLine,
-                              seg: PGtkTextLineSegment, byte_index: int32,
-                              char_offset: int32): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_is_end".}
-proc gtk_text_btree_delete*(start: PGtkTextIter, theEnd: PGtkTextIter){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_delete".}
-proc gtk_text_btree_insert*(iter: PGtkTextIter, text: cstring, len: gint){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_insert".}
-proc gtk_text_btree_insert_pixbuf*(iter: PGtkTextIter, pixbuf: PGdkPixbuf){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_insert_pixbuf".}
-proc gtk_text_btree_insert_child_anchor*(iter: PGtkTextIter,
-    anchor: PGtkTextChildAnchor){.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_insert_child_anchor".}
-proc gtk_text_btree_unregister_child_anchor*(anchor: PGtkTextChildAnchor){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_unregister_child_anchor".}
-proc gtk_text_btree_find_line_by_y*(tree: PGtkTextBTree, view_id: gpointer,
-                                      ypixel: gint, line_top_y: Pgint): PGtkTextLine{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_find_line_by_y".}
-proc gtk_text_btree_find_line_top*(tree: PGtkTextBTree, line: PGtkTextLine,
-                                     view_id: gpointer): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_find_line_top".}
-proc gtk_text_btree_add_view*(tree: PGtkTextBTree, layout: PGtkTextLayout){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_add_view".}
-proc gtk_text_btree_remove_view*(tree: PGtkTextBTree, view_id: gpointer){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_remove_view".}
-proc gtk_text_btree_invalidate_region*(tree: PGtkTextBTree,
-    start: PGtkTextIter, theEnd: PGtkTextIter){.cdecl, dynlib: gtklib,
+proc get_buffer*(tree: PTextBTree): PTextBuffer{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_get_buffer".}
+proc get_chars_changed_stamp*(tree: PTextBTree): guint{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_chars_changed_stamp".}
+proc get_segments_changed_stamp*(tree: PTextBTree): guint{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_segments_changed_stamp".}
+proc segments_changed*(tree: PTextBTree){.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_segments_changed".}
+proc is_end*(tree: PTextBTree, line: PTextLine, 
+                        seg: PTextLineSegment, byte_index: int32, 
+                        char_offset: int32): gboolean{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_is_end".}
+proc btree_delete*(start: PTextIter, theEnd: PTextIter){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_delete".}
+proc btree_insert*(iter: PTextIter, text: cstring, len: gint){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_insert".}
+proc btree_insert_pixbuf*(iter: PTextIter, pixbuf: gdk2pixbuf.PPixbuf){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_insert_pixbuf".}
+proc btree_insert_child_anchor*(iter: PTextIter, anchor: PTextChildAnchor){.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_insert_child_anchor".}
+proc btree_unregister_child_anchor*(anchor: PTextChildAnchor){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_unregister_child_anchor".}
+proc find_line_by_y*(tree: PTextBTree, view_id: gpointer, 
+                                ypixel: gint, line_top_y: Pgint): PTextLine{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_find_line_by_y".}
+proc find_line_top*(tree: PTextBTree, line: PTextLine, 
+                               view_id: gpointer): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_find_line_top".}
+proc add_view*(tree: PTextBTree, layout: PTextLayout){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_add_view".}
+proc remove_view*(tree: PTextBTree, view_id: gpointer){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_remove_view".}
+proc invalidate_region*(tree: PTextBTree, start: PTextIter, 
+                                   theEnd: PTextIter){.cdecl, dynlib: lib, 
     importc: "_gtk_text_btree_invalidate_region".}
-proc gtk_text_btree_get_view_size*(tree: PGtkTextBTree, view_id: gpointer,
-                                     width: Pgint, height: Pgint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_view_size".}
-proc gtk_text_btree_is_valid*(tree: PGtkTextBTree, view_id: gpointer): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_is_valid".}
-proc gtk_text_btree_validate*(tree: PGtkTextBTree, view_id: gpointer,
-                                max_pixels: gint, y: Pgint, old_height: Pgint,
-                                new_height: Pgint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_validate".}
-proc gtk_text_btree_validate_line*(tree: PGtkTextBTree, line: PGtkTextLine,
-                                     view_id: gpointer){.cdecl, dynlib: gtklib,
+proc get_view_size*(tree: PTextBTree, view_id: gpointer, 
+                               width: Pgint, height: Pgint){.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_get_view_size".}
+proc is_valid*(tree: PTextBTree, view_id: gpointer): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_is_valid".}
+proc validate*(tree: PTextBTree, view_id: gpointer, max_pixels: gint, 
+                          y: Pgint, old_height: Pgint, new_height: Pgint): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_validate".}
+proc validate_line*(tree: PTextBTree, line: PTextLine, 
+                               view_id: gpointer){.cdecl, dynlib: lib, 
     importc: "_gtk_text_btree_validate_line".}
-proc gtk_text_btree_tag*(start: PGtkTextIter, theEnd: PGtkTextIter,
-                           tag: PGtkTextTag, apply: gboolean){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_tag".}
-proc gtk_text_btree_get_line*(tree: PGtkTextBTree, line_number: gint,
-                                real_line_number: Pgint): PGtkTextLine{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_line".}
-proc gtk_text_btree_get_line_no_last*(tree: PGtkTextBTree, line_number: gint,
-                                        real_line_number: Pgint): PGtkTextLine{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_line_no_last".}
-proc gtk_text_btree_get_end_iter_line*(tree: PGtkTextBTree): PGtkTextLine{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_end_iter_line".}
-proc gtk_text_btree_get_line_at_char*(tree: PGtkTextBTree, char_index: gint,
-                                        line_start_index: Pgint,
-                                        real_char_index: Pgint): PGtkTextLine{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_line_at_char".}
-proc gtk_text_btree_get_tags*(iter: PGtkTextIter, num_tags: Pgint): PPGtkTextTag{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_tags".}
-proc gtk_text_btree_get_text*(start: PGtkTextIter, theEnd: PGtkTextIter,
-                                include_hidden: gboolean,
-                                include_nonchars: gboolean): cstring{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_text".}
-proc gtk_text_btree_line_count*(tree: PGtkTextBTree): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_line_count".}
-proc gtk_text_btree_char_count*(tree: PGtkTextBTree): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_char_count".}
-proc gtk_text_btree_char_is_invisible*(iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_char_is_invisible".}
-proc gtk_text_btree_get_iter_at_char*(tree: PGtkTextBTree, iter: PGtkTextIter,
-                                        char_index: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_iter_at_char".}
-proc gtk_text_btree_get_iter_at_line_char*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, line_number: gint, char_index: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_iter_at_line_char".}
-proc gtk_text_btree_get_iter_at_line_byte*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, line_number: gint, byte_index: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_iter_at_line_byte".}
-proc gtk_text_btree_get_iter_from_string*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, `string`: cstring): gboolean{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_iter_from_string".}
-proc gtk_text_btree_get_iter_at_mark_name*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, mark_name: cstring): gboolean{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_iter_at_mark_name".}
-proc gtk_text_btree_get_iter_at_mark*(tree: PGtkTextBTree, iter: PGtkTextIter,
-                                        mark: PGtkTextMark){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_get_iter_at_mark".}
-proc gtk_text_btree_get_end_iter*(tree: PGtkTextBTree, iter: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_end_iter".}
-proc gtk_text_btree_get_iter_at_line*(tree: PGtkTextBTree, iter: PGtkTextIter,
-                                        line: PGtkTextLine, byte_offset: gint){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_iter_at_line".}
-proc gtk_text_btree_get_iter_at_first_toggle*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_iter_at_first_toggle".}
-proc gtk_text_btree_get_iter_at_last_toggle*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, tag: PGtkTextTag): gboolean{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_iter_at_last_toggle".}
-proc gtk_text_btree_get_iter_at_child_anchor*(tree: PGtkTextBTree,
-    iter: PGtkTextIter, anchor: PGtkTextChildAnchor){.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_iter_at_child_anchor".}
-proc gtk_text_btree_set_mark*(tree: PGtkTextBTree,
-                                existing_mark: PGtkTextMark, name: cstring,
-                                left_gravity: gboolean, index: PGtkTextIter,
-                                should_exist: gboolean): PGtkTextMark{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_btree_set_mark".}
-proc gtk_text_btree_remove_mark_by_name*(tree: PGtkTextBTree, name: cstring){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_remove_mark_by_name".}
-proc gtk_text_btree_remove_mark*(tree: PGtkTextBTree, segment: PGtkTextMark){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_remove_mark".}
-proc gtk_text_btree_get_selection_bounds*(tree: PGtkTextBTree,
-    start: PGtkTextIter, theEnd: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_btree_get_selection_bounds".}
-proc gtk_text_btree_place_cursor*(tree: PGtkTextBTree, `where`: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_place_cursor".}
-proc gtk_text_btree_mark_is_insert*(tree: PGtkTextBTree, segment: PGtkTextMark): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_mark_is_insert".}
-proc gtk_text_btree_mark_is_selection_bound*(tree: PGtkTextBTree,
-    segment: PGtkTextMark): gboolean{.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_mark_is_selection_bound".}
-proc gtk_text_btree_get_mark_by_name*(tree: PGtkTextBTree, name: cstring): PGtkTextMark{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_btree_get_mark_by_name".}
-proc gtk_text_btree_first_could_contain_tag*(tree: PGtkTextBTree,
-    tag: PGtkTextTag): PGtkTextLine{.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_first_could_contain_tag".}
-proc gtk_text_btree_last_could_contain_tag*(tree: PGtkTextBTree,
-    tag: PGtkTextTag): PGtkTextLine{.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_last_could_contain_tag".}
-const
+proc btree_tag*(start: PTextIter, theEnd: PTextIter, tag: PTextTag, 
+                     apply: gboolean){.cdecl, dynlib: lib, 
+                                       importc: "_gtk_text_btree_tag".}
+proc get_line*(tree: PTextBTree, line_number: gint, 
+                          real_line_number: Pgint): PTextLine{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_line".}
+proc get_line_no_last*(tree: PTextBTree, line_number: gint, 
+                                  real_line_number: Pgint): PTextLine{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_line_no_last".}
+proc get_end_iter_line*(tree: PTextBTree): PTextLine{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_end_iter_line".}
+proc get_line_at_char*(tree: PTextBTree, char_index: gint, 
+                                  line_start_index: Pgint, 
+                                  real_char_index: Pgint): PTextLine{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_line_at_char".}
+proc btree_get_tags*(iter: PTextIter, num_tags: Pgint): PPGtkTextTag{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_get_tags".}
+proc btree_get_text*(start: PTextIter, theEnd: PTextIter, 
+                          include_hidden: gboolean, include_nonchars: gboolean): cstring{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_get_text".}
+proc line_count*(tree: PTextBTree): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_line_count".}
+proc char_count*(tree: PTextBTree): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_char_count".}
+proc btree_char_is_invisible*(iter: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_char_is_invisible".}
+proc get_iter_at_char*(tree: PTextBTree, iter: PTextIter, 
+                                  char_index: gint){.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_get_iter_at_char".}
+proc get_iter_at_line_char*(tree: PTextBTree, iter: PTextIter, 
+                                       line_number: gint, char_index: gint){.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_get_iter_at_line_char".}
+proc get_iter_at_line_byte*(tree: PTextBTree, iter: PTextIter, 
+                                       line_number: gint, byte_index: gint){.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_get_iter_at_line_byte".}
+proc get_iter_from_string*(tree: PTextBTree, iter: PTextIter, 
+                                      `string`: cstring): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_iter_from_string".}
+proc get_iter_at_mark_name*(tree: PTextBTree, iter: PTextIter, 
+                                       mark_name: cstring): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_iter_at_mark_name".}
+proc get_iter_at_mark*(tree: PTextBTree, iter: PTextIter, 
+                                  mark: PTextMark){.cdecl, dynlib: lib, 
+    importc: "_gtk_text_btree_get_iter_at_mark".}
+proc get_end_iter*(tree: PTextBTree, iter: PTextIter){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_end_iter".}
+proc get_iter_at_line*(tree: PTextBTree, iter: PTextIter, 
+                                  line: PTextLine, byte_offset: gint){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_iter_at_line".}
+proc get_iter_at_first_toggle*(tree: PTextBTree, iter: PTextIter, 
+    tag: PTextTag): gboolean{.cdecl, dynlib: lib, importc: "_gtk_text_btree_get_iter_at_first_toggle".}
+proc get_iter_at_last_toggle*(tree: PTextBTree, iter: PTextIter, 
+    tag: PTextTag): gboolean{.cdecl, dynlib: lib, importc: "_gtk_text_btree_get_iter_at_last_toggle".}
+proc get_iter_at_child_anchor*(tree: PTextBTree, iter: PTextIter, 
+    anchor: PTextChildAnchor){.cdecl, dynlib: lib, importc: "_gtk_text_btree_get_iter_at_child_anchor".}
+proc set_mark*(tree: PTextBTree, existing_mark: PTextMark, 
+                          name: cstring, left_gravity: gboolean, 
+                          index: PTextIter, should_exist: gboolean): PTextMark{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_set_mark".}
+proc remove_mark_by_name*(tree: PTextBTree, name: cstring){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_remove_mark_by_name".}
+proc remove_mark*(tree: PTextBTree, segment: PTextMark){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_remove_mark".}
+proc get_selection_bounds*(tree: PTextBTree, start: PTextIter, 
+                                      theEnd: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_get_selection_bounds".}
+proc place_cursor*(tree: PTextBTree, `where`: PTextIter){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_place_cursor".}
+proc mark_is_insert*(tree: PTextBTree, segment: PTextMark): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_mark_is_insert".}
+proc mark_is_selection_bound*(tree: PTextBTree, segment: PTextMark): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_mark_is_selection_bound".}
+proc get_mark_by_name*(tree: PTextBTree, name: cstring): PTextMark{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_get_mark_by_name".}
+proc first_could_contain_tag*(tree: PTextBTree, tag: PTextTag): PTextLine{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_first_could_contain_tag".}
+proc last_could_contain_tag*(tree: PTextBTree, tag: PTextTag): PTextLine{.
+    cdecl, dynlib: lib, importc: "_gtk_text_btree_last_could_contain_tag".}
+const 
   bm_TGtkTextLineData_width* = 0x00FFFFFF'i32
   bp_TGtkTextLineData_width* = 0'i32
   bm_TGtkTextLineData_valid* = 0xFF000000'i32
   bp_TGtkTextLineData_valid* = 24'i32
 
-proc width*(a: PGtkTextLineData): gint
-proc set_width*(a: PGtkTextLineData, NewWidth: gint)
-proc valid*(a: PGtkTextLineData): gint
-proc set_valid*(a: PGtkTextLineData, `valid`: gint)
-proc gtk_text_line_get_number*(line: PGtkTextLine): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_get_number".}
-proc gtk_text_line_char_has_tag*(line: PGtkTextLine, tree: PGtkTextBTree,
-                                   char_in_line: gint, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_char_has_tag".}
-proc gtk_text_line_byte_has_tag*(line: PGtkTextLine, tree: PGtkTextBTree,
-                                   byte_in_line: gint, tag: PGtkTextTag): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_byte_has_tag".}
-proc gtk_text_line_is_last*(line: PGtkTextLine, tree: PGtkTextBTree): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_is_last".}
-proc gtk_text_line_contains_end_iter*(line: PGtkTextLine, tree: PGtkTextBTree): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_contains_end_iter".}
-proc gtk_text_line_next*(line: PGtkTextLine): PGtkTextLine{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_next".}
-proc gtk_text_line_next_excluding_last*(line: PGtkTextLine): PGtkTextLine{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_next_excluding_last".}
-proc gtk_text_line_previous*(line: PGtkTextLine): PGtkTextLine{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_previous".}
-proc gtk_text_line_add_data*(line: PGtkTextLine, data: PGtkTextLineData){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_add_data".}
-proc gtk_text_line_remove_data*(line: PGtkTextLine, view_id: gpointer): gpointer{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_remove_data".}
-proc gtk_text_line_get_data*(line: PGtkTextLine, view_id: gpointer): gpointer{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_get_data".}
-proc gtk_text_line_invalidate_wrap*(line: PGtkTextLine, ld: PGtkTextLineData){.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_invalidate_wrap".}
-proc gtk_text_line_char_count*(line: PGtkTextLine): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_char_count".}
-proc gtk_text_line_byte_count*(line: PGtkTextLine): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_byte_count".}
-proc gtk_text_line_char_index*(line: PGtkTextLine): gint{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_char_index".}
-proc gtk_text_line_byte_to_segment*(line: PGtkTextLine, byte_offset: gint,
-                                      seg_offset: Pgint): PGtkTextLineSegment{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_byte_to_segment".}
-proc gtk_text_line_char_to_segment*(line: PGtkTextLine, char_offset: gint,
-                                      seg_offset: Pgint): PGtkTextLineSegment{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_char_to_segment".}
-proc gtk_text_line_byte_to_char_offsets*(line: PGtkTextLine,
-    byte_offset: gint, line_char_offset: Pgint, seg_char_offset: Pgint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_byte_to_char_offsets".}
-proc gtk_text_line_char_to_byte_offsets*(line: PGtkTextLine,
-    char_offset: gint, line_byte_offset: Pgint, seg_byte_offset: Pgint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_line_char_to_byte_offsets".}
-proc gtk_text_line_byte_to_any_segment*(line: PGtkTextLine, byte_offset: gint,
-    seg_offset: Pgint): PGtkTextLineSegment{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_line_byte_to_any_segment".}
-proc gtk_text_line_char_to_any_segment*(line: PGtkTextLine, char_offset: gint,
-    seg_offset: Pgint): PGtkTextLineSegment{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_line_char_to_any_segment".}
-proc gtk_text_line_byte_to_char*(line: PGtkTextLine, byte_offset: gint): gint{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_byte_to_char".}
-proc gtk_text_line_char_to_byte*(line: PGtkTextLine, char_offset: gint): gint{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_char_to_byte".}
-proc gtk_text_line_next_could_contain_tag*(line: PGtkTextLine,
-    tree: PGtkTextBTree, tag: PGtkTextTag): PGtkTextLine{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_line_next_could_contain_tag".}
-proc gtk_text_line_previous_could_contain_tag*(line: PGtkTextLine,
-    tree: PGtkTextBTree, tag: PGtkTextTag): PGtkTextLine{.cdecl, dynlib: gtklib,
-    importc: "_gtk_text_line_previous_could_contain_tag".}
-proc gtk_text_line_data_new*(layout: PGtkTextLayout, line: PGtkTextLine): PGtkTextLineData{.
-    cdecl, dynlib: gtklib, importc: "_gtk_text_line_data_new".}
-proc gtk_text_btree_check*(tree: PGtkTextBTree){.cdecl, dynlib: gtklib,
+proc width*(a: PTextLineData): gint
+proc set_width*(a: PTextLineData, NewWidth: gint)
+proc valid*(a: PTextLineData): gint
+proc set_valid*(a: PTextLineData, `valid`: gint)
+proc get_number*(line: PTextLine): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_line_get_number".}
+proc char_has_tag*(line: PTextLine, tree: PTextBTree, 
+                             char_in_line: gint, tag: PTextTag): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_text_line_char_has_tag".}
+proc byte_has_tag*(line: PTextLine, tree: PTextBTree, 
+                             byte_in_line: gint, tag: PTextTag): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_text_line_byte_has_tag".}
+proc is_last*(line: PTextLine, tree: PTextBTree): gboolean{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_is_last".}
+proc contains_end_iter*(line: PTextLine, tree: PTextBTree): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_text_line_contains_end_iter".}
+proc next*(line: PTextLine): PTextLine{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_line_next".}
+proc next_excluding_last*(line: PTextLine): PTextLine{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_next_excluding_last".}
+proc previous*(line: PTextLine): PTextLine{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_line_previous".}
+proc add_data*(line: PTextLine, data: PTextLineData){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_add_data".}
+proc remove_data*(line: PTextLine, view_id: gpointer): gpointer{.
+    cdecl, dynlib: lib, importc: "_gtk_text_line_remove_data".}
+proc get_data*(line: PTextLine, view_id: gpointer): gpointer{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_get_data".}
+proc invalidate_wrap*(line: PTextLine, ld: PTextLineData){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_invalidate_wrap".}
+proc char_count*(line: PTextLine): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_line_char_count".}
+proc byte_count*(line: PTextLine): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_line_byte_count".}
+proc char_index*(line: PTextLine): gint{.cdecl, dynlib: lib, 
+    importc: "_gtk_text_line_char_index".}
+proc byte_to_segment*(line: PTextLine, byte_offset: gint, 
+                                seg_offset: Pgint): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_byte_to_segment".}
+proc char_to_segment*(line: PTextLine, char_offset: gint, 
+                                seg_offset: Pgint): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_char_to_segment".}
+proc byte_to_char_offsets*(line: PTextLine, byte_offset: gint, 
+                                     line_char_offset: Pgint, 
+                                     seg_char_offset: Pgint){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_byte_to_char_offsets".}
+proc char_to_byte_offsets*(line: PTextLine, char_offset: gint, 
+                                     line_byte_offset: Pgint, 
+                                     seg_byte_offset: Pgint){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_char_to_byte_offsets".}
+proc byte_to_any_segment*(line: PTextLine, byte_offset: gint, 
+                                    seg_offset: Pgint): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_byte_to_any_segment".}
+proc char_to_any_segment*(line: PTextLine, char_offset: gint, 
+                                    seg_offset: Pgint): PTextLineSegment{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_char_to_any_segment".}
+proc byte_to_char*(line: PTextLine, byte_offset: gint): gint{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_byte_to_char".}
+proc char_to_byte*(line: PTextLine, char_offset: gint): gint{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_char_to_byte".}
+proc next_could_contain_tag*(line: PTextLine, tree: PTextBTree, 
+                                       tag: PTextTag): PTextLine{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_line_next_could_contain_tag".}
+proc previous_could_contain_tag*(line: PTextLine, tree: PTextBTree, 
+    tag: PTextTag): PTextLine{.cdecl, dynlib: lib, importc: "_gtk_text_line_previous_could_contain_tag".}
+proc line_data_new*(layout: PTextLayout, line: PTextLine): PTextLineData{.
+    cdecl, dynlib: lib, importc: "_gtk_text_line_data_new".}
+proc check*(tree: PTextBTree){.cdecl, dynlib: lib, 
     importc: "_gtk_text_btree_check".}
-proc gtk_text_btree_spew*(tree: PGtkTextBTree){.cdecl, dynlib: gtklib,
+proc spew*(tree: PTextBTree){.cdecl, dynlib: lib, 
     importc: "_gtk_text_btree_spew".}
-proc gtk_toggle_segment_check_func*(segPtr: PGtkTextLineSegment,
-                                      line: PGtkTextLine){.cdecl,
-    dynlib: gtklib, importc: "_gtk_toggle_segment_check_func".}
-proc gtk_change_node_toggle_count*(node: PGtkTextBTreeNode,
-                                     info: PGtkTextTagInfo, delta: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_change_node_toggle_count".}
-proc gtk_text_btree_release_mark_segment*(tree: PGtkTextBTree,
-    segment: PGtkTextLineSegment){.cdecl, dynlib: gtklib, importc: "_gtk_text_btree_release_mark_segment".}
-proc gtk_text_btree_notify_will_remove_tag*(tree: PGtkTextBTree,
-    tag: PGtkTextTag){.cdecl, dynlib: gtklib,
-                       importc: "_gtk_text_btree_notify_will_remove_tag".}
-const
-  bm_TGtkTextBuffer_modified* = 0x00000001'i16
+proc toggle_segment_check_func*(segPtr: PTextLineSegment, line: PTextLine){.
+    cdecl, dynlib: lib, importc: "_gtk_toggle_segment_check_func".}
+proc change_node_toggle_count*(node: PTextBTreeNode, info: PTextTagInfo, 
+                               delta: gint){.cdecl, dynlib: lib, 
+    importc: "_gtk_change_node_toggle_count".}
+proc release_mark_segment*(tree: PTextBTree, 
+                                      segment: PTextLineSegment){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_release_mark_segment".}
+proc notify_will_remove_tag*(tree: PTextBTree, tag: PTextTag){.cdecl, 
+    dynlib: lib, importc: "_gtk_text_btree_notify_will_remove_tag".}
+const 
+  bm_TGtkTextBuffer_modified* = 0x0001'i16
   bp_TGtkTextBuffer_modified* = 0'i16
 
-proc GTK_TYPE_TEXT_BUFFER*(): GType
-proc GTK_TEXT_BUFFER*(obj: pointer): PGtkTextBuffer
-proc GTK_TEXT_BUFFER_CLASS*(klass: pointer): PGtkTextBufferClass
-proc GTK_IS_TEXT_BUFFER*(obj: pointer): bool
-proc GTK_IS_TEXT_BUFFER_CLASS*(klass: pointer): bool
-proc GTK_TEXT_BUFFER_GET_CLASS*(obj: pointer): PGtkTextBufferClass
-proc modified*(a: var TGtkTextBuffer): guint
-proc set_modified*(a: var TGtkTextBuffer, `modified`: guint)
-proc gtk_text_buffer_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_get_type".}
-proc gtk_text_buffer_new*(table: PGtkTextTagTable): PGtkTextBuffer{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_new".}
-proc gtk_text_buffer_get_line_count*(buffer: PGtkTextBuffer): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_line_count".}
-proc gtk_text_buffer_get_char_count*(buffer: PGtkTextBuffer): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_char_count".}
-proc gtk_text_buffer_get_tag_table*(buffer: PGtkTextBuffer): PGtkTextTagTable{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_tag_table".}
-proc gtk_text_buffer_set_text*(buffer: PGtkTextBuffer, text: cstring, len: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_set_text".}
-proc gtk_text_buffer_insert*(buffer: PGtkTextBuffer, iter: PGtkTextIter,
-                             text: cstring, len: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_insert".}
-proc gtk_text_buffer_insert_at_cursor*(buffer: PGtkTextBuffer, text: cstring,
-                                       len: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_insert_at_cursor".}
-proc gtk_text_buffer_insert_interactive*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, text: cstring, len: gint, default_editable: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_insert_interactive".}
-proc gtk_text_buffer_insert_interactive_at_cursor*(buffer: PGtkTextBuffer,
-    text: cstring, len: gint, default_editable: gboolean): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_insert_interactive_at_cursor".}
-proc gtk_text_buffer_insert_range*(buffer: PGtkTextBuffer, iter: PGtkTextIter,
-                                   start: PGtkTextIter, theEnd: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_insert_range".}
-proc gtk_text_buffer_insert_range_interactive*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, start: PGtkTextIter, theEnd: PGtkTextIter,
-    default_editable: gboolean): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_insert_range_interactive".}
-proc gtk_text_buffer_delete*(buffer: PGtkTextBuffer, start: PGtkTextIter,
-                             theEnd: PGtkTextIter){.cdecl, dynlib: gtklib,
+proc TYPE_TEXT_BUFFER*(): GType
+proc TEXT_BUFFER*(obj: pointer): PTextBuffer
+proc TEXT_BUFFER_CLASS*(klass: pointer): PTextBufferClass
+proc IS_TEXT_BUFFER*(obj: pointer): bool
+proc IS_TEXT_BUFFER_CLASS*(klass: pointer): bool
+proc TEXT_BUFFER_GET_CLASS*(obj: pointer): PTextBufferClass
+proc modified*(a: var TTextBuffer): guint
+proc set_modified*(a: var TTextBuffer, `modified`: guint)
+proc text_buffer_get_type*(): GType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_text_buffer_get_type".}
+proc buffer_new*(table: PTextTagTable): PTextBuffer{.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_new".}
+proc get_line_count*(buffer: PTextBuffer): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_get_line_count".}
+proc get_char_count*(buffer: PTextBuffer): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_get_char_count".}
+proc get_tag_table*(buffer: PTextBuffer): PTextTagTable{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_tag_table".}
+proc set_text*(buffer: PTextBuffer, text: cstring, len: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_set_text".}
+proc insert*(buffer: PTextBuffer, iter: PTextIter, text: cstring, 
+                         len: gint){.cdecl, dynlib: lib, 
+                                     importc: "gtk_text_buffer_insert".}
+proc insert_at_cursor*(buffer: PTextBuffer, text: cstring, len: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_insert_at_cursor".}
+proc insert_interactive*(buffer: PTextBuffer, iter: PTextIter, 
+                                     text: cstring, len: gint, 
+                                     default_editable: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_insert_interactive".}
+proc insert_interactive_at_cursor*(buffer: PTextBuffer, 
+    text: cstring, len: gint, default_editable: gboolean): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_insert_interactive_at_cursor".}
+proc insert_range*(buffer: PTextBuffer, iter: PTextIter, 
+                               start: PTextIter, theEnd: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_insert_range".}
+proc insert_range_interactive*(buffer: PTextBuffer, iter: PTextIter, 
+    start: PTextIter, theEnd: PTextIter, default_editable: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_insert_range_interactive".}
+proc delete*(buffer: PTextBuffer, start: PTextIter, 
+                         theEnd: PTextIter){.cdecl, dynlib: lib, 
     importc: "gtk_text_buffer_delete".}
-proc gtk_text_buffer_delete_interactive*(buffer: PGtkTextBuffer,
-    start_iter: PGtkTextIter, end_iter: PGtkTextIter, default_editable: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_delete_interactive".}
-proc gtk_text_buffer_get_text*(buffer: PGtkTextBuffer, start: PGtkTextIter,
-                               theEnd: PGtkTextIter,
-                               include_hidden_chars: gboolean): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_text".}
-proc gtk_text_buffer_get_slice*(buffer: PGtkTextBuffer, start: PGtkTextIter,
-                                theEnd: PGtkTextIter,
-                                include_hidden_chars: gboolean): cstring{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_slice".}
-proc gtk_text_buffer_insert_pixbuf*(buffer: PGtkTextBuffer, iter: PGtkTextIter,
-                                    pixbuf: PGdkPixbuf){.cdecl, dynlib: gtklib,
+proc delete_interactive*(buffer: PTextBuffer, start_iter: PTextIter, 
+                                     end_iter: PTextIter, 
+                                     default_editable: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_delete_interactive".}
+proc get_text*(buffer: PTextBuffer, start: PTextIter, 
+                           theEnd: PTextIter, include_hidden_chars: gboolean): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_get_text".}
+proc get_slice*(buffer: PTextBuffer, start: PTextIter, 
+                            theEnd: PTextIter, include_hidden_chars: gboolean): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_get_slice".}
+proc insert_pixbuf*(buffer: PTextBuffer, iter: PTextIter, 
+                                pixbuf: gdk2pixbuf.PPixbuf){.cdecl, dynlib: lib, 
     importc: "gtk_text_buffer_insert_pixbuf".}
-proc gtk_text_buffer_insert_child_anchor*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, anchor: PGtkTextChildAnchor){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_insert_child_anchor".}
-proc gtk_text_buffer_create_child_anchor*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter): PGtkTextChildAnchor{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_create_child_anchor".}
-proc gtk_text_buffer_create_mark*(buffer: PGtkTextBuffer, mark_name: cstring,
-                                  `where`: PGtkTextIter, left_gravity: gboolean): PGtkTextMark{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_create_mark".}
-proc gtk_text_buffer_move_mark*(buffer: PGtkTextBuffer, mark: PGtkTextMark,
-                                `where`: PGtkTextIter){.cdecl, dynlib: gtklib,
+proc insert_child_anchor*(buffer: PTextBuffer, iter: PTextIter, 
+                                      anchor: PTextChildAnchor){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_insert_child_anchor".}
+proc create_child_anchor*(buffer: PTextBuffer, iter: PTextIter): PTextChildAnchor{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_create_child_anchor".}
+proc create_mark*(buffer: PTextBuffer, mark_name: cstring, 
+                              `where`: PTextIter, left_gravity: gboolean): PTextMark{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_create_mark".}
+proc move_mark*(buffer: PTextBuffer, mark: PTextMark, 
+                            `where`: PTextIter){.cdecl, dynlib: lib, 
     importc: "gtk_text_buffer_move_mark".}
-proc gtk_text_buffer_delete_mark*(buffer: PGtkTextBuffer, mark: PGtkTextMark){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_delete_mark".}
-proc gtk_text_buffer_get_mark*(buffer: PGtkTextBuffer, name: cstring): PGtkTextMark{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_mark".}
-proc gtk_text_buffer_move_mark_by_name*(buffer: PGtkTextBuffer, name: cstring,
-                                        `where`: PGtkTextIter){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_move_mark_by_name".}
-proc gtk_text_buffer_delete_mark_by_name*(buffer: PGtkTextBuffer, name: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_delete_mark_by_name".}
-proc gtk_text_buffer_get_insert*(buffer: PGtkTextBuffer): PGtkTextMark{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_insert".}
-proc gtk_text_buffer_get_selection_bound*(buffer: PGtkTextBuffer): PGtkTextMark{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_selection_bound".}
-proc gtk_text_buffer_place_cursor*(buffer: PGtkTextBuffer, `where`: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_place_cursor".}
-proc gtk_text_buffer_apply_tag*(buffer: PGtkTextBuffer, tag: PGtkTextTag,
-                                start: PGtkTextIter, theEnd: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_apply_tag".}
-proc gtk_text_buffer_remove_tag*(buffer: PGtkTextBuffer, tag: PGtkTextTag,
-                                 start: PGtkTextIter, theEnd: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_remove_tag".}
-proc gtk_text_buffer_apply_tag_by_name*(buffer: PGtkTextBuffer, name: cstring,
-                                        start: PGtkTextIter,
-                                        theEnd: PGtkTextIter){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_apply_tag_by_name".}
-proc gtk_text_buffer_remove_tag_by_name*(buffer: PGtkTextBuffer, name: cstring,
-    start: PGtkTextIter, theEnd: PGtkTextIter){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_remove_tag_by_name".}
-proc gtk_text_buffer_remove_all_tags*(buffer: PGtkTextBuffer,
-                                      start: PGtkTextIter, theEnd: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_remove_all_tags".}
-proc gtk_text_buffer_get_iter_at_line_offset*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, line_number: gint, char_offset: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_iter_at_line_offset".}
-proc gtk_text_buffer_get_iter_at_line_index*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, line_number: gint, byte_index: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_iter_at_line_index".}
-proc gtk_text_buffer_get_iter_at_offset*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, char_offset: gint){.cdecl, dynlib: gtklib,
+proc delete_mark*(buffer: PTextBuffer, mark: PTextMark){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_delete_mark".}
+proc get_mark*(buffer: PTextBuffer, name: cstring): PTextMark{.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_get_mark".}
+proc move_mark_by_name*(buffer: PTextBuffer, name: cstring, 
+                                    `where`: PTextIter){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_move_mark_by_name".}
+proc delete_mark_by_name*(buffer: PTextBuffer, name: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_delete_mark_by_name".}
+proc get_insert*(buffer: PTextBuffer): PTextMark{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_insert".}
+proc get_selection_bound*(buffer: PTextBuffer): PTextMark{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_selection_bound".}
+proc place_cursor*(buffer: PTextBuffer, `where`: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_place_cursor".}
+proc apply_tag*(buffer: PTextBuffer, tag: PTextTag, 
+                            start: PTextIter, theEnd: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_apply_tag".}
+proc remove_tag*(buffer: PTextBuffer, tag: PTextTag, 
+                             start: PTextIter, theEnd: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_remove_tag".}
+proc apply_tag_by_name*(buffer: PTextBuffer, name: cstring, 
+                                    start: PTextIter, theEnd: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_apply_tag_by_name".}
+proc remove_tag_by_name*(buffer: PTextBuffer, name: cstring, 
+                                     start: PTextIter, theEnd: PTextIter){.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_remove_tag_by_name".}
+proc remove_all_tags*(buffer: PTextBuffer, start: PTextIter, 
+                                  theEnd: PTextIter){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_remove_all_tags".}
+proc get_iter_at_line_offset*(buffer: PTextBuffer, iter: PTextIter, 
+    line_number: gint, char_offset: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_get_iter_at_line_offset".}
+proc get_iter_at_line_index*(buffer: PTextBuffer, iter: PTextIter, 
+    line_number: gint, byte_index: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_get_iter_at_line_index".}
+proc get_iter_at_offset*(buffer: PTextBuffer, iter: PTextIter, 
+                                     char_offset: gint){.cdecl, dynlib: lib, 
     importc: "gtk_text_buffer_get_iter_at_offset".}
-proc gtk_text_buffer_get_iter_at_line*(buffer: PGtkTextBuffer,
-                                       iter: PGtkTextIter, line_number: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_iter_at_line".}
-proc gtk_text_buffer_get_start_iter*(buffer: PGtkTextBuffer, iter: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_start_iter".}
-proc gtk_text_buffer_get_end_iter*(buffer: PGtkTextBuffer, iter: PGtkTextIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_end_iter".}
-proc gtk_text_buffer_get_bounds*(buffer: PGtkTextBuffer, start: PGtkTextIter,
-                                 theEnd: PGtkTextIter){.cdecl, dynlib: gtklib,
+proc get_iter_at_line*(buffer: PTextBuffer, iter: PTextIter, 
+                                   line_number: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_get_iter_at_line".}
+proc get_start_iter*(buffer: PTextBuffer, iter: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_start_iter".}
+proc get_end_iter*(buffer: PTextBuffer, iter: PTextIter){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_end_iter".}
+proc get_bounds*(buffer: PTextBuffer, start: PTextIter, 
+                             theEnd: PTextIter){.cdecl, dynlib: lib, 
     importc: "gtk_text_buffer_get_bounds".}
-proc gtk_text_buffer_get_iter_at_mark*(buffer: PGtkTextBuffer,
-                                       iter: PGtkTextIter, mark: PGtkTextMark){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_get_iter_at_mark".}
-proc gtk_text_buffer_get_iter_at_child_anchor*(buffer: PGtkTextBuffer,
-    iter: PGtkTextIter, anchor: PGtkTextChildAnchor){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_get_iter_at_child_anchor".}
-proc gtk_text_buffer_get_modified*(buffer: PGtkTextBuffer): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_get_modified".}
-proc gtk_text_buffer_set_modified*(buffer: PGtkTextBuffer, setting: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_set_modified".}
-proc gtk_text_buffer_add_selection_clipboard*(buffer: PGtkTextBuffer,
-    clipboard: PGtkClipboard){.cdecl, dynlib: gtklib, importc: "gtk_text_buffer_add_selection_clipboard".}
-proc gtk_text_buffer_remove_selection_clipboard*(buffer: PGtkTextBuffer,
-    clipboard: PGtkClipboard){.cdecl, dynlib: gtklib, importc: "gtk_text_buffer_remove_selection_clipboard".}
-proc gtk_text_buffer_cut_clipboard*(buffer: PGtkTextBuffer,
-                                    clipboard: PGtkClipboard,
-                                    default_editable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_cut_clipboard".}
-proc gtk_text_buffer_copy_clipboard*(buffer: PGtkTextBuffer,
-                                     clipboard: PGtkClipboard){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_copy_clipboard".}
-proc gtk_text_buffer_paste_clipboard*(buffer: PGtkTextBuffer,
-                                      clipboard: PGtkClipboard,
-                                      override_location: PGtkTextIter,
-                                      default_editable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_paste_clipboard".}
-proc gtk_text_buffer_get_selection_bounds*(buffer: PGtkTextBuffer,
-    start: PGtkTextIter, theEnd: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_buffer_get_selection_bounds".}
-proc gtk_text_buffer_delete_selection*(buffer: PGtkTextBuffer,
-                                       interactive: gboolean,
-                                       default_editable: gboolean): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_buffer_delete_selection".}
-proc gtk_text_buffer_begin_user_action*(buffer: PGtkTextBuffer){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_begin_user_action".}
-proc gtk_text_buffer_end_user_action*(buffer: PGtkTextBuffer){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_buffer_end_user_action".}
-proc gtk_text_buffer_spew*(buffer: PGtkTextBuffer){.cdecl, dynlib: gtklib,
+proc get_iter_at_mark*(buffer: PTextBuffer, iter: PTextIter, 
+                                   mark: PTextMark){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_get_iter_at_mark".}
+proc get_iter_at_child_anchor*(buffer: PTextBuffer, iter: PTextIter, 
+    anchor: PTextChildAnchor){.cdecl, dynlib: lib, importc: "gtk_text_buffer_get_iter_at_child_anchor".}
+proc get_modified*(buffer: PTextBuffer): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_modified".}
+proc set_modified*(buffer: PTextBuffer, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_set_modified".}
+proc add_selection_clipboard*(buffer: PTextBuffer, 
+    clipboard: PClipboard){.cdecl, dynlib: lib, 
+                            importc: "gtk_text_buffer_add_selection_clipboard".}
+proc remove_selection_clipboard*(buffer: PTextBuffer, 
+    clipboard: PClipboard){.cdecl, dynlib: lib, importc: "gtk_text_buffer_remove_selection_clipboard".}
+proc cut_clipboard*(buffer: PTextBuffer, clipboard: PClipboard, 
+                                default_editable: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_cut_clipboard".}
+proc copy_clipboard*(buffer: PTextBuffer, clipboard: PClipboard){.
+    cdecl, dynlib: lib, importc: "gtk_text_buffer_copy_clipboard".}
+proc paste_clipboard*(buffer: PTextBuffer, clipboard: PClipboard, 
+                                  override_location: PTextIter, 
+                                  default_editable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_paste_clipboard".}
+proc get_selection_bounds*(buffer: PTextBuffer, start: PTextIter, 
+                                       theEnd: PTextIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_get_selection_bounds".}
+proc delete_selection*(buffer: PTextBuffer, interactive: gboolean, 
+                                   default_editable: gboolean): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_buffer_delete_selection".}
+proc begin_user_action*(buffer: PTextBuffer){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_begin_user_action".}
+proc end_user_action*(buffer: PTextBuffer){.cdecl, dynlib: lib, 
+    importc: "gtk_text_buffer_end_user_action".}
+proc spew*(buffer: PTextBuffer){.cdecl, dynlib: lib, 
     importc: "_gtk_text_buffer_spew".}
-proc gtk_text_buffer_get_btree*(buffer: PGtkTextBuffer): PGtkTextBTree{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_buffer_get_btree".}
-proc gtk_text_buffer_get_line_log_attrs*(buffer: PGtkTextBuffer,
-    anywhere_in_line: PGtkTextIter, char_len: Pgint): PPangoLogAttr{.cdecl,
-    dynlib: gtklib, importc: "_gtk_text_buffer_get_line_log_attrs".}
-proc gtk_text_buffer_notify_will_remove_tag*(buffer: PGtkTextBuffer,
-    tag: PGtkTextTag){.cdecl, dynlib: gtklib,
-                       importc: "_gtk_text_buffer_notify_will_remove_tag".}
-proc GTK_TYPE_TEXT_LAYOUT*(): GType
-proc GTK_TEXT_LAYOUT*(obj: pointer): PGtkTextLayout
-proc GTK_TEXT_LAYOUT_CLASS*(klass: pointer): PGtkTextLayoutClass
-proc GTK_IS_TEXT_LAYOUT*(obj: pointer): bool
-proc GTK_IS_TEXT_LAYOUT_CLASS*(klass: pointer): bool
-proc GTK_TEXT_LAYOUT_GET_CLASS*(obj: pointer): PGtkTextLayoutClass
-const
-  bm_TGtkTextLayout_cursor_visible* = 0x00000001'i16
+proc get_btree*(buffer: PTextBuffer): PTextBTree{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_buffer_get_btree".}
+proc get_line_log_attrs*(buffer: PTextBuffer, 
+                                     anywhere_in_line: PTextIter, 
+                                     char_len: Pgint): pango.PLogAttr{.cdecl, 
+    dynlib: lib, importc: "_gtk_text_buffer_get_line_log_attrs".}
+proc notify_will_remove_tag*(buffer: PTextBuffer, tag: PTextTag){.
+    cdecl, dynlib: lib, importc: "_gtk_text_buffer_notify_will_remove_tag".}
+proc TYPE_TEXT_LAYOUT*(): GType
+proc TEXT_LAYOUT*(obj: pointer): PTextLayout
+proc TEXT_LAYOUT_CLASS*(klass: pointer): PTextLayoutClass
+proc IS_TEXT_LAYOUT*(obj: pointer): bool
+proc IS_TEXT_LAYOUT_CLASS*(klass: pointer): bool
+proc TEXT_LAYOUT_GET_CLASS*(obj: pointer): PTextLayoutClass
+const 
+  bm_TGtkTextLayout_cursor_visible* = 0x0001'i16
   bp_TGtkTextLayout_cursor_visible* = 0'i16
-  bm_TGtkTextLayout_cursor_direction* = 0x00000006'i16
+  bm_TGtkTextLayout_cursor_direction* = 0x0006'i16
   bp_TGtkTextLayout_cursor_direction* = 1'i16
 
-proc cursor_visible*(a: var TGtkTextLayout): guint
-proc set_cursor_visible*(a: var TGtkTextLayout, `cursor_visible`: guint)
-proc cursor_direction*(a: var TGtkTextLayout): gint
-proc set_cursor_direction*(a: var TGtkTextLayout, `cursor_direction`: gint)
-const
-  bm_TGtkTextCursorDisplay_is_strong* = 0x00000001'i16
+proc cursor_visible*(a: var TTextLayout): guint
+proc set_cursor_visible*(a: var TTextLayout, `cursor_visible`: guint)
+proc cursor_direction*(a: var TTextLayout): gint
+proc set_cursor_direction*(a: var TTextLayout, `cursor_direction`: gint)
+const 
+  bm_TGtkTextCursorDisplay_is_strong* = 0x0001'i16
   bp_TGtkTextCursorDisplay_is_strong* = 0'i16
-  bm_TGtkTextCursorDisplay_is_weak* = 0x00000002'i16
+  bm_TGtkTextCursorDisplay_is_weak* = 0x0002'i16
   bp_TGtkTextCursorDisplay_is_weak* = 1'i16
 
-proc is_strong*(a: var TGtkTextCursorDisplay): guint
-proc set_is_strong*(a: var TGtkTextCursorDisplay, `is_strong`: guint)
-proc is_weak*(a: var TGtkTextCursorDisplay): guint
-proc set_is_weak*(a: var TGtkTextCursorDisplay, `is_weak`: guint)
-proc gtk_text_layout_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_layout_get_type".}
-proc gtk_text_layout_new*(): PGtkTextLayout{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_layout_new".}
-proc gtk_text_layout_set_buffer*(layout: PGtkTextLayout, buffer: PGtkTextBuffer){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_set_buffer".}
-proc gtk_text_layout_get_buffer*(layout: PGtkTextLayout): PGtkTextBuffer{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_get_buffer".}
-proc gtk_text_layout_set_default_style*(layout: PGtkTextLayout,
-                                        values: PGtkTextAttributes){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_set_default_style".}
-proc gtk_text_layout_set_contexts*(layout: PGtkTextLayout,
-                                   ltr_context: PPangoContext,
-                                   rtl_context: PPangoContext){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_set_contexts".}
-proc gtk_text_layout_set_cursor_direction*(layout: PGtkTextLayout,
-    direction: TGtkTextDirection){.cdecl, dynlib: gtklib, importc: "gtk_text_layout_set_cursor_direction".}
-proc gtk_text_layout_default_style_changed*(layout: PGtkTextLayout){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_default_style_changed".}
-proc gtk_text_layout_set_screen_width*(layout: PGtkTextLayout, width: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_set_screen_width".}
-proc gtk_text_layout_set_preedit_string*(layout: PGtkTextLayout,
-    preedit_string: cstring, preedit_attrs: PPangoAttrList, cursor_pos: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_set_preedit_string".}
-proc gtk_text_layout_set_cursor_visible*(layout: PGtkTextLayout,
-    cursor_visible: gboolean){.cdecl, dynlib: gtklib,
-                               importc: "gtk_text_layout_set_cursor_visible".}
-proc gtk_text_layout_get_cursor_visible*(layout: PGtkTextLayout): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_get_cursor_visible".}
-proc gtk_text_layout_get_size*(layout: PGtkTextLayout, width: Pgint,
-                               height: Pgint){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_layout_get_size".}
-proc gtk_text_layout_get_lines*(layout: PGtkTextLayout, top_y: gint,
-                                bottom_y: gint, first_line_y: Pgint): PGSList{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_get_lines".}
-proc gtk_text_layout_wrap_loop_start*(layout: PGtkTextLayout){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_wrap_loop_start".}
-proc gtk_text_layout_wrap_loop_end*(layout: PGtkTextLayout){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_wrap_loop_end".}
-proc gtk_text_layout_get_line_display*(layout: PGtkTextLayout,
-                                       line: PGtkTextLine, size_only: gboolean): PGtkTextLineDisplay{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_get_line_display".}
-proc gtk_text_layout_free_line_display*(layout: PGtkTextLayout,
-                                        display: PGtkTextLineDisplay){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_free_line_display".}
-proc gtk_text_layout_get_line_at_y*(layout: PGtkTextLayout,
-                                    target_iter: PGtkTextIter, y: gint,
-                                    line_top: Pgint){.cdecl, dynlib: gtklib,
+proc is_strong*(a: var TTextCursorDisplay): guint
+proc set_is_strong*(a: var TTextCursorDisplay, `is_strong`: guint)
+proc is_weak*(a: var TTextCursorDisplay): guint
+proc set_is_weak*(a: var TTextCursorDisplay, `is_weak`: guint)
+proc text_layout_get_type*(): GType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_text_layout_get_type".}
+proc text_layout_new*(): PTextLayout{.cdecl, dynlib: lib, 
+                                      importc: "gtk_text_layout_new".}
+proc set_buffer*(layout: PTextLayout, buffer: PTextBuffer){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_set_buffer".}
+proc get_buffer*(layout: PTextLayout): PTextBuffer{.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_get_buffer".}
+proc set_default_style*(layout: PTextLayout, values: PTextAttributes){.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_set_default_style".}
+proc set_contexts*(layout: PTextLayout, ltr_context: pango.PContext, 
+                               rtl_context: pango.PContext){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_set_contexts".}
+proc set_cursor_direction*(layout: PTextLayout, 
+                                       direction: TTextDirection){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_set_cursor_direction".}
+proc default_style_changed*(layout: PTextLayout){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_default_style_changed".}
+proc set_screen_width*(layout: PTextLayout, width: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_set_screen_width".}
+proc set_preedit_string*(layout: PTextLayout, 
+                                     preedit_string: cstring, 
+                                     preedit_attrs: pango.PAttrList, 
+                                     cursor_pos: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_set_preedit_string".}
+proc set_cursor_visible*(layout: PTextLayout, 
+                                     cursor_visible: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_set_cursor_visible".}
+proc get_cursor_visible*(layout: PTextLayout): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_get_cursor_visible".}
+proc get_size*(layout: PTextLayout, width: Pgint, height: Pgint){.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_get_size".}
+proc get_lines*(layout: PTextLayout, top_y: gint, bottom_y: gint, 
+                            first_line_y: Pgint): PGSList{.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_get_lines".}
+proc wrap_loop_start*(layout: PTextLayout){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_wrap_loop_start".}
+proc wrap_loop_end*(layout: PTextLayout){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_wrap_loop_end".}
+proc get_line_display*(layout: PTextLayout, line: PTextLine, 
+                                   size_only: gboolean): PTextLineDisplay{.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_get_line_display".}
+proc free_line_display*(layout: PTextLayout, 
+                                    display: PTextLineDisplay){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_free_line_display".}
+proc get_line_at_y*(layout: PTextLayout, target_iter: PTextIter, 
+                                y: gint, line_top: Pgint){.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_get_line_at_y".}
-proc gtk_text_layout_get_iter_at_pixel*(layout: PGtkTextLayout,
-                                        iter: PGtkTextIter, x: gint, y: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_get_iter_at_pixel".}
-proc gtk_text_layout_invalidate*(layout: PGtkTextLayout, start: PGtkTextIter,
-                                 theEnd: PGtkTextIter){.cdecl, dynlib: gtklib,
+proc get_iter_at_pixel*(layout: PTextLayout, iter: PTextIter, 
+                                    x: gint, y: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_get_iter_at_pixel".}
+proc invalidate*(layout: PTextLayout, start: PTextIter, 
+                             theEnd: PTextIter){.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_invalidate".}
-proc gtk_text_layout_free_line_data*(layout: PGtkTextLayout, line: PGtkTextLine,
-                                     line_data: PGtkTextLineData){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_free_line_data".}
-proc gtk_text_layout_is_valid*(layout: PGtkTextLayout): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_is_valid".}
-proc gtk_text_layout_validate_yrange*(layout: PGtkTextLayout,
-                                      anchor_line: PGtkTextIter, y0: gint,
-                                      y1: gint){.cdecl, dynlib: gtklib,
+proc free_line_data*(layout: PTextLayout, line: PTextLine, 
+                                 line_data: PTextLineData){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_free_line_data".}
+proc is_valid*(layout: PTextLayout): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_is_valid".}
+proc validate_yrange*(layout: PTextLayout, anchor_line: PTextIter, 
+                                  y0: gint, y1: gint){.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_validate_yrange".}
-proc gtk_text_layout_validate*(layout: PGtkTextLayout, max_pixels: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_validate".}
-proc gtk_text_layout_wrap*(layout: PGtkTextLayout, line: PGtkTextLine,
-                           line_data: PGtkTextLineData): PGtkTextLineData{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_wrap".}
-proc gtk_text_layout_changed*(layout: PGtkTextLayout, y: gint, old_height: gint,
-                              new_height: gint){.cdecl, dynlib: gtklib,
+proc validate*(layout: PTextLayout, max_pixels: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_validate".}
+proc wrap*(layout: PTextLayout, line: PTextLine, 
+                       line_data: PTextLineData): PTextLineData{.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_wrap".}
+proc changed*(layout: PTextLayout, y: gint, old_height: gint, 
+                          new_height: gint){.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_changed".}
-proc gtk_text_layout_get_iter_location*(layout: PGtkTextLayout,
-                                        iter: PGtkTextIter, rect: PGdkRectangle){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_get_iter_location".}
-proc gtk_text_layout_get_line_yrange*(layout: PGtkTextLayout,
-                                      iter: PGtkTextIter, y: Pgint,
-                                      height: Pgint){.cdecl, dynlib: gtklib,
+proc get_iter_location*(layout: PTextLayout, iter: PTextIter, 
+                                    rect: gdk2.PRectangle){.cdecl, dynlib: lib, 
+    importc: "gtk_text_layout_get_iter_location".}
+proc get_line_yrange*(layout: PTextLayout, iter: PTextIter, 
+                                  y: Pgint, height: Pgint){.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_get_line_yrange".}
-proc gtk_text_layout_get_line_xrange*(layout: PGtkTextLayout,
-                                        iter: PGtkTextIter, x: Pgint,
-                                        width: Pgint){.cdecl, dynlib: gtklib,
+proc get_line_xrange*(layout: PTextLayout, iter: PTextIter, 
+                                  x: Pgint, width: Pgint){.cdecl, dynlib: lib, 
     importc: "_gtk_text_layout_get_line_xrange".}
-proc gtk_text_layout_get_cursor_locations*(layout: PGtkTextLayout,
-    iter: PGtkTextIter, strong_pos: PGdkRectangle, weak_pos: PGdkRectangle){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_layout_get_cursor_locations".}
-proc gtk_text_layout_clamp_iter_to_vrange*(layout: PGtkTextLayout,
-    iter: PGtkTextIter, top: gint, bottom: gint): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_clamp_iter_to_vrange".}
-proc gtk_text_layout_move_iter_to_line_end*(layout: PGtkTextLayout,
-    iter: PGtkTextIter, direction: gint): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_layout_move_iter_to_line_end".}
-proc gtk_text_layout_move_iter_to_previous_line*(layout: PGtkTextLayout,
-    iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_layout_move_iter_to_previous_line".}
-proc gtk_text_layout_move_iter_to_next_line*(layout: PGtkTextLayout,
-    iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_layout_move_iter_to_next_line".}
-proc gtk_text_layout_move_iter_to_x*(layout: PGtkTextLayout, iter: PGtkTextIter,
-                                     x: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_layout_move_iter_to_x".}
-proc gtk_text_layout_move_iter_visually*(layout: PGtkTextLayout,
-    iter: PGtkTextIter, count: gint): gboolean{.cdecl, dynlib: gtklib,
+proc get_cursor_locations*(layout: PTextLayout, iter: PTextIter, 
+                                       strong_pos: gdk2.PRectangle, 
+                                       weak_pos: gdk2.PRectangle){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_get_cursor_locations".}
+proc clamp_iter_to_vrange*(layout: PTextLayout, iter: PTextIter, 
+                                       top: gint, bottom: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_clamp_iter_to_vrange".}
+proc move_iter_to_line_end*(layout: PTextLayout, iter: PTextIter, 
+                                        direction: gint): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_move_iter_to_line_end".}
+proc move_iter_to_previous_line*(layout: PTextLayout, 
+    iter: PTextIter): gboolean{.cdecl, dynlib: lib, importc: "gtk_text_layout_move_iter_to_previous_line".}
+proc move_iter_to_next_line*(layout: PTextLayout, iter: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_move_iter_to_next_line".}
+proc move_iter_to_x*(layout: PTextLayout, iter: PTextIter, x: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_move_iter_to_x".}
+proc move_iter_visually*(layout: PTextLayout, iter: PTextIter, 
+                                     count: gint): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_move_iter_visually".}
-proc gtk_text_layout_iter_starts_line*(layout: PGtkTextLayout,
-                                       iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_iter_starts_line".}
-proc gtk_text_layout_get_iter_at_line*(layout: PGtkTextLayout,
-                                       iter: PGtkTextIter, line: PGtkTextLine,
-                                       byte_offset: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_layout_get_iter_at_line".}
-proc gtk_text_child_anchor_register_child*(anchor: PGtkTextChildAnchor,
-    child: PGtkWidget, layout: PGtkTextLayout){.cdecl, dynlib: gtklib,
+proc iter_starts_line*(layout: PTextLayout, iter: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_layout_iter_starts_line".}
+proc get_iter_at_line*(layout: PTextLayout, iter: PTextIter, 
+                                   line: PTextLine, byte_offset: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_layout_get_iter_at_line".}
+proc anchor_register_child*(anchor: PTextChildAnchor, child: PWidget, 
+                                       layout: PTextLayout){.cdecl, dynlib: lib, 
     importc: "gtk_text_child_anchor_register_child".}
-proc gtk_text_child_anchor_unregister_child*(anchor: PGtkTextChildAnchor,
-    child: PGtkWidget){.cdecl, dynlib: gtklib,
-                        importc: "gtk_text_child_anchor_unregister_child".}
-proc gtk_text_child_anchor_queue_resize*(anchor: PGtkTextChildAnchor,
-    layout: PGtkTextLayout){.cdecl, dynlib: gtklib,
-                             importc: "gtk_text_child_anchor_queue_resize".}
-proc gtk_text_anchored_child_set_layout*(child: PGtkWidget,
-    layout: PGtkTextLayout){.cdecl, dynlib: gtklib,
-                             importc: "gtk_text_anchored_child_set_layout".}
-proc gtk_text_layout_spew*(layout: PGtkTextLayout){.cdecl, dynlib: gtklib,
+proc anchor_unregister_child*(anchor: PTextChildAnchor, 
+    child: PWidget){.cdecl, dynlib: lib, 
+                     importc: "gtk_text_child_anchor_unregister_child".}
+proc anchor_queue_resize*(anchor: PTextChildAnchor, 
+                                     layout: PTextLayout){.cdecl, dynlib: lib, 
+    importc: "gtk_text_child_anchor_queue_resize".}
+proc text_anchored_child_set_layout*(child: PWidget, layout: PTextLayout){.
+    cdecl, dynlib: lib, importc: "gtk_text_anchored_child_set_layout".}
+proc spew*(layout: PTextLayout){.cdecl, dynlib: lib, 
     importc: "gtk_text_layout_spew".}
-const # GTK_TEXT_VIEW_PRIORITY_VALIDATE* = GDK_PRIORITY_REDRAW + 5
-  bm_TGtkTextView_editable* = 0x00000001'i16
+const                         # GTK_TEXT_VIEW_PRIORITY_VALIDATE* = GDK_PRIORITY_REDRAW + 5
+  bm_TGtkTextView_editable* = 0x0001'i16
   bp_TGtkTextView_editable* = 0'i16
-  bm_TGtkTextView_overwrite_mode* = 0x00000002'i16
+  bm_TGtkTextView_overwrite_mode* = 0x0002'i16
   bp_TGtkTextView_overwrite_mode* = 1'i16
-  bm_TGtkTextView_cursor_visible* = 0x00000004'i16
+  bm_TGtkTextView_cursor_visible* = 0x0004'i16
   bp_TGtkTextView_cursor_visible* = 2'i16
-  bm_TGtkTextView_need_im_reset* = 0x00000008'i16
+  bm_TGtkTextView_need_im_reset* = 0x0008'i16
   bp_TGtkTextView_need_im_reset* = 3'i16
-  bm_TGtkTextView_just_selected_element* = 0x00000010'i16
+  bm_TGtkTextView_just_selected_element* = 0x0010'i16
   bp_TGtkTextView_just_selected_element* = 4'i16
-  bm_TGtkTextView_disable_scroll_on_focus* = 0x00000020'i16
+  bm_TGtkTextView_disable_scroll_on_focus* = 0x0020'i16
   bp_TGtkTextView_disable_scroll_on_focus* = 5'i16
-  bm_TGtkTextView_onscreen_validated* = 0x00000040'i16
+  bm_TGtkTextView_onscreen_validated* = 0x0040'i16
   bp_TGtkTextView_onscreen_validated* = 6'i16
-  bm_TGtkTextView_mouse_cursor_obscured* = 0x00000080'i16
+  bm_TGtkTextView_mouse_cursor_obscured* = 0x0080'i16
   bp_TGtkTextView_mouse_cursor_obscured* = 7'i16
 
-proc GTK_TYPE_TEXT_VIEW*(): GType
-proc GTK_TEXT_VIEW*(obj: pointer): PGtkTextView
-proc GTK_TEXT_VIEW_CLASS*(klass: pointer): PGtkTextViewClass
-proc GTK_IS_TEXT_VIEW*(obj: pointer): bool
-proc GTK_IS_TEXT_VIEW_CLASS*(klass: pointer): bool
-proc GTK_TEXT_VIEW_GET_CLASS*(obj: pointer): PGtkTextViewClass
-proc editable*(a: var TGtkTextView): guint
-proc set_editable*(a: var TGtkTextView, `editable`: guint)
-proc overwrite_mode*(a: var TGtkTextView): guint
-proc set_overwrite_mode*(a: var TGtkTextView, `overwrite_mode`: guint)
-proc cursor_visible*(a: var TGtkTextView): guint
-proc set_cursor_visible*(a: var TGtkTextView, `cursor_visible`: guint)
-proc need_im_reset*(a: var TGtkTextView): guint
-proc set_need_im_reset*(a: var TGtkTextView, `need_im_reset`: guint)
-proc just_selected_element*(a: var TGtkTextView): guint
-proc set_just_selected_element*(a: var TGtkTextView,
-                                `just_selected_element`: guint)
-proc disable_scroll_on_focus*(a: var TGtkTextView): guint
-proc set_disable_scroll_on_focus*(a: var TGtkTextView,
+proc TYPE_TEXT_VIEW*(): GType
+proc TEXT_VIEW*(obj: pointer): PTextView
+proc TEXT_VIEW_CLASS*(klass: pointer): PTextViewClass
+proc IS_TEXT_VIEW*(obj: pointer): bool
+proc IS_TEXT_VIEW_CLASS*(klass: pointer): bool
+proc TEXT_VIEW_GET_CLASS*(obj: pointer): PTextViewClass
+proc editable*(a: var TTextView): guint
+proc set_editable*(a: var TTextView, `editable`: guint)
+proc overwrite_mode*(a: var TTextView): guint
+proc set_overwrite_mode*(a: var TTextView, `overwrite_mode`: guint)
+proc cursor_visible*(a: var TTextView): guint
+proc set_cursor_visible*(a: var TTextView, `cursor_visible`: guint)
+proc need_im_reset*(a: var TTextView): guint
+proc set_need_im_reset*(a: var TTextView, `need_im_reset`: guint)
+proc just_selected_element*(a: var TTextView): guint
+proc set_just_selected_element*(a: var TTextView, `just_selected_element`: guint)
+proc disable_scroll_on_focus*(a: var TTextView): guint
+proc set_disable_scroll_on_focus*(a: var TTextView, 
                                   `disable_scroll_on_focus`: guint)
-proc onscreen_validated*(a: var TGtkTextView): guint
-proc set_onscreen_validated*(a: var TGtkTextView, `onscreen_validated`: guint)
-proc mouse_cursor_obscured*(a: var TGtkTextView): guint
-proc set_mouse_cursor_obscured*(a: var TGtkTextView,
-                                `mouse_cursor_obscured`: guint)
-proc gtk_text_view_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_view_get_type".}
-proc gtk_text_view_new*(): PGtkTextView{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_text_view_new".}
-proc gtk_text_view_new_with_buffer*(buffer: PGtkTextBuffer): PGtkTextView{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_new_with_buffer".}
-proc gtk_text_view_set_buffer*(text_view: PGtkTextView, buffer: PGtkTextBuffer){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_set_buffer".}
-proc gtk_text_view_get_buffer*(text_view: PGtkTextView): PGtkTextBuffer{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_buffer".}
-proc gtk_text_view_scroll_to_iter*(text_view: PGtkTextView, iter: PGtkTextIter,
-                                   within_margin: gdouble, use_align: gboolean,
-                                   xalign: gdouble, yalign: gdouble): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_scroll_to_iter".}
-proc gtk_text_view_scroll_to_mark*(text_view: PGtkTextView, mark: PGtkTextMark,
-                                   within_margin: gdouble, use_align: gboolean,
-                                   xalign: gdouble, yalign: gdouble){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_scroll_to_mark".}
-proc gtk_text_view_scroll_mark_onscreen*(text_view: PGtkTextView,
-    mark: PGtkTextMark){.cdecl, dynlib: gtklib,
-                         importc: "gtk_text_view_scroll_mark_onscreen".}
-proc gtk_text_view_move_mark_onscreen*(text_view: PGtkTextView,
-                                       mark: PGtkTextMark): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_move_mark_onscreen".}
-proc gtk_text_view_place_cursor_onscreen*(text_view: PGtkTextView): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_place_cursor_onscreen".}
-proc gtk_text_view_get_visible_rect*(text_view: PGtkTextView,
-                                     visible_rect: PGdkRectangle){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_visible_rect".}
-proc gtk_text_view_set_cursor_visible*(text_view: PGtkTextView,
-                                       setting: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_set_cursor_visible".}
-proc gtk_text_view_get_cursor_visible*(text_view: PGtkTextView): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_cursor_visible".}
-proc gtk_text_view_get_iter_location*(text_view: PGtkTextView,
-                                      iter: PGtkTextIter,
-                                      location: PGdkRectangle){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_iter_location".}
-proc gtk_text_view_get_iter_at_location*(text_view: PGtkTextView,
-    iter: PGtkTextIter, x: gint, y: gint){.cdecl, dynlib: gtklib,
+proc onscreen_validated*(a: var TTextView): guint
+proc set_onscreen_validated*(a: var TTextView, `onscreen_validated`: guint)
+proc mouse_cursor_obscured*(a: var TTextView): guint
+proc set_mouse_cursor_obscured*(a: var TTextView, `mouse_cursor_obscured`: guint)
+proc text_view_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_text_view_get_type".}
+proc text_view_new*(): PTextView{.cdecl, dynlib: lib, 
+                                  importc: "gtk_text_view_new".}
+proc view_new_with_buffer*(buffer: PTextBuffer): PTextView{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_new_with_buffer".}
+proc set_buffer*(text_view: PTextView, buffer: PTextBuffer){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_buffer".}
+proc get_buffer*(text_view: PTextView): PTextBuffer{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_buffer".}
+proc scroll_to_iter*(text_view: PTextView, iter: PTextIter, 
+                               within_margin: gdouble, use_align: gboolean, 
+                               xalign: gdouble, yalign: gdouble): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_scroll_to_iter".}
+proc scroll_to_mark*(text_view: PTextView, mark: PTextMark, 
+                               within_margin: gdouble, use_align: gboolean, 
+                               xalign: gdouble, yalign: gdouble){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_scroll_to_mark".}
+proc scroll_mark_onscreen*(text_view: PTextView, mark: PTextMark){.
+    cdecl, dynlib: lib, importc: "gtk_text_view_scroll_mark_onscreen".}
+proc move_mark_onscreen*(text_view: PTextView, mark: PTextMark): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_move_mark_onscreen".}
+proc place_cursor_onscreen*(text_view: PTextView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_place_cursor_onscreen".}
+proc get_visible_rect*(text_view: PTextView, 
+                                 visible_rect: gdk2.PRectangle){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_visible_rect".}
+proc set_cursor_visible*(text_view: PTextView, setting: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_text_view_set_cursor_visible".}
+proc get_cursor_visible*(text_view: PTextView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_cursor_visible".}
+proc get_iter_location*(text_view: PTextView, iter: PTextIter, 
+                                  location: gdk2.PRectangle){.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_get_iter_location".}
+proc get_iter_at_location*(text_view: PTextView, iter: PTextIter, 
+                                     x: gint, y: gint){.cdecl, dynlib: lib, 
     importc: "gtk_text_view_get_iter_at_location".}
-proc gtk_text_view_get_line_yrange*(text_view: PGtkTextView, iter: PGtkTextIter,
-                                    y: Pgint, height: Pgint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_line_yrange".}
-proc gtk_text_view_get_line_at_y*(text_view: PGtkTextView,
-                                  target_iter: PGtkTextIter, y: gint,
-                                  line_top: Pgint){.cdecl, dynlib: gtklib,
+proc get_line_yrange*(text_view: PTextView, iter: PTextIter, y: Pgint, 
+                                height: Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_get_line_yrange".}
+proc get_line_at_y*(text_view: PTextView, target_iter: PTextIter, 
+                              y: gint, line_top: Pgint){.cdecl, dynlib: lib, 
     importc: "gtk_text_view_get_line_at_y".}
-proc gtk_text_view_buffer_to_window_coords*(text_view: PGtkTextView,
-    win: TGtkTextWindowType, buffer_x: gint, buffer_y: gint, window_x: Pgint,
-    window_y: Pgint){.cdecl, dynlib: gtklib,
-                      importc: "gtk_text_view_buffer_to_window_coords".}
-proc gtk_text_view_window_to_buffer_coords*(text_view: PGtkTextView,
-    win: TGtkTextWindowType, window_x: gint, window_y: gint, buffer_x: Pgint,
-    buffer_y: Pgint){.cdecl, dynlib: gtklib,
-                      importc: "gtk_text_view_window_to_buffer_coords".}
-proc gtk_text_view_get_window*(text_view: PGtkTextView, win: TGtkTextWindowType): PGdkWindow{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_window".}
-proc gtk_text_view_get_window_type*(text_view: PGtkTextView, window: PGdkWindow): TGtkTextWindowType{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_window_type".}
-proc gtk_text_view_set_border_window_size*(text_view: PGtkTextView,
-    thetype: TGtkTextWindowType, size: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_view_set_border_window_size".}
-proc gtk_text_view_get_border_window_size*(text_view: PGtkTextView,
-    thetype: TGtkTextWindowType): gint{.cdecl, dynlib: gtklib, importc: "gtk_text_view_get_border_window_size".}
-proc gtk_text_view_forward_display_line*(text_view: PGtkTextView,
-    iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_view_forward_display_line".}
-proc gtk_text_view_backward_display_line*(text_view: PGtkTextView,
-    iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_view_backward_display_line".}
-proc gtk_text_view_forward_display_line_end*(text_view: PGtkTextView,
-    iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_view_forward_display_line_end".}
-proc gtk_text_view_backward_display_line_start*(text_view: PGtkTextView,
-    iter: PGtkTextIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_text_view_backward_display_line_start".}
-proc gtk_text_view_starts_display_line*(text_view: PGtkTextView,
-                                        iter: PGtkTextIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_starts_display_line".}
-proc gtk_text_view_move_visually*(text_view: PGtkTextView, iter: PGtkTextIter,
-                                  count: gint): gboolean{.cdecl, dynlib: gtklib,
-    importc: "gtk_text_view_move_visually".}
-proc gtk_text_view_add_child_at_anchor*(text_view: PGtkTextView,
-                                        child: PGtkWidget,
-                                        anchor: PGtkTextChildAnchor){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_add_child_at_anchor".}
-proc gtk_text_view_add_child_in_window*(text_view: PGtkTextView,
-                                        child: PGtkWidget,
-                                        which_window: TGtkTextWindowType,
-                                        xpos: gint, ypos: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_add_child_in_window".}
-proc gtk_text_view_move_child*(text_view: PGtkTextView, child: PGtkWidget,
-                               xpos: gint, ypos: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_text_view_move_child".}
-proc gtk_text_view_set_wrap_mode*(text_view: PGtkTextView,
-                                  wrap_mode: TGtkWrapMode){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_set_wrap_mode".}
-proc gtk_text_view_get_wrap_mode*(text_view: PGtkTextView): TGtkWrapMode{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_wrap_mode".}
-proc gtk_text_view_set_editable*(text_view: PGtkTextView, setting: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_set_editable".}
-proc gtk_text_view_get_editable*(text_view: PGtkTextView): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_editable".}
-proc gtk_text_view_set_pixels_above_lines*(text_view: PGtkTextView,
-    pixels_above_lines: gint){.cdecl, dynlib: gtklib,
-                               importc: "gtk_text_view_set_pixels_above_lines".}
-proc gtk_text_view_get_pixels_above_lines*(text_view: PGtkTextView): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_pixels_above_lines".}
-proc gtk_text_view_set_pixels_below_lines*(text_view: PGtkTextView,
-    pixels_below_lines: gint){.cdecl, dynlib: gtklib,
-                               importc: "gtk_text_view_set_pixels_below_lines".}
-proc gtk_text_view_get_pixels_below_lines*(text_view: PGtkTextView): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_pixels_below_lines".}
-proc gtk_text_view_set_pixels_inside_wrap*(text_view: PGtkTextView,
-    pixels_inside_wrap: gint){.cdecl, dynlib: gtklib,
-                               importc: "gtk_text_view_set_pixels_inside_wrap".}
-proc gtk_text_view_get_pixels_inside_wrap*(text_view: PGtkTextView): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_pixels_inside_wrap".}
-proc gtk_text_view_set_justification*(text_view: PGtkTextView,
-                                      justification: TGtkJustification){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_set_justification".}
-proc gtk_text_view_get_justification*(text_view: PGtkTextView): TGtkJustification{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_justification".}
-proc gtk_text_view_set_left_margin*(text_view: PGtkTextView, left_margin: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_set_left_margin".}
-proc gtk_text_view_get_left_margin*(text_view: PGtkTextView): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_left_margin".}
-proc gtk_text_view_set_right_margin*(text_view: PGtkTextView, right_margin: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_set_right_margin".}
-proc gtk_text_view_get_right_margin*(text_view: PGtkTextView): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_right_margin".}
-proc gtk_text_view_set_indent*(text_view: PGtkTextView, indent: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_set_indent".}
-proc gtk_text_view_get_indent*(text_view: PGtkTextView): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_indent".}
-proc gtk_text_view_set_tabs*(text_view: PGtkTextView, tabs: PPangoTabArray){.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_set_tabs".}
-proc gtk_text_view_get_tabs*(text_view: PGtkTextView): PPangoTabArray{.cdecl,
-    dynlib: gtklib, importc: "gtk_text_view_get_tabs".}
-proc gtk_text_view_get_default_attributes*(text_view: PGtkTextView): PGtkTextAttributes{.
-    cdecl, dynlib: gtklib, importc: "gtk_text_view_get_default_attributes".}
-const
-  bm_TGtkTipsQuery_emit_always* = 0x00000001'i16
+proc buffer_to_window_coords*(text_view: PTextView, 
+                                        win: TTextWindowType, buffer_x: gint, 
+                                        buffer_y: gint, window_x: Pgint, 
+                                        window_y: Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_buffer_to_window_coords".}
+proc window_to_buffer_coords*(text_view: PTextView, 
+                                        win: TTextWindowType, window_x: gint, 
+                                        window_y: gint, buffer_x: Pgint, 
+                                        buffer_y: Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_window_to_buffer_coords".}
+proc get_window*(text_view: PTextView, win: TTextWindowType): gdk2.PWindow{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_get_window".}
+proc get_window_type*(text_view: PTextView, window: gdk2.PWindow): TTextWindowType{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_get_window_type".}
+proc set_border_window_size*(text_view: PTextView, 
+                                       thetype: TTextWindowType, size: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_view_set_border_window_size".}
+proc get_border_window_size*(text_view: PTextView, 
+                                       thetype: TTextWindowType): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_border_window_size".}
+proc forward_display_line*(text_view: PTextView, iter: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_forward_display_line".}
+proc backward_display_line*(text_view: PTextView, iter: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_backward_display_line".}
+proc forward_display_line_end*(text_view: PTextView, iter: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_forward_display_line_end".}
+proc backward_display_line_start*(text_view: PTextView, 
+    iter: PTextIter): gboolean{.cdecl, dynlib: lib, importc: "gtk_text_view_backward_display_line_start".}
+proc starts_display_line*(text_view: PTextView, iter: PTextIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_starts_display_line".}
+proc move_visually*(text_view: PTextView, iter: PTextIter, count: gint): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_move_visually".}
+proc add_child_at_anchor*(text_view: PTextView, child: PWidget, 
+                                    anchor: PTextChildAnchor){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_add_child_at_anchor".}
+proc add_child_in_window*(text_view: PTextView, child: PWidget, 
+                                    which_window: TTextWindowType, xpos: gint, 
+                                    ypos: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_add_child_in_window".}
+proc move_child*(text_view: PTextView, child: PWidget, xpos: gint, 
+                           ypos: gint){.cdecl, dynlib: lib, 
+                                        importc: "gtk_text_view_move_child".}
+proc set_wrap_mode*(text_view: PTextView, wrap_mode: TWrapMode){.
+    cdecl, dynlib: lib, importc: "gtk_text_view_set_wrap_mode".}
+proc get_wrap_mode*(text_view: PTextView): TWrapMode{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_wrap_mode".}
+proc set_editable*(text_view: PTextView, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_editable".}
+proc get_editable*(text_view: PTextView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_editable".}
+proc set_pixels_above_lines*(text_view: PTextView, 
+                                       pixels_above_lines: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_pixels_above_lines".}
+proc get_pixels_above_lines*(text_view: PTextView): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_pixels_above_lines".}
+proc set_pixels_below_lines*(text_view: PTextView, 
+                                       pixels_below_lines: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_pixels_below_lines".}
+proc get_pixels_below_lines*(text_view: PTextView): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_pixels_below_lines".}
+proc set_pixels_inside_wrap*(text_view: PTextView, 
+                                       pixels_inside_wrap: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_pixels_inside_wrap".}
+proc get_pixels_inside_wrap*(text_view: PTextView): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_pixels_inside_wrap".}
+proc set_justification*(text_view: PTextView, 
+                                  justification: TJustification){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_justification".}
+proc get_justification*(text_view: PTextView): TJustification{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_justification".}
+proc set_left_margin*(text_view: PTextView, left_margin: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_left_margin".}
+proc get_left_margin*(text_view: PTextView): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_get_left_margin".}
+proc set_right_margin*(text_view: PTextView, right_margin: gint){.
+    cdecl, dynlib: lib, importc: "gtk_text_view_set_right_margin".}
+proc get_right_margin*(text_view: PTextView): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_right_margin".}
+proc set_indent*(text_view: PTextView, indent: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_indent".}
+proc get_indent*(text_view: PTextView): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_text_view_get_indent".}
+proc set_tabs*(text_view: PTextView, tabs: pango.PTabArray){.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_set_tabs".}
+proc get_tabs*(text_view: PTextView): pango.PTabArray{.cdecl, 
+    dynlib: lib, importc: "gtk_text_view_get_tabs".}
+proc get_default_attributes*(text_view: PTextView): PTextAttributes{.
+    cdecl, dynlib: lib, importc: "gtk_text_view_get_default_attributes".}
+const 
+  bm_TGtkTipsQuery_emit_always* = 0x0001'i16
   bp_TGtkTipsQuery_emit_always* = 0'i16
-  bm_TGtkTipsQuery_in_query* = 0x00000002'i16
+  bm_TGtkTipsQuery_in_query* = 0x0002'i16
   bp_TGtkTipsQuery_in_query* = 1'i16
 
-proc GTK_TYPE_TIPS_QUERY*(): GType
-proc GTK_TIPS_QUERY*(obj: pointer): PGtkTipsQuery
-proc GTK_TIPS_QUERY_CLASS*(klass: pointer): PGtkTipsQueryClass
-proc GTK_IS_TIPS_QUERY*(obj: pointer): bool
-proc GTK_IS_TIPS_QUERY_CLASS*(klass: pointer): bool
-proc GTK_TIPS_QUERY_GET_CLASS*(obj: pointer): PGtkTipsQueryClass
-proc emit_always*(a: var TGtkTipsQuery): guint
-proc set_emit_always*(a: var TGtkTipsQuery, `emit_always`: guint)
-proc in_query*(a: var TGtkTipsQuery): guint
-proc set_in_query*(a: var TGtkTipsQuery, `in_query`: guint)
-proc gtk_tips_query_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tips_query_get_type".}
-proc gtk_tips_query_new*(): PGtkTipsQuery{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_tips_query_new".}
-proc gtk_tips_query_start_query*(tips_query: PGtkTipsQuery){.cdecl,
-    dynlib: gtklib, importc: "gtk_tips_query_start_query".}
-proc gtk_tips_query_stop_query*(tips_query: PGtkTipsQuery){.cdecl,
-    dynlib: gtklib, importc: "gtk_tips_query_stop_query".}
-proc gtk_tips_query_set_caller*(tips_query: PGtkTipsQuery, caller: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_tips_query_set_caller".}
-proc gtk_tips_query_set_labels*(tips_query: PGtkTipsQuery,
-                                label_inactive: cstring, label_no_tip: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_tips_query_set_labels".}
-const
+proc TYPE_TIPS_QUERY*(): GType
+proc TIPS_QUERY*(obj: pointer): PTipsQuery
+proc TIPS_QUERY_CLASS*(klass: pointer): PTipsQueryClass
+proc IS_TIPS_QUERY*(obj: pointer): bool
+proc IS_TIPS_QUERY_CLASS*(klass: pointer): bool
+proc TIPS_QUERY_GET_CLASS*(obj: pointer): PTipsQueryClass
+proc emit_always*(a: var TTipsQuery): guint
+proc set_emit_always*(a: var TTipsQuery, `emit_always`: guint)
+proc in_query*(a: var TTipsQuery): guint
+proc set_in_query*(a: var TTipsQuery, `in_query`: guint)
+proc tips_query_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_tips_query_get_type".}
+proc tips_query_new*(): PTipsQuery{.cdecl, dynlib: lib, 
+                                    importc: "gtk_tips_query_new".}
+proc start_query*(tips_query: PTipsQuery){.cdecl, dynlib: lib, 
+    importc: "gtk_tips_query_start_query".}
+proc stop_query*(tips_query: PTipsQuery){.cdecl, dynlib: lib, 
+    importc: "gtk_tips_query_stop_query".}
+proc set_caller*(tips_query: PTipsQuery, caller: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_tips_query_set_caller".}
+proc set_labels*(tips_query: PTipsQuery, label_inactive: cstring, 
+                            label_no_tip: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_tips_query_set_labels".}
+const 
   bm_TGtkTooltips_delay* = 0x3FFFFFFF'i32
   bp_TGtkTooltips_delay* = 0'i32
   bm_TGtkTooltips_enabled* = 0x40000000'i32
@@ -10246,7026 +9858,7030 @@ const
   bm_TGtkTooltips_use_sticky_delay* = 0x00000001'i32
   bp_TGtkTooltips_use_sticky_delay* = 0'i32
 
-proc GTK_TYPE_TOOLTIPS*(): GType
-proc GTK_TOOLTIPS*(obj: pointer): PGtkTooltips
-proc GTK_TOOLTIPS_CLASS*(klass: pointer): PGtkTooltipsClass
-proc GTK_IS_TOOLTIPS*(obj: pointer): bool
-proc GTK_IS_TOOLTIPS_CLASS*(klass: pointer): bool
-proc GTK_TOOLTIPS_GET_CLASS*(obj: pointer): PGtkTooltipsClass
-proc delay*(a: var TGtkTooltips): guint
-proc set_delay*(a: var TGtkTooltips, `delay`: guint)
-proc enabled*(a: var TGtkTooltips): guint
-proc set_enabled*(a: var TGtkTooltips, `enabled`: guint)
-proc have_grab*(a: var TGtkTooltips): guint
-proc set_have_grab*(a: var TGtkTooltips, `have_grab`: guint)
-proc use_sticky_delay*(a: var TGtkTooltips): guint
-proc set_use_sticky_delay*(a: var TGtkTooltips, `use_sticky_delay`: guint)
-proc gtk_tooltips_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tooltips_get_type".}
-proc gtk_tooltips_new*(): PGtkTooltips{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_tooltips_new".}
-proc gtk_tooltips_enable*(tooltips: PGtkTooltips){.cdecl, dynlib: gtklib,
+proc TYPE_TOOLTIPS*(): GType
+proc TOOLTIPS*(obj: pointer): PTooltips
+proc TOOLTIPS_CLASS*(klass: pointer): PTooltipsClass
+proc IS_TOOLTIPS*(obj: pointer): bool
+proc IS_TOOLTIPS_CLASS*(klass: pointer): bool
+proc TOOLTIPS_GET_CLASS*(obj: pointer): PTooltipsClass
+proc delay*(a: var TTooltips): guint
+proc set_delay*(a: var TTooltips, `delay`: guint)
+proc enabled*(a: var TTooltips): guint
+proc set_enabled*(a: var TTooltips, `enabled`: guint)
+proc have_grab*(a: var TTooltips): guint
+proc set_have_grab*(a: var TTooltips, `have_grab`: guint)
+proc use_sticky_delay*(a: var TTooltips): guint
+proc set_use_sticky_delay*(a: var TTooltips, `use_sticky_delay`: guint)
+proc tooltips_get_type*(): TType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_tooltips_get_type".}
+proc tooltips_new*(): PTooltips{.cdecl, dynlib: lib, importc: "gtk_tooltips_new".}
+proc enable*(tooltips: PTooltips){.cdecl, dynlib: lib, 
     importc: "gtk_tooltips_enable".}
-proc gtk_tooltips_disable*(tooltips: PGtkTooltips){.cdecl, dynlib: gtklib,
+proc disable*(tooltips: PTooltips){.cdecl, dynlib: lib, 
     importc: "gtk_tooltips_disable".}
-proc gtk_tooltips_set_tip*(tooltips: PGtkTooltips, widget: PGtkWidget,
-                           tip_text: cstring, tip_private: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_tooltips_set_tip".}
-proc gtk_tooltips_data_get*(widget: PGtkWidget): PGtkTooltipsData{.cdecl,
-    dynlib: gtklib, importc: "gtk_tooltips_data_get".}
-proc gtk_tooltips_force_window*(tooltips: PGtkTooltips){.cdecl, dynlib: gtklib,
+proc set_tip*(tooltips: PTooltips, widget: PWidget, tip_text: cstring, 
+                       tip_private: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_tooltips_set_tip".}
+proc tooltips_data_get*(widget: PWidget): PTooltipsData{.cdecl, dynlib: lib, 
+    importc: "gtk_tooltips_data_get".}
+proc force_window*(tooltips: PTooltips){.cdecl, dynlib: lib, 
     importc: "gtk_tooltips_force_window".}
-proc gtk_tooltips_toggle_keyboard_mode*(widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tooltips_toggle_keyboard_mode".}
-const
-  bm_TGtkToolbar_style_set* = 0x00000001'i16
+proc tooltips_toggle_keyboard_mode*(widget: PWidget){.cdecl, dynlib: lib, 
+    importc: "_gtk_tooltips_toggle_keyboard_mode".}
+const 
+  bm_TGtkToolbar_style_set* = 0x0001'i16
   bp_TGtkToolbar_style_set* = 0'i16
-  bm_TGtkToolbar_icon_size_set* = 0x00000002'i16
+  bm_TGtkToolbar_icon_size_set* = 0x0002'i16
   bp_TGtkToolbar_icon_size_set* = 1'i16
 
-proc GTK_TYPE_TOOLBAR*(): GType
-proc GTK_TOOLBAR*(obj: pointer): PGtkToolbar
-proc GTK_TOOLBAR_CLASS*(klass: pointer): PGtkToolbarClass
-proc GTK_IS_TOOLBAR*(obj: pointer): bool
-proc GTK_IS_TOOLBAR_CLASS*(klass: pointer): bool
-proc GTK_TOOLBAR_GET_CLASS*(obj: pointer): PGtkToolbarClass
-proc style_set*(a: var TGtkToolbar): guint
-proc set_style_set*(a: var TGtkToolbar, `style_set`: guint)
-proc icon_size_set*(a: var TGtkToolbar): guint
-proc set_icon_size_set*(a: var TGtkToolbar, `icon_size_set`: guint)
-proc gtk_toolbar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_toolbar_get_type".}
-proc gtk_toolbar_new*(): PGtkToolbar{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_toolbar_new".}
-proc gtk_toolbar_append_item*(toolbar: PGtkToolbar, text: cstring,
-                              tooltip_text: cstring,
-                              tooltip_private_text: cstring, icon: PGtkWidget,
-                              callback: TGtkSignalFunc, user_data: gpointer): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_toolbar_append_item".}
-proc gtk_toolbar_prepend_item*(toolbar: PGtkToolbar, text: cstring,
-                               tooltip_text: cstring,
-                               tooltip_private_text: cstring, icon: PGtkWidget,
-                               callback: TGtkSignalFunc, user_data: gpointer): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_toolbar_prepend_item".}
-proc gtk_toolbar_insert_item*(toolbar: PGtkToolbar, text: cstring,
-                              tooltip_text: cstring,
-                              tooltip_private_text: cstring, icon: PGtkWidget,
-                              callback: TGtkSignalFunc, user_data: gpointer,
-                              position: gint): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_insert_item".}
-proc gtk_toolbar_insert_stock*(toolbar: PGtkToolbar, stock_id: cstring,
-                               tooltip_text: cstring,
-                               tooltip_private_text: cstring,
-                               callback: TGtkSignalFunc, user_data: gpointer,
-                               position: gint): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_insert_stock".}
-proc gtk_toolbar_append_space*(toolbar: PGtkToolbar){.cdecl, dynlib: gtklib,
+proc TYPE_TOOLBAR*(): GType
+proc TOOLBAR*(obj: pointer): PToolbar
+proc TOOLBAR_CLASS*(klass: pointer): PToolbarClass
+proc IS_TOOLBAR*(obj: pointer): bool
+proc IS_TOOLBAR_CLASS*(klass: pointer): bool
+proc TOOLBAR_GET_CLASS*(obj: pointer): PToolbarClass
+proc style_set*(a: var TToolbar): guint
+proc set_style_set*(a: var TToolbar, `style_set`: guint)
+proc icon_size_set*(a: var TToolbar): guint
+proc set_icon_size_set*(a: var TToolbar, `icon_size_set`: guint)
+proc toolbar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                 importc: "gtk_toolbar_get_type".}
+proc toolbar_new*(): PToolbar{.cdecl, dynlib: lib, importc: "gtk_toolbar_new".}
+proc append_item*(toolbar: PToolbar, text: cstring, 
+                          tooltip_text: cstring, tooltip_private_text: cstring, 
+                          icon: PWidget, callback: TSignalFunc, 
+                          user_data: gpointer): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_append_item".}
+proc prepend_item*(toolbar: PToolbar, text: cstring, 
+                           tooltip_text: cstring, tooltip_private_text: cstring, 
+                           icon: PWidget, callback: TSignalFunc, 
+                           user_data: gpointer): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_prepend_item".}
+proc insert_item*(toolbar: PToolbar, text: cstring, 
+                          tooltip_text: cstring, tooltip_private_text: cstring, 
+                          icon: PWidget, callback: TSignalFunc, 
+                          user_data: gpointer, position: gint): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_insert_item".}
+proc insert_stock*(toolbar: PToolbar, stock_id: cstring, 
+                           tooltip_text: cstring, tooltip_private_text: cstring, 
+                           callback: TSignalFunc, user_data: gpointer, 
+                           position: gint): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_insert_stock".}
+proc append_space*(toolbar: PToolbar){.cdecl, dynlib: lib, 
     importc: "gtk_toolbar_append_space".}
-proc gtk_toolbar_prepend_space*(toolbar: PGtkToolbar){.cdecl, dynlib: gtklib,
+proc prepend_space*(toolbar: PToolbar){.cdecl, dynlib: lib, 
     importc: "gtk_toolbar_prepend_space".}
-proc gtk_toolbar_insert_space*(toolbar: PGtkToolbar, position: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_insert_space".}
-proc gtk_toolbar_remove_space*(toolbar: PGtkToolbar, position: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_remove_space".}
-proc gtk_toolbar_append_element*(toolbar: PGtkToolbar,
-                                 thetype: TGtkToolbarChildType,
-                                 widget: PGtkWidget, text: cstring,
-                                 tooltip_text: cstring,
-                                 tooltip_private_text: cstring,
-                                 icon: PGtkWidget, callback: TGtkSignalFunc,
-                                 user_data: gpointer): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_append_element".}
-proc gtk_toolbar_prepend_element*(toolbar: PGtkToolbar,
-                                  thetype: TGtkToolbarChildType,
-                                  widget: PGtkWidget, text: cstring,
-                                  tooltip_text: cstring,
-                                  tooltip_private_text: cstring,
-                                  icon: PGtkWidget, callback: TGtkSignalFunc,
-                                  user_data: gpointer): PGtkWidget{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_prepend_element".}
-proc gtk_toolbar_insert_element*(toolbar: PGtkToolbar,
-                                 thetype: TGtkToolbarChildType,
-                                 widget: PGtkWidget, text: cstring,
-                                 tooltip_text: cstring,
-                                 tooltip_private_text: cstring,
-                                 icon: PGtkWidget, callback: TGtkSignalFunc,
-                                 user_data: gpointer, position: gint): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_toolbar_insert_element".}
-proc gtk_toolbar_append_widget*(toolbar: PGtkToolbar, widget: PGtkWidget,
-                                tooltip_text: cstring,
-                                tooltip_private_text: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_append_widget".}
-proc gtk_toolbar_prepend_widget*(toolbar: PGtkToolbar, widget: PGtkWidget,
-                                 tooltip_text: cstring,
-                                 tooltip_private_text: cstring){.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_prepend_widget".}
-proc gtk_toolbar_insert_widget*(toolbar: PGtkToolbar, widget: PGtkWidget,
-                                tooltip_text: cstring,
-                                tooltip_private_text: cstring, position: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_toolbar_insert_widget".}
-proc gtk_toolbar_set_orientation*(toolbar: PGtkToolbar,
-                                  orientation: TGtkOrientation){.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_set_orientation".}
-proc gtk_toolbar_set_style*(toolbar: PGtkToolbar, style: TGtkToolbarStyle){.
-    cdecl, dynlib: gtklib, importc: "gtk_toolbar_set_style".}
-proc gtk_toolbar_set_icon_size*(toolbar: PGtkToolbar, icon_size: TGtkIconSize){.
-    cdecl, dynlib: gtklib, importc: "gtk_toolbar_set_icon_size".}
-proc gtk_toolbar_set_tooltips*(toolbar: PGtkToolbar, enable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_set_tooltips".}
-proc gtk_toolbar_unset_style*(toolbar: PGtkToolbar){.cdecl, dynlib: gtklib,
+proc insert_space*(toolbar: PToolbar, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_insert_space".}
+proc remove_space*(toolbar: PToolbar, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_remove_space".}
+proc append_element*(toolbar: PToolbar, thetype: TToolbarChildType, 
+                             widget: PWidget, text: cstring, 
+                             tooltip_text: cstring, 
+                             tooltip_private_text: cstring, icon: PWidget, 
+                             callback: TSignalFunc, user_data: gpointer): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_toolbar_append_element".}
+proc prepend_element*(toolbar: PToolbar, thetype: TToolbarChildType, 
+                              widget: PWidget, text: cstring, 
+                              tooltip_text: cstring, 
+                              tooltip_private_text: cstring, icon: PWidget, 
+                              callback: TSignalFunc, user_data: gpointer): PWidget{.
+    cdecl, dynlib: lib, importc: "gtk_toolbar_prepend_element".}
+proc insert_element*(toolbar: PToolbar, thetype: TToolbarChildType, 
+                             widget: PWidget, text: cstring, 
+                             tooltip_text: cstring, 
+                             tooltip_private_text: cstring, icon: PWidget, 
+                             callback: TSignalFunc, user_data: gpointer, 
+                             position: gint): PWidget{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_insert_element".}
+proc append_widget*(toolbar: PToolbar, widget: PWidget, 
+                            tooltip_text: cstring, tooltip_private_text: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_toolbar_append_widget".}
+proc prepend_widget*(toolbar: PToolbar, widget: PWidget, 
+                             tooltip_text: cstring, 
+                             tooltip_private_text: cstring){.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_prepend_widget".}
+proc insert_widget*(toolbar: PToolbar, widget: PWidget, 
+                            tooltip_text: cstring, 
+                            tooltip_private_text: cstring, position: gint){.
+    cdecl, dynlib: lib, importc: "gtk_toolbar_insert_widget".}
+proc set_orientation*(toolbar: PToolbar, orientation: TOrientation){.
+    cdecl, dynlib: lib, importc: "gtk_toolbar_set_orientation".}
+proc set_style*(toolbar: PToolbar, style: TToolbarStyle){.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_set_style".}
+proc set_icon_size*(toolbar: PToolbar, icon_size: TIconSize){.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_set_icon_size".}
+proc set_tooltips*(toolbar: PToolbar, enable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_set_tooltips".}
+proc unset_style*(toolbar: PToolbar){.cdecl, dynlib: lib, 
     importc: "gtk_toolbar_unset_style".}
-proc gtk_toolbar_unset_icon_size*(toolbar: PGtkToolbar){.cdecl, dynlib: gtklib,
+proc unset_icon_size*(toolbar: PToolbar){.cdecl, dynlib: lib, 
     importc: "gtk_toolbar_unset_icon_size".}
-proc gtk_toolbar_get_orientation*(toolbar: PGtkToolbar): TGtkOrientation{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_get_orientation".}
-proc gtk_toolbar_get_style*(toolbar: PGtkToolbar): TGtkToolbarStyle{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_get_style".}
-proc gtk_toolbar_get_icon_size*(toolbar: PGtkToolbar): TGtkIconSize{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_get_icon_size".}
-proc gtk_toolbar_get_tooltips*(toolbar: PGtkToolbar): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_toolbar_get_tooltips".}
-const
-  bm_TGtkTree_selection_mode* = 0x00000003'i16
+proc get_orientation*(toolbar: PToolbar): TOrientation{.cdecl, 
+    dynlib: lib, importc: "gtk_toolbar_get_orientation".}
+proc get_style*(toolbar: PToolbar): TToolbarStyle{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_get_style".}
+proc get_icon_size*(toolbar: PToolbar): TIconSize{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_get_icon_size".}
+proc get_tooltips*(toolbar: PToolbar): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_toolbar_get_tooltips".}
+const 
+  bm_TGtkTree_selection_mode* = 0x0003'i16
   bp_TGtkTree_selection_mode* = 0'i16
-  bm_TGtkTree_view_mode* = 0x00000004'i16
+  bm_TGtkTree_view_mode* = 0x0004'i16
   bp_TGtkTree_view_mode* = 2'i16
-  bm_TGtkTree_view_line* = 0x00000008'i16
+  bm_TGtkTree_view_line* = 0x0008'i16
   bp_TGtkTree_view_line* = 3'i16
 
-proc GTK_TYPE_TREE*(): GType
-proc GTK_TREE*(obj: pointer): PGtkTree
-proc GTK_TREE_CLASS*(klass: pointer): PGtkTreeClass
-proc GTK_IS_TREE*(obj: pointer): bool
-proc GTK_IS_TREE_CLASS*(klass: pointer): bool
-proc GTK_TREE_GET_CLASS*(obj: pointer): PGtkTreeClass
-proc GTK_IS_ROOT_TREE*(obj: pointer): bool
-proc GTK_TREE_ROOT_TREE*(obj: pointer): PGtkTree
-proc GTK_TREE_SELECTION_OLD*(obj: pointer): PGList
-proc selection_mode*(a: var TGtkTree): guint
-proc set_selection_mode*(a: var TGtkTree, `selection_mode`: guint)
-proc view_mode*(a: var TGtkTree): guint
-proc set_view_mode*(a: var TGtkTree, `view_mode`: guint)
-proc view_line*(a: var TGtkTree): guint
-proc set_view_line*(a: var TGtkTree, `view_line`: guint)
-proc gtk_tree_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                     importc: "gtk_tree_get_type".}
-proc gtk_tree_new*(): PGtkTree{.cdecl, dynlib: gtklib, importc: "gtk_tree_new".}
-proc gtk_tree_append*(tree: PGtkTree, tree_item: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_append".}
-proc gtk_tree_prepend*(tree: PGtkTree, tree_item: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_prepend".}
-proc gtk_tree_insert*(tree: PGtkTree, tree_item: PGtkWidget, position: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_insert".}
-proc gtk_tree_remove_items*(tree: PGtkTree, items: PGList){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_remove_items".}
-proc gtk_tree_clear_items*(tree: PGtkTree, start: gint, theEnd: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_clear_items".}
-proc gtk_tree_select_item*(tree: PGtkTree, item: gint){.cdecl, dynlib: gtklib,
+proc TYPE_TREE*(): GType
+proc TREE*(obj: pointer): PTree
+proc TREE_CLASS*(klass: pointer): PTreeClass
+proc IS_TREE*(obj: pointer): bool
+proc IS_TREE_CLASS*(klass: pointer): bool
+proc TREE_GET_CLASS*(obj: pointer): PTreeClass
+proc IS_ROOT_TREE*(obj: pointer): bool
+proc TREE_ROOT_TREE*(obj: pointer): PTree
+proc TREE_SELECTION_OLD*(obj: pointer): PGList
+proc selection_mode*(a: var TTree): guint
+proc set_selection_mode*(a: var TTree, `selection_mode`: guint)
+proc view_mode*(a: var TTree): guint
+proc set_view_mode*(a: var TTree, `view_mode`: guint)
+proc view_line*(a: var TTree): guint
+proc set_view_line*(a: var TTree, `view_line`: guint)
+proc tree_get_type*(): TType{.cdecl, dynlib: lib, importc: "gtk_tree_get_type".}
+proc tree_new*(): PTree{.cdecl, dynlib: lib, importc: "gtk_tree_new".}
+proc append*(tree: PTree, tree_item: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_append".}
+proc prepend*(tree: PTree, tree_item: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_prepend".}
+proc insert*(tree: PTree, tree_item: PWidget, position: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_insert".}
+proc remove_items*(tree: PTree, items: PGList){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_remove_items".}
+proc clear_items*(tree: PTree, start: gint, theEnd: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_clear_items".}
+proc select_item*(tree: PTree, item: gint){.cdecl, dynlib: lib, 
     importc: "gtk_tree_select_item".}
-proc gtk_tree_unselect_item*(tree: PGtkTree, item: gint){.cdecl, dynlib: gtklib,
+proc unselect_item*(tree: PTree, item: gint){.cdecl, dynlib: lib, 
     importc: "gtk_tree_unselect_item".}
-proc gtk_tree_select_child*(tree: PGtkTree, tree_item: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_select_child".}
-proc gtk_tree_unselect_child*(tree: PGtkTree, tree_item: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_unselect_child".}
-proc gtk_tree_child_position*(tree: PGtkTree, child: PGtkWidget): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_child_position".}
-proc gtk_tree_set_selection_mode*(tree: PGtkTree, mode: TGtkSelectionMode){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_set_selection_mode".}
-proc gtk_tree_set_view_mode*(tree: PGtkTree, mode: TGtkTreeViewMode){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_set_view_mode".}
-proc gtk_tree_set_view_lines*(tree: PGtkTree, flag: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_set_view_lines".}
-proc gtk_tree_remove_item*(tree: PGtkTree, child: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_remove_item".}
-proc GTK_TYPE_TREE_DRAG_SOURCE*(): GType
-proc GTK_TREE_DRAG_SOURCE*(obj: pointer): PGtkTreeDragSource
-proc GTK_IS_TREE_DRAG_SOURCE*(obj: pointer): bool
-proc GTK_TREE_DRAG_SOURCE_GET_IFACE*(obj: pointer): PGtkTreeDragSourceIface
-proc gtk_tree_drag_source_get_type*(): GType{.cdecl, dynlib: gtklib,
+proc select_child*(tree: PTree, tree_item: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_select_child".}
+proc unselect_child*(tree: PTree, tree_item: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_unselect_child".}
+proc child_position*(tree: PTree, child: PWidget): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_child_position".}
+proc set_selection_mode*(tree: PTree, mode: TSelectionMode){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_set_selection_mode".}
+proc set_view_mode*(tree: PTree, mode: TTreeViewMode){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_set_view_mode".}
+proc set_view_lines*(tree: PTree, flag: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_set_view_lines".}
+proc remove_item*(tree: PTree, child: PWidget){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_remove_item".}
+proc TYPE_TREE_DRAG_SOURCE*(): GType
+proc TREE_DRAG_SOURCE*(obj: pointer): PTreeDragSource
+proc IS_TREE_DRAG_SOURCE*(obj: pointer): bool
+proc TREE_DRAG_SOURCE_GET_IFACE*(obj: pointer): PTreeDragSourceIface
+proc tree_drag_source_get_type*(): GType{.cdecl, dynlib: lib, 
     importc: "gtk_tree_drag_source_get_type".}
-proc gtk_tree_drag_source_row_draggable*(drag_source: PGtkTreeDragSource,
-    path: PGtkTreePath): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_tree_drag_source_row_draggable".}
-proc gtk_tree_drag_source_drag_data_delete*(drag_source: PGtkTreeDragSource,
-    path: PGtkTreePath): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_tree_drag_source_drag_data_delete".}
-proc gtk_tree_drag_source_drag_data_get*(drag_source: PGtkTreeDragSource,
-    path: PGtkTreePath, selection_data: PGtkSelectionData): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_drag_source_drag_data_get".}
-proc GTK_TYPE_TREE_DRAG_DEST*(): GType
-proc GTK_TREE_DRAG_DEST*(obj: pointer): PGtkTreeDragDest
-proc GTK_IS_TREE_DRAG_DEST*(obj: pointer): bool
-proc GTK_TREE_DRAG_DEST_GET_IFACE*(obj: pointer): PGtkTreeDragDestIface
-proc gtk_tree_drag_dest_get_type*(): GType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_drag_dest_get_type".}
-proc gtk_tree_drag_dest_drag_data_received*(drag_dest: PGtkTreeDragDest,
-    dest: PGtkTreePath, selection_data: PGtkSelectionData): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_drag_dest_drag_data_received".}
-proc gtk_tree_drag_dest_row_drop_possible*(drag_dest: PGtkTreeDragDest,
-    dest_path: PGtkTreePath, selection_data: PGtkSelectionData): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_drag_dest_row_drop_possible".}
-proc gtk_tree_set_row_drag_data*(selection_data: PGtkSelectionData,
-                                 tree_model: PGtkTreeModel, path: PGtkTreePath): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_set_row_drag_data".}
-const
-  bm_TGtkTreeItem_expanded* = 0x00000001'i16
+proc source_row_draggable*(drag_source: PTreeDragSource, 
+                                     path: PTreePath): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_drag_source_row_draggable".}
+proc source_drag_data_delete*(drag_source: PTreeDragSource, 
+                                        path: PTreePath): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_drag_source_drag_data_delete".}
+proc source_drag_data_get*(drag_source: PTreeDragSource, 
+                                     path: PTreePath, 
+                                     selection_data: PSelectionData): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_drag_source_drag_data_get".}
+proc TYPE_TREE_DRAG_DEST*(): GType
+proc TREE_DRAG_DEST*(obj: pointer): PTreeDragDest
+proc IS_TREE_DRAG_DEST*(obj: pointer): bool
+proc TREE_DRAG_DEST_GET_IFACE*(obj: pointer): PTreeDragDestIface
+proc tree_drag_dest_get_type*(): GType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_tree_drag_dest_get_type".}
+proc dest_drag_data_received*(drag_dest: PTreeDragDest, 
+                                        dest: PTreePath, 
+                                        selection_data: PSelectionData): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_drag_dest_drag_data_received".}
+proc dest_row_drop_possible*(drag_dest: PTreeDragDest, 
+                                       dest_path: PTreePath, 
+                                       selection_data: PSelectionData): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_drag_dest_row_drop_possible".}
+proc tree_set_row_drag_data*(selection_data: PSelectionData, 
+                             tree_model: PTreeModel, path: PTreePath): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_set_row_drag_data".}
+const 
+  bm_TGtkTreeItem_expanded* = 0x0001'i16
   bp_TGtkTreeItem_expanded* = 0'i16
 
-proc GTK_TYPE_TREE_ITEM*(): GType
-proc GTK_TREE_ITEM*(obj: pointer): PGtkTreeItem
-proc GTK_TREE_ITEM_CLASS*(klass: pointer): PGtkTreeItemClass
-proc GTK_IS_TREE_ITEM*(obj: pointer): bool
-proc GTK_IS_TREE_ITEM_CLASS*(klass: pointer): bool
-proc GTK_TREE_ITEM_GET_CLASS*(obj: pointer): PGtkTreeItemClass
-proc GTK_TREE_ITEM_SUBTREE*(obj: pointer): PGtkWidget
-proc expanded*(a: var TGtkTreeItem): guint
-proc set_expanded*(a: var TGtkTreeItem, `expanded`: guint)
-proc gtk_tree_item_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_item_get_type".}
-proc gtk_tree_item_new*(): PGtkTreeItem{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_tree_item_new".}
-proc gtk_tree_item_new_with_label*(`label`: cstring): PGtkTreeItem{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_item_new_with_label".}
-proc gtk_tree_item_set_subtree*(tree_item: PGtkTreeItem, subtree: PGtkWidget){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_item_set_subtree".}
-proc gtk_tree_item_remove_subtree*(tree_item: PGtkTreeItem){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_item_remove_subtree".}
-proc gtk_tree_item_select*(tree_item: PGtkTreeItem){.cdecl, dynlib: gtklib,
+proc TYPE_TREE_ITEM*(): GType
+proc TREE_ITEM*(obj: pointer): PTreeItem
+proc TREE_ITEM_CLASS*(klass: pointer): PTreeItemClass
+proc IS_TREE_ITEM*(obj: pointer): bool
+proc IS_TREE_ITEM_CLASS*(klass: pointer): bool
+proc TREE_ITEM_GET_CLASS*(obj: pointer): PTreeItemClass
+proc TREE_ITEM_SUBTREE*(obj: pointer): PWidget
+proc expanded*(a: var TTreeItem): guint
+proc set_expanded*(a: var TTreeItem, `expanded`: guint)
+proc tree_item_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_tree_item_get_type".}
+proc tree_item_new*(): PTreeItem{.cdecl, dynlib: lib, 
+                                  importc: "gtk_tree_item_new".}
+proc tree_item_new_with_label*(`label`: cstring): PTreeItem{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_item_new_with_label".}
+proc set_subtree*(tree_item: PTreeItem, subtree: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_item_set_subtree".}
+proc remove_subtree*(tree_item: PTreeItem){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_item_remove_subtree".}
+proc select*(tree_item: PTreeItem){.cdecl, dynlib: lib, 
     importc: "gtk_tree_item_select".}
-proc gtk_tree_item_deselect*(tree_item: PGtkTreeItem){.cdecl, dynlib: gtklib,
+proc deselect*(tree_item: PTreeItem){.cdecl, dynlib: lib, 
     importc: "gtk_tree_item_deselect".}
-proc gtk_tree_item_expand*(tree_item: PGtkTreeItem){.cdecl, dynlib: gtklib,
+proc expand*(tree_item: PTreeItem){.cdecl, dynlib: lib, 
     importc: "gtk_tree_item_expand".}
-proc gtk_tree_item_collapse*(tree_item: PGtkTreeItem){.cdecl, dynlib: gtklib,
+proc collapse*(tree_item: PTreeItem){.cdecl, dynlib: lib, 
     importc: "gtk_tree_item_collapse".}
-proc GTK_TYPE_TREE_SELECTION*(): GType
-proc GTK_TREE_SELECTION*(obj: pointer): PGtkTreeSelection
-proc GTK_TREE_SELECTION_CLASS*(klass: pointer): PGtkTreeSelectionClass
-proc GTK_IS_TREE_SELECTION*(obj: pointer): bool
-proc GTK_IS_TREE_SELECTION_CLASS*(klass: pointer): bool
-proc GTK_TREE_SELECTION_GET_CLASS*(obj: pointer): PGtkTreeSelectionClass
-proc gtk_tree_selection_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_selection_get_type".}
-proc gtk_tree_selection_set_mode*(selection: PGtkTreeSelection,
-                                  thetype: TGtkSelectionMode){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_selection_set_mode".}
-proc gtk_tree_selection_get_mode*(selection: PGtkTreeSelection): TGtkSelectionMode{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_selection_get_mode".}
-proc gtk_tree_selection_set_select_function*(selection: PGtkTreeSelection,
-    fun: TGtkTreeSelectionFunc, data: gpointer, destroy: TGtkDestroyNotify){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_selection_set_select_function".}
-proc gtk_tree_selection_get_user_data*(selection: PGtkTreeSelection): gpointer{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_selection_get_user_data".}
-proc gtk_tree_selection_get_tree_view*(selection: PGtkTreeSelection): PGtkTreeView{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_selection_get_tree_view".}
-proc gtk_tree_selection_get_selected*(selection: PGtkTreeSelection,
-                                      model: PPGtkTreeModel, iter: PGtkTreeIter): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_selection_get_selected".}
-proc gtk_tree_selection_get_selected_rows*(selection: PGtkTreeSelection,
-    model: PPGtkTreeModel): PGList{.cdecl, dynlib: gtklib, importc: "gtk_tree_selection_get_selected_rows".}
-proc gtk_tree_selection_selected_foreach*(selection: PGtkTreeSelection,
-    fun: TGtkTreeSelectionForeachFunc, data: gpointer){.cdecl, dynlib: gtklib,
+proc TYPE_TREE_SELECTION*(): GType
+proc TREE_SELECTION*(obj: pointer): PTreeSelection
+proc TREE_SELECTION_CLASS*(klass: pointer): PTreeSelectionClass
+proc IS_TREE_SELECTION*(obj: pointer): bool
+proc IS_TREE_SELECTION_CLASS*(klass: pointer): bool
+proc TREE_SELECTION_GET_CLASS*(obj: pointer): PTreeSelectionClass
+proc tree_selection_get_type*(): TType{.cdecl, dynlib: lib, 
+                                        importc: "gtk_tree_selection_get_type".}
+proc set_mode*(selection: PTreeSelection, thetype: TSelectionMode){.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_set_mode".}
+proc get_mode*(selection: PTreeSelection): TSelectionMode{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_selection_get_mode".}
+proc set_select_function*(selection: PTreeSelection, 
+    fun: TTreeSelectionFunc, data: gpointer, destroy: TDestroyNotify){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_selection_set_select_function".}
+proc get_user_data*(selection: PTreeSelection): gpointer{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_selection_get_user_data".}
+proc get_tree_view*(selection: PTreeSelection): PTreeView{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_selection_get_tree_view".}
+proc get_selected*(selection: PTreeSelection, 
+                                  model: PPGtkTreeModel, iter: PTreeIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_get_selected".}
+proc get_selected_rows*(selection: PTreeSelection, 
+                                       model: PPGtkTreeModel): PGList{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_selection_get_selected_rows".}
+proc selected_foreach*(selection: PTreeSelection, 
+                                      fun: TTreeSelectionForeachFunc, 
+                                      data: gpointer){.cdecl, dynlib: lib, 
     importc: "gtk_tree_selection_selected_foreach".}
-proc gtk_tree_selection_select_path*(selection: PGtkTreeSelection,
-                                     path: PGtkTreePath){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_selection_select_path".}
-proc gtk_tree_selection_unselect_path*(selection: PGtkTreeSelection,
-                                       path: PGtkTreePath){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_selection_unselect_path".}
-proc gtk_tree_selection_select_iter*(selection: PGtkTreeSelection,
-                                     iter: PGtkTreeIter){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_selection_select_iter".}
-proc gtk_tree_selection_unselect_iter*(selection: PGtkTreeSelection,
-                                       iter: PGtkTreeIter){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_selection_unselect_iter".}
-proc gtk_tree_selection_path_is_selected*(selection: PGtkTreeSelection,
-    path: PGtkTreePath): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_tree_selection_path_is_selected".}
-proc gtk_tree_selection_iter_is_selected*(selection: PGtkTreeSelection,
-    iter: PGtkTreeIter): gboolean{.cdecl, dynlib: gtklib, importc: "gtk_tree_selection_iter_is_selected".}
-proc gtk_tree_selection_select_all*(selection: PGtkTreeSelection){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_selection_select_all".}
-proc gtk_tree_selection_unselect_all*(selection: PGtkTreeSelection){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_selection_unselect_all".}
-proc gtk_tree_selection_select_range*(selection: PGtkTreeSelection,
-                                      start_path: PGtkTreePath,
-                                      end_path: PGtkTreePath){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_selection_select_range".}
-const
-  bm_TGtkTreeStore_columns_dirty* = 0x00000001'i16
+proc select_path*(selection: PTreeSelection, path: PTreePath){.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_select_path".}
+proc unselect_path*(selection: PTreeSelection, path: PTreePath){.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_unselect_path".}
+proc select_iter*(selection: PTreeSelection, iter: PTreeIter){.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_select_iter".}
+proc unselect_iter*(selection: PTreeSelection, iter: PTreeIter){.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_unselect_iter".}
+proc path_is_selected*(selection: PTreeSelection, path: PTreePath): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_path_is_selected".}
+proc iter_is_selected*(selection: PTreeSelection, iter: PTreeIter): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_iter_is_selected".}
+proc select_all*(selection: PTreeSelection){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_selection_select_all".}
+proc unselect_all*(selection: PTreeSelection){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_selection_unselect_all".}
+proc select_range*(selection: PTreeSelection, 
+                                  start_path: PTreePath, end_path: PTreePath){.
+    cdecl, dynlib: lib, importc: "gtk_tree_selection_select_range".}
+const 
+  bm_TGtkTreeStore_columns_dirty* = 0x0001'i16
   bp_TGtkTreeStore_columns_dirty* = 0'i16
 
-proc GTK_TYPE_TREE_STORE*(): GType
-proc GTK_TREE_STORE*(obj: pointer): PGtkTreeStore
-proc GTK_TREE_STORE_CLASS*(klass: pointer): PGtkTreeStoreClass
-proc GTK_IS_TREE_STORE*(obj: pointer): bool
-proc GTK_IS_TREE_STORE_CLASS*(klass: pointer): bool
-proc GTK_TREE_STORE_GET_CLASS*(obj: pointer): PGtkTreeStoreClass
-proc columns_dirty*(a: var TGtkTreeStore): guint
-proc set_columns_dirty*(a: var TGtkTreeStore, `columns_dirty`: guint)
-proc gtk_tree_store_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_store_get_type".}
-proc gtk_tree_store_newv*(n_columns: gint, types: PGType): PGtkTreeStore{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_store_newv".}
-proc gtk_tree_store_set_column_types*(tree_store: PGtkTreeStore,
-                                      n_columns: gint, types: PGType){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_store_set_column_types".}
-proc gtk_tree_store_set_value*(tree_store: PGtkTreeStore, iter: PGtkTreeIter,
-                               column: gint, value: PGValue){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_store_set_value".}
-proc gtk_tree_store_remove*(tree_store: PGtkTreeStore, iter: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_store_remove".}
-proc gtk_tree_store_insert*(tree_store: PGtkTreeStore, iter: PGtkTreeIter,
-                            parent: PGtkTreeIter, position: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_store_insert".}
-proc gtk_tree_store_insert_before*(tree_store: PGtkTreeStore,
-                                   iter: PGtkTreeIter, parent: PGtkTreeIter,
-                                   sibling: PGtkTreeIter){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_store_insert_before".}
-proc gtk_tree_store_insert_after*(tree_store: PGtkTreeStore, iter: PGtkTreeIter,
-                                  parent: PGtkTreeIter, sibling: PGtkTreeIter){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_store_insert_after".}
-proc gtk_tree_store_prepend*(tree_store: PGtkTreeStore, iter: PGtkTreeIter,
-                             parent: PGtkTreeIter){.cdecl, dynlib: gtklib,
+proc TYPE_TREE_STORE*(): GType
+proc TREE_STORE*(obj: pointer): PTreeStore
+proc TREE_STORE_CLASS*(klass: pointer): PTreeStoreClass
+proc IS_TREE_STORE*(obj: pointer): bool
+proc IS_TREE_STORE_CLASS*(klass: pointer): bool
+proc TREE_STORE_GET_CLASS*(obj: pointer): PTreeStoreClass
+proc columns_dirty*(a: var TTreeStore): guint
+proc set_columns_dirty*(a: var TTreeStore, `columns_dirty`: guint)
+proc tree_store_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_tree_store_get_type".}
+proc tree_store_newv*(n_columns: gint, types: PGType): PTreeStore{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_store_newv".}
+proc set_column_types*(tree_store: PTreeStore, n_columns: gint, 
+                                  types: PGType){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_store_set_column_types".}
+proc set_value*(tree_store: PTreeStore, iter: PTreeIter, 
+                           column: gint, value: PGValue){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_store_set_value".}
+proc remove*(tree_store: PTreeStore, iter: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_store_remove".}
+proc insert*(tree_store: PTreeStore, iter: PTreeIter, 
+                        parent: PTreeIter, position: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_store_insert".}
+proc insert_before*(tree_store: PTreeStore, iter: PTreeIter, 
+                               parent: PTreeIter, sibling: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_store_insert_before".}
+proc insert_after*(tree_store: PTreeStore, iter: PTreeIter, 
+                              parent: PTreeIter, sibling: PTreeIter){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_store_insert_after".}
+proc prepend*(tree_store: PTreeStore, iter: PTreeIter, 
+                         parent: PTreeIter){.cdecl, dynlib: lib, 
     importc: "gtk_tree_store_prepend".}
-proc gtk_tree_store_append*(tree_store: PGtkTreeStore, iter: PGtkTreeIter,
-                            parent: PGtkTreeIter){.cdecl, dynlib: gtklib,
+proc append*(tree_store: PTreeStore, iter: PTreeIter, 
+                        parent: PTreeIter){.cdecl, dynlib: lib, 
     importc: "gtk_tree_store_append".}
-proc gtk_tree_store_is_ancestor*(tree_store: PGtkTreeStore, iter: PGtkTreeIter,
-                                 descendant: PGtkTreeIter): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_store_is_ancestor".}
-proc gtk_tree_store_iter_depth*(tree_store: PGtkTreeStore, iter: PGtkTreeIter): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_store_iter_depth".}
-proc gtk_tree_store_clear*(tree_store: PGtkTreeStore){.cdecl, dynlib: gtklib,
+proc is_ancestor*(tree_store: PTreeStore, iter: PTreeIter, 
+                             descendant: PTreeIter): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_store_is_ancestor".}
+proc iter_depth*(tree_store: PTreeStore, iter: PTreeIter): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_store_iter_depth".}
+proc clear*(tree_store: PTreeStore){.cdecl, dynlib: lib, 
     importc: "gtk_tree_store_clear".}
-const
-  bm_TGtkTreeViewColumn_visible* = 0x00000001'i16
+const 
+  bm_TGtkTreeViewColumn_visible* = 0x0001'i16
   bp_TGtkTreeViewColumn_visible* = 0'i16
-  bm_TGtkTreeViewColumn_resizable* = 0x00000002'i16
+  bm_TGtkTreeViewColumn_resizable* = 0x0002'i16
   bp_TGtkTreeViewColumn_resizable* = 1'i16
-  bm_TGtkTreeViewColumn_clickable* = 0x00000004'i16
+  bm_TGtkTreeViewColumn_clickable* = 0x0004'i16
   bp_TGtkTreeViewColumn_clickable* = 2'i16
-  bm_TGtkTreeViewColumn_dirty* = 0x00000008'i16
+  bm_TGtkTreeViewColumn_dirty* = 0x0008'i16
   bp_TGtkTreeViewColumn_dirty* = 3'i16
-  bm_TGtkTreeViewColumn_show_sort_indicator* = 0x00000010'i16
+  bm_TGtkTreeViewColumn_show_sort_indicator* = 0x0010'i16
   bp_TGtkTreeViewColumn_show_sort_indicator* = 4'i16
-  bm_TGtkTreeViewColumn_maybe_reordered* = 0x00000020'i16
+  bm_TGtkTreeViewColumn_maybe_reordered* = 0x0020'i16
   bp_TGtkTreeViewColumn_maybe_reordered* = 5'i16
-  bm_TGtkTreeViewColumn_reorderable* = 0x00000040'i16
+  bm_TGtkTreeViewColumn_reorderable* = 0x0040'i16
   bp_TGtkTreeViewColumn_reorderable* = 6'i16
-  bm_TGtkTreeViewColumn_use_resized_width* = 0x00000080'i16
+  bm_TGtkTreeViewColumn_use_resized_width* = 0x0080'i16
   bp_TGtkTreeViewColumn_use_resized_width* = 7'i16
 
-proc GTK_TYPE_TREE_VIEW_COLUMN*(): GType
-proc GTK_TREE_VIEW_COLUMN*(obj: pointer): PGtkTreeViewColumn
-proc GTK_TREE_VIEW_COLUMN_CLASS*(klass: pointer): PGtkTreeViewColumnClass
-proc GTK_IS_TREE_VIEW_COLUMN*(obj: pointer): bool
-proc GTK_IS_TREE_VIEW_COLUMN_CLASS*(klass: pointer): bool
-proc GTK_TREE_VIEW_COLUMN_GET_CLASS*(obj: pointer): PGtkTreeViewColumnClass
-proc visible*(a: var TGtkTreeViewColumn): guint
-proc set_visible*(a: var TGtkTreeViewColumn, `visible`: guint)
-proc resizable*(a: var TGtkTreeViewColumn): guint
-proc set_resizable*(a: var TGtkTreeViewColumn, `resizable`: guint)
-proc clickable*(a: var TGtkTreeViewColumn): guint
-proc set_clickable*(a: var TGtkTreeViewColumn, `clickable`: guint)
-proc dirty*(a: var TGtkTreeViewColumn): guint
-proc set_dirty*(a: var TGtkTreeViewColumn, `dirty`: guint)
-proc show_sort_indicator*(a: var TGtkTreeViewColumn): guint
-proc set_show_sort_indicator*(a: var TGtkTreeViewColumn,
+proc TYPE_TREE_VIEW_COLUMN*(): GType
+proc TREE_VIEW_COLUMN*(obj: pointer): PTreeViewColumn
+proc TREE_VIEW_COLUMN_CLASS*(klass: pointer): PTreeViewColumnClass
+proc IS_TREE_VIEW_COLUMN*(obj: pointer): bool
+proc IS_TREE_VIEW_COLUMN_CLASS*(klass: pointer): bool
+proc TREE_VIEW_COLUMN_GET_CLASS*(obj: pointer): PTreeViewColumnClass
+proc visible*(a: var TTreeViewColumn): guint
+proc set_visible*(a: var TTreeViewColumn, `visible`: guint)
+proc resizable*(a: var TTreeViewColumn): guint
+proc set_resizable*(a: var TTreeViewColumn, `resizable`: guint)
+proc clickable*(a: var TTreeViewColumn): guint
+proc set_clickable*(a: var TTreeViewColumn, `clickable`: guint)
+proc dirty*(a: var TTreeViewColumn): guint
+proc set_dirty*(a: var TTreeViewColumn, `dirty`: guint)
+proc show_sort_indicator*(a: var TTreeViewColumn): guint
+proc set_show_sort_indicator*(a: var TTreeViewColumn, 
                               `show_sort_indicator`: guint)
-proc maybe_reordered*(a: var TGtkTreeViewColumn): guint
-proc set_maybe_reordered*(a: var TGtkTreeViewColumn, `maybe_reordered`: guint)
-proc reorderable*(a: var TGtkTreeViewColumn): guint
-proc set_reorderable*(a: var TGtkTreeViewColumn, `reorderable`: guint)
-proc use_resized_width*(a: var TGtkTreeViewColumn): guint
-proc set_use_resized_width*(a: var TGtkTreeViewColumn,
-                            `use_resized_width`: guint)
-proc gtk_tree_view_column_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
+proc maybe_reordered*(a: var TTreeViewColumn): guint
+proc set_maybe_reordered*(a: var TTreeViewColumn, `maybe_reordered`: guint)
+proc reorderable*(a: var TTreeViewColumn): guint
+proc set_reorderable*(a: var TTreeViewColumn, `reorderable`: guint)
+proc use_resized_width*(a: var TTreeViewColumn): guint
+proc set_use_resized_width*(a: var TTreeViewColumn, `use_resized_width`: guint)
+proc tree_view_column_get_type*(): TType{.cdecl, dynlib: lib, 
     importc: "gtk_tree_view_column_get_type".}
-proc gtk_tree_view_column_new*(): PGtkTreeViewColumn{.cdecl, dynlib: gtklib,
+proc tree_view_column_new*(): PTreeViewColumn{.cdecl, dynlib: lib, 
     importc: "gtk_tree_view_column_new".}
-proc gtk_tree_view_column_pack_start*(tree_column: PGtkTreeViewColumn,
-                                      cell: PGtkCellRenderer, expand: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_pack_start".}
-proc gtk_tree_view_column_pack_end*(tree_column: PGtkTreeViewColumn,
-                                    cell: PGtkCellRenderer, expand: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_pack_end".}
-proc gtk_tree_view_column_clear*(tree_column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_clear".}
-proc gtk_tree_view_column_get_cell_renderers*(tree_column: PGtkTreeViewColumn): PGList{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_cell_renderers".}
-proc gtk_tree_view_column_add_attribute*(tree_column: PGtkTreeViewColumn,
-    cell_renderer: PGtkCellRenderer, attribute: cstring, column: gint){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_add_attribute".}
-proc gtk_tree_view_column_set_cell_data_func*(tree_column: PGtkTreeViewColumn,
-    cell_renderer: PGtkCellRenderer, fun: TGtkTreeCellDataFunc,
-    func_data: gpointer, destroy: TGtkDestroyNotify){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_column_set_cell_data_func".}
-proc gtk_tree_view_column_clear_attributes*(tree_column: PGtkTreeViewColumn,
-    cell_renderer: PGtkCellRenderer){.cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_clear_attributes".}
-proc gtk_tree_view_column_set_spacing*(tree_column: PGtkTreeViewColumn,
-                                       spacing: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_column_set_spacing".}
-proc gtk_tree_view_column_get_spacing*(tree_column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_spacing".}
-proc gtk_tree_view_column_set_visible*(tree_column: PGtkTreeViewColumn,
-                                       visible: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_set_visible".}
-proc gtk_tree_view_column_get_visible*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_visible".}
-proc gtk_tree_view_column_set_resizable*(tree_column: PGtkTreeViewColumn,
-    resizable: gboolean){.cdecl, dynlib: gtklib,
-                          importc: "gtk_tree_view_column_set_resizable".}
-proc gtk_tree_view_column_get_resizable*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_resizable".}
-proc gtk_tree_view_column_set_sizing*(tree_column: PGtkTreeViewColumn,
-                                      thetype: TGtkTreeViewColumnSizing){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_set_sizing".}
-proc gtk_tree_view_column_get_sizing*(tree_column: PGtkTreeViewColumn): TGtkTreeViewColumnSizing{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_sizing".}
-proc gtk_tree_view_column_get_width*(tree_column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_width".}
-proc gtk_tree_view_column_get_fixed_width*(tree_column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_fixed_width".}
-proc gtk_tree_view_column_set_fixed_width*(tree_column: PGtkTreeViewColumn,
-    fixed_width: gint){.cdecl, dynlib: gtklib,
-                        importc: "gtk_tree_view_column_set_fixed_width".}
-proc gtk_tree_view_column_set_min_width*(tree_column: PGtkTreeViewColumn,
-    min_width: gint){.cdecl, dynlib: gtklib,
-                      importc: "gtk_tree_view_column_set_min_width".}
-proc gtk_tree_view_column_get_min_width*(tree_column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_min_width".}
-proc gtk_tree_view_column_set_max_width*(tree_column: PGtkTreeViewColumn,
-    max_width: gint){.cdecl, dynlib: gtklib,
-                      importc: "gtk_tree_view_column_set_max_width".}
-proc gtk_tree_view_column_get_max_width*(tree_column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_max_width".}
-proc gtk_tree_view_column_clicked*(tree_column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_clicked".}
-proc gtk_tree_view_column_set_title*(tree_column: PGtkTreeViewColumn,
-                                     title: cstring){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_column_set_title".}
-proc gtk_tree_view_column_get_title*(tree_column: PGtkTreeViewColumn): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_title".}
-proc gtk_tree_view_column_set_clickable*(tree_column: PGtkTreeViewColumn,
-    clickable: gboolean){.cdecl, dynlib: gtklib,
-                          importc: "gtk_tree_view_column_set_clickable".}
-proc gtk_tree_view_column_get_clickable*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_clickable".}
-proc gtk_tree_view_column_set_widget*(tree_column: PGtkTreeViewColumn,
-                                      widget: PGtkWidget){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_set_widget".}
-proc gtk_tree_view_column_get_widget*(tree_column: PGtkTreeViewColumn): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_widget".}
-proc gtk_tree_view_column_set_alignment*(tree_column: PGtkTreeViewColumn,
-    xalign: gfloat){.cdecl, dynlib: gtklib,
-                     importc: "gtk_tree_view_column_set_alignment".}
-proc gtk_tree_view_column_get_alignment*(tree_column: PGtkTreeViewColumn): gfloat{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_alignment".}
-proc gtk_tree_view_column_set_reorderable*(tree_column: PGtkTreeViewColumn,
-    reorderable: gboolean){.cdecl, dynlib: gtklib,
-                            importc: "gtk_tree_view_column_set_reorderable".}
-proc gtk_tree_view_column_get_reorderable*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_reorderable".}
-proc gtk_tree_view_column_set_sort_column_id*(tree_column: PGtkTreeViewColumn,
-    sort_column_id: gint){.cdecl, dynlib: gtklib,
+proc column_pack_start*(tree_column: PTreeViewColumn, 
+                                  cell: PCellRenderer, expand: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_pack_start".}
+proc column_pack_end*(tree_column: PTreeViewColumn, 
+                                cell: PCellRenderer, expand: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_pack_end".}
+proc column_clear*(tree_column: PTreeViewColumn){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_clear".}
+proc column_get_cell_renderers*(tree_column: PTreeViewColumn): PGList{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_cell_renderers".}
+proc column_add_attribute*(tree_column: PTreeViewColumn, 
+                                     cell_renderer: PCellRenderer, 
+                                     attribute: cstring, column: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_add_attribute".}
+proc column_set_cell_data_func*(tree_column: PTreeViewColumn, 
+    cell_renderer: PCellRenderer, fun: TTreeCellDataFunc, func_data: gpointer, 
+    destroy: TDestroyNotify){.cdecl, dynlib: lib, importc: "gtk_tree_view_column_set_cell_data_func".}
+proc column_clear_attributes*(tree_column: PTreeViewColumn, 
+                                        cell_renderer: PCellRenderer){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_clear_attributes".}
+proc column_set_spacing*(tree_column: PTreeViewColumn, spacing: gint){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_set_spacing".}
+proc column_get_spacing*(tree_column: PTreeViewColumn): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_get_spacing".}
+proc column_set_visible*(tree_column: PTreeViewColumn, 
+                                   visible: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_visible".}
+proc column_get_visible*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_visible".}
+proc column_set_resizable*(tree_column: PTreeViewColumn, 
+                                     resizable: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_resizable".}
+proc column_get_resizable*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_resizable".}
+proc column_set_sizing*(tree_column: PTreeViewColumn, 
+                                  thetype: TTreeViewColumnSizing){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_set_sizing".}
+proc column_get_sizing*(tree_column: PTreeViewColumn): TTreeViewColumnSizing{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_sizing".}
+proc column_get_width*(tree_column: PTreeViewColumn): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_get_width".}
+proc column_get_fixed_width*(tree_column: PTreeViewColumn): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_fixed_width".}
+proc column_set_fixed_width*(tree_column: PTreeViewColumn, 
+                                       fixed_width: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_fixed_width".}
+proc column_set_min_width*(tree_column: PTreeViewColumn, 
+                                     min_width: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_min_width".}
+proc column_get_min_width*(tree_column: PTreeViewColumn): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_get_min_width".}
+proc column_set_max_width*(tree_column: PTreeViewColumn, 
+                                     max_width: gint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_max_width".}
+proc column_get_max_width*(tree_column: PTreeViewColumn): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_get_max_width".}
+proc column_clicked*(tree_column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_clicked".}
+proc column_set_title*(tree_column: PTreeViewColumn, title: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_set_title".}
+proc column_get_title*(tree_column: PTreeViewColumn): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_get_title".}
+proc column_set_clickable*(tree_column: PTreeViewColumn, 
+                                     clickable: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_clickable".}
+proc column_get_clickable*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_clickable".}
+proc column_set_widget*(tree_column: PTreeViewColumn, widget: PWidget){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_set_widget".}
+proc column_get_widget*(tree_column: PTreeViewColumn): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_get_widget".}
+proc column_set_alignment*(tree_column: PTreeViewColumn, 
+                                     xalign: gfloat){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_alignment".}
+proc column_get_alignment*(tree_column: PTreeViewColumn): gfloat{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_alignment".}
+proc column_set_reorderable*(tree_column: PTreeViewColumn, 
+                                       reorderable: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_column_set_reorderable".}
+proc column_get_reorderable*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_reorderable".}
+proc column_set_sort_column_id*(tree_column: PTreeViewColumn, 
+    sort_column_id: gint){.cdecl, dynlib: lib, 
                            importc: "gtk_tree_view_column_set_sort_column_id".}
-proc gtk_tree_view_column_get_sort_column_id*(tree_column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_sort_column_id".}
-proc gtk_tree_view_column_set_sort_indicator*(tree_column: PGtkTreeViewColumn,
-    setting: gboolean){.cdecl, dynlib: gtklib,
+proc column_get_sort_column_id*(tree_column: PTreeViewColumn): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_sort_column_id".}
+proc column_set_sort_indicator*(tree_column: PTreeViewColumn, 
+    setting: gboolean){.cdecl, dynlib: lib, 
                         importc: "gtk_tree_view_column_set_sort_indicator".}
-proc gtk_tree_view_column_get_sort_indicator*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_sort_indicator".}
-proc gtk_tree_view_column_set_sort_order*(tree_column: PGtkTreeViewColumn,
-    order: TGtkSortType){.cdecl, dynlib: gtklib,
-                          importc: "gtk_tree_view_column_set_sort_order".}
-proc gtk_tree_view_column_get_sort_order*(tree_column: PGtkTreeViewColumn): TGtkSortType{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_sort_order".}
-proc gtk_tree_view_column_cell_set_cell_data*(tree_column: PGtkTreeViewColumn,
-    tree_model: PGtkTreeModel, iter: PGtkTreeIter, is_expander: gboolean,
-    is_expanded: gboolean){.cdecl, dynlib: gtklib,
+proc column_get_sort_indicator*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_sort_indicator".}
+proc column_set_sort_order*(tree_column: PTreeViewColumn, 
+                                      order: TSortType){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_set_sort_order".}
+proc column_get_sort_order*(tree_column: PTreeViewColumn): TSortType{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_sort_order".}
+proc column_cell_set_cell_data*(tree_column: PTreeViewColumn, 
+    tree_model: PTreeModel, iter: PTreeIter, is_expander: gboolean, 
+    is_expanded: gboolean){.cdecl, dynlib: lib, 
                             importc: "gtk_tree_view_column_cell_set_cell_data".}
-proc gtk_tree_view_column_cell_get_size*(tree_column: PGtkTreeViewColumn,
-    cell_area: PGdkRectangle, x_offset: Pgint, y_offset: Pgint, width: Pgint,
-    height: Pgint){.cdecl, dynlib: gtklib,
-                    importc: "gtk_tree_view_column_cell_get_size".}
-proc gtk_tree_view_column_cell_is_visible*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_cell_is_visible".}
-proc gtk_tree_view_column_focus_cell*(tree_column: PGtkTreeViewColumn,
-                                      cell: PGtkCellRenderer){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_column_focus_cell".}
-proc gtk_tree_view_column_set_expand*(tree_column: PGtkTreeViewColumn,
-                                      Expand: gboolean){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_column_set_expand".}
-proc gtk_tree_view_column_get_expand*(tree_column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_column_get_expand".}
-const
-  GTK_RBNODE_BLACK* = 1 shl 0
-  GTK_RBNODE_RED* = 1 shl 1
-  GTK_RBNODE_IS_PARENT* = 1 shl 2
-  GTK_RBNODE_IS_SELECTED* = 1 shl 3
-  GTK_RBNODE_IS_PRELIT* = 1 shl 4
-  GTK_RBNODE_IS_SEMI_COLLAPSED* = 1 shl 5
-  GTK_RBNODE_IS_SEMI_EXPANDED* = 1 shl 6
-  GTK_RBNODE_INVALID* = 1 shl 7
-  GTK_RBNODE_COLUMN_INVALID* = 1 shl 8
-  GTK_RBNODE_DESCENDANTS_INVALID* = 1 shl 9
-  GTK_RBNODE_NON_COLORS* = GTK_RBNODE_IS_PARENT or GTK_RBNODE_IS_SELECTED or
-      GTK_RBNODE_IS_PRELIT or GTK_RBNODE_IS_SEMI_COLLAPSED or
-      GTK_RBNODE_IS_SEMI_EXPANDED or GTK_RBNODE_INVALID or
-      GTK_RBNODE_COLUMN_INVALID or GTK_RBNODE_DESCENDANTS_INVALID
-
-const
-  bm_TGtkRBNode_flags* = 0x00003FFF'i16
+proc column_cell_get_size*(tree_column: PTreeViewColumn, 
+                                     cell_area: gdk2.PRectangle, x_offset: Pgint, 
+                                     y_offset: Pgint, width: Pgint, 
+                                     height: Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_cell_get_size".}
+proc column_cell_is_visible*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_cell_is_visible".}
+proc column_focus_cell*(tree_column: PTreeViewColumn, 
+                                  cell: PCellRenderer){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_column_focus_cell".}
+proc column_set_expand*(tree_column: PTreeViewColumn, Expand: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_set_expand".}
+proc column_get_expand*(tree_column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_column_get_expand".}
+const 
+  RBNODE_BLACK* = 1 shl 0
+  RBNODE_RED* = 1 shl 1
+  RBNODE_IS_PARENT* = 1 shl 2
+  RBNODE_IS_SELECTED* = 1 shl 3
+  RBNODE_IS_PRELIT* = 1 shl 4
+  RBNODE_IS_SEMI_COLLAPSED* = 1 shl 5
+  RBNODE_IS_SEMI_EXPANDED* = 1 shl 6
+  RBNODE_INVALID* = 1 shl 7
+  RBNODE_COLUMN_INVALID* = 1 shl 8
+  RBNODE_DESCENDANTS_INVALID* = 1 shl 9
+  RBNODE_NON_COLORS* = RBNODE_IS_PARENT or RBNODE_IS_SELECTED or
+      RBNODE_IS_PRELIT or RBNODE_IS_SEMI_COLLAPSED or RBNODE_IS_SEMI_EXPANDED or
+      RBNODE_INVALID or RBNODE_COLUMN_INVALID or RBNODE_DESCENDANTS_INVALID
+
+const 
+  bm_TGtkRBNode_flags* = 0x3FFF'i16
   bp_TGtkRBNode_flags* = 0'i16
-  bm_TGtkRBNode_parity* = 0x00004000'i16
+  bm_TGtkRBNode_parity* = 0x4000'i16
   bp_TGtkRBNode_parity* = 14'i16
 
-proc flags*(a: PGtkRBNode): guint
-proc set_flags*(a: PGtkRBNode, `flags`: guint)
-proc parity*(a: PGtkRBNode): guint
-proc set_parity*(a: PGtkRBNode, `parity`: guint)
-proc GTK_RBNODE_GET_COLOR*(node: PGtkRBNode): guint
-proc GTK_RBNODE_SET_COLOR*(node: PGtkRBNode, color: guint)
-proc GTK_RBNODE_GET_HEIGHT*(node: PGtkRBNode): gint
-proc GTK_RBNODE_SET_FLAG*(node: PGtkRBNode, flag: guint16)
-proc GTK_RBNODE_UNSET_FLAG*(node: PGtkRBNode, flag: guint16)
-proc GTK_RBNODE_FLAG_SET*(node: PGtkRBNode, flag: guint): bool
-proc gtk_rbtree_push_allocator*(allocator: PGAllocator){.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_push_allocator".}
-proc gtk_rbtree_pop_allocator*(){.cdecl, dynlib: gtklib,
-                                    importc: "_gtk_rbtree_pop_allocator".}
-proc gtk_rbtree_new*(): PGtkRBTree{.cdecl, dynlib: gtklib,
-                                      importc: "_gtk_rbtree_new".}
-proc gtk_rbtree_free*(tree: PGtkRBTree){.cdecl, dynlib: gtklib,
-    importc: "_gtk_rbtree_free".}
-proc gtk_rbtree_remove*(tree: PGtkRBTree){.cdecl, dynlib: gtklib,
-    importc: "_gtk_rbtree_remove".}
-proc gtk_rbtree_destroy*(tree: PGtkRBTree){.cdecl, dynlib: gtklib,
-    importc: "_gtk_rbtree_destroy".}
-proc gtk_rbtree_insert_before*(tree: PGtkRBTree, node: PGtkRBNode,
-                                 height: gint, valid: gboolean): PGtkRBNode{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_insert_before".}
-proc gtk_rbtree_insert_after*(tree: PGtkRBTree, node: PGtkRBNode,
-                                height: gint, valid: gboolean): PGtkRBNode{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_insert_after".}
-proc gtk_rbtree_remove_node*(tree: PGtkRBTree, node: PGtkRBNode){.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_remove_node".}
-proc gtk_rbtree_reorder*(tree: PGtkRBTree, new_order: Pgint, length: gint){.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_reorder".}
-proc gtk_rbtree_find_count*(tree: PGtkRBTree, count: gint): PGtkRBNode{.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_find_count".}
-proc gtk_rbtree_node_set_height*(tree: PGtkRBTree, node: PGtkRBNode,
-                                   height: gint){.cdecl, dynlib: gtklib,
-    importc: "_gtk_rbtree_node_set_height".}
-proc gtk_rbtree_node_mark_invalid*(tree: PGtkRBTree, node: PGtkRBNode){.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_node_mark_invalid".}
-proc gtk_rbtree_node_mark_valid*(tree: PGtkRBTree, node: PGtkRBNode){.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_node_mark_valid".}
-proc gtk_rbtree_column_invalid*(tree: PGtkRBTree){.cdecl, dynlib: gtklib,
+proc flags*(a: PRBNode): guint
+proc set_flags*(a: PRBNode, `flags`: guint)
+proc parity*(a: PRBNode): guint
+proc set_parity*(a: PRBNode, `parity`: guint)
+proc GET_COLOR*(node: PRBNode): guint
+proc SET_COLOR*(node: PRBNode, color: guint)
+proc GET_HEIGHT*(node: PRBNode): gint
+proc SET_FLAG*(node: PRBNode, flag: guint16)
+proc UNSET_FLAG*(node: PRBNode, flag: guint16)
+proc FLAG_SET*(node: PRBNode, flag: guint): bool
+proc rbtree_push_allocator*(allocator: PGAllocator){.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_push_allocator".}
+proc rbtree_pop_allocator*(){.cdecl, dynlib: lib, 
+                              importc: "_gtk_rbtree_pop_allocator".}
+proc rbtree_new*(): PRBTree{.cdecl, dynlib: lib, importc: "_gtk_rbtree_new".}
+proc free*(tree: PRBTree){.cdecl, dynlib: lib, 
+                                  importc: "_gtk_rbtree_free".}
+proc remove*(tree: PRBTree){.cdecl, dynlib: lib, 
+                                    importc: "_gtk_rbtree_remove".}
+proc destroy*(tree: PRBTree){.cdecl, dynlib: lib, 
+                                     importc: "_gtk_rbtree_destroy".}
+proc insert_before*(tree: PRBTree, node: PRBNode, height: gint, 
+                           valid: gboolean): PRBNode{.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_insert_before".}
+proc insert_after*(tree: PRBTree, node: PRBNode, height: gint, 
+                          valid: gboolean): PRBNode{.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_insert_after".}
+proc remove_node*(tree: PRBTree, node: PRBNode){.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_remove_node".}
+proc reorder*(tree: PRBTree, new_order: Pgint, length: gint){.cdecl, 
+    dynlib: lib, importc: "_gtk_rbtree_reorder".}
+proc find_count*(tree: PRBTree, count: gint): PRBNode{.cdecl, 
+    dynlib: lib, importc: "_gtk_rbtree_find_count".}
+proc node_set_height*(tree: PRBTree, node: PRBNode, height: gint){.
+    cdecl, dynlib: lib, importc: "_gtk_rbtree_node_set_height".}
+proc node_mark_invalid*(tree: PRBTree, node: PRBNode){.cdecl, 
+    dynlib: lib, importc: "_gtk_rbtree_node_mark_invalid".}
+proc node_mark_valid*(tree: PRBTree, node: PRBNode){.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_node_mark_valid".}
+proc column_invalid*(tree: PRBTree){.cdecl, dynlib: lib, 
     importc: "_gtk_rbtree_column_invalid".}
-proc gtk_rbtree_mark_invalid*(tree: PGtkRBTree){.cdecl, dynlib: gtklib,
+proc mark_invalid*(tree: PRBTree){.cdecl, dynlib: lib, 
     importc: "_gtk_rbtree_mark_invalid".}
-proc gtk_rbtree_set_fixed_height*(tree: PGtkRBTree, height: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_set_fixed_height".}
-proc gtk_rbtree_node_find_offset*(tree: PGtkRBTree, node: PGtkRBNode): gint{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_node_find_offset".}
-proc gtk_rbtree_node_find_parity*(tree: PGtkRBTree, node: PGtkRBNode): gint{.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_node_find_parity".}
-proc gtk_rbtree_traverse*(tree: PGtkRBTree, node: PGtkRBNode,
-                            order: TGTraverseType,
-                            fun: TGtkRBTreeTraverseFunc, data: gpointer){.
-    cdecl, dynlib: gtklib, importc: "_gtk_rbtree_traverse".}
-proc gtk_rbtree_next*(tree: PGtkRBTree, node: PGtkRBNode): PGtkRBNode{.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_next".}
-proc gtk_rbtree_prev*(tree: PGtkRBTree, node: PGtkRBNode): PGtkRBNode{.cdecl,
-    dynlib: gtklib, importc: "_gtk_rbtree_prev".}
-proc gtk_rbtree_get_depth*(tree: PGtkRBTree): gint{.cdecl, dynlib: gtklib,
+proc set_fixed_height*(tree: PRBTree, height: gint){.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_set_fixed_height".}
+proc node_find_offset*(tree: PRBTree, node: PRBNode): gint{.cdecl, 
+    dynlib: lib, importc: "_gtk_rbtree_node_find_offset".}
+proc node_find_parity*(tree: PRBTree, node: PRBNode): gint{.cdecl, 
+    dynlib: lib, importc: "_gtk_rbtree_node_find_parity".}
+proc traverse*(tree: PRBTree, node: PRBNode, order: TGTraverseType, 
+                      fun: TRBTreeTraverseFunc, data: gpointer){.cdecl, 
+    dynlib: lib, importc: "_gtk_rbtree_traverse".}
+proc next*(tree: PRBTree, node: PRBNode): PRBNode{.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_next".}
+proc prev*(tree: PRBTree, node: PRBNode): PRBNode{.cdecl, dynlib: lib, 
+    importc: "_gtk_rbtree_prev".}
+proc get_depth*(tree: PRBTree): gint{.cdecl, dynlib: lib, 
     importc: "_gtk_rbtree_get_depth".}
-const
+const 
   TREE_VIEW_DRAG_WIDTH* = 6
-  GTK_TREE_VIEW_IS_LIST* = 1 shl 0
-  GTK_TREE_VIEW_SHOW_EXPANDERS* = 1 shl 1
-  GTK_TREE_VIEW_IN_COLUMN_RESIZE* = 1 shl 2
-  GTK_TREE_VIEW_ARROW_PRELIT* = 1 shl 3
-  GTK_TREE_VIEW_HEADERS_VISIBLE* = 1 shl 4
-  GTK_TREE_VIEW_DRAW_KEYFOCUS* = 1 shl 5
-  GTK_TREE_VIEW_MODEL_SETUP* = 1 shl 6
-  GTK_TREE_VIEW_IN_COLUMN_DRAG* = 1 shl 7
+  TREE_VIEW_IS_LIST* = 1 shl 0
+  TREE_VIEW_SHOW_EXPANDERS* = 1 shl 1
+  TREE_VIEW_IN_COLUMN_RESIZE* = 1 shl 2
+  TREE_VIEW_ARROW_PRELIT* = 1 shl 3
+  TREE_VIEW_HEADERS_VISIBLE* = 1 shl 4
+  TREE_VIEW_DRAW_KEYFOCUS* = 1 shl 5
+  TREE_VIEW_MODEL_SETUP* = 1 shl 6
+  TREE_VIEW_IN_COLUMN_DRAG* = 1 shl 7
   DRAG_COLUMN_WINDOW_STATE_UNSET* = 0
   DRAG_COLUMN_WINDOW_STATE_ORIGINAL* = 1
   DRAG_COLUMN_WINDOW_STATE_ARROW* = 2
   DRAG_COLUMN_WINDOW_STATE_ARROW_LEFT* = 3
   DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT* = 4
 
-proc GTK_TREE_VIEW_SET_FLAG*(tree_view: PGtkTreeView, flag: guint)
-proc GTK_TREE_VIEW_UNSET_FLAG*(tree_view: PGtkTreeView, flag: guint)
-proc GTK_TREE_VIEW_FLAG_SET*(tree_view: PGtkTreeView, flag: guint): bool
-proc TREE_VIEW_HEADER_HEIGHT*(tree_view: PGtkTreeView): int32
-proc TREE_VIEW_COLUMN_REQUESTED_WIDTH*(column: PGtkTreeViewColumn): int32
-proc TREE_VIEW_DRAW_EXPANDERS*(tree_view: PGtkTreeView): bool
-proc TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER*(tree_view: PGtkTreeView): int32
-const
-  bm_TGtkTreeViewPrivate_scroll_to_use_align* = 0x00000001'i16
+proc SET_FLAG*(tree_view: PTreeView, flag: guint)
+proc UNSET_FLAG*(tree_view: PTreeView, flag: guint)
+proc FLAG_SET*(tree_view: PTreeView, flag: guint): bool
+proc HEADER_HEIGHT*(tree_view: PTreeView): int32
+proc COLUMN_REQUESTED_WIDTH*(column: PTreeViewColumn): int32
+proc DRAW_EXPANDERS*(tree_view: PTreeView): bool
+proc COLUMN_DRAG_DEAD_MULTIPLIER*(tree_view: PTreeView): int32
+const 
+  bm_TGtkTreeViewPrivate_scroll_to_use_align* = 0x0001'i16
   bp_TGtkTreeViewPrivate_scroll_to_use_align* = 0'i16
-  bm_TGtkTreeViewPrivate_fixed_height_check* = 0x00000002'i16
+  bm_TGtkTreeViewPrivate_fixed_height_check* = 0x0002'i16
   bp_TGtkTreeViewPrivate_fixed_height_check* = 1'i16
-  bm_TGtkTreeViewPrivate_reorderable* = 0x00000004'i16
+  bm_TGtkTreeViewPrivate_reorderable* = 0x0004'i16
   bp_TGtkTreeViewPrivate_reorderable* = 2'i16
-  bm_TGtkTreeViewPrivate_header_has_focus* = 0x00000008'i16
+  bm_TGtkTreeViewPrivate_header_has_focus* = 0x0008'i16
   bp_TGtkTreeViewPrivate_header_has_focus* = 3'i16
-  bm_TGtkTreeViewPrivate_drag_column_window_state* = 0x00000070'i16
+  bm_TGtkTreeViewPrivate_drag_column_window_state* = 0x0070'i16
   bp_TGtkTreeViewPrivate_drag_column_window_state* = 4'i16
-  bm_TGtkTreeViewPrivate_has_rules* = 0x00000080'i16
+  bm_TGtkTreeViewPrivate_has_rules* = 0x0080'i16
   bp_TGtkTreeViewPrivate_has_rules* = 7'i16
-  bm_TGtkTreeViewPrivate_mark_rows_col_dirty* = 0x00000100'i16
+  bm_TGtkTreeViewPrivate_mark_rows_col_dirty* = 0x0100'i16
   bp_TGtkTreeViewPrivate_mark_rows_col_dirty* = 8'i16
-  bm_TGtkTreeViewPrivate_enable_search* = 0x00000200'i16
+  bm_TGtkTreeViewPrivate_enable_search* = 0x0200'i16
   bp_TGtkTreeViewPrivate_enable_search* = 9'i16
-  bm_TGtkTreeViewPrivate_disable_popdown* = 0x00000400'i16
+  bm_TGtkTreeViewPrivate_disable_popdown* = 0x0400'i16
   bp_TGtkTreeViewPrivate_disable_popdown* = 10'i16
 
-proc scroll_to_use_align*(a: var TGtkTreeViewPrivate): guint
-proc set_scroll_to_use_align*(a: var TGtkTreeViewPrivate,
+proc scroll_to_use_align*(a: var TTreeViewPrivate): guint
+proc set_scroll_to_use_align*(a: var TTreeViewPrivate, 
                               `scroll_to_use_align`: guint)
-proc fixed_height_check*(a: var TGtkTreeViewPrivate): guint
-proc set_fixed_height_check*(a: var TGtkTreeViewPrivate,
+proc fixed_height_check*(a: var TTreeViewPrivate): guint
+proc set_fixed_height_check*(a: var TTreeViewPrivate, 
                              `fixed_height_check`: guint)
-proc reorderable*(a: var TGtkTreeViewPrivate): guint
-proc set_reorderable*(a: var TGtkTreeViewPrivate, `reorderable`: guint)
-proc header_has_focus*(a: var TGtkTreeViewPrivate): guint
-proc set_header_has_focus*(a: var TGtkTreeViewPrivate, `header_has_focus`: guint)
-proc drag_column_window_state*(a: var TGtkTreeViewPrivate): guint
-proc set_drag_column_window_state*(a: var TGtkTreeViewPrivate,
+proc reorderable*(a: var TTreeViewPrivate): guint
+proc set_reorderable*(a: var TTreeViewPrivate, `reorderable`: guint)
+proc header_has_focus*(a: var TTreeViewPrivate): guint
+proc set_header_has_focus*(a: var TTreeViewPrivate, `header_has_focus`: guint)
+proc drag_column_window_state*(a: var TTreeViewPrivate): guint
+proc set_drag_column_window_state*(a: var TTreeViewPrivate, 
                                    `drag_column_window_state`: guint)
-proc has_rules*(a: var TGtkTreeViewPrivate): guint
-proc set_has_rules*(a: var TGtkTreeViewPrivate, `has_rules`: guint)
-proc mark_rows_col_dirty*(a: var TGtkTreeViewPrivate): guint
-proc set_mark_rows_col_dirty*(a: var TGtkTreeViewPrivate,
+proc has_rules*(a: var TTreeViewPrivate): guint
+proc set_has_rules*(a: var TTreeViewPrivate, `has_rules`: guint)
+proc mark_rows_col_dirty*(a: var TTreeViewPrivate): guint
+proc set_mark_rows_col_dirty*(a: var TTreeViewPrivate, 
                               `mark_rows_col_dirty`: guint)
-proc enable_search*(a: var TGtkTreeViewPrivate): guint
-proc set_enable_search*(a: var TGtkTreeViewPrivate, `enable_search`: guint)
-proc disable_popdown*(a: var TGtkTreeViewPrivate): guint
-proc set_disable_popdown*(a: var TGtkTreeViewPrivate, `disable_popdown`: guint)
-proc gtk_tree_selection_internal_select_node*(selection: PGtkTreeSelection,
-    node: PGtkRBNode, tree: PGtkRBTree, path: PGtkTreePath,
-    state: TGdkModifierType, override_browse_mode: gboolean){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_selection_internal_select_node".}
-proc gtk_tree_view_find_node*(tree_view: PGtkTreeView, path: PGtkTreePath,
-                                tree: var PGtkRBTree, node: var PGtkRBNode): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_find_node".}
-proc gtk_tree_view_find_path*(tree_view: PGtkTreeView, tree: PGtkRBTree,
-                                node: PGtkRBNode): PGtkTreePath{.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_find_path".}
-proc gtk_tree_view_child_move_resize*(tree_view: PGtkTreeView,
-                                        widget: PGtkWidget, x: gint, y: gint,
-                                        width: gint, height: gint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_child_move_resize".}
-proc gtk_tree_view_queue_draw_node*(tree_view: PGtkTreeView, tree: PGtkRBTree,
-                                      node: PGtkRBNode,
-                                      clip_rect: PGdkRectangle){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_queue_draw_node".}
-proc gtk_tree_view_column_realize_button*(column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_realize_button".}
-proc gtk_tree_view_column_unrealize_button*(column: PGtkTreeViewColumn){.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_unrealize_button".}
-proc gtk_tree_view_column_set_tree_view*(column: PGtkTreeViewColumn,
-    tree_view: PGtkTreeView){.cdecl, dynlib: gtklib,
-                              importc: "_gtk_tree_view_column_set_tree_view".}
-proc gtk_tree_view_column_unset_tree_view*(column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_unset_tree_view".}
-proc gtk_tree_view_column_set_width*(column: PGtkTreeViewColumn, width: gint){.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_set_width".}
-proc gtk_tree_view_column_start_drag*(tree_view: PGtkTreeView,
-                                        column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_start_drag".}
-proc gtk_tree_view_column_start_editing*(tree_column: PGtkTreeViewColumn,
-    editable_widget: PGtkCellEditable){.cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_start_editing".}
-proc gtk_tree_view_column_stop_editing*(tree_column: PGtkTreeViewColumn){.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_stop_editing".}
-proc gtk_tree_view_install_mark_rows_col_dirty*(tree_view: PGtkTreeView){.
-    cdecl, dynlib: gtklib,
-    importc: "_gtk_tree_view_install_mark_rows_col_dirty".}
-proc DOgtk_tree_view_column_autosize*(tree_view: PGtkTreeView,
-                                      column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_autosize".}
-proc gtk_tree_view_column_has_editable_cell*(column: PGtkTreeViewColumn): gboolean{.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_has_editable_cell".}
-proc gtk_tree_view_column_get_edited_cell*(column: PGtkTreeViewColumn): PGtkCellRenderer{.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_get_edited_cell".}
-proc gtk_tree_view_column_count_special_cells*(column: PGtkTreeViewColumn): gint{.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_count_special_cells".}
-proc gtk_tree_view_column_get_cell_at_pos*(column: PGtkTreeViewColumn, x: gint): PGtkCellRenderer{.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_get_cell_at_pos".}
-proc gtk_tree_selection_new*(): PGtkTreeSelection{.cdecl, dynlib: gtklib,
+proc enable_search*(a: var TTreeViewPrivate): guint
+proc set_enable_search*(a: var TTreeViewPrivate, `enable_search`: guint)
+proc disable_popdown*(a: var TTreeViewPrivate): guint
+proc set_disable_popdown*(a: var TTreeViewPrivate, `disable_popdown`: guint)
+proc internal_select_node*(selection: PTreeSelection, 
+    node: PRBNode, tree: PRBTree, path: PTreePath, state: gdk2.TModifierType, 
+    override_browse_mode: gboolean){.cdecl, dynlib: lib, importc: "_gtk_tree_selection_internal_select_node".}
+proc find_node*(tree_view: PTreeView, path: PTreePath, 
+                          tree: var PRBTree, node: var PRBNode): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_find_node".}
+proc find_path*(tree_view: PTreeView, tree: PRBTree, node: PRBNode): PTreePath{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_find_path".}
+proc child_move_resize*(tree_view: PTreeView, widget: PWidget, 
+                                  x: gint, y: gint, width: gint, height: gint){.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_child_move_resize".}
+proc queue_draw_node*(tree_view: PTreeView, tree: PRBTree, 
+                                node: PRBNode, clip_rect: gdk2.PRectangle){.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_queue_draw_node".}
+proc column_realize_button*(column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_realize_button".}
+proc column_unrealize_button*(column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_unrealize_button".}
+proc column_set_tree_view*(column: PTreeViewColumn, 
+                                     tree_view: PTreeView){.cdecl, dynlib: lib, 
+    importc: "_gtk_tree_view_column_set_tree_view".}
+proc column_unset_tree_view*(column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_unset_tree_view".}
+proc column_set_width*(column: PTreeViewColumn, width: gint){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_set_width".}
+proc column_start_drag*(tree_view: PTreeView, column: PTreeViewColumn){.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_start_drag".}
+proc column_start_editing*(tree_column: PTreeViewColumn, 
+                                     editable_widget: PCellEditable){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_start_editing".}
+proc column_stop_editing*(tree_column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_stop_editing".}
+proc install_mark_rows_col_dirty*(tree_view: PTreeView){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_install_mark_rows_col_dirty".}
+proc DOgtk_tree_view_column_autosize*(tree_view: PTreeView, 
+                                      column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_autosize".}
+proc column_has_editable_cell*(column: PTreeViewColumn): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_has_editable_cell".}
+proc column_get_edited_cell*(column: PTreeViewColumn): PCellRenderer{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_get_edited_cell".}
+proc column_count_special_cells*(column: PTreeViewColumn): gint{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_count_special_cells".}
+proc column_get_cell_at_pos*(column: PTreeViewColumn, x: gint): PCellRenderer{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_get_cell_at_pos".}
+proc tree_selection_new*(): PTreeSelection{.cdecl, dynlib: lib, 
     importc: "_gtk_tree_selection_new".}
-proc gtk_tree_selection_new_with_tree_view*(tree_view: PGtkTreeView): PGtkTreeSelection{.
-    cdecl, dynlib: gtklib, importc: "_gtk_tree_selection_new_with_tree_view".}
-proc gtk_tree_selection_set_tree_view*(selection: PGtkTreeSelection,
-    tree_view: PGtkTreeView){.cdecl, dynlib: gtklib,
-                              importc: "_gtk_tree_selection_set_tree_view".}
-proc gtk_tree_view_column_cell_render*(tree_column: PGtkTreeViewColumn,
-    window: PGdkWindow, background_area: PGdkRectangle,
-    cell_area: PGdkRectangle, expose_area: PGdkRectangle, flags: guint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_cell_render".}
-proc gtk_tree_view_column_cell_focus*(tree_column: PGtkTreeViewColumn,
-                                        direction: gint, left: gboolean,
-                                        right: gboolean): gboolean{.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_cell_focus".}
-proc gtk_tree_view_column_cell_draw_focus*(tree_column: PGtkTreeViewColumn,
-    window: PGdkWindow, background_area: PGdkRectangle,
-    cell_area: PGdkRectangle, expose_area: PGdkRectangle, flags: guint){.cdecl,
-    dynlib: gtklib, importc: "_gtk_tree_view_column_cell_draw_focus".}
-proc gtk_tree_view_column_cell_set_dirty*(tree_column: PGtkTreeViewColumn,
-    install_handler: gboolean){.cdecl, dynlib: gtklib, importc: "_gtk_tree_view_column_cell_set_dirty".}
-proc gtk_tree_view_column_get_neighbor_sizes*(column: PGtkTreeViewColumn,
-    cell: PGtkCellRenderer, left: Pgint, right: Pgint){.cdecl, dynlib: gtklib,
+proc selection_new_with_tree_view*(tree_view: PTreeView): PTreeSelection{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_selection_new_with_tree_view".}
+proc set_tree_view*(selection: PTreeSelection, 
+                                   tree_view: PTreeView){.cdecl, dynlib: lib, 
+    importc: "_gtk_tree_selection_set_tree_view".}
+proc column_cell_render*(tree_column: PTreeViewColumn, 
+                                   window: gdk2.PWindow, 
+                                   background_area: gdk2.PRectangle, 
+                                   cell_area: gdk2.PRectangle, 
+                                   expose_area: gdk2.PRectangle, flags: guint){.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_cell_render".}
+proc column_cell_focus*(tree_column: PTreeViewColumn, direction: gint, 
+                                  left: gboolean, right: gboolean): gboolean{.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_cell_focus".}
+proc column_cell_draw_focus*(tree_column: PTreeViewColumn, 
+                                       window: gdk2.PWindow, 
+                                       background_area: gdk2.PRectangle, 
+                                       cell_area: gdk2.PRectangle, 
+                                       expose_area: gdk2.PRectangle, flags: guint){.
+    cdecl, dynlib: lib, importc: "_gtk_tree_view_column_cell_draw_focus".}
+proc column_cell_set_dirty*(tree_column: PTreeViewColumn, 
+                                      install_handler: gboolean){.cdecl, 
+    dynlib: lib, importc: "_gtk_tree_view_column_cell_set_dirty".}
+proc column_get_neighbor_sizes*(column: PTreeViewColumn, 
+    cell: PCellRenderer, left: Pgint, right: Pgint){.cdecl, dynlib: lib, 
     importc: "_gtk_tree_view_column_get_neighbor_sizes".}
-proc GTK_TYPE_TREE_VIEW*(): GType
-proc GTK_TREE_VIEW*(obj: pointer): PGtkTreeView
-proc GTK_TREE_VIEW_CLASS*(klass: pointer): PGtkTreeViewClass
-proc GTK_IS_TREE_VIEW*(obj: pointer): bool
-proc GTK_IS_TREE_VIEW_CLASS*(klass: pointer): bool
-proc GTK_TREE_VIEW_GET_CLASS*(obj: pointer): PGtkTreeViewClass
-proc gtk_tree_view_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_get_type".}
-proc gtk_tree_view_new*(): PGtkTreeView{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_tree_view_new".}
-proc gtk_tree_view_new_with_model*(model: PGtkTreeModel): PGtkTreeView{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_new_with_model".}
-proc gtk_tree_view_get_model*(tree_view: PGtkTreeView): PGtkTreeModel{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_model".}
-proc gtk_tree_view_set_model*(tree_view: PGtkTreeView, model: PGtkTreeModel){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_set_model".}
-proc gtk_tree_view_get_selection*(tree_view: PGtkTreeView): PGtkTreeSelection{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_selection".}
-proc gtk_tree_view_get_hadjustment*(tree_view: PGtkTreeView): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_hadjustment".}
-proc gtk_tree_view_set_hadjustment*(tree_view: PGtkTreeView,
-                                    adjustment: PGtkAdjustment){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_hadjustment".}
-proc gtk_tree_view_get_vadjustment*(tree_view: PGtkTreeView): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_vadjustment".}
-proc gtk_tree_view_set_vadjustment*(tree_view: PGtkTreeView,
-                                    adjustment: PGtkAdjustment){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_vadjustment".}
-proc gtk_tree_view_get_headers_visible*(tree_view: PGtkTreeView): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_headers_visible".}
-proc gtk_tree_view_set_headers_visible*(tree_view: PGtkTreeView,
-                                        headers_visible: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_headers_visible".}
-proc gtk_tree_view_columns_autosize*(tree_view: PGtkTreeView){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_columns_autosize".}
-proc gtk_tree_view_set_headers_clickable*(tree_view: PGtkTreeView,
-    setting: gboolean){.cdecl, dynlib: gtklib,
-                        importc: "gtk_tree_view_set_headers_clickable".}
-proc gtk_tree_view_set_rules_hint*(tree_view: PGtkTreeView, setting: gboolean){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_set_rules_hint".}
-proc gtk_tree_view_get_rules_hint*(tree_view: PGtkTreeView): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_rules_hint".}
-proc gtk_tree_view_append_column*(tree_view: PGtkTreeView,
-                                  column: PGtkTreeViewColumn): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_append_column".}
-proc gtk_tree_view_remove_column*(tree_view: PGtkTreeView,
-                                  column: PGtkTreeViewColumn): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_remove_column".}
-proc gtk_tree_view_insert_column*(tree_view: PGtkTreeView,
-                                  column: PGtkTreeViewColumn, position: gint): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_insert_column".}
-proc gtk_tree_view_insert_column_with_data_func*(tree_view: PGtkTreeView,
-    position: gint, title: cstring, cell: PGtkCellRenderer,
-    fun: TGtkTreeCellDataFunc, data: gpointer, dnotify: TGDestroyNotify): gint{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_insert_column_with_data_func".}
-proc gtk_tree_view_get_column*(tree_view: PGtkTreeView, n: gint): PGtkTreeViewColumn{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_column".}
-proc gtk_tree_view_get_columns*(tree_view: PGtkTreeView): PGList{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_columns".}
-proc gtk_tree_view_move_column_after*(tree_view: PGtkTreeView,
-                                      column: PGtkTreeViewColumn,
-                                      base_column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_move_column_after".}
-proc gtk_tree_view_set_expander_column*(tree_view: PGtkTreeView,
-                                        column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_expander_column".}
-proc gtk_tree_view_get_expander_column*(tree_view: PGtkTreeView): PGtkTreeViewColumn{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_expander_column".}
-proc gtk_tree_view_set_column_drag_function*(tree_view: PGtkTreeView,
-    fun: TGtkTreeViewColumnDropFunc, user_data: gpointer,
-    destroy: TGtkDestroyNotify){.cdecl, dynlib: gtklib, importc: "gtk_tree_view_set_column_drag_function".}
-proc gtk_tree_view_scroll_to_point*(tree_view: PGtkTreeView, tree_x: gint,
-                                    tree_y: gint){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_scroll_to_point".}
-proc gtk_tree_view_scroll_to_cell*(tree_view: PGtkTreeView, path: PGtkTreePath,
-                                   column: PGtkTreeViewColumn,
-                                   use_align: gboolean, row_align: gfloat,
-                                   col_align: gfloat){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_scroll_to_cell".}
-proc gtk_tree_view_row_activated*(tree_view: PGtkTreeView, path: PGtkTreePath,
-                                  column: PGtkTreeViewColumn){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_row_activated".}
-proc gtk_tree_view_expand_all*(tree_view: PGtkTreeView){.cdecl, dynlib: gtklib,
+proc TYPE_TREE_VIEW*(): GType
+proc TREE_VIEW*(obj: pointer): PTreeView
+proc TREE_VIEW_CLASS*(klass: pointer): PTreeViewClass
+proc IS_TREE_VIEW*(obj: pointer): bool
+proc IS_TREE_VIEW_CLASS*(klass: pointer): bool
+proc TREE_VIEW_GET_CLASS*(obj: pointer): PTreeViewClass
+proc tree_view_get_type*(): TType{.cdecl, dynlib: lib, 
+                                   importc: "gtk_tree_view_get_type".}
+proc tree_view_new*(): PTreeView{.cdecl, dynlib: lib, 
+                                  importc: "gtk_tree_view_new".}
+proc view_new_with_model*(model: PTreeModel): PTreeView{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_new_with_model".}
+proc get_model*(tree_view: PTreeView): PTreeModel{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_get_model".}
+proc set_model*(tree_view: PTreeView, model: PTreeModel){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_model".}
+proc get_selection*(tree_view: PTreeView): PTreeSelection{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_selection".}
+proc get_hadjustment*(tree_view: PTreeView): PAdjustment{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_hadjustment".}
+proc set_hadjustment*(tree_view: PTreeView, adjustment: PAdjustment){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_hadjustment".}
+proc get_vadjustment*(tree_view: PTreeView): PAdjustment{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_vadjustment".}
+proc set_vadjustment*(tree_view: PTreeView, adjustment: PAdjustment){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_vadjustment".}
+proc get_headers_visible*(tree_view: PTreeView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_headers_visible".}
+proc set_headers_visible*(tree_view: PTreeView, 
+                                    headers_visible: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_headers_visible".}
+proc columns_autosize*(tree_view: PTreeView){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_columns_autosize".}
+proc set_headers_clickable*(tree_view: PTreeView, setting: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_headers_clickable".}
+proc set_rules_hint*(tree_view: PTreeView, setting: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_rules_hint".}
+proc get_rules_hint*(tree_view: PTreeView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_rules_hint".}
+proc append_column*(tree_view: PTreeView, column: PTreeViewColumn): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_append_column".}
+proc remove_column*(tree_view: PTreeView, column: PTreeViewColumn): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_remove_column".}
+proc insert_column*(tree_view: PTreeView, column: PTreeViewColumn, 
+                              position: gint): gint{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_insert_column".}
+proc insert_column_with_data_func*(tree_view: PTreeView, 
+    position: gint, title: cstring, cell: PCellRenderer, 
+    fun: TTreeCellDataFunc, data: gpointer, dnotify: TGDestroyNotify): gint{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_insert_column_with_data_func".}
+proc get_column*(tree_view: PTreeView, n: gint): PTreeViewColumn{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_get_column".}
+proc get_columns*(tree_view: PTreeView): PGList{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_get_columns".}
+proc move_column_after*(tree_view: PTreeView, column: PTreeViewColumn, 
+                                  base_column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_move_column_after".}
+proc set_expander_column*(tree_view: PTreeView, 
+                                    column: PTreeViewColumn){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_expander_column".}
+proc get_expander_column*(tree_view: PTreeView): PTreeViewColumn{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_get_expander_column".}
+proc set_column_drag_function*(tree_view: PTreeView, 
+    fun: TTreeViewColumnDropFunc, user_data: gpointer, destroy: TDestroyNotify){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_column_drag_function".}
+proc scroll_to_point*(tree_view: PTreeView, tree_x: gint, tree_y: gint){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_scroll_to_point".}
+proc scroll_to_cell*(tree_view: PTreeView, path: PTreePath, 
+                               column: PTreeViewColumn, use_align: gboolean, 
+                               row_align: gfloat, col_align: gfloat){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_scroll_to_cell".}
+proc row_activated*(tree_view: PTreeView, path: PTreePath, 
+                              column: PTreeViewColumn){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_row_activated".}
+proc expand_all*(tree_view: PTreeView){.cdecl, dynlib: lib, 
     importc: "gtk_tree_view_expand_all".}
-proc gtk_tree_view_collapse_all*(tree_view: PGtkTreeView){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_collapse_all".}
-proc gtk_tree_view_expand_row*(tree_view: PGtkTreeView, path: PGtkTreePath,
-                               open_all: gboolean): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_expand_row".}
-proc gtk_tree_view_collapse_row*(tree_view: PGtkTreeView, path: PGtkTreePath): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_collapse_row".}
-proc gtk_tree_view_map_expanded_rows*(tree_view: PGtkTreeView,
-                                      fun: TGtkTreeViewMappingFunc,
-                                      data: gpointer){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_map_expanded_rows".}
-proc gtk_tree_view_row_expanded*(tree_view: PGtkTreeView, path: PGtkTreePath): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_row_expanded".}
-proc gtk_tree_view_set_reorderable*(tree_view: PGtkTreeView,
-                                    reorderable: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_reorderable".}
-proc gtk_tree_view_get_reorderable*(tree_view: PGtkTreeView): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_reorderable".}
-proc gtk_tree_view_set_cursor*(tree_view: PGtkTreeView, path: PGtkTreePath,
-                               focus_column: PGtkTreeViewColumn,
-                               start_editing: gboolean){.cdecl, dynlib: gtklib,
+proc collapse_all*(tree_view: PTreeView){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_collapse_all".}
+proc expand_row*(tree_view: PTreeView, path: PTreePath, 
+                           open_all: gboolean): gboolean{.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_expand_row".}
+proc collapse_row*(tree_view: PTreeView, path: PTreePath): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_collapse_row".}
+proc map_expanded_rows*(tree_view: PTreeView, 
+                                  fun: TTreeViewMappingFunc, data: gpointer){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_map_expanded_rows".}
+proc row_expanded*(tree_view: PTreeView, path: PTreePath): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_row_expanded".}
+proc set_reorderable*(tree_view: PTreeView, reorderable: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_reorderable".}
+proc get_reorderable*(tree_view: PTreeView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_reorderable".}
+proc set_cursor*(tree_view: PTreeView, path: PTreePath, 
+                           focus_column: PTreeViewColumn, 
+                           start_editing: gboolean){.cdecl, dynlib: lib, 
     importc: "gtk_tree_view_set_cursor".}
-proc gtk_tree_view_set_cursor_on_cell*(tree_view: PGtkTreeView,
-                                       path: PGtkTreePath,
-                                       focus_column: PGtkTreeViewColumn,
-                                       focus_cell: PGtkCellRenderer,
-                                       start_editing: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_cursor_on_cell".}
-proc gtk_tree_view_get_bin_window*(tree_view: PGtkTreeView): PGdkWindow{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_bin_window".}
-proc gtk_tree_view_get_cell_area*(tree_view: PGtkTreeView, path: PGtkTreePath,
-                                  column: PGtkTreeViewColumn,
-                                  rect: PGdkRectangle){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_get_cell_area".}
-proc gtk_tree_view_get_background_area*(tree_view: PGtkTreeView,
-                                        path: PGtkTreePath,
-                                        column: PGtkTreeViewColumn,
-                                        rect: PGdkRectangle){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_background_area".}
-proc gtk_tree_view_get_visible_rect*(tree_view: PGtkTreeView,
-                                     visible_rect: PGdkRectangle){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_visible_rect".}
-proc gtk_tree_view_widget_to_tree_coords*(tree_view: PGtkTreeView, wx: gint,
-    wy: gint, tx: Pgint, ty: Pgint){.cdecl, dynlib: gtklib, importc: "gtk_tree_view_widget_to_tree_coords".}
-proc gtk_tree_view_tree_to_widget_coords*(tree_view: PGtkTreeView, tx: gint,
-    ty: gint, wx: Pgint, wy: Pgint){.cdecl, dynlib: gtklib, importc: "gtk_tree_view_tree_to_widget_coords".}
-proc gtk_tree_view_enable_model_drag_source*(tree_view: PGtkTreeView,
-    start_button_mask: TGdkModifierType, targets: PGtkTargetEntry,
-    n_targets: gint, actions: TGdkDragAction){.cdecl, dynlib: gtklib,
-    importc: "gtk_tree_view_enable_model_drag_source".}
-proc gtk_tree_view_enable_model_drag_dest*(tree_view: PGtkTreeView,
-    targets: PGtkTargetEntry, n_targets: gint, actions: TGdkDragAction){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_enable_model_drag_dest".}
-proc gtk_tree_view_unset_rows_drag_source*(tree_view: PGtkTreeView){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_unset_rows_drag_source".}
-proc gtk_tree_view_unset_rows_drag_dest*(tree_view: PGtkTreeView){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_unset_rows_drag_dest".}
-proc gtk_tree_view_set_drag_dest_row*(tree_view: PGtkTreeView,
-                                      path: PGtkTreePath,
-                                      pos: TGtkTreeViewDropPosition){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_drag_dest_row".}
-proc gtk_tree_view_create_row_drag_icon*(tree_view: PGtkTreeView,
-    path: PGtkTreePath): PGdkPixmap{.cdecl, dynlib: gtklib, importc: "gtk_tree_view_create_row_drag_icon".}
-proc gtk_tree_view_set_enable_search*(tree_view: PGtkTreeView,
-                                      enable_search: gboolean){.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_set_enable_search".}
-proc gtk_tree_view_get_enable_search*(tree_view: PGtkTreeView): gboolean{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_enable_search".}
-proc gtk_tree_view_get_search_column*(tree_view: PGtkTreeView): gint{.cdecl,
-    dynlib: gtklib, importc: "gtk_tree_view_get_search_column".}
-proc gtk_tree_view_set_search_column*(tree_view: PGtkTreeView, column: gint){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_set_search_column".}
-proc gtk_tree_view_get_search_equal_func*(tree_view: PGtkTreeView): TGtkTreeViewSearchEqualFunc{.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_get_search_equal_func".}
-proc gtk_tree_view_set_search_equal_func*(tree_view: PGtkTreeView,
-    search_equal_func: TGtkTreeViewSearchEqualFunc, search_user_data: gpointer,
-    search_destroy: TGtkDestroyNotify){.cdecl, dynlib: gtklib, importc: "gtk_tree_view_set_search_equal_func".}
-proc gtk_tree_view_set_destroy_count_func*(tree_view: PGtkTreeView,
-    fun: TGtkTreeDestroyCountFunc, data: gpointer, destroy: TGtkDestroyNotify){.
-    cdecl, dynlib: gtklib, importc: "gtk_tree_view_set_destroy_count_func".}
-proc GTK_TYPE_VBUTTON_BOX*(): GType
-proc GTK_VBUTTON_BOX*(obj: pointer): PGtkVButtonBox
-proc GTK_VBUTTON_BOX_CLASS*(klass: pointer): PGtkVButtonBoxClass
-proc GTK_IS_VBUTTON_BOX*(obj: pointer): bool
-proc GTK_IS_VBUTTON_BOX_CLASS*(klass: pointer): bool
-proc GTK_VBUTTON_BOX_GET_CLASS*(obj: pointer): PGtkVButtonBoxClass
-proc gtk_vbutton_box_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_vbutton_box_get_type".}
-proc gtk_vbutton_box_new*(): PGtkVButtonBox{.cdecl, dynlib: gtklib,
-    importc: "gtk_vbutton_box_new".}
-proc GTK_TYPE_VIEWPORT*(): GType
-proc GTK_VIEWPORT*(obj: pointer): PGtkViewport
-proc GTK_VIEWPORT_CLASS*(klass: pointer): PGtkViewportClass
-proc GTK_IS_VIEWPORT*(obj: pointer): bool
-proc GTK_IS_VIEWPORT_CLASS*(klass: pointer): bool
-proc GTK_VIEWPORT_GET_CLASS*(obj: pointer): PGtkViewportClass
-proc gtk_viewport_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_viewport_get_type".}
-proc gtk_viewport_new*(hadjustment: PGtkAdjustment, vadjustment: PGtkAdjustment): PGtkViewport{.
-    cdecl, dynlib: gtklib, importc: "gtk_viewport_new".}
-proc gtk_viewport_get_hadjustment*(viewport: PGtkViewport): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_viewport_get_hadjustment".}
-proc gtk_viewport_get_vadjustment*(viewport: PGtkViewport): PGtkAdjustment{.
-    cdecl, dynlib: gtklib, importc: "gtk_viewport_get_vadjustment".}
-proc gtk_viewport_set_hadjustment*(viewport: PGtkViewport,
-                                   adjustment: PGtkAdjustment){.cdecl,
-    dynlib: gtklib, importc: "gtk_viewport_set_hadjustment".}
-proc gtk_viewport_set_vadjustment*(viewport: PGtkViewport,
-                                   adjustment: PGtkAdjustment){.cdecl,
-    dynlib: gtklib, importc: "gtk_viewport_set_vadjustment".}
-proc gtk_viewport_set_shadow_type*(viewport: PGtkViewport,
-                                   thetype: TGtkShadowType){.cdecl,
-    dynlib: gtklib, importc: "gtk_viewport_set_shadow_type".}
-proc gtk_viewport_get_shadow_type*(viewport: PGtkViewport): TGtkShadowType{.
-    cdecl, dynlib: gtklib, importc: "gtk_viewport_get_shadow_type".}
-proc GTK_TYPE_VPANED*(): GType
-proc GTK_VPANED*(obj: pointer): PGtkVPaned
-proc GTK_VPANED_CLASS*(klass: pointer): PGtkVPanedClass
-proc GTK_IS_VPANED*(obj: pointer): bool
-proc GTK_IS_VPANED_CLASS*(klass: pointer): bool
-proc GTK_VPANED_GET_CLASS*(obj: pointer): PGtkVPanedClass
-proc gtk_vpaned_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_vpaned_get_type".}
-proc gtk_vpaned_new*(): PGtkVPaned{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_vpaned_new".}
-proc GTK_TYPE_VRULER*(): GType
-proc GTK_VRULER*(obj: pointer): PGtkVRuler
-proc GTK_VRULER_CLASS*(klass: pointer): PGtkVRulerClass
-proc GTK_IS_VRULER*(obj: pointer): bool
-proc GTK_IS_VRULER_CLASS*(klass: pointer): bool
-proc GTK_VRULER_GET_CLASS*(obj: pointer): PGtkVRulerClass
-proc gtk_vruler_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_vruler_get_type".}
-proc gtk_vruler_new*(): PGtkVRuler{.cdecl, dynlib: gtklib,
-                                    importc: "gtk_vruler_new".}
-proc GTK_TYPE_VSCALE*(): GType
-proc GTK_VSCALE*(obj: pointer): PGtkVScale
-proc GTK_VSCALE_CLASS*(klass: pointer): PGtkVScaleClass
-proc GTK_IS_VSCALE*(obj: pointer): bool
-proc GTK_IS_VSCALE_CLASS*(klass: pointer): bool
-proc GTK_VSCALE_GET_CLASS*(obj: pointer): PGtkVScaleClass
-proc gtk_vscale_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-                                       importc: "gtk_vscale_get_type".}
-proc gtk_vscale_new*(adjustment: PGtkAdjustment): PGtkVScale{.cdecl,
-    dynlib: gtklib, importc: "gtk_vscale_new".}
-proc gtk_vscale_new_with_range*(min: gdouble, max: gdouble, step: gdouble): PGtkVScale{.
-    cdecl, dynlib: gtklib, importc: "gtk_vscale_new_with_range".}
-proc GTK_TYPE_VSCROLLBAR*(): GType
-proc GTK_VSCROLLBAR*(obj: pointer): PGtkVScrollbar
-proc GTK_VSCROLLBAR_CLASS*(klass: pointer): PGtkVScrollbarClass
-proc GTK_IS_VSCROLLBAR*(obj: pointer): bool
-proc GTK_IS_VSCROLLBAR_CLASS*(klass: pointer): bool
-proc GTK_VSCROLLBAR_GET_CLASS*(obj: pointer): PGtkVScrollbarClass
-proc gtk_vscrollbar_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_vscrollbar_get_type".}
-proc gtk_vscrollbar_new*(adjustment: PGtkAdjustment): PGtkVScrollbar{.cdecl,
-    dynlib: gtklib, importc: "gtk_vscrollbar_new".}
-proc GTK_TYPE_VSEPARATOR*(): GType
-proc GTK_VSEPARATOR*(obj: pointer): PGtkVSeparator
-proc GTK_VSEPARATOR_CLASS*(klass: pointer): PGtkVSeparatorClass
-proc GTK_IS_VSEPARATOR*(obj: pointer): bool
-proc GTK_IS_VSEPARATOR_CLASS*(klass: pointer): bool
-proc GTK_VSEPARATOR_GET_CLASS*(obj: pointer): PGtkVSeparatorClass
-proc gtk_vseparator_get_type*(): TGtkType{.cdecl, dynlib: gtklib,
-    importc: "gtk_vseparator_get_type".}
-proc gtk_vseparator_new*(): PGtkVSeparator{.cdecl, dynlib: gtklib,
-                                        importc: "gtk_vseparator_new".}
-proc GTK_TYPE_OBJECT*(): GType =
-  result = gtk_object_get_type()
-
-proc GTK_CHECK_CAST*(instance: Pointer, g_type: GType): PGTypeInstance =
+proc set_cursor_on_cell*(tree_view: PTreeView, path: PTreePath, 
+                                   focus_column: PTreeViewColumn, 
+                                   focus_cell: PCellRenderer, 
+                                   start_editing: gboolean){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_set_cursor_on_cell".}
+proc get_bin_window*(tree_view: PTreeView): gdk2.PWindow{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_bin_window".}
+proc get_cell_area*(tree_view: PTreeView, path: PTreePath, 
+                              column: PTreeViewColumn, rect: gdk2.PRectangle){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_get_cell_area".}
+proc get_background_area*(tree_view: PTreeView, path: PTreePath, 
+                                    column: PTreeViewColumn, rect: gdk2.PRectangle){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_get_background_area".}
+proc get_visible_rect*(tree_view: PTreeView, 
+                                 visible_rect: gdk2.PRectangle){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_visible_rect".}
+proc widget_to_tree_coords*(tree_view: PTreeView, wx: gint, wy: gint, 
+                                      tx: Pgint, ty: Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_widget_to_tree_coords".}
+proc tree_to_widget_coords*(tree_view: PTreeView, tx: gint, ty: gint, 
+                                      wx: Pgint, wy: Pgint){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_tree_to_widget_coords".}
+proc enable_model_drag_source*(tree_view: PTreeView, 
+    start_button_mask: gdk2.TModifierType, targets: PTargetEntry, n_targets: gint, 
+    actions: gdk2.TDragAction){.cdecl, dynlib: lib, 
+                              importc: "gtk_tree_view_enable_model_drag_source".}
+proc enable_model_drag_dest*(tree_view: PTreeView, 
+                                       targets: PTargetEntry, n_targets: gint, 
+                                       actions: gdk2.TDragAction){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_enable_model_drag_dest".}
+proc unset_rows_drag_source*(tree_view: PTreeView){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_unset_rows_drag_source".}
+proc unset_rows_drag_dest*(tree_view: PTreeView){.cdecl, dynlib: lib, 
+    importc: "gtk_tree_view_unset_rows_drag_dest".}
+proc set_drag_dest_row*(tree_view: PTreeView, path: PTreePath, 
+                                  pos: TTreeViewDropPosition){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_drag_dest_row".}
+proc create_row_drag_icon*(tree_view: PTreeView, path: PTreePath): gdk2.PPixmap{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_create_row_drag_icon".}
+proc set_enable_search*(tree_view: PTreeView, enable_search: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_enable_search".}
+proc get_enable_search*(tree_view: PTreeView): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_enable_search".}
+proc get_search_column*(tree_view: PTreeView): gint{.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_get_search_column".}
+proc set_search_column*(tree_view: PTreeView, column: gint){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_search_column".}
+proc get_search_equal_func*(tree_view: PTreeView): TTreeViewSearchEqualFunc{.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_get_search_equal_func".}
+proc set_search_equal_func*(tree_view: PTreeView, search_equal_func: TTreeViewSearchEqualFunc, 
+                                      search_user_data: gpointer, 
+                                      search_destroy: TDestroyNotify){.cdecl, 
+    dynlib: lib, importc: "gtk_tree_view_set_search_equal_func".}
+proc set_destroy_count_func*(tree_view: PTreeView, 
+                                       fun: TTreeDestroyCountFunc, 
+                                       data: gpointer, destroy: TDestroyNotify){.
+    cdecl, dynlib: lib, importc: "gtk_tree_view_set_destroy_count_func".}
+proc TYPE_VBUTTON_BOX*(): GType
+proc VBUTTON_BOX*(obj: pointer): PVButtonBox
+proc VBUTTON_BOX_CLASS*(klass: pointer): PVButtonBoxClass
+proc IS_VBUTTON_BOX*(obj: pointer): bool
+proc IS_VBUTTON_BOX_CLASS*(klass: pointer): bool
+proc VBUTTON_BOX_GET_CLASS*(obj: pointer): PVButtonBoxClass
+proc vbutton_box_get_type*(): TType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_vbutton_box_get_type".}
+proc vbutton_box_new*(): PVButtonBox{.cdecl, dynlib: lib, 
+                                      importc: "gtk_vbutton_box_new".}
+proc TYPE_VIEWPORT*(): GType
+proc VIEWPORT*(obj: pointer): PViewport
+proc VIEWPORT_CLASS*(klass: pointer): PViewportClass
+proc IS_VIEWPORT*(obj: pointer): bool
+proc IS_VIEWPORT_CLASS*(klass: pointer): bool
+proc VIEWPORT_GET_CLASS*(obj: pointer): PViewportClass
+proc viewport_get_type*(): TType{.cdecl, dynlib: lib, 
+                                  importc: "gtk_viewport_get_type".}
+proc viewport_new*(hadjustment: PAdjustment, vadjustment: PAdjustment): PViewport{.
+    cdecl, dynlib: lib, importc: "gtk_viewport_new".}
+proc get_hadjustment*(viewport: PViewport): PAdjustment{.cdecl, 
+    dynlib: lib, importc: "gtk_viewport_get_hadjustment".}
+proc get_vadjustment*(viewport: PViewport): PAdjustment{.cdecl, 
+    dynlib: lib, importc: "gtk_viewport_get_vadjustment".}
+proc set_hadjustment*(viewport: PViewport, adjustment: PAdjustment){.
+    cdecl, dynlib: lib, importc: "gtk_viewport_set_hadjustment".}
+proc set_vadjustment*(viewport: PViewport, adjustment: PAdjustment){.
+    cdecl, dynlib: lib, importc: "gtk_viewport_set_vadjustment".}
+proc set_shadow_type*(viewport: PViewport, thetype: TShadowType){.
+    cdecl, dynlib: lib, importc: "gtk_viewport_set_shadow_type".}
+proc get_shadow_type*(viewport: PViewport): TShadowType{.cdecl, 
+    dynlib: lib, importc: "gtk_viewport_get_shadow_type".}
+proc TYPE_VPANED*(): GType
+proc VPANED*(obj: pointer): PVPaned
+proc VPANED_CLASS*(klass: pointer): PVPanedClass
+proc IS_VPANED*(obj: pointer): bool
+proc IS_VPANED_CLASS*(klass: pointer): bool
+proc VPANED_GET_CLASS*(obj: pointer): PVPanedClass
+proc vpaned_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_vpaned_get_type".}
+proc vpaned_new*(): PVPaned{.cdecl, dynlib: lib, importc: "gtk_vpaned_new".}
+proc TYPE_VRULER*(): GType
+proc VRULER*(obj: pointer): PVRuler
+proc VRULER_CLASS*(klass: pointer): PVRulerClass
+proc IS_VRULER*(obj: pointer): bool
+proc IS_VRULER_CLASS*(klass: pointer): bool
+proc VRULER_GET_CLASS*(obj: pointer): PVRulerClass
+proc vruler_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_vruler_get_type".}
+proc vruler_new*(): PVRuler{.cdecl, dynlib: lib, importc: "gtk_vruler_new".}
+proc TYPE_VSCALE*(): GType
+proc VSCALE*(obj: pointer): PVScale
+proc VSCALE_CLASS*(klass: pointer): PVScaleClass
+proc IS_VSCALE*(obj: pointer): bool
+proc IS_VSCALE_CLASS*(klass: pointer): bool
+proc VSCALE_GET_CLASS*(obj: pointer): PVScaleClass
+proc vscale_get_type*(): TType{.cdecl, dynlib: lib, 
+                                importc: "gtk_vscale_get_type".}
+proc vscale_new*(adjustment: PAdjustment): PVScale{.cdecl, dynlib: lib, 
+    importc: "gtk_vscale_new".}
+proc vscale_new_with_range*(min: gdouble, max: gdouble, step: gdouble): PVScale{.
+    cdecl, dynlib: lib, importc: "gtk_vscale_new_with_range".}
+proc TYPE_VSCROLLBAR*(): GType
+proc VSCROLLBAR*(obj: pointer): PVScrollbar
+proc VSCROLLBAR_CLASS*(klass: pointer): PVScrollbarClass
+proc IS_VSCROLLBAR*(obj: pointer): bool
+proc IS_VSCROLLBAR_CLASS*(klass: pointer): bool
+proc VSCROLLBAR_GET_CLASS*(obj: pointer): PVScrollbarClass
+proc vscrollbar_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_vscrollbar_get_type".}
+proc vscrollbar_new*(adjustment: PAdjustment): PVScrollbar{.cdecl, dynlib: lib, 
+    importc: "gtk_vscrollbar_new".}
+proc TYPE_VSEPARATOR*(): GType
+proc VSEPARATOR*(obj: pointer): PVSeparator
+proc VSEPARATOR_CLASS*(klass: pointer): PVSeparatorClass
+proc IS_VSEPARATOR*(obj: pointer): bool
+proc IS_VSEPARATOR_CLASS*(klass: pointer): bool
+proc VSEPARATOR_GET_CLASS*(obj: pointer): PVSeparatorClass
+proc vseparator_get_type*(): TType{.cdecl, dynlib: lib, 
+                                    importc: "gtk_vseparator_get_type".}
+proc vseparator_new*(): PVSeparator{.cdecl, dynlib: lib, 
+                                     importc: "gtk_vseparator_new".}
+proc TYPE_OBJECT*(): GType = 
+  result = gtk2.object_get_type()
+
+proc CHECK_CAST*(instance: Pointer, g_type: GType): PGTypeInstance = 
   result = G_TYPE_CHECK_INSTANCE_CAST(instance, g_type)
 
-proc GTK_CHECK_CLASS_CAST*(g_class: pointer, g_type: GType): Pointer =
+proc CHECK_CLASS_CAST*(g_class: pointer, g_type: GType): Pointer = 
   result = G_TYPE_CHECK_CLASS_CAST(g_class, g_type)
 
-proc GTK_CHECK_GET_CLASS*(instance: Pointer, g_type: GType): PGTypeClass =
+proc CHECK_GET_CLASS*(instance: Pointer, g_type: GType): PGTypeClass = 
   result = G_TYPE_INSTANCE_GET_CLASS(instance, g_type)
 
-proc GTK_CHECK_TYPE*(instance: Pointer, g_type: GType): bool =
+proc CHECK_TYPE*(instance: Pointer, g_type: GType): bool = 
   result = G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)
 
-proc GTK_CHECK_CLASS_TYPE*(g_class: pointer, g_type: GType): bool =
+proc CHECK_CLASS_TYPE*(g_class: pointer, g_type: GType): bool = 
   result = G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)
 
-proc GTK_OBJECT*(anObject: pointer): PGtkObject =
-  result = cast[PGtkObject](GTK_CHECK_CAST(anObject, GTK_TYPE_OBJECT()))
+proc `OBJECT`*(anObject: pointer): PObject = 
+  result = cast[PObject](CHECK_CAST(anObject, gtk2.TYPE_OBJECT()))
 
-proc GTK_OBJECT_CLASS*(klass: pointer): PGtkObjectClass =
-  result = cast[PGtkObjectClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_OBJECT()))
+proc OBJECT_CLASS*(klass: pointer): PObjectClass = 
+  result = cast[PObjectClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_OBJECT()))
 
-proc GTK_IS_OBJECT*(anObject: pointer): bool =
-  result = GTK_CHECK_TYPE(anObject, GTK_TYPE_OBJECT())
+proc IS_OBJECT*(anObject: pointer): bool = 
+  result = CHECK_TYPE(anObject, gtk2.TYPE_OBJECT())
 
-proc GTK_IS_OBJECT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_OBJECT())
+proc IS_OBJECT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_OBJECT())
 
-proc GTK_OBJECT_GET_CLASS*(anObject: pointer): PGtkObjectClass =
-  result = cast[PGtkObjectClass](GTK_CHECK_GET_CLASS(anObject, GTK_TYPE_OBJECT()))
+proc OBJECT_GET_CLASS*(anObject: pointer): PObjectClass = 
+  result = cast[PObjectClass](CHECK_GET_CLASS(anObject, gtk2.TYPE_OBJECT()))
 
-proc GTK_OBJECT_TYPE*(anObject: pointer): GType =
+proc OBJECT_TYPE*(anObject: pointer): GType = 
   result = G_TYPE_FROM_INSTANCE(anObject)
 
-proc GTK_OBJECT_TYPE_NAME*(anObject: pointer): cstring =
-  result = g_type_name(GTK_OBJECT_TYPE(anObject))
+proc OBJECT_TYPE_NAME*(anObject: pointer): cstring = 
+  result = g_type_name(OBJECT_TYPE(anObject))
 
-proc GTK_OBJECT_FLAGS*(obj: pointer): guint32 =
-  result = (GTK_OBJECT(obj)).flags
+proc OBJECT_FLAGS*(obj: pointer): guint32 = 
+  result = (gtk2.`OBJECT`(obj)).flags
 
-proc GTK_OBJECT_FLOATING*(obj: pointer): gboolean =
-  result = ((GTK_OBJECT_FLAGS(obj)) and cint(GTK_FLOATING)) != 0'i32
+proc OBJECT_FLOATING*(obj: pointer): gboolean = 
+  result = ((OBJECT_FLAGS(obj)) and cint(FLOATING)) != 0'i32
 
-proc GTK_OBJECT_SET_FLAGS*(obj: pointer, flag: guint32) =
-  GTK_OBJECT(obj).flags = GTK_OBJECT(obj).flags or flag
+proc OBJECT_SET_FLAGS*(obj: pointer, flag: guint32) = 
+  gtk2.`OBJECT`(obj).flags = gtk2.`OBJECT`(obj).flags or flag
 
-proc GTK_OBJECT_UNSET_FLAGS*(obj: pointer, flag: guint32) =
-  GTK_OBJECT(obj) . flags = GTK_OBJECT(obj). flags and not (flag)
+proc OBJECT_UNSET_FLAGS*(obj: pointer, flag: guint32) = 
+  gtk2.`OBJECT`(obj).flags = gtk2.`OBJECT`(obj).flags and not (flag)
 
-proc gtk_object_data_try_key*(`string`: cstring): TGQuark =
+proc object_data_try_key*(`string`: cstring): TGQuark = 
   result = g_quark_try_string(`string`)
 
-proc gtk_object_data_force_id*(`string`: cstring): TGQuark =
+proc object_data_force_id*(`string`: cstring): TGQuark = 
   result = g_quark_from_string(`string`)
 
-proc GTK_CLASS_NAME*(`class`: pointer): cstring =
+proc CLASS_NAME*(`class`: pointer): cstring = 
   result = g_type_name(G_TYPE_FROM_CLASS(`class`))
 
-proc GTK_CLASS_TYPE*(`class`: pointer): GType =
+proc CLASS_TYPE*(`class`: pointer): GType = 
   result = G_TYPE_FROM_CLASS(`class`)
 
-proc GTK_TYPE_IS_OBJECT*(thetype: GType): gboolean =
-  result = g_type_is_a(thetype, GTK_TYPE_OBJECT())
+proc TYPE_IS_OBJECT*(thetype: GType): gboolean = 
+  result = g_type_is_a(thetype, gtk2.TYPE_OBJECT())
 
-proc GTK_TYPE_IDENTIFIER*(): GType =
-  result = gtk_identifier_get_type()
+proc TYPE_IDENTIFIER*(): GType = 
+  result = identifier_get_type()
 
-proc GTK_SIGNAL_FUNC*(f: pointer): TGtkSignalFunc =
-  result = cast[TGtkSignalFunc](f)
+proc SIGNAL_FUNC*(f: pointer): TSignalFunc = 
+  result = cast[TSignalFunc](f)
 
-proc gtk_type_name*(thetype: GType): cstring =
+proc type_name*(thetype: GType): cstring = 
   result = g_type_name(thetype)
 
-proc gtk_type_from_name*(name: cstring): GType =
+proc type_from_name*(name: cstring): GType = 
   result = g_type_from_name(name)
 
-proc gtk_type_parent*(thetype: GType): GType =
+proc type_parent*(thetype: GType): GType = 
   result = g_type_parent(thetype)
 
-proc gtk_type_is_a*(thetype, is_a_type: GType): gboolean =
+proc type_is_a*(thetype, is_a_type: GType): gboolean = 
   result = g_type_is_a(thetype, is_a_type)
 
-proc GTK_FUNDAMENTAL_TYPE*(thetype: GType): GType =
+proc FUNDAMENTAL_TYPE*(thetype: GType): GType = 
   result = G_TYPE_FUNDAMENTAL(thetype)
 
-proc GTK_VALUE_CHAR*(a: TGtkArg): gchar =
+proc VALUE_CHAR*(a: TArg): gchar = 
   var a = a
-  Result = cast[ptr gchar](addr(a.d))^
+  Result = cast[ptr gchar](addr(a.d))^ 
 
-proc GTK_VALUE_UCHAR*(a: TGtkArg): guchar =
+proc VALUE_UCHAR*(a: TArg): guchar = 
   var a = a
-  Result = cast[ptr guchar](addr(a.d))^
+  Result = cast[ptr guchar](addr(a.d))^ 
 
-proc GTK_VALUE_BOOL*(a: TGtkArg): gboolean =
+proc VALUE_BOOL*(a: TArg): gboolean = 
   var a = a
-  Result = cast[ptr gboolean](addr(a.d))^
+  Result = cast[ptr gboolean](addr(a.d))^ 
 
-proc GTK_VALUE_INT*(a: TGtkArg): gint =
+proc VALUE_INT*(a: TArg): gint = 
   var a = a
-  Result = cast[ptr gint](addr(a.d))^
+  Result = cast[ptr gint](addr(a.d))^ 
 
-proc GTK_VALUE_UINT*(a: TGtkArg): guint =
+proc VALUE_UINT*(a: TArg): guint = 
   var a = a
-  Result = cast[ptr guint](addr(a.d))^
+  Result = cast[ptr guint](addr(a.d))^ 
 
-proc GTK_VALUE_LONG*(a: TGtkArg): glong =
+proc VALUE_LONG*(a: TArg): glong = 
   var a = a
-  Result = cast[ptr glong](addr(a.d))^
+  Result = cast[ptr glong](addr(a.d))^ 
 
-proc GTK_VALUE_ULONG*(a: TGtkArg): gulong =
+proc VALUE_ULONG*(a: TArg): gulong = 
   var a = a
-  Result = cast[ptr gulong](addr(a.d))^
+  Result = cast[ptr gulong](addr(a.d))^ 
 
-proc GTK_VALUE_FLOAT*(a: TGtkArg): gfloat =
+proc VALUE_FLOAT*(a: TArg): gfloat = 
   var a = a
-  Result = cast[ptr gfloat](addr(a.d))^
+  Result = cast[ptr gfloat](addr(a.d))^ 
 
-proc GTK_VALUE_DOUBLE*(a: TGtkArg): gdouble =
+proc VALUE_DOUBLE*(a: TArg): gdouble = 
   var a = a
-  Result = cast[ptr gdouble](addr(a.d))^
+  Result = cast[ptr gdouble](addr(a.d))^ 
 
-proc GTK_VALUE_STRING*(a: TGtkArg): cstring =
+proc VALUE_STRING*(a: TArg): cstring = 
   var a = a
-  Result = cast[ptr cstring](addr(a.d))^
+  Result = cast[ptr cstring](addr(a.d))^ 
 
-proc GTK_VALUE_ENUM*(a: TGtkArg): gint =
+proc VALUE_ENUM*(a: TArg): gint = 
   var a = a
-  Result = cast[ptr gint](addr(a.d))^
+  Result = cast[ptr gint](addr(a.d))^ 
 
-proc GTK_VALUE_FLAGS*(a: TGtkArg): guint =
+proc VALUE_FLAGS*(a: TArg): guint = 
   var a = a
-  Result = cast[ptr guint](addr(a.d))^
+  Result = cast[ptr guint](addr(a.d))^ 
 
-proc GTK_VALUE_BOXED*(a: TGtkArg): gpointer =
+proc VALUE_BOXED*(a: TArg): gpointer = 
   var a = a
-  Result = cast[ptr gpointer](addr(a.d))^
+  Result = cast[ptr gpointer](addr(a.d))^ 
 
-proc GTK_VALUE_OBJECT*(a: TGtkArg): PGtkObject =
+proc VALUE_OBJECT*(a: TArg): PObject = 
   var a = a
-  Result = cast[ptr PGtkObject](addr(a.d))^
+  Result = cast[ptr PObject](addr(a.d))^ 
 
-proc GTK_VALUE_POINTER*(a: TGtkArg): GPointer =
+proc VALUE_POINTER*(a: TArg): GPointer = 
   var a = a
-  Result = cast[ptr gpointer](addr(a.d))^
+  Result = cast[ptr gpointer](addr(a.d))^ 
 
-proc GTK_VALUE_SIGNAL*(a: TGtkArg): TGtkArgSignalData =
+proc VALUE_SIGNAL*(a: TArg): TArgSignalData = 
   var a = a
-  Result = cast[ptr TGtkArgSignalData](addr(a.d))^
+  Result = cast[ptr TArgSignalData](addr(a.d))^ 
 
-proc GTK_RETLOC_CHAR*(a: TGtkArg): cstring =
+proc RETLOC_CHAR*(a: TArg): cstring = 
   var a = a
-  Result = cast[ptr cstring](addr(a.d))^
+  Result = cast[ptr cstring](addr(a.d))^ 
 
-proc GTK_RETLOC_UCHAR*(a: TGtkArg): Pguchar =
+proc RETLOC_UCHAR*(a: TArg): Pguchar = 
   var a = a
-  Result = cast[ptr pguchar](addr(a.d))^
+  Result = cast[ptr pguchar](addr(a.d))^ 
 
-proc GTK_RETLOC_BOOL*(a: TGtkArg): Pgboolean =
+proc RETLOC_BOOL*(a: TArg): Pgboolean = 
   var a = a
-  Result = cast[ptr pgboolean](addr(a.d))^
+  Result = cast[ptr pgboolean](addr(a.d))^ 
 
-proc GTK_RETLOC_INT*(a: TGtkArg): Pgint =
+proc RETLOC_INT*(a: TArg): Pgint = 
   var a = a
-  Result = cast[ptr pgint](addr(a.d))^
+  Result = cast[ptr pgint](addr(a.d))^ 
 
-proc GTK_RETLOC_UINT*(a: TGtkArg): Pguint =
+proc RETLOC_UINT*(a: TArg): Pguint = 
   var a = a
-  Result = cast[ptr pguint](addr(a.d))^
+  Result = cast[ptr pguint](addr(a.d))^ 
 
-proc GTK_RETLOC_LONG*(a: TGtkArg): Pglong =
+proc RETLOC_LONG*(a: TArg): Pglong = 
   var a = a
-  Result = cast[ptr pglong](addr(a.d))^
+  Result = cast[ptr pglong](addr(a.d))^ 
 
-proc GTK_RETLOC_ULONG*(a: TGtkArg): Pgulong =
+proc RETLOC_ULONG*(a: TArg): Pgulong = 
   var a = a
-  Result = cast[ptr pgulong](addr(a.d))^
+  Result = cast[ptr pgulong](addr(a.d))^ 
 
-proc GTK_RETLOC_FLOAT*(a: TGtkArg): Pgfloat =
+proc RETLOC_FLOAT*(a: TArg): Pgfloat = 
   var a = a
-  Result = cast[ptr pgfloat](addr(a.d))^
+  Result = cast[ptr pgfloat](addr(a.d))^ 
 
-proc GTK_RETLOC_DOUBLE*(a: TGtkArg): Pgdouble =
+proc RETLOC_DOUBLE*(a: TArg): Pgdouble = 
   var a = a
-  Result = cast[ptr pgdouble](addr(a.d))^
+  Result = cast[ptr pgdouble](addr(a.d))^ 
 
-proc GTK_RETLOC_STRING*(a: TGtkArg): Ppgchar =
+proc RETLOC_STRING*(a: TArg): Ppgchar = 
   var a = a
-  Result = cast[ptr Ppgchar](addr(a.d))^
+  Result = cast[ptr Ppgchar](addr(a.d))^ 
 
-proc GTK_RETLOC_ENUM*(a: TGtkArg): Pgint =
+proc RETLOC_ENUM*(a: TArg): Pgint = 
   var a = a
-  Result = cast[ptr Pgint](addr(a.d))^
+  Result = cast[ptr Pgint](addr(a.d))^ 
 
-proc GTK_RETLOC_FLAGS*(a: TGtkArg): Pguint =
+proc RETLOC_FLAGS*(a: TArg): Pguint = 
   var a = a
-  Result = cast[ptr pguint](addr(a.d))^
+  Result = cast[ptr pguint](addr(a.d))^ 
 
-proc GTK_RETLOC_BOXED*(a: TGtkArg): Pgpointer =
+proc RETLOC_BOXED*(a: TArg): Pgpointer = 
   var a = a
-  Result = cast[ptr pgpointer](addr(a.d))^
+  Result = cast[ptr pgpointer](addr(a.d))^ 
 
-proc GTK_RETLOC_OBJECT*(a: TGtkArg): PPGtkObject =
+proc RETLOC_OBJECT*(a: TArg): PPGtkObject = 
   var a = a
-  Result = cast[ptr ppgtkobject](addr(a.d))^
+  Result = cast[ptr ppgtkobject](addr(a.d))^ 
 
-proc GTK_RETLOC_POINTER*(a: TGtkArg): Pgpointer =
+proc RETLOC_POINTER*(a: TArg): Pgpointer = 
   var a = a
-  Result = cast[ptr pgpointer](addr(a.d))^
+  Result = cast[ptr pgpointer](addr(a.d))^ 
 
-proc GTK_TYPE_WIDGET*(): GType =
-  result = gtk_widget_get_type()
+proc TYPE_WIDGET*(): GType = 
+  result = widget_get_type()
 
-proc GTK_WIDGET*(widget: pointer): PGtkWidget =
-  result = cast[PGtkWidget](GTK_CHECK_CAST(widget, GTK_TYPE_WIDGET()))
+proc WIDGET*(widget: pointer): PWidget = 
+  result = cast[PWidget](CHECK_CAST(widget, TYPE_WIDGET()))
 
-proc GTK_WIDGET_CLASS*(klass: pointer): PGtkWidgetClass =
-  result = cast[PGtkWidgetClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_WIDGET()))
+proc WIDGET_CLASS*(klass: pointer): PWidgetClass = 
+  result = cast[PWidgetClass](CHECK_CLASS_CAST(klass, TYPE_WIDGET()))
 
-proc GTK_IS_WIDGET*(widget: pointer): bool =
-  result = GTK_CHECK_TYPE(widget, GTK_TYPE_WIDGET())
+proc IS_WIDGET*(widget: pointer): bool = 
+  result = CHECK_TYPE(widget, TYPE_WIDGET())
 
-proc GTK_IS_WIDGET_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_WIDGET())
+proc IS_WIDGET_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_WIDGET())
 
-proc GTK_WIDGET_GET_CLASS*(obj: pointer): PGtkWidgetClass =
-  result = cast[PGtkWidgetClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_WIDGET()))
+proc WIDGET_GET_CLASS*(obj: pointer): PWidgetClass = 
+  result = cast[PWidgetClass](CHECK_GET_CLASS(obj, TYPE_WIDGET()))
 
-proc GTK_WIDGET_TYPE*(wid: pointer): GType =
-  result = GTK_OBJECT_TYPE(wid)
+proc WIDGET_TYPE*(wid: pointer): GType = 
+  result = OBJECT_TYPE(wid)
 
-proc GTK_WIDGET_STATE*(wid: pointer): int32 =
-  result = (GTK_WIDGET(wid)) . state
+proc WIDGET_STATE*(wid: pointer): int32 = 
+  result = (WIDGET(wid)).state
 
-proc GTK_WIDGET_SAVED_STATE*(wid: pointer): int32 =
-  result = (GTK_WIDGET(wid)) . saved_state
+proc WIDGET_SAVED_STATE*(wid: pointer): int32 = 
+  result = (WIDGET(wid)).saved_state
 
-proc GTK_WIDGET_FLAGS*(wid: pointer): guint32 =
-  result = GTK_OBJECT_FLAGS(wid)
+proc WIDGET_FLAGS*(wid: pointer): guint32 = 
+  result = OBJECT_FLAGS(wid)
 
-proc GTK_WIDGET_TOPLEVEL*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_TOPLEVEL)) != 0'i32
+proc WIDGET_TOPLEVEL*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(TOPLEVEL)) != 0'i32
 
-proc GTK_WIDGET_NO_WINDOW*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_NO_WINDOW)) != 0'i32
+proc WIDGET_NO_WINDOW*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(NO_WINDOW)) != 0'i32
 
-proc GTK_WIDGET_REALIZED*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_REALIZED)) != 0'i32
+proc WIDGET_REALIZED*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(constREALIZED)) != 0'i32
 
-proc GTK_WIDGET_MAPPED*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_MAPPED)) != 0'i32
+proc WIDGET_MAPPED*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(MAPPED)) != 0'i32
 
-proc GTK_WIDGET_VISIBLE*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_VISIBLE)) != 0'i32
+proc WIDGET_VISIBLE*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(constVISIBLE)) != 0'i32
 
-proc GTK_WIDGET_DRAWABLE*(wid: pointer): gboolean =
-  result = (GTK_WIDGET_VISIBLE(wid)) and (GTK_WIDGET_MAPPED(wid))
+proc WIDGET_DRAWABLE*(wid: pointer): gboolean = 
+  result = (WIDGET_VISIBLE(wid)) and (WIDGET_MAPPED(wid))
 
-proc GTK_WIDGET_SENSITIVE*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_SENSITIVE)) != 0'i32
+proc WIDGET_SENSITIVE*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(SENSITIVE)) != 0'i32
 
-proc GTK_WIDGET_PARENT_SENSITIVE*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_PARENT_SENSITIVE)) != 0'i32
+proc WIDGET_PARENT_SENSITIVE*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(PARENT_SENSITIVE)) != 0'i32
 
-proc GTK_WIDGET_IS_SENSITIVE*(wid: pointer): gboolean =
-  result = (GTK_WIDGET_SENSITIVE(wid)) and (GTK_WIDGET_PARENT_SENSITIVE(wid))
+proc WIDGET_IS_SENSITIVE*(wid: pointer): gboolean = 
+  result = (WIDGET_SENSITIVE(wid)) and (WIDGET_PARENT_SENSITIVE(wid))
 
-proc GTK_WIDGET_CAN_FOCUS*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_CAN_FOCUS)) != 0'i32
+proc WIDGET_CAN_FOCUS*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(CAN_FOCUS)) != 0'i32
 
-proc GTK_WIDGET_HAS_FOCUS*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_HAS_FOCUS)) != 0'i32
+proc WIDGET_HAS_FOCUS*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(constHAS_FOCUS)) != 0'i32
 
-proc GTK_WIDGET_CAN_DEFAULT*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_CAN_DEFAULT)) != 0'i32
+proc WIDGET_CAN_DEFAULT*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(CAN_DEFAULT)) != 0'i32
 
-proc GTK_WIDGET_HAS_DEFAULT*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_HAS_DEFAULT)) != 0'i32
+proc WIDGET_HAS_DEFAULT*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(HAS_DEFAULT)) != 0'i32
 
-proc GTK_WIDGET_HAS_GRAB*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_HAS_GRAB)) != 0'i32
+proc WIDGET_HAS_GRAB*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(HAS_GRAB)) != 0'i32
 
-proc GTK_WIDGET_RC_STYLE*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_RC_STYLE)) != 0'i32
+proc WIDGET_RC_STYLE*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(RC_STYLE)) != 0'i32
 
-proc GTK_WIDGET_COMPOSITE_CHILD*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_COMPOSITE_CHILD)) != 0'i32
+proc WIDGET_COMPOSITE_CHILD*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(COMPOSITE_CHILD)) != 0'i32
 
-proc GTK_WIDGET_APP_PAINTABLE*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_APP_PAINTABLE)) != 0'i32
+proc WIDGET_APP_PAINTABLE*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(APP_PAINTABLE)) != 0'i32
 
-proc GTK_WIDGET_RECEIVES_DEFAULT*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_RECEIVES_DEFAULT)) != 0'i32
+proc WIDGET_RECEIVES_DEFAULT*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(RECEIVES_DEFAULT)) != 0'i32
 
-proc GTK_WIDGET_DOUBLE_BUFFERED*(wid: pointer): gboolean =
-  result = ((GTK_WIDGET_FLAGS(wid)) and cint(GTK_DOUBLE_BUFFERED)) != 0'i32
+proc WIDGET_DOUBLE_BUFFERED*(wid: pointer): gboolean = 
+  result = ((WIDGET_FLAGS(wid)) and cint(DOUBLE_BUFFERED)) != 0'i32
 
-proc GTK_TYPE_REQUISITION*(): GType =
-  result = gtk_requisition_get_type()
+proc TYPE_REQUISITION*(): GType = 
+  result = requisition_get_type()
 
-proc x_set*(a: var TGtkWidgetAuxInfo): guint =
+proc x_set*(a: var TWidgetAuxInfo): guint = 
   result = (a.flag0 and bm_TGtkWidgetAuxInfo_x_set) shr
       bp_TGtkWidgetAuxInfo_x_set
 
-proc set_x_set*(a: var TGtkWidgetAuxInfo, `x_set`: guint) =
+proc set_x_set*(a: var TWidgetAuxInfo, `x_set`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`x_set` shl bp_TGtkWidgetAuxInfo_x_set) and
       bm_TGtkWidgetAuxInfo_x_set)
 
-proc y_set*(a: var TGtkWidgetAuxInfo): guint =
+proc y_set*(a: var TWidgetAuxInfo): guint = 
   result = (a.flag0 and bm_TGtkWidgetAuxInfo_y_set) shr
       bp_TGtkWidgetAuxInfo_y_set
 
-proc set_y_set*(a: var TGtkWidgetAuxInfo, `y_set`: guint) =
+proc set_y_set*(a: var TWidgetAuxInfo, `y_set`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`y_set` shl bp_TGtkWidgetAuxInfo_y_set) and
       bm_TGtkWidgetAuxInfo_y_set)
 
-proc gtk_widget_set_visual*(widget, visual: pointer) =
+proc widget_set_visual*(widget, visual: pointer) = 
   if (Widget != nil) and (visual != nil): nil
-
-proc gtk_widget_push_visual*(visual: pointer) =
+  
+proc widget_push_visual*(visual: pointer) = 
   if (visual != nil): nil
-
-proc gtk_widget_pop_visual*() =
+  
+proc widget_pop_visual*() = 
   nil
 
-proc gtk_widget_set_default_visual*(visual: pointer) =
+proc widget_set_default_visual*(visual: pointer) = 
   if (visual != nil): nil
+  
+proc widget_set_rc_style*(widget: pointer) = 
+  set_style(cast[PWidget](widget), nil)
 
-proc gtk_widget_set_rc_style*(widget: pointer) =
-  gtk_widget_set_style(cast[PGtkWidget](widget), nil)
-
-proc gtk_widget_restore_default_style*(widget: pointer) =
-  gtk_widget_set_style(cast[PGtkWidget](widget), nil)
+proc widget_restore_default_style*(widget: pointer) = 
+  set_style(cast[PWidget](widget), nil)
 
-proc GTK_WIDGET_SET_FLAGS*(wid: PGtkWidget, flags: TGtkWidgetFlags): TGtkWidgetFlags =
-  cast[pGtkObject](wid).flags = cast[pGtkObject](wid).flags or (flags)
-  result = cast[pGtkObject](wid).flags
+proc SET_FLAGS*(wid: PWidget, flags: TWidgetFlags): TWidgetFlags = 
+  cast[pObject](wid).flags = cast[pObject](wid).flags or (flags)
+  result = cast[pObject](wid).flags
 
-proc GTK_WIDGET_UNSET_FLAGS*(wid: PGtkWidget, flags: TGtkWidgetFlags): TGtkWidgetFlags =
-  cast[pGtkObject](wid).flags = cast[pGtkObject](wid).flags and (not (flags))
-  result = cast[pGtkObject](wid).flags
+proc UNSET_FLAGS*(wid: PWidget, flags: TWidgetFlags): TWidgetFlags = 
+  cast[pObject](wid).flags = cast[pObject](wid).flags and (not (flags))
+  result = cast[pObject](wid).flags
 
-proc GTK_TYPE_MISC*(): GType =
-  result = gtk_misc_get_type()
+proc TYPE_MISC*(): GType = 
+  result = misc_get_type()
 
-proc GTK_MISC*(obj: pointer): PGtkMisc =
-  result = cast[PGtkMisc](GTK_CHECK_CAST(obj, GTK_TYPE_MISC()))
+proc MISC*(obj: pointer): PMisc = 
+  result = cast[PMisc](CHECK_CAST(obj, TYPE_MISC()))
 
-proc GTK_MISC_CLASS*(klass: pointer): PGtkMiscClass =
-  result = cast[PGtkMiscClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_MISC()))
+proc MISC_CLASS*(klass: pointer): PMiscClass = 
+  result = cast[PMiscClass](CHECK_CLASS_CAST(klass, TYPE_MISC()))
 
-proc GTK_IS_MISC*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_MISC())
+proc IS_MISC*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_MISC())
 
-proc GTK_IS_MISC_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_MISC())
+proc IS_MISC_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_MISC())
 
-proc GTK_MISC_GET_CLASS*(obj: pointer): PGtkMiscClass =
-  result = cast[PGtkMiscClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_MISC()))
+proc MISC_GET_CLASS*(obj: pointer): PMiscClass = 
+  result = cast[PMiscClass](CHECK_GET_CLASS(obj, TYPE_MISC()))
 
-proc GTK_TYPE_ACCEL_GROUP*(): GType =
-  result = gtk_accel_group_get_type()
+proc TYPE_ACCEL_GROUP*(): GType = 
+  result = accel_group_get_type()
 
-proc GTK_ACCEL_GROUP*(anObject: pointer): PGtkAccelGroup =
-  result = cast[PGtkAccelGroup](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      GTK_TYPE_ACCEL_GROUP()))
+proc ACCEL_GROUP*(anObject: pointer): PAccelGroup = 
+  result = cast[PAccelGroup](G_TYPE_CHECK_INSTANCE_CAST(anObject, 
+      TYPE_ACCEL_GROUP()))
 
-proc GTK_ACCEL_GROUP_CLASS*(klass: pointer): PGtkAccelGroupClass =
-  result = cast[PGtkAccelGroupClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_ACCEL_GROUP()))
+proc ACCEL_GROUP_CLASS*(klass: pointer): PAccelGroupClass = 
+  result = cast[PAccelGroupClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_ACCEL_GROUP()))
 
-proc GTK_IS_ACCEL_GROUP*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_ACCEL_GROUP())
+proc IS_ACCEL_GROUP*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_ACCEL_GROUP())
 
-proc GTK_IS_ACCEL_GROUP_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_ACCEL_GROUP())
+proc IS_ACCEL_GROUP_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_ACCEL_GROUP())
 
-proc GTK_ACCEL_GROUP_GET_CLASS*(obj: pointer): PGtkAccelGroupClass =
-  result = cast[PGtkAccelGroupClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GTK_TYPE_ACCEL_GROUP()))
+proc ACCEL_GROUP_GET_CLASS*(obj: pointer): PAccelGroupClass = 
+  result = cast[PAccelGroupClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_ACCEL_GROUP()))
 
-proc accel_flags*(a: var TGtkAccelKey): guint =
+proc accel_flags*(a: var TAccelKey): guint = 
   result = (a.flag0 and bm_TGtkAccelKey_accel_flags) shr
       bp_TGtkAccelKey_accel_flags
 
-proc set_accel_flags*(a: var TGtkAccelKey, `accel_flags`: guint) =
+proc set_accel_flags*(a: var TAccelKey, `accel_flags`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`accel_flags` shl bp_TGtkAccelKey_accel_flags) and
       bm_TGtkAccelKey_accel_flags)
 
-proc gtk_accel_group_ref*(AccelGroup: PGtkAccelGroup) =
+proc reference*(AccelGroup: PAccelGroup) = 
   discard g_object_ref(AccelGroup)
 
-proc gtk_accel_group_unref*(AccelGroup: PGtkAccelGroup) =
+proc unref*(AccelGroup: PAccelGroup) = 
   g_object_unref(AccelGroup)
 
-proc GTK_TYPE_CONTAINER*(): GType =
-  result = gtk_container_get_type()
+proc TYPE_CONTAINER*(): GType = 
+  result = container_get_type()
 
-proc GTK_CONTAINER*(obj: pointer): PGtkContainer =
-  result = cast[PGtkContainer](GTK_CHECK_CAST(obj, GTK_TYPE_CONTAINER()))
+proc CONTAINER*(obj: pointer): PContainer = 
+  result = cast[PContainer](CHECK_CAST(obj, TYPE_CONTAINER()))
 
-proc GTK_CONTAINER_CLASS*(klass: pointer): PGtkContainerClass =
-  result = cast[PGtkContainerClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_CONTAINER()))
+proc CONTAINER_CLASS*(klass: pointer): PContainerClass = 
+  result = cast[PContainerClass](CHECK_CLASS_CAST(klass, TYPE_CONTAINER()))
 
-proc GTK_IS_CONTAINER*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CONTAINER())
+proc IS_CONTAINER*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CONTAINER())
 
-proc GTK_IS_CONTAINER_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CONTAINER())
+proc IS_CONTAINER_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CONTAINER())
 
-proc GTK_CONTAINER_GET_CLASS*(obj: pointer): PGtkContainerClass =
-  result = cast[PGtkContainerClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CONTAINER()))
+proc CONTAINER_GET_CLASS*(obj: pointer): PContainerClass = 
+  result = cast[PContainerClass](CHECK_GET_CLASS(obj, TYPE_CONTAINER()))
 
-proc GTK_IS_RESIZE_CONTAINER*(widget: pointer): bool =
-  result = (GTK_IS_CONTAINER(widget)) and
-      ((resize_mode(cast[PGtkContainer](widget))) != cint(GTK_RESIZE_PARENT))
+proc IS_RESIZE_CONTAINER*(widget: pointer): bool = 
+  result = (IS_CONTAINER(widget)) and
+      ((resize_mode(cast[PContainer](widget))) != cint(RESIZE_PARENT))
 
-proc border_width*(a: var TGtkContainer): guint =
-  result = (a.GtkContainer_flag0 and bm_TGtkContainer_border_width) shr
+proc border_width*(a: var TContainer): guint = 
+  result = (a.Container_flag0 and bm_TGtkContainer_border_width) shr
       bp_TGtkContainer_border_width
 
-proc set_border_width*(a: var TGtkContainer, `border_width`: guint) =
-  a.GtkContainer_flag0 = a.GtkContainer_flag0 or
+proc set_border_width*(a: var TContainer, `border_width`: guint) = 
+  a.Container_flag0 = a.Container_flag0 or
       ((`border_width` shl bp_TGtkContainer_border_width) and
       bm_TGtkContainer_border_width)
 
-proc need_resize*(a: var TGtkContainer): guint =
-  result = (a.GtkContainer_flag0 and bm_TGtkContainer_need_resize) shr
+proc need_resize*(a: var TContainer): guint = 
+  result = (a.Container_flag0 and bm_TGtkContainer_need_resize) shr
       bp_TGtkContainer_need_resize
 
-proc set_need_resize*(a: var TGtkContainer, `need_resize`: guint) =
-  a.GtkContainer_flag0 = a.GtkContainer_flag0 or
+proc set_need_resize*(a: var TContainer, `need_resize`: guint) = 
+  a.Container_flag0 = a.Container_flag0 or
       ((`need_resize` shl bp_TGtkContainer_need_resize) and
       bm_TGtkContainer_need_resize)
 
-proc resize_mode*(a: PGtkContainer): guint =
-  result = (a.GtkContainer_flag0 and bm_TGtkContainer_resize_mode) shr
+proc resize_mode*(a: PContainer): guint = 
+  result = (a.Container_flag0 and bm_TGtkContainer_resize_mode) shr
       bp_TGtkContainer_resize_mode
 
-proc set_resize_mode*(a: var TGtkContainer, `resize_mode`: guint) =
-  a.GtkContainerflag0 = a.GtkContainerflag0 or
+proc set_resize_mode*(a: var TContainer, `resize_mode`: guint) = 
+  a.Containerflag0 = a.Containerflag0 or
       ((`resize_mode` shl bp_TGtkContainer_resize_mode) and
       bm_TGtkContainer_resize_mode)
 
-proc reallocate_redraws*(a: var TGtkContainer): guint =
-  result = (a.GtkContainerflag0 and bm_TGtkContainer_reallocate_redraws) shr
+proc reallocate_redraws*(a: var TContainer): guint = 
+  result = (a.Containerflag0 and bm_TGtkContainer_reallocate_redraws) shr
       bp_TGtkContainer_reallocate_redraws
 
-proc set_reallocate_redraws*(a: var TGtkContainer, `reallocate_redraws`: guint) =
-  a.GtkContainerflag0 = a.GtkContainerflag0 or
+proc set_reallocate_redraws*(a: var TContainer, `reallocate_redraws`: guint) = 
+  a.Containerflag0 = a.Containerflag0 or
       ((`reallocate_redraws` shl bp_TGtkContainer_reallocate_redraws) and
       bm_TGtkContainer_reallocate_redraws)
 
-proc has_focus_chain*(a: var TGtkContainer): guint =
-  result = (a.GtkContainerflag0 and bm_TGtkContainer_has_focus_chain) shr
+proc has_focus_chain*(a: var TContainer): guint = 
+  result = (a.Containerflag0 and bm_TGtkContainer_has_focus_chain) shr
       bp_TGtkContainer_has_focus_chain
 
-proc set_has_focus_chain*(a: var TGtkContainer, `has_focus_chain`: guint) =
-  a.GtkContainerflag0 = a.GtkContainerflag0 or
+proc set_has_focus_chain*(a: var TContainer, `has_focus_chain`: guint) = 
+  a.Containerflag0 = a.Containerflag0 or
       ((`has_focus_chain` shl bp_TGtkContainer_has_focus_chain) and
       bm_TGtkContainer_has_focus_chain)
 
-proc GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID*(anObject: pointer,
-    property_id: guint, pspec: pointer) =
-  write(stdout, "WARNING: invalid child property id\n")
+proc CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID*(anObject: pointer, 
+    property_id: guint, pspec: pointer) = 
+  write(stdout, "WARNING: invalid child property id\x0A")
 
-proc GTK_TYPE_BIN*(): GType =
-  result = gtk_bin_get_type()
+proc TYPE_BIN*(): GType = 
+  result = bin_get_type()
 
-proc GTK_BIN*(obj: pointer): PGtkBin =
-  result = cast[PGtkBin](GTK_CHECK_CAST(obj, GTK_TYPE_BIN()))
+proc BIN*(obj: pointer): PBin = 
+  result = cast[PBin](CHECK_CAST(obj, TYPE_BIN()))
 
-proc GTK_BIN_CLASS*(klass: pointer): PGtkBinClass =
-  result = cast[PGtkBinClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_BIN()))
+proc BIN_CLASS*(klass: pointer): PBinClass = 
+  result = cast[PBinClass](CHECK_CLASS_CAST(klass, TYPE_BIN()))
 
-proc GTK_IS_BIN*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_BIN())
+proc IS_BIN*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_BIN())
 
-proc GTK_IS_BIN_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_BIN())
+proc IS_BIN_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_BIN())
 
-proc GTK_BIN_GET_CLASS*(obj: pointer): PGtkBinClass =
-  result = cast[PGtkBinClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_BIN()))
+proc BIN_GET_CLASS*(obj: pointer): PBinClass = 
+  result = cast[PBinClass](CHECK_GET_CLASS(obj, TYPE_BIN()))
 
-proc GTK_TYPE_WINDOW*(): GType =
-  result = gtk_window_get_type()
+proc TYPE_WINDOW*(): GType = 
+  result = window_get_type()
 
-proc GTK_WINDOW*(obj: pointer): PGtkWindow =
-  result = cast[PGtkWindow](GTK_CHECK_CAST(obj, GTK_TYPE_WINDOW()))
+proc WINDOW*(obj: pointer): PWindow = 
+  result = cast[PWindow](CHECK_CAST(obj, gtk2.TYPE_WINDOW()))
 
-proc GTK_WINDOW_CLASS*(klass: pointer): PGtkWindowClass =
-  result = cast[PGtkWindowClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_WINDOW()))
+proc WINDOW_CLASS*(klass: pointer): PWindowClass = 
+  result = cast[PWindowClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_WINDOW()))
 
-proc GTK_IS_WINDOW*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_WINDOW())
+proc IS_WINDOW*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, gtk2.TYPE_WINDOW())
 
-proc GTK_IS_WINDOW_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_WINDOW())
+proc IS_WINDOW_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_WINDOW())
 
-proc GTK_WINDOW_GET_CLASS*(obj: pointer): PGtkWindowClass =
-  result = cast[PGtkWindowClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_WINDOW()))
+proc WINDOW_GET_CLASS*(obj: pointer): PWindowClass = 
+  result = cast[PWindowClass](CHECK_GET_CLASS(obj, gtk2.TYPE_WINDOW()))
 
-proc allow_shrink*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_allow_shrink) shr
+proc allow_shrink*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_allow_shrink) shr
       bp_TGtkWindow_allow_shrink
 
-proc set_allow_shrink*(a: var TGtkWindow, `allow_shrink`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_allow_shrink*(a: var TWindow, `allow_shrink`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`allow_shrink` shl bp_TGtkWindow_allow_shrink) and
       bm_TGtkWindow_allow_shrink)
 
-proc allow_grow*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_allow_grow) shr
+proc allow_grow*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_allow_grow) shr
       bp_TGtkWindow_allow_grow
 
-proc set_allow_grow*(a: var TGtkWindow, `allow_grow`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_allow_grow*(a: var TWindow, `allow_grow`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`allow_grow` shl bp_TGtkWindow_allow_grow) and
       bm_TGtkWindow_allow_grow)
 
-proc configure_notify_received*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_configure_notify_received) shr
+proc configure_notify_received*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_configure_notify_received) shr
       bp_TGtkWindow_configure_notify_received
 
-proc set_configure_notify_received*(a: var TGtkWindow,
-                                    `configure_notify_received`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_configure_notify_received*(a: var TWindow, 
+                                    `configure_notify_received`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`configure_notify_received` shl
       bp_TGtkWindow_configure_notify_received) and
       bm_TGtkWindow_configure_notify_received)
 
-proc need_default_position*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_need_default_position) shr
+proc need_default_position*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_need_default_position) shr
       bp_TGtkWindow_need_default_position
 
-proc set_need_default_position*(a: var TGtkWindow,
-                                `need_default_position`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_need_default_position*(a: var TWindow, `need_default_position`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`need_default_position` shl bp_TGtkWindow_need_default_position) and
       bm_TGtkWindow_need_default_position)
 
-proc need_default_size*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_need_default_size) shr
+proc need_default_size*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_need_default_size) shr
       bp_TGtkWindow_need_default_size
 
-proc set_need_default_size*(a: var TGtkWindow, `need_default_size`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_need_default_size*(a: var TWindow, `need_default_size`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`need_default_size` shl bp_TGtkWindow_need_default_size) and
       bm_TGtkWindow_need_default_size)
 
-proc position*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_position) shr bp_TGtkWindow_position
+proc position*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_position) shr
+      bp_TGtkWindow_position
 
-proc set_position*(a: var TGtkWindow, `position`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_position*(a: var TWindow, `position`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`position` shl bp_TGtkWindow_position) and bm_TGtkWindow_position)
 
-proc get_type*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_type) shr bp_TGtkWindow_type
+proc get_type*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_type) shr bp_TGtkWindow_type
 
-proc set_type*(a: var TGtkWindow, `type`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_type*(a: var TWindow, `type`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`type` shl bp_TGtkWindow_type) and bm_TGtkWindow_type)
 
-proc has_user_ref_count*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_has_user_ref_count) shr
+proc has_user_ref_count*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_has_user_ref_count) shr
       bp_TGtkWindow_has_user_ref_count
 
-proc set_has_user_ref_count*(a: var TGtkWindow, `has_user_ref_count`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_has_user_ref_count*(a: var TWindow, `has_user_ref_count`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`has_user_ref_count` shl bp_TGtkWindow_has_user_ref_count) and
       bm_TGtkWindow_has_user_ref_count)
 
-proc has_focus*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_has_focus) shr bp_TGtkWindow_has_focus
+proc has_focus*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_has_focus) shr
+      bp_TGtkWindow_has_focus
 
-proc set_has_focus*(a: var TGtkWindow, `has_focus`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_has_focus*(a: var TWindow, `has_focus`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`has_focus` shl bp_TGtkWindow_has_focus) and bm_TGtkWindow_has_focus)
 
-proc modal*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_modal) shr bp_TGtkWindow_modal
+proc modal*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_modal) shr bp_TGtkWindow_modal
 
-proc set_modal*(a: var TGtkWindow, `modal`: guint) =
-  a.GtkWindow_flag0 = a.GtkWindow_flag0 or
+proc set_modal*(a: var TWindow, `modal`: guint) = 
+  a.Window_flag0 = a.Window_flag0 or
       ((`modal` shl bp_TGtkWindow_modal) and bm_TGtkWindow_modal)
 
-proc destroy_with_parent*(a: var TGtkWindow): guint =
-  result = (a.GtkWindow_flag0 and bm_TGtkWindow_destroy_with_parent) shr
+proc destroy_with_parent*(a: var TWindow): guint = 
+  result = (a.Window_flag0 and bm_TGtkWindow_destroy_with_parent) shr
       bp_TGtkWindow_destroy_with_parent
 
-proc set_destroy_with_parent*(a: var TGtkWindow, `destroy_with_parent`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_destroy_with_parent*(a: var TWindow, `destroy_with_parent`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`destroy_with_parent` shl bp_TGtkWindow_destroy_with_parent) and
       bm_TGtkWindow_destroy_with_parent)
 
-proc has_frame*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_has_frame) shr bp_TGtkWindow_has_frame
+proc has_frame*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_has_frame) shr
+      bp_TGtkWindow_has_frame
 
-proc set_has_frame*(a: var TGtkWindow, `has_frame`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_has_frame*(a: var TWindow, `has_frame`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`has_frame` shl bp_TGtkWindow_has_frame) and bm_TGtkWindow_has_frame)
 
-proc iconify_initially*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_iconify_initially) shr
+proc iconify_initially*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_iconify_initially) shr
       bp_TGtkWindow_iconify_initially
 
-proc set_iconify_initially*(a: var TGtkWindow, `iconify_initially`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_iconify_initially*(a: var TWindow, `iconify_initially`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`iconify_initially` shl bp_TGtkWindow_iconify_initially) and
       bm_TGtkWindow_iconify_initially)
 
-proc stick_initially*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_stick_initially) shr
+proc stick_initially*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_stick_initially) shr
       bp_TGtkWindow_stick_initially
 
-proc set_stick_initially*(a: var TGtkWindow, `stick_initially`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_stick_initially*(a: var TWindow, `stick_initially`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`stick_initially` shl bp_TGtkWindow_stick_initially) and
       bm_TGtkWindow_stick_initially)
 
-proc maximize_initially*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_maximize_initially) shr
+proc maximize_initially*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_maximize_initially) shr
       bp_TGtkWindow_maximize_initially
 
-proc set_maximize_initially*(a: var TGtkWindow, `maximize_initially`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_maximize_initially*(a: var TWindow, `maximize_initially`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`maximize_initially` shl bp_TGtkWindow_maximize_initially) and
       bm_TGtkWindow_maximize_initially)
 
-proc decorated*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_decorated) shr bp_TGtkWindow_decorated
+proc decorated*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_decorated) shr
+      bp_TGtkWindow_decorated
 
-proc set_decorated*(a: var TGtkWindow, `decorated`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_decorated*(a: var TWindow, `decorated`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`decorated` shl bp_TGtkWindow_decorated) and bm_TGtkWindow_decorated)
 
-proc type_hint*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_type_hint) shr bp_TGtkWindow_type_hint
+proc type_hint*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_type_hint) shr
+      bp_TGtkWindow_type_hint
 
-proc set_type_hint*(a: var TGtkWindow, `type_hint`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_type_hint*(a: var TWindow, `type_hint`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`type_hint` shl bp_TGtkWindow_type_hint) and bm_TGtkWindow_type_hint)
 
-proc gravity*(a: var TGtkWindow): guint =
-  result = (a.GtkWindowflag0 and bm_TGtkWindow_gravity) shr bp_TGtkWindow_gravity
+proc gravity*(a: var TWindow): guint = 
+  result = (a.Windowflag0 and bm_TGtkWindow_gravity) shr
+      bp_TGtkWindow_gravity
 
-proc set_gravity*(a: var TGtkWindow, `gravity`: guint) =
-  a.GtkWindowflag0 = a.GtkWindowflag0 or
+proc set_gravity*(a: var TWindow, `gravity`: guint) = 
+  a.Windowflag0 = a.Windowflag0 or
       ((`gravity` shl bp_TGtkWindow_gravity) and bm_TGtkWindow_gravity)
 
-proc GTK_TYPE_WINDOW_GROUP*(): GType =
-  result = gtk_window_group_get_type()
+proc TYPE_WINDOW_GROUP*(): GType = 
+  result = window_group_get_type()
 
-proc GTK_WINDOW_GROUP*(anObject: pointer): PGtkWindowGroup =
-  result = cast[PGtkWindowGroup](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      GTK_TYPE_WINDOW_GROUP()))
+proc WINDOW_GROUP*(anObject: pointer): PWindowGroup = 
+  result = cast[PWindowGroup](G_TYPE_CHECK_INSTANCE_CAST(anObject, 
+      TYPE_WINDOW_GROUP()))
 
-proc GTK_WINDOW_GROUP_CLASS*(klass: pointer): PGtkWindowGroupClass =
-  result = cast[PGtkWindowGroupClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_WINDOW_GROUP()))
+proc WINDOW_GROUP_CLASS*(klass: pointer): PWindowGroupClass = 
+  result = cast[PWindowGroupClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_WINDOW_GROUP()))
 
-proc GTK_IS_WINDOW_GROUP*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_WINDOW_GROUP())
+proc IS_WINDOW_GROUP*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_WINDOW_GROUP())
 
-proc GTK_IS_WINDOW_GROUP_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_WINDOW_GROUP())
+proc IS_WINDOW_GROUP_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_WINDOW_GROUP())
 
-proc GTK_WINDOW_GROUP_GET_CLASS*(obj: pointer): PGtkWindowGroupClass =
-  result = cast[PGtkWindowGroupClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GTK_TYPE_WINDOW_GROUP()))
+proc WINDOW_GROUP_GET_CLASS*(obj: pointer): PWindowGroupClass = 
+  result = cast[PWindowGroupClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_WINDOW_GROUP()))
 
-proc gtk_window_position*(window: PGtkWindow, position: TGtkWindowPosition) =
-  gtk_window_set_position(window, position)
+proc position*(window: PWindow, position: TWindowPosition) = 
+  set_position(window, position)
 
-proc GTK_TYPE_LABEL*(): GType =
-  result = gtk_label_get_type()
+proc TYPE_LABEL*(): GType = 
+  result = label_get_type()
 
-proc GTK_LABEL*(obj: pointer): PGtkLabel =
-  result = cast[PGtkLabel](GTK_CHECK_CAST(obj, GTK_TYPE_LABEL()))
+proc LABEL*(obj: pointer): PLabel = 
+  result = cast[PLabel](CHECK_CAST(obj, TYPE_LABEL()))
 
-proc GTK_LABEL_CLASS*(klass: pointer): PGtkLabelClass =
-  result = cast[PGtkLabelClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_LABEL()))
+proc LABEL_CLASS*(klass: pointer): PLabelClass = 
+  result = cast[PLabelClass](CHECK_CLASS_CAST(klass, TYPE_LABEL()))
 
-proc GTK_IS_LABEL*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_LABEL())
+proc IS_LABEL*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_LABEL())
 
-proc GTK_IS_LABEL_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_LABEL())
+proc IS_LABEL_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_LABEL())
 
-proc GTK_LABEL_GET_CLASS*(obj: pointer): PGtkLabelClass =
-  result = cast[PGtkLabelClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_LABEL()))
+proc LABEL_GET_CLASS*(obj: pointer): PLabelClass = 
+  result = cast[PLabelClass](CHECK_GET_CLASS(obj, TYPE_LABEL()))
 
-proc jtype*(a: var TGtkLabel): guint =
-  result = (a.GtkLabelflag0 and bm_TGtkLabel_jtype) shr bp_TGtkLabel_jtype
+proc jtype*(a: var TLabel): guint = 
+  result = (a.Labelflag0 and bm_TGtkLabel_jtype) shr bp_TGtkLabel_jtype
 
-proc set_jtype*(a: var TGtkLabel, `jtype`: guint) =
-  a.GtkLabelflag0 = a.GtkLabelflag0 or
+proc set_jtype*(a: var TLabel, `jtype`: guint) = 
+  a.Labelflag0 = a.Labelflag0 or
       (int16(`jtype` shl bp_TGtkLabel_jtype) and bm_TGtkLabel_jtype)
 
-proc wrap*(a: var TGtkLabel): guint =
-  result = (a.GtkLabelflag0 and bm_TGtkLabel_wrap) shr bp_TGtkLabel_wrap
+proc wrap*(a: var TLabel): guint = 
+  result = (a.Labelflag0 and bm_TGtkLabel_wrap) shr bp_TGtkLabel_wrap
 
-proc set_wrap*(a: var TGtkLabel, `wrap`: guint) =
-  a.GtkLabelflag0 = a.GtkLabelflag0 or (int16(`wrap` shl bp_TGtkLabel_wrap) and bm_TGtkLabel_wrap)
+proc set_wrap*(a: var TLabel, `wrap`: guint) = 
+  a.Labelflag0 = a.Labelflag0 or
+      (int16(`wrap` shl bp_TGtkLabel_wrap) and bm_TGtkLabel_wrap)
 
-proc use_underline*(a: var TGtkLabel): guint =
-  result = (a.GtkLabelflag0 and bm_TGtkLabel_use_underline) shr
+proc use_underline*(a: var TLabel): guint = 
+  result = (a.Labelflag0 and bm_TGtkLabel_use_underline) shr
       bp_TGtkLabel_use_underline
 
-proc set_use_underline*(a: var TGtkLabel, `use_underline`: guint) =
-  a.GtkLabelflag0 = a.GtkLabelflag0 or
+proc set_use_underline*(a: var TLabel, `use_underline`: guint) = 
+  a.Labelflag0 = a.Labelflag0 or
       (int16(`use_underline` shl bp_TGtkLabel_use_underline) and
       bm_TGtkLabel_use_underline)
 
-proc use_markup*(a: var TGtkLabel): guint =
-  result = (a.GtkLabelflag0 and bm_TGtkLabel_use_markup) shr bp_TGtkLabel_use_markup
+proc use_markup*(a: var TLabel): guint = 
+  result = (a.Labelflag0 and bm_TGtkLabel_use_markup) shr
+      bp_TGtkLabel_use_markup
 
-proc set_use_markup*(a: var TGtkLabel, `use_markup`: guint) =
-  a.GtkLabelflag0 = a.GtkLabelflag0 or
-      (int16(`use_markup` shl bp_TGtkLabel_use_markup) and bm_TGtkLabel_use_markup)
+proc set_use_markup*(a: var TLabel, `use_markup`: guint) = 
+  a.Labelflag0 = a.Labelflag0 or
+      (int16(`use_markup` shl bp_TGtkLabel_use_markup) and
+      bm_TGtkLabel_use_markup)
 
-proc GTK_TYPE_ACCEL_LABEL*(): GType =
-  result = gtk_accel_label_get_type()
+proc TYPE_ACCEL_LABEL*(): GType = 
+  result = accel_label_get_type()
 
-proc GTK_ACCEL_LABEL*(obj: pointer): PGtkAccelLabel =
-  result = cast[PGtkAccelLabel](GTK_CHECK_CAST(obj, GTK_TYPE_ACCEL_LABEL()))
+proc ACCEL_LABEL*(obj: pointer): PAccelLabel = 
+  result = cast[PAccelLabel](CHECK_CAST(obj, TYPE_ACCEL_LABEL()))
 
-proc GTK_ACCEL_LABEL_CLASS*(klass: pointer): PGtkAccelLabelClass =
-  result = cast[PGtkAccelLabelClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ACCEL_LABEL()))
+proc ACCEL_LABEL_CLASS*(klass: pointer): PAccelLabelClass = 
+  result = cast[PAccelLabelClass](CHECK_CLASS_CAST(klass, TYPE_ACCEL_LABEL()))
 
-proc GTK_IS_ACCEL_LABEL*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ACCEL_LABEL())
+proc IS_ACCEL_LABEL*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ACCEL_LABEL())
 
-proc GTK_IS_ACCEL_LABEL_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ACCEL_LABEL())
+proc IS_ACCEL_LABEL_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ACCEL_LABEL())
 
-proc GTK_ACCEL_LABEL_GET_CLASS*(obj: pointer): PGtkAccelLabelClass =
-  result = cast[PGtkAccelLabelClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ACCEL_LABEL()))
+proc ACCEL_LABEL_GET_CLASS*(obj: pointer): PAccelLabelClass = 
+  result = cast[PAccelLabelClass](CHECK_GET_CLASS(obj, TYPE_ACCEL_LABEL()))
 
-proc latin1_to_char*(a: var TGtkAccelLabelClass): guint =
-  result = (a.GtkAccelLabelClassflag0 and bm_TGtkAccelLabelClass_latin1_to_char) shr
+proc latin1_to_char*(a: var TAccelLabelClass): guint = 
+  result = (a.AccelLabelClassflag0 and bm_TGtkAccelLabelClass_latin1_to_char) shr
       bp_TGtkAccelLabelClass_latin1_to_char
 
-proc set_latin1_to_char*(a: var TGtkAccelLabelClass, `latin1_to_char`: guint) =
-  a.GtkAccelLabelClassflag0 = a.GtkAccelLabelClassflag0 or
+proc set_latin1_to_char*(a: var TAccelLabelClass, `latin1_to_char`: guint) = 
+  a.AccelLabelClassflag0 = a.AccelLabelClassflag0 or
       (int16(`latin1_to_char` shl bp_TGtkAccelLabelClass_latin1_to_char) and
       bm_TGtkAccelLabelClass_latin1_to_char)
 
-proc gtk_accel_label_accelerator_width*(accel_label: PGtkAccelLabel): guint =
-  result = gtk_accel_label_get_accel_width(accel_label)
+proc accelerator_width*(accel_label: PAccelLabel): guint = 
+  result = get_accel_width(accel_label)
 
-proc GTK_TYPE_ACCESSIBLE*(): GType =
-  result = gtk_accessible_get_type()
+proc TYPE_ACCESSIBLE*(): GType = 
+  result = accessible_get_type()
 
-proc GTK_ACCESSIBLE*(obj: pointer): PGtkAccessible =
-  result = cast[PGtkAccessible](GTK_CHECK_CAST(obj, GTK_TYPE_ACCESSIBLE()))
+proc ACCESSIBLE*(obj: pointer): PAccessible = 
+  result = cast[PAccessible](CHECK_CAST(obj, TYPE_ACCESSIBLE()))
 
-proc GTK_ACCESSIBLE_CLASS*(klass: pointer): PGtkAccessibleClass =
-  result = cast[PGtkAccessibleClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ACCESSIBLE()))
+proc ACCESSIBLE_CLASS*(klass: pointer): PAccessibleClass = 
+  result = cast[PAccessibleClass](CHECK_CLASS_CAST(klass, TYPE_ACCESSIBLE()))
 
-proc GTK_IS_ACCESSIBLE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ACCESSIBLE())
+proc IS_ACCESSIBLE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ACCESSIBLE())
 
-proc GTK_IS_ACCESSIBLE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ACCESSIBLE())
+proc IS_ACCESSIBLE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ACCESSIBLE())
 
-proc GTK_ACCESSIBLE_GET_CLASS*(obj: pointer): PGtkAccessibleClass =
-  result = cast[PGtkAccessibleClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ACCESSIBLE()))
+proc ACCESSIBLE_GET_CLASS*(obj: pointer): PAccessibleClass = 
+  result = cast[PAccessibleClass](CHECK_GET_CLASS(obj, TYPE_ACCESSIBLE()))
 
-proc GTK_TYPE_ADJUSTMENT*(): GType =
-  result = gtk_adjustment_get_type()
+proc TYPE_ADJUSTMENT*(): GType = 
+  result = adjustment_get_type()
 
-proc GTK_ADJUSTMENT*(obj: pointer): PGtkAdjustment =
-  result = cast[PGtkAdjustment](GTK_CHECK_CAST(obj, GTK_TYPE_ADJUSTMENT()))
+proc ADJUSTMENT*(obj: pointer): PAdjustment = 
+  result = cast[PAdjustment](CHECK_CAST(obj, TYPE_ADJUSTMENT()))
 
-proc GTK_ADJUSTMENT_CLASS*(klass: pointer): PGtkAdjustmentClass =
-  result = cast[PGtkAdjustmentClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ADJUSTMENT()))
+proc ADJUSTMENT_CLASS*(klass: pointer): PAdjustmentClass = 
+  result = cast[PAdjustmentClass](CHECK_CLASS_CAST(klass, TYPE_ADJUSTMENT()))
 
-proc GTK_IS_ADJUSTMENT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ADJUSTMENT())
+proc IS_ADJUSTMENT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ADJUSTMENT())
 
-proc GTK_IS_ADJUSTMENT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ADJUSTMENT())
+proc IS_ADJUSTMENT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ADJUSTMENT())
 
-proc GTK_ADJUSTMENT_GET_CLASS*(obj: pointer): PGtkAdjustmentClass =
-  result = cast[PGtkAdjustmentClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ADJUSTMENT()))
+proc ADJUSTMENT_GET_CLASS*(obj: pointer): PAdjustmentClass = 
+  result = cast[PAdjustmentClass](CHECK_GET_CLASS(obj, TYPE_ADJUSTMENT()))
 
-proc GTK_TYPE_ALIGNMENT*(): GType =
-  result = gtk_alignment_get_type()
+proc TYPE_ALIGNMENT*(): GType = 
+  result = alignment_get_type()
 
-proc GTK_ALIGNMENT*(obj: pointer): PGtkAlignment =
-  result = cast[PGtkAlignment](GTK_CHECK_CAST(obj, GTK_TYPE_ALIGNMENT()))
+proc ALIGNMENT*(obj: pointer): PAlignment = 
+  result = cast[PAlignment](CHECK_CAST(obj, TYPE_ALIGNMENT()))
 
-proc GTK_ALIGNMENT_CLASS*(klass: pointer): PGtkAlignmentClass =
-  result = cast[PGtkAlignmentClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ALIGNMENT()))
+proc ALIGNMENT_CLASS*(klass: pointer): PAlignmentClass = 
+  result = cast[PAlignmentClass](CHECK_CLASS_CAST(klass, TYPE_ALIGNMENT()))
 
-proc GTK_IS_ALIGNMENT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ALIGNMENT())
+proc IS_ALIGNMENT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ALIGNMENT())
 
-proc GTK_IS_ALIGNMENT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ALIGNMENT())
+proc IS_ALIGNMENT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ALIGNMENT())
 
-proc GTK_ALIGNMENT_GET_CLASS*(obj: pointer): PGtkAlignmentClass =
-  result = cast[PGtkAlignmentClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ALIGNMENT()))
+proc ALIGNMENT_GET_CLASS*(obj: pointer): PAlignmentClass = 
+  result = cast[PAlignmentClass](CHECK_GET_CLASS(obj, TYPE_ALIGNMENT()))
 
-proc GTK_TYPE_FRAME*(): GType =
-  result = gtk_frame_get_type()
+proc TYPE_FRAME*(): GType = 
+  result = frame_get_type()
 
-proc GTK_FRAME*(obj: pointer): PGtkFrame =
-  result = cast[PGtkFrame](GTK_CHECK_CAST(obj, GTK_TYPE_FRAME()))
+proc FRAME*(obj: pointer): PFrame = 
+  result = cast[PFrame](CHECK_CAST(obj, TYPE_FRAME()))
 
-proc GTK_FRAME_CLASS*(klass: pointer): PGtkFrameClass =
-  result = cast[PGtkFrameClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_FRAME()))
+proc FRAME_CLASS*(klass: pointer): PFrameClass = 
+  result = cast[PFrameClass](CHECK_CLASS_CAST(klass, TYPE_FRAME()))
 
-proc GTK_IS_FRAME*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_FRAME())
+proc IS_FRAME*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_FRAME())
 
-proc GTK_IS_FRAME_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_FRAME())
+proc IS_FRAME_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_FRAME())
 
-proc GTK_FRAME_GET_CLASS*(obj: pointer): PGtkFrameClass =
-  result = cast[PGtkFrameClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_FRAME()))
+proc FRAME_GET_CLASS*(obj: pointer): PFrameClass = 
+  result = cast[PFrameClass](CHECK_GET_CLASS(obj, TYPE_FRAME()))
 
-proc GTK_TYPE_ASPECT_FRAME*(): GType =
-  result = gtk_aspect_frame_get_type()
+proc TYPE_ASPECT_FRAME*(): GType = 
+  result = aspect_frame_get_type()
 
-proc GTK_ASPECT_FRAME*(obj: pointer): PGtkAspectFrame =
-  result = cast[PGtkAspectFrame](GTK_CHECK_CAST(obj, GTK_TYPE_ASPECT_FRAME()))
+proc ASPECT_FRAME*(obj: pointer): PAspectFrame = 
+  result = cast[PAspectFrame](CHECK_CAST(obj, TYPE_ASPECT_FRAME()))
 
-proc GTK_ASPECT_FRAME_CLASS*(klass: pointer): PGtkAspectFrameClass =
-  result = cast[PGtkAspectFrameClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_ASPECT_FRAME()))
+proc ASPECT_FRAME_CLASS*(klass: pointer): PAspectFrameClass = 
+  result = cast[PAspectFrameClass](CHECK_CLASS_CAST(klass, TYPE_ASPECT_FRAME()))
 
-proc GTK_IS_ASPECT_FRAME*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ASPECT_FRAME())
+proc IS_ASPECT_FRAME*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ASPECT_FRAME())
 
-proc GTK_IS_ASPECT_FRAME_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ASPECT_FRAME())
+proc IS_ASPECT_FRAME_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ASPECT_FRAME())
 
-proc GTK_ASPECT_FRAME_GET_CLASS*(obj: pointer): PGtkAspectFrameClass =
-  result = cast[PGtkAspectFrameClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ASPECT_FRAME()))
+proc ASPECT_FRAME_GET_CLASS*(obj: pointer): PAspectFrameClass = 
+  result = cast[PAspectFrameClass](CHECK_GET_CLASS(obj, TYPE_ASPECT_FRAME()))
 
-proc GTK_TYPE_ARROW*(): GType =
-  result = gtk_arrow_get_type()
+proc TYPE_ARROW*(): GType = 
+  result = arrow_get_type()
 
-proc GTK_ARROW*(obj: pointer): PGtkArrow =
-  result = cast[PGtkArrow](GTK_CHECK_CAST(obj, GTK_TYPE_ARROW()))
+proc ARROW*(obj: pointer): PArrow = 
+  result = cast[PArrow](CHECK_CAST(obj, TYPE_ARROW()))
 
-proc GTK_ARROW_CLASS*(klass: pointer): PGtkArrowClass =
-  result = cast[PGtkArrowClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ARROW()))
+proc ARROW_CLASS*(klass: pointer): PArrowClass = 
+  result = cast[PArrowClass](CHECK_CLASS_CAST(klass, TYPE_ARROW()))
 
-proc GTK_IS_ARROW*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ARROW())
+proc IS_ARROW*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ARROW())
 
-proc GTK_IS_ARROW_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ARROW())
+proc IS_ARROW_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ARROW())
 
-proc GTK_ARROW_GET_CLASS*(obj: pointer): PGtkArrowClass =
-  result = cast[PGtkArrowClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ARROW()))
+proc ARROW_GET_CLASS*(obj: pointer): PArrowClass = 
+  result = cast[PArrowClass](CHECK_GET_CLASS(obj, TYPE_ARROW()))
 
-proc parsed*(a: var TGtkBindingSet): guint =
+proc parsed*(a: var TBindingSet): guint = 
   result = (a.flag0 and bm_TGtkBindingSet_parsed) shr
       bp_TGtkBindingSet_parsed
 
-proc set_parsed*(a: var TGtkBindingSet, `parsed`: guint) =
+proc set_parsed*(a: var TBindingSet, `parsed`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`parsed` shl bp_TGtkBindingSet_parsed) and bm_TGtkBindingSet_parsed)
+      (int16(`parsed` shl bp_TGtkBindingSet_parsed) and
+      bm_TGtkBindingSet_parsed)
 
-proc destroyed*(a: var TGtkBindingEntry): guint =
+proc destroyed*(a: var TBindingEntry): guint = 
   result = (a.flag0 and bm_TGtkBindingEntry_destroyed) shr
       bp_TGtkBindingEntry_destroyed
 
-proc set_destroyed*(a: var TGtkBindingEntry, `destroyed`: guint) =
+proc set_destroyed*(a: var TBindingEntry, `destroyed`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`destroyed` shl bp_TGtkBindingEntry_destroyed) and
       bm_TGtkBindingEntry_destroyed)
 
-proc in_emission*(a: var TGtkBindingEntry): guint =
+proc in_emission*(a: var TBindingEntry): guint = 
   result = (a.flag0 and bm_TGtkBindingEntry_in_emission) shr
       bp_TGtkBindingEntry_in_emission
 
-proc set_in_emission*(a: var TGtkBindingEntry, `in_emission`: guint) =
+proc set_in_emission*(a: var TBindingEntry, `in_emission`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`in_emission` shl bp_TGtkBindingEntry_in_emission) and
       bm_TGtkBindingEntry_in_emission)
 
-proc gtk_binding_entry_add*(binding_set: PGtkBindingSet, keyval: guint,
-                            modifiers: TGdkModifierType) =
-  gtk_binding_entry_clear(binding_set, keyval, modifiers)
+proc entry_add*(binding_set: PBindingSet, keyval: guint, 
+                        modifiers: gdk2.TModifierType) = 
+  entry_clear(binding_set, keyval, modifiers)
 
-proc GTK_TYPE_BOX*(): GType =
-  result = gtk_box_get_type()
+proc TYPE_BOX*(): GType = 
+  result = box_get_type()
 
-proc GTK_BOX*(obj: pointer): PGtkBox =
-  result = cast[PGtkBox](GTK_CHECK_CAST(obj, GTK_TYPE_BOX()))
+proc BOX*(obj: pointer): PBox = 
+  result = cast[PBox](CHECK_CAST(obj, TYPE_BOX()))
 
-proc GTK_BOX_CLASS*(klass: pointer): PGtkBoxClass =
-  result = cast[PGtkBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_BOX()))
+proc BOX_CLASS*(klass: pointer): PBoxClass = 
+  result = cast[PBoxClass](CHECK_CLASS_CAST(klass, TYPE_BOX()))
 
-proc GTK_IS_BOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_BOX())
+proc IS_BOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_BOX())
 
-proc GTK_IS_BOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_BOX())
+proc IS_BOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_BOX())
 
-proc GTK_BOX_GET_CLASS*(obj: pointer): PGtkBoxClass =
-  result = cast[PGtkBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_BOX()))
+proc BOX_GET_CLASS*(obj: pointer): PBoxClass = 
+  result = cast[PBoxClass](CHECK_GET_CLASS(obj, TYPE_BOX()))
 
-proc homogeneous*(a: var TGtkBox): guint =
-  result = (a.GtkBoxflag0 and bm_TGtkBox_homogeneous) shr bp_TGtkBox_homogeneous
+proc homogeneous*(a: var TBox): guint = 
+  result = (a.Boxflag0 and bm_TGtkBox_homogeneous) shr bp_TGtkBox_homogeneous
 
-proc set_homogeneous*(a: var TGtkBox, `homogeneous`: guint) =
-  a.GtkBoxflag0 = a.GtkBoxflag0 or
-      (int16(`homogeneous` shl bp_TGtkBox_homogeneous) and bm_TGtkBox_homogeneous)
+proc set_homogeneous*(a: var TBox, `homogeneous`: guint) = 
+  a.Boxflag0 = a.Boxflag0 or
+      (int16(`homogeneous` shl bp_TGtkBox_homogeneous) and
+      bm_TGtkBox_homogeneous)
 
-proc expand*(a: var TGtkBoxChild): guint =
+proc expand*(a: var TBoxChild): guint = 
   result = (a.flag0 and bm_TGtkBoxChild_expand) shr bp_TGtkBoxChild_expand
 
-proc set_expand*(a: var TGtkBoxChild, `expand`: guint) =
+proc set_expand*(a: var TBoxChild, `expand`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`expand` shl bp_TGtkBoxChild_expand) and bm_TGtkBoxChild_expand)
 
-proc fill*(a: var TGtkBoxChild): guint =
+proc fill*(a: var TBoxChild): guint = 
   result = (a.flag0 and bm_TGtkBoxChild_fill) shr bp_TGtkBoxChild_fill
 
-proc set_fill*(a: var TGtkBoxChild, `fill`: guint) =
+proc set_fill*(a: var TBoxChild, `fill`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`fill` shl bp_TGtkBoxChild_fill) and bm_TGtkBoxChild_fill)
 
-proc pack*(a: var TGtkBoxChild): guint =
+proc pack*(a: var TBoxChild): guint = 
   result = (a.flag0 and bm_TGtkBoxChild_pack) shr bp_TGtkBoxChild_pack
 
-proc set_pack*(a: var TGtkBoxChild, `pack`: guint) =
+proc set_pack*(a: var TBoxChild, `pack`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`pack` shl bp_TGtkBoxChild_pack) and bm_TGtkBoxChild_pack)
 
-proc is_secondary*(a: var TGtkBoxChild): guint =
+proc is_secondary*(a: var TBoxChild): guint = 
   result = (a.flag0 and bm_TGtkBoxChild_is_secondary) shr
       bp_TGtkBoxChild_is_secondary
 
-proc set_is_secondary*(a: var TGtkBoxChild, `is_secondary`: guint) =
+proc set_is_secondary*(a: var TBoxChild, `is_secondary`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`is_secondary` shl bp_TGtkBoxChild_is_secondary) and
       bm_TGtkBoxChild_is_secondary)
 
-proc GTK_TYPE_BUTTON_BOX*(): GType =
-  result = gtk_button_box_get_type()
+proc TYPE_BUTTON_BOX*(): GType = 
+  result = button_box_get_type()
 
-proc GTK_BUTTON_BOX*(obj: pointer): PGtkButtonBox =
-  result = cast[PGtkButtonBox](GTK_CHECK_CAST(obj, GTK_TYPE_BUTTON_BOX()))
+proc BUTTON_BOX*(obj: pointer): PButtonBox = 
+  result = cast[PButtonBox](CHECK_CAST(obj, TYPE_BUTTON_BOX()))
 
-proc GTK_BUTTON_BOX_CLASS*(klass: pointer): PGtkButtonBoxClass =
-  result = cast[PGtkButtonBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_BUTTON_BOX()))
+proc BUTTON_BOX_CLASS*(klass: pointer): PButtonBoxClass = 
+  result = cast[PButtonBoxClass](CHECK_CLASS_CAST(klass, TYPE_BUTTON_BOX()))
 
-proc GTK_IS_BUTTON_BOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_BUTTON_BOX())
+proc IS_BUTTON_BOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_BUTTON_BOX())
 
-proc GTK_IS_BUTTON_BOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_BUTTON_BOX())
+proc IS_BUTTON_BOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_BUTTON_BOX())
 
-proc GTK_BUTTON_BOX_GET_CLASS*(obj: pointer): PGtkButtonBoxClass =
-  result = cast[PGtkButtonBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_BUTTON_BOX()))
+proc BUTTON_BOX_GET_CLASS*(obj: pointer): PButtonBoxClass = 
+  result = cast[PButtonBoxClass](CHECK_GET_CLASS(obj, TYPE_BUTTON_BOX()))
 
-proc gtk_button_box_set_spacing*(b: pointer, s: gint) =
-  gtk_box_set_spacing(GTK_BOX(b), s)
+proc button_box_set_spacing*(b: pointer, s: gint) = 
+  set_spacing(BOX(b), s)
 
-proc gtk_button_box_get_spacing*(b: pointer): gint =
-  result = gtk_box_get_spacing(GTK_BOX(b))
+proc button_box_get_spacing*(b: pointer): gint = 
+  result = get_spacing(BOX(b))
 
-proc GTK_TYPE_BUTTON*(): GType =
-  result = gtk_button_get_type()
+proc TYPE_BUTTON*(): GType = 
+  result = button_get_type()
 
-proc GTK_BUTTON*(obj: pointer): PGtkButton =
-  result = cast[PGtkButton](GTK_CHECK_CAST(obj, GTK_TYPE_BUTTON()))
+proc BUTTON*(obj: pointer): PButton = 
+  result = cast[PButton](CHECK_CAST(obj, TYPE_BUTTON()))
 
-proc GTK_BUTTON_CLASS*(klass: pointer): PGtkButtonClass =
-  result = cast[PGtkButtonClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_BUTTON()))
+proc BUTTON_CLASS*(klass: pointer): PButtonClass = 
+  result = cast[PButtonClass](CHECK_CLASS_CAST(klass, TYPE_BUTTON()))
 
-proc GTK_IS_BUTTON*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_BUTTON())
+proc IS_BUTTON*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_BUTTON())
 
-proc GTK_IS_BUTTON_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_BUTTON())
+proc IS_BUTTON_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_BUTTON())
 
-proc GTK_BUTTON_GET_CLASS*(obj: pointer): PGtkButtonClass =
-  result = cast[PGtkButtonClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_BUTTON()))
+proc BUTTON_GET_CLASS*(obj: pointer): PButtonClass = 
+  result = cast[PButtonClass](CHECK_GET_CLASS(obj, TYPE_BUTTON()))
 
-proc constructed*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_constructed) shr
+proc constructed*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_constructed) shr
       bp_TGtkButton_constructed
 
-proc set_constructed*(a: var TGtkButton, `constructed`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
+proc set_constructed*(a: var TButton, `constructed`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
       (int16(`constructed` shl bp_TGtkButton_constructed) and
       bm_TGtkButton_constructed)
 
-proc in_button*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_in_button) shr bp_TGtkButton_in_button
+proc in_button*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_in_button) shr
+      bp_TGtkButton_in_button
 
-proc set_in_button*(a: var TGtkButton, `in_button`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
-      (int16(`in_button` shl bp_TGtkButton_in_button) and bm_TGtkButton_in_button)
+proc set_in_button*(a: var TButton, `in_button`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
+      (int16(`in_button` shl bp_TGtkButton_in_button) and
+      bm_TGtkButton_in_button)
 
-proc button_down*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_button_down) shr
+proc button_down*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_button_down) shr
       bp_TGtkButton_button_down
 
-proc set_button_down*(a: var TGtkButton, `button_down`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
+proc set_button_down*(a: var TButton, `button_down`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
       (int16(`button_down` shl bp_TGtkButton_button_down) and
       bm_TGtkButton_button_down)
 
-proc relief*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_relief) shr bp_TGtkButton_relief
+proc relief*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_relief) shr bp_TGtkButton_relief
 
-proc set_relief*(a: var TGtkButton, `relief`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
+proc set_relief*(a: var TButton, `relief`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
       (int16(`relief` shl bp_TGtkButton_relief) and bm_TGtkButton_relief)
 
-proc use_underline*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_use_underline) shr
+proc use_underline*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_use_underline) shr
       bp_TGtkButton_use_underline
 
-proc set_use_underline*(a: var TGtkButton, `use_underline`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
+proc set_use_underline*(a: var TButton, `use_underline`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
       (int16(`use_underline` shl bp_TGtkButton_use_underline) and
       bm_TGtkButton_use_underline)
 
-proc use_stock*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_use_stock) shr bp_TGtkButton_use_stock
+proc use_stock*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_use_stock) shr
+      bp_TGtkButton_use_stock
 
-proc set_use_stock*(a: var TGtkButton, `use_stock`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
-      (int16(`use_stock` shl bp_TGtkButton_use_stock) and bm_TGtkButton_use_stock)
+proc set_use_stock*(a: var TButton, `use_stock`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
+      (int16(`use_stock` shl bp_TGtkButton_use_stock) and
+      bm_TGtkButton_use_stock)
 
-proc depressed*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_depressed) shr bp_TGtkButton_depressed
+proc depressed*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_depressed) shr
+      bp_TGtkButton_depressed
 
-proc set_depressed*(a: var TGtkButton, `depressed`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
-      (int16(`depressed` shl bp_TGtkButton_depressed) and bm_TGtkButton_depressed)
+proc set_depressed*(a: var TButton, `depressed`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
+      (int16(`depressed` shl bp_TGtkButton_depressed) and
+      bm_TGtkButton_depressed)
 
-proc depress_on_activate*(a: var TGtkButton): guint =
-  result = (a.GtkButtonflag0 and bm_TGtkButton_depress_on_activate) shr
+proc depress_on_activate*(a: var TButton): guint = 
+  result = (a.Buttonflag0 and bm_TGtkButton_depress_on_activate) shr
       bp_TGtkButton_depress_on_activate
 
-proc set_depress_on_activate*(a: var TGtkButton, `depress_on_activate`: guint) =
-  a.GtkButtonflag0 = a.GtkButtonflag0 or
+proc set_depress_on_activate*(a: var TButton, `depress_on_activate`: guint) = 
+  a.Buttonflag0 = a.Buttonflag0 or
       (int16(`depress_on_activate` shl bp_TGtkButton_depress_on_activate) and
       bm_TGtkButton_depress_on_activate)
 
-proc GTK_TYPE_CALENDAR*(): GType =
-  result = gtk_calendar_get_type()
+proc TYPE_CALENDAR*(): GType = 
+  result = calendar_get_type()
 
-proc GTK_CALENDAR*(obj: pointer): PGtkCalendar =
-  result = cast[PGtkCalendar](GTK_CHECK_CAST(obj, GTK_TYPE_CALENDAR()))
+proc CALENDAR*(obj: pointer): PCalendar = 
+  result = cast[PCalendar](CHECK_CAST(obj, TYPE_CALENDAR()))
 
-proc GTK_CALENDAR_CLASS*(klass: pointer): PGtkCalendarClass =
-  result = cast[PGtkCalendarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_CALENDAR()))
+proc CALENDAR_CLASS*(klass: pointer): PCalendarClass = 
+  result = cast[PCalendarClass](CHECK_CLASS_CAST(klass, TYPE_CALENDAR()))
 
-proc GTK_IS_CALENDAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CALENDAR())
+proc IS_CALENDAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CALENDAR())
 
-proc GTK_IS_CALENDAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CALENDAR())
+proc IS_CALENDAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CALENDAR())
 
-proc GTK_CALENDAR_GET_CLASS*(obj: pointer): PGtkCalendarClass =
-  result = cast[PGtkCalendarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CALENDAR()))
+proc CALENDAR_GET_CLASS*(obj: pointer): PCalendarClass = 
+  result = cast[PCalendarClass](CHECK_GET_CLASS(obj, TYPE_CALENDAR()))
 
-proc GTK_TYPE_CELL_EDITABLE*(): GType =
-  result = gtk_cell_editable_get_type()
+proc TYPE_CELL_EDITABLE*(): GType = 
+  result = cell_editable_get_type()
 
-proc GTK_CELL_EDITABLE*(obj: pointer): PGtkCellEditable =
-  result = cast[PGtkCellEditable](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      GTK_TYPE_CELL_EDITABLE()))
+proc CELL_EDITABLE*(obj: pointer): PCellEditable = 
+  result = cast[PCellEditable](G_TYPE_CHECK_INSTANCE_CAST(obj, 
+      TYPE_CELL_EDITABLE()))
 
-proc GTK_CELL_EDITABLE_CLASS*(obj: pointer): PGtkCellEditableIface =
-  result = cast[PGtkCellEditableIface](G_TYPE_CHECK_CLASS_CAST(obj,
-      GTK_TYPE_CELL_EDITABLE()))
+proc CELL_EDITABLE_CLASS*(obj: pointer): PCellEditableIface = 
+  result = cast[PCellEditableIface](G_TYPE_CHECK_CLASS_CAST(obj, 
+      TYPE_CELL_EDITABLE()))
 
-proc GTK_IS_CELL_EDITABLE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_CELL_EDITABLE())
+proc IS_CELL_EDITABLE*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_CELL_EDITABLE())
 
-proc GTK_CELL_EDITABLE_GET_IFACE*(obj: pointer): PGtkCellEditableIface =
-  result = cast[PGtkCellEditableIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      GTK_TYPE_CELL_EDITABLE()))
+proc CELL_EDITABLE_GET_IFACE*(obj: pointer): PCellEditableIface = 
+  result = cast[PCellEditableIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, 
+      TYPE_CELL_EDITABLE()))
 
-proc GTK_TYPE_CELL_RENDERER*(): GType =
-  result = gtk_cell_renderer_get_type()
+proc TYPE_CELL_RENDERER*(): GType = 
+  result = cell_renderer_get_type()
 
-proc GTK_CELL_RENDERER*(obj: pointer): PGtkCellRenderer =
-  result = cast[PGtkCellRenderer](GTK_CHECK_CAST(obj, GTK_TYPE_CELL_RENDERER()))
+proc CELL_RENDERER*(obj: pointer): PCellRenderer = 
+  result = cast[PCellRenderer](CHECK_CAST(obj, TYPE_CELL_RENDERER()))
 
-proc GTK_CELL_RENDERER_CLASS*(klass: pointer): PGtkCellRendererClass =
-  result = cast[PGtkCellRendererClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_CELL_RENDERER()))
+proc CELL_RENDERER_CLASS*(klass: pointer): PCellRendererClass = 
+  result = cast[PCellRendererClass](CHECK_CLASS_CAST(klass, TYPE_CELL_RENDERER()))
 
-proc GTK_IS_CELL_RENDERER*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CELL_RENDERER())
+proc IS_CELL_RENDERER*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CELL_RENDERER())
 
-proc GTK_IS_CELL_RENDERER_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CELL_RENDERER())
+proc IS_CELL_RENDERER_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CELL_RENDERER())
 
-proc GTK_CELL_RENDERER_GET_CLASS*(obj: pointer): PGtkCellRendererClass =
-  result = cast[PGtkCellRendererClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CELL_RENDERER()))
+proc CELL_RENDERER_GET_CLASS*(obj: pointer): PCellRendererClass = 
+  result = cast[PCellRendererClass](CHECK_GET_CLASS(obj, TYPE_CELL_RENDERER()))
 
-proc mode*(a: var TGtkCellRenderer): guint =
-  result = (a.GtkCellRendererflag0 and bm_TGtkCellRenderer_mode) shr
+proc mode*(a: var TCellRenderer): guint = 
+  result = (a.CellRendererflag0 and bm_TGtkCellRenderer_mode) shr
       bp_TGtkCellRenderer_mode
 
-proc set_mode*(a: var TGtkCellRenderer, `mode`: guint) =
-  a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or
-      (int16(`mode` shl bp_TGtkCellRenderer_mode) and bm_TGtkCellRenderer_mode)
+proc set_mode*(a: var TCellRenderer, `mode`: guint) = 
+  a.CellRendererflag0 = a.CellRendererflag0 or
+      (int16(`mode` shl bp_TGtkCellRenderer_mode) and
+      bm_TGtkCellRenderer_mode)
 
-proc visible*(a: var TGtkCellRenderer): guint =
-  result = (a.GtkCellRendererflag0 and bm_TGtkCellRenderer_visible) shr
+proc visible*(a: var TCellRenderer): guint = 
+  result = (a.CellRendererflag0 and bm_TGtkCellRenderer_visible) shr
       bp_TGtkCellRenderer_visible
 
-proc set_visible*(a: var TGtkCellRenderer, `visible`: guint) =
-  a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or
+proc set_visible*(a: var TCellRenderer, `visible`: guint) = 
+  a.CellRendererflag0 = a.CellRendererflag0 or
       (int16(`visible` shl bp_TGtkCellRenderer_visible) and
       bm_TGtkCellRenderer_visible)
 
-proc is_expander*(a: var TGtkCellRenderer): guint =
-  result = (a.GtkCellRendererflag0 and bm_TGtkCellRenderer_is_expander) shr
+proc is_expander*(a: var TCellRenderer): guint = 
+  result = (a.CellRendererflag0 and bm_TGtkCellRenderer_is_expander) shr
       bp_TGtkCellRenderer_is_expander
 
-proc set_is_expander*(a: var TGtkCellRenderer, `is_expander`: guint) =
-  a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or
+proc set_is_expander*(a: var TCellRenderer, `is_expander`: guint) = 
+  a.CellRendererflag0 = a.CellRendererflag0 or
       (int16(`is_expander` shl bp_TGtkCellRenderer_is_expander) and
       bm_TGtkCellRenderer_is_expander)
 
-proc is_expanded*(a: var TGtkCellRenderer): guint =
-  result = (a.GtkCellRendererflag0 and bm_TGtkCellRenderer_is_expanded) shr
+proc is_expanded*(a: var TCellRenderer): guint = 
+  result = (a.CellRendererflag0 and bm_TGtkCellRenderer_is_expanded) shr
       bp_TGtkCellRenderer_is_expanded
 
-proc set_is_expanded*(a: var TGtkCellRenderer, `is_expanded`: guint) =
-  a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or
+proc set_is_expanded*(a: var TCellRenderer, `is_expanded`: guint) = 
+  a.CellRendererflag0 = a.CellRendererflag0 or
       (int16(`is_expanded` shl bp_TGtkCellRenderer_is_expanded) and
       bm_TGtkCellRenderer_is_expanded)
 
-proc cell_background_set*(a: var TGtkCellRenderer): guint =
-  result = (a.GtkCellRendererflag0 and bm_TGtkCellRenderer_cell_background_set) shr
+proc cell_background_set*(a: var TCellRenderer): guint = 
+  result = (a.CellRendererflag0 and bm_TGtkCellRenderer_cell_background_set) shr
       bp_TGtkCellRenderer_cell_background_set
 
-proc set_cell_background_set*(a: var TGtkCellRenderer,
-                              `cell_background_set`: guint) =
-  a.GtkCellRendererflag0 = a.GtkCellRendererflag0 or
-      (int16(`cell_background_set` shl bp_TGtkCellRenderer_cell_background_set) and
+proc set_cell_background_set*(a: var TCellRenderer, `cell_background_set`: guint) = 
+  a.CellRendererflag0 = a.CellRendererflag0 or
+      (int16(`cell_background_set` shl
+      bp_TGtkCellRenderer_cell_background_set) and
       bm_TGtkCellRenderer_cell_background_set)
 
-proc GTK_TYPE_CELL_RENDERER_TEXT*(): GType =
-  result = gtk_cell_renderer_text_get_type()
+proc TYPE_CELL_RENDERER_TEXT*(): GType = 
+  result = cell_renderer_text_get_type()
 
-proc GTK_CELL_RENDERER_TEXT*(obj: pointer): PGtkCellRendererText =
-  result = cast[PGtkCellRendererText](GTK_CHECK_CAST(obj, GTK_TYPE_CELL_RENDERER_TEXT()))
+proc CELL_RENDERER_TEXT*(obj: pointer): PCellRendererText = 
+  result = cast[PCellRendererText](CHECK_CAST(obj, TYPE_CELL_RENDERER_TEXT()))
 
-proc GTK_CELL_RENDERER_TEXT_CLASS*(klass: pointer): PGtkCellRendererTextClass =
-  result = cast[PGtkCellRendererTextClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_CELL_RENDERER_TEXT()))
+proc CELL_RENDERER_TEXT_CLASS*(klass: pointer): PCellRendererTextClass = 
+  result = cast[PCellRendererTextClass](CHECK_CLASS_CAST(klass, 
+      TYPE_CELL_RENDERER_TEXT()))
 
-proc GTK_IS_CELL_RENDERER_TEXT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CELL_RENDERER_TEXT())
+proc IS_CELL_RENDERER_TEXT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CELL_RENDERER_TEXT())
 
-proc GTK_IS_CELL_RENDERER_TEXT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CELL_RENDERER_TEXT())
+proc IS_CELL_RENDERER_TEXT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CELL_RENDERER_TEXT())
 
-proc GTK_CELL_RENDERER_TEXT_GET_CLASS*(obj: pointer): PGtkCellRendererTextClass =
-  result = cast[PGtkCellRendererTextClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_CELL_RENDERER_TEXT()))
+proc CELL_RENDERER_TEXT_GET_CLASS*(obj: pointer): PCellRendererTextClass = 
+  result = cast[PCellRendererTextClass](CHECK_GET_CLASS(obj, 
+      TYPE_CELL_RENDERER_TEXT()))
 
-proc strikethrough*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_strikethrough) shr
+proc strikethrough*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and bm_TGtkCellRendererText_strikethrough) shr
       bp_TGtkCellRendererText_strikethrough
 
-proc set_strikethrough*(a: var TGtkCellRendererText, `strikethrough`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_strikethrough*(a: var TCellRendererText, `strikethrough`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`strikethrough` shl bp_TGtkCellRendererText_strikethrough) and
       bm_TGtkCellRendererText_strikethrough)
 
-proc editable*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_editable) shr
+proc editable*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and bm_TGtkCellRendererText_editable) shr
       bp_TGtkCellRendererText_editable
 
-proc set_editable*(a: var TGtkCellRendererText, `editable`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_editable*(a: var TCellRendererText, `editable`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`editable` shl bp_TGtkCellRendererText_editable) and
       bm_TGtkCellRendererText_editable)
 
-proc scale_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_scale_set) shr
+proc scale_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and bm_TGtkCellRendererText_scale_set) shr
       bp_TGtkCellRendererText_scale_set
 
-proc set_scale_set*(a: var TGtkCellRendererText, `scale_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_scale_set*(a: var TCellRendererText, `scale_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`scale_set` shl bp_TGtkCellRendererText_scale_set) and
       bm_TGtkCellRendererText_scale_set)
 
-proc foreground_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_foreground_set) shr
+proc foreground_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and
+      bm_TGtkCellRendererText_foreground_set) shr
       bp_TGtkCellRendererText_foreground_set
 
-proc set_foreground_set*(a: var TGtkCellRendererText, `foreground_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_foreground_set*(a: var TCellRendererText, `foreground_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`foreground_set` shl bp_TGtkCellRendererText_foreground_set) and
       bm_TGtkCellRendererText_foreground_set)
 
-proc background_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_background_set) shr
+proc background_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and
+      bm_TGtkCellRendererText_background_set) shr
       bp_TGtkCellRendererText_background_set
 
-proc set_background_set*(a: var TGtkCellRendererText, `background_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_background_set*(a: var TCellRendererText, `background_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`background_set` shl bp_TGtkCellRendererText_background_set) and
       bm_TGtkCellRendererText_background_set)
 
-proc underline_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_underline_set) shr
+proc underline_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and bm_TGtkCellRendererText_underline_set) shr
       bp_TGtkCellRendererText_underline_set
 
-proc set_underline_set*(a: var TGtkCellRendererText, `underline_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_underline_set*(a: var TCellRendererText, `underline_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`underline_set` shl bp_TGtkCellRendererText_underline_set) and
       bm_TGtkCellRendererText_underline_set)
 
-proc rise_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_rise_set) shr
+proc rise_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and bm_TGtkCellRendererText_rise_set) shr
       bp_TGtkCellRendererText_rise_set
 
-proc set_rise_set*(a: var TGtkCellRendererText, `rise_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_rise_set*(a: var TCellRendererText, `rise_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`rise_set` shl bp_TGtkCellRendererText_rise_set) and
       bm_TGtkCellRendererText_rise_set)
 
-proc strikethrough_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_strikethrough_set) shr
+proc strikethrough_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and
+      bm_TGtkCellRendererText_strikethrough_set) shr
       bp_TGtkCellRendererText_strikethrough_set
 
-proc set_strikethrough_set*(a: var TGtkCellRendererText,
-                            `strikethrough_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
-      (int16(`strikethrough_set` shl bp_TGtkCellRendererText_strikethrough_set) and
+proc set_strikethrough_set*(a: var TCellRendererText, `strikethrough_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
+      (int16(`strikethrough_set` shl
+      bp_TGtkCellRendererText_strikethrough_set) and
       bm_TGtkCellRendererText_strikethrough_set)
 
-proc editable_set*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_editable_set) shr
+proc editable_set*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and bm_TGtkCellRendererText_editable_set) shr
       bp_TGtkCellRendererText_editable_set
 
-proc set_editable_set*(a: var TGtkCellRendererText, `editable_set`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
+proc set_editable_set*(a: var TCellRendererText, `editable_set`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
       (int16(`editable_set` shl bp_TGtkCellRendererText_editable_set) and
       bm_TGtkCellRendererText_editable_set)
 
-proc calc_fixed_height*(a: var TGtkCellRendererText): guint =
-  result = (a.GtkCellRendererTextflag0 and bm_TGtkCellRendererText_calc_fixed_height) shr
+proc calc_fixed_height*(a: var TCellRendererText): guint = 
+  result = (a.CellRendererTextflag0 and
+      bm_TGtkCellRendererText_calc_fixed_height) shr
       bp_TGtkCellRendererText_calc_fixed_height
 
-proc set_calc_fixed_height*(a: var TGtkCellRendererText,
-                            `calc_fixed_height`: guint) =
-  a.GtkCellRendererTextflag0 = a.GtkCellRendererTextflag0 or
-      (int16(`calc_fixed_height` shl bp_TGtkCellRendererText_calc_fixed_height) and
+proc set_calc_fixed_height*(a: var TCellRendererText, `calc_fixed_height`: guint) = 
+  a.CellRendererTextflag0 = a.CellRendererTextflag0 or
+      (int16(`calc_fixed_height` shl
+      bp_TGtkCellRendererText_calc_fixed_height) and
       bm_TGtkCellRendererText_calc_fixed_height)
 
-proc GTK_TYPE_CELL_RENDERER_TOGGLE*(): GType =
-  result = gtk_cell_renderer_toggle_get_type()
+proc TYPE_CELL_RENDERER_TOGGLE*(): GType = 
+  result = cell_renderer_toggle_get_type()
 
-proc GTK_CELL_RENDERER_TOGGLE*(obj: pointer): PGtkCellRendererToggle =
-  result = cast[PGtkCellRendererToggle](GTK_CHECK_CAST(obj,
-      GTK_TYPE_CELL_RENDERER_TOGGLE()))
+proc CELL_RENDERER_TOGGLE*(obj: pointer): PCellRendererToggle = 
+  result = cast[PCellRendererToggle](CHECK_CAST(obj, TYPE_CELL_RENDERER_TOGGLE()))
 
-proc GTK_CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): PGtkCellRendererToggleClass =
-  result = cast[PGtkCellRendererToggleClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_CELL_RENDERER_TOGGLE()))
+proc CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): PCellRendererToggleClass = 
+  result = cast[PCellRendererToggleClass](CHECK_CLASS_CAST(klass, 
+      TYPE_CELL_RENDERER_TOGGLE()))
 
-proc GTK_IS_CELL_RENDERER_TOGGLE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CELL_RENDERER_TOGGLE())
+proc IS_CELL_RENDERER_TOGGLE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CELL_RENDERER_TOGGLE())
 
-proc GTK_IS_CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CELL_RENDERER_TOGGLE())
+proc IS_CELL_RENDERER_TOGGLE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CELL_RENDERER_TOGGLE())
 
-proc GTK_CELL_RENDERER_TOGGLE_GET_CLASS*(obj: pointer): PGtkCellRendererToggleClass =
-  result = cast[PGtkCellRendererToggleClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_CELL_RENDERER_TOGGLE()))
+proc CELL_RENDERER_TOGGLE_GET_CLASS*(obj: pointer): PCellRendererToggleClass = 
+  result = cast[PCellRendererToggleClass](CHECK_GET_CLASS(obj, 
+      TYPE_CELL_RENDERER_TOGGLE()))
 
-proc active*(a: var TGtkCellRendererToggle): guint =
-  result = (a.GtkCellRendererToggleflag0 and bm_TGtkCellRendererToggle_active) shr
+proc active*(a: var TCellRendererToggle): guint = 
+  result = (a.CellRendererToggleflag0 and bm_TGtkCellRendererToggle_active) shr
       bp_TGtkCellRendererToggle_active
 
-proc set_active*(a: var TGtkCellRendererToggle, `active`: guint) =
-  a.GtkCellRendererToggleflag0 = a.GtkCellRendererToggleflag0 or
+proc set_active*(a: var TCellRendererToggle, `active`: guint) = 
+  a.CellRendererToggleflag0 = a.CellRendererToggleflag0 or
       (int16(`active` shl bp_TGtkCellRendererToggle_active) and
       bm_TGtkCellRendererToggle_active)
 
-proc activatable*(a: var TGtkCellRendererToggle): guint =
-  result = (a.GtkCellRendererToggleflag0 and bm_TGtkCellRendererToggle_activatable) shr
+proc activatable*(a: var TCellRendererToggle): guint = 
+  result = (a.CellRendererToggleflag0 and
+      bm_TGtkCellRendererToggle_activatable) shr
       bp_TGtkCellRendererToggle_activatable
 
-proc set_activatable*(a: var TGtkCellRendererToggle, `activatable`: guint) =
-  a.GtkCellRendererToggleflag0 = a.GtkCellRendererToggleflag0 or
+proc set_activatable*(a: var TCellRendererToggle, `activatable`: guint) = 
+  a.CellRendererToggleflag0 = a.CellRendererToggleflag0 or
       (int16(`activatable` shl bp_TGtkCellRendererToggle_activatable) and
       bm_TGtkCellRendererToggle_activatable)
 
-proc radio*(a: var TGtkCellRendererToggle): guint =
-  result = (a.GtkCellRendererToggleflag0 and bm_TGtkCellRendererToggle_radio) shr
+proc radio*(a: var TCellRendererToggle): guint = 
+  result = (a.CellRendererToggleflag0 and bm_TGtkCellRendererToggle_radio) shr
       bp_TGtkCellRendererToggle_radio
 
-proc set_radio*(a: var TGtkCellRendererToggle, `radio`: guint) =
-  a.GtkCellRendererToggleflag0 = a.GtkCellRendererToggleflag0 or
+proc set_radio*(a: var TCellRendererToggle, `radio`: guint) = 
+  a.CellRendererToggleflag0 = a.CellRendererToggleflag0 or
       (int16(`radio` shl bp_TGtkCellRendererToggle_radio) and
       bm_TGtkCellRendererToggle_radio)
 
-proc GTK_TYPE_CELL_RENDERER_PIXBUF*(): GType =
-  result = gtk_cell_renderer_pixbuf_get_type()
+proc TYPE_CELL_RENDERER_PIXBUF*(): GType = 
+  result = cell_renderer_pixbuf_get_type()
 
-proc GTK_CELL_RENDERER_PIXBUF*(obj: pointer): PGtkCellRendererPixbuf =
-  result = cast[PGtkCellRendererPixbuf](GTK_CHECK_CAST(obj,
-      GTK_TYPE_CELL_RENDERER_PIXBUF()))
+proc CELL_RENDERER_PIXBUF*(obj: pointer): PCellRendererPixbuf = 
+  result = cast[PCellRendererPixbuf](CHECK_CAST(obj, TYPE_CELL_RENDERER_PIXBUF()))
 
-proc GTK_CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): PGtkCellRendererPixbufClass =
-  result = cast[PGtkCellRendererPixbufClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_CELL_RENDERER_PIXBUF()))
+proc CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): PCellRendererPixbufClass = 
+  result = cast[PCellRendererPixbufClass](CHECK_CLASS_CAST(klass, 
+      TYPE_CELL_RENDERER_PIXBUF()))
 
-proc GTK_IS_CELL_RENDERER_PIXBUF*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CELL_RENDERER_PIXBUF())
+proc IS_CELL_RENDERER_PIXBUF*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CELL_RENDERER_PIXBUF())
 
-proc GTK_IS_CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CELL_RENDERER_PIXBUF())
+proc IS_CELL_RENDERER_PIXBUF_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CELL_RENDERER_PIXBUF())
 
-proc GTK_CELL_RENDERER_PIXBUF_GET_CLASS*(obj: pointer): PGtkCellRendererPixbufClass =
-  result = cast[PGtkCellRendererPixbufClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_CELL_RENDERER_PIXBUF()))
+proc CELL_RENDERER_PIXBUF_GET_CLASS*(obj: pointer): PCellRendererPixbufClass = 
+  result = cast[PCellRendererPixbufClass](CHECK_GET_CLASS(obj, 
+      TYPE_CELL_RENDERER_PIXBUF()))
 
-proc GTK_TYPE_ITEM*(): GType =
-  result = gtk_item_get_type()
+proc TYPE_ITEM*(): GType = 
+  result = item_get_type()
 
-proc GTK_ITEM*(obj: pointer): PGtkItem =
-  result = cast[PGtkItem](GTK_CHECK_CAST(obj, GTK_TYPE_ITEM()))
+proc ITEM*(obj: pointer): PItem = 
+  result = cast[PItem](CHECK_CAST(obj, TYPE_ITEM()))
 
-proc GTK_ITEM_CLASS*(klass: pointer): PGtkItemClass =
-  result = cast[PGtkItemClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ITEM()))
+proc ITEM_CLASS*(klass: pointer): PItemClass = 
+  result = cast[PItemClass](CHECK_CLASS_CAST(klass, TYPE_ITEM()))
 
-proc GTK_IS_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ITEM())
+proc IS_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ITEM())
 
-proc GTK_IS_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ITEM())
+proc IS_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ITEM())
 
-proc GTK_ITEM_GET_CLASS*(obj: pointer): PGtkItemClass =
-  result = cast[PGtkItemClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ITEM()))
+proc ITEM_GET_CLASS*(obj: pointer): PItemClass = 
+  result = cast[PItemClass](CHECK_GET_CLASS(obj, TYPE_ITEM()))
 
-proc GTK_TYPE_MENU_ITEM*(): GType =
-  result = gtk_menu_item_get_type()
+proc TYPE_MENU_ITEM*(): GType = 
+  result = menu_item_get_type()
 
-proc GTK_MENU_ITEM*(obj: pointer): PGtkMenuItem =
-  result = cast[PGtkMenuItem](GTK_CHECK_CAST(obj, GTK_TYPE_MENU_ITEM()))
+proc MENU_ITEM*(obj: pointer): PMenuItem = 
+  result = cast[PMenuItem](CHECK_CAST(obj, TYPE_MENU_ITEM()))
 
-proc GTK_MENU_ITEM_CLASS*(klass: pointer): PGtkMenuItemClass =
-  result = cast[PGtkMenuItemClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_MENU_ITEM()))
+proc MENU_ITEM_CLASS*(klass: pointer): PMenuItemClass = 
+  result = cast[PMenuItemClass](CHECK_CLASS_CAST(klass, TYPE_MENU_ITEM()))
 
-proc GTK_IS_MENU_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_MENU_ITEM())
+proc IS_MENU_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_MENU_ITEM())
 
-proc GTK_IS_MENU_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_MENU_ITEM())
+proc IS_MENU_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_MENU_ITEM())
 
-proc GTK_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkMenuItemClass =
-  result = cast[PGtkMenuItemClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_MENU_ITEM()))
+proc MENU_ITEM_GET_CLASS*(obj: pointer): PMenuItemClass = 
+  result = cast[PMenuItemClass](CHECK_GET_CLASS(obj, TYPE_MENU_ITEM()))
 
-proc show_submenu_indicator*(a: var TGtkMenuItem): guint =
-  result = (a.GtkMenuItemflag0 and bm_TGtkMenuItem_show_submenu_indicator) shr
+proc show_submenu_indicator*(a: var TMenuItem): guint = 
+  result = (a.MenuItemflag0 and bm_TGtkMenuItem_show_submenu_indicator) shr
       bp_TGtkMenuItem_show_submenu_indicator
 
-proc set_show_submenu_indicator*(a: var TGtkMenuItem,
-                                 `show_submenu_indicator`: guint) =
-  a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or
-      (int16(`show_submenu_indicator` shl bp_TGtkMenuItem_show_submenu_indicator) and
+proc set_show_submenu_indicator*(a: var TMenuItem, 
+                                 `show_submenu_indicator`: guint) = 
+  a.MenuItemflag0 = a.MenuItemflag0 or
+      (int16(`show_submenu_indicator` shl
+      bp_TGtkMenuItem_show_submenu_indicator) and
       bm_TGtkMenuItem_show_submenu_indicator)
 
-proc submenu_placement*(a: var TGtkMenuItem): guint =
-  result = (a.GtkMenuItemflag0 and bm_TGtkMenuItem_submenu_placement) shr
+proc submenu_placement*(a: var TMenuItem): guint = 
+  result = (a.MenuItemflag0 and bm_TGtkMenuItem_submenu_placement) shr
       bp_TGtkMenuItem_submenu_placement
 
-proc set_submenu_placement*(a: var TGtkMenuItem, `submenu_placement`: guint) =
-  a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or
+proc set_submenu_placement*(a: var TMenuItem, `submenu_placement`: guint) = 
+  a.MenuItemflag0 = a.MenuItemflag0 or
       (int16(`submenu_placement` shl bp_TGtkMenuItem_submenu_placement) and
       bm_TGtkMenuItem_submenu_placement)
 
-proc submenu_direction*(a: var TGtkMenuItem): guint =
-  result = (a.GtkMenuItemflag0 and bm_TGtkMenuItem_submenu_direction) shr
+proc submenu_direction*(a: var TMenuItem): guint = 
+  result = (a.MenuItemflag0 and bm_TGtkMenuItem_submenu_direction) shr
       bp_TGtkMenuItem_submenu_direction
 
-proc set_submenu_direction*(a: var TGtkMenuItem, `submenu_direction`: guint) =
-  a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or
+proc set_submenu_direction*(a: var TMenuItem, `submenu_direction`: guint) = 
+  a.MenuItemflag0 = a.MenuItemflag0 or
       (int16(`submenu_direction` shl bp_TGtkMenuItem_submenu_direction) and
       bm_TGtkMenuItem_submenu_direction)
 
-proc right_justify*(a: var TGtkMenuItem): guint =
-  result = (a.GtkMenuItemflag0 and bm_TGtkMenuItem_right_justify) shr
+proc right_justify*(a: var TMenuItem): guint = 
+  result = (a.MenuItemflag0 and bm_TGtkMenuItem_right_justify) shr
       bp_TGtkMenuItem_right_justify
 
-proc set_right_justify*(a: var TGtkMenuItem, `right_justify`: guint) =
-  a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or
+proc set_right_justify*(a: var TMenuItem, `right_justify`: guint) = 
+  a.MenuItemflag0 = a.MenuItemflag0 or
       (int16(`right_justify` shl bp_TGtkMenuItem_right_justify) and
       bm_TGtkMenuItem_right_justify)
 
-proc timer_from_keypress*(a: var TGtkMenuItem): guint =
-  result = (a.GtkMenuItemflag0 and bm_TGtkMenuItem_timer_from_keypress) shr
+proc timer_from_keypress*(a: var TMenuItem): guint = 
+  result = (a.MenuItemflag0 and bm_TGtkMenuItem_timer_from_keypress) shr
       bp_TGtkMenuItem_timer_from_keypress
 
-proc set_timer_from_keypress*(a: var TGtkMenuItem, `timer_from_keypress`: guint) =
-  a.GtkMenuItemflag0 = a.GtkMenuItemflag0 or
+proc set_timer_from_keypress*(a: var TMenuItem, `timer_from_keypress`: guint) = 
+  a.MenuItemflag0 = a.MenuItemflag0 or
       (int16(`timer_from_keypress` shl bp_TGtkMenuItem_timer_from_keypress) and
       bm_TGtkMenuItem_timer_from_keypress)
 
-proc hide_on_activate*(a: var TGtkMenuItemClass): guint =
-  result = (a.GtkMenuItemClassflag0 and bm_TGtkMenuItemClass_hide_on_activate) shr
+proc hide_on_activate*(a: var TMenuItemClass): guint = 
+  result = (a.MenuItemClassflag0 and bm_TGtkMenuItemClass_hide_on_activate) shr
       bp_TGtkMenuItemClass_hide_on_activate
 
-proc set_hide_on_activate*(a: var TGtkMenuItemClass, `hide_on_activate`: guint) =
-  a.GtkMenuItemClassflag0 = a.GtkMenuItemClassflag0 or
+proc set_hide_on_activate*(a: var TMenuItemClass, `hide_on_activate`: guint) = 
+  a.MenuItemClassflag0 = a.MenuItemClassflag0 or
       (int16(`hide_on_activate` shl bp_TGtkMenuItemClass_hide_on_activate) and
       bm_TGtkMenuItemClass_hide_on_activate)
 
-proc gtk_menu_item_right_justify*(menu_item: PGtkMenuItem) =
-  gtk_menu_item_set_right_justified(menu_item, true)
+proc right_justify*(menu_item: PMenuItem) = 
+  set_right_justified(menu_item, system.true)
 
-proc GTK_TYPE_TOGGLE_BUTTON*(): GType =
-  result = gtk_toggle_button_get_type()
+proc TYPE_TOGGLE_BUTTON*(): GType = 
+  result = toggle_button_get_type()
 
-proc GTK_TOGGLE_BUTTON*(obj: pointer): PGtkToggleButton =
-  result = cast[PGtkToggleButton](GTK_CHECK_CAST(obj, GTK_TYPE_TOGGLE_BUTTON()))
+proc TOGGLE_BUTTON*(obj: pointer): PToggleButton = 
+  result = cast[PToggleButton](CHECK_CAST(obj, TYPE_TOGGLE_BUTTON()))
 
-proc GTK_TOGGLE_BUTTON_CLASS*(klass: pointer): PGtkToggleButtonClass =
-  result = cast[PGtkToggleButtonClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TOGGLE_BUTTON()))
+proc TOGGLE_BUTTON_CLASS*(klass: pointer): PToggleButtonClass = 
+  result = cast[PToggleButtonClass](CHECK_CLASS_CAST(klass, TYPE_TOGGLE_BUTTON()))
 
-proc GTK_IS_TOGGLE_BUTTON*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TOGGLE_BUTTON())
+proc IS_TOGGLE_BUTTON*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TOGGLE_BUTTON())
 
-proc GTK_IS_TOGGLE_BUTTON_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TOGGLE_BUTTON())
+proc IS_TOGGLE_BUTTON_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TOGGLE_BUTTON())
 
-proc GTK_TOGGLE_BUTTON_GET_CLASS*(obj: pointer): PGtkToggleButtonClass =
-  result = cast[PGtkToggleButtonClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TOGGLE_BUTTON()))
+proc TOGGLE_BUTTON_GET_CLASS*(obj: pointer): PToggleButtonClass = 
+  result = cast[PToggleButtonClass](CHECK_GET_CLASS(obj, TYPE_TOGGLE_BUTTON()))
 
-proc active*(a: var TGtkToggleButton): guint =
-  result = (a.GtkToggleButtonflag0 and bm_TGtkToggleButton_active) shr
+proc active*(a: var TToggleButton): guint = 
+  result = (a.ToggleButtonflag0 and bm_TGtkToggleButton_active) shr
       bp_TGtkToggleButton_active
 
-proc set_active*(a: var TGtkToggleButton, `active`: guint) =
-  a.GtkToggleButtonflag0 = a.GtkToggleButtonflag0 or
+proc set_active*(a: var TToggleButton, `active`: guint) = 
+  a.ToggleButtonflag0 = a.ToggleButtonflag0 or
       (int16(`active` shl bp_TGtkToggleButton_active) and
       bm_TGtkToggleButton_active)
 
-proc draw_indicator*(a: var TGtkToggleButton): guint =
-  result = (a.GtkToggleButtonflag0 and bm_TGtkToggleButton_draw_indicator) shr
+proc draw_indicator*(a: var TToggleButton): guint = 
+  result = (a.ToggleButtonflag0 and bm_TGtkToggleButton_draw_indicator) shr
       bp_TGtkToggleButton_draw_indicator
 
-proc set_draw_indicator*(a: var TGtkToggleButton, `draw_indicator`: guint) =
-  a.GtkToggleButtonflag0 = a.GtkToggleButtonflag0 or
+proc set_draw_indicator*(a: var TToggleButton, `draw_indicator`: guint) = 
+  a.ToggleButtonflag0 = a.ToggleButtonflag0 or
       (int16(`draw_indicator` shl bp_TGtkToggleButton_draw_indicator) and
       bm_TGtkToggleButton_draw_indicator)
 
-proc inconsistent*(a: var TGtkToggleButton): guint =
-  result = (a.GtkToggleButtonflag0 and bm_TGtkToggleButton_inconsistent) shr
+proc inconsistent*(a: var TToggleButton): guint = 
+  result = (a.ToggleButtonflag0 and bm_TGtkToggleButton_inconsistent) shr
       bp_TGtkToggleButton_inconsistent
 
-proc set_inconsistent*(a: var TGtkToggleButton, `inconsistent`: guint) =
-  a.GtkToggleButtonflag0 = a.GtkToggleButtonflag0 or
+proc set_inconsistent*(a: var TToggleButton, `inconsistent`: guint) = 
+  a.ToggleButtonflag0 = a.ToggleButtonflag0 or
       (int16(`inconsistent` shl bp_TGtkToggleButton_inconsistent) and
       bm_TGtkToggleButton_inconsistent)
 
-proc GTK_TYPE_CHECK_BUTTON*(): GType =
-  result = gtk_check_button_get_type()
+proc TYPE_CHECK_BUTTON*(): GType = 
+  result = check_button_get_type()
 
-proc GTK_CHECK_BUTTON*(obj: pointer): PGtkCheckButton =
-  result = cast[PGtkCheckButton](GTK_CHECK_CAST(obj, GTK_TYPE_CHECK_BUTTON()))
+proc CHECK_BUTTON*(obj: pointer): PCheckButton = 
+  result = cast[PCheckButton](CHECK_CAST(obj, TYPE_CHECK_BUTTON()))
 
-proc GTK_CHECK_BUTTON_CLASS*(klass: pointer): PGtkCheckButtonClass =
-  result = cast[PGtkCheckButtonClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_CHECK_BUTTON()))
+proc CHECK_BUTTON_CLASS*(klass: pointer): PCheckButtonClass = 
+  result = cast[PCheckButtonClass](CHECK_CLASS_CAST(klass, TYPE_CHECK_BUTTON()))
 
-proc GTK_IS_CHECK_BUTTON*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CHECK_BUTTON())
+proc IS_CHECK_BUTTON*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CHECK_BUTTON())
 
-proc GTK_IS_CHECK_BUTTON_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CHECK_BUTTON())
+proc IS_CHECK_BUTTON_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CHECK_BUTTON())
 
-proc GTK_CHECK_BUTTON_GET_CLASS*(obj: pointer): PGtkCheckButtonClass =
-  result = cast[PGtkCheckButtonClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CHECK_BUTTON()))
+proc CHECK_BUTTON_GET_CLASS*(obj: pointer): PCheckButtonClass = 
+  result = cast[PCheckButtonClass](CHECK_GET_CLASS(obj, TYPE_CHECK_BUTTON()))
 
-proc GTK_TYPE_CHECK_MENU_ITEM*(): GType =
-  result = gtk_check_menu_item_get_type()
+proc TYPE_CHECK_MENU_ITEM*(): GType = 
+  result = check_menu_item_get_type()
 
-proc GTK_CHECK_MENU_ITEM*(obj: pointer): PGtkCheckMenuItem =
-  result = cast[PGtkCheckMenuItem](GTK_CHECK_CAST(obj, GTK_TYPE_CHECK_MENU_ITEM()))
+proc CHECK_MENU_ITEM*(obj: pointer): PCheckMenuItem = 
+  result = cast[PCheckMenuItem](CHECK_CAST(obj, TYPE_CHECK_MENU_ITEM()))
 
-proc GTK_CHECK_MENU_ITEM_CLASS*(klass: pointer): PGtkCheckMenuItemClass =
-  result = cast[PGtkCheckMenuItemClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_CHECK_MENU_ITEM()))
+proc CHECK_MENU_ITEM_CLASS*(klass: pointer): PCheckMenuItemClass = 
+  result = cast[PCheckMenuItemClass](CHECK_CLASS_CAST(klass, 
+      TYPE_CHECK_MENU_ITEM()))
 
-proc GTK_IS_CHECK_MENU_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CHECK_MENU_ITEM())
+proc IS_CHECK_MENU_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CHECK_MENU_ITEM())
 
-proc GTK_IS_CHECK_MENU_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CHECK_MENU_ITEM())
+proc IS_CHECK_MENU_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CHECK_MENU_ITEM())
 
-proc GTK_CHECK_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkCheckMenuItemClass =
-  result = cast[PGtkCheckMenuItemClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_CHECK_MENU_ITEM()))
+proc CHECK_MENU_ITEM_GET_CLASS*(obj: pointer): PCheckMenuItemClass = 
+  result = cast[PCheckMenuItemClass](CHECK_GET_CLASS(obj, TYPE_CHECK_MENU_ITEM()))
 
-proc active*(a: var TGtkCheckMenuItem): guint =
-  result = (a.GtkCheckMenuItemflag0 and bm_TGtkCheckMenuItem_active) shr
+proc active*(a: var TCheckMenuItem): guint = 
+  result = (a.CheckMenuItemflag0 and bm_TGtkCheckMenuItem_active) shr
       bp_TGtkCheckMenuItem_active
 
-proc set_active*(a: var TGtkCheckMenuItem, `active`: guint) =
-  a.GtkCheckMenuItemflag0 = a.GtkCheckMenuItemflag0 or
+proc set_active*(a: var TCheckMenuItem, `active`: guint) = 
+  a.CheckMenuItemflag0 = a.CheckMenuItemflag0 or
       (int16(`active` shl bp_TGtkCheckMenuItem_active) and
       bm_TGtkCheckMenuItem_active)
 
-proc always_show_toggle*(a: var TGtkCheckMenuItem): guint =
-  result = (a.GtkCheckMenuItemflag0 and bm_TGtkCheckMenuItem_always_show_toggle) shr
+proc always_show_toggle*(a: var TCheckMenuItem): guint = 
+  result = (a.CheckMenuItemflag0 and bm_TGtkCheckMenuItem_always_show_toggle) shr
       bp_TGtkCheckMenuItem_always_show_toggle
 
-proc set_always_show_toggle*(a: var TGtkCheckMenuItem,
-                             `always_show_toggle`: guint) =
-  a.GtkCheckMenuItemflag0 = a.GtkCheckMenuItemflag0 or
+proc set_always_show_toggle*(a: var TCheckMenuItem, `always_show_toggle`: guint) = 
+  a.CheckMenuItemflag0 = a.CheckMenuItemflag0 or
       (int16(`always_show_toggle` shl bp_TGtkCheckMenuItem_always_show_toggle) and
       bm_TGtkCheckMenuItem_always_show_toggle)
 
-proc inconsistent*(a: var TGtkCheckMenuItem): guint =
-  result = (a.GtkCheckMenuItemflag0 and bm_TGtkCheckMenuItem_inconsistent) shr
+proc inconsistent*(a: var TCheckMenuItem): guint = 
+  result = (a.CheckMenuItemflag0 and bm_TGtkCheckMenuItem_inconsistent) shr
       bp_TGtkCheckMenuItem_inconsistent
 
-proc set_inconsistent*(a: var TGtkCheckMenuItem, `inconsistent`: guint) =
-  a.GtkCheckMenuItemflag0 = a.GtkCheckMenuItemflag0 or
+proc set_inconsistent*(a: var TCheckMenuItem, `inconsistent`: guint) = 
+  a.CheckMenuItemflag0 = a.CheckMenuItemflag0 or
       (int16(`inconsistent` shl bp_TGtkCheckMenuItem_inconsistent) and
       bm_TGtkCheckMenuItem_inconsistent)
 
-proc GTK_TYPE_CLIST*(): GType =
-  result = gtk_clist_get_type()
+proc TYPE_CLIST*(): GType = 
+  result = clist_get_type()
 
-proc GTK_CLIST*(obj: pointer): PGtkCList =
-  result = cast[PGtkCList](GTK_CHECK_CAST(obj, GTK_TYPE_CLIST()))
+proc CLIST*(obj: pointer): PCList = 
+  result = cast[PCList](CHECK_CAST(obj, TYPE_CLIST()))
 
-proc GTK_CLIST_CLASS*(klass: pointer): PGtkCListClass =
-  result = cast[PGtkCListClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_CLIST()))
+proc CLIST_CLASS*(klass: pointer): PCListClass = 
+  result = cast[PCListClass](CHECK_CLASS_CAST(klass, TYPE_CLIST()))
 
-proc GTK_IS_CLIST*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CLIST())
+proc IS_CLIST*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CLIST())
 
-proc GTK_IS_CLIST_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CLIST())
+proc IS_CLIST_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CLIST())
 
-proc GTK_CLIST_GET_CLASS*(obj: pointer): PGtkCListClass =
-  result = cast[PGtkCListClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CLIST()))
+proc CLIST_GET_CLASS*(obj: pointer): PCListClass = 
+  result = cast[PCListClass](CHECK_GET_CLASS(obj, TYPE_CLIST()))
 
-proc GTK_CLIST_FLAGS*(clist: pointer): guint16 =
-  result = toU16(GTK_CLIST(clist).flags)
+proc CLIST_FLAGS*(clist: pointer): guint16 = 
+  result = toU16(CLIST(clist).flags)
 
-proc GTK_CLIST_SET_FLAG*(clist: PGtkCList, flag: guint16) =
-  clist.flags = GTK_CLIST(clist).flags or (flag)
+proc SET_FLAG*(clist: PCList, flag: guint16) = 
+  clist.flags = CLIST(clist).flags or (flag)
 
-proc GTK_CLIST_UNSET_FLAG*(clist: PGtkCList, flag: guint16) =
-  clist.flags = GTK_CLIST(clist).flags and not (flag)
+proc UNSET_FLAG*(clist: PCList, flag: guint16) = 
+  clist.flags = CLIST(clist).flags and not (flag)
 
-proc GTK_CLIST_IN_DRAG_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_IN_DRAG)) != 0'i32
+proc CLIST_IN_DRAG_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_IN_DRAG)) != 0'i32
 
-proc GTK_CLIST_ROW_HEIGHT_SET_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_ROW_HEIGHT_SET)) != 0'i32
+proc CLIST_ROW_HEIGHT_SET_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_ROW_HEIGHT_SET)) != 0'i32
 
-proc GTK_CLIST_SHOW_TITLES_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_SHOW_TITLES)) != 0'i32
+proc CLIST_SHOW_TITLES_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_SHOW_TITLES)) != 0'i32
 
-proc GTK_CLIST_ADD_MODE_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_ADD_MODE)) != 0'i32
+proc CLIST_ADD_MODE_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_ADD_MODE)) != 0'i32
 
-proc GTK_CLIST_AUTO_SORT_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_AUTO_SORT)) != 0'i32
+proc CLIST_AUTO_SORT_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_AUTO_SORT)) != 0'i32
 
-proc GTK_CLIST_AUTO_RESIZE_BLOCKED_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_AUTO_RESIZE_BLOCKED)) != 0'i32
+proc CLIST_AUTO_RESIZE_BLOCKED_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_AUTO_RESIZE_BLOCKED)) != 0'i32
 
-proc GTK_CLIST_REORDERABLE_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_REORDERABLE)) != 0'i32
+proc CLIST_REORDERABLE_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_REORDERABLE)) != 0'i32
 
-proc GTK_CLIST_USE_DRAG_ICONS_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_USE_DRAG_ICONS)) != 0'i32
+proc CLIST_USE_DRAG_ICONS_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_USE_DRAG_ICONS)) != 0'i32
 
-proc GTK_CLIST_DRAW_DRAG_LINE_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_DRAW_DRAG_LINE)) != 0'i32
+proc CLIST_DRAW_DRAG_LINE_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_DRAW_DRAG_LINE)) != 0'i32
 
-proc GTK_CLIST_DRAW_DRAG_RECT_get*(clist: pointer): bool =
-  result = ((GTK_CLIST_FLAGS(clist)) and cint(GTK_CLIST_DRAW_DRAG_RECT)) != 0'i32
+proc CLIST_DRAW_DRAG_RECT_get*(clist: pointer): bool = 
+  result = ((CLIST_FLAGS(clist)) and cint(CLIST_DRAW_DRAG_RECT)) != 0'i32
 
-proc GTK_CLIST_ROW_get*(glist: PGList): PGtkCListRow =
-  result = cast[PGtkCListRow](glist . data)
+proc CLIST_ROW_get*(glist: PGList): PCListRow = 
+  result = cast[PCListRow](glist.data)
 
-when false:
-  proc GTK_CELL_TEXT_get*(cell: pointer): PGtkCellText =
-    result = cast[PGtkCellText](addr((cell)))
+when false: 
+  proc CELL_TEXT_get*(cell: pointer): PCellText = 
+    result = cast[PCellText](addr((cell)))
 
-  proc GTK_CELL_PIXMAP_get*(cell: pointer): PGtkCellPixmap =
-    result = cast[PGtkCellPixmap](addr((cell)))
+  proc CELL_PIXMAP_get*(cell: pointer): PCellPixmap = 
+    result = cast[PCellPixmap](addr((cell)))
 
-  proc GTK_CELL_PIXTEXT_get*(cell: pointer): PGtkCellPixText =
-    result = cast[PGtkCellPixText](addr((cell)))
+  proc CELL_PIXTEXT_get*(cell: pointer): PCellPixText = 
+    result = cast[PCellPixText](addr((cell)))
 
-  proc GTK_CELL_WIDGET_get*(cell: pointer): PGtkCellWidget =
-    result = cast[PGtkCellWidget](addr((cell)))
+  proc CELL_WIDGET_get*(cell: pointer): PCellWidget = 
+    result = cast[PCellWidget](addr((cell)))
 
-proc visible*(a: var TGtkCListColumn): guint =
+proc visible*(a: var TCListColumn): guint = 
   result = (a.flag0 and bm_TGtkCListColumn_visible) shr
       bp_TGtkCListColumn_visible
 
-proc set_visible*(a: var TGtkCListColumn, `visible`: guint) =
+proc set_visible*(a: var TCListColumn, `visible`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`visible` shl bp_TGtkCListColumn_visible) and
       bm_TGtkCListColumn_visible)
 
-proc width_set*(a: var TGtkCListColumn): guint =
+proc width_set*(a: var TCListColumn): guint = 
   result = (a.flag0 and bm_TGtkCListColumn_width_set) shr
       bp_TGtkCListColumn_width_set
 
-proc set_width_set*(a: var TGtkCListColumn, `width_set`: guint) =
+proc set_width_set*(a: var TCListColumn, `width_set`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`width_set` shl bp_TGtkCListColumn_width_set) and
       bm_TGtkCListColumn_width_set)
 
-proc resizeable*(a: var TGtkCListColumn): guint =
+proc resizeable*(a: var TCListColumn): guint = 
   result = (a.flag0 and bm_TGtkCListColumn_resizeable) shr
       bp_TGtkCListColumn_resizeable
 
-proc set_resizeable*(a: var TGtkCListColumn, `resizeable`: guint) =
+proc set_resizeable*(a: var TCListColumn, `resizeable`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`resizeable` shl bp_TGtkCListColumn_resizeable) and
       bm_TGtkCListColumn_resizeable)
 
-proc auto_resize*(a: var TGtkCListColumn): guint =
+proc auto_resize*(a: var TCListColumn): guint = 
   result = (a.flag0 and bm_TGtkCListColumn_auto_resize) shr
       bp_TGtkCListColumn_auto_resize
 
-proc set_auto_resize*(a: var TGtkCListColumn, `auto_resize`: guint) =
+proc set_auto_resize*(a: var TCListColumn, `auto_resize`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`auto_resize` shl bp_TGtkCListColumn_auto_resize) and
       bm_TGtkCListColumn_auto_resize)
 
-proc button_passive*(a: var TGtkCListColumn): guint =
+proc button_passive*(a: var TCListColumn): guint = 
   result = (a.flag0 and bm_TGtkCListColumn_button_passive) shr
       bp_TGtkCListColumn_button_passive
 
-proc set_button_passive*(a: var TGtkCListColumn, `button_passive`: guint) =
+proc set_button_passive*(a: var TCListColumn, `button_passive`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`button_passive` shl bp_TGtkCListColumn_button_passive) and
       bm_TGtkCListColumn_button_passive)
 
-proc fg_set*(a: var TGtkCListRow): guint =
+proc fg_set*(a: var TCListRow): guint = 
   result = (a.flag0 and bm_TGtkCListRow_fg_set) shr bp_TGtkCListRow_fg_set
 
-proc set_fg_set*(a: var TGtkCListRow, `fg_set`: guint) =
+proc set_fg_set*(a: var TCListRow, `fg_set`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`fg_set` shl bp_TGtkCListRow_fg_set) and bm_TGtkCListRow_fg_set)
 
-proc bg_set*(a: var TGtkCListRow): guint =
+proc bg_set*(a: var TCListRow): guint = 
   result = (a.flag0 and bm_TGtkCListRow_bg_set) shr bp_TGtkCListRow_bg_set
 
-proc set_bg_set*(a: var TGtkCListRow, `bg_set`: guint) =
+proc set_bg_set*(a: var TCListRow, `bg_set`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`bg_set` shl bp_TGtkCListRow_bg_set) and bm_TGtkCListRow_bg_set)
 
-proc selectable*(a: var TGtkCListRow): guint =
+proc selectable*(a: var TCListRow): guint = 
   result = (a.flag0 and bm_TGtkCListRow_selectable) shr
       bp_TGtkCListRow_selectable
 
-proc set_selectable*(a: var TGtkCListRow, `selectable`: guint) =
+proc set_selectable*(a: var TCListRow, `selectable`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`selectable` shl bp_TGtkCListRow_selectable) and
       bm_TGtkCListRow_selectable)
 
-proc GTK_TYPE_DIALOG*(): GType =
-  result = gtk_dialog_get_type()
+proc TYPE_DIALOG*(): GType = 
+  result = dialog_get_type()
 
-proc GTK_DIALOG*(obj: pointer): PGtkDialog =
-  result = cast[PGtkDialog](GTK_CHECK_CAST(obj, GTK_TYPE_DIALOG()))
+proc DIALOG*(obj: pointer): PDialog = 
+  result = cast[PDialog](CHECK_CAST(obj, TYPE_DIALOG()))
 
-proc GTK_DIALOG_CLASS*(klass: pointer): PGtkDialogClass =
-  result = cast[PGtkDialogClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_DIALOG()))
+proc DIALOG_CLASS*(klass: pointer): PDialogClass = 
+  result = cast[PDialogClass](CHECK_CLASS_CAST(klass, TYPE_DIALOG()))
 
-proc GTK_IS_DIALOG*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_DIALOG())
+proc IS_DIALOG*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_DIALOG())
 
-proc GTK_IS_DIALOG_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_DIALOG())
+proc IS_DIALOG_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_DIALOG())
 
-proc GTK_DIALOG_GET_CLASS*(obj: pointer): PGtkDialogClass =
-  result = cast[PGtkDialogClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_DIALOG()))
+proc DIALOG_GET_CLASS*(obj: pointer): PDialogClass = 
+  result = cast[PDialogClass](CHECK_GET_CLASS(obj, TYPE_DIALOG()))
 
-proc GTK_TYPE_VBOX*(): GType =
-  result = gtk_vbox_get_type()
+proc TYPE_VBOX*(): GType = 
+  result = vbox_get_type()
 
-proc GTK_VBOX*(obj: pointer): PGtkVBox =
-  result = cast[PGtkVBox](GTK_CHECK_CAST(obj, GTK_TYPE_VBOX()))
+proc VBOX*(obj: pointer): PVBox = 
+  result = cast[PVBox](CHECK_CAST(obj, TYPE_VBOX()))
 
-proc GTK_VBOX_CLASS*(klass: pointer): PGtkVBoxClass =
-  result = cast[PGtkVBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VBOX()))
+proc VBOX_CLASS*(klass: pointer): PVBoxClass = 
+  result = cast[PVBoxClass](CHECK_CLASS_CAST(klass, TYPE_VBOX()))
 
-proc GTK_IS_VBOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VBOX())
+proc IS_VBOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VBOX())
 
-proc GTK_IS_VBOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VBOX())
+proc IS_VBOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VBOX())
 
-proc GTK_VBOX_GET_CLASS*(obj: pointer): PGtkVBoxClass =
-  result = cast[PGtkVBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VBOX()))
+proc VBOX_GET_CLASS*(obj: pointer): PVBoxClass = 
+  result = cast[PVBoxClass](CHECK_GET_CLASS(obj, TYPE_VBOX()))
 
-proc GTK_TYPE_COLOR_SELECTION*(): GType =
-  result = gtk_color_selection_get_type()
+proc TYPE_COLOR_SELECTION*(): GType = 
+  result = color_selection_get_type()
 
-proc GTK_COLOR_SELECTION*(obj: pointer): PGtkColorSelection =
-  result = cast[PGtkColorSelection](GTK_CHECK_CAST(obj, GTK_TYPE_COLOR_SELECTION()))
+proc COLOR_SELECTION*(obj: pointer): PColorSelection = 
+  result = cast[PColorSelection](CHECK_CAST(obj, TYPE_COLOR_SELECTION()))
 
-proc GTK_COLOR_SELECTION_CLASS*(klass: pointer): PGtkColorSelectionClass =
-  result = cast[PGtkColorSelectionClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_COLOR_SELECTION()))
+proc COLOR_SELECTION_CLASS*(klass: pointer): PColorSelectionClass = 
+  result = cast[PColorSelectionClass](CHECK_CLASS_CAST(klass, 
+      TYPE_COLOR_SELECTION()))
 
-proc GTK_IS_COLOR_SELECTION*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_COLOR_SELECTION())
+proc IS_COLOR_SELECTION*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_COLOR_SELECTION())
 
-proc GTK_IS_COLOR_SELECTION_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_COLOR_SELECTION())
+proc IS_COLOR_SELECTION_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_COLOR_SELECTION())
 
-proc GTK_COLOR_SELECTION_GET_CLASS*(obj: pointer): PGtkColorSelectionClass =
-  result = cast[PGtkColorSelectionClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_COLOR_SELECTION()))
+proc COLOR_SELECTION_GET_CLASS*(obj: pointer): PColorSelectionClass = 
+  result = cast[PColorSelectionClass](CHECK_GET_CLASS(obj, 
+      TYPE_COLOR_SELECTION()))
 
-proc GTK_TYPE_COLOR_SELECTION_DIALOG*(): GType =
-  result = gtk_color_selection_dialog_get_type()
+proc TYPE_COLOR_SELECTION_DIALOG*(): GType = 
+  result = color_selection_dialog_get_type()
 
-proc GTK_COLOR_SELECTION_DIALOG*(obj: pointer): PGtkColorSelectionDialog =
-  result = cast[PGtkColorSelectionDialog](GTK_CHECK_CAST(obj,
-      GTK_TYPE_COLOR_SELECTION_DIALOG()))
+proc COLOR_SELECTION_DIALOG*(obj: pointer): PColorSelectionDialog = 
+  result = cast[PColorSelectionDialog](CHECK_CAST(obj, 
+      TYPE_COLOR_SELECTION_DIALOG()))
 
-proc GTK_COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): PGtkColorSelectionDialogClass =
-  result = cast[PGtkColorSelectionDialogClass](
-      GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_COLOR_SELECTION_DIALOG()))
+proc COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): PColorSelectionDialogClass = 
+  result = cast[PColorSelectionDialogClass](CHECK_CLASS_CAST(klass, 
+      TYPE_COLOR_SELECTION_DIALOG()))
 
-proc GTK_IS_COLOR_SELECTION_DIALOG*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_COLOR_SELECTION_DIALOG())
+proc IS_COLOR_SELECTION_DIALOG*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_COLOR_SELECTION_DIALOG())
 
-proc GTK_IS_COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_COLOR_SELECTION_DIALOG())
+proc IS_COLOR_SELECTION_DIALOG_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_COLOR_SELECTION_DIALOG())
 
-proc GTK_COLOR_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PGtkColorSelectionDialogClass =
-  result = cast[PGtkColorSelectionDialogClass](
-      GTK_CHECK_GET_CLASS(obj, GTK_TYPE_COLOR_SELECTION_DIALOG()))
+proc COLOR_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PColorSelectionDialogClass = 
+  result = cast[PColorSelectionDialogClass](CHECK_GET_CLASS(obj, 
+      TYPE_COLOR_SELECTION_DIALOG()))
 
-proc GTK_TYPE_HBOX*(): GType =
-  result = gtk_hbox_get_type()
+proc TYPE_HBOX*(): GType = 
+  result = hbox_get_type()
 
-proc GTK_HBOX*(obj: pointer): PGtkHBox =
-  result = cast[PGtkHBox](GTK_CHECK_CAST(obj, GTK_TYPE_HBOX()))
+proc HBOX*(obj: pointer): PHBox = 
+  result = cast[PHBox](CHECK_CAST(obj, TYPE_HBOX()))
 
-proc GTK_HBOX_CLASS*(klass: pointer): PGtkHBoxClass =
-  result = cast[PGtkHBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HBOX()))
+proc HBOX_CLASS*(klass: pointer): PHBoxClass = 
+  result = cast[PHBoxClass](CHECK_CLASS_CAST(klass, TYPE_HBOX()))
 
-proc GTK_IS_HBOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HBOX())
+proc IS_HBOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HBOX())
 
-proc GTK_IS_HBOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HBOX())
+proc IS_HBOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HBOX())
 
-proc GTK_HBOX_GET_CLASS*(obj: pointer): PGtkHBoxClass =
-  result = cast[PGtkHBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HBOX()))
+proc HBOX_GET_CLASS*(obj: pointer): PHBoxClass = 
+  result = cast[PHBoxClass](CHECK_GET_CLASS(obj, TYPE_HBOX()))
 
-proc GTK_TYPE_COMBO*(): GType =
-  result = gtk_combo_get_type()
+proc TYPE_COMBO*(): GType = 
+  result = combo_get_type()
 
-proc GTK_COMBO*(obj: pointer): PGtkCombo =
-  result = cast[PGtkCombo](GTK_CHECK_CAST(obj, GTK_TYPE_COMBO()))
+proc COMBO*(obj: pointer): PCombo = 
+  result = cast[PCombo](CHECK_CAST(obj, TYPE_COMBO()))
 
-proc GTK_COMBO_CLASS*(klass: pointer): PGtkComboClass =
-  result = cast[PGtkComboClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_COMBO()))
+proc COMBO_CLASS*(klass: pointer): PComboClass = 
+  result = cast[PComboClass](CHECK_CLASS_CAST(klass, TYPE_COMBO()))
 
-proc GTK_IS_COMBO*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_COMBO())
+proc IS_COMBO*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_COMBO())
 
-proc GTK_IS_COMBO_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_COMBO())
+proc IS_COMBO_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_COMBO())
 
-proc GTK_COMBO_GET_CLASS*(obj: pointer): PGtkComboClass =
-  result = cast[PGtkComboClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_COMBO()))
+proc COMBO_GET_CLASS*(obj: pointer): PComboClass = 
+  result = cast[PComboClass](CHECK_GET_CLASS(obj, TYPE_COMBO()))
 
-proc value_in_list*(a: var TGtkCombo): guint =
-  result = (a.GtkComboflag0 and bm_TGtkCombo_value_in_list) shr
+proc value_in_list*(a: var TCombo): guint = 
+  result = (a.Comboflag0 and bm_TGtkCombo_value_in_list) shr
       bp_TGtkCombo_value_in_list
 
-proc set_value_in_list*(a: var TGtkCombo, `value_in_list`: guint) =
-  a.GtkComboflag0 = a.GtkComboflag0 or
+proc set_value_in_list*(a: var TCombo, `value_in_list`: guint) = 
+  a.Comboflag0 = a.Comboflag0 or
       (int16(`value_in_list` shl bp_TGtkCombo_value_in_list) and
       bm_TGtkCombo_value_in_list)
 
-proc ok_if_empty*(a: var TGtkCombo): guint =
-  result = (a.GtkComboflag0 and bm_TGtkCombo_ok_if_empty) shr
+proc ok_if_empty*(a: var TCombo): guint = 
+  result = (a.Comboflag0 and bm_TGtkCombo_ok_if_empty) shr
       bp_TGtkCombo_ok_if_empty
 
-proc set_ok_if_empty*(a: var TGtkCombo, `ok_if_empty`: guint) =
-  a.GtkComboflag0 = a.GtkComboflag0 or
+proc set_ok_if_empty*(a: var TCombo, `ok_if_empty`: guint) = 
+  a.Comboflag0 = a.Comboflag0 or
       (int16(`ok_if_empty` shl bp_TGtkCombo_ok_if_empty) and
       bm_TGtkCombo_ok_if_empty)
 
-proc case_sensitive*(a: var TGtkCombo): guint =
-  result = (a.GtkComboflag0 and bm_TGtkCombo_case_sensitive) shr
+proc case_sensitive*(a: var TCombo): guint = 
+  result = (a.Comboflag0 and bm_TGtkCombo_case_sensitive) shr
       bp_TGtkCombo_case_sensitive
 
-proc set_case_sensitive*(a: var TGtkCombo, `case_sensitive`: guint) =
-  a.GtkComboflag0 = a.GtkComboflag0 or
+proc set_case_sensitive*(a: var TCombo, `case_sensitive`: guint) = 
+  a.Comboflag0 = a.Comboflag0 or
       (int16(`case_sensitive` shl bp_TGtkCombo_case_sensitive) and
       bm_TGtkCombo_case_sensitive)
 
-proc use_arrows*(a: var TGtkCombo): guint =
-  result = (a.GtkComboflag0 and bm_TGtkCombo_use_arrows) shr bp_TGtkCombo_use_arrows
+proc use_arrows*(a: var TCombo): guint = 
+  result = (a.Comboflag0 and bm_TGtkCombo_use_arrows) shr
+      bp_TGtkCombo_use_arrows
 
-proc set_use_arrows*(a: var TGtkCombo, `use_arrows`: guint) =
-  a.GtkComboflag0 = a.GtkComboflag0 or
-      (int16(`use_arrows` shl bp_TGtkCombo_use_arrows) and bm_TGtkCombo_use_arrows)
+proc set_use_arrows*(a: var TCombo, `use_arrows`: guint) = 
+  a.Comboflag0 = a.Comboflag0 or
+      (int16(`use_arrows` shl bp_TGtkCombo_use_arrows) and
+      bm_TGtkCombo_use_arrows)
 
-proc use_arrows_always*(a: var TGtkCombo): guint =
-  result = (a.GtkComboflag0 and bm_TGtkCombo_use_arrows_always) shr
+proc use_arrows_always*(a: var TCombo): guint = 
+  result = (a.Comboflag0 and bm_TGtkCombo_use_arrows_always) shr
       bp_TGtkCombo_use_arrows_always
 
-proc set_use_arrows_always*(a: var TGtkCombo, `use_arrows_always`: guint) =
-  a.GtkComboflag0 = a.GtkComboflag0 or
+proc set_use_arrows_always*(a: var TCombo, `use_arrows_always`: guint) = 
+  a.Comboflag0 = a.Comboflag0 or
       (int16(`use_arrows_always` shl bp_TGtkCombo_use_arrows_always) and
       bm_TGtkCombo_use_arrows_always)
 
-proc GTK_TYPE_CTREE*(): GType =
-  result = gtk_ctree_get_type()
+proc TYPE_CTREE*(): GType = 
+  result = ctree_get_type()
 
-proc GTK_CTREE*(obj: pointer): PGtkCTree =
-  result = cast[PGtkCTree](GTK_CHECK_CAST(obj, GTK_TYPE_CTREE()))
+proc CTREE*(obj: pointer): PCTree = 
+  result = cast[PCTree](CHECK_CAST(obj, TYPE_CTREE()))
 
-proc GTK_CTREE_CLASS*(klass: pointer): PGtkCTreeClass =
-  result = cast[PGtkCTreeClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_CTREE()))
+proc CTREE_CLASS*(klass: pointer): PCTreeClass = 
+  result = cast[PCTreeClass](CHECK_CLASS_CAST(klass, TYPE_CTREE()))
 
-proc GTK_IS_CTREE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CTREE())
+proc IS_CTREE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CTREE())
 
-proc GTK_IS_CTREE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CTREE())
+proc IS_CTREE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CTREE())
 
-proc GTK_CTREE_GET_CLASS*(obj: pointer): PGtkCTreeClass =
-  result = cast[PGtkCTreeClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CTREE()))
+proc CTREE_GET_CLASS*(obj: pointer): PCTreeClass = 
+  result = cast[PCTreeClass](CHECK_GET_CLASS(obj, TYPE_CTREE()))
 
-proc GTK_CTREE_ROW*(node: TAddress): PGtkCTreeRow =
-  result = cast[PGtkCTreeRow]((cast[PGList](node)) . data)
+proc CTREE_ROW*(node: TAddress): PCTreeRow = 
+  result = cast[PCTreeRow]((cast[PGList](node)).data)
 
-proc GTK_CTREE_NODE*(node: TAddress): PGtkCTreeNode =
-  result = cast[PGtkCTreeNode](node)
+proc CTREE_NODE*(node: TAddress): PCTreeNode = 
+  result = cast[PCTreeNode](node)
 
-proc GTK_CTREE_NODE_NEXT*(nnode: TAddress): PGtkCTreeNode =
-  result = cast[PGtkCTreeNode]((cast[PGList](nnode)) . next)
+proc CTREE_NODE_NEXT*(nnode: TAddress): PCTreeNode = 
+  result = cast[PCTreeNode]((cast[PGList](nnode)).next)
 
-proc GTK_CTREE_NODE_PREV*(`pnode`: TAddress): PGtkCTreeNode =
-  result = cast[PGtkCTreeNode]((cast[PGList](`pnode`)) . prev)
+proc CTREE_NODE_PREV*(pnode: TAddress): PCTreeNode = 
+  result = cast[PCTreeNode]((cast[PGList](pnode)).prev)
 
-proc GTK_CTREE_FUNC*(`func`: TAddress): TGtkCTreeFunc =
-  result = cast[TGtkCTreeFunc](`func`)
+proc CTREE_FUNC*(fun: TAddress): TCTreeFunc = 
+  result = cast[TCTreeFunc](fun)
 
-proc GTK_TYPE_CTREE_NODE*(): GType =
-  result = gtk_ctree_node_get_type()
+proc TYPE_CTREE_NODE*(): GType = 
+  result = ctree_node_get_type()
 
-proc line_style*(a: var TGtkCTree): guint =
-  result = (a.GtkCTreeflag0 and bm_TGtkCTree_line_style) shr bp_TGtkCTree_line_style
+proc line_style*(a: var TCTree): guint = 
+  result = (a.CTreeflag0 and bm_TGtkCTree_line_style) shr
+      bp_TGtkCTree_line_style
 
-proc set_line_style*(a: var TGtkCTree, `line_style`: guint) =
-  a.GtkCTreeflag0 = a.GtkCTreeflag0 or
-      (int16(`line_style` shl bp_TGtkCTree_line_style) and bm_TGtkCTree_line_style)
+proc set_line_style*(a: var TCTree, `line_style`: guint) = 
+  a.CTreeflag0 = a.CTreeflag0 or
+      (int16(`line_style` shl bp_TGtkCTree_line_style) and
+      bm_TGtkCTree_line_style)
 
-proc expander_style*(a: var TGtkCTree): guint =
-  result = (a.GtkCTreeflag0 and bm_TGtkCTree_expander_style) shr
+proc expander_style*(a: var TCTree): guint = 
+  result = (a.CTreeflag0 and bm_TGtkCTree_expander_style) shr
       bp_TGtkCTree_expander_style
 
-proc set_expander_style*(a: var TGtkCTree, `expander_style`: guint) =
-  a.GtkCTreeflag0 = a.GtkCTreeflag0 or
+proc set_expander_style*(a: var TCTree, `expander_style`: guint) = 
+  a.CTreeflag0 = a.CTreeflag0 or
       (int16(`expander_style` shl bp_TGtkCTree_expander_style) and
       bm_TGtkCTree_expander_style)
 
-proc show_stub*(a: var TGtkCTree): guint =
-  result = (a.GtkCTreeflag0 and bm_TGtkCTree_show_stub) shr bp_TGtkCTree_show_stub
+proc show_stub*(a: var TCTree): guint = 
+  result = (a.CTreeflag0 and bm_TGtkCTree_show_stub) shr
+      bp_TGtkCTree_show_stub
 
-proc set_show_stub*(a: var TGtkCTree, `show_stub`: guint) =
-  a.GtkCTreeflag0 = a.GtkCTreeflag0 or
-      (int16(`show_stub` shl bp_TGtkCTree_show_stub) and bm_TGtkCTree_show_stub)
+proc set_show_stub*(a: var TCTree, `show_stub`: guint) = 
+  a.CTreeflag0 = a.CTreeflag0 or
+      (int16(`show_stub` shl bp_TGtkCTree_show_stub) and
+      bm_TGtkCTree_show_stub)
 
-proc is_leaf*(a: var TGtkCTreeRow): guint =
-  result = (a.GtkCTreeRow_flag0 and bm_TGtkCTreeRow_is_leaf) shr bp_TGtkCTreeRow_is_leaf
+proc is_leaf*(a: var TCTreeRow): guint = 
+  result = (a.CTreeRow_flag0 and bm_TGtkCTreeRow_is_leaf) shr
+      bp_TGtkCTreeRow_is_leaf
 
-proc set_is_leaf*(a: var TGtkCTreeRow, `is_leaf`: guint) =
-  a.GtkCTreeRow_flag0 = a.GtkCTreeRow_flag0 or
-      (int16(`is_leaf` shl bp_TGtkCTreeRow_is_leaf) and bm_TGtkCTreeRow_is_leaf)
+proc set_is_leaf*(a: var TCTreeRow, `is_leaf`: guint) = 
+  a.CTreeRow_flag0 = a.CTreeRow_flag0 or
+      (int16(`is_leaf` shl bp_TGtkCTreeRow_is_leaf) and
+      bm_TGtkCTreeRow_is_leaf)
 
-proc expanded*(a: var TGtkCTreeRow): guint =
-  result = (a.GtkCTreeRow_flag0 and bm_TGtkCTreeRow_expanded) shr
+proc expanded*(a: var TCTreeRow): guint = 
+  result = (a.CTreeRow_flag0 and bm_TGtkCTreeRow_expanded) shr
       bp_TGtkCTreeRow_expanded
 
-proc set_expanded*(a: var TGtkCTreeRow, `expanded`: guint) =
-  a.GtkCTreeRow_flag0 = a.GtkCTreeRowflag0 or
-      (int16(`expanded` shl bp_TGtkCTreeRow_expanded) and bm_TGtkCTreeRow_expanded)
+proc set_expanded*(a: var TCTreeRow, `expanded`: guint) = 
+  a.CTreeRow_flag0 = a.CTreeRowflag0 or
+      (int16(`expanded` shl bp_TGtkCTreeRow_expanded) and
+      bm_TGtkCTreeRow_expanded)
 
-proc gtk_ctree_set_reorderable*(t: pointer, r: bool) =
-  gtk_clist_set_reorderable(cast[PGtkCList](t), r)
+proc ctree_set_reorderable*(t: pointer, r: bool) = 
+  set_reorderable(cast[PCList](t), r)
 
-proc GTK_TYPE_DRAWING_AREA*(): GType =
-  result = gtk_drawing_area_get_type()
+proc TYPE_DRAWING_AREA*(): GType = 
+  result = drawing_area_get_type()
 
-proc GTK_DRAWING_AREA*(obj: pointer): PGtkDrawingArea =
-  result = cast[PGtkDrawingArea](GTK_CHECK_CAST(obj, GTK_TYPE_DRAWING_AREA()))
+proc DRAWING_AREA*(obj: pointer): PDrawingArea = 
+  result = cast[PDrawingArea](CHECK_CAST(obj, TYPE_DRAWING_AREA()))
 
-proc GTK_DRAWING_AREA_CLASS*(klass: pointer): PGtkDrawingAreaClass =
-  result = cast[PGtkDrawingAreaClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_DRAWING_AREA()))
+proc DRAWING_AREA_CLASS*(klass: pointer): PDrawingAreaClass = 
+  result = cast[PDrawingAreaClass](CHECK_CLASS_CAST(klass, TYPE_DRAWING_AREA()))
 
-proc GTK_IS_DRAWING_AREA*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_DRAWING_AREA())
+proc IS_DRAWING_AREA*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_DRAWING_AREA())
 
-proc GTK_IS_DRAWING_AREA_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_DRAWING_AREA())
+proc IS_DRAWING_AREA_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_DRAWING_AREA())
 
-proc GTK_DRAWING_AREA_GET_CLASS*(obj: pointer): PGtkDrawingAreaClass =
-  result = cast[PGtkDrawingAreaClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_DRAWING_AREA()))
+proc DRAWING_AREA_GET_CLASS*(obj: pointer): PDrawingAreaClass = 
+  result = cast[PDrawingAreaClass](CHECK_GET_CLASS(obj, TYPE_DRAWING_AREA()))
 
-proc GTK_TYPE_CURVE*(): GType =
-  result = gtk_curve_get_type()
+proc TYPE_CURVE*(): GType = 
+  result = curve_get_type()
 
-proc GTK_CURVE*(obj: pointer): PGtkCurve =
-  result = cast[PGtkCurve](GTK_CHECK_CAST(obj, GTK_TYPE_CURVE()))
+proc CURVE*(obj: pointer): PCurve = 
+  result = cast[PCurve](CHECK_CAST(obj, TYPE_CURVE()))
 
-proc GTK_CURVE_CLASS*(klass: pointer): PGtkCurveClass =
-  result = cast[PGtkCurveClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_CURVE()))
+proc CURVE_CLASS*(klass: pointer): PCurveClass = 
+  result = cast[PCurveClass](CHECK_CLASS_CAST(klass, TYPE_CURVE()))
 
-proc GTK_IS_CURVE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_CURVE())
+proc IS_CURVE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_CURVE())
 
-proc GTK_IS_CURVE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_CURVE())
+proc IS_CURVE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_CURVE())
 
-proc GTK_CURVE_GET_CLASS*(obj: pointer): PGtkCurveClass =
-  result = cast[PGtkCurveClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_CURVE()))
+proc CURVE_GET_CLASS*(obj: pointer): PCurveClass = 
+  result = cast[PCurveClass](CHECK_GET_CLASS(obj, TYPE_CURVE()))
 
-proc GTK_TYPE_EDITABLE*(): GType =
-  result = gtk_editable_get_type()
+proc TYPE_EDITABLE*(): GType = 
+  result = editable_get_type()
 
-proc GTK_EDITABLE*(obj: pointer): PGtkEditable =
-  result = cast[PGtkEditable](G_TYPE_CHECK_INSTANCE_CAST(obj, GTK_TYPE_EDITABLE()))
+proc EDITABLE*(obj: pointer): PEditable = 
+  result = cast[PEditable](G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_EDITABLE()))
 
-proc GTK_EDITABLE_CLASS*(vtable: pointer): PGtkEditableClass =
-  result = cast[PGtkEditableClass](G_TYPE_CHECK_CLASS_CAST(vtable, GTK_TYPE_EDITABLE()))
+proc EDITABLE_CLASS*(vtable: pointer): PEditableClass = 
+  result = cast[PEditableClass](G_TYPE_CHECK_CLASS_CAST(vtable, TYPE_EDITABLE()))
 
-proc GTK_IS_EDITABLE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_EDITABLE())
+proc IS_EDITABLE*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_EDITABLE())
 
-proc GTK_IS_EDITABLE_CLASS*(vtable: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(vtable, GTK_TYPE_EDITABLE())
+proc IS_EDITABLE_CLASS*(vtable: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(vtable, TYPE_EDITABLE())
 
-proc GTK_EDITABLE_GET_CLASS*(inst: pointer): PGtkEditableClass =
-  result = cast[PGtkEditableClass](G_TYPE_INSTANCE_GET_INTERFACE(inst,
-      GTK_TYPE_EDITABLE()))
+proc EDITABLE_GET_CLASS*(inst: pointer): PEditableClass = 
+  result = cast[PEditableClass](G_TYPE_INSTANCE_GET_INTERFACE(inst, 
+      TYPE_EDITABLE()))
 
-proc GTK_TYPE_IM_CONTEXT*(): GType =
-  result = gtk_im_context_get_type()
+proc TYPE_IM_CONTEXT*(): GType = 
+  result = im_context_get_type()
 
-proc GTK_IM_CONTEXT*(obj: pointer): PGtkIMContext =
-  result = cast[PGtkIMContext](GTK_CHECK_CAST(obj, GTK_TYPE_IM_CONTEXT()))
+proc IM_CONTEXT*(obj: pointer): PIMContext = 
+  result = cast[PIMContext](CHECK_CAST(obj, TYPE_IM_CONTEXT()))
 
-proc GTK_IM_CONTEXT_CLASS*(klass: pointer): PGtkIMContextClass =
-  result = cast[PGtkIMContextClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_IM_CONTEXT()))
+proc IM_CONTEXT_CLASS*(klass: pointer): PIMContextClass = 
+  result = cast[PIMContextClass](CHECK_CLASS_CAST(klass, TYPE_IM_CONTEXT()))
 
-proc GTK_IS_IM_CONTEXT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_IM_CONTEXT())
+proc IS_IM_CONTEXT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_IM_CONTEXT())
 
-proc GTK_IS_IM_CONTEXT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_IM_CONTEXT())
+proc IS_IM_CONTEXT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_IM_CONTEXT())
 
-proc GTK_IM_CONTEXT_GET_CLASS*(obj: pointer): PGtkIMContextClass =
-  result = cast[PGtkIMContextClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_IM_CONTEXT()))
+proc IM_CONTEXT_GET_CLASS*(obj: pointer): PIMContextClass = 
+  result = cast[PIMContextClass](CHECK_GET_CLASS(obj, TYPE_IM_CONTEXT()))
 
-proc GTK_TYPE_MENU_SHELL*(): GType =
-  result = gtk_menu_shell_get_type()
+proc TYPE_MENU_SHELL*(): GType = 
+  result = menu_shell_get_type()
 
-proc GTK_MENU_SHELL*(obj: pointer): PGtkMenuShell =
-  result = cast[PGtkMenuShell](GTK_CHECK_CAST(obj, GTK_TYPE_MENU_SHELL()))
+proc MENU_SHELL*(obj: pointer): PMenuShell = 
+  result = cast[PMenuShell](CHECK_CAST(obj, TYPE_MENU_SHELL()))
 
-proc GTK_MENU_SHELL_CLASS*(klass: pointer): PGtkMenuShellClass =
-  result = cast[PGtkMenuShellClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_MENU_SHELL()))
+proc MENU_SHELL_CLASS*(klass: pointer): PMenuShellClass = 
+  result = cast[PMenuShellClass](CHECK_CLASS_CAST(klass, TYPE_MENU_SHELL()))
 
-proc GTK_IS_MENU_SHELL*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_MENU_SHELL())
+proc IS_MENU_SHELL*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_MENU_SHELL())
 
-proc GTK_IS_MENU_SHELL_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_MENU_SHELL())
+proc IS_MENU_SHELL_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_MENU_SHELL())
 
-proc GTK_MENU_SHELL_GET_CLASS*(obj: pointer): PGtkMenuShellClass =
-  result = cast[PGtkMenuShellClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_MENU_SHELL()))
+proc MENU_SHELL_GET_CLASS*(obj: pointer): PMenuShellClass = 
+  result = cast[PMenuShellClass](CHECK_GET_CLASS(obj, TYPE_MENU_SHELL()))
 
-proc active*(a: var TGtkMenuShell): guint =
-  result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_active) shr bp_TGtkMenuShell_active
+proc active*(a: var TMenuShell): guint = 
+  result = (a.MenuShellflag0 and bm_TGtkMenuShell_active) shr
+      bp_TGtkMenuShell_active
 
-proc set_active*(a: var TGtkMenuShell, `active`: guint) =
-  a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or
-      (int16(`active` shl bp_TGtkMenuShell_active) and bm_TGtkMenuShell_active)
+proc set_active*(a: var TMenuShell, `active`: guint) = 
+  a.MenuShellflag0 = a.MenuShellflag0 or
+      (int16(`active` shl bp_TGtkMenuShell_active) and
+      bm_TGtkMenuShell_active)
 
-proc have_grab*(a: var TGtkMenuShell): guint =
-  result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_have_grab) shr
+proc have_grab*(a: var TMenuShell): guint = 
+  result = (a.MenuShellflag0 and bm_TGtkMenuShell_have_grab) shr
       bp_TGtkMenuShell_have_grab
 
-proc set_have_grab*(a: var TGtkMenuShell, `have_grab`: guint) =
-  a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or
+proc set_have_grab*(a: var TMenuShell, `have_grab`: guint) = 
+  a.MenuShellflag0 = a.MenuShellflag0 or
       (int16(`have_grab` shl bp_TGtkMenuShell_have_grab) and
       bm_TGtkMenuShell_have_grab)
 
-proc have_xgrab*(a: var TGtkMenuShell): guint =
-  result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_have_xgrab) shr
+proc have_xgrab*(a: var TMenuShell): guint = 
+  result = (a.MenuShellflag0 and bm_TGtkMenuShell_have_xgrab) shr
       bp_TGtkMenuShell_have_xgrab
 
-proc set_have_xgrab*(a: var TGtkMenuShell, `have_xgrab`: guint) =
-  a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or
+proc set_have_xgrab*(a: var TMenuShell, `have_xgrab`: guint) = 
+  a.MenuShellflag0 = a.MenuShellflag0 or
       (int16(`have_xgrab` shl bp_TGtkMenuShell_have_xgrab) and
       bm_TGtkMenuShell_have_xgrab)
 
-proc ignore_leave*(a: var TGtkMenuShell): guint =
-  result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_ignore_leave) shr
+proc ignore_leave*(a: var TMenuShell): guint = 
+  result = (a.MenuShellflag0 and bm_TGtkMenuShell_ignore_leave) shr
       bp_TGtkMenuShell_ignore_leave
 
-proc set_ignore_leave*(a: var TGtkMenuShell, `ignore_leave`: guint) =
-  a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or
+proc set_ignore_leave*(a: var TMenuShell, `ignore_leave`: guint) = 
+  a.MenuShellflag0 = a.MenuShellflag0 or
       (int16(`ignore_leave` shl bp_TGtkMenuShell_ignore_leave) and
       bm_TGtkMenuShell_ignore_leave)
 
-proc menu_flag*(a: var TGtkMenuShell): guint =
-  result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_menu_flag) shr
+proc menu_flag*(a: var TMenuShell): guint = 
+  result = (a.MenuShellflag0 and bm_TGtkMenuShell_menu_flag) shr
       bp_TGtkMenuShell_menu_flag
 
-proc set_menu_flag*(a: var TGtkMenuShell, `menu_flag`: guint) =
-  a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or
+proc set_menu_flag*(a: var TMenuShell, `menu_flag`: guint) = 
+  a.MenuShellflag0 = a.MenuShellflag0 or
       (int16(`menu_flag` shl bp_TGtkMenuShell_menu_flag) and
       bm_TGtkMenuShell_menu_flag)
 
-proc ignore_enter*(a: var TGtkMenuShell): guint =
-  result = (a.GtkMenuShellflag0 and bm_TGtkMenuShell_ignore_enter) shr
+proc ignore_enter*(a: var TMenuShell): guint = 
+  result = (a.MenuShellflag0 and bm_TGtkMenuShell_ignore_enter) shr
       bp_TGtkMenuShell_ignore_enter
 
-proc set_ignore_enter*(a: var TGtkMenuShell, `ignore_enter`: guint) =
-  a.GtkMenuShellflag0 = a.GtkMenuShellflag0 or
+proc set_ignore_enter*(a: var TMenuShell, `ignore_enter`: guint) = 
+  a.MenuShellflag0 = a.MenuShellflag0 or
       (int16(`ignore_enter` shl bp_TGtkMenuShell_ignore_enter) and
       bm_TGtkMenuShell_ignore_enter)
 
-proc submenu_placement*(a: var TGtkMenuShellClass): guint =
-  result = (a.GtkMenuShellClassflag0 and bm_TGtkMenuShellClass_submenu_placement) shr
+proc submenu_placement*(a: var TMenuShellClass): guint = 
+  result = (a.MenuShellClassflag0 and bm_TGtkMenuShellClass_submenu_placement) shr
       bp_TGtkMenuShellClass_submenu_placement
 
-proc set_submenu_placement*(a: var TGtkMenuShellClass,
-                            `submenu_placement`: guint) =
-  a.GtkMenuShellClassflag0 = a.GtkMenuShellClassflag0 or
+proc set_submenu_placement*(a: var TMenuShellClass, `submenu_placement`: guint) = 
+  a.MenuShellClassflag0 = a.MenuShellClassflag0 or
       (int16(`submenu_placement` shl bp_TGtkMenuShellClass_submenu_placement) and
       bm_TGtkMenuShellClass_submenu_placement)
 
-proc GTK_TYPE_MENU*(): GType =
-  result = gtk_menu_get_type()
+proc TYPE_MENU*(): GType = 
+  result = menu_get_type()
 
-proc GTK_MENU*(obj: pointer): PGtkMenu =
-  result = cast[PGtkMenu](GTK_CHECK_CAST(obj, GTK_TYPE_MENU()))
+proc MENU*(obj: pointer): PMenu = 
+  result = cast[PMenu](CHECK_CAST(obj, TYPE_MENU()))
 
-proc GTK_MENU_CLASS*(klass: pointer): PGtkMenuClass =
-  result = cast[PGtkMenuClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_MENU()))
+proc MENU_CLASS*(klass: pointer): PMenuClass = 
+  result = cast[PMenuClass](CHECK_CLASS_CAST(klass, TYPE_MENU()))
 
-proc GTK_IS_MENU*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_MENU())
+proc IS_MENU*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_MENU())
 
-proc GTK_IS_MENU_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_MENU())
+proc IS_MENU_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_MENU())
 
-proc GTK_MENU_GET_CLASS*(obj: pointer): PGtkMenuClass =
-  result = cast[PGtkMenuClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_MENU()))
+proc MENU_GET_CLASS*(obj: pointer): PMenuClass = 
+  result = cast[PMenuClass](CHECK_GET_CLASS(obj, TYPE_MENU()))
 
-proc needs_destruction_ref_count*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_needs_destruction_ref_count) shr
+proc needs_destruction_ref_count*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_needs_destruction_ref_count) shr
       bp_TGtkMenu_needs_destruction_ref_count
 
-proc set_needs_destruction_ref_count*(a: var TGtkMenu,
-                                      `needs_destruction_ref_count`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_needs_destruction_ref_count*(a: var TMenu, 
+                                      `needs_destruction_ref_count`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`needs_destruction_ref_count` shl
       bp_TGtkMenu_needs_destruction_ref_count) and
       bm_TGtkMenu_needs_destruction_ref_count)
 
-proc torn_off*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_torn_off) shr bp_TGtkMenu_torn_off
+proc torn_off*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_torn_off) shr bp_TGtkMenu_torn_off
 
-proc set_torn_off*(a: var TGtkMenu, `torn_off`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_torn_off*(a: var TMenu, `torn_off`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`torn_off` shl bp_TGtkMenu_torn_off) and bm_TGtkMenu_torn_off)
 
-proc tearoff_active*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_tearoff_active) shr
+proc tearoff_active*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_tearoff_active) shr
       bp_TGtkMenu_tearoff_active
 
-proc set_tearoff_active*(a: var TGtkMenu, `tearoff_active`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_tearoff_active*(a: var TMenu, `tearoff_active`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`tearoff_active` shl bp_TGtkMenu_tearoff_active) and
       bm_TGtkMenu_tearoff_active)
 
-proc scroll_fast*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_scroll_fast) shr bp_TGtkMenu_scroll_fast
+proc scroll_fast*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_scroll_fast) shr
+      bp_TGtkMenu_scroll_fast
 
-proc set_scroll_fast*(a: var TGtkMenu, `scroll_fast`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_scroll_fast*(a: var TMenu, `scroll_fast`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`scroll_fast` shl bp_TGtkMenu_scroll_fast) and
       bm_TGtkMenu_scroll_fast)
 
-proc upper_arrow_visible*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_upper_arrow_visible) shr
+proc upper_arrow_visible*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_upper_arrow_visible) shr
       bp_TGtkMenu_upper_arrow_visible
 
-proc set_upper_arrow_visible*(a: var TGtkMenu, `upper_arrow_visible`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_upper_arrow_visible*(a: var TMenu, `upper_arrow_visible`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`upper_arrow_visible` shl bp_TGtkMenu_upper_arrow_visible) and
       bm_TGtkMenu_upper_arrow_visible)
 
-proc lower_arrow_visible*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_lower_arrow_visible) shr
+proc lower_arrow_visible*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_lower_arrow_visible) shr
       bp_TGtkMenu_lower_arrow_visible
 
-proc set_lower_arrow_visible*(a: var TGtkMenu, `lower_arrow_visible`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_lower_arrow_visible*(a: var TMenu, `lower_arrow_visible`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`lower_arrow_visible` shl bp_TGtkMenu_lower_arrow_visible) and
       bm_TGtkMenu_lower_arrow_visible)
 
-proc upper_arrow_prelight*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_upper_arrow_prelight) shr
+proc upper_arrow_prelight*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_upper_arrow_prelight) shr
       bp_TGtkMenu_upper_arrow_prelight
 
-proc set_upper_arrow_prelight*(a: var TGtkMenu, `upper_arrow_prelight`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_upper_arrow_prelight*(a: var TMenu, `upper_arrow_prelight`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`upper_arrow_prelight` shl bp_TGtkMenu_upper_arrow_prelight) and
       bm_TGtkMenu_upper_arrow_prelight)
 
-proc lower_arrow_prelight*(a: var TGtkMenu): guint =
-  result = (a.GtkMenuflag0 and bm_TGtkMenu_lower_arrow_prelight) shr
+proc lower_arrow_prelight*(a: var TMenu): guint = 
+  result = (a.Menuflag0 and bm_TGtkMenu_lower_arrow_prelight) shr
       bp_TGtkMenu_lower_arrow_prelight
 
-proc set_lower_arrow_prelight*(a: var TGtkMenu, `lower_arrow_prelight`: guint) =
-  a.GtkMenuflag0 = a.GtkMenuflag0 or
+proc set_lower_arrow_prelight*(a: var TMenu, `lower_arrow_prelight`: guint) = 
+  a.Menuflag0 = a.Menuflag0 or
       (int16(`lower_arrow_prelight` shl bp_TGtkMenu_lower_arrow_prelight) and
       bm_TGtkMenu_lower_arrow_prelight)
 
-proc gtk_menu_append*(menu, child: PGtkWidget) =
-  gtk_menu_shell_append(cast[PGtkMenuShell](menu), child)
+proc menu_append*(menu, child: PWidget) = 
+  append(cast[PMenuShell](menu), child)
 
-proc gtk_menu_prepend*(menu, child: PGtkWidget) =
-  gtk_menu_shell_prepend(cast[PGtkMenuShell](menu), child)
+proc menu_prepend*(menu, child: PWidget) = 
+  prepend(cast[PMenuShell](menu), child)
 
-proc gtk_menu_insert*(menu, child: PGtkWidget, pos: gint) =
-  gtk_menu_shell_insert(cast[PGtkMenuShell](menu), child, pos)
+proc menu_insert*(menu, child: PWidget, pos: gint) = 
+  insert(cast[PMenuShell](menu), child, pos)
 
-proc GTK_TYPE_ENTRY*(): GType =
-  result = gtk_entry_get_type()
+proc TYPE_ENTRY*(): GType = 
+  result = entry_get_type()
 
-proc GTK_ENTRY*(obj: pointer): PGtkEntry =
-  result = cast[PGtkEntry](GTK_CHECK_CAST(obj, GTK_TYPE_ENTRY()))
+proc ENTRY*(obj: pointer): PEntry = 
+  result = cast[PEntry](CHECK_CAST(obj, TYPE_ENTRY()))
 
-proc GTK_ENTRY_CLASS*(klass: pointer): PGtkEntryClass =
-  result = cast[PGtkEntryClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_ENTRY()))
+proc ENTRY_CLASS*(klass: pointer): PEntryClass = 
+  result = cast[PEntryClass](CHECK_CLASS_CAST(klass, TYPE_ENTRY()))
 
-proc GTK_IS_ENTRY*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_ENTRY())
+proc IS_ENTRY*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_ENTRY())
 
-proc GTK_IS_ENTRY_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ENTRY())
+proc IS_ENTRY_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ENTRY())
 
-proc GTK_ENTRY_GET_CLASS*(obj: pointer): PGtkEntryClass =
-  result = cast[PGtkEntryClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ENTRY()))
+proc ENTRY_GET_CLASS*(obj: pointer): PEntryClass = 
+  result = cast[PEntryClass](CHECK_GET_CLASS(obj, TYPE_ENTRY()))
 
-proc editable*(a: var TGtkEntry): guint =
-  result = (a.GtkEntryflag0 and bm_TGtkEntry_editable) shr bp_TGtkEntry_editable
+proc editable*(a: var TEntry): guint = 
+  result = (a.Entryflag0 and bm_TGtkEntry_editable) shr bp_TGtkEntry_editable
 
-proc set_editable*(a: var TGtkEntry, `editable`: guint) =
-  a.GtkEntryflag0 = a.GtkEntryflag0 or
+proc set_editable*(a: var TEntry, `editable`: guint) = 
+  a.Entryflag0 = a.Entryflag0 or
       (int16(`editable` shl bp_TGtkEntry_editable) and bm_TGtkEntry_editable)
 
-proc visible*(a: var TGtkEntry): guint =
-  result = (a.GtkEntryflag0 and bm_TGtkEntry_visible) shr bp_TGtkEntry_visible
+proc visible*(a: var TEntry): guint = 
+  result = (a.Entryflag0 and bm_TGtkEntry_visible) shr bp_TGtkEntry_visible
 
-proc set_visible*(a: var TGtkEntry, `visible`: guint) =
-  a.GtkEntryflag0 = a.GtkEntryflag0 or
+proc set_visible*(a: var TEntry, `visible`: guint) = 
+  a.Entryflag0 = a.Entryflag0 or
       (int16(`visible` shl bp_TGtkEntry_visible) and bm_TGtkEntry_visible)
 
-proc overwrite_mode*(a: var TGtkEntry): guint =
-  result = (a.GtkEntryflag0 and bm_TGtkEntry_overwrite_mode) shr
+proc overwrite_mode*(a: var TEntry): guint = 
+  result = (a.Entryflag0 and bm_TGtkEntry_overwrite_mode) shr
       bp_TGtkEntry_overwrite_mode
 
-proc set_overwrite_mode*(a: var TGtkEntry, `overwrite_mode`: guint) =
-  a.GtkEntryflag0 = a.GtkEntryflag0 or
+proc set_overwrite_mode*(a: var TEntry, `overwrite_mode`: guint) = 
+  a.Entryflag0 = a.Entryflag0 or
       (int16(`overwrite_mode` shl bp_TGtkEntry_overwrite_mode) and
       bm_TGtkEntry_overwrite_mode)
 
-proc in_drag*(a: var TGtkEntry): guint =
-  result = (a.GtkEntryflag0 and bm_TGtkEntry_in_drag) shr bp_TGtkEntry_in_drag
+proc in_drag*(a: var TEntry): guint = 
+  result = (a.Entryflag0 and bm_TGtkEntry_in_drag) shr bp_TGtkEntry_in_drag
 
-proc set_in_drag*(a: var TGtkEntry, `in_drag`: guint) =
-  a.GtkEntryflag0 = a.GtkEntryflag0 or
+proc set_in_drag*(a: var TEntry, `in_drag`: guint) = 
+  a.Entryflag0 = a.Entryflag0 or
       (int16(`in_drag` shl bp_TGtkEntry_in_drag) and bm_TGtkEntry_in_drag)
 
-proc cache_includes_preedit*(a: var TGtkEntry): guint =
+proc cache_includes_preedit*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_cache_includes_preedit) shr
       bp_TGtkEntry_cache_includes_preedit
 
-proc set_cache_includes_preedit*(a: var TGtkEntry,
-                                 `cache_includes_preedit`: guint) =
+proc set_cache_includes_preedit*(a: var TEntry, `cache_includes_preedit`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`cache_includes_preedit` shl bp_TGtkEntry_cache_includes_preedit) and
       bm_TGtkEntry_cache_includes_preedit)
 
-proc need_im_reset*(a: var TGtkEntry): guint =
+proc need_im_reset*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_need_im_reset) shr
       bp_TGtkEntry_need_im_reset
 
-proc set_need_im_reset*(a: var TGtkEntry, `need_im_reset`: guint) =
+proc set_need_im_reset*(a: var TEntry, `need_im_reset`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`need_im_reset` shl bp_TGtkEntry_need_im_reset) and
       bm_TGtkEntry_need_im_reset)
 
-proc has_frame*(a: var TGtkEntry): guint =
+proc has_frame*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_has_frame) shr bp_TGtkEntry_has_frame
 
-proc set_has_frame*(a: var TGtkEntry, `has_frame`: guint) =
+proc set_has_frame*(a: var TEntry, `has_frame`: guint) = 
   a.flag1 = a.flag1 or
-      (int16(`has_frame` shl bp_TGtkEntry_has_frame) and bm_TGtkEntry_has_frame)
+      (int16(`has_frame` shl bp_TGtkEntry_has_frame) and
+      bm_TGtkEntry_has_frame)
 
-proc activates_default*(a: var TGtkEntry): guint =
+proc activates_default*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_activates_default) shr
       bp_TGtkEntry_activates_default
 
-proc set_activates_default*(a: var TGtkEntry, `activates_default`: guint) =
+proc set_activates_default*(a: var TEntry, `activates_default`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`activates_default` shl bp_TGtkEntry_activates_default) and
       bm_TGtkEntry_activates_default)
 
-proc cursor_visible*(a: var TGtkEntry): guint =
+proc cursor_visible*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_cursor_visible) shr
       bp_TGtkEntry_cursor_visible
 
-proc set_cursor_visible*(a: var TGtkEntry, `cursor_visible`: guint) =
+proc set_cursor_visible*(a: var TEntry, `cursor_visible`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`cursor_visible` shl bp_TGtkEntry_cursor_visible) and
       bm_TGtkEntry_cursor_visible)
 
-proc in_click*(a: var TGtkEntry): guint =
+proc in_click*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_in_click) shr bp_TGtkEntry_in_click
 
-proc set_in_click*(a: var TGtkEntry, `in_click`: guint) =
+proc set_in_click*(a: var TEntry, `in_click`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`in_click` shl bp_TGtkEntry_in_click) and bm_TGtkEntry_in_click)
 
-proc is_cell_renderer*(a: var TGtkEntry): guint =
+proc is_cell_renderer*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_is_cell_renderer) shr
       bp_TGtkEntry_is_cell_renderer
 
-proc set_is_cell_renderer*(a: var TGtkEntry, `is_cell_renderer`: guint) =
+proc set_is_cell_renderer*(a: var TEntry, `is_cell_renderer`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`is_cell_renderer` shl bp_TGtkEntry_is_cell_renderer) and
       bm_TGtkEntry_is_cell_renderer)
 
-proc editing_canceled*(a: var TGtkEntry): guint =
+proc editing_canceled*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_editing_canceled) shr
       bp_TGtkEntry_editing_canceled
 
-proc set_editing_canceled*(a: var TGtkEntry, `editing_canceled`: guint) =
+proc set_editing_canceled*(a: var TEntry, `editing_canceled`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`editing_canceled` shl bp_TGtkEntry_editing_canceled) and
       bm_TGtkEntry_editing_canceled)
 
-proc mouse_cursor_obscured*(a: var TGtkEntry): guint =
+proc mouse_cursor_obscured*(a: var TEntry): guint = 
   result = (a.flag1 and bm_TGtkEntry_mouse_cursor_obscured) shr
       bp_TGtkEntry_mouse_cursor_obscured
 
-proc set_mouse_cursor_obscured*(a: var TGtkEntry, `mouse_cursor_obscured`: guint) =
+proc set_mouse_cursor_obscured*(a: var TEntry, `mouse_cursor_obscured`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`mouse_cursor_obscured` shl bp_TGtkEntry_mouse_cursor_obscured) and
       bm_TGtkEntry_mouse_cursor_obscured)
 
-proc GTK_TYPE_EVENT_BOX*(): GType =
-  result = gtk_event_box_get_type()
+proc TYPE_EVENT_BOX*(): GType = 
+  result = event_box_get_type()
 
-proc GTK_EVENT_BOX*(obj: pointer): PGtkEventBox =
-  result = cast[PGtkEventBox](GTK_CHECK_CAST(obj, GTK_TYPE_EVENT_BOX()))
+proc EVENT_BOX*(obj: pointer): PEventBox = 
+  result = cast[PEventBox](CHECK_CAST(obj, TYPE_EVENT_BOX()))
 
-proc GTK_EVENT_BOX_CLASS*(klass: pointer): PGtkEventBoxClass =
-  result = cast[PGtkEventBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_EVENT_BOX()))
+proc EVENT_BOX_CLASS*(klass: pointer): PEventBoxClass = 
+  result = cast[PEventBoxClass](CHECK_CLASS_CAST(klass, TYPE_EVENT_BOX()))
 
-proc GTK_IS_EVENT_BOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_EVENT_BOX())
+proc IS_EVENT_BOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_EVENT_BOX())
 
-proc GTK_IS_EVENT_BOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_EVENT_BOX())
+proc IS_EVENT_BOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_EVENT_BOX())
 
-proc GTK_EVENT_BOX_GET_CLASS*(obj: pointer): PGtkEventBoxClass =
-  result = cast[PGtkEventBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_EVENT_BOX()))
+proc EVENT_BOX_GET_CLASS*(obj: pointer): PEventBoxClass = 
+  result = cast[PEventBoxClass](CHECK_GET_CLASS(obj, TYPE_EVENT_BOX()))
 
-proc GTK_TYPE_FILE_SELECTION*(): GType =
-  result = gtk_file_selection_get_type()
+proc TYPE_FILE_SELECTION*(): GType = 
+  result = file_selection_get_type()
 
-proc GTK_FILE_SELECTION*(obj: pointer): PGtkFileSelection =
-  result = cast[PGtkFileSelection](GTK_CHECK_CAST(obj, GTK_TYPE_FILE_SELECTION()))
+proc FILE_SELECTION*(obj: pointer): PFileSelection = 
+  result = cast[PFileSelection](CHECK_CAST(obj, TYPE_FILE_SELECTION()))
 
-proc GTK_FILE_SELECTION_CLASS*(klass: pointer): PGtkFileSelectionClass =
-  result = cast[PGtkFileSelectionClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_FILE_SELECTION()))
+proc FILE_SELECTION_CLASS*(klass: pointer): PFileSelectionClass = 
+  result = cast[PFileSelectionClass](CHECK_CLASS_CAST(klass, 
+      TYPE_FILE_SELECTION()))
 
-proc GTK_IS_FILE_SELECTION*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_FILE_SELECTION())
+proc IS_FILE_SELECTION*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_FILE_SELECTION())
 
-proc GTK_IS_FILE_SELECTION_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_FILE_SELECTION())
+proc IS_FILE_SELECTION_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_FILE_SELECTION())
 
-proc GTK_FILE_SELECTION_GET_CLASS*(obj: pointer): PGtkFileSelectionClass =
-  result = cast[PGtkFileSelectionClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_FILE_SELECTION()))
+proc FILE_SELECTION_GET_CLASS*(obj: pointer): PFileSelectionClass = 
+  result = cast[PFileSelectionClass](CHECK_GET_CLASS(obj, TYPE_FILE_SELECTION()))
 
-proc GTK_TYPE_FIXED*(): GType =
-  result = gtk_fixed_get_type()
+proc TYPE_FIXED*(): GType = 
+  result = fixed_get_type()
 
-proc GTK_FIXED*(obj: pointer): PGtkFixed =
-  result = cast[PGtkFixed](GTK_CHECK_CAST(obj, GTK_TYPE_FIXED()))
+proc FIXED*(obj: pointer): PFixed = 
+  result = cast[PFixed](CHECK_CAST(obj, TYPE_FIXED()))
 
-proc GTK_FIXED_CLASS*(klass: pointer): PGtkFixedClass =
-  result = cast[PGtkFixedClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_FIXED()))
+proc FIXED_CLASS*(klass: pointer): PFixedClass = 
+  result = cast[PFixedClass](CHECK_CLASS_CAST(klass, TYPE_FIXED()))
 
-proc GTK_IS_FIXED*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_FIXED())
+proc IS_FIXED*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_FIXED())
 
-proc GTK_IS_FIXED_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_FIXED())
+proc IS_FIXED_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_FIXED())
 
-proc GTK_FIXED_GET_CLASS*(obj: pointer): PGtkFixedClass =
-  result = cast[PGtkFixedClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_FIXED()))
+proc FIXED_GET_CLASS*(obj: pointer): PFixedClass = 
+  result = cast[PFixedClass](CHECK_GET_CLASS(obj, TYPE_FIXED()))
 
-proc GTK_TYPE_FONT_SELECTION*(): GType =
-  result = gtk_font_selection_get_type()
+proc TYPE_FONT_SELECTION*(): GType = 
+  result = font_selection_get_type()
 
-proc GTK_FONT_SELECTION*(obj: pointer): PGtkFontSelection =
-  result = cast[PGtkFontSelection](GTK_CHECK_CAST(obj, GTK_TYPE_FONT_SELECTION()))
+proc FONT_SELECTION*(obj: pointer): PFontSelection = 
+  result = cast[PFontSelection](CHECK_CAST(obj, TYPE_FONT_SELECTION()))
 
-proc GTK_FONT_SELECTION_CLASS*(klass: pointer): PGtkFontSelectionClass =
-  result = cast[PGtkFontSelectionClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_FONT_SELECTION()))
+proc FONT_SELECTION_CLASS*(klass: pointer): PFontSelectionClass = 
+  result = cast[PFontSelectionClass](CHECK_CLASS_CAST(klass, 
+      TYPE_FONT_SELECTION()))
 
-proc GTK_IS_FONT_SELECTION*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_FONT_SELECTION())
+proc IS_FONT_SELECTION*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_FONT_SELECTION())
 
-proc GTK_IS_FONT_SELECTION_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_FONT_SELECTION())
+proc IS_FONT_SELECTION_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_FONT_SELECTION())
 
-proc GTK_FONT_SELECTION_GET_CLASS*(obj: pointer): PGtkFontSelectionClass =
-  result = cast[PGtkFontSelectionClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_FONT_SELECTION()))
+proc FONT_SELECTION_GET_CLASS*(obj: pointer): PFontSelectionClass = 
+  result = cast[PFontSelectionClass](CHECK_GET_CLASS(obj, TYPE_FONT_SELECTION()))
 
-proc GTK_TYPE_FONT_SELECTION_DIALOG*(): GType =
-  result = gtk_font_selection_dialog_get_type()
+proc TYPE_FONT_SELECTION_DIALOG*(): GType = 
+  result = font_selection_dialog_get_type()
 
-proc GTK_FONT_SELECTION_DIALOG*(obj: pointer): PGtkFontSelectionDialog =
-  result = cast[PGtkFontSelectionDialog](GTK_CHECK_CAST(obj,
-      GTK_TYPE_FONT_SELECTION_DIALOG()))
+proc FONT_SELECTION_DIALOG*(obj: pointer): PFontSelectionDialog = 
+  result = cast[PFontSelectionDialog](CHECK_CAST(obj, 
+      TYPE_FONT_SELECTION_DIALOG()))
 
-proc GTK_FONT_SELECTION_DIALOG_CLASS*(klass: pointer): PGtkFontSelectionDialogClass =
-  result = cast[PGtkFontSelectionDialogClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_FONT_SELECTION_DIALOG()))
+proc FONT_SELECTION_DIALOG_CLASS*(klass: pointer): PFontSelectionDialogClass = 
+  result = cast[PFontSelectionDialogClass](CHECK_CLASS_CAST(klass, 
+      TYPE_FONT_SELECTION_DIALOG()))
 
-proc GTK_IS_FONT_SELECTION_DIALOG*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_FONT_SELECTION_DIALOG())
+proc IS_FONT_SELECTION_DIALOG*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_FONT_SELECTION_DIALOG())
 
-proc GTK_IS_FONT_SELECTION_DIALOG_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_FONT_SELECTION_DIALOG())
+proc IS_FONT_SELECTION_DIALOG_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_FONT_SELECTION_DIALOG())
 
-proc GTK_FONT_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PGtkFontSelectionDialogClass =
-  result = cast[PGtkFontSelectionDialogClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_FONT_SELECTION_DIALOG()))
+proc FONT_SELECTION_DIALOG_GET_CLASS*(obj: pointer): PFontSelectionDialogClass = 
+  result = cast[PFontSelectionDialogClass](CHECK_GET_CLASS(obj, 
+      TYPE_FONT_SELECTION_DIALOG()))
 
-proc GTK_TYPE_GAMMA_CURVE*(): GType =
-  result = gtk_gamma_curve_get_type()
+proc TYPE_GAMMA_CURVE*(): GType = 
+  result = gamma_curve_get_type()
 
-proc GTK_GAMMA_CURVE*(obj: pointer): PGtkGammaCurve =
-  result = cast[PGtkGammaCurve](GTK_CHECK_CAST(obj, GTK_TYPE_GAMMA_CURVE()))
+proc GAMMA_CURVE*(obj: pointer): PGammaCurve = 
+  result = cast[PGammaCurve](CHECK_CAST(obj, TYPE_GAMMA_CURVE()))
 
-proc GTK_GAMMA_CURVE_CLASS*(klass: pointer): PGtkGammaCurveClass =
-  result = cast[PGtkGammaCurveClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_GAMMA_CURVE()))
+proc GAMMA_CURVE_CLASS*(klass: pointer): PGammaCurveClass = 
+  result = cast[PGammaCurveClass](CHECK_CLASS_CAST(klass, TYPE_GAMMA_CURVE()))
 
-proc GTK_IS_GAMMA_CURVE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_GAMMA_CURVE())
+proc IS_GAMMA_CURVE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_GAMMA_CURVE())
 
-proc GTK_IS_GAMMA_CURVE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_GAMMA_CURVE())
+proc IS_GAMMA_CURVE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_GAMMA_CURVE())
 
-proc GTK_GAMMA_CURVE_GET_CLASS*(obj: pointer): PGtkGammaCurveClass =
-  result = cast[PGtkGammaCurveClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_GAMMA_CURVE()))
+proc GAMMA_CURVE_GET_CLASS*(obj: pointer): PGammaCurveClass = 
+  result = cast[PGammaCurveClass](CHECK_GET_CLASS(obj, TYPE_GAMMA_CURVE()))
 
-proc GTK_TYPE_HANDLE_BOX*(): GType =
-  result = gtk_handle_box_get_type()
+proc TYPE_HANDLE_BOX*(): GType = 
+  result = handle_box_get_type()
 
-proc GTK_HANDLE_BOX*(obj: pointer): PGtkHandleBox =
-  result = cast[PGtkHandleBox](GTK_CHECK_CAST(obj, GTK_TYPE_HANDLE_BOX()))
+proc HANDLE_BOX*(obj: pointer): PHandleBox = 
+  result = cast[PHandleBox](CHECK_CAST(obj, TYPE_HANDLE_BOX()))
 
-proc GTK_HANDLE_BOX_CLASS*(klass: pointer): PGtkHandleBoxClass =
-  result = cast[PGtkHandleBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HANDLE_BOX()))
+proc HANDLE_BOX_CLASS*(klass: pointer): PHandleBoxClass = 
+  result = cast[PHandleBoxClass](CHECK_CLASS_CAST(klass, TYPE_HANDLE_BOX()))
 
-proc GTK_IS_HANDLE_BOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HANDLE_BOX())
+proc IS_HANDLE_BOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HANDLE_BOX())
 
-proc GTK_IS_HANDLE_BOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HANDLE_BOX())
+proc IS_HANDLE_BOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HANDLE_BOX())
 
-proc GTK_HANDLE_BOX_GET_CLASS*(obj: pointer): PGtkHandleBoxClass =
-  result = cast[PGtkHandleBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HANDLE_BOX()))
+proc HANDLE_BOX_GET_CLASS*(obj: pointer): PHandleBoxClass = 
+  result = cast[PHandleBoxClass](CHECK_GET_CLASS(obj, TYPE_HANDLE_BOX()))
 
-proc handle_position*(a: var TGtkHandleBox): guint =
-  result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_handle_position) shr
+proc handle_position*(a: var THandleBox): guint = 
+  result = (a.HandleBoxflag0 and bm_TGtkHandleBox_handle_position) shr
       bp_TGtkHandleBox_handle_position
 
-proc set_handle_position*(a: var TGtkHandleBox, `handle_position`: guint) =
-  a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or
+proc set_handle_position*(a: var THandleBox, `handle_position`: guint) = 
+  a.HandleBoxflag0 = a.HandleBoxflag0 or
       (int16(`handle_position` shl bp_TGtkHandleBox_handle_position) and
       bm_TGtkHandleBox_handle_position)
 
-proc float_window_mapped*(a: var TGtkHandleBox): guint =
-  result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_float_window_mapped) shr
+proc float_window_mapped*(a: var THandleBox): guint = 
+  result = (a.HandleBoxflag0 and bm_TGtkHandleBox_float_window_mapped) shr
       bp_TGtkHandleBox_float_window_mapped
 
-proc set_float_window_mapped*(a: var TGtkHandleBox, `float_window_mapped`: guint) =
-  a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or
+proc set_float_window_mapped*(a: var THandleBox, `float_window_mapped`: guint) = 
+  a.HandleBoxflag0 = a.HandleBoxflag0 or
       (int16(`float_window_mapped` shl bp_TGtkHandleBox_float_window_mapped) and
       bm_TGtkHandleBox_float_window_mapped)
 
-proc child_detached*(a: var TGtkHandleBox): guint =
-  result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_child_detached) shr
+proc child_detached*(a: var THandleBox): guint = 
+  result = (a.HandleBoxflag0 and bm_TGtkHandleBox_child_detached) shr
       bp_TGtkHandleBox_child_detached
 
-proc set_child_detached*(a: var TGtkHandleBox, `child_detached`: guint) =
-  a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or
+proc set_child_detached*(a: var THandleBox, `child_detached`: guint) = 
+  a.HandleBoxflag0 = a.HandleBoxflag0 or
       (int16(`child_detached` shl bp_TGtkHandleBox_child_detached) and
       bm_TGtkHandleBox_child_detached)
 
-proc in_drag*(a: var TGtkHandleBox): guint =
-  result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_in_drag) shr
+proc in_drag*(a: var THandleBox): guint = 
+  result = (a.HandleBoxflag0 and bm_TGtkHandleBox_in_drag) shr
       bp_TGtkHandleBox_in_drag
 
-proc set_in_drag*(a: var TGtkHandleBox, `in_drag`: guint) =
-  a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or
-      (int16(`in_drag` shl bp_TGtkHandleBox_in_drag) and bm_TGtkHandleBox_in_drag)
+proc set_in_drag*(a: var THandleBox, `in_drag`: guint) = 
+  a.HandleBoxflag0 = a.HandleBoxflag0 or
+      (int16(`in_drag` shl bp_TGtkHandleBox_in_drag) and
+      bm_TGtkHandleBox_in_drag)
 
-proc shrink_on_detach*(a: var TGtkHandleBox): guint =
-  result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_shrink_on_detach) shr
+proc shrink_on_detach*(a: var THandleBox): guint = 
+  result = (a.HandleBoxflag0 and bm_TGtkHandleBox_shrink_on_detach) shr
       bp_TGtkHandleBox_shrink_on_detach
 
-proc set_shrink_on_detach*(a: var TGtkHandleBox, `shrink_on_detach`: guint) =
-  a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or
+proc set_shrink_on_detach*(a: var THandleBox, `shrink_on_detach`: guint) = 
+  a.HandleBoxflag0 = a.HandleBoxflag0 or
       (int16(`shrink_on_detach` shl bp_TGtkHandleBox_shrink_on_detach) and
       bm_TGtkHandleBox_shrink_on_detach)
 
-proc snap_edge*(a: var TGtkHandleBox): gint =
-  result = (a.GtkHandleBoxflag0 and bm_TGtkHandleBox_snap_edge) shr
+proc snap_edge*(a: var THandleBox): gint = 
+  result = (a.HandleBoxflag0 and bm_TGtkHandleBox_snap_edge) shr
       bp_TGtkHandleBox_snap_edge
 
-proc set_snap_edge*(a: var TGtkHandleBox, `snap_edge`: gint) =
-  a.GtkHandleBoxflag0 = a.GtkHandleBoxflag0 or
+proc set_snap_edge*(a: var THandleBox, `snap_edge`: gint) = 
+  a.HandleBoxflag0 = a.HandleBoxflag0 or
       (int16(`snap_edge` shl bp_TGtkHandleBox_snap_edge) and
       bm_TGtkHandleBox_snap_edge)
 
-proc GTK_TYPE_PANED*(): GType =
-  result = gtk_paned_get_type()
+proc TYPE_PANED*(): GType = 
+  result = paned_get_type()
 
-proc GTK_PANED*(obj: pointer): PGtkPaned =
-  result = cast[PGtkPaned](GTK_CHECK_CAST(obj, GTK_TYPE_PANED()))
+proc PANED*(obj: pointer): PPaned = 
+  result = cast[PPaned](CHECK_CAST(obj, TYPE_PANED()))
 
-proc GTK_PANED_CLASS*(klass: pointer): PGtkPanedClass =
-  result = cast[PGtkPanedClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_PANED()))
+proc PANED_CLASS*(klass: pointer): PPanedClass = 
+  result = cast[PPanedClass](CHECK_CLASS_CAST(klass, TYPE_PANED()))
 
-proc GTK_IS_PANED*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_PANED())
+proc IS_PANED*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_PANED())
 
-proc GTK_IS_PANED_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_PANED())
+proc IS_PANED_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_PANED())
 
-proc GTK_PANED_GET_CLASS*(obj: pointer): PGtkPanedClass =
-  result = cast[PGtkPanedClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_PANED()))
+proc PANED_GET_CLASS*(obj: pointer): PPanedClass = 
+  result = cast[PPanedClass](CHECK_GET_CLASS(obj, TYPE_PANED()))
 
-proc position_set*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_position_set) shr
+proc position_set*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_position_set) shr
       bp_TGtkPaned_position_set
 
-proc set_position_set*(a: var TGtkPaned, `position_set`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_position_set*(a: var TPaned, `position_set`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`position_set` shl bp_TGtkPaned_position_set) and
       bm_TGtkPaned_position_set)
 
-proc in_drag*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_in_drag) shr bp_TGtkPaned_in_drag
+proc in_drag*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_in_drag) shr bp_TGtkPaned_in_drag
 
-proc set_in_drag*(a: var TGtkPaned, `in_drag`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_in_drag*(a: var TPaned, `in_drag`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`in_drag` shl bp_TGtkPaned_in_drag) and bm_TGtkPaned_in_drag)
 
-proc child1_shrink*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_child1_shrink) shr
+proc child1_shrink*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_child1_shrink) shr
       bp_TGtkPaned_child1_shrink
 
-proc set_child1_shrink*(a: var TGtkPaned, `child1_shrink`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_child1_shrink*(a: var TPaned, `child1_shrink`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`child1_shrink` shl bp_TGtkPaned_child1_shrink) and
       bm_TGtkPaned_child1_shrink)
 
-proc child1_resize*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_child1_resize) shr
+proc child1_resize*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_child1_resize) shr
       bp_TGtkPaned_child1_resize
 
-proc set_child1_resize*(a: var TGtkPaned, `child1_resize`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_child1_resize*(a: var TPaned, `child1_resize`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`child1_resize` shl bp_TGtkPaned_child1_resize) and
       bm_TGtkPaned_child1_resize)
 
-proc child2_shrink*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_child2_shrink) shr
+proc child2_shrink*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_child2_shrink) shr
       bp_TGtkPaned_child2_shrink
 
-proc set_child2_shrink*(a: var TGtkPaned, `child2_shrink`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_child2_shrink*(a: var TPaned, `child2_shrink`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`child2_shrink` shl bp_TGtkPaned_child2_shrink) and
       bm_TGtkPaned_child2_shrink)
 
-proc child2_resize*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_child2_resize) shr
+proc child2_resize*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_child2_resize) shr
       bp_TGtkPaned_child2_resize
 
-proc set_child2_resize*(a: var TGtkPaned, `child2_resize`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_child2_resize*(a: var TPaned, `child2_resize`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`child2_resize` shl bp_TGtkPaned_child2_resize) and
       bm_TGtkPaned_child2_resize)
 
-proc orientation*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_orientation) shr
+proc orientation*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_orientation) shr
       bp_TGtkPaned_orientation
 
-proc set_orientation*(a: var TGtkPaned, `orientation`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_orientation*(a: var TPaned, `orientation`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`orientation` shl bp_TGtkPaned_orientation) and
       bm_TGtkPaned_orientation)
 
-proc in_recursion*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_in_recursion) shr
+proc in_recursion*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_in_recursion) shr
       bp_TGtkPaned_in_recursion
 
-proc set_in_recursion*(a: var TGtkPaned, `in_recursion`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_in_recursion*(a: var TPaned, `in_recursion`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`in_recursion` shl bp_TGtkPaned_in_recursion) and
       bm_TGtkPaned_in_recursion)
 
-proc handle_prelit*(a: var TGtkPaned): guint =
-  result = (a.GtkPanedflag0 and bm_TGtkPaned_handle_prelit) shr
+proc handle_prelit*(a: var TPaned): guint = 
+  result = (a.Panedflag0 and bm_TGtkPaned_handle_prelit) shr
       bp_TGtkPaned_handle_prelit
 
-proc set_handle_prelit*(a: var TGtkPaned, `handle_prelit`: guint) =
-  a.GtkPanedflag0 = a.GtkPanedflag0 or
+proc set_handle_prelit*(a: var TPaned, `handle_prelit`: guint) = 
+  a.Panedflag0 = a.Panedflag0 or
       (int16(`handle_prelit` shl bp_TGtkPaned_handle_prelit) and
       bm_TGtkPaned_handle_prelit)
 
-proc gtk_paned_gutter_size*(p: pointer, s: gint) =
+proc paned_gutter_size*(p: pointer, s: gint) = 
   if (p != nil) and (s != 0'i32): nil
-
-proc gtk_paned_set_gutter_size*(p: pointer, s: gint) =
+  
+proc paned_set_gutter_size*(p: pointer, s: gint) = 
   if (p != nil) and (s != 0'i32): nil
+  
+proc TYPE_HBUTTON_BOX*(): GType = 
+  result = hbutton_box_get_type()
 
-proc GTK_TYPE_HBUTTON_BOX*(): GType =
-  result = gtk_hbutton_box_get_type()
-
-proc GTK_HBUTTON_BOX*(obj: pointer): PGtkHButtonBox =
-  result = cast[PGtkHButtonBox](GTK_CHECK_CAST(obj, GTK_TYPE_HBUTTON_BOX()))
+proc HBUTTON_BOX*(obj: pointer): PHButtonBox = 
+  result = cast[PHButtonBox](CHECK_CAST(obj, TYPE_HBUTTON_BOX()))
 
-proc GTK_HBUTTON_BOX_CLASS*(klass: pointer): PGtkHButtonBoxClass =
-  result = cast[PGtkHButtonBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HBUTTON_BOX()))
+proc HBUTTON_BOX_CLASS*(klass: pointer): PHButtonBoxClass = 
+  result = cast[PHButtonBoxClass](CHECK_CLASS_CAST(klass, TYPE_HBUTTON_BOX()))
 
-proc GTK_IS_HBUTTON_BOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HBUTTON_BOX())
+proc IS_HBUTTON_BOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HBUTTON_BOX())
 
-proc GTK_IS_HBUTTON_BOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HBUTTON_BOX())
+proc IS_HBUTTON_BOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HBUTTON_BOX())
 
-proc GTK_HBUTTON_BOX_GET_CLASS*(obj: pointer): PGtkHButtonBoxClass =
-  result = cast[PGtkHButtonBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HBUTTON_BOX()))
+proc HBUTTON_BOX_GET_CLASS*(obj: pointer): PHButtonBoxClass = 
+  result = cast[PHButtonBoxClass](CHECK_GET_CLASS(obj, TYPE_HBUTTON_BOX()))
 
-proc GTK_TYPE_HPANED*(): GType =
-  result = gtk_hpaned_get_type()
+proc TYPE_HPANED*(): GType = 
+  result = hpaned_get_type()
 
-proc GTK_HPANED*(obj: pointer): PGtkHPaned =
-  result = cast[PGtkHPaned](GTK_CHECK_CAST(obj, GTK_TYPE_HPANED()))
+proc HPANED*(obj: pointer): PHPaned = 
+  result = cast[PHPaned](CHECK_CAST(obj, TYPE_HPANED()))
 
-proc GTK_HPANED_CLASS*(klass: pointer): PGtkHPanedClass =
-  result = cast[PGtkHPanedClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HPANED()))
+proc HPANED_CLASS*(klass: pointer): PHPanedClass = 
+  result = cast[PHPanedClass](CHECK_CLASS_CAST(klass, TYPE_HPANED()))
 
-proc GTK_IS_HPANED*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HPANED())
+proc IS_HPANED*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HPANED())
 
-proc GTK_IS_HPANED_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HPANED())
+proc IS_HPANED_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HPANED())
 
-proc GTK_HPANED_GET_CLASS*(obj: pointer): PGtkHPanedClass =
-  result = cast[PGtkHPanedClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HPANED()))
+proc HPANED_GET_CLASS*(obj: pointer): PHPanedClass = 
+  result = cast[PHPanedClass](CHECK_GET_CLASS(obj, TYPE_HPANED()))
 
-proc GTK_TYPE_RULER*(): GType =
-  result = gtk_ruler_get_type()
+proc TYPE_RULER*(): GType = 
+  result = ruler_get_type()
 
-proc GTK_RULER*(obj: pointer): PGtkRuler =
-  result = cast[PGtkRuler](GTK_CHECK_CAST(obj, GTK_TYPE_RULER()))
+proc RULER*(obj: pointer): PRuler = 
+  result = cast[PRuler](CHECK_CAST(obj, TYPE_RULER()))
 
-proc GTK_RULER_CLASS*(klass: pointer): PGtkRulerClass =
-  result = cast[PGtkRulerClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_RULER()))
+proc RULER_CLASS*(klass: pointer): PRulerClass = 
+  result = cast[PRulerClass](CHECK_CLASS_CAST(klass, TYPE_RULER()))
 
-proc GTK_IS_RULER*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_RULER())
+proc IS_RULER*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_RULER())
 
-proc GTK_IS_RULER_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_RULER())
+proc IS_RULER_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_RULER())
 
-proc GTK_RULER_GET_CLASS*(obj: pointer): PGtkRulerClass =
-  result = cast[PGtkRulerClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_RULER()))
+proc RULER_GET_CLASS*(obj: pointer): PRulerClass = 
+  result = cast[PRulerClass](CHECK_GET_CLASS(obj, TYPE_RULER()))
 
-proc GTK_TYPE_HRULER*(): GType =
-  result = gtk_hruler_get_type()
+proc TYPE_HRULER*(): GType = 
+  result = hruler_get_type()
 
-proc GTK_HRULER*(obj: pointer): PGtkHRuler =
-  result = cast[PGtkHRuler](GTK_CHECK_CAST(obj, GTK_TYPE_HRULER()))
+proc HRULER*(obj: pointer): PHRuler = 
+  result = cast[PHRuler](CHECK_CAST(obj, TYPE_HRULER()))
 
-proc GTK_HRULER_CLASS*(klass: pointer): PGtkHRulerClass =
-  result = cast[PGtkHRulerClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HRULER()))
+proc HRULER_CLASS*(klass: pointer): PHRulerClass = 
+  result = cast[PHRulerClass](CHECK_CLASS_CAST(klass, TYPE_HRULER()))
 
-proc GTK_IS_HRULER*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HRULER())
+proc IS_HRULER*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HRULER())
 
-proc GTK_IS_HRULER_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HRULER())
+proc IS_HRULER_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HRULER())
 
-proc GTK_HRULER_GET_CLASS*(obj: pointer): PGtkHRulerClass =
-  result = cast[PGtkHRulerClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HRULER()))
+proc HRULER_GET_CLASS*(obj: pointer): PHRulerClass = 
+  result = cast[PHRulerClass](CHECK_GET_CLASS(obj, TYPE_HRULER()))
 
-proc GTK_TYPE_SETTINGS*(): GType =
-  result = gtk_settings_get_type()
+proc TYPE_SETTINGS*(): GType = 
+  result = settings_get_type()
 
-proc GTK_SETTINGS*(obj: pointer): PGtkSettings =
-  result = cast[PGtkSettings](GTK_CHECK_CAST(obj, GTK_TYPE_SETTINGS()))
+proc SETTINGS*(obj: pointer): PSettings = 
+  result = cast[PSettings](CHECK_CAST(obj, TYPE_SETTINGS()))
 
-proc GTK_SETTINGS_CLASS*(klass: pointer): PGtkSettingsClass =
-  result = cast[PGtkSettingsClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SETTINGS()))
+proc SETTINGS_CLASS*(klass: pointer): PSettingsClass = 
+  result = cast[PSettingsClass](CHECK_CLASS_CAST(klass, TYPE_SETTINGS()))
 
-proc GTK_IS_SETTINGS*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SETTINGS())
+proc IS_SETTINGS*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SETTINGS())
 
-proc GTK_IS_SETTINGS_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SETTINGS())
+proc IS_SETTINGS_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SETTINGS())
 
-proc GTK_SETTINGS_GET_CLASS*(obj: pointer): PGtkSettingsClass =
-  result = cast[PGtkSettingsClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SETTINGS()))
+proc SETTINGS_GET_CLASS*(obj: pointer): PSettingsClass = 
+  result = cast[PSettingsClass](CHECK_GET_CLASS(obj, TYPE_SETTINGS()))
 
-proc GTK_TYPE_RC_STYLE*(): GType =
-  result = gtk_rc_style_get_type()
+proc TYPE_RC_STYLE*(): GType = 
+  result = rc_style_get_type()
 
-proc GTK_RC_STYLE_get*(anObject: pointer): PGtkRcStyle =
-  result = cast[PGtkRcStyle](G_TYPE_CHECK_INSTANCE_CAST(anObject, GTK_TYPE_RC_STYLE()))
+proc RC_STYLE_get*(anObject: pointer): PRcStyle = 
+  result = cast[PRcStyle](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_RC_STYLE()))
 
-proc GTK_RC_STYLE_CLASS*(klass: pointer): PGtkRcStyleClass =
-  result = cast[PGtkRcStyleClass](G_TYPE_CHECK_CLASS_CAST(klass, GTK_TYPE_RC_STYLE()))
+proc RC_STYLE_CLASS*(klass: pointer): PRcStyleClass = 
+  result = cast[PRcStyleClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_RC_STYLE()))
 
-proc GTK_IS_RC_STYLE*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_RC_STYLE())
+proc IS_RC_STYLE*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_RC_STYLE())
 
-proc GTK_IS_RC_STYLE_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_RC_STYLE())
+proc IS_RC_STYLE_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_RC_STYLE())
 
-proc GTK_RC_STYLE_GET_CLASS*(obj: pointer): PGtkRcStyleClass =
-  result = cast[PGtkRcStyleClass](G_TYPE_INSTANCE_GET_CLASS(obj, GTK_TYPE_RC_STYLE()))
+proc RC_STYLE_GET_CLASS*(obj: pointer): PRcStyleClass = 
+  result = cast[PRcStyleClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_RC_STYLE()))
 
-proc engine_specified*(a: var TGtkRcStyle): guint =
-  result = (a.GtkRcStyleflag0 and bm_TGtkRcStyle_engine_specified) shr
+proc engine_specified*(a: var TRcStyle): guint = 
+  result = (a.RcStyleflag0 and bm_TGtkRcStyle_engine_specified) shr
       bp_TGtkRcStyle_engine_specified
 
-proc set_engine_specified*(a: var TGtkRcStyle, `engine_specified`: guint) =
-  a.GtkRcStyleflag0 = a.GtkRcStyleflag0 or
+proc set_engine_specified*(a: var TRcStyle, `engine_specified`: guint) = 
+  a.RcStyleflag0 = a.RcStyleflag0 or
       (int16(`engine_specified` shl bp_TGtkRcStyle_engine_specified) and
       bm_TGtkRcStyle_engine_specified)
 
-proc GTK_TYPE_STYLE*(): GType =
-  result = gtk_style_get_type()
+proc TYPE_STYLE*(): GType = 
+  result = style_get_type()
 
-proc GTK_STYLE*(anObject: pointer): PGtkStyle =
-  result = cast[PGtkStyle](G_TYPE_CHECK_INSTANCE_CAST(anObject, GTK_TYPE_STYLE()))
+proc STYLE*(anObject: pointer): PStyle = 
+  result = cast[PStyle](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_STYLE()))
 
-proc GTK_STYLE_CLASS*(klass: pointer): PGtkStyleClass =
-  result = cast[PGtkStyleClass](G_TYPE_CHECK_CLASS_CAST(klass, GTK_TYPE_STYLE()))
+proc STYLE_CLASS*(klass: pointer): PStyleClass = 
+  result = cast[PStyleClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_STYLE()))
 
-proc GTK_IS_STYLE*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_STYLE())
+proc IS_STYLE*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_STYLE())
 
-proc GTK_IS_STYLE_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_STYLE())
+proc IS_STYLE_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_STYLE())
 
-proc GTK_STYLE_GET_CLASS*(obj: pointer): PGtkStyleClass =
-  result = cast[PGtkStyleClass](G_TYPE_INSTANCE_GET_CLASS(obj, GTK_TYPE_STYLE()))
+proc STYLE_GET_CLASS*(obj: pointer): PStyleClass = 
+  result = cast[PStyleClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_STYLE()))
 
-proc GTK_TYPE_BORDER*(): GType =
-  result = gtk_border_get_type()
+proc TYPE_BORDER*(): GType = 
+  result = border_get_type()
 
-proc GTK_STYLE_ATTACHED*(style: pointer): bool =
-  result = ((GTK_STYLE(style)).attach_count) > 0'i32
+proc STYLE_ATTACHED*(style: pointer): bool = 
+  result = ((STYLE(style)).attach_count) > 0'i32
 
-proc gtk_style_apply_default_pixmap*(style: PGtkStyle, window: PGdkWindow,
-                                     state_type: TGtkStateType,
-                                     area: PGdkRectangle, x: gint, y: gint,
-                                     width: gint, height: gint) =
-  gtk_style_apply_default_background(style, window, true, state_type, area, x,
-                                     y, width, height)
+proc apply_default_pixmap*(style: PStyle, window: gdk2.PWindow, 
+                                 state_type: TStateType, area: gdk2.PRectangle, 
+                                 x: gint, y: gint, width: gint, height: gint) = 
+  apply_default_background(style, window, true, state_type, area, x, y, 
+                           width, height)
 
-proc GTK_TYPE_RANGE*(): GType =
-  result = gtk_range_get_type()
+proc TYPE_RANGE*(): GType = 
+  result = range_get_type()
 
-proc GTK_RANGE*(obj: pointer): PGtkRange =
-  result = cast[PGtkRange](GTK_CHECK_CAST(obj, GTK_TYPE_RANGE()))
+proc RANGE*(obj: pointer): PRange = 
+  result = cast[PRange](CHECK_CAST(obj, TYPE_RANGE()))
 
-proc GTK_RANGE_CLASS*(klass: pointer): PGtkRangeClass =
-  result = cast[PGtkRangeClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_RANGE()))
+proc RANGE_CLASS*(klass: pointer): PRangeClass = 
+  result = cast[PRangeClass](CHECK_CLASS_CAST(klass, TYPE_RANGE()))
 
-proc GTK_IS_RANGE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_RANGE())
+proc IS_RANGE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_RANGE())
 
-proc GTK_IS_RANGE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_RANGE())
+proc IS_RANGE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_RANGE())
 
-proc GTK_RANGE_GET_CLASS*(obj: pointer): PGtkRangeClass =
-  result = cast[PGtkRangeClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_RANGE()))
+proc RANGE_GET_CLASS*(obj: pointer): PRangeClass = 
+  result = cast[PRangeClass](CHECK_GET_CLASS(obj, TYPE_RANGE()))
 
-proc inverted*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_inverted) shr bp_TGtkRange_inverted
+proc inverted*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_inverted) shr bp_TGtkRange_inverted
 
-proc set_inverted*(a: var TGtkRange, `inverted`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_inverted*(a: var TRange, `inverted`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`inverted` shl bp_TGtkRange_inverted) and bm_TGtkRange_inverted)
 
-proc flippable*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_flippable) shr bp_TGtkRange_flippable
+proc flippable*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_flippable) shr
+      bp_TGtkRange_flippable
 
-proc set_flippable*(a: var TGtkRange, `flippable`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
-      (int16(`flippable` shl bp_TGtkRange_flippable) and bm_TGtkRange_flippable)
+proc set_flippable*(a: var TRange, `flippable`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
+      (int16(`flippable` shl bp_TGtkRange_flippable) and
+      bm_TGtkRange_flippable)
 
-proc has_stepper_a*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_has_stepper_a) shr
+proc has_stepper_a*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_has_stepper_a) shr
       bp_TGtkRange_has_stepper_a
 
-proc set_has_stepper_a*(a: var TGtkRange, `has_stepper_a`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_has_stepper_a*(a: var TRange, `has_stepper_a`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`has_stepper_a` shl bp_TGtkRange_has_stepper_a) and
       bm_TGtkRange_has_stepper_a)
 
-proc has_stepper_b*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_has_stepper_b) shr
+proc has_stepper_b*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_has_stepper_b) shr
       bp_TGtkRange_has_stepper_b
 
-proc set_has_stepper_b*(a: var TGtkRange, `has_stepper_b`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_has_stepper_b*(a: var TRange, `has_stepper_b`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`has_stepper_b` shl bp_TGtkRange_has_stepper_b) and
       bm_TGtkRange_has_stepper_b)
 
-proc has_stepper_c*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_has_stepper_c) shr
+proc has_stepper_c*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_has_stepper_c) shr
       bp_TGtkRange_has_stepper_c
 
-proc set_has_stepper_c*(a: var TGtkRange, `has_stepper_c`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_has_stepper_c*(a: var TRange, `has_stepper_c`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`has_stepper_c` shl bp_TGtkRange_has_stepper_c) and
       bm_TGtkRange_has_stepper_c)
 
-proc has_stepper_d*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_has_stepper_d) shr
+proc has_stepper_d*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_has_stepper_d) shr
       bp_TGtkRange_has_stepper_d
 
-proc set_has_stepper_d*(a: var TGtkRange, `has_stepper_d`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_has_stepper_d*(a: var TRange, `has_stepper_d`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`has_stepper_d` shl bp_TGtkRange_has_stepper_d) and
       bm_TGtkRange_has_stepper_d)
 
-proc need_recalc*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_need_recalc) shr
+proc need_recalc*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_need_recalc) shr
       bp_TGtkRange_need_recalc
 
-proc set_need_recalc*(a: var TGtkRange, `need_recalc`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_need_recalc*(a: var TRange, `need_recalc`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`need_recalc` shl bp_TGtkRange_need_recalc) and
       bm_TGtkRange_need_recalc)
 
-proc slider_size_fixed*(a: var TGtkRange): guint =
-  result = (a.GtkRangeflag0 and bm_TGtkRange_slider_size_fixed) shr
+proc slider_size_fixed*(a: var TRange): guint = 
+  result = (a.Rangeflag0 and bm_TGtkRange_slider_size_fixed) shr
       bp_TGtkRange_slider_size_fixed
 
-proc set_slider_size_fixed*(a: var TGtkRange, `slider_size_fixed`: guint) =
-  a.GtkRangeflag0 = a.GtkRangeflag0 or
+proc set_slider_size_fixed*(a: var TRange, `slider_size_fixed`: guint) = 
+  a.Rangeflag0 = a.Rangeflag0 or
       (int16(`slider_size_fixed` shl bp_TGtkRange_slider_size_fixed) and
       bm_TGtkRange_slider_size_fixed)
 
-proc trough_click_forward*(a: var TGtkRange): guint =
+proc trough_click_forward*(a: var TRange): guint = 
   result = (a.flag1 and bm_TGtkRange_trough_click_forward) shr
       bp_TGtkRange_trough_click_forward
 
-proc set_trough_click_forward*(a: var TGtkRange, `trough_click_forward`: guint) =
+proc set_trough_click_forward*(a: var TRange, `trough_click_forward`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`trough_click_forward` shl bp_TGtkRange_trough_click_forward) and
       bm_TGtkRange_trough_click_forward)
 
-proc update_pending*(a: var TGtkRange): guint =
+proc update_pending*(a: var TRange): guint = 
   result = (a.flag1 and bm_TGtkRange_update_pending) shr
       bp_TGtkRange_update_pending
 
-proc set_update_pending*(a: var TGtkRange, `update_pending`: guint) =
+proc set_update_pending*(a: var TRange, `update_pending`: guint) = 
   a.flag1 = a.flag1 or
       (int16(`update_pending` shl bp_TGtkRange_update_pending) and
       bm_TGtkRange_update_pending)
 
-proc GTK_TYPE_SCALE*(): GType =
-  result = gtk_scale_get_type()
+proc TYPE_SCALE*(): GType = 
+  result = scale_get_type()
 
-proc GTK_SCALE*(obj: pointer): PGtkScale =
-  result = cast[PGtkScale](GTK_CHECK_CAST(obj, GTK_TYPE_SCALE()))
+proc SCALE*(obj: pointer): PScale = 
+  result = cast[PScale](CHECK_CAST(obj, TYPE_SCALE()))
 
-proc GTK_SCALE_CLASS*(klass: pointer): PGtkScaleClass =
-  result = cast[PGtkScaleClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SCALE()))
+proc SCALE_CLASS*(klass: pointer): PScaleClass = 
+  result = cast[PScaleClass](CHECK_CLASS_CAST(klass, TYPE_SCALE()))
 
-proc GTK_IS_SCALE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SCALE())
+proc IS_SCALE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SCALE())
 
-proc GTK_IS_SCALE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SCALE())
+proc IS_SCALE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SCALE())
 
-proc GTK_SCALE_GET_CLASS*(obj: pointer): PGtkScaleClass =
-  result = cast[PGtkScaleClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SCALE()))
+proc SCALE_GET_CLASS*(obj: pointer): PScaleClass = 
+  result = cast[PScaleClass](CHECK_GET_CLASS(obj, TYPE_SCALE()))
 
-proc draw_value*(a: var TGtkScale): guint =
-  result = (a.GtkScaleflag0 and bm_TGtkScale_draw_value) shr bp_TGtkScale_draw_value
+proc draw_value*(a: var TScale): guint = 
+  result = (a.Scaleflag0 and bm_TGtkScale_draw_value) shr
+      bp_TGtkScale_draw_value
 
-proc set_draw_value*(a: var TGtkScale, `draw_value`: guint) =
-  a.GtkScaleflag0 = a.GtkScaleflag0 or
-      (int16(`draw_value` shl bp_TGtkScale_draw_value) and bm_TGtkScale_draw_value)
+proc set_draw_value*(a: var TScale, `draw_value`: guint) = 
+  a.Scaleflag0 = a.Scaleflag0 or
+      (int16(`draw_value` shl bp_TGtkScale_draw_value) and
+      bm_TGtkScale_draw_value)
 
-proc value_pos*(a: var TGtkScale): guint =
-  result = (a.GtkScaleflag0 and bm_TGtkScale_value_pos) shr bp_TGtkScale_value_pos
+proc value_pos*(a: var TScale): guint = 
+  result = (a.Scaleflag0 and bm_TGtkScale_value_pos) shr
+      bp_TGtkScale_value_pos
 
-proc set_value_pos*(a: var TGtkScale, `value_pos`: guint) =
-  a.GtkScaleflag0 = a.GtkScaleflag0 or
-      (int16(`value_pos` shl bp_TGtkScale_value_pos) and bm_TGtkScale_value_pos)
+proc set_value_pos*(a: var TScale, `value_pos`: guint) = 
+  a.Scaleflag0 = a.Scaleflag0 or
+      (int16(`value_pos` shl bp_TGtkScale_value_pos) and
+      bm_TGtkScale_value_pos)
 
-proc GTK_TYPE_HSCALE*(): GType =
-  result = gtk_hscale_get_type()
+proc TYPE_HSCALE*(): GType = 
+  result = hscale_get_type()
 
-proc GTK_HSCALE*(obj: pointer): PGtkHScale =
-  result = cast[PGtkHScale](GTK_CHECK_CAST(obj, GTK_TYPE_HSCALE()))
+proc HSCALE*(obj: pointer): PHScale = 
+  result = cast[PHScale](CHECK_CAST(obj, TYPE_HSCALE()))
 
-proc GTK_HSCALE_CLASS*(klass: pointer): PGtkHScaleClass =
-  result = cast[PGtkHScaleClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HSCALE()))
+proc HSCALE_CLASS*(klass: pointer): PHScaleClass = 
+  result = cast[PHScaleClass](CHECK_CLASS_CAST(klass, TYPE_HSCALE()))
 
-proc GTK_IS_HSCALE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HSCALE())
+proc IS_HSCALE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HSCALE())
 
-proc GTK_IS_HSCALE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HSCALE())
+proc IS_HSCALE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HSCALE())
 
-proc GTK_HSCALE_GET_CLASS*(obj: pointer): PGtkHScaleClass =
-  result = cast[PGtkHScaleClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HSCALE()))
+proc HSCALE_GET_CLASS*(obj: pointer): PHScaleClass = 
+  result = cast[PHScaleClass](CHECK_GET_CLASS(obj, TYPE_HSCALE()))
 
-proc GTK_TYPE_SCROLLBAR*(): GType =
-  result = gtk_scrollbar_get_type()
+proc TYPE_SCROLLBAR*(): GType = 
+  result = scrollbar_get_type()
 
-proc GTK_SCROLLBAR*(obj: pointer): PGtkScrollbar =
-  result = cast[PGtkScrollbar](GTK_CHECK_CAST(obj, GTK_TYPE_SCROLLBAR()))
+proc SCROLLBAR*(obj: pointer): PScrollbar = 
+  result = cast[PScrollbar](CHECK_CAST(obj, TYPE_SCROLLBAR()))
 
-proc GTK_SCROLLBAR_CLASS*(klass: pointer): PGtkScrollbarClass =
-  result = cast[PGtkScrollbarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SCROLLBAR()))
+proc SCROLLBAR_CLASS*(klass: pointer): PScrollbarClass = 
+  result = cast[PScrollbarClass](CHECK_CLASS_CAST(klass, TYPE_SCROLLBAR()))
 
-proc GTK_IS_SCROLLBAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SCROLLBAR())
+proc IS_SCROLLBAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SCROLLBAR())
 
-proc GTK_IS_SCROLLBAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SCROLLBAR())
+proc IS_SCROLLBAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SCROLLBAR())
 
-proc GTK_SCROLLBAR_GET_CLASS*(obj: pointer): PGtkScrollbarClass =
-  result = cast[PGtkScrollbarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SCROLLBAR()))
+proc SCROLLBAR_GET_CLASS*(obj: pointer): PScrollbarClass = 
+  result = cast[PScrollbarClass](CHECK_GET_CLASS(obj, TYPE_SCROLLBAR()))
 
-proc GTK_TYPE_HSCROLLBAR*(): GType =
-  result = gtk_hscrollbar_get_type()
+proc TYPE_HSCROLLBAR*(): GType = 
+  result = hscrollbar_get_type()
 
-proc GTK_HSCROLLBAR*(obj: pointer): PGtkHScrollbar =
-  result = cast[PGtkHScrollbar](GTK_CHECK_CAST(obj, GTK_TYPE_HSCROLLBAR()))
+proc HSCROLLBAR*(obj: pointer): PHScrollbar = 
+  result = cast[PHScrollbar](CHECK_CAST(obj, TYPE_HSCROLLBAR()))
 
-proc GTK_HSCROLLBAR_CLASS*(klass: pointer): PGtkHScrollbarClass =
-  result = cast[PGtkHScrollbarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HSCROLLBAR()))
+proc HSCROLLBAR_CLASS*(klass: pointer): PHScrollbarClass = 
+  result = cast[PHScrollbarClass](CHECK_CLASS_CAST(klass, TYPE_HSCROLLBAR()))
 
-proc GTK_IS_HSCROLLBAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HSCROLLBAR())
+proc IS_HSCROLLBAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HSCROLLBAR())
 
-proc GTK_IS_HSCROLLBAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HSCROLLBAR())
+proc IS_HSCROLLBAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HSCROLLBAR())
 
-proc GTK_HSCROLLBAR_GET_CLASS*(obj: pointer): PGtkHScrollbarClass =
-  result = cast[PGtkHScrollbarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HSCROLLBAR()))
+proc HSCROLLBAR_GET_CLASS*(obj: pointer): PHScrollbarClass = 
+  result = cast[PHScrollbarClass](CHECK_GET_CLASS(obj, TYPE_HSCROLLBAR()))
 
-proc GTK_TYPE_SEPARATOR*(): GType =
-  result = gtk_separator_get_type()
+proc TYPE_SEPARATOR*(): GType = 
+  result = separator_get_type()
 
-proc GTK_SEPARATOR*(obj: pointer): PGtkSeparator =
-  result = cast[PGtkSeparator](GTK_CHECK_CAST(obj, GTK_TYPE_SEPARATOR()))
+proc SEPARATOR*(obj: pointer): PSeparator = 
+  result = cast[PSeparator](CHECK_CAST(obj, TYPE_SEPARATOR()))
 
-proc GTK_SEPARATOR_CLASS*(klass: pointer): PGtkSeparatorClass =
-  result = cast[PGtkSeparatorClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SEPARATOR()))
+proc SEPARATOR_CLASS*(klass: pointer): PSeparatorClass = 
+  result = cast[PSeparatorClass](CHECK_CLASS_CAST(klass, TYPE_SEPARATOR()))
 
-proc GTK_IS_SEPARATOR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SEPARATOR())
+proc IS_SEPARATOR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SEPARATOR())
 
-proc GTK_IS_SEPARATOR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SEPARATOR())
+proc IS_SEPARATOR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SEPARATOR())
 
-proc GTK_SEPARATOR_GET_CLASS*(obj: pointer): PGtkSeparatorClass =
-  result = cast[PGtkSeparatorClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SEPARATOR()))
+proc SEPARATOR_GET_CLASS*(obj: pointer): PSeparatorClass = 
+  result = cast[PSeparatorClass](CHECK_GET_CLASS(obj, TYPE_SEPARATOR()))
 
-proc GTK_TYPE_HSEPARATOR*(): GType =
-  result = gtk_hseparator_get_type()
+proc TYPE_HSEPARATOR*(): GType = 
+  result = hseparator_get_type()
 
-proc GTK_HSEPARATOR*(obj: pointer): PGtkHSeparator =
-  result = cast[PGtkHSeparator](GTK_CHECK_CAST(obj, GTK_TYPE_HSEPARATOR()))
+proc HSEPARATOR*(obj: pointer): PHSeparator = 
+  result = cast[PHSeparator](CHECK_CAST(obj, TYPE_HSEPARATOR()))
 
-proc GTK_HSEPARATOR_CLASS*(klass: pointer): PGtkHSeparatorClass =
-  result = cast[PGtkHSeparatorClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_HSEPARATOR()))
+proc HSEPARATOR_CLASS*(klass: pointer): PHSeparatorClass = 
+  result = cast[PHSeparatorClass](CHECK_CLASS_CAST(klass, TYPE_HSEPARATOR()))
 
-proc GTK_IS_HSEPARATOR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_HSEPARATOR())
+proc IS_HSEPARATOR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_HSEPARATOR())
 
-proc GTK_IS_HSEPARATOR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_HSEPARATOR())
+proc IS_HSEPARATOR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_HSEPARATOR())
 
-proc GTK_HSEPARATOR_GET_CLASS*(obj: pointer): PGtkHSeparatorClass =
-  result = cast[PGtkHSeparatorClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_HSEPARATOR()))
+proc HSEPARATOR_GET_CLASS*(obj: pointer): PHSeparatorClass = 
+  result = cast[PHSeparatorClass](CHECK_GET_CLASS(obj, TYPE_HSEPARATOR()))
 
-proc GTK_TYPE_ICON_FACTORY*(): GType =
-  result = gtk_icon_factory_get_type()
+proc TYPE_ICON_FACTORY*(): GType = 
+  result = icon_factory_get_type()
 
-proc GTK_ICON_FACTORY*(anObject: pointer): PGtkIconFactory =
-  result = cast[PGtkIconFactory](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      GTK_TYPE_ICON_FACTORY()))
+proc ICON_FACTORY*(anObject: pointer): PIconFactory = 
+  result = cast[PIconFactory](G_TYPE_CHECK_INSTANCE_CAST(anObject, 
+      TYPE_ICON_FACTORY()))
 
-proc GTK_ICON_FACTORY_CLASS*(klass: pointer): PGtkIconFactoryClass =
-  result = cast[PGtkIconFactoryClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_ICON_FACTORY()))
+proc ICON_FACTORY_CLASS*(klass: pointer): PIconFactoryClass = 
+  result = cast[PIconFactoryClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_ICON_FACTORY()))
 
-proc GTK_IS_ICON_FACTORY*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_ICON_FACTORY())
+proc IS_ICON_FACTORY*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_ICON_FACTORY())
 
-proc GTK_IS_ICON_FACTORY_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_ICON_FACTORY())
+proc IS_ICON_FACTORY_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_ICON_FACTORY())
 
-proc GTK_ICON_FACTORY_GET_CLASS*(obj: pointer): PGtkIconFactoryClass =
-  result = cast[PGtkIconFactoryClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GTK_TYPE_ICON_FACTORY()))
+proc ICON_FACTORY_GET_CLASS*(obj: pointer): PIconFactoryClass = 
+  result = cast[PIconFactoryClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_ICON_FACTORY()))
 
-proc GTK_TYPE_ICON_SET*(): GType =
-  result = gtk_icon_set_get_type()
+proc TYPE_ICON_SET*(): GType = 
+  result = icon_set_get_type()
 
-proc GTK_TYPE_ICON_SOURCE*(): GType =
-  result = gtk_icon_source_get_type()
+proc TYPE_ICON_SOURCE*(): GType = 
+  result = icon_source_get_type()
 
-proc GTK_TYPE_IMAGE*(): GType =
-  result = gtk_image_get_type()
+proc TYPE_IMAGE*(): GType = 
+  result = gtk2.image_get_type()
 
-proc GTK_IMAGE*(obj: pointer): PGtkImage =
-  result = cast[PGtkImage](GTK_CHECK_CAST(obj, GTK_TYPE_IMAGE()))
+proc IMAGE*(obj: pointer): PImage = 
+  result = cast[PImage](CHECK_CAST(obj, gtk2.TYPE_IMAGE()))
 
-proc GTK_IMAGE_CLASS*(klass: pointer): PGtkImageClass =
-  result = cast[PGtkImageClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_IMAGE()))
+proc IMAGE_CLASS*(klass: pointer): PImageClass = 
+  result = cast[PImageClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_IMAGE()))
 
-proc GTK_IS_IMAGE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_IMAGE())
+proc IS_IMAGE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, gtk2.TYPE_IMAGE())
 
-proc GTK_IS_IMAGE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_IMAGE())
+proc IS_IMAGE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_IMAGE())
 
-proc GTK_IMAGE_GET_CLASS*(obj: pointer): PGtkImageClass =
-  result = cast[PGtkImageClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_IMAGE()))
+proc IMAGE_GET_CLASS*(obj: pointer): PImageClass = 
+  result = cast[PImageClass](CHECK_GET_CLASS(obj, gtk2.TYPE_IMAGE()))
 
-proc GTK_TYPE_IMAGE_MENU_ITEM*(): GType =
-  result = gtk_image_menu_item_get_type()
+proc TYPE_IMAGE_MENU_ITEM*(): GType = 
+  result = image_menu_item_get_type()
 
-proc GTK_IMAGE_MENU_ITEM*(obj: pointer): PGtkImageMenuItem =
-  result = cast[PGtkImageMenuItem](GTK_CHECK_CAST(obj, GTK_TYPE_IMAGE_MENU_ITEM()))
+proc IMAGE_MENU_ITEM*(obj: pointer): PImageMenuItem = 
+  result = cast[PImageMenuItem](CHECK_CAST(obj, TYPE_IMAGE_MENU_ITEM()))
 
-proc GTK_IMAGE_MENU_ITEM_CLASS*(klass: pointer): PGtkImageMenuItemClass =
-  result = cast[PGtkImageMenuItemClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_IMAGE_MENU_ITEM()))
+proc IMAGE_MENU_ITEM_CLASS*(klass: pointer): PImageMenuItemClass = 
+  result = cast[PImageMenuItemClass](CHECK_CLASS_CAST(klass, 
+      TYPE_IMAGE_MENU_ITEM()))
 
-proc GTK_IS_IMAGE_MENU_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_IMAGE_MENU_ITEM())
+proc IS_IMAGE_MENU_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_IMAGE_MENU_ITEM())
 
-proc GTK_IS_IMAGE_MENU_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_IMAGE_MENU_ITEM())
+proc IS_IMAGE_MENU_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_IMAGE_MENU_ITEM())
 
-proc GTK_IMAGE_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkImageMenuItemClass =
-  result = cast[PGtkImageMenuItemClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_IMAGE_MENU_ITEM()))
+proc IMAGE_MENU_ITEM_GET_CLASS*(obj: pointer): PImageMenuItemClass = 
+  result = cast[PImageMenuItemClass](CHECK_GET_CLASS(obj, TYPE_IMAGE_MENU_ITEM()))
 
-proc GTK_TYPE_IM_CONTEXT_SIMPLE*(): GType =
-  result = gtk_im_context_simple_get_type()
+proc TYPE_IM_CONTEXT_SIMPLE*(): GType = 
+  result = im_context_simple_get_type()
 
-proc GTK_IM_CONTEXT_SIMPLE*(obj: pointer): PGtkIMContextSimple =
-  result = cast[PGtkIMContextSimple](GTK_CHECK_CAST(obj, GTK_TYPE_IM_CONTEXT_SIMPLE()))
+proc IM_CONTEXT_SIMPLE*(obj: pointer): PIMContextSimple = 
+  result = cast[PIMContextSimple](CHECK_CAST(obj, TYPE_IM_CONTEXT_SIMPLE()))
 
-proc GTK_IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): PGtkIMContextSimpleClass =
-  result = cast[PGtkIMContextSimpleClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_IM_CONTEXT_SIMPLE()))
+proc IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): PIMContextSimpleClass = 
+  result = cast[PIMContextSimpleClass](CHECK_CLASS_CAST(klass, 
+      TYPE_IM_CONTEXT_SIMPLE()))
 
-proc GTK_IS_IM_CONTEXT_SIMPLE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_IM_CONTEXT_SIMPLE())
+proc IS_IM_CONTEXT_SIMPLE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_IM_CONTEXT_SIMPLE())
 
-proc GTK_IS_IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_IM_CONTEXT_SIMPLE())
+proc IS_IM_CONTEXT_SIMPLE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_IM_CONTEXT_SIMPLE())
 
-proc GTK_IM_CONTEXT_SIMPLE_GET_CLASS*(obj: pointer): PGtkIMContextSimpleClass =
-  result = cast[PGtkIMContextSimpleClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_IM_CONTEXT_SIMPLE()))
+proc IM_CONTEXT_SIMPLE_GET_CLASS*(obj: pointer): PIMContextSimpleClass = 
+  result = cast[PIMContextSimpleClass](CHECK_GET_CLASS(obj, 
+      TYPE_IM_CONTEXT_SIMPLE()))
 
-proc in_hex_sequence*(a: var TGtkIMContextSimple): guint =
-  result = (a.GtkIMContextSimpleflag0 and bm_TGtkIMContextSimple_in_hex_sequence) shr
+proc in_hex_sequence*(a: var TIMContextSimple): guint = 
+  result = (a.IMContextSimpleflag0 and bm_TGtkIMContextSimple_in_hex_sequence) shr
       bp_TGtkIMContextSimple_in_hex_sequence
 
-proc set_in_hex_sequence*(a: var TGtkIMContextSimple, `in_hex_sequence`: guint) =
-  a.GtkIMContextSimpleflag0 = a.GtkIMContextSimpleflag0 or
+proc set_in_hex_sequence*(a: var TIMContextSimple, `in_hex_sequence`: guint) = 
+  a.IMContextSimpleflag0 = a.IMContextSimpleflag0 or
       (int16(`in_hex_sequence` shl bp_TGtkIMContextSimple_in_hex_sequence) and
       bm_TGtkIMContextSimple_in_hex_sequence)
 
-proc GTK_TYPE_IM_MULTICONTEXT*(): GType =
-  result = gtk_im_multicontext_get_type()
+proc TYPE_IM_MULTICONTEXT*(): GType = 
+  result = im_multicontext_get_type()
 
-proc GTK_IM_MULTICONTEXT*(obj: pointer): PGtkIMMulticontext =
-  result = cast[PGtkIMMulticontext](GTK_CHECK_CAST(obj, GTK_TYPE_IM_MULTICONTEXT()))
+proc IM_MULTICONTEXT*(obj: pointer): PIMMulticontext = 
+  result = cast[PIMMulticontext](CHECK_CAST(obj, TYPE_IM_MULTICONTEXT()))
 
-proc GTK_IM_MULTICONTEXT_CLASS*(klass: pointer): PGtkIMMulticontextClass =
-  result = cast[PGtkIMMulticontextClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_IM_MULTICONTEXT()))
+proc IM_MULTICONTEXT_CLASS*(klass: pointer): PIMMulticontextClass = 
+  result = cast[PIMMulticontextClass](CHECK_CLASS_CAST(klass, 
+      TYPE_IM_MULTICONTEXT()))
 
-proc GTK_IS_IM_MULTICONTEXT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_IM_MULTICONTEXT())
+proc IS_IM_MULTICONTEXT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_IM_MULTICONTEXT())
 
-proc GTK_IS_IM_MULTICONTEXT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_IM_MULTICONTEXT())
+proc IS_IM_MULTICONTEXT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_IM_MULTICONTEXT())
 
-proc GTK_IM_MULTICONTEXT_GET_CLASS*(obj: pointer): PGtkIMMulticontextClass =
-  result = cast[PGtkIMMulticontextClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_IM_MULTICONTEXT()))
+proc IM_MULTICONTEXT_GET_CLASS*(obj: pointer): PIMMulticontextClass = 
+  result = cast[PIMMulticontextClass](CHECK_GET_CLASS(obj, 
+      TYPE_IM_MULTICONTEXT()))
 
-proc GTK_TYPE_INPUT_DIALOG*(): GType =
-  result = gtk_input_dialog_get_type()
+proc TYPE_INPUT_DIALOG*(): GType = 
+  result = input_dialog_get_type()
 
-proc GTK_INPUT_DIALOG*(obj: pointer): PGtkInputDialog =
-  result = cast[PGtkInputDialog](GTK_CHECK_CAST(obj, GTK_TYPE_INPUT_DIALOG()))
+proc INPUT_DIALOG*(obj: pointer): PInputDialog = 
+  result = cast[PInputDialog](CHECK_CAST(obj, TYPE_INPUT_DIALOG()))
 
-proc GTK_INPUT_DIALOG_CLASS*(klass: pointer): PGtkInputDialogClass =
-  result = cast[PGtkInputDialogClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_INPUT_DIALOG()))
+proc INPUT_DIALOG_CLASS*(klass: pointer): PInputDialogClass = 
+  result = cast[PInputDialogClass](CHECK_CLASS_CAST(klass, TYPE_INPUT_DIALOG()))
 
-proc GTK_IS_INPUT_DIALOG*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_INPUT_DIALOG())
+proc IS_INPUT_DIALOG*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_INPUT_DIALOG())
 
-proc GTK_IS_INPUT_DIALOG_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_INPUT_DIALOG())
+proc IS_INPUT_DIALOG_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_INPUT_DIALOG())
 
-proc GTK_INPUT_DIALOG_GET_CLASS*(obj: pointer): PGtkInputDialogClass =
-  result = cast[PGtkInputDialogClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_INPUT_DIALOG()))
+proc INPUT_DIALOG_GET_CLASS*(obj: pointer): PInputDialogClass = 
+  result = cast[PInputDialogClass](CHECK_GET_CLASS(obj, TYPE_INPUT_DIALOG()))
 
-proc GTK_TYPE_INVISIBLE*(): GType =
-  result = gtk_invisible_get_type()
+proc TYPE_INVISIBLE*(): GType = 
+  result = invisible_get_type()
 
-proc GTK_INVISIBLE*(obj: pointer): PGtkInvisible =
-  result = cast[PGtkInvisible](GTK_CHECK_CAST(obj, GTK_TYPE_INVISIBLE()))
+proc INVISIBLE*(obj: pointer): PInvisible = 
+  result = cast[PInvisible](CHECK_CAST(obj, TYPE_INVISIBLE()))
 
-proc GTK_INVISIBLE_CLASS*(klass: pointer): PGtkInvisibleClass =
-  result = cast[PGtkInvisibleClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_INVISIBLE()))
+proc INVISIBLE_CLASS*(klass: pointer): PInvisibleClass = 
+  result = cast[PInvisibleClass](CHECK_CLASS_CAST(klass, TYPE_INVISIBLE()))
 
-proc GTK_IS_INVISIBLE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_INVISIBLE())
+proc IS_INVISIBLE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_INVISIBLE())
 
-proc GTK_IS_INVISIBLE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_INVISIBLE())
+proc IS_INVISIBLE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_INVISIBLE())
 
-proc GTK_INVISIBLE_GET_CLASS*(obj: pointer): PGtkInvisibleClass =
-  result = cast[PGtkInvisibleClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_INVISIBLE()))
+proc INVISIBLE_GET_CLASS*(obj: pointer): PInvisibleClass = 
+  result = cast[PInvisibleClass](CHECK_GET_CLASS(obj, TYPE_INVISIBLE()))
 
-proc GTK_TYPE_ITEM_FACTORY*(): GType =
-  result = gtk_item_factory_get_type()
+proc TYPE_ITEM_FACTORY*(): GType = 
+  result = item_factory_get_type()
 
-proc GTK_ITEM_FACTORY*(anObject: pointer): PGtkItemFactory =
-  result = cast[PGtkItemFactory](GTK_CHECK_CAST(anObject, GTK_TYPE_ITEM_FACTORY()))
+proc ITEM_FACTORY*(anObject: pointer): PItemFactory = 
+  result = cast[PItemFactory](CHECK_CAST(anObject, TYPE_ITEM_FACTORY()))
 
-proc GTK_ITEM_FACTORY_CLASS*(klass: pointer): PGtkItemFactoryClass =
-  result = cast[PGtkItemFactoryClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_ITEM_FACTORY()))
+proc ITEM_FACTORY_CLASS*(klass: pointer): PItemFactoryClass = 
+  result = cast[PItemFactoryClass](CHECK_CLASS_CAST(klass, TYPE_ITEM_FACTORY()))
 
-proc GTK_IS_ITEM_FACTORY*(anObject: pointer): bool =
-  result = GTK_CHECK_TYPE(anObject, GTK_TYPE_ITEM_FACTORY())
+proc IS_ITEM_FACTORY*(anObject: pointer): bool = 
+  result = CHECK_TYPE(anObject, TYPE_ITEM_FACTORY())
 
-proc GTK_IS_ITEM_FACTORY_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_ITEM_FACTORY())
+proc IS_ITEM_FACTORY_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_ITEM_FACTORY())
 
-proc GTK_ITEM_FACTORY_GET_CLASS*(obj: pointer): PGtkItemFactoryClass =
-  result = cast[PGtkItemFactoryClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_ITEM_FACTORY()))
+proc ITEM_FACTORY_GET_CLASS*(obj: pointer): PItemFactoryClass = 
+  result = cast[PItemFactoryClass](CHECK_GET_CLASS(obj, TYPE_ITEM_FACTORY()))
 
-proc GTK_TYPE_LAYOUT*(): GType =
-  result = gtk_layout_get_type()
+proc TYPE_LAYOUT*(): GType = 
+  result = gtk2.layout_get_type()
 
-proc GTK_LAYOUT*(obj: pointer): PGtkLayout =
-  result = cast[PGtkLayout](GTK_CHECK_CAST(obj, GTK_TYPE_LAYOUT()))
+proc LAYOUT*(obj: pointer): PLayout = 
+  result = cast[PLayout](CHECK_CAST(obj, gtk2.TYPE_LAYOUT()))
 
-proc GTK_LAYOUT_CLASS*(klass: pointer): PGtkLayoutClass =
-  result = cast[PGtkLayoutClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_LAYOUT()))
+proc LAYOUT_CLASS*(klass: pointer): PLayoutClass = 
+  result = cast[PLayoutClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_LAYOUT()))
 
-proc GTK_IS_LAYOUT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_LAYOUT())
+proc IS_LAYOUT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, gtk2.TYPE_LAYOUT())
 
-proc GTK_IS_LAYOUT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_LAYOUT())
+proc IS_LAYOUT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_LAYOUT())
 
-proc GTK_LAYOUT_GET_CLASS*(obj: pointer): PGtkLayoutClass =
-  result = cast[PGtkLayoutClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_LAYOUT()))
+proc LAYOUT_GET_CLASS*(obj: pointer): PLayoutClass = 
+  result = cast[PLayoutClass](CHECK_GET_CLASS(obj, gtk2.TYPE_LAYOUT()))
 
-proc GTK_TYPE_LIST*(): GType =
-  result = gtk_list_get_type()
+proc TYPE_LIST*(): GType = 
+  result = list_get_type()
 
-proc GTK_LIST*(obj: pointer): PGtkList =
-  result = cast[PGtkList](GTK_CHECK_CAST(obj, GTK_TYPE_LIST()))
+proc LIST*(obj: pointer): PList = 
+  result = cast[PList](CHECK_CAST(obj, TYPE_LIST()))
 
-proc GTK_LIST_CLASS*(klass: pointer): PGtkListClass =
-  result = cast[PGtkListClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_LIST()))
+proc LIST_CLASS*(klass: pointer): PListClass = 
+  result = cast[PListClass](CHECK_CLASS_CAST(klass, TYPE_LIST()))
 
-proc GTK_IS_LIST*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_LIST())
+proc IS_LIST*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_LIST())
 
-proc GTK_IS_LIST_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_LIST())
+proc IS_LIST_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_LIST())
 
-proc GTK_LIST_GET_CLASS*(obj: pointer): PGtkListClass =
-  result = cast[PGtkListClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_LIST()))
+proc LIST_GET_CLASS*(obj: pointer): PListClass = 
+  result = cast[PListClass](CHECK_GET_CLASS(obj, TYPE_LIST()))
 
-proc selection_mode*(a: var TGtkList): guint =
-  result = (a.GtkListflag0 and bm_TGtkList_selection_mode) shr
+proc selection_mode*(a: var TList): guint = 
+  result = (a.Listflag0 and bm_TGtkList_selection_mode) shr
       bp_TGtkList_selection_mode
 
-proc set_selection_mode*(a: var TGtkList, `selection_mode`: guint) =
-  a.GtkListflag0 = a.GtkListflag0 or
+proc set_selection_mode*(a: var TList, `selection_mode`: guint) = 
+  a.Listflag0 = a.Listflag0 or
       (int16(`selection_mode` shl bp_TGtkList_selection_mode) and
       bm_TGtkList_selection_mode)
 
-proc drag_selection*(a: var TGtkList): guint =
-  result = (a.GtkListflag0 and bm_TGtkList_drag_selection) shr
+proc drag_selection*(a: var TList): guint = 
+  result = (a.Listflag0 and bm_TGtkList_drag_selection) shr
       bp_TGtkList_drag_selection
 
-proc set_drag_selection*(a: var TGtkList, `drag_selection`: guint) =
-  a.GtkListflag0 = a.GtkListflag0 or
+proc set_drag_selection*(a: var TList, `drag_selection`: guint) = 
+  a.Listflag0 = a.Listflag0 or
       (int16(`drag_selection` shl bp_TGtkList_drag_selection) and
       bm_TGtkList_drag_selection)
 
-proc add_mode*(a: var TGtkList): guint =
-  result = (a.GtkListflag0 and bm_TGtkList_add_mode) shr bp_TGtkList_add_mode
+proc add_mode*(a: var TList): guint = 
+  result = (a.Listflag0 and bm_TGtkList_add_mode) shr bp_TGtkList_add_mode
 
-proc set_add_mode*(a: var TGtkList, `add_mode`: guint) =
-  a.GtkListflag0 = a.GtkListflag0 or
+proc set_add_mode*(a: var TList, `add_mode`: guint) = 
+  a.Listflag0 = a.Listflag0 or
       (int16(`add_mode` shl bp_TGtkList_add_mode) and bm_TGtkList_add_mode)
 
-proc gtk_list_item_get_type(): GType {.importc, cdecl, dynlib: gtklib.}
-
-proc GTK_TYPE_LIST_ITEM*(): GType =
-  result = gtk_list_item_get_type()
+proc list_item_get_type(): GType{.importc: "gtk_list_item_get_type", cdecl, 
+                                  dynlib: lib.}
+proc TYPE_LIST_ITEM*(): GType = 
+  result = list_item_get_type()
 
-type
-  TGtkListItem = object of TGtkItem
-  TGtkListItemClass = object of TGtkItemClass
-  PGtkListItem = ptr TGtkListItem
-  PGtkListItemClass = ptr TGtkListItemClass
-
-proc GTK_LIST_ITEM*(obj: pointer): PGtkListItem =
-  result = cast[PGtkListItem](GTK_CHECK_CAST(obj, GTK_TYPE_LIST_ITEM()))
+type 
+  TListItem = object of TItem
+  TListItemClass = object of TItemClass
+  PListItem = ptr TListItem
+  PListItemClass = ptr TListItemClass
 
-proc GTK_LIST_ITEM_CLASS*(klass: pointer): PGtkListItemClass =
-  result = cast[PGtkListItemClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_LIST_ITEM()))
+proc LIST_ITEM*(obj: pointer): PListItem = 
+  result = cast[PListItem](CHECK_CAST(obj, TYPE_LIST_ITEM()))
 
-proc GTK_IS_LIST_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_LIST_ITEM())
+proc LIST_ITEM_CLASS*(klass: pointer): PListItemClass = 
+  result = cast[PListItemClass](CHECK_CLASS_CAST(klass, TYPE_LIST_ITEM()))
 
-proc GTK_IS_LIST_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_LIST_ITEM())
+proc IS_LIST_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_LIST_ITEM())
 
-proc GTK_LIST_ITEM_GET_CLASS*(obj: pointer): PGtkListItemClass =
-  result = cast[PGtkListItemClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_LIST_ITEM()))
+proc IS_LIST_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_LIST_ITEM())
 
-#proc gtk_tree_model_get_type(): GType {.importc, cdecl, dynlib: gtklib.}
+proc LIST_ITEM_GET_CLASS*(obj: pointer): PListItemClass = 
+  #proc gtk_tree_model_get_type(): GType {.importc, cdecl, dynlib: gtklib.}
+  result = cast[PListItemClass](CHECK_GET_CLASS(obj, TYPE_LIST_ITEM()))
 
-proc GTK_TYPE_TREE_MODEL*(): GType =
-  result = gtk_tree_model_get_type()
+proc TYPE_TREE_MODEL*(): GType = 
+  result = tree_model_get_type()
 
-proc GTK_TREE_MODEL*(obj: pointer): PGtkTreeModel =
-  result = cast[PGtkTreeModel](G_TYPE_CHECK_INSTANCE_CAST(obj, GTK_TYPE_TREE_MODEL()))
+proc TREE_MODEL*(obj: pointer): PTreeModel = 
+  result = cast[PTreeModel](G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_TREE_MODEL()))
 
-proc GTK_IS_TREE_MODEL*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TREE_MODEL())
+proc IS_TREE_MODEL*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TREE_MODEL())
 
-proc GTK_TREE_MODEL_GET_IFACE*(obj: pointer): PGtkTreeModelIface =
-  result = cast[PGtkTreeModelIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      GTK_TYPE_TREE_MODEL()))
+proc TREE_MODEL_GET_IFACE*(obj: pointer): PTreeModelIface = 
+  result = cast[PTreeModelIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, 
+      TYPE_TREE_MODEL()))
 
-proc GTK_TYPE_TREE_ITER*(): GType =
-  result = gtk_tree_iter_get_type()
+proc TYPE_TREE_ITER*(): GType = 
+  result = tree_iter_get_type()
 
-proc GTK_TYPE_TREE_PATH*(): GType =
-  result = gtk_tree_path_get_type()
+proc TYPE_TREE_PATH*(): GType = 
+  result = tree_path_get_type()
 
-proc gtk_tree_path_new_root*(): PGtkTreePath =
-  result = gtk_tree_path_new_first()
+proc tree_path_new_root*(): PTreePath = 
+  result = tree_path_new_first()
 
-proc gtk_tree_model_get_iter_root*(tree_model: PGtkTreeModel, iter: PGtkTreeIter): gboolean =
-  result = gtk_tree_model_get_iter_first(tree_model, iter)
+proc get_iter_root*(tree_model: PTreeModel, iter: PTreeIter): gboolean = 
+  result = get_iter_first(tree_model, iter)
 
-proc GTK_TYPE_TREE_SORTABLE*(): GType =
-  result = gtk_tree_sortable_get_type()
+proc TYPE_TREE_SORTABLE*(): GType = 
+  result = tree_sortable_get_type()
 
-proc GTK_TREE_SORTABLE*(obj: pointer): PGtkTreeSortable =
-  result = cast[PGtkTreeSortable](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      GTK_TYPE_TREE_SORTABLE()))
+proc TREE_SORTABLE*(obj: pointer): PTreeSortable = 
+  result = cast[PTreeSortable](G_TYPE_CHECK_INSTANCE_CAST(obj, 
+      TYPE_TREE_SORTABLE()))
 
-proc GTK_TREE_SORTABLE_CLASS*(obj: pointer): PGtkTreeSortableIface =
-  result = cast[PGtkTreeSortableIface](G_TYPE_CHECK_CLASS_CAST(obj,
-      GTK_TYPE_TREE_SORTABLE()))
+proc TREE_SORTABLE_CLASS*(obj: pointer): PTreeSortableIface = 
+  result = cast[PTreeSortableIface](G_TYPE_CHECK_CLASS_CAST(obj, 
+      TYPE_TREE_SORTABLE()))
 
-proc GTK_IS_TREE_SORTABLE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TREE_SORTABLE())
+proc IS_TREE_SORTABLE*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TREE_SORTABLE())
 
-proc GTK_TREE_SORTABLE_GET_IFACE*(obj: pointer): PGtkTreeSortableIface =
-  result = cast[PGtkTreeSortableIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      GTK_TYPE_TREE_SORTABLE()))
+proc TREE_SORTABLE_GET_IFACE*(obj: pointer): PTreeSortableIface = 
+  result = cast[PTreeSortableIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, 
+      TYPE_TREE_SORTABLE()))
 
-proc GTK_TYPE_TREE_MODEL_SORT*(): GType =
-  result = gtk_tree_model_sort_get_type()
+proc TYPE_TREE_MODEL_SORT*(): GType = 
+  result = tree_model_sort_get_type()
 
-proc GTK_TREE_MODEL_SORT*(obj: pointer): PGtkTreeModelSort =
-  result = cast[PGtkTreeModelSort](GTK_CHECK_CAST(obj, GTK_TYPE_TREE_MODEL_SORT()))
+proc TREE_MODEL_SORT*(obj: pointer): PTreeModelSort = 
+  result = cast[PTreeModelSort](CHECK_CAST(obj, TYPE_TREE_MODEL_SORT()))
 
-proc GTK_TREE_MODEL_SORT_CLASS*(klass: pointer): PGtkTreeModelSortClass =
-  result = cast[PGtkTreeModelSortClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TREE_MODEL_SORT()))
+proc TREE_MODEL_SORT_CLASS*(klass: pointer): PTreeModelSortClass = 
+  result = cast[PTreeModelSortClass](CHECK_CLASS_CAST(klass, 
+      TYPE_TREE_MODEL_SORT()))
 
-proc GTK_IS_TREE_MODEL_SORT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE_MODEL_SORT())
+proc IS_TREE_MODEL_SORT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE_MODEL_SORT())
 
-proc GTK_IS_TREE_MODEL_SORT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE_MODEL_SORT())
+proc IS_TREE_MODEL_SORT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE_MODEL_SORT())
 
-proc GTK_TREE_MODEL_SORT_GET_CLASS*(obj: pointer): PGtkTreeModelSortClass =
-  result = cast[PGtkTreeModelSortClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_TREE_MODEL_SORT()))
+proc TREE_MODEL_SORT_GET_CLASS*(obj: pointer): PTreeModelSortClass = 
+  result = cast[PTreeModelSortClass](CHECK_GET_CLASS(obj, TYPE_TREE_MODEL_SORT()))
 
-proc GTK_TYPE_LIST_STORE*(): GType =
-  result = gtk_list_store_get_type()
+proc TYPE_LIST_STORE*(): GType = 
+  result = list_store_get_type()
 
-proc GTK_LIST_STORE*(obj: pointer): PGtkListStore =
-  result = cast[PGtkListStore](GTK_CHECK_CAST(obj, GTK_TYPE_LIST_STORE()))
+proc LIST_STORE*(obj: pointer): PListStore = 
+  result = cast[PListStore](CHECK_CAST(obj, TYPE_LIST_STORE()))
 
-proc GTK_LIST_STORE_CLASS*(klass: pointer): PGtkListStoreClass =
-  result = cast[PGtkListStoreClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_LIST_STORE()))
+proc LIST_STORE_CLASS*(klass: pointer): PListStoreClass = 
+  result = cast[PListStoreClass](CHECK_CLASS_CAST(klass, TYPE_LIST_STORE()))
 
-proc GTK_IS_LIST_STORE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_LIST_STORE())
+proc IS_LIST_STORE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_LIST_STORE())
 
-proc GTK_IS_LIST_STORE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_LIST_STORE())
+proc IS_LIST_STORE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_LIST_STORE())
 
-proc GTK_LIST_STORE_GET_CLASS*(obj: pointer): PGtkListStoreClass =
-  result = cast[PGtkListStoreClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_LIST_STORE()))
+proc LIST_STORE_GET_CLASS*(obj: pointer): PListStoreClass = 
+  result = cast[PListStoreClass](CHECK_GET_CLASS(obj, TYPE_LIST_STORE()))
 
-proc columns_dirty*(a: var TGtkListStore): guint =
-  result = (a.GtkListStoreflag0 and bm_TGtkListStore_columns_dirty) shr
+proc columns_dirty*(a: var TListStore): guint = 
+  result = (a.ListStoreflag0 and bm_TGtkListStore_columns_dirty) shr
       bp_TGtkListStore_columns_dirty
 
-proc set_columns_dirty*(a: var TGtkListStore, `columns_dirty`: guint) =
-  a.GtkListStoreflag0 = a.GtkListStoreflag0 or
+proc set_columns_dirty*(a: var TListStore, `columns_dirty`: guint) = 
+  a.ListStoreflag0 = a.ListStoreflag0 or
       (int16(`columns_dirty` shl bp_TGtkListStore_columns_dirty) and
       bm_TGtkListStore_columns_dirty)
 
-proc GTK_TYPE_MENU_BAR*(): GType =
-  result = gtk_menu_bar_get_type()
+proc TYPE_MENU_BAR*(): GType = 
+  result = menu_bar_get_type()
 
-proc GTK_MENU_BAR*(obj: pointer): PGtkMenuBar =
-  result = cast[PGtkMenuBar](GTK_CHECK_CAST(obj, GTK_TYPE_MENU_BAR()))
+proc MENU_BAR*(obj: pointer): PMenuBar = 
+  result = cast[PMenuBar](CHECK_CAST(obj, TYPE_MENU_BAR()))
 
-proc GTK_MENU_BAR_CLASS*(klass: pointer): PGtkMenuBarClass =
-  result = cast[PGtkMenuBarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_MENU_BAR()))
+proc MENU_BAR_CLASS*(klass: pointer): PMenuBarClass = 
+  result = cast[PMenuBarClass](CHECK_CLASS_CAST(klass, TYPE_MENU_BAR()))
 
-proc GTK_IS_MENU_BAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_MENU_BAR())
+proc IS_MENU_BAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_MENU_BAR())
 
-proc GTK_IS_MENU_BAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_MENU_BAR())
+proc IS_MENU_BAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_MENU_BAR())
 
-proc GTK_MENU_BAR_GET_CLASS*(obj: pointer): PGtkMenuBarClass =
-  result = cast[PGtkMenuBarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_MENU_BAR()))
+proc MENU_BAR_GET_CLASS*(obj: pointer): PMenuBarClass = 
+  result = cast[PMenuBarClass](CHECK_GET_CLASS(obj, TYPE_MENU_BAR()))
 
-proc gtk_menu_bar_append*(menu, child: PGtkWidget) =
-  gtk_menu_shell_append(cast[PGtkMenuShell](menu), child)
+proc menu_bar_append*(menu, child: PWidget) = 
+  append(cast[PMenuShell](menu), child)
 
-proc gtk_menu_bar_prepend*(menu, child: PGtkWidget) =
-  gtk_menu_shell_prepend(cast[PGtkMenuShell](menu), child)
+proc menu_bar_prepend*(menu, child: PWidget) = 
+  prepend(cast[PMenuShell](menu), child)
 
-proc gtk_menu_bar_insert*(menu, child: PGtkWidget, pos: gint) =
-  gtk_menu_shell_insert(cast[PGtkMenuShell](menu), child, pos)
+proc menu_bar_insert*(menu, child: PWidget, pos: gint) = 
+  insert(cast[PMenuShell](menu), child, pos)
 
-proc GTK_TYPE_MESSAGE_DIALOG*(): GType =
-  result = gtk_message_dialog_get_type()
+proc TYPE_MESSAGE_DIALOG*(): GType = 
+  result = message_dialog_get_type()
 
-proc GTK_MESSAGE_DIALOG*(obj: pointer): PGtkMessageDialog =
-  result = cast[PGtkMessageDialog](GTK_CHECK_CAST(obj, GTK_TYPE_MESSAGE_DIALOG()))
+proc MESSAGE_DIALOG*(obj: pointer): PMessageDialog = 
+  result = cast[PMessageDialog](CHECK_CAST(obj, TYPE_MESSAGE_DIALOG()))
 
-proc GTK_MESSAGE_DIALOG_CLASS*(klass: pointer): PGtkMessageDialogClass =
-  result = cast[PGtkMessageDialogClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_MESSAGE_DIALOG()))
+proc MESSAGE_DIALOG_CLASS*(klass: pointer): PMessageDialogClass = 
+  result = cast[PMessageDialogClass](CHECK_CLASS_CAST(klass, 
+      TYPE_MESSAGE_DIALOG()))
 
-proc GTK_IS_MESSAGE_DIALOG*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_MESSAGE_DIALOG())
+proc IS_MESSAGE_DIALOG*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_MESSAGE_DIALOG())
 
-proc GTK_IS_MESSAGE_DIALOG_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_MESSAGE_DIALOG())
+proc IS_MESSAGE_DIALOG_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_MESSAGE_DIALOG())
 
-proc GTK_MESSAGE_DIALOG_GET_CLASS*(obj: pointer): PGtkMessageDialogClass =
-  result = cast[PGtkMessageDialogClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_MESSAGE_DIALOG()))
+proc MESSAGE_DIALOG_GET_CLASS*(obj: pointer): PMessageDialogClass = 
+  result = cast[PMessageDialogClass](CHECK_GET_CLASS(obj, TYPE_MESSAGE_DIALOG()))
 
-proc GTK_TYPE_NOTEBOOK*(): GType =
-  result = gtk_notebook_get_type()
+proc TYPE_NOTEBOOK*(): GType = 
+  result = notebook_get_type()
 
-proc GTK_NOTEBOOK*(obj: pointer): PGtkNotebook =
-  result = cast[PGtkNotebook](GTK_CHECK_CAST(obj, GTK_TYPE_NOTEBOOK()))
+proc NOTEBOOK*(obj: pointer): PNotebook = 
+  result = cast[PNotebook](CHECK_CAST(obj, TYPE_NOTEBOOK()))
 
-proc GTK_NOTEBOOK_CLASS*(klass: pointer): PGtkNotebookClass =
-  result = cast[PGtkNotebookClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_NOTEBOOK()))
+proc NOTEBOOK_CLASS*(klass: pointer): PNotebookClass = 
+  result = cast[PNotebookClass](CHECK_CLASS_CAST(klass, TYPE_NOTEBOOK()))
 
-proc GTK_IS_NOTEBOOK*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_NOTEBOOK())
+proc IS_NOTEBOOK*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_NOTEBOOK())
 
-proc GTK_IS_NOTEBOOK_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_NOTEBOOK())
+proc IS_NOTEBOOK_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_NOTEBOOK())
 
-proc GTK_NOTEBOOK_GET_CLASS*(obj: pointer): PGtkNotebookClass =
-  result = cast[PGtkNotebookClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_NOTEBOOK()))
+proc NOTEBOOK_GET_CLASS*(obj: pointer): PNotebookClass = 
+  result = cast[PNotebookClass](CHECK_GET_CLASS(obj, TYPE_NOTEBOOK()))
 
-proc show_tabs*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_show_tabs) shr
+proc show_tabs*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_show_tabs) shr
       bp_TGtkNotebook_show_tabs
 
-proc set_show_tabs*(a: var TGtkNotebook, `show_tabs`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_show_tabs*(a: var TNotebook, `show_tabs`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`show_tabs` shl bp_TGtkNotebook_show_tabs) and
       bm_TGtkNotebook_show_tabs)
 
-proc homogeneous*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_homogeneous) shr
+proc homogeneous*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_homogeneous) shr
       bp_TGtkNotebook_homogeneous
 
-proc set_homogeneous*(a: var TGtkNotebook, `homogeneous`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_homogeneous*(a: var TNotebook, `homogeneous`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`homogeneous` shl bp_TGtkNotebook_homogeneous) and
       bm_TGtkNotebook_homogeneous)
 
-proc show_border*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_show_border) shr
+proc show_border*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_show_border) shr
       bp_TGtkNotebook_show_border
 
-proc set_show_border*(a: var TGtkNotebook, `show_border`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_show_border*(a: var TNotebook, `show_border`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`show_border` shl bp_TGtkNotebook_show_border) and
       bm_TGtkNotebook_show_border)
 
-proc tab_pos*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_tab_pos) shr bp_TGtkNotebook_tab_pos
+proc tab_pos*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_tab_pos) shr
+      bp_TGtkNotebook_tab_pos
 
-proc set_tab_pos*(a: var TGtkNotebook, `tab_pos`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
-      (int16(`tab_pos` shl bp_TGtkNotebook_tab_pos) and bm_TGtkNotebook_tab_pos)
+proc set_tab_pos*(a: var TNotebook, `tab_pos`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
+      (int16(`tab_pos` shl bp_TGtkNotebook_tab_pos) and
+      bm_TGtkNotebook_tab_pos)
 
-proc scrollable*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_scrollable) shr
+proc scrollable*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_scrollable) shr
       bp_TGtkNotebook_scrollable
 
-proc set_scrollable*(a: var TGtkNotebook, `scrollable`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_scrollable*(a: var TNotebook, `scrollable`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`scrollable` shl bp_TGtkNotebook_scrollable) and
       bm_TGtkNotebook_scrollable)
 
-proc in_child*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_in_child) shr
+proc in_child*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_in_child) shr
       bp_TGtkNotebook_in_child
 
-proc set_in_child*(a: var TGtkNotebook, `in_child`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
-      (int16(`in_child` shl bp_TGtkNotebook_in_child) and bm_TGtkNotebook_in_child)
+proc set_in_child*(a: var TNotebook, `in_child`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
+      (int16(`in_child` shl bp_TGtkNotebook_in_child) and
+      bm_TGtkNotebook_in_child)
 
-proc click_child*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_click_child) shr
+proc click_child*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_click_child) shr
       bp_TGtkNotebook_click_child
 
-proc set_click_child*(a: var TGtkNotebook, `click_child`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_click_child*(a: var TNotebook, `click_child`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`click_child` shl bp_TGtkNotebook_click_child) and
       bm_TGtkNotebook_click_child)
 
-proc button*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_button) shr bp_TGtkNotebook_button
+proc button*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_button) shr
+      bp_TGtkNotebook_button
 
-proc set_button*(a: var TGtkNotebook, `button`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_button*(a: var TNotebook, `button`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`button` shl bp_TGtkNotebook_button) and bm_TGtkNotebook_button)
 
-proc need_timer*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_need_timer) shr
+proc need_timer*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_need_timer) shr
       bp_TGtkNotebook_need_timer
 
-proc set_need_timer*(a: var TGtkNotebook, `need_timer`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_need_timer*(a: var TNotebook, `need_timer`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`need_timer` shl bp_TGtkNotebook_need_timer) and
       bm_TGtkNotebook_need_timer)
 
-proc child_has_focus*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_child_has_focus) shr
+proc child_has_focus*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_child_has_focus) shr
       bp_TGtkNotebook_child_has_focus
 
-proc set_child_has_focus*(a: var TGtkNotebook, `child_has_focus`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_child_has_focus*(a: var TNotebook, `child_has_focus`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`child_has_focus` shl bp_TGtkNotebook_child_has_focus) and
       bm_TGtkNotebook_child_has_focus)
 
-proc have_visible_child*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_have_visible_child) shr
+proc have_visible_child*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_have_visible_child) shr
       bp_TGtkNotebook_have_visible_child
 
-proc set_have_visible_child*(a: var TGtkNotebook, `have_visible_child`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_have_visible_child*(a: var TNotebook, `have_visible_child`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`have_visible_child` shl bp_TGtkNotebook_have_visible_child) and
       bm_TGtkNotebook_have_visible_child)
 
-proc focus_out*(a: var TGtkNotebook): guint =
-  result = (a.GtkNotebookflag0 and bm_TGtkNotebook_focus_out) shr
+proc focus_out*(a: var TNotebook): guint = 
+  result = (a.Notebookflag0 and bm_TGtkNotebook_focus_out) shr
       bp_TGtkNotebook_focus_out
 
-proc set_focus_out*(a: var TGtkNotebook, `focus_out`: guint) =
-  a.GtkNotebookflag0 = a.GtkNotebookflag0 or
+proc set_focus_out*(a: var TNotebook, `focus_out`: guint) = 
+  a.Notebookflag0 = a.Notebookflag0 or
       (int16(`focus_out` shl bp_TGtkNotebook_focus_out) and
       bm_TGtkNotebook_focus_out)
 
-proc GTK_TYPE_OLD_EDITABLE*(): GType =
-  result = gtk_old_editable_get_type()
+proc TYPE_OLD_EDITABLE*(): GType = 
+  result = old_editable_get_type()
 
-proc GTK_OLD_EDITABLE*(obj: pointer): PGtkOldEditable =
-  result = cast[PGtkOldEditable](GTK_CHECK_CAST(obj, GTK_TYPE_OLD_EDITABLE()))
+proc OLD_EDITABLE*(obj: pointer): POldEditable = 
+  result = cast[POldEditable](CHECK_CAST(obj, TYPE_OLD_EDITABLE()))
 
-proc GTK_OLD_EDITABLE_CLASS*(klass: pointer): PGtkOldEditableClass =
-  result = cast[PGtkOldEditableClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_OLD_EDITABLE()))
+proc OLD_EDITABLE_CLASS*(klass: pointer): POldEditableClass = 
+  result = cast[POldEditableClass](CHECK_CLASS_CAST(klass, TYPE_OLD_EDITABLE()))
 
-proc GTK_IS_OLD_EDITABLE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_OLD_EDITABLE())
+proc IS_OLD_EDITABLE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_OLD_EDITABLE())
 
-proc GTK_IS_OLD_EDITABLE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_OLD_EDITABLE())
+proc IS_OLD_EDITABLE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_OLD_EDITABLE())
 
-proc GTK_OLD_EDITABLE_GET_CLASS*(obj: pointer): PGtkOldEditableClass =
-  result = cast[PGtkOldEditableClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_OLD_EDITABLE()))
+proc OLD_EDITABLE_GET_CLASS*(obj: pointer): POldEditableClass = 
+  result = cast[POldEditableClass](CHECK_GET_CLASS(obj, TYPE_OLD_EDITABLE()))
 
-proc has_selection*(a: var TGtkOldEditable): guint =
-  result = (a.GtkOldEditableflag0 and bm_TGtkOldEditable_has_selection) shr
+proc has_selection*(a: var TOldEditable): guint = 
+  result = (a.OldEditableflag0 and bm_TGtkOldEditable_has_selection) shr
       bp_TGtkOldEditable_has_selection
 
-proc set_has_selection*(a: var TGtkOldEditable, `has_selection`: guint) =
-  a.GtkOldEditableflag0 = a.GtkOldEditableflag0 or
+proc set_has_selection*(a: var TOldEditable, `has_selection`: guint) = 
+  a.OldEditableflag0 = a.OldEditableflag0 or
       (int16(`has_selection` shl bp_TGtkOldEditable_has_selection) and
       bm_TGtkOldEditable_has_selection)
 
-proc editable*(a: var TGtkOldEditable): guint =
-  result = (a.GtkOldEditableflag0 and bm_TGtkOldEditable_editable) shr
+proc editable*(a: var TOldEditable): guint = 
+  result = (a.OldEditableflag0 and bm_TGtkOldEditable_editable) shr
       bp_TGtkOldEditable_editable
 
-proc set_editable*(a: var TGtkOldEditable, `editable`: guint) =
-  a.GtkOldEditableflag0 = a.GtkOldEditableflag0 or
+proc set_editable*(a: var TOldEditable, `editable`: guint) = 
+  a.OldEditableflag0 = a.OldEditableflag0 or
       (int16(`editable` shl bp_TGtkOldEditable_editable) and
       bm_TGtkOldEditable_editable)
 
-proc visible*(a: var TGtkOldEditable): guint =
-  result = (a.GtkOldEditableflag0 and bm_TGtkOldEditable_visible) shr
+proc visible*(a: var TOldEditable): guint = 
+  result = (a.OldEditableflag0 and bm_TGtkOldEditable_visible) shr
       bp_TGtkOldEditable_visible
 
-proc set_visible*(a: var TGtkOldEditable, `visible`: guint) =
-  a.GtkOldEditableflag0 = a.GtkOldEditableflag0 or
+proc set_visible*(a: var TOldEditable, `visible`: guint) = 
+  a.OldEditableflag0 = a.OldEditableflag0 or
       (int16(`visible` shl bp_TGtkOldEditable_visible) and
       bm_TGtkOldEditable_visible)
 
-proc GTK_TYPE_OPTION_MENU*(): GType =
-  result = gtk_option_menu_get_type()
+proc TYPE_OPTION_MENU*(): GType = 
+  result = option_menu_get_type()
 
-proc GTK_OPTION_MENU*(obj: pointer): PGtkOptionMenu =
-  result = cast[PGtkOptionMenu](GTK_CHECK_CAST(obj, GTK_TYPE_OPTION_MENU()))
+proc OPTION_MENU*(obj: pointer): POptionMenu = 
+  result = cast[POptionMenu](CHECK_CAST(obj, TYPE_OPTION_MENU()))
 
-proc GTK_OPTION_MENU_CLASS*(klass: pointer): PGtkOptionMenuClass =
-  result = cast[PGtkOptionMenuClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_OPTION_MENU()))
+proc OPTION_MENU_CLASS*(klass: pointer): POptionMenuClass = 
+  result = cast[POptionMenuClass](CHECK_CLASS_CAST(klass, TYPE_OPTION_MENU()))
 
-proc GTK_IS_OPTION_MENU*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_OPTION_MENU())
+proc IS_OPTION_MENU*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_OPTION_MENU())
 
-proc GTK_IS_OPTION_MENU_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_OPTION_MENU())
+proc IS_OPTION_MENU_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_OPTION_MENU())
 
-proc GTK_OPTION_MENU_GET_CLASS*(obj: pointer): PGtkOptionMenuClass =
-  result = cast[PGtkOptionMenuClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_OPTION_MENU()))
+proc OPTION_MENU_GET_CLASS*(obj: pointer): POptionMenuClass = 
+  result = cast[POptionMenuClass](CHECK_GET_CLASS(obj, TYPE_OPTION_MENU()))
 
-proc GTK_TYPE_PIXMAP*(): GType =
-  result = gtk_pixmap_get_type()
+proc TYPE_PIXMAP*(): GType = 
+  result = gtk2.pixmap_get_type()
 
-proc GTK_PIXMAP*(obj: pointer): PGtkPixmap =
-  result = cast[PGtkPixmap](GTK_CHECK_CAST(obj, GTK_TYPE_PIXMAP()))
+proc PIXMAP*(obj: pointer): PPixmap = 
+  result = cast[PPixmap](CHECK_CAST(obj, gtk2.TYPE_PIXMAP()))
 
-proc GTK_PIXMAP_CLASS*(klass: pointer): PGtkPixmapClass =
-  result = cast[PGtkPixmapClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_PIXMAP()))
+proc PIXMAP_CLASS*(klass: pointer): PPixmapClass = 
+  result = cast[PPixmapClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_PIXMAP()))
 
-proc GTK_IS_PIXMAP*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_PIXMAP())
+proc IS_PIXMAP*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, gtk2.TYPE_PIXMAP())
 
-proc GTK_IS_PIXMAP_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_PIXMAP())
+proc IS_PIXMAP_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_PIXMAP())
 
-proc GTK_PIXMAP_GET_CLASS*(obj: pointer): PGtkPixmapClass =
-  result = cast[PGtkPixmapClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_PIXMAP()))
+proc PIXMAP_GET_CLASS*(obj: pointer): PPixmapClass = 
+  result = cast[PPixmapClass](CHECK_GET_CLASS(obj, gtk2.TYPE_PIXMAP()))
 
-proc build_insensitive*(a: var TGtkPixmap): guint =
-  result = (a.GtkPixmapflag0 and bm_TGtkPixmap_build_insensitive) shr
+proc build_insensitive*(a: var TPixmap): guint = 
+  result = (a.Pixmapflag0 and bm_TGtkPixmap_build_insensitive) shr
       bp_TGtkPixmap_build_insensitive
 
-proc set_build_insensitive*(a: var TGtkPixmap, `build_insensitive`: guint) =
-  a.GtkPixmapflag0 = a.GtkPixmapflag0 or
+proc set_build_insensitive*(a: var TPixmap, `build_insensitive`: guint) = 
+  a.Pixmapflag0 = a.Pixmapflag0 or
       (int16(`build_insensitive` shl bp_TGtkPixmap_build_insensitive) and
       bm_TGtkPixmap_build_insensitive)
 
-proc GTK_TYPE_PLUG*(): GType =
-  result = gtk_plug_get_type()
+proc TYPE_PLUG*(): GType = 
+  result = plug_get_type()
 
-proc GTK_PLUG*(obj: pointer): PGtkPlug =
-  result = cast[PGtkPlug](GTK_CHECK_CAST(obj, GTK_TYPE_PLUG()))
+proc PLUG*(obj: pointer): PPlug = 
+  result = cast[PPlug](CHECK_CAST(obj, TYPE_PLUG()))
 
-proc GTK_PLUG_CLASS*(klass: pointer): PGtkPlugClass =
-  result = cast[PGtkPlugClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_PLUG()))
+proc PLUG_CLASS*(klass: pointer): PPlugClass = 
+  result = cast[PPlugClass](CHECK_CLASS_CAST(klass, TYPE_PLUG()))
 
-proc GTK_IS_PLUG*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_PLUG())
+proc IS_PLUG*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_PLUG())
 
-proc GTK_IS_PLUG_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_PLUG())
+proc IS_PLUG_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_PLUG())
 
-proc GTK_PLUG_GET_CLASS*(obj: pointer): PGtkPlugClass =
-  result = cast[PGtkPlugClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_PLUG()))
+proc PLUG_GET_CLASS*(obj: pointer): PPlugClass = 
+  result = cast[PPlugClass](CHECK_GET_CLASS(obj, TYPE_PLUG()))
 
-proc same_app*(a: var TGtkPlug): guint =
-  result = (a.GtkPlugflag0 and bm_TGtkPlug_same_app) shr bp_TGtkPlug_same_app
+proc same_app*(a: var TPlug): guint = 
+  result = (a.Plugflag0 and bm_TGtkPlug_same_app) shr bp_TGtkPlug_same_app
 
-proc set_same_app*(a: var TGtkPlug, `same_app`: guint) =
-  a.GtkPlugflag0 = a.GtkPlugflag0 or
+proc set_same_app*(a: var TPlug, `same_app`: guint) = 
+  a.Plugflag0 = a.Plugflag0 or
       (int16(`same_app` shl bp_TGtkPlug_same_app) and bm_TGtkPlug_same_app)
 
-proc GTK_TYPE_PREVIEW*(): GType =
-  result = gtk_preview_get_type()
+proc TYPE_PREVIEW*(): GType = 
+  result = preview_get_type()
 
-proc GTK_PREVIEW*(obj: pointer): PGtkPreview =
-  result = cast[PGtkPreview](GTK_CHECK_CAST(obj, GTK_TYPE_PREVIEW()))
+proc PREVIEW*(obj: pointer): PPreview = 
+  result = cast[PPreview](CHECK_CAST(obj, TYPE_PREVIEW()))
 
-proc GTK_PREVIEW_CLASS*(klass: pointer): PGtkPreviewClass =
-  result = cast[PGtkPreviewClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_PREVIEW()))
+proc PREVIEW_CLASS*(klass: pointer): PPreviewClass = 
+  result = cast[PPreviewClass](CHECK_CLASS_CAST(klass, TYPE_PREVIEW()))
 
-proc GTK_IS_PREVIEW*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_PREVIEW())
+proc IS_PREVIEW*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_PREVIEW())
 
-proc GTK_IS_PREVIEW_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_PREVIEW())
+proc IS_PREVIEW_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_PREVIEW())
 
-proc GTK_PREVIEW_GET_CLASS*(obj: pointer): PGtkPreviewClass =
-  result = cast[PGtkPreviewClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_PREVIEW()))
+proc PREVIEW_GET_CLASS*(obj: pointer): PPreviewClass = 
+  result = cast[PPreviewClass](CHECK_GET_CLASS(obj, TYPE_PREVIEW()))
 
-proc get_type*(a: var TGtkPreview): guint =
-  result = (a.GtkPreviewflag0 and bm_TGtkPreview_type) shr bp_TGtkPreview_type
+proc get_type*(a: var TPreview): guint = 
+  result = (a.Previewflag0 and bm_TGtkPreview_type) shr bp_TGtkPreview_type
 
-proc set_type*(a: var TGtkPreview, `type`: guint) =
-  a.GtkPreviewflag0 = a.GtkPreviewflag0 or
+proc set_type*(a: var TPreview, `type`: guint) = 
+  a.Previewflag0 = a.Previewflag0 or
       (int16(`type` shl bp_TGtkPreview_type) and bm_TGtkPreview_type)
 
-proc get_expand*(a: var TGtkPreview): guint =
-  result = (a.GtkPreviewflag0 and bm_TGtkPreview_expand) shr bp_TGtkPreview_expand
+proc get_expand*(a: var TPreview): guint = 
+  result = (a.Previewflag0 and bm_TGtkPreview_expand) shr
+      bp_TGtkPreview_expand
 
-proc set_expand*(a: var TGtkPreview, `expand`: guint) =
-  a.GtkPreviewflag0 = a.GtkPreviewflag0 or
+proc set_expand*(a: var TPreview, `expand`: guint) = 
+  a.Previewflag0 = a.Previewflag0 or
       (int16(`expand` shl bp_TGtkPreview_expand) and bm_TGtkPreview_expand)
 
-proc gtk_progress_get_type(): GType {.importc, cdecl, dynlib: gtklib.}
-
-proc GTK_TYPE_PROGRESS*(): GType =
-  result = gtk_progress_get_type()
+proc progress_get_type(): GType{.importc: "gtk_progress_get_type", cdecl, 
+                                 dynlib: lib.}
+proc TYPE_PROGRESS*(): GType = 
+  result = progress_get_type()
 
-proc GTK_PROGRESS*(obj: pointer): PGtkProgress =
-  result = cast[PGtkProgress](GTK_CHECK_CAST(obj, GTK_TYPE_PROGRESS()))
+proc PROGRESS*(obj: pointer): PProgress = 
+  result = cast[PProgress](CHECK_CAST(obj, TYPE_PROGRESS()))
 
-proc GTK_PROGRESS_CLASS*(klass: pointer): PGtkProgressClass =
-  result = cast[PGtkProgressClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_PROGRESS()))
+proc PROGRESS_CLASS*(klass: pointer): PProgressClass = 
+  result = cast[PProgressClass](CHECK_CLASS_CAST(klass, TYPE_PROGRESS()))
 
-proc GTK_IS_PROGRESS*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_PROGRESS())
+proc IS_PROGRESS*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_PROGRESS())
 
-proc GTK_IS_PROGRESS_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_PROGRESS())
+proc IS_PROGRESS_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_PROGRESS())
 
-proc GTK_PROGRESS_GET_CLASS*(obj: pointer): PGtkProgressClass =
-  result = cast[PGtkProgressClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_PROGRESS()))
+proc PROGRESS_GET_CLASS*(obj: pointer): PProgressClass = 
+  result = cast[PProgressClass](CHECK_GET_CLASS(obj, TYPE_PROGRESS()))
 
-proc show_text*(a: var TGtkProgress): guint =
-  result = (a.GtkProgressflag0 and bm_TGtkProgress_show_text) shr
+proc show_text*(a: var TProgress): guint = 
+  result = (a.Progressflag0 and bm_TGtkProgress_show_text) shr
       bp_TGtkProgress_show_text
 
-proc set_show_text*(a: var TGtkProgress, `show_text`: guint) =
-  a.GtkProgressflag0 = a.GtkProgressflag0 or
+proc set_show_text*(a: var TProgress, `show_text`: guint) = 
+  a.Progressflag0 = a.Progressflag0 or
       (int16(`show_text` shl bp_TGtkProgress_show_text) and
       bm_TGtkProgress_show_text)
 
-proc activity_mode*(a: var TGtkProgress): guint =
-  result = (a.GtkProgressflag0 and bm_TGtkProgress_activity_mode) shr
+proc activity_mode*(a: var TProgress): guint = 
+  result = (a.Progressflag0 and bm_TGtkProgress_activity_mode) shr
       bp_TGtkProgress_activity_mode
 
-proc set_activity_mode*(a: var TGtkProgress, `activity_mode`: guint) =
-  a.GtkProgressflag0 = a.GtkProgressflag0 or
+proc set_activity_mode*(a: var TProgress, `activity_mode`: guint) = 
+  a.Progressflag0 = a.Progressflag0 or
       (int16(`activity_mode` shl bp_TGtkProgress_activity_mode) and
       bm_TGtkProgress_activity_mode)
 
-proc use_text_format*(a: var TGtkProgress): guint =
-  result = (a.GtkProgressflag0 and bm_TGtkProgress_use_text_format) shr
+proc use_text_format*(a: var TProgress): guint = 
+  result = (a.Progressflag0 and bm_TGtkProgress_use_text_format) shr
       bp_TGtkProgress_use_text_format
 
-proc set_use_text_format*(a: var TGtkProgress, `use_text_format`: guint) =
-  a.GtkProgressflag0 = a.GtkProgressflag0 or
+proc set_use_text_format*(a: var TProgress, `use_text_format`: guint) = 
+  a.Progressflag0 = a.Progressflag0 or
       (int16(`use_text_format` shl bp_TGtkProgress_use_text_format) and
       bm_TGtkProgress_use_text_format)
 
-proc GTK_TYPE_PROGRESS_BAR*(): GType =
-  result = gtk_progress_bar_get_type()
+proc TYPE_PROGRESS_BAR*(): GType = 
+  result = progress_bar_get_type()
 
-proc GTK_PROGRESS_BAR*(obj: pointer): PGtkProgressBar =
-  result = cast[PGtkProgressBar](GTK_CHECK_CAST(obj, GTK_TYPE_PROGRESS_BAR()))
+proc PROGRESS_BAR*(obj: pointer): PProgressBar = 
+  result = cast[PProgressBar](CHECK_CAST(obj, TYPE_PROGRESS_BAR()))
 
-proc GTK_PROGRESS_BAR_CLASS*(klass: pointer): PGtkProgressBarClass =
-  result = cast[PGtkProgressBarClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_PROGRESS_BAR()))
+proc PROGRESS_BAR_CLASS*(klass: pointer): PProgressBarClass = 
+  result = cast[PProgressBarClass](CHECK_CLASS_CAST(klass, TYPE_PROGRESS_BAR()))
 
-proc GTK_IS_PROGRESS_BAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_PROGRESS_BAR())
+proc IS_PROGRESS_BAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_PROGRESS_BAR())
 
-proc GTK_IS_PROGRESS_BAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_PROGRESS_BAR())
+proc IS_PROGRESS_BAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_PROGRESS_BAR())
 
-proc GTK_PROGRESS_BAR_GET_CLASS*(obj: pointer): PGtkProgressBarClass =
-  result = cast[PGtkProgressBarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_PROGRESS_BAR()))
+proc PROGRESS_BAR_GET_CLASS*(obj: pointer): PProgressBarClass = 
+  result = cast[PProgressBarClass](CHECK_GET_CLASS(obj, TYPE_PROGRESS_BAR()))
 
-proc activity_dir*(a: var TGtkProgressBar): guint =
-  result = (a.GtkProgressBarflag0 and bm_TGtkProgressBar_activity_dir) shr
+proc activity_dir*(a: var TProgressBar): guint = 
+  result = (a.ProgressBarflag0 and bm_TGtkProgressBar_activity_dir) shr
       bp_TGtkProgressBar_activity_dir
 
-proc set_activity_dir*(a: var TGtkProgressBar, `activity_dir`: guint) =
-  a.GtkProgressBarflag0 = a.GtkProgressBarflag0 or
+proc set_activity_dir*(a: var TProgressBar, `activity_dir`: guint) = 
+  a.ProgressBarflag0 = a.ProgressBarflag0 or
       (int16(`activity_dir` shl bp_TGtkProgressBar_activity_dir) and
       bm_TGtkProgressBar_activity_dir)
 
-proc GTK_TYPE_RADIO_BUTTON*(): GType =
-  result = gtk_radio_button_get_type()
+proc TYPE_RADIO_BUTTON*(): GType = 
+  result = radio_button_get_type()
 
-proc GTK_RADIO_BUTTON*(obj: pointer): PGtkRadioButton =
-  result = cast[PGtkRadioButton](GTK_CHECK_CAST(obj, GTK_TYPE_RADIO_BUTTON()))
+proc RADIO_BUTTON*(obj: pointer): PRadioButton = 
+  result = cast[PRadioButton](CHECK_CAST(obj, TYPE_RADIO_BUTTON()))
 
-proc GTK_RADIO_BUTTON_CLASS*(klass: pointer): PGtkRadioButtonClass =
-  result = cast[PGtkRadioButtonClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_RADIO_BUTTON()))
+proc RADIO_BUTTON_CLASS*(klass: pointer): PRadioButtonClass = 
+  result = cast[PRadioButtonClass](CHECK_CLASS_CAST(klass, TYPE_RADIO_BUTTON()))
 
-proc GTK_IS_RADIO_BUTTON*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_RADIO_BUTTON())
+proc IS_RADIO_BUTTON*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_RADIO_BUTTON())
 
-proc GTK_IS_RADIO_BUTTON_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_RADIO_BUTTON())
+proc IS_RADIO_BUTTON_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_RADIO_BUTTON())
 
-proc GTK_RADIO_BUTTON_GET_CLASS*(obj: pointer): PGtkRadioButtonClass =
-  result = cast[PGtkRadioButtonClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_RADIO_BUTTON()))
+proc RADIO_BUTTON_GET_CLASS*(obj: pointer): PRadioButtonClass = 
+  result = cast[PRadioButtonClass](CHECK_GET_CLASS(obj, TYPE_RADIO_BUTTON()))
 
-proc GTK_TYPE_RADIO_MENU_ITEM*(): GType =
-  result = gtk_radio_menu_item_get_type()
+proc TYPE_RADIO_MENU_ITEM*(): GType = 
+  result = radio_menu_item_get_type()
 
-proc GTK_RADIO_MENU_ITEM*(obj: pointer): PGtkRadioMenuItem =
-  result = cast[PGtkRadioMenuItem](GTK_CHECK_CAST(obj, GTK_TYPE_RADIO_MENU_ITEM()))
+proc RADIO_MENU_ITEM*(obj: pointer): PRadioMenuItem = 
+  result = cast[PRadioMenuItem](CHECK_CAST(obj, TYPE_RADIO_MENU_ITEM()))
 
-proc GTK_RADIO_MENU_ITEM_CLASS*(klass: pointer): PGtkRadioMenuItemClass =
-  result = cast[PGtkRadioMenuItemClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_RADIO_MENU_ITEM()))
+proc RADIO_MENU_ITEM_CLASS*(klass: pointer): PRadioMenuItemClass = 
+  result = cast[PRadioMenuItemClass](CHECK_CLASS_CAST(klass, 
+      TYPE_RADIO_MENU_ITEM()))
 
-proc GTK_IS_RADIO_MENU_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_RADIO_MENU_ITEM())
+proc IS_RADIO_MENU_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_RADIO_MENU_ITEM())
 
-proc GTK_IS_RADIO_MENU_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_RADIO_MENU_ITEM())
+proc IS_RADIO_MENU_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_RADIO_MENU_ITEM())
 
-proc GTK_RADIO_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkRadioMenuItemClass =
-  result = cast[PGtkRadioMenuItemClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_RADIO_MENU_ITEM()))
+proc RADIO_MENU_ITEM_GET_CLASS*(obj: pointer): PRadioMenuItemClass = 
+  result = cast[PRadioMenuItemClass](CHECK_GET_CLASS(obj, TYPE_RADIO_MENU_ITEM()))
 
-proc GTK_TYPE_SCROLLED_WINDOW*(): GType =
-  result = gtk_scrolled_window_get_type()
+proc TYPE_SCROLLED_WINDOW*(): GType = 
+  result = scrolled_window_get_type()
 
-proc GTK_SCROLLED_WINDOW*(obj: pointer): PGtkScrolledWindow =
-  result = cast[PGtkScrolledWindow](GTK_CHECK_CAST(obj, GTK_TYPE_SCROLLED_WINDOW()))
+proc SCROLLED_WINDOW*(obj: pointer): PScrolledWindow = 
+  result = cast[PScrolledWindow](CHECK_CAST(obj, TYPE_SCROLLED_WINDOW()))
 
-proc GTK_SCROLLED_WINDOW_CLASS*(klass: pointer): PGtkScrolledWindowClass =
-  result = cast[PGtkScrolledWindowClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_SCROLLED_WINDOW()))
+proc SCROLLED_WINDOW_CLASS*(klass: pointer): PScrolledWindowClass = 
+  result = cast[PScrolledWindowClass](CHECK_CLASS_CAST(klass, 
+      TYPE_SCROLLED_WINDOW()))
 
-proc GTK_IS_SCROLLED_WINDOW*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SCROLLED_WINDOW())
+proc IS_SCROLLED_WINDOW*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SCROLLED_WINDOW())
 
-proc GTK_IS_SCROLLED_WINDOW_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SCROLLED_WINDOW())
+proc IS_SCROLLED_WINDOW_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SCROLLED_WINDOW())
 
-proc GTK_SCROLLED_WINDOW_GET_CLASS*(obj: pointer): PGtkScrolledWindowClass =
-  result = cast[PGtkScrolledWindowClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_SCROLLED_WINDOW()))
+proc SCROLLED_WINDOW_GET_CLASS*(obj: pointer): PScrolledWindowClass = 
+  result = cast[PScrolledWindowClass](CHECK_GET_CLASS(obj, 
+      TYPE_SCROLLED_WINDOW()))
 
-proc hscrollbar_policy*(a: var TGtkScrolledWindow): guint =
-  result = (a.GtkScrolledWindowflag0 and bm_TGtkScrolledWindow_hscrollbar_policy) shr
+proc hscrollbar_policy*(a: var TScrolledWindow): guint = 
+  result = (a.ScrolledWindowflag0 and bm_TGtkScrolledWindow_hscrollbar_policy) shr
       bp_TGtkScrolledWindow_hscrollbar_policy
 
-proc set_hscrollbar_policy*(a: var TGtkScrolledWindow,
-                            `hscrollbar_policy`: guint) =
-  a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or
+proc set_hscrollbar_policy*(a: var TScrolledWindow, `hscrollbar_policy`: guint) = 
+  a.ScrolledWindowflag0 = a.ScrolledWindowflag0 or
       (int16(`hscrollbar_policy` shl bp_TGtkScrolledWindow_hscrollbar_policy) and
       bm_TGtkScrolledWindow_hscrollbar_policy)
 
-proc vscrollbar_policy*(a: var TGtkScrolledWindow): guint =
-  result = (a.GtkScrolledWindowflag0 and bm_TGtkScrolledWindow_vscrollbar_policy) shr
+proc vscrollbar_policy*(a: var TScrolledWindow): guint = 
+  result = (a.ScrolledWindowflag0 and bm_TGtkScrolledWindow_vscrollbar_policy) shr
       bp_TGtkScrolledWindow_vscrollbar_policy
 
-proc set_vscrollbar_policy*(a: var TGtkScrolledWindow,
-                            `vscrollbar_policy`: guint) =
-  a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or
+proc set_vscrollbar_policy*(a: var TScrolledWindow, `vscrollbar_policy`: guint) = 
+  a.ScrolledWindowflag0 = a.ScrolledWindowflag0 or
       (int16(`vscrollbar_policy` shl bp_TGtkScrolledWindow_vscrollbar_policy) and
       bm_TGtkScrolledWindow_vscrollbar_policy)
 
-proc hscrollbar_visible*(a: var TGtkScrolledWindow): guint =
-  result = (a.GtkScrolledWindowflag0 and bm_TGtkScrolledWindow_hscrollbar_visible) shr
+proc hscrollbar_visible*(a: var TScrolledWindow): guint = 
+  result = (a.ScrolledWindowflag0 and
+      bm_TGtkScrolledWindow_hscrollbar_visible) shr
       bp_TGtkScrolledWindow_hscrollbar_visible
 
-proc set_hscrollbar_visible*(a: var TGtkScrolledWindow,
-                             `hscrollbar_visible`: guint) =
-  a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or
-      (int16(`hscrollbar_visible` shl bp_TGtkScrolledWindow_hscrollbar_visible) and
+proc set_hscrollbar_visible*(a: var TScrolledWindow, `hscrollbar_visible`: guint) = 
+  a.ScrolledWindowflag0 = a.ScrolledWindowflag0 or
+      (int16(`hscrollbar_visible` shl
+      bp_TGtkScrolledWindow_hscrollbar_visible) and
       bm_TGtkScrolledWindow_hscrollbar_visible)
 
-proc vscrollbar_visible*(a: var TGtkScrolledWindow): guint =
-  result = (a.GtkScrolledWindowflag0 and bm_TGtkScrolledWindow_vscrollbar_visible) shr
+proc vscrollbar_visible*(a: var TScrolledWindow): guint = 
+  result = (a.ScrolledWindowflag0 and
+      bm_TGtkScrolledWindow_vscrollbar_visible) shr
       bp_TGtkScrolledWindow_vscrollbar_visible
 
-proc set_vscrollbar_visible*(a: var TGtkScrolledWindow,
-                             `vscrollbar_visible`: guint) =
-  a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or
-      int16((`vscrollbar_visible` shl bp_TGtkScrolledWindow_vscrollbar_visible) and
+proc set_vscrollbar_visible*(a: var TScrolledWindow, `vscrollbar_visible`: guint) = 
+  a.ScrolledWindowflag0 = a.ScrolledWindowflag0 or
+      int16((`vscrollbar_visible` shl
+      bp_TGtkScrolledWindow_vscrollbar_visible) and
       bm_TGtkScrolledWindow_vscrollbar_visible)
 
-proc window_placement*(a: var TGtkScrolledWindow): guint =
-  result = (a.GtkScrolledWindowflag0 and bm_TGtkScrolledWindow_window_placement) shr
+proc window_placement*(a: var TScrolledWindow): guint = 
+  result = (a.ScrolledWindowflag0 and bm_TGtkScrolledWindow_window_placement) shr
       bp_TGtkScrolledWindow_window_placement
 
-proc set_window_placement*(a: var TGtkScrolledWindow, `window_placement`: guint) =
-  a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or
+proc set_window_placement*(a: var TScrolledWindow, `window_placement`: guint) = 
+  a.ScrolledWindowflag0 = a.ScrolledWindowflag0 or
       (int16(`window_placement` shl bp_TGtkScrolledWindow_window_placement) and
       bm_TGtkScrolledWindow_window_placement)
 
-proc focus_out*(a: var TGtkScrolledWindow): guint =
-  result = (a.GtkScrolledWindowflag0 and bm_TGtkScrolledWindow_focus_out) shr
+proc focus_out*(a: var TScrolledWindow): guint = 
+  result = (a.ScrolledWindowflag0 and bm_TGtkScrolledWindow_focus_out) shr
       bp_TGtkScrolledWindow_focus_out
 
-proc set_focus_out*(a: var TGtkScrolledWindow, `focus_out`: guint) =
-  a.GtkScrolledWindowflag0 = a.GtkScrolledWindowflag0 or
+proc set_focus_out*(a: var TScrolledWindow, `focus_out`: guint) = 
+  a.ScrolledWindowflag0 = a.ScrolledWindowflag0 or
       (int16(`focus_out` shl bp_TGtkScrolledWindow_focus_out) and
       bm_TGtkScrolledWindow_focus_out)
 
-proc GTK_TYPE_SELECTION_DATA*(): GType =
-  result = gtk_selection_data_get_type()
+proc TYPE_SELECTION_DATA*(): GType = 
+  result = selection_data_get_type()
 
-proc GTK_TYPE_SEPARATOR_MENU_ITEM*(): GType =
-  result = gtk_separator_menu_item_get_type()
+proc TYPE_SEPARATOR_MENU_ITEM*(): GType = 
+  result = separator_menu_item_get_type()
 
-proc GTK_SEPARATOR_MENU_ITEM*(obj: pointer): PGtkSeparatorMenuItem =
-  result = cast[PGtkSeparatorMenuItem](GTK_CHECK_CAST(obj,
-      GTK_TYPE_SEPARATOR_MENU_ITEM()))
+proc SEPARATOR_MENU_ITEM*(obj: pointer): PSeparatorMenuItem = 
+  result = cast[PSeparatorMenuItem](CHECK_CAST(obj, TYPE_SEPARATOR_MENU_ITEM()))
 
-proc GTK_SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): PGtkSeparatorMenuItemClass =
-  result = cast[PGtkSeparatorMenuItemClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_SEPARATOR_MENU_ITEM()))
+proc SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): PSeparatorMenuItemClass = 
+  result = cast[PSeparatorMenuItemClass](CHECK_CLASS_CAST(klass, 
+      TYPE_SEPARATOR_MENU_ITEM()))
 
-proc GTK_IS_SEPARATOR_MENU_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SEPARATOR_MENU_ITEM())
+proc IS_SEPARATOR_MENU_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SEPARATOR_MENU_ITEM())
 
-proc GTK_IS_SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SEPARATOR_MENU_ITEM())
+proc IS_SEPARATOR_MENU_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SEPARATOR_MENU_ITEM())
 
-proc GTK_SEPARATOR_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkSeparatorMenuItemClass =
-  result = cast[PGtkSeparatorMenuItemClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_SEPARATOR_MENU_ITEM()))
+proc SEPARATOR_MENU_ITEM_GET_CLASS*(obj: pointer): PSeparatorMenuItemClass = 
+  result = cast[PSeparatorMenuItemClass](CHECK_GET_CLASS(obj, 
+      TYPE_SEPARATOR_MENU_ITEM()))
 
-proc gtk_signal_lookup*(name: cstring, object_type: GType): guint =
+proc signal_lookup*(name: cstring, object_type: GType): guint = 
   result = g_signal_lookup(name, object_type)
 
-proc gtk_signal_name*(signal_id: guint): cstring =
+proc signal_name*(signal_id: guint): cstring = 
   result = g_signal_name(signal_id)
 
-proc gtk_signal_emit_stop*(instance: gpointer, signal_id: guint, detail: TGQuark) =
+proc signal_emit_stop*(instance: gpointer, signal_id: guint, detail: TGQuark) = 
   if detail != 0'i32: g_signal_stop_emission(instance, signal_id, 0)
-
-proc gtk_signal_connect_full*(anObject: PGtkObject, name: cstring,
-                         fun: TGtkSignalFunc, unknown1: pointer,
-                         func_data: gpointer, unknown2: pointer,
-                         unknown3, unknown4: int): gulong {.
-  importc, cdecl, dynlib: gtklib.}
-
-proc gtk_signal_compat_matched*(anObject: PGtkObject, fun: TGtkSignalFunc,
-                                data: gpointer, m: TGSignalMatchType,
-                                u: int) {.importc, cdecl, dynlib: gtklib.}
-
-proc gtk_signal_connect*(anObject: PGtkObject, name: cstring,
-                         fun: TGtkSignalFunc, func_data: gpointer): gulong =
-  result = gtk_signal_connect_full(anObject, name, fun, nil, func_data, nil,
-                                   0, 0)
-
-proc gtk_signal_connect_after*(anObject: PGtkObject, name: cstring,
-                               fun: TGtkSignalFunc, func_data: gpointer): gulong =
-  result = gtk_signal_connect_full(anObject, name, fun, nil, func_data, nil,
-                                   0, 1)
-
-proc gtk_signal_connect_object*(anObject: PGtkObject, name: cstring,
-                                fun: TGtkSignalFunc, slot_object: gpointer): gulong =
-  result = gtk_signal_connect_full(anObject, name, fun, nil, slot_object, nil,
-                                   1, 0)
-
-proc gtk_signal_connect_object_after*(anObject: PGtkObject, name: cstring,
-                                      fun: TGtkSignalFunc,
-                                      slot_object: gpointer): gulong =
-  result = gtk_signal_connect_full(anObject, name, fun, nil, slot_object, nil,
-                                   1, 1)
-
-proc gtk_signal_disconnect*(anObject: gpointer, handler_id: gulong) =
+  
+proc signal_connect_full*(anObject: PObject, name: cstring, fun: TSignalFunc, 
+                          unknown1: pointer, func_data: gpointer, 
+                          unknown2: pointer, unknown3, unknown4: int): gulong{.
+    importc: "gtk_signal_connect_full", cdecl, dynlib: lib.}
+proc signal_compat_matched*(anObject: PObject, fun: TSignalFunc, 
+                            data: gpointer, m: TGSignalMatchType, u: int){.
+    importc: "gtk_signal_compat_matched", cdecl, dynlib: lib.}
+proc signal_connect*(anObject: PObject, name: cstring, fun: TSignalFunc, 
+                     func_data: gpointer): gulong = 
+  result = signal_connect_full(anObject, name, fun, nil, func_data, nil, 0, 0)
+
+proc signal_connect_after*(anObject: PObject, name: cstring, fun: TSignalFunc, 
+                           func_data: gpointer): gulong = 
+  result = signal_connect_full(anObject, name, fun, nil, func_data, nil, 0, 1)
+
+proc signal_connect_object*(anObject: PObject, name: cstring, 
+                            fun: TSignalFunc, slot_object: gpointer): gulong = 
+  result = signal_connect_full(anObject, name, fun, nil, slot_object, nil, 1, 
+                               0)
+
+proc signal_connect_object_after*(anObject: PObject, name: cstring, 
+                                  fun: TSignalFunc, slot_object: gpointer): gulong = 
+  result = signal_connect_full(anObject, name, fun, nil, slot_object, nil, 1, 
+                               1)
+
+proc signal_disconnect*(anObject: gpointer, handler_id: gulong) = 
   g_signal_handler_disconnect(anObject, handler_id)
 
-proc gtk_signal_handler_block*(anObject: gpointer, handler_id: gulong) =
+proc signal_handler_block*(anObject: gpointer, handler_id: gulong) = 
   g_signal_handler_block(anObject, handler_id)
 
-proc gtk_signal_handler_unblock*(anObject: gpointer, handler_id: gulong) =
+proc signal_handler_unblock*(anObject: gpointer, handler_id: gulong) = 
   g_signal_handler_unblock(anObject, handler_id)
 
-proc gtk_signal_disconnect_by_data*(anObject: PGtkObject, data: gpointer) =
-  gtk_signal_compat_matched(anObject, nil, data, G_SIGNAL_MATCH_DATA, 0)
+proc signal_disconnect_by_data*(anObject: PObject, data: gpointer) = 
+  signal_compat_matched(anObject, nil, data, G_SIGNAL_MATCH_DATA, 0)
 
-proc gtk_signal_disconnect_by_func*(anObject: PGtkObject, fun: TGtkSignalFunc,
-                                    data: gpointer) =
-  gtk_signal_compat_matched(anObject, fun, data, cast[TGSignalMatchType](
-      G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA), 0)
+proc signal_disconnect_by_func*(anObject: PObject, fun: TSignalFunc, 
+                                data: gpointer) = 
+  signal_compat_matched(anObject, fun, data, cast[TGSignalMatchType](G_SIGNAL_MATCH_FUNC or
+      G_SIGNAL_MATCH_DATA), 0)
 
-proc gtk_signal_handler_block_by_func*(anObject: PGtkObject,
-                                       fun: TGtkSignalFunc, data: gpointer) =
-  gtk_signal_compat_matched(anObject, fun, data, TGSignalMatchType(
+proc signal_handler_block_by_func*(anObject: PObject, fun: TSignalFunc, 
+                                   data: gpointer) = 
+  signal_compat_matched(anObject, fun, data, TGSignalMatchType(
       G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA), 0)
 
-proc gtk_signal_handler_block_by_data*(anObject: PGtkObject, data: gpointer) =
-  gtk_signal_compat_matched(anObject, nil, data, G_SIGNAL_MATCH_DATA, 1)
+proc signal_handler_block_by_data*(anObject: PObject, data: gpointer) = 
+  signal_compat_matched(anObject, nil, data, G_SIGNAL_MATCH_DATA, 1)
 
-proc gtk_signal_handler_unblock_by_func*(anObject: PGtkObject,
-    fun: TGtkSignalFunc, data: gpointer) =
-  gtk_signal_compat_matched(anObject, fun, data, cast[TGSignalMatchType](
-      G_SIGNAL_MATCH_FUNC or G_SIGNAL_MATCH_DATA), 0)
+proc signal_handler_unblock_by_func*(anObject: PObject, fun: TSignalFunc, 
+                                     data: gpointer) = 
+  signal_compat_matched(anObject, fun, data, cast[TGSignalMatchType](G_SIGNAL_MATCH_FUNC or
+      G_SIGNAL_MATCH_DATA), 0)
 
-proc gtk_signal_handler_unblock_by_data*(anObject: PGtkObject, data: gpointer) =
-  gtk_signal_compat_matched(anObject, nil, data, G_SIGNAL_MATCH_DATA, 2)
+proc signal_handler_unblock_by_data*(anObject: PObject, data: gpointer) = 
+  signal_compat_matched(anObject, nil, data, G_SIGNAL_MATCH_DATA, 2)
 
-proc gtk_signal_handler_pending*(anObject: PGtkObject, signal_id: guint,
-                                 may_be_blocked: gboolean): gboolean =
+proc signal_handler_pending*(anObject: PObject, signal_id: guint, 
+                             may_be_blocked: gboolean): gboolean = 
   Result = g_signal_has_handler_pending(anObject, signal_id, 0, may_be_blocked)
 
-proc gtk_signal_handler_pending_by_func*(anObject: PGtkObject, signal_id: guint,
-    may_be_blocked: gboolean, fun: TGtkSignalFunc, data: gpointer): gboolean =
+proc signal_handler_pending_by_func*(anObject: PObject, signal_id: guint, 
+                                     may_be_blocked: gboolean, 
+                                     fun: TSignalFunc, data: gpointer): gboolean = 
   var t: TGSignalMatchType
   t = cast[TGSignalMatchType](G_SIGNAL_MATCH_ID or G_SIGNAL_MATCH_FUNC or
       G_SIGNAL_MATCH_DATA)
-  if not may_be_blocked:
+  if not may_be_blocked: 
     t = t or cast[TGSignalMatchType](G_SIGNAL_MATCH_UNBLOCKED)
-  Result = g_signal_handler_find(anObject, t, signal_id, 0, nil, fun,
-                                 data) != 0
+  Result = g_signal_handler_find(anObject, t, signal_id, 0, nil, fun, data) !=
+      0
 
-proc GTK_TYPE_SIZE_GROUP*(): GType =
-  result = gtk_size_group_get_type()
+proc TYPE_SIZE_GROUP*(): GType = 
+  result = size_group_get_type()
 
-proc GTK_SIZE_GROUP*(obj: pointer): PGtkSizeGroup =
-  result = cast[PGtkSizeGroup](GTK_CHECK_CAST(obj, GTK_TYPE_SIZE_GROUP()))
+proc SIZE_GROUP*(obj: pointer): PSizeGroup = 
+  result = cast[PSizeGroup](CHECK_CAST(obj, TYPE_SIZE_GROUP()))
 
-proc GTK_SIZE_GROUP_CLASS*(klass: pointer): PGtkSizeGroupClass =
-  result = cast[PGtkSizeGroupClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SIZE_GROUP()))
+proc SIZE_GROUP_CLASS*(klass: pointer): PSizeGroupClass = 
+  result = cast[PSizeGroupClass](CHECK_CLASS_CAST(klass, TYPE_SIZE_GROUP()))
 
-proc GTK_IS_SIZE_GROUP*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SIZE_GROUP())
+proc IS_SIZE_GROUP*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SIZE_GROUP())
 
-proc GTK_IS_SIZE_GROUP_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SIZE_GROUP())
+proc IS_SIZE_GROUP_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SIZE_GROUP())
 
-proc GTK_SIZE_GROUP_GET_CLASS*(obj: pointer): PGtkSizeGroupClass =
-  result = cast[PGtkSizeGroupClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SIZE_GROUP()))
+proc SIZE_GROUP_GET_CLASS*(obj: pointer): PSizeGroupClass = 
+  result = cast[PSizeGroupClass](CHECK_GET_CLASS(obj, TYPE_SIZE_GROUP()))
 
-proc have_width*(a: var TGtkSizeGroup): guint =
-  result = (a.GtkSizeGroupflag0 and bm_TGtkSizeGroup_have_width) shr
+proc have_width*(a: var TSizeGroup): guint = 
+  result = (a.SizeGroupflag0 and bm_TGtkSizeGroup_have_width) shr
       bp_TGtkSizeGroup_have_width
 
-proc set_have_width*(a: var TGtkSizeGroup, `have_width`: guint) =
-  a.GtkSizeGroupflag0 = a.GtkSizeGroupflag0 or
+proc set_have_width*(a: var TSizeGroup, `have_width`: guint) = 
+  a.SizeGroupflag0 = a.SizeGroupflag0 or
       (int16(`have_width` shl bp_TGtkSizeGroup_have_width) and
       bm_TGtkSizeGroup_have_width)
 
-proc have_height*(a: var TGtkSizeGroup): guint =
-  result = (a.GtkSizeGroupflag0 and bm_TGtkSizeGroup_have_height) shr
+proc have_height*(a: var TSizeGroup): guint = 
+  result = (a.SizeGroupflag0 and bm_TGtkSizeGroup_have_height) shr
       bp_TGtkSizeGroup_have_height
 
-proc set_have_height*(a: var TGtkSizeGroup, `have_height`: guint) =
-  a.GtkSizeGroupflag0 = a.GtkSizeGroupflag0 or
+proc set_have_height*(a: var TSizeGroup, `have_height`: guint) = 
+  a.SizeGroupflag0 = a.SizeGroupflag0 or
       (int16(`have_height` shl bp_TGtkSizeGroup_have_height) and
       bm_TGtkSizeGroup_have_height)
 
-proc GTK_TYPE_SOCKET*(): GType =
-  result = gtk_socket_get_type()
+proc TYPE_SOCKET*(): GType = 
+  result = socket_get_type()
 
-proc GTK_SOCKET*(obj: pointer): PGtkSocket =
-  result = cast[PGtkSocket](GTK_CHECK_CAST(obj, GTK_TYPE_SOCKET()))
+proc SOCKET*(obj: pointer): PSocket = 
+  result = cast[PSocket](CHECK_CAST(obj, TYPE_SOCKET()))
 
-proc GTK_SOCKET_CLASS*(klass: pointer): PGtkSocketClass =
-  result = cast[PGtkSocketClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SOCKET()))
+proc SOCKET_CLASS*(klass: pointer): PSocketClass = 
+  result = cast[PSocketClass](CHECK_CLASS_CAST(klass, TYPE_SOCKET()))
 
-proc GTK_IS_SOCKET*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SOCKET())
+proc IS_SOCKET*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SOCKET())
 
-proc GTK_IS_SOCKET_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SOCKET())
+proc IS_SOCKET_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SOCKET())
 
-proc GTK_SOCKET_GET_CLASS*(obj: pointer): PGtkSocketClass =
-  result = cast[PGtkSocketClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SOCKET()))
+proc SOCKET_GET_CLASS*(obj: pointer): PSocketClass = 
+  result = cast[PSocketClass](CHECK_GET_CLASS(obj, TYPE_SOCKET()))
 
-proc same_app*(a: var TGtkSocket): guint =
-  result = (a.GtkSocketflag0 and bm_TGtkSocket_same_app) shr bp_TGtkSocket_same_app
+proc same_app*(a: var TSocket): guint = 
+  result = (a.Socketflag0 and bm_TGtkSocket_same_app) shr
+      bp_TGtkSocket_same_app
 
-proc set_same_app*(a: var TGtkSocket, `same_app`: guint) =
-  a.GtkSocketflag0 = a.GtkSocketflag0 or
-      (int16(`same_app` shl bp_TGtkSocket_same_app) and bm_TGtkSocket_same_app)
+proc set_same_app*(a: var TSocket, `same_app`: guint) = 
+  a.Socketflag0 = a.Socketflag0 or
+      (int16(`same_app` shl bp_TGtkSocket_same_app) and
+      bm_TGtkSocket_same_app)
 
-proc focus_in*(a: var TGtkSocket): guint =
-  result = (a.GtkSocketflag0 and bm_TGtkSocket_focus_in) shr bp_TGtkSocket_focus_in
+proc focus_in*(a: var TSocket): guint = 
+  result = (a.Socketflag0 and bm_TGtkSocket_focus_in) shr
+      bp_TGtkSocket_focus_in
 
-proc set_focus_in*(a: var TGtkSocket, `focus_in`: guint) =
-  a.GtkSocketflag0 = a.GtkSocketflag0 or
-      (int16(`focus_in` shl bp_TGtkSocket_focus_in) and bm_TGtkSocket_focus_in)
+proc set_focus_in*(a: var TSocket, `focus_in`: guint) = 
+  a.Socketflag0 = a.Socketflag0 or
+      (int16(`focus_in` shl bp_TGtkSocket_focus_in) and
+      bm_TGtkSocket_focus_in)
 
-proc have_size*(a: var TGtkSocket): guint =
-  result = (a.GtkSocketflag0 and bm_TGtkSocket_have_size) shr bp_TGtkSocket_have_size
+proc have_size*(a: var TSocket): guint = 
+  result = (a.Socketflag0 and bm_TGtkSocket_have_size) shr
+      bp_TGtkSocket_have_size
 
-proc set_have_size*(a: var TGtkSocket, `have_size`: guint) =
-  a.GtkSocketflag0 = a.GtkSocketflag0 or
-      (int16(`have_size` shl bp_TGtkSocket_have_size) and bm_TGtkSocket_have_size)
+proc set_have_size*(a: var TSocket, `have_size`: guint) = 
+  a.Socketflag0 = a.Socketflag0 or
+      (int16(`have_size` shl bp_TGtkSocket_have_size) and
+      bm_TGtkSocket_have_size)
 
-proc need_map*(a: var TGtkSocket): guint =
-  result = (a.GtkSocketflag0 and bm_TGtkSocket_need_map) shr bp_TGtkSocket_need_map
+proc need_map*(a: var TSocket): guint = 
+  result = (a.Socketflag0 and bm_TGtkSocket_need_map) shr
+      bp_TGtkSocket_need_map
 
-proc set_need_map*(a: var TGtkSocket, `need_map`: guint) =
-  a.GtkSocketflag0 = a.GtkSocketflag0 or
-      (int16(`need_map` shl bp_TGtkSocket_need_map) and bm_TGtkSocket_need_map)
+proc set_need_map*(a: var TSocket, `need_map`: guint) = 
+  a.Socketflag0 = a.Socketflag0 or
+      (int16(`need_map` shl bp_TGtkSocket_need_map) and
+      bm_TGtkSocket_need_map)
 
-proc is_mapped*(a: var TGtkSocket): guint =
-  result = (a.GtkSocketflag0 and bm_TGtkSocket_is_mapped) shr bp_TGtkSocket_is_mapped
+proc is_mapped*(a: var TSocket): guint = 
+  result = (a.Socketflag0 and bm_TGtkSocket_is_mapped) shr
+      bp_TGtkSocket_is_mapped
 
-proc set_is_mapped*(a: var TGtkSocket, `is_mapped`: guint) =
-  a.GtkSocketflag0 = a.GtkSocketflag0 or
-      (int16(`is_mapped` shl bp_TGtkSocket_is_mapped) and bm_TGtkSocket_is_mapped)
+proc set_is_mapped*(a: var TSocket, `is_mapped`: guint) = 
+  a.Socketflag0 = a.Socketflag0 or
+      (int16(`is_mapped` shl bp_TGtkSocket_is_mapped) and
+      bm_TGtkSocket_is_mapped)
 
-proc GTK_TYPE_SPIN_BUTTON*(): GType =
-  result = gtk_spin_button_get_type()
+proc TYPE_SPIN_BUTTON*(): GType = 
+  result = spin_button_get_type()
 
-proc GTK_SPIN_BUTTON*(obj: pointer): PGtkSpinButton =
-  result = cast[PGtkSpinButton](GTK_CHECK_CAST(obj, GTK_TYPE_SPIN_BUTTON()))
+proc SPIN_BUTTON*(obj: pointer): PSpinButton = 
+  result = cast[PSpinButton](CHECK_CAST(obj, TYPE_SPIN_BUTTON()))
 
-proc GTK_SPIN_BUTTON_CLASS*(klass: pointer): PGtkSpinButtonClass =
-  result = cast[PGtkSpinButtonClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_SPIN_BUTTON()))
+proc SPIN_BUTTON_CLASS*(klass: pointer): PSpinButtonClass = 
+  result = cast[PSpinButtonClass](CHECK_CLASS_CAST(klass, TYPE_SPIN_BUTTON()))
 
-proc GTK_IS_SPIN_BUTTON*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_SPIN_BUTTON())
+proc IS_SPIN_BUTTON*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_SPIN_BUTTON())
 
-proc GTK_IS_SPIN_BUTTON_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_SPIN_BUTTON())
+proc IS_SPIN_BUTTON_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_SPIN_BUTTON())
 
-proc GTK_SPIN_BUTTON_GET_CLASS*(obj: pointer): PGtkSpinButtonClass =
-  result = cast[PGtkSpinButtonClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_SPIN_BUTTON()))
+proc SPIN_BUTTON_GET_CLASS*(obj: pointer): PSpinButtonClass = 
+  result = cast[PSpinButtonClass](CHECK_GET_CLASS(obj, TYPE_SPIN_BUTTON()))
 
-proc in_child*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_in_child) shr
+proc in_child*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_in_child) shr
       bp_TGtkSpinButton_in_child
 
-proc set_in_child*(a: var TGtkSpinButton, `in_child`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_in_child*(a: var TSpinButton, `in_child`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`in_child` shl bp_TGtkSpinButton_in_child) and
       bm_TGtkSpinButton_in_child)
 
-proc click_child*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_click_child) shr
+proc click_child*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_click_child) shr
       bp_TGtkSpinButton_click_child
 
-proc set_click_child*(a: var TGtkSpinButton, `click_child`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_click_child*(a: var TSpinButton, `click_child`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`click_child` shl bp_TGtkSpinButton_click_child) and
       bm_TGtkSpinButton_click_child)
 
-proc button*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_button) shr
+proc button*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_button) shr
       bp_TGtkSpinButton_button
 
-proc set_button*(a: var TGtkSpinButton, `button`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_button*(a: var TSpinButton, `button`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`button` shl bp_TGtkSpinButton_button) and bm_TGtkSpinButton_button)
 
-proc need_timer*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_need_timer) shr
+proc need_timer*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_need_timer) shr
       bp_TGtkSpinButton_need_timer
 
-proc set_need_timer*(a: var TGtkSpinButton, `need_timer`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_need_timer*(a: var TSpinButton, `need_timer`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`need_timer` shl bp_TGtkSpinButton_need_timer) and
       bm_TGtkSpinButton_need_timer)
 
-proc timer_calls*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_timer_calls) shr
+proc timer_calls*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_timer_calls) shr
       bp_TGtkSpinButton_timer_calls
 
-proc set_timer_calls*(a: var TGtkSpinButton, `timer_calls`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_timer_calls*(a: var TSpinButton, `timer_calls`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`timer_calls` shl bp_TGtkSpinButton_timer_calls) and
       bm_TGtkSpinButton_timer_calls)
 
-proc digits*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_digits) shr
+proc digits*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_digits) shr
       bp_TGtkSpinButton_digits
 
-proc set_digits*(a: var TGtkSpinButton, `digits`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_digits*(a: var TSpinButton, `digits`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`digits` shl bp_TGtkSpinButton_digits) and bm_TGtkSpinButton_digits)
 
-proc numeric*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_numeric) shr
+proc numeric*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_numeric) shr
       bp_TGtkSpinButton_numeric
 
-proc set_numeric*(a: var TGtkSpinButton, `numeric`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_numeric*(a: var TSpinButton, `numeric`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`numeric` shl bp_TGtkSpinButton_numeric) and
       bm_TGtkSpinButton_numeric)
 
-proc wrap*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_wrap) shr bp_TGtkSpinButton_wrap
+proc wrap*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_wrap) shr
+      bp_TGtkSpinButton_wrap
 
-proc set_wrap*(a: var TGtkSpinButton, `wrap`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_wrap*(a: var TSpinButton, `wrap`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`wrap` shl bp_TGtkSpinButton_wrap) and bm_TGtkSpinButton_wrap)
 
-proc snap_to_ticks*(a: var TGtkSpinButton): guint =
-  result = (a.GtkSpinButtonflag0 and bm_TGtkSpinButton_snap_to_ticks) shr
+proc snap_to_ticks*(a: var TSpinButton): guint = 
+  result = (a.SpinButtonflag0 and bm_TGtkSpinButton_snap_to_ticks) shr
       bp_TGtkSpinButton_snap_to_ticks
 
-proc set_snap_to_ticks*(a: var TGtkSpinButton, `snap_to_ticks`: guint) =
-  a.GtkSpinButtonflag0 = a.GtkSpinButtonflag0 or
+proc set_snap_to_ticks*(a: var TSpinButton, `snap_to_ticks`: guint) = 
+  a.SpinButtonflag0 = a.SpinButtonflag0 or
       ((`snap_to_ticks` shl bp_TGtkSpinButton_snap_to_ticks) and
       bm_TGtkSpinButton_snap_to_ticks)
 
-proc GTK_TYPE_STATUSBAR*(): GType =
-  result = gtk_statusbar_get_type()
+proc TYPE_STATUSBAR*(): GType = 
+  result = statusbar_get_type()
 
-proc GTK_STATUSBAR*(obj: pointer): PGtkStatusbar =
-  result = cast[PGtkStatusbar](GTK_CHECK_CAST(obj, GTK_TYPE_STATUSBAR()))
+proc STATUSBAR*(obj: pointer): PStatusbar = 
+  result = cast[PStatusbar](CHECK_CAST(obj, TYPE_STATUSBAR()))
 
-proc GTK_STATUSBAR_CLASS*(klass: pointer): PGtkStatusbarClass =
-  result = cast[PGtkStatusbarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_STATUSBAR()))
+proc STATUSBAR_CLASS*(klass: pointer): PStatusbarClass = 
+  result = cast[PStatusbarClass](CHECK_CLASS_CAST(klass, TYPE_STATUSBAR()))
 
-proc GTK_IS_STATUSBAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_STATUSBAR())
+proc IS_STATUSBAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_STATUSBAR())
 
-proc GTK_IS_STATUSBAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_STATUSBAR())
+proc IS_STATUSBAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_STATUSBAR())
 
-proc GTK_STATUSBAR_GET_CLASS*(obj: pointer): PGtkStatusbarClass =
-  result = cast[PGtkStatusbarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_STATUSBAR()))
+proc STATUSBAR_GET_CLASS*(obj: pointer): PStatusbarClass = 
+  result = cast[PStatusbarClass](CHECK_GET_CLASS(obj, TYPE_STATUSBAR()))
 
-proc has_resize_grip*(a: var TGtkStatusbar): guint =
-  result = (a.GtkStatusbarflag0 and bm_TGtkStatusbar_has_resize_grip) shr
+proc has_resize_grip*(a: var TStatusbar): guint = 
+  result = (a.Statusbarflag0 and bm_TGtkStatusbar_has_resize_grip) shr
       bp_TGtkStatusbar_has_resize_grip
 
-proc set_has_resize_grip*(a: var TGtkStatusbar, `has_resize_grip`: guint) =
-  a.GtkStatusbarflag0 = a.GtkStatusbarflag0 or
+proc set_has_resize_grip*(a: var TStatusbar, `has_resize_grip`: guint) = 
+  a.Statusbarflag0 = a.Statusbarflag0 or
       (int16(`has_resize_grip` shl bp_TGtkStatusbar_has_resize_grip) and
       bm_TGtkStatusbar_has_resize_grip)
 
-proc GTK_TYPE_TABLE*(): GType =
-  result = gtk_table_get_type()
+proc TYPE_TABLE*(): GType = 
+  result = gtk2.table_get_type()
 
-proc GTK_TABLE*(obj: pointer): PGtkTable =
-  result = cast[PGtkTable](GTK_CHECK_CAST(obj, GTK_TYPE_TABLE()))
+proc TABLE*(obj: pointer): PTable = 
+  result = cast[PTable](CHECK_CAST(obj, gtk2.TYPE_TABLE()))
 
-proc GTK_TABLE_CLASS*(klass: pointer): PGtkTableClass =
-  result = cast[PGtkTableClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TABLE()))
+proc TABLE_CLASS*(klass: pointer): PTableClass = 
+  result = cast[PTableClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_TABLE()))
 
-proc GTK_IS_TABLE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TABLE())
+proc IS_TABLE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, gtk2.TYPE_TABLE())
 
-proc GTK_IS_TABLE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TABLE())
+proc IS_TABLE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_TABLE())
 
-proc GTK_TABLE_GET_CLASS*(obj: pointer): PGtkTableClass =
-  result = cast[PGtkTableClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TABLE()))
+proc TABLE_GET_CLASS*(obj: pointer): PTableClass = 
+  result = cast[PTableClass](CHECK_GET_CLASS(obj, gtk2.TYPE_TABLE()))
 
-proc homogeneous*(a: var TGtkTable): guint =
-  result = (a.GtkTableflag0 and bm_TGtkTable_homogeneous) shr
+proc homogeneous*(a: var TTable): guint = 
+  result = (a.Tableflag0 and bm_TGtkTable_homogeneous) shr
       bp_TGtkTable_homogeneous
 
-proc set_homogeneous*(a: var TGtkTable, `homogeneous`: guint) =
-  a.GtkTableflag0 = a.GtkTableflag0 or
+proc set_homogeneous*(a: var TTable, `homogeneous`: guint) = 
+  a.Tableflag0 = a.Tableflag0 or
       (int16(`homogeneous` shl bp_TGtkTable_homogeneous) and
       bm_TGtkTable_homogeneous)
 
-proc xexpand*(a: var TGtkTableChild): guint =
-  result = (a.GtkTableChildflag0 and bm_TGtkTableChild_xexpand) shr
+proc xexpand*(a: var TTableChild): guint = 
+  result = (a.TableChildflag0 and bm_TGtkTableChild_xexpand) shr
       bp_TGtkTableChild_xexpand
 
-proc set_xexpand*(a: var TGtkTableChild, `xexpand`: guint) =
-  a.GtkTableChildflag0 = a.GtkTableChildflag0 or
+proc set_xexpand*(a: var TTableChild, `xexpand`: guint) = 
+  a.TableChildflag0 = a.TableChildflag0 or
       (int16(`xexpand` shl bp_TGtkTableChild_xexpand) and
       bm_TGtkTableChild_xexpand)
 
-proc yexpand*(a: var TGtkTableChild): guint =
-  result = (a.GtkTableChildflag0 and bm_TGtkTableChild_yexpand) shr
+proc yexpand*(a: var TTableChild): guint = 
+  result = (a.TableChildflag0 and bm_TGtkTableChild_yexpand) shr
       bp_TGtkTableChild_yexpand
 
-proc set_yexpand*(a: var TGtkTableChild, `yexpand`: guint) =
-  a.GtkTableChildflag0 = a.GtkTableChildflag0 or
+proc set_yexpand*(a: var TTableChild, `yexpand`: guint) = 
+  a.TableChildflag0 = a.TableChildflag0 or
       (int16(`yexpand` shl bp_TGtkTableChild_yexpand) and
       bm_TGtkTableChild_yexpand)
 
-proc xshrink*(a: var TGtkTableChild): guint =
-  result = (a.GtkTableChildflag0 and bm_TGtkTableChild_xshrink) shr
+proc xshrink*(a: var TTableChild): guint = 
+  result = (a.TableChildflag0 and bm_TGtkTableChild_xshrink) shr
       bp_TGtkTableChild_xshrink
 
-proc set_xshrink*(a: var TGtkTableChild, `xshrink`: guint) =
-  a.GtkTableChildflag0 = a.GtkTableChildflag0 or
+proc set_xshrink*(a: var TTableChild, `xshrink`: guint) = 
+  a.TableChildflag0 = a.TableChildflag0 or
       (int16(`xshrink` shl bp_TGtkTableChild_xshrink) and
       bm_TGtkTableChild_xshrink)
 
-proc yshrink*(a: var TGtkTableChild): guint =
-  result = (a.GtkTableChildflag0 and bm_TGtkTableChild_yshrink) shr
+proc yshrink*(a: var TTableChild): guint = 
+  result = (a.TableChildflag0 and bm_TGtkTableChild_yshrink) shr
       bp_TGtkTableChild_yshrink
 
-proc set_yshrink*(a: var TGtkTableChild, `yshrink`: guint) =
-  a.GtkTableChildflag0 = a.GtkTableChildflag0 or
+proc set_yshrink*(a: var TTableChild, `yshrink`: guint) = 
+  a.TableChildflag0 = a.TableChildflag0 or
       (int16(`yshrink` shl bp_TGtkTableChild_yshrink) and
       bm_TGtkTableChild_yshrink)
 
-proc xfill*(a: var TGtkTableChild): guint =
-  result = (a.GtkTableChildflag0 and bm_TGtkTableChild_xfill) shr bp_TGtkTableChild_xfill
+proc xfill*(a: var TTableChild): guint = 
+  result = (a.TableChildflag0 and bm_TGtkTableChild_xfill) shr
+      bp_TGtkTableChild_xfill
 
-proc set_xfill*(a: var TGtkTableChild, `xfill`: guint) =
-  a.GtkTableChildflag0 = a.GtkTableChildflag0 or
+proc set_xfill*(a: var TTableChild, `xfill`: guint) = 
+  a.TableChildflag0 = a.TableChildflag0 or
       (int16(`xfill` shl bp_TGtkTableChild_xfill) and bm_TGtkTableChild_xfill)
 
-proc yfill*(a: var TGtkTableChild): guint =
-  result = (a.GtkTableChildflag0 and bm_TGtkTableChild_yfill) shr bp_TGtkTableChild_yfill
+proc yfill*(a: var TTableChild): guint = 
+  result = (a.TableChildflag0 and bm_TGtkTableChild_yfill) shr
+      bp_TGtkTableChild_yfill
 
-proc set_yfill*(a: var TGtkTableChild, `yfill`: guint) =
-  a.GtkTableChildflag0 = a.GtkTableChildflag0 or
+proc set_yfill*(a: var TTableChild, `yfill`: guint) = 
+  a.TableChildflag0 = a.TableChildflag0 or
       (int16(`yfill` shl bp_TGtkTableChild_yfill) and bm_TGtkTableChild_yfill)
 
-proc need_expand*(a: var TGtkTableRowCol): guint =
+proc need_expand*(a: var TTableRowCol): guint = 
   result = (a.flag0 and bm_TGtkTableRowCol_need_expand) shr
       bp_TGtkTableRowCol_need_expand
 
-proc set_need_expand*(a: var TGtkTableRowCol, `need_expand`: guint) =
+proc set_need_expand*(a: var TTableRowCol, `need_expand`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`need_expand` shl bp_TGtkTableRowCol_need_expand) and
       bm_TGtkTableRowCol_need_expand)
 
-proc need_shrink*(a: var TGtkTableRowCol): guint =
+proc need_shrink*(a: var TTableRowCol): guint = 
   result = (a.flag0 and bm_TGtkTableRowCol_need_shrink) shr
       bp_TGtkTableRowCol_need_shrink
 
-proc set_need_shrink*(a: var TGtkTableRowCol, `need_shrink`: guint) =
+proc set_need_shrink*(a: var TTableRowCol, `need_shrink`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`need_shrink` shl bp_TGtkTableRowCol_need_shrink) and
       bm_TGtkTableRowCol_need_shrink)
 
-proc expand*(a: var TGtkTableRowCol): guint =
+proc expand*(a: var TTableRowCol): guint = 
   result = (a.flag0 and bm_TGtkTableRowCol_expand) shr
       bp_TGtkTableRowCol_expand
 
-proc set_expand*(a: var TGtkTableRowCol, `expand`: guint) =
+proc set_expand*(a: var TTableRowCol, `expand`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`expand` shl bp_TGtkTableRowCol_expand) and bm_TGtkTableRowCol_expand)
+      (int16(`expand` shl bp_TGtkTableRowCol_expand) and
+      bm_TGtkTableRowCol_expand)
 
-proc shrink*(a: var TGtkTableRowCol): guint =
+proc shrink*(a: var TTableRowCol): guint = 
   result = (a.flag0 and bm_TGtkTableRowCol_shrink) shr
       bp_TGtkTableRowCol_shrink
 
-proc set_shrink*(a: var TGtkTableRowCol, `shrink`: guint) =
+proc set_shrink*(a: var TTableRowCol, `shrink`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`shrink` shl bp_TGtkTableRowCol_shrink) and bm_TGtkTableRowCol_shrink)
+      (int16(`shrink` shl bp_TGtkTableRowCol_shrink) and
+      bm_TGtkTableRowCol_shrink)
 
-proc empty*(a: var TGtkTableRowCol): guint =
+proc empty*(a: var TTableRowCol): guint = 
   result = (a.flag0 and bm_TGtkTableRowCol_empty) shr
       bp_TGtkTableRowCol_empty
 
-proc set_empty*(a: var TGtkTableRowCol, `empty`: guint) =
+proc set_empty*(a: var TTableRowCol, `empty`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`empty` shl bp_TGtkTableRowCol_empty) and bm_TGtkTableRowCol_empty)
+      (int16(`empty` shl bp_TGtkTableRowCol_empty) and
+      bm_TGtkTableRowCol_empty)
 
-proc GTK_TYPE_TEAROFF_MENU_ITEM*(): GType =
-  result = gtk_tearoff_menu_item_get_type()
+proc TYPE_TEAROFF_MENU_ITEM*(): GType = 
+  result = tearoff_menu_item_get_type()
 
-proc GTK_TEAROFF_MENU_ITEM*(obj: pointer): PGtkTearoffMenuItem =
-  result = cast[PGtkTearoffMenuItem](GTK_CHECK_CAST(obj, GTK_TYPE_TEAROFF_MENU_ITEM()))
+proc TEAROFF_MENU_ITEM*(obj: pointer): PTearoffMenuItem = 
+  result = cast[PTearoffMenuItem](CHECK_CAST(obj, TYPE_TEAROFF_MENU_ITEM()))
 
-proc GTK_TEAROFF_MENU_ITEM_CLASS*(klass: pointer): PGtkTearoffMenuItemClass =
-  result = cast[PGtkTearoffMenuItemClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TEAROFF_MENU_ITEM()))
+proc TEAROFF_MENU_ITEM_CLASS*(klass: pointer): PTearoffMenuItemClass = 
+  result = cast[PTearoffMenuItemClass](CHECK_CLASS_CAST(klass, 
+      TYPE_TEAROFF_MENU_ITEM()))
 
-proc GTK_IS_TEAROFF_MENU_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TEAROFF_MENU_ITEM())
+proc IS_TEAROFF_MENU_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TEAROFF_MENU_ITEM())
 
-proc GTK_IS_TEAROFF_MENU_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEAROFF_MENU_ITEM())
+proc IS_TEAROFF_MENU_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TEAROFF_MENU_ITEM())
 
-proc GTK_TEAROFF_MENU_ITEM_GET_CLASS*(obj: pointer): PGtkTearoffMenuItemClass =
-  result = cast[PGtkTearoffMenuItemClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TEAROFF_MENU_ITEM()))
+proc TEAROFF_MENU_ITEM_GET_CLASS*(obj: pointer): PTearoffMenuItemClass = 
+  result = cast[PTearoffMenuItemClass](CHECK_GET_CLASS(obj, 
+      TYPE_TEAROFF_MENU_ITEM()))
 
-proc torn_off*(a: var TGtkTearoffMenuItem): guint =
-  result = (a.GtkTearoffMenuItemflag0 and bm_TGtkTearoffMenuItem_torn_off) shr
+proc torn_off*(a: var TTearoffMenuItem): guint = 
+  result = (a.TearoffMenuItemflag0 and bm_TGtkTearoffMenuItem_torn_off) shr
       bp_TGtkTearoffMenuItem_torn_off
 
-proc set_torn_off*(a: var TGtkTearoffMenuItem, `torn_off`: guint) =
-  a.GtkTearoffMenuItemflag0 = a.GtkTearoffMenuItemflag0 or
+proc set_torn_off*(a: var TTearoffMenuItem, `torn_off`: guint) = 
+  a.TearoffMenuItemflag0 = a.TearoffMenuItemflag0 or
       (int16(`torn_off` shl bp_TGtkTearoffMenuItem_torn_off) and
       bm_TGtkTearoffMenuItem_torn_off)
 
-proc GTK_TYPE_TEXT*(): GType =
-  result = gtk_text_get_type()
+proc TYPE_TEXT*(): GType = 
+  result = gtk2.text_get_type()
 
-proc GTK_TEXT*(obj: pointer): PGtkText =
-  result = cast[PGtkText](GTK_CHECK_CAST(obj, GTK_TYPE_TEXT()))
+proc TEXT*(obj: pointer): PText = 
+  result = cast[PText](CHECK_CAST(obj, gtk2.TYPE_TEXT()))
 
-proc GTK_TEXT_CLASS*(klass: pointer): PGtkTextClass =
-  result = cast[PGtkTextClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TEXT()))
+proc TEXT_CLASS*(klass: pointer): PTextClass = 
+  result = cast[PTextClass](CHECK_CLASS_CAST(klass, gtk2.TYPE_TEXT()))
 
-proc GTK_IS_TEXT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TEXT())
+proc IS_TEXT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, gtk2.TYPE_TEXT())
 
-proc GTK_IS_TEXT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT())
+proc IS_TEXT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, gtk2.TYPE_TEXT())
 
-proc GTK_TEXT_GET_CLASS*(obj: pointer): PGtkTextClass =
-  result = cast[PGtkTextClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TEXT()))
+proc TEXT_GET_CLASS*(obj: pointer): PTextClass = 
+  result = cast[PTextClass](CHECK_GET_CLASS(obj, gtk2.TYPE_TEXT()))
 
-proc line_wrap*(a: PGtkText): guint =
-  result = (a.GtkTextflag0 and bm_TGtkText_line_wrap) shr bp_TGtkText_line_wrap
+proc line_wrap*(a: PText): guint = 
+  result = (a.Textflag0 and bm_TGtkText_line_wrap) shr bp_TGtkText_line_wrap
 
-proc set_line_wrap*(a: PGtkText, `line_wrap`: guint) =
-  a.GtkTextflag0 = a.GtkTextflag0 or
+proc set_line_wrap*(a: PText, `line_wrap`: guint) = 
+  a.Textflag0 = a.Textflag0 or
       (int16(`line_wrap` shl bp_TGtkText_line_wrap) and bm_TGtkText_line_wrap)
 
-proc word_wrap*(a: PGtkText): guint =
-  result = (a . GtkTextflag0 and bm_TGtkText_word_wrap) shr bp_TGtkText_word_wrap
+proc word_wrap*(a: PText): guint = 
+  result = (a.Textflag0 and bm_TGtkText_word_wrap) shr bp_TGtkText_word_wrap
 
-proc set_word_wrap*(a: PGtkText, `word_wrap`: guint) =
-  a.GtkTextflag0 = a.GtkTextflag0 or
+proc set_word_wrap*(a: PText, `word_wrap`: guint) = 
+  a.Textflag0 = a.Textflag0 or
       (int16(`word_wrap` shl bp_TGtkText_word_wrap) and bm_TGtkText_word_wrap)
 
-proc use_wchar*(a: PGtkText): gboolean =
-  result = ((a.GtkTextflag0 and bm_TGtkText_use_wchar) shr bp_TGtkText_use_wchar) >
+proc use_wchar*(a: PText): gboolean = 
+  result = ((a.Textflag0 and bm_TGtkText_use_wchar) shr bp_TGtkText_use_wchar) >
       0'i16
 
-proc set_use_wchar*(a: PGtkText, `use_wchar`: gboolean) =
-  if `use_wchar`:
-    a . GtkTextflag0 = a . GtkTextflag0 or bm_TGtkText_use_wchar
-  else:
-    a . GtkTextflag0 = a . GtkTextflag0 and not bm_TGtkText_use_wchar
+proc set_use_wchar*(a: PText, `use_wchar`: gboolean) = 
+  if `use_wchar`: 
+    a.Textflag0 = a.Textflag0 or bm_TGtkText_use_wchar
+  else: 
+    a.Textflag0 = a.Textflag0 and not bm_TGtkText_use_wchar
 
-proc GTK_TEXT_INDEX_WCHAR*(t: PGtkText, index: guint): guint32 =
+proc INDEX_WCHAR*(t: PText, index: guint): guint32 = 
   nil
 
-proc GTK_TEXT_INDEX_UCHAR*(t: PGtkText, index: guint): GUChar =
+proc INDEX_UCHAR*(t: PText, index: guint): GUChar = 
   nil
 
-proc GTK_TYPE_TEXT_ITER*(): GType =
-  result = gtk_text_iter_get_type()
+proc TYPE_TEXT_ITER*(): GType = 
+  result = text_iter_get_type()
 
-proc GTK_TYPE_TEXT_TAG*(): GType =
-  result = gtk_text_tag_get_type()
+proc TYPE_TEXT_TAG*(): GType = 
+  result = text_tag_get_type()
 
-proc GTK_TEXT_TAG*(obj: pointer): PGtkTextTag =
-  result = cast[PGtkTextTag](G_TYPE_CHECK_INSTANCE_CAST(obj, GTK_TYPE_TEXT_TAG()))
+proc TEXT_TAG*(obj: pointer): PTextTag = 
+  result = cast[PTextTag](G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_TEXT_TAG()))
 
-proc GTK_TEXT_TAG_CLASS*(klass: pointer): PGtkTextTagClass =
-  result = cast[PGtkTextTagClass](G_TYPE_CHECK_CLASS_CAST(klass, GTK_TYPE_TEXT_TAG()))
+proc TEXT_TAG_CLASS*(klass: pointer): PTextTagClass = 
+  result = cast[PTextTagClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_TEXT_TAG()))
 
-proc GTK_IS_TEXT_TAG*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TEXT_TAG())
+proc IS_TEXT_TAG*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TEXT_TAG())
 
-proc GTK_IS_TEXT_TAG_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_TAG())
+proc IS_TEXT_TAG_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_TEXT_TAG())
 
-proc GTK_TEXT_TAG_GET_CLASS*(obj: pointer): PGtkTextTagClass =
-  result = cast[PGtkTextTagClass](G_TYPE_INSTANCE_GET_CLASS(obj, GTK_TYPE_TEXT_TAG()))
+proc TEXT_TAG_GET_CLASS*(obj: pointer): PTextTagClass = 
+  result = cast[PTextTagClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_TEXT_TAG()))
 
-proc GTK_TYPE_TEXT_ATTRIBUTES*(): GType =
-  result = gtk_text_attributes_get_type()
+proc TYPE_TEXT_ATTRIBUTES*(): GType = 
+  result = text_attributes_get_type()
 
-proc bg_color_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_bg_color_set) shr
+proc bg_color_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_bg_color_set) shr
       bp_TGtkTextTag_bg_color_set
 
-proc set_bg_color_set*(a: var TGtkTextTag, `bg_color_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_bg_color_set*(a: var TTextTag, `bg_color_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`bg_color_set` shl bp_TGtkTextTag_bg_color_set) and
       bm_TGtkTextTag_bg_color_set)
 
-proc bg_stipple_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_bg_stipple_set) shr
+proc bg_stipple_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_bg_stipple_set) shr
       bp_TGtkTextTag_bg_stipple_set
 
-proc set_bg_stipple_set*(a: var TGtkTextTag, `bg_stipple_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_bg_stipple_set*(a: var TTextTag, `bg_stipple_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`bg_stipple_set` shl bp_TGtkTextTag_bg_stipple_set) and
       bm_TGtkTextTag_bg_stipple_set)
 
-proc fg_color_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_fg_color_set) shr
+proc fg_color_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_fg_color_set) shr
       bp_TGtkTextTag_fg_color_set
 
-proc set_fg_color_set*(a: var TGtkTextTag, `fg_color_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_fg_color_set*(a: var TTextTag, `fg_color_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`fg_color_set` shl bp_TGtkTextTag_fg_color_set) and
       bm_TGtkTextTag_fg_color_set)
 
-proc scale_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_scale_set) shr
+proc scale_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_scale_set) shr
       bp_TGtkTextTag_scale_set
 
-proc set_scale_set*(a: var TGtkTextTag, `scale_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_scale_set*(a: var TTextTag, `scale_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`scale_set` shl bp_TGtkTextTag_scale_set) and
       bm_TGtkTextTag_scale_set)
 
-proc fg_stipple_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_fg_stipple_set) shr
+proc fg_stipple_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_fg_stipple_set) shr
       bp_TGtkTextTag_fg_stipple_set
 
-proc set_fg_stipple_set*(a: var TGtkTextTag, `fg_stipple_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_fg_stipple_set*(a: var TTextTag, `fg_stipple_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`fg_stipple_set` shl bp_TGtkTextTag_fg_stipple_set) and
       bm_TGtkTextTag_fg_stipple_set)
 
-proc justification_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_justification_set) shr
+proc justification_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_justification_set) shr
       bp_TGtkTextTag_justification_set
 
-proc set_justification_set*(a: var TGtkTextTag, `justification_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_justification_set*(a: var TTextTag, `justification_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`justification_set` shl bp_TGtkTextTag_justification_set) and
       bm_TGtkTextTag_justification_set)
 
-proc left_margin_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_left_margin_set) shr
+proc left_margin_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_left_margin_set) shr
       bp_TGtkTextTag_left_margin_set
 
-proc set_left_margin_set*(a: var TGtkTextTag, `left_margin_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_left_margin_set*(a: var TTextTag, `left_margin_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`left_margin_set` shl bp_TGtkTextTag_left_margin_set) and
       bm_TGtkTextTag_left_margin_set)
 
-proc indent_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_indent_set) shr
+proc indent_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_indent_set) shr
       bp_TGtkTextTag_indent_set
 
-proc set_indent_set*(a: var TGtkTextTag, `indent_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_indent_set*(a: var TTextTag, `indent_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`indent_set` shl bp_TGtkTextTag_indent_set) and
       bm_TGtkTextTag_indent_set)
 
-proc rise_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_rise_set) shr bp_TGtkTextTag_rise_set
+proc rise_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_rise_set) shr
+      bp_TGtkTextTag_rise_set
 
-proc set_rise_set*(a: var TGtkTextTag, `rise_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_rise_set*(a: var TTextTag, `rise_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`rise_set` shl bp_TGtkTextTag_rise_set) and bm_TGtkTextTag_rise_set)
 
-proc strikethrough_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_strikethrough_set) shr
+proc strikethrough_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_strikethrough_set) shr
       bp_TGtkTextTag_strikethrough_set
 
-proc set_strikethrough_set*(a: var TGtkTextTag, `strikethrough_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_strikethrough_set*(a: var TTextTag, `strikethrough_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`strikethrough_set` shl bp_TGtkTextTag_strikethrough_set) and
       bm_TGtkTextTag_strikethrough_set)
 
-proc right_margin_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_right_margin_set) shr
+proc right_margin_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_right_margin_set) shr
       bp_TGtkTextTag_right_margin_set
 
-proc set_right_margin_set*(a: var TGtkTextTag, `right_margin_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_right_margin_set*(a: var TTextTag, `right_margin_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`right_margin_set` shl bp_TGtkTextTag_right_margin_set) and
       bm_TGtkTextTag_right_margin_set)
 
-proc pixels_above_lines_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_pixels_above_lines_set) shr
+proc pixels_above_lines_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_pixels_above_lines_set) shr
       bp_TGtkTextTag_pixels_above_lines_set
 
-proc set_pixels_above_lines_set*(a: var TGtkTextTag,
-                                 `pixels_above_lines_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_pixels_above_lines_set*(a: var TTextTag, 
+                                 `pixels_above_lines_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`pixels_above_lines_set` shl bp_TGtkTextTag_pixels_above_lines_set) and
       bm_TGtkTextTag_pixels_above_lines_set)
 
-proc pixels_below_lines_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_pixels_below_lines_set) shr
+proc pixels_below_lines_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_pixels_below_lines_set) shr
       bp_TGtkTextTag_pixels_below_lines_set
 
-proc set_pixels_below_lines_set*(a: var TGtkTextTag,
-                                 `pixels_below_lines_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_pixels_below_lines_set*(a: var TTextTag, 
+                                 `pixels_below_lines_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`pixels_below_lines_set` shl bp_TGtkTextTag_pixels_below_lines_set) and
       bm_TGtkTextTag_pixels_below_lines_set)
 
-proc pixels_inside_wrap_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_pixels_inside_wrap_set) shr
+proc pixels_inside_wrap_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_pixels_inside_wrap_set) shr
       bp_TGtkTextTag_pixels_inside_wrap_set
 
-proc set_pixels_inside_wrap_set*(a: var TGtkTextTag,
-                                 `pixels_inside_wrap_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_pixels_inside_wrap_set*(a: var TTextTag, 
+                                 `pixels_inside_wrap_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`pixels_inside_wrap_set` shl bp_TGtkTextTag_pixels_inside_wrap_set) and
       bm_TGtkTextTag_pixels_inside_wrap_set)
 
-proc tabs_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_tabs_set) shr bp_TGtkTextTag_tabs_set
+proc tabs_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_tabs_set) shr
+      bp_TGtkTextTag_tabs_set
 
-proc set_tabs_set*(a: var TGtkTextTag, `tabs_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_tabs_set*(a: var TTextTag, `tabs_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`tabs_set` shl bp_TGtkTextTag_tabs_set) and bm_TGtkTextTag_tabs_set)
 
-proc underline_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_underline_set) shr
+proc underline_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_underline_set) shr
       bp_TGtkTextTag_underline_set
 
-proc set_underline_set*(a: var TGtkTextTag, `underline_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_underline_set*(a: var TTextTag, `underline_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`underline_set` shl bp_TGtkTextTag_underline_set) and
       bm_TGtkTextTag_underline_set)
 
-proc wrap_mode_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_wrap_mode_set) shr
+proc wrap_mode_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_wrap_mode_set) shr
       bp_TGtkTextTag_wrap_mode_set
 
-proc set_wrap_mode_set*(a: var TGtkTextTag, `wrap_mode_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_wrap_mode_set*(a: var TTextTag, `wrap_mode_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`wrap_mode_set` shl bp_TGtkTextTag_wrap_mode_set) and
       bm_TGtkTextTag_wrap_mode_set)
 
-proc bg_full_height_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_bg_full_height_set) shr
+proc bg_full_height_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_bg_full_height_set) shr
       bp_TGtkTextTag_bg_full_height_set
 
-proc set_bg_full_height_set*(a: var TGtkTextTag, `bg_full_height_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_bg_full_height_set*(a: var TTextTag, `bg_full_height_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`bg_full_height_set` shl bp_TGtkTextTag_bg_full_height_set) and
       bm_TGtkTextTag_bg_full_height_set)
 
-proc invisible_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_invisible_set) shr
+proc invisible_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_invisible_set) shr
       bp_TGtkTextTag_invisible_set
 
-proc set_invisible_set*(a: var TGtkTextTag, `invisible_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_invisible_set*(a: var TTextTag, `invisible_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`invisible_set` shl bp_TGtkTextTag_invisible_set) and
       bm_TGtkTextTag_invisible_set)
 
-proc editable_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_editable_set) shr
+proc editable_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_editable_set) shr
       bp_TGtkTextTag_editable_set
 
-proc set_editable_set*(a: var TGtkTextTag, `editable_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_editable_set*(a: var TTextTag, `editable_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`editable_set` shl bp_TGtkTextTag_editable_set) and
       bm_TGtkTextTag_editable_set)
 
-proc language_set*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_language_set) shr
+proc language_set*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_language_set) shr
       bp_TGtkTextTag_language_set
 
-proc set_language_set*(a: var TGtkTextTag, `language_set`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_language_set*(a: var TTextTag, `language_set`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`language_set` shl bp_TGtkTextTag_language_set) and
       bm_TGtkTextTag_language_set)
 
-proc pad1*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_pad1) shr bp_TGtkTextTag_pad1
+proc pad1*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_pad1) shr bp_TGtkTextTag_pad1
 
-proc set_pad1*(a: var TGtkTextTag, `pad1`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_pad1*(a: var TTextTag, `pad1`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`pad1` shl bp_TGtkTextTag_pad1) and bm_TGtkTextTag_pad1)
 
-proc pad2*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_pad2) shr bp_TGtkTextTag_pad2
+proc pad2*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_pad2) shr bp_TGtkTextTag_pad2
 
-proc set_pad2*(a: var TGtkTextTag, `pad2`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_pad2*(a: var TTextTag, `pad2`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`pad2` shl bp_TGtkTextTag_pad2) and bm_TGtkTextTag_pad2)
 
-proc pad3*(a: var TGtkTextTag): guint =
-  result = (a.GtkTextTagflag0 and bm_TGtkTextTag_pad3) shr bp_TGtkTextTag_pad3
+proc pad3*(a: var TTextTag): guint = 
+  result = (a.TextTagflag0 and bm_TGtkTextTag_pad3) shr bp_TGtkTextTag_pad3
 
-proc set_pad3*(a: var TGtkTextTag, `pad3`: guint) =
-  a.GtkTextTagflag0 = a.GtkTextTagflag0 or
+proc set_pad3*(a: var TTextTag, `pad3`: guint) = 
+  a.TextTagflag0 = a.TextTagflag0 or
       ((`pad3` shl bp_TGtkTextTag_pad3) and bm_TGtkTextTag_pad3)
 
-proc underline*(a: var TGtkTextAppearance): guint =
+proc underline*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_underline) shr
       bp_TGtkTextAppearance_underline
 
-proc set_underline*(a: var TGtkTextAppearance, `underline`: guint) =
+proc set_underline*(a: var TTextAppearance, `underline`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`underline` shl bp_TGtkTextAppearance_underline) and
       bm_TGtkTextAppearance_underline)
 
-proc strikethrough*(a: var TGtkTextAppearance): guint =
+proc strikethrough*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_strikethrough) shr
       bp_TGtkTextAppearance_strikethrough
 
-proc set_strikethrough*(a: var TGtkTextAppearance, `strikethrough`: guint) =
+proc set_strikethrough*(a: var TTextAppearance, `strikethrough`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`strikethrough` shl bp_TGtkTextAppearance_strikethrough) and
       bm_TGtkTextAppearance_strikethrough)
 
-proc draw_bg*(a: var TGtkTextAppearance): guint =
+proc draw_bg*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_draw_bg) shr
       bp_TGtkTextAppearance_draw_bg
 
-proc set_draw_bg*(a: var TGtkTextAppearance, `draw_bg`: guint) =
+proc set_draw_bg*(a: var TTextAppearance, `draw_bg`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`draw_bg` shl bp_TGtkTextAppearance_draw_bg) and
       bm_TGtkTextAppearance_draw_bg)
 
-proc inside_selection*(a: var TGtkTextAppearance): guint =
+proc inside_selection*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_inside_selection) shr
       bp_TGtkTextAppearance_inside_selection
 
-proc set_inside_selection*(a: var TGtkTextAppearance, `inside_selection`: guint) =
+proc set_inside_selection*(a: var TTextAppearance, `inside_selection`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`inside_selection` shl bp_TGtkTextAppearance_inside_selection) and
       bm_TGtkTextAppearance_inside_selection)
 
-proc is_text*(a: var TGtkTextAppearance): guint =
+proc is_text*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_is_text) shr
       bp_TGtkTextAppearance_is_text
 
-proc set_is_text*(a: var TGtkTextAppearance, `is_text`: guint) =
+proc set_is_text*(a: var TTextAppearance, `is_text`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`is_text` shl bp_TGtkTextAppearance_is_text) and
       bm_TGtkTextAppearance_is_text)
 
-proc pad1*(a: var TGtkTextAppearance): guint =
+proc pad1*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_pad1) shr
       bp_TGtkTextAppearance_pad1
 
-proc set_pad1*(a: var TGtkTextAppearance, `pad1`: guint) =
+proc set_pad1*(a: var TTextAppearance, `pad1`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad1` shl bp_TGtkTextAppearance_pad1) and bm_TGtkTextAppearance_pad1)
+      (int16(`pad1` shl bp_TGtkTextAppearance_pad1) and
+      bm_TGtkTextAppearance_pad1)
 
-proc pad2*(a: var TGtkTextAppearance): guint =
+proc pad2*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_pad2) shr
       bp_TGtkTextAppearance_pad2
 
-proc set_pad2*(a: var TGtkTextAppearance, `pad2`: guint) =
+proc set_pad2*(a: var TTextAppearance, `pad2`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad2` shl bp_TGtkTextAppearance_pad2) and bm_TGtkTextAppearance_pad2)
+      (int16(`pad2` shl bp_TGtkTextAppearance_pad2) and
+      bm_TGtkTextAppearance_pad2)
 
-proc pad3*(a: var TGtkTextAppearance): guint =
+proc pad3*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_pad3) shr
       bp_TGtkTextAppearance_pad3
 
-proc set_pad3*(a: var TGtkTextAppearance, `pad3`: guint) =
+proc set_pad3*(a: var TTextAppearance, `pad3`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad3` shl bp_TGtkTextAppearance_pad3) and bm_TGtkTextAppearance_pad3)
+      (int16(`pad3` shl bp_TGtkTextAppearance_pad3) and
+      bm_TGtkTextAppearance_pad3)
 
-proc pad4*(a: var TGtkTextAppearance): guint =
+proc pad4*(a: var TTextAppearance): guint = 
   result = (a.flag0 and bm_TGtkTextAppearance_pad4) shr
       bp_TGtkTextAppearance_pad4
 
-proc set_pad4*(a: var TGtkTextAppearance, `pad4`: guint) =
+proc set_pad4*(a: var TTextAppearance, `pad4`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad4` shl bp_TGtkTextAppearance_pad4) and bm_TGtkTextAppearance_pad4)
+      (int16(`pad4` shl bp_TGtkTextAppearance_pad4) and
+      bm_TGtkTextAppearance_pad4)
 
-proc invisible*(a: var TGtkTextAttributes): guint =
+proc invisible*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_invisible) shr
       bp_TGtkTextAttributes_invisible
 
-proc set_invisible*(a: var TGtkTextAttributes, `invisible`: guint) =
+proc set_invisible*(a: var TTextAttributes, `invisible`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`invisible` shl bp_TGtkTextAttributes_invisible) and
       bm_TGtkTextAttributes_invisible)
 
-proc bg_full_height*(a: var TGtkTextAttributes): guint =
+proc bg_full_height*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_bg_full_height) shr
       bp_TGtkTextAttributes_bg_full_height
 
-proc set_bg_full_height*(a: var TGtkTextAttributes, `bg_full_height`: guint) =
+proc set_bg_full_height*(a: var TTextAttributes, `bg_full_height`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`bg_full_height` shl bp_TGtkTextAttributes_bg_full_height) and
       bm_TGtkTextAttributes_bg_full_height)
 
-proc editable*(a: var TGtkTextAttributes): guint =
+proc editable*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_editable) shr
       bp_TGtkTextAttributes_editable
 
-proc set_editable*(a: var TGtkTextAttributes, `editable`: guint) =
+proc set_editable*(a: var TTextAttributes, `editable`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`editable` shl bp_TGtkTextAttributes_editable) and
       bm_TGtkTextAttributes_editable)
 
-proc realized*(a: var TGtkTextAttributes): guint =
+proc realized*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_realized) shr
       bp_TGtkTextAttributes_realized
 
-proc set_realized*(a: var TGtkTextAttributes, `realized`: guint) =
+proc set_realized*(a: var TTextAttributes, `realized`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`realized` shl bp_TGtkTextAttributes_realized) and
       bm_TGtkTextAttributes_realized)
 
-proc pad1*(a: var TGtkTextAttributes): guint =
+proc pad1*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_pad1) shr
       bp_TGtkTextAttributes_pad1
 
-proc set_pad1*(a: var TGtkTextAttributes, `pad1`: guint) =
+proc set_pad1*(a: var TTextAttributes, `pad1`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad1` shl bp_TGtkTextAttributes_pad1) and bm_TGtkTextAttributes_pad1)
+      (int16(`pad1` shl bp_TGtkTextAttributes_pad1) and
+      bm_TGtkTextAttributes_pad1)
 
-proc pad2*(a: var TGtkTextAttributes): guint =
+proc pad2*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_pad2) shr
       bp_TGtkTextAttributes_pad2
 
-proc set_pad2*(a: var TGtkTextAttributes, `pad2`: guint) =
+proc set_pad2*(a: var TTextAttributes, `pad2`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad2` shl bp_TGtkTextAttributes_pad2) and bm_TGtkTextAttributes_pad2)
+      (int16(`pad2` shl bp_TGtkTextAttributes_pad2) and
+      bm_TGtkTextAttributes_pad2)
 
-proc pad3*(a: var TGtkTextAttributes): guint =
+proc pad3*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_pad3) shr
       bp_TGtkTextAttributes_pad3
 
-proc set_pad3*(a: var TGtkTextAttributes, `pad3`: guint) =
+proc set_pad3*(a: var TTextAttributes, `pad3`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad3` shl bp_TGtkTextAttributes_pad3) and bm_TGtkTextAttributes_pad3)
+      (int16(`pad3` shl bp_TGtkTextAttributes_pad3) and
+      bm_TGtkTextAttributes_pad3)
 
-proc pad4*(a: var TGtkTextAttributes): guint =
+proc pad4*(a: var TTextAttributes): guint = 
   result = (a.flag0 and bm_TGtkTextAttributes_pad4) shr
       bp_TGtkTextAttributes_pad4
 
-proc set_pad4*(a: var TGtkTextAttributes, `pad4`: guint) =
+proc set_pad4*(a: var TTextAttributes, `pad4`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`pad4` shl bp_TGtkTextAttributes_pad4) and bm_TGtkTextAttributes_pad4)
+      (int16(`pad4` shl bp_TGtkTextAttributes_pad4) and
+      bm_TGtkTextAttributes_pad4)
 
-proc GTK_TYPE_TEXT_TAG_TABLE*(): GType =
-  result = gtk_text_tag_table_get_type()
+proc TYPE_TEXT_TAG_TABLE*(): GType = 
+  result = text_tag_table_get_type()
 
-proc GTK_TEXT_TAG_TABLE*(obj: pointer): PGtkTextTagTable =
-  result = cast[PGtkTextTagTable](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      GTK_TYPE_TEXT_TAG_TABLE()))
+proc TEXT_TAG_TABLE*(obj: pointer): PTextTagTable = 
+  result = cast[PTextTagTable](G_TYPE_CHECK_INSTANCE_CAST(obj, 
+      TYPE_TEXT_TAG_TABLE()))
 
-proc GTK_TEXT_TAG_TABLE_CLASS*(klass: pointer): PGtkTextTagTableClass =
-  result = cast[PGtkTextTagTableClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TEXT_TAG_TABLE()))
+proc TEXT_TAG_TABLE_CLASS*(klass: pointer): PTextTagTableClass = 
+  result = cast[PTextTagTableClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_TEXT_TAG_TABLE()))
 
-proc GTK_IS_TEXT_TAG_TABLE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TEXT_TAG_TABLE())
+proc IS_TEXT_TAG_TABLE*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TEXT_TAG_TABLE())
 
-proc GTK_IS_TEXT_TAG_TABLE_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_TAG_TABLE())
+proc IS_TEXT_TAG_TABLE_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_TEXT_TAG_TABLE())
 
-proc GTK_TEXT_TAG_TABLE_GET_CLASS*(obj: pointer): PGtkTextTagTableClass =
-  result = cast[PGtkTextTagTableClass](G_TYPE_INSTANCE_GET_CLASS(obj, GTK_TYPE_TEXT_TAG_TABLE()))
+proc TEXT_TAG_TABLE_GET_CLASS*(obj: pointer): PTextTagTableClass = 
+  result = cast[PTextTagTableClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_TEXT_TAG_TABLE()))
 
-proc GTK_TYPE_TEXT_MARK*(): GType =
-  result = gtk_text_mark_get_type()
+proc TYPE_TEXT_MARK*(): GType = 
+  result = text_mark_get_type()
 
-proc GTK_TEXT_MARK*(anObject: pointer): PGtkTextMark =
-  result = cast[PGtkTextMark](G_TYPE_CHECK_INSTANCE_CAST(anObject, GTK_TYPE_TEXT_MARK()))
+proc TEXT_MARK*(anObject: pointer): PTextMark = 
+  result = cast[PTextMark](G_TYPE_CHECK_INSTANCE_CAST(anObject, TYPE_TEXT_MARK()))
 
-proc GTK_TEXT_MARK_CLASS*(klass: pointer): PGtkTextMarkClass =
-  result = cast[PGtkTextMarkClass](G_TYPE_CHECK_CLASS_CAST(klass, GTK_TYPE_TEXT_MARK()))
+proc TEXT_MARK_CLASS*(klass: pointer): PTextMarkClass = 
+  result = cast[PTextMarkClass](G_TYPE_CHECK_CLASS_CAST(klass, TYPE_TEXT_MARK()))
 
-proc GTK_IS_TEXT_MARK*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_TEXT_MARK())
+proc IS_TEXT_MARK*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_TEXT_MARK())
 
-proc GTK_IS_TEXT_MARK_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_MARK())
+proc IS_TEXT_MARK_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_TEXT_MARK())
 
-proc GTK_TEXT_MARK_GET_CLASS*(obj: pointer): PGtkTextMarkClass =
-  result = cast[PGtkTextMarkClass](G_TYPE_INSTANCE_GET_CLASS(obj, GTK_TYPE_TEXT_MARK()))
+proc TEXT_MARK_GET_CLASS*(obj: pointer): PTextMarkClass = 
+  result = cast[PTextMarkClass](G_TYPE_INSTANCE_GET_CLASS(obj, TYPE_TEXT_MARK()))
 
-proc visible*(a: var TGtkTextMarkBody): guint =
+proc visible*(a: var TTextMarkBody): guint = 
   result = (a.flag0 and bm_TGtkTextMarkBody_visible) shr
       bp_TGtkTextMarkBody_visible
 
-proc set_visible*(a: var TGtkTextMarkBody, `visible`: guint) =
+proc set_visible*(a: var TTextMarkBody, `visible`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`visible` shl bp_TGtkTextMarkBody_visible) and
       bm_TGtkTextMarkBody_visible)
 
-proc not_deleteable*(a: var TGtkTextMarkBody): guint =
+proc not_deleteable*(a: var TTextMarkBody): guint = 
   result = (a.flag0 and bm_TGtkTextMarkBody_not_deleteable) shr
       bp_TGtkTextMarkBody_not_deleteable
 
-proc set_not_deleteable*(a: var TGtkTextMarkBody, `not_deleteable`: guint) =
+proc set_not_deleteable*(a: var TTextMarkBody, `not_deleteable`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`not_deleteable` shl bp_TGtkTextMarkBody_not_deleteable) and
       bm_TGtkTextMarkBody_not_deleteable)
 
-proc GTK_TYPE_TEXT_CHILD_ANCHOR*(): GType =
-  result = gtk_text_child_anchor_get_type()
+proc TYPE_TEXT_CHILD_ANCHOR*(): GType = 
+  result = text_child_anchor_get_type()
 
-proc GTK_TEXT_CHILD_ANCHOR*(anObject: pointer): PGtkTextChildAnchor =
-  result = cast[PGtkTextChildAnchor](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      GTK_TYPE_TEXT_CHILD_ANCHOR()))
+proc TEXT_CHILD_ANCHOR*(anObject: pointer): PTextChildAnchor = 
+  result = cast[PTextChildAnchor](G_TYPE_CHECK_INSTANCE_CAST(anObject, 
+      TYPE_TEXT_CHILD_ANCHOR()))
 
-proc GTK_TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): PGtkTextChildAnchorClass =
-  result = cast[PGtkTextChildAnchorClass](G_TYPE_CHECK_CLASS_CAST(klass, GTK_TYPE_TEXT_CHILD_ANCHOR()))
+proc TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): PTextChildAnchorClass = 
+  result = cast[PTextChildAnchorClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_TEXT_CHILD_ANCHOR()))
 
-proc GTK_IS_TEXT_CHILD_ANCHOR*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, GTK_TYPE_TEXT_CHILD_ANCHOR())
+proc IS_TEXT_CHILD_ANCHOR*(anObject: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, TYPE_TEXT_CHILD_ANCHOR())
 
-proc GTK_IS_TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_CHILD_ANCHOR())
+proc IS_TEXT_CHILD_ANCHOR_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_TEXT_CHILD_ANCHOR())
 
-proc GTK_TEXT_CHILD_ANCHOR_GET_CLASS*(obj: pointer): PGtkTextChildAnchorClass =
-  result = cast[PGtkTextChildAnchorClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GTK_TYPE_TEXT_CHILD_ANCHOR()))
+proc TEXT_CHILD_ANCHOR_GET_CLASS*(obj: pointer): PTextChildAnchorClass = 
+  result = cast[PTextChildAnchorClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_TEXT_CHILD_ANCHOR()))
 
-proc width*(a: PGtkTextLineData): gint =
-  result = a . flag0 and bm_TGtkTextLineData_width
+proc width*(a: PTextLineData): gint = 
+  result = a.flag0 and bm_TGtkTextLineData_width
 
-proc set_width*(a: PGtkTextLineData, NewWidth: gint) =
-  a . flag0 = (bm_TGtkTextLineData_width and NewWidth) or a . flag0
+proc set_width*(a: PTextLineData, NewWidth: gint) = 
+  a.flag0 = (bm_TGtkTextLineData_width and NewWidth) or a.flag0
 
-proc valid*(a: PGtkTextLineData): gint =
-  result = (a . flag0 and bm_TGtkTextLineData_valid) shr
+proc valid*(a: PTextLineData): gint = 
+  result = (a.flag0 and bm_TGtkTextLineData_valid) shr
       bp_TGtkTextLineData_valid
 
-proc set_valid*(a: PGtkTextLineData, `valid`: gint) =
-  a . flag0 = a .
-      flag0 or
+proc set_valid*(a: PTextLineData, `valid`: gint) = 
+  a.flag0 = a.flag0 or
       ((`valid` shl bp_TGtkTextLineData_valid) and bm_TGtkTextLineData_valid)
 
-proc GTK_TYPE_TEXT_BUFFER*(): GType =
-  result = gtk_text_buffer_get_type()
+proc TYPE_TEXT_BUFFER*(): GType = 
+  result = text_buffer_get_type()
 
-proc GTK_TEXT_BUFFER*(obj: pointer): PGtkTextBuffer =
-  result = cast[PGtkTextBuffer](G_TYPE_CHECK_INSTANCE_CAST(obj, GTK_TYPE_TEXT_BUFFER()))
+proc TEXT_BUFFER*(obj: pointer): PTextBuffer = 
+  result = cast[PTextBuffer](G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_TEXT_BUFFER()))
 
-proc GTK_TEXT_BUFFER_CLASS*(klass: pointer): PGtkTextBufferClass =
-  result = cast[PGtkTextBufferClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TEXT_BUFFER()))
+proc TEXT_BUFFER_CLASS*(klass: pointer): PTextBufferClass = 
+  result = cast[PTextBufferClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_TEXT_BUFFER()))
 
-proc GTK_IS_TEXT_BUFFER*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TEXT_BUFFER())
+proc IS_TEXT_BUFFER*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TEXT_BUFFER())
 
-proc GTK_IS_TEXT_BUFFER_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_BUFFER())
+proc IS_TEXT_BUFFER_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_TEXT_BUFFER())
 
-proc GTK_TEXT_BUFFER_GET_CLASS*(obj: pointer): PGtkTextBufferClass =
-  result = cast[PGtkTextBufferClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GTK_TYPE_TEXT_BUFFER()))
+proc TEXT_BUFFER_GET_CLASS*(obj: pointer): PTextBufferClass = 
+  result = cast[PTextBufferClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_TEXT_BUFFER()))
 
-proc modified*(a: var TGtkTextBuffer): guint =
-  result = (a.GtkTextBufferflag0 and bm_TGtkTextBuffer_modified) shr
+proc modified*(a: var TTextBuffer): guint = 
+  result = (a.TextBufferflag0 and bm_TGtkTextBuffer_modified) shr
       bp_TGtkTextBuffer_modified
 
-proc set_modified*(a: var TGtkTextBuffer, `modified`: guint) =
-  a.GtkTextBufferflag0 = a.GtkTextBufferflag0 or
+proc set_modified*(a: var TTextBuffer, `modified`: guint) = 
+  a.TextBufferflag0 = a.TextBufferflag0 or
       (int16(`modified` shl bp_TGtkTextBuffer_modified) and
       bm_TGtkTextBuffer_modified)
 
-proc GTK_TYPE_TEXT_LAYOUT*(): GType =
-  result = gtk_text_layout_get_type()
+proc TYPE_TEXT_LAYOUT*(): GType = 
+  result = text_layout_get_type()
 
-proc GTK_TEXT_LAYOUT*(obj: pointer): PGtkTextLayout =
-  result = cast[PGtkTextLayout](G_TYPE_CHECK_INSTANCE_CAST(obj, GTK_TYPE_TEXT_LAYOUT()))
+proc TEXT_LAYOUT*(obj: pointer): PTextLayout = 
+  result = cast[PTextLayout](G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_TEXT_LAYOUT()))
 
-proc GTK_TEXT_LAYOUT_CLASS*(klass: pointer): PGtkTextLayoutClass =
-  result = cast[PGtkTextLayoutClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TEXT_LAYOUT()))
+proc TEXT_LAYOUT_CLASS*(klass: pointer): PTextLayoutClass = 
+  result = cast[PTextLayoutClass](G_TYPE_CHECK_CLASS_CAST(klass, 
+      TYPE_TEXT_LAYOUT()))
 
-proc GTK_IS_TEXT_LAYOUT*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TEXT_LAYOUT())
+proc IS_TEXT_LAYOUT*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TEXT_LAYOUT())
 
-proc GTK_IS_TEXT_LAYOUT_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_LAYOUT())
+proc IS_TEXT_LAYOUT_CLASS*(klass: pointer): bool = 
+  result = G_TYPE_CHECK_CLASS_TYPE(klass, TYPE_TEXT_LAYOUT())
 
-proc GTK_TEXT_LAYOUT_GET_CLASS*(obj: pointer): PGtkTextLayoutClass =
-  result = cast[PGtkTextLayoutClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      GTK_TYPE_TEXT_LAYOUT()))
+proc TEXT_LAYOUT_GET_CLASS*(obj: pointer): PTextLayoutClass = 
+  result = cast[PTextLayoutClass](G_TYPE_INSTANCE_GET_CLASS(obj, 
+      TYPE_TEXT_LAYOUT()))
 
-proc cursor_visible*(a: var TGtkTextLayout): guint =
-  result = (a.GtkTextLayoutflag0 and bm_TGtkTextLayout_cursor_visible) shr
+proc cursor_visible*(a: var TTextLayout): guint = 
+  result = (a.TextLayoutflag0 and bm_TGtkTextLayout_cursor_visible) shr
       bp_TGtkTextLayout_cursor_visible
 
-proc set_cursor_visible*(a: var TGtkTextLayout, `cursor_visible`: guint) =
-  a.GtkTextLayoutflag0 = a.GtkTextLayoutflag0 or
+proc set_cursor_visible*(a: var TTextLayout, `cursor_visible`: guint) = 
+  a.TextLayoutflag0 = a.TextLayoutflag0 or
       (int16(`cursor_visible` shl bp_TGtkTextLayout_cursor_visible) and
       bm_TGtkTextLayout_cursor_visible)
 
-proc cursor_direction*(a: var TGtkTextLayout): gint =
-  result = (a.GtkTextLayoutflag0 and bm_TGtkTextLayout_cursor_direction) shr
+proc cursor_direction*(a: var TTextLayout): gint = 
+  result = (a.TextLayoutflag0 and bm_TGtkTextLayout_cursor_direction) shr
       bp_TGtkTextLayout_cursor_direction
 
-proc set_cursor_direction*(a: var TGtkTextLayout, `cursor_direction`: gint) =
-  a.GtkTextLayoutflag0 = a.GtkTextLayoutflag0 or
+proc set_cursor_direction*(a: var TTextLayout, `cursor_direction`: gint) = 
+  a.TextLayoutflag0 = a.TextLayoutflag0 or
       (int16(`cursor_direction` shl bp_TGtkTextLayout_cursor_direction) and
       bm_TGtkTextLayout_cursor_direction)
 
-proc is_strong*(a: var TGtkTextCursorDisplay): guint =
+proc is_strong*(a: var TTextCursorDisplay): guint = 
   result = (a.flag0 and bm_TGtkTextCursorDisplay_is_strong) shr
       bp_TGtkTextCursorDisplay_is_strong
 
-proc set_is_strong*(a: var TGtkTextCursorDisplay, `is_strong`: guint) =
+proc set_is_strong*(a: var TTextCursorDisplay, `is_strong`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`is_strong` shl bp_TGtkTextCursorDisplay_is_strong) and
       bm_TGtkTextCursorDisplay_is_strong)
 
-proc is_weak*(a: var TGtkTextCursorDisplay): guint =
+proc is_weak*(a: var TTextCursorDisplay): guint = 
   result = (a.flag0 and bm_TGtkTextCursorDisplay_is_weak) shr
       bp_TGtkTextCursorDisplay_is_weak
 
-proc set_is_weak*(a: var TGtkTextCursorDisplay, `is_weak`: guint) =
+proc set_is_weak*(a: var TTextCursorDisplay, `is_weak`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`is_weak` shl bp_TGtkTextCursorDisplay_is_weak) and
       bm_TGtkTextCursorDisplay_is_weak)
 
-proc GTK_TYPE_TEXT_VIEW*(): GType =
-  result = gtk_text_view_get_type()
+proc TYPE_TEXT_VIEW*(): GType = 
+  result = text_view_get_type()
 
-proc GTK_TEXT_VIEW*(obj: pointer): PGtkTextView =
-  result = cast[PGtkTextView](GTK_CHECK_CAST(obj, GTK_TYPE_TEXT_VIEW()))
+proc TEXT_VIEW*(obj: pointer): PTextView = 
+  result = cast[PTextView](CHECK_CAST(obj, TYPE_TEXT_VIEW()))
 
-proc GTK_TEXT_VIEW_CLASS*(klass: pointer): PGtkTextViewClass =
-  result = cast[PGtkTextViewClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TEXT_VIEW()))
+proc TEXT_VIEW_CLASS*(klass: pointer): PTextViewClass = 
+  result = cast[PTextViewClass](CHECK_CLASS_CAST(klass, TYPE_TEXT_VIEW()))
 
-proc GTK_IS_TEXT_VIEW*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TEXT_VIEW())
+proc IS_TEXT_VIEW*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TEXT_VIEW())
 
-proc GTK_IS_TEXT_VIEW_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TEXT_VIEW())
+proc IS_TEXT_VIEW_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TEXT_VIEW())
 
-proc GTK_TEXT_VIEW_GET_CLASS*(obj: pointer): PGtkTextViewClass =
-  result = cast[PGtkTextViewClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TEXT_VIEW()))
+proc TEXT_VIEW_GET_CLASS*(obj: pointer): PTextViewClass = 
+  result = cast[PTextViewClass](CHECK_GET_CLASS(obj, TYPE_TEXT_VIEW()))
 
-proc editable*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_editable) shr
+proc editable*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_editable) shr
       bp_TGtkTextView_editable
 
-proc set_editable*(a: var TGtkTextView, `editable`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
-      (int16(`editable` shl bp_TGtkTextView_editable) and bm_TGtkTextView_editable)
+proc set_editable*(a: var TTextView, `editable`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
+      (int16(`editable` shl bp_TGtkTextView_editable) and
+      bm_TGtkTextView_editable)
 
-proc overwrite_mode*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_overwrite_mode) shr
+proc overwrite_mode*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_overwrite_mode) shr
       bp_TGtkTextView_overwrite_mode
 
-proc set_overwrite_mode*(a: var TGtkTextView, `overwrite_mode`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
+proc set_overwrite_mode*(a: var TTextView, `overwrite_mode`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
       (int16(`overwrite_mode` shl bp_TGtkTextView_overwrite_mode) and
       bm_TGtkTextView_overwrite_mode)
 
-proc cursor_visible*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_cursor_visible) shr
+proc cursor_visible*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_cursor_visible) shr
       bp_TGtkTextView_cursor_visible
 
-proc set_cursor_visible*(a: var TGtkTextView, `cursor_visible`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
+proc set_cursor_visible*(a: var TTextView, `cursor_visible`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
       (int16(`cursor_visible` shl bp_TGtkTextView_cursor_visible) and
       bm_TGtkTextView_cursor_visible)
 
-proc need_im_reset*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_need_im_reset) shr
+proc need_im_reset*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_need_im_reset) shr
       bp_TGtkTextView_need_im_reset
 
-proc set_need_im_reset*(a: var TGtkTextView, `need_im_reset`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
+proc set_need_im_reset*(a: var TTextView, `need_im_reset`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
       (int16(`need_im_reset` shl bp_TGtkTextView_need_im_reset) and
       bm_TGtkTextView_need_im_reset)
 
-proc just_selected_element*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_just_selected_element) shr
+proc just_selected_element*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_just_selected_element) shr
       bp_TGtkTextView_just_selected_element
 
-proc set_just_selected_element*(a: var TGtkTextView,
-                                `just_selected_element`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
-      (int16(`just_selected_element` shl bp_TGtkTextView_just_selected_element) and
+proc set_just_selected_element*(a: var TTextView, `just_selected_element`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
+      (int16(`just_selected_element` shl
+      bp_TGtkTextView_just_selected_element) and
       bm_TGtkTextView_just_selected_element)
 
-proc disable_scroll_on_focus*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_disable_scroll_on_focus) shr
+proc disable_scroll_on_focus*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_disable_scroll_on_focus) shr
       bp_TGtkTextView_disable_scroll_on_focus
 
-proc set_disable_scroll_on_focus*(a: var TGtkTextView,
-                                  `disable_scroll_on_focus`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
-      (int16(`disable_scroll_on_focus` shl bp_TGtkTextView_disable_scroll_on_focus) and
+proc set_disable_scroll_on_focus*(a: var TTextView, 
+                                  `disable_scroll_on_focus`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
+      (int16(`disable_scroll_on_focus` shl
+      bp_TGtkTextView_disable_scroll_on_focus) and
       bm_TGtkTextView_disable_scroll_on_focus)
 
-proc onscreen_validated*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_onscreen_validated) shr
+proc onscreen_validated*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_onscreen_validated) shr
       bp_TGtkTextView_onscreen_validated
 
-proc set_onscreen_validated*(a: var TGtkTextView, `onscreen_validated`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
+proc set_onscreen_validated*(a: var TTextView, `onscreen_validated`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
       (int16(`onscreen_validated` shl bp_TGtkTextView_onscreen_validated) and
       bm_TGtkTextView_onscreen_validated)
 
-proc mouse_cursor_obscured*(a: var TGtkTextView): guint =
-  result = (a.GtkTextViewflag0 and bm_TGtkTextView_mouse_cursor_obscured) shr
+proc mouse_cursor_obscured*(a: var TTextView): guint = 
+  result = (a.TextViewflag0 and bm_TGtkTextView_mouse_cursor_obscured) shr
       bp_TGtkTextView_mouse_cursor_obscured
 
-proc set_mouse_cursor_obscured*(a: var TGtkTextView,
-                                `mouse_cursor_obscured`: guint) =
-  a.GtkTextViewflag0 = a.GtkTextViewflag0 or
-      (int16(`mouse_cursor_obscured` shl bp_TGtkTextView_mouse_cursor_obscured) and
+proc set_mouse_cursor_obscured*(a: var TTextView, `mouse_cursor_obscured`: guint) = 
+  a.TextViewflag0 = a.TextViewflag0 or
+      (int16(`mouse_cursor_obscured` shl
+      bp_TGtkTextView_mouse_cursor_obscured) and
       bm_TGtkTextView_mouse_cursor_obscured)
 
-proc GTK_TYPE_TIPS_QUERY*(): GType =
-  result = gtk_tips_query_get_type()
+proc TYPE_TIPS_QUERY*(): GType = 
+  result = tips_query_get_type()
 
-proc GTK_TIPS_QUERY*(obj: pointer): PGtkTipsQuery =
-  result = cast[PGtkTipsQuery](GTK_CHECK_CAST(obj, GTK_TYPE_TIPS_QUERY()))
+proc TIPS_QUERY*(obj: pointer): PTipsQuery = 
+  result = cast[PTipsQuery](CHECK_CAST(obj, TYPE_TIPS_QUERY()))
 
-proc GTK_TIPS_QUERY_CLASS*(klass: pointer): PGtkTipsQueryClass =
-  result = cast[PGtkTipsQueryClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TIPS_QUERY()))
+proc TIPS_QUERY_CLASS*(klass: pointer): PTipsQueryClass = 
+  result = cast[PTipsQueryClass](CHECK_CLASS_CAST(klass, TYPE_TIPS_QUERY()))
 
-proc GTK_IS_TIPS_QUERY*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TIPS_QUERY())
+proc IS_TIPS_QUERY*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TIPS_QUERY())
 
-proc GTK_IS_TIPS_QUERY_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TIPS_QUERY())
+proc IS_TIPS_QUERY_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TIPS_QUERY())
 
-proc GTK_TIPS_QUERY_GET_CLASS*(obj: pointer): PGtkTipsQueryClass =
-  result = cast[PGtkTipsQueryClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TIPS_QUERY()))
+proc TIPS_QUERY_GET_CLASS*(obj: pointer): PTipsQueryClass = 
+  result = cast[PTipsQueryClass](CHECK_GET_CLASS(obj, TYPE_TIPS_QUERY()))
 
-proc emit_always*(a: var TGtkTipsQuery): guint =
-  result = (a.GtkTipsQueryflag0 and bm_TGtkTipsQuery_emit_always) shr
+proc emit_always*(a: var TTipsQuery): guint = 
+  result = (a.TipsQueryflag0 and bm_TGtkTipsQuery_emit_always) shr
       bp_TGtkTipsQuery_emit_always
 
-proc set_emit_always*(a: var TGtkTipsQuery, `emit_always`: guint) =
-  a.GtkTipsQueryflag0 = a.GtkTipsQueryflag0 or
+proc set_emit_always*(a: var TTipsQuery, `emit_always`: guint) = 
+  a.TipsQueryflag0 = a.TipsQueryflag0 or
       (int16(`emit_always` shl bp_TGtkTipsQuery_emit_always) and
       bm_TGtkTipsQuery_emit_always)
 
-proc in_query*(a: var TGtkTipsQuery): guint =
-  result = (a.GtkTipsQueryflag0 and bm_TGtkTipsQuery_in_query) shr
+proc in_query*(a: var TTipsQuery): guint = 
+  result = (a.TipsQueryflag0 and bm_TGtkTipsQuery_in_query) shr
       bp_TGtkTipsQuery_in_query
 
-proc set_in_query*(a: var TGtkTipsQuery, `in_query`: guint) =
-  a.GtkTipsQueryflag0 = a.GtkTipsQueryflag0 or
+proc set_in_query*(a: var TTipsQuery, `in_query`: guint) = 
+  a.TipsQueryflag0 = a.TipsQueryflag0 or
       (int16(`in_query` shl bp_TGtkTipsQuery_in_query) and
       bm_TGtkTipsQuery_in_query)
 
-proc GTK_TYPE_TOOLTIPS*(): GType =
-  result = gtk_tooltips_get_type()
+proc TYPE_TOOLTIPS*(): GType = 
+  result = tooltips_get_type()
 
-proc GTK_TOOLTIPS*(obj: pointer): PGtkTooltips =
-  result = cast[PGtkTooltips](GTK_CHECK_CAST(obj, GTK_TYPE_TOOLTIPS()))
+proc TOOLTIPS*(obj: pointer): PTooltips = 
+  result = cast[PTooltips](CHECK_CAST(obj, TYPE_TOOLTIPS()))
 
-proc GTK_TOOLTIPS_CLASS*(klass: pointer): PGtkTooltipsClass =
-  result = cast[PGtkTooltipsClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TOOLTIPS()))
+proc TOOLTIPS_CLASS*(klass: pointer): PTooltipsClass = 
+  result = cast[PTooltipsClass](CHECK_CLASS_CAST(klass, TYPE_TOOLTIPS()))
 
-proc GTK_IS_TOOLTIPS*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TOOLTIPS())
+proc IS_TOOLTIPS*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TOOLTIPS())
 
-proc GTK_IS_TOOLTIPS_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TOOLTIPS())
+proc IS_TOOLTIPS_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TOOLTIPS())
 
-proc GTK_TOOLTIPS_GET_CLASS*(obj: pointer): PGtkTooltipsClass =
-  result = cast[PGtkTooltipsClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TOOLTIPS()))
+proc TOOLTIPS_GET_CLASS*(obj: pointer): PTooltipsClass = 
+  result = cast[PTooltipsClass](CHECK_GET_CLASS(obj, TYPE_TOOLTIPS()))
 
-proc delay*(a: var TGtkTooltips): guint =
-  result = (a.GtkTooltipsflag0 and bm_TGtkTooltips_delay) shr bp_TGtkTooltips_delay
+proc delay*(a: var TTooltips): guint = 
+  result = (a.Tooltipsflag0 and bm_TGtkTooltips_delay) shr
+      bp_TGtkTooltips_delay
 
-proc set_delay*(a: var TGtkTooltips, `delay`: guint) =
-  a.GtkTooltipsflag0 = a.GtkTooltipsflag0 or
+proc set_delay*(a: var TTooltips, `delay`: guint) = 
+  a.Tooltipsflag0 = a.Tooltipsflag0 or
       ((`delay` shl bp_TGtkTooltips_delay) and bm_TGtkTooltips_delay)
 
-proc enabled*(a: var TGtkTooltips): guint =
-  result = (a.GtkTooltipsflag0 and bm_TGtkTooltips_enabled) shr bp_TGtkTooltips_enabled
+proc enabled*(a: var TTooltips): guint = 
+  result = (a.Tooltipsflag0 and bm_TGtkTooltips_enabled) shr
+      bp_TGtkTooltips_enabled
 
-proc set_enabled*(a: var TGtkTooltips, `enabled`: guint) =
-  a.GtkTooltipsflag0 = a.GtkTooltipsflag0 or
+proc set_enabled*(a: var TTooltips, `enabled`: guint) = 
+  a.Tooltipsflag0 = a.Tooltipsflag0 or
       ((`enabled` shl bp_TGtkTooltips_enabled) and bm_TGtkTooltips_enabled)
 
-proc have_grab*(a: var TGtkTooltips): guint =
-  result = (a.GtkTooltipsflag0 and bm_TGtkTooltips_have_grab) shr
+proc have_grab*(a: var TTooltips): guint = 
+  result = (a.Tooltipsflag0 and bm_TGtkTooltips_have_grab) shr
       bp_TGtkTooltips_have_grab
 
-proc set_have_grab*(a: var TGtkTooltips, `have_grab`: guint) =
-  a.GtkTooltipsflag0 = a.GtkTooltipsflag0 or
+proc set_have_grab*(a: var TTooltips, `have_grab`: guint) = 
+  a.Tooltipsflag0 = a.Tooltipsflag0 or
       ((`have_grab` shl bp_TGtkTooltips_have_grab) and
       bm_TGtkTooltips_have_grab)
 
-proc use_sticky_delay*(a: var TGtkTooltips): guint =
-  result = (a.GtkTooltipsflag0 and bm_TGtkTooltips_use_sticky_delay) shr
+proc use_sticky_delay*(a: var TTooltips): guint = 
+  result = (a.Tooltipsflag0 and bm_TGtkTooltips_use_sticky_delay) shr
       bp_TGtkTooltips_use_sticky_delay
 
-proc set_use_sticky_delay*(a: var TGtkTooltips, `use_sticky_delay`: guint) =
-  a.GtkTooltipsflag0 = a.GtkTooltipsflag0 or
+proc set_use_sticky_delay*(a: var TTooltips, `use_sticky_delay`: guint) = 
+  a.Tooltipsflag0 = a.Tooltipsflag0 or
       ((`use_sticky_delay` shl bp_TGtkTooltips_use_sticky_delay) and
       bm_TGtkTooltips_use_sticky_delay)
 
-proc GTK_TYPE_TOOLBAR*(): GType =
-  result = gtk_toolbar_get_type()
+proc TYPE_TOOLBAR*(): GType = 
+  result = toolbar_get_type()
 
-proc GTK_TOOLBAR*(obj: pointer): PGtkToolbar =
-  result = cast[PGtkToolbar](GTK_CHECK_CAST(obj, GTK_TYPE_TOOLBAR()))
+proc TOOLBAR*(obj: pointer): PToolbar = 
+  result = cast[PToolbar](CHECK_CAST(obj, TYPE_TOOLBAR()))
 
-proc GTK_TOOLBAR_CLASS*(klass: pointer): PGtkToolbarClass =
-  result = cast[PGtkToolbarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TOOLBAR()))
+proc TOOLBAR_CLASS*(klass: pointer): PToolbarClass = 
+  result = cast[PToolbarClass](CHECK_CLASS_CAST(klass, TYPE_TOOLBAR()))
 
-proc GTK_IS_TOOLBAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TOOLBAR())
+proc IS_TOOLBAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TOOLBAR())
 
-proc GTK_IS_TOOLBAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TOOLBAR())
+proc IS_TOOLBAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TOOLBAR())
 
-proc GTK_TOOLBAR_GET_CLASS*(obj: pointer): PGtkToolbarClass =
-  result = cast[PGtkToolbarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TOOLBAR()))
+proc TOOLBAR_GET_CLASS*(obj: pointer): PToolbarClass = 
+  result = cast[PToolbarClass](CHECK_GET_CLASS(obj, TYPE_TOOLBAR()))
 
-proc style_set*(a: var TGtkToolbar): guint =
-  result = (a.GtkToolbarflag0 and bm_TGtkToolbar_style_set) shr
+proc style_set*(a: var TToolbar): guint = 
+  result = (a.Toolbarflag0 and bm_TGtkToolbar_style_set) shr
       bp_TGtkToolbar_style_set
 
-proc set_style_set*(a: var TGtkToolbar, `style_set`: guint) =
-  a.GtkToolbarflag0 = a.GtkToolbarflag0 or
+proc set_style_set*(a: var TToolbar, `style_set`: guint) = 
+  a.Toolbarflag0 = a.Toolbarflag0 or
       (int16(`style_set` shl bp_TGtkToolbar_style_set) and
       bm_TGtkToolbar_style_set)
 
-proc icon_size_set*(a: var TGtkToolbar): guint =
-  result = (a.GtkToolbarflag0 and bm_TGtkToolbar_icon_size_set) shr
+proc icon_size_set*(a: var TToolbar): guint = 
+  result = (a.Toolbarflag0 and bm_TGtkToolbar_icon_size_set) shr
       bp_TGtkToolbar_icon_size_set
 
-proc set_icon_size_set*(a: var TGtkToolbar, `icon_size_set`: guint) =
-  a.GtkToolbarflag0 = a.GtkToolbarflag0 or
+proc set_icon_size_set*(a: var TToolbar, `icon_size_set`: guint) = 
+  a.Toolbarflag0 = a.Toolbarflag0 or
       (int16(`icon_size_set` shl bp_TGtkToolbar_icon_size_set) and
       bm_TGtkToolbar_icon_size_set)
 
-proc GTK_TYPE_TREE*(): GType =
-  result = gtk_tree_get_type()
+proc TYPE_TREE*(): GType = 
+  result = tree_get_type()
 
-proc GTK_TREE*(obj: pointer): PGtkTree =
-  result = cast[PGtkTree](GTK_CHECK_CAST(obj, GTK_TYPE_TREE()))
+proc TREE*(obj: pointer): PTree = 
+  result = cast[PTree](CHECK_CAST(obj, TYPE_TREE()))
 
-proc GTK_TREE_CLASS*(klass: pointer): PGtkTreeClass =
-  result = cast[PGtkTreeClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TREE()))
+proc TREE_CLASS*(klass: pointer): PTreeClass = 
+  result = cast[PTreeClass](CHECK_CLASS_CAST(klass, TYPE_TREE()))
 
-proc GTK_IS_TREE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE())
+proc IS_TREE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE())
 
-proc GTK_IS_TREE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE())
+proc IS_TREE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE())
 
-proc GTK_TREE_GET_CLASS*(obj: pointer): PGtkTreeClass =
-  result = cast[PGtkTreeClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TREE()))
+proc TREE_GET_CLASS*(obj: pointer): PTreeClass = 
+  result = cast[PTreeClass](CHECK_GET_CLASS(obj, TYPE_TREE()))
 
-proc GTK_IS_ROOT_TREE*(obj: pointer): bool =
-  result = (cast[PGtkObject]((GTK_TREE(obj)) . root_tree)) ==
-     (cast[PGtkObject](obj))
+proc IS_ROOT_TREE*(obj: pointer): bool = 
+  result = (cast[PObject]((TREE(obj)).root_tree)) == (cast[PObject](obj))
 
-proc GTK_TREE_ROOT_TREE*(obj: pointer): PGtkTree =
-  result = GTK_TREE(obj).root_tree
+proc TREE_ROOT_TREE*(obj: pointer): PTree = 
+  result = TREE(obj).root_tree
 
-proc GTK_TREE_SELECTION_OLD*(obj: pointer): PGList =
-  result = (GTK_TREE_ROOT_TREE(obj)).selection
+proc TREE_SELECTION_OLD*(obj: pointer): PGList = 
+  result = (TREE_ROOT_TREE(obj)).selection
 
-proc selection_mode*(a: var TGtkTree): guint =
-  result = (a.GtkTreeflag0 and bm_TGtkTree_selection_mode) shr
+proc selection_mode*(a: var TTree): guint = 
+  result = (a.Treeflag0 and bm_TGtkTree_selection_mode) shr
       bp_TGtkTree_selection_mode
 
-proc set_selection_mode*(a: var TGtkTree, `selection_mode`: guint) =
-  a.GtkTreeflag0 = a.GtkTreeflag0 or
+proc set_selection_mode*(a: var TTree, `selection_mode`: guint) = 
+  a.Treeflag0 = a.Treeflag0 or
       (int16(`selection_mode` shl bp_TGtkTree_selection_mode) and
       bm_TGtkTree_selection_mode)
 
-proc view_mode*(a: var TGtkTree): guint =
-  result = (a.GtkTreeflag0 and bm_TGtkTree_view_mode) shr bp_TGtkTree_view_mode
+proc view_mode*(a: var TTree): guint = 
+  result = (a.Treeflag0 and bm_TGtkTree_view_mode) shr bp_TGtkTree_view_mode
 
-proc set_view_mode*(a: var TGtkTree, `view_mode`: guint) =
-  a.GtkTreeflag0 = a.GtkTreeflag0 or
+proc set_view_mode*(a: var TTree, `view_mode`: guint) = 
+  a.Treeflag0 = a.Treeflag0 or
       (int16(`view_mode` shl bp_TGtkTree_view_mode) and bm_TGtkTree_view_mode)
 
-proc view_line*(a: var TGtkTree): guint =
-  result = (a.GtkTreeflag0 and bm_TGtkTree_view_line) shr bp_TGtkTree_view_line
+proc view_line*(a: var TTree): guint = 
+  result = (a.Treeflag0 and bm_TGtkTree_view_line) shr bp_TGtkTree_view_line
 
-proc set_view_line*(a: var TGtkTree, `view_line`: guint) =
-  a.GtkTreeflag0 = a.GtkTreeflag0 or
+proc set_view_line*(a: var TTree, `view_line`: guint) = 
+  a.Treeflag0 = a.Treeflag0 or
       (int16(`view_line` shl bp_TGtkTree_view_line) and bm_TGtkTree_view_line)
 
-proc GTK_TYPE_TREE_DRAG_SOURCE*(): GType =
-  result = gtk_tree_drag_source_get_type()
+proc TYPE_TREE_DRAG_SOURCE*(): GType = 
+  result = tree_drag_source_get_type()
 
-proc GTK_TREE_DRAG_SOURCE*(obj: pointer): PGtkTreeDragSource =
-  result = cast[PGtkTreeDragSource](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      GTK_TYPE_TREE_DRAG_SOURCE()))
+proc TREE_DRAG_SOURCE*(obj: pointer): PTreeDragSource = 
+  result = cast[PTreeDragSource](G_TYPE_CHECK_INSTANCE_CAST(obj, 
+      TYPE_TREE_DRAG_SOURCE()))
 
-proc GTK_IS_TREE_DRAG_SOURCE*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TREE_DRAG_SOURCE())
+proc IS_TREE_DRAG_SOURCE*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TREE_DRAG_SOURCE())
 
-proc GTK_TREE_DRAG_SOURCE_GET_IFACE*(obj: pointer): PGtkTreeDragSourceIface =
-  result = cast[PGtkTreeDragSourceIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      GTK_TYPE_TREE_DRAG_SOURCE()))
+proc TREE_DRAG_SOURCE_GET_IFACE*(obj: pointer): PTreeDragSourceIface = 
+  result = cast[PTreeDragSourceIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, 
+      TYPE_TREE_DRAG_SOURCE()))
 
-proc GTK_TYPE_TREE_DRAG_DEST*(): GType =
-  result = gtk_tree_drag_dest_get_type()
+proc TYPE_TREE_DRAG_DEST*(): GType = 
+  result = tree_drag_dest_get_type()
 
-proc GTK_TREE_DRAG_DEST*(obj: pointer): PGtkTreeDragDest =
-  result = cast[PGtkTreeDragDest](G_TYPE_CHECK_INSTANCE_CAST(obj,
-      GTK_TYPE_TREE_DRAG_DEST()))
+proc TREE_DRAG_DEST*(obj: pointer): PTreeDragDest = 
+  result = cast[PTreeDragDest](G_TYPE_CHECK_INSTANCE_CAST(obj, 
+      TYPE_TREE_DRAG_DEST()))
 
-proc GTK_IS_TREE_DRAG_DEST*(obj: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_TREE_DRAG_DEST())
+proc IS_TREE_DRAG_DEST*(obj: pointer): bool = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_TREE_DRAG_DEST())
 
-proc GTK_TREE_DRAG_DEST_GET_IFACE*(obj: pointer): PGtkTreeDragDestIface =
-  result = cast[PGtkTreeDragDestIface](G_TYPE_INSTANCE_GET_INTERFACE(obj,
-      GTK_TYPE_TREE_DRAG_DEST()))
+proc TREE_DRAG_DEST_GET_IFACE*(obj: pointer): PTreeDragDestIface = 
+  result = cast[PTreeDragDestIface](G_TYPE_INSTANCE_GET_INTERFACE(obj, 
+      TYPE_TREE_DRAG_DEST()))
 
-proc GTK_TYPE_TREE_ITEM*(): GType =
-  result = gtk_tree_item_get_type()
+proc TYPE_TREE_ITEM*(): GType = 
+  result = tree_item_get_type()
 
-proc GTK_TREE_ITEM*(obj: pointer): PGtkTreeItem =
-  result = cast[PGtkTreeItem](GTK_CHECK_CAST(obj, GTK_TYPE_TREE_ITEM()))
+proc TREE_ITEM*(obj: pointer): PTreeItem = 
+  result = cast[PTreeItem](CHECK_CAST(obj, TYPE_TREE_ITEM()))
 
-proc GTK_TREE_ITEM_CLASS*(klass: pointer): PGtkTreeItemClass =
-  result = cast[PGtkTreeItemClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TREE_ITEM()))
+proc TREE_ITEM_CLASS*(klass: pointer): PTreeItemClass = 
+  result = cast[PTreeItemClass](CHECK_CLASS_CAST(klass, TYPE_TREE_ITEM()))
 
-proc GTK_IS_TREE_ITEM*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE_ITEM())
+proc IS_TREE_ITEM*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE_ITEM())
 
-proc GTK_IS_TREE_ITEM_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE_ITEM())
+proc IS_TREE_ITEM_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE_ITEM())
 
-proc GTK_TREE_ITEM_GET_CLASS*(obj: pointer): PGtkTreeItemClass =
-  result = cast[PGtkTreeItemClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TREE_ITEM()))
+proc TREE_ITEM_GET_CLASS*(obj: pointer): PTreeItemClass = 
+  result = cast[PTreeItemClass](CHECK_GET_CLASS(obj, TYPE_TREE_ITEM()))
 
-proc GTK_TREE_ITEM_SUBTREE*(obj: pointer): PGtkWidget =
-  result = (GTK_TREE_ITEM(obj)).subtree
+proc TREE_ITEM_SUBTREE*(obj: pointer): PWidget = 
+  result = (TREE_ITEM(obj)).subtree
 
-proc expanded*(a: var TGtkTreeItem): guint =
-  result = (a.GtkTreeItemflag0 and bm_TGtkTreeItem_expanded) shr
+proc expanded*(a: var TTreeItem): guint = 
+  result = (a.TreeItemflag0 and bm_TGtkTreeItem_expanded) shr
       bp_TGtkTreeItem_expanded
 
-proc set_expanded*(a: var TGtkTreeItem, `expanded`: guint) =
-  a.GtkTreeItemflag0 = a.GtkTreeItemflag0 or
-      (int16(`expanded` shl bp_TGtkTreeItem_expanded) and bm_TGtkTreeItem_expanded)
+proc set_expanded*(a: var TTreeItem, `expanded`: guint) = 
+  a.TreeItemflag0 = a.TreeItemflag0 or
+      (int16(`expanded` shl bp_TGtkTreeItem_expanded) and
+      bm_TGtkTreeItem_expanded)
 
-proc GTK_TYPE_TREE_SELECTION*(): GType =
-  result = gtk_tree_selection_get_type()
+proc TYPE_TREE_SELECTION*(): GType = 
+  result = tree_selection_get_type()
 
-proc GTK_TREE_SELECTION*(obj: pointer): PGtkTreeSelection =
-  result = cast[PGtkTreeSelection](GTK_CHECK_CAST(obj, GTK_TYPE_TREE_SELECTION()))
+proc TREE_SELECTION*(obj: pointer): PTreeSelection = 
+  result = cast[PTreeSelection](CHECK_CAST(obj, TYPE_TREE_SELECTION()))
 
-proc GTK_TREE_SELECTION_CLASS*(klass: pointer): PGtkTreeSelectionClass =
-  result = cast[PGtkTreeSelectionClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TREE_SELECTION()))
+proc TREE_SELECTION_CLASS*(klass: pointer): PTreeSelectionClass = 
+  result = cast[PTreeSelectionClass](CHECK_CLASS_CAST(klass, 
+      TYPE_TREE_SELECTION()))
 
-proc GTK_IS_TREE_SELECTION*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE_SELECTION())
+proc IS_TREE_SELECTION*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE_SELECTION())
 
-proc GTK_IS_TREE_SELECTION_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE_SELECTION())
+proc IS_TREE_SELECTION_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE_SELECTION())
 
-proc GTK_TREE_SELECTION_GET_CLASS*(obj: pointer): PGtkTreeSelectionClass =
-  result = cast[PGtkTreeSelectionClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_TREE_SELECTION()))
+proc TREE_SELECTION_GET_CLASS*(obj: pointer): PTreeSelectionClass = 
+  result = cast[PTreeSelectionClass](CHECK_GET_CLASS(obj, TYPE_TREE_SELECTION()))
 
-proc GTK_TYPE_TREE_STORE*(): GType =
-  result = gtk_tree_store_get_type()
+proc TYPE_TREE_STORE*(): GType = 
+  result = tree_store_get_type()
 
-proc GTK_TREE_STORE*(obj: pointer): PGtkTreeStore =
-  result = cast[PGtkTreeStore](GTK_CHECK_CAST(obj, GTK_TYPE_TREE_STORE()))
+proc TREE_STORE*(obj: pointer): PTreeStore = 
+  result = cast[PTreeStore](CHECK_CAST(obj, TYPE_TREE_STORE()))
 
-proc GTK_TREE_STORE_CLASS*(klass: pointer): PGtkTreeStoreClass =
-  result = cast[PGtkTreeStoreClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TREE_STORE()))
+proc TREE_STORE_CLASS*(klass: pointer): PTreeStoreClass = 
+  result = cast[PTreeStoreClass](CHECK_CLASS_CAST(klass, TYPE_TREE_STORE()))
 
-proc GTK_IS_TREE_STORE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE_STORE())
+proc IS_TREE_STORE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE_STORE())
 
-proc GTK_IS_TREE_STORE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE_STORE())
+proc IS_TREE_STORE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE_STORE())
 
-proc GTK_TREE_STORE_GET_CLASS*(obj: pointer): PGtkTreeStoreClass =
-  result = cast[PGtkTreeStoreClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TREE_STORE()))
+proc TREE_STORE_GET_CLASS*(obj: pointer): PTreeStoreClass = 
+  result = cast[PTreeStoreClass](CHECK_GET_CLASS(obj, TYPE_TREE_STORE()))
 
-proc columns_dirty*(a: var TGtkTreeStore): guint =
-  result = (a.GtkTreeStoreflag0 and bm_TGtkTreeStore_columns_dirty) shr
+proc columns_dirty*(a: var TTreeStore): guint = 
+  result = (a.TreeStoreflag0 and bm_TGtkTreeStore_columns_dirty) shr
       bp_TGtkTreeStore_columns_dirty
 
-proc set_columns_dirty*(a: var TGtkTreeStore, `columns_dirty`: guint) =
-  a.GtkTreeStoreflag0 = a.GtkTreeStoreflag0 or
+proc set_columns_dirty*(a: var TTreeStore, `columns_dirty`: guint) = 
+  a.TreeStoreflag0 = a.TreeStoreflag0 or
       (int16(`columns_dirty` shl bp_TGtkTreeStore_columns_dirty) and
       bm_TGtkTreeStore_columns_dirty)
 
-proc GTK_TYPE_TREE_VIEW_COLUMN*(): GType =
-  result = gtk_tree_view_column_get_type()
+proc TYPE_TREE_VIEW_COLUMN*(): GType = 
+  result = tree_view_column_get_type()
 
-proc GTK_TREE_VIEW_COLUMN*(obj: pointer): PGtkTreeViewColumn =
-  result = cast[PGtkTreeViewColumn](GTK_CHECK_CAST(obj, GTK_TYPE_TREE_VIEW_COLUMN()))
+proc TREE_VIEW_COLUMN*(obj: pointer): PTreeViewColumn = 
+  result = cast[PTreeViewColumn](CHECK_CAST(obj, TYPE_TREE_VIEW_COLUMN()))
 
-proc GTK_TREE_VIEW_COLUMN_CLASS*(klass: pointer): PGtkTreeViewColumnClass =
-  result = cast[PGtkTreeViewColumnClass](GTK_CHECK_CLASS_CAST(klass,
-      GTK_TYPE_TREE_VIEW_COLUMN()))
+proc TREE_VIEW_COLUMN_CLASS*(klass: pointer): PTreeViewColumnClass = 
+  result = cast[PTreeViewColumnClass](CHECK_CLASS_CAST(klass, 
+      TYPE_TREE_VIEW_COLUMN()))
 
-proc GTK_IS_TREE_VIEW_COLUMN*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE_VIEW_COLUMN())
+proc IS_TREE_VIEW_COLUMN*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE_VIEW_COLUMN())
 
-proc GTK_IS_TREE_VIEW_COLUMN_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE_VIEW_COLUMN())
+proc IS_TREE_VIEW_COLUMN_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE_VIEW_COLUMN())
 
-proc GTK_TREE_VIEW_COLUMN_GET_CLASS*(obj: pointer): PGtkTreeViewColumnClass =
-  result = cast[PGtkTreeViewColumnClass](GTK_CHECK_GET_CLASS(obj,
-      GTK_TYPE_TREE_VIEW_COLUMN()))
+proc TREE_VIEW_COLUMN_GET_CLASS*(obj: pointer): PTreeViewColumnClass = 
+  result = cast[PTreeViewColumnClass](CHECK_GET_CLASS(obj, 
+      TYPE_TREE_VIEW_COLUMN()))
 
-proc visible*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_visible) shr
+proc visible*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_visible) shr
       bp_TGtkTreeViewColumn_visible
 
-proc set_visible*(a: var TGtkTreeViewColumn, `visible`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_visible*(a: var TTreeViewColumn, `visible`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`visible` shl bp_TGtkTreeViewColumn_visible) and
       bm_TGtkTreeViewColumn_visible)
 
-proc resizable*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_resizable) shr
+proc resizable*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_resizable) shr
       bp_TGtkTreeViewColumn_resizable
 
-proc set_resizable*(a: var TGtkTreeViewColumn, `resizable`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_resizable*(a: var TTreeViewColumn, `resizable`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`resizable` shl bp_TGtkTreeViewColumn_resizable) and
       bm_TGtkTreeViewColumn_resizable)
 
-proc clickable*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_clickable) shr
+proc clickable*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_clickable) shr
       bp_TGtkTreeViewColumn_clickable
 
-proc set_clickable*(a: var TGtkTreeViewColumn, `clickable`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_clickable*(a: var TTreeViewColumn, `clickable`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`clickable` shl bp_TGtkTreeViewColumn_clickable) and
       bm_TGtkTreeViewColumn_clickable)
 
-proc dirty*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_dirty) shr
+proc dirty*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_dirty) shr
       bp_TGtkTreeViewColumn_dirty
 
-proc set_dirty*(a: var TGtkTreeViewColumn, `dirty`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_dirty*(a: var TTreeViewColumn, `dirty`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`dirty` shl bp_TGtkTreeViewColumn_dirty) and
       bm_TGtkTreeViewColumn_dirty)
 
-proc show_sort_indicator*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_show_sort_indicator) shr
+proc show_sort_indicator*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and
+      bm_TGtkTreeViewColumn_show_sort_indicator) shr
       bp_TGtkTreeViewColumn_show_sort_indicator
 
-proc set_show_sort_indicator*(a: var TGtkTreeViewColumn,
-                              `show_sort_indicator`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
-      (int16(`show_sort_indicator` shl bp_TGtkTreeViewColumn_show_sort_indicator) and
+proc set_show_sort_indicator*(a: var TTreeViewColumn, 
+                              `show_sort_indicator`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
+      (int16(`show_sort_indicator` shl
+      bp_TGtkTreeViewColumn_show_sort_indicator) and
       bm_TGtkTreeViewColumn_show_sort_indicator)
 
-proc maybe_reordered*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_maybe_reordered) shr
+proc maybe_reordered*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_maybe_reordered) shr
       bp_TGtkTreeViewColumn_maybe_reordered
 
-proc set_maybe_reordered*(a: var TGtkTreeViewColumn, `maybe_reordered`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_maybe_reordered*(a: var TTreeViewColumn, `maybe_reordered`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`maybe_reordered` shl bp_TGtkTreeViewColumn_maybe_reordered) and
       bm_TGtkTreeViewColumn_maybe_reordered)
 
-proc reorderable*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_reorderable) shr
+proc reorderable*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_reorderable) shr
       bp_TGtkTreeViewColumn_reorderable
 
-proc set_reorderable*(a: var TGtkTreeViewColumn, `reorderable`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_reorderable*(a: var TTreeViewColumn, `reorderable`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`reorderable` shl bp_TGtkTreeViewColumn_reorderable) and
       bm_TGtkTreeViewColumn_reorderable)
 
-proc use_resized_width*(a: var TGtkTreeViewColumn): guint =
-  result = (a.GtkTreeViewColumnflag0 and bm_TGtkTreeViewColumn_use_resized_width) shr
+proc use_resized_width*(a: var TTreeViewColumn): guint = 
+  result = (a.TreeViewColumnflag0 and bm_TGtkTreeViewColumn_use_resized_width) shr
       bp_TGtkTreeViewColumn_use_resized_width
 
-proc set_use_resized_width*(a: var TGtkTreeViewColumn,
-                            `use_resized_width`: guint) =
-  a.GtkTreeViewColumnflag0 = a.GtkTreeViewColumnflag0 or
+proc set_use_resized_width*(a: var TTreeViewColumn, `use_resized_width`: guint) = 
+  a.TreeViewColumnflag0 = a.TreeViewColumnflag0 or
       (int16(`use_resized_width` shl bp_TGtkTreeViewColumn_use_resized_width) and
       bm_TGtkTreeViewColumn_use_resized_width)
 
-proc flags*(a: PGtkRBNode): guint =
-  result = (a . flag0 and bm_TGtkRBNode_flags) shr bp_TGtkRBNode_flags
-
-proc set_flags*(a: PGtkRBNode, `flags`: guint) =
-  a . flag0 = a .
-      flag0 or (int16(`flags` shl bp_TGtkRBNode_flags) and bm_TGtkRBNode_flags)
-
-proc parity*(a: PGtkRBNode): guint =
-  result = (a . flag0 and bm_TGtkRBNode_parity) shr bp_TGtkRBNode_parity
+proc flags*(a: PRBNode): guint = 
+  result = (a.flag0 and bm_TGtkRBNode_flags) shr bp_TGtkRBNode_flags
 
-proc set_parity*(a: PGtkRBNode, `parity`: guint) =
-  a . flag0 = a .
-      flag0 or (int16(`parity` shl bp_TGtkRBNode_parity) and bm_TGtkRBNode_parity)
-
-proc GTK_RBNODE_GET_COLOR*(node: PGtkRBNode): guint =
-  if node == nil:
-    Result = GTK_RBNODE_BLACK
-  elif (int(flags(node)) and GTK_RBNODE_RED) == GTK_RBNODE_RED:
-    Result = GTK_RBNODE_RED
-  else:
-    Result = GTK_RBNODE_BLACK
+proc set_flags*(a: PRBNode, `flags`: guint) = 
+  a.flag0 = a.flag0 or
+      (int16(`flags` shl bp_TGtkRBNode_flags) and bm_TGtkRBNode_flags)
 
-proc GTK_RBNODE_SET_COLOR*(node: PGtkRBNode, color: guint) =
-  if node == nil:
-    return
-  if ((flags(node) and (color)) != color):
-    set_flags(node, flags(node) xor cint(GTK_RBNODE_RED or GTK_RBNODE_BLACK))
+proc parity*(a: PRBNode): guint = 
+  result = (a.flag0 and bm_TGtkRBNode_parity) shr bp_TGtkRBNode_parity
 
-proc GTK_RBNODE_GET_HEIGHT*(node: PGtkRBNode): gint =
+proc set_parity*(a: PRBNode, `parity`: guint) = 
+  a.flag0 = a.flag0 or
+      (int16(`parity` shl bp_TGtkRBNode_parity) and bm_TGtkRBNode_parity)
+
+proc GET_COLOR*(node: PRBNode): guint = 
+  if node == nil: 
+    Result = RBNODE_BLACK
+  elif (int(flags(node)) and RBNODE_RED) == RBNODE_RED: 
+    Result = RBNODE_RED
+  else: 
+    Result = RBNODE_BLACK
+
+proc SET_COLOR*(node: PRBNode, color: guint) = 
+  if node == nil: 
+    return 
+  if ((flags(node) and (color)) != color): 
+    set_flags(node, flags(node) xor cint(RBNODE_RED or RBNODE_BLACK))
+
+proc GET_HEIGHT*(node: PRBNode): gint = 
   var if_local1: gint
-  if node.children != nil:
+  if node.children != nil: 
     if_local1 = node.children.root.offset
-  else:
+  else: 
     if_local1 = 0
-  result = node.offset - ((node.left.offset) + node.right.offset + if_local1)
+  result = node.offset -
+      ((node.left.offset) + node.right.offset + if_local1)
 
-proc GTK_RBNODE_FLAG_SET*(node: PGtkRBNode, flag: guint): bool =
+proc FLAG_SET*(node: PRBNode, flag: guint): bool = 
   result = (node != nil) and ((flags(node) and (flag)) == flag)
 
-proc GTK_RBNODE_SET_FLAG*(node: PGtkRBNode, flag: guint16) =
+proc SET_FLAG*(node: PRBNode, flag: guint16) = 
   set_flags(node, (flag) or flags(node))
 
-proc GTK_RBNODE_UNSET_FLAG*(node: PGtkRBNode, flag: guint16) =
+proc UNSET_FLAG*(node: PRBNode, flag: guint16) = 
   set_flags(node, (not (flag)) and flags(node))
 
-proc GTK_TREE_VIEW_FLAG_SET*(tree_view: PGtkTreeView, flag: guint): bool =
+proc FLAG_SET*(tree_view: PTreeView, flag: guint): bool = 
   result = ((tree_view.priv.flags) and (flag)) == flag
 
-proc TREE_VIEW_HEADER_HEIGHT*(tree_view: PGtkTreeView): int32 =
+proc HEADER_HEIGHT*(tree_view: PTreeView): int32 = 
   var if_local1: int32
-  if GTK_TREE_VIEW_FLAG_SET(tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE):
+  if FLAG_SET(tree_view, TREE_VIEW_HEADERS_VISIBLE): 
     if_local1 = tree_view.priv.header_height
-  else:
+  else: 
     if_local1 = 0
   result = if_local1
 
-proc TREE_VIEW_COLUMN_REQUESTED_WIDTH*(column: PGtkTreeViewColumn): int32 =
+proc COLUMN_REQUESTED_WIDTH*(column: PTreeViewColumn): int32 = 
   var MinWidth, MaxWidth: int
-  if column.min_width != -1'i32:
+  if column.min_width != - 1'i32: 
     MinWidth = column.min_width
-  else:
+  else: 
     MinWidth = column.requested_width
-  if column.max_width != - 1'i32:
+  if column.max_width != - 1'i32: 
     MaxWidth = column.max_width
-  else:
+  else: 
     MaxWidth = column.requested_width
   result = CLAMP(column.requested_width, MinWidth, MaxWidth)
 
-proc TREE_VIEW_DRAW_EXPANDERS*(tree_view: PGtkTreeView): bool =
-  result = (not (GTK_TREE_VIEW_FLAG_SET(tree_view, GTK_TREE_VIEW_IS_LIST))) and
-      (GTK_TREE_VIEW_FLAG_SET(tree_view, GTK_TREE_VIEW_SHOW_EXPANDERS))
+proc DRAW_EXPANDERS*(tree_view: PTreeView): bool = 
+  result = (not (FLAG_SET(tree_view, TREE_VIEW_IS_LIST))) and
+      (FLAG_SET(tree_view, TREE_VIEW_SHOW_EXPANDERS))
 
-proc TREE_VIEW_COLUMN_DRAG_DEAD_MULTIPLIER*(tree_view: PGtkTreeView): int32 =
-  result = 10'i32 * (TREE_VIEW_HEADER_HEIGHT(tree_view))
+proc COLUMN_DRAG_DEAD_MULTIPLIER*(tree_view: PTreeView): int32 = 
+  result = 10'i32 * (HEADER_HEIGHT(tree_view))
 
-proc scroll_to_use_align*(a: var TGtkTreeViewPrivate): guint =
+proc scroll_to_use_align*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_scroll_to_use_align) shr
       bp_TGtkTreeViewPrivate_scroll_to_use_align
 
-proc set_scroll_to_use_align*(a: var TGtkTreeViewPrivate,
-                              `scroll_to_use_align`: guint) =
+proc set_scroll_to_use_align*(a: var TTreeViewPrivate, 
+                              `scroll_to_use_align`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`scroll_to_use_align` shl bp_TGtkTreeViewPrivate_scroll_to_use_align) and
+      (int16(`scroll_to_use_align` shl
+      bp_TGtkTreeViewPrivate_scroll_to_use_align) and
       bm_TGtkTreeViewPrivate_scroll_to_use_align)
 
-proc fixed_height_check*(a: var TGtkTreeViewPrivate): guint =
+proc fixed_height_check*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_fixed_height_check) shr
       bp_TGtkTreeViewPrivate_fixed_height_check
 
-proc set_fixed_height_check*(a: var TGtkTreeViewPrivate,
-                             `fixed_height_check`: guint) =
+proc set_fixed_height_check*(a: var TTreeViewPrivate, 
+                             `fixed_height_check`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`fixed_height_check` shl bp_TGtkTreeViewPrivate_fixed_height_check) and
+      (int16(`fixed_height_check` shl
+      bp_TGtkTreeViewPrivate_fixed_height_check) and
       bm_TGtkTreeViewPrivate_fixed_height_check)
 
-proc reorderable*(a: var TGtkTreeViewPrivate): guint =
+proc reorderable*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_reorderable) shr
       bp_TGtkTreeViewPrivate_reorderable
 
-proc set_reorderable*(a: var TGtkTreeViewPrivate, `reorderable`: guint) =
+proc set_reorderable*(a: var TTreeViewPrivate, `reorderable`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`reorderable` shl bp_TGtkTreeViewPrivate_reorderable) and
       bm_TGtkTreeViewPrivate_reorderable)
 
-proc header_has_focus*(a: var TGtkTreeViewPrivate): guint =
+proc header_has_focus*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_header_has_focus) shr
       bp_TGtkTreeViewPrivate_header_has_focus
 
-proc set_header_has_focus*(a: var TGtkTreeViewPrivate, `header_has_focus`: guint) =
+proc set_header_has_focus*(a: var TTreeViewPrivate, `header_has_focus`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`header_has_focus` shl bp_TGtkTreeViewPrivate_header_has_focus) and
       bm_TGtkTreeViewPrivate_header_has_focus)
 
-proc drag_column_window_state*(a: var TGtkTreeViewPrivate): guint =
+proc drag_column_window_state*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_drag_column_window_state) shr
       bp_TGtkTreeViewPrivate_drag_column_window_state
 
-proc set_drag_column_window_state*(a: var TGtkTreeViewPrivate,
-                                   `drag_column_window_state`: guint) =
+proc set_drag_column_window_state*(a: var TTreeViewPrivate, 
+                                   `drag_column_window_state`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`drag_column_window_state` shl
       bp_TGtkTreeViewPrivate_drag_column_window_state) and
       bm_TGtkTreeViewPrivate_drag_column_window_state)
 
-proc has_rules*(a: var TGtkTreeViewPrivate): guint =
+proc has_rules*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_has_rules) shr
       bp_TGtkTreeViewPrivate_has_rules
 
-proc set_has_rules*(a: var TGtkTreeViewPrivate, `has_rules`: guint) =
+proc set_has_rules*(a: var TTreeViewPrivate, `has_rules`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`has_rules` shl bp_TGtkTreeViewPrivate_has_rules) and
       bm_TGtkTreeViewPrivate_has_rules)
 
-proc mark_rows_col_dirty*(a: var TGtkTreeViewPrivate): guint =
+proc mark_rows_col_dirty*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_mark_rows_col_dirty) shr
       bp_TGtkTreeViewPrivate_mark_rows_col_dirty
 
-proc set_mark_rows_col_dirty*(a: var TGtkTreeViewPrivate,
-                              `mark_rows_col_dirty`: guint) =
+proc set_mark_rows_col_dirty*(a: var TTreeViewPrivate, 
+                              `mark_rows_col_dirty`: guint) = 
   a.flag0 = a.flag0 or
-      (int16(`mark_rows_col_dirty` shl bp_TGtkTreeViewPrivate_mark_rows_col_dirty) and
+      (int16(`mark_rows_col_dirty` shl
+      bp_TGtkTreeViewPrivate_mark_rows_col_dirty) and
       bm_TGtkTreeViewPrivate_mark_rows_col_dirty)
 
-proc enable_search*(a: var TGtkTreeViewPrivate): guint =
+proc enable_search*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_enable_search) shr
       bp_TGtkTreeViewPrivate_enable_search
 
-proc set_enable_search*(a: var TGtkTreeViewPrivate, `enable_search`: guint) =
+proc set_enable_search*(a: var TTreeViewPrivate, `enable_search`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`enable_search` shl bp_TGtkTreeViewPrivate_enable_search) and
       bm_TGtkTreeViewPrivate_enable_search)
 
-proc disable_popdown*(a: var TGtkTreeViewPrivate): guint =
+proc disable_popdown*(a: var TTreeViewPrivate): guint = 
   result = (a.flag0 and bm_TGtkTreeViewPrivate_disable_popdown) shr
       bp_TGtkTreeViewPrivate_disable_popdown
 
-proc set_disable_popdown*(a: var TGtkTreeViewPrivate, `disable_popdown`: guint) =
+proc set_disable_popdown*(a: var TTreeViewPrivate, `disable_popdown`: guint) = 
   a.flag0 = a.flag0 or
       (int16(`disable_popdown` shl bp_TGtkTreeViewPrivate_disable_popdown) and
       bm_TGtkTreeViewPrivate_disable_popdown)
 
-proc GTK_TREE_VIEW_SET_FLAG*(tree_view: PGtkTreeView, flag: guint) =
-  tree_view . priv . flags = tree_view . priv . flags or (flag)
+proc SET_FLAG*(tree_view: PTreeView, flag: guint) = 
+  tree_view.priv.flags = tree_view.priv.flags or (flag)
 
-proc GTK_TREE_VIEW_UNSET_FLAG*(tree_view: PGtkTreeView, flag: guint) =
-  tree_view . priv . flags = tree_view . priv . flags and not (flag)
+proc UNSET_FLAG*(tree_view: PTreeView, flag: guint) = 
+  tree_view.priv.flags = tree_view.priv.flags and not (flag)
 
-proc GTK_TYPE_TREE_VIEW*(): GType =
-  result = gtk_tree_view_get_type()
+proc TYPE_TREE_VIEW*(): GType = 
+  result = tree_view_get_type()
 
-proc GTK_TREE_VIEW*(obj: pointer): PGtkTreeView =
-  result = cast[PGtkTreeView](GTK_CHECK_CAST(obj, GTK_TYPE_TREE_VIEW()))
+proc TREE_VIEW*(obj: pointer): PTreeView = 
+  result = cast[PTreeView](CHECK_CAST(obj, TYPE_TREE_VIEW()))
 
-proc GTK_TREE_VIEW_CLASS*(klass: pointer): PGtkTreeViewClass =
-  result = cast[PGtkTreeViewClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_TREE_VIEW()))
+proc TREE_VIEW_CLASS*(klass: pointer): PTreeViewClass = 
+  result = cast[PTreeViewClass](CHECK_CLASS_CAST(klass, TYPE_TREE_VIEW()))
 
-proc GTK_IS_TREE_VIEW*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_TREE_VIEW())
+proc IS_TREE_VIEW*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_TREE_VIEW())
 
-proc GTK_IS_TREE_VIEW_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_TREE_VIEW())
+proc IS_TREE_VIEW_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_TREE_VIEW())
 
-proc GTK_TREE_VIEW_GET_CLASS*(obj: pointer): PGtkTreeViewClass =
-  result = cast[PGtkTreeViewClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_TREE_VIEW()))
+proc TREE_VIEW_GET_CLASS*(obj: pointer): PTreeViewClass = 
+  result = cast[PTreeViewClass](CHECK_GET_CLASS(obj, TYPE_TREE_VIEW()))
 
-proc GTK_TYPE_VBUTTON_BOX*(): GType =
-  result = gtk_vbutton_box_get_type()
+proc TYPE_VBUTTON_BOX*(): GType = 
+  result = vbutton_box_get_type()
 
-proc GTK_VBUTTON_BOX*(obj: pointer): PGtkVButtonBox =
-  result = cast[PGtkVButtonBox](GTK_CHECK_CAST(obj, GTK_TYPE_VBUTTON_BOX()))
+proc VBUTTON_BOX*(obj: pointer): PVButtonBox = 
+  result = cast[PVButtonBox](CHECK_CAST(obj, TYPE_VBUTTON_BOX()))
 
-proc GTK_VBUTTON_BOX_CLASS*(klass: pointer): PGtkVButtonBoxClass =
-  result = cast[PGtkVButtonBoxClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VBUTTON_BOX()))
+proc VBUTTON_BOX_CLASS*(klass: pointer): PVButtonBoxClass = 
+  result = cast[PVButtonBoxClass](CHECK_CLASS_CAST(klass, TYPE_VBUTTON_BOX()))
 
-proc GTK_IS_VBUTTON_BOX*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VBUTTON_BOX())
+proc IS_VBUTTON_BOX*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VBUTTON_BOX())
 
-proc GTK_IS_VBUTTON_BOX_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VBUTTON_BOX())
+proc IS_VBUTTON_BOX_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VBUTTON_BOX())
 
-proc GTK_VBUTTON_BOX_GET_CLASS*(obj: pointer): PGtkVButtonBoxClass =
-  result = cast[PGtkVButtonBoxClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VBUTTON_BOX()))
+proc VBUTTON_BOX_GET_CLASS*(obj: pointer): PVButtonBoxClass = 
+  result = cast[PVButtonBoxClass](CHECK_GET_CLASS(obj, TYPE_VBUTTON_BOX()))
 
-proc GTK_TYPE_VIEWPORT*(): GType =
-  result = gtk_viewport_get_type()
+proc TYPE_VIEWPORT*(): GType = 
+  result = viewport_get_type()
 
-proc GTK_VIEWPORT*(obj: pointer): PGtkViewport =
-  result = cast[PGtkViewport](GTK_CHECK_CAST(obj, GTK_TYPE_VIEWPORT()))
+proc VIEWPORT*(obj: pointer): PViewport = 
+  result = cast[PViewport](CHECK_CAST(obj, TYPE_VIEWPORT()))
 
-proc GTK_VIEWPORT_CLASS*(klass: pointer): PGtkViewportClass =
-  result = cast[PGtkViewportClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VIEWPORT()))
+proc VIEWPORT_CLASS*(klass: pointer): PViewportClass = 
+  result = cast[PViewportClass](CHECK_CLASS_CAST(klass, TYPE_VIEWPORT()))
 
-proc GTK_IS_VIEWPORT*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VIEWPORT())
+proc IS_VIEWPORT*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VIEWPORT())
 
-proc GTK_IS_VIEWPORT_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VIEWPORT())
+proc IS_VIEWPORT_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VIEWPORT())
 
-proc GTK_VIEWPORT_GET_CLASS*(obj: pointer): PGtkViewportClass =
-  result = cast[PGtkViewportClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VIEWPORT()))
+proc VIEWPORT_GET_CLASS*(obj: pointer): PViewportClass = 
+  result = cast[PViewportClass](CHECK_GET_CLASS(obj, TYPE_VIEWPORT()))
 
-proc GTK_TYPE_VPANED*(): GType =
-  result = gtk_vpaned_get_type()
+proc TYPE_VPANED*(): GType = 
+  result = vpaned_get_type()
 
-proc GTK_VPANED*(obj: pointer): PGtkVPaned =
-  result = cast[PGtkVPaned](GTK_CHECK_CAST(obj, GTK_TYPE_VPANED()))
+proc VPANED*(obj: pointer): PVPaned = 
+  result = cast[PVPaned](CHECK_CAST(obj, TYPE_VPANED()))
 
-proc GTK_VPANED_CLASS*(klass: pointer): PGtkVPanedClass =
-  result = cast[PGtkVPanedClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VPANED()))
+proc VPANED_CLASS*(klass: pointer): PVPanedClass = 
+  result = cast[PVPanedClass](CHECK_CLASS_CAST(klass, TYPE_VPANED()))
 
-proc GTK_IS_VPANED*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VPANED())
+proc IS_VPANED*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VPANED())
 
-proc GTK_IS_VPANED_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VPANED())
+proc IS_VPANED_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VPANED())
 
-proc GTK_VPANED_GET_CLASS*(obj: pointer): PGtkVPanedClass =
-  result = cast[PGtkVPanedClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VPANED()))
+proc VPANED_GET_CLASS*(obj: pointer): PVPanedClass = 
+  result = cast[PVPanedClass](CHECK_GET_CLASS(obj, TYPE_VPANED()))
 
-proc GTK_TYPE_VRULER*(): GType =
-  result = gtk_vruler_get_type()
+proc TYPE_VRULER*(): GType = 
+  result = vruler_get_type()
 
-proc GTK_VRULER*(obj: pointer): PGtkVRuler =
-  result = cast[PGtkVRuler](GTK_CHECK_CAST(obj, GTK_TYPE_VRULER()))
+proc VRULER*(obj: pointer): PVRuler = 
+  result = cast[PVRuler](CHECK_CAST(obj, TYPE_VRULER()))
 
-proc GTK_VRULER_CLASS*(klass: pointer): PGtkVRulerClass =
-  result = cast[PGtkVRulerClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VRULER()))
+proc VRULER_CLASS*(klass: pointer): PVRulerClass = 
+  result = cast[PVRulerClass](CHECK_CLASS_CAST(klass, TYPE_VRULER()))
 
-proc GTK_IS_VRULER*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VRULER())
+proc IS_VRULER*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VRULER())
 
-proc GTK_IS_VRULER_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VRULER())
+proc IS_VRULER_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VRULER())
 
-proc GTK_VRULER_GET_CLASS*(obj: pointer): PGtkVRulerClass =
-  result = cast[PGtkVRulerClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VRULER()))
+proc VRULER_GET_CLASS*(obj: pointer): PVRulerClass = 
+  result = cast[PVRulerClass](CHECK_GET_CLASS(obj, TYPE_VRULER()))
 
-proc GTK_TYPE_VSCALE*(): GType =
-  result = gtk_vscale_get_type()
+proc TYPE_VSCALE*(): GType = 
+  result = vscale_get_type()
 
-proc GTK_VSCALE*(obj: pointer): PGtkVScale =
-  result = cast[PGtkVScale](GTK_CHECK_CAST(obj, GTK_TYPE_VSCALE()))
+proc VSCALE*(obj: pointer): PVScale = 
+  result = cast[PVScale](CHECK_CAST(obj, TYPE_VSCALE()))
 
-proc GTK_VSCALE_CLASS*(klass: pointer): PGtkVScaleClass =
-  result = cast[PGtkVScaleClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VSCALE()))
+proc VSCALE_CLASS*(klass: pointer): PVScaleClass = 
+  result = cast[PVScaleClass](CHECK_CLASS_CAST(klass, TYPE_VSCALE()))
 
-proc GTK_IS_VSCALE*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VSCALE())
+proc IS_VSCALE*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VSCALE())
 
-proc GTK_IS_VSCALE_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VSCALE())
+proc IS_VSCALE_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VSCALE())
 
-proc GTK_VSCALE_GET_CLASS*(obj: pointer): PGtkVScaleClass =
-  result = cast[PGtkVScaleClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VSCALE()))
+proc VSCALE_GET_CLASS*(obj: pointer): PVScaleClass = 
+  result = cast[PVScaleClass](CHECK_GET_CLASS(obj, TYPE_VSCALE()))
 
-proc GTK_TYPE_VSCROLLBAR*(): GType =
-  result = gtk_vscrollbar_get_type()
+proc TYPE_VSCROLLBAR*(): GType = 
+  result = vscrollbar_get_type()
 
-proc GTK_VSCROLLBAR*(obj: pointer): PGtkVScrollbar =
-  result = cast[PGtkVScrollbar](GTK_CHECK_CAST(obj, GTK_TYPE_VSCROLLBAR()))
+proc VSCROLLBAR*(obj: pointer): PVScrollbar = 
+  result = cast[PVScrollbar](CHECK_CAST(obj, TYPE_VSCROLLBAR()))
 
-proc GTK_VSCROLLBAR_CLASS*(klass: pointer): PGtkVScrollbarClass =
-  result = cast[PGtkVScrollbarClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VSCROLLBAR()))
+proc VSCROLLBAR_CLASS*(klass: pointer): PVScrollbarClass = 
+  result = cast[PVScrollbarClass](CHECK_CLASS_CAST(klass, TYPE_VSCROLLBAR()))
 
-proc GTK_IS_VSCROLLBAR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VSCROLLBAR())
+proc IS_VSCROLLBAR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VSCROLLBAR())
 
-proc GTK_IS_VSCROLLBAR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VSCROLLBAR())
+proc IS_VSCROLLBAR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VSCROLLBAR())
 
-proc GTK_VSCROLLBAR_GET_CLASS*(obj: pointer): PGtkVScrollbarClass =
-  result = cast[PGtkVScrollbarClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VSCROLLBAR()))
+proc VSCROLLBAR_GET_CLASS*(obj: pointer): PVScrollbarClass = 
+  result = cast[PVScrollbarClass](CHECK_GET_CLASS(obj, TYPE_VSCROLLBAR()))
 
-proc GTK_TYPE_VSEPARATOR*(): GType =
-  result = gtk_vseparator_get_type()
+proc TYPE_VSEPARATOR*(): GType = 
+  result = vseparator_get_type()
 
-proc GTK_VSEPARATOR*(obj: pointer): PGtkVSeparator =
-  result = cast[PGtkVSeparator](GTK_CHECK_CAST(obj, GTK_TYPE_VSEPARATOR()))
+proc VSEPARATOR*(obj: pointer): PVSeparator = 
+  result = cast[PVSeparator](CHECK_CAST(obj, TYPE_VSEPARATOR()))
 
-proc GTK_VSEPARATOR_CLASS*(klass: pointer): PGtkVSeparatorClass =
-  result = cast[PGtkVSeparatorClass](GTK_CHECK_CLASS_CAST(klass, GTK_TYPE_VSEPARATOR()))
+proc VSEPARATOR_CLASS*(klass: pointer): PVSeparatorClass = 
+  result = cast[PVSeparatorClass](CHECK_CLASS_CAST(klass, TYPE_VSEPARATOR()))
 
-proc GTK_IS_VSEPARATOR*(obj: pointer): bool =
-  result = GTK_CHECK_TYPE(obj, GTK_TYPE_VSEPARATOR())
+proc IS_VSEPARATOR*(obj: pointer): bool = 
+  result = CHECK_TYPE(obj, TYPE_VSEPARATOR())
 
-proc GTK_IS_VSEPARATOR_CLASS*(klass: pointer): bool =
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_TYPE_VSEPARATOR())
+proc IS_VSEPARATOR_CLASS*(klass: pointer): bool = 
+  result = CHECK_CLASS_TYPE(klass, TYPE_VSEPARATOR())
 
-proc GTK_VSEPARATOR_GET_CLASS*(obj: pointer): PGtkVSeparatorClass =
-  result = cast[PGtkVSeparatorClass](GTK_CHECK_GET_CLASS(obj, GTK_TYPE_VSEPARATOR()))
+proc VSEPARATOR_GET_CLASS*(obj: pointer): PVSeparatorClass = 
+  # these were missing:
+  result = cast[PVSeparatorClass](CHECK_GET_CLASS(obj, TYPE_VSEPARATOR()))
 
+type 
+  Tcelllayout {.pure, final.} = object
+
+  PCellLayout* = tcelllayout
+  PPGtkCellLayout* = ptr PCellLayout
+  PSignalRunType* = ptr TSignalRunType
+  TSignalRunType* = int32
+  PFileChooserAction* = ptr TFileChooserAction
+  TFileChooserAction* = enum 
+    FILE_CHOOSER_ACTION_OPEN, FILE_CHOOSER_ACTION_SAVE, 
+    FILE_CHOOSER_ACTION_SELECT_FOLDER, FILE_CHOOSER_ACTION_CREATE_FOLDER
+  PFileChooserError* = ptr TFileChooserError
+  TFileChooserError* = enum 
+    FILE_CHOOSER_ERROR_NONEXISTENT, FILE_CHOOSER_ERROR_BAD_FILENAME
 
-# these were missing:
-type
-   PGtkCellLayout* = pointer
-   PPGtkCellLayout* = ptr PGtkCellLayout
-   PGtkSignalRunType* = ptr TGtkSignalRunType
-   TGtkSignalRunType* =  int32
-   PGtkFileChooserAction* = ptr TGtkFileChooserAction
-   TGtkFileChooserAction* = enum 
-     GTK_FILE_CHOOSER_ACTION_OPEN,
-     GTK_FILE_CHOOSER_ACTION_SAVE,
-     GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
-     GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
-   PGtkFileChooserError* = ptr TGtkFileChooserError
-   TGtkFileChooserError* = enum
-     GTK_FILE_CHOOSER_ERROR_NONEXISTENT,
-     GTK_FILE_CHOOSER_ERROR_BAD_FILENAME
+  TFileChooser = object of TDialog
+  PFileChooser* = ptr TFileChooser
+  PPFileChooser* = ptr PFileChooser
 
 
 const 
-  GTK_ARG_READWRITE* = GTK_ARG_READABLE or GTK_ARG_WRITABLE
-
-proc gtk_binding_entry_add_signal*(binding_set: PGtkBindingSet, keyval: guint, 
-                                   modifiers: TGdkModifierType, 
-                                   signal_name: cstring, n_args: guint){.varargs, 
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_clist_new_with_titles*(columns: gint): PGtkCList{.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_clist_prepend*(clist: PGtkCList): gint{.importc, varargs, cdecl, dynlib: gtklib.}
-proc gtk_clist_append*(clist: PGtkCList): gint{.importc, varargs, cdecl, dynlib: gtklib.}
-proc gtk_clist_insert*(clist: PGtkCList, row: gint): gint{.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_cell_layout_set_attributes*(cell_layout: PGtkCellLayout, 
-                                     cell: PGtkCellRenderer){.cdecl, varargs, 
-    importc, dynlib: gtklib, importc: "gtk_cell_layout_set_attributes".}
-proc gtk_container_add_with_properties*(container: PGtkContainer, 
-                                        widget: PGtkWidget, 
-                                        first_prop_name: cstring){.varargs, 
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_container_child_set*(container: PGtkContainer, child: PGtkWidget, 
-                              first_prop_name: cstring){.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_container_child_get*(container: PGtkContainer, child: PGtkWidget, 
-                              first_prop_name: cstring){.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_container_child_set_valist*(container: PGtkContainer, 
-                                     child: PGtkWidget, 
-                                     first_property_name: cstring){.varargs, 
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_container_child_get_valist*(container: PGtkContainer, 
-                                     child: PGtkWidget, 
-                                     first_property_name: cstring){.varargs, 
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_ctree_new_with_titles*(columns: gint, tree_column: gint): PGtkCTree{.
-    importc, varargs, cdecl, dynlib: gtklib.}
-proc gtk_curve_get_vector*(curve: PGtkCurve, veclen: int32){.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_curve_set_vector*(curve: PGtkCurve, veclen: int32){.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_dialog_add_buttons*(dialog: PGtkDialog, first_button_text: cstring){.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_dialog_new_with_buttons*(title: cstring, parent: PGtkWindow, 
-                                  flags: TGtkDialogFlags, 
-                                  first_button_text: cstring): PGtkDialog{.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_list_store_new*(n_columns: gint): PGtkListStore{.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_list_store_set*(list_store: PGtkListStore, iter: PGtkTreeIter){.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_list_store_set_valist*(list_store: PGtkListStore, iter: PGtkTreeIter){.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_message_dialog_new*(parent: PGtkWindow, flags: TGtkDialogFlags, 
-                             thetype: TGtkMessageType, buttons: TGtkButtonsType, 
-                             message_format: cstring): PGtkMessageDialog{.varargs, 
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_signal_new*(name: cstring, signal_flags: TGtkSignalRunType, 
-                     object_type: TGtkType, function_offset: guint, 
-                     marshaller: TGtkSignalMarshaller, return_val: TGtkType, 
-                     n_args: guint): guint{.
-                     varargs, importc, cdecl, dynlib: gtklib.}
-proc gtk_signal_emit*(anObject: PGtkObject, signal_id: guint){.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_signal_emit_by_name*(anObject: PGtkObject, name: cstring){.varargs, 
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_text_buffer_insert_with_tags*(buffer: PGtkTextBuffer, 
-                                       iter: PGtkTextIter, text: cstring, 
-                                       length: gint, first_tag: PGtkTextTag){.
-    varargs, importc, cdecl, dynlib: gtklib.}
-proc gtk_text_buffer_insert_with_tags_by_name*(buffer: PGtkTextBuffer, 
-    iter: PGtkTextIter, text: cstring, length: gint, first_tag_name: cstring){.
-    varargs, importc, cdecl, dynlib: gtklib.}
-proc gtk_text_buffer_create_tag*(buffer: PGtkTextBuffer, tag_name: cstring, 
-                                 first_property_name: cstring): PGtkTextTag{.
-    varargs, importc, cdecl, dynlib: gtklib.}
-proc gtk_tree_model_get*(tree_model: PGtkTreeModel, iter: PGtkTreeIter){.
-    varargs, importc, cdecl, dynlib: gtklib.}
-proc gtk_tree_model_get_valist*(tree_model: PGtkTreeModel, iter: PGtkTreeIter){.
-    varargs, importc, cdecl, dynlib: gtklib.}
-proc gtk_tree_store_new*(n_columns: gint): PGtkTreeStore{.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_tree_store_set*(tree_store: PGtkTreeStore, iter: PGtkTreeIter){.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_tree_store_set_valist*(tree_store: PGtkTreeStore, iter: PGtkTreeIter){.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_tree_store_iter_is_valid*(tree_store: PGtkTreeStore, iter: PGtkTreeIter): gboolean{.
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_tree_store_reorder*(tree_store: PGtkTreeStore, parent: PGtkTreeIter, 
-                             new_order: pgint){.cdecl, importc, dynlib: gtklib.}
-proc gtk_tree_store_swap*(tree_store: PGtkTreeStore, a: PGtkTreeIter, 
-                          b: PGtkTreeIter){.cdecl, importc, dynlib: gtklib.}
-proc gtk_tree_store_move_before*(tree_store: PGtkTreeStore, iter: PGtkTreeIter, 
-                                 position: PGtkTreeIter){.cdecl,importc,  dynlib: gtklib.}
-proc gtk_tree_store_move_after*(tree_store: PGtkTreeStore, iter: PGtkTreeIter, 
-                                position: PGtkTreeIter){.cdecl,importc,  dynlib: gtklib.}
-proc gtk_tree_view_insert_column_with_attributes*(tree_view: PGtkTreeView, 
-    position: gint, title: cstring, cell: PGtkCellRenderer): gint{.varargs, 
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_tree_view_column_new_with_attributes*(title: cstring, 
-    cell: PGtkCellRenderer): PGtkTreeViewColumn{.importc, varargs, cdecl, dynlib: gtklib.}
-proc gtk_tree_view_column_set_attributes*(tree_column: PGtkTreeViewColumn, 
-    cell_renderer: PGtkCellRenderer){.importc, varargs, cdecl, dynlib: gtklib.}
-proc gtk_widget_new*(thetype: TGtkType, first_property_name: cstring): PGtkWidget{.
-    importc, varargs, cdecl, dynlib: gtklib.}
-proc gtk_widget_set*(widget: PGtkWidget, first_property_name: cstring){.varargs, 
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_widget_queue_clear*(widget: PGtkWidget){.importc, cdecl, dynlib: gtklib.}
-proc gtk_widget_queue_clear_area*(widget: PGtkWidget, x: gint, y: gint, 
-                                  width: gint, height: gint){.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_widget_draw*(widget: PGtkWidget, area: PGdkRectangle){.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_widget_style_get_valist*(widget: PGtkWidget, 
-                                  first_property_name: cstring){.varargs, cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_widget_style_get*(widget: PGtkWidget, first_property_name: cstring){.
-    varargs, cdecl, importc, dynlib: gtklib.}
-proc gtk_file_chooser_dialog_new*(title: cstring, parent: PGtkWindow, 
-                                  action: TGtkFileChooserAction, 
-                                  first_button_text: cstring): PGtkDialog {.cdecl, 
-    varargs, dynlib: gtklib, importc: "gtk_file_chooser_dialog_new".}
-proc gtk_file_chooser_dialog_new_with_backend*(title: cstring, 
-    parent: PGtkWindow, action: TGtkFileChooserAction, backend: cstring, 
-    first_button_text: cstring): PGtkDialog {.varargs, cdecl, dynlib: gtklib, 
+  ARG_READWRITE* = ARG_READABLE or ARG_WRITABLE
+
+proc entry_add_signal*(binding_set: PBindingSet, keyval: guint, 
+                               modifiers: gdk2.TModifierType, 
+                               signal_name: cstring, n_args: guint){.varargs, 
+    importc: "gtk_binding_entry_add_signal", cdecl, dynlib: lib.}
+proc clist_new_with_titles*(columns: gint): PCList{.varargs, cdecl, 
+    importc: "gtk_clist_new_with_titles", dynlib: lib.}
+proc prepend*(clist: PCList): gint{.importc: "gtk_clist_prepend", varargs, 
+    cdecl, dynlib: lib.}
+proc append*(clist: PCList): gint{.importc: "gtk_clist_append", varargs, 
+    cdecl, dynlib: lib.}
+proc insert*(clist: PCList, row: gint): gint{.varargs, cdecl, 
+    importc: "gtk_clist_insert", dynlib: lib.}
+proc set_attributes*(cell_layout: PCellLayout, cell: PCellRenderer){.
+    cdecl, varargs, importc: "gtk_cell_layout_set_attributes", dynlib: lib, 
+    importc: "gtk_cell_layout_set_attributes".}
+proc add_with_properties*(container: PContainer, widget: PWidget, 
+                                    first_prop_name: cstring){.varargs, 
+    importc: "gtk_container_add_with_properties", cdecl, dynlib: lib.}
+proc child_set*(container: PContainer, child: PWidget, 
+                          first_prop_name: cstring){.varargs, cdecl, 
+    importc: "gtk_container_child_set", dynlib: lib.}
+proc child_get*(container: PContainer, child: PWidget, 
+                          first_prop_name: cstring){.varargs, cdecl, 
+    importc: "gtk_container_child_get", dynlib: lib.}
+proc child_set_valist*(container: PContainer, child: PWidget, 
+                                 first_property_name: cstring){.varargs, 
+    importc: "gtk_container_child_set_valist", cdecl, dynlib: lib.}
+proc child_get_valist*(container: PContainer, child: PWidget, 
+                                 first_property_name: cstring){.varargs, 
+    importc: "gtk_container_child_get_valist", cdecl, dynlib: lib.}
+proc ctree_new_with_titles*(columns: gint, tree_column: gint): PCTree{.
+    importc: "gtk_ctree_new_with_titles", varargs, cdecl, dynlib: lib.}
+proc get_vector*(curve: PCurve, veclen: int32){.varargs, cdecl, 
+    importc: "gtk_curve_get_vector", dynlib: lib.}
+proc set_vector*(curve: PCurve, veclen: int32){.varargs, cdecl, 
+    importc: "gtk_curve_set_vector", dynlib: lib.}
+proc add_buttons*(dialog: PDialog, first_button_text: cstring){.varargs, 
+    cdecl, importc: "gtk_dialog_add_buttons", dynlib: lib.}
+proc dialog_new_with_buttons*(title: cstring, parent: PWindow, 
+                              flags: TDialogFlags, first_button_text: cstring): PDialog{.
+    varargs, cdecl, importc: "gtk_dialog_new_with_buttons", dynlib: lib.}
+proc list_store_new*(n_columns: gint): PListStore{.varargs, cdecl, 
+    importc: "gtk_list_store_new", dynlib: lib.}
+proc set*(list_store: PListStore, iter: PTreeIter){.varargs, cdecl, 
+    importc: "gtk_list_store_set", dynlib: lib.}
+proc set_valist*(list_store: PListStore, iter: PTreeIter){.varargs, 
+    cdecl, importc: "gtk_list_store_set_valist", dynlib: lib.}
+proc message_dialog_new*(parent: PWindow, flags: TDialogFlags, 
+                         thetype: TMessageType, buttons: TButtonsType, 
+                         message_format: cstring): PMessageDialog{.varargs, 
+    cdecl, importc: "gtk_message_dialog_new", dynlib: lib.}
+proc signal_new*(name: cstring, signal_flags: TSignalRunType, 
+                 object_type: TType, function_offset: guint, 
+                 marshaller: TSignalMarshaller, return_val: TType, n_args: guint): guint{.
+    varargs, importc: "gtk_signal_new", cdecl, dynlib: lib.}
+proc signal_emit*(anObject: PObject, signal_id: guint){.varargs, cdecl, 
+    importc: "gtk_signal_emit", dynlib: lib.}
+proc signal_emit_by_name*(anObject: PObject, name: cstring){.varargs, cdecl, 
+    importc: "gtk_signal_emit_by_name", dynlib: lib.}
+proc insert_with_tags*(buffer: PTextBuffer, iter: PTextIter, 
+                                   text: cstring, length: gint, 
+                                   first_tag: PTextTag){.varargs, 
+    importc: "gtk_text_buffer_insert_with_tags", cdecl, dynlib: lib.}
+proc insert_with_tags_by_name*(buffer: PTextBuffer, iter: PTextIter, 
+    text: cstring, length: gint, first_tag_name: cstring){.varargs, 
+    importc: "gtk_text_buffer_insert_with_tags_by_name", cdecl, dynlib: lib.}
+proc create_tag*(buffer: PTextBuffer, tag_name: cstring, 
+                             first_property_name: cstring): PTextTag{.varargs, 
+    importc: "gtk_text_buffer_create_tag", cdecl, dynlib: lib.}
+proc get*(tree_model: PTreeModel, iter: PTreeIter){.varargs, 
+    importc: "gtk_tree_model_get", cdecl, dynlib: lib.}
+proc get_valist*(tree_model: PTreeModel, iter: PTreeIter){.varargs, 
+    importc: "gtk_tree_model_get_valist", cdecl, dynlib: lib.}
+proc tree_store_new*(n_columns: gint): PTreeStore{.varargs, cdecl, 
+    importc: "gtk_tree_store_new", dynlib: lib.}
+proc set*(tree_store: PTreeStore, iter: PTreeIter){.varargs, cdecl, 
+    importc: "gtk_tree_store_set", dynlib: lib.}
+proc set_valist*(tree_store: PTreeStore, iter: PTreeIter){.varargs, 
+    cdecl, importc: "gtk_tree_store_set_valist", dynlib: lib.}
+proc iter_is_valid*(tree_store: PTreeStore, iter: PTreeIter): gboolean{.
+    cdecl, importc: "gtk_tree_store_iter_is_valid", dynlib: lib.}
+proc reorder*(tree_store: PTreeStore, parent: PTreeIter, 
+                         new_order: pgint){.cdecl, 
+    importc: "gtk_tree_store_reorder", dynlib: lib.}
+proc swap*(tree_store: PTreeStore, a: PTreeIter, b: PTreeIter){.
+    cdecl, importc: "gtk_tree_store_swap", dynlib: lib.}
+proc move_before*(tree_store: PTreeStore, iter: PTreeIter, 
+                             position: PTreeIter){.cdecl, 
+    importc: "gtk_tree_store_move_before", dynlib: lib.}
+proc move_after*(tree_store: PTreeStore, iter: PTreeIter, 
+                            position: PTreeIter){.cdecl, 
+    importc: "gtk_tree_store_move_after", dynlib: lib.}
+proc insert_column_with_attributes*(tree_view: PTreeView, 
+    position: gint, title: cstring, cell: PCellRenderer): gint{.varargs, 
+    importc: "gtk_tree_view_insert_column_with_attributes", cdecl, dynlib: lib.}
+proc tree_view_column_new_with_attributes*(title: cstring, cell: PCellRenderer): PTreeViewColumn{.
+    importc: "gtk_tree_view_column_new_with_attributes", varargs, cdecl, 
+    dynlib: lib.}
+proc column_set_attributes*(tree_column: PTreeViewColumn, 
+                                      cell_renderer: PCellRenderer){.
+    importc: "gtk_tree_view_column_set_attributes", varargs, cdecl, dynlib: lib.}
+proc widget_new*(thetype: TType, first_property_name: cstring): PWidget{.
+    importc: "gtk_widget_new", varargs, cdecl, dynlib: lib.}
+proc set*(widget: PWidget, first_property_name: cstring){.varargs, 
+    importc: "gtk_widget_set", cdecl, dynlib: lib.}
+proc queue_clear*(widget: PWidget){.importc: "gtk_widget_queue_clear", 
+    cdecl, dynlib: lib.}
+proc queue_clear_area*(widget: PWidget, x: gint, y: gint, width: gint, 
+                              height: gint){.cdecl, 
+    importc: "gtk_widget_queue_clear_area", dynlib: lib.}
+proc draw*(widget: PWidget, area: gdk2.PRectangle){.cdecl, 
+    importc: "gtk_widget_draw", dynlib: lib.}
+proc style_get_valist*(widget: PWidget, first_property_name: cstring){.
+    varargs, cdecl, importc: "gtk_widget_style_get_valist", dynlib: lib.}
+proc style_get*(widget: PWidget, first_property_name: cstring){.varargs, 
+    cdecl, importc: "gtk_widget_style_get", dynlib: lib.}
+proc file_chooser_dialog_new*(title: cstring, parent: PWindow, 
+                              action: TFileChooserAction, 
+                              first_button_text: cstring): PFileChooser{.cdecl, 
+    varargs, dynlib: lib, importc: "gtk_file_chooser_dialog_new".}
+proc file_chooser_dialog_new_with_backend*(title: cstring, parent: PWindow, 
+    action: TFileChooserAction, backend: cstring, first_button_text: cstring): PFileChooser{.
+    varargs, cdecl, dynlib: lib, 
     importc: "gtk_file_chooser_dialog_new_with_backend".}
-proc gtk_object_ref*(anObject: PGtkObject): PGtkObject{.cdecl,importc,  dynlib: gtklib.}
-proc gtk_object_unref*(anObject: PGtkObject){.cdecl, importc, dynlib: gtklib.}
-proc gtk_object_weakref*(anObject: PGtkObject, notify: TGtkDestroyNotify, 
-                         data: gpointer){.cdecl, importc, dynlib: gtklib.}
-proc gtk_object_weakunref*(anObject: PGtkObject, notify: TGtkDestroyNotify, 
-                           data: gpointer){.cdecl, importc, dynlib: gtklib.}
-proc gtk_object_set_data*(anObject: PGtkObject, key: cstring, data: gpointer){.
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_object_set_data_full*(anObject: PGtkObject, key: cstring, 
-                               data: gpointer, destroy: TGtkDestroyNotify){.
-    importc, cdecl, dynlib: gtklib.}
-proc gtk_object_remove_data*(anObject: PGtkObject, key: cstring){.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_object_get_data*(anObject: PGtkObject, key: cstring): gpointer{.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_object_remove_no_notify*(anObject: PGtkObject, key: cstring){.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_object_set_user_data*(anObject: PGtkObject, data: gpointer){.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_object_get_user_data*(anObject: PGtkObject): gpointer{.cdecl, 
-    importc, dynlib: gtklib.}
-proc gtk_object_set_data_by_id*(anObject: PGtkObject, data_id: TGQuark, 
-                                data: gpointer){.cdecl, importc, dynlib: gtklib.}
-proc gtk_object_set_data_by_id_full*(anObject: PGtkObject, data_id: TGQuark, 
-                                     data: gpointer, destroy: TGtkDestroyNotify){.
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_object_get_data_by_id*(anObject: PGtkObject, data_id: TGQuark): gpointer{.
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_object_remove_data_by_id*(anObject: PGtkObject, data_id: TGQuark){.
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_object_remove_no_notify_by_id*(anObject: PGtkObject, key_id: TGQuark){.
-    cdecl, importc, dynlib: gtklib.}
-proc gtk_object_data_try_key*(str: cstring): TGQuark{.cdecl, importc, dynlib: gtklib.}
-proc gtk_object_data_force_id*(str: cstring): TGQuark{.cdecl, importc, dynlib: gtklib.}
-proc gtk_object_get*(anObject: PGtkObject, first_property_name: cstring){.cdecl, 
-    importc, varargs, dynlib: gtklib.}
-proc gtk_object_set*(anObject: PGtkObject, first_property_name: cstring){.cdecl, 
-    importc, varargs, dynlib: gtklib.}
-proc gtk_object_add_arg_type*(arg_name: cstring, arg_type: TGtkType, 
-                              arg_flags: guint, arg_id: guint){.cdecl, 
-    importc, dynlib: gtklib.}
-
-
-type
-  PGtkFileChooser* = pointer
-  PPGtkFileChooser* = ptr PGtkFileChooser
+proc reference*(anObject: PObject): PObject{.cdecl, importc: "gtk_object_ref", 
+    dynlib: lib.}
+proc unref*(anObject: PObject){.cdecl, importc: "gtk_object_unref", 
+                                       dynlib: lib.}
+proc weakref*(anObject: PObject, notify: TDestroyNotify, data: gpointer){.
+    cdecl, importc: "gtk_object_weakref", dynlib: lib.}
+proc weakunref*(anObject: PObject, notify: TDestroyNotify, data: gpointer){.
+    cdecl, importc: "gtk_object_weakunref", dynlib: lib.}
+proc set_data*(anObject: PObject, key: cstring, data: gpointer){.cdecl, 
+    importc: "gtk_object_set_data", dynlib: lib.}
+proc set_data_full*(anObject: PObject, key: cstring, data: gpointer, 
+                           destroy: TDestroyNotify){.
+    importc: "gtk_object_set_data_full", cdecl, dynlib: lib.}
+proc remove_data*(anObject: PObject, key: cstring){.cdecl, 
+    importc: "gtk_object_remove_data", dynlib: lib.}
+proc get_data*(anObject: PObject, key: cstring): gpointer{.cdecl, 
+    importc: "gtk_object_get_data", dynlib: lib.}
+proc remove_no_notify*(anObject: PObject, key: cstring){.cdecl, 
+    importc: "gtk_object_remove_no_notify", dynlib: lib.}
+proc set_user_data*(anObject: PObject, data: gpointer){.cdecl, 
+    importc: "gtk_object_set_user_data", dynlib: lib.}
+proc get_user_data*(anObject: PObject): gpointer{.cdecl, 
+    importc: "gtk_object_get_user_data", dynlib: lib.}
+proc set_data_by_id*(anObject: PObject, data_id: TGQuark, data: gpointer){.
+    cdecl, importc: "gtk_object_set_data_by_id", dynlib: lib.}
+proc set_data_by_id_full*(anObject: PObject, data_id: TGQuark, 
+                                 data: gpointer, destroy: TDestroyNotify){.
+    cdecl, importc: "gtk_object_set_data_by_id_full", dynlib: lib.}
+proc get_data_by_id*(anObject: PObject, data_id: TGQuark): gpointer{.
+    cdecl, importc: "gtk_object_get_data_by_id", dynlib: lib.}
+proc remove_data_by_id*(anObject: PObject, data_id: TGQuark){.cdecl, 
+    importc: "gtk_object_remove_data_by_id", dynlib: lib.}
+proc remove_no_notify_by_id*(anObject: PObject, key_id: TGQuark){.cdecl, 
+    importc: "gtk_object_remove_no_notify_by_id", dynlib: lib.}
+proc object_data_try_key*(str: cstring): TGQuark{.cdecl, 
+    importc: "gtk_object_data_try_key", dynlib: lib.}
+proc object_data_force_id*(str: cstring): TGQuark{.cdecl, 
+    importc: "gtk_object_data_force_id", dynlib: lib.}
+proc get*(anObject: PObject, first_property_name: cstring){.cdecl, 
+    importc: "gtk_object_get", varargs, dynlib: lib.}
+proc set*(anObject: PObject, first_property_name: cstring){.cdecl, 
+    importc: "gtk_object_set", varargs, dynlib: lib.}
+proc object_add_arg_type*(arg_name: cstring, arg_type: TType, arg_flags: guint, 
+                          arg_id: guint){.cdecl, 
+    importc: "gtk_object_add_arg_type", dynlib: lib.}
 
 type 
-  PGtkFileFilter* = pointer
-  PPGtkFileFilter* = ref PGtkFileFilter
-  PGtkFileFilterFlags* = ref TGtkFileFilterFlags
-  TGtkFileFilterFlags* = enum 
-    GTK_FILE_FILTER_FILENAME = 1 shl 0, GTK_FILE_FILTER_URI = 1 shl 1, 
-    GTK_FILE_FILTER_DISPLAY_NAME = 1 shl 2, GTK_FILE_FILTER_MIME_TYPE = 1 shl 3
-  PGtkFileFilterInfo* = ref TGtkFileFilterInfo
-  TGtkFileFilterInfo* {.final, pure.} = object 
-    contains*: TGtkFileFilterFlags
+  TFileFilter {.pure, final.} = object
+  PFileFilter* = ptr TFileFilter
+  PPGtkFileFilter* = ptr PFileFilter
+  PFileFilterFlags* = ptr TFileFilterFlags
+  TFileFilterFlags* = enum 
+    FILE_FILTER_FILENAME = 1 shl 0, FILE_FILTER_URI = 1 shl 1, 
+    FILE_FILTER_DISPLAY_NAME = 1 shl 2, FILE_FILTER_MIME_TYPE = 1 shl 3
+  PFileFilterInfo* = ptr TFileFilterInfo
+  TFileFilterInfo*{.final, pure.} = object 
+    contains*: TFileFilterFlags
     filename*: cstring
     uri*: cstring
     display_name*: cstring
     mime_type*: cstring
 
-  TGtkFileFilterFunc* = proc (filter_info: PGtkFileFilterInfo, data: gpointer): gboolean{.
+  TFileFilterFunc* = proc (filter_info: PFileFilterInfo, data: gpointer): gboolean{.
       cdecl.}
 
-proc GTK_TYPE_FILE_FILTER*(): GType
-proc GTK_FILE_FILTER*(obj: pointer): PGtkFileFilter
-proc GTK_IS_FILE_FILTER*(obj: pointer): gboolean
-proc gtk_file_filter_get_type*(): GType{.cdecl, dynlib: gtklib, 
-    importc: "gtk_file_filter_get_type".}
-proc gtk_file_filter_new*(): PGtkFileFilter{.cdecl, dynlib: gtklib, 
-    importc: "gtk_file_filter_new".}
-proc gtk_file_filter_set_name*(filter: PGtkFileFilter, name: cstring){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_filter_set_name".}
-proc gtk_file_filter_get_name*(filter: PGtkFileFilter): cstring{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_filter_get_name".}
-proc gtk_file_filter_add_mime_type*(filter: PGtkFileFilter, mime_type: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_file_filter_add_mime_type".}
-proc gtk_file_filter_add_pattern*(filter: PGtkFileFilter, pattern: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_file_filter_add_pattern".}
-proc gtk_file_filter_add_custom*(filter: PGtkFileFilter, 
-                                 needed: TGtkFileFilterFlags, 
-                                 func: TGtkFileFilterFunc, data: gpointer, 
-                                 notify: TGDestroyNotify){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_filter_add_custom".}
-proc gtk_file_filter_get_needed*(filter: PGtkFileFilter): TGtkFileFilterFlags{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_filter_get_needed".}
-proc gtk_file_filter_filter*(filter: PGtkFileFilter, 
-                             filter_info: PGtkFileFilterInfo): gboolean{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_filter_filter".}
-
-proc GTK_TYPE_FILE_FILTER(): GType = 
-  result = gtk_file_filter_get_type()
-
-proc GTK_FILE_FILTER(obj: pointer): PGtkFileFilter = 
-  result = cast[PGtkFileFilter](G_TYPE_CHECK_INSTANCE_CAST(obj, 
-                                GTK_TYPE_FILE_FILTER()))
-
-proc GTK_IS_FILE_FILTER(obj: pointer): gboolean = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_FILE_FILTER())
-
-
-proc gtk_file_chooser_get_type*():GType {.
-  cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_type".}
-
-proc gtk_file_chooser_error_quark*(): TGQuark {.
-  cdecl, dynlib: gtklib, importc: "gtk_file_chooser_error_quark".}
-
-proc GTK_TYPE_FILE_CHOOSER*(): GType =
-  result = gtk_file_chooser_get_type()
-
-proc GTK_FILE_CHOOSER*(obj: pointer): PGtkFileChooser =
-  result = cast[PGtkFileChooser](G_TYPE_CHECK_INSTANCE_CAST(obj, 
-    GTK_TYPE_FILE_CHOOSER()))
-
-proc GTK_IS_FILE_CHOOSER*(obj: pointer): gboolean =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GTK_TYPE_FILE_CHOOSER())
-
-proc gtk_file_chooser_set_action*(chooser: PGtkFileChooser, 
-                                  action: TGtkFileChooserAction){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_set_action".}
-proc gtk_file_chooser_get_action*(chooser: PGtkFileChooser): TGtkFileChooserAction{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_action".}
-proc gtk_file_chooser_set_local_only*(chooser: PGtkFileChooser, 
-                                      local_only: gboolean){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_set_local_only".}
-proc gtk_file_chooser_get_local_only*(chooser: PGtkFileChooser): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_local_only".}
-proc gtk_file_chooser_set_select_multiple*(chooser: PGtkFileChooser, 
-    select_multiple: gboolean){.cdecl, dynlib: gtklib, 
-                                importc: "gtk_file_chooser_set_select_multiple".}
-proc gtk_file_chooser_get_select_multiple*(chooser: PGtkFileChooser): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_select_multiple".}
-proc gtk_file_chooser_set_current_name*(chooser: PGtkFileChooser, name: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_set_current_name".}
-proc gtk_file_chooser_get_filename*(chooser: PGtkFileChooser): cstring{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_get_filename".}
-proc gtk_file_chooser_set_filename*(chooser: PGtkFileChooser, filename: cstring): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_set_filename".}
-proc gtk_file_chooser_select_filename*(chooser: PGtkFileChooser, 
-                                       filename: cstring): gboolean{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_select_filename".}
-proc gtk_file_chooser_unselect_filename*(chooser: PGtkFileChooser, 
-    filename: cstring){.cdecl, dynlib: gtklib, 
-                        importc: "gtk_file_chooser_unselect_filename".}
-proc gtk_file_chooser_select_all*(chooser: PGtkFileChooser){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_select_all".}
-proc gtk_file_chooser_unselect_all*(chooser: PGtkFileChooser){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_unselect_all".}
-proc gtk_file_chooser_get_filenames*(chooser: PGtkFileChooser): PGSList{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_get_filenames".}
-proc gtk_file_chooser_set_current_folder*(chooser: PGtkFileChooser, 
-    filename: cstring): gboolean{.cdecl, dynlib: gtklib, 
-                                 importc: "gtk_file_chooser_set_current_folder".}
-proc gtk_file_chooser_get_current_folder*(chooser: PGtkFileChooser): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_current_folder".}
-proc gtk_file_chooser_get_uri*(chooser: PGtkFileChooser): cstring{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_get_uri".}
-proc gtk_file_chooser_set_uri*(chooser: PGtkFileChooser, uri: cstring): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_set_uri".}
-proc gtk_file_chooser_select_uri*(chooser: PGtkFileChooser, uri: cstring): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_select_uri".}
-proc gtk_file_chooser_unselect_uri*(chooser: PGtkFileChooser, uri: cstring){.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_unselect_uri".}
-proc gtk_file_chooser_get_uris*(chooser: PGtkFileChooser): PGSList{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_get_uris".}
-proc gtk_file_chooser_set_current_folder_uri*(chooser: PGtkFileChooser, 
-    uri: cstring): gboolean{.cdecl, dynlib: gtklib, 
-                            importc: "gtk_file_chooser_set_current_folder_uri".}
-proc gtk_file_chooser_get_current_folder_uri*(chooser: PGtkFileChooser): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_current_folder_uri".}
-proc gtk_file_chooser_set_preview_widget*(chooser: PGtkFileChooser, 
-    preview_widget: PGtkWidget){.cdecl, dynlib: gtklib, 
-                                 importc: "gtk_file_chooser_set_preview_widget".}
-proc gtk_file_chooser_get_preview_widget*(chooser: PGtkFileChooser): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_preview_widget".}
-proc gtk_file_chooser_set_preview_widget_active*(chooser: PGtkFileChooser, 
-    active: gboolean){.cdecl, dynlib: gtklib, 
+proc TYPE_FILE_FILTER*(): GType
+proc FILE_FILTER*(obj: pointer): PFileFilter
+proc IS_FILE_FILTER*(obj: pointer): gboolean
+proc file_filter_get_type*(): GType{.cdecl, dynlib: lib, 
+                                     importc: "gtk_file_filter_get_type".}
+proc file_filter_new*(): PFileFilter{.cdecl, dynlib: lib, 
+                                      importc: "gtk_file_filter_new".}
+proc set_name*(filter: PFileFilter, name: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_file_filter_set_name".}
+proc get_name*(filter: PFileFilter): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_file_filter_get_name".}
+proc add_mime_type*(filter: PFileFilter, mime_type: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_file_filter_add_mime_type".}
+proc add_pattern*(filter: PFileFilter, pattern: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_file_filter_add_pattern".}
+proc add_custom*(filter: PFileFilter, needed: TFileFilterFlags, 
+                             func: TFileFilterFunc, data: gpointer, 
+                             notify: TGDestroyNotify){.cdecl, dynlib: lib, 
+    importc: "gtk_file_filter_add_custom".}
+proc get_needed*(filter: PFileFilter): TFileFilterFlags{.cdecl, 
+    dynlib: lib, importc: "gtk_file_filter_get_needed".}
+proc filter*(filter: PFileFilter, filter_info: PFileFilterInfo): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_filter_filter".}
+proc TYPE_FILE_FILTER(): GType = 
+  result = file_filter_get_type()
+
+proc FILE_FILTER(obj: pointer): PFileFilter = 
+  result = cast[PFileFilter](G_TYPE_CHECK_INSTANCE_CAST(obj, TYPE_FILE_FILTER()))
+
+proc IS_FILE_FILTER(obj: pointer): gboolean = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_FILE_FILTER())
+
+proc file_chooser_get_type*(): GType{.cdecl, dynlib: lib, 
+                                      importc: "gtk_file_chooser_get_type".}
+proc file_chooser_error_quark*(): TGQuark{.cdecl, dynlib: lib, 
+    importc: "gtk_file_chooser_error_quark".}
+proc TYPE_FILE_CHOOSER*(): GType = 
+  result = file_chooser_get_type()
+
+proc FILE_CHOOSER*(obj: pointer): PFileChooser = 
+  result = cast[PFileChooser](G_TYPE_CHECK_INSTANCE_CAST(obj, 
+      TYPE_FILE_CHOOSER()))
+
+proc IS_FILE_CHOOSER*(obj: pointer): gboolean = 
+  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, TYPE_FILE_CHOOSER())
+
+proc set_action*(chooser: PFileChooser, action: TFileChooserAction){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_action".}
+proc get_action*(chooser: PFileChooser): TFileChooserAction{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_action".}
+proc set_local_only*(chooser: PFileChooser, local_only: gboolean){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_local_only".}
+proc get_local_only*(chooser: PFileChooser): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_local_only".}
+proc set_select_multiple*(chooser: PFileChooser, 
+                                       select_multiple: gboolean){.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_set_select_multiple".}
+proc get_select_multiple*(chooser: PFileChooser): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_select_multiple".}
+proc set_current_name*(chooser: PFileChooser, name: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_current_name".}
+proc get_filename*(chooser: PFileChooser): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_filename".}
+proc set_filename*(chooser: PFileChooser, filename: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_filename".}
+proc select_filename*(chooser: PFileChooser, filename: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_select_filename".}
+proc unselect_filename*(chooser: PFileChooser, filename: cstring){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_unselect_filename".}
+proc select_all*(chooser: PFileChooser){.cdecl, dynlib: lib, 
+    importc: "gtk_file_chooser_select_all".}
+proc unselect_all*(chooser: PFileChooser){.cdecl, dynlib: lib, 
+    importc: "gtk_file_chooser_unselect_all".}
+proc get_filenames*(chooser: PFileChooser): PGSList{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_filenames".}
+proc set_current_folder*(chooser: PFileChooser, filename: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_current_folder".}
+proc get_current_folder*(chooser: PFileChooser): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_current_folder".}
+proc get_uri*(chooser: PFileChooser): cstring{.cdecl, dynlib: lib, 
+    importc: "gtk_file_chooser_get_uri".}
+proc set_uri*(chooser: PFileChooser, uri: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_uri".}
+proc select_uri*(chooser: PFileChooser, uri: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_select_uri".}
+proc unselect_uri*(chooser: PFileChooser, uri: cstring){.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_unselect_uri".}
+proc get_uris*(chooser: PFileChooser): PGSList{.cdecl, dynlib: lib, 
+    importc: "gtk_file_chooser_get_uris".}
+proc set_current_folder_uri*(chooser: PFileChooser, uri: cstring): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_current_folder_uri".}
+proc get_current_folder_uri*(chooser: PFileChooser): cstring{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_get_current_folder_uri".}
+proc set_preview_widget*(chooser: PFileChooser, 
+                                      preview_widget: PWidget){.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_set_preview_widget".}
+proc get_preview_widget*(chooser: PFileChooser): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_preview_widget".}
+proc set_preview_widget_active*(chooser: PFileChooser, 
+    active: gboolean){.cdecl, dynlib: lib, 
                        importc: "gtk_file_chooser_set_preview_widget_active".}
-proc gtk_file_chooser_get_preview_widget_active*(chooser: PGtkFileChooser): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_preview_widget_active".}
-proc gtk_file_chooser_set_use_preview_label*(chooser: PGtkFileChooser, 
-    use_label: gboolean){.cdecl, dynlib: gtklib, 
+proc get_preview_widget_active*(chooser: PFileChooser): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_get_preview_widget_active".}
+proc set_use_preview_label*(chooser: PFileChooser, 
+    use_label: gboolean){.cdecl, dynlib: lib, 
                           importc: "gtk_file_chooser_set_use_preview_label".}
-proc gtk_file_chooser_get_use_preview_label*(chooser: PGtkFileChooser): gboolean{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_use_preview_label".}
-proc gtk_file_chooser_get_preview_filename*(chooser: PGtkFileChooser): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_preview_filename".}
-proc gtk_file_chooser_get_preview_uri*(chooser: PGtkFileChooser): cstring{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_preview_uri".}
-proc gtk_file_chooser_set_extra_widget*(chooser: PGtkFileChooser, 
-                                        extra_widget: PGtkWidget){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_set_extra_widget".}
-proc gtk_file_chooser_get_extra_widget*(chooser: PGtkFileChooser): PGtkWidget{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_extra_widget".}
-proc gtk_file_chooser_add_filter*(chooser: PGtkFileChooser, 
-                                  filter: PGtkFileFilter){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_add_filter".}
-proc gtk_file_chooser_remove_filter*(chooser: PGtkFileChooser, 
-                                     filter: PGtkFileFilter){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_remove_filter".}
-proc gtk_file_chooser_list_filters*(chooser: PGtkFileChooser): PGSList{.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_list_filters".}
-proc gtk_file_chooser_set_filter*(chooser: PGtkFileChooser, 
-                                  filter: PGtkFileFilter){.cdecl, 
-    dynlib: gtklib, importc: "gtk_file_chooser_set_filter".}
-proc gtk_file_chooser_get_filter*(chooser: PGtkFileChooser): PGtkFileFilter{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_get_filter".}
-proc gtk_file_chooser_add_shortcut_folder*(chooser: PGtkFileChooser, 
-    folder: cstring, error: pointer): gboolean{.cdecl, dynlib: gtklib, 
-    importc: "gtk_file_chooser_add_shortcut_folder".}
-proc gtk_file_chooser_remove_shortcut_folder*(chooser: PGtkFileChooser, 
-    folder: cstring, error: pointer): gboolean{.cdecl, dynlib: gtklib, 
+proc get_use_preview_label*(chooser: PFileChooser): gboolean{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_get_use_preview_label".}
+proc get_preview_filename*(chooser: PFileChooser): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_preview_filename".}
+proc get_preview_uri*(chooser: PFileChooser): cstring{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_preview_uri".}
+proc set_extra_widget*(chooser: PFileChooser, extra_widget: PWidget){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_extra_widget".}
+proc get_extra_widget*(chooser: PFileChooser): PWidget{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_extra_widget".}
+proc add_filter*(chooser: PFileChooser, filter: PFileFilter){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_add_filter".}
+proc remove_filter*(chooser: PFileChooser, filter: PFileFilter){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_remove_filter".}
+proc list_filters*(chooser: PFileChooser): PGSList{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_list_filters".}
+proc set_filter*(chooser: PFileChooser, filter: PFileFilter){.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_set_filter".}
+proc get_filter*(chooser: PFileChooser): PFileFilter{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_get_filter".}
+proc add_shortcut_folder*(chooser: PFileChooser, folder: cstring, 
+                                       error: pointer): gboolean{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_add_shortcut_folder".}
+proc remove_shortcut_folder*(chooser: PFileChooser, 
+    folder: cstring, error: pointer): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_file_chooser_remove_shortcut_folder".}
-proc gtk_file_chooser_list_shortcut_folders*(chooser: PGtkFileChooser): PGSList{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_list_shortcut_folders".}
-proc gtk_file_chooser_add_shortcut_folder_uri*(chooser: PGtkFileChooser, 
-    uri: cstring, error: pointer): gboolean{.cdecl, dynlib: gtklib, 
-    importc: "gtk_file_chooser_add_shortcut_folder_uri".}
-proc gtk_file_chooser_remove_shortcut_folder_uri*(chooser: PGtkFileChooser, 
-    uri: cstring, error: pointer): gboolean{.cdecl, dynlib: gtklib, 
+proc list_shortcut_folders*(chooser: PFileChooser): PGSList{.cdecl, 
+    dynlib: lib, importc: "gtk_file_chooser_list_shortcut_folders".}
+proc add_shortcut_folder_uri*(chooser: PFileChooser, uri: cstring, 
+    error: pointer): gboolean{.cdecl, dynlib: lib, importc: "gtk_file_chooser_add_shortcut_folder_uri".}
+proc remove_shortcut_folder_uri*(chooser: PFileChooser, 
+    uri: cstring, error: pointer): gboolean{.cdecl, dynlib: lib, 
     importc: "gtk_file_chooser_remove_shortcut_folder_uri".}
-proc gtk_file_chooser_list_shortcut_folder_uris*(chooser: PGtkFileChooser): PGSList{.
-    cdecl, dynlib: gtklib, importc: "gtk_file_chooser_list_shortcut_folder_uris".}
-
-proc gtk_file_chooser_set_do_overwrite_confirmation*(chooser: PGtkFileChooser,
-    do_overwrite_confirmation: gboolean) {.cdecl, dynlib: gtklib, 
+proc list_shortcut_folder_uris*(chooser: PFileChooser): PGSList{.
+    cdecl, dynlib: lib, importc: "gtk_file_chooser_list_shortcut_folder_uris".}
+proc set_do_overwrite_confirmation*(chooser: PFileChooser, 
+    do_overwrite_confirmation: gboolean){.cdecl, dynlib: lib, 
     importc: "gtk_file_chooser_set_do_overwrite_confirmation".}
 
-proc gtk_nimrod_init*() =
-  var
-    cmdLine {.importc: "cmdLine".}: array [0..255, cstring]
-    cmdCount {.importc: "cmdCount".}: cint
-  gtk_init(addr(cmdLine), addr(cmdCount))
+proc nimrod_init*() = 
+  var 
+    cmdLine{.importc: "cmdLine".}: array[0..255, cstring]
+    cmdCount{.importc: "cmdCount".}: cint
+  init(addr(cmdLine), addr(cmdCount))
diff --git a/lib/wrappers/gtk/gtkglext.nim b/lib/wrappers/gtk/gtkglext.nim
deleted file mode 100755
index 38da5d25e..000000000
--- a/lib/wrappers/gtk/gtkglext.nim
+++ /dev/null
@@ -1,50 +0,0 @@
-{.deadCodeElim: on.}
-
-import 
-  Glib2, Gdk2, Gtk2, GdkGLExt
-
-const 
-  GtkGLExtLib* = if defined(WIN32): "libgtkglext-win32-1.0-0.dll" else: "libgtkglext-x11-1.0.so"
-
-const 
-  HEADER_GTKGLEXT_MAJOR_VERSION* = 1
-  HEADER_GTKGLEXT_MINOR_VERSION* = 0
-  HEADER_GTKGLEXT_MICRO_VERSION* = 6
-  HEADER_GTKGLEXT_INTERFACE_AGE* = 4
-  HEADER_GTKGLEXT_BINARY_AGE* = 6
-
-proc gtk_gl_parse_args*(argc: Plongint, argv: PPPChar): gboolean{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_gl_parse_args".}
-proc gtk_gl_init_check*(argc: Plongint, argv: PPPChar): gboolean{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_gl_init_check".}
-proc gtk_gl_init*(argc: Plongint, argv: PPPChar){.cdecl, dynlib: GtkGLExtLib, 
-    importc: "gtk_gl_init".}
-proc gtk_widget_set_gl_capability*(widget: PGtkWidget, glconfig: PGdkGLConfig, 
-                                   share_list: PGdkGLContext, direct: gboolean, 
-                                   render_type: int): gboolean{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_widget_set_gl_capability".}
-proc gtk_widget_is_gl_capable*(widget: PGtkWidget): gboolean{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_widget_is_gl_capable".}
-proc gtk_widget_get_gl_config*(widget: PGtkWidget): PGdkGLConfig{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_widget_get_gl_config".}
-proc gtk_widget_create_gl_context*(widget: PGtkWidget, 
-                                   share_list: PGdkGLContext, direct: gboolean, 
-                                   render_type: int): PGdkGLContext{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_widget_create_gl_context".}
-proc gtk_widget_get_gl_context*(widget: PGtkWidget): PGdkGLContext{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_widget_get_gl_context".}
-proc gtk_widget_get_gl_window*(widget: PGtkWidget): PGdkGLWindow{.cdecl, 
-    dynlib: GtkGLExtLib, importc: "gtk_widget_get_gl_window".}
-proc gtk_widget_get_gl_drawable*(widget: PGtkWidget): PGdkGLDrawable = 
-  nil
-
-proc HEADER_GTKGLEXT_CHECK_VERSION*(major, minor, micro: guint): bool = 
-  result = (HEADER_GTKGLEXT_MAJOR_VERSION > major) or
-      ((HEADER_GTKGLEXT_MAJOR_VERSION == major) and
-      (HEADER_GTKGLEXT_MINOR_VERSION > minor)) or
-      ((HEADER_GTKGLEXT_MAJOR_VERSION == major) and
-      (HEADER_GTKGLEXT_MINOR_VERSION == minor) and
-      (HEADER_GTKGLEXT_MICRO_VERSION >= micro))
-
-proc gtk_widget_get_gl_drawable*(widget: PGtkWidget): PGdkGLDrawable = 
-  result = GDK_GL_DRAWABLE(gtk_widget_get_gl_window(widget))
diff --git a/lib/wrappers/gtk/gtkhtml.nim b/lib/wrappers/gtk/gtkhtml.nim
deleted file mode 100755
index c9ccc3595..000000000
--- a/lib/wrappers/gtk/gtkhtml.nim
+++ /dev/null
@@ -1,499 +0,0 @@
-{.deadCodeElim: on.}
-
-import 
-  gtk2, glib2, atk, pango, gdk2pixbuf, gdk2
-
-when defined(windows): 
-  {.define: GTK_WINDOWING_WIN32.}
-  const 
-    gtkhtmllib = "libgtkhtml-win32-2.0-0.dll"
-else: 
-  const 
-    gtkhtmllib = "libgtkhtml-2.so"
-const 
-  DOM_UNSPECIFIED_EVENT_TYPE_ERR* = 0
-  DOM_INDEX_SIZE_ERR* = 1
-  DOM_DOMSTRING_SIZE_ERR* = 2
-  DOM_HIERARCHY_REQUEST_ERR* = 3
-  DOM_WRONG_DOCUMENT_ERR* = 4
-  DOM_INVALID_CHARACTER_ERR* = 5
-  DOM_NO_DATA_ALLOWED_ERR* = 6
-  DOM_NO_MODIFICATION_ALLOWED_ERR* = 7
-  DOM_NOT_FOUND_ERR* = 8
-  DOM_NOT_SUPPORTED_ERR* = 9
-  DOM_INUSE_ATTRIBUTE_ERR* = 10
-  DOM_INVALID_STATE_ERR* = 11
-  DOM_SYNTAX_ERR* = 12
-  DOM_INVALID_MODIFICATION_ERR* = 13
-  DOM_NAMESPACE_ERR* = 14
-  DOM_INVALID_ACCESS_ERR* = 15
-  DOM_NO_EXCEPTION* = 255
-  DOM_ELEMENT_NODE* = 1
-  DOM_ATTRIBUTE_NODE* = 2
-  DOM_TEXT_NODE* = 3
-  DOM_CDATA_SECTION_NODE* = 4
-  DOM_ENTITY_REFERENCE_NODE* = 5
-  DOM_ENTITY_NODE* = 6
-  DOM_PROCESSING_INSTRUCTION_NODE* = 7
-  DOM_COMMENT_NODE* = 8
-  DOM_DOCUMENT_NODE* = 9
-  DOM_DOCUMENT_TYPE_NODE* = 10
-  DOM_DOCUMENT_FRAGMENT_NODE* = 11
-  DOM_NOTATION_NODE* = 12
-  bm_HtmlFontSpecification_weight = 0x0000000F
-  bp_HtmlFontSpecification_weight = 0
-  bm_HtmlFontSpecification_style = 0x00000030
-  bp_HtmlFontSpecification_style = 4
-  bm_HtmlFontSpecification_variant = 0x000000C0
-  bp_HtmlFontSpecification_variant = 6
-  bm_HtmlFontSpecification_stretch = 0x00000F00
-  bp_HtmlFontSpecification_stretch = 8
-  bm_HtmlFontSpecification_decoration = 0x00007000
-  bp_HtmlFontSpecification_decoration = 12
-
-type 
-  TDomString* = gchar
-  TDomBoolean* = gboolean
-  TDomException* = gushort
-  TDomTimeStamp* = guint64
-  PDomNode* = ptr TDomNode
-  TDomNode* = object of TGObject
-    xmlnode*: pointer
-    style*: pointer
-
-  PDomNodeClass* = ptr TDomNodeClass
-  TDomNodeClass* = object of TGObjectClass
-    `get_nodeName`*: proc (node: PDomNode): PDomString{.cdecl.}
-    `get_nodeValue`*: proc (node: PDomNode, exc: PDomException): PDomString {.
-        cdecl.}
-    `set_nodeValue`*: proc (node: PDomNode, value: PDomString, 
-                            exc: PDomException): PDomString{.cdecl.}
-
-  PDomDocument* = ptr TDomDocument
-  TDomDocument* {.final, pure.} = object 
-    parent*: PDomNode
-    iterators*: PGSList
-
-  PDomDocumentClass* = ptr TDomDocumentClass
-  TDomDocumentClass* {.final, pure.} = object 
-    parent_class*: PDomNodeClass
-
-  PHtmlFocusIterator* = ptr THtmlFocusIterator
-  THtmlFocusIterator* = object of TGObject
-    document*: PDomDocument
-    current_node*: PDomNode
-
-  PHtmlFocusIteratorClass* = ptr THtmlFocusIteratorClass
-  THtmlFocusIteratorClass* = object of TGObjectClass
-
-  THtmlParserType* = enum 
-    HTML_PARSER_TYPE_HTML, HTML_PARSER_TYPE_XML
-  PHtmlParser* = ptr THtmlParser
-  THtmlParser* = object of TGObject
-    parser_type*: THtmlParserType
-    document*: PHtmlDocument
-    stream*: PHtmlStream
-    xmlctxt*: xmlParserCtxtPtr
-    res*: int32
-    chars*: array[0..9, char]
-    blocking*: gboolean
-    blocking_node*: PDomNode
-
-  PHtmlParserClass* = ptr THtmlParserClass
-  THtmlParserClass* = object of TGtkObjectClass
-    done_parsing*: proc (parser: PHtmlParser){.cdecl.}
-    new_node*: proc (parser: PHtmlParser, node: PDomNode)
-    parsed_document_node*: proc (parser: PHtmlParser, document: PDomDocument)
-
-  PHtmlStream* = ptr THtmlStream
-  THtmlStreamCloseFunc* = proc (stream: PHtmlStream, user_data: gpointer){.cdecl.}
-  THtmlStreamWriteFunc* = proc (stream: PHtmlStream, buffer: Pgchar, 
-                                size: guint, user_data: gpointer){.cdecl.}
-  THtmlStreamCancelFunc* = proc (stream: PHtmlStream, user_data: gpointer, 
-                                 cancel_data: gpointer){.cdecl.}
-  THtmlStream* = object of TGObject
-    write_func*: THtmlStreamWriteFunc
-    close_func*: THtmlStreamCloseFunc
-    cancel_func*: THtmlStreamCancelFunc
-    user_data*: gpointer
-    cancel_data*: gpointer
-    written*: gint
-    mime_type*: cstring
-
-  PHtmlStreamClass* = ptr THtmlStreamClass
-  THtmlStreamClass* = object of TGObjectClass
-
-  THtmlStreamBufferCloseFunc* = proc (str: Pgchar, len: gint, 
-                                      user_data: gpointer){.cdecl.}
-  PGtkHtmlContext* = ptr TGtkHtmlContext
-  TGtkHtmlContext* = object of TGObject
-    documents*: PGSList
-    standard_font*: PHtmlFontSpecification
-    fixed_font*: PHtmlFontSpecification
-    debug_painting*: gboolean
-
-  PGtkHtmlContextClass* = ptr TGtkHtmlContextClass
-  TGtkHtmlContextClass* = object of TGObjectClass
-
-  THtmlDocumentState* = enum 
-    HTML_DOCUMENT_STATE_DONE, HTML_DOCUMENT_STATE_PARSING
-  PHtmlDocument* = ptr THtmlDocument
-  THtmlDocument* = object of TGObject
-    stylesheets*: PGSList
-    current_stream*: PHtmlStream
-    state*: THtmlDocumentState
-
-  PHtmlDocumentClass* = ptr THtmlDocumentClass
-  THtmlDocumentClass* = object of TGObjectClass
-    request_url*: proc (document: PHtmlDocument, url: Pgchar, 
-                        stream: PHtmlStream){.cdecl.}
-    link_clicked*: proc (document: PHtmlDocument, url: Pgchar){.cdecl.}
-    set_base*: proc (document: PHtmlDocument, url: Pgchar){.cdecl.}
-    title_changed*: proc (document: PHtmlDocument, new_title: Pgchar){.cdecl.}
-    submit*: proc (document: PHtmlDocument, `method`: Pgchar, url: Pgchar, 
-                   encoding: Pgchar){.cdecl.}
-
-  PHtmlView* = ptr THtmlView
-  THtmlView* = object of TGtkLayout
-    document*: PHtmlDocument
-    node_table*: PGHashTable
-    relayout_idle_id*: guint
-    relayout_timeout_id*: guint
-    mouse_down_x*: gint
-    mouse_down_y*: gint
-    mouse_detail*: gint
-    sel_start_ypos*: gint
-    sel_start_index*: gint
-    sel_end_ypos*: gint
-    sel_end_index*: gint
-    sel_flag*: gboolean
-    sel_backwards*: gboolean
-    sel_start_found*: gboolean
-    sel_list*: PGSList
-    jump_to_anchor*: pgchar
-    magnification*: gdouble
-    magnification_modified*: gboolean
-    on_url*: gboolean
-
-  PHtmlViewClass* = ptr THtmlViewClass
-  THtmlViewClass* = object of TGtkLayoutClass
-    move_cursor*: proc (html_view: PHtmlView, step: TGtkMovementStep, 
-                        count: gint, extend_selection: gboolean){.cdecl.}
-    on_url*: proc (html_view: PHtmlView, url: Pgchar)
-    activate*: proc (html_view: PHtmlView)
-    move_focus_out*: proc (html_view: PHtmlView, direction: TGtkDirectionType)
-
-
-proc DOM_TYPE_NODE*(): GType
-proc DOM_NODE*(theobject: pointer): PDomNode
-proc DOM_NODE_CLASS*(klass: pointer): PDomNodeClass
-proc DOM_IS_NODE*(theobject: pointer): bool
-proc DOM_IS_NODE_CLASS*(klass: pointer): bool
-proc DOM_NODE_GET_CLASS*(obj: pointer): int32
-proc dom_node_get_type*(): GType{.cdecl, dynlib: gtkhtmllib, 
-                                  importc: "dom_node_get_type".}
-proc dom_Node_mkref*(node: pointer): PDomNode{.cdecl, dynlib: gtkhtmllib, 
-    importc: "dom_Node_mkref".}
-proc dom_Node_get_childNodes*(node: PDomNode): PDomNodeList{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_childNodes".}
-proc dom_Node_removeChild*(node: PDomNode, oldChild: PDomNode, 
-                           exc: PDomException): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node_removeChild".}
-proc dom_Node_get_nodeValue*(node: PDomNode, exc: PDomException): PDomString{.
-    cdecl, dynlib: gtkhtmllib, importc: "dom_Node__get_nodeValue".}
-proc dom_Node_get_firstChild*(node: PDomNode): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_firstChild".}
-proc dom_Node_get_nodeName*(node: PDomNode): PDomString{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_nodeName".}
-proc dom_Node_get_attributes*(node: PDomNode): PDomNamedNodeMap{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_attributes".}
-proc dom_Document_get_doctype*(doc: PDomDocument): PDomDocumentType{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Document__get_doctype".}
-proc dom_Node_hasChildNodes*(node: PDomNode): DomBoolean{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node_hasChildNodes".}
-proc dom_Node_get_parentNode*(node: PDomNode): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_parentNode".}
-proc dom_Node_get_nextSibling*(node: PDomNode): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_nextSibling".}
-proc dom_Node_get_nodeType*(node: PDomNode): gushort{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_nodeType".}
-proc dom_Node_hasAttributes*(node: PDomNode): DomBoolean{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node_hasAttributes".}
-proc dom_Node_cloneNode*(node: PDomNode, deep: DomBoolean): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node_cloneNode".}
-proc dom_Node_appendChild*(node: PDomNode, newChild: PDomNode, 
-                           exc: PDomException): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node_appendChild".}
-proc dom_Node_get_localName*(node: PDomNode): PDomString{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_localName".}
-proc dom_Node_get_namespaceURI*(node: PDomNode): PDomString{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_namespaceURI".}
-proc dom_Node_get_previousSibling*(node: PDomNode): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_previousSibling".}
-proc dom_Node_get_lastChild*(node: PDomNode): PDomNode{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_lastChild".}
-proc dom_Node_set_nodeValue*(node: PDomNode, value: PDomString, 
-                             exc: PDomException){.cdecl, dynlib: gtkhtmllib, 
-    importc: "dom_Node__set_nodeValue".}
-proc dom_Node_get_ownerDocument*(node: PDomNode): PDomDocument{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node__get_ownerDocument".}
-proc dom_Node_hasAttributes*(node: PDomNode): gboolean{.cdecl, 
-    dynlib: gtkhtmllib, importc: "dom_Node_hasAttributes".}
-proc DOM_TYPE_DOCUMENT*(): GType
-proc DOM_DOCUMENT*(theobject: pointer): PDomDocument
-proc DOM_DOCUMENT_CLASS*(klass: pointer): PDomDocumentClass
-proc DOM_IS_DOCUMENT*(theobject: pointer): bool
-proc DOM_IS_DOCUMENT_CLASS*(klass: pointer): bool
-proc DOM_DOCUMENT_GET_CLASS*(obj: pointer): PDomDocumentClass
-proc dom_document_get_type*(): GType
-proc dom_Document_get_documentElement*(doc: PDomDocument): PDomElement
-proc dom_Document_createElement*(doc: PDomDocument, tagName: PDomString): PDomElement
-proc dom_Document_createTextNode*(doc: PDomDocument, data: PDomString): PDomText
-proc dom_Document_createComment*(doc: PDomDocument, data: PDomString): PDomComment
-proc dom_Document_importNode*(doc: PDomDocument, importedNode: PDomNode, 
-                              deep: DomBoolean, exc: PDomException): PDomNode
-proc HTML_TYPE_FOCUS_ITERATOR*(): GType
-proc HTML_FOCUS_ITERATOR*(theobject: pointer): PHtmlFocusIterator
-proc HTML_FOCUS_ITERATOR_CLASS*(klass: pointer): PHtmlFocusIteratorClass
-proc HTML_IS_FOCUS_ITERATOR*(theobject: pointer): bool
-proc HTML_IS_FOCUS_ITERATOR_CLASS*(klass: pointer): bool
-proc HTML_FOCUS_ITERATOR_GET_CLASS*(obj: pointer): PHtmlFocusIteratorClass
-proc html_focus_iterator_next_element*(document: PDomDocument, 
-                                       element: PDomElement): PDomElement{.
-    cdecl, dynlib: gtkhtmllib, importc: "html_focus_iterator_next_element".}
-proc html_focus_iterator_prev_element*(document: PDomDocument, 
-                                       element: PDomElement): PDomElement{.
-    cdecl, dynlib: gtkhtmllib, importc: "html_focus_iterator_prev_element".}
-proc HTML_PARSER_TYPE*(): GType
-proc HTML_PARSER*(obj: pointer): PHtmlParser
-proc HTML_PARSER_CLASS*(klass: pointer): PHtmlParserClass
-proc HTML_IS_PARSER*(obj: pointer): bool
-proc html_parser_get_type*(): GType
-proc html_parser_new*(document: PHtmlDocument, parser_type: THtmlParserType): PHtmlParser
-proc HTML_TYPE_STREAM*(): GType
-proc HTML_STREAM*(obj: pointer): PHtmlStream
-proc HTML_STREAM_CLASS*(klass: pointer): PHtmlStreamClass
-proc HTML_IS_STREAM*(obj: pointer): bool
-proc HTML_IS_STREAM_CLASS*(klass: pointer): bool
-proc HTML_STREAM_GET_CLASS*(obj: pointer): PHtmlStreamClass
-proc html_stream_get_type*(): GType{.cdecl, dynlib: gtkhtmllib, 
-                                     importc: "html_stream_get_type".}
-proc html_stream_new*(write_func: THtmlStreamWriteFunc, 
-                      close_func: THtmlStreamCloseFunc, user_data: gpointer): PHtmlStream{.
-    cdecl, dynlib: gtkhtmllib, importc: "html_stream_new".}
-proc html_stream_write*(stream: PHtmlStream, buffer: Pgchar, size: guint){.
-    cdecl, dynlib: gtkhtmllib, importc: "html_stream_write".}
-proc html_stream_close*(stream: PHtmlStream){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_stream_close".}
-proc html_stream_destroy*(stream: PHtmlStream){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_stream_destroy".}
-proc html_stream_get_written*(stream: PHtmlStream): gint{.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_stream_get_written".}
-proc html_stream_cancel*(stream: PHtmlStream){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_stream_cancel".}
-proc html_stream_set_cancel_func*(stream: PHtmlStream, 
-                                  abort_func: THtmlStreamCancelFunc, 
-                                  cancel_data: gpointer){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_stream_set_cancel_func".}
-proc html_stream_get_mime_type*(stream: PHtmlStream): cstring{.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_stream_get_mime_type".}
-proc html_stream_set_mime_type*(stream: PHtmlStream, mime_type: cstring){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_stream_set_mime_type".}
-proc html_stream_buffer_new*(close_func: THtmlStreamBufferCloseFunc, 
-                             user_data: gpointer): PHtmlStream{.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_stream_buffer_new".}
-proc html_event_mouse_move*(view: PHtmlView, event: PGdkEventMotion){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_event_mouse_move".}
-proc html_event_button_press*(view: PHtmlView, button: PGdkEventButton){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_event_button_press".}
-proc html_event_button_release*(view: PHtmlView, event: PGdkEventButton){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_event_button_release".}
-proc html_event_activate*(view: PHtmlView){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_event_activate".}
-proc html_event_key_press*(view: PHtmlView, event: PGdkEventKey): gboolean{.
-    cdecl, dynlib: gtkhtmllib, importc: "html_event_key_press".}
-proc html_event_find_root_box*(self: PHtmlBox, x: gint, y: gint): PHtmlBox{.
-    cdecl, dynlib: gtkhtmllib, importc: "html_event_find_root_box".}
-proc html_selection_start*(view: PHtmlView, event: PGdkEventButton){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_selection_start".}
-proc html_selection_end*(view: PHtmlView, event: PGdkEventButton){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_selection_end".}
-proc html_selection_update*(view: PHtmlView, event: PGdkEventMotion){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_selection_update".}
-proc html_selection_clear*(view: PHtmlView){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_selection_clear".}
-proc html_selection_set*(view: PHtmlView, start: PDomNode, offset: int32, 
-                         len: int32){.cdecl, dynlib: gtkhtmllib, 
-                                      importc: "html_selection_set".}
-proc GTK_HTML_CONTEXT_TYPE*(): GType
-proc GTK_HTML_CONTEXT*(obj: pointer): PGtkHtmlContext
-proc GTK_HTML_CONTEXT_CLASS*(klass: pointer): PGtkHtmlContextClass
-proc GTK_HTML_IS_CONTEXT*(obj: pointer): bool
-proc GTK_HTML_IS_CONTEXT_CLASS*(klass: pointer): bool
-proc gtk_html_context_get_type*(): GType
-proc gtk_html_context_get*(): PGtkHtmlContext
-proc HTML_TYPE_DOCUMENT*(): GType
-proc HTML_DOCUMENT*(obj: pointer): PHtmlDocument
-proc HTML_DOCUMENT_CLASS*(klass: pointer): PHtmlDocumentClass
-proc HTML_IS_DOCUMENT*(obj: pointer): bool
-proc html_document_get_type*(): GType{.cdecl, dynlib: gtkhtmllib, 
-                                       importc: "html_document_get_type".}
-proc html_document_new*(): PHtmlDocument{.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_document_new".}
-proc html_document_open_stream*(document: PHtmlDocument, mime_type: Pgchar): gboolean{.
-    cdecl, dynlib: gtkhtmllib, importc: "html_document_open_stream".}
-proc html_document_write_stream*(document: PHtmlDocument, buffer: Pgchar, 
-                                 len: gint){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_document_write_stream".}
-proc html_document_close_stream*(document: PHtmlDocument){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_document_close_stream".}
-proc html_document_clear*(document: PHtmlDocument){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_document_clear".}
-proc HTML_TYPE_VIEW*(): GType
-proc HTML_VIEW*(obj: pointer): PHtmlView
-proc HTML_VIEW_CLASS*(klass: pointer): PHtmlViewClass
-proc HTML_IS_VIEW*(obj: pointer): bool
-proc html_view_get_type*(): GType{.cdecl, dynlib: gtkhtmllib, 
-                                   importc: "html_view_get_type".}
-proc html_view_new*(): PGtkWidget{.cdecl, dynlib: gtkhtmllib, 
-                                   importc: "html_view_new".}
-proc html_view_set_document*(view: PHtmlView, document: PHtmlDocument){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_view_set_document".}
-proc html_view_jump_to_anchor*(view: PHtmlView, anchor: Pgchar){.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_view_jump_to_anchor".}
-proc html_view_get_magnification*(view: PHtmlView): gdouble{.cdecl, 
-    dynlib: gtkhtmllib, importc: "html_view_get_magnification".}
-proc html_view_set_magnification*(view: PHtmlView, magnification: gdouble){.
-    cdecl, dynlib: gtkhtmllib, importc: "html_view_set_magnification".}
-proc html_view_zoom_in*(view: PHtmlView){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_view_zoom_in".}
-proc html_view_zoom_out*(view: PHtmlView){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_view_zoom_out".}
-proc html_view_zoom_reset*(view: PHtmlView){.cdecl, dynlib: gtkhtmllib, 
-    importc: "html_view_zoom_reset".}
-proc DOM_TYPE_NODE*(): GType = 
-  result = dom_node_get_type()
-
-proc DOM_NODE*(theobject: pointer): PDomNode = 
-  result = G_TYPE_CHECK_INSTANCE_CAST(theobject, DOM_TYPE_NODE(), TDomNode)
-
-proc DOM_NODE_CLASS*(klass: pointer): PDomNodeClass = 
-  result = G_TYPE_CHECK_CLASS_CAST(klass, DOM_TYPE_NODE(), TDomNodeClass)
-
-proc DOM_IS_NODE*(theobject: pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(theobject, DOM_TYPE_NODE())
-
-proc DOM_IS_NODE_CLASS*(klass: pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, DOM_TYPE_NODE())
-
-proc DOM_NODE_GET_CLASS*(obj: pointer): PDomNodeClass = 
-  result = G_TYPE_INSTANCE_GET_CLASS(obj, DOM_TYPE_NODE(), TDomNodeClass)
-
-proc DOM_TYPE_DOCUMENT*(): GType = 
-  result = dom_document_get_type()
-
-proc DOM_DOCUMENT*(theobject: pointer): PDomDocument = 
-  result = G_TYPE_CHECK_INSTANCE_CAST(theobject, DOM_TYPE_DOCUMENT(), TDomDocument)
-
-proc DOM_DOCUMENT_CLASS*(klass: pointer): PDomDocumentClass = 
-  result = G_TYPE_CHECK_CLASS_CAST(klass, DOM_TYPE_DOCUMENT(), TDomDocumentClass)
-
-proc DOM_IS_DOCUMENT*(theobject: pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(theobject, DOM_TYPE_DOCUMENT())
-
-proc DOM_IS_DOCUMENT_CLASS*(klass: pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, DOM_TYPE_DOCUMENT())
-
-proc DOM_DOCUMENT_GET_CLASS*(obj: pointer): PDomDocumentClass = 
-  result = G_TYPE_INSTANCE_GET_CLASS(obj, DOM_TYPE_DOCUMENT(), TDomDocumentClass)
-
-proc HTML_TYPE_FOCUS_ITERATOR*(): GType = 
-  result = html_focus_iterator_get_type()
-
-proc HTML_FOCUS_ITERATOR*(theobject: pointer): PHtmlFocusIterator = 
-  result = G_TYPE_CHECK_INSTANCE_CAST(theobject, HTML_TYPE_FOCUS_ITERATOR(), 
-                                      HtmlFocusIterator)
-
-proc HTML_FOCUS_ITERATOR_CLASS*(klass: pointer): PHtmlFocusIteratorClass = 
-  result = G_TYPE_CHECK_CLASS_CAST(klass, HTML_TYPE_FOCUS_ITERATOR(), 
-                                   HtmlFocusIteratorClass)
-
-proc HTML_IS_FOCUS_ITERATOR*(theobject: pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(theobject, HTML_TYPE_FOCUS_ITERATOR())
-
-proc HTML_IS_FOCUS_ITERATOR_CLASS*(klass: pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, HTML_TYPE_FOCUS_ITERATOR())
-
-proc HTML_FOCUS_ITERATOR_GET_CLASS*(obj: pointer): PHtmlFocusIteratorClass = 
-  result = G_TYPE_INSTANCE_GET_CLASS(obj, HTML_TYPE_FOCUS_ITERATOR(), 
-                                     HtmlFocusIteratorClass)
-
-proc HTML_PARSER_TYPE*(): GType = 
-  result = html_parser_get_type()
-
-proc HTML_PARSER*(obj: pointer): PHtmlParser = 
-  result = GTK_CHECK_CAST(obj, HTML_PARSER_TYPE(), THtmlParser)
-
-proc HTML_PARSER_CLASS*(klass: pointer): PHtmlParserClass = 
-  result = GTK_CHECK_CLASS_CAST(klass, HTML_PARSER_TYPE(), THtmlParserClass)
-
-proc HTML_IS_PARSER*(obj: pointer): bool = 
-  result = GTK_CHECK_TYPE(obj, HTML_PARSER_TYPE())
-
-proc HTML_TYPE_STREAM*(): GType = 
-  result = html_stream_get_type()
-
-proc HTML_STREAM*(obj: pointer): PHtmlStream = 
-  result = PHtmlStream(G_TYPE_CHECK_INSTANCE_CAST(obj, HTML_TYPE_STREAM()))
-
-proc HTML_STREAM_CLASS*(klass: pointer): PHtmlStreamClass = 
-  result = G_TYPE_CHECK_CLASS_CAST(klass, HTML_TYPE_STREAM())
-
-proc HTML_IS_STREAM*(obj: pointer): bool = 
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, HTML_TYPE_STREAM())
-
-proc HTML_IS_STREAM_CLASS*(klass: pointer): bool = 
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, HTML_TYPE_STREAM())
-
-proc HTML_STREAM_GET_CLASS*(obj: pointer): PHtmlStreamClass = 
-  result = PHtmlStreamClass(G_TYPE_INSTANCE_GET_CLASS(obj, HTML_TYPE_STREAM()))
-
-proc GTK_HTML_CONTEXT_TYPE*(): GType = 
-  result = gtk_html_context_get_type()
-
-proc GTK_HTML_CONTEXT*(obj: pointer): PGtkHtmlContext = 
-  result = GTK_CHECK_CAST(obj, GTK_HTML_CONTEXT_TYPE(), TGtkHtmlContext)
-
-proc GTK_HTML_CONTEXT_CLASS*(klass: pointer): PGtkHtmlContextClass = 
-  result = GTK_CHECK_CLASS_CAST(klass, GTK_HTML_CONTEXT_TYPE(), 
-                                TGtkHtmlContextClass)
-
-proc GTK_HTML_IS_CONTEXT*(obj: pointer): bool = 
-  result = GTK_CHECK_TYPE(obj, GTK_HTML_CONTEXT_TYPE())
-
-proc GTK_HTML_IS_CONTEXT_CLASS*(klass: pointer): bool = 
-  result = GTK_CHECK_CLASS_TYPE(klass, GTK_HTML_CONTEXT_TYPE())
-
-proc HTML_TYPE_DOCUMENT*(): GType = 
-  result = html_document_get_type()
-
-proc HTML_DOCUMENT*(obj: pointer): PHtmlDocument = 
-  result = PHtmlDocument(GTK_CHECK_CAST(obj, HTML_TYPE_DOCUMENT()))
-
-proc HTML_DOCUMENT_CLASS*(klass: pointer): PHtmlDocumentClass = 
-  result = GTK_CHECK_CLASS_CAST(klass, HTML_TYPE_DOCUMENT())
-
-proc HTML_IS_DOCUMENT*(obj: pointer): bool = 
-  result = GTK_CHECK_TYPE(obj, HTML_TYPE_DOCUMENT())
-
-proc HTML_TYPE_VIEW*(): GType = 
-  result = html_view_get_type()
-
-proc HTML_VIEW*(obj: pointer): PHtmlView = 
-  result = PHtmlView(GTK_CHECK_CAST(obj, HTML_TYPE_VIEW()))
-
-proc HTML_VIEW_CLASS*(klass: pointer): PHtmlViewClass = 
-  result = PHtmlViewClass(GTK_CHECK_CLASS_CAST(klass, HTML_TYPE_VIEW()))
-
-proc HTML_IS_VIEW*(obj: pointer): bool = 
-  result = GTK_CHECK_TYPE(obj, HTML_TYPE_VIEW())
diff --git a/lib/wrappers/gtk/libglade2.nim b/lib/wrappers/gtk/libglade2.nim
deleted file mode 100755
index 5e323680e..000000000
--- a/lib/wrappers/gtk/libglade2.nim
+++ /dev/null
@@ -1,118 +0,0 @@
-{.deadCodeElim: on.}
-
-import
-  glib2, gtk2
-
-when defined(win32):
-  const
-    LibGladeLib = "libglade-2.0-0.dll"
-else:
-  const
-    LibGladeLib = "libglade-2.0.so"
-type
-  PLongint* = ptr int32
-  PSmallInt* = ptr int16
-  PByte* = ptr int8
-  PWord* = ptr int16
-  PDWord* = ptr int32
-  PDouble* = ptr float64
-
-proc glade_init*(){.cdecl, dynlib: LibGladeLib, importc: "glade_init".}
-proc glade_require*(TheLibrary: cstring){.cdecl, dynlib: LibGladeLib,
-    importc: "glade_require".}
-proc glade_provide*(TheLibrary: cstring){.cdecl, dynlib: LibGladeLib,
-    importc: "glade_provide".}
-type
-  PGladeXMLPrivate* = pointer
-  PGladeXML* = ptr TGladeXML
-  TGladeXML* = object of TGObject
-    filename*: cstring
-    priv*: PGladeXMLPrivate
-
-  PGladeXMLClass* = ptr TGladeXMLClass
-  TGladeXMLClass* = object of TGObjectClass
-
-  TGladeXMLConnectFunc* = proc (handler_name: cstring, anObject: PGObject,
-                                signal_name: cstring, signal_data: cstring,
-                                connect_object: PGObject, after: gboolean,
-                                user_data: gpointer){.cdecl.}
-
-proc GLADE_TYPE_XML*(): GType
-proc GLADE_XML*(obj: pointer): PGladeXML
-proc GLADE_XML_CLASS*(klass: pointer): PGladeXMLClass
-proc GLADE_IS_XML*(obj: pointer): gboolean
-proc GLADE_IS_XML_CLASS*(klass: pointer): gboolean
-proc GLADE_XML_GET_CLASS*(obj: pointer): PGladeXMLClass
-proc glade_xml_get_type*(): GType{.cdecl, dynlib: LibGladeLib,
-                                   importc: "glade_xml_get_type".}
-proc glade_xml_new*(fname: cstring, root: cstring, domain: cstring): PGladeXML{.
-    cdecl, dynlib: LibGladeLib, importc: "glade_xml_new".}
-proc glade_xml_new_from_buffer*(buffer: cstring, size: int32, root: cstring,
-                                domain: cstring): PGladeXML{.cdecl,
-    dynlib: LibGladeLib, importc: "glade_xml_new_from_buffer".}
-proc glade_xml_construct*(self: PGladeXML, fname: cstring, root: cstring,
-                          domain: cstring): gboolean{.cdecl,
-    dynlib: LibGladeLib, importc: "glade_xml_construct".}
-proc glade_xml_signal_connect*(self: PGladeXML, handlername: cstring,
-                               func: TGCallback){.cdecl, dynlib: LibGladeLib,
-    importc: "glade_xml_signal_connect".}
-proc glade_xml_signal_connect_data*(self: PGladeXML, handlername: cstring,
-                                    func: TGCallback, user_data: gpointer){.
-    cdecl, dynlib: LibGladeLib, importc: "glade_xml_signal_connect_data".}
-proc glade_xml_signal_autoconnect*(self: PGladeXML){.cdecl, dynlib: LibGladeLib,
-    importc: "glade_xml_signal_autoconnect".}
-proc glade_xml_signal_connect_full*(self: PGladeXML, handler_name: cstring,
-                                    func: TGladeXMLConnectFunc,
-                                    user_data: gpointer){.cdecl,
-    dynlib: LibGladeLib, importc: "glade_xml_signal_connect_full".}
-proc glade_xml_signal_autoconnect_full*(self: PGladeXML,
-                                        func: TGladeXMLConnectFunc,
-                                        user_data: gpointer){.cdecl,
-    dynlib: LibGladeLib, importc: "glade_xml_signal_autoconnect_full".}
-proc glade_xml_get_widget*(self: PGladeXML, name: cstring): PGtkWidget{.cdecl,
-    dynlib: LibGladeLib, importc: "glade_xml_get_widget".}
-proc glade_xml_get_widget_prefix*(self: PGladeXML, name: cstring): PGList{.
-    cdecl, dynlib: LibGladeLib, importc: "glade_xml_get_widget_prefix".}
-proc glade_xml_relative_file*(self: PGladeXML, filename: cstring): cstring{.cdecl,
-    dynlib: LibGladeLib, importc: "glade_xml_relative_file".}
-proc glade_get_widget_name*(widget: PGtkWidget): cstring{.cdecl,
-    dynlib: LibGladeLib, importc: "glade_get_widget_name".}
-proc glade_get_widget_tree*(widget: PGtkWidget): PGladeXML{.cdecl,
-    dynlib: LibGladeLib, importc: "glade_get_widget_tree".}
-type
-  PGladeXMLCustomWidgetHandler* = ptr TGladeXMLCustomWidgetHandler
-  TGladeXMLCustomWidgetHandler* = TGtkWidget
-
-proc glade_set_custom_handler*(handler: TGladeXMLCustomWidgetHandler,
-                               user_data: gpointer){.cdecl, dynlib: LibGladeLib,
-    importc: "glade_set_custom_handler".}
-proc glade_gnome_init*() =
-  glade_init()
-
-proc glade_bonobo_init*() =
-  glade_init()
-
-proc glade_xml_new_with_domain*(fname: cstring, root: cstring, domain: cstring): PGladeXML =
-  result = glade_xml_new(fname, root, domain)
-
-proc glade_xml_new_from_memory*(buffer: cstring, size: int32, root: cstring,
-                                domain: cstring): PGladeXML =
-  result = glade_xml_new_from_buffer(buffer, size, root, domain)
-
-proc GLADE_TYPE_XML*(): GType =
-  result = glade_xml_get_type()
-
-proc GLADE_XML*(obj: pointer): PGladeXML =
-  result = cast[PGladeXML](G_TYPE_CHECK_INSTANCE_CAST(obj, GLADE_TYPE_XML()))
-
-proc GLADE_XML_CLASS*(klass: pointer): PGladeXMLClass =
-  result = cast[PGladeXMLClass](G_TYPE_CHECK_CLASS_CAST(klass, GLADE_TYPE_XML()))
-
-proc GLADE_IS_XML*(obj: pointer): gboolean =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(obj, GLADE_TYPE_XML())
-
-proc GLADE_IS_XML_CLASS*(klass: pointer): gboolean =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, GLADE_TYPE_XML())
-
-proc GLADE_XML_GET_CLASS*(obj: pointer): PGladeXMLClass =
-  result = cast[PGladeXMLClass](G_TYPE_INSTANCE_GET_CLASS(obj, GLADE_TYPE_XML()))
diff --git a/lib/wrappers/gtk/pango.nim b/lib/wrappers/gtk/pango.nim
deleted file mode 100755
index ade2da989..000000000
--- a/lib/wrappers/gtk/pango.nim
+++ /dev/null
@@ -1,1208 +0,0 @@
-{.deadCodeElim: on.}
-
-import
-  glib2
-
-when defined(win32):
-  const
-    pangolib* = "libpango-1.0-0.dll"
-else:
-  const
-    pangolib* = "libpango-1.0.so.0"
-type
-  PPangoFont* = pointer
-  PPangoFontFamily* = pointer
-  PPangoFontset* = pointer
-  PPangoFontMetrics* = pointer
-  PPangoFontFace* = pointer
-  PPangoFontMap* = pointer
-  PPangoFontsetClass* = pointer
-  PPangoFontFamilyClass* = pointer
-  PPangoFontFaceClass* = pointer
-  PPangoFontClass* = pointer
-  PPangoFontMapClass* = pointer
-  PPangoFontDescription* = ptr TPangoFontDescription
-  TPangoFontDescription* = pointer
-  PPangoAttrList* = ptr TPangoAttrList
-  TPangoAttrList* = pointer
-  PPangoAttrIterator* = ptr TPangoAttrIterator
-  TPangoAttrIterator* = pointer
-  PPangoLayout* = ptr TPangoLayout
-  TPangoLayout* = pointer
-  PPangoLayoutClass* = ptr TPangoLayoutClass
-  TPangoLayoutClass* = pointer
-  PPangoLayoutIter* = ptr TPangoLayoutIter
-  TPangoLayoutIter* = pointer
-  PPangoContext* = ptr TPangoContext
-  TPangoContext* = pointer
-  PPangoContextClass* = ptr TPangoContextClass
-  TPangoContextClass* = pointer
-  PPangoFontsetSimple* = ptr TPangoFontsetSimple
-  TPangoFontsetSimple* = pointer
-  PPangoTabArray* = ptr TPangoTabArray
-  TPangoTabArray* = pointer
-  PPangoGlyphString* = ptr TPangoGlyphString
-  PPangoAnalysis* = ptr TPangoAnalysis
-  PPangoItem* = ptr TPangoItem
-  PPangoLanguage* = ptr TPangoLanguage
-  TPangoLanguage* = pointer
-  PPangoGlyph* = ptr TPangoGlyph
-  TPangoGlyph* = guint32
-  PPangoRectangle* = ptr TPangoRectangle
-  TPangoRectangle* {.final, pure.} = object
-    x*: int32
-    y*: int32
-    width*: int32
-    height*: int32
-
-  PPangoDirection* = ptr TPangoDirection
-  TPangoDirection* = enum
-    PANGO_DIRECTION_LTR, PANGO_DIRECTION_RTL, PANGO_DIRECTION_TTB_LTR,
-    PANGO_DIRECTION_TTB_RTL
-  PPangoColor* = ptr TPangoColor
-  TPangoColor* {.final, pure.} = object
-    red*: guint16
-    green*: guint16
-    blue*: guint16
-
-  PPangoAttrType* = ptr TPangoAttrType
-  TPangoAttrType* = int32
-  PPangoUnderline* = ptr TPangoUnderline
-  TPangoUnderline* = int32
-  PPangoAttribute* = ptr TPangoAttribute
-  PPangoAttrClass* = ptr TPangoAttrClass
-  TPangoAttribute* {.final, pure.} = object
-    klass*: PPangoAttrClass
-    start_index*: int
-    end_index*: int
-
-  TPangoAttrClass* {.final, pure.} = object
-    `type`*: TPangoAttrType
-    copy*: proc (attr: PPangoAttribute): PPangoAttribute{.cdecl.}
-    destroy*: proc (attr: PPangoAttribute){.cdecl.}
-    equal*: proc (attr1: PPangoAttribute, attr2: PPangoAttribute): gboolean{.
-        cdecl.}
-
-  PPangoAttrString* = ptr TPangoAttrString
-  TPangoAttrString* {.final, pure.} = object
-    attr*: TPangoAttribute
-    value*: cstring
-
-  PPangoAttrLanguage* = ptr TPangoAttrLanguage
-  TPangoAttrLanguage* {.final, pure.} = object
-    attr*: TPangoAttribute
-    value*: PPangoLanguage
-
-  PPangoAttrInt* = ptr TPangoAttrInt
-  TPangoAttrInt* {.final, pure.} = object
-    attr*: TPangoAttribute
-    value*: int32
-
-  PPangoAttrFloat* = ptr TPangoAttrFloat
-  TPangoAttrFloat* {.final, pure.} = object
-    attr*: TPangoAttribute
-    value*: gdouble
-
-  PPangoAttrColor* = ptr TPangoAttrColor
-  TPangoAttrColor* {.final, pure.} = object
-    attr*: TPangoAttribute
-    color*: TPangoColor
-
-  PPangoAttrShape* = ptr TPangoAttrShape
-  TPangoAttrShape* {.final, pure.} = object
-    attr*: TPangoAttribute
-    ink_rect*: TPangoRectangle
-    logical_rect*: TPangoRectangle
-
-  PPangoAttrFontDesc* = ptr TPangoAttrFontDesc
-  TPangoAttrFontDesc* {.final, pure.} = object
-    attr*: TPangoAttribute
-    desc*: PPangoFontDescription
-
-  PPangoLogAttr* = ptr TPangoLogAttr
-  TPangoLogAttr* {.final, pure.} = object
-    flag0*: guint16
-
-  PPangoCoverageLevel* = ptr TPangoCoverageLevel
-  TPangoCoverageLevel* = enum
-    PANGO_COVERAGE_NONE, PANGO_COVERAGE_FALLBACK, PANGO_COVERAGE_APPROXIMATE,
-    PANGO_COVERAGE_EXACT
-  PPangoBlockInfo* = ptr TPangoBlockInfo
-  TPangoBlockInfo* {.final, pure.} = object
-    data*: Pguchar
-    level*: TPangoCoverageLevel
-
-  PPangoCoverage* = ptr TPangoCoverage
-  TPangoCoverage* {.final, pure.} = object
-    ref_count*: int
-    n_blocks*: int32
-    data_size*: int32
-    blocks*: PPangoBlockInfo
-
-  PPangoEngineRange* = ptr TPangoEngineRange
-  TPangoEngineRange* {.final, pure.} = object
-    start*: int32
-    theEnd*: int32
-    langs*: cstring
-
-  PPangoEngineInfo* = ptr TPangoEngineInfo
-  TPangoEngineInfo* {.final, pure.} = object
-    id*: cstring
-    engine_type*: cstring
-    render_type*: cstring
-    ranges*: PPangoEngineRange
-    n_ranges*: gint
-
-  PPangoEngine* = ptr TPangoEngine
-  TPangoEngine* {.final, pure.} = object
-    id*: cstring
-    `type`*: cstring
-    length*: gint
-
-  TPangoEngineLangScriptBreak* = proc (text: cstring, len: int32,
-                                       analysis: PPangoAnalysis,
-                                       attrs: PPangoLogAttr, attrs_len: int32){.
-      cdecl.}
-  PPangoEngineLang* = ptr TPangoEngineLang
-  TPangoEngineLang* {.final, pure.} = object
-    engine*: TPangoEngine
-    script_break*: TPangoEngineLangScriptBreak
-
-  TPangoEngineShapeScript* = proc (font: PPangoFont, text: cstring,
-                                   length: int32, analysis: PPangoAnalysis,
-                                   glyphs: PPangoGlyphString){.cdecl.}
-  TPangoEngineShapeGetCoverage* = proc (font: PPangoFont,
-                                        language: PPangoLanguage): PPangoCoverage{.
-      cdecl.}
-  PPangoEngineShape* = ptr TPangoEngineShape
-  TPangoEngineShape* {.final, pure.} = object
-    engine*: TPangoEngine
-    script_shape*: TPangoEngineShapeScript
-    get_coverage*: TPangoEngineShapeGetCoverage
-
-  PPangoStyle* = ptr TPangoStyle
-  TPangoStyle* = gint
-  PPangoVariant* = ptr TPangoVariant
-  TPangoVariant* = gint
-  PPangoWeight* = ptr TPangoWeight
-  TPangoWeight* = gint
-  PPangoStretch* = ptr TPangoStretch
-  TPangoStretch* = gint
-  PPangoFontMask* = ptr TPangoFontMask
-  TPangoFontMask* = int32
-  PPangoGlyphUnit* = ptr TPangoGlyphUnit
-  TPangoGlyphUnit* = gint32
-  PPangoGlyphGeometry* = ptr TPangoGlyphGeometry
-  TPangoGlyphGeometry* {.final, pure.} = object
-    width*: TPangoGlyphUnit
-    x_offset*: TPangoGlyphUnit
-    y_offset*: TPangoGlyphUnit
-
-  PPangoGlyphVisAttr* = ptr TPangoGlyphVisAttr
-  TPangoGlyphVisAttr* {.final, pure.} = object
-    flag0*: int16
-
-  PPangoGlyphInfo* = ptr TPangoGlyphInfo
-  TPangoGlyphInfo* {.final, pure.} = object
-    glyph*: TPangoGlyph
-    geometry*: TPangoGlyphGeometry
-    attr*: TPangoGlyphVisAttr
-
-  TPangoGlyphString* {.final, pure.} = object
-    num_glyphs*: gint
-    glyphs*: PPangoGlyphInfo
-    log_clusters*: Pgint
-    space*: gint
-
-  TPangoAnalysis* {.final, pure.} = object
-    shape_engine*: PPangoEngineShape
-    lang_engine*: PPangoEngineLang
-    font*: PPangoFont
-    level*: guint8
-    language*: PPangoLanguage
-    extra_attrs*: PGSList
-
-  TPangoItem* {.final, pure.} = object
-    offset*: gint
-    length*: gint
-    num_chars*: gint
-    analysis*: TPangoAnalysis
-
-  PPangoAlignment* = ptr TPangoAlignment
-  TPangoAlignment* = enum
-    PANGO_ALIGN_LEFT, PANGO_ALIGN_CENTER, PANGO_ALIGN_RIGHT
-  PPangoWrapMode* = ptr TPangoWrapMode
-  TPangoWrapMode* = enum
-    PANGO_WRAP_WORD, PANGO_WRAP_CHAR
-  PPangoLayoutLine* = ptr TPangoLayoutLine
-  TPangoLayoutLine* {.final, pure.} = object
-    layout*: PPangoLayout
-    start_index*: gint
-    length*: gint
-    runs*: PGSList
-
-  PPangoLayoutRun* = ptr TPangoLayoutRun
-  TPangoLayoutRun* {.final, pure.} = object
-    item*: PPangoItem
-    glyphs*: PPangoGlyphString
-
-  PPangoTabAlign* = ptr TPangoTabAlign
-  TPangoTabAlign* = enum
-    PANGO_TAB_LEFT
-
-const
-  PANGO_SCALE* = 1024
-
-proc PANGO_PIXELS*(d: int): int
-proc PANGO_ASCENT*(rect: TPangoRectangle): int32
-proc PANGO_DESCENT*(rect: TPangoRectangle): int32
-proc PANGO_LBEARING*(rect: TPangoRectangle): int32
-proc PANGO_RBEARING*(rect: TPangoRectangle): int32
-proc PANGO_TYPE_LANGUAGE*(): GType
-proc pango_language_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                        importc: "pango_language_get_type".}
-proc pango_language_from_string*(language: cstring): PPangoLanguage{.cdecl,
-    dynlib: pangolib, importc: "pango_language_from_string".}
-proc pango_language_to_string*(language: PPangoLanguage): cstring
-proc pango_language_matches*(language: PPangoLanguage, range_list: cstring): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_language_matches".}
-const
-  PANGO_ATTR_INVALID* = 0
-  PANGO_ATTR_LANGUAGE* = 1
-  PANGO_ATTR_FAMILY* = 2
-  PANGO_ATTR_STYLE* = 3
-  PANGO_ATTR_WEIGHT* = 4
-  PANGO_ATTR_VARIANT* = 5
-  PANGO_ATTR_STRETCH* = 6
-  PANGO_ATTR_SIZE* = 7
-  PANGO_ATTR_FONT_DESC* = 8
-  PANGO_ATTR_FOREGROUND* = 9
-  PANGO_ATTR_BACKGROUND* = 10
-  PANGO_ATTR_UNDERLINE* = 11
-  PANGO_ATTR_STRIKETHROUGH* = 12
-  PANGO_ATTR_RISE* = 13
-  PANGO_ATTR_SHAPE* = 14
-  PANGO_ATTR_SCALE* = 15
-  PANGO_UNDERLINE_NONE* = 0
-  PANGO_UNDERLINE_SINGLE* = 1
-  PANGO_UNDERLINE_DOUBLE* = 2
-  PANGO_UNDERLINE_LOW* = 3
-
-proc PANGO_TYPE_COLOR*(): GType
-proc pango_color_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                     importc: "pango_color_get_type".}
-proc pango_color_copy*(src: PPangoColor): PPangoColor{.cdecl, dynlib: pangolib,
-    importc: "pango_color_copy".}
-proc pango_color_free*(color: PPangoColor){.cdecl, dynlib: pangolib,
-    importc: "pango_color_free".}
-proc pango_color_parse*(color: PPangoColor, spec: cstring): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_color_parse".}
-proc PANGO_TYPE_ATTR_LIST*(): GType
-proc pango_attr_type_register*(name: cstring): TPangoAttrType{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_type_register".}
-proc pango_attribute_copy*(attr: PPangoAttribute): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attribute_copy".}
-proc pango_attribute_destroy*(attr: PPangoAttribute){.cdecl, dynlib: pangolib,
-    importc: "pango_attribute_destroy".}
-proc pango_attribute_equal*(attr1: PPangoAttribute, attr2: PPangoAttribute): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_attribute_equal".}
-proc pango_attr_language_new*(language: PPangoLanguage): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_language_new".}
-proc pango_attr_family_new*(family: cstring): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_family_new".}
-proc pango_attr_foreground_new*(red: guint16, green: guint16, blue: guint16): PPangoAttribute{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_foreground_new".}
-proc pango_attr_background_new*(red: guint16, green: guint16, blue: guint16): PPangoAttribute{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_background_new".}
-proc pango_attr_size_new*(size: int32): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_size_new".}
-proc pango_attr_style_new*(style: TPangoStyle): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_style_new".}
-proc pango_attr_weight_new*(weight: TPangoWeight): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_weight_new".}
-proc pango_attr_variant_new*(variant: TPangoVariant): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_variant_new".}
-proc pango_attr_stretch_new*(stretch: TPangoStretch): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_stretch_new".}
-proc pango_attr_font_desc_new*(desc: PPangoFontDescription): PPangoAttribute{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_font_desc_new".}
-proc pango_attr_underline_new*(underline: TPangoUnderline): PPangoAttribute{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_underline_new".}
-proc pango_attr_strikethrough_new*(strikethrough: gboolean): PPangoAttribute{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_strikethrough_new".}
-proc pango_attr_rise_new*(rise: int32): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_rise_new".}
-proc pango_attr_shape_new*(ink_rect: PPangoRectangle,
-                           logical_rect: PPangoRectangle): PPangoAttribute{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_shape_new".}
-proc pango_attr_scale_new*(scale_factor: gdouble): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_scale_new".}
-proc pango_attr_list_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_attr_list_get_type".}
-proc pango_attr_list_new*(): PPangoAttrList{.cdecl, dynlib: pangolib,
-    importc: "pango_attr_list_new".}
-proc pango_attr_list_ref*(list: PPangoAttrList){.cdecl, dynlib: pangolib,
-    importc: "pango_attr_list_ref".}
-proc pango_attr_list_unref*(list: PPangoAttrList){.cdecl, dynlib: pangolib,
-    importc: "pango_attr_list_unref".}
-proc pango_attr_list_copy*(list: PPangoAttrList): PPangoAttrList{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_list_copy".}
-proc pango_attr_list_insert*(list: PPangoAttrList, attr: PPangoAttribute){.
-    cdecl, dynlib: pangolib, importc: "pango_attr_list_insert".}
-proc pango_attr_list_insert_before*(list: PPangoAttrList, attr: PPangoAttribute){.
-    cdecl, dynlib: pangolib, importc: "pango_attr_list_insert_before".}
-proc pango_attr_list_change*(list: PPangoAttrList, attr: PPangoAttribute){.
-    cdecl, dynlib: pangolib, importc: "pango_attr_list_change".}
-proc pango_attr_list_splice*(list: PPangoAttrList, other: PPangoAttrList,
-                             pos: gint, len: gint){.cdecl, dynlib: pangolib,
-    importc: "pango_attr_list_splice".}
-proc pango_attr_list_get_iterator*(list: PPangoAttrList): PPangoAttrIterator{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_list_get_iterator".}
-proc pango_attr_iterator_range*(`iterator`: PPangoAttrIterator, start: Pgint,
-                                theEnd: Pgint){.cdecl, dynlib: pangolib,
-    importc: "pango_attr_iterator_range".}
-proc pango_attr_iterator_next*(`iterator`: PPangoAttrIterator): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_iterator_next".}
-proc pango_attr_iterator_copy*(`iterator`: PPangoAttrIterator): PPangoAttrIterator{.
-    cdecl, dynlib: pangolib, importc: "pango_attr_iterator_copy".}
-proc pango_attr_iterator_destroy*(`iterator`: PPangoAttrIterator){.cdecl,
-    dynlib: pangolib, importc: "pango_attr_iterator_destroy".}
-proc pango_attr_iterator_get*(`iterator`: PPangoAttrIterator,
-                              `type`: TPangoAttrType): PPangoAttribute{.cdecl,
-    dynlib: pangolib, importc: "pango_attr_iterator_get".}
-proc pango_attr_iterator_get_font*(`iterator`: PPangoAttrIterator,
-                                   desc: PPangoFontDescription,
-                                   language: var PPangoLanguage,
-                                   extra_attrs: PPGSList){.cdecl,
-    dynlib: pangolib, importc: "pango_attr_iterator_get_font".}
-proc pango_parse_markup*(markup_text: cstring, length: int32,
-                         accel_marker: gunichar, attr_list: var PPangoAttrList,
-                         text: PPchar, accel_char: Pgunichar, error: pointer): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_parse_markup".}
-const
-  bm_TPangoLogAttr_is_line_break* = 0x00000001'i16
-  bp_TPangoLogAttr_is_line_break* = 0'i16
-  bm_TPangoLogAttr_is_mandatory_break* = 0x00000002'i16
-  bp_TPangoLogAttr_is_mandatory_break* = 1'i16
-  bm_TPangoLogAttr_is_char_break* = 0x00000004'i16
-  bp_TPangoLogAttr_is_char_break* = 2'i16
-  bm_TPangoLogAttr_is_white* = 0x00000008'i16
-  bp_TPangoLogAttr_is_white* = 3'i16
-  bm_TPangoLogAttr_is_cursor_position* = 0x00000010'i16
-  bp_TPangoLogAttr_is_cursor_position* = 4'i16
-  bm_TPangoLogAttr_is_word_start* = 0x00000020'i16
-  bp_TPangoLogAttr_is_word_start* = 5'i16
-  bm_TPangoLogAttr_is_word_end* = 0x00000040'i16
-  bp_TPangoLogAttr_is_word_end* = 6'i16
-  bm_TPangoLogAttr_is_sentence_boundary* = 0x00000080'i16
-  bp_TPangoLogAttr_is_sentence_boundary* = 7'i16
-  bm_TPangoLogAttr_is_sentence_start* = 0x00000100'i16
-  bp_TPangoLogAttr_is_sentence_start* = 8'i16
-  bm_TPangoLogAttr_is_sentence_end* = 0x00000200'i16
-  bp_TPangoLogAttr_is_sentence_end* = 9'i16
-
-proc is_line_break*(a: var TPangoLogAttr): guint
-proc set_is_line_break*(a: var TPangoLogAttr, `is_line_break`: guint)
-proc is_mandatory_break*(a: var TPangoLogAttr): guint
-proc set_is_mandatory_break*(a: var TPangoLogAttr, `is_mandatory_break`: guint)
-proc is_char_break*(a: var TPangoLogAttr): guint
-proc set_is_char_break*(a: var TPangoLogAttr, `is_char_break`: guint)
-proc is_white*(a: var TPangoLogAttr): guint
-proc set_is_white*(a: var TPangoLogAttr, `is_white`: guint)
-proc is_cursor_position*(a: var TPangoLogAttr): guint
-proc set_is_cursor_position*(a: var TPangoLogAttr, `is_cursor_position`: guint)
-proc is_word_start*(a: var TPangoLogAttr): guint
-proc set_is_word_start*(a: var TPangoLogAttr, `is_word_start`: guint)
-proc is_word_end*(a: var TPangoLogAttr): guint
-proc set_is_word_end*(a: var TPangoLogAttr, `is_word_end`: guint)
-proc is_sentence_boundary*(a: var TPangoLogAttr): guint
-proc set_is_sentence_boundary*(a: var TPangoLogAttr,
-                               `is_sentence_boundary`: guint)
-proc is_sentence_start*(a: var TPangoLogAttr): guint
-proc set_is_sentence_start*(a: var TPangoLogAttr, `is_sentence_start`: guint)
-proc is_sentence_end*(a: var TPangoLogAttr): guint
-proc set_is_sentence_end*(a: var TPangoLogAttr, `is_sentence_end`: guint)
-proc pango_break*(text: cstring, length: int32, analysis: PPangoAnalysis,
-                  attrs: PPangoLogAttr, attrs_len: int32){.cdecl,
-    dynlib: pangolib, importc: "pango_break".}
-proc pango_find_paragraph_boundary*(text: cstring, length: gint,
-                                    paragraph_delimiter_index: Pgint,
-                                    next_paragraph_start: Pgint){.cdecl,
-    dynlib: pangolib, importc: "pango_find_paragraph_boundary".}
-proc pango_get_log_attrs*(text: cstring, length: int32, level: int32,
-                          language: PPangoLanguage, log_attrs: PPangoLogAttr,
-                          attrs_len: int32){.cdecl, dynlib: pangolib,
-    importc: "pango_get_log_attrs".}
-proc PANGO_TYPE_CONTEXT*(): GType
-proc PANGO_CONTEXT*(anObject: pointer): PPangoContext
-proc PANGO_CONTEXT_CLASS*(klass: pointer): PPangoContextClass
-proc PANGO_IS_CONTEXT*(anObject: pointer): bool
-proc PANGO_IS_CONTEXT_CLASS*(klass: pointer): bool
-proc PANGO_CONTEXT_GET_CLASS*(obj: PPangoContext): PPangoContextClass
-proc pango_context_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                       importc: "pango_context_get_type".}
-proc pango_context_list_families*(context: PPangoContext,
-                                  families: openarray[ptr PPangoFontFamily]){.cdecl,
-    dynlib: pangolib, importc: "pango_context_list_families".}
-proc pango_context_load_font*(context: PPangoContext,
-                              desc: PPangoFontDescription): PPangoFont{.cdecl,
-    dynlib: pangolib, importc: "pango_context_load_font".}
-proc pango_context_load_fontset*(context: PPangoContext,
-                                 desc: PPangoFontDescription,
-                                 language: PPangoLanguage): PPangoFontset{.
-    cdecl, dynlib: pangolib, importc: "pango_context_load_fontset".}
-proc pango_context_get_metrics*(context: PPangoContext,
-                                desc: PPangoFontDescription,
-                                language: PPangoLanguage): PPangoFontMetrics{.
-    cdecl, dynlib: pangolib, importc: "pango_context_get_metrics".}
-proc pango_context_set_font_description*(context: PPangoContext,
-    desc: PPangoFontDescription){.cdecl, dynlib: pangolib,
-                                  importc: "pango_context_set_font_description".}
-proc pango_context_get_font_description*(context: PPangoContext): PPangoFontDescription{.
-    cdecl, dynlib: pangolib, importc: "pango_context_get_font_description".}
-proc pango_context_get_language*(context: PPangoContext): PPangoLanguage{.cdecl,
-    dynlib: pangolib, importc: "pango_context_get_language".}
-proc pango_context_set_language*(context: PPangoContext,
-                                 language: PPangoLanguage){.cdecl,
-    dynlib: pangolib, importc: "pango_context_set_language".}
-proc pango_context_set_base_dir*(context: PPangoContext,
-                                 direction: TPangoDirection){.cdecl,
-    dynlib: pangolib, importc: "pango_context_set_base_dir".}
-proc pango_context_get_base_dir*(context: PPangoContext): TPangoDirection{.
-    cdecl, dynlib: pangolib, importc: "pango_context_get_base_dir".}
-proc pango_itemize*(context: PPangoContext, text: cstring, start_index: int32,
-                    length: int32, attrs: PPangoAttrList,
-                    cached_iter: PPangoAttrIterator): PGList{.cdecl,
-    dynlib: pangolib, importc: "pango_itemize".}
-proc pango_coverage_new*(): PPangoCoverage{.cdecl, dynlib: pangolib,
-    importc: "pango_coverage_new".}
-proc pango_coverage_ref*(coverage: PPangoCoverage): PPangoCoverage{.cdecl,
-    dynlib: pangolib, importc: "pango_coverage_ref".}
-proc pango_coverage_unref*(coverage: PPangoCoverage){.cdecl, dynlib: pangolib,
-    importc: "pango_coverage_unref".}
-proc pango_coverage_copy*(coverage: PPangoCoverage): PPangoCoverage{.cdecl,
-    dynlib: pangolib, importc: "pango_coverage_copy".}
-proc pango_coverage_get*(coverage: PPangoCoverage, index: int32): TPangoCoverageLevel{.
-    cdecl, dynlib: pangolib, importc: "pango_coverage_get".}
-proc pango_coverage_set*(coverage: PPangoCoverage, index: int32,
-                         level: TPangoCoverageLevel){.cdecl, dynlib: pangolib,
-    importc: "pango_coverage_set".}
-proc pango_coverage_max*(coverage: PPangoCoverage, other: PPangoCoverage){.
-    cdecl, dynlib: pangolib, importc: "pango_coverage_max".}
-proc pango_coverage_to_bytes*(coverage: PPangoCoverage, bytes: PPguchar,
-                              n_bytes: var int32){.cdecl, dynlib: pangolib,
-    importc: "pango_coverage_to_bytes".}
-proc pango_coverage_from_bytes*(bytes: Pguchar, n_bytes: int32): PPangoCoverage{.
-    cdecl, dynlib: pangolib, importc: "pango_coverage_from_bytes".}
-proc PANGO_TYPE_FONTSET*(): GType
-proc PANGO_FONTSET*(anObject: pointer): PPangoFontset
-proc PANGO_IS_FONTSET*(anObject: pointer): bool
-proc pango_fontset_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                       importc: "pango_fontset_get_type".}
-proc pango_fontset_get_font*(fontset: PPangoFontset, wc: guint): PPangoFont{.
-    cdecl, dynlib: pangolib, importc: "pango_fontset_get_font".}
-proc pango_fontset_get_metrics*(fontset: PPangoFontset): PPangoFontMetrics{.
-    cdecl, dynlib: pangolib, importc: "pango_fontset_get_metrics".}
-const
-  PANGO_STYLE_NORMAL* = 0
-  PANGO_STYLE_OBLIQUE* = 1
-  PANGO_STYLE_ITALIC* = 2
-  PANGO_VARIANT_NORMAL* = 0
-  PANGO_VARIANT_SMALL_CAPS* = 1
-  PANGO_WEIGHT_ULTRALIGHT* = 200
-  PANGO_WEIGHT_LIGHT* = 300
-  PANGO_WEIGHT_NORMAL* = 400
-  PANGO_WEIGHT_BOLD* = 700
-  PANGO_WEIGHT_ULTRABOLD* = 800
-  PANGO_WEIGHT_HEAVY* = 900
-  PANGO_STRETCH_ULTRA_CONDENSED* = 0
-  PANGO_STRETCH_EXTRA_CONDENSED* = 1
-  PANGO_STRETCH_CONDENSED* = 2
-  PANGO_STRETCH_SEMI_CONDENSED* = 3
-  PANGO_STRETCH_NORMAL* = 4
-  PANGO_STRETCH_SEMI_EXPANDED* = 5
-  PANGO_STRETCH_EXPANDED* = 6
-  PANGO_STRETCH_EXTRA_EXPANDED* = 7
-  PANGO_STRETCH_ULTRA_EXPANDED* = 8
-  PANGO_FONT_MASK_FAMILY* = 1 shl 0
-  PANGO_FONT_MASK_STYLE* = 1 shl 1
-  PANGO_FONT_MASK_VARIANT* = 1 shl 2
-  PANGO_FONT_MASK_WEIGHT* = 1 shl 3
-  PANGO_FONT_MASK_STRETCH* = 1 shl 4
-  PANGO_FONT_MASK_SIZE* = 1 shl 5
-  PANGO_SCALE_XX_SMALL* = 0.5787037037036999
-  PANGO_SCALE_X_SMALL* = 0.6444444444443999
-  PANGO_SCALE_SMALL* = 0.8333333333332999
-  PANGO_SCALE_MEDIUM* = 1.0
-  PANGO_SCALE_LARGE* = 1.2
-  PANGO_SCALE_X_LARGE* = 1.4399999999999
-  PANGO_SCALE_XX_LARGE* = 1.728
-
-proc PANGO_TYPE_FONT_DESCRIPTION*(): GType
-proc pango_font_description_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_font_description_get_type".}
-proc pango_font_description_new*(): PPangoFontDescription{.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_new".}
-proc pango_font_description_copy*(desc: PPangoFontDescription): PPangoFontDescription{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_copy".}
-proc pango_font_description_copy_static*(desc: PPangoFontDescription): PPangoFontDescription{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_copy_static".}
-proc pango_font_description_hash*(desc: PPangoFontDescription): guint{.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_hash".}
-proc pango_font_description_equal*(desc1: PPangoFontDescription,
-                                   desc2: PPangoFontDescription): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_equal".}
-proc pango_font_description_free*(desc: PPangoFontDescription){.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_free".}
-proc pango_font_descriptions_free*(descs: var PPangoFontDescription,
-                                   n_descs: int32){.cdecl, dynlib: pangolib,
-    importc: "pango_font_descriptions_free".}
-proc pango_font_description_set_family*(desc: PPangoFontDescription,
-                                        family: cstring){.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_set_family".}
-proc pango_font_description_set_family_static*(desc: PPangoFontDescription,
-    family: cstring){.cdecl, dynlib: pangolib,
-                      importc: "pango_font_description_set_family_static".}
-proc pango_font_description_get_family*(desc: PPangoFontDescription): cstring{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_get_family".}
-proc pango_font_description_set_style*(desc: PPangoFontDescription,
-                                       style: TPangoStyle){.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_set_style".}
-proc pango_font_description_get_style*(desc: PPangoFontDescription): TPangoStyle{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_get_style".}
-proc pango_font_description_set_variant*(desc: PPangoFontDescription,
-    variant: TPangoVariant){.cdecl, dynlib: pangolib,
-                             importc: "pango_font_description_set_variant".}
-proc pango_font_description_get_variant*(desc: PPangoFontDescription): TPangoVariant{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_get_variant".}
-proc pango_font_description_set_weight*(desc: PPangoFontDescription,
-                                        weight: TPangoWeight){.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_set_weight".}
-proc pango_font_description_get_weight*(desc: PPangoFontDescription): TPangoWeight{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_get_weight".}
-proc pango_font_description_set_stretch*(desc: PPangoFontDescription,
-    stretch: TPangoStretch){.cdecl, dynlib: pangolib,
-                             importc: "pango_font_description_set_stretch".}
-proc pango_font_description_get_stretch*(desc: PPangoFontDescription): TPangoStretch{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_get_stretch".}
-proc pango_font_description_set_size*(desc: PPangoFontDescription, size: gint){.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_set_size".}
-proc pango_font_description_get_size*(desc: PPangoFontDescription): gint{.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_get_size".}
-proc pango_font_description_set_absolute_size*(desc: PPangoFontDescription,
-    size: float64){.cdecl, dynlib: pangolib,
-                    importc: "pango_font_description_set_absolute_size".}
-proc pango_font_description_get_size_is_absolute*(desc: PPangoFontDescription,
-    size: float64): gboolean{.cdecl, dynlib: pangolib, importc: "pango_font_description_get_size_is_absolute".}
-proc pango_font_description_get_set_fields*(desc: PPangoFontDescription): TPangoFontMask{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_get_set_fields".}
-proc pango_font_description_unset_fields*(desc: PPangoFontDescription,
-    to_unset: TPangoFontMask){.cdecl, dynlib: pangolib,
-                               importc: "pango_font_description_unset_fields".}
-proc pango_font_description_merge*(desc: PPangoFontDescription,
-                                   desc_to_merge: PPangoFontDescription,
-                                   replace_existing: gboolean){.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_merge".}
-proc pango_font_description_merge_static*(desc: PPangoFontDescription,
-    desc_to_merge: PPangoFontDescription, replace_existing: gboolean){.cdecl,
-    dynlib: pangolib, importc: "pango_font_description_merge_static".}
-proc pango_font_description_better_match*(desc: PPangoFontDescription,
-    old_match: PPangoFontDescription, new_match: PPangoFontDescription): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_better_match".}
-proc pango_font_description_from_string*(str: cstring): PPangoFontDescription{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_from_string".}
-proc pango_font_description_to_string*(desc: PPangoFontDescription): cstring{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_to_string".}
-proc pango_font_description_to_filename*(desc: PPangoFontDescription): cstring{.
-    cdecl, dynlib: pangolib, importc: "pango_font_description_to_filename".}
-proc PANGO_TYPE_FONT_METRICS*(): GType
-proc pango_font_metrics_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_font_metrics_get_type".}
-proc pango_font_metrics_ref*(metrics: PPangoFontMetrics): PPangoFontMetrics{.
-    cdecl, dynlib: pangolib, importc: "pango_font_metrics_ref".}
-proc pango_font_metrics_unref*(metrics: PPangoFontMetrics){.cdecl,
-    dynlib: pangolib, importc: "pango_font_metrics_unref".}
-proc pango_font_metrics_get_ascent*(metrics: PPangoFontMetrics): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_font_metrics_get_ascent".}
-proc pango_font_metrics_get_descent*(metrics: PPangoFontMetrics): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_font_metrics_get_descent".}
-proc pango_font_metrics_get_approximate_char_width*(metrics: PPangoFontMetrics): int32{.
-    cdecl, dynlib: pangolib,
-    importc: "pango_font_metrics_get_approximate_char_width".}
-proc pango_font_metrics_get_approximate_digit_width*(metrics: PPangoFontMetrics): int32{.
-    cdecl, dynlib: pangolib,
-    importc: "pango_font_metrics_get_approximate_digit_width".}
-proc PANGO_TYPE_FONT_FAMILY*(): GType
-proc PANGO_FONT_FAMILY*(anObject: Pointer): PPangoFontFamily
-proc PANGO_IS_FONT_FAMILY*(anObject: Pointer): bool
-proc pango_font_family_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_font_family_get_type".}
-proc pango_font_family_list_faces*(family: PPangoFontFamily,
-                                   faces: var openarray[ptr PPangoFontFace]){.
-    cdecl, dynlib: pangolib, importc: "pango_font_family_list_faces".}
-proc pango_font_family_get_name*(family: PPangoFontFamily): cstring{.cdecl,
-    dynlib: pangolib, importc: "pango_font_family_get_name".}
-proc PANGO_TYPE_FONT_FACE*(): GType
-proc PANGO_FONT_FACE*(anObject: pointer): PPangoFontFace
-proc PANGO_IS_FONT_FACE*(anObject: pointer): bool
-proc pango_font_face_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_font_face_get_type".}
-proc pango_font_face_describe*(face: PPangoFontFace): PPangoFontDescription{.
-    cdecl, dynlib: pangolib, importc: "pango_font_face_describe".}
-proc pango_font_face_get_face_name*(face: PPangoFontFace): cstring{.cdecl,
-    dynlib: pangolib, importc: "pango_font_face_get_face_name".}
-proc PANGO_TYPE_FONT*(): GType
-proc PANGO_FONT*(anObject: pointer): PPangoFont
-proc PANGO_IS_FONT*(anObject: pointer): bool
-proc pango_font_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                    importc: "pango_font_get_type".}
-proc pango_font_describe*(font: PPangoFont): PPangoFontDescription{.cdecl,
-    dynlib: pangolib, importc: "pango_font_describe".}
-proc pango_font_get_coverage*(font: PPangoFont, language: PPangoLanguage): PPangoCoverage{.
-    cdecl, dynlib: pangolib, importc: "pango_font_get_coverage".}
-proc pango_font_find_shaper*(font: PPangoFont, language: PPangoLanguage,
-                             ch: guint32): PPangoEngineShape{.cdecl,
-    dynlib: pangolib, importc: "pango_font_find_shaper".}
-proc pango_font_get_metrics*(font: PPangoFont, language: PPangoLanguage): PPangoFontMetrics{.
-    cdecl, dynlib: pangolib, importc: "pango_font_get_metrics".}
-proc pango_font_get_glyph_extents*(font: PPangoFont, glyph: TPangoGlyph,
-                                   ink_rect: PPangoRectangle,
-                                   logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_font_get_glyph_extents".}
-proc PANGO_TYPE_FONT_MAP*(): GType
-proc PANGO_FONT_MAP*(anObject: pointer): PPangoFontMap
-proc PANGO_IS_FONT_MAP*(anObject: pointer): bool
-proc pango_font_map_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                        importc: "pango_font_map_get_type".}
-proc pango_font_map_load_font*(fontmap: PPangoFontMap, context: PPangoContext,
-                               desc: PPangoFontDescription): PPangoFont{.cdecl,
-    dynlib: pangolib, importc: "pango_font_map_load_font".}
-proc pango_font_map_load_fontset*(fontmap: PPangoFontMap,
-                                  context: PPangoContext,
-                                  desc: PPangoFontDescription,
-                                  language: PPangoLanguage): PPangoFontset{.
-    cdecl, dynlib: pangolib, importc: "pango_font_map_load_fontset".}
-proc pango_font_map_list_families*(fontmap: PPangoFontMap,
-                                   families: var openarray[ptr PPangoFontFamily]){.cdecl,
-    dynlib: pangolib, importc: "pango_font_map_list_families".}
-const
-  bm_TPangoGlyphVisAttr_is_cluster_start* = 0x00000001'i16
-  bp_TPangoGlyphVisAttr_is_cluster_start* = 0'i16
-
-proc is_cluster_start*(a: var TPangoGlyphVisAttr): guint
-proc set_is_cluster_start*(a: var TPangoGlyphVisAttr, `is_cluster_start`: guint)
-proc PANGO_TYPE_GLYPH_STRING*(): GType
-proc pango_glyph_string_new*(): PPangoGlyphString{.cdecl, dynlib: pangolib,
-    importc: "pango_glyph_string_new".}
-proc pango_glyph_string_set_size*(`string`: PPangoGlyphString, new_len: gint){.
-    cdecl, dynlib: pangolib, importc: "pango_glyph_string_set_size".}
-proc pango_glyph_string_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_glyph_string_get_type".}
-proc pango_glyph_string_copy*(`string`: PPangoGlyphString): PPangoGlyphString{.
-    cdecl, dynlib: pangolib, importc: "pango_glyph_string_copy".}
-proc pango_glyph_string_free*(`string`: PPangoGlyphString){.cdecl,
-    dynlib: pangolib, importc: "pango_glyph_string_free".}
-proc pango_glyph_string_extents*(glyphs: PPangoGlyphString, font: PPangoFont,
-                                 ink_rect: PPangoRectangle,
-                                 logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_glyph_string_extents".}
-proc pango_glyph_string_extents_range*(glyphs: PPangoGlyphString, start: int32,
-                                       theEnd: int32, font: PPangoFont,
-                                       ink_rect: PPangoRectangle,
-                                       logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_glyph_string_extents_range".}
-proc pango_glyph_string_get_logical_widths*(glyphs: PPangoGlyphString,
-    text: cstring, length: int32, embedding_level: int32,
-    logical_widths: var int32){.cdecl, dynlib: pangolib,
-                               importc: "pango_glyph_string_get_logical_widths".}
-proc pango_glyph_string_index_to_x*(glyphs: PPangoGlyphString, text: cstring,
-                                    length: int32, analysis: PPangoAnalysis,
-                                    index: int32, trailing: gboolean,
-                                    x_pos: var int32){.cdecl, dynlib: pangolib,
-    importc: "pango_glyph_string_index_to_x".}
-proc pango_glyph_string_x_to_index*(glyphs: PPangoGlyphString, text: cstring,
-                                    length: int32, analysis: PPangoAnalysis,
-                                    x_pos: int32, index,
-                                    trailing: var int32){.cdecl,
-    dynlib: pangolib, importc: "pango_glyph_string_x_to_index".}
-proc pango_shape*(text: cstring, length: gint, analysis: PPangoAnalysis,
-                  glyphs: PPangoGlyphString){.cdecl, dynlib: pangolib,
-    importc: "pango_shape".}
-proc pango_reorder_items*(logical_items: PGList): PGList{.cdecl,
-    dynlib: pangolib, importc: "pango_reorder_items".}
-proc pango_item_new*(): PPangoItem{.cdecl, dynlib: pangolib,
-                                    importc: "pango_item_new".}
-proc pango_item_copy*(item: PPangoItem): PPangoItem{.cdecl, dynlib: pangolib,
-    importc: "pango_item_copy".}
-proc pango_item_free*(item: PPangoItem){.cdecl, dynlib: pangolib,
-    importc: "pango_item_free".}
-proc pango_item_split*(orig: PPangoItem, split_index: int32, split_offset: int32): PPangoItem{.
-    cdecl, dynlib: pangolib, importc: "pango_item_split".}
-proc PANGO_TYPE_LAYOUT*(): GType
-proc PANGO_LAYOUT*(anObject: pointer): PPangoLayout
-proc PANGO_LAYOUT_CLASS*(klass: pointer): PPangoLayoutClass
-proc PANGO_IS_LAYOUT*(anObject: pointer): bool
-proc PANGO_IS_LAYOUT_CLASS*(klass: pointer): bool
-proc PANGO_LAYOUT_GET_CLASS*(obj: PPangoLayout): PPangoLayoutClass
-proc pango_layout_get_type*(): GType{.cdecl, dynlib: pangolib,
-                                      importc: "pango_layout_get_type".}
-proc pango_layout_new*(context: PPangoContext): PPangoLayout{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_new".}
-proc pango_layout_copy*(src: PPangoLayout): PPangoLayout{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_copy".}
-proc pango_layout_get_context*(layout: PPangoLayout): PPangoContext{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_context".}
-proc pango_layout_set_attributes*(layout: PPangoLayout, attrs: PPangoAttrList){.
-    cdecl, dynlib: pangolib, importc: "pango_layout_set_attributes".}
-proc pango_layout_get_attributes*(layout: PPangoLayout): PPangoAttrList{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_attributes".}
-proc pango_layout_set_text*(layout: PPangoLayout, text: cstring, length: int32){.
-    cdecl, dynlib: pangolib, importc: "pango_layout_set_text".}
-proc pango_layout_get_text*(layout: PPangoLayout): cstring{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_text".}
-proc pango_layout_set_markup*(layout: PPangoLayout, markup: cstring,
-                              length: int32){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_set_markup".}
-proc pango_layout_set_markup_with_accel*(layout: PPangoLayout, markup: cstring,
-    length: int32, accel_marker: gunichar, accel_char: Pgunichar){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_markup_with_accel".}
-proc pango_layout_set_font_description*(layout: PPangoLayout,
-                                        desc: PPangoFontDescription){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_font_description".}
-proc pango_layout_set_width*(layout: PPangoLayout, width: int32){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_width".}
-proc pango_layout_get_width*(layout: PPangoLayout): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_width".}
-proc pango_layout_set_wrap*(layout: PPangoLayout, wrap: TPangoWrapMode){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_wrap".}
-proc pango_layout_get_wrap*(layout: PPangoLayout): TPangoWrapMode{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_wrap".}
-proc pango_layout_set_indent*(layout: PPangoLayout, indent: int32){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_indent".}
-proc pango_layout_get_indent*(layout: PPangoLayout): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_indent".}
-proc pango_layout_set_spacing*(layout: PPangoLayout, spacing: int32){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_spacing".}
-proc pango_layout_get_spacing*(layout: PPangoLayout): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_spacing".}
-proc pango_layout_set_justify*(layout: PPangoLayout, justify: gboolean){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_justify".}
-proc pango_layout_get_justify*(layout: PPangoLayout): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_justify".}
-proc pango_layout_set_alignment*(layout: PPangoLayout,
-                                 alignment: TPangoAlignment){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_alignment".}
-proc pango_layout_get_alignment*(layout: PPangoLayout): TPangoAlignment{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_alignment".}
-proc pango_layout_set_tabs*(layout: PPangoLayout, tabs: PPangoTabArray){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_set_tabs".}
-proc pango_layout_get_tabs*(layout: PPangoLayout): PPangoTabArray{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_tabs".}
-proc pango_layout_set_single_paragraph_mode*(layout: PPangoLayout,
-    setting: gboolean){.cdecl, dynlib: pangolib,
-                        importc: "pango_layout_set_single_paragraph_mode".}
-proc pango_layout_get_single_paragraph_mode*(layout: PPangoLayout): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_layout_get_single_paragraph_mode".}
-proc pango_layout_context_changed*(layout: PPangoLayout){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_context_changed".}
-proc pango_layout_get_log_attrs*(layout: PPangoLayout, attrs: var PPangoLogAttr,
-                                 n_attrs: Pgint){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_get_log_attrs".}
-proc pango_layout_index_to_pos*(layout: PPangoLayout, index: int32,
-                                pos: PPangoRectangle){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_index_to_pos".}
-proc pango_layout_get_cursor_pos*(layout: PPangoLayout, index: int32,
-                                  strong_pos: PPangoRectangle,
-                                  weak_pos: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_cursor_pos".}
-proc pango_layout_move_cursor_visually*(layout: PPangoLayout, strong: gboolean,
-                                        old_index: int32, old_trailing: int32,
-                                        direction: int32, new_index,
-                                        new_trailing: var int32){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_move_cursor_visually".}
-proc pango_layout_xy_to_index*(layout: PPangoLayout, x: int32, y: int32,
-                               index, trailing: var int32): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_layout_xy_to_index".}
-proc pango_layout_get_extents*(layout: PPangoLayout, ink_rect: PPangoRectangle,
-                               logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_extents".}
-proc pango_layout_get_pixel_extents*(layout: PPangoLayout,
-                                     ink_rect: PPangoRectangle,
-                                     logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_pixel_extents".}
-proc pango_layout_get_size*(layout: PPangoLayout, width: var int32,
-                            height: var int32){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_get_size".}
-proc pango_layout_get_pixel_size*(layout: PPangoLayout, width: var int32,
-                                  height: var int32){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_get_pixel_size".}
-proc pango_layout_get_line_count*(layout: PPangoLayout): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_line_count".}
-proc pango_layout_get_line*(layout: PPangoLayout, line: int32): PPangoLayoutLine{.
-    cdecl, dynlib: pangolib, importc: "pango_layout_get_line".}
-proc pango_layout_get_lines*(layout: PPangoLayout): PGSList{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_lines".}
-proc pango_layout_line_ref*(line: PPangoLayoutLine){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_line_ref".}
-proc pango_layout_line_unref*(line: PPangoLayoutLine){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_line_unref".}
-proc pango_layout_line_x_to_index*(line: PPangoLayoutLine, x_pos: int32,
-                                   index: var int32, trailing: var int32): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_layout_line_x_to_index".}
-proc pango_layout_line_index_to_x*(line: PPangoLayoutLine, index: int32,
-                                   trailing: gboolean, x_pos: var int32){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_line_index_to_x".}
-proc pango_layout_line_get_extents*(line: PPangoLayoutLine,
-                                    ink_rect: PPangoRectangle,
-                                    logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_line_get_extents".}
-proc pango_layout_line_get_pixel_extents*(layout_line: PPangoLayoutLine,
-    ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_line_get_pixel_extents".}
-proc pango_layout_get_iter*(layout: PPangoLayout): PPangoLayoutIter{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_get_iter".}
-proc pango_layout_iter_free*(iter: PPangoLayoutIter){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_iter_free".}
-proc pango_layout_iter_get_index*(iter: PPangoLayoutIter): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_index".}
-proc pango_layout_iter_get_run*(iter: PPangoLayoutIter): PPangoLayoutRun{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_run".}
-proc pango_layout_iter_get_line*(iter: PPangoLayoutIter): PPangoLayoutLine{.
-    cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_line".}
-proc pango_layout_iter_at_last_line*(iter: PPangoLayoutIter): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_at_last_line".}
-proc pango_layout_iter_next_char*(iter: PPangoLayoutIter): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_next_char".}
-proc pango_layout_iter_next_cluster*(iter: PPangoLayoutIter): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_next_cluster".}
-proc pango_layout_iter_next_run*(iter: PPangoLayoutIter): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_next_run".}
-proc pango_layout_iter_next_line*(iter: PPangoLayoutIter): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_next_line".}
-proc pango_layout_iter_get_char_extents*(iter: PPangoLayoutIter,
-    logical_rect: PPangoRectangle){.cdecl, dynlib: pangolib, importc: "pango_layout_iter_get_char_extents".}
-proc pango_layout_iter_get_cluster_extents*(iter: PPangoLayoutIter,
-    ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_cluster_extents".}
-proc pango_layout_iter_get_run_extents*(iter: PPangoLayoutIter,
-                                        ink_rect: PPangoRectangle,
-                                        logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_run_extents".}
-proc pango_layout_iter_get_line_extents*(iter: PPangoLayoutIter,
-    ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_line_extents".}
-proc pango_layout_iter_get_line_yrange*(iter: PPangoLayoutIter, y0: var int32,
-                                        y1: var int32){.cdecl, dynlib: pangolib,
-    importc: "pango_layout_iter_get_line_yrange".}
-proc pango_layout_iter_get_layout_extents*(iter: PPangoLayoutIter,
-    ink_rect: PPangoRectangle, logical_rect: PPangoRectangle){.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_layout_extents".}
-proc pango_layout_iter_get_baseline*(iter: PPangoLayoutIter): int32{.cdecl,
-    dynlib: pangolib, importc: "pango_layout_iter_get_baseline".}
-proc PANGO_TYPE_TAB_ARRAY*(): GType
-proc pango_tab_array_new*(initial_size: gint, positions_in_pixels: gboolean): PPangoTabArray{.
-    cdecl, dynlib: pangolib, importc: "pango_tab_array_new".}
-proc pango_tab_array_get_type*(): GType{.cdecl, dynlib: pangolib,
-    importc: "pango_tab_array_get_type".}
-proc pango_tab_array_copy*(src: PPangoTabArray): PPangoTabArray{.cdecl,
-    dynlib: pangolib, importc: "pango_tab_array_copy".}
-proc pango_tab_array_free*(tab_array: PPangoTabArray){.cdecl, dynlib: pangolib,
-    importc: "pango_tab_array_free".}
-proc pango_tab_array_get_size*(tab_array: PPangoTabArray): gint{.cdecl,
-    dynlib: pangolib, importc: "pango_tab_array_get_size".}
-proc pango_tab_array_resize*(tab_array: PPangoTabArray, new_size: gint){.cdecl,
-    dynlib: pangolib, importc: "pango_tab_array_resize".}
-proc pango_tab_array_set_tab*(tab_array: PPangoTabArray, tab_index: gint,
-                              alignment: TPangoTabAlign, location: gint){.cdecl,
-    dynlib: pangolib, importc: "pango_tab_array_set_tab".}
-proc pango_tab_array_get_tab*(tab_array: PPangoTabArray, tab_index: gint,
-                              alignment: PPangoTabAlign, location: Pgint){.
-    cdecl, dynlib: pangolib, importc: "pango_tab_array_get_tab".}
-proc pango_tab_array_get_positions_in_pixels*(tab_array: PPangoTabArray): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_tab_array_get_positions_in_pixels".}
-proc PANGO_ASCENT*(rect: TPangoRectangle): int32 =
-  result = - int(rect.y)
-
-proc PANGO_DESCENT*(rect: TPangoRectangle): int32 =
-  result = int(rect.y) + int(rect.height)
-
-proc PANGO_LBEARING*(rect: TPangoRectangle): int32 =
-  result = rect.x
-
-proc PANGO_RBEARING*(rect: TPangoRectangle): int32 =
-  result = (rect.x) + (rect.width)
-
-proc PANGO_TYPE_LANGUAGE*(): GType =
-  result = pango_language_get_type()
-
-proc pango_language_to_string*(language: PPangoLanguage): cstring =
-  result = cast[cstring](language)
-
-proc PANGO_PIXELS*(d: int): int =
-  if d >= 0:
-    result = (d + (PANGO_SCALE div 2)) div PANGO_SCALE
-  else:
-    result = (d - (PANGO_SCALE div 2)) div PANGO_SCALE
-
-proc PANGO_TYPE_COLOR*(): GType =
-  result = pango_color_get_type()
-
-proc PANGO_TYPE_ATTR_LIST*(): GType =
-  result = pango_attr_list_get_type()
-
-proc is_line_break*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_line_break) shr
-      bp_TPangoLogAttr_is_line_break
-
-proc set_is_line_break*(a: var TPangoLogAttr, `is_line_break`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_line_break` shl bp_TPangoLogAttr_is_line_break) and
-      bm_TPangoLogAttr_is_line_break)
-
-proc is_mandatory_break*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_mandatory_break) shr
-      bp_TPangoLogAttr_is_mandatory_break
-
-proc set_is_mandatory_break*(a: var TPangoLogAttr, `is_mandatory_break`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_mandatory_break` shl bp_TPangoLogAttr_is_mandatory_break) and
-      bm_TPangoLogAttr_is_mandatory_break)
-
-proc is_char_break*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_char_break) shr
-      bp_TPangoLogAttr_is_char_break
-
-proc set_is_char_break*(a: var TPangoLogAttr, `is_char_break`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_char_break` shl bp_TPangoLogAttr_is_char_break) and
-      bm_TPangoLogAttr_is_char_break)
-
-proc is_white*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_white) shr
-      bp_TPangoLogAttr_is_white
-
-proc set_is_white*(a: var TPangoLogAttr, `is_white`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_white` shl bp_TPangoLogAttr_is_white) and
-      bm_TPangoLogAttr_is_white)
-
-proc is_cursor_position*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_cursor_position) shr
-      bp_TPangoLogAttr_is_cursor_position
-
-proc set_is_cursor_position*(a: var TPangoLogAttr, `is_cursor_position`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_cursor_position` shl bp_TPangoLogAttr_is_cursor_position) and
-      bm_TPangoLogAttr_is_cursor_position)
-
-proc is_word_start*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_word_start) shr
-      bp_TPangoLogAttr_is_word_start
-
-proc set_is_word_start*(a: var TPangoLogAttr, `is_word_start`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_word_start` shl bp_TPangoLogAttr_is_word_start) and
-      bm_TPangoLogAttr_is_word_start)
-
-proc is_word_end*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_word_end) shr
-      bp_TPangoLogAttr_is_word_end
-
-proc set_is_word_end*(a: var TPangoLogAttr, `is_word_end`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_word_end` shl bp_TPangoLogAttr_is_word_end) and
-      bm_TPangoLogAttr_is_word_end)
-
-proc is_sentence_boundary*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_sentence_boundary) shr
-      bp_TPangoLogAttr_is_sentence_boundary
-
-proc set_is_sentence_boundary*(a: var TPangoLogAttr,
-                               `is_sentence_boundary`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_sentence_boundary` shl bp_TPangoLogAttr_is_sentence_boundary) and
-      bm_TPangoLogAttr_is_sentence_boundary)
-
-proc is_sentence_start*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_sentence_start) shr
-      bp_TPangoLogAttr_is_sentence_start
-
-proc set_is_sentence_start*(a: var TPangoLogAttr, `is_sentence_start`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_sentence_start` shl bp_TPangoLogAttr_is_sentence_start) and
-      bm_TPangoLogAttr_is_sentence_start)
-
-proc is_sentence_end*(a: var TPangoLogAttr): guint =
-  result = (a.flag0 and bm_TPangoLogAttr_is_sentence_end) shr
-      bp_TPangoLogAttr_is_sentence_end
-
-proc set_is_sentence_end*(a: var TPangoLogAttr, `is_sentence_end`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_sentence_end` shl bp_TPangoLogAttr_is_sentence_end) and
-      bm_TPangoLogAttr_is_sentence_end)
-
-proc PANGO_TYPE_CONTEXT*(): GType =
-  result = pango_context_get_type()
-
-proc PANGO_CONTEXT*(anObject: pointer): PPangoContext =
-  result = cast[PPangoContext](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_CONTEXT()))
-
-proc PANGO_CONTEXT_CLASS*(klass: pointer): PPangoContextClass =
-  result = cast[PPangoContextClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_CONTEXT()))
-
-proc PANGO_IS_CONTEXT*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_CONTEXT())
-
-proc PANGO_IS_CONTEXT_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_CONTEXT())
-
-proc PANGO_CONTEXT_GET_CLASS*(obj: PPangoContext): PPangoContextClass =
-  result = cast[PPangoContextClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_CONTEXT()))
-
-proc PANGO_TYPE_FONTSET*(): GType =
-  result = pango_fontset_get_type()
-
-proc PANGO_FONTSET*(anObject: pointer): PPangoFontset =
-  result = cast[PPangoFontset](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONTSET()))
-
-proc PANGO_IS_FONTSET*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONTSET())
-
-proc PANGO_FONTSET_CLASS*(klass: pointer): PPangoFontsetClass =
-  result = cast[PPangoFontsetClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONTSET()))
-
-proc PANGO_IS_FONTSET_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONTSET())
-
-proc PANGO_FONTSET_GET_CLASS*(obj: PPangoFontset): PPangoFontsetClass =
-  result = cast[PPangoFontsetClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONTSET()))
-
-proc pango_fontset_simple_get_type(): GType {.importc, cdecl, dynlib: pangolib.}
-
-proc PANGO_TYPE_FONTSET_SIMPLE*(): GType =
-  result = pango_fontset_simple_get_type()
-
-proc PANGO_FONTSET_SIMPLE*(anObject: pointer): PPangoFontsetSimple =
-  result = cast[PPangoFontsetSimple](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      PANGO_TYPE_FONTSET_SIMPLE()))
-
-proc PANGO_IS_FONTSET_SIMPLE*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONTSET_SIMPLE())
-
-proc PANGO_TYPE_FONT_DESCRIPTION*(): GType =
-  result = pango_font_description_get_type()
-
-proc PANGO_TYPE_FONT_METRICS*(): GType =
-  result = pango_font_metrics_get_type()
-
-proc PANGO_TYPE_FONT_FAMILY*(): GType =
-  result = pango_font_family_get_type()
-
-proc PANGO_FONT_FAMILY*(anObject: pointer): PPangoFontFamily =
-  result = cast[PPangoFontFamily](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      PANGO_TYPE_FONT_FAMILY()))
-
-proc PANGO_IS_FONT_FAMILY*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT_FAMILY())
-
-proc PANGO_FONT_FAMILY_CLASS*(klass: Pointer): PPangoFontFamilyClass =
-  result = cast[PPangoFontFamilyClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      PANGO_TYPE_FONT_FAMILY()))
-
-proc PANGO_IS_FONT_FAMILY_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT_FAMILY())
-
-proc PANGO_FONT_FAMILY_GET_CLASS*(obj: PPangoFontFamily): PPangoFontFamilyClass =
-  result = cast[PPangoFontFamilyClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      PANGO_TYPE_FONT_FAMILY()))
-
-proc PANGO_TYPE_FONT_FACE*(): GType =
-  result = pango_font_face_get_type()
-
-proc PANGO_FONT_FACE*(anObject: Pointer): PPangoFontFace =
-  result = cast[PPangoFontFace](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      PANGO_TYPE_FONT_FACE()))
-
-proc PANGO_IS_FONT_FACE*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT_FACE())
-
-proc PANGO_FONT_FACE_CLASS*(klass: Pointer): PPangoFontFaceClass =
-  result = cast[PPangoFontFaceClass](G_TYPE_CHECK_CLASS_CAST(klass,
-      PANGO_TYPE_FONT_FACE()))
-
-proc PANGO_IS_FONT_FACE_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT_FACE())
-
-proc PANGO_FONT_FACE_GET_CLASS*(obj: Pointer): PPangoFontFaceClass =
-  result = cast[PPangoFontFaceClass](G_TYPE_INSTANCE_GET_CLASS(obj,
-      PANGO_TYPE_FONT_FACE()))
-
-proc PANGO_TYPE_FONT*(): GType =
-  result = pango_font_get_type()
-
-proc PANGO_FONT*(anObject: Pointer): PPangoFont =
-  result = cast[PPangoFont](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_FONT()))
-
-proc PANGO_IS_FONT*(anObject: Pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT())
-
-proc PANGO_FONT_CLASS*(klass: Pointer): PPangoFontClass =
-  result = cast[PPangoFontClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONT()))
-
-proc PANGO_IS_FONT_CLASS*(klass: Pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT())
-
-proc PANGO_FONT_GET_CLASS*(obj: PPangoFont): PPangoFontClass =
-  result = cast[PPangoFontClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONT()))
-
-proc PANGO_TYPE_FONT_MAP*(): GType =
-  result = pango_font_map_get_type()
-
-proc PANGO_FONT_MAP*(anObject: pointer): PPangoFontmap =
-  result = cast[PPangoFontmap](G_TYPE_CHECK_INSTANCE_CAST(anObject,
-      PANGO_TYPE_FONT_MAP()))
-
-proc PANGO_IS_FONT_MAP*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_FONT_MAP())
-
-proc PANGO_FONT_MAP_CLASS*(klass: pointer): PPangoFontMapClass =
-  result = cast[PPangoFontMapClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_FONT_MAP()))
-
-proc PANGO_IS_FONT_MAP_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_FONT_MAP())
-
-proc PANGO_FONT_MAP_GET_CLASS*(obj: PPangoFontMap): PPangoFontMapClass =
-  result = cast[PPangoFontMapClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_FONT_MAP()))
-
-proc is_cluster_start*(a: var TPangoGlyphVisAttr): guint =
-  result = (a.flag0 and bm_TPangoGlyphVisAttr_is_cluster_start) shr
-      bp_TPangoGlyphVisAttr_is_cluster_start
-
-proc set_is_cluster_start*(a: var TPangoGlyphVisAttr, `is_cluster_start`: guint) =
-  a.flag0 = a.flag0 or
-      (int16(`is_cluster_start` shl bp_TPangoGlyphVisAttr_is_cluster_start) and
-      bm_TPangoGlyphVisAttr_is_cluster_start)
-
-proc PANGO_TYPE_GLYPH_STRING*(): GType =
-  result = pango_glyph_string_get_type()
-
-proc PANGO_TYPE_LAYOUT*(): GType =
-  result = pango_layout_get_type()
-
-proc PANGO_LAYOUT*(anObject: pointer): PPangoLayout =
-  result = cast[PPangoLayout](G_TYPE_CHECK_INSTANCE_CAST(anObject, PANGO_TYPE_LAYOUT()))
-
-proc PANGO_LAYOUT_CLASS*(klass: pointer): PPangoLayoutClass =
-  result = cast[PPangoLayoutClass](G_TYPE_CHECK_CLASS_CAST(klass, PANGO_TYPE_LAYOUT()))
-
-proc PANGO_IS_LAYOUT*(anObject: pointer): bool =
-  result = G_TYPE_CHECK_INSTANCE_TYPE(anObject, PANGO_TYPE_LAYOUT())
-
-proc PANGO_IS_LAYOUT_CLASS*(klass: pointer): bool =
-  result = G_TYPE_CHECK_CLASS_TYPE(klass, PANGO_TYPE_LAYOUT())
-
-proc PANGO_LAYOUT_GET_CLASS*(obj: PPangoLayout): PPangoLayoutClass =
-  result = cast[PPangoLayoutClass](G_TYPE_INSTANCE_GET_CLASS(obj, PANGO_TYPE_LAYOUT()))
-
-proc PANGO_TYPE_TAB_ARRAY*(): GType =
-  result = pango_tab_array_get_type()
diff --git a/lib/wrappers/gtk/pangoutils.nim b/lib/wrappers/gtk/pangoutils.nim
deleted file mode 100755
index e6f3ab94c..000000000
--- a/lib/wrappers/gtk/pangoutils.nim
+++ /dev/null
@@ -1,46 +0,0 @@
-{.deadCodeElim: on.}
-
-import
-  glib2, pango
-
-type
-  pint32* = ptr int32
-
-proc pango_split_file_list*(str: cstring): PPchar{.cdecl, dynlib: pangolib,
-    importc: "pango_split_file_list".}
-proc pango_trim_string*(str: cstring): cstring{.cdecl, dynlib: pangolib,
-    importc: "pango_trim_string".}
-proc pango_read_line*(stream: TFile, str: PGString): gint{.cdecl,
-    dynlib: pangolib, importc: "pango_read_line".}
-proc pango_skip_space*(pos: PPchar): gboolean{.cdecl, dynlib: pangolib,
-    importc: "pango_skip_space".}
-proc pango_scan_word*(pos: PPchar, OutStr: PGString): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_scan_word".}
-proc pango_scan_string*(pos: PPchar, OutStr: PGString): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_scan_string".}
-proc pango_scan_int*(pos: PPchar, OutInt: pint32): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_scan_int".}
-proc pango_config_key_get(key: cstring): cstring{.cdecl, dynlib: pangolib,
-    importc: "pango_config_key_get".}
-proc pango_lookup_aliases(fontname: cstring, families: PPPchar,
-                          n_families: pint32){.cdecl, dynlib: pangolib,
-    importc: "pango_lookup_aliases".}
-proc pango_parse_style*(str: cstring, style: PPangoStyle, warn: gboolean): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_parse_style".}
-proc pango_parse_variant*(str: cstring, variant: PPangoVariant, warn: gboolean): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_parse_variant".}
-proc pango_parse_weight*(str: cstring, weight: PPangoWeight, warn: gboolean): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_parse_weight".}
-proc pango_parse_stretch*(str: cstring, stretch: PPangoStretch, warn: gboolean): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_parse_stretch".}
-proc pango_get_sysconf_subdirectory(): cstring{.cdecl, dynlib: pangolib,
-    importc: "pango_get_sysconf_subdirectory".}
-proc pango_get_lib_subdirectory(): cstring{.cdecl, dynlib: pangolib,
-    importc: "pango_get_lib_subdirectory".}
-proc pango_log2vis_get_embedding_levels*(str: Pgunichar, len: int32,
-    pbase_dir: PPangoDirection, embedding_level_list: Pguint8): gboolean{.cdecl,
-    dynlib: pangolib, importc: "pango_log2vis_get_embedding_levels".}
-proc pango_get_mirror_char*(ch: gunichar, mirrored_ch: Pgunichar): gboolean{.
-    cdecl, dynlib: pangolib, importc: "pango_get_mirror_char".}
-proc pango_language_get_sample_string*(language: PPangoLanguage): cstring{.
-    cdecl, dynlib: pangolib, importc: "pango_language_get_sample_string".}
diff --git a/lib/wrappers/iup.nim b/lib/wrappers/iup.nim
deleted file mode 100755
index c37d31047..000000000
--- a/lib/wrappers/iup.nim
+++ /dev/null
@@ -1,945 +0,0 @@
-#
-#    Binding for the IUP GUI toolkit
-#       (c) 2010 Andreas Rumpf 
-#    C header files translated by hand
-#    Licence of IUP follows:
-
-
-# ****************************************************************************
-# Copyright (C) 1994-2009 Tecgraf, PUC-Rio.
-# 
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-# ****************************************************************************
-
-{.deadCodeElim: on.}
-
-when defined(windows): 
-  const dllname = "iup(30|27|26|25|24).dll"
-elif defined(macosx):
-  const dllname = "libiup(3.0|2.7|2.6|2.5|2.4).dylib"
-else: 
-  const dllname = "libiup(3.0|2.7|2.6|2.5|2.4).so.1"
-
-const
-  IUP_NAME* = "IUP - Portable User Interface"
-  IUP_COPYRIGHT* = "Copyright (C) 1994-2009 Tecgraf, PUC-Rio."
-  IUP_DESCRIPTION* = "Portable toolkit for building graphical user interfaces."
-  constIUP_VERSION* = "3.0"
-  constIUP_VERSION_NUMBER* = 300000
-  constIUP_VERSION_DATE* = "2009/07/18"
-
-type
-  Ihandle {.pure.} = object
-  PIhandle* = ptr Ihandle
-
-  Icallback* = proc (arg: PIhandle): cint {.cdecl.}
-
-#                      pre-definided dialogs
-proc FileDlg*: PIhandle {.importc: "IupFileDlg", dynlib: dllname, cdecl.}
-proc MessageDlg*: PIhandle {.importc: "IupMessageDlg", dynlib: dllname, cdecl.}
-proc ColorDlg*: PIhandle {.importc: "IupColorDlg", dynlib: dllname, cdecl.}
-proc FontDlg*: PIhandle {.importc: "IupFontDlg", dynlib: dllname, cdecl.}
-
-proc GetFile*(arq: cstring): cint {.
-  importc: "IupGetFile", dynlib: dllname, cdecl.}
-proc Message*(title, msg: cstring) {.
-  importc: "IupMessage", dynlib: dllname, cdecl.}
-proc Messagef*(title, format: cstring) {.
-  importc: "IupMessagef", dynlib: dllname, cdecl, varargs.}
-proc Alarm*(title, msg, b1, b2, b3: cstring): cint {.
-  importc: "IupAlarm", dynlib: dllname, cdecl.}
-proc Scanf*(format: cstring): cint {.
-  importc: "IupScanf", dynlib: dllname, cdecl, varargs.}
-proc ListDialog*(theType: cint, title: cstring, size: cint, 
-                 list: cstringArray, op, max_col, max_lin: cint, 
-                 marks: ptr cint): cint {.
-                 importc: "IupListDialog", dynlib: dllname, cdecl.}
-proc GetText*(title, text: cstring): cint {.
-  importc: "IupGetText", dynlib: dllname, cdecl.}
-proc GetColor*(x, y: cint, r, g, b: var byte): cint {.
-  importc: "IupGetColor", dynlib: dllname, cdecl.}
-
-type
-  Iparamcb* = proc (dialog: PIhandle, param_index: cint, 
-                    user_data: pointer): cint {.cdecl.}
-
-proc GetParam*(title: cstring, action: Iparamcb, user_data: pointer, 
-               format: cstring): cint {.
-               importc: "IupGetParam", cdecl, varargs, dynlib: dllname.}
-proc GetParamv*(title: cstring, action: Iparamcb, user_data: pointer, 
-                format: cstring, param_count, param_extra: cint, 
-                param_data: pointer): cint {.
-                importc: "IupGetParamv", cdecl, dynlib: dllname.}
-
-
-#                      Functions
-
-proc Open*(argc: ptr cint, argv: ptr cstringArray): cint {.
-  importc: "IupOpen", cdecl, dynlib: dllname.}
-proc Close*() {.importc: "IupClose", cdecl, dynlib: dllname.}
-proc ImageLibOpen*() {.importc: "IupImageLibOpen", cdecl, dynlib: dllname.}
-
-proc MainLoop*(): cint {.importc: "IupMainLoop", cdecl, dynlib: dllname.}
-proc LoopStep*(): cint {.importc: "IupLoopStep", cdecl, dynlib: dllname.}
-proc MainLoopLevel*(): cint {.importc: "IupMainLoopLevel", cdecl, dynlib: dllname.}
-proc Flush*() {.importc: "IupFlush", cdecl, dynlib: dllname.}
-proc ExitLoop*() {.importc: "IupExitLoop", cdecl, dynlib: dllname.}
-
-proc Update*(ih: PIhandle) {.importc: "IupUpdate", cdecl, dynlib: dllname.}
-proc UpdateChildren*(ih: PIhandle) {.importc: "IupUpdateChildren", cdecl, dynlib: dllname.}
-proc Redraw*(ih: PIhandle, children: cint) {.importc: "IupRedraw", cdecl, dynlib: dllname.}
-proc Refresh*(ih: PIhandle) {.importc: "IupRefresh", cdecl, dynlib: dllname.}
-
-proc MapFont*(iupfont: cstring): cstring {.importc: "IupMapFont", cdecl, dynlib: dllname.}
-proc UnMapFont*(driverfont: cstring): cstring {.importc: "IupUnMapFont", cdecl, dynlib: dllname.}
-proc Help*(url: cstring): cint {.importc: "IupHelp", cdecl, dynlib: dllname.}
-proc Load*(filename: cstring): cstring {.importc: "IupLoad", cdecl, dynlib: dllname.}
-
-proc IupVersion*(): cstring {.importc: "IupVersion", cdecl, dynlib: dllname.}
-proc IupVersionDate*(): cstring {.importc: "IupVersionDate", cdecl, dynlib: dllname.}
-proc IupVersionNumber*(): cint {.importc: "IupVersionNumber", cdecl, dynlib: dllname.}
-proc SetLanguage*(lng: cstring) {.importc: "IupSetLanguage", cdecl, dynlib: dllname.}
-proc GetLanguage*(): cstring {.importc: "IupGetLanguage", cdecl, dynlib: dllname.}
-
-proc Destroy*(ih: PIhandle) {.importc: "IupDestroy", cdecl, dynlib: dllname.}
-proc Detach*(child: PIhandle) {.importc: "IupDetach", cdecl, dynlib: dllname.}
-proc Append*(ih, child: PIhandle): PIhandle {.
-  importc: "IupAppend", cdecl, dynlib: dllname.}
-proc Insert*(ih, ref_child, child: PIhandle): PIhandle {.
-  importc: "IupInsert", cdecl, dynlib: dllname.}
-proc GetChild*(ih: PIhandle, pos: cint): PIhandle {.
-  importc: "IupGetChild", cdecl, dynlib: dllname.}
-proc GetChildPos*(ih, child: PIhandle): cint {.
-  importc: "IupGetChildPos", cdecl, dynlib: dllname.}
-proc GetChildCount*(ih: PIhandle): cint {.
-  importc: "IupGetChildCount", cdecl, dynlib: dllname.}
-proc GetNextChild*(ih, child: PIhandle): PIhandle {.
-  importc: "IupGetNextChild", cdecl, dynlib: dllname.}
-proc GetBrother*(ih: PIhandle): PIhandle {.
-  importc: "IupGetBrother", cdecl, dynlib: dllname.}
-proc GetParent*(ih: PIhandle): PIhandle {.
-  importc: "IupGetParent", cdecl, dynlib: dllname.}
-proc GetDialog*(ih: PIhandle): PIhandle {.
-  importc: "IupGetDialog", cdecl, dynlib: dllname.}
-proc GetDialogChild*(ih: PIhandle, name: cstring): PIhandle {.
-  importc: "IupGetDialogChild", cdecl, dynlib: dllname.}
-proc Reparent*(ih, new_parent: PIhandle): cint {.
-  importc: "IupReparent", cdecl, dynlib: dllname.}
-
-proc Popup*(ih: PIhandle, x, y: cint): cint {.
-  importc: "IupPopup", cdecl, dynlib: dllname.}
-proc Show*(ih: PIhandle): cint {.
-  importc: "IupShow", cdecl, dynlib: dllname.}
-proc ShowXY*(ih: PIhandle, x, y: cint): cint {.
-  importc: "IupShowXY", cdecl, dynlib: dllname.}
-proc Hide*(ih: PIhandle): cint {.
-  importc: "IupHide", cdecl, dynlib: dllname.}
-proc Map*(ih: PIhandle): cint {.
-  importc: "IupMap", cdecl, dynlib: dllname.}
-proc Unmap*(ih: PIhandle) {.
-  importc: "IupUnmap", cdecl, dynlib: dllname.}
-
-proc SetAttribute*(ih: PIhandle, name, value: cstring) {.
-  importc: "IupSetAttribute", cdecl, dynlib: dllname.}
-proc StoreAttribute*(ih: PIhandle, name, value: cstring) {.
-  importc: "IupStoreAttribute", cdecl, dynlib: dllname.}
-proc SetAttributes*(ih: PIhandle, str: cstring): PIhandle {.
-  importc: "IupSetAttributes", cdecl, dynlib: dllname.}
-proc GetAttribute*(ih: PIhandle, name: cstring): cstring {.
-  importc: "IupGetAttribute", cdecl, dynlib: dllname.}
-proc GetAttributes*(ih: PIhandle): cstring {.
-  importc: "IupGetAttributes", cdecl, dynlib: dllname.}
-proc GetInt*(ih: PIhandle, name: cstring): cint {.
-  importc: "IupGetInt", cdecl, dynlib: dllname.}
-proc GetInt2*(ih: PIhandle, name: cstring): cint {.
-  importc: "IupGetInt2", cdecl, dynlib: dllname.}
-proc GetIntInt*(ih: PIhandle, name: cstring, i1, i2: var cint): cint {.
-  importc: "IupGetIntInt", cdecl, dynlib: dllname.}
-proc GetFloat*(ih: PIhandle, name: cstring): cfloat {.
-  importc: "IupGetFloat", cdecl, dynlib: dllname.}
-proc SetfAttribute*(ih: PIhandle, name, format: cstring) {.
-  importc: "IupSetfAttribute", cdecl, dynlib: dllname, varargs.}
-proc GetAllAttributes*(ih: PIhandle, names: cstringArray, n: cint): cint {.
-  importc: "IupGetAllAttributes", cdecl, dynlib: dllname.}
-proc SetAtt*(handle_name: cstring, ih: PIhandle, name: cstring): PIhandle {.
-  importc: "IupSetAtt", cdecl, dynlib: dllname, varargs.}
-
-proc SetGlobal*(name, value: cstring) {.
-  importc: "IupSetGlobal", cdecl, dynlib: dllname.}
-proc StoreGlobal*(name, value: cstring) {.
-  importc: "IupStoreGlobal", cdecl, dynlib: dllname.}
-proc GetGlobal*(name: cstring): cstring {.
-  importc: "IupGetGlobal", cdecl, dynlib: dllname.}
-
-proc SetFocus*(ih: PIhandle): PIhandle {.
-  importc: "IupSetFocus", cdecl, dynlib: dllname.}
-proc GetFocus*(): PIhandle {.
-  importc: "IupGetFocus", cdecl, dynlib: dllname.}
-proc PreviousField*(ih: PIhandle): PIhandle {.
-  importc: "IupPreviousField", cdecl, dynlib: dllname.}
-proc NextField*(ih: PIhandle): PIhandle {.
-  importc: "IupNextField", cdecl, dynlib: dllname.}
-
-proc GetCallback*(ih: PIhandle, name: cstring): Icallback {.
-  importc: "IupGetCallback", cdecl, dynlib: dllname.}
-proc SetCallback*(ih: PIhandle, name: cstring, func: Icallback): Icallback {.
-  importc: "IupSetCallback", cdecl, dynlib: dllname.}
-proc SetCallbacks*(ih: PIhandle, name: cstring, func: Icallback): PIhandle {.
-  importc: "IupSetCallbacks", cdecl, dynlib: dllname, varargs.}
-
-proc GetFunction*(name: cstring): Icallback {.
-  importc: "IupGetFunction", cdecl, dynlib: dllname.}
-proc SetFunction*(name: cstring, func: Icallback): Icallback {.
-  importc: "IupSetFunction", cdecl, dynlib: dllname.}
-proc GetActionName*(): cstring {.
-  importc: "IupGetActionName", cdecl, dynlib: dllname.}
-
-proc GetHandle*(name: cstring): PIhandle {.
-  importc: "IupGetHandle", cdecl, dynlib: dllname.}
-proc SetHandle*(name: cstring, ih: PIhandle): PIhandle {.
-  importc: "IupSetHandle", cdecl, dynlib: dllname.}
-proc GetAllNames*(names: cstringArray, n: cint): cint {.
-  importc: "IupGetAllNames", cdecl, dynlib: dllname.}
-proc GetAllDialogs*(names: cstringArray, n: cint): cint {.
-  importc: "IupGetAllDialogs", cdecl, dynlib: dllname.}
-proc GetName*(ih: PIhandle): cstring {.
-  importc: "IupGetName", cdecl, dynlib: dllname.}
-
-proc SetAttributeHandle*(ih: PIhandle, name: cstring, ih_named: PIhandle) {.
-  importc: "IupSetAttributeHandle", cdecl, dynlib: dllname.}
-proc GetAttributeHandle*(ih: PIhandle, name: cstring): PIhandle {.
-  importc: "IupGetAttributeHandle", cdecl, dynlib: dllname.}
-
-proc GetClassName*(ih: PIhandle): cstring {.
-  importc: "IupGetClassName", cdecl, dynlib: dllname.}
-proc GetClassType*(ih: PIhandle): cstring {.
-  importc: "IupGetClassType", cdecl, dynlib: dllname.}
-proc GetClassAttributes*(classname: cstring, names: cstringArray, 
-                         n: cint): cint {.
-  importc: "IupGetClassAttributes", cdecl, dynlib: dllname.}
-proc SaveClassAttributes*(ih: PIhandle) {.
-  importc: "IupSaveClassAttributes", cdecl, dynlib: dllname.}
-proc SetClassDefaultAttribute*(classname, name, value: cstring) {.
-  importc: "IupSetClassDefaultAttribute", cdecl, dynlib: dllname.}
-
-proc Create*(classname: cstring): PIhandle {.
-  importc: "IupCreate", cdecl, dynlib: dllname.}
-proc Createv*(classname: cstring, params: pointer): PIhandle {.
-  importc: "IupCreatev", cdecl, dynlib: dllname.}
-proc Createp*(classname: cstring, first: pointer): PIhandle {.
-  importc: "IupCreatep", cdecl, dynlib: dllname, varargs.}
-
-proc Fill*(): PIhandle {.importc: "IupFill", cdecl, dynlib: dllname.}
-proc Radio*(child: PIhandle): PIhandle {.
-  importc: "IupRadio", cdecl, dynlib: dllname.}
-proc Vbox*(child: PIhandle): PIhandle {.
-  importc: "IupVbox", cdecl, dynlib: dllname, varargs.}
-proc Vboxv*(children: ptr PIhandle): PIhandle {.
-  importc: "IupVboxv", cdecl, dynlib: dllname.}
-proc Zbox*(child: PIhandle): PIhandle {.
-  importc: "IupZbox", cdecl, dynlib: dllname, varargs.}
-proc Zboxv*(children: ptr PIhandle): PIhandle {.
-  importc: "IupZboxv", cdecl, dynlib: dllname.}
-proc Hbox*(child: PIhandle): PIhandle {.
-  importc: "IupHbox", cdecl, dynlib: dllname, varargs.}
-proc Hboxv*(children: ptr PIhandle): PIhandle {.
-  importc: "IupHboxv", cdecl, dynlib: dllname.}
-
-proc Normalizer*(ih_first: PIhandle): PIhandle {.
-  importc: "IupNormalizer", cdecl, dynlib: dllname, varargs.}
-proc Normalizerv*(ih_list: ptr PIhandle): PIhandle {.
-  importc: "IupNormalizerv", cdecl, dynlib: dllname.}
-
-proc Cbox*(child: PIhandle): PIhandle {.
-  importc: "IupCbox", cdecl, dynlib: dllname, varargs.}
-proc Cboxv*(children: ptr PIhandle): PIhandle {.
-  importc: "IupCboxv", cdecl, dynlib: dllname.}
-proc Sbox*(child: PIhandle): PIhandle {.
-  importc: "IupSbox", cdecl, dynlib: dllname.}
-
-proc Frame*(child: PIhandle): PIhandle {.
-  importc: "IupFrame", cdecl, dynlib: dllname.}
-
-proc Image*(width, height: cint, pixmap: pointer): PIhandle {.
-  importc: "IupImage", cdecl, dynlib: dllname.}
-proc ImageRGB*(width, height: cint, pixmap: pointer): PIhandle {.
-  importc: "IupImageRGB", cdecl, dynlib: dllname.}
-proc ImageRGBA*(width, height: cint, pixmap: pointer): PIhandle {.
-  importc: "IupImageRGBA", cdecl, dynlib: dllname.}
-
-proc Item*(title, action: cstring): PIhandle {.
-  importc: "IupItem", cdecl, dynlib: dllname.}
-proc Submenu*(title: cstring, child: PIhandle): PIhandle {.
-  importc: "IupSubmenu", cdecl, dynlib: dllname.}
-proc Separator*(): PIhandle {.
-  importc: "IupSeparator", cdecl, dynlib: dllname.}
-proc Menu*(child: PIhandle): PIhandle {.
-  importc: "IupMenu", cdecl, dynlib: dllname, varargs.}
-proc Menuv*(children: ptr PIhandle): PIhandle {.
-  importc: "IupMenuv", cdecl, dynlib: dllname.}
-
-proc Button*(title, action: cstring): PIhandle {.
-  importc: "IupButton", cdecl, dynlib: dllname.}
-proc Canvas*(action: cstring): PIhandle {.
-  importc: "IupCanvas", cdecl, dynlib: dllname.}
-proc Dialog*(child: PIhandle): PIhandle {.
-  importc: "IupDialog", cdecl, dynlib: dllname.}
-proc User*(): PIhandle {.
-  importc: "IupUser", cdecl, dynlib: dllname.}
-proc Label*(title: cstring): PIhandle {.
-  importc: "IupLabel", cdecl, dynlib: dllname.}
-proc List*(action: cstring): PIhandle {.
-  importc: "IupList", cdecl, dynlib: dllname.}
-proc Text*(action: cstring): PIhandle {.
-  importc: "IupText", cdecl, dynlib: dllname.}
-proc MultiLine*(action: cstring): PIhandle {.
-  importc: "IupMultiLine", cdecl, dynlib: dllname.}
-proc Toggle*(title, action: cstring): PIhandle {.
-  importc: "IupToggle", cdecl, dynlib: dllname.}
-proc Timer*(): PIhandle {.
-  importc: "IupTimer", cdecl, dynlib: dllname.}
-proc ProgressBar*(): PIhandle {.
-  importc: "IupProgressBar", cdecl, dynlib: dllname.}
-proc Val*(theType: cstring): PIhandle {.
-  importc: "IupVal", cdecl, dynlib: dllname.}
-proc Tabs*(child: PIhandle): PIhandle {.
-  importc: "IupTabs", cdecl, dynlib: dllname, varargs.}
-proc Tabsv*(children: ptr PIhandle): PIhandle {.
-  importc: "IupTabsv", cdecl, dynlib: dllname.}
-proc Tree*(): PIhandle {.importc: "IupTree", cdecl, dynlib: dllname.}
-
-proc Spin*(): PIhandle {.importc: "IupSpin", cdecl, dynlib: dllname.}
-proc Spinbox*(child: PIhandle): PIhandle {.
-  importc: "IupSpinbox", cdecl, dynlib: dllname.}
-
-# IupText utilities
-proc TextConvertLinColToPos*(ih: PIhandle, lin, col: cint, pos: var cint) {.
-  importc: "IupTextConvertLinColToPos", cdecl, dynlib: dllname.}
-proc TextConvertPosToLinCol*(ih: PIhandle, pos: cint, lin, col: var cint) {.
-  importc: "IupTextConvertPosToLinCol", cdecl, dynlib: dllname.}
-
-proc ConvertXYToPos*(ih: PIhandle, x, y: cint): cint {.
-  importc: "IupConvertXYToPos", cdecl, dynlib: dllname.}
-
-# IupTree utilities
-proc TreeSetUserId*(ih: PIhandle, id: cint, userid: pointer): cint {.
-  importc: "IupTreeSetUserId", cdecl, dynlib: dllname.}
-proc TreeGetUserId*(ih: PIhandle, id: cint): pointer {.
-  importc: "IupTreeGetUserId", cdecl, dynlib: dllname.}
-proc TreeGetId*(ih: PIhandle, userid: pointer): cint {.
-  importc: "IupTreeGetId", cdecl, dynlib: dllname.}
-
-proc TreeSetAttribute*(ih: PIhandle, name: cstring, id: cint, value: cstring) {.
-  importc: "IupTreeSetAttribute", cdecl, dynlib: dllname.}
-proc TreeStoreAttribute*(ih: PIhandle, name: cstring, id: cint, value: cstring) {.
-  importc: "IupTreeStoreAttribute", cdecl, dynlib: dllname.}
-proc TreeGetAttribute*(ih: PIhandle, name: cstring, id: cint): cstring {.
-  importc: "IupTreeGetAttribute", cdecl, dynlib: dllname.}
-proc TreeGetInt*(ih: PIhandle, name: cstring, id: cint): cint {.
-  importc: "IupTreeGetInt", cdecl, dynlib: dllname.}
-proc TreeGetFloat*(ih: PIhandle, name: cstring, id: cint): cfloat {.
-  importc: "IupTreeGetFloat", cdecl, dynlib: dllname.}
-proc TreeSetfAttribute*(ih: PIhandle, name: cstring, id: cint, format: cstring) {.
-  importc: "IupTreeSetfAttribute", cdecl, dynlib: dllname, varargs.}
-
-
-#                   Common Return Values
-const
-  IUP_ERROR* = cint(1)
-  IUP_NOERROR* = cint(0)
-  IUP_OPENED* = cint(-1)
-  IUP_INVALID* = cint(-1)
-
-  # Callback Return Values
-  IUP_IGNORE* = cint(-1)
-  IUP_DEFAULT* = cint(-2)
-  IUP_CLOSE* = cint(-3)
-  IUP_CONTINUE* = cint(-4)
-
-  # IupPopup and IupShowXY Parameter Values
-  IUP_CENTER* = cint(0xFFFF) 
-  IUP_LEFT* = cint(0xFFFE) 
-  IUP_RIGHT* = cint(0xFFFD) 
-  IUP_MOUSEPOS* = cint(0xFFFC) 
-  IUP_CURRENT* = cint(0xFFFB) 
-  IUP_CENTERPARENT* = cint(0xFFFA) 
-  IUP_TOP* = IUP_LEFT
-  IUP_BOTTOM* = IUP_RIGHT
-
-  # SHOW_CB Callback Values
-  IUP_SHOW* = cint(0)
-  IUP_RESTORE* = cint(1)
-  IUP_MINIMIZE* = cint(2)
-  IUP_MAXIMIZE* = cint(3)
-  IUP_HIDE* = cint(4)
-
-  # SCROLL_CB Callback Values
-  IUP_SBUP* = cint(0)
-  IUP_SBDN* = cint(1)
-  IUP_SBPGUP* = cint(2)   
-  IUP_SBPGDN* = cint(3)
-  IUP_SBPOSV* = cint(4)
-  IUP_SBDRAGV* = cint(5) 
-  IUP_SBLEFT* = cint(6)
-  IUP_SBRIGHT* = cint(7)
-  IUP_SBPGLEFT* = cint(8)
-  IUP_SBPGRIGHT* = cint(9)
-  IUP_SBPOSH* = cint(10)
-  IUP_SBDRAGH* = cint(11)
-
-  # Mouse Button Values and Macros
-  IUP_BUTTON1* = cint(ord('1'))
-  IUP_BUTTON2* = cint(ord('2'))
-  IUP_BUTTON3* = cint(ord('3'))
-  IUP_BUTTON4* = cint(ord('4'))
-  IUP_BUTTON5* = cint(ord('5'))
-
-proc isShift*(s: cstring): bool = return s[0] == 'S'
-proc isControl*(s: cstring): bool = return s[1] == 'C'
-proc isButton1*(s: cstring): bool = return s[2] == '1'
-proc isButton2*(s: cstring): bool = return s[3] == '2'
-proc isbutton3*(s: cstring): bool = return s[4] == '3'
-proc isDouble*(s: cstring): bool = return s[5] == 'D'
-proc isAlt*(s: cstring): bool = return s[6] == 'A'
-proc isSys*(s: cstring): bool = return s[7] == 'Y'
-proc isButton4*(s: cstring): bool = return s[8] == '4'
-proc isButton5*(s: cstring): bool = return s[9] == '5'
-
-# Pre-Defined Masks
-const
-  IUP_MASK_FLOAT* = "[+/-]?(/d+/.?/d*|/./d+)"
-  IUP_MASK_UFLOAT* = "(/d+/.?/d*|/./d+)"
-  IUP_MASK_EFLOAT* = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?"
-  IUP_MASK_INT* = "[+/-]?/d+"
-  IUP_MASK_UINT* = "/d+"
-  
-# from 32 to 126, all character sets are equal,

-# the key code i the same as the character code.

-const

-  K_SP* = cint(ord(' '))

-  K_exclam* = cint(ord('!'))   

-  K_quotedbl* = cint(ord('\"'))

-  K_numbersign* = cint(ord('#'))

-  K_dollar* = cint(ord('$'))

-  K_percent* = cint(ord('%'))

-  K_ampersand* = cint(ord('&'))

-  K_apostrophe* = cint(ord('\''))

-  K_parentleft* = cint(ord('('))

-  K_parentright* = cint(ord(')'))

-  K_asterisk* = cint(ord('*'))

-  K_plus* = cint(ord('+'))

-  K_comma* = cint(ord(','))

-  K_minus* = cint(ord('-'))

-  K_period* = cint(ord('.'))

-  K_slash* = cint(ord('/'))

-  K_0* = cint(ord('0'))

-  K_1* = cint(ord('1'))

-  K_2* = cint(ord('2'))

-  K_3* = cint(ord('3'))

-  K_4* = cint(ord('4'))

-  K_5* = cint(ord('5'))

-  K_6* = cint(ord('6'))

-  K_7* = cint(ord('7'))

-  K_8* = cint(ord('8'))

-  K_9* = cint(ord('9'))

-  K_colon* = cint(ord(':'))

-  K_semicolon* = cint(ord(';'))

-  K_less* = cint(ord('<'))

-  K_equal* = cint(ord('='))

-  K_greater* = cint(ord('>'))   

-  K_question* = cint(ord('?'))   

-  K_at* = cint(ord('@'))   

-  K_upperA* = cint(ord('A'))   

-  K_upperB* = cint(ord('B'))   

-  K_upperC* = cint(ord('C'))   

-  K_upperD* = cint(ord('D'))   

-  K_upperE* = cint(ord('E'))   

-  K_upperF* = cint(ord('F'))   

-  K_upperG* = cint(ord('G'))   

-  K_upperH* = cint(ord('H'))   

-  K_upperI* = cint(ord('I'))   

-  K_upperJ* = cint(ord('J'))   

-  K_upperK* = cint(ord('K'))   

-  K_upperL* = cint(ord('L'))   

-  K_upperM* = cint(ord('M'))   

-  K_upperN* = cint(ord('N'))   

-  K_upperO* = cint(ord('O'))   

-  K_upperP* = cint(ord('P'))   

-  K_upperQ* = cint(ord('Q'))  

-  K_upperR* = cint(ord('R'))  

-  K_upperS* = cint(ord('S'))  

-  K_upperT* = cint(ord('T'))  

-  K_upperU* = cint(ord('U'))  

-  K_upperV* = cint(ord('V')) 

-  K_upperW* = cint(ord('W')) 

-  K_upperX* = cint(ord('X'))  

-  K_upperY* = cint(ord('Y'))  

-  K_upperZ* = cint(ord('Z'))  

-  K_bracketleft* = cint(ord('[')) 

-  K_backslash* = cint(ord('\\'))  

-  K_bracketright* = cint(ord(']'))  

-  K_circum* = cint(ord('^'))   

-  K_underscore* = cint(ord('_'))   

-  K_grave* = cint(ord('`'))   

-  K_lowera* = cint(ord('a'))  

-  K_lowerb* = cint(ord('b'))   

-  K_lowerc* = cint(ord('c')) 

-  K_lowerd* = cint(ord('d'))   

-  K_lowere* = cint(ord('e'))   

-  K_lowerf* = cint(ord('f'))  

-  K_lowerg* = cint(ord('g'))

-  K_lowerh* = cint(ord('h')) 

-  K_loweri* = cint(ord('i')) 

-  K_lowerj* = cint(ord('j')) 

-  K_lowerk* = cint(ord('k'))

-  K_lowerl* = cint(ord('l'))

-  K_lowerm* = cint(ord('m'))

-  K_lowern* = cint(ord('n'))

-  K_lowero* = cint(ord('o'))

-  K_lowerp* = cint(ord('p'))

-  K_lowerq* = cint(ord('q'))

-  K_lowerr* = cint(ord('r'))

-  K_lowers* = cint(ord('s'))

-  K_lowert* = cint(ord('t'))

-  K_loweru* = cint(ord('u'))

-  K_lowerv* = cint(ord('v'))

-  K_lowerw* = cint(ord('w'))

-  K_lowerx* = cint(ord('x'))

-  K_lowery* = cint(ord('y'))

-  K_lowerz* = cint(ord('z'))

-  K_braceleft* = cint(ord('{'))

-  K_bar* = cint(ord('|'))

-  K_braceright* = cint(ord('}'))

-  K_tilde* = cint(ord('~'))

-

-proc isPrint*(c: cint): bool = return c > 31 and c < 127

-

-# also define the escape sequences that have keys associated

-const

-  K_BS* = cint(ord('\b'))

-  K_TAB* = cint(ord('\t'))

-  K_LF* = cint(10)

-  K_CR* = cint(13)

-

-# IUP Extended Key Codes, range start at 128

-# Modifiers use 256 interval

-# These key code definitions are specific to IUP

-

-proc isXkey*(c: cint): bool = return c > 128

-proc isShiftXkey*(c: cint): bool = return c > 256 and c < 512

-proc isCtrlXkey*(c: cint): bool = return c > 512 and c < 768

-proc isAltXkey*(c: cint): bool = return c > 768 and c < 1024

-proc isSysXkey*(c: cint): bool = return c > 1024 and c < 1280

-

-proc IUPxCODE*(c: cint): cint = return c + cint(128) # Normal (must be above 128)

-proc IUPsxCODE*(c: cint): cint = 
-  return c + cint(256)
-  # Shift (must have range to include the standard keys and the normal 
-  # extended keys, so must be above 256
-
-proc IUPcxCODE*(c: cint): cint = return c + cint(512) # Ctrl

-proc IUPmxCODE*(c: cint): cint = return c + cint(768) # Alt

-proc IUPyxCODE*(c: cint): cint = return c + cint(1024) # Sys (Win or Apple) 

-
-const

-  IUP_NUMMAXCODES* = 1280 ## 5*256=1280  Normal+Shift+Ctrl+Alt+Sys

-

-  K_HOME* = IUPxCODE(1)                

-  K_UP* = IUPxCODE(2)

-  K_PGUP* = IUPxCODE(3)

-  K_LEFT* = IUPxCODE(4)

-  K_MIDDLE* = IUPxCODE(5)

-  K_RIGHT* = IUPxCODE(6)

-  K_END* = IUPxCODE(7)

-  K_DOWN* = IUPxCODE(8)

-  K_PGDN* = IUPxCODE(9)

-  K_INS* = IUPxCODE(10)    

-  K_DEL* = IUPxCODE(11)    

-  K_PAUSE* = IUPxCODE(12)

-  K_ESC* = IUPxCODE(13)

-  K_ccedilla* = IUPxCODE(14)

-  K_F1* = IUPxCODE(15)

-  K_F2* = IUPxCODE(16)

-  K_F3* = IUPxCODE(17)

-  K_F4* = IUPxCODE(18)

-  K_F5* = IUPxCODE(19)

-  K_F6* = IUPxCODE(20)

-  K_F7* = IUPxCODE(21)

-  K_F8* = IUPxCODE(22)

-  K_F9* = IUPxCODE(23)

-  K_F10* = IUPxCODE(24)

-  K_F11* = IUPxCODE(25)

-  K_F12* = IUPxCODE(26)

-  K_Print* = IUPxCODE(27)

-  K_Menu* = IUPxCODE(28)

-

-  K_acute* = IUPxCODE(29) # no Shift/Ctrl/Alt

-

-  K_sHOME* = IUPsxCODE(K_HOME)

-  K_sUP* = IUPsxCODE(K_UP)

-  K_sPGUP* = IUPsxCODE(K_PGUP)

-  K_sLEFT* = IUPsxCODE(K_LEFT)

-  K_sMIDDLE* = IUPsxCODE(K_MIDDLE)

-  K_sRIGHT* = IUPsxCODE(K_RIGHT)

-  K_sEND* = IUPsxCODE(K_END)

-  K_sDOWN* = IUPsxCODE(K_DOWN)

-  K_sPGDN* = IUPsxCODE(K_PGDN)

-  K_sINS* = IUPsxCODE(K_INS)

-  K_sDEL* = IUPsxCODE(K_DEL)

-  K_sSP* = IUPsxCODE(K_SP)

-  K_sTAB* = IUPsxCODE(K_TAB)

-  K_sCR* = IUPsxCODE(K_CR)

-  K_sBS* = IUPsxCODE(K_BS)

-  K_sPAUSE* = IUPsxCODE(K_PAUSE)

-  K_sESC* = IUPsxCODE(K_ESC)

-  K_sCcedilla* = IUPsxCODE(K_ccedilla)

-  K_sF1* = IUPsxCODE(K_F1)

-  K_sF2* = IUPsxCODE(K_F2)

-  K_sF3* = IUPsxCODE(K_F3)

-  K_sF4* = IUPsxCODE(K_F4)

-  K_sF5* = IUPsxCODE(K_F5)

-  K_sF6* = IUPsxCODE(K_F6)

-  K_sF7* = IUPsxCODE(K_F7)

-  K_sF8* = IUPsxCODE(K_F8)

-  K_sF9* = IUPsxCODE(K_F9)

-  K_sF10* = IUPsxCODE(K_F10)

-  K_sF11* = IUPsxCODE(K_F11)

-  K_sF12* = IUPsxCODE(K_F12)

-  K_sPrint* = IUPsxCODE(K_Print)

-  K_sMenu* = IUPsxCODE(K_Menu)

-

-  K_cHOME* = IUPcxCODE(K_HOME)

-  K_cUP* = IUPcxCODE(K_UP)

-  K_cPGUP* = IUPcxCODE(K_PGUP)

-  K_cLEFT* = IUPcxCODE(K_LEFT)

-  K_cMIDDLE* = IUPcxCODE(K_MIDDLE)

-  K_cRIGHT* = IUPcxCODE(K_RIGHT)

-  K_cEND* = IUPcxCODE(K_END)

-  K_cDOWN* = IUPcxCODE(K_DOWN)

-  K_cPGDN* = IUPcxCODE(K_PGDN)

-  K_cINS* = IUPcxCODE(K_INS)

-  K_cDEL* = IUPcxCODE(K_DEL)

-  K_cSP* = IUPcxCODE(K_SP)

-  K_cTAB* = IUPcxCODE(K_TAB)

-  K_cCR* = IUPcxCODE(K_CR)

-  K_cBS* = IUPcxCODE(K_BS)

-  K_cPAUSE* = IUPcxCODE(K_PAUSE)

-  K_cESC* = IUPcxCODE(K_ESC)

-  K_cCcedilla* = IUPcxCODE(K_ccedilla)

-  K_cF1* = IUPcxCODE(K_F1)

-  K_cF2* = IUPcxCODE(K_F2)

-  K_cF3* = IUPcxCODE(K_F3)

-  K_cF4* = IUPcxCODE(K_F4)

-  K_cF5* = IUPcxCODE(K_F5)

-  K_cF6* = IUPcxCODE(K_F6)

-  K_cF7* = IUPcxCODE(K_F7)

-  K_cF8* = IUPcxCODE(K_F8)

-  K_cF9* = IUPcxCODE(K_F9)

-  K_cF10* = IUPcxCODE(K_F10)

-  K_cF11* = IUPcxCODE(K_F11)

-  K_cF12* = IUPcxCODE(K_F12)

-  K_cPrint* = IUPcxCODE(K_Print)

-  K_cMenu* = IUPcxCODE(K_Menu)

-

-  K_mHOME* = IUPmxCODE(K_HOME)

-  K_mUP* = IUPmxCODE(K_UP)

-  K_mPGUP* = IUPmxCODE(K_PGUP)

-  K_mLEFT* = IUPmxCODE(K_LEFT)

-  K_mMIDDLE* = IUPmxCODE(K_MIDDLE)

-  K_mRIGHT* = IUPmxCODE(K_RIGHT)

-  K_mEND* = IUPmxCODE(K_END)

-  K_mDOWN* = IUPmxCODE(K_DOWN)

-  K_mPGDN* = IUPmxCODE(K_PGDN)

-  K_mINS* = IUPmxCODE(K_INS)

-  K_mDEL* = IUPmxCODE(K_DEL)

-  K_mSP* = IUPmxCODE(K_SP)

-  K_mTAB* = IUPmxCODE(K_TAB)

-  K_mCR* = IUPmxCODE(K_CR)

-  K_mBS* = IUPmxCODE(K_BS)

-  K_mPAUSE* = IUPmxCODE(K_PAUSE)

-  K_mESC* = IUPmxCODE(K_ESC)

-  K_mCcedilla* = IUPmxCODE(K_ccedilla)

-  K_mF1* = IUPmxCODE(K_F1)

-  K_mF2* = IUPmxCODE(K_F2)

-  K_mF3* = IUPmxCODE(K_F3)

-  K_mF4* = IUPmxCODE(K_F4)

-  K_mF5* = IUPmxCODE(K_F5)

-  K_mF6* = IUPmxCODE(K_F6)

-  K_mF7* = IUPmxCODE(K_F7)

-  K_mF8* = IUPmxCODE(K_F8)

-  K_mF9* = IUPmxCODE(K_F9)

-  K_mF10* = IUPmxCODE(K_F10)

-  K_mF11* = IUPmxCODE(K_F11)

-  K_mF12* = IUPmxCODE(K_F12)

-  K_mPrint* = IUPmxCODE(K_Print)

-  K_mMenu* = IUPmxCODE(K_Menu)

-

-  K_yHOME* = IUPyxCODE(K_HOME)

-  K_yUP* = IUPyxCODE(K_UP)

-  K_yPGUP* = IUPyxCODE(K_PGUP)

-  K_yLEFT* = IUPyxCODE(K_LEFT)

-  K_yMIDDLE* = IUPyxCODE(K_MIDDLE)

-  K_yRIGHT* = IUPyxCODE(K_RIGHT)

-  K_yEND* = IUPyxCODE(K_END)

-  K_yDOWN* = IUPyxCODE(K_DOWN)

-  K_yPGDN* = IUPyxCODE(K_PGDN)

-  K_yINS* = IUPyxCODE(K_INS)

-  K_yDEL* = IUPyxCODE(K_DEL)

-  K_ySP* = IUPyxCODE(K_SP)

-  K_yTAB* = IUPyxCODE(K_TAB)

-  K_yCR* = IUPyxCODE(K_CR)

-  K_yBS* = IUPyxCODE(K_BS)

-  K_yPAUSE* = IUPyxCODE(K_PAUSE)

-  K_yESC* = IUPyxCODE(K_ESC)

-  K_yCcedilla* = IUPyxCODE(K_ccedilla)

-  K_yF1* = IUPyxCODE(K_F1)

-  K_yF2* = IUPyxCODE(K_F2)

-  K_yF3* = IUPyxCODE(K_F3)

-  K_yF4* = IUPyxCODE(K_F4)

-  K_yF5* = IUPyxCODE(K_F5)

-  K_yF6* = IUPyxCODE(K_F6)

-  K_yF7* = IUPyxCODE(K_F7)

-  K_yF8* = IUPyxCODE(K_F8)

-  K_yF9* = IUPyxCODE(K_F9)

-  K_yF10* = IUPyxCODE(K_F10)

-  K_yF11* = IUPyxCODE(K_F11)

-  K_yF12* = IUPyxCODE(K_F12)

-  K_yPrint* = IUPyxCODE(K_Print)

-  K_yMenu* = IUPyxCODE(K_Menu)

-

-  K_sPlus* = IUPsxCODE(K_plus)   

-  K_sComma* = IUPsxCODE(K_comma)   

-  K_sMinus* = IUPsxCODE(K_minus)   

-  K_sPeriod* = IUPsxCODE(K_period)   

-  K_sSlash* = IUPsxCODE(K_slash)   

-  K_sAsterisk* = IUPsxCODE(K_asterisk)

-                        

-  K_cupperA* = IUPcxCODE(K_upperA)

-  K_cupperB* = IUPcxCODE(K_upperB)

-  K_cupperC* = IUPcxCODE(K_upperC)

-  K_cupperD* = IUPcxCODE(K_upperD)

-  K_cupperE* = IUPcxCODE(K_upperE)

-  K_cupperF* = IUPcxCODE(K_upperF)

-  K_cupperG* = IUPcxCODE(K_upperG)

-  K_cupperH* = IUPcxCODE(K_upperH)

-  K_cupperI* = IUPcxCODE(K_upperI)

-  K_cupperJ* = IUPcxCODE(K_upperJ)

-  K_cupperK* = IUPcxCODE(K_upperK)

-  K_cupperL* = IUPcxCODE(K_upperL)

-  K_cupperM* = IUPcxCODE(K_upperM)

-  K_cupperN* = IUPcxCODE(K_upperN)

-  K_cupperO* = IUPcxCODE(K_upperO)

-  K_cupperP* = IUPcxCODE(K_upperP)

-  K_cupperQ* = IUPcxCODE(K_upperQ)

-  K_cupperR* = IUPcxCODE(K_upperR)

-  K_cupperS* = IUPcxCODE(K_upperS)

-  K_cupperT* = IUPcxCODE(K_upperT)

-  K_cupperU* = IUPcxCODE(K_upperU)

-  K_cupperV* = IUPcxCODE(K_upperV)

-  K_cupperW* = IUPcxCODE(K_upperW)

-  K_cupperX* = IUPcxCODE(K_upperX)

-  K_cupperY* = IUPcxCODE(K_upperY)

-  K_cupperZ* = IUPcxCODE(K_upperZ)

-  K_c1* = IUPcxCODE(K_1)

-  K_c2* = IUPcxCODE(K_2)

-  K_c3* = IUPcxCODE(K_3)

-  K_c4* = IUPcxCODE(K_4)

-  K_c5* = IUPcxCODE(K_5)

-  K_c6* = IUPcxCODE(K_6)

-  K_c7* = IUPcxCODE(K_7)        

-  K_c8* = IUPcxCODE(K_8)         

-  K_c9* = IUPcxCODE(K_9)

-  K_c0* = IUPcxCODE(K_0)

-  K_cPlus* = IUPcxCODE(K_plus)   

-  K_cComma* = IUPcxCODE(K_comma)   

-  K_cMinus* = IUPcxCODE(K_minus)   

-  K_cPeriod* = IUPcxCODE(K_period)   

-  K_cSlash* = IUPcxCODE(K_slash)   

-  K_cSemicolon* = IUPcxCODE(K_semicolon) 

-  K_cEqual* = IUPcxCODE(K_equal)

-  K_cBracketleft* = IUPcxCODE(K_bracketleft)

-  K_cBracketright* = IUPcxCODE(K_bracketright)

-  K_cBackslash* = IUPcxCODE(K_backslash)

-  K_cAsterisk* = IUPcxCODE(K_asterisk)

-

-  K_mupperA* = IUPmxCODE(K_upperA)

-  K_mupperB* = IUPmxCODE(K_upperB)

-  K_mupperC* = IUPmxCODE(K_upperC)

-  K_mupperD* = IUPmxCODE(K_upperD)

-  K_mupperE* = IUPmxCODE(K_upperE)

-  K_mupperF* = IUPmxCODE(K_upperF)

-  K_mupperG* = IUPmxCODE(K_upperG)

-  K_mupperH* = IUPmxCODE(K_upperH)

-  K_mupperI* = IUPmxCODE(K_upperI)

-  K_mupperJ* = IUPmxCODE(K_upperJ)

-  K_mupperK* = IUPmxCODE(K_upperK)

-  K_mupperL* = IUPmxCODE(K_upperL)

-  K_mupperM* = IUPmxCODE(K_upperM)

-  K_mupperN* = IUPmxCODE(K_upperN)

-  K_mupperO* = IUPmxCODE(K_upperO)

-  K_mupperP* = IUPmxCODE(K_upperP)

-  K_mupperQ* = IUPmxCODE(K_upperQ)

-  K_mupperR* = IUPmxCODE(K_upperR)

-  K_mupperS* = IUPmxCODE(K_upperS)

-  K_mupperT* = IUPmxCODE(K_upperT)

-  K_mupperU* = IUPmxCODE(K_upperU)

-  K_mupperV* = IUPmxCODE(K_upperV)

-  K_mupperW* = IUPmxCODE(K_upperW)

-  K_mupperX* = IUPmxCODE(K_upperX)

-  K_mupperY* = IUPmxCODE(K_upperY)

-  K_mupperZ* = IUPmxCODE(K_upperZ)

-  K_m1* = IUPmxCODE(K_1)

-  K_m2* = IUPmxCODE(K_2)

-  K_m3* = IUPmxCODE(K_3)

-  K_m4* = IUPmxCODE(K_4)

-  K_m5* = IUPmxCODE(K_5)

-  K_m6* = IUPmxCODE(K_6)

-  K_m7* = IUPmxCODE(K_7)        

-  K_m8* = IUPmxCODE(K_8)         

-  K_m9* = IUPmxCODE(K_9)

-  K_m0* = IUPmxCODE(K_0)

-  K_mPlus* = IUPmxCODE(K_plus)   

-  K_mComma* = IUPmxCODE(K_comma)   

-  K_mMinus* = IUPmxCODE(K_minus)   

-  K_mPeriod* = IUPmxCODE(K_period)   

-  K_mSlash* = IUPmxCODE(K_slash)   

-  K_mSemicolon* = IUPmxCODE(K_semicolon) 

-  K_mEqual* = IUPmxCODE(K_equal)

-  K_mBracketleft* = IUPmxCODE(K_bracketleft)

-  K_mBracketright* = IUPmxCODE(K_bracketright)

-  K_mBackslash* = IUPmxCODE(K_backslash)

-  K_mAsterisk* = IUPmxCODE(K_asterisk)

-

-  K_yA* = IUPyxCODE(K_upperA)

-  K_yB* = IUPyxCODE(K_upperB)

-  K_yC* = IUPyxCODE(K_upperC)

-  K_yD* = IUPyxCODE(K_upperD)

-  K_yE* = IUPyxCODE(K_upperE)

-  K_yF* = IUPyxCODE(K_upperF)

-  K_yG* = IUPyxCODE(K_upperG)

-  K_yH* = IUPyxCODE(K_upperH)

-  K_yI* = IUPyxCODE(K_upperI)

-  K_yJ* = IUPyxCODE(K_upperJ)

-  K_yK* = IUPyxCODE(K_upperK)

-  K_yL* = IUPyxCODE(K_upperL)

-  K_yM* = IUPyxCODE(K_upperM)

-  K_yN* = IUPyxCODE(K_upperN)

-  K_yO* = IUPyxCODE(K_upperO)

-  K_yP* = IUPyxCODE(K_upperP)

-  K_yQ* = IUPyxCODE(K_upperQ)

-  K_yR* = IUPyxCODE(K_upperR)

-  K_yS* = IUPyxCODE(K_upperS)

-  K_yT* = IUPyxCODE(K_upperT)

-  K_yU* = IUPyxCODE(K_upperU)

-  K_yV* = IUPyxCODE(K_upperV)

-  K_yW* = IUPyxCODE(K_upperW)

-  K_yX* = IUPyxCODE(K_upperX)

-  K_yY* = IUPyxCODE(K_upperY)

-  K_yZ* = IUPyxCODE(K_upperZ)

-  K_y1* = IUPyxCODE(K_1)

-  K_y2* = IUPyxCODE(K_2)

-  K_y3* = IUPyxCODE(K_3)

-  K_y4* = IUPyxCODE(K_4)

-  K_y5* = IUPyxCODE(K_5)

-  K_y6* = IUPyxCODE(K_6)

-  K_y7* = IUPyxCODE(K_7)        

-  K_y8* = IUPyxCODE(K_8)         

-  K_y9* = IUPyxCODE(K_9)

-  K_y0* = IUPyxCODE(K_0)

-  K_yPlus* = IUPyxCODE(K_plus)

-  K_yComma* = IUPyxCODE(K_comma)

-  K_yMinus* = IUPyxCODE(K_minus)   

-  K_yPeriod* = IUPyxCODE(K_period)   

-  K_ySlash* = IUPyxCODE(K_slash)   

-  K_ySemicolon* = IUPyxCODE(K_semicolon) 

-  K_yEqual* = IUPyxCODE(K_equal)

-  K_yBracketleft* = IUPyxCODE(K_bracketleft)

-  K_yBracketright* = IUPyxCODE(K_bracketright)

-  K_yBackslash* = IUPyxCODE(K_backslash)

-  K_yAsterisk* = IUPyxCODE(K_asterisk)

-
-proc ControlsOpen*(): cint {.cdecl, importc: "IupControlsOpen", dynlib: dllname.}

-proc ControlsClose*() {.cdecl, importc: "IupControlsClose", dynlib: dllname.}

-

-proc OldValOpen*() {.cdecl, importc: "IupOldValOpen", dynlib: dllname.}

-proc OldTabsOpen*() {.cdecl, importc: "IupOldTabsOpen", dynlib: dllname.}

-

-proc Colorbar*(): PIhandle {.cdecl, importc: "IupColorbar", dynlib: dllname.}

-proc Cells*(): PIhandle {.cdecl, importc: "IupCells", dynlib: dllname.}

-proc ColorBrowser*(): PIhandle {.cdecl, importc: "IupColorBrowser", dynlib: dllname.}

-proc Gauge*(): PIhandle {.cdecl, importc: "IupGauge", dynlib: dllname.}

-proc Dial*(theType: cstring): PIhandle {.cdecl, importc: "IupDial", dynlib: dllname.}

-proc Matrix*(action: cstring): PIhandle {.cdecl, importc: "IupMatrix", dynlib: dllname.}

-

-# IupMatrix utilities

-proc MatSetAttribute*(ih: PIhandle, name: cstring, lin, col: cint, 
-                      value: cstring) {.
-                      cdecl, importc: "IupMatSetAttribute", dynlib: dllname.}

-proc MatStoreAttribute*(ih: PIhandle, name: cstring, lin, col: cint, 
-                        value: cstring) {.cdecl, 
-                        importc: "IupMatStoreAttribute", dynlib: dllname.}

-proc MatGetAttribute*(ih: PIhandle, name: cstring, lin, col: cint): cstring {.
-  cdecl, importc: "IupMatGetAttribute", dynlib: dllname.}

-proc MatGetInt*(ih: PIhandle, name: cstring, lin, col: cint): cint {.
-  cdecl, importc: "IupMatGetInt", dynlib: dllname.}

-proc MatGetFloat*(ih: PIhandle, name: cstring, lin, col: cint): cfloat {.
-  cdecl, importc: "IupMatGetFloat", dynlib: dllname.}

-proc MatSetfAttribute*(ih: PIhandle, name: cstring, lin, col: cint, 
-                       format: cstring) {.cdecl, 
-                       importc: "IupMatSetfAttribute", 
-                       dynlib: dllname, varargs.}

-

-# Used by IupColorbar

-const
-  IUP_PRIMARY* = -1

-  IUP_SECONDARY* = -2

-

-# Initialize PPlot widget class

-proc PPlotOpen*() {.cdecl, importc: "IupPPlotOpen", dynlib: dllname.}

-

-# Create an PPlot widget instance

-proc PPlot*: PIhandle {.cdecl, importc: "IupPPlot", dynlib: dllname.}

-

-# Add dataset to plot

-proc PPlotBegin*(ih: PIhandle, strXdata: cint) {.
-  cdecl, importc: "IupPPlotBegin", dynlib: dllname.}

-proc PPlotAdd*(ih: PIhandle, x, y: cfloat) {.
-  cdecl, importc: "IupPPlotAdd", dynlib: dllname.}

-proc PPlotAddStr*(ih: PIhandle, x: cstring, y: cfloat) {.
-  cdecl, importc: "IupPPlotAddStr", dynlib: dllname.}

-proc PPlotEnd*(ih: PIhandle): cint {.
-  cdecl, importc: "IupPPlotEnd", dynlib: dllname.}

-

-proc PPlotInsertStr*(ih: PIhandle, index, sample_index: cint, x: cstring, 
-                     y: cfloat) {.cdecl, importc: "IupPPlotInsertStr", 
-                     dynlib: dllname.}

-proc PPlotInsert*(ih: PIhandle, index, sample_index: cint, 
-                  x, y: cfloat) {.
-                  cdecl, importc: "IupPPlotInsert", dynlib: dllname.}

-

-# convert from plot coordinates to pixels

-proc PPlotTransform*(ih: PIhandle, x, y: cfloat, ix, iy: var cint) {.
-  cdecl, importc: "IupPPlotTransform", dynlib: dllname.}

-

-# Plot on the given device. Uses a "cdCanvas*".

-proc PPlotPaintTo*(ih: PIhandle, cnv: pointer) {.
-  cdecl, importc: "IupPPlotPaintTo", dynlib: dllname.}

-

-
diff --git a/lib/wrappers/libcurl.nim b/lib/wrappers/libcurl.nim
deleted file mode 100755
index 9cb352fb7..000000000
--- a/lib/wrappers/libcurl.nim
+++ /dev/null
@@ -1,644 +0,0 @@
-#
-#    $Id: header,v 1.1 2000/07/13 06:33:45 michael Exp $
-#    This file is part of the Free Pascal packages
-#    Copyright (c) 1999-2000 by the Free Pascal development team
-#
-#    See the file COPYING.FPC, included in this distribution,
-#    for details about the copyright.
-#
-#    This program is distributed in the hope that it will be useful,
-#    but WITHOUT ANY WARRANTY; without even the implied warranty of
-#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-# **********************************************************************
-#
-#   the curl library is governed by its own copyright, see the curl
-#   website for this. 
-# 
-
-{.deadCodeElim: on.}
-
-import times
-
-when defined(windows):
-  const libname = "libcurl.dll"
-elif defined(macosx):
-  const libname = "libcurl-7.19.3.dylib"
-elif defined(unix):
-  const libname = "libcurl.so.4"
-
-type 
-  Pcurl_calloc_callback* = ptr Tcurl_calloc_callback
-  Pcurl_closepolicy* = ptr Tcurl_closepolicy
-  Pcurl_forms* = ptr Tcurl_forms
-  Pcurl_ftpauth* = ptr Tcurl_ftpauth
-  Pcurl_ftpmethod* = ptr Tcurl_ftpmethod
-  Pcurl_ftpssl* = ptr Tcurl_ftpssl
-  PCURL_HTTP_VERSION* = ptr TCURL_HTTP_VERSION
-  Pcurl_httppost* = ptr Tcurl_httppost
-  PPcurl_httppost* = ptr Pcurl_httppost
-  Pcurl_infotype* = ptr Tcurl_infotype
-  Pcurl_lock_access* = ptr Tcurl_lock_access
-  Pcurl_lock_data* = ptr Tcurl_lock_data
-  Pcurl_malloc_callback* = ptr tcurl_malloc_callback
-  PCURL_NETRC_OPTION* = ptr TCURL_NETRC_OPTION
-  Pcurl_proxytype* = ptr Tcurl_proxytype
-  Pcurl_realloc_callback* = ptr tcurl_realloc_callback
-  Pcurl_slist* = ptr Tcurl_slist
-  Pcurl_socket* = ptr Tcurl_socket
-  PCURL_SSL_VERSION* = ptr TCURL_SSL_VERSION
-  Pcurl_strdup_callback* = ptr Tcurl_strdup_callback
-  PCURL_TIMECOND* = ptr TCURL_TIMECOND
-  Pcurl_version_info_data* = ptr Tcurl_version_info_data
-  PCURLcode* = ptr TCURLcode
-  PCURLFORMcode* = ptr TCURLFORMcode
-  PCURLformoption* = ptr TCURLformoption
-  PCURLINFO* = ptr TCURLINFO
-  Pcurliocmd* = ptr Tcurliocmd
-  Pcurlioerr* = ptr Tcurlioerr
-  PCURLM* = ptr TCURLM
-  PCURLMcode* = ptr TCURLMcode
-  PCURLMoption* = ptr TCURLMoption
-  PCURLMSG* = ptr TCURLMSG
-  PCURLoption* = ptr TCURLoption
-  PCURLSH* = ptr TCURLSH
-  PCURLSHcode* = ptr TCURLSHcode
-  PCURLSHoption* = ptr TCURLSHoption
-  PCURLversion* = ptr TCURLversion
-  Pfd_set* = pointer
-  PCURL* = ptr TCurl
-  TCurl* = pointer
-  Tcurl_httppost* {.final, pure.} = object 
-    next*: Pcurl_httppost
-    name*: cstring
-    namelength*: int32
-    contents*: cstring
-    contentslength*: int32
-    buffer*: cstring
-    bufferlength*: int32
-    contenttype*: cstring
-    contentheader*: Pcurl_slist
-    more*: Pcurl_httppost
-    flags*: int32
-    showfilename*: cstring
-
-  Tcurl_progress_callback* = proc (clientp: pointer, dltotal: float64, 
-                                   dlnow: float64, ultotal: float64, 
-                                   ulnow: float64): int32{.cdecl.}
-  Tcurl_write_callback* = proc (buffer: cstring, size: int, nitems: int, 
-                                outstream: pointer): int{.cdecl.}
-  Tcurl_read_callback* = proc (buffer: cstring, size: int, nitems: int, 
-                               instream: pointer): int{.cdecl.}
-  Tcurl_passwd_callback* = proc (clientp: pointer, prompt: cstring, 
-                                 buffer: cstring, buflen: int32): int32{.cdecl.}
-  Tcurlioerr* = enum 
-    CURLIOE_OK, CURLIOE_UNKNOWNCMD, CURLIOE_FAILRESTART, CURLIOE_LAST
-  Tcurliocmd* = enum 
-    CURLIOCMD_NOP, CURLIOCMD_RESTARTREAD, CURLIOCMD_LAST
-  Tcurl_ioctl_callback* = proc (handle: PCURL, cmd: int32, 
-                                clientp: pointer): Tcurlioerr {.cdecl.}
-  Tcurl_malloc_callback* = proc (size: int): pointer {.cdecl.}
-  Tcurl_free_callback* = proc (p: pointer) {.cdecl.}
-  Tcurl_realloc_callback* = proc (p: pointer, size: int): pointer {.cdecl.}
-  Tcurl_strdup_callback* = proc (str: cstring): cstring {.cdecl.}
-  Tcurl_calloc_callback* = proc (nmemb: int, size: int): pointer
-  Tcurl_infotype* = enum 
-    CURLINFO_TEXT = 0, CURLINFO_HEADER_IN, CURLINFO_HEADER_OUT, 
-    CURLINFO_DATA_IN, CURLINFO_DATA_OUT, CURLINFO_SSL_DATA_IN, 
-    CURLINFO_SSL_DATA_OUT, CURLINFO_END
-  Tcurl_debug_callback* = proc (handle: PCURL, theType: Tcurl_infotype, 
-                                data: cstring, size: int, 
-                                userptr: pointer): int32 {.cdecl.}
-  TCURLcode* = enum 
-    CURLE_OK = 0, CURLE_UNSUPPORTED_PROTOCOL, CURLE_FAILED_INIT, 
-    CURLE_URL_MALFORMAT, CURLE_URL_MALFORMAT_USER, CURLE_COULDNT_RESOLVE_PROXY, 
-    CURLE_COULDNT_RESOLVE_HOST, CURLE_COULDNT_CONNECT, 
-    CURLE_FTP_WEIRD_SERVER_REPLY, CURLE_FTP_ACCESS_DENIED, 
-    CURLE_FTP_USER_PASSWORD_INCORRECT, CURLE_FTP_WEIRD_PASS_REPLY, 
-    CURLE_FTP_WEIRD_USER_REPLY, CURLE_FTP_WEIRD_PASV_REPLY, 
-    CURLE_FTP_WEIRD_227_FORMAT, CURLE_FTP_CANT_GET_HOST, 
-    CURLE_FTP_CANT_RECONNECT, CURLE_FTP_COULDNT_SET_BINARY, CURLE_PARTIAL_FILE, 
-    CURLE_FTP_COULDNT_RETR_FILE, CURLE_FTP_WRITE_ERROR, CURLE_FTP_QUOTE_ERROR, 
-    CURLE_HTTP_RETURNED_ERROR, CURLE_WRITE_ERROR, CURLE_MALFORMAT_USER, 
-    CURLE_FTP_COULDNT_STOR_FILE, CURLE_READ_ERROR, CURLE_OUT_OF_MEMORY, 
-    CURLE_OPERATION_TIMEOUTED, CURLE_FTP_COULDNT_SET_ASCII, 
-    CURLE_FTP_PORT_FAILED, CURLE_FTP_COULDNT_USE_REST, 
-    CURLE_FTP_COULDNT_GET_SIZE, CURLE_HTTP_RANGE_ERROR, CURLE_HTTP_POST_ERROR, 
-    CURLE_SSL_CONNECT_ERROR, CURLE_BAD_DOWNLOAD_RESUME, 
-    CURLE_FILE_COULDNT_READ_FILE, CURLE_LDAP_CANNOT_BIND, 
-    CURLE_LDAP_SEARCH_FAILED, CURLE_LIBRARY_NOT_FOUND, CURLE_FUNCTION_NOT_FOUND, 
-    CURLE_ABORTED_BY_CALLBACK, CURLE_BAD_FUNCTION_ARGUMENT, 
-    CURLE_BAD_CALLING_ORDER, CURLE_INTERFACE_FAILED, CURLE_BAD_PASSWORD_ENTERED, 
-    CURLE_TOO_MANY_REDIRECTS, CURLE_UNKNOWN_TELNET_OPTION, 
-    CURLE_TELNET_OPTION_SYNTAX, CURLE_OBSOLETE, CURLE_SSL_PEER_CERTIFICATE, 
-    CURLE_GOT_NOTHING, CURLE_SSL_ENGINE_NOTFOUND, CURLE_SSL_ENGINE_SETFAILED, 
-    CURLE_SEND_ERROR, CURLE_RECV_ERROR, CURLE_SHARE_IN_USE, 
-    CURLE_SSL_CERTPROBLEM, CURLE_SSL_CIPHER, CURLE_SSL_CACERT, 
-    CURLE_BAD_CONTENT_ENCODING, CURLE_LDAP_INVALID_URL, CURLE_FILESIZE_EXCEEDED, 
-    CURLE_FTP_SSL_FAILED, CURLE_SEND_FAIL_REWIND, CURLE_SSL_ENGINE_INITFAILED, 
-    CURLE_LOGIN_DENIED, CURLE_TFTP_NOTFOUND, CURLE_TFTP_PERM, 
-    CURLE_TFTP_DISKFULL, CURLE_TFTP_ILLEGAL, CURLE_TFTP_UNKNOWNID, 
-    CURLE_TFTP_EXISTS, CURLE_TFTP_NOSUCHUSER, CURLE_CONV_FAILED, 
-    CURLE_CONV_REQD, CURL_LAST
-  Tcurl_conv_callback* = proc (buffer: cstring, len: int): TCURLcode {.cdecl.}
-  Tcurl_ssl_ctx_callback* = proc (curl: PCURL, 
-                                 ssl_ctx, userptr: pointer): TCURLcode {.cdecl.}
-  Tcurl_proxytype* = enum 
-    CURLPROXY_HTTP = 0, CURLPROXY_SOCKS4 = 4, CURLPROXY_SOCKS5 = 5
-  Tcurl_ftpssl* = enum 
-    CURLFTPSSL_NONE, CURLFTPSSL_TRY, CURLFTPSSL_CONTROL, CURLFTPSSL_ALL, 
-    CURLFTPSSL_LAST
-  Tcurl_ftpauth* = enum 
-    CURLFTPAUTH_DEFAULT, CURLFTPAUTH_SSL, CURLFTPAUTH_TLS, CURLFTPAUTH_LAST
-  Tcurl_ftpmethod* = enum 
-    CURLFTPMETHOD_DEFAULT, CURLFTPMETHOD_MULTICWD, CURLFTPMETHOD_NOCWD, 
-    CURLFTPMETHOD_SINGLECWD, CURLFTPMETHOD_LAST
-  TCURLoption* = enum 
-    CURLOPT_PORT = 0 + 3,
-    CURLOPT_TIMEOUT = 0 + 13, 
-    CURLOPT_INFILESIZE = 0 + 14, 
-    CURLOPT_LOW_SPEED_LIMIT = 0 + 19, 
-    CURLOPT_LOW_SPEED_TIME = 0 + 20, 
-    CURLOPT_RESUME_FROM = 0 + 21,
-    CURLOPT_CRLF = 0 + 27, 
-    CURLOPT_SSLVERSION = 0 + 32, 
-    CURLOPT_TIMECONDITION = 0 + 33, 
-    CURLOPT_TIMEVALUE = 0 + 34, 
-    CURLOPT_VERBOSE = 0 + 41, 
-    CURLOPT_HEADER = 0 + 42, 
-    CURLOPT_NOPROGRESS = 0 + 43, 
-    CURLOPT_NOBODY = 0 + 44, 
-    CURLOPT_FAILONERROR = 0 + 45, 
-    CURLOPT_UPLOAD = 0 + 46, 
-    CURLOPT_POST = 0 + 47, 
-    CURLOPT_FTPLISTONLY = 0 + 48, 
-    CURLOPT_FTPAPPEND = 0 + 50, 
-    CURLOPT_NETRC = 0 + 51, 
-    CURLOPT_FOLLOWLOCATION = 0 + 52, 
-    CURLOPT_TRANSFERTEXT = 0 + 53, 
-    CURLOPT_PUT = 0 + 54, 
-    CURLOPT_AUTOREFERER = 0 + 58, 
-    CURLOPT_PROXYPORT = 0 + 59, 
-    CURLOPT_POSTFIELDSIZE = 0 + 60, 
-    CURLOPT_HTTPPROXYTUNNEL = 0 + 61, 
-    CURLOPT_SSL_VERIFYPEER = 0 + 64, 
-    CURLOPT_MAXREDIRS = 0 + 68, 
-    CURLOPT_FILETIME = 0 + 69, 
-    CURLOPT_MAXCONNECTS = 0 + 71, 
-    CURLOPT_CLOSEPOLICY = 0 + 72, 
-    CURLOPT_FRESH_CONNECT = 0 + 74, 
-    CURLOPT_FORBID_REUSE = 0 + 75, 
-    CURLOPT_CONNECTTIMEOUT = 0 + 78, 
-    CURLOPT_HTTPGET = 0 + 80, 
-    CURLOPT_SSL_VERIFYHOST = 0 + 81, 
-    CURLOPT_HTTP_VERSION = 0 + 84, 
-    CURLOPT_FTP_USE_EPSV = 0 + 85, 
-    CURLOPT_SSLENGINE_DEFAULT = 0 + 90, 
-    CURLOPT_DNS_USE_GLOBAL_CACHE = 0 + 91, 
-    CURLOPT_DNS_CACHE_TIMEOUT = 0 + 92, 
-    CURLOPT_COOKIESESSION = 0 + 96, 
-    CURLOPT_BUFFERSIZE = 0 + 98, 
-    CURLOPT_NOSIGNAL = 0 + 99, 
-    CURLOPT_PROXYTYPE = 0 + 101, 
-    CURLOPT_UNRESTRICTED_AUTH = 0 + 105, 
-    CURLOPT_FTP_USE_EPRT = 0 + 106, 
-    CURLOPT_HTTPAUTH = 0 + 107, 
-    CURLOPT_FTP_CREATE_MISSING_DIRS = 0 + 110, 
-    CURLOPT_PROXYAUTH = 0 + 111, 
-    CURLOPT_FTP_RESPONSE_TIMEOUT = 0 + 112, 
-    CURLOPT_IPRESOLVE = 0 + 113, 
-    CURLOPT_MAXFILESIZE = 0 + 114, 
-    CURLOPT_FTP_SSL = 0 + 119, 
-    CURLOPT_TCP_NODELAY = 0 + 121, 
-    CURLOPT_FTPSSLAUTH = 0 + 129, 
-    CURLOPT_IGNORE_CONTENT_LENGTH = 0 + 136, 
-    CURLOPT_FTP_SKIP_PASV_IP = 0 + 137, 
-    CURLOPT_FTP_FILEMETHOD = 0 + 138, 
-    CURLOPT_LOCALPORT = 0 + 139, 
-    CURLOPT_LOCALPORTRANGE = 0 + 140, 
-    CURLOPT_CONNECT_ONLY = 0 + 141, 
-
-    CURLOPT_FILE = 10000 + 1, 
-    CURLOPT_URL = 10000 + 2,  
-    CURLOPT_PROXY = 10000 + 4, 
-    CURLOPT_USERPWD = 10000 + 5, 
-    CURLOPT_PROXYUSERPWD = 10000 + 6, 
-    CURLOPT_RANGE = 10000 + 7, 
-    CURLOPT_INFILE = 10000 + 9, 
-    CURLOPT_ERRORBUFFER = 10000 + 10, 
-    CURLOPT_POSTFIELDS = 10000 + 15, 
-    CURLOPT_REFERER = 10000 + 16, 
-    CURLOPT_FTPPORT = 10000 + 17, 
-    CURLOPT_USERAGENT = 10000 + 18, 
-    CURLOPT_COOKIE = 10000 + 22, 
-    CURLOPT_HTTPHEADER = 10000 + 23, 
-    CURLOPT_HTTPPOST = 10000 + 24, 
-    CURLOPT_SSLCERT = 10000 + 25, 
-    CURLOPT_SSLCERTPASSWD = 10000 + 26, 
-    CURLOPT_QUOTE = 10000 + 28, 
-    CURLOPT_WRITEHEADER = 10000 + 29, 
-    CURLOPT_COOKIEFILE = 10000 + 31, 
-    CURLOPT_CUSTOMREQUEST = 10000 + 36, 
-    CURLOPT_STDERR = 10000 + 37, 
-    CURLOPT_POSTQUOTE = 10000 + 39, 
-    CURLOPT_WRITEINFO = 10000 + 40, 
-    CURLOPT_PROGRESSDATA = 10000 + 57, 
-    CURLOPT_INTERFACE = 10000 + 62, 
-    CURLOPT_KRB4LEVEL = 10000 + 63,
-    CURLOPT_CAINFO = 10000 + 65, 
-    CURLOPT_TELNETOPTIONS = 10000 + 70, 
-    CURLOPT_RANDOM_FILE = 10000 + 76, 
-    CURLOPT_EGDSOCKET = 10000 + 77, 
-    CURLOPT_COOKIEJAR = 10000 + 82, 
-    CURLOPT_SSL_CIPHER_LIST = 10000 + 83, 
-    CURLOPT_SSLCERTTYPE = 10000 + 86, 
-    CURLOPT_SSLKEY = 10000 + 87, 
-    CURLOPT_SSLKEYTYPE = 10000 + 88, 
-    CURLOPT_SSLENGINE = 10000 + 89, 
-    CURLOPT_PREQUOTE = 10000 + 93, 
-    CURLOPT_DEBUGDATA = 10000 + 95, 
-    CURLOPT_CAPATH = 10000 + 97, 
-    CURLOPT_SHARE = 10000 + 100, 
-    CURLOPT_ENCODING = 10000 + 102, 
-    CURLOPT_PRIVATE = 10000 + 103, 
-    CURLOPT_HTTP200ALIASES = 10000 + 104, 
-    CURLOPT_SSL_CTX_DATA = 10000 + 109, 
-    CURLOPT_NETRC_FILE = 10000 + 118, 
-    CURLOPT_SOURCE_USERPWD = 10000 + 123, 
-    CURLOPT_SOURCE_PREQUOTE = 10000 + 127, 
-    CURLOPT_SOURCE_POSTQUOTE = 10000 + 128, 
-    CURLOPT_IOCTLDATA = 10000 + 131, 
-    CURLOPT_SOURCE_URL = 10000 + 132, 
-    CURLOPT_SOURCE_QUOTE = 10000 + 133, 
-    CURLOPT_FTP_ACCOUNT = 10000 + 134, 
-    CURLOPT_COOKIELIST = 10000 + 135, 
-    CURLOPT_FTP_ALTERNATIVE_TO_USER = 10000 + 147, 
-    CURLOPT_LASTENTRY = 10000 + 148,
-    
-    CURLOPT_WRITEFUNCTION = 20000 + 11, 
-    CURLOPT_READFUNCTION = 20000 + 12, 
-    CURLOPT_PROGRESSFUNCTION = 20000 + 56, 
-    CURLOPT_HEADERFUNCTION = 20000 + 79, 
-    CURLOPT_DEBUGFUNCTION = 20000 + 94, 
-    CURLOPT_SSL_CTX_FUNCTION = 20000 + 108, 
-    CURLOPT_IOCTLFUNCTION = 20000 + 130, 
-    CURLOPT_CONV_FROM_NETWORK_FUNCTION = 20000 + 142, 
-    CURLOPT_CONV_TO_NETWORK_FUNCTION = 20000 + 143, 
-    CURLOPT_CONV_FROM_UTF8_FUNCTION = 20000 + 144, 
-
-    CURLOPT_INFILESIZE_LARGE = 30000 + 115, 
-    CURLOPT_RESUME_FROM_LARGE = 30000 + 116, 
-    CURLOPT_MAXFILESIZE_LARGE = 30000 + 117, 
-    CURLOPT_POSTFIELDSIZE_LARGE = 30000 + 120, 
-    CURLOPT_MAX_SEND_SPEED_LARGE = 30000 + 145, 
-    CURLOPT_MAX_RECV_SPEED_LARGE = 30000 + 146
-
-    
-  TCURL_HTTP_VERSION* = enum 
-    CURL_HTTP_VERSION_NONE, CURL_HTTP_VERSION_1_0, CURL_HTTP_VERSION_1_1, 
-    CURL_HTTP_VERSION_LAST
-    
-  TCURL_NETRC_OPTION* = enum 
-    CURL_NETRC_IGNORED, CURL_NETRC_OPTIONAL, CURL_NETRC_REQUIRED, 
-    CURL_NETRC_LAST
-    
-  TCURL_SSL_VERSION* = enum 
-    CURL_SSLVERSION_DEFAULT, CURL_SSLVERSION_TLSv1, CURL_SSLVERSION_SSLv2, 
-    CURL_SSLVERSION_SSLv3, CURL_SSLVERSION_LAST
-  
-  TCURL_TIMECOND* = enum 
-    CURL_TIMECOND_NONE, CURL_TIMECOND_IFMODSINCE, CURL_TIMECOND_IFUNMODSINCE, 
-    CURL_TIMECOND_LASTMOD, CURL_TIMECOND_LAST
-  
-  TCURLformoption* = enum 
-    CURLFORM_NOTHING, CURLFORM_COPYNAME, CURLFORM_PTRNAME, CURLFORM_NAMELENGTH, 
-    CURLFORM_COPYCONTENTS, CURLFORM_PTRCONTENTS, CURLFORM_CONTENTSLENGTH, 
-    CURLFORM_FILECONTENT, CURLFORM_ARRAY, CURLFORM_OBSOLETE, CURLFORM_FILE, 
-    CURLFORM_BUFFER, CURLFORM_BUFFERPTR, CURLFORM_BUFFERLENGTH, 
-    CURLFORM_CONTENTTYPE, CURLFORM_CONTENTHEADER, CURLFORM_FILENAME, 
-    CURLFORM_END, CURLFORM_OBSOLETE2, CURLFORM_LASTENTRY
-  
-  Tcurl_forms* {.pure, final.} = object 
-    option*: TCURLformoption
-    value*: cstring
-
-  TCURLFORMcode* = enum 
-    CURL_FORMADD_OK, CURL_FORMADD_MEMORY, CURL_FORMADD_OPTION_TWICE, 
-    CURL_FORMADD_NULL, CURL_FORMADD_UNKNOWN_OPTION, CURL_FORMADD_INCOMPLETE, 
-    CURL_FORMADD_ILLEGAL_ARRAY, CURL_FORMADD_DISABLED, CURL_FORMADD_LAST
-
-  Tcurl_formget_callback* = proc (arg: pointer, buf: cstring, 
-                                 length: int): int {.cdecl.}
-  Tcurl_slist* {.pure, final.} = object 
-    data*: cstring
-    next*: Pcurl_slist
-
-  TCURLINFO* = enum 
-    CURLINFO_NONE = 0, 
-    CURLINFO_LASTONE = 30,
-    CURLINFO_EFFECTIVE_URL = 0x00100000 + 1, 
-    CURLINFO_CONTENT_TYPE = 0x00100000 + 18, 
-    CURLINFO_PRIVATE = 0x00100000 + 21, 
-    CURLINFO_FTP_ENTRY_PATH = 0x00100000 + 30,
-
-    CURLINFO_RESPONSE_CODE = 0x00200000 + 2, 
-    CURLINFO_HEADER_SIZE = 0x00200000 + 11, 
-    CURLINFO_REQUEST_SIZE = 0x00200000 + 12, 
-    CURLINFO_SSL_VERIFYRESULT = 0x00200000 + 13, 
-    CURLINFO_FILETIME = 0x00200000 + 14, 
-    CURLINFO_REDIRECT_COUNT = 0x00200000 + 20, 
-    CURLINFO_HTTP_CONNECTCODE = 0x00200000 + 22, 
-    CURLINFO_HTTPAUTH_AVAIL = 0x00200000 + 23, 
-    CURLINFO_PROXYAUTH_AVAIL = 0x00200000 + 24, 
-    CURLINFO_OS_ERRNO = 0x00200000 + 25, 
-    CURLINFO_NUM_CONNECTS = 0x00200000 + 26, 
-    CURLINFO_LASTSOCKET = 0x00200000 + 29, 
-    
-    CURLINFO_TOTAL_TIME = 0x00300000 + 3, 
-    CURLINFO_NAMELOOKUP_TIME = 0x00300000 + 4, 
-    CURLINFO_CONNECT_TIME = 0x00300000 + 5, 
-    CURLINFO_PRETRANSFER_TIME = 0x00300000 + 6, 
-    CURLINFO_SIZE_UPLOAD = 0x00300000 + 7, 
-    CURLINFO_SIZE_DOWNLOAD = 0x00300000 + 8, 
-    CURLINFO_SPEED_DOWNLOAD = 0x00300000 + 9, 
-    CURLINFO_SPEED_UPLOAD = 0x00300000 + 10, 
-    CURLINFO_CONTENT_LENGTH_DOWNLOAD = 0x00300000 + 15, 
-    CURLINFO_CONTENT_LENGTH_UPLOAD = 0x00300000 + 16, 
-    CURLINFO_STARTTRANSFER_TIME = 0x00300000 + 17, 
-    CURLINFO_REDIRECT_TIME = 0x00300000 + 19, 
-
-    CURLINFO_SSL_ENGINES = 0x00400000 + 27, 
-    CURLINFO_COOKIELIST = 0x00400000 + 28
-
-  Tcurl_closepolicy* = enum 
-    CURLCLOSEPOLICY_NONE, CURLCLOSEPOLICY_OLDEST, 
-    CURLCLOSEPOLICY_LEAST_RECENTLY_USED, CURLCLOSEPOLICY_LEAST_TRAFFIC, 
-    CURLCLOSEPOLICY_SLOWEST, CURLCLOSEPOLICY_CALLBACK, CURLCLOSEPOLICY_LAST
-  Tcurl_lock_data* = enum 
-    CURL_LOCK_DATA_NONE = 0, CURL_LOCK_DATA_SHARE, CURL_LOCK_DATA_COOKIE, 
-    CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_SSL_SESSION, CURL_LOCK_DATA_CONNECT, 
-    CURL_LOCK_DATA_LAST
-  Tcurl_lock_access* = enum 
-    CURL_LOCK_ACCESS_NONE = 0, CURL_LOCK_ACCESS_SHARED = 1, 
-    CURL_LOCK_ACCESS_SINGLE = 2, CURL_LOCK_ACCESS_LAST
-  
-  Tcurl_lock_function* = proc (handle: PCURL, data: Tcurl_lock_data, 
-                              locktype: Tcurl_lock_access, 
-                              userptr: pointer) {.cdecl.}
-  Tcurl_unlock_function* = proc (handle: PCURL, data: Tcurl_lock_data, 
-                                userptr: pointer) {.cdecl.}
-  TCURLSH* = pointer
-  TCURLSHcode* = enum 
-    CURLSHE_OK, CURLSHE_BAD_OPTION, CURLSHE_IN_USE, CURLSHE_INVALID, 
-    CURLSHE_NOMEM, CURLSHE_LAST
-  
-  TCURLSHoption* = enum 
-    CURLSHOPT_NONE, CURLSHOPT_SHARE, CURLSHOPT_UNSHARE, CURLSHOPT_LOCKFUNC, 
-    CURLSHOPT_UNLOCKFUNC, CURLSHOPT_USERDATA, CURLSHOPT_LAST
-  
-  TCURLversion* = enum 
-    CURLVERSION_FIRST, CURLVERSION_SECOND, CURLVERSION_THIRD, CURLVERSION_LAST
-  
-  Tcurl_version_info_data* {.pure, final.} = object 
-    age*: TCURLversion
-    version*: cstring
-    version_num*: int32
-    host*: cstring
-    features*: int32
-    ssl_version*: cstring
-    ssl_version_num*: int32
-    libz_version*: cstring
-    protocols*: cstringArray
-    ares*: cstring
-    ares_num*: int32
-    libidn*: cstring
-    iconv_ver_num*: int32
-
-  TCURLM* = pointer
-  Tcurl_socket* = int32
-  TCURLMcode* = enum 
-    CURLM_CALL_MULTI_PERFORM = -1, 
-    CURLM_OK = 0, 
-    CURLM_BAD_HANDLE, 
-    CURLM_BAD_EASY_HANDLE, 
-    CURLM_OUT_OF_MEMORY, 
-    CURLM_INTERNAL_ERROR, 
-    CURLM_BAD_SOCKET, 
-    CURLM_UNKNOWN_OPTION, 
-    CURLM_LAST
-    
-  TCURLMSGEnum* = enum 
-    CURLMSG_NONE, CURLMSG_DONE, CURLMSG_LAST
-  TCURLMsg* {.pure, final.} = object 
-    msg*: TCURLMSGEnum
-    easy_handle*: PCURL
-    whatever*: Pointer        #data : record
-                              #      case longint of
-                              #        0 : ( whatever : pointer );
-                              #        1 : ( result : CURLcode );
-                              #    end;
-  
-  Tcurl_socket_callback* = proc (easy: PCURL, s: Tcurl_socket, what: int32, 
-                                 userp, socketp: pointer): int32 {.cdecl.}
-  TCURLMoption* = enum 
-    CURLMOPT_SOCKETDATA = 10000 + 2, 
-    CURLMOPT_LASTENTRY = 10000 + 3,
-    CURLMOPT_SOCKETFUNCTION = 20000 + 1
-    
-const 
-  CURLOPT_SSLKEYPASSWD* = CURLOPT_SSLCERTPASSWD
-
-  CURLAUTH_ANY* = not (0)
-  CURLAUTH_BASIC* = 1 shl 0
-  CURLAUTH_ANYSAFE* = not (CURLAUTH_BASIC)
-  CURLAUTH_DIGEST* = 1 shl 1
-  CURLAUTH_GSSNEGOTIATE* = 1 shl 2
-  CURLAUTH_NONE* = 0
-  CURLAUTH_NTLM* = 1 shl 3
-  CURLE_ALREADY_COMPLETE* = 99999
-  CURLE_FTP_BAD_DOWNLOAD_RESUME* = CURLE_BAD_DOWNLOAD_RESUME
-  CURLE_FTP_PARTIAL_FILE* = CURLE_PARTIAL_FILE
-  CURLE_HTTP_NOT_FOUND* = CURLE_HTTP_RETURNED_ERROR
-  CURLE_HTTP_PORT_FAILED* = CURLE_INTERFACE_FAILED
-  CURLE_OPERATION_TIMEDOUT* = CURLE_OPERATION_TIMEOUTED
-  CURL_ERROR_SIZE* = 256
-  CURL_FORMAT_OFF_T* = "%ld"
-  CURL_GLOBAL_NOTHING* = 0
-  CURL_GLOBAL_SSL* = 1 shl 0
-  CURL_GLOBAL_WIN32* = 1 shl 1
-  CURL_GLOBAL_ALL* = CURL_GLOBAL_SSL or CURL_GLOBAL_WIN32
-  CURL_GLOBAL_DEFAULT* = CURL_GLOBAL_ALL
-  CURLINFO_DOUBLE* = 0x00300000
-  CURLINFO_HTTP_CODE* = CURLINFO_RESPONSE_CODE
-  CURLINFO_LONG* = 0x00200000
-  CURLINFO_MASK* = 0x000FFFFF
-  CURLINFO_SLIST* = 0x00400000
-  CURLINFO_STRING* = 0x00100000
-  CURLINFO_TYPEMASK* = 0x00F00000
-  CURL_IPRESOLVE_V4* = 1
-  CURL_IPRESOLVE_V6* = 2
-  CURL_IPRESOLVE_WHATEVER* = 0
-  CURL_MAX_WRITE_SIZE* = 16384
-  CURLM_CALL_MULTI_SOCKET* = CURLM_CALL_MULTI_PERFORM
-  CURLOPT_CLOSEFUNCTION* = - (5)
-  CURLOPT_FTPASCII* = CURLOPT_TRANSFERTEXT
-  CURLOPT_HEADERDATA* = CURLOPT_WRITEHEADER
-  CURLOPT_HTTPREQUEST* = - (1)
-  CURLOPT_MUTE* = - (2)
-  CURLOPT_PASSWDDATA* = - (4)
-  CURLOPT_PASSWDFUNCTION* = - (3)
-  CURLOPT_PASV_HOST* = - (9)
-  CURLOPT_READDATA* = CURLOPT_INFILE
-  CURLOPT_SOURCE_HOST* = - (6)
-  CURLOPT_SOURCE_PATH* = - (7)
-  CURLOPT_SOURCE_PORT* = - (8)
-  CURLOPTTYPE_FUNCTIONPOINT* = 20000
-  CURLOPTTYPE_LONG* = 0
-  CURLOPTTYPE_OBJECTPOINT* = 10000
-  CURLOPTTYPE_OFF_T* = 30000
-  CURLOPT_WRITEDATA* = CURLOPT_FILE
-  CURL_POLL_IN* = 1
-  CURL_POLL_INOUT* = 3
-  CURL_POLL_NONE* = 0
-  CURL_POLL_OUT* = 2
-  CURL_POLL_REMOVE* = 4
-  CURL_READFUNC_ABORT* = 0x10000000
-  CURL_SOCKET_BAD* = - (1)
-  CURL_SOCKET_TIMEOUT* = CURL_SOCKET_BAD
-  CURL_VERSION_ASYNCHDNS* = 1 shl 7
-  CURL_VERSION_CONV* = 1 shl 12
-  CURL_VERSION_DEBUG* = 1 shl 6
-  CURL_VERSION_GSSNEGOTIATE* = 1 shl 5
-  CURL_VERSION_IDN* = 1 shl 10
-  CURL_VERSION_IPV6* = 1 shl 0
-  CURL_VERSION_KERBEROS4* = 1 shl 1
-  CURL_VERSION_LARGEFILE* = 1 shl 9
-  CURL_VERSION_LIBZ* = 1 shl 3
-  CURLVERSION_NOW* = CURLVERSION_THIRD
-  CURL_VERSION_NTLM* = 1 shl 4
-  CURL_VERSION_SPNEGO* = 1 shl 8
-  CURL_VERSION_SSL* = 1 shl 2
-  CURL_VERSION_SSPI* = 1 shl 11
-  FILE_OFFSET_BITS* = 0
-  FILESIZEBITS* = 0
-  FUNCTIONPOINT* = CURLOPTTYPE_FUNCTIONPOINT
-  HTTPPOST_BUFFER* = 1 shl 4
-  HTTPPOST_FILENAME* = 1 shl 0
-  HTTPPOST_PTRBUFFER* = 1 shl 5
-  HTTPPOST_PTRCONTENTS* = 1 shl 3
-  HTTPPOST_PTRNAME* = 1 shl 2
-  HTTPPOST_READFILE* = 1 shl 1
-  LIBCURL_VERSION* = "7.15.5"
-  LIBCURL_VERSION_MAJOR* = 7
-  LIBCURL_VERSION_MINOR* = 15
-  LIBCURL_VERSION_NUM* = 0x00070F05
-  LIBCURL_VERSION_PATCH* = 5
-
-proc curl_strequal*(s1, s2: cstring): int32{.cdecl, 
-    dynlib: libname, importc: "curl_strequal".}
-proc curl_strnequal*(s1, s2: cstring, n: int): int32 {.cdecl, 
-    dynlib: libname, importc: "curl_strnequal".}
-proc curl_formadd*(httppost, last_post: PPcurl_httppost): TCURLFORMcode {.
-    cdecl, varargs, dynlib: libname, importc: "curl_formadd".}
-
-proc curl_formget*(form: Pcurl_httppost, arg: pointer, 
-                   append: Tcurl_formget_callback): int32 {.cdecl, 
-    dynlib: libname, importc: "curl_formget".}
-proc curl_formfree*(form: Pcurl_httppost){.cdecl, dynlib: libname, 
-    importc: "curl_formfree".}
-proc curl_getenv*(variable: cstring): cstring{.cdecl, dynlib: libname, 
-    importc: "curl_getenv".}
-proc curl_version*(): cstring{.cdecl, dynlib: libname, importc: "curl_version".}
-proc curl_easy_escape*(handle: PCURL, str: cstring, len: int32): cstring{.cdecl, 
-    dynlib: libname, importc: "curl_easy_escape".}
-proc curl_escape*(str: cstring, len: int32): cstring{.cdecl, 
-    dynlib: libname, importc: "curl_escape".}
-proc curl_easy_unescape*(handle: PCURL, str: cstring, len: int32, 
-                         outlength: var int32): cstring{.cdecl, 
-    dynlib: libname, importc: "curl_easy_unescape".}
-proc curl_unescape*(str: cstring, len: int32): cstring{.cdecl, 
-    dynlib: libname, importc: "curl_unescape".}
-proc curl_free*(p: pointer){.cdecl, dynlib: libname, 
-                             importc: "curl_free".}
-proc curl_global_init*(flags: int32): TCURLcode {.cdecl, dynlib: libname, 
-    importc: "curl_global_init".}
-proc curl_global_init_mem*(flags: int32, m: Tcurl_malloc_callback, 
-                           f: Tcurl_free_callback, r: Tcurl_realloc_callback, 
-                           s: Tcurl_strdup_callback, 
-                           c: Tcurl_calloc_callback): TCURLcode {.
-    cdecl, dynlib: libname, importc: "curl_global_init_mem".}
-proc curl_global_cleanup*() {.cdecl, dynlib: libname, 
-                              importc: "curl_global_cleanup".}
-proc curl_slist_append*(curl_slist: Pcurl_slist, P: cstring): Pcurl_slist {.
-    cdecl, dynlib: libname, importc: "curl_slist_append".}
-proc curl_slist_free_all*(para1: Pcurl_slist) {.cdecl, dynlib: libname, 
-    importc: "curl_slist_free_all".}
-proc curl_getdate*(p: cstring, unused: ptr TTime): TTime {.cdecl, 
-    dynlib: libname, importc: "curl_getdate".}
-proc curl_share_init*(): PCURLSH{.cdecl, dynlib: libname, 
-                                  importc: "curl_share_init".}
-proc curl_share_setopt*(para1: PCURLSH, option: TCURLSHoption): TCURLSHcode {.
-    cdecl, varargs, dynlib: libname, importc: "curl_share_setopt".}
-
-proc curl_share_cleanup*(para1: PCURLSH): TCURLSHcode {.cdecl, 
-    dynlib: libname, importc: "curl_share_cleanup".}
-proc curl_version_info*(para1: TCURLversion): Pcurl_version_info_data{.cdecl, 
-    dynlib: libname, importc: "curl_version_info".}
-proc curl_easy_strerror*(para1: TCURLcode): cstring {.cdecl, 
-    dynlib: libname, importc: "curl_easy_strerror".}
-proc curl_share_strerror*(para1: TCURLSHcode): cstring {.cdecl, 
-    dynlib: libname, importc: "curl_share_strerror".}
-proc curl_easy_init*(): PCURL {.cdecl, dynlib: libname, 
-                               importc: "curl_easy_init".}
-proc curl_easy_setopt*(curl: PCURL, option: TCURLoption): TCURLcode {.cdecl, 
-    varargs, dynlib: libname, importc: "curl_easy_setopt".}
-
-proc curl_easy_perform*(curl: PCURL): TCURLcode {.cdecl, dynlib: libname, 
-    importc: "curl_easy_perform".}
-proc curl_easy_cleanup*(curl: PCURL) {.cdecl, dynlib: libname, 
-                                       importc: "curl_easy_cleanup".}
-proc curl_easy_getinfo*(curl: PCURL, info: TCURLINFO): TCURLcode {.
-    cdecl, varargs, dynlib: libname, importc: "curl_easy_getinfo".}
-
-proc curl_easy_duphandle*(curl: PCURL): PCURL {.cdecl, dynlib: libname, 
-    importc: "curl_easy_duphandle".}
-proc curl_easy_reset*(curl: PCURL) {.cdecl, dynlib: libname, 
-                                     importc: "curl_easy_reset".}
-proc curl_multi_init*(): PCURLM {.cdecl, dynlib: libname, 
-                                  importc: "curl_multi_init".}
-proc curl_multi_add_handle*(multi_handle: PCURLM, 
-                            curl_handle: PCURL): TCURLMcode {.
-    cdecl, dynlib: libname, importc: "curl_multi_add_handle".}
-proc curl_multi_remove_handle*(multi_handle: PCURLM, 
-                               curl_handle: PCURL): TCURLMcode {.
-    cdecl, dynlib: libname, importc: "curl_multi_remove_handle".}
-proc curl_multi_fdset*(multi_handle: PCURLM, read_fd_set: Pfd_set, 
-                       write_fd_set: Pfd_set, exc_fd_set: Pfd_set, 
-                       max_fd: var int32): TCURLMcode {.cdecl, 
-    dynlib: libname, importc: "curl_multi_fdset".}
-proc curl_multi_perform*(multi_handle: PCURLM, 
-                         running_handles: var int32): TCURLMcode {.
-    cdecl, dynlib: libname, importc: "curl_multi_perform".}
-proc curl_multi_cleanup*(multi_handle: PCURLM): TCURLMcode {.cdecl, 
-    dynlib: libname, importc: "curl_multi_cleanup".}
-proc curl_multi_info_read*(multi_handle: PCURLM, 
-                           msgs_in_queue: var int32): PCURLMsg {.
-    cdecl, dynlib: libname, importc: "curl_multi_info_read".}
-proc curl_multi_strerror*(para1: TCURLMcode): cstring {.cdecl, 
-    dynlib: libname, importc: "curl_multi_strerror".}
-proc curl_multi_socket*(multi_handle: PCURLM, s: Tcurl_socket, 
-                        running_handles: var int32): TCURLMcode {.cdecl, 
-    dynlib: libname, importc: "curl_multi_socket".}
-proc curl_multi_socket_all*(multi_handle: PCURLM, 
-                            running_handles: var int32): TCURLMcode {.
-    cdecl, dynlib: libname, importc: "curl_multi_socket_all".}
-proc curl_multi_timeout*(multi_handle: PCURLM, milliseconds: var int32): TCURLMcode{.
-    cdecl, dynlib: libname, importc: "curl_multi_timeout".}
-proc curl_multi_setopt*(multi_handle: PCURLM, option: TCURLMoption): TCURLMcode{.
-    cdecl, varargs, dynlib: libname, importc: "curl_multi_setopt".}
-
-proc curl_multi_assign*(multi_handle: PCURLM, sockfd: Tcurl_socket, 
-                        sockp: pointer): TCURLMcode {.cdecl, 
-    dynlib: libname, importc: "curl_multi_assign".}
-
-
diff --git a/lib/wrappers/lua/lauxlib.nim b/lib/wrappers/lua/lauxlib.nim
deleted file mode 100755
index 477dd5874..000000000
--- a/lib/wrappers/lua/lauxlib.nim
+++ /dev/null
@@ -1,224 +0,0 @@
-#*****************************************************************************
-# *                                                                            *
-# *  File:        lauxlib.pas                                                  *
-# *  Authors:     TeCGraf           (C headers + actual Lua libraries)         *
-# *               Lavergne Thomas   (original translation to Pascal)           *
-# *               Bram Kuijvenhoven (update to Lua 5.1.1 for FreePascal)       *
-# *  Description: Lua auxiliary library                                        *
-# *                                                                            *
-# *****************************************************************************
-#
-#** $Id: lauxlib.h,v 1.59 2003/03/18 12:25:32 roberto Exp $
-#** Auxiliary functions for building Lua libraries
-#** See Copyright Notice in lua.h
-#
-#
-#** Translated to pascal by Lavergne Thomas
-#** Notes :
-#**    - Pointers type was prefixed with 'P'
-#** Bug reports :
-#**    - thomas.lavergne@laposte.net
-#**   In french or in english
-#
-
-import lua
-
-proc lua_pushstring*(L: Plua_State, s: string)
-  # compatibilty macros
-proc luaL_getn*(L: Plua_State, n: int): int
-  # calls lua_objlen
-proc luaL_setn*(L: Plua_State, t, n: int)
-  # does nothing!
-type 
-  TLuaL_reg*{.final.} = object 
-    name*: cstring
-    func*: lua_CFunction
-
-  PluaL_reg* = ptr TLuaL_reg
-
-proc luaL_openlib*(L: Plua_State, libname: cstring, lr: PluaL_reg, nup: int){.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_register*(L: Plua_State, libname: cstring, lr: PluaL_reg){.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_getmetafield*(L: Plua_State, obj: int, e: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_callmeta*(L: Plua_State, obj: int, e: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_typerror*(L: Plua_State, narg: int, tname: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_argerror*(L: Plua_State, numarg: int, extramsg: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checklstring*(L: Plua_State, numArg: int, len: Psize_t): cstring{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_optlstring*(L: Plua_State, numArg: int, def: cstring, len: Psize_t): cstring{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checknumber*(L: Plua_State, numArg: int): lua_Number{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_optnumber*(L: Plua_State, nArg: int, def: lua_Number): lua_Number{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checkinteger*(L: Plua_State, numArg: int): lua_Integer{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_optinteger*(L: Plua_State, nArg: int, def: lua_Integer): lua_Integer{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checkstack*(L: Plua_State, sz: int, msg: cstring){.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checktype*(L: Plua_State, narg, t: int){.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaL_checkany*(L: Plua_State, narg: int){.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaL_newmetatable*(L: Plua_State, tname: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checkudata*(L: Plua_State, ud: int, tname: cstring): Pointer{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_where*(L: Plua_State, lvl: int){.cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_error*(L: Plua_State, fmt: cstring): int{.cdecl, varargs, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_checkoption*(L: Plua_State, narg: int, def: cstring, lst: cstringArray): int{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_ref*(L: Plua_State, t: int): int{.cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_unref*(L: Plua_State, t, theref: int){.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaL_loadfile*(L: Plua_State, filename: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_loadbuffer*(L: Plua_State, buff: cstring, size: size_t, name: cstring): int{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_loadstring*(L: Plua_State, s: cstring): int{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_newstate*(): Plua_State{.cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc lua_open*(): Plua_State
-  # compatibility; moved from unit lua to lauxlib because it needs luaL_newstate
-  #
-  #** ===============================================================
-  #** some useful macros
-  #** ===============================================================
-  #
-proc luaL_argcheck*(L: Plua_State, cond: bool, numarg: int, extramsg: cstring)
-proc luaL_checkstring*(L: Plua_State, n: int): cstring
-proc luaL_optstring*(L: Plua_State, n: int, d: cstring): cstring
-proc luaL_checkint*(L: Plua_State, n: int): int
-proc luaL_checklong*(L: Plua_State, n: int): int32
-proc luaL_optint*(L: Plua_State, n: int, d: float64): int
-proc luaL_optlong*(L: Plua_State, n: int, d: float64): int32
-proc luaL_typename*(L: Plua_State, i: int): cstring
-proc lua_dofile*(L: Plua_State, filename: cstring): int
-proc lua_dostring*(L: Plua_State, str: cstring): int
-proc lua_Lgetmetatable*(L: Plua_State, tname: cstring)
-  # not translated:
-  # #define luaL_opt(L,f,n,d)	(lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
-  #
-  #** =======================================================
-  #** Generic Buffer manipulation
-  #** =======================================================
-  #
-const                         # note: this is just arbitrary, as it related to the BUFSIZ defined in stdio.h ...
-  LUAL_BUFFERSIZE* = 4096
-
-type 
-  luaL_Buffer*{.final.} = object 
-    p*: cstring               # current position in buffer 
-    lvl*: int                 # number of strings in the stack (level) 
-    L*: Plua_State
-    buffer*: array[0..LUAL_BUFFERSIZE - 1, Char] # warning: see note above about LUAL_BUFFERSIZE
-  
-  PluaL_Buffer* = ptr luaL_Buffer
-
-proc luaL_addchar*(B: PluaL_Buffer, c: Char)
-  # warning: see note above about LUAL_BUFFERSIZE
-  # compatibility only (alias for luaL_addchar) 
-proc luaL_putchar*(B: PluaL_Buffer, c: Char)
-  # warning: see note above about LUAL_BUFFERSIZE
-proc luaL_addsize*(B: PluaL_Buffer, n: int)
-proc luaL_buffinit*(L: Plua_State, B: PluaL_Buffer){.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_prepbuffer*(B: PluaL_Buffer): cstring{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaL_addlstring*(B: PluaL_Buffer, s: cstring, L: size_t){.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_addstring*(B: PluaL_Buffer, s: cstring){.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaL_addvalue*(B: PluaL_Buffer){.cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_pushresult*(B: PluaL_Buffer){.cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaL_gsub*(L: Plua_State, s, p, r: cstring): cstring{.cdecl, 
-    dynlib: LUA_LIB_NAME, importc.}
-proc luaL_findtable*(L: Plua_State, idx: int, fname: cstring, szhint: int): cstring{.
-    cdecl, dynlib: LUA_LIB_NAME, importc.}
-  # compatibility with ref system 
-  # pre-defined references 
-const 
-  LUA_NOREF* = - 2
-  LUA_REFNIL* = - 1
-
-proc lua_unref*(L: Plua_State, theref: int)
-proc lua_getref*(L: Plua_State, theref: int)
-  #
-  #** Compatibility macros and functions
-  #
-
-# implementation
-
-proc lua_pushstring(L: Plua_State, s: string) = 
-  lua_pushlstring(L, cstring(s), len(s))
-
-proc luaL_getn(L: Plua_State, n: int): int = 
-  Result = lua_objlen(L, n)
-
-proc luaL_setn(L: Plua_State, t, n: int) = 
-  # does nothing as this operation is deprecated
-  nil
-  
-proc lua_open(): Plua_State = 
-  Result = luaL_newstate()
-
-proc luaL_typename(L: Plua_State, i: int): cstring = 
-  Result = lua_typename(L, lua_type(L, i))
-
-proc lua_dofile(L: Plua_State, filename: cstring): int = 
-  Result = luaL_loadfile(L, filename)
-  if Result == 0: Result = lua_pcall(L, 0, LUA_MULTRET, 0)
-  
-proc lua_dostring(L: Plua_State, str: cstring): int = 
-  Result = luaL_loadstring(L, str)
-  if Result == 0: Result = lua_pcall(L, 0, LUA_MULTRET, 0)
-  
-proc lua_Lgetmetatable(L: Plua_State, tname: cstring) = 
-  lua_getfield(L, LUA_REGISTRYINDEX, tname)
-
-proc luaL_argcheck(L: Plua_State, cond: bool, numarg: int, extramsg: cstring) = 
-  if not cond:
-    discard luaL_argerror(L, numarg, extramsg)
-  
-proc luaL_checkstring(L: Plua_State, n: int): cstring = 
-  Result = luaL_checklstring(L, n, nil)
-
-proc luaL_optstring(L: Plua_State, n: int, d: cstring): cstring = 
-  Result = luaL_optlstring(L, n, d, nil)
-
-proc luaL_checkint(L: Plua_State, n: int): int = 
-  Result = toInt(luaL_checknumber(L, n))
-
-proc luaL_checklong(L: Plua_State, n: int): int32 = 
-  Result = int32(ToInt(luaL_checknumber(L, n)))
-
-proc luaL_optint(L: Plua_State, n: int, d: float64): int = 
-  Result = int(ToInt(luaL_optnumber(L, n, d)))
-
-proc luaL_optlong(L: Plua_State, n: int, d: float64): int32 = 
-  Result = int32(ToInt(luaL_optnumber(L, n, d)))
-
-proc luaL_addchar(B: PluaL_Buffer, c: Char) = 
-  if cast[int](addr((B.p))) < (cast[int](addr((B.buffer[0]))) + LUAL_BUFFERSIZE): 
-    discard luaL_prepbuffer(B)
-  B.p[1] = c
-  B.p = cast[cstring](cast[int](B.p) + 1)
-
-proc luaL_putchar(B: PluaL_Buffer, c: Char) = 
-  luaL_addchar(B, c)
-
-proc luaL_addsize(B: PluaL_Buffer, n: int) = 
-  B.p = cast[cstring](cast[int](B.p) + n)
-
-proc lua_unref(L: Plua_State, theref: int) = 
-  luaL_unref(L, LUA_REGISTRYINDEX, theref)
-
-proc lua_getref(L: Plua_State, theref: int) = 
-  lua_rawgeti(L, LUA_REGISTRYINDEX, theref)
diff --git a/lib/wrappers/lua/lua.nim b/lib/wrappers/lua/lua.nim
deleted file mode 100755
index 54f8d46bb..000000000
--- a/lib/wrappers/lua/lua.nim
+++ /dev/null
@@ -1,391 +0,0 @@
-#*****************************************************************************
-# *                                                                            *
-# *  File:        lua.pas                                                      *
-# *  Authors:     TeCGraf           (C headers + actual Lua libraries)         *
-# *               Lavergne Thomas   (original translation to Pascal)           *
-# *               Bram Kuijvenhoven (update to Lua 5.1.1 for FreePascal)       *
-# *  Description: Basic Lua library                                            *
-# *                                                                            *
-# *****************************************************************************
-#
-#** $Id: lua.h,v 1.175 2003/03/18 12:31:39 roberto Exp $
-#** Lua - An Extensible Extension Language
-#** TeCGraf: Computer Graphics Technology Group, PUC-Rio, Brazil
-#** http://www.lua.org   mailto:info@lua.org
-#** See Copyright Notice at the end of this file
-#
-#
-#** Updated to Lua 5.1.1 by Bram Kuijvenhoven (bram at kuijvenhoven dot net),
-#**   Hexis BV (http://www.hexis.nl), the Netherlands
-#** Notes:
-#**    - Only tested with FPC (FreePascal Compiler)
-#**    - Using LuaBinaries styled DLL/SO names, which include version names
-#**    - LUA_YIELD was suffixed by '_' for avoiding name collision
-#
-#
-#** Translated to pascal by Lavergne Thomas
-#** Notes :
-#**    - Pointers type was prefixed with 'P'
-#**    - lua_upvalueindex constant was transformed to function
-#**    - Some compatibility function was isolated because with it you must have
-#**      lualib.
-#**    - LUA_VERSION was suffixed by '_' for avoiding name collision.
-#** Bug reports :
-#**    - thomas.lavergne@laposte.net
-#**   In french or in english
-#
-
-when defined(MACOSX): 
-  const 
-    LUA_NAME* = "liblua(|5.2|5.1|5.0).dylib"
-    LUA_LIB_NAME* = "liblua(|5.2|5.1|5.0).dylib"
-elif defined(UNIX): 
-  const 
-    LUA_NAME* = "liblua(|5.2|5.1|5.0).so(|.0)"
-    LUA_LIB_NAME* = "liblua(|5.2|5.1|5.0).so(|.0)"
-else: 
-  const 
-    LUA_NAME* = "lua(|5.2|5.1|5.0).dll"
-    LUA_LIB_NAME* = "lua(|5.2|5.1|5.0).dll"
-type 
-  size_t* = int
-  Psize_t* = ptr size_t
-
-const 
-  LUA_VERSION* = "Lua 5.1"
-  LUA_RELEASE* = "Lua 5.1.1"
-  LUA_VERSION_NUM* = 501
-  LUA_COPYRIGHT* = "Copyright (C) 1994-2006 Lua.org, PUC-Rio"
-  LUA_AUTHORS* = "R. Ierusalimschy, L. H. de Figueiredo & W. Celes"
-  # option for multiple returns in `lua_pcall' and `lua_call' 
-  LUA_MULTRET* = - 1          #
-                              #** pseudo-indices
-                              #
-  LUA_REGISTRYINDEX* = - 10000
-  LUA_ENVIRONINDEX* = - 10001
-  LUA_GLOBALSINDEX* = - 10002
-
-proc lua_upvalueindex*(I: int): int
-const                         # thread status; 0 is OK 
-  constLUA_YIELD* = 1
-  LUA_ERRRUN* = 2
-  LUA_ERRSYNTAX* = 3
-  LUA_ERRMEM* = 4
-  LUA_ERRERR* = 5
-
-type 
-  Plua_State* = Pointer
-  lua_CFunction* = proc (L: Plua_State): int{.cdecl.}
-  
-#
-#** functions that read/write blocks when loading/dumping Lua chunks
-#
-type 
-  lua_Reader* = proc (L: Plua_State, ud: Pointer, sz: Psize_t): cstring{.cdecl.}
-  lua_Writer* = proc (L: Plua_State, p: Pointer, sz: size_t, ud: Pointer): int{.
-      cdecl.}
-  lua_Alloc* = proc (ud, theptr: Pointer, osize, nsize: size_t){.cdecl.}
-
-const
-  LUA_TNONE* = - 1
-  LUA_TNIL* = 0
-  LUA_TBOOLEAN* = 1
-  LUA_TLIGHTUSERDATA* = 2
-  LUA_TNUMBER* = 3
-  LUA_TSTRING* = 4
-  LUA_TTABLE* = 5
-  LUA_TFUNCTION* = 6
-  LUA_TUSERDATA* = 7
-  LUA_TTHREAD* = 8            # minimum Lua stack available to a C function 
-  LUA_MINSTACK* = 20
-
-type                          # Type of Numbers in Lua 
-  lua_Number* = float
-  lua_Integer* = int
-
-proc lua_newstate*(f: lua_Alloc, ud: Pointer): Plua_State{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_close*(L: Plua_State){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_newthread*(L: Plua_State): Plua_State{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_atpanic*(L: Plua_State, panicf: lua_CFunction): lua_CFunction{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_gettop*(L: Plua_State): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_settop*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_pushvalue*(L: Plua_State, Idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_remove*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_insert*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_replace*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_checkstack*(L: Plua_State, sz: int): cint{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_xmove*(`from`, `to`: Plua_State, n: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_isnumber*(L: Plua_State, idx: int): cint{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_isstring*(L: Plua_State, idx: int): cint{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_iscfunction*(L: Plua_State, idx: int): cint{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_isuserdata*(L: Plua_State, idx: int): cint{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_type*(L: Plua_State, idx: int): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_typename*(L: Plua_State, tp: int): cstring{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_equal*(L: Plua_State, idx1, idx2: int): cint{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_rawequal*(L: Plua_State, idx1, idx2: int): cint{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_lessthan*(L: Plua_State, idx1, idx2: int): cint{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_tonumber*(L: Plua_State, idx: int): lua_Number{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_tointeger*(L: Plua_State, idx: int): lua_Integer{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_toboolean*(L: Plua_State, idx: int): cint{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_tolstring*(L: Plua_State, idx: int, length: Psize_t): cstring{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_objlen*(L: Plua_State, idx: int): size_t{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_tocfunction*(L: Plua_State, idx: int): lua_CFunction{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_touserdata*(L: Plua_State, idx: int): Pointer{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_tothread*(L: Plua_State, idx: int): Plua_State{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_topointer*(L: Plua_State, idx: int): Pointer{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pushnil*(L: Plua_State){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_pushnumber*(L: Plua_State, n: lua_Number){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pushinteger*(L: Plua_State, n: lua_Integer){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pushlstring*(L: Plua_State, s: cstring, len: size_t){.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_pushstring*(L: Plua_State, s: cstring){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pushvfstring*(L: Plua_State, fmt: cstring, argp: Pointer): cstring{.
-    cdecl, dynlib: LUA_NAME, importc.}
-proc lua_pushfstring*(L: Plua_State, fmt: cstring): cstring{.cdecl, varargs, 
-    dynlib: LUA_NAME, importc.}
-proc lua_pushcclosure*(L: Plua_State, fn: lua_CFunction, n: int){.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_pushboolean*(L: Plua_State, b: cint){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pushlightuserdata*(L: Plua_State, p: Pointer){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pushthread*(L: Plua_State){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_gettable*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_getfield*(L: Plua_state, idx: int, k: cstring){.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_rawget*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_rawgeti*(L: Plua_State, idx, n: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_createtable*(L: Plua_State, narr, nrec: int){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_newuserdata*(L: Plua_State, sz: size_t): Pointer{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_getmetatable*(L: Plua_State, objindex: int): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_getfenv*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_settable*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_setfield*(L: Plua_State, idx: int, k: cstring){.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_rawset*(L: Plua_State, idx: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_rawseti*(L: Plua_State, idx, n: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_setmetatable*(L: Plua_State, objindex: int): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_setfenv*(L: Plua_State, idx: int): int{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_call*(L: Plua_State, nargs, nresults: int){.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_pcall*(L: Plua_State, nargs, nresults, errf: int): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_cpcall*(L: Plua_State, func: lua_CFunction, ud: Pointer): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_load*(L: Plua_State, reader: lua_Reader, dt: Pointer, 
-               chunkname: cstring): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_dump*(L: Plua_State, writer: lua_Writer, data: Pointer): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_yield*(L: Plua_State, nresults: int): int{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_resume*(L: Plua_State, narg: int): int{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_status*(L: Plua_State): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_gc*(L: Plua_State, what, data: int): int{.cdecl, dynlib: LUA_NAME, 
-    importc.}
-proc lua_error*(L: Plua_State): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_next*(L: Plua_State, idx: int): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_concat*(L: Plua_State, n: int){.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_getallocf*(L: Plua_State, ud: ptr Pointer): lua_Alloc{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_setallocf*(L: Plua_State, f: lua_Alloc, ud: Pointer){.cdecl, 
-    dynlib: LUA_NAME, importc.}
-
-#
-#** Garbage-collection functions and options
-#
-const 
-  LUA_GCSTOP* = 0
-  LUA_GCRESTART* = 1
-  LUA_GCCOLLECT* = 2
-  LUA_GCCOUNT* = 3
-  LUA_GCCOUNTB* = 4
-  LUA_GCSTEP* = 5
-  LUA_GCSETPAUSE* = 6
-  LUA_GCSETSTEPMUL* = 7
-
-#
-#** ===============================================================
-#** some useful macros
-#** ===============================================================
-#
-
-proc lua_pop*(L: Plua_State, n: int)
-proc lua_newtable*(L: Plua_state)
-proc lua_register*(L: Plua_State, n: cstring, f: lua_CFunction)
-proc lua_pushcfunction*(L: Plua_State, f: lua_CFunction)
-proc lua_strlen*(L: Plua_state, i: int): size_t
-proc lua_isfunction*(L: Plua_State, n: int): bool
-proc lua_istable*(L: Plua_State, n: int): bool
-proc lua_islightuserdata*(L: Plua_State, n: int): bool
-proc lua_isnil*(L: Plua_State, n: int): bool
-proc lua_isboolean*(L: Plua_State, n: int): bool
-proc lua_isthread*(L: Plua_State, n: int): bool
-proc lua_isnone*(L: Plua_State, n: int): bool
-proc lua_isnoneornil*(L: Plua_State, n: int): bool
-proc lua_pushliteral*(L: Plua_State, s: cstring)
-proc lua_setglobal*(L: Plua_State, s: cstring)
-proc lua_getglobal*(L: Plua_State, s: cstring)
-proc lua_tostring*(L: Plua_State, i: int): cstring
-#
-#** compatibility macros and functions
-#
-proc lua_getregistry*(L: Plua_State)
-proc lua_getgccount*(L: Plua_State): int
-type 
-  lua_Chunkreader* = lua_Reader
-  lua_Chunkwriter* = lua_Writer
-  
-#
-#** ======================================================================
-#** Debug API
-#** ======================================================================
-#
-
-const 
-  LUA_HOOKCALL* = 0
-  LUA_HOOKRET* = 1
-  LUA_HOOKLINE* = 2
-  LUA_HOOKCOUNT* = 3
-  LUA_HOOKTAILRET* = 4
-
-const 
-  LUA_MASKCALL* = 1 shl Ord(LUA_HOOKCALL)
-  LUA_MASKRET* = 1 shl Ord(LUA_HOOKRET)
-  LUA_MASKLINE* = 1 shl Ord(LUA_HOOKLINE)
-  LUA_MASKCOUNT* = 1 shl Ord(LUA_HOOKCOUNT)
-
-const 
-  LUA_IDSIZE* = 60
-
-type 
-  lua_Debug*{.final.} = object  # activation record 
-    event*: int
-    name*: cstring            # (n) 
-    namewhat*: cstring        # (n) `global', `local', `field', `method' 
-    what*: cstring            # (S) `Lua', `C', `main', `tail'
-    source*: cstring          # (S) 
-    currentline*: int         # (l) 
-    nups*: int                # (u) number of upvalues 
-    linedefined*: int         # (S) 
-    lastlinedefined*: int     # (S) 
-    short_src*: array[0..LUA_IDSIZE - 1, Char] # (S) 
-                                               # private part 
-    i_ci*: int                # active function 
-  
-  Plua_Debug* = ptr lua_Debug
-  lua_Hook* = proc (L: Plua_State, ar: Plua_Debug){.cdecl.}
-  
-#
-#** ======================================================================
-#** Debug API
-#** ======================================================================
-#
-
-proc lua_getstack*(L: Plua_State, level: int, ar: Plua_Debug): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_getinfo*(L: Plua_State, what: cstring, ar: Plua_Debug): int{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_getlocal*(L: Plua_State, ar: Plua_Debug, n: int): cstring{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_setlocal*(L: Plua_State, ar: Plua_Debug, n: int): cstring{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_getupvalue*(L: Plua_State, funcindex: int, n: int): cstring{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_setupvalue*(L: Plua_State, funcindex: int, n: int): cstring{.cdecl, 
-    dynlib: LUA_NAME, importc.}
-proc lua_sethook*(L: Plua_State, func: lua_Hook, mask: int, count: int): int{.
-    cdecl, dynlib: LUA_NAME, importc.}
-proc lua_gethook*(L: Plua_State): lua_Hook{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_gethookmask*(L: Plua_State): int{.cdecl, dynlib: LUA_NAME, importc.}
-proc lua_gethookcount*(L: Plua_State): int{.cdecl, dynlib: LUA_NAME, importc.}
-# implementation
-
-proc lua_upvalueindex(I: int): int = 
-  Result = LUA_GLOBALSINDEX - i
-
-proc lua_pop(L: Plua_State, n: int) = 
-  lua_settop(L, - n - 1)
-
-proc lua_newtable(L: Plua_State) = 
-  lua_createtable(L, 0, 0)
-
-proc lua_register(L: Plua_State, n: cstring, f: lua_CFunction) = 
-  lua_pushcfunction(L, f)
-  lua_setglobal(L, n)
-
-proc lua_pushcfunction(L: Plua_State, f: lua_CFunction) = 
-  lua_pushcclosure(L, f, 0)
-
-proc lua_strlen(L: Plua_State, i: int): size_t = 
-  Result = lua_objlen(L, i)
-
-proc lua_isfunction(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TFUNCTION
-
-proc lua_istable(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TTABLE
-
-proc lua_islightuserdata(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TLIGHTUSERDATA
-
-proc lua_isnil(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TNIL
-
-proc lua_isboolean(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TBOOLEAN
-
-proc lua_isthread(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TTHREAD
-
-proc lua_isnone(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) == LUA_TNONE
-
-proc lua_isnoneornil(L: Plua_State, n: int): bool = 
-  Result = lua_type(L, n) <= 0
-
-proc lua_pushliteral(L: Plua_State, s: cstring) = 
-  lua_pushlstring(L, s, len(s))
-
-proc lua_setglobal(L: Plua_State, s: cstring) = 
-  lua_setfield(L, LUA_GLOBALSINDEX, s)
-
-proc lua_getglobal(L: Plua_State, s: cstring) = 
-  lua_getfield(L, LUA_GLOBALSINDEX, s)
-
-proc lua_tostring(L: Plua_State, i: int): cstring = 
-  Result = lua_tolstring(L, i, nil)
-
-proc lua_getregistry(L: Plua_State) = 
-  lua_pushvalue(L, LUA_REGISTRYINDEX)
-
-proc lua_getgccount(L: Plua_State): int = 
-  Result = lua_gc(L, LUA_GCCOUNT, 0)
diff --git a/lib/wrappers/lua/lualib.nim b/lib/wrappers/lua/lualib.nim
deleted file mode 100755
index df5d53101..000000000
--- a/lib/wrappers/lua/lualib.nim
+++ /dev/null
@@ -1,73 +0,0 @@
-#*****************************************************************************
-# *                                                                            *
-# *  File:        lualib.pas                                                   *
-# *  Authors:     TeCGraf           (C headers + actual Lua libraries)         *
-# *               Lavergne Thomas   (original translation to Pascal)           *
-# *               Bram Kuijvenhoven (update to Lua 5.1.1 for FreePascal)       *
-# *  Description: Standard Lua libraries                                       *
-# *                                                                            *
-# *****************************************************************************
-#
-#** $Id: lualib.h,v 1.28 2003/03/18 12:24:26 roberto Exp $
-#** Lua standard libraries
-#** See Copyright Notice in lua.h
-#
-#
-#** Translated to pascal by Lavergne Thomas
-#** Bug reports :
-#**    - thomas.lavergne@laposte.net
-#**   In french or in english
-#
-
-import lua
-
-const 
-  LUA_COLIBNAME* = "coroutine"
-  LUA_TABLIBNAME* = "table"
-  LUA_IOLIBNAME* = "io"
-  LUA_OSLIBNAME* = "os"
-  LUA_STRLINAME* = "string"
-  LUA_MATHLIBNAME* = "math"
-  LUA_DBLIBNAME* = "debug"
-  LUA_LOADLIBNAME* = "package"
-
-proc luaopen_base*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaopen_table*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaopen_io*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, importc.}
-proc luaopen_string*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaopen_math*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaopen_debug*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaopen_package*(L: Plua_State): cint{.cdecl, dynlib: LUA_LIB_NAME, 
-    importc.}
-proc luaL_openlibs*(L: Plua_State){.cdecl, dynlib: LUA_LIB_NAME, importc.}
-  # compatibility code 
-proc lua_baselibopen*(L: Plua_State): Bool
-proc lua_tablibopen*(L: Plua_State): Bool
-proc lua_iolibopen*(L: Plua_State): Bool
-proc lua_strlibopen*(L: Plua_State): Bool
-proc lua_mathlibopen*(L: Plua_State): Bool
-proc lua_dblibopen*(L: Plua_State): Bool
-# implementation
-
-proc lua_baselibopen(L: Plua_State): Bool = 
-  Result = luaopen_base(L) != 0'i32
-
-proc lua_tablibopen(L: Plua_State): Bool = 
-  Result = luaopen_table(L) != 0'i32
-
-proc lua_iolibopen(L: Plua_State): Bool = 
-  Result = luaopen_io(L) != 0'i32
-
-proc lua_strlibopen(L: Plua_State): Bool = 
-  Result = luaopen_string(L) != 0'i32
-
-proc lua_mathlibopen(L: Plua_State): Bool = 
-  Result = luaopen_math(L) != 0'i32
-
-proc lua_dblibopen(L: Plua_State): Bool = 
-  Result = luaopen_debug(L) != 0'i32
diff --git a/lib/wrappers/mysql.nim b/lib/wrappers/mysql.nim
deleted file mode 100755
index e94afb1a2..000000000
--- a/lib/wrappers/mysql.nim
+++ /dev/null
@@ -1,1154 +0,0 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2009 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-{.deadCodeElim: on.}
-
-when defined(Unix): 
-  const 
-    mysqllib = "libmysqlclient.so.15"
-
-# mysqllib = "libmysqlclient.so.15"
-when defined(Windows): 
-  const
-    mysqllib = "libmysql.dll"
-    
-# Copyright (C) 2000-2003 MySQL AB
-#  
-#     This program is free software; you can redistribute it and/or modify
-#     it under the terms of the GNU General Public License as published by
-#     the Free Software Foundation; either version 2 of the License, or
-#     (at your option) any later version.
-#  
-#     This program is distributed in the hope that it will be useful,
-#     but WITHOUT ANY WARRANTY; without even the implied warranty of
-#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#     GNU General Public License for more details.
-#  
-#     You should have received a copy of the GNU General Public License
-#     along with this program; if not, write to the Free Software
-#     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  
-
-type 
-  my_bool* = bool
-  Pmy_bool* = ptr my_bool
-  PVIO* = Pointer
-  Pgptr* = ptr gptr
-  gptr* = cstring
-  Pmy_socket* = ptr my_socket
-  my_socket* = cint
-  PPByte* = pointer 
-  cuint* = cint
-  
-#  ------------ Start of declaration in "mysql_com.h"   ---------------------  
-#
-#  ** Common definition between mysql server & client
-#   
-# Field/table name length
-
-const 
-  NAME_LEN* = 64
-  HOSTNAME_LENGTH* = 60
-  USERNAME_LENGTH* = 16
-  SERVER_VERSION_LENGTH* = 60
-  SQLSTATE_LENGTH* = 5
-  LOCAL_HOST* = "localhost"
-  LOCAL_HOST_NAMEDPIPE* = '.'
-
-const 
-  MYSQL_NAMEDPIPE* = "MySQL"
-  MYSQL_SERVICENAME* = "MySQL"
-
-type 
-  enum_server_command* = enum     
-    COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST, COM_CREATE_DB, 
-    COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS, COM_PROCESS_INFO, 
-    COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING, COM_TIME, 
-    COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP, COM_TABLE_DUMP, 
-    COM_CONNECT_OUT, COM_REGISTER_SLAVE, COM_STMT_PREPARE, COM_STMT_EXECUTE, 
-    COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE, COM_STMT_RESET, COM_SET_OPTION, 
-    COM_STMT_FETCH, COM_END
-
-const 
-  SCRAMBLE_LENGTH* = 20 # Length of random string sent by server on handshake; 
-                        # this is also length of obfuscated password, 
-                        # recieved from client
-  SCRAMBLE_LENGTH_323* = 8 # length of password stored in the db: 
-                           # new passwords are preceeded with '*'  
-  SCRAMBLED_PASSWORD_CHAR_LENGTH* = SCRAMBLE_LENGTH * 2 + 1
-  SCRAMBLED_PASSWORD_CHAR_LENGTH_323* = SCRAMBLE_LENGTH_323 * 2
-  NOT_NULL_FLAG* = 1          #  Field can't be NULL
-  PRI_KEY_FLAG* = 2           #  Field is part of a primary key
-  UNIQUE_KEY_FLAG* = 4        #  Field is part of a unique key
-  MULTIPLE_KEY_FLAG* = 8      #  Field is part of a key
-  BLOB_FLAG* = 16             #  Field is a blob
-  UNSIGNED_FLAG* = 32         #  Field is unsigned
-  ZEROFILL_FLAG* = 64         #  Field is zerofill
-  BINARY_FLAG* = 128          #  Field is binary
-                              # The following are only sent to new clients  
-  ENUM_FLAG* = 256            # field is an enum
-  AUTO_INCREMENT_FLAG* = 512  # field is a autoincrement field
-  TIMESTAMP_FLAG* = 1024      # Field is a timestamp
-  SET_FLAG* = 2048            # field is a set
-  NO_DEFAULT_VALUE_FLAG* = 4096 # Field doesn't have default value
-  NUM_FLAG* = 32768           # Field is num (for clients)
-  PART_KEY_FLAG* = 16384      # Intern; Part of some key
-  GROUP_FLAG* = 32768         # Intern: Group field
-  UNIQUE_FLAG* = 65536        # Intern: Used by sql_yacc
-  BINCMP_FLAG* = 131072       # Intern: Used by sql_yacc
-  REFRESH_GRANT* = 1          # Refresh grant tables
-  REFRESH_LOG* = 2            # Start on new log file
-  REFRESH_TABLES* = 4         # close all tables
-  REFRESH_HOSTS* = 8          # Flush host cache
-  REFRESH_STATUS* = 16        # Flush status variables
-  REFRESH_THREADS* = 32       # Flush thread cache
-  REFRESH_SLAVE* = 64         # Reset master info and restart slave thread
-  REFRESH_MASTER* = 128 # Remove all bin logs in the index and truncate the index
-                        # The following can't be set with mysql_refresh()  
-  REFRESH_READ_LOCK* = 16384  # Lock tables for read
-  REFRESH_FAST* = 32768       # Intern flag
-  REFRESH_QUERY_CACHE* = 65536 # RESET (remove all queries) from query cache
-  REFRESH_QUERY_CACHE_FREE* = 0x00020000 # pack query cache
-  REFRESH_DES_KEY_FILE* = 0x00040000
-  REFRESH_USER_RESOURCES* = 0x00080000
-  CLIENT_LONG_PASSWORD* = 1   # new more secure passwords
-  CLIENT_FOUND_ROWS* = 2      # Found instead of affected rows
-  CLIENT_LONG_FLAG* = 4       # Get all column flags
-  CLIENT_CONNECT_WITH_DB* = 8 # One can specify db on connect
-  CLIENT_NO_SCHEMA* = 16      # Don't allow database.table.column
-  CLIENT_COMPRESS* = 32       # Can use compression protocol
-  CLIENT_ODBC* = 64           # Odbc client
-  CLIENT_LOCAL_FILES* = 128   # Can use LOAD DATA LOCAL
-  CLIENT_IGNORE_SPACE* = 256  # Ignore spaces before '('
-  CLIENT_PROTOCOL_41* = 512   # New 4.1 protocol
-  CLIENT_INTERACTIVE* = 1024  # This is an interactive client
-  CLIENT_SSL* = 2048          # Switch to SSL after handshake
-  CLIENT_IGNORE_SIGPIPE* = 4096 # IGNORE sigpipes
-  CLIENT_TRANSACTIONS* = 8192 # Client knows about transactions
-  CLIENT_RESERVED* = 16384    # Old flag for 4.1 protocol
-  CLIENT_SECURE_CONNECTION* = 32768 # New 4.1 authentication
-  CLIENT_MULTI_STATEMENTS* = 65536 # Enable/disable multi-stmt support
-  CLIENT_MULTI_RESULTS* = 131072 # Enable/disable multi-results
-  CLIENT_REMEMBER_OPTIONS*: int = 1 shl 31
-  SERVER_STATUS_IN_TRANS* = 1 # Transaction has started
-  SERVER_STATUS_AUTOCOMMIT* = 2 # Server in auto_commit mode
-  SERVER_STATUS_MORE_RESULTS* = 4 # More results on server
-  SERVER_MORE_RESULTS_EXISTS* = 8 # Multi query - next query exists
-  SERVER_QUERY_NO_GOOD_INDEX_USED* = 16
-  SERVER_QUERY_NO_INDEX_USED* = 32 # The server was able to fulfill the clients request and opened a
-                                   #      read-only non-scrollable cursor for a query. This flag comes
-                                   #      in reply to COM_STMT_EXECUTE and COM_STMT_FETCH commands. 
-  SERVER_STATUS_CURSOR_EXISTS* = 64 # This flag is sent when a read-only cursor is exhausted, in reply to
-                                    #      COM_STMT_FETCH command. 
-  SERVER_STATUS_LAST_ROW_SENT* = 128
-  SERVER_STATUS_DB_DROPPED* = 256 # A database was dropped
-  SERVER_STATUS_NO_BACKSLASH_ESCAPES* = 512
-  MYSQL_ERRMSG_SIZE* = 200
-  NET_READ_TIMEOUT* = 30      # Timeout on read
-  NET_WRITE_TIMEOUT* = 60     # Timeout on write
-  NET_WAIT_TIMEOUT* = 8 * 60 * 60 # Wait for new query
-  ONLY_KILL_QUERY* = 1
-
-const 
-  MAX_TINYINT_WIDTH* = 3      # Max width for a TINY w.o. sign
-  MAX_SMALLINT_WIDTH* = 5     # Max width for a SHORT w.o. sign
-  MAX_MEDIUMINT_WIDTH* = 8    # Max width for a INT24 w.o. sign
-  MAX_INT_WIDTH* = 10         # Max width for a LONG w.o. sign
-  MAX_BIGINT_WIDTH* = 20      # Max width for a LONGLONG
-  MAX_CHAR_WIDTH* = 255       # Max length for a CHAR colum
-  MAX_BLOB_WIDTH* = 8192      # Default width for blob
-
-type 
-  Pst_net* = ptr st_net
-  st_net*{.final.} = object
-    vio*: PVio
-    buff*: cstring
-    buff_end*: cstring
-    write_pos*: cstring
-    read_pos*: cstring
-    fd*: my_socket            # For Perl DBI/dbd
-    max_packet*: int
-    max_packet_size*: int
-    pkt_nr*: cuint
-    compress_pkt_nr*: cuint
-    write_timeout*: cuint
-    read_timeout*: cuint
-    retry_count*: cuint
-    fcntl*: cint
-    compress*: my_bool #   The following variable is set if we are doing several queries in one
-                       #        command ( as in LOAD TABLE ... FROM MASTER ),
-                       #        and do not want to confuse the client with OK at the wrong time 
-    remain_in_buf*: int
-    len*: int
-    buf_length*: int
-    where_b*: int
-    return_status*: ptr cint
-    reading_or_writing*: char
-    save_char*: cchar
-    no_send_ok*: my_bool      # For SPs and other things that do multiple stmts
-    no_send_eof*: my_bool     # For SPs' first version read-only cursors
-    no_send_error*: my_bool # Set if OK packet is already sent, and
-                            # we do not need to send error messages
-                            #   Pointer to query object in query cache, do not equal NULL (0) for
-                            #        queries in cache that have not stored its results yet 
-                            # $endif
-    last_error*: array[0..(MYSQL_ERRMSG_SIZE) - 1, char]
-    sqlstate*: array[0..(SQLSTATE_LENGTH + 1) - 1, char]
-    last_errno*: cuint
-    error*: char
-    query_cache_query*: gptr
-    report_error*: my_bool    # We should report error (we have unreported error)
-    return_errno*: my_bool
-
-  NET* = st_net
-  PNET* = ptr NET
-
-const 
-  packet_error* = -1
-
-type 
-  enum_field_types* = enum    # For backward compatibility  
-    MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY, MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG, 
-    MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE, MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP, 
-    MYSQL_TYPE_LONGLONG, MYSQL_TYPE_INT24, MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, 
-    MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR, MYSQL_TYPE_NEWDATE, 
-    MYSQL_TYPE_VARCHAR, MYSQL_TYPE_BIT, MYSQL_TYPE_NEWDECIMAL = 246, 
-    MYSQL_TYPE_ENUM = 247, MYSQL_TYPE_SET = 248, MYSQL_TYPE_TINY_BLOB = 249, 
-    MYSQL_TYPE_MEDIUM_BLOB = 250, MYSQL_TYPE_LONG_BLOB = 251, 
-    MYSQL_TYPE_BLOB = 252, MYSQL_TYPE_VAR_STRING = 253, MYSQL_TYPE_STRING = 254, 
-    MYSQL_TYPE_GEOMETRY = 255
-
-const 
-  CLIENT_MULTI_QUERIES* = CLIENT_MULTI_STATEMENTS
-  FIELD_TYPE_DECIMAL* = MYSQL_TYPE_DECIMAL
-  FIELD_TYPE_NEWDECIMAL* = MYSQL_TYPE_NEWDECIMAL
-  FIELD_TYPE_TINY* = MYSQL_TYPE_TINY
-  FIELD_TYPE_SHORT* = MYSQL_TYPE_SHORT
-  FIELD_TYPE_LONG* = MYSQL_TYPE_LONG
-  FIELD_TYPE_FLOAT* = MYSQL_TYPE_FLOAT
-  FIELD_TYPE_DOUBLE* = MYSQL_TYPE_DOUBLE
-  FIELD_TYPE_NULL* = MYSQL_TYPE_NULL
-  FIELD_TYPE_TIMESTAMP* = MYSQL_TYPE_TIMESTAMP
-  FIELD_TYPE_LONGLONG* = MYSQL_TYPE_LONGLONG
-  FIELD_TYPE_INT24* = MYSQL_TYPE_INT24
-  FIELD_TYPE_DATE* = MYSQL_TYPE_DATE
-  FIELD_TYPE_TIME* = MYSQL_TYPE_TIME
-  FIELD_TYPE_DATETIME* = MYSQL_TYPE_DATETIME
-  FIELD_TYPE_YEAR* = MYSQL_TYPE_YEAR
-  FIELD_TYPE_NEWDATE* = MYSQL_TYPE_NEWDATE
-  FIELD_TYPE_ENUM* = MYSQL_TYPE_ENUM
-  FIELD_TYPE_SET* = MYSQL_TYPE_SET
-  FIELD_TYPE_TINY_BLOB* = MYSQL_TYPE_TINY_BLOB
-  FIELD_TYPE_MEDIUM_BLOB* = MYSQL_TYPE_MEDIUM_BLOB
-  FIELD_TYPE_LONG_BLOB* = MYSQL_TYPE_LONG_BLOB
-  FIELD_TYPE_BLOB* = MYSQL_TYPE_BLOB
-  FIELD_TYPE_VAR_STRING* = MYSQL_TYPE_VAR_STRING
-  FIELD_TYPE_STRING* = MYSQL_TYPE_STRING
-  FIELD_TYPE_CHAR* = MYSQL_TYPE_TINY
-  FIELD_TYPE_INTERVAL* = MYSQL_TYPE_ENUM
-  FIELD_TYPE_GEOMETRY* = MYSQL_TYPE_GEOMETRY
-  FIELD_TYPE_BIT* = MYSQL_TYPE_BIT # Shutdown/kill enums and constants  
-                                   # Bits for THD::killable.  
-  MYSQL_SHUTDOWN_KILLABLE_CONNECT* = chr(1 shl 0)
-  MYSQL_SHUTDOWN_KILLABLE_TRANS* = chr(1 shl 1)
-  MYSQL_SHUTDOWN_KILLABLE_LOCK_TABLE* = chr(1 shl 2)
-  MYSQL_SHUTDOWN_KILLABLE_UPDATE* = chr(1 shl 3)
-  
-type 
-  mysql_enum_shutdown_level* = enum 
-    SHUTDOWN_DEFAULT = 0, SHUTDOWN_WAIT_CONNECTIONS = 1,  
-    SHUTDOWN_WAIT_TRANSACTIONS = 2,  
-    SHUTDOWN_WAIT_UPDATES = 8,  
-    SHUTDOWN_WAIT_ALL_BUFFERS = 16, 
-    SHUTDOWN_WAIT_CRITICAL_BUFFERS = 17,  
-    KILL_QUERY = 254,        
-    KILL_CONNECTION = 255
-  enum_cursor_type* = enum    # options for mysql_set_option  
-    CURSOR_TYPE_NO_CURSOR = 0, CURSOR_TYPE_READ_ONLY = 1, 
-    CURSOR_TYPE_FOR_UPDATE = 2, CURSOR_TYPE_SCROLLABLE = 4
-  enum_mysql_set_option* = enum 
-    MYSQL_OPTION_MULTI_STATEMENTS_ON, MYSQL_OPTION_MULTI_STATEMENTS_OFF
-
-proc net_new_transaction*(net: st_net): st_net
-proc my_net_init*(net: PNET, vio: PVio): my_bool{.cdecl, dynlib: mysqllib, 
-    importc: "my_net_init".}
-proc my_net_local_init*(net: PNET){.cdecl, dynlib: mysqllib, 
-                                    importc: "my_net_local_init".}
-proc net_end*(net: PNET){.cdecl, dynlib: mysqllib, importc: "net_end".}
-proc net_clear*(net: PNET){.cdecl, dynlib: mysqllib, importc: "net_clear".}
-proc net_realloc*(net: PNET, len: int): my_bool{.cdecl, dynlib: mysqllib, 
-    importc: "net_realloc".}
-proc net_flush*(net: PNET): my_bool{.cdecl, dynlib: mysqllib, 
-                                     importc: "net_flush".}
-proc my_net_write*(net: PNET, packet: cstring, length: int): my_bool{.cdecl, 
-    dynlib: mysqllib, importc: "my_net_write".}
-proc net_write_command*(net: PNET, command: char, header: cstring, 
-                        head_len: int, packet: cstring, length: int): my_bool{.
-    cdecl, dynlib: mysqllib, importc: "net_write_command".}
-proc net_real_write*(net: PNET, packet: cstring, length: int): cint{.cdecl, 
-    dynlib: mysqllib, importc: "net_real_write".}
-proc my_net_read*(net: PNET): int{.cdecl, dynlib: mysqllib, 
-                                      importc: "my_net_read".}
-  # The following function is not meant for normal usage
-  #      Currently it's used internally by manager.c  
-type 
-  Psockaddr* = ptr sockaddr
-  sockaddr*{.final.} = object  # undefined structure
-
-proc my_connect*(s: my_socket, name: Psockaddr, namelen: cuint, timeout: cuint): cint{.
-    cdecl, dynlib: mysqllib, importc: "my_connect".}
-type 
-  Prand_struct* = ptr rand_struct
-  rand_struct*{.final.} = object  # The following is for user defined functions  
-    seed1*: int
-    seed2*: int
-    max_value*: int
-    max_value_dbl*: cdouble
-
-  Item_result* = enum 
-    STRING_RESULT, REAL_RESULT, INT_RESULT, ROW_RESULT, DECIMAL_RESULT
-  PItem_result* = ptr Item_result
-  Pst_udf_args* = ptr st_udf_args
-  st_udf_args*{.final.} = object 
-    arg_count*: cuint         # Number of arguments
-    arg_type*: PItem_result   # Pointer to item_results
-    args*: cstringArray             # Pointer to item_results
-    lengths*: ptr int         # Length of string arguments
-    maybe_null*: cstring      # Length of string arguments
-    attributes*: cstringArray       # Pointer to attribute name
-    attribute_lengths*: ptr int # Length of attribute arguments
-  
-  UDF_ARGS* = st_udf_args
-  PUDF_ARGS* = ptr UDF_ARGS   # This holds information about the result  
-  Pst_udf_init* = ptr st_udf_init
-  st_udf_init*{.final.} = object 
-    maybe_null*: my_bool      # 1 if function can return NULL
-    decimals*: cuint          # for real functions
-    max_length*: int          # For string functions
-    theptr*: cstring          # free pointer for function data
-    const_item*: my_bool      # free pointer for function data
-  
-  UDF_INIT* = st_udf_init
-  PUDF_INIT* = ptr UDF_INIT   # Constants when using compression  
-
-const 
-  NET_HEADER_SIZE* = 4        # standard header size
-  COMP_HEADER_SIZE* = 3 # compression header extra size
-                        # Prototypes to password functions  
-                        # These functions are used for authentication by client and server and
-                        #      implemented in sql/password.c     
-
-proc randominit*(para1: Prand_struct, seed1: int, seed2: int){.cdecl, 
-    dynlib: mysqllib, importc: "randominit".}
-proc my_rnd*(para1: Prand_struct): cdouble{.cdecl, dynlib: mysqllib, 
-    importc: "my_rnd".}
-proc create_random_string*(fto: cstring, len: cuint, rand_st: Prand_struct){.
-    cdecl, dynlib: mysqllib, importc: "create_random_string".}
-proc hash_password*(fto: int, password: cstring, password_len: cuint){.cdecl, 
-    dynlib: mysqllib, importc: "hash_password".}
-proc make_scrambled_password_323*(fto: cstring, password: cstring){.cdecl, 
-    dynlib: mysqllib, importc: "make_scrambled_password_323".}
-proc scramble_323*(fto: cstring, message: cstring, password: cstring){.cdecl, 
-    dynlib: mysqllib, importc: "scramble_323".}
-proc check_scramble_323*(para1: cstring, message: cstring, salt: int): my_bool{.
-    cdecl, dynlib: mysqllib, importc: "check_scramble_323".}
-proc get_salt_from_password_323*(res: ptr int, password: cstring){.cdecl, 
-    dynlib: mysqllib, importc: "get_salt_from_password_323".}
-proc make_password_from_salt_323*(fto: cstring, salt: ptr int){.cdecl, 
-    dynlib: mysqllib, importc: "make_password_from_salt_323".}
-proc octet2hex*(fto: cstring, str: cstring, length: cuint): cstring{.cdecl, 
-    dynlib: mysqllib, importc: "octet2hex".}
-proc make_scrambled_password*(fto: cstring, password: cstring){.cdecl, 
-    dynlib: mysqllib, importc: "make_scrambled_password".}
-proc scramble*(fto: cstring, message: cstring, password: cstring){.cdecl, 
-    dynlib: mysqllib, importc: "scramble".}
-proc check_scramble*(reply: cstring, message: cstring, hash_stage2: pointer): my_bool{.
-    cdecl, dynlib: mysqllib, importc: "check_scramble".}
-proc get_salt_from_password*(res: pointer, password: cstring){.cdecl, 
-    dynlib: mysqllib, importc: "get_salt_from_password".}
-proc make_password_from_salt*(fto: cstring, hash_stage2: pointer){.cdecl, 
-    dynlib: mysqllib, importc: "make_password_from_salt".}
-  # end of password.c  
-proc get_tty_password*(opt_message: cstring): cstring{.cdecl, dynlib: mysqllib, 
-    importc: "get_tty_password".}
-proc mysql_errno_to_sqlstate*(mysql_errno: cuint): cstring{.cdecl, 
-    dynlib: mysqllib, importc: "mysql_errno_to_sqlstate".}
-  # Some other useful functions  
-proc modify_defaults_file*(file_location: cstring, option: cstring, 
-                           option_value: cstring, section_name: cstring, 
-                           remove_option: cint): cint{.cdecl, dynlib: mysqllib, 
-    importc: "load_defaults".}
-proc load_defaults*(conf_file: cstring, groups: cstringArray, argc: ptr cint, 
-                    argv: ptr cstringArray): cint{.cdecl, dynlib: mysqllib, 
-    importc: "load_defaults".}
-proc my_init*(): my_bool{.cdecl, dynlib: mysqllib, importc: "my_init".}
-proc my_thread_init*(): my_bool{.cdecl, dynlib: mysqllib, 
-                                 importc: "my_thread_init".}
-proc my_thread_end*(){.cdecl, dynlib: mysqllib, importc: "my_thread_end".}
-const 
-  NULL_LENGTH*: int = int(not (0)) # For net_store_length
-
-const 
-  MYSQL_STMT_HEADER* = 4
-  MYSQL_LONG_DATA_HEADER* = 6 #  ------------ Stop of declaration in "mysql_com.h"   -----------------------  
-                              # $include "mysql_time.h"
-                              # $include "mysql_version.h"
-                              # $include "typelib.h"
-                              # $include "my_list.h" /* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */
-                              #      var
-                              #         mysql_port : cuint;cvar;external;
-                              #         mysql_unix_port : Pchar;cvar;external;
-
-const 
-  CLIENT_NET_READ_TIMEOUT* = 365 * 24 * 3600 # Timeout on read
-  CLIENT_NET_WRITE_TIMEOUT* = 365 * 24 * 3600 # Timeout on write
-
-type 
-  Pst_mysql_field* = ptr st_mysql_field
-  st_mysql_field*{.final.} = object 
-    name*: cstring            # Name of column
-    org_name*: cstring        # Original column name, if an alias
-    table*: cstring           # Table of column if column was a field
-    org_table*: cstring       # Org table name, if table was an alias
-    db*: cstring              # Database for table
-    catalog*: cstring         # Catalog for table
-    def*: cstring             # Default value (set by mysql_list_fields)
-    len*: int              # Width of column (create length)
-    max_length*: int       # Max width for selected set
-    name_length*: cuint
-    org_name_length*: cuint
-    table_length*: cuint
-    org_table_length*: cuint
-    db_length*: cuint
-    catalog_length*: cuint
-    def_length*: cuint
-    flags*: cuint             # Div flags
-    decimals*: cuint          # Number of decimals in field
-    charsetnr*: cuint         # Character set
-    ftype*: enum_field_types  # Type of field. See mysql_com.h for types
-  
-  MYSQL_FIELD* = st_mysql_field
-  PMYSQL_FIELD* = ptr MYSQL_FIELD
-  PMYSQL_ROW* = ptr MYSQL_ROW # return data as array of strings
-  MYSQL_ROW* = cstringArray
-  PMYSQL_FIELD_OFFSET* = ptr MYSQL_FIELD_OFFSET # offset to current field
-  MYSQL_FIELD_OFFSET* = cuint
-
-proc IS_PRI_KEY*(n: int32): bool
-proc IS_NOT_NULL*(n: int32): bool
-proc IS_BLOB*(n: int32): bool
-proc IS_NUM*(t: enum_field_types): bool
-proc INTERNAL_NUM_FIELD*(f: Pst_mysql_field): bool
-proc IS_NUM_FIELD*(f: Pst_mysql_field): bool
-
-type 
-  my_ulonglong* = int64
-  Pmy_ulonglong* = ptr my_ulonglong
-
-const 
-  MYSQL_COUNT_ERROR* = not (my_ulonglong(0))
-
-type 
-  Pst_mysql_rows* = ptr st_mysql_rows
-  st_mysql_rows*{.final.} = object 
-    next*: Pst_mysql_rows     # list of rows
-    data*: MYSQL_ROW
-    len*: int
-
-  MYSQL_ROWS* = st_mysql_rows
-  PMYSQL_ROWS* = ptr MYSQL_ROWS
-  PMYSQL_ROW_OFFSET* = ptr MYSQL_ROW_OFFSET # offset to current row
-  MYSQL_ROW_OFFSET* = MYSQL_ROWS #  ------------ Start of declaration in "my_alloc.h"     --------------------  
-                                 # $include "my_alloc.h"
-
-const 
-  ALLOC_MAX_BLOCK_TO_DROP* = 4096
-  ALLOC_MAX_BLOCK_USAGE_BEFORE_DROP* = 10 # struct for once_alloc (block)  
-
-type 
-  Pst_used_mem* = ptr st_used_mem
-  st_used_mem*{.final.} = object 
-    next*: Pst_used_mem       # Next block in use
-    left*: cuint              # memory left in block
-    size*: cuint              # size of block
-  
-  USED_MEM* = st_used_mem
-  PUSED_MEM* = ptr USED_MEM
-  Pst_mem_root* = ptr st_mem_root
-  st_mem_root*{.final.} = object 
-    free*: PUSED_MEM          # blocks with free memory in it
-    used*: PUSED_MEM          # blocks almost without free memory
-    pre_alloc*: PUSED_MEM     # preallocated block
-    min_malloc*: cuint        # if block have less memory it will be put in 'used' list
-    block_size*: cuint        # initial block size
-    block_num*: cuint # allocated blocks counter
-                      #    first free block in queue test counter (if it exceed
-                      #       MAX_BLOCK_USAGE_BEFORE_DROP block will be dropped in 'used' list)     
-    first_block_usage*: cuint
-    error_handler*: proc (){.cdecl.}
-
-  MEM_ROOT* = st_mem_root
-  PMEM_ROOT* = ptr MEM_ROOT   #  ------------ Stop of declaration in "my_alloc.h"    ----------------------  
-
-type 
-  Pst_mysql_data* = ptr st_mysql_data
-  st_mysql_data*{.final.} = object 
-    rows*: my_ulonglong
-    fields*: cuint
-    data*: PMYSQL_ROWS
-    alloc*: MEM_ROOT
-    prev_ptr*: ptr PMYSQL_ROWS
-
-  MYSQL_DATA* = st_mysql_data
-  PMYSQL_DATA* = ptr MYSQL_DATA
-  mysql_option* = enum 
-    MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE, 
-    MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP, 
-    MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE, 
-    MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT, 
-    MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT, 
-    MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION, 
-    MYSQL_OPT_GUESS_CONNECTION, MYSQL_SET_CLIENT_IP, MYSQL_SECURE_AUTH, 
-    MYSQL_REPORT_DATA_TRUNCATION, MYSQL_OPT_RECONNECT
-
-const 
-  MAX_MYSQL_MANAGER_ERR* = 256
-  MAX_MYSQL_MANAGER_MSG* = 256
-  MANAGER_OK* = 200
-  MANAGER_INFO* = 250
-  MANAGER_ACCESS* = 401
-  MANAGER_CLIENT_ERR* = 450
-  MANAGER_INTERNAL_ERR* = 500
-
-type 
-  st_dynamic_array*{.final.} = object 
-    buffer*: cstring
-    elements*: cuint
-    max_element*: cuint
-    alloc_increment*: cuint
-    size_of_element*: cuint
-
-  DYNAMIC_ARRAY* = st_dynamic_array
-  Pst_dynamic_array* = ptr st_dynamic_array
-  Pst_mysql_options* = ptr st_mysql_options
-  st_mysql_options*{.final.} = object 
-    connect_timeout*: cuint
-    read_timeout*: cuint
-    write_timeout*: cuint
-    port*: cuint
-    protocol*: cuint
-    client_flag*: int
-    host*: cstring
-    user*: cstring
-    password*: cstring
-    unix_socket*: cstring
-    db*: cstring
-    init_commands*: Pst_dynamic_array
-    my_cnf_file*: cstring
-    my_cnf_group*: cstring
-    charset_dir*: cstring
-    charset_name*: cstring
-    ssl_key*: cstring         # PEM key file
-    ssl_cert*: cstring        # PEM cert file
-    ssl_ca*: cstring          # PEM CA file
-    ssl_capath*: cstring      # PEM directory of CA-s?
-    ssl_cipher*: cstring      # cipher to use
-    shared_memory_base_name*: cstring
-    max_allowed_packet*: int
-    use_ssl*: my_bool         # if to use SSL or not
-    compress*: my_bool
-    named_pipe*: my_bool #  On connect, find out the replication role of the server, and
-                         #       establish connections to all the peers  
-    rpl_probe*: my_bool #  Each call to mysql_real_query() will parse it to tell if it is a read
-                        #       or a write, and direct it to the slave or the master      
-    rpl_parse*: my_bool #  If set, never read from a master, only from slave, when doing
-                        #       a read that is replication-aware    
-    no_master_reads*: my_bool
-    separate_thread*: my_bool
-    methods_to_use*: mysql_option
-    client_ip*: cstring
-    secure_auth*: my_bool     # Refuse client connecting to server if it uses old (pre-4.1.1) protocol
-    report_data_truncation*: my_bool # 0 - never report, 1 - always report (default)
-                                     # function pointers for local infile support  
-    local_infile_init*: proc (para1: var pointer, para2: cstring, para3: pointer): cint{.
-        cdecl.}
-    local_infile_read*: proc (para1: pointer, para2: cstring, para3: cuint): cint
-    local_infile_end*: proc (para1: pointer)
-    local_infile_error*: proc (para1: pointer, para2: cstring, para3: cuint): cint
-    local_infile_userdata*: pointer
-
-  mysql_status* = enum 
-    MYSQL_STATUS_READY, MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT
-  mysql_protocol_type* = enum  # There are three types of queries - the ones that have to go to
-                               #      the master, the ones that go to a slave, and the adminstrative
-                               #      type which must happen on the pivot connectioin 
-    MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET, 
-    MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
-  mysql_rpl_type* = enum 
-    MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN
-  charset_info_st*{.final.} = object 
-    number*: cuint
-    primary_number*: cuint
-    binary_number*: cuint
-    state*: cuint
-    csname*: cstring
-    name*: cstring
-    comment*: cstring
-    tailoring*: cstring
-    ftype*: cstring
-    to_lower*: cstring
-    to_upper*: cstring
-    sort_order*: cstring
-    contractions*: ptr int16
-    sort_order_big*: ptr ptr int16
-    tab_to_uni*: ptr int16
-    tab_from_uni*: pointer    # was ^MY_UNI_IDX
-    state_map*: cstring
-    ident_map*: cstring
-    strxfrm_multiply*: cuint
-    mbminlen*: cuint
-    mbmaxlen*: cuint
-    min_sort_char*: int16
-    max_sort_char*: int16
-    escape_with_backslash_is_dangerous*: my_bool
-    cset*: pointer            # was ^MY_CHARSET_HANDLER
-    coll*: pointer            # was ^MY_COLLATION_HANDLER;
-  
-  CHARSET_INFO* = charset_info_st
-  Pcharset_info_st* = ptr charset_info_st
-  Pcharacter_set* = ptr character_set
-  character_set*{.final.} = object 
-    number*: cuint
-    state*: cuint
-    csname*: cstring
-    name*: cstring
-    comment*: cstring
-    dir*: cstring
-    mbminlen*: cuint
-    mbmaxlen*: cuint
-
-  MY_CHARSET_INFO* = character_set
-  PMY_CHARSET_INFO* = ptr MY_CHARSET_INFO
-  Pst_mysql_methods* = ptr st_mysql_methods
-  Pst_mysql* = ptr st_mysql
-  st_mysql*{.final.} = object 
-    net*: NET                 # Communication parameters
-    connector_fd*: gptr       # ConnectorFd for SSL
-    host*: cstring
-    user*: cstring
-    passwd*: cstring
-    unix_socket*: cstring
-    server_version*: cstring
-    host_info*: cstring
-    info*: cstring
-    db*: cstring
-    charset*: Pcharset_info_st
-    fields*: PMYSQL_FIELD
-    field_alloc*: MEM_ROOT
-    affected_rows*: my_ulonglong
-    insert_id*: my_ulonglong  # id if insert on table with NEXTNR
-    extra_info*: my_ulonglong # Used by mysqlshow, not used by mysql 5.0 and up
-    thread_id*: int        # Id for connection in server
-    packet_length*: int
-    port*: cuint
-    client_flag*: int
-    server_capabilities*: int
-    protocol_version*: cuint
-    field_count*: cuint
-    server_status*: cuint
-    server_language*: cuint
-    warning_count*: cuint
-    options*: st_mysql_options
-    status*: mysql_status
-    free_me*: my_bool         # If free in mysql_close
-    reconnect*: my_bool       # set to 1 if automatic reconnect
-    scramble*: array[0..(SCRAMBLE_LENGTH + 1) - 1, char] # session-wide random string
-                                                         #  Set if this is the original connection, not a master or a slave we have
-                                                         #       added though mysql_rpl_probe() or mysql_set_master()/ mysql_add_slave()      
-    rpl_pivot*: my_bool #   Pointers to the master, and the next slave connections, points to
-                        #        itself if lone connection.       
-    master*: Pst_mysql
-    next_slave*: Pst_mysql
-    last_used_slave*: Pst_mysql # needed for round-robin slave pick
-    last_used_con*: Pst_mysql # needed for send/read/store/use result to work correctly with replication
-    stmts*: Pointer           # was PList, list of all statements
-    methods*: Pst_mysql_methods
-    thd*: pointer #   Points to boolean flag in MYSQL_RES  or MYSQL_STMT. We set this flag
-                  #        from mysql_stmt_close if close had to cancel result set of this object.       
-    unbuffered_fetch_owner*: Pmy_bool
-
-  MYSQL* = st_mysql
-  PMYSQL* = ptr MYSQL
-  Pst_mysql_res* = ptr st_mysql_res
-  st_mysql_res*{.final.} = object 
-    row_count*: my_ulonglong
-    fields*: PMYSQL_FIELD
-    data*: PMYSQL_DATA
-    data_cursor*: PMYSQL_ROWS
-    lengths*: ptr int         # column lengths of current row
-    handle*: PMYSQL           # for unbuffered reads
-    field_alloc*: MEM_ROOT
-    field_count*: cuint
-    current_field*: cuint
-    row*: MYSQL_ROW           # If unbuffered read
-    current_row*: MYSQL_ROW   # buffer to current row
-    eof*: my_bool             # Used by mysql_fetch_row
-    unbuffered_fetch_cancelled*: my_bool # mysql_stmt_close() had to cancel this result
-    methods*: Pst_mysql_methods
-
-  MYSQL_RES* = st_mysql_res
-  PMYSQL_RES* = ptr MYSQL_RES
-  Pst_mysql_stmt* = ptr st_mysql_stmt
-  PMYSQL_STMT* = ptr MYSQL_STMT
-  st_mysql_methods*{.final.} = object 
-    read_query_result*: proc (mysql: PMYSQL): my_bool{.cdecl.}
-    advanced_command*: proc (mysql: PMYSQL, command: enum_server_command, 
-                             header: cstring, header_length: int, 
-                             arg: cstring, arg_length: int, 
-                             skip_check: my_bool): my_bool
-    read_rows*: proc (mysql: PMYSQL, mysql_fields: PMYSQL_FIELD, fields: cuint): PMYSQL_DATA
-    use_result*: proc (mysql: PMYSQL): PMYSQL_RES
-    fetch_lengths*: proc (fto: ptr int, column: MYSQL_ROW, field_count: cuint)
-    flush_use_result*: proc (mysql: PMYSQL)
-    list_fields*: proc (mysql: PMYSQL): PMYSQL_FIELD
-    read_prepare_result*: proc (mysql: PMYSQL, stmt: PMYSQL_STMT): my_bool
-    stmt_execute*: proc (stmt: PMYSQL_STMT): cint
-    read_binary_rows*: proc (stmt: PMYSQL_STMT): cint
-    unbuffered_fetch*: proc (mysql: PMYSQL, row: cstringArray): cint
-    free_embedded_thd*: proc (mysql: PMYSQL)
-    read_statistics*: proc (mysql: PMYSQL): cstring
-    next_result*: proc (mysql: PMYSQL): my_bool
-    read_change_user_result*: proc (mysql: PMYSQL, buff: cstring, 
-                                    passwd: cstring): cint
-    read_rowsfrom_cursor*: proc (stmt: PMYSQL_STMT): cint
-
-  MYSQL_METHODS* = st_mysql_methods
-  PMYSQL_METHODS* = ptr MYSQL_METHODS
-  Pst_mysql_manager* = ptr st_mysql_manager
-  st_mysql_manager*{.final.} = object 
-    net*: NET
-    host*: cstring
-    user*: cstring
-    passwd*: cstring
-    port*: cuint
-    free_me*: my_bool
-    eof*: my_bool
-    cmd_status*: cint
-    last_errno*: cint
-    net_buf*: cstring
-    net_buf_pos*: cstring
-    net_data_end*: cstring
-    net_buf_size*: cint
-    last_error*: array[0..(MAX_MYSQL_MANAGER_ERR) - 1, char]
-
-  MYSQL_MANAGER* = st_mysql_manager
-  PMYSQL_MANAGER* = ptr MYSQL_MANAGER
-  Pst_mysql_parameters* = ptr st_mysql_parameters
-  st_mysql_parameters*{.final.} = object 
-    p_max_allowed_packet*: ptr int
-    p_net_buffer_length*: ptr int
-
-  MYSQL_PARAMETERS* = st_mysql_parameters
-  PMYSQL_PARAMETERS* = ptr MYSQL_PARAMETERS
-  enum_mysql_stmt_state* = enum     
-    MYSQL_STMT_INIT_DONE = 1, MYSQL_STMT_PREPARE_DONE, MYSQL_STMT_EXECUTE_DONE, 
-    MYSQL_STMT_FETCH_DONE
-  Pst_mysql_bind* = ptr st_mysql_bind
-  st_mysql_bind*{.final.} = object 
-    len*: int              # output length pointer
-    is_null*: Pmy_bool        # Pointer to null indicator
-    buffer*: pointer          # buffer to get/put data
-    error*: pmy_bool          # set this if you want to track data truncations happened during fetch
-    buffer_type*: enum_field_types # buffer type
-    buffer_length*: int    # buffer length, must be set for str/binary
-                           # Following are for internal use. Set by mysql_stmt_bind_param  
-    row_ptr*: ptr byte        # for the current data position
-    offset*: int           # offset position for char/binary fetch
-    length_value*: int     #  Used if length is 0
-    param_number*: cuint      # For null count and error messages
-    pack_length*: cuint       # Internal length for packed data
-    error_value*: my_bool     # used if error is 0
-    is_unsigned*: my_bool     # set if integer type is unsigned
-    long_data_used*: my_bool  # If used with mysql_send_long_data
-    is_null_value*: my_bool   # Used if is_null is 0
-    store_param_func*: proc (net: PNET, param: Pst_mysql_bind){.cdecl.}
-    fetch_result*: proc (para1: Pst_mysql_bind, para2: PMYSQL_FIELD, row: PPbyte)
-    skip_result*: proc (para1: Pst_mysql_bind, para2: PMYSQL_FIELD, row: PPbyte)
-
-  MYSQL_BIND* = st_mysql_bind
-  PMYSQL_BIND* = ptr MYSQL_BIND # statement handler  
-  st_mysql_stmt*{.final.} = object 
-    mem_root*: MEM_ROOT       # root allocations
-    mysql*: PMYSQL            # connection handle
-    params*: PMYSQL_BIND      # input parameters
-    `bind`*: PMYSQL_BIND      # input parameters
-    fields*: PMYSQL_FIELD     # result set metadata
-    result*: MYSQL_DATA       # cached result set
-    data_cursor*: PMYSQL_ROWS # current row in cached result
-    affected_rows*: my_ulonglong # copy of mysql->affected_rows after statement execution
-    insert_id*: my_ulonglong 
-    read_row_func*: proc (stmt: Pst_mysql_stmt, row: PPbyte): cint{.cdecl.}
-    stmt_id*: int          # Id for prepared statement
-    flags*: int            # i.e. type of cursor to open
-    prefetch_rows*: int    # number of rows per one COM_FETCH
-    server_status*: cuint # Copied from mysql->server_status after execute/fetch to know
-                          # server-side cursor status for this statement.
-    last_errno*: cuint        # error code
-    param_count*: cuint       # input parameter count
-    field_count*: cuint       # number of columns in result set
-    state*: enum_mysql_stmt_state # statement state
-    last_error*: array[0..(MYSQL_ERRMSG_SIZE) - 1, char] # error message
-    sqlstate*: array[0..(SQLSTATE_LENGTH + 1) - 1, char]
-    send_types_to_server*: my_bool # Types of input parameters should be sent to server
-    bind_param_done*: my_bool # input buffers were supplied
-    bind_result_done*: char # output buffers were supplied
-    unbuffered_fetch_cancelled*: my_bool        
-    update_max_length*: my_bool
-
-  MYSQL_STMT* = st_mysql_stmt # When doing mysql_stmt_store_result calculate max_length attribute
-                              # of statement metadata. This is to be consistent with the old API,
-                              # where this was done automatically.
-                              # In the new API we do that only by request because it slows down
-                              # mysql_stmt_store_result sufficiently.       
-  enum_stmt_attr_type* = enum
-    STMT_ATTR_UPDATE_MAX_LENGTH, STMT_ATTR_CURSOR_TYPE,  
-    STMT_ATTR_PREFETCH_ROWS 
-    
-proc mysql_server_init*(argc: cint, argv: cstringArray, groups: cstringArray): cint{.cdecl, 
-    dynlib: mysqllib, importc: "mysql_server_init".}
-proc mysql_server_end*(){.cdecl, dynlib: mysqllib, importc: "mysql_server_end".}
-  # mysql_server_init/end need to be called when using libmysqld or
-  #      libmysqlclient (exactly, mysql_server_init() is called by mysql_init() so
-  #      you don't need to call it explicitely; but you need to call
-  #      mysql_server_end() to free memory). The names are a bit misleading
-  #      (mysql_SERVER* to be used when using libmysqlCLIENT). So we add more general
-  #      names which suit well whether you're using libmysqld or libmysqlclient. We
-  #      intend to promote these aliases over the mysql_server* ones.     
-proc mysql_library_init*(argc: cint, argv: cstringArray, groups: cstringArray): cint{.cdecl, 
-    dynlib: mysqllib, importc: "mysql_server_init".}
-proc mysql_library_end*(){.cdecl, dynlib: mysqllib, importc: "mysql_server_end".}
-proc mysql_get_parameters*(): PMYSQL_PARAMETERS{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_get_parameters".}
-  # Set up and bring down a thread; these function should be called
-  #      for each thread in an application which opens at least one MySQL
-  #      connection.  All uses of the connection(s) should be between these
-  #      function calls.     
-proc mysql_thread_init*(): my_bool{.stdcall, dynlib: mysqllib, 
-                                    importc: "mysql_thread_init".}
-proc mysql_thread_end*(){.stdcall, dynlib: mysqllib, importc: "mysql_thread_end".}
-  # Functions to get information from the MYSQL and MYSQL_RES structures
-  #      Should definitely be used if one uses shared libraries.     
-proc mysql_num_rows*(res: PMYSQL_RES): my_ulonglong{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_num_rows".}
-proc mysql_num_fields*(res: PMYSQL_RES): cuint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_num_fields".}
-proc mysql_eof*(res: PMYSQL_RES): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_eof".}
-proc mysql_fetch_field_direct*(res: PMYSQL_RES, fieldnr: cuint): PMYSQL_FIELD{.
-    stdcall, dynlib: mysqllib, importc: "mysql_fetch_field_direct".}
-proc mysql_fetch_fields*(res: PMYSQL_RES): PMYSQL_FIELD{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_fetch_fields".}
-proc mysql_row_tell*(res: PMYSQL_RES): MYSQL_ROW_OFFSET{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_row_tell".}
-proc mysql_field_tell*(res: PMYSQL_RES): MYSQL_FIELD_OFFSET{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_field_tell".}
-proc mysql_field_count*(mysql: PMYSQL): cuint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_field_count".}
-proc mysql_affected_rows*(mysql: PMYSQL): my_ulonglong{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_affected_rows".}
-proc mysql_insert_id*(mysql: PMYSQL): my_ulonglong{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_insert_id".}
-proc mysql_errno*(mysql: PMYSQL): cuint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_errno".}
-proc mysql_error*(mysql: PMYSQL): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_error".}
-proc mysql_sqlstate*(mysql: PMYSQL): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_sqlstate".}
-proc mysql_warning_count*(mysql: PMYSQL): cuint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_warning_count".}
-proc mysql_info*(mysql: PMYSQL): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_info".}
-proc mysql_thread_id*(mysql: PMYSQL): int{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_thread_id".}
-proc mysql_character_set_name*(mysql: PMYSQL): cstring{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_character_set_name".}
-proc mysql_set_character_set*(mysql: PMYSQL, csname: cstring): int32{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_set_character_set".}
-proc mysql_init*(mysql: PMYSQL): PMYSQL{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_init".}
-proc mysql_ssl_set*(mysql: PMYSQL, key: cstring, cert: cstring, ca: cstring, 
-                    capath: cstring, cipher: cstring): my_bool{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_ssl_set".}
-proc mysql_change_user*(mysql: PMYSQL, user: cstring, passwd: cstring, 
-                        db: cstring): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_change_user".}
-proc mysql_real_connect*(mysql: PMYSQL, host: cstring, user: cstring, 
-                         passwd: cstring, db: cstring, port: cuint, 
-                         unix_socket: cstring, clientflag: int): PMYSQL{.
-    stdcall, dynlib: mysqllib, importc: "mysql_real_connect".}
-proc mysql_select_db*(mysql: PMYSQL, db: cstring): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_select_db".}
-proc mysql_query*(mysql: PMYSQL, q: cstring): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_query".}
-proc mysql_send_query*(mysql: PMYSQL, q: cstring, len: int): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_send_query".}
-proc mysql_real_query*(mysql: PMYSQL, q: cstring, len: int): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_real_query".}
-proc mysql_store_result*(mysql: PMYSQL): PMYSQL_RES{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_store_result".}
-proc mysql_use_result*(mysql: PMYSQL): PMYSQL_RES{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_use_result".}
-  # perform query on master  
-proc mysql_master_query*(mysql: PMYSQL, q: cstring, len: int): my_bool{.
-    stdcall, dynlib: mysqllib, importc: "mysql_master_query".}
-proc mysql_master_send_query*(mysql: PMYSQL, q: cstring, len: int): my_bool{.
-    stdcall, dynlib: mysqllib, importc: "mysql_master_send_query".}
-  # perform query on slave  
-proc mysql_slave_query*(mysql: PMYSQL, q: cstring, len: int): my_bool{.
-    stdcall, dynlib: mysqllib, importc: "mysql_slave_query".}
-proc mysql_slave_send_query*(mysql: PMYSQL, q: cstring, len: int): my_bool{.
-    stdcall, dynlib: mysqllib, importc: "mysql_slave_send_query".}
-proc mysql_get_character_set_info*(mysql: PMYSQL, charset: PMY_CHARSET_INFO){.
-    stdcall, dynlib: mysqllib, importc: "mysql_get_character_set_info".}
-  # local infile support  
-const 
-  LOCAL_INFILE_ERROR_LEN* = 512 
-  
-# procedure mysql_set_local_infile_handler(mysql:PMYSQL; local_infile_init:function (para1:Ppointer; para2:Pchar; para3:pointer):longint; local_infile_read:function (para1:pointer; para2:Pchar; para3:dword):longint; local_infile_end:procedure (_pa
-# para6:pointer);cdecl;external mysqllib name 'mysql_set_local_infile_handler';
-
-proc mysql_set_local_infile_default*(mysql: PMYSQL){.cdecl, dynlib: mysqllib, 
-    importc: "mysql_set_local_infile_default".}
-  # enable/disable parsing of all queries to decide if they go on master or
-  #      slave     
-proc mysql_enable_rpl_parse*(mysql: PMYSQL){.stdcall, dynlib: mysqllib, 
-    importc: "mysql_enable_rpl_parse".}
-proc mysql_disable_rpl_parse*(mysql: PMYSQL){.stdcall, dynlib: mysqllib, 
-    importc: "mysql_disable_rpl_parse".}
-  # get the value of the parse flag  
-proc mysql_rpl_parse_enabled*(mysql: PMYSQL): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_rpl_parse_enabled".}
-  #  enable/disable reads from master  
-proc mysql_enable_reads_from_master*(mysql: PMYSQL){.stdcall, dynlib: mysqllib, 
-    importc: "mysql_enable_reads_from_master".}
-proc mysql_disable_reads_from_master*(mysql: PMYSQL){.stdcall, dynlib: mysqllib, 
-    importc: "mysql_disable_reads_from_master".}
-  # get the value of the master read flag  
-proc mysql_reads_from_master_enabled*(mysql: PMYSQL): my_bool{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_reads_from_master_enabled".}
-proc mysql_rpl_query_type*(q: cstring, length: cint): mysql_rpl_type{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_rpl_query_type".}
-  # discover the master and its slaves  
-proc mysql_rpl_probe*(mysql: PMYSQL): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_rpl_probe".}
-  # set the master, close/free the old one, if it is not a pivot  
-proc mysql_set_master*(mysql: PMYSQL, host: cstring, port: cuint, user: cstring, 
-                       passwd: cstring): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_set_master".}
-proc mysql_add_slave*(mysql: PMYSQL, host: cstring, port: cuint, user: cstring, 
-                      passwd: cstring): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_add_slave".}
-proc mysql_shutdown*(mysql: PMYSQL, shutdown_level: mysql_enum_shutdown_level): cint{.
-    stdcall, dynlib: mysqllib, importc: "mysql_shutdown".}
-proc mysql_dump_debug_info*(mysql: PMYSQL): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_dump_debug_info".}
-proc mysql_refresh*(mysql: PMYSQL, refresh_options: cuint): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_refresh".}
-proc mysql_kill*(mysql: PMYSQL, pid: int): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_kill".}
-proc mysql_set_server_option*(mysql: PMYSQL, option: enum_mysql_set_option): cint{.
-    stdcall, dynlib: mysqllib, importc: "mysql_set_server_option".}
-proc mysql_ping*(mysql: PMYSQL): cint{.stdcall, dynlib: mysqllib, 
-                                       importc: "mysql_ping".}
-proc mysql_stat*(mysql: PMYSQL): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stat".}
-proc mysql_get_server_info*(mysql: PMYSQL): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_get_server_info".}
-proc mysql_get_client_info*(): cstring{.stdcall, dynlib: mysqllib, 
-                                        importc: "mysql_get_client_info".}
-proc mysql_get_client_version*(): int{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_get_client_version".}
-proc mysql_get_host_info*(mysql: PMYSQL): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_get_host_info".}
-proc mysql_get_server_version*(mysql: PMYSQL): int{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_get_server_version".}
-proc mysql_get_proto_info*(mysql: PMYSQL): cuint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_get_proto_info".}
-proc mysql_list_dbs*(mysql: PMYSQL, wild: cstring): PMYSQL_RES{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_list_dbs".}
-proc mysql_list_tables*(mysql: PMYSQL, wild: cstring): PMYSQL_RES{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_list_tables".}
-proc mysql_list_processes*(mysql: PMYSQL): PMYSQL_RES{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_list_processes".}
-proc mysql_options*(mysql: PMYSQL, option: mysql_option, arg: cstring): cint{.
-    stdcall, dynlib: mysqllib, importc: "mysql_options".}
-proc mysql_free_result*(result: PMYSQL_RES){.stdcall, dynlib: mysqllib, 
-    importc: "mysql_free_result".}
-proc mysql_data_seek*(result: PMYSQL_RES, offset: my_ulonglong){.stdcall, 
-    dynlib: mysqllib, importc: "mysql_data_seek".}
-proc mysql_row_seek*(result: PMYSQL_RES, offset: MYSQL_ROW_OFFSET): MYSQL_ROW_OFFSET{.
-    stdcall, dynlib: mysqllib, importc: "mysql_row_seek".}
-proc mysql_field_seek*(result: PMYSQL_RES, offset: MYSQL_FIELD_OFFSET): MYSQL_FIELD_OFFSET{.
-    stdcall, dynlib: mysqllib, importc: "mysql_field_seek".}
-proc mysql_fetch_row*(result: PMYSQL_RES): MYSQL_ROW{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_fetch_row".}
-proc mysql_fetch_lengths*(result: PMYSQL_RES): ptr int{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_fetch_lengths".}
-proc mysql_fetch_field*(result: PMYSQL_RES): PMYSQL_FIELD{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_fetch_field".}
-proc mysql_list_fields*(mysql: PMYSQL, table: cstring, wild: cstring): PMYSQL_RES{.
-    stdcall, dynlib: mysqllib, importc: "mysql_list_fields".}
-proc mysql_escape_string*(fto: cstring, `from`: cstring, from_length: int): int{.
-    stdcall, dynlib: mysqllib, importc: "mysql_escape_string".}
-proc mysql_hex_string*(fto: cstring, `from`: cstring, from_length: int): int{.
-    stdcall, dynlib: mysqllib, importc: "mysql_hex_string".}
-proc mysql_real_escape_string*(mysql: PMYSQL, fto: cstring, `from`: cstring, 
-                               len: int): int{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_real_escape_string".}
-proc mysql_debug*(debug: cstring){.stdcall, dynlib: mysqllib, 
-                                   importc: "mysql_debug".}
-  #    function mysql_odbc_escape_string(mysql:PMYSQL; fto:Pchar; to_length:dword; from:Pchar; from_length:dword;
-  #               param:pointer; extend_buffer:function (para1:pointer; to:Pchar; length:Pdword):Pchar):Pchar;stdcall;external mysqllib name 'mysql_odbc_escape_string';
-proc myodbc_remove_escape*(mysql: PMYSQL, name: cstring){.stdcall, 
-    dynlib: mysqllib, importc: "myodbc_remove_escape".}
-proc mysql_thread_safe*(): cuint{.stdcall, dynlib: mysqllib, 
-                                  importc: "mysql_thread_safe".}
-proc mysql_embedded*(): my_bool{.stdcall, dynlib: mysqllib, 
-                                 importc: "mysql_embedded".}
-proc mysql_manager_init*(con: PMYSQL_MANAGER): PMYSQL_MANAGER{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_manager_init".}
-proc mysql_manager_connect*(con: PMYSQL_MANAGER, host: cstring, user: cstring, 
-                            passwd: cstring, port: cuint): PMYSQL_MANAGER{.
-    stdcall, dynlib: mysqllib, importc: "mysql_manager_connect".}
-proc mysql_manager_close*(con: PMYSQL_MANAGER){.stdcall, dynlib: mysqllib, 
-    importc: "mysql_manager_close".}
-proc mysql_manager_command*(con: PMYSQL_MANAGER, cmd: cstring, cmd_len: cint): cint{.
-    stdcall, dynlib: mysqllib, importc: "mysql_manager_command".}
-proc mysql_manager_fetch_line*(con: PMYSQL_MANAGER, res_buf: cstring, 
-                               res_buf_size: cint): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_manager_fetch_line".}
-proc mysql_read_query_result*(mysql: PMYSQL): my_bool{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_read_query_result".}
-proc mysql_stmt_init*(mysql: PMYSQL): PMYSQL_STMT{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_init".}
-proc mysql_stmt_prepare*(stmt: PMYSQL_STMT, query: cstring, len: int): cint{.
-    stdcall, dynlib: mysqllib, importc: "mysql_stmt_prepare".}
-proc mysql_stmt_execute*(stmt: PMYSQL_STMT): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_execute".}
-proc mysql_stmt_fetch*(stmt: PMYSQL_STMT): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_fetch".}
-proc mysql_stmt_fetch_column*(stmt: PMYSQL_STMT, `bind`: PMYSQL_BIND, 
-                              column: cuint, offset: int): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_fetch_column".}
-proc mysql_stmt_store_result*(stmt: PMYSQL_STMT): cint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_store_result".}
-proc mysql_stmt_param_count*(stmt: PMYSQL_STMT): int{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_param_count".}
-proc mysql_stmt_attr_set*(stmt: PMYSQL_STMT, attr_type: enum_stmt_attr_type, 
-                          attr: pointer): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_attr_set".}
-proc mysql_stmt_attr_get*(stmt: PMYSQL_STMT, attr_type: enum_stmt_attr_type, 
-                          attr: pointer): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_attr_get".}
-proc mysql_stmt_bind_param*(stmt: PMYSQL_STMT, bnd: PMYSQL_BIND): my_bool{.
-    stdcall, dynlib: mysqllib, importc: "mysql_stmt_bind_param".}
-proc mysql_stmt_bind_result*(stmt: PMYSQL_STMT, bnd: PMYSQL_BIND): my_bool{.
-    stdcall, dynlib: mysqllib, importc: "mysql_stmt_bind_result".}
-proc mysql_stmt_close*(stmt: PMYSQL_STMT): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_close".}
-proc mysql_stmt_reset*(stmt: PMYSQL_STMT): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_reset".}
-proc mysql_stmt_free_result*(stmt: PMYSQL_STMT): my_bool{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_free_result".}
-proc mysql_stmt_send_long_data*(stmt: PMYSQL_STMT, param_number: cuint, 
-                                data: cstring, len: int): my_bool{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_send_long_data".}
-proc mysql_stmt_result_metadata*(stmt: PMYSQL_STMT): PMYSQL_RES{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_result_metadata".}
-proc mysql_stmt_param_metadata*(stmt: PMYSQL_STMT): PMYSQL_RES{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_param_metadata".}
-proc mysql_stmt_errno*(stmt: PMYSQL_STMT): cuint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_errno".}
-proc mysql_stmt_error*(stmt: PMYSQL_STMT): cstring{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_stmt_error".}
-proc mysql_stmt_sqlstate*(stmt: PMYSQL_STMT): cstring{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_sqlstate".}
-proc mysql_stmt_row_seek*(stmt: PMYSQL_STMT, offset: MYSQL_ROW_OFFSET): MYSQL_ROW_OFFSET{.
-    stdcall, dynlib: mysqllib, importc: "mysql_stmt_row_seek".}
-proc mysql_stmt_row_tell*(stmt: PMYSQL_STMT): MYSQL_ROW_OFFSET{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_row_tell".}
-proc mysql_stmt_data_seek*(stmt: PMYSQL_STMT, offset: my_ulonglong){.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_data_seek".}
-proc mysql_stmt_num_rows*(stmt: PMYSQL_STMT): my_ulonglong{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_num_rows".}
-proc mysql_stmt_affected_rows*(stmt: PMYSQL_STMT): my_ulonglong{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_affected_rows".}
-proc mysql_stmt_insert_id*(stmt: PMYSQL_STMT): my_ulonglong{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_insert_id".}
-proc mysql_stmt_field_count*(stmt: PMYSQL_STMT): cuint{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_stmt_field_count".}
-proc mysql_commit*(mysql: PMYSQL): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_commit".}
-proc mysql_rollback*(mysql: PMYSQL): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_rollback".}
-proc mysql_autocommit*(mysql: PMYSQL, auto_mode: my_bool): my_bool{.stdcall, 
-    dynlib: mysqllib, importc: "mysql_autocommit".}
-proc mysql_more_results*(mysql: PMYSQL): my_bool{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_more_results".}
-proc mysql_next_result*(mysql: PMYSQL): cint{.stdcall, dynlib: mysqllib, 
-    importc: "mysql_next_result".}
-proc mysql_close*(sock: PMYSQL){.stdcall, dynlib: mysqllib, 
-                                 importc: "mysql_close".}
-  # status return codes  
-const 
-  MYSQL_NO_DATA* = 100
-  MYSQL_DATA_TRUNCATED* = 101
-
-proc mysql_reload*(mysql: PMySQL): cint
-
-when defined(USE_OLD_FUNCTIONS): 
-  proc mysql_connect*(mysql: PMYSQL, host: cstring, user: cstring, 
-                      passwd: cstring): PMYSQL{.stdcall, 
-      dynlib: External_library, importc: "mysql_connect".}
-  proc mysql_create_db*(mysql: PMYSQL, DB: cstring): cint{.stdcall, 
-      dynlib: External_library, importc: "mysql_create_db".}
-  proc mysql_drop_db*(mysql: PMYSQL, DB: cstring): cint{.stdcall, 
-      dynlib: External_library, importc: "mysql_drop_db".}
-
-proc net_safe_read*(mysql: PMYSQL): cuint{.cdecl, dynlib: mysqllib, 
-    importc: "net_safe_read".}
-
-proc net_new_transaction(net: st_net): st_net = 
-  assert false
-  #net.pkt_nr = 0
-  result = net
-
-proc IS_PRI_KEY(n: int32): bool = 
-  result = (n and PRI_KEY_FLAG) != 0
-
-proc IS_NOT_NULL(n: int32): bool = 
-  result = (n and NOT_NULL_FLAG) != 0
-
-proc IS_BLOB(n: int32): bool = 
-  result = (n and BLOB_FLAG) != 0
-
-proc IS_NUM_FIELD(f: pst_mysql_field): bool = 
-  result = (f.flags and NUM_FLAG) != 0
-
-proc IS_NUM(t: enum_field_types): bool = 
-  result = (t <= FIELD_TYPE_INT24) or (t == FIELD_TYPE_YEAR) or
-      (t == FIELD_TYPE_NEWDECIMAL)
-
-proc INTERNAL_NUM_FIELD(f: Pst_mysql_field): bool = 
-  result = (f.ftype <= FIELD_TYPE_INT24) and
-      ((f.ftype != FIELD_TYPE_TIMESTAMP) or (f.len == 14) or (f.len == 8)) or
-      (f.ftype == FIELD_TYPE_YEAR)
-
-proc mysql_reload(mysql: PMySQL): cint = 
-  result = mysql_refresh(mysql, REFRESH_GRANT)
-
diff --git a/lib/wrappers/odbcsql.nim b/lib/wrappers/odbcsql.nim
deleted file mode 100755
index 77719e85f..000000000
--- a/lib/wrappers/odbcsql.nim
+++ /dev/null
@@ -1,788 +0,0 @@
-
-{.deadCodeElim: on.}
-
-when not defined(ODBCVER):
-  const
-    ODBCVER = 0x0351 ## define ODBC version 3.51 by default
-
-when defined(windows):
-  {.push callconv: stdcall.}
-  const odbclib = "odbc32.dll"
-else:
-  {.push callconv: cdecl.}
-  const odbclib = "libodbc.so"
-
-# DATA TYPES CORRESPONDENCE
-#   BDE fields  ODBC types
-#   ----------  ------------------
-#   ftBlob      SQL_BINARY
-#   ftBoolean   SQL_BIT
-#   ftDate      SQL_TYPE_DATE
-#   ftTime      SQL_TYPE_TIME
-#   ftDateTime  SQL_TYPE_TIMESTAMP
-#   ftInteger   SQL_INTEGER
-#   ftSmallint  SQL_SMALLINT
-#   ftFloat     SQL_DOUBLE
-#   ftString    SQL_CHAR
-#   ftMemo      SQL_BINARY // SQL_VARCHAR
-#
-
-type 
-  TSqlChar* = char
-  TSqlSmallInt* = int16
-  TSqlUSmallInt* = int16
-  TSqlHandle* = pointer
-  TSqlHEnv* = TSqlHandle
-  TSqlHDBC* = TSqlHandle
-  TSqlHStmt* = TSqlHandle
-  TSqlHDesc* = TSqlHandle
-  TSqlInteger* = int
-  TSqlUInteger* = int
-  TSqlPointer* = pointer
-  TSqlReal* = cfloat
-  TSqlDouble* = cdouble
-  TSqlFloat* = cdouble
-  TSqlHWND* = pointer
-  PSQLCHAR* = cstring
-  PSQLINTEGER* = ptr TSqlInteger
-  PSQLUINTEGER* = ptr TSqlUInteger
-  PSQLSMALLINT* = ptr TSqlSmallInt
-  PSQLUSMALLINT* = ptr TSqlUSmallInt
-  PSQLREAL* = ptr TSqlReal
-  PSQLDOUBLE* = ptr TSqlDouble
-  PSQLFLOAT* = ptr TSqlFloat
-  PSQLHANDLE* = ptr TSqlHandle
-
-const                         # SQL data type codes 
-  SQL_UNKNOWN_TYPE* = 0
-  SQL_LONGVARCHAR* = (- 1)
-  SQL_BINARY* = (- 2)
-  SQL_VARBINARY* = (- 3)
-  SQL_LONGVARBINARY* = (- 4)
-  SQL_BIGINT* = (- 5)
-  SQL_TINYINT* = (- 6)
-  SQL_BIT* = (- 7)
-  SQL_WCHAR* = (- 8)
-  SQL_WVARCHAR* = (- 9)
-  SQL_WLONGVARCHAR* = (- 10)
-  SQL_CHAR* = 1
-  SQL_NUMERIC* = 2
-  SQL_DECIMAL* = 3
-  SQL_INTEGER* = 4
-  SQL_SMALLINT* = 5
-  SQL_FLOAT* = 6
-  SQL_REAL* = 7
-  SQL_DOUBLE* = 8
-  SQL_DATETIME* = 9
-  SQL_VARCHAR* = 12
-  SQL_TYPE_DATE* = 91
-  SQL_TYPE_TIME* = 92
-  SQL_TYPE_TIMESTAMP* = 93
-  SQL_DATE* = 9
-  SQL_TIME* = 10
-  SQL_TIMESTAMP* = 11
-  SQL_INTERVAL* = 10
-  SQL_GUID* = - 11            # interval codes
-
-when ODBCVER >= 0x0300: 
-  const 
-    SQL_CODE_YEAR* = 1
-    SQL_CODE_MONTH* = 2
-    SQL_CODE_DAY* = 3
-    SQL_CODE_HOUR* = 4
-    SQL_CODE_MINUTE* = 5
-    SQL_CODE_SECOND* = 6
-    SQL_CODE_YEAR_TO_MONTH* = 7
-    SQL_CODE_DAY_TO_HOUR* = 8
-    SQL_CODE_DAY_TO_MINUTE* = 9
-    SQL_CODE_DAY_TO_SECOND* = 10
-    SQL_CODE_HOUR_TO_MINUTE* = 11
-    SQL_CODE_HOUR_TO_SECOND* = 12
-    SQL_CODE_MINUTE_TO_SECOND* = 13
-    SQL_INTERVAL_YEAR* = 100 + SQL_CODE_YEAR
-    SQL_INTERVAL_MONTH* = 100 + SQL_CODE_MONTH
-    SQL_INTERVAL_DAY* = 100 + SQL_CODE_DAY
-    SQL_INTERVAL_HOUR* = 100 + SQL_CODE_HOUR
-    SQL_INTERVAL_MINUTE* = 100 + SQL_CODE_MINUTE
-    SQL_INTERVAL_SECOND* = 100 + SQL_CODE_SECOND
-    SQL_INTERVAL_YEAR_TO_MONTH* = 100 + SQL_CODE_YEAR_TO_MONTH
-    SQL_INTERVAL_DAY_TO_HOUR* = 100 + SQL_CODE_DAY_TO_HOUR
-    SQL_INTERVAL_DAY_TO_MINUTE* = 100 + SQL_CODE_DAY_TO_MINUTE
-    SQL_INTERVAL_DAY_TO_SECOND* = 100 + SQL_CODE_DAY_TO_SECOND
-    SQL_INTERVAL_HOUR_TO_MINUTE* = 100 + SQL_CODE_HOUR_TO_MINUTE
-    SQL_INTERVAL_HOUR_TO_SECOND* = 100 + SQL_CODE_HOUR_TO_SECOND
-    SQL_INTERVAL_MINUTE_TO_SECOND* = 100 + SQL_CODE_MINUTE_TO_SECOND
-else: 
-  const 
-    SQL_INTERVAL_YEAR* = - 80
-    SQL_INTERVAL_MONTH* = - 81
-    SQL_INTERVAL_YEAR_TO_MONTH* = - 82
-    SQL_INTERVAL_DAY* = - 83
-    SQL_INTERVAL_HOUR* = - 84
-    SQL_INTERVAL_MINUTE* = - 85
-    SQL_INTERVAL_SECOND* = - 86
-    SQL_INTERVAL_DAY_TO_HOUR* = - 87
-    SQL_INTERVAL_DAY_TO_MINUTE* = - 88
-    SQL_INTERVAL_DAY_TO_SECOND* = - 89
-    SQL_INTERVAL_HOUR_TO_MINUTE* = - 90
-    SQL_INTERVAL_HOUR_TO_SECOND* = - 91
-    SQL_INTERVAL_MINUTE_TO_SECOND* = - 92
-
-
-when ODBCVER < 0x0300: 
-  const 
-    SQL_UNICODE* = - 95
-    SQL_UNICODE_VARCHAR* = - 96
-    SQL_UNICODE_LONGVARCHAR* = - 97
-    SQL_UNICODE_CHAR* = SQL_UNICODE
-else: 
-  # The previous definitions for SQL_UNICODE_ are historical and obsolete 
-  const 
-    SQL_UNICODE* = SQL_WCHAR
-    SQL_UNICODE_VARCHAR* = SQL_WVARCHAR
-    SQL_UNICODE_LONGVARCHAR* = SQL_WLONGVARCHAR
-    SQL_UNICODE_CHAR* = SQL_WCHAR
-const                         # C datatype to SQL datatype mapping 
-  SQL_C_CHAR* = SQL_CHAR
-  SQL_C_LONG* = SQL_INTEGER
-  SQL_C_SHORT* = SQL_SMALLINT
-  SQL_C_FLOAT* = SQL_REAL
-  SQL_C_DOUBLE* = SQL_DOUBLE
-  SQL_C_NUMERIC* = SQL_NUMERIC
-  SQL_C_DEFAULT* = 99
-  SQL_SIGNED_OFFSET* = - 20
-  SQL_UNSIGNED_OFFSET* = - 22
-  SQL_C_DATE* = SQL_DATE
-  SQL_C_TIME* = SQL_TIME
-  SQL_C_TIMESTAMP* = SQL_TIMESTAMP
-  SQL_C_TYPE_DATE* = SQL_TYPE_DATE
-  SQL_C_TYPE_TIME* = SQL_TYPE_TIME
-  SQL_C_TYPE_TIMESTAMP* = SQL_TYPE_TIMESTAMP
-  SQL_C_INTERVAL_YEAR* = SQL_INTERVAL_YEAR
-  SQL_C_INTERVAL_MONTH* = SQL_INTERVAL_MONTH
-  SQL_C_INTERVAL_DAY* = SQL_INTERVAL_DAY
-  SQL_C_INTERVAL_HOUR* = SQL_INTERVAL_HOUR
-  SQL_C_INTERVAL_MINUTE* = SQL_INTERVAL_MINUTE
-  SQL_C_INTERVAL_SECOND* = SQL_INTERVAL_SECOND
-  SQL_C_INTERVAL_YEAR_TO_MONTH* = SQL_INTERVAL_YEAR_TO_MONTH
-  SQL_C_INTERVAL_DAY_TO_HOUR* = SQL_INTERVAL_DAY_TO_HOUR
-  SQL_C_INTERVAL_DAY_TO_MINUTE* = SQL_INTERVAL_DAY_TO_MINUTE
-  SQL_C_INTERVAL_DAY_TO_SECOND* = SQL_INTERVAL_DAY_TO_SECOND
-  SQL_C_INTERVAL_HOUR_TO_MINUTE* = SQL_INTERVAL_HOUR_TO_MINUTE
-  SQL_C_INTERVAL_HOUR_TO_SECOND* = SQL_INTERVAL_HOUR_TO_SECOND
-  SQL_C_INTERVAL_MINUTE_TO_SECOND* = SQL_INTERVAL_MINUTE_TO_SECOND
-  SQL_C_BINARY* = SQL_BINARY
-  SQL_C_BIT* = SQL_BIT
-  SQL_C_SBIGINT* = SQL_BIGINT + SQL_SIGNED_OFFSET # SIGNED BIGINT
-  SQL_C_UBIGINT* = SQL_BIGINT + SQL_UNSIGNED_OFFSET # UNSIGNED BIGINT
-  SQL_C_TINYINT* = SQL_TINYINT
-  SQL_C_SLONG* = SQL_C_LONG + SQL_SIGNED_OFFSET # SIGNED INTEGER
-  SQL_C_SSHORT* = SQL_C_SHORT + SQL_SIGNED_OFFSET # SIGNED SMALLINT
-  SQL_C_STINYINT* = SQL_TINYINT + SQL_SIGNED_OFFSET # SIGNED TINYINT
-  SQL_C_ULONG* = SQL_C_LONG + SQL_UNSIGNED_OFFSET # UNSIGNED INTEGER
-  SQL_C_USHORT* = SQL_C_SHORT + SQL_UNSIGNED_OFFSET # UNSIGNED SMALLINT
-  SQL_C_UTINYINT* = SQL_TINYINT + SQL_UNSIGNED_OFFSET # UNSIGNED TINYINT
-  SQL_C_BOOKMARK* = SQL_C_ULONG # BOOKMARK
-  SQL_C_GUID* = SQL_GUID
-  SQL_TYPE_NULL* = 0
-
-when ODBCVER < 0x0300: 
-  const 
-    SQL_TYPE_MIN* = SQL_BIT
-    SQL_TYPE_MAX* = SQL_VARCHAR
-
-const 
-  SQL_C_VARBOOKMARK* = SQL_C_BINARY
-  SQL_API_SQLDESCRIBEPARAM* = 58
-  SQL_NO_TOTAL* = - 4
-
-type 
-  SQL_DATE_STRUCT* {.final, pure.} = object 
-    Year*: TSqlSmallInt
-    Month*: TSqlUSmallInt
-    Day*: TSqlUSmallInt
-
-  PSQL_DATE_STRUCT* = ptr SQL_DATE_STRUCT
-  SQL_TIME_STRUCT* {.final, pure.} = object 
-    Hour*: TSqlUSmallInt
-    Minute*: TSqlUSmallInt
-    Second*: TSqlUSmallInt
-
-  PSQL_TIME_STRUCT* = ptr SQL_TIME_STRUCT
-  SQL_TIMESTAMP_STRUCT* {.final, pure.} = object 
-    Year*: TSqlUSmallInt
-    Month*: TSqlUSmallInt
-    Day*: TSqlUSmallInt
-    Hour*: TSqlUSmallInt
-    Minute*: TSqlUSmallInt
-    Second*: TSqlUSmallInt
-    Fraction*: TSqlUInteger
-
-  PSQL_TIMESTAMP_STRUCT* = ptr SQL_TIMESTAMP_STRUCT
-
-const 
-  SQL_NAME_LEN* = 128
-  SQL_OV_ODBC3* = 3
-  SQL_OV_ODBC2* = 2
-  SQL_ATTR_ODBC_VERSION* = 200 # Options for SQLDriverConnect 
-  SQL_DRIVER_NOPROMPT* = 0
-  SQL_DRIVER_COMPLETE* = 1
-  SQL_DRIVER_PROMPT* = 2
-  SQL_DRIVER_COMPLETE_REQUIRED* = 3 
-  SQL_IS_POINTER* = (- 4)  # whether an attribute is a pointer or not 
-  SQL_IS_UINTEGER* = (- 5)
-  SQL_IS_INTEGER* = (- 6)
-  SQL_IS_USMALLINT* = (- 7)
-  SQL_IS_SMALLINT* = (- 8)    # SQLExtendedFetch "fFetchType" values 
-  SQL_FETCH_BOOKMARK* = 8
-  SQL_SCROLL_OPTIONS* = 44    # SQL_USE_BOOKMARKS options 
-  SQL_UB_OFF* = 0
-  SQL_UB_ON* = 1
-  SQL_UB_DEFAULT* = SQL_UB_OFF
-  SQL_UB_FIXED* = SQL_UB_ON
-  SQL_UB_VARIABLE* = 2        # SQL_SCROLL_OPTIONS masks 
-  SQL_SO_FORWARD_ONLY* = 0x00000001
-  SQL_SO_KEYSET_DRIVEN* = 0x00000002
-  SQL_SO_DYNAMIC* = 0x00000004
-  SQL_SO_MIXED* = 0x00000008
-  SQL_SO_STATIC* = 0x00000010
-  SQL_BOOKMARK_PERSISTENCE* = 82
-  SQL_STATIC_SENSITIVITY* = 83 # SQL_BOOKMARK_PERSISTENCE values 
-  SQL_BP_CLOSE* = 0x00000001
-  SQL_BP_DELETE* = 0x00000002
-  SQL_BP_DROP* = 0x00000004
-  SQL_BP_TRANSACTION* = 0x00000008
-  SQL_BP_UPDATE* = 0x00000010
-  SQL_BP_OTHER_HSTMT* = 0x00000020
-  SQL_BP_SCROLL* = 0x00000040
-  SQL_DYNAMIC_CURSOR_ATTRIBUTES1* = 144
-  SQL_DYNAMIC_CURSOR_ATTRIBUTES2* = 145
-  SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1* = 146
-  SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2* = 147
-  SQL_INDEX_KEYWORDS* = 148
-  SQL_INFO_SCHEMA_VIEWS* = 149
-  SQL_KEYSET_CURSOR_ATTRIBUTES1* = 150
-  SQL_KEYSET_CURSOR_ATTRIBUTES2* = 151
-  SQL_STATIC_CURSOR_ATTRIBUTES1* = 167
-  SQL_STATIC_CURSOR_ATTRIBUTES2* = 168 # supported SQLFetchScroll FetchOrientation's 
-  SQL_CA1_NEXT* = 1
-  SQL_CA1_ABSOLUTE* = 2
-  SQL_CA1_RELATIVE* = 4
-  SQL_CA1_BOOKMARK* = 8       # supported SQLSetPos LockType's 
-  SQL_CA1_LOCK_NO_CHANGE* = 0x00000040
-  SQL_CA1_LOCK_EXCLUSIVE* = 0x00000080
-  SQL_CA1_LOCK_UNLOCK* = 0x00000100 # supported SQLSetPos Operations 
-  SQL_CA1_POS_POSITION* = 0x00000200
-  SQL_CA1_POS_UPDATE* = 0x00000400
-  SQL_CA1_POS_DELETE* = 0x00000800
-  SQL_CA1_POS_REFRESH* = 0x00001000 # positioned updates and deletes 
-  SQL_CA1_POSITIONED_UPDATE* = 0x00002000
-  SQL_CA1_POSITIONED_DELETE* = 0x00004000
-  SQL_CA1_SELECT_FOR_UPDATE* = 0x00008000 # supported SQLBulkOperations operations 
-  SQL_CA1_BULK_ADD* = 0x00010000
-  SQL_CA1_BULK_UPDATE_BY_BOOKMARK* = 0x00020000
-  SQL_CA1_BULK_DELETE_BY_BOOKMARK* = 0x00040000
-  SQL_CA1_BULK_FETCH_BY_BOOKMARK* = 0x00080000 # supported values for SQL_ATTR_SCROLL_CONCURRENCY 
-  SQL_CA2_READ_ONLY_CONCURRENCY* = 1
-  SQL_CA2_LOCK_CONCURRENCY* = 2
-  SQL_CA2_OPT_ROWVER_CONCURRENCY* = 4
-  SQL_CA2_OPT_VALUES_CONCURRENCY* = 8 # sensitivity of the cursor to its own inserts, deletes, and updates 
-  SQL_CA2_SENSITIVITY_ADDITIONS* = 0x00000010
-  SQL_CA2_SENSITIVITY_DELETIONS* = 0x00000020
-  SQL_CA2_SENSITIVITY_UPDATES* = 0x00000040 #  semantics of SQL_ATTR_MAX_ROWS 
-  SQL_CA2_MAX_ROWS_SELECT* = 0x00000080
-  SQL_CA2_MAX_ROWS_INSERT* = 0x00000100
-  SQL_CA2_MAX_ROWS_DELETE* = 0x00000200
-  SQL_CA2_MAX_ROWS_UPDATE* = 0x00000400
-  SQL_CA2_MAX_ROWS_CATALOG* = 0x00000800
-  SQL_CA2_MAX_ROWS_AFFECTS_ALL* = (SQL_CA2_MAX_ROWS_SELECT or
-      SQL_CA2_MAX_ROWS_INSERT or SQL_CA2_MAX_ROWS_DELETE or
-      SQL_CA2_MAX_ROWS_UPDATE or SQL_CA2_MAX_ROWS_CATALOG) # semantics of 
-                                                           # SQL_DIAG_CURSOR_ROW_COUNT 
-  SQL_CA2_CRC_EXACT* = 0x00001000
-  SQL_CA2_CRC_APPROXIMATE* = 0x00002000 #  the kinds of positioned statements that can be simulated 
-  SQL_CA2_SIMULATE_NON_UNIQUE* = 0x00004000
-  SQL_CA2_SIMULATE_TRY_UNIQUE* = 0x00008000
-  SQL_CA2_SIMULATE_UNIQUE* = 0x00010000 #  Operations in SQLBulkOperations 
-  SQL_ADD* = 4
-  SQL_SETPOS_MAX_OPTION_VALUE* = SQL_ADD
-  SQL_UPDATE_BY_BOOKMARK* = 5
-  SQL_DELETE_BY_BOOKMARK* = 6
-  SQL_FETCH_BY_BOOKMARK* = 7  # Operations in SQLSetPos 
-  SQL_POSITION* = 0
-  SQL_REFRESH* = 1
-  SQL_UPDATE* = 2
-  SQL_DELETE* = 3             # Lock options in SQLSetPos 
-  SQL_LOCK_NO_CHANGE* = 0
-  SQL_LOCK_EXCLUSIVE* = 1
-  SQL_LOCK_UNLOCK* = 2        # SQLExtendedFetch "rgfRowStatus" element values 
-  SQL_ROW_SUCCESS* = 0
-  SQL_ROW_DELETED* = 1
-  SQL_ROW_UPDATED* = 2
-  SQL_ROW_NOROW* = 3
-  SQL_ROW_ADDED* = 4
-  SQL_ROW_ERROR* = 5
-  SQL_ROW_SUCCESS_WITH_INFO* = 6
-  SQL_ROW_PROCEED* = 0
-  SQL_ROW_IGNORE* = 1
-  SQL_MAX_DSN_LENGTH* = 32    # maximum data source name size 
-  SQL_MAX_OPTION_STRING_LENGTH* = 256
-  SQL_ODBC_CURSORS* = 110
-  SQL_ATTR_ODBC_CURSORS* = SQL_ODBC_CURSORS # SQL_ODBC_CURSORS options 
-  SQL_CUR_USE_IF_NEEDED* = 0
-  SQL_CUR_USE_ODBC* = 1
-  SQL_CUR_USE_DRIVER* = 2
-  SQL_CUR_DEFAULT* = SQL_CUR_USE_DRIVER
-  SQL_PARAM_TYPE_UNKNOWN* = 0
-  SQL_PARAM_INPUT* = 1
-  SQL_PARAM_INPUT_OUTPUT* = 2
-  SQL_RESULT_COL* = 3
-  SQL_PARAM_OUTPUT* = 4
-  SQL_RETURN_VALUE* = 5       # special length/indicator values 
-  SQL_NULL_DATA* = (- 1)
-  SQL_DATA_AT_EXEC* = (- 2)
-  SQL_SUCCESS* = 0
-  SQL_SUCCESS_WITH_INFO* = 1
-  SQL_NO_DATA* = 100
-  SQL_ERROR* = (- 1)
-  SQL_INVALID_HANDLE* = (- 2)
-  SQL_STILL_EXECUTING* = 2
-  SQL_NEED_DATA* = 99         # flags for null-terminated string 
-  SQL_NTS* = (- 3)            # maximum message length 
-  SQL_MAX_MESSAGE_LENGTH* = 512 # date/time length constants 
-  SQL_DATE_LEN* = 10
-  SQL_TIME_LEN* = 8           # add P+1 if precision is nonzero 
-  SQL_TIMESTAMP_LEN* = 19     # add P+1 if precision is nonzero 
-                              # handle type identifiers 
-  SQL_HANDLE_ENV* = 1
-  SQL_HANDLE_DBC* = 2
-  SQL_HANDLE_STMT* = 3
-  SQL_HANDLE_DESC* = 4        # environment attribute 
-  SQL_ATTR_OUTPUT_NTS* = 10001 # connection attributes 
-  SQL_ATTR_AUTO_IPD* = 10001
-  SQL_ATTR_METADATA_ID* = 10014 # statement attributes 
-  SQL_ATTR_APP_ROW_DESC* = 10010
-  SQL_ATTR_APP_PARAM_DESC* = 10011
-  SQL_ATTR_IMP_ROW_DESC* = 10012
-  SQL_ATTR_IMP_PARAM_DESC* = 10013
-  SQL_ATTR_CURSOR_SCROLLABLE* = (- 1)
-  SQL_ATTR_CURSOR_SENSITIVITY* = (- 2)
-  SQL_QUERY_TIMEOUT* = 0
-  SQL_MAX_ROWS* = 1
-  SQL_NOSCAN* = 2
-  SQL_MAX_LENGTH* = 3
-  SQL_ASYNC_ENABLE* = 4       # same as SQL_ATTR_ASYNC_ENABLE */
-  SQL_BIND_TYPE* = 5
-  SQL_CURSOR_TYPE* = 6
-  SQL_CONCURRENCY* = 7
-  SQL_KEYSET_SIZE* = 8
-  SQL_ROWSET_SIZE* = 9
-  SQL_SIMULATE_CURSOR* = 10
-  SQL_RETRIEVE_DATA* = 11
-  SQL_USE_BOOKMARKS* = 12
-  SQL_GET_BOOKMARK* = 13      #      GetStmtOption Only */
-  SQL_ROW_NUMBER* = 14        #      GetStmtOption Only */
-  SQL_ATTR_CURSOR_TYPE* = SQL_CURSOR_TYPE
-  SQL_ATTR_CONCURRENCY* = SQL_CONCURRENCY
-  SQL_ATTR_FETCH_BOOKMARK_PTR* = 16
-  SQL_ATTR_ROW_STATUS_PTR* = 25
-  SQL_ATTR_ROWS_FETCHED_PTR* = 26
-  SQL_AUTOCOMMIT* = 102
-  SQL_ATTR_AUTOCOMMIT* = SQL_AUTOCOMMIT
-  SQL_ATTR_ROW_NUMBER* = SQL_ROW_NUMBER
-  SQL_TXN_ISOLATION* = 108
-  SQL_ATTR_TXN_ISOLATION* = SQL_TXN_ISOLATION
-  SQL_ATTR_MAX_ROWS* = SQL_MAX_ROWS
-  SQL_ATTR_USE_BOOKMARKS* = SQL_USE_BOOKMARKS #* connection attributes */
-  SQL_ACCESS_MODE* = 101      #  SQL_AUTOCOMMIT              =102;
-  SQL_LOGIN_TIMEOUT* = 103
-  SQL_OPT_TRACE* = 104
-  SQL_OPT_TRACEFILE* = 105
-  SQL_TRANSLATE_DLL* = 106
-  SQL_TRANSLATE_OPTION* = 107 #  SQL_TXN_ISOLATION           =108;
-  SQL_CURRENT_QUALIFIER* = 109 #  SQL_ODBC_CURSORS            =110;
-  SQL_QUIET_MODE* = 111
-  SQL_PACKET_SIZE* = 112      #* connection attributes with new names */
-  SQL_ATTR_ACCESS_MODE* = SQL_ACCESS_MODE #  SQL_ATTR_AUTOCOMMIT                       =SQL_AUTOCOMMIT;
-  SQL_ATTR_CONNECTION_DEAD* = 1209 #* GetConnectAttr only */
-  SQL_ATTR_CONNECTION_TIMEOUT* = 113
-  SQL_ATTR_CURRENT_CATALOG* = SQL_CURRENT_QUALIFIER
-  SQL_ATTR_DISCONNECT_BEHAVIOR* = 114
-  SQL_ATTR_ENLIST_IN_DTC* = 1207
-  SQL_ATTR_ENLIST_IN_XA* = 1208
-  SQL_ATTR_LOGIN_TIMEOUT* = SQL_LOGIN_TIMEOUT #  SQL_ATTR_ODBC_CURSORS             =SQL_ODBC_CURSORS;
-  SQL_ATTR_PACKET_SIZE* = SQL_PACKET_SIZE
-  SQL_ATTR_QUIET_MODE* = SQL_QUIET_MODE
-  SQL_ATTR_TRACE* = SQL_OPT_TRACE
-  SQL_ATTR_TRACEFILE* = SQL_OPT_TRACEFILE
-  SQL_ATTR_TRANSLATE_LIB* = SQL_TRANSLATE_DLL
-  SQL_ATTR_TRANSLATE_OPTION* = SQL_TRANSLATE_OPTION #  SQL_ATTR_TXN_ISOLATION                  =SQL_TXN_ISOLATION;
-                                                    #* SQL_ACCESS_MODE options */
-  SQL_MODE_READ_WRITE* = 0
-  SQL_MODE_READ_ONLY* = 1
-  SQL_MODE_DEFAULT* = SQL_MODE_READ_WRITE #* SQL_AUTOCOMMIT options */
-  SQL_AUTOCOMMIT_OFF* = 0
-  SQL_AUTOCOMMIT_ON* = 1
-  SQL_AUTOCOMMIT_DEFAULT* = SQL_AUTOCOMMIT_ON # SQL_ATTR_CURSOR_SCROLLABLE values 
-  SQL_NONSCROLLABLE* = 0
-  SQL_SCROLLABLE* = 1         # SQL_CURSOR_TYPE options 
-  SQL_CURSOR_FORWARD_ONLY* = 0
-  SQL_CURSOR_KEYSET_DRIVEN* = 1
-  SQL_CURSOR_DYNAMIC* = 2
-  SQL_CURSOR_STATIC* = 3
-  SQL_CURSOR_TYPE_DEFAULT* = SQL_CURSOR_FORWARD_ONLY # Default value 
-                                                     # SQL_CONCURRENCY options 
-  SQL_CONCUR_READ_ONLY* = 1
-  SQL_CONCUR_LOCK* = 2
-  SQL_CONCUR_ROWVER* = 3
-  SQL_CONCUR_VALUES* = 4
-  SQL_CONCUR_DEFAULT* = SQL_CONCUR_READ_ONLY # Default value 
-                                             # identifiers of fields in the SQL descriptor 
-  SQL_DESC_COUNT* = 1001
-  SQL_DESC_TYPE* = 1002
-  SQL_DESC_LENGTH* = 1003
-  SQL_DESC_OCTET_LENGTH_PTR* = 1004
-  SQL_DESC_PRECISION* = 1005
-  SQL_DESC_SCALE* = 1006
-  SQL_DESC_DATETIME_INTERVAL_CODE* = 1007
-  SQL_DESC_NULLABLE* = 1008
-  SQL_DESC_INDICATOR_PTR* = 1009
-  SQL_DESC_DATA_PTR* = 1010
-  SQL_DESC_NAME* = 1011
-  SQL_DESC_UNNAMED* = 1012
-  SQL_DESC_OCTET_LENGTH* = 1013
-  SQL_DESC_ALLOC_TYPE* = 1099 # identifiers of fields in the diagnostics area 
-  SQL_DIAG_RETURNCODE* = 1
-  SQL_DIAG_NUMBER* = 2
-  SQL_DIAG_ROW_COUNT* = 3
-  SQL_DIAG_SQLSTATE* = 4
-  SQL_DIAG_NATIVE* = 5
-  SQL_DIAG_MESSAGE_TEXT* = 6
-  SQL_DIAG_DYNAMIC_FUNCTION* = 7
-  SQL_DIAG_CLASS_ORIGIN* = 8
-  SQL_DIAG_SUBCLASS_ORIGIN* = 9
-  SQL_DIAG_CONNECTION_NAME* = 10
-  SQL_DIAG_SERVER_NAME* = 11
-  SQL_DIAG_DYNAMIC_FUNCTION_CODE* = 12 # dynamic function codes 
-  SQL_DIAG_ALTER_TABLE* = 4
-  SQL_DIAG_CREATE_INDEX* = (- 1)
-  SQL_DIAG_CREATE_TABLE* = 77
-  SQL_DIAG_CREATE_VIEW* = 84
-  SQL_DIAG_DELETE_WHERE* = 19
-  SQL_DIAG_DROP_INDEX* = (- 2)
-  SQL_DIAG_DROP_TABLE* = 32
-  SQL_DIAG_DROP_VIEW* = 36
-  SQL_DIAG_DYNAMIC_DELETE_CURSOR* = 38
-  SQL_DIAG_DYNAMIC_UPDATE_CURSOR* = 81
-  SQL_DIAG_GRANT* = 48
-  SQL_DIAG_INSERT* = 50
-  SQL_DIAG_REVOKE* = 59
-  SQL_DIAG_SELECT_CURSOR* = 85
-  SQL_DIAG_UNKNOWN_STATEMENT* = 0
-  SQL_DIAG_UPDATE_WHERE* = 82 # Statement attribute values for cursor sensitivity 
-  SQL_UNSPECIFIED* = 0
-  SQL_INSENSITIVE* = 1
-  SQL_SENSITIVE* = 2          # GetTypeInfo() request for all data types 
-  SQL_ALL_TYPES* = 0          # Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() 
-  SQL_DEFAULT* = 99 # SQLGetData() code indicating that the application row descriptor
-                    #    specifies the data type 
-  SQL_ARD_TYPE* = (- 99)      # SQL date/time type subcodes 
-  SQL_CODE_DATE* = 1
-  SQL_CODE_TIME* = 2
-  SQL_CODE_TIMESTAMP* = 3     # CLI option values 
-  SQL_FALSE* = 0
-  SQL_TRUE* = 1               # values of NULLABLE field in descriptor 
-  SQL_NO_NULLS* = 0
-  SQL_NULLABLE* = 1 # Value returned by SQLGetTypeInfo() to denote that it is
-                    # not known whether or not a data type supports null values. 
-  SQL_NULLABLE_UNKNOWN* = 2 
-  SQL_CLOSE* = 0
-  SQL_DROP* = 1
-  SQL_UNBIND* = 2
-  SQL_RESET_PARAMS* = 3 # Codes used for FetchOrientation in SQLFetchScroll(),
-                        #   and in SQLDataSources() 
-  SQL_FETCH_NEXT* = 1
-  SQL_FETCH_FIRST* = 2
-  SQL_FETCH_FIRST_USER* = 31
-  SQL_FETCH_FIRST_SYSTEM* = 32 # Other codes used for FetchOrientation in SQLFetchScroll() 
-  SQL_FETCH_LAST* = 3
-  SQL_FETCH_PRIOR* = 4
-  SQL_FETCH_ABSOLUTE* = 5
-  SQL_FETCH_RELATIVE* = 6   
-  SQL_NULL_HENV* = TSqlHEnv(nil)
-  SQL_NULL_HDBC* = TSqlHDBC(nil)
-  SQL_NULL_HSTMT* = TSqlHStmt(nil)
-  SQL_NULL_HDESC* = TSqlHDesc(nil) #* null handle used in place of parent handle when allocating HENV */
-  SQL_NULL_HANDLE* = TSqlHandle(nil) #* Values that may appear in the result set of SQLSpecialColumns() */
-  SQL_SCOPE_CURROW* = 0
-  SQL_SCOPE_TRANSACTION* = 1
-  SQL_SCOPE_SESSION* = 2      #* Column types and scopes in SQLSpecialColumns.  */
-  SQL_BEST_ROWID* = 1
-  SQL_ROWVER* = 2             
-  SQL_ROW_IDENTIFIER* = 1     #* Reserved values for UNIQUE argument of SQLStatistics() */
-  SQL_INDEX_UNIQUE* = 0
-  SQL_INDEX_ALL* = 1          #* Reserved values for RESERVED argument of SQLStatistics() */
-  SQL_QUICK* = 0
-  SQL_ENSURE* = 1             #* Values that may appear in the result set of SQLStatistics() */
-  SQL_TABLE_STAT* = 0
-  SQL_INDEX_CLUSTERED* = 1
-  SQL_INDEX_HASHED* = 2
-  SQL_INDEX_OTHER* = 3 
-  SQL_SCROLL_CONCURRENCY* = 43
-  SQL_TXN_CAPABLE* = 46
-  SQL_TRANSACTION_CAPABLE* = SQL_TXN_CAPABLE
-  SQL_USER_NAME* = 47
-  SQL_TXN_ISOLATION_OPTION* = 72
-  SQL_TRANSACTION_ISOLATION_OPTION* = SQL_TXN_ISOLATION_OPTION 
-  SQL_OJ_CAPABILITIES* = 115
-  SQL_OUTER_JOIN_CAPABILITIES* = SQL_OJ_CAPABILITIES
-  SQL_XOPEN_CLI_YEAR* = 10000
-  SQL_CURSOR_SENSITIVITY* = 10001
-  SQL_DESCRIBE_PARAMETER* = 10002
-  SQL_CATALOG_NAME* = 10003
-  SQL_COLLATION_SEQ* = 10004
-  SQL_MAX_IDENTIFIER_LEN* = 10005
-  SQL_MAXIMUM_IDENTIFIER_LENGTH* = SQL_MAX_IDENTIFIER_LEN
-  SQL_SCCO_READ_ONLY* = 1
-  SQL_SCCO_LOCK* = 2
-  SQL_SCCO_OPT_ROWVER* = 4
-  SQL_SCCO_OPT_VALUES* = 8    #* SQL_TXN_CAPABLE values */
-  SQL_TC_NONE* = 0
-  SQL_TC_DML* = 1
-  SQL_TC_ALL* = 2
-  SQL_TC_DDL_COMMIT* = 3
-  SQL_TC_DDL_IGNORE* = 4      #* SQL_TXN_ISOLATION_OPTION bitmasks */
-  SQL_TXN_READ_UNCOMMITTED* = 1
-  SQL_TRANSACTION_READ_UNCOMMITTED* = SQL_TXN_READ_UNCOMMITTED
-  SQL_TXN_READ_COMMITTED* = 2
-  SQL_TRANSACTION_READ_COMMITTED* = SQL_TXN_READ_COMMITTED
-  SQL_TXN_REPEATABLE_READ* = 4
-  SQL_TRANSACTION_REPEATABLE_READ* = SQL_TXN_REPEATABLE_READ
-  SQL_TXN_SERIALIZABLE* = 8
-  SQL_TRANSACTION_SERIALIZABLE* = SQL_TXN_SERIALIZABLE 
-  SQL_SS_ADDITIONS* = 1
-  SQL_SS_DELETIONS* = 2
-  SQL_SS_UPDATES* = 4         # SQLColAttributes defines 
-  SQL_COLUMN_COUNT* = 0
-  SQL_COLUMN_NAME* = 1
-  SQL_COLUMN_TYPE* = 2
-  SQL_COLUMN_LENGTH* = 3
-  SQL_COLUMN_PRECISION* = 4
-  SQL_COLUMN_SCALE* = 5
-  SQL_COLUMN_DISPLAY_SIZE* = 6
-  SQL_COLUMN_NULLABLE* = 7
-  SQL_COLUMN_UNSIGNED* = 8
-  SQL_COLUMN_MONEY* = 9
-  SQL_COLUMN_UPDATABLE* = 10
-  SQL_COLUMN_AUTO_INCREMENT* = 11
-  SQL_COLUMN_CASE_SENSITIVE* = 12
-  SQL_COLUMN_SEARCHABLE* = 13
-  SQL_COLUMN_TYPE_NAME* = 14
-  SQL_COLUMN_TABLE_NAME* = 15
-  SQL_COLUMN_OWNER_NAME* = 16
-  SQL_COLUMN_QUALIFIER_NAME* = 17
-  SQL_COLUMN_LABEL* = 18
-  SQL_COLATT_OPT_MAX* = SQL_COLUMN_LABEL
-  SQL_COLUMN_DRIVER_START* = 1000
-  SQL_DESC_ARRAY_SIZE* = 20
-  SQL_DESC_ARRAY_STATUS_PTR* = 21
-  SQL_DESC_AUTO_UNIQUE_VALUE* = SQL_COLUMN_AUTO_INCREMENT
-  SQL_DESC_BASE_COLUMN_NAME* = 22
-  SQL_DESC_BASE_TABLE_NAME* = 23
-  SQL_DESC_BIND_OFFSET_PTR* = 24
-  SQL_DESC_BIND_TYPE* = 25
-  SQL_DESC_CASE_SENSITIVE* = SQL_COLUMN_CASE_SENSITIVE
-  SQL_DESC_CATALOG_NAME* = SQL_COLUMN_QUALIFIER_NAME
-  SQL_DESC_CONCISE_TYPE* = SQL_COLUMN_TYPE
-  SQL_DESC_DATETIME_INTERVAL_PRECISION* = 26
-  SQL_DESC_DISPLAY_SIZE* = SQL_COLUMN_DISPLAY_SIZE
-  SQL_DESC_FIXED_PREC_SCALE* = SQL_COLUMN_MONEY
-  SQL_DESC_LABEL* = SQL_COLUMN_LABEL
-  SQL_DESC_LITERAL_PREFIX* = 27
-  SQL_DESC_LITERAL_SUFFIX* = 28
-  SQL_DESC_LOCAL_TYPE_NAME* = 29
-  SQL_DESC_MAXIMUM_SCALE* = 30
-  SQL_DESC_MINIMUM_SCALE* = 31
-  SQL_DESC_NUM_PREC_RADIX* = 32
-  SQL_DESC_PARAMETER_TYPE* = 33
-  SQL_DESC_ROWS_PROCESSED_PTR* = 34
-  SQL_DESC_SCHEMA_NAME* = SQL_COLUMN_OWNER_NAME
-  SQL_DESC_SEARCHABLE* = SQL_COLUMN_SEARCHABLE
-  SQL_DESC_TYPE_NAME* = SQL_COLUMN_TYPE_NAME
-  SQL_DESC_TABLE_NAME* = SQL_COLUMN_TABLE_NAME
-  SQL_DESC_UNSIGNED* = SQL_COLUMN_UNSIGNED
-  SQL_DESC_UPDATABLE* = SQL_COLUMN_UPDATABLE #* SQLEndTran() options */
-  SQL_COMMIT* = 0
-  SQL_ROLLBACK* = 1
-  SQL_ATTR_ROW_ARRAY_SIZE* = 27 #* SQLConfigDataSource() options */
-  ODBC_ADD_DSN* = 1
-  ODBC_CONFIG_DSN* = 2
-  ODBC_REMOVE_DSN* = 3
-  ODBC_ADD_SYS_DSN* = 4
-  ODBC_CONFIG_SYS_DSN* = 5
-  ODBC_REMOVE_SYS_DSN* = 6
-
-proc SQLAllocHandle*(HandleType: TSqlSmallInt, InputHandle: TSqlHandle, 
-                     OutputHandlePtr: var TSqlHandle): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLSetEnvAttr*(EnvironmentHandle: TSqlHEnv, Attribute: TSqlInteger, 
-                    Value: TSqlPointer, StringLength: TSqlInteger): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLGetEnvAttr*(EnvironmentHandle: TSqlHEnv, Attribute: TSqlInteger, 
-                    Value: TSqlPointer, BufferLength: TSqlInteger, 
-                    StringLength: PSQLINTEGER): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLFreeHandle*(HandleType: TSqlSmallInt, Handle: TSqlHandle): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLGetDiagRec*(HandleType: TSqlSmallInt, Handle: TSqlHandle, 
-                    RecNumber: TSqlSmallInt, Sqlstate: PSQLCHAR, 
-                    NativeError: var TSqlInteger, MessageText: PSQLCHAR, 
-                    BufferLength: TSqlSmallInt, TextLength: var TSqlSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLGetDiagField*(HandleType: TSqlSmallInt, Handle: TSqlHandle, 
-                      RecNumber: TSqlSmallInt, DiagIdentifier: TSqlSmallInt, 
-                      DiagInfoPtr: TSqlPointer, BufferLength: TSqlSmallInt, 
-                      StringLengthPtr: var TSqlSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLConnect*(ConnectionHandle: TSqlHDBC, ServerName: PSQLCHAR, 
-                 NameLength1: TSqlSmallInt, UserName: PSQLCHAR, 
-                 NameLength2: TSqlSmallInt, Authentication: PSQLCHAR, 
-                 NameLength3: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLDisconnect*(ConnectionHandle: TSqlHDBC): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLDriverConnect*(hdbc: TSqlHDBC, hwnd: TSqlHWND, szCsin: cstring, 
-                       szCLen: TSqlSmallInt, szCsout: cstring, 
-                       cbCSMax: TSqlSmallInt, cbCsOut: var TSqlSmallInt, 
-                       f: TSqlUSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLBrowseConnect*(hdbc: TSqlHDBC, szConnStrIn: PSQLCHAR, 
-                       cbConnStrIn: TSqlSmallInt, szConnStrOut: PSQLCHAR, 
-                       cbConnStrOutMax: TSqlSmallInt, 
-                       cbConnStrOut: var TSqlSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLExecDirect*(StatementHandle: TSqlHStmt, StatementText: PSQLCHAR, 
-                    TextLength: TSqlInteger): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLPrepare*(StatementHandle: TSqlHStmt, StatementText: PSQLCHAR, 
-                 TextLength: TSqlInteger): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLCloseCursor*(StatementHandle: TSqlHStmt): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLExecute*(StatementHandle: TSqlHStmt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLFetch*(StatementHandle: TSqlHStmt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLNumResultCols*(StatementHandle: TSqlHStmt, ColumnCount: var TSqlSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLDescribeCol*(StatementHandle: TSqlHStmt, ColumnNumber: TSqlUSmallInt, 
-                     ColumnName: PSQLCHAR, BufferLength: TSqlSmallInt, 
-                     NameLength: var TSqlSmallInt, DataType: var TSqlSmallInt, 
-                     ColumnSize: var TSqlUInteger, 
-                     DecimalDigits: var TSqlSmallInt, Nullable: var TSqlSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLFetchScroll*(StatementHandle: TSqlHStmt, FetchOrientation: TSqlSmallInt, 
-                     FetchOffset: TSqlInteger): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLExtendedFetch*(hstmt: TSqlHStmt, fFetchType: TSqlUSmallInt, 
-                       irow: TSqlInteger, pcrow: PSQLUINTEGER, 
-                       rgfRowStatus: PSQLUSMALLINT): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLGetData*(StatementHandle: TSqlHStmt, ColumnNumber: TSqlUSmallInt, 
-                 TargetType: TSqlSmallInt, TargetValue: TSqlPointer, 
-                 BufferLength: TSqlInteger, StrLen_or_Ind: PSQLINTEGER): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLSetStmtAttr*(StatementHandle: TSqlHStmt, Attribute: TSqlInteger, 
-                     Value: TSqlPointer, StringLength: TSqlInteger): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLGetStmtAttr*(StatementHandle: TSqlHStmt, Attribute: TSqlInteger, 
-                     Value: TSqlPointer, BufferLength: TSqlInteger, 
-                     StringLength: PSQLINTEGER): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLGetInfo*(ConnectionHandle: TSqlHDBC, InfoType: TSqlUSmallInt, 
-                 InfoValue: TSqlPointer, BufferLength: TSqlSmallInt, 
-                 StringLength: PSQLSMALLINT): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLBulkOperations*(StatementHandle: TSqlHStmt, Operation: TSqlSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLPutData*(StatementHandle: TSqlHStmt, Data: TSqlPointer, 
-                 StrLen_or_Ind: TSqlInteger): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLBindCol*(StatementHandle: TSqlHStmt, ColumnNumber: TSqlUSmallInt, 
-                 TargetType: TSqlSmallInt, TargetValue: TSqlPointer, 
-                 BufferLength: TSqlInteger, StrLen_or_Ind: PSQLINTEGER): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLSetPos*(hstmt: TSqlHStmt, irow: TSqlUSmallInt, fOption: TSqlUSmallInt, 
-                fLock: TSqlUSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLDataSources*(EnvironmentHandle: TSqlHEnv, Direction: TSqlUSmallInt, 
-                     ServerName: PSQLCHAR, BufferLength1: TSqlSmallInt, 
-                     NameLength1: PSQLSMALLINT, Description: PSQLCHAR, 
-                     BufferLength2: TSqlSmallInt, NameLength2: PSQLSMALLINT): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLDrivers*(EnvironmentHandle: TSqlHEnv, Direction: TSqlUSmallInt, 
-                 DriverDescription: PSQLCHAR, BufferLength1: TSqlSmallInt, 
-                 DescriptionLength1: PSQLSMALLINT, DriverAttributes: PSQLCHAR, 
-                 BufferLength2: TSqlSmallInt, AttributesLength2: PSQLSMALLINT): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLSetConnectAttr*(ConnectionHandle: TSqlHDBC, Attribute: TSqlInteger, 
-                        Value: TSqlPointer, StringLength: TSqlInteger): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLGetCursorName*(StatementHandle: TSqlHStmt, CursorName: PSQLCHAR, 
-                       BufferLength: TSqlSmallInt, NameLength: PSQLSMALLINT): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLSetCursorName*(StatementHandle: TSqlHStmt, CursorName: PSQLCHAR, 
-                       NameLength: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLRowCount*(StatementHandle: TSqlHStmt, RowCount: var TSqlInteger): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLBindParameter*(hstmt: TSqlHStmt, ipar: TSqlUSmallInt, 
-                       fParamType: TSqlSmallInt, fCType: TSqlSmallInt, 
-                       fSqlType: TSqlSmallInt, cbColDef: TSqlUInteger, 
-                       ibScale: TSqlSmallInt, rgbValue: TSqlPointer, 
-                       cbValueMax: TSqlInteger, pcbValue: PSQLINTEGER): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLFreeStmt*(StatementHandle: TSqlHStmt, Option: TSqlUSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLColAttribute*(StatementHandle: TSqlHStmt, ColumnNumber: TSqlUSmallInt, 
-                      FieldIdentifier: TSqlUSmallInt, 
-                      CharacterAttribute: PSQLCHAR, BufferLength: TSqlSmallInt, 
-                      StringLength: PSQLSMALLINT, 
-                      NumericAttribute: TSqlPointer): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLEndTran*(HandleType: TSqlSmallInt, Handle: TSqlHandle, 
-                 CompletionType: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLTables*(hstmt: TSqlHStmt, szTableQualifier: PSQLCHAR, 
-                cbTableQualifier: TSqlSmallInt, szTableOwner: PSQLCHAR, 
-                cbTableOwner: TSqlSmallInt, szTableName: PSQLCHAR, 
-                cbTableName: TSqlSmallInt, szTableType: PSQLCHAR, 
-                cbTableType: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLColumns*(hstmt: TSqlHStmt, szTableQualifier: PSQLCHAR, 
-                 cbTableQualifier: TSqlSmallInt, szTableOwner: PSQLCHAR, 
-                 cbTableOwner: TSqlSmallInt, szTableName: PSQLCHAR, 
-                 cbTableName: TSqlSmallInt, szColumnName: PSQLCHAR, 
-                 cbColumnName: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, importc.}
-proc SQLSpecialColumns*(StatementHandle: TSqlHStmt, IdentifierType: TSqlUSmallInt, 
-                        CatalogName: PSQLCHAR, NameLength1: TSqlSmallInt, 
-                        SchemaName: PSQLCHAR, NameLength2: TSqlSmallInt, 
-                        TableName: PSQLCHAR, NameLength3: TSqlSmallInt, 
-                        Scope: TSqlUSmallInt, 
-                        Nullable: TSqlUSmallInt): TSqlSmallInt{.
-    dynlib: odbclib, importc.}
-proc SQLProcedures*(hstmt: TSqlHStmt, szTableQualifier: PSQLCHAR, 
-                    cbTableQualifier: TSqlSmallInt, szTableOwner: PSQLCHAR, 
-                    cbTableOwner: TSqlSmallInt, szTableName: PSQLCHAR, 
-                    cbTableName: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLPrimaryKeys*(hstmt: TSqlHStmt, CatalogName: PSQLCHAR, 
-                     NameLength1: TSqlSmallInt, SchemaName: PSQLCHAR, 
-                     NameLength2: TSqlSmallInt, TableName: PSQLCHAR, 
-                     NameLength3: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLProcedureColumns*(hstmt: TSqlHStmt, CatalogName: PSQLCHAR, 
-                          NameLength1: TSqlSmallInt, SchemaName: PSQLCHAR, 
-                          NameLength2: TSqlSmallInt, ProcName: PSQLCHAR, 
-                          NameLength3: TSqlSmallInt, ColumnName: PSQLCHAR, 
-                          NameLength4: TSqlSmallInt): TSqlSmallInt{.dynlib: odbclib, 
-    importc.}
-proc SQLStatistics*(hstmt: TSqlHStmt, CatalogName: PSQLCHAR, 
-                    NameLength1: TSqlSmallInt, SchemaName: PSQLCHAR, 
-                    NameLength2: TSqlSmallInt, TableName: PSQLCHAR, 
-                    NameLength3: TSqlSmallInt, Unique: TSqlUSmallInt, 
-                    Reserved: TSqlUSmallInt): TSqlSmallInt {.
-                    dynlib: odbclib, importc.}
-
-{.pop.}
diff --git a/lib/wrappers/opengl/gl.nim b/lib/wrappers/opengl/gl.nim
deleted file mode 100755
index 79f09b544..000000000
--- a/lib/wrappers/opengl/gl.nim
+++ /dev/null
@@ -1,1432 +0,0 @@
-#
-#
-#  Adaption of the delphi3d.net OpenGL units to FreePascal
-#  Sebastian Guenther (sg@freepascal.org) in 2002
-#  These units are free to use
-#
-#******************************************************************************
-# Converted to Delphi by Tom Nuydens (tom@delphi3d.net)                        
-# For the latest updates, visit Delphi3D: http://www.delphi3d.net              
-#******************************************************************************
-
-when defined(windows):
-  {.push callconv: stdcall.}
-else:
-  {.push callconv: cdecl.}
-
-when defined(windows):
-  const dllname* = "opengl32.dll"
-elif defined(macosx):
-  const dllname* = "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"
-else:
-  const dllname* = "libGL.so.1"
-
-type 
-  PGLenum* = ptr TGLenum
-  PGLboolean* = ptr TGLboolean
-  PGLbitfield* = ptr TGLbitfield
-  TGLbyte* = int8
-  PGLbyte* = ptr TGlbyte
-  PGLshort* = ptr TGLshort
-  PGLint* = ptr TGLint
-  PGLsizei* = ptr TGLsizei
-  PGLubyte* = ptr TGLubyte
-  PGLushort* = ptr TGLushort
-  PGLuint* = ptr TGLuint
-  PGLfloat* = ptr TGLfloat
-  PGLclampf* = ptr TGLclampf
-  PGLdouble* = ptr TGLdouble
-  PGLclampd* = ptr TGLclampd
-  PGLvoid* = Pointer
-  PPGLvoid* = ptr PGLvoid
-  TGLenum* = cint
-  TGLboolean* = bool
-  TGLbitfield* = cint
-  TGLshort* = int16
-  TGLint* = cint
-  TGLsizei* = int
-  TGLubyte* = int8
-  TGLushort* = int16
-  TGLuint* = cint
-  TGLfloat* = float32
-  TGLclampf* = float32
-  TGLdouble* = float
-  TGLclampd* = float
-
-const                         # Version
-  GL_VERSION_1_1* = 1         # AccumOp
-  constGL_ACCUM* = 0x00000100
-  GL_LOAD* = 0x00000101
-  GL_RETURN* = 0x00000102
-  GL_MULT* = 0x00000103
-  GL_ADD* = 0x00000104        # AlphaFunction
-  GL_NEVER* = 0x00000200
-  GL_LESS* = 0x00000201
-  GL_EQUAL* = 0x00000202
-  GL_LEQUAL* = 0x00000203
-  GL_GREATER* = 0x00000204
-  GL_NOTEQUAL* = 0x00000205
-  GL_GEQUAL* = 0x00000206
-  GL_ALWAYS* = 0x00000207     # AttribMask
-  GL_CURRENT_BIT* = 0x00000001
-  GL_POINT_BIT* = 0x00000002
-  GL_LINE_BIT* = 0x00000004
-  GL_POLYGON_BIT* = 0x00000008
-  GL_POLYGON_STIPPLE_BIT* = 0x00000010
-  GL_PIXEL_MODE_BIT* = 0x00000020
-  GL_LIGHTING_BIT* = 0x00000040
-  GL_FOG_BIT* = 0x00000080
-  GL_DEPTH_BUFFER_BIT* = 0x00000100
-  GL_ACCUM_BUFFER_BIT* = 0x00000200
-  GL_STENCIL_BUFFER_BIT* = 0x00000400
-  GL_VIEWPORT_BIT* = 0x00000800
-  GL_TRANSFORM_BIT* = 0x00001000
-  GL_ENABLE_BIT* = 0x00002000
-  GL_COLOR_BUFFER_BIT* = 0x00004000
-  GL_HINT_BIT* = 0x00008000
-  GL_EVAL_BIT* = 0x00010000
-  GL_LIST_BIT* = 0x00020000
-  GL_TEXTURE_BIT* = 0x00040000
-  GL_SCISSOR_BIT* = 0x00080000
-  GL_ALL_ATTRIB_BITS* = 0x000FFFFF # BeginMode
-  GL_POINTS* = 0x00000000
-  GL_LINES* = 0x00000001
-  GL_LINE_LOOP* = 0x00000002
-  GL_LINE_STRIP* = 0x00000003
-  GL_TRIANGLES* = 0x00000004
-  GL_TRIANGLE_STRIP* = 0x00000005
-  GL_TRIANGLE_FAN* = 0x00000006
-  GL_QUADS* = 0x00000007
-  GL_QUAD_STRIP* = 0x00000008
-  GL_POLYGON* = 0x00000009    # BlendingFactorDest
-  GL_ZERO* = 0
-  GL_ONE* = 1
-  GL_SRC_COLOR* = 0x00000300
-  GL_ONE_MINUS_SRC_COLOR* = 0x00000301
-  GL_SRC_ALPHA* = 0x00000302
-  GL_ONE_MINUS_SRC_ALPHA* = 0x00000303
-  GL_DST_ALPHA* = 0x00000304
-  GL_ONE_MINUS_DST_ALPHA* = 0x00000305 # BlendingFactorSrc
-                                       #      GL_ZERO
-                                       #      GL_ONE
-  GL_DST_COLOR* = 0x00000306
-  GL_ONE_MINUS_DST_COLOR* = 0x00000307
-  GL_SRC_ALPHA_SATURATE* = 0x00000308 #      GL_SRC_ALPHA
-                                      #      GL_ONE_MINUS_SRC_ALPHA
-                                      #      GL_DST_ALPHA
-                                      #      GL_ONE_MINUS_DST_ALPHA
-                                      # Boolean
-  GL_TRUE* = 1
-  GL_FALSE* = 0               # ClearBufferMask
-                              #      GL_COLOR_BUFFER_BIT
-                              #      GL_ACCUM_BUFFER_BIT
-                              #      GL_STENCIL_BUFFER_BIT
-                              #      GL_DEPTH_BUFFER_BIT
-                              # ClientArrayType
-                              #      GL_VERTEX_ARRAY
-                              #      GL_NORMAL_ARRAY
-                              #      GL_COLOR_ARRAY
-                              #      GL_INDEX_ARRAY
-                              #      GL_TEXTURE_COORD_ARRAY
-                              #      GL_EDGE_FLAG_ARRAY
-                              # ClipPlaneName
-  GL_CLIP_PLANE0* = 0x00003000
-  GL_CLIP_PLANE1* = 0x00003001
-  GL_CLIP_PLANE2* = 0x00003002
-  GL_CLIP_PLANE3* = 0x00003003
-  GL_CLIP_PLANE4* = 0x00003004
-  GL_CLIP_PLANE5* = 0x00003005 # ColorMaterialFace
-                               #      GL_FRONT
-                               #      GL_BACK
-                               #      GL_FRONT_AND_BACK
-                               # ColorMaterialParameter
-                               #      GL_AMBIENT
-                               #      GL_DIFFUSE
-                               #      GL_SPECULAR
-                               #      GL_EMISSION
-                               #      GL_AMBIENT_AND_DIFFUSE
-                               # ColorPointerType
-                               #      GL_BYTE
-                               #      GL_UNSIGNED_BYTE
-                               #      GL_SHORT
-                               #      GL_UNSIGNED_SHORT
-                               #      GL_INT
-                               #      GL_UNSIGNED_INT
-                               #      GL_FLOAT
-                               #      GL_DOUBLE
-                               # CullFaceMode
-                               #      GL_FRONT
-                               #      GL_BACK
-                               #      GL_FRONT_AND_BACK
-                               # DataType
-  GL_BYTE* = 0x00001400
-  GL_UNSIGNED_BYTE* = 0x00001401
-  GL_SHORT* = 0x00001402
-  GL_UNSIGNED_SHORT* = 0x00001403
-  GL_INT* = 0x00001404
-  GL_UNSIGNED_INT* = 0x00001405
-  GL_FLOAT* = 0x00001406
-  GL_2_BYTES* = 0x00001407
-  GL_3_BYTES* = 0x00001408
-  GL_4_BYTES* = 0x00001409
-  GL_DOUBLE* = 0x0000140A     # DepthFunction
-                              #      GL_NEVER
-                              #      GL_LESS
-                              #      GL_EQUAL
-                              #      GL_LEQUAL
-                              #      GL_GREATER
-                              #      GL_NOTEQUAL
-                              #      GL_GEQUAL
-                              #      GL_ALWAYS
-                              # DrawBufferMode
-  GL_NONE* = 0
-  GL_FRONT_LEFT* = 0x00000400
-  GL_FRONT_RIGHT* = 0x00000401
-  GL_BACK_LEFT* = 0x00000402
-  GL_BACK_RIGHT* = 0x00000403
-  GL_FRONT* = 0x00000404
-  GL_BACK* = 0x00000405
-  GL_LEFT* = 0x00000406
-  GL_RIGHT* = 0x00000407
-  GL_FRONT_AND_BACK* = 0x00000408
-  GL_AUX0* = 0x00000409
-  GL_AUX1* = 0x0000040A
-  GL_AUX2* = 0x0000040B
-  GL_AUX3* = 0x0000040C       # Enable
-                              #      GL_FOG
-                              #      GL_LIGHTING
-                              #      GL_TEXTURE_1D
-                              #      GL_TEXTURE_2D
-                              #      GL_LINE_STIPPLE
-                              #      GL_POLYGON_STIPPLE
-                              #      GL_CULL_FACE
-                              #      GL_ALPHA_TEST
-                              #      GL_BLEND
-                              #      GL_INDEX_LOGIC_OP
-                              #      GL_COLOR_LOGIC_OP
-                              #      GL_DITHER
-                              #      GL_STENCIL_TEST
-                              #      GL_DEPTH_TEST
-                              #      GL_CLIP_PLANE0
-                              #      GL_CLIP_PLANE1
-                              #      GL_CLIP_PLANE2
-                              #      GL_CLIP_PLANE3
-                              #      GL_CLIP_PLANE4
-                              #      GL_CLIP_PLANE5
-                              #      GL_LIGHT0
-                              #      GL_LIGHT1
-                              #      GL_LIGHT2
-                              #      GL_LIGHT3
-                              #      GL_LIGHT4
-                              #      GL_LIGHT5
-                              #      GL_LIGHT6
-                              #      GL_LIGHT7
-                              #      GL_TEXTURE_GEN_S
-                              #      GL_TEXTURE_GEN_T
-                              #      GL_TEXTURE_GEN_R
-                              #      GL_TEXTURE_GEN_Q
-                              #      GL_MAP1_VERTEX_3
-                              #      GL_MAP1_VERTEX_4
-                              #      GL_MAP1_COLOR_4
-                              #      GL_MAP1_INDEX
-                              #      GL_MAP1_NORMAL
-                              #      GL_MAP1_TEXTURE_COORD_1
-                              #      GL_MAP1_TEXTURE_COORD_2
-                              #      GL_MAP1_TEXTURE_COORD_3
-                              #      GL_MAP1_TEXTURE_COORD_4
-                              #      GL_MAP2_VERTEX_3
-                              #      GL_MAP2_VERTEX_4
-                              #      GL_MAP2_COLOR_4
-                              #      GL_MAP2_INDEX
-                              #      GL_MAP2_NORMAL
-                              #      GL_MAP2_TEXTURE_COORD_1
-                              #      GL_MAP2_TEXTURE_COORD_2
-                              #      GL_MAP2_TEXTURE_COORD_3
-                              #      GL_MAP2_TEXTURE_COORD_4
-                              #      GL_POINT_SMOOTH
-                              #      GL_LINE_SMOOTH
-                              #      GL_POLYGON_SMOOTH
-                              #      GL_SCISSOR_TEST
-                              #      GL_COLOR_MATERIAL
-                              #      GL_NORMALIZE
-                              #      GL_AUTO_NORMAL
-                              #      GL_VERTEX_ARRAY
-                              #      GL_NORMAL_ARRAY
-                              #      GL_COLOR_ARRAY
-                              #      GL_INDEX_ARRAY
-                              #      GL_TEXTURE_COORD_ARRAY
-                              #      GL_EDGE_FLAG_ARRAY
-                              #      GL_POLYGON_OFFSET_POINT
-                              #      GL_POLYGON_OFFSET_LINE
-                              #      GL_POLYGON_OFFSET_FILL
-                              # ErrorCode
-  GL_NO_ERROR* = 0
-  GL_INVALID_ENUM* = 0x00000500
-  GL_INVALID_VALUE* = 0x00000501
-  GL_INVALID_OPERATION* = 0x00000502
-  GL_STACK_OVERFLOW* = 0x00000503
-  GL_STACK_UNDERFLOW* = 0x00000504
-  GL_OUT_OF_MEMORY* = 0x00000505 # FeedBackMode
-  GL_2D* = 0x00000600
-  GL_3D* = 0x00000601
-  GL_3D_COLOR* = 0x00000602
-  GL_3D_COLOR_TEXTURE* = 0x00000603
-  GL_4D_COLOR_TEXTURE* = 0x00000604 # FeedBackToken
-  GL_PASS_THROUGH_TOKEN* = 0x00000700
-  GL_POINT_TOKEN* = 0x00000701
-  GL_LINE_TOKEN* = 0x00000702
-  GL_POLYGON_TOKEN* = 0x00000703
-  GL_BITMAP_TOKEN* = 0x00000704
-  GL_DRAW_PIXEL_TOKEN* = 0x00000705
-  GL_COPY_PIXEL_TOKEN* = 0x00000706
-  GL_LINE_RESET_TOKEN* = 0x00000707 # FogMode
-                                    #      GL_LINEAR
-  GL_EXP* = 0x00000800
-  GL_EXP2* = 0x00000801       # FogParameter
-                              #      GL_FOG_COLOR
-                              #      GL_FOG_DENSITY
-                              #      GL_FOG_END
-                              #      GL_FOG_INDEX
-                              #      GL_FOG_MODE
-                              #      GL_FOG_START
-                              # FrontFaceDirection
-  GL_CW* = 0x00000900
-  GL_CCW* = 0x00000901        # GetMapTarget
-  GL_COEFF* = 0x00000A00
-  GL_ORDER* = 0x00000A01
-  GL_DOMAIN* = 0x00000A02     # GetPixelMap
-                              #      GL_PIXEL_MAP_I_TO_I
-                              #      GL_PIXEL_MAP_S_TO_S
-                              #      GL_PIXEL_MAP_I_TO_R
-                              #      GL_PIXEL_MAP_I_TO_G
-                              #      GL_PIXEL_MAP_I_TO_B
-                              #      GL_PIXEL_MAP_I_TO_A
-                              #      GL_PIXEL_MAP_R_TO_R
-                              #      GL_PIXEL_MAP_G_TO_G
-                              #      GL_PIXEL_MAP_B_TO_B
-                              #      GL_PIXEL_MAP_A_TO_A
-                              # GetPointerTarget
-                              #      GL_VERTEX_ARRAY_POINTER
-                              #      GL_NORMAL_ARRAY_POINTER
-                              #      GL_COLOR_ARRAY_POINTER
-                              #      GL_INDEX_ARRAY_POINTER
-                              #      GL_TEXTURE_COORD_ARRAY_POINTER
-                              #      GL_EDGE_FLAG_ARRAY_POINTER
-                              # GetTarget
-  GL_CURRENT_COLOR* = 0x00000B00
-  GL_CURRENT_INDEX* = 0x00000B01
-  GL_CURRENT_NORMAL* = 0x00000B02
-  GL_CURRENT_TEXTURE_COORDS* = 0x00000B03
-  GL_CURRENT_RASTER_COLOR* = 0x00000B04
-  GL_CURRENT_RASTER_INDEX* = 0x00000B05
-  GL_CURRENT_RASTER_TEXTURE_COORDS* = 0x00000B06
-  GL_CURRENT_RASTER_POSITION* = 0x00000B07
-  GL_CURRENT_RASTER_POSITION_VALID* = 0x00000B08
-  GL_CURRENT_RASTER_DISTANCE* = 0x00000B09
-  GL_POINT_SMOOTH* = 0x00000B10
-  constGL_POINT_SIZE* = 0x00000B11
-  GL_POINT_SIZE_RANGE* = 0x00000B12
-  GL_POINT_SIZE_GRANULARITY* = 0x00000B13
-  GL_LINE_SMOOTH* = 0x00000B20
-  constGL_LINE_WIDTH* = 0x00000B21
-  GL_LINE_WIDTH_RANGE* = 0x00000B22
-  GL_LINE_WIDTH_GRANULARITY* = 0x00000B23
-  constGL_LINE_STIPPLE* = 0x00000B24
-  GL_LINE_STIPPLE_PATTERN* = 0x00000B25
-  GL_LINE_STIPPLE_REPEAT* = 0x00000B26
-  GL_LIST_MODE* = 0x00000B30
-  GL_MAX_LIST_NESTING* = 0x00000B31
-  constGL_LIST_BASE* = 0x00000B32
-  GL_LIST_INDEX* = 0x00000B33
-  constGL_POLYGON_MODE* = 0x00000B40
-  GL_POLYGON_SMOOTH* = 0x00000B41
-  constGL_POLYGON_STIPPLE* = 0x00000B42
-  constGL_EDGE_FLAG* = 0x00000B43
-  constGL_CULL_FACE* = 0x00000B44
-  GL_CULL_FACE_MODE* = 0x00000B45
-  constGL_FRONT_FACE* = 0x00000B46
-  GL_LIGHTING* = 0x00000B50
-  GL_LIGHT_MODEL_LOCAL_VIEWER* = 0x00000B51
-  GL_LIGHT_MODEL_TWO_SIDE* = 0x00000B52
-  GL_LIGHT_MODEL_AMBIENT* = 0x00000B53
-  constGL_SHADE_MODEL* = 0x00000B54
-  GL_COLOR_MATERIAL_FACE* = 0x00000B55
-  GL_COLOR_MATERIAL_PARAMETER* = 0x00000B56
-  constGL_COLOR_MATERIAL* = 0x00000B57
-  GL_FOG* = 0x00000B60
-  GL_FOG_INDEX* = 0x00000B61
-  GL_FOG_DENSITY* = 0x00000B62
-  GL_FOG_START* = 0x00000B63
-  GL_FOG_END* = 0x00000B64
-  GL_FOG_MODE* = 0x00000B65
-  GL_FOG_COLOR* = 0x00000B66
-  constGL_DEPTH_RANGE* = 0x00000B70
-  GL_DEPTH_TEST* = 0x00000B71
-  GL_DEPTH_WRITEMASK* = 0x00000B72
-  GL_DEPTH_CLEAR_VALUE* = 0x00000B73
-  constGL_DEPTH_FUNC* = 0x00000B74
-  GL_ACCUM_CLEAR_VALUE* = 0x00000B80
-  GL_STENCIL_TEST* = 0x00000B90
-  GL_STENCIL_CLEAR_VALUE* = 0x00000B91
-  constGL_STENCIL_FUNC* = 0x00000B92
-  GL_STENCIL_VALUE_MASK* = 0x00000B93
-  GL_STENCIL_FAIL* = 0x00000B94
-  GL_STENCIL_PASS_DEPTH_FAIL* = 0x00000B95
-  GL_STENCIL_PASS_DEPTH_PASS* = 0x00000B96
-  GL_STENCIL_REF* = 0x00000B97
-  GL_STENCIL_WRITEMASK* = 0x00000B98
-  constGL_MATRIX_MODE* = 0x00000BA0
-  GL_NORMALIZE* = 0x00000BA1
-  constGL_VIEWPORT* = 0x00000BA2
-  GL_MODELVIEW_STACK_DEPTH* = 0x00000BA3
-  GL_PROJECTION_STACK_DEPTH* = 0x00000BA4
-  GL_TEXTURE_STACK_DEPTH* = 0x00000BA5
-  GL_MODELVIEW_MATRIX* = 0x00000BA6
-  GL_PROJECTION_MATRIX* = 0x00000BA7
-  GL_TEXTURE_MATRIX* = 0x00000BA8
-  GL_ATTRIB_STACK_DEPTH* = 0x00000BB0
-  GL_CLIENT_ATTRIB_STACK_DEPTH* = 0x00000BB1
-  GL_ALPHA_TEST* = 0x00000BC0
-  GL_ALPHA_TEST_FUNC* = 0x00000BC1
-  GL_ALPHA_TEST_REF* = 0x00000BC2
-  GL_DITHER* = 0x00000BD0
-  GL_BLEND_DST* = 0x00000BE0
-  GL_BLEND_SRC* = 0x00000BE1
-  GL_BLEND* = 0x00000BE2
-  GL_LOGIC_OP_MODE* = 0x00000BF0
-  GL_INDEX_LOGIC_OP* = 0x00000BF1
-  GL_COLOR_LOGIC_OP* = 0x00000BF2
-  GL_AUX_BUFFERS* = 0x00000C00
-  constGL_DRAW_BUFFER* = 0x00000C01
-  constGL_READ_BUFFER* = 0x00000C02
-  GL_SCISSOR_BOX* = 0x00000C10
-  GL_SCISSOR_TEST* = 0x00000C11
-  GL_INDEX_CLEAR_VALUE* = 0x00000C20
-  GL_INDEX_WRITEMASK* = 0x00000C21
-  GL_COLOR_CLEAR_VALUE* = 0x00000C22
-  GL_COLOR_WRITEMASK* = 0x00000C23
-  GL_INDEX_MODE* = 0x00000C30
-  GL_RGBA_MODE* = 0x00000C31
-  GL_DOUBLEBUFFER* = 0x00000C32
-  GL_STEREO* = 0x00000C33
-  constGL_RENDER_MODE* = 0x00000C40
-  GL_PERSPECTIVE_CORRECTION_HINT* = 0x00000C50
-  GL_POINT_SMOOTH_HINT* = 0x00000C51
-  GL_LINE_SMOOTH_HINT* = 0x00000C52
-  GL_POLYGON_SMOOTH_HINT* = 0x00000C53
-  GL_FOG_HINT* = 0x00000C54
-  GL_TEXTURE_GEN_S* = 0x00000C60
-  GL_TEXTURE_GEN_T* = 0x00000C61
-  GL_TEXTURE_GEN_R* = 0x00000C62
-  GL_TEXTURE_GEN_Q* = 0x00000C63
-  GL_PIXEL_MAP_I_TO_I* = 0x00000C70
-  GL_PIXEL_MAP_S_TO_S* = 0x00000C71
-  GL_PIXEL_MAP_I_TO_R* = 0x00000C72
-  GL_PIXEL_MAP_I_TO_G* = 0x00000C73
-  GL_PIXEL_MAP_I_TO_B* = 0x00000C74
-  GL_PIXEL_MAP_I_TO_A* = 0x00000C75
-  GL_PIXEL_MAP_R_TO_R* = 0x00000C76
-  GL_PIXEL_MAP_G_TO_G* = 0x00000C77
-  GL_PIXEL_MAP_B_TO_B* = 0x00000C78
-  GL_PIXEL_MAP_A_TO_A* = 0x00000C79
-  GL_PIXEL_MAP_I_TO_I_SIZE* = 0x00000CB0
-  GL_PIXEL_MAP_S_TO_S_SIZE* = 0x00000CB1
-  GL_PIXEL_MAP_I_TO_R_SIZE* = 0x00000CB2
-  GL_PIXEL_MAP_I_TO_G_SIZE* = 0x00000CB3
-  GL_PIXEL_MAP_I_TO_B_SIZE* = 0x00000CB4
-  GL_PIXEL_MAP_I_TO_A_SIZE* = 0x00000CB5
-  GL_PIXEL_MAP_R_TO_R_SIZE* = 0x00000CB6
-  GL_PIXEL_MAP_G_TO_G_SIZE* = 0x00000CB7
-  GL_PIXEL_MAP_B_TO_B_SIZE* = 0x00000CB8
-  GL_PIXEL_MAP_A_TO_A_SIZE* = 0x00000CB9
-  GL_UNPACK_SWAP_BYTES* = 0x00000CF0
-  GL_UNPACK_LSB_FIRST* = 0x00000CF1
-  GL_UNPACK_ROW_LENGTH* = 0x00000CF2
-  GL_UNPACK_SKIP_ROWS* = 0x00000CF3
-  GL_UNPACK_SKIP_PIXELS* = 0x00000CF4
-  GL_UNPACK_ALIGNMENT* = 0x00000CF5
-  GL_PACK_SWAP_BYTES* = 0x00000D00
-  GL_PACK_LSB_FIRST* = 0x00000D01
-  GL_PACK_ROW_LENGTH* = 0x00000D02
-  GL_PACK_SKIP_ROWS* = 0x00000D03
-  GL_PACK_SKIP_PIXELS* = 0x00000D04
-  GL_PACK_ALIGNMENT* = 0x00000D05
-  GL_MAP_COLOR* = 0x00000D10
-  GL_MAP_STENCIL* = 0x00000D11
-  GL_INDEX_SHIFT* = 0x00000D12
-  GL_INDEX_OFFSET* = 0x00000D13
-  GL_RED_SCALE* = 0x00000D14
-  GL_RED_BIAS* = 0x00000D15
-  GL_ZOOM_X* = 0x00000D16
-  GL_ZOOM_Y* = 0x00000D17
-  GL_GREEN_SCALE* = 0x00000D18
-  GL_GREEN_BIAS* = 0x00000D19
-  GL_BLUE_SCALE* = 0x00000D1A
-  GL_BLUE_BIAS* = 0x00000D1B
-  GL_ALPHA_SCALE* = 0x00000D1C
-  GL_ALPHA_BIAS* = 0x00000D1D
-  GL_DEPTH_SCALE* = 0x00000D1E
-  GL_DEPTH_BIAS* = 0x00000D1F
-  GL_MAX_EVAL_ORDER* = 0x00000D30
-  GL_MAX_LIGHTS* = 0x00000D31
-  GL_MAX_CLIP_PLANES* = 0x00000D32
-  GL_MAX_TEXTURE_SIZE* = 0x00000D33
-  GL_MAX_PIXEL_MAP_TABLE* = 0x00000D34
-  GL_MAX_ATTRIB_STACK_DEPTH* = 0x00000D35
-  GL_MAX_MODELVIEW_STACK_DEPTH* = 0x00000D36
-  GL_MAX_NAME_STACK_DEPTH* = 0x00000D37
-  GL_MAX_PROJECTION_STACK_DEPTH* = 0x00000D38
-  GL_MAX_TEXTURE_STACK_DEPTH* = 0x00000D39
-  GL_MAX_VIEWPORT_DIMS* = 0x00000D3A
-  GL_MAX_CLIENT_ATTRIB_STACK_DEPTH* = 0x00000D3B
-  GL_SUBPIXEL_BITS* = 0x00000D50
-  GL_INDEX_BITS* = 0x00000D51
-  GL_RED_BITS* = 0x00000D52
-  GL_GREEN_BITS* = 0x00000D53
-  GL_BLUE_BITS* = 0x00000D54
-  GL_ALPHA_BITS* = 0x00000D55
-  GL_DEPTH_BITS* = 0x00000D56
-  GL_STENCIL_BITS* = 0x00000D57
-  GL_ACCUM_RED_BITS* = 0x00000D58
-  GL_ACCUM_GREEN_BITS* = 0x00000D59
-  GL_ACCUM_BLUE_BITS* = 0x00000D5A
-  GL_ACCUM_ALPHA_BITS* = 0x00000D5B
-  GL_NAME_STACK_DEPTH* = 0x00000D70
-  GL_AUTO_NORMAL* = 0x00000D80
-  GL_MAP1_COLOR_4* = 0x00000D90
-  GL_MAP1_INDEX* = 0x00000D91
-  GL_MAP1_NORMAL* = 0x00000D92
-  GL_MAP1_TEXTURE_COORD_1* = 0x00000D93
-  GL_MAP1_TEXTURE_COORD_2* = 0x00000D94
-  GL_MAP1_TEXTURE_COORD_3* = 0x00000D95
-  GL_MAP1_TEXTURE_COORD_4* = 0x00000D96
-  GL_MAP1_VERTEX_3* = 0x00000D97
-  GL_MAP1_VERTEX_4* = 0x00000D98
-  GL_MAP2_COLOR_4* = 0x00000DB0
-  GL_MAP2_INDEX* = 0x00000DB1
-  GL_MAP2_NORMAL* = 0x00000DB2
-  GL_MAP2_TEXTURE_COORD_1* = 0x00000DB3
-  GL_MAP2_TEXTURE_COORD_2* = 0x00000DB4
-  GL_MAP2_TEXTURE_COORD_3* = 0x00000DB5
-  GL_MAP2_TEXTURE_COORD_4* = 0x00000DB6
-  GL_MAP2_VERTEX_3* = 0x00000DB7
-  GL_MAP2_VERTEX_4* = 0x00000DB8
-  GL_MAP1_GRID_DOMAIN* = 0x00000DD0
-  GL_MAP1_GRID_SEGMENTS* = 0x00000DD1
-  GL_MAP2_GRID_DOMAIN* = 0x00000DD2
-  GL_MAP2_GRID_SEGMENTS* = 0x00000DD3
-  GL_TEXTURE_1D* = 0x00000DE0
-  GL_TEXTURE_2D* = 0x00000DE1
-  GL_FEEDBACK_BUFFER_POINTER* = 0x00000DF0
-  GL_FEEDBACK_BUFFER_SIZE* = 0x00000DF1
-  GL_FEEDBACK_BUFFER_TYPE* = 0x00000DF2
-  GL_SELECTION_BUFFER_POINTER* = 0x00000DF3
-  GL_SELECTION_BUFFER_SIZE* = 0x00000DF4 #      GL_TEXTURE_BINDING_1D
-                                         #      GL_TEXTURE_BINDING_2D
-                                         #      GL_VERTEX_ARRAY
-                                         #      GL_NORMAL_ARRAY
-                                         #      GL_COLOR_ARRAY
-                                         #      GL_INDEX_ARRAY
-                                         #      GL_TEXTURE_COORD_ARRAY
-                                         #      GL_EDGE_FLAG_ARRAY
-                                         #      GL_VERTEX_ARRAY_SIZE
-                                         #      GL_VERTEX_ARRAY_TYPE
-                                         #      GL_VERTEX_ARRAY_STRIDE
-                                         #      GL_NORMAL_ARRAY_TYPE
-                                         #      GL_NORMAL_ARRAY_STRIDE
-                                         #      GL_COLOR_ARRAY_SIZE
-                                         #      GL_COLOR_ARRAY_TYPE
-                                         #      GL_COLOR_ARRAY_STRIDE
-                                         #      GL_INDEX_ARRAY_TYPE
-                                         #      GL_INDEX_ARRAY_STRIDE
-                                         #      GL_TEXTURE_COORD_ARRAY_SIZE
-                                         #      GL_TEXTURE_COORD_ARRAY_TYPE
-                                         #      GL_TEXTURE_COORD_ARRAY_STRIDE
-                                         #      GL_EDGE_FLAG_ARRAY_STRIDE
-                                         #      GL_POLYGON_OFFSET_FACTOR
-                                         #      GL_POLYGON_OFFSET_UNITS
-                                         # GetTextureParameter
-                                         #      GL_TEXTURE_MAG_FILTER
-                                         #      GL_TEXTURE_MIN_FILTER
-                                         #      GL_TEXTURE_WRAP_S
-                                         #      GL_TEXTURE_WRAP_T
-  GL_TEXTURE_WIDTH* = 0x00001000
-  GL_TEXTURE_HEIGHT* = 0x00001001
-  GL_TEXTURE_INTERNAL_FORMAT* = 0x00001003
-  GL_TEXTURE_BORDER_COLOR* = 0x00001004
-  GL_TEXTURE_BORDER* = 0x00001005 #      GL_TEXTURE_RED_SIZE
-                                  #      GL_TEXTURE_GREEN_SIZE
-                                  #      GL_TEXTURE_BLUE_SIZE
-                                  #      GL_TEXTURE_ALPHA_SIZE
-                                  #      GL_TEXTURE_LUMINANCE_SIZE
-                                  #      GL_TEXTURE_INTENSITY_SIZE
-                                  #      GL_TEXTURE_PRIORITY
-                                  #      GL_TEXTURE_RESIDENT
-                                  # HintMode
-  GL_DONT_CARE* = 0x00001100
-  GL_FASTEST* = 0x00001101
-  GL_NICEST* = 0x00001102     # HintTarget
-                              #      GL_PERSPECTIVE_CORRECTION_HINT
-                              #      GL_POINT_SMOOTH_HINT
-                              #      GL_LINE_SMOOTH_HINT
-                              #      GL_POLYGON_SMOOTH_HINT
-                              #      GL_FOG_HINT
-                              # IndexPointerType
-                              #      GL_SHORT
-                              #      GL_INT
-                              #      GL_FLOAT
-                              #      GL_DOUBLE
-                              # LightModelParameter
-                              #      GL_LIGHT_MODEL_AMBIENT
-                              #      GL_LIGHT_MODEL_LOCAL_VIEWER
-                              #      GL_LIGHT_MODEL_TWO_SIDE
-                              # LightName
-  GL_LIGHT0* = 0x00004000
-  GL_LIGHT1* = 0x00004001
-  GL_LIGHT2* = 0x00004002
-  GL_LIGHT3* = 0x00004003
-  GL_LIGHT4* = 0x00004004
-  GL_LIGHT5* = 0x00004005
-  GL_LIGHT6* = 0x00004006
-  GL_LIGHT7* = 0x00004007     # LightParameter
-  GL_AMBIENT* = 0x00001200
-  GL_DIFFUSE* = 0x00001201
-  GL_SPECULAR* = 0x00001202
-  GL_POSITION* = 0x00001203
-  GL_SPOT_DIRECTION* = 0x00001204
-  GL_SPOT_EXPONENT* = 0x00001205
-  GL_SPOT_CUTOFF* = 0x00001206
-  GL_CONSTANT_ATTENUATION* = 0x00001207
-  GL_LINEAR_ATTENUATION* = 0x00001208
-  GL_QUADRATIC_ATTENUATION* = 0x00001209 # InterleavedArrays
-                                         #      GL_V2F
-                                         #      GL_V3F
-                                         #      GL_C4UB_V2F
-                                         #      GL_C4UB_V3F
-                                         #      GL_C3F_V3F
-                                         #      GL_N3F_V3F
-                                         #      GL_C4F_N3F_V3F
-                                         #      GL_T2F_V3F
-                                         #      GL_T4F_V4F
-                                         #      GL_T2F_C4UB_V3F
-                                         #      GL_T2F_C3F_V3F
-                                         #      GL_T2F_N3F_V3F
-                                         #      GL_T2F_C4F_N3F_V3F
-                                         #      GL_T4F_C4F_N3F_V4F
-                                         # ListMode
-  GL_COMPILE* = 0x00001300
-  GL_COMPILE_AND_EXECUTE* = 0x00001301 # ListNameType
-                                       #      GL_BYTE
-                                       #      GL_UNSIGNED_BYTE
-                                       #      GL_SHORT
-                                       #      GL_UNSIGNED_SHORT
-                                       #      GL_INT
-                                       #      GL_UNSIGNED_INT
-                                       #      GL_FLOAT
-                                       #      GL_2_BYTES
-                                       #      GL_3_BYTES
-                                       #      GL_4_BYTES
-                                       # LogicOp
-  constGL_CLEAR* = 0x00001500
-  GL_AND* = 0x00001501
-  GL_AND_REVERSE* = 0x00001502
-  GL_COPY* = 0x00001503
-  GL_AND_INVERTED* = 0x00001504
-  GL_NOOP* = 0x00001505
-  GL_XOR* = 0x00001506
-  GL_OR* = 0x00001507
-  GL_NOR* = 0x00001508
-  GL_EQUIV* = 0x00001509
-  GL_INVERT* = 0x0000150A
-  GL_OR_REVERSE* = 0x0000150B
-  GL_COPY_INVERTED* = 0x0000150C
-  GL_OR_INVERTED* = 0x0000150D
-  GL_NAND* = 0x0000150E
-  GL_SET* = 0x0000150F        # MapTarget
-                              #      GL_MAP1_COLOR_4
-                              #      GL_MAP1_INDEX
-                              #      GL_MAP1_NORMAL
-                              #      GL_MAP1_TEXTURE_COORD_1
-                              #      GL_MAP1_TEXTURE_COORD_2
-                              #      GL_MAP1_TEXTURE_COORD_3
-                              #      GL_MAP1_TEXTURE_COORD_4
-                              #      GL_MAP1_VERTEX_3
-                              #      GL_MAP1_VERTEX_4
-                              #      GL_MAP2_COLOR_4
-                              #      GL_MAP2_INDEX
-                              #      GL_MAP2_NORMAL
-                              #      GL_MAP2_TEXTURE_COORD_1
-                              #      GL_MAP2_TEXTURE_COORD_2
-                              #      GL_MAP2_TEXTURE_COORD_3
-                              #      GL_MAP2_TEXTURE_COORD_4
-                              #      GL_MAP2_VERTEX_3
-                              #      GL_MAP2_VERTEX_4
-                              # MaterialFace
-                              #      GL_FRONT
-                              #      GL_BACK
-                              #      GL_FRONT_AND_BACK
-                              # MaterialParameter
-  GL_EMISSION* = 0x00001600
-  GL_SHININESS* = 0x00001601
-  GL_AMBIENT_AND_DIFFUSE* = 0x00001602
-  GL_COLOR_INDEXES* = 0x00001603 #      GL_AMBIENT
-                                 #      GL_DIFFUSE
-                                 #      GL_SPECULAR
-                                 # MatrixMode
-  GL_MODELVIEW* = 0x00001700
-  GL_PROJECTION* = 0x00001701
-  GL_TEXTURE* = 0x00001702    # MeshMode1
-                              #      GL_POINT
-                              #      GL_LINE
-                              # MeshMode2
-                              #      GL_POINT
-                              #      GL_LINE
-                              #      GL_FILL
-                              # NormalPointerType
-                              #      GL_BYTE
-                              #      GL_SHORT
-                              #      GL_INT
-                              #      GL_FLOAT
-                              #      GL_DOUBLE
-                              # PixelCopyType
-  GL_COLOR* = 0x00001800
-  GL_DEPTH* = 0x00001801
-  GL_STENCIL* = 0x00001802    # PixelFormat
-  GL_COLOR_INDEX* = 0x00001900
-  GL_STENCIL_INDEX* = 0x00001901
-  GL_DEPTH_COMPONENT* = 0x00001902
-  GL_RED* = 0x00001903
-  GL_GREEN* = 0x00001904
-  GL_BLUE* = 0x00001905
-  GL_ALPHA* = 0x00001906
-  GL_RGB* = 0x00001907
-  GL_RGBA* = 0x00001908
-  GL_LUMINANCE* = 0x00001909
-  GL_LUMINANCE_ALPHA* = 0x0000190A # PixelMap
-                                   #      GL_PIXEL_MAP_I_TO_I
-                                   #      GL_PIXEL_MAP_S_TO_S
-                                   #      GL_PIXEL_MAP_I_TO_R
-                                   #      GL_PIXEL_MAP_I_TO_G
-                                   #      GL_PIXEL_MAP_I_TO_B
-                                   #      GL_PIXEL_MAP_I_TO_A
-                                   #      GL_PIXEL_MAP_R_TO_R
-                                   #      GL_PIXEL_MAP_G_TO_G
-                                   #      GL_PIXEL_MAP_B_TO_B
-                                   #      GL_PIXEL_MAP_A_TO_A
-                                   # PixelStore
-                                   #      GL_UNPACK_SWAP_BYTES
-                                   #      GL_UNPACK_LSB_FIRST
-                                   #      GL_UNPACK_ROW_LENGTH
-                                   #      GL_UNPACK_SKIP_ROWS
-                                   #      GL_UNPACK_SKIP_PIXELS
-                                   #      GL_UNPACK_ALIGNMENT
-                                   #      GL_PACK_SWAP_BYTES
-                                   #      GL_PACK_LSB_FIRST
-                                   #      GL_PACK_ROW_LENGTH
-                                   #      GL_PACK_SKIP_ROWS
-                                   #      GL_PACK_SKIP_PIXELS
-                                   #      GL_PACK_ALIGNMENT
-                                   # PixelTransfer
-                                   #      GL_MAP_COLOR
-                                   #      GL_MAP_STENCIL
-                                   #      GL_INDEX_SHIFT
-                                   #      GL_INDEX_OFFSET
-                                   #      GL_RED_SCALE
-                                   #      GL_RED_BIAS
-                                   #      GL_GREEN_SCALE
-                                   #      GL_GREEN_BIAS
-                                   #      GL_BLUE_SCALE
-                                   #      GL_BLUE_BIAS
-                                   #      GL_ALPHA_SCALE
-                                   #      GL_ALPHA_BIAS
-                                   #      GL_DEPTH_SCALE
-                                   #      GL_DEPTH_BIAS
-                                   # PixelType
-  constGL_BITMAP* = 0x00001A00     
-  GL_POINT* = 0x00001B00
-  GL_LINE* = 0x00001B01
-  GL_FILL* = 0x00001B02       # ReadBufferMode
-                              #      GL_FRONT_LEFT
-                              #      GL_FRONT_RIGHT
-                              #      GL_BACK_LEFT
-                              #      GL_BACK_RIGHT
-                              #      GL_FRONT
-                              #      GL_BACK
-                              #      GL_LEFT
-                              #      GL_RIGHT
-                              #      GL_AUX0
-                              #      GL_AUX1
-                              #      GL_AUX2
-                              #      GL_AUX3
-                              # RenderingMode
-  GL_RENDER* = 0x00001C00
-  GL_FEEDBACK* = 0x00001C01
-  GL_SELECT* = 0x00001C02     # ShadingModel
-  GL_FLAT* = 0x00001D00
-  GL_SMOOTH* = 0x00001D01     # StencilFunction
-                              #      GL_NEVER
-                              #      GL_LESS
-                              #      GL_EQUAL
-                              #      GL_LEQUAL
-                              #      GL_GREATER
-                              #      GL_NOTEQUAL
-                              #      GL_GEQUAL
-                              #      GL_ALWAYS
-                              # StencilOp
-                              #      GL_ZERO
-  GL_KEEP* = 0x00001E00
-  GL_REPLACE* = 0x00001E01
-  GL_INCR* = 0x00001E02
-  GL_DECR* = 0x00001E03       #      GL_INVERT
-                              # StringName
-  GL_VENDOR* = 0x00001F00
-  GL_RENDERER* = 0x00001F01
-  GL_VERSION* = 0x00001F02
-  GL_EXTENSIONS* = 0x00001F03 # TextureCoordName
-  GL_S* = 0x00002000
-  GL_T* = 0x00002001
-  GL_R* = 0x00002002
-  GL_Q* = 0x00002003          # TexCoordPointerType
-                              #      GL_SHORT
-                              #      GL_INT
-                              #      GL_FLOAT
-                              #      GL_DOUBLE
-                              # TextureEnvMode
-  GL_MODULATE* = 0x00002100
-  GL_DECAL* = 0x00002101      #      GL_BLEND
-                              #      GL_REPLACE
-                              # TextureEnvParameter
-  GL_TEXTURE_ENV_MODE* = 0x00002200
-  GL_TEXTURE_ENV_COLOR* = 0x00002201 # TextureEnvTarget
-  GL_TEXTURE_ENV* = 0x00002300 # TextureGenMode
-  GL_EYE_LINEAR* = 0x00002400
-  GL_OBJECT_LINEAR* = 0x00002401
-  GL_SPHERE_MAP* = 0x00002402 # TextureGenParameter
-  GL_TEXTURE_GEN_MODE* = 0x00002500
-  GL_OBJECT_PLANE* = 0x00002501
-  GL_EYE_PLANE* = 0x00002502  # TextureMagFilter
-  GL_NEAREST* = 0x00002600
-  GL_LINEAR* = 0x00002601     # TextureMinFilter
-                              #      GL_NEAREST
-                              #      GL_LINEAR
-  GL_NEAREST_MIPMAP_NEAREST* = 0x00002700
-  GL_LINEAR_MIPMAP_NEAREST* = 0x00002701
-  GL_NEAREST_MIPMAP_LINEAR* = 0x00002702
-  GL_LINEAR_MIPMAP_LINEAR* = 0x00002703 # TextureParameterName
-  GL_TEXTURE_MAG_FILTER* = 0x00002800
-  GL_TEXTURE_MIN_FILTER* = 0x00002801
-  GL_TEXTURE_WRAP_S* = 0x00002802
-  GL_TEXTURE_WRAP_T* = 0x00002803 #      GL_TEXTURE_BORDER_COLOR
-                                  #      GL_TEXTURE_PRIORITY
-                                  # TextureTarget
-                                  #      GL_TEXTURE_1D
-                                  #      GL_TEXTURE_2D
-                                  #      GL_PROXY_TEXTURE_1D
-                                  #      GL_PROXY_TEXTURE_2D
-                                  # TextureWrapMode
-  GL_CLAMP* = 0x00002900
-  GL_REPEAT* = 0x00002901     # VertexPointerType
-                              #      GL_SHORT
-                              #      GL_INT
-                              #      GL_FLOAT
-                              #      GL_DOUBLE
-                              # ClientAttribMask
-  GL_CLIENT_PIXEL_STORE_BIT* = 0x00000001
-  GL_CLIENT_VERTEX_ARRAY_BIT* = 0x00000002
-  GL_CLIENT_ALL_ATTRIB_BITS* = 0xFFFFFFFF # polygon_offset
-  GL_POLYGON_OFFSET_FACTOR* = 0x00008038
-  GL_POLYGON_OFFSET_UNITS* = 0x00002A00
-  GL_POLYGON_OFFSET_POINT* = 0x00002A01
-  GL_POLYGON_OFFSET_LINE* = 0x00002A02
-  GL_POLYGON_OFFSET_FILL* = 0x00008037 # texture
-  GL_ALPHA4* = 0x0000803B
-  GL_ALPHA8* = 0x0000803C
-  GL_ALPHA12* = 0x0000803D
-  GL_ALPHA16* = 0x0000803E
-  GL_LUMINANCE4* = 0x0000803F
-  GL_LUMINANCE8* = 0x00008040
-  GL_LUMINANCE12* = 0x00008041
-  GL_LUMINANCE16* = 0x00008042
-  GL_LUMINANCE4_ALPHA4* = 0x00008043
-  GL_LUMINANCE6_ALPHA2* = 0x00008044
-  GL_LUMINANCE8_ALPHA8* = 0x00008045
-  GL_LUMINANCE12_ALPHA4* = 0x00008046
-  GL_LUMINANCE12_ALPHA12* = 0x00008047
-  GL_LUMINANCE16_ALPHA16* = 0x00008048
-  GL_INTENSITY* = 0x00008049
-  GL_INTENSITY4* = 0x0000804A
-  GL_INTENSITY8* = 0x0000804B
-  GL_INTENSITY12* = 0x0000804C
-  GL_INTENSITY16* = 0x0000804D
-  GL_R3_G3_B2* = 0x00002A10
-  GL_RGB4* = 0x0000804F
-  GL_RGB5* = 0x00008050
-  GL_RGB8* = 0x00008051
-  GL_RGB10* = 0x00008052
-  GL_RGB12* = 0x00008053
-  GL_RGB16* = 0x00008054
-  GL_RGBA2* = 0x00008055
-  GL_RGBA4* = 0x00008056
-  GL_RGB5_A1* = 0x00008057
-  GL_RGBA8* = 0x00008058
-  GL_RGB10_A2* = 0x00008059
-  GL_RGBA12* = 0x0000805A
-  GL_RGBA16* = 0x0000805B
-  GL_TEXTURE_RED_SIZE* = 0x0000805C
-  GL_TEXTURE_GREEN_SIZE* = 0x0000805D
-  GL_TEXTURE_BLUE_SIZE* = 0x0000805E
-  GL_TEXTURE_ALPHA_SIZE* = 0x0000805F
-  GL_TEXTURE_LUMINANCE_SIZE* = 0x00008060
-  GL_TEXTURE_INTENSITY_SIZE* = 0x00008061
-  GL_PROXY_TEXTURE_1D* = 0x00008063
-  GL_PROXY_TEXTURE_2D* = 0x00008064 # texture_object
-  GL_TEXTURE_PRIORITY* = 0x00008066
-  GL_TEXTURE_RESIDENT* = 0x00008067
-  GL_TEXTURE_BINDING_1D* = 0x00008068
-  GL_TEXTURE_BINDING_2D* = 0x00008069 # vertex_array
-  GL_VERTEX_ARRAY* = 0x00008074
-  GL_NORMAL_ARRAY* = 0x00008075
-  GL_COLOR_ARRAY* = 0x00008076
-  GL_INDEX_ARRAY* = 0x00008077
-  GL_TEXTURE_COORD_ARRAY* = 0x00008078
-  GL_EDGE_FLAG_ARRAY* = 0x00008079
-  GL_VERTEX_ARRAY_SIZE* = 0x0000807A
-  GL_VERTEX_ARRAY_TYPE* = 0x0000807B
-  GL_VERTEX_ARRAY_STRIDE* = 0x0000807C
-  GL_NORMAL_ARRAY_TYPE* = 0x0000807E
-  GL_NORMAL_ARRAY_STRIDE* = 0x0000807F
-  GL_COLOR_ARRAY_SIZE* = 0x00008081
-  GL_COLOR_ARRAY_TYPE* = 0x00008082
-  GL_COLOR_ARRAY_STRIDE* = 0x00008083
-  GL_INDEX_ARRAY_TYPE* = 0x00008085
-  GL_INDEX_ARRAY_STRIDE* = 0x00008086
-  GL_TEXTURE_COORD_ARRAY_SIZE* = 0x00008088
-  GL_TEXTURE_COORD_ARRAY_TYPE* = 0x00008089
-  GL_TEXTURE_COORD_ARRAY_STRIDE* = 0x0000808A
-  GL_EDGE_FLAG_ARRAY_STRIDE* = 0x0000808C
-  GL_VERTEX_ARRAY_POINTER* = 0x0000808E
-  GL_NORMAL_ARRAY_POINTER* = 0x0000808F
-  GL_COLOR_ARRAY_POINTER* = 0x00008090
-  GL_INDEX_ARRAY_POINTER* = 0x00008091
-  GL_TEXTURE_COORD_ARRAY_POINTER* = 0x00008092
-  GL_EDGE_FLAG_ARRAY_POINTER* = 0x00008093
-  GL_V2F* = 0x00002A20
-  GL_V3F* = 0x00002A21
-  GL_C4UB_V2F* = 0x00002A22
-  GL_C4UB_V3F* = 0x00002A23
-  GL_C3F_V3F* = 0x00002A24
-  GL_N3F_V3F* = 0x00002A25
-  GL_C4F_N3F_V3F* = 0x00002A26
-  GL_T2F_V3F* = 0x00002A27
-  GL_T4F_V4F* = 0x00002A28
-  GL_T2F_C4UB_V3F* = 0x00002A29
-  GL_T2F_C3F_V3F* = 0x00002A2A
-  GL_T2F_N3F_V3F* = 0x00002A2B
-  GL_T2F_C4F_N3F_V3F* = 0x00002A2C
-  GL_T4F_C4F_N3F_V4F* = 0x00002A2D # Extensions
-  GL_EXT_vertex_array* = 1
-  GL_WIN_swap_hint* = 1
-  GL_EXT_bgra* = 1
-  GL_EXT_paletted_texture* = 1 # EXT_vertex_array
-  GL_VERTEX_ARRAY_EXT* = 0x00008074
-  GL_NORMAL_ARRAY_EXT* = 0x00008075
-  GL_COLOR_ARRAY_EXT* = 0x00008076
-  GL_INDEX_ARRAY_EXT* = 0x00008077
-  GL_TEXTURE_COORD_ARRAY_EXT* = 0x00008078
-  GL_EDGE_FLAG_ARRAY_EXT* = 0x00008079
-  GL_VERTEX_ARRAY_SIZE_EXT* = 0x0000807A
-  GL_VERTEX_ARRAY_TYPE_EXT* = 0x0000807B
-  GL_VERTEX_ARRAY_STRIDE_EXT* = 0x0000807C
-  GL_VERTEX_ARRAY_COUNT_EXT* = 0x0000807D
-  GL_NORMAL_ARRAY_TYPE_EXT* = 0x0000807E
-  GL_NORMAL_ARRAY_STRIDE_EXT* = 0x0000807F
-  GL_NORMAL_ARRAY_COUNT_EXT* = 0x00008080
-  GL_COLOR_ARRAY_SIZE_EXT* = 0x00008081
-  GL_COLOR_ARRAY_TYPE_EXT* = 0x00008082
-  GL_COLOR_ARRAY_STRIDE_EXT* = 0x00008083
-  GL_COLOR_ARRAY_COUNT_EXT* = 0x00008084
-  GL_INDEX_ARRAY_TYPE_EXT* = 0x00008085
-  GL_INDEX_ARRAY_STRIDE_EXT* = 0x00008086
-  GL_INDEX_ARRAY_COUNT_EXT* = 0x00008087
-  GL_TEXTURE_COORD_ARRAY_SIZE_EXT* = 0x00008088
-  GL_TEXTURE_COORD_ARRAY_TYPE_EXT* = 0x00008089
-  GL_TEXTURE_COORD_ARRAY_STRIDE_EXT* = 0x0000808A
-  GL_TEXTURE_COORD_ARRAY_COUNT_EXT* = 0x0000808B
-  GL_EDGE_FLAG_ARRAY_STRIDE_EXT* = 0x0000808C
-  GL_EDGE_FLAG_ARRAY_COUNT_EXT* = 0x0000808D
-  GL_VERTEX_ARRAY_POINTER_EXT* = 0x0000808E
-  GL_NORMAL_ARRAY_POINTER_EXT* = 0x0000808F
-  GL_COLOR_ARRAY_POINTER_EXT* = 0x00008090
-  GL_INDEX_ARRAY_POINTER_EXT* = 0x00008091
-  GL_TEXTURE_COORD_ARRAY_POINTER_EXT* = 0x00008092
-  GL_EDGE_FLAG_ARRAY_POINTER_EXT* = 0x00008093
-  GL_DOUBLE_EXT* = GL_DOUBLE  # EXT_bgra
-  GL_BGR_EXT* = 0x000080E0
-  GL_BGRA_EXT* = 0x000080E1   # EXT_paletted_texture
-                              # These must match the GL_COLOR_TABLE_*_SGI enumerants
-  GL_COLOR_TABLE_FORMAT_EXT* = 0x000080D8
-  GL_COLOR_TABLE_WIDTH_EXT* = 0x000080D9
-  GL_COLOR_TABLE_RED_SIZE_EXT* = 0x000080DA
-  GL_COLOR_TABLE_GREEN_SIZE_EXT* = 0x000080DB
-  GL_COLOR_TABLE_BLUE_SIZE_EXT* = 0x000080DC
-  GL_COLOR_TABLE_ALPHA_SIZE_EXT* = 0x000080DD
-  GL_COLOR_TABLE_LUMINANCE_SIZE_EXT* = 0x000080DE
-  GL_COLOR_TABLE_INTENSITY_SIZE_EXT* = 0x000080DF
-  GL_COLOR_INDEX1_EXT* = 0x000080E2
-  GL_COLOR_INDEX2_EXT* = 0x000080E3
-  GL_COLOR_INDEX4_EXT* = 0x000080E4
-  GL_COLOR_INDEX8_EXT* = 0x000080E5
-  GL_COLOR_INDEX12_EXT* = 0x000080E6
-  GL_COLOR_INDEX16_EXT* = 0x000080E7 # For compatibility with OpenGL v1.0
-  constGL_LOGIC_OP* = GL_INDEX_LOGIC_OP
-  GL_TEXTURE_COMPONENTS* = GL_TEXTURE_INTERNAL_FORMAT 
-
-proc glAccum*(op: TGLenum, value: TGLfloat){.dynlib: dllname, importc.}
-proc glAlphaFunc*(func: TGLenum, theref: TGLclampf){.dynlib: dllname, importc.}
-proc glAreTexturesResident*(n: TGLsizei, textures: PGLuint, 
-                            residences: PGLboolean): TGLboolean{.dynlib: dllname, 
-    importc.}
-proc glArrayElement*(i: TGLint){.dynlib: dllname, importc.}
-proc glBegin*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glBindTexture*(target: TGLenum, texture: TGLuint){.dynlib: dllname, importc.}
-proc glBitmap*(width, height: TGLsizei, xorig, yorig: TGLfloat, 
-               xmove, ymove: TGLfloat, bitmap: PGLubyte){.dynlib: dllname, 
-    importc.}
-proc glBlendFunc*(sfactor, dfactor: TGLenum){.dynlib: dllname, importc.}
-proc glCallList*(list: TGLuint){.dynlib: dllname, importc.}
-proc glCallLists*(n: TGLsizei, atype: TGLenum, lists: Pointer){.dynlib: dllname, 
-    importc.}
-proc glClear*(mask: TGLbitfield){.dynlib: dllname, importc.}
-proc glClearAccum*(red, green, blue, alpha: TGLfloat){.dynlib: dllname, importc.}
-proc glClearColor*(red, green, blue, alpha: TGLclampf){.dynlib: dllname, importc.}
-proc glClearDepth*(depth: TGLclampd){.dynlib: dllname, importc.}
-proc glClearIndex*(c: TGLfloat){.dynlib: dllname, importc.}
-proc glClearStencil*(s: TGLint){.dynlib: dllname, importc.}
-proc glClipPlane*(plane: TGLenum, equation: PGLdouble){.dynlib: dllname, importc.}
-proc glColor3b*(red, green, blue: TGlbyte){.dynlib: dllname, importc.}
-proc glColor3bv*(v: PGLbyte){.dynlib: dllname, importc.}
-proc glColor3d*(red, green, blue: TGLdouble){.dynlib: dllname, importc.}
-proc glColor3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glColor3f*(red, green, blue: TGLfloat){.dynlib: dllname, importc.}
-proc glColor3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glColor3i*(red, green, blue: TGLint){.dynlib: dllname, importc.}
-proc glColor3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glColor3s*(red, green, blue: TGLshort){.dynlib: dllname, importc.}
-proc glColor3sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glColor3ub*(red, green, blue: TGLubyte){.dynlib: dllname, importc.}
-proc glColor3ubv*(v: PGLubyte){.dynlib: dllname, importc.}
-proc glColor3ui*(red, green, blue: TGLuint){.dynlib: dllname, importc.}
-proc glColor3uiv*(v: PGLuint){.dynlib: dllname, importc.}
-proc glColor3us*(red, green, blue: TGLushort){.dynlib: dllname, importc.}
-proc glColor3usv*(v: PGLushort){.dynlib: dllname, importc.}
-proc glColor4b*(red, green, blue, alpha: TGlbyte){.dynlib: dllname, importc.}
-proc glColor4bv*(v: PGLbyte){.dynlib: dllname, importc.}
-proc glColor4d*(red, green, blue, alpha: TGLdouble){.dynlib: dllname, importc.}
-proc glColor4dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glColor4f*(red, green, blue, alpha: TGLfloat){.dynlib: dllname, importc.}
-proc glColor4fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glColor4i*(red, green, blue, alpha: TGLint){.dynlib: dllname, importc.}
-proc glColor4iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glColor4s*(red, green, blue, alpha: TGLshort){.dynlib: dllname, importc.}
-proc glColor4sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glColor4ub*(red, green, blue, alpha: TGLubyte){.dynlib: dllname, importc.}
-proc glColor4ubv*(v: PGLubyte){.dynlib: dllname, importc.}
-proc glColor4ui*(red, green, blue, alpha: TGLuint){.dynlib: dllname, importc.}
-proc glColor4uiv*(v: PGLuint){.dynlib: dllname, importc.}
-proc glColor4us*(red, green, blue, alpha: TGLushort){.dynlib: dllname, importc.}
-proc glColor4usv*(v: PGLushort){.dynlib: dllname, importc.}
-proc glColorMask*(red, green, blue, alpha: TGLboolean){.dynlib: dllname, importc.}
-proc glColorMaterial*(face, mode: TGLenum){.dynlib: dllname, importc.}
-proc glColorPointer*(size: TGLint, atype: TGLenum, stride: TGLsizei, 
-                     pointer: Pointer){.dynlib: dllname, importc.}
-proc glCopyPixels*(x, y: TGLint, width, height: TGLsizei, atype: TGLenum){.
-    dynlib: dllname, importc.}
-proc glCopyTexImage1D*(target: TGLenum, level: TGLint, internalFormat: TGLenum, 
-                       x, y: TGLint, width: TGLsizei, border: TGLint){.
-    dynlib: dllname, importc.}
-proc glCopyTexImage2D*(target: TGLenum, level: TGLint, internalFormat: TGLenum, 
-                       x, y: TGLint, width, height: TGLsizei, border: TGLint){.
-    dynlib: dllname, importc.}
-proc glCopyTexSubImage1D*(target: TGLenum, level, xoffset, x, y: TGLint, 
-                          width: TGLsizei){.dynlib: dllname, importc.}
-proc glCopyTexSubImage2D*(target: TGLenum, level, xoffset, yoffset, x, y: TGLint, 
-                          width, height: TGLsizei){.dynlib: dllname, importc.}
-proc glCullFace*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glDeleteLists*(list: TGLuint, range: TGLsizei){.dynlib: dllname, importc.}
-proc glDeleteTextures*(n: TGLsizei, textures: PGLuint){.dynlib: dllname, importc.}
-proc glDepthFunc*(func: TGLenum){.dynlib: dllname, importc.}
-proc glDepthMask*(flag: TGLboolean){.dynlib: dllname, importc.}
-proc glDepthRange*(zNear, zFar: TGLclampd){.dynlib: dllname, importc.}
-proc glDisable*(cap: TGLenum){.dynlib: dllname, importc.}
-proc glDisableClientState*(aarray: TGLenum){.dynlib: dllname, importc.}
-proc glDrawArrays*(mode: TGLenum, first: TGLint, count: TGLsizei){.dynlib: dllname, 
-    importc.}
-proc glDrawBuffer*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glDrawElements*(mode: TGLenum, count: TGLsizei, atype: TGLenum, 
-                     indices: Pointer){.dynlib: dllname, importc.}
-proc glDrawPixels*(width, height: TGLsizei, format, atype: TGLenum, 
-                   pixels: Pointer){.dynlib: dllname, importc.}
-proc glEdgeFlag*(flag: TGLboolean){.dynlib: dllname, importc.}
-proc glEdgeFlagPointer*(stride: TGLsizei, pointer: Pointer){.dynlib: dllname, 
-    importc.}
-proc glEdgeFlagv*(flag: PGLboolean){.dynlib: dllname, importc.}
-proc glEnable*(cap: TGLenum){.dynlib: dllname, importc.}
-proc glEnableClientState*(aarray: TGLenum){.dynlib: dllname, importc.}
-proc glEnd*(){.dynlib: dllname, importc.}
-proc glEndList*(){.dynlib: dllname, importc.}
-proc glEvalCoord1d*(u: TGLdouble){.dynlib: dllname, importc.}
-proc glEvalCoord1dv*(u: PGLdouble){.dynlib: dllname, importc.}
-proc glEvalCoord1f*(u: TGLfloat){.dynlib: dllname, importc.}
-proc glEvalCoord1fv*(u: PGLfloat){.dynlib: dllname, importc.}
-proc glEvalCoord2d*(u, v: TGLdouble){.dynlib: dllname, importc.}
-proc glEvalCoord2dv*(u: PGLdouble){.dynlib: dllname, importc.}
-proc glEvalCoord2f*(u, v: TGLfloat){.dynlib: dllname, importc.}
-proc glEvalCoord2fv*(u: PGLfloat){.dynlib: dllname, importc.}
-proc glEvalMesh1*(mode: TGLenum, i1, i2: TGLint){.dynlib: dllname, importc.}
-proc glEvalMesh2*(mode: TGLenum, i1, i2, j1, j2: TGLint){.dynlib: dllname, importc.}
-proc glEvalPoint1*(i: TGLint){.dynlib: dllname, importc.}
-proc glEvalPoint2*(i, j: TGLint){.dynlib: dllname, importc.}
-proc glFeedbackBuffer*(size: TGLsizei, atype: TGLenum, buffer: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glFinish*(){.dynlib: dllname, importc.}
-proc glFlush*(){.dynlib: dllname, importc.}
-proc glFogf*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glFogfv*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, importc.}
-proc glFogi*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glFogiv*(pname: TGLenum, params: PGLint){.dynlib: dllname, importc.}
-proc glFrontFace*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glFrustum*(left, right, bottom, top, zNear, zFar: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glGenLists*(range: TGLsizei): TGLuint{.dynlib: dllname, importc.}
-proc glGenTextures*(n: TGLsizei, textures: PGLuint){.dynlib: dllname, importc.}
-proc glGetBooleanv*(pname: TGLenum, params: PGLboolean){.dynlib: dllname, importc.}
-proc glGetClipPlane*(plane: TGLenum, equation: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glGetDoublev*(pname: TGLenum, params: PGLdouble){.dynlib: dllname, importc.}
-proc glGetError*(): TGLenum{.dynlib: dllname, importc.}
-proc glGetFloatv*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetIntegerv*(pname: TGLenum, params: PGLint){.dynlib: dllname, importc.}
-proc glGetLightfv*(light, pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetLightiv*(light, pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glGetMapdv*(target, query: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glGetMapfv*(target, query: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glGetMapiv*(target, query: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glGetMaterialfv*(face, pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetMaterialiv*(face, pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glGetPixelMapfv*(map: TGLenum, values: PGLfloat){.dynlib: dllname, importc.}
-proc glGetPixelMapuiv*(map: TGLenum, values: PGLuint){.dynlib: dllname, importc.}
-proc glGetPixelMapusv*(map: TGLenum, values: PGLushort){.dynlib: dllname, importc.}
-proc glGetPointerv*(pname: TGLenum, params: Pointer){.dynlib: dllname, importc.}
-proc glGetPolygonStipple*(mask: PGLubyte){.dynlib: dllname, importc.}
-proc glGetString*(name: TGLenum): cstring{.dynlib: dllname, importc.}
-proc glGetTexEnvfv*(target, pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetTexEnviv*(target, pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glGetTexGendv*(coord, pname: TGLenum, params: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glGetTexGenfv*(coord, pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetTexGeniv*(coord, pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glGetTexImage*(target: TGLenum, level: TGLint, format: TGLenum, atype: TGLenum, 
-                    pixels: Pointer){.dynlib: dllname, importc.}
-proc glGetTexLevelParameterfv*(target: TGLenum, level: TGLint, pname: TGLenum, 
-                               params: Pointer){.dynlib: dllname, importc.}
-proc glGetTexLevelParameteriv*(target: TGLenum, level: TGLint, pname: TGLenum, 
-                               params: PGLint){.dynlib: dllname, importc.}
-proc glGetTexParameterfv*(target, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetTexParameteriv*(target, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glHint*(target, mode: TGLenum){.dynlib: dllname, importc.}
-proc glIndexMask*(mask: TGLuint){.dynlib: dllname, importc.}
-proc glIndexPointer*(atype: TGLenum, stride: TGLsizei, pointer: Pointer){.
-    dynlib: dllname, importc.}
-proc glIndexd*(c: TGLdouble){.dynlib: dllname, importc.}
-proc glIndexdv*(c: PGLdouble){.dynlib: dllname, importc.}
-proc glIndexf*(c: TGLfloat){.dynlib: dllname, importc.}
-proc glIndexfv*(c: PGLfloat){.dynlib: dllname, importc.}
-proc glIndexi*(c: TGLint){.dynlib: dllname, importc.}
-proc glIndexiv*(c: PGLint){.dynlib: dllname, importc.}
-proc glIndexs*(c: TGLshort){.dynlib: dllname, importc.}
-proc glIndexsv*(c: PGLshort){.dynlib: dllname, importc.}
-proc glIndexub*(c: TGLubyte){.dynlib: dllname, importc.}
-proc glIndexubv*(c: PGLubyte){.dynlib: dllname, importc.}
-proc glInitNames*(){.dynlib: dllname, importc.}
-proc glInterleavedArrays*(format: TGLenum, stride: TGLsizei, pointer: Pointer){.
-    dynlib: dllname, importc.}
-proc glIsEnabled*(cap: TGLenum): TGLboolean{.dynlib: dllname, importc.}
-proc glIsList*(list: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glIsTexture*(texture: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glLightModelf*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glLightModelfv*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, importc.}
-proc glLightModeli*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glLightModeliv*(pname: TGLenum, params: PGLint){.dynlib: dllname, importc.}
-proc glLightf*(light, pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glLightfv*(light, pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glLighti*(light, pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glLightiv*(light, pname: TGLenum, params: PGLint){.dynlib: dllname, importc.}
-proc glLineStipple*(factor: TGLint, pattern: TGLushort){.dynlib: dllname, importc.}
-proc glLineWidth*(width: TGLfloat){.dynlib: dllname, importc.}
-proc glListBase*(base: TGLuint){.dynlib: dllname, importc.}
-proc glLoadIdentity*(){.dynlib: dllname, importc.}
-proc glLoadMatrixd*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glLoadMatrixf*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glLoadName*(name: TGLuint){.dynlib: dllname, importc.}
-proc glLogicOp*(opcode: TGLenum){.dynlib: dllname, importc.}
-proc glMap1d*(target: TGLenum, u1, u2: TGLdouble, stride, order: TGLint, 
-              points: PGLdouble){.dynlib: dllname, importc.}
-proc glMap1f*(target: TGLenum, u1, u2: TGLfloat, stride, order: TGLint, 
-              points: PGLfloat){.dynlib: dllname, importc.}
-proc glMap2d*(target: TGLenum, u1, u2: TGLdouble, ustride, uorder: TGLint, 
-              v1, v2: TGLdouble, vstride, vorder: TGLint, points: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glMap2f*(target: TGLenum, u1, u2: TGLfloat, ustride, uorder: TGLint, 
-              v1, v2: TGLfloat, vstride, vorder: TGLint, points: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glMapGrid1d*(un: TGLint, u1, u2: TGLdouble){.dynlib: dllname, importc.}
-proc glMapGrid1f*(un: TGLint, u1, u2: TGLfloat){.dynlib: dllname, importc.}
-proc glMapGrid2d*(un: TGLint, u1, u2: TGLdouble, vn: TGLint, v1, v2: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMapGrid2f*(un: TGLint, u1, u2: TGLfloat, vn: TGLint, v1, v2: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMaterialf*(face, pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glMaterialfv*(face, pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMateriali*(face, pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glMaterialiv*(face, pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glMatrixMode*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glMultMatrixd*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glMultMatrixf*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glNewList*(list: TGLuint, mode: TGLenum){.dynlib: dllname, importc.}
-proc glNormal3b*(nx, ny, nz: TGlbyte){.dynlib: dllname, importc.}
-proc glNormal3bv*(v: PGLbyte){.dynlib: dllname, importc.}
-proc glNormal3d*(nx, ny, nz: TGLdouble){.dynlib: dllname, importc.}
-proc glNormal3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glNormal3f*(nx, ny, nz: TGLfloat){.dynlib: dllname, importc.}
-proc glNormal3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glNormal3i*(nx, ny, nz: TGLint){.dynlib: dllname, importc.}
-proc glNormal3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glNormal3s*(nx, ny, nz: TGLshort){.dynlib: dllname, importc.}
-proc glNormal3sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glNormalPointer*(atype: TGLenum, stride: TGLsizei, pointer: Pointer){.
-    dynlib: dllname, importc.}
-proc glOrtho*(left, right, bottom, top, zNear, zFar: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glPassThrough*(token: TGLfloat){.dynlib: dllname, importc.}
-proc glPixelMapfv*(map: TGLenum, mapsize: TGLsizei, values: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glPixelMapuiv*(map: TGLenum, mapsize: TGLsizei, values: PGLuint){.
-    dynlib: dllname, importc.}
-proc glPixelMapusv*(map: TGLenum, mapsize: TGLsizei, values: PGLushort){.
-    dynlib: dllname, importc.}
-proc glPixelStoref*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glPixelStorei*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPixelTransferf*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glPixelTransferi*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPixelZoom*(xfactor, yfactor: TGLfloat){.dynlib: dllname, importc.}
-proc glPointSize*(size: TGLfloat){.dynlib: dllname, importc.}
-proc glPolygonMode*(face, mode: TGLenum){.dynlib: dllname, importc.}
-proc glPolygonOffset*(factor, units: TGLfloat){.dynlib: dllname, importc.}
-proc glPolygonStipple*(mask: PGLubyte){.dynlib: dllname, importc.}
-proc glPopAttrib*(){.dynlib: dllname, importc.}
-proc glPopClientAttrib*(){.dynlib: dllname, importc.}
-proc glPopMatrix*(){.dynlib: dllname, importc.}
-proc glPopName*(){.dynlib: dllname, importc.}
-proc glPrioritizeTextures*(n: TGLsizei, textures: PGLuint, priorities: PGLclampf){.
-    dynlib: dllname, importc.}
-proc glPushAttrib*(mask: TGLbitfield){.dynlib: dllname, importc.}
-proc glPushClientAttrib*(mask: TGLbitfield){.dynlib: dllname, importc.}
-proc glPushMatrix*(){.dynlib: dllname, importc.}
-proc glPushName*(name: TGLuint){.dynlib: dllname, importc.}
-proc glRasterPos2d*(x, y: TGLdouble){.dynlib: dllname, importc.}
-proc glRasterPos2dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glRasterPos2f*(x, y: TGLfloat){.dynlib: dllname, importc.}
-proc glRasterPos2fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glRasterPos2i*(x, y: TGLint){.dynlib: dllname, importc.}
-proc glRasterPos2iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glRasterPos2s*(x, y: TGLshort){.dynlib: dllname, importc.}
-proc glRasterPos2sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glRasterPos3d*(x, y, z: TGLdouble){.dynlib: dllname, importc.}
-proc glRasterPos3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glRasterPos3f*(x, y, z: TGLfloat){.dynlib: dllname, importc.}
-proc glRasterPos3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glRasterPos3i*(x, y, z: TGLint){.dynlib: dllname, importc.}
-proc glRasterPos3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glRasterPos3s*(x, y, z: TGLshort){.dynlib: dllname, importc.}
-proc glRasterPos3sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glRasterPos4d*(x, y, z, w: TGLdouble){.dynlib: dllname, importc.}
-proc glRasterPos4dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glRasterPos4f*(x, y, z, w: TGLfloat){.dynlib: dllname, importc.}
-proc glRasterPos4fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glRasterPos4i*(x, y, z, w: TGLint){.dynlib: dllname, importc.}
-proc glRasterPos4iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glRasterPos4s*(x, y, z, w: TGLshort){.dynlib: dllname, importc.}
-proc glRasterPos4sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glReadBuffer*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glReadPixels*(x, y: TGLint, width, height: TGLsizei, format, atype: TGLenum, 
-                   pixels: Pointer){.dynlib: dllname, importc.}
-proc glRectd*(x1, y1, x2, y2: TGLdouble){.dynlib: dllname, importc.}
-proc glRectdv*(v1: PGLdouble, v2: PGLdouble){.dynlib: dllname, importc.}
-proc glRectf*(x1, y1, x2, y2: TGLfloat){.dynlib: dllname, importc.}
-proc glRectfv*(v1: PGLfloat, v2: PGLfloat){.dynlib: dllname, importc.}
-proc glRecti*(x1, y1, x2, y2: TGLint){.dynlib: dllname, importc.}
-proc glRectiv*(v1: PGLint, v2: PGLint){.dynlib: dllname, importc.}
-proc glRects*(x1, y1, x2, y2: TGLshort){.dynlib: dllname, importc.}
-proc glRectsv*(v1: PGLshort, v2: PGLshort){.dynlib: dllname, importc.}
-proc glRenderMode*(mode: TGLint): TGLint{.dynlib: dllname, importc.}
-proc glRotated*(angle, x, y, z: TGLdouble){.dynlib: dllname, importc.}
-proc glRotatef*(angle, x, y, z: TGLfloat){.dynlib: dllname, importc.}
-proc glScaled*(x, y, z: TGLdouble){.dynlib: dllname, importc.}
-proc glScalef*(x, y, z: TGLfloat){.dynlib: dllname, importc.}
-proc glScissor*(x, y: TGLint, width, height: TGLsizei){.dynlib: dllname, importc.}
-proc glSelectBuffer*(size: TGLsizei, buffer: PGLuint){.dynlib: dllname, importc.}
-proc glShadeModel*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glStencilFunc*(func: TGLenum, theref: TGLint, mask: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glStencilMask*(mask: TGLuint){.dynlib: dllname, importc.}
-proc glStencilOp*(fail, zfail, zpass: TGLenum){.dynlib: dllname, importc.}
-proc glTexCoord1d*(s: TGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord1dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord1f*(s: TGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord1fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord1i*(s: TGLint){.dynlib: dllname, importc.}
-proc glTexCoord1iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glTexCoord1s*(s: TGLshort){.dynlib: dllname, importc.}
-proc glTexCoord1sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glTexCoord2d*(s, t: TGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord2dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord2f*(s, t: TGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord2fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord2i*(s, t: TGLint){.dynlib: dllname, importc.}
-proc glTexCoord2iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glTexCoord2s*(s, t: TGLshort){.dynlib: dllname, importc.}
-proc glTexCoord2sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glTexCoord3d*(s, t, r: TGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord3f*(s, t, r: TGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord3i*(s, t, r: TGLint){.dynlib: dllname, importc.}
-proc glTexCoord3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glTexCoord3s*(s, t, r: TGLshort){.dynlib: dllname, importc.}
-proc glTexCoord3sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glTexCoord4d*(s, t, r, q: TGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord4dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glTexCoord4f*(s, t, r, q: TGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord4fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord4i*(s, t, r, q: TGLint){.dynlib: dllname, importc.}
-proc glTexCoord4iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glTexCoord4s*(s, t, r, q: TGLshort){.dynlib: dllname, importc.}
-proc glTexCoord4sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glTexCoordPointer*(size: TGLint, atype: TGLenum, stride: TGLsizei, 
-                        pointer: Pointer){.dynlib: dllname, importc.}
-proc glTexEnvf*(target: TGLenum, pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glTexEnvfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexEnvi*(target: TGLenum, pname: TGLenum, param: TGLint){.dynlib: dllname, 
-    importc.}
-proc glTexEnviv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glTexGend*(coord: TGLenum, pname: TGLenum, param: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glTexGendv*(coord: TGLenum, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glTexGenf*(coord: TGLenum, pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glTexGenfv*(coord: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexGeni*(coord: TGLenum, pname: TGLenum, param: TGLint){.dynlib: dllname, 
-    importc.}
-proc glTexGeniv*(coord: TGLenum, pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glTexImage1D*(target: TGLenum, level, internalformat: TGLint, width: TGLsizei, 
-                   border: TGLint, format, atype: TGLenum, pixels: Pointer){.
-    dynlib: dllname, importc.}
-proc glTexImage2D*(target: TGLenum, level, internalformat: TGLint, 
-                   width, height: TGLsizei, border: TGLint, format, atype: TGLenum, 
-                   pixels: Pointer){.dynlib: dllname, importc.}
-proc glTexParameterf*(target: TGLenum, pname: TGLenum, param: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexParameteri*(target: TGLenum, pname: TGLenum, param: TGLint){.
-    dynlib: dllname, importc.}
-proc glTexParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glTexSubImage1D*(target: TGLenum, level, xoffset: TGLint, width: TGLsizei, 
-                      format, atype: TGLenum, pixels: Pointer){.dynlib: dllname, 
-    importc.}
-proc glTexSubImage2D*(target: TGLenum, level, xoffset, yoffset: TGLint, 
-                      width, height: TGLsizei, format, atype: TGLenum, 
-                      pixels: Pointer){.dynlib: dllname, importc.}
-proc glTranslated*(x, y, z: TGLdouble){.dynlib: dllname, importc.}
-proc glTranslatef*(x, y, z: TGLfloat){.dynlib: dllname, importc.}
-proc glVertex2d*(x, y: TGLdouble){.dynlib: dllname, importc.}
-proc glVertex2dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertex2f*(x, y: TGLfloat){.dynlib: dllname, importc.}
-proc glVertex2fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertex2i*(x, y: TGLint){.dynlib: dllname, importc.}
-proc glVertex2iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glVertex2s*(x, y: TGLshort){.dynlib: dllname, importc.}
-proc glVertex2sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glVertex3d*(x, y, z: TGLdouble){.dynlib: dllname, importc.}
-proc glVertex3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertex3f*(x, y, z: TGLfloat){.dynlib: dllname, importc.}
-proc glVertex3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertex3i*(x, y, z: TGLint){.dynlib: dllname, importc.}
-proc glVertex3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glVertex3s*(x, y, z: TGLshort){.dynlib: dllname, importc.}
-proc glVertex3sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glVertex4d*(x, y, z, w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertex4dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertex4f*(x, y, z, w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertex4fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertex4i*(x, y, z, w: TGLint){.dynlib: dllname, importc.}
-proc glVertex4iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glVertex4s*(x, y, z, w: TGLshort){.dynlib: dllname, importc.}
-proc glVertex4sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexPointer*(size: TGLint, atype: TGLenum, stride: TGLsizei, 
-                      pointer: Pointer){.dynlib: dllname, importc.}
-proc glViewport*(x, y: TGLint, width, height: TGLsizei){.dynlib: dllname, importc.}
-type
-  PFN_GLARRAY_ELEMENT_EXTPROC* = proc (i: TGLint)
-  PFN_GLDRAW_ARRAYS_EXTPROC* = proc (mode: TGLenum, first: TGLint, count: TGLsizei)
-  PFN_GLVERTEX_POINTER_EXTPROC* = proc (size: TGLint, atype: TGLenum, 
-                                     stride, count: TGLsizei, pointer: Pointer)
-  PFN_GLNORMAL_POINTER_EXTPROC* = proc (atype: TGLenum, stride, count: TGLsizei, 
-                                     pointer: Pointer)
-  PFN_GLCOLOR_POINTER_EXTPROC* = proc (size: TGLint, atype: TGLenum, 
-                                    stride, count: TGLsizei, pointer: Pointer)
-  PFN_GLINDEX_POINTER_EXTPROC* = proc (atype: TGLenum, stride, count: TGLsizei, 
-                                    pointer: Pointer)
-  PFN_GLTEXCOORD_POINTER_EXTPROC* = proc (size: TGLint, atype: TGLenum, 
-                                       stride, count: TGLsizei, pointer: Pointer)
-  PFN_GLEDGEFLAG_POINTER_EXTPROC* = proc (stride, count: TGLsizei, 
-                                       pointer: PGLboolean)
-  PFN_GLGET_POINTER_VEXT_PROC* = proc (pname: TGLenum, params: Pointer)
-  PFN_GLARRAY_ELEMENT_ARRAY_EXTPROC* = proc (mode: TGLenum, count: TGLsizei, 
-      pi: Pointer)            # WIN_swap_hint
-  PFN_GLADDSWAPHINT_RECT_WINPROC* = proc (x, y: TGLint, width, height: TGLsizei)
-  PFN_GLCOLOR_TABLE_EXTPROC* = proc (target, internalFormat: TGLenum, 
-                                  width: TGLsizei, format, atype: TGLenum, 
-                                  data: Pointer)
-  PFN_GLCOLOR_SUBTABLE_EXTPROC* = proc (target: TGLenum, start, count: TGLsizei, 
-                                     format, atype: TGLenum, data: Pointer)
-  PFN_GLGETCOLOR_TABLE_EXTPROC* = proc (target, format, atype: TGLenum, 
-                                     data: Pointer)
-  PFN_GLGETCOLOR_TABLE_PARAMETER_IVEXTPROC* = proc (target, pname: TGLenum, 
-      params: PGLint)
-  PFN_GLGETCOLOR_TABLE_PARAMETER_FVEXTPROC* = proc (target, pname: TGLenum, 
-      params: PGLfloat)
-
-{.pop.}
-
-# implementation
diff --git a/lib/wrappers/opengl/glext.nim b/lib/wrappers/opengl/glext.nim
deleted file mode 100755
index 0a2138584..000000000
--- a/lib/wrappers/opengl/glext.nim
+++ /dev/null
@@ -1,4175 +0,0 @@
-#
-#
-#  Adaption of the delphi3d.net OpenGL units to FreePascal
-#  Sebastian Guenther (sg@freepascal.org) in 2002
-#  These units are free to use
-#
-#
-
-#*************************************************
-# *        OpenGL extension loading library        *
-# * Generated by MetaGLext, written by Tom Nuydens *
-# *  (tom@delphi3d.net -- http://www.delphi3d.net  *
-# *************************************************
-#*** Generated on 10/11/2002
-
-when defined(windows):
-  {.push callconv: stdcall.}
-else:
-  {.push callconv: cdecl.}
-
-import
-  gl
-
-type 
-  GLcharARB* = Char
-  TGLcharARB* = GLcharARB
-  PGLcharARB* = ptr GLcharARB
-  GLhandleARB* = int
-  TGLhandleARB* = GLhandleARB
-  PGLhandleARB* = ptr GLhandleARB
-  GLintptr* = int
-  TGLintptr* = GLintptr
-  PGLintptr* = ptr GLintptr
-  GLsizeiptr* = int
-  TGLsizeiptr* = GLsizeiptr
-  PGLsizeiptr* = ptr GLsizeiptr
-  GLchar* = Char
-  TGLchar* = GLchar
-  PGLchar* = cstring          #***** GL_version_1_2 *****//
-
-const 
-  GL_UNSIGNED_BYTE_3_3_2* = 0x00008032
-  GL_UNSIGNED_SHORT_4_4_4_4* = 0x00008033
-  GL_UNSIGNED_SHORT_5_5_5_1* = 0x00008034
-  GL_UNSIGNED_INT_8_8_8_8* = 0x00008035
-  GL_UNSIGNED_INT_10_10_10_2* = 0x00008036
-  GL_RESCALE_NORMAL* = 0x0000803A
-  GL_UNSIGNED_BYTE_2_3_3_REV* = 0x00008362
-  GL_UNSIGNED_SHORT_5_6_5* = 0x00008363
-  GL_UNSIGNED_SHORT_5_6_5_REV* = 0x00008364
-  GL_UNSIGNED_SHORT_4_4_4_4_REV* = 0x00008365
-  GL_UNSIGNED_SHORT_1_5_5_5_REV* = 0x00008366
-  GL_UNSIGNED_INT_8_8_8_8_REV* = 0x00008367
-  GL_UNSIGNED_INT_2_10_10_10_REV* = 0x00008368
-  GL_BGR* = 0x000080E0
-  GL_BGRA* = 0x000080E1
-  GL_MAX_ELEMENTS_VERTICES* = 0x000080E8
-  GL_MAX_ELEMENTS_INDICES* = 0x000080E9
-  GL_CLAMP_TO_EDGE* = 0x0000812F
-  GL_TEXTURE_MIN_LOD* = 0x0000813A
-  GL_TEXTURE_MAX_LOD* = 0x0000813B
-  GL_TEXTURE_BASE_LEVEL* = 0x0000813C
-  GL_TEXTURE_MAX_LEVEL* = 0x0000813D
-  GL_LIGHT_MODEL_COLOR_CONTROL* = 0x000081F8
-  GL_SINGLE_COLOR* = 0x000081F9
-  GL_SEPARATE_SPECULAR_COLOR* = 0x000081FA
-  GL_SMOOTH_POINT_SIZE_RANGE* = 0x00000B12
-  GL_SMOOTH_POINT_SIZE_GRANULARITY* = 0x00000B13
-  GL_SMOOTH_LINE_WIDTH_RANGE* = 0x00000B22
-  GL_SMOOTH_LINE_WIDTH_GRANULARITY* = 0x00000B23
-  GL_ALIASED_POINT_SIZE_RANGE* = 0x0000846D
-  GL_ALIASED_LINE_WIDTH_RANGE* = 0x0000846E
-  GL_PACK_SKIP_IMAGES* = 0x0000806B
-  GL_PACK_IMAGE_HEIGHT* = 0x0000806C
-  GL_UNPACK_SKIP_IMAGES* = 0x0000806D
-  GL_UNPACK_IMAGE_HEIGHT* = 0x0000806E
-  GL_TEXTURE_3D* = 0x0000806F
-  GL_PROXY_TEXTURE_3D* = 0x00008070
-  GL_TEXTURE_DEPTH* = 0x00008071
-  GL_TEXTURE_WRAP_R* = 0x00008072
-  GL_MAX_3D_TEXTURE_SIZE* = 0x00008073
-
-proc glBlendColor*(red: TGLclampf, green: TGLclampf, blue: TGLclampf, 
-                   alpha: TGLclampf){.dynlib: dllname, importc.}
-proc glBlendEquation*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glDrawRangeElements*(mode: TGLenum, start: TGLuint, theend: TGLuint, 
-                          count: TGLsizei, thetype: TGLenum, indices: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glColorTable*(target: TGLenum, internalformat: TGLenum, width: TGLsizei, 
-                   format: TGLenum, thetype: TGLenum, table: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glColorTableParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glColorTableParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glCopyColorTable*(target: TGLenum, internalformat: TGLenum, x: TGLint, 
-                       y: TGLint, width: TGLsizei){.dynlib: dllname, importc.}
-proc glGetColorTable*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                      table: PGLvoid){.dynlib: dllname, importc.}
-proc glGetColorTableParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetColorTableParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glColorSubTable*(target: TGLenum, start: TGLsizei, count: TGLsizei, 
-                      format: TGLenum, thetype: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyColorSubTable*(target: TGLenum, start: TGLsizei, x: TGLint, y: TGLint, 
-                          width: TGLsizei){.dynlib: dllname, importc.}
-proc glConvolutionFilter1D*(target: TGLenum, internalformat: TGLenum, 
-                            width: TGLsizei, format: TGLenum, thetype: TGLenum, 
-                            image: PGLvoid){.dynlib: dllname, importc.}
-proc glConvolutionFilter2D*(target: TGLenum, internalformat: TGLenum, 
-                            width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                            thetype: TGLenum, image: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glConvolutionParameterf*(target: TGLenum, pname: TGLenum, params: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameteri*(target: TGLenum, pname: TGLenum, params: TGLint){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter1D*(target: TGLenum, internalformat: TGLenum, 
-                                x: TGLint, y: TGLint, width: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter2D*(target: TGLenum, internalformat: TGLenum, 
-                                x: TGLint, y: TGLint, width: TGLsizei, 
-                                height: TGLsizei){.dynlib: dllname, importc.}
-proc glGetConvolutionFilter*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                             image: PGLvoid){.dynlib: dllname, importc.}
-proc glGetConvolutionParameterfv*(target: TGLenum, pname: TGLenum, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetConvolutionParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetSeparableFilter*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                           row: PGLvoid, column: PGLvoid, span: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glSeparableFilter2D*(target: TGLenum, internalformat: TGLenum, 
-                          width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                          thetype: TGLenum, row: PGLvoid, column: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetHistogram*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                     thetype: TGLenum, values: PGLvoid){.dynlib: dllname, importc.}
-proc glGetHistogramParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetHistogramParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetMinmax*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                  thetype: TGLenum, values: PGLvoid){.dynlib: dllname, importc.}
-proc glGetMinmaxParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetMinmaxParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glHistogram*(target: TGLenum, width: TGLsizei, internalformat: TGLenum, 
-                  sink: TGLboolean){.dynlib: dllname, importc.}
-proc glMinmax*(target: TGLenum, internalformat: TGLenum, sink: TGLboolean){.
-    dynlib: dllname, importc.}
-proc glResetHistogram*(target: TGLenum){.dynlib: dllname, importc.}
-proc glResetMinmax*(target: TGLenum){.dynlib: dllname, importc.}
-proc glTexImage3D*(target: TGLenum, level: TGLint, internalformat: TGLint, 
-                   width: TGLsizei, height: TGLsizei, depth: TGLsizei, 
-                   border: TGLint, format: TGLenum, thetype: TGLenum, 
-                   pixels: PGLvoid){.dynlib: dllname, importc.}
-proc glTexSubImage3D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                      yoffset: TGLint, zoffset: TGLint, width: TGLsizei, 
-                      height: TGLsizei, depth: TGLsizei, format: TGLenum, 
-                      thetype: TGLenum, pixels: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glCopyTexSubImage3D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                          yoffset: TGLint, zoffset: TGLint, x: TGLint, y: TGLint, 
-                          width: TGLsizei, height: TGLsizei){.dynlib: dllname, 
-    importc.}
-
-
-proc glActiveTextureARB*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glClientActiveTextureARB*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glMultiTexCoord1dARB*(target: TGLenum, s: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord1dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord1fARB*(target: TGLenum, s: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord1fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord1iARB*(target: TGLenum, s: TGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1sARB*(target: TGLenum, s: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord1svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2dARB*(target: TGLenum, s: TGLdouble, t: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2fARB*(target: TGLenum, s: TGLfloat, t: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2iARB*(target: TGLenum, s: TGLint, t: TGLint){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord2sARB*(target: TGLenum, s: TGLshort, t: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3dARB*(target: TGLenum, s: TGLdouble, t: TGLdouble, r: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3fARB*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3iARB*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord3sARB*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4dARB*(target: TGLenum, s: TGLdouble, t: TGLdouble, 
-                           r: TGLdouble, q: TGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord4dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4fARB*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat, 
-                           q: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord4fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4iARB*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint, 
-                           q: TGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord4ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord4sARB*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort, 
-                           q: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-
-proc glSampleCoverageARB*(value: TGLclampf, invert: TGLboolean){.dynlib: dllname, 
-    importc.}
-  #***** GL_ARB_texture_env_add *****//
-
-
-proc glWeightbvARB*(size: TGLint, weights: PGLbyte){.dynlib: dllname, importc.}
-proc glWeightsvARB*(size: TGLint, weights: PGLshort){.dynlib: dllname, importc.}
-proc glWeightivARB*(size: TGLint, weights: PGLint){.dynlib: dllname, importc.}
-proc glWeightfvARB*(size: TGLint, weights: PGLfloat){.dynlib: dllname, importc.}
-proc glWeightdvARB*(size: TGLint, weights: PGLdouble){.dynlib: dllname, importc.}
-proc glWeightvARB*(size: TGLint, weights: PGLdouble){.dynlib: dllname, importc.}
-proc glWeightubvARB*(size: TGLint, weights: PGLubyte){.dynlib: dllname, importc.}
-proc glWeightusvARB*(size: TGLint, weights: PGLushort){.dynlib: dllname, importc.}
-proc glWeightuivARB*(size: TGLint, weights: PGLuint){.dynlib: dllname, importc.}
-proc glWeightPointerARB*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                         pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glVertexBlendARB*(count: TGLint){.dynlib: dllname, importc.}
-
-
-
-proc glVertexAttrib1sARB*(index: TGLuint, x: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fARB*(index: TGLuint, x: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dARB*(index: TGLuint, x: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2sARB*(index: TGLuint, x: TGLshort, y: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2fARB*(index: TGLuint, x: TGLfloat, y: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2dARB*(index: TGLuint, x: TGLdouble, y: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3sARB*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3fARB*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3dARB*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib4sARB*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort, 
-                          w: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4fARB*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat, 
-                          w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dARB*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                          w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4NubARB*(index: TGLuint, x: TGLubyte, y: TGLubyte, z: TGLubyte, 
-                            w: TGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib1svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib2svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib2fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib2dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib3svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib3fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib3dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4bvARB*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4ivARB*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubvARB*(index: TGLuint, v: PGLubyte){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4usvARB*(index: TGLuint, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4uivARB*(index: TGLuint, v: PGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib4fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NbvARB*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4NsvARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NivARB*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4NubvARB*(index: TGLuint, v: PGLubyte){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NusvARB*(index: TGLuint, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NuivARB*(index: TGLuint, v: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glVertexAttribPointerARB*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                               normalized: TGLboolean, stride: TGLsizei, 
-                               pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glEnableVertexAttribArrayARB*(index: TGLuint){.dynlib: dllname, importc.}
-proc glDisableVertexAttribArrayARB*(index: TGLuint){.dynlib: dllname, importc.}
-proc glProgramStringARB*(target: TGLenum, format: TGLenum, length: TGLsizei, 
-                         str: PGLvoid){.dynlib: dllname, importc.}
-proc glBindProgramARB*(target: TGLenum, theProgram: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glDeleteProgramsARB*(n: TGLsizei, programs: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGenProgramsARB*(n: TGLsizei, programs: PGLuint){.dynlib: dllname, importc.}
-proc glProgramEnvParameter4dARB*(target: TGLenum, index: TGLuint, x: TGLdouble, 
-                                 y: TGLdouble, z: TGLdouble, w: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glProgramEnvParameter4dvARB*(target: TGLenum, index: TGLuint, 
-                                  params: PGLdouble){.dynlib: dllname, importc.}
-proc glProgramEnvParameter4fARB*(target: TGLenum, index: TGLuint, x: TGLfloat, 
-                                 y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramEnvParameter4fvARB*(target: TGLenum, index: TGLuint, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glProgramLocalParameter4dARB*(target: TGLenum, index: TGLuint, x: TGLdouble, 
-                                   y: TGLdouble, z: TGLdouble, w: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glProgramLocalParameter4dvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLdouble){.dynlib: dllname, importc.}
-proc glProgramLocalParameter4fARB*(target: TGLenum, index: TGLuint, x: TGLfloat, 
-                                   y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramLocalParameter4fvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetProgramEnvParameterdvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLdouble){.dynlib: dllname, importc.}
-proc glGetProgramEnvParameterfvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetProgramLocalParameterdvARB*(target: TGLenum, index: TGLuint, 
-                                      params: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glGetProgramLocalParameterfvARB*(target: TGLenum, index: TGLuint, 
-                                      params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetProgramivARB*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetProgramStringARB*(target: TGLenum, pname: TGLenum, str: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribdvARB*(index: TGLuint, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribfvARB*(index: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribivARB*(index: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribPointervARB*(index: TGLuint, pname: TGLenum, 
-                                   pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glIsProgramARB*(theProgram: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-  #***** GL_ARB_window_pos *****//
-proc glWindowPos2dARB*(x: TGLdouble, y: TGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2fARB*(x: TGLfloat, y: TGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2iARB*(x: TGLint, y: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos2sARB*(x: TGLshort, y: TGLshort){.dynlib: dllname, importc.}
-proc glWindowPos2dvARB*(p: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2fvARB*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2ivARB*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos2svARB*(p: PGLshort){.dynlib: dllname, importc.}
-proc glWindowPos3dARB*(x: TGLdouble, y: TGLdouble, z: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3fARB*(x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3iARB*(x: TGLint, y: TGLint, z: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos3sARB*(x: TGLshort, y: TGLshort, z: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3dvARB*(p: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos3fvARB*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos3ivARB*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos3svARB*(p: PGLshort){.dynlib: dllname, importc.}
-
-
-
-proc glBlendEquationSeparate*(modeRGB: TGLenum, modeAlpha: TGLenum){.
-    dynlib: dllname, importc.}
-proc glDrawBuffers*(n: TGLsizei, bufs: PGLenum){.dynlib: dllname, importc.}
-proc glStencilOpSeparate*(face: TGLenum, sfail: TGLenum, dpfail: TGLenum, 
-                          dppass: TGLenum){.dynlib: dllname, importc.}
-proc glStencilFuncSeparate*(frontfunc: TGLenum, backfunc: TGLenum, theRef: TGLint, 
-                            mask: TGLuint){.dynlib: dllname, importc.}
-proc glStencilMaskSeparate*(face: TGLenum, mask: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glAttachShader*(theProgram: TGLuint, shader: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glBindAttribLocation*(theProgram: TGLuint, index: TGLuint, name: PGLchar){.
-    dynlib: dllname, importc.}
-proc glCompileShader*(shader: TGLuint){.dynlib: dllname, importc.}
-proc glCreateProgram*(): TGLuint{.dynlib: dllname, importc.}
-proc glCreateShader*(thetype: TGLenum): TGLuint{.dynlib: dllname, importc.}
-proc glDeleteProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteShader*(shader: TGLuint){.dynlib: dllname, importc.}
-proc glDetachShader*(theProgram: TGLuint, shader: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glDisableVertexAttribArray*(index: TGLuint){.dynlib: dllname, importc.}
-proc glEnableVertexAttribArray*(index: TGLuint){.dynlib: dllname, importc.}
-proc glGetActiveAttrib*(theProgram: TGLuint, index: TGLuint, bufSize: TGLsizei, 
-                        len: PGLsizei, size: PGLint, thetype: PGLenum, 
-                        name: PGLchar){.dynlib: dllname, importc.}
-proc glGetActiveUniform*(theProgram: TGLuint, index: TGLuint, bufSize: TGLsizei, 
-                         len: PGLsizei, size: PGLint, thetype: PGLenum, 
-                         name: PGLchar){.dynlib: dllname, importc.}
-proc glGetAttachedShaders*(theProgram: TGLuint, maxCount: TGLsizei, 
-                           count: PGLsizei, obj: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetAttribLocation*(theProgram: TGLuint, name: PGLchar): TGLint{.
-    dynlib: dllname, importc.}
-proc glGetProgramiv*(theProgram: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetProgramInfoLog*(theProgram: TGLuint, bufSize: TGLsizei, len: PGLsizei, 
-                          infoLog: PGLchar){.dynlib: dllname, importc.}
-proc glGetShaderiv*(shader: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetShaderInfoLog*(shader: TGLuint, bufSize: TGLsizei, len: PGLsizei, 
-                         infoLog: PGLchar){.dynlib: dllname, importc.}
-proc glGetShaderSource*(shader: TGLuint, bufSize: TGLsizei, len: PGLsizei, 
-                        source: PGLchar){.dynlib: dllname, importc.}
-proc glGetUniformLocation*(theProgram: TGLuint, name: PGLchar): TGLint{.
-    dynlib: dllname, importc.}
-proc glGetUniformfv*(theProgram: TGLuint, location: TGLint, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetUniformiv*(theProgram: TGLuint, location: TGLint, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribdv*(index: TGLuint, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribfv*(index: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribiv*(index: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribPointerv*(index: TGLuint, pname: TGLenum, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glIsProgram*(theProgram: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glIsShader*(shader: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glLinkProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glShaderSource*(shader: TGLuint, count: TGLsizei, str: PGLchar, len: PGLint){.
-    dynlib: dllname, importc.}
-proc glUseProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glUniform1f*(location: TGLint, v0: TGLfloat){.dynlib: dllname, importc.}
-proc glUniform2f*(location: TGLint, v0: TGLfloat, v1: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glUniform3f*(location: TGLint, v0: TGLfloat, v1: TGLfloat, v2: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform4f*(location: TGLint, v0: TGLfloat, v1: TGLfloat, v2: TGLfloat, 
-                  v3: TGLfloat){.dynlib: dllname, importc.}
-proc glUniform1i*(location: TGLint, v0: TGLint){.dynlib: dllname, importc.}
-proc glUniform2i*(location: TGLint, v0: TGLint, v1: TGLint){.dynlib: dllname, 
-    importc.}
-proc glUniform3i*(location: TGLint, v0: TGLint, v1: TGLint, v2: TGLint){.
-    dynlib: dllname, importc.}
-proc glUniform4i*(location: TGLint, v0: TGLint, v1: TGLint, v2: TGLint, v3: TGLint){.
-    dynlib: dllname, importc.}
-proc glUniform1fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform2fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform3fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform4fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform1iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform2iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform3iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform4iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniformMatrix2fv*(location: TGLint, count: TGLsizei, transpose: TGLboolean, 
-                         value: PGLfloat){.dynlib: dllname, importc.}
-proc glUniformMatrix3fv*(location: TGLint, count: TGLsizei, transpose: TGLboolean, 
-                         value: PGLfloat){.dynlib: dllname, importc.}
-proc glUniformMatrix4fv*(location: TGLint, count: TGLsizei, transpose: TGLboolean, 
-                         value: PGLfloat){.dynlib: dllname, importc.}
-proc glValidateProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib1d*(index: TGLuint, x: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib1dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib1f*(index: TGLuint, x: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1s*(index: TGLuint, x: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib2d*(index: TGLuint, x: TGLdouble, y: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2f*(index: TGLuint, x: TGLfloat, y: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib2fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib2s*(index: TGLuint, x: TGLshort, y: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib2sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib3d*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib3f*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib3s*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nbv*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4Niv*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nsv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nub*(index: TGLuint, x: TGLubyte, y: TGLubyte, z: TGLubyte, 
-                         w: TGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nubv*(index: TGLuint, v: PGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nuiv*(index: TGLuint, v: PGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nusv*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib4bv*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4d*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                       w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4f*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat, 
-                       w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4iv*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4s*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort, 
-                       w: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubv*(index: TGLuint, v: PGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4uiv*(index: TGLuint, v: PGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib4usv*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttribPointer*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                            normalized: TGLboolean, stride: TGLsizei, 
-                            pointer: PGLvoid){.dynlib: dllname, importc.}
-
-const 
-  GL_CONSTANT_COLOR* = 0x00008001
-  GL_ONE_MINUS_CONSTANT_COLOR* = 0x00008002
-  GL_CONSTANT_ALPHA* = 0x00008003
-  GL_ONE_MINUS_CONSTANT_ALPHA* = 0x00008004
-  constGL_BLEND_COLOR* = 0x00008005
-  GL_FUNC_ADD* = 0x00008006
-  GL_MIN* = 0x00008007
-  GL_MAX* = 0x00008008
-  constGL_BLEND_EQUATION* = 0x00008009
-  GL_FUNC_SUBTRACT* = 0x0000800A
-  GL_FUNC_REVERSE_SUBTRACT* = 0x0000800B
-  GL_CONVOLUTION_1D* = 0x00008010
-  GL_CONVOLUTION_2D* = 0x00008011
-  GL_SEPARABLE_2D* = 0x00008012
-  GL_CONVOLUTION_BORDER_MODE* = 0x00008013
-  GL_CONVOLUTION_FILTER_SCALE* = 0x00008014
-  GL_CONVOLUTION_FILTER_BIAS* = 0x00008015
-  GL_REDUCE* = 0x00008016
-  GL_CONVOLUTION_FORMAT* = 0x00008017
-  GL_CONVOLUTION_WIDTH* = 0x00008018
-  GL_CONVOLUTION_HEIGHT* = 0x00008019
-  GL_MAX_CONVOLUTION_WIDTH* = 0x0000801A
-  GL_MAX_CONVOLUTION_HEIGHT* = 0x0000801B
-  GL_POST_CONVOLUTION_RED_SCALE* = 0x0000801C
-  GL_POST_CONVOLUTION_GREEN_SCALE* = 0x0000801D
-  GL_POST_CONVOLUTION_BLUE_SCALE* = 0x0000801E
-  GL_POST_CONVOLUTION_ALPHA_SCALE* = 0x0000801F
-  GL_POST_CONVOLUTION_RED_BIAS* = 0x00008020
-  GL_POST_CONVOLUTION_GREEN_BIAS* = 0x00008021
-  GL_POST_CONVOLUTION_BLUE_BIAS* = 0x00008022
-  GL_POST_CONVOLUTION_ALPHA_BIAS* = 0x00008023
-  constGL_HISTOGRAM* = 0x00008024
-  GL_PROXY_HISTOGRAM* = 0x00008025
-  GL_HISTOGRAM_WIDTH* = 0x00008026
-  GL_HISTOGRAM_FORMAT* = 0x00008027
-  GL_HISTOGRAM_RED_SIZE* = 0x00008028
-  GL_HISTOGRAM_GREEN_SIZE* = 0x00008029
-  GL_HISTOGRAM_BLUE_SIZE* = 0x0000802A
-  GL_HISTOGRAM_ALPHA_SIZE* = 0x0000802B
-  GL_HISTOGRAM_LUMINANCE_SIZE* = 0x0000802C
-  GL_HISTOGRAM_SINK* = 0x0000802D
-  constGL_MINMAX* = 0x0000802E
-  GL_MINMAX_FORMAT* = 0x0000802F
-  GL_MINMAX_SINK* = 0x00008030
-  GL_TABLE_TOO_LARGE* = 0x00008031
-  GL_COLOR_MATRIX* = 0x000080B1
-  GL_COLOR_MATRIX_STACK_DEPTH* = 0x000080B2
-  GL_MAX_COLOR_MATRIX_STACK_DEPTH* = 0x000080B3
-  GL_POST_COLOR_MATRIX_RED_SCALE* = 0x000080B4
-  GL_POST_COLOR_MATRIX_GREEN_SCALE* = 0x000080B5
-  GL_POST_COLOR_MATRIX_BLUE_SCALE* = 0x000080B6
-  GL_POST_COLOR_MATRIX_ALPHA_SCALE* = 0x000080B7
-  GL_POST_COLOR_MATRIX_RED_BIAS* = 0x000080B8
-  GL_POST_COLOR_MATRIX_GREEN_BIAS* = 0x000080B9
-  GL_POST_COLOR_MATRIX_BLUE_BIAS* = 0x000080BA
-  GL_POST_COLOR_MATIX_ALPHA_BIAS* = 0x000080BB
-  constGL_COLOR_TABLE* = 0x000080D0
-  GL_POST_CONVOLUTION_COLOR_TABLE* = 0x000080D1
-  GL_POST_COLOR_MATRIX_COLOR_TABLE* = 0x000080D2
-  GL_PROXY_COLOR_TABLE* = 0x000080D3
-  GL_PROXY_POST_CONVOLUTION_COLOR_TABLE* = 0x000080D4
-  GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE* = 0x000080D5
-  GL_COLOR_TABLE_SCALE* = 0x000080D6
-  GL_COLOR_TABLE_BIAS* = 0x000080D7
-  GL_COLOR_TABLE_FORMAT* = 0x000080D8
-  GL_COLOR_TABLE_WIDTH* = 0x000080D9
-  GL_COLOR_TABLE_RED_SIZE* = 0x000080DA
-  GL_COLOR_TABLE_GREEN_SIZE* = 0x000080DB
-  GL_COLOR_TABLE_BLUE_SIZE* = 0x000080DC
-  GL_COLOR_TABLE_ALPHA_SIZE* = 0x000080DD
-  GL_COLOR_TABLE_LUMINANCE_SIZE* = 0x000080DE
-  GL_COLOR_TABLE_INTENSITY_SIZE* = 0x000080DF
-  GL_IGNORE_BORDER* = 0x00008150
-  GL_CONSTANT_BORDER* = 0x00008151
-  GL_WRAP_BORDER* = 0x00008152
-  GL_REPLICATE_BORDER* = 0x00008153
-  GL_CONVOLUTION_BORDER_COLOR* = 0x00008154
-
-proc glActiveTexture*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glClientActiveTexture*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glMultiTexCoord1d*(target: TGLenum, s: TGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord1dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord1f*(target: TGLenum, s: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord1fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord1i*(target: TGLenum, s: TGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1s*(target: TGLenum, s: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord1sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord2d*(target: TGLenum, s: TGLdouble, t: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord2f*(target: TGLenum, s: TGLfloat, t: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord2i*(target: TGLenum, s: TGLint, t: TGLint){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord2s*(target: TGLenum, s: TGLshort, t: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord3d*(target: TGLenum, s: TGLdouble, t: TGLdouble, r: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord3f*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord3i*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord3s*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4d*(target: TGLenum, s: TGLdouble, t: TGLdouble, r: TGLdouble, 
-                        q: TGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord4dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord4f*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat, 
-                        q: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord4fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord4i*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint, q: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord4iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord4s*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort, 
-                        q: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glLoadTransposeMatrixf*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glLoadTransposeMatrixd*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixf*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixd*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glSampleCoverage*(value: TGLclampf, invert: TGLboolean){.dynlib: dllname, 
-    importc.}
-proc glCompressedTexImage3D*(target: TGLenum, level: TGLint, 
-                             internalformat: TGLenum, width: TGLsizei, 
-                             height: TGLsizei, depth: TGLsizei, border: TGLint, 
-                             imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexImage2D*(target: TGLenum, level: TGLint, 
-                             internalformat: TGLenum, width: TGLsizei, 
-                             height: TGLsizei, border: TGLint, imageSize: TGLsizei, 
-                             data: PGLvoid){.dynlib: dllname, importc.}
-proc glCompressedTexImage1D*(target: TGLenum, level: TGLint, 
-                             internalformat: TGLenum, width: TGLsizei, 
-                             border: TGLint, imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage3D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                yoffset: TGLint, zoffset: TGLint, width: TGLsizei, 
-                                height: TGLsizei, depth: TGLsizei, format: TGLenum, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage2D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                yoffset: TGLint, width: TGLsizei, height: TGLsizei, 
-                                format: TGLenum, imageSize: TGLsizei, 
-                                data: PGLvoid){.dynlib: dllname, importc.}
-proc glCompressedTexSubImage1D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                width: TGLsizei, format: TGLenum, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetCompressedTexImage*(target: TGLenum, level: TGLint, img: PGLvoid){.
-    dynlib: dllname, importc.}
-
-  #***** GL_version_1_3 *****//
-const 
-  GL_TEXTURE0* = 0x000084C0
-  GL_TEXTURE1* = 0x000084C1
-  GL_TEXTURE2* = 0x000084C2
-  GL_TEXTURE3* = 0x000084C3
-  GL_TEXTURE4* = 0x000084C4
-  GL_TEXTURE5* = 0x000084C5
-  GL_TEXTURE6* = 0x000084C6
-  GL_TEXTURE7* = 0x000084C7
-  GL_TEXTURE8* = 0x000084C8
-  GL_TEXTURE9* = 0x000084C9
-  GL_TEXTURE10* = 0x000084CA
-  GL_TEXTURE11* = 0x000084CB
-  GL_TEXTURE12* = 0x000084CC
-  GL_TEXTURE13* = 0x000084CD
-  GL_TEXTURE14* = 0x000084CE
-  GL_TEXTURE15* = 0x000084CF
-  GL_TEXTURE16* = 0x000084D0
-  GL_TEXTURE17* = 0x000084D1
-  GL_TEXTURE18* = 0x000084D2
-  GL_TEXTURE19* = 0x000084D3
-  GL_TEXTURE20* = 0x000084D4
-  GL_TEXTURE21* = 0x000084D5
-  GL_TEXTURE22* = 0x000084D6
-  GL_TEXTURE23* = 0x000084D7
-  GL_TEXTURE24* = 0x000084D8
-  GL_TEXTURE25* = 0x000084D9
-  GL_TEXTURE26* = 0x000084DA
-  GL_TEXTURE27* = 0x000084DB
-  GL_TEXTURE28* = 0x000084DC
-  GL_TEXTURE29* = 0x000084DD
-  GL_TEXTURE30* = 0x000084DE
-  GL_TEXTURE31* = 0x000084DF
-  constGL_ACTIVE_TEXTURE* = 0x000084E0
-  constGL_CLIENT_ACTIVE_TEXTURE* = 0x000084E1
-  GL_MAX_TEXTURE_UNITS* = 0x000084E2
-  GL_TRANSPOSE_MODELVIEW_MATRIX* = 0x000084E3
-  GL_TRANSPOSE_PROJECTION_MATRIX* = 0x000084E4
-  GL_TRANSPOSE_TEXTURE_MATRIX* = 0x000084E5
-  GL_TRANSPOSE_COLOR_MATRIX* = 0x000084E6
-  GL_MULTISAMPLE* = 0x0000809D
-  GL_SAMPLE_ALPHA_TO_COVERAGE* = 0x0000809E
-  GL_SAMPLE_ALPHA_TO_ONE* = 0x0000809F
-  constGL_SAMPLE_COVERAGE* = 0x000080A0
-  GL_SAMPLE_BUFFERS* = 0x000080A8
-  GL_SAMPLES* = 0x000080A9
-  GL_SAMPLE_COVERAGE_VALUE* = 0x000080AA
-  GL_SAMPLE_COVERAGE_INVERT* = 0x000080AB
-  GL_MULTISAMPLE_BIT* = 0x20000000
-  GL_NORMAL_MAP* = 0x00008511
-  GL_REFLECTION_MAP* = 0x00008512
-  GL_TEXTURE_CUBE_MAP* = 0x00008513
-  GL_TEXTURE_BINDING_CUBE_MAP* = 0x00008514
-  GL_TEXTURE_CUBE_MAP_POSITIVE_X* = 0x00008515
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_X* = 0x00008516
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Y* = 0x00008517
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y* = 0x00008518
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Z* = 0x00008519
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z* = 0x0000851A
-  GL_PROXY_TEXTURE_CUBE_MAP* = 0x0000851B
-  GL_MAX_CUBE_MAP_TEXTURE_SIZE* = 0x0000851C
-  GL_COMPRESSED_ALPHA* = 0x000084E9
-  GL_COMPRESSED_LUMINANCE* = 0x000084EA
-  GL_COMPRESSED_LUMINANCE_ALPHA* = 0x000084EB
-  GL_COMPRESSED_INTENSITY* = 0x000084EC
-  GL_COMPRESSED_RGB* = 0x000084ED
-  GL_COMPRESSED_RGBA* = 0x000084EE
-  GL_TEXTURE_COMPRESSION_HINT* = 0x000084EF
-  GL_TEXTURE_COMPRESSED_IMAGE_SIZE* = 0x000086A0
-  GL_TEXTURE_COMPRESSED* = 0x000086A1
-  GL_NUM_COMPRESSED_TEXTURE_FORMATS* = 0x000086A2
-  GL_COMPRESSED_TEXTURE_FORMATS* = 0x000086A3
-  GL_CLAMP_TO_BORDER* = 0x0000812D
-  GL_CLAMP_TO_BORDER_SGIS* = 0x0000812D
-  GL_COMBINE* = 0x00008570
-  GL_COMBINE_RGB* = 0x00008571
-  GL_COMBINE_ALPHA* = 0x00008572
-  GL_SOURCE0_RGB* = 0x00008580
-  GL_SOURCE1_RGB* = 0x00008581
-  GL_SOURCE2_RGB* = 0x00008582
-  GL_SOURCE0_ALPHA* = 0x00008588
-  GL_SOURCE1_ALPHA* = 0x00008589
-  GL_SOURCE2_ALPHA* = 0x0000858A
-  GL_OPERAND0_RGB* = 0x00008590
-  GL_OPERAND1_RGB* = 0x00008591
-  GL_OPERAND2_RGB* = 0x00008592
-  GL_OPERAND0_ALPHA* = 0x00008598
-  GL_OPERAND1_ALPHA* = 0x00008599
-  GL_OPERAND2_ALPHA* = 0x0000859A
-  GL_RGB_SCALE* = 0x00008573
-  GL_ADD_SIGNED* = 0x00008574
-  GL_INTERPOLATE* = 0x00008575
-  GL_SUBTRACT* = 0x000084E7
-  GL_CONSTANT* = 0x00008576
-  GL_PRIMARY_COLOR* = 0x00008577
-  GL_PREVIOUS* = 0x00008578
-  GL_DOT3_RGB* = 0x000086AE
-  GL_DOT3_RGBA* = 0x000086AF
-
-const 
-  GL_TEXTURE0_ARB* = 0x000084C0
-  GL_TEXTURE1_ARB* = 0x000084C1
-  GL_TEXTURE2_ARB* = 0x000084C2
-  GL_TEXTURE3_ARB* = 0x000084C3
-  GL_TEXTURE4_ARB* = 0x000084C4
-  GL_TEXTURE5_ARB* = 0x000084C5
-  GL_TEXTURE6_ARB* = 0x000084C6
-  GL_TEXTURE7_ARB* = 0x000084C7
-  GL_TEXTURE8_ARB* = 0x000084C8
-  GL_TEXTURE9_ARB* = 0x000084C9
-  GL_TEXTURE10_ARB* = 0x000084CA
-  GL_TEXTURE11_ARB* = 0x000084CB
-  GL_TEXTURE12_ARB* = 0x000084CC
-  GL_TEXTURE13_ARB* = 0x000084CD
-  GL_TEXTURE14_ARB* = 0x000084CE
-  GL_TEXTURE15_ARB* = 0x000084CF
-  GL_TEXTURE16_ARB* = 0x000084D0
-  GL_TEXTURE17_ARB* = 0x000084D1
-  GL_TEXTURE18_ARB* = 0x000084D2
-  GL_TEXTURE19_ARB* = 0x000084D3
-  GL_TEXTURE20_ARB* = 0x000084D4
-  GL_TEXTURE21_ARB* = 0x000084D5
-  GL_TEXTURE22_ARB* = 0x000084D6
-  GL_TEXTURE23_ARB* = 0x000084D7
-  GL_TEXTURE24_ARB* = 0x000084D8
-  GL_TEXTURE25_ARB* = 0x000084D9
-  GL_TEXTURE26_ARB* = 0x000084DA
-  GL_TEXTURE27_ARB* = 0x000084DB
-  GL_TEXTURE28_ARB* = 0x000084DC
-  GL_TEXTURE29_ARB* = 0x000084DD
-  GL_TEXTURE30_ARB* = 0x000084DE
-  GL_TEXTURE31_ARB* = 0x000084DF
-  constGL_ACTIVE_TEXTURE_ARB* = 0x000084E0
-  constGL_CLIENT_ACTIVE_TEXTURE_ARB* = 0x000084E1
-  GL_MAX_TEXTURE_UNITS_ARB* = 0x000084E2
-
-  #***** GL_ARB_transpose_matrix *****//
-const 
-  GL_TRANSPOSE_MODELVIEW_MATRIX_ARB* = 0x000084E3
-  GL_TRANSPOSE_PROJECTION_MATRIX_ARB* = 0x000084E4
-  GL_TRANSPOSE_TEXTURE_MATRIX_ARB* = 0x000084E5
-  GL_TRANSPOSE_COLOR_MATRIX_ARB* = 0x000084E6
-
-proc glLoadTransposeMatrixfARB*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glLoadTransposeMatrixdARB*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixfARB*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixdARB*(m: PGLdouble){.dynlib: dllname, importc.}
-
-const 
-  WGL_SAMPLE_BUFFERS_ARB* = 0x00002041
-  WGL_SAMPLES_ARB* = 0x00002042
-  GL_MULTISAMPLE_ARB* = 0x0000809D
-  GL_SAMPLE_ALPHA_TO_COVERAGE_ARB* = 0x0000809E
-  GL_SAMPLE_ALPHA_TO_ONE_ARB* = 0x0000809F
-  constGL_SAMPLE_COVERAGE_ARB* = 0x000080A0
-  GL_MULTISAMPLE_BIT_ARB* = 0x20000000
-  GL_SAMPLE_BUFFERS_ARB* = 0x000080A8
-  GL_SAMPLES_ARB* = 0x000080A9
-  GL_SAMPLE_COVERAGE_VALUE_ARB* = 0x000080AA
-  GL_SAMPLE_COVERAGE_INVERT_ARB* = 0x000080AB
-
-const 
-  GL_NORMAL_MAP_ARB* = 0x00008511
-  GL_REFLECTION_MAP_ARB* = 0x00008512
-  GL_TEXTURE_CUBE_MAP_ARB* = 0x00008513
-  GL_TEXTURE_BINDING_CUBE_MAP_ARB* = 0x00008514
-  GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB* = 0x00008515
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB* = 0x00008516
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB* = 0x00008517
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB* = 0x00008518
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB* = 0x00008519
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB* = 0x0000851A
-  GL_PROXY_TEXTURE_CUBE_MAP_ARB* = 0x0000851B
-  GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB* = 0x0000851C
-
-const 
-  GL_DEPTH_COMPONENT16_ARB* = 0x000081A5
-  GL_DEPTH_COMPONENT24_ARB* = 0x000081A6
-  GL_DEPTH_COMPONENT32_ARB* = 0x000081A7
-  GL_TEXTURE_DEPTH_SIZE_ARB* = 0x0000884A
-  GL_DEPTH_TEXTURE_MODE_ARB* = 0x0000884B
-
-  #***** GL_ARB_point_parameters *****//
-const 
-  GL_POINT_SIZE_MIN_ARB* = 0x00008126
-  GL_POINT_SIZE_MAX_ARB* = 0x00008127
-  GL_POINT_FADE_THRESHOLD_SIZE_ARB* = 0x00008128
-  GL_POINT_DISTANCE_ATTENUATION_ARB* = 0x00008129
-
-proc glPointParameterfARB*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glPointParameterfvARB*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-const 
-  GL_TEXTURE_COMPARE_MODE_ARB* = 0x0000884C
-  GL_TEXTURE_COMPARE_FUNC_ARB* = 0x0000884D
-  GL_COMPARE_R_TO_TEXTURE_ARB* = 0x0000884E
-
-const 
-  GL_TEXTURE_COMPARE_FAIL_VALUE_ARB* = 0x000080BF
-  GL_CLAMP_TO_BORDER_ARB* = 0x0000812D
-
-const 
-  GL_COMPRESSED_ALPHA_ARB* = 0x000084E9
-  GL_COMPRESSED_LUMINANCE_ARB* = 0x000084EA
-  GL_COMPRESSED_LUMINANCE_ALPHA_ARB* = 0x000084EB
-  GL_COMPRESSED_INTENSITY_ARB* = 0x000084EC
-  GL_COMPRESSED_RGB_ARB* = 0x000084ED
-  GL_COMPRESSED_RGBA_ARB* = 0x000084EE
-  GL_TEXTURE_COMPRESSION_HINT_ARB* = 0x000084EF
-  GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB* = 0x000086A0
-  GL_TEXTURE_COMPRESSED_ARB* = 0x000086A1
-  GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB* = 0x000086A2
-  GL_COMPRESSED_TEXTURE_FORMATS_ARB* = 0x000086A3
-
-proc glCompressedTexImage3DARB*(target: TGLenum, level: TGLint, 
-                                internalformat: TGLenum, width: TGLsizei, 
-                                height: TGLsizei, depth: TGLsizei, border: TGLint, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexImage2DARB*(target: TGLenum, level: TGLint, 
-                                internalformat: TGLenum, width: TGLsizei, 
-                                height: TGLsizei, border: TGLint, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexImage1DARB*(target: TGLenum, level: TGLint, 
-                                internalformat: TGLenum, width: TGLsizei, 
-                                border: TGLint, imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage3DARB*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                   yoffset: TGLint, zoffset: TGLint, 
-                                   width: TGLsizei, height: TGLsizei, 
-                                   depth: TGLsizei, format: TGLenum, 
-                                   imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage2DARB*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                   yoffset: TGLint, width: TGLsizei, 
-                                   height: TGLsizei, format: TGLenum, 
-                                   imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage1DARB*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                   width: TGLsizei, format: TGLenum, 
-                                   imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetCompressedTexImageARB*(target: TGLenum, lod: TGLint, img: PGLvoid){.
-    dynlib: dllname, importc.}
-  #***** GL_ARB_texture_env_combine *****//
-const 
-  GL_COMBINE_ARB* = 0x00008570
-  GL_COMBINE_RGB_ARB* = 0x00008571
-  GL_COMBINE_ALPHA_ARB* = 0x00008572
-  GL_SOURCE0_RGB_ARB* = 0x00008580
-  GL_SOURCE1_RGB_ARB* = 0x00008581
-  GL_SOURCE2_RGB_ARB* = 0x00008582
-  GL_SOURCE0_ALPHA_ARB* = 0x00008588
-  GL_SOURCE1_ALPHA_ARB* = 0x00008589
-  GL_SOURCE2_ALPHA_ARB* = 0x0000858A
-  GL_OPERAND0_RGB_ARB* = 0x00008590
-  GL_OPERAND1_RGB_ARB* = 0x00008591
-  GL_OPERAND2_RGB_ARB* = 0x00008592
-  GL_OPERAND0_ALPHA_ARB* = 0x00008598
-  GL_OPERAND1_ALPHA_ARB* = 0x00008599
-  GL_OPERAND2_ALPHA_ARB* = 0x0000859A
-  GL_RGB_SCALE_ARB* = 0x00008573
-  GL_ADD_SIGNED_ARB* = 0x00008574
-  GL_INTERPOLATE_ARB* = 0x00008575
-  GL_SUBTRACT_ARB* = 0x000084E7
-  GL_CONSTANT_ARB* = 0x00008576
-  GL_PRIMARY_COLOR_ARB* = 0x00008577
-  GL_PREVIOUS_ARB* = 0x00008578
-
-  #***** GL_ARB_texture_env_crossbar *****//
-  #***** GL_ARB_texture_env_dot3 *****//
-const 
-  GL_DOT3_RGB_ARB* = 0x000086AE
-  GL_DOT3_RGBA_ARB* = 0x000086AF
-
-  #***** GL_ARB_texture_mirrored_repeat *****//
-const 
-  GL_MIRRORED_REPEAT_ARB* = 0x00008370
-
-  #***** GL_ARB_vertex_blend *****//
-const 
-  GL_MAX_VERTEX_UNITS_ARB* = 0x000086A4
-  GL_ACTIVE_VERTEX_UNITS_ARB* = 0x000086A5
-  GL_WEIGHT_SUM_UNITY_ARB* = 0x000086A6
-  constGL_VERTEX_BLEND_ARB* = 0x000086A7
-  GL_MODELVIEW0_ARB* = 0x00001700
-  GL_MODELVIEW1_ARB* = 0x0000850A
-  GL_MODELVIEW2_ARB* = 0x00008722
-  GL_MODELVIEW3_ARB* = 0x00008723
-  GL_MODELVIEW4_ARB* = 0x00008724
-  GL_MODELVIEW5_ARB* = 0x00008725
-  GL_MODELVIEW6_ARB* = 0x00008726
-  GL_MODELVIEW7_ARB* = 0x00008727
-  GL_MODELVIEW8_ARB* = 0x00008728
-  GL_MODELVIEW9_ARB* = 0x00008729
-  GL_MODELVIEW10_ARB* = 0x0000872A
-  GL_MODELVIEW11_ARB* = 0x0000872B
-  GL_MODELVIEW12_ARB* = 0x0000872C
-  GL_MODELVIEW13_ARB* = 0x0000872D
-  GL_MODELVIEW14_ARB* = 0x0000872E
-  GL_MODELVIEW15_ARB* = 0x0000872F
-  GL_MODELVIEW16_ARB* = 0x00008730
-  GL_MODELVIEW17_ARB* = 0x00008731
-  GL_MODELVIEW18_ARB* = 0x00008732
-  GL_MODELVIEW19_ARB* = 0x00008733
-  GL_MODELVIEW20_ARB* = 0x00008734
-  GL_MODELVIEW21_ARB* = 0x00008735
-  GL_MODELVIEW22_ARB* = 0x00008736
-  GL_MODELVIEW23_ARB* = 0x00008737
-  GL_MODELVIEW24_ARB* = 0x00008738
-  GL_MODELVIEW25_ARB* = 0x00008739
-  GL_MODELVIEW26_ARB* = 0x0000873A
-  GL_MODELVIEW27_ARB* = 0x0000873B
-  GL_MODELVIEW28_ARB* = 0x0000873C
-  GL_MODELVIEW29_ARB* = 0x0000873D
-  GL_MODELVIEW30_ARB* = 0x0000873E
-  GL_MODELVIEW31_ARB* = 0x0000873F
-  GL_CURRENT_WEIGHT_ARB* = 0x000086A8
-  GL_WEIGHT_ARRAY_TYPE_ARB* = 0x000086A9
-  GL_WEIGHT_ARRAY_STRIDE_ARB* = 0x000086AA
-  GL_WEIGHT_ARRAY_SIZE_ARB* = 0x000086AB
-  GL_WEIGHT_ARRAY_POINTER_ARB* = 0x000086AC
-  GL_WEIGHT_ARRAY_ARB* = 0x000086AD
-
-const 
-  GL_VERTEX_PROGRAM_ARB* = 0x00008620
-  GL_VERTEX_PROGRAM_POINT_SIZE_ARB* = 0x00008642
-  GL_VERTEX_PROGRAM_TWO_SIDE_ARB* = 0x00008643
-  GL_COLOR_SUM_ARB* = 0x00008458
-  GL_PROGRAM_FORMAT_ASCII_ARB* = 0x00008875
-  GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB* = 0x00008622
-  GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB* = 0x00008623
-  GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB* = 0x00008624
-  GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB* = 0x00008625
-  GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB* = 0x0000886A
-  GL_CURRENT_VERTEX_ATTRIB_ARB* = 0x00008626
-  GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB* = 0x00008645
-  GL_PROGRAM_LENGTH_ARB* = 0x00008627
-  GL_PROGRAM_FORMAT_ARB* = 0x00008876
-  GL_PROGRAM_BINDING_ARB* = 0x00008677
-  GL_PROGRAM_INSTRUCTIONS_ARB* = 0x000088A0
-  GL_MAX_PROGRAM_INSTRUCTIONS_ARB* = 0x000088A1
-  GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB* = 0x000088A2
-  GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB* = 0x000088A3
-  GL_PROGRAM_TEMPORARIES_ARB* = 0x000088A4
-  GL_MAX_PROGRAM_TEMPORARIES_ARB* = 0x000088A5
-  GL_PROGRAM_NATIVE_TEMPORARIES_ARB* = 0x000088A6
-  GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB* = 0x000088A7
-  GL_PROGRAM_PARAMETERS_ARB* = 0x000088A8
-  GL_MAX_PROGRAM_PARAMETERS_ARB* = 0x000088A9
-  GL_PROGRAM_NATIVE_PARAMETERS_ARB* = 0x000088AA
-  GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB* = 0x000088AB
-  GL_PROGRAM_ATTRIBS_ARB* = 0x000088AC
-  GL_MAX_PROGRAM_ATTRIBS_ARB* = 0x000088AD
-  GL_PROGRAM_NATIVE_ATTRIBS_ARB* = 0x000088AE
-  GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB* = 0x000088AF
-  GL_PROGRAM_ADDRESS_REGISTERS_ARB* = 0x000088B0
-  GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB* = 0x000088B1
-  GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB* = 0x000088B2
-  GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB* = 0x000088B3
-  GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB* = 0x000088B4
-  GL_MAX_PROGRAM_ENV_PARAMETERS_ARB* = 0x000088B5
-  GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB* = 0x000088B6
-  constGL_PROGRAM_STRING_ARB* = 0x00008628
-  GL_PROGRAM_ERROR_POSITION_ARB* = 0x0000864B
-  GL_CURRENT_MATRIX_ARB* = 0x00008641
-  GL_TRANSPOSE_CURRENT_MATRIX_ARB* = 0x000088B7
-  GL_CURRENT_MATRIX_STACK_DEPTH_ARB* = 0x00008640
-  GL_MAX_VERTEX_ATTRIBS_ARB* = 0x00008869
-  GL_MAX_PROGRAM_MATRICES_ARB* = 0x0000862F
-  GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB* = 0x0000862E
-  GL_PROGRAM_ERROR_STRING_ARB* = 0x00008874
-  GL_MATRIX0_ARB* = 0x000088C0
-  GL_MATRIX1_ARB* = 0x000088C1
-  GL_MATRIX2_ARB* = 0x000088C2
-  GL_MATRIX3_ARB* = 0x000088C3
-  GL_MATRIX4_ARB* = 0x000088C4
-  GL_MATRIX5_ARB* = 0x000088C5
-  GL_MATRIX6_ARB* = 0x000088C6
-  GL_MATRIX7_ARB* = 0x000088C7
-  GL_MATRIX8_ARB* = 0x000088C8
-  GL_MATRIX9_ARB* = 0x000088C9
-  GL_MATRIX10_ARB* = 0x000088CA
-  GL_MATRIX11_ARB* = 0x000088CB
-  GL_MATRIX12_ARB* = 0x000088CC
-  GL_MATRIX13_ARB* = 0x000088CD
-  GL_MATRIX14_ARB* = 0x000088CE
-  GL_MATRIX15_ARB* = 0x000088CF
-  GL_MATRIX16_ARB* = 0x000088D0
-  GL_MATRIX17_ARB* = 0x000088D1
-  GL_MATRIX18_ARB* = 0x000088D2
-  GL_MATRIX19_ARB* = 0x000088D3
-  GL_MATRIX20_ARB* = 0x000088D4
-  GL_MATRIX21_ARB* = 0x000088D5
-  GL_MATRIX22_ARB* = 0x000088D6
-  GL_MATRIX23_ARB* = 0x000088D7
-  GL_MATRIX24_ARB* = 0x000088D8
-  GL_MATRIX25_ARB* = 0x000088D9
-  GL_MATRIX26_ARB* = 0x000088DA
-  GL_MATRIX27_ARB* = 0x000088DB
-  GL_MATRIX28_ARB* = 0x000088DC
-  GL_MATRIX29_ARB* = 0x000088DD
-  GL_MATRIX30_ARB* = 0x000088DE
-  GL_MATRIX31_ARB* = 0x000088DF
-
-const 
-  GL_422_EXT* = 0x000080CC
-  GL_422_REV_EXT* = 0x000080CD
-  GL_422_AVERAGE_EXT* = 0x000080CE
-  GL_422_REV_AVERAGE_EXT* = 0x000080CF
-
-  #***** GL_EXT_abgr *****//
-const 
-  GL_ABGR_EXT* = 0x00008000
-
-  #***** GL_EXT_bgra *****//
-const 
-  GL_BGR_EXT* = 0x000080E0
-  GL_BGRA_EXT* = 0x000080E1
-
-  #***** GL_EXT_blend_color *****//
-const 
-  GL_CONSTANT_COLOR_EXT* = 0x00008001
-  GL_ONE_MINUS_CONSTANT_COLOR_EXT* = 0x00008002
-  GL_CONSTANT_ALPHA_EXT* = 0x00008003
-  GL_ONE_MINUS_CONSTANT_ALPHA_EXT* = 0x00008004
-  constGL_BLEND_COLOR_EXT* = 0x00008005
-
-proc glBlendColorEXT*(red: TGLclampf, green: TGLclampf, blue: TGLclampf, 
-                      alpha: TGLclampf){.dynlib: dllname, importc.}
-  #***** GL_EXT_blend_func_separate *****//
-const 
-  GL_BLEND_DST_RGB_EXT* = 0x000080C8
-  GL_BLEND_SRC_RGB_EXT* = 0x000080C9
-  GL_BLEND_DST_ALPHA_EXT* = 0x000080CA
-  GL_BLEND_SRC_ALPHA_EXT* = 0x000080CB
-
-proc glBlendFuncSeparateEXT*(sfactorRGB: TGLenum, dfactorRGB: TGLenum, 
-                             sfactorAlpha: TGLenum, dfactorAlpha: TGLenum){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_blend_logic_op *****//
-  #***** GL_EXT_blend_minmax *****//
-const 
-  GL_FUNC_ADD_EXT* = 0x00008006
-  GL_MIN_EXT* = 0x00008007
-  GL_MAX_EXT* = 0x00008008
-  constGL_BLEND_EQUATION_EXT* = 0x00008009
-
-proc glBlendEquationEXT*(mode: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_EXT_blend_subtract *****//
-const 
-  GL_FUNC_SUBTRACT_EXT* = 0x0000800A
-  GL_FUNC_REVERSE_SUBTRACT_EXT* = 0x0000800B
-
-  #***** GL_EXT_clip_volume_hint *****//
-const 
-  GL_CLIP_VOLUME_CLIPPING_HINT_EXT* = 0x000080F0
-
-  #***** GL_EXT_color_subtable *****//
-proc glColorSubTableEXT*(target: TGLenum, start: TGLsizei, count: TGLsizei, 
-                         format: TGLenum, thetype: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyColorSubTableEXT*(target: TGLenum, start: TGLsizei, x: TGLint, y: TGLint, 
-                             width: TGLsizei){.dynlib: dllname, importc.}
-  #***** GL_EXT_compiled_vertex_array *****//
-const 
-  GL_ARRAY_ELEMENT_LOCK_FIRST_EXT* = 0x000081A8
-  GL_ARRAY_ELEMENT_LOCK_COUNT_EXT* = 0x000081A9
-
-proc glLockArraysEXT*(first: TGLint, count: TGLsizei){.dynlib: dllname, importc.}
-proc glUnlockArraysEXT*(){.dynlib: dllname, importc.}
-  #***** GL_EXT_convolution *****//
-const 
-  GL_CONVOLUTION_1D_EXT* = 0x00008010
-  GL_CONVOLUTION_2D_EXT* = 0x00008011
-  GL_SEPARABLE_2D_EXT* = 0x00008012
-  GL_CONVOLUTION_BORDER_MODE_EXT* = 0x00008013
-  GL_CONVOLUTION_FILTER_SCALE_EXT* = 0x00008014
-  GL_CONVOLUTION_FILTER_BIAS_EXT* = 0x00008015
-  GL_REDUCE_EXT* = 0x00008016
-  GL_CONVOLUTION_FORMAT_EXT* = 0x00008017
-  GL_CONVOLUTION_WIDTH_EXT* = 0x00008018
-  GL_CONVOLUTION_HEIGHT_EXT* = 0x00008019
-  GL_MAX_CONVOLUTION_WIDTH_EXT* = 0x0000801A
-  GL_MAX_CONVOLUTION_HEIGHT_EXT* = 0x0000801B
-  GL_POST_CONVOLUTION_RED_SCALE_EXT* = 0x0000801C
-  GL_POST_CONVOLUTION_GREEN_SCALE_EXT* = 0x0000801D
-  GL_POST_CONVOLUTION_BLUE_SCALE_EXT* = 0x0000801E
-  GL_POST_CONVOLUTION_ALPHA_SCALE_EXT* = 0x0000801F
-  GL_POST_CONVOLUTION_RED_BIAS_EXT* = 0x00008020
-  GL_POST_CONVOLUTION_GREEN_BIAS_EXT* = 0x00008021
-  GL_POST_CONVOLUTION_BLUE_BIAS_EXT* = 0x00008022
-  GL_POST_CONVOLUTION_ALPHA_BIAS_EXT* = 0x00008023
-
-proc glConvolutionFilter1DEXT*(target: TGLenum, internalformat: TGLenum, 
-                               width: TGLsizei, format: TGLenum, thetype: TGLenum, 
-                               image: PGLvoid){.dynlib: dllname, importc.}
-proc glConvolutionFilter2DEXT*(target: TGLenum, internalformat: TGLenum, 
-                               width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                               thetype: TGLenum, image: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter1DEXT*(target: TGLenum, internalformat: TGLenum, 
-                                   x: TGLint, y: TGLint, width: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter2DEXT*(target: TGLenum, internalformat: TGLenum, 
-                                   x: TGLint, y: TGLint, width: TGLsizei, 
-                                   height: TGLsizei){.dynlib: dllname, importc.}
-proc glGetConvolutionFilterEXT*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                                image: PGLvoid){.dynlib: dllname, importc.}
-proc glSeparableFilter2DEXT*(target: TGLenum, internalformat: TGLenum, 
-                             width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                             thetype: TGLenum, row: PGLvoid, column: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetSeparableFilterEXT*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                              row: PGLvoid, column: PGLvoid, span: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameteriEXT*(target: TGLenum, pname: TGLenum, param: TGLint){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterivEXT*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterfEXT*(target: TGLenum, pname: TGLenum, param: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetConvolutionParameterivEXT*(target: TGLenum, pname: TGLenum, 
-                                     params: PGLint){.dynlib: dllname, importc.}
-proc glGetConvolutionParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                     params: PGLfloat){.dynlib: dllname, importc.}
-  #***** GL_EXT_fog_coord *****//
-const 
-  GL_FOG_COORDINATE_SOURCE_EXT* = 0x00008450
-  GL_FOG_COORDINATE_EXT* = 0x00008451
-  GL_FRAGMENT_DEPTH_EXT* = 0x00008452
-  GL_CURRENT_FOG_COORDINATE_EXT* = 0x00008453
-  GL_FOG_COORDINATE_ARRAY_TYPE_EXT* = 0x00008454
-  GL_FOG_COORDINATE_ARRAY_STRIDE_EXT* = 0x00008455
-  GL_FOG_COORDINATE_ARRAY_POINTER_EXT* = 0x00008456
-  GL_FOG_COORDINATE_ARRAY_EXT* = 0x00008457
-
-proc glFogCoordfEXfloat*(coord: TGLfloat){.dynlib: dllname, importc.}
-proc glFogCoorddEXdouble*(coord: TGLdouble){.dynlib: dllname, importc.}
-proc glFogCoordfvEXfloat*(coord: TGLfloat){.dynlib: dllname, importc.}
-proc glFogCoorddvEXdouble*(coord: TGLdouble){.dynlib: dllname, importc.}
-proc glFogCoordPointerEXT*(thetype: TGLenum, stride: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_histogram *****//
-const 
-  constGL_HISTOGRAM_EXT* = 0x00008024
-  GL_PROXY_HISTOGRAM_EXT* = 0x00008025
-  GL_HISTOGRAM_WIDTH_EXT* = 0x00008026
-  GL_HISTOGRAM_FORMAT_EXT* = 0x00008027
-  GL_HISTOGRAM_RED_SIZE_EXT* = 0x00008028
-  GL_HISTOGRAM_GREEN_SIZE_EXT* = 0x00008029
-  GL_HISTOGRAM_BLUE_SIZE_EXT* = 0x0000802A
-  GL_HISTOGRAM_ALPHA_SIZE_EXT* = 0x0000802B
-  GL_HISTOGRAM_LUMINANCE_SIZE_EXT* = 0x0000802C
-  GL_HISTOGRAM_SINK_EXT* = 0x0000802D
-  constGL_MINMAX_EXT* = 0x0000802E
-  GL_MINMAX_FORMAT_EXT* = 0x0000802F
-  GL_MINMAX_SINK_EXT* = 0x00008030
-
-proc glHistogramEXT*(target: TGLenum, width: TGLsizei, internalformat: TGLenum, 
-                     sink: TGLboolean){.dynlib: dllname, importc.}
-proc glResetHistogramEXT*(target: TGLenum){.dynlib: dllname, importc.}
-proc glGetHistogramEXT*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                        thetype: TGLenum, values: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glGetHistogramParameterivEXT*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetHistogramParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                   params: PGLfloat){.dynlib: dllname, importc.}
-proc glMinmaxEXT*(target: TGLenum, internalformat: TGLenum, sink: TGLboolean){.
-    dynlib: dllname, importc.}
-proc glResetMinmaxEXT*(target: TGLenum){.dynlib: dllname, importc.}
-proc glGetMinmaxEXT*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                     thetype: TGLenum, values: PGLvoid){.dynlib: dllname, importc.}
-proc glGetMinmaxParameterivEXT*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetMinmaxParameterfvEXT*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_multi_draw_arrays *****//
-proc glMultiDrawArraysEXT*(mode: TGLenum, first: PGLint, count: PGLsizei, 
-                           primcount: TGLsizei){.dynlib: dllname, importc.}
-proc glMultiDrawElementsEXT*(mode: TGLenum, count: PGLsizei, thetype: TGLenum, 
-                             indices: PGLvoid, primcount: TGLsizei){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_packed_pixels *****//
-const 
-  GL_UNSIGNED_BYTE_3_3_2_EXT* = 0x00008032
-  GL_UNSIGNED_SHORT_4_4_4_4_EXT* = 0x00008033
-  GL_UNSIGNED_SHORT_5_5_5_1_EXT* = 0x00008034
-  GL_UNSIGNED_INT_8_8_8_8_EXT* = 0x00008035
-  GL_UNSIGNED_INT_10_10_10_2_EXT* = 0x00008036
-
-  #***** GL_EXT_paletted_texture *****//
-const 
-  GL_COLOR_INDEX1_EXT* = 0x000080E2
-  GL_COLOR_INDEX2_EXT* = 0x000080E3
-  GL_COLOR_INDEX4_EXT* = 0x000080E4
-  GL_COLOR_INDEX8_EXT* = 0x000080E5
-  GL_COLOR_INDEX12_EXT* = 0x000080E6
-  GL_COLOR_INDEX16_EXT* = 0x000080E7
-  GL_COLOR_TABLE_FORMAT_EXT* = 0x000080D8
-  GL_COLOR_TABLE_WIDTH_EXT* = 0x000080D9
-  GL_COLOR_TABLE_RED_SIZE_EXT* = 0x000080DA
-  GL_COLOR_TABLE_GREEN_SIZE_EXT* = 0x000080DB
-  GL_COLOR_TABLE_BLUE_SIZE_EXT* = 0x000080DC
-  GL_COLOR_TABLE_ALPHA_SIZE_EXT* = 0x000080DD
-  GL_COLOR_TABLE_LUMINANCE_SIZE_EXT* = 0x000080DE
-  GL_COLOR_TABLE_INTENSITY_SIZE_EXT* = 0x000080DF
-  GL_TEXTURE_INDEX_SIZE_EXT* = 0x000080ED
-  GL_TEXTURE_1D* = 0x00000DE0
-  GL_TEXTURE_2D* = 0x00000DE1
-  GL_TEXTURE_3D_EXT* = 0x0000806F # GL_TEXTURE_CUBE_MAP_ARB  { already defined }
-  GL_PROXY_TEXTURE_1D* = 0x00008063
-  GL_PROXY_TEXTURE_2D* = 0x00008064
-  GL_PROXY_TEXTURE_3D_EXT* = 0x00008070 # GL_PROXY_TEXTURE_CUBE_MAP_ARB  { already defined }
-                                        # GL_TEXTURE_1D  { already defined }
-                                        # GL_TEXTURE_2D  { already defined }
-                                        # GL_TEXTURE_3D_EXT  { already defined }
-                                        # GL_TEXTURE_CUBE_MAP_ARB  { already defined }
-
-proc glColorTableEXT*(target: TGLenum, internalFormat: TGLenum, width: TGLsizei, 
-                      format: TGLenum, thetype: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-  # glColorSubTableEXT  { already defined }
-proc glGetColorTableEXT*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                         data: PGLvoid){.dynlib: dllname, importc.}
-proc glGetColorTableParameterivEXT*(target: TGLenum, pname: TGLenum, 
-                                    params: PGLint){.dynlib: dllname, importc.}
-proc glGetColorTableParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-  #***** GL_EXT_point_parameters *****//
-const 
-  GL_POINT_SIZE_MIN_EXT* = 0x00008126
-  GL_POINT_SIZE_MAX_EXT* = 0x00008127
-  GL_POINT_FADE_THRESHOLD_SIZE_EXT* = 0x00008128
-  GL_DISTANCE_ATTENUATION_EXT* = 0x00008129
-
-proc glPointParameterfEXT*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glPointParameterfvEXT*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_EXT_polygon_offset *****//
-const 
-  constGL_POLYGON_OFFSET_EXT* = 0x00008037
-  GL_POLYGON_OFFSET_FACTOR_EXT* = 0x00008038
-  GL_POLYGON_OFFSET_BIAS_EXT* = 0x00008039
-
-proc glPolygonOffsetEXT*(factor: TGLfloat, bias: TGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_EXT_secondary_color *****//
-const 
-  GL_COLOR_SUM_EXT* = 0x00008458
-  GL_CURRENT_SECONDARY_COLOR_EXT* = 0x00008459
-  GL_SECONDARY_COLOR_ARRAY_SIZE_EXT* = 0x0000845A
-  GL_SECONDARY_COLOR_ARRAY_TYPE_EXT* = 0x0000845B
-  GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT* = 0x0000845C
-  GL_SECONDARY_COLOR_ARRAY_POINTER_EXT* = 0x0000845D
-  GL_SECONDARY_COLOR_ARRAY_EXT* = 0x0000845E
-
-proc glSecondaryColor3bEXT*(components: TGLbyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3sEXT*(components: TGLshort){.dynlib: dllname, importc.}
-proc glSecondaryColor3iEXT*(components: TGLint){.dynlib: dllname, importc.}
-proc glSecondaryColor3fEXT*(components: TGLfloat){.dynlib: dllname, importc.}
-proc glSecondaryColor3dEXT*(components: TGLdouble){.dynlib: dllname, importc.}
-proc glSecondaryColor3ubEXT*(components: TGLubyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3usEXT*(components: TGLushort){.dynlib: dllname, importc.}
-proc glSecondaryColor3uiEXT*(components: TGLuint){.dynlib: dllname, importc.}
-proc glSecondaryColor3bvEXT*(components: TGLbyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3svEXT*(components: TGLshort){.dynlib: dllname, importc.}
-proc glSecondaryColor3ivEXT*(components: TGLint){.dynlib: dllname, importc.}
-proc glSecondaryColor3fvEXT*(components: TGLfloat){.dynlib: dllname, importc.}
-proc glSecondaryColor3dvEXT*(components: TGLdouble){.dynlib: dllname, importc.}
-proc glSecondaryColor3ubvEXT*(components: TGLubyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3usvEXT*(components: TGLushort){.dynlib: dllname, importc.}
-proc glSecondaryColor3uivEXT*(components: TGLuint){.dynlib: dllname, importc.}
-proc glSecondaryColorPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                                 pointer: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_EXT_separate_specular_color *****//
-const 
-  GL_LIGHT_MODEL_COLOR_CONTROL_EXT* = 0x000081F8
-  GL_SINGLE_COLOR_EXT* = 0x000081F9
-  GL_SEPARATE_SPECULAR_COLOR_EXT* = 0x000081FA
-
-  #***** GL_EXT_shadow_funcs *****//
-  #***** GL_EXT_shared_texture_palette *****//
-const 
-  GL_SHARED_TEXTURE_PALETTE_EXT* = 0x000081FB
-
-  #***** GL_EXT_stencil_two_side *****//
-const 
-  GL_STENCIL_TEST_TWO_SIDE_EXT* = 0x00008910
-  constGL_ACTIVE_STENCIL_FACE_EXT* = 0x00008911
-
-proc glActiveStencilFaceEXT*(face: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_EXT_stencil_wrap *****//
-const 
-  GL_INCR_WRAP_EXT* = 0x00008507
-  GL_DECR_WRAP_EXT* = 0x00008508
-
-  #***** GL_EXT_subtexture *****//
-proc glTexSubImage1DEXT*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                         width: TGLsizei, format: TGLenum, thetype: TGLenum, 
-                         pixels: PGLvoid){.dynlib: dllname, importc.}
-proc glTexSubImage2DEXT*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                         yoffset: TGLint, width: TGLsizei, height: TGLsizei, 
-                         format: TGLenum, thetype: TGLenum, pixels: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glTexSubImage3DEXT*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                         yoffset: TGLint, zoffset: TGLint, width: TGLsizei, 
-                         height: TGLsizei, depth: TGLsizei, format: TGLenum, 
-                         thetype: TGLenum, pixels: PGLvoid){.dynlib: dllname, 
-    importc.}
-  #***** GL_EXT_texture3D *****//
-const 
-  GL_PACK_SKIP_IMAGES_EXT* = 0x0000806B
-  GL_PACK_IMAGE_HEIGHT_EXT* = 0x0000806C
-  GL_UNPACK_SKIP_IMAGES_EXT* = 0x0000806D
-  GL_UNPACK_IMAGE_HEIGHT_EXT* = 0x0000806E # GL_TEXTURE_3D_EXT  { already defined }
-                                           # GL_PROXY_TEXTURE_3D_EXT  { already defined }
-  GL_TEXTURE_DEPTH_EXT* = 0x00008071
-  GL_TEXTURE_WRAP_R_EXT* = 0x00008072
-  GL_MAX_3D_TEXTURE_SIZE_EXT* = 0x00008073
-
-proc glTexImage3DEXT*(target: TGLenum, level: TGLint, internalformat: TGLenum, 
-                      width: TGLsizei, height: TGLsizei, depth: TGLsizei, 
-                      border: TGLint, format: TGLenum, thetype: TGLenum, 
-                      pixels: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_EXT_texture_compression_s3tc *****//
-const 
-  GL_COMPRESSED_RGB_S3TC_DXT1_EXT* = 0x000083F0
-  GL_COMPRESSED_RGBA_S3TC_DXT1_EXT* = 0x000083F1
-  GL_COMPRESSED_RGBA_S3TC_DXT3_EXT* = 0x000083F2
-  GL_COMPRESSED_RGBA_S3TC_DXT5_EXT* = 0x000083F3
-
-  #***** GL_EXT_texture_env_add *****//
-  #***** GL_EXT_texture_env_combine *****//
-const 
-  GL_COMBINE_EXT* = 0x00008570
-  GL_COMBINE_RGB_EXT* = 0x00008571
-  GL_COMBINE_ALPHA_EXT* = 0x00008572
-  GL_SOURCE0_RGB_EXT* = 0x00008580
-  GL_SOURCE1_RGB_EXT* = 0x00008581
-  GL_SOURCE2_RGB_EXT* = 0x00008582
-  GL_SOURCE0_ALPHA_EXT* = 0x00008588
-  GL_SOURCE1_ALPHA_EXT* = 0x00008589
-  GL_SOURCE2_ALPHA_EXT* = 0x0000858A
-  GL_OPERAND0_RGB_EXT* = 0x00008590
-  GL_OPERAND1_RGB_EXT* = 0x00008591
-  GL_OPERAND2_RGB_EXT* = 0x00008592
-  GL_OPERAND0_ALPHA_EXT* = 0x00008598
-  GL_OPERAND1_ALPHA_EXT* = 0x00008599
-  GL_OPERAND2_ALPHA_EXT* = 0x0000859A
-  GL_RGB_SCALE_EXT* = 0x00008573
-  GL_ADD_SIGNED_EXT* = 0x00008574
-  GL_INTERPOLATE_EXT* = 0x00008575
-  GL_CONSTANT_EXT* = 0x00008576
-  GL_PRIMARY_COLOR_EXT* = 0x00008577
-  GL_PREVIOUS_EXT* = 0x00008578
-
-  #***** GL_EXT_texture_env_dot3 *****//
-const 
-  GL_DOT3_RGB_EXT* = 0x00008740
-  GL_DOT3_RGBA_EXT* = 0x00008741
-
-  #***** GL_EXT_texture_filter_anisotropic *****//
-const 
-  GL_TEXTURE_MAX_ANISOTROPY_EXT* = 0x000084FE
-  GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT* = 0x000084FF
-
-  #***** GL_EXT_texture_lod_bias *****//
-const 
-  GL_TEXTURE_FILTER_CONTROL_EXT* = 0x00008500
-  GL_TEXTURE_LOD_BIAS_EXT* = 0x00008501
-  GL_MAX_TEXTURE_LOD_BIAS_EXT* = 0x000084FD
-
-  #***** GL_EXT_texture_object *****//
-const 
-  GL_TEXTURE_PRIORITY_EXT* = 0x00008066
-  GL_TEXTURE_RESIDENT_EXT* = 0x00008067
-  GL_TEXTURE_1D_BINDING_EXT* = 0x00008068
-  GL_TEXTURE_2D_BINDING_EXT* = 0x00008069
-  GL_TEXTURE_3D_BINDING_EXT* = 0x0000806A
-
-proc glGenTexturesEXT*(n: TGLsizei, textures: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteTexturesEXT*(n: TGLsizei, textures: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glBindTextureEXT*(target: TGLenum, texture: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glPrioritizeTexturesEXT*(n: TGLsizei, textures: PGLuint, 
-                              priorities: PGLclampf){.dynlib: dllname, importc.}
-proc glAreTexturesResidentEXT*(n: TGLsizei, textures: PGLuint, 
-                               residences: PGLboolean): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glIsTextureEXT*(texture: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-  #***** GL_EXT_vertex_array *****//
-const 
-  GL_VERTEX_ARRAY_EXT* = 0x00008074
-  GL_NORMAL_ARRAY_EXT* = 0x00008075
-  GL_COLOR_ARRAY_EXT* = 0x00008076
-  GL_INDEX_ARRAY_EXT* = 0x00008077
-  GL_TEXTURE_COORD_ARRAY_EXT* = 0x00008078
-  GL_EDGE_FLAG_ARRAY_EXT* = 0x00008079
-  GL_DOUBLE_EXT* = 0x0000140A
-  GL_VERTEX_ARRAY_SIZE_EXT* = 0x0000807A
-  GL_VERTEX_ARRAY_TYPE_EXT* = 0x0000807B
-  GL_VERTEX_ARRAY_STRIDE_EXT* = 0x0000807C
-  GL_VERTEX_ARRAY_COUNT_EXT* = 0x0000807D
-  GL_NORMAL_ARRAY_TYPE_EXT* = 0x0000807E
-  GL_NORMAL_ARRAY_STRIDE_EXT* = 0x0000807F
-  GL_NORMAL_ARRAY_COUNT_EXT* = 0x00008080
-  GL_COLOR_ARRAY_SIZE_EXT* = 0x00008081
-  GL_COLOR_ARRAY_TYPE_EXT* = 0x00008082
-  GL_COLOR_ARRAY_STRIDE_EXT* = 0x00008083
-  GL_COLOR_ARRAY_COUNT_EXT* = 0x00008084
-  GL_INDEX_ARRAY_TYPE_EXT* = 0x00008085
-  GL_INDEX_ARRAY_STRIDE_EXT* = 0x00008086
-  GL_INDEX_ARRAY_COUNT_EXT* = 0x00008087
-  GL_TEXTURE_COORD_ARRAY_SIZE_EXT* = 0x00008088
-  GL_TEXTURE_COORD_ARRAY_TYPE_EXT* = 0x00008089
-  GL_TEXTURE_COORD_ARRAY_STRIDE_EXT* = 0x0000808A
-  GL_TEXTURE_COORD_ARRAY_COUNT_EXT* = 0x0000808B
-  GL_EDGE_FLAG_ARRAY_STRIDE_EXT* = 0x0000808C
-  GL_EDGE_FLAG_ARRAY_COUNT_EXT* = 0x0000808D
-  GL_VERTEX_ARRAY_POINTER_EXT* = 0x0000808E
-  GL_NORMAL_ARRAY_POINTER_EXT* = 0x0000808F
-  GL_COLOR_ARRAY_POINTER_EXT* = 0x00008090
-  GL_INDEX_ARRAY_POINTER_EXT* = 0x00008091
-  GL_TEXTURE_COORD_ARRAY_POINTER_EXT* = 0x00008092
-  GL_EDGE_FLAG_ARRAY_POINTER_EXT* = 0x00008093
-
-proc glArrayElementEXT*(i: TGLint){.dynlib: dllname, importc.}
-proc glDrawArraysEXT*(mode: TGLenum, first: TGLint, count: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glVertexPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                         count: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glNormalPointerEXT*(thetype: TGLenum, stride: TGLsizei, count: TGLsizei, 
-                         pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glColorPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                        count: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glIndexPointerEXT*(thetype: TGLenum, stride: TGLsizei, count: TGLsizei, 
-                        pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glTexCoordPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                           count: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glEdgeFlagPointerEXT*(stride: TGLsizei, count: TGLsizei, pointer: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetPointervEXT*(pname: TGLenum, params: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_EXT_vertex_shader *****//
-const 
-  GL_VERTEX_SHADER_EXT* = 0x00008780
-  GL_VARIANT_VALUE_EXT* = 0x000087E4
-  GL_VARIANT_DATATYPE_EXT* = 0x000087E5
-  GL_VARIANT_ARRAY_STRIDE_EXT* = 0x000087E6
-  GL_VARIANT_ARRAY_TYPE_EXT* = 0x000087E7
-  GL_VARIANT_ARRAY_EXT* = 0x000087E8
-  GL_VARIANT_ARRAY_POINTER_EXT* = 0x000087E9
-  GL_INVARIANT_VALUE_EXT* = 0x000087EA
-  GL_INVARIANT_DATATYPE_EXT* = 0x000087EB
-  GL_LOCAL_CONSTANT_VALUE_EXT* = 0x000087EC
-  GL_LOCAL_CONSTANT_DATATYPE_EXT* = 0x000087ED
-  GL_OP_INDEX_EXT* = 0x00008782
-  GL_OP_NEGATE_EXT* = 0x00008783
-  GL_OP_DOT3_EXT* = 0x00008784
-  GL_OP_DOT4_EXT* = 0x00008785
-  GL_OP_MUL_EXT* = 0x00008786
-  GL_OP_ADD_EXT* = 0x00008787
-  GL_OP_MADD_EXT* = 0x00008788
-  GL_OP_FRAC_EXT* = 0x00008789
-  GL_OP_MAX_EXT* = 0x0000878A
-  GL_OP_MIN_EXT* = 0x0000878B
-  GL_OP_SET_GE_EXT* = 0x0000878C
-  GL_OP_SET_LT_EXT* = 0x0000878D
-  GL_OP_CLAMP_EXT* = 0x0000878E
-  GL_OP_FLOOR_EXT* = 0x0000878F
-  GL_OP_ROUND_EXT* = 0x00008790
-  GL_OP_EXP_BASE_2_EXT* = 0x00008791
-  GL_OP_LOG_BASE_2_EXT* = 0x00008792
-  GL_OP_POWER_EXT* = 0x00008793
-  GL_OP_RECIP_EXT* = 0x00008794
-  GL_OP_RECIP_SQRT_EXT* = 0x00008795
-  GL_OP_SUB_EXT* = 0x00008796
-  GL_OP_CROSS_PRODUCT_EXT* = 0x00008797
-  GL_OP_MULTIPLY_MATRIX_EXT* = 0x00008798
-  GL_OP_MOV_EXT* = 0x00008799
-  GL_OUTPUT_VERTEX_EXT* = 0x0000879A
-  GL_OUTPUT_COLOR0_EXT* = 0x0000879B
-  GL_OUTPUT_COLOR1_EXT* = 0x0000879C
-  GL_OUTPUT_TEXTURE_COORD0_EXT* = 0x0000879D
-  GL_OUTPUT_TEXTURE_COORD1_EXT* = 0x0000879E
-  GL_OUTPUT_TEXTURE_COORD2_EXT* = 0x0000879F
-  GL_OUTPUT_TEXTURE_COORD3_EXT* = 0x000087A0
-  GL_OUTPUT_TEXTURE_COORD4_EXT* = 0x000087A1
-  GL_OUTPUT_TEXTURE_COORD5_EXT* = 0x000087A2
-  GL_OUTPUT_TEXTURE_COORD6_EXT* = 0x000087A3
-  GL_OUTPUT_TEXTURE_COORD7_EXT* = 0x000087A4
-  GL_OUTPUT_TEXTURE_COORD8_EXT* = 0x000087A5
-  GL_OUTPUT_TEXTURE_COORD9_EXT* = 0x000087A6
-  GL_OUTPUT_TEXTURE_COORD10_EXT* = 0x000087A7
-  GL_OUTPUT_TEXTURE_COORD11_EXT* = 0x000087A8
-  GL_OUTPUT_TEXTURE_COORD12_EXT* = 0x000087A9
-  GL_OUTPUT_TEXTURE_COORD13_EXT* = 0x000087AA
-  GL_OUTPUT_TEXTURE_COORD14_EXT* = 0x000087AB
-  GL_OUTPUT_TEXTURE_COORD15_EXT* = 0x000087AC
-  GL_OUTPUT_TEXTURE_COORD16_EXT* = 0x000087AD
-  GL_OUTPUT_TEXTURE_COORD17_EXT* = 0x000087AE
-  GL_OUTPUT_TEXTURE_COORD18_EXT* = 0x000087AF
-  GL_OUTPUT_TEXTURE_COORD19_EXT* = 0x000087B0
-  GL_OUTPUT_TEXTURE_COORD20_EXT* = 0x000087B1
-  GL_OUTPUT_TEXTURE_COORD21_EXT* = 0x000087B2
-  GL_OUTPUT_TEXTURE_COORD22_EXT* = 0x000087B3
-  GL_OUTPUT_TEXTURE_COORD23_EXT* = 0x000087B4
-  GL_OUTPUT_TEXTURE_COORD24_EXT* = 0x000087B5
-  GL_OUTPUT_TEXTURE_COORD25_EXT* = 0x000087B6
-  GL_OUTPUT_TEXTURE_COORD26_EXT* = 0x000087B7
-  GL_OUTPUT_TEXTURE_COORD27_EXT* = 0x000087B8
-  GL_OUTPUT_TEXTURE_COORD28_EXT* = 0x000087B9
-  GL_OUTPUT_TEXTURE_COORD29_EXT* = 0x000087BA
-  GL_OUTPUT_TEXTURE_COORD30_EXT* = 0x000087BB
-  GL_OUTPUT_TEXTURE_COORD31_EXT* = 0x000087BC
-  GL_OUTPUT_FOG_EXT* = 0x000087BD
-  GL_SCALAR_EXT* = 0x000087BE
-  GL_VECTOR_EXT* = 0x000087BF
-  GL_MATRIX_EXT* = 0x000087C0
-  GL_VARIANT_EXT* = 0x000087C1
-  GL_INVARIANT_EXT* = 0x000087C2
-  GL_LOCAL_CONSTANT_EXT* = 0x000087C3
-  GL_LOCAL_EXT* = 0x000087C4
-  GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT* = 0x000087C5
-  GL_MAX_VERTEX_SHADER_VARIANTS_EXT* = 0x000087C6
-  GL_MAX_VERTEX_SHADER_INVARIANTS_EXT* = 0x000087C7
-  GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT* = 0x000087C8
-  GL_MAX_VERTEX_SHADER_LOCALS_EXT* = 0x000087C9
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT* = 0x000087CA
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT* = 0x000087CB
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT* = 0x000087CC
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT* = 0x000087CD
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT* = 0x000087CE
-  GL_VERTEX_SHADER_INSTRUCTIONS_EXT* = 0x000087CF
-  GL_VERTEX_SHADER_VARIANTS_EXT* = 0x000087D0
-  GL_VERTEX_SHADER_INVARIANTS_EXT* = 0x000087D1
-  GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT* = 0x000087D2
-  GL_VERTEX_SHADER_LOCALS_EXT* = 0x000087D3
-  GL_VERTEX_SHADER_BINDING_EXT* = 0x00008781
-  GL_VERTEX_SHADER_OPTIMIZED_EXT* = 0x000087D4
-  GL_X_EXT* = 0x000087D5
-  GL_Y_EXT* = 0x000087D6
-  GL_Z_EXT* = 0x000087D7
-  GL_W_EXT* = 0x000087D8
-  GL_NEGATIVE_X_EXT* = 0x000087D9
-  GL_NEGATIVE_Y_EXT* = 0x000087DA
-  GL_NEGATIVE_Z_EXT* = 0x000087DB
-  GL_NEGATIVE_W_EXT* = 0x000087DC
-  GL_ZERO_EXT* = 0x000087DD
-  GL_ONE_EXT* = 0x000087DE
-  GL_NEGATIVE_ONE_EXT* = 0x000087DF
-  GL_NORMALIZED_RANGE_EXT* = 0x000087E0
-  GL_FULL_RANGE_EXT* = 0x000087E1
-  GL_CURRENT_VERTEX_EXT* = 0x000087E2
-  GL_MVP_MATRIX_EXT* = 0x000087E3
-
-proc glBeginVertexShaderEXT*(){.dynlib: dllname, importc.}
-proc glEndVertexShaderEXT*(){.dynlib: dllname, importc.}
-proc glBindVertexShaderEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glGenVertexShadersEXT*(range: TGLuint): TGLuint{.dynlib: dllname, importc.}
-proc glDeleteVertexShaderEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glShaderOp1EXT*(op: TGLenum, res: TGLuint, arg1: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glShaderOp2EXT*(op: TGLenum, res: TGLuint, arg1: TGLuint, arg2: TGLuint){.
-    dynlib: dllname, importc.}
-proc glShaderOp3EXT*(op: TGLenum, res: TGLuint, arg1: TGLuint, arg2: TGLuint, 
-                     arg3: TGLuint){.dynlib: dllname, importc.}
-proc glSwizzleEXT*(res: TGLuint, theIn: TGLuint, outX: TGLenum, outY: TGLenum, 
-                   outZ: TGLenum, outW: TGLenum){.dynlib: dllname, importc.}
-proc glWriteMaskEXT*(res: TGLuint, theIn: TGLuint, outX: TGLenum, outY: TGLenum, 
-                     outZ: TGLenum, outW: TGLenum){.dynlib: dllname, importc.}
-proc glInsertComponentEXT*(res: TGLuint, src: TGLuint, num: TGLuint){.
-    dynlib: dllname, importc.}
-proc glExtractComponentEXT*(res: TGLuint, src: TGLuint, num: TGLuint){.
-    dynlib: dllname, importc.}
-proc glGenSymbolsEXT*(datatype: TGLenum, storagetype: TGLenum, range: TGLenum, 
-                      components: TGLuint): TGLuint{.dynlib: dllname, importc.}
-proc glSetInvariantEXT*(id: TGLuint, thetype: TGLenum, address: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glSetLocalConstantEXT*(id: TGLuint, thetype: TGLenum, address: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glVariantbvEXT*(id: TGLuint, address: PGLbyte){.dynlib: dllname, importc.}
-proc glVariantsvEXT*(id: TGLuint, address: PGLshort){.dynlib: dllname, importc.}
-proc glVariantivEXT*(id: TGLuint, address: PGLint){.dynlib: dllname, importc.}
-proc glVariantfvEXT*(id: TGLuint, address: PGLfloat){.dynlib: dllname, importc.}
-proc glVariantdvEXT*(id: TGLuint, address: PGLdouble){.dynlib: dllname, importc.}
-proc glVariantubvEXT*(id: TGLuint, address: PGLubyte){.dynlib: dllname, importc.}
-proc glVariantusvEXT*(id: TGLuint, address: PGLushort){.dynlib: dllname, importc.}
-proc glVariantuivEXT*(id: TGLuint, address: PGLuint){.dynlib: dllname, importc.}
-proc glVariantPointerEXT*(id: TGLuint, thetype: TGLenum, stride: TGLuint, 
-                          address: PGLvoid){.dynlib: dllname, importc.}
-proc glEnableVariantClientStateEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glDisableVariantClientStateEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glBindLightParameterEXT*(light: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindMaterialParameterEXT*(face: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindTexGenParameterEXT*(theunit: TGLenum, coord: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindTextureUnitParameterEXT*(theunit: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindParameterEXT*(value: TGLenum): TGLuint{.dynlib: dllname, importc.}
-proc glIsVariantEnabledEXT*(id: TGLuint, cap: TGLenum): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glGetVariantBooleanvEXT*(id: TGLuint, value: TGLenum, data: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetVariantIntegervEXT*(id: TGLuint, value: TGLenum, data: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVariantFloatvEXT*(id: TGLuint, value: TGLenum, data: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVariantPointervEXT*(id: TGLuint, value: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetInvariantBooleanvEXT*(id: TGLuint, value: TGLenum, data: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetInvariantIntegervEXT*(id: TGLuint, value: TGLenum, data: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetInvariantFloatvEXT*(id: TGLuint, value: TGLenum, data: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetLocalConstantBooleanvEXT*(id: TGLuint, value: TGLenum, data: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetLocalConstantIntegervEXT*(id: TGLuint, value: TGLenum, data: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetLocalConstantFloatvEXT*(id: TGLuint, value: TGLenum, data: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_vertex_weighting *****//
-const 
-  GL_VERTEX_WEIGHTING_EXT* = 0x00008509
-  GL_MODELVIEW0_EXT* = 0x00001700
-  GL_MODELVIEW1_EXT* = 0x0000850A
-  GL_MODELVIEW0_MATRIX_EXT* = 0x00000BA6
-  GL_MODELVIEW1_MATRIX_EXT* = 0x00008506
-  GL_CURRENT_VERTEX_WEIGHT_EXT* = 0x0000850B
-  GL_VERTEX_WEIGHT_ARRAY_EXT* = 0x0000850C
-  GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT* = 0x0000850D
-  GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT* = 0x0000850E
-  GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT* = 0x0000850F
-  GL_MODELVIEW0_STACK_DEPTH_EXT* = 0x00000BA3
-  GL_MODELVIEW1_STACK_DEPTH_EXT* = 0x00008502
-  GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT* = 0x00008510
-
-proc glVertexWeightfEXT*(weight: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexWeightfvEXT*(weight: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexWeightPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                               pointer: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_HP_occlusion_test *****//
-const 
-  GL_OCCLUSION_TEST_HP* = 0x00008165
-  GL_OCCLUSION_TEST_RESULT_HP* = 0x00008166
-
-  #***** GL_NV_blend_square *****//
-  #***** GL_NV_copy_depth_to_color *****//
-const 
-  GL_DEPTH_STENCIL_TO_RGBA_NV* = 0x0000886E
-  GL_DEPTH_STENCIL_TO_BGRA_NV* = 0x0000886F
-
-  #***** GL_NV_depth_clamp *****//
-const 
-  GL_DEPTH_CLAMP_NV* = 0x0000864F
-
-  #***** GL_NV_evaluators *****//
-const 
-  GL_EVAL_2D_NV* = 0x000086C0
-  GL_EVAL_TRIANGULAR_2D_NV* = 0x000086C1
-  GL_MAP_TESSELLATION_NV* = 0x000086C2
-  GL_MAP_ATTRIB_U_ORDER_NV* = 0x000086C3
-  GL_MAP_ATTRIB_V_ORDER_NV* = 0x000086C4
-  GL_EVAL_FRACTIONAL_TESSELLATION_NV* = 0x000086C5
-  GL_EVAL_VERTEX_ATTRIB0_NV* = 0x000086C6
-  GL_EVAL_VERTEX_ATTRIB1_NV* = 0x000086C7
-  GL_EVAL_VERTEX_ATTRIB2_NV* = 0x000086C8
-  GL_EVAL_VERTEX_ATTRIB3_NV* = 0x000086C9
-  GL_EVAL_VERTEX_ATTRIB4_NV* = 0x000086CA
-  GL_EVAL_VERTEX_ATTRIB5_NV* = 0x000086CB
-  GL_EVAL_VERTEX_ATTRIB6_NV* = 0x000086CC
-  GL_EVAL_VERTEX_ATTRIB7_NV* = 0x000086CD
-  GL_EVAL_VERTEX_ATTRIB8_NV* = 0x000086CE
-  GL_EVAL_VERTEX_ATTRIB9_NV* = 0x000086CF
-  GL_EVAL_VERTEX_ATTRIB10_NV* = 0x000086D0
-  GL_EVAL_VERTEX_ATTRIB11_NV* = 0x000086D1
-  GL_EVAL_VERTEX_ATTRIB12_NV* = 0x000086D2
-  GL_EVAL_VERTEX_ATTRIB13_NV* = 0x000086D3
-  GL_EVAL_VERTEX_ATTRIB14_NV* = 0x000086D4
-  GL_EVAL_VERTEX_ATTRIB15_NV* = 0x000086D5
-  GL_MAX_MAP_TESSELLATION_NV* = 0x000086D6
-  GL_MAX_RATIONAL_EVAL_ORDER_NV* = 0x000086D7
-
-proc glMapControlPointsNV*(target: TGLenum, index: TGLuint, thetype: TGLenum, 
-                           ustride: TGLsizei, vstride: TGLsizei, uorder: TGLint, 
-                           vorder: TGLint, thepacked: TGLboolean, points: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glMapParameterivNV*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glMapParameterfvNV*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetMapControlPointsNV*(target: TGLenum, index: TGLuint, thetype: TGLenum, 
-                              ustride: TGLsizei, vstride: TGLsizei, 
-                              thepacked: TGLboolean, points: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetMapParameterivNV*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetMapParameterfvNV*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetMapAttribParameterivNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                  params: PGLint){.dynlib: dllname, importc.}
-proc glGetMapAttribParameterfvNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glEvalMapsNV*(target: TGLenum, mode: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_NV_fence *****//
-const 
-  GL_ALL_COMPLETED_NV* = 0x000084F2
-  GL_FENCE_STATUS_NV* = 0x000084F3
-  GL_FENCE_CONDITION_NV* = 0x000084F4
-
-proc glGenFencesNV*(n: TGLsizei, fences: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteFencesNV*(n: TGLsizei, fences: PGLuint){.dynlib: dllname, importc.}
-proc glSetFenceNV*(fence: TGLuint, condition: TGLenum){.dynlib: dllname, importc.}
-proc glTestFenceNV*(fence: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glFinishFenceNV*(fence: TGLuint){.dynlib: dllname, importc.}
-proc glIsFenceNV*(fence: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glGetFenceivNV*(fence: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_fog_distance *****//
-const 
-  GL_FOG_DISTANCE_MODE_NV* = 0x0000855A
-  GL_EYE_RADIAL_NV* = 0x0000855B
-  GL_EYE_PLANE_ABSOLUTE_NV* = 0x0000855C
-
-  #***** GL_NV_light_max_exponent *****//
-const 
-  GL_MAX_SHININESS_NV* = 0x00008504
-  GL_MAX_SPOT_EXPONENT_NV* = 0x00008505
-
-  #***** GL_NV_multisample_filter_hint *****//
-const 
-  GL_MULTISAMPLE_FILTER_HINT_NV* = 0x00008534
-
-  #***** GL_NV_occlusion_query *****//
-  # GL_OCCLUSION_TEST_HP  { already defined }
-  # GL_OCCLUSION_TEST_RESULT_HP  { already defined }
-const 
-  GL_PIXEL_COUNTER_BITS_NV* = 0x00008864
-  GL_CURRENT_OCCLUSION_QUERY_ID_NV* = 0x00008865
-  GL_PIXEL_COUNT_NV* = 0x00008866
-  GL_PIXEL_COUNT_AVAILABLE_NV* = 0x00008867
-
-proc glGenOcclusionQueriesNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glDeleteOcclusionQueriesNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glIsOcclusionQueryNV*(id: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glBeginOcclusionQueryNV*(id: TGLuint){.dynlib: dllname, importc.}
-proc glEndOcclusionQueryNV*(){.dynlib: dllname, importc.}
-proc glGetOcclusionQueryivNV*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetOcclusionQueryuivNV*(id: TGLuint, pname: TGLenum, params: PGLuint){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_packed_depth_stencil *****//
-const 
-  GL_DEPTH_STENCIL_NV* = 0x000084F9
-  GL_UNSIGNED_INT_24_8_NV* = 0x000084FA
-
-  #***** GL_NV_point_sprite *****//
-const 
-  GL_POINT_SPRITE_NV* = 0x00008861
-  GL_COORD_REPLACE_NV* = 0x00008862
-  GL_POINT_SPRITE_R_MODE_NV* = 0x00008863
-
-proc glPointParameteriNV*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPointParameterivNV*(pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-  #***** GL_NV_register_combiners *****//
-const 
-  GL_REGISTER_COMBINERS_NV* = 0x00008522
-  GL_COMBINER0_NV* = 0x00008550
-  GL_COMBINER1_NV* = 0x00008551
-  GL_COMBINER2_NV* = 0x00008552
-  GL_COMBINER3_NV* = 0x00008553
-  GL_COMBINER4_NV* = 0x00008554
-  GL_COMBINER5_NV* = 0x00008555
-  GL_COMBINER6_NV* = 0x00008556
-  GL_COMBINER7_NV* = 0x00008557
-  GL_VARIABLE_A_NV* = 0x00008523
-  GL_VARIABLE_B_NV* = 0x00008524
-  GL_VARIABLE_C_NV* = 0x00008525
-  GL_VARIABLE_D_NV* = 0x00008526
-  GL_VARIABLE_E_NV* = 0x00008527
-  GL_VARIABLE_F_NV* = 0x00008528
-  GL_VARIABLE_G_NV* = 0x00008529
-  GL_CONSTANT_COLOR0_NV* = 0x0000852A
-  GL_CONSTANT_COLOR1_NV* = 0x0000852B
-  GL_PRIMARY_COLOR_NV* = 0x0000852C
-  GL_SECONDARY_COLOR_NV* = 0x0000852D
-  GL_SPARE0_NV* = 0x0000852E
-  GL_SPARE1_NV* = 0x0000852F
-  GL_UNSIGNED_IDENTITY_NV* = 0x00008536
-  GL_UNSIGNED_INVERT_NV* = 0x00008537
-  GL_EXPAND_NORMAL_NV* = 0x00008538
-  GL_EXPAND_NEGATE_NV* = 0x00008539
-  GL_HALF_BIAS_NORMAL_NV* = 0x0000853A
-  GL_HALF_BIAS_NEGATE_NV* = 0x0000853B
-  GL_SIGNED_IDENTITY_NV* = 0x0000853C
-  GL_SIGNED_NEGATE_NV* = 0x0000853D
-  GL_E_TIMES_F_NV* = 0x00008531
-  GL_SPARE0_PLUS_SECONDARY_COLOR_NV* = 0x00008532
-  GL_SCALE_BY_TWO_NV* = 0x0000853E
-  GL_SCALE_BY_FOUR_NV* = 0x0000853F
-  GL_SCALE_BY_ONE_HALF_NV* = 0x00008540
-  GL_BIAS_BY_NEGATIVE_ONE_HALF_NV* = 0x00008541
-  GL_DISCARD_NV* = 0x00008530
-  constGL_COMBINER_INPUT_NV* = 0x00008542
-  GL_COMBINER_MAPPING_NV* = 0x00008543
-  GL_COMBINER_COMPONENT_USAGE_NV* = 0x00008544
-  GL_COMBINER_AB_DOT_PRODUCT_NV* = 0x00008545
-  GL_COMBINER_CD_DOT_PRODUCT_NV* = 0x00008546
-  GL_COMBINER_MUX_SUM_NV* = 0x00008547
-  GL_COMBINER_SCALE_NV* = 0x00008548
-  GL_COMBINER_BIAS_NV* = 0x00008549
-  GL_COMBINER_AB_OUTPUT_NV* = 0x0000854A
-  GL_COMBINER_CD_OUTPUT_NV* = 0x0000854B
-  GL_COMBINER_SUM_OUTPUT_NV* = 0x0000854C
-  GL_NUM_GENERAL_COMBINERS_NV* = 0x0000854E
-  GL_COLOR_SUM_CLAMP_NV* = 0x0000854F
-  GL_MAX_GENERAL_COMBINERS_NV* = 0x0000854D
-
-proc glCombinerParameterfvNV*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glCombinerParameterivNV*(pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glCombinerParameterfNV*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glCombinerParameteriNV*(pname: TGLenum, param: TGLint){.dynlib: dllname, 
-    importc.}
-proc glCombinerInputNV*(stage: TGLenum, portion: TGLenum, variable: TGLenum, 
-                        input: TGLenum, mapping: TGLenum, componentUsage: TGLenum){.
-    dynlib: dllname, importc.}
-proc glCombinerOutputNV*(stage: TGLenum, portion: TGLenum, abOutput: TGLenum, 
-                         cdOutput: TGLenum, sumOutput: TGLenum, scale: TGLenum, 
-                         bias: TGLenum, abDotProduct: TGLboolean, 
-                         cdDotProduct: TGLboolean, muxSum: TGLboolean){.
-    dynlib: dllname, importc.}
-proc glFinalCombinerInputNV*(variable: TGLenum, input: TGLenum, mapping: TGLenum, 
-                             componentUsage: TGLenum){.dynlib: dllname, importc.}
-proc glGetCombinerInputParameterfvNV*(stage: TGLenum, portion: TGLenum, 
-                                      variable: TGLenum, pname: TGLenum, 
-                                      params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetCombinerInputParameterivNV*(stage: TGLenum, portion: TGLenum, 
-                                      variable: TGLenum, pname: TGLenum, 
-                                      params: PGLint){.dynlib: dllname, importc.}
-proc glGetCombinerOutputParameterfvNV*(stage: TGLenum, portion: TGLenum, 
-                                       pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetCombinerOutputParameterivNV*(stage: TGLenum, portion: TGLenum, 
-                                       pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetFinalCombinerInputParameterfvNV*(variable: TGLenum, pname: TGLenum, 
-    params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetFinalCombinerInputParameterivNV*(variable: TGLenum, pname: TGLenum, 
-    params: PGLint){.dynlib: dllname, importc.}
-  #***** GL_NV_register_combiners2 *****//
-const 
-  GL_PER_STAGE_CONSTANTS_NV* = 0x00008535
-
-proc glCombinerStageParameterfvNV*(stage: TGLenum, pname: TGLenum, 
-                                   params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetCombinerStageParameterfvNV*(stage: TGLenum, pname: TGLenum, 
-                                      params: PGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_NV_texgen_emboss *****//
-const 
-  GL_EMBOSS_MAP_NV* = 0x0000855F
-  GL_EMBOSS_LIGHT_NV* = 0x0000855D
-  GL_EMBOSS_CONSTANT_NV* = 0x0000855E
-
-  #***** GL_NV_texgen_reflection *****//
-const 
-  GL_NORMAL_MAP_NV* = 0x00008511
-  GL_REFLECTION_MAP_NV* = 0x00008512
-
-  #***** GL_NV_texture_compression_vtc *****//
-  # GL_COMPRESSED_RGB_S3TC_DXT1_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  { already defined }
-  #***** GL_NV_texture_env_combine4 *****//
-const 
-  GL_COMBINE4_NV* = 0x00008503
-  GL_SOURCE3_RGB_NV* = 0x00008583
-  GL_SOURCE3_ALPHA_NV* = 0x0000858B
-  GL_OPERAND3_RGB_NV* = 0x00008593
-  GL_OPERAND3_ALPHA_NV* = 0x0000859B
-
-  #***** GL_NV_texture_rectangle *****//
-const 
-  GL_TEXTURE_RECTANGLE_NV* = 0x000084F5
-  GL_TEXTURE_BINDING_RECTANGLE_NV* = 0x000084F6
-  GL_PROXY_TEXTURE_RECTANGLE_NV* = 0x000084F7
-  GL_MAX_RECTANGLE_TEXTURE_SIZE_NV* = 0x000084F8
-
-  #***** GL_NV_texture_shader *****//
-const 
-  GL_TEXTURE_SHADER_NV* = 0x000086DE
-  GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV* = 0x000086D9
-  GL_SHADER_OPERATION_NV* = 0x000086DF
-  GL_CULL_MODES_NV* = 0x000086E0
-  GL_OFFSET_TEXTURE_MATRIX_NV* = 0x000086E1
-  GL_OFFSET_TEXTURE_SCALE_NV* = 0x000086E2
-  GL_OFFSET_TEXTURE_BIAS_NV* = 0x000086E3
-  GL_PREVIOUS_TEXTURE_INPUT_NV* = 0x000086E4
-  GL_CONST_EYE_NV* = 0x000086E5
-  GL_SHADER_CONSISTENT_NV* = 0x000086DD
-  GL_PASS_THROUGH_NV* = 0x000086E6
-  GL_CULL_FRAGMENT_NV* = 0x000086E7
-  GL_OFFSET_TEXTURE_2D_NV* = 0x000086E8
-  GL_OFFSET_TEXTURE_RECTANGLE_NV* = 0x0000864C
-  GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV* = 0x0000864D
-  GL_DEPENDENT_AR_TEXTURE_2D_NV* = 0x000086E9
-  GL_DEPENDENT_GB_TEXTURE_2D_NV* = 0x000086EA
-  GL_DOT_PRODUCT_NV* = 0x000086EC
-  GL_DOT_PRODUCT_DEPTH_REPLACE_NV* = 0x000086ED
-  GL_DOT_PRODUCT_TEXTURE_2D_NV* = 0x000086EE
-  GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV* = 0x0000864E
-  GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV* = 0x000086F0
-  GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV* = 0x000086F1
-  GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV* = 0x000086F2
-  GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV* = 0x000086F3
-  GL_HILO_NV* = 0x000086F4
-  GL_DSDT_NV* = 0x000086F5
-  GL_DSDT_MAG_NV* = 0x000086F6
-  GL_DSDT_MAG_VIB_NV* = 0x000086F7
-  GL_UNSIGNED_INT_S8_S8_8_8_NV* = 0x000086DA
-  GL_UNSIGNED_INT_8_8_S8_S8_REV_NV* = 0x000086DB
-  GL_SIGNED_RGBA_NV* = 0x000086FB
-  GL_SIGNED_RGBA8_NV* = 0x000086FC
-  GL_SIGNED_RGB_NV* = 0x000086FE
-  GL_SIGNED_RGB8_NV* = 0x000086FF
-  GL_SIGNED_LUMINANCE_NV* = 0x00008701
-  GL_SIGNED_LUMINANCE8_NV* = 0x00008702
-  GL_SIGNED_LUMINANCE_ALPHA_NV* = 0x00008703
-  GL_SIGNED_LUMINANCE8_ALPHA8_NV* = 0x00008704
-  GL_SIGNED_ALPHA_NV* = 0x00008705
-  GL_SIGNED_ALPHA8_NV* = 0x00008706
-  GL_SIGNED_INTENSITY_NV* = 0x00008707
-  GL_SIGNED_INTENSITY8_NV* = 0x00008708
-  GL_SIGNED_RGB_UNSIGNED_ALPHA_NV* = 0x0000870C
-  GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV* = 0x0000870D
-  GL_HILO16_NV* = 0x000086F8
-  GL_SIGNED_HILO_NV* = 0x000086F9
-  GL_SIGNED_HILO16_NV* = 0x000086FA
-  GL_DSDT8_NV* = 0x00008709
-  GL_DSDT8_MAG8_NV* = 0x0000870A
-  GL_DSDT_MAG_INTENSITY_NV* = 0x000086DC
-  GL_DSDT8_MAG8_INTENSITY8_NV* = 0x0000870B
-  GL_HI_SCALE_NV* = 0x0000870E
-  GL_LO_SCALE_NV* = 0x0000870F
-  GL_DS_SCALE_NV* = 0x00008710
-  GL_DT_SCALE_NV* = 0x00008711
-  GL_MAGNITUDE_SCALE_NV* = 0x00008712
-  GL_VIBRANCE_SCALE_NV* = 0x00008713
-  GL_HI_BIAS_NV* = 0x00008714
-  GL_LO_BIAS_NV* = 0x00008715
-  GL_DS_BIAS_NV* = 0x00008716
-  GL_DT_BIAS_NV* = 0x00008717
-  GL_MAGNITUDE_BIAS_NV* = 0x00008718
-  GL_VIBRANCE_BIAS_NV* = 0x00008719
-  GL_TEXTURE_BORDER_VALUES_NV* = 0x0000871A
-  GL_TEXTURE_HI_SIZE_NV* = 0x0000871B
-  GL_TEXTURE_LO_SIZE_NV* = 0x0000871C
-  GL_TEXTURE_DS_SIZE_NV* = 0x0000871D
-  GL_TEXTURE_DT_SIZE_NV* = 0x0000871E
-  GL_TEXTURE_MAG_SIZE_NV* = 0x0000871F
-
-  #***** GL_NV_texture_shader2 *****//
-const 
-  GL_DOT_PRODUCT_TEXTURE_3D_NV* = 0x000086EF # GL_HILO_NV  { already defined }
-                                             # GL_DSDT_NV  { already defined }
-                                             # GL_DSDT_MAG_NV  { already defined }
-                                             # GL_DSDT_MAG_VIB_NV  { already defined }
-                                             # GL_UNSIGNED_INT_S8_S8_8_8_NV  { already defined }
-                                             # GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  { already defined }
-                                             # GL_SIGNED_RGBA_NV  { already defined }
-                                             # GL_SIGNED_RGBA8_NV  { already defined }
-                                             # GL_SIGNED_RGB_NV  { already defined }
-                                             # GL_SIGNED_RGB8_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE8_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE_ALPHA_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE8_ALPHA8_NV  { already defined }
-                                             # GL_SIGNED_ALPHA_NV  { already defined }
-                                             # GL_SIGNED_ALPHA8_NV  { already defined }
-                                             # GL_SIGNED_INTENSITY_NV  { already defined }
-                                             # GL_SIGNED_INTENSITY8_NV  { already defined }
-                                             # GL_SIGNED_RGB_UNSIGNED_ALPHA_NV  { already defined }
-                                             # GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV  { already defined }
-                                             # GL_HILO16_NV  { already defined }
-                                             # GL_SIGNED_HILO_NV  { already defined }
-                                             # GL_SIGNED_HILO16_NV  { already defined }
-                                             # GL_DSDT8_NV  { already defined }
-                                             # GL_DSDT8_MAG8_NV  { already defined }
-                                             # GL_DSDT_MAG_INTENSITY_NV  { already defined }
-                                             # GL_DSDT8_MAG8_INTENSITY8_NV  { already defined }
-
-  #***** GL_NV_texture_shader3 *****//
-const 
-  GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV* = 0x00008850
-  GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV* = 0x00008851
-  GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV* = 0x00008852
-  GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV* = 0x00008853
-  GL_OFFSET_HILO_TEXTURE_2D_NV* = 0x00008854
-  GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV* = 0x00008855
-  GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV* = 0x00008856
-  GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV* = 0x00008857
-  GL_DEPENDENT_HILO_TEXTURE_2D_NV* = 0x00008858
-  GL_DEPENDENT_RGB_TEXTURE_3D_NV* = 0x00008859
-  GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV* = 0x0000885A
-  GL_DOT_PRODUCT_PASS_THROUGH_NV* = 0x0000885B
-  GL_DOT_PRODUCT_TEXTURE_1D_NV* = 0x0000885C
-  GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV* = 0x0000885D
-  GL_HILO8_NV* = 0x0000885E
-  GL_SIGNED_HILO8_NV* = 0x0000885F
-  GL_FORCE_BLUE_TO_ONE_NV* = 0x00008860
-
-  #***** GL_NV_vertex_array_range *****//
-const 
-  constGL_VERTEX_ARRAY_RANGE_NV* = 0x0000851D
-  GL_VERTEX_ARRAY_RANGE_LENGTH_NV* = 0x0000851E
-  GL_VERTEX_ARRAY_RANGE_VALID_NV* = 0x0000851F
-  GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV* = 0x00008520
-  GL_VERTEX_ARRAY_RANGE_POINTER_NV* = 0x00008521
-
-proc glVertexArrayRangeNV*(len: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glFlushVertexArrayRangeNV*(){.dynlib: dllname, importc.}
-  #***** GL_NV_vertex_array_range2 *****//
-const 
-  GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV* = 0x00008533
-
-  #***** GL_NV_vertex_program *****//
-const 
-  GL_VERTEX_PROGRAM_NV* = 0x00008620
-  GL_VERTEX_PROGRAM_POINT_SIZE_NV* = 0x00008642
-  GL_VERTEX_PROGRAM_TWO_SIDE_NV* = 0x00008643
-  GL_VERTEX_STATE_PROGRAM_NV* = 0x00008621
-  GL_ATTRIB_ARRAY_SIZE_NV* = 0x00008623
-  GL_ATTRIB_ARRAY_STRIDE_NV* = 0x00008624
-  GL_ATTRIB_ARRAY_TYPE_NV* = 0x00008625
-  GL_CURRENT_ATTRIB_NV* = 0x00008626
-  GL_PROGRAM_PARAMETER_NV* = 0x00008644
-  GL_ATTRIB_ARRAY_POINTER_NV* = 0x00008645
-  GL_PROGRAM_TARGET_NV* = 0x00008646
-  GL_PROGRAM_LENGTH_NV* = 0x00008627
-  GL_PROGRAM_RESIDENT_NV* = 0x00008647
-  GL_PROGRAM_STRING_NV* = 0x00008628
-  constGL_TRACK_MATRIX_NV* = 0x00008648
-  GL_TRACK_MATRIX_TRANSFORM_NV* = 0x00008649
-  GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV* = 0x0000862E
-  GL_MAX_TRACK_MATRICES_NV* = 0x0000862F
-  GL_CURRENT_MATRIX_STACK_DEPTH_NV* = 0x00008640
-  GL_CURRENT_MATRIX_NV* = 0x00008641
-  GL_VERTEX_PROGRAM_BINDING_NV* = 0x0000864A
-  GL_PROGRAM_ERROR_POSITION_NV* = 0x0000864B
-  GL_MODELVIEW_PROJECTION_NV* = 0x00008629
-  GL_MATRIX0_NV* = 0x00008630
-  GL_MATRIX1_NV* = 0x00008631
-  GL_MATRIX2_NV* = 0x00008632
-  GL_MATRIX3_NV* = 0x00008633
-  GL_MATRIX4_NV* = 0x00008634
-  GL_MATRIX5_NV* = 0x00008635
-  GL_MATRIX6_NV* = 0x00008636
-  GL_MATRIX7_NV* = 0x00008637
-  GL_IDENTITY_NV* = 0x0000862A
-  GL_INVERSE_NV* = 0x0000862B
-  GL_TRANSPOSE_NV* = 0x0000862C
-  GL_INVERSE_TRANSPOSE_NV* = 0x0000862D
-  GL_VERTEX_ATTRIB_ARRAY0_NV* = 0x00008650
-  GL_VERTEX_ATTRIB_ARRAY1_NV* = 0x00008651
-  GL_VERTEX_ATTRIB_ARRAY2_NV* = 0x00008652
-  GL_VERTEX_ATTRIB_ARRAY3_NV* = 0x00008653
-  GL_VERTEX_ATTRIB_ARRAY4_NV* = 0x00008654
-  GL_VERTEX_ATTRIB_ARRAY5_NV* = 0x00008655
-  GL_VERTEX_ATTRIB_ARRAY6_NV* = 0x00008656
-  GL_VERTEX_ATTRIB_ARRAY7_NV* = 0x00008657
-  GL_VERTEX_ATTRIB_ARRAY8_NV* = 0x00008658
-  GL_VERTEX_ATTRIB_ARRAY9_NV* = 0x00008659
-  GL_VERTEX_ATTRIB_ARRAY10_NV* = 0x0000865A
-  GL_VERTEX_ATTRIB_ARRAY11_NV* = 0x0000865B
-  GL_VERTEX_ATTRIB_ARRAY12_NV* = 0x0000865C
-  GL_VERTEX_ATTRIB_ARRAY13_NV* = 0x0000865D
-  GL_VERTEX_ATTRIB_ARRAY14_NV* = 0x0000865E
-  GL_VERTEX_ATTRIB_ARRAY15_NV* = 0x0000865F
-  GL_MAP1_VERTEX_ATTRIB0_4_NV* = 0x00008660
-  GL_MAP1_VERTEX_ATTRIB1_4_NV* = 0x00008661
-  GL_MAP1_VERTEX_ATTRIB2_4_NV* = 0x00008662
-  GL_MAP1_VERTEX_ATTRIB3_4_NV* = 0x00008663
-  GL_MAP1_VERTEX_ATTRIB4_4_NV* = 0x00008664
-  GL_MAP1_VERTEX_ATTRIB5_4_NV* = 0x00008665
-  GL_MAP1_VERTEX_ATTRIB6_4_NV* = 0x00008666
-  GL_MAP1_VERTEX_ATTRIB7_4_NV* = 0x00008667
-  GL_MAP1_VERTEX_ATTRIB8_4_NV* = 0x00008668
-  GL_MAP1_VERTEX_ATTRIB9_4_NV* = 0x00008669
-  GL_MAP1_VERTEX_ATTRIB10_4_NV* = 0x0000866A
-  GL_MAP1_VERTEX_ATTRIB11_4_NV* = 0x0000866B
-  GL_MAP1_VERTEX_ATTRIB12_4_NV* = 0x0000866C
-  GL_MAP1_VERTEX_ATTRIB13_4_NV* = 0x0000866D
-  GL_MAP1_VERTEX_ATTRIB14_4_NV* = 0x0000866E
-  GL_MAP1_VERTEX_ATTRIB15_4_NV* = 0x0000866F
-  GL_MAP2_VERTEX_ATTRIB0_4_NV* = 0x00008670
-  GL_MAP2_VERTEX_ATTRIB1_4_NV* = 0x00008671
-  GL_MAP2_VERTEX_ATTRIB2_4_NV* = 0x00008672
-  GL_MAP2_VERTEX_ATTRIB3_4_NV* = 0x00008673
-  GL_MAP2_VERTEX_ATTRIB4_4_NV* = 0x00008674
-  GL_MAP2_VERTEX_ATTRIB5_4_NV* = 0x00008675
-  GL_MAP2_VERTEX_ATTRIB6_4_NV* = 0x00008676
-  GL_MAP2_VERTEX_ATTRIB7_4_NV* = 0x00008677
-  GL_MAP2_VERTEX_ATTRIB8_4_NV* = 0x00008678
-  GL_MAP2_VERTEX_ATTRIB9_4_NV* = 0x00008679
-  GL_MAP2_VERTEX_ATTRIB10_4_NV* = 0x0000867A
-  GL_MAP2_VERTEX_ATTRIB11_4_NV* = 0x0000867B
-  GL_MAP2_VERTEX_ATTRIB12_4_NV* = 0x0000867C
-  GL_MAP2_VERTEX_ATTRIB13_4_NV* = 0x0000867D
-  GL_MAP2_VERTEX_ATTRIB14_4_NV* = 0x0000867E
-  GL_MAP2_VERTEX_ATTRIB15_4_NV* = 0x0000867F
-
-proc glBindProgramNV*(target: TGLenum, id: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteProgramsNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glExecuteProgramNV*(target: TGLenum, id: TGLuint, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGenProgramsNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glAreProgramsResidentNV*(n: TGLsizei, ids: PGLuint, residences: PGLboolean): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glRequestResidentProgramsNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetProgramParameterfvNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetProgramParameterdvNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                params: PGLdouble){.dynlib: dllname, importc.}
-proc glGetProgramivNV*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetProgramStringNV*(id: TGLuint, pname: TGLenum, theProgram: PGLubyte){.
-    dynlib: dllname, importc.}
-proc glGetTrackMatrixivNV*(target: TGLenum, address: TGLuint, pname: TGLenum, 
-                           params: PGLint){.dynlib: dllname, importc.}
-proc glGetVertexAttribdvNV*(index: TGLuint, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribfvNV*(index: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribivNV*(index: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribPointervNV*(index: TGLuint, pname: TGLenum, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glIsProgramNV*(id: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glLoadProgramNV*(target: TGLenum, id: TGLuint, length: TGLsizei, 
-                      theProgram: PGLubyte){.dynlib: dllname, importc.}
-proc glProgramParameter4fNV*(target: TGLenum, index: TGLuint, x: TGLfloat, 
-                             y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramParameter4fvNV*(target: TGLenum, index: TGLuint, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramParameters4dvNV*(target: TGLenum, index: TGLuint, num: TGLuint, 
-                               params: PGLdouble){.dynlib: dllname, importc.}
-proc glProgramParameters4fvNV*(target: TGLenum, index: TGLuint, num: TGLuint, 
-                               params: PGLfloat){.dynlib: dllname, importc.}
-proc glTrackMatrixNV*(target: TGLenum, address: TGLuint, matrix: TGLenum, 
-                      transform: TGLenum){.dynlib: dllname, importc.}
-proc glVertexAttribPointerNV*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                              stride: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib1sNV*(index: TGLuint, x: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fNV*(index: TGLuint, x: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dNV*(index: TGLuint, x: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2sNV*(index: TGLuint, x: TGLshort, y: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2fNV*(index: TGLuint, x: TGLfloat, y: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2dNV*(index: TGLuint, x: TGLdouble, y: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3sNV*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3fNV*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3dNV*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib4sNV*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort, 
-                         w: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4fNV*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat, 
-                         w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dNV*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                         w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubNV*(index: TGLuint, x: TGLubyte, y: TGLubyte, z: TGLubyte, 
-                          w: TGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib1svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib2fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib2dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib3svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib3fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib3dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubvNV*(index: TGLuint, v: PGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttribs1svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs1fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs1dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4ubvNV*(index: TGLuint, n: TGLsizei, v: PGLubyte){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_vertex_program1_1 *****//
-  #***** GL_ATI_element_array *****//
-const 
-  GL_ELEMENT_ARRAY_ATI* = 0x00008768
-  GL_ELEMENT_ARRAY_TYPE_ATI* = 0x00008769
-  GL_ELEMENT_ARRAY_POINTER_ATI* = 0x0000876A
-
-proc glElementPointerATI*(thetype: TGLenum, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glDrawElementArrayATI*(mode: TGLenum, count: TGLsizei){.dynlib: dllname, 
-    importc.}
-proc glDrawRangeElementArrayATI*(mode: TGLenum, start: TGLuint, theend: TGLuint, 
-                                 count: TGLsizei){.dynlib: dllname, importc.}
-  #***** GL_ATI_envmap_bumpmap *****//
-const 
-  GL_BUMP_ROT_MATRIX_ATI* = 0x00008775
-  GL_BUMP_ROT_MATRIX_SIZE_ATI* = 0x00008776
-  GL_BUMP_NUM_TEX_UNITS_ATI* = 0x00008777
-  GL_BUMP_TEX_UNITS_ATI* = 0x00008778
-  GL_DUDV_ATI* = 0x00008779
-  GL_DU8DV8_ATI* = 0x0000877A
-  GL_BUMP_ENVMAP_ATI* = 0x0000877B
-  GL_BUMP_TARGET_ATI* = 0x0000877C
-
-proc glTexBumpParameterivATI*(pname: TGLenum, param: PGLint){.dynlib: dllname, 
-    importc.}
-proc glTexBumpParameterfvATI*(pname: TGLenum, param: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetTexBumpParameterivATI*(pname: TGLenum, param: PGLint){.dynlib: dllname, 
-    importc.}
-proc glGetTexBumpParameterfvATI*(pname: TGLenum, param: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_fragment_shader *****//
-const 
-  GL_FRAGMENT_SHADER_ATI* = 0x00008920
-  GL_REG_0_ATI* = 0x00008921
-  GL_REG_1_ATI* = 0x00008922
-  GL_REG_2_ATI* = 0x00008923
-  GL_REG_3_ATI* = 0x00008924
-  GL_REG_4_ATI* = 0x00008925
-  GL_REG_5_ATI* = 0x00008926
-  GL_CON_0_ATI* = 0x00008941
-  GL_CON_1_ATI* = 0x00008942
-  GL_CON_2_ATI* = 0x00008943
-  GL_CON_3_ATI* = 0x00008944
-  GL_CON_4_ATI* = 0x00008945
-  GL_CON_5_ATI* = 0x00008946
-  GL_CON_6_ATI* = 0x00008947
-  GL_CON_7_ATI* = 0x00008948
-  GL_MOV_ATI* = 0x00008961
-  GL_ADD_ATI* = 0x00008963
-  GL_MUL_ATI* = 0x00008964
-  GL_SUB_ATI* = 0x00008965
-  GL_DOT3_ATI* = 0x00008966
-  GL_DOT4_ATI* = 0x00008967
-  GL_MAD_ATI* = 0x00008968
-  GL_LERP_ATI* = 0x00008969
-  GL_CND_ATI* = 0x0000896A
-  GL_CND0_ATI* = 0x0000896B
-  GL_DOT2_ADD_ATI* = 0x0000896C
-  GL_SECONDARY_INTERPOLATOR_ATI* = 0x0000896D
-  GL_SWIZZLE_STR_ATI* = 0x00008976
-  GL_SWIZZLE_STQ_ATI* = 0x00008977
-  GL_SWIZZLE_STR_DR_ATI* = 0x00008978
-  GL_SWIZZLE_STQ_DQ_ATI* = 0x00008979
-  GL_RED_BIT_ATI* = 0x00000001
-  GL_GREEN_BIT_ATI* = 0x00000002
-  GL_BLUE_BIT_ATI* = 0x00000004
-  GL_2X_BIT_ATI* = 0x00000001
-  GL_4X_BIT_ATI* = 0x00000002
-  GL_8X_BIT_ATI* = 0x00000004
-  GL_HALF_BIT_ATI* = 0x00000008
-  GL_QUARTER_BIT_ATI* = 0x00000010
-  GL_EIGHTH_BIT_ATI* = 0x00000020
-  GL_SATURATE_BIT_ATI* = 0x00000040 # GL_2X_BIT_ATI  { already defined }
-  GL_COMP_BIT_ATI* = 0x00000002
-  GL_NEGATE_BIT_ATI* = 0x00000004
-  GL_BIAS_BIT_ATI* = 0x00000008
-
-proc glGenFragmentShadersATI*(range: TGLuint): TGLuint{.dynlib: dllname, importc.}
-proc glBindFragmentShaderATI*(id: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteFragmentShaderATI*(id: TGLuint){.dynlib: dllname, importc.}
-proc glBeginFragmentShaderATI*(){.dynlib: dllname, importc.}
-proc glEndFragmentShaderATI*(){.dynlib: dllname, importc.}
-proc glPassTexCoordATI*(dst: TGLuint, coord: TGLuint, swizzle: TGLenum){.
-    dynlib: dllname, importc.}
-proc glSampleMapATI*(dst: TGLuint, interp: TGLuint, swizzle: TGLenum){.
-    dynlib: dllname, importc.}
-proc glColorFragmentOp1ATI*(op: TGLenum, dst: TGLuint, dstMask: TGLuint, 
-                            dstMod: TGLuint, arg1: TGLuint, arg1Rep: TGLuint, 
-                            arg1Mod: TGLuint){.dynlib: dllname, importc.}
-proc glColorFragmentOp2ATI*(op: TGLenum, dst: TGLuint, dstMask: TGLuint, 
-                            dstMod: TGLuint, arg1: TGLuint, arg1Rep: TGLuint, 
-                            arg1Mod: TGLuint, arg2: TGLuint, arg2Rep: TGLuint, 
-                            arg2Mod: TGLuint){.dynlib: dllname, importc.}
-proc glColorFragmentOp3ATI*(op: TGLenum, dst: TGLuint, dstMask: TGLuint, 
-                            dstMod: TGLuint, arg1: TGLuint, arg1Rep: TGLuint, 
-                            arg1Mod: TGLuint, arg2: TGLuint, arg2Rep: TGLuint, 
-                            arg2Mod: TGLuint, arg3: TGLuint, arg3Rep: TGLuint, 
-                            arg3Mod: TGLuint){.dynlib: dllname, importc.}
-proc glAlphaFragmentOp1ATI*(op: TGLenum, dst: TGLuint, dstMod: TGLuint, 
-                            arg1: TGLuint, arg1Rep: TGLuint, arg1Mod: TGLuint){.
-    dynlib: dllname, importc.}
-proc glAlphaFragmentOp2ATI*(op: TGLenum, dst: TGLuint, dstMod: TGLuint, 
-                            arg1: TGLuint, arg1Rep: TGLuint, arg1Mod: TGLuint, 
-                            arg2: TGLuint, arg2Rep: TGLuint, arg2Mod: TGLuint){.
-    dynlib: dllname, importc.}
-proc glAlphaFragmentOp3ATI*(op: TGLenum, dst: TGLuint, dstMod: TGLuint, 
-                            arg1: TGLuint, arg1Rep: TGLuint, arg1Mod: TGLuint, 
-                            arg2: TGLuint, arg2Rep: TGLuint, arg2Mod: TGLuint, 
-                            arg3: TGLuint, arg3Rep: TGLuint, arg3Mod: TGLuint){.
-    dynlib: dllname, importc.}
-proc glSetFragmentShaderConstantATI*(dst: TGLuint, value: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_pn_triangles *****//
-const 
-  GL_PN_TRIANGLES_ATI* = 0x000087F0
-  GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI* = 0x000087F1
-  GL_PN_TRIANGLES_POINT_MODE_ATI* = 0x000087F2
-  GL_PN_TRIANGLES_NORMAL_MODE_ATI* = 0x000087F3
-  GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI* = 0x000087F4
-  GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI* = 0x000087F5
-  GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI* = 0x000087F6
-  GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI* = 0x000087F7
-  GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI* = 0x000087F8
-
-proc glPNTrianglesiATI*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPNTrianglesfATI*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-  #***** GL_ATI_texture_mirror_once *****//
-const 
-  GL_MIRROR_CLAMP_ATI* = 0x00008742
-  GL_MIRROR_CLAMP_TO_EDGE_ATI* = 0x00008743
-
-  #***** GL_ATI_vertex_array_object *****//
-const 
-  GL_STATIC_ATI* = 0x00008760
-  GL_DYNAMIC_ATI* = 0x00008761
-  GL_PRESERVE_ATI* = 0x00008762
-  GL_DISCARD_ATI* = 0x00008763
-  GL_OBJECT_BUFFER_SIZE_ATI* = 0x00008764
-  GL_OBJECT_BUFFER_USAGE_ATI* = 0x00008765
-  GL_ARRAY_OBJECT_BUFFER_ATI* = 0x00008766
-  GL_ARRAY_OBJECT_OFFSET_ATI* = 0x00008767
-
-proc glNewObjectBufferATI*(size: TGLsizei, pointer: PGLvoid, usage: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glIsObjectBufferATI*(buffer: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glUpdateObjectBufferATI*(buffer: TGLuint, offset: TGLuint, size: TGLsizei, 
-                              pointer: PGLvoid, preserve: TGLenum){.
-    dynlib: dllname, importc.}
-proc glGetObjectBufferfvATI*(buffer: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetObjectBufferivATI*(buffer: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glDeleteObjectBufferATI*(buffer: TGLuint){.dynlib: dllname, importc.}
-proc glArrayObjectATI*(thearray: TGLenum, size: TGLint, thetype: TGLenum, 
-                       stride: TGLsizei, buffer: TGLuint, offset: TGLuint){.
-    dynlib: dllname, importc.}
-proc glGetArrayObjectfvATI*(thearray: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetArrayObjectivATI*(thearray: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glVariantArrayObjectATI*(id: TGLuint, thetype: TGLenum, stride: TGLsizei, 
-                              buffer: TGLuint, offset: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetVariantArrayObjectfvATI*(id: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVariantArrayObjectivATI*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_vertex_streams *****//
-const 
-  GL_MAX_VERTEX_STREAMS_ATI* = 0x0000876B
-  GL_VERTEX_STREAM0_ATI* = 0x0000876C
-  GL_VERTEX_STREAM1_ATI* = 0x0000876D
-  GL_VERTEX_STREAM2_ATI* = 0x0000876E
-  GL_VERTEX_STREAM3_ATI* = 0x0000876F
-  GL_VERTEX_STREAM4_ATI* = 0x00008770
-  GL_VERTEX_STREAM5_ATI* = 0x00008771
-  GL_VERTEX_STREAM6_ATI* = 0x00008772
-  GL_VERTEX_STREAM7_ATI* = 0x00008773
-  GL_VERTEX_SOURCE_ATI* = 0x00008774
-
-proc glVertexStream1s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream1f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream1fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream2f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream2fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream3f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream3fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream4s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream4i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream4f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream4d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream4sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream4iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream4fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream4dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3b*(stream: TGLenum, coords: TGLByte){.dynlib: dllname, importc.}
-proc glNormalStream3s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glNormalStream3f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3bv*(stream: TGLenum, coords: TGLByte){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glNormalStream3fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glNormalStream3dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glClientActiveVertexStream*(stream: TGLenum){.dynlib: dllname, importc.}
-proc glVertexBlendEnvi*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glVertexBlendEnvf*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-  #***** GL_3DFX_texture_compression_FXT1 *****//
-const 
-  GL_COMPRESSED_RGB_FXT1_3DFX* = 0x000086B0
-  GL_COMPRESSED_RGBA_FXT1_3DFX* = 0x000086B1
-
-  #***** GL_IBM_cull_vertex *****//
-const 
-  GL_CULL_VERTEX_IBM* = 0x0001928A
-
-  #***** GL_IBM_multimode_draw_arrays *****//
-proc glMultiModeDrawArraysIBM*(mode: PGLenum, first: PGLint, count: PGLsizei, 
-                               primcount: TGLsizei, modestride: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiModeDrawElementsIBM*(mode: PGLenum, count: PGLsizei, 
-                                 thetype: TGLenum, indices: PGLvoid, 
-                                 primcount: TGLsizei, modestride: TGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_IBM_raster_pos_clip *****//
-const 
-  GL_RASTER_POSITION_UNCLIPPED_IBM* = 0x00019262
-
-  #***** GL_IBM_texture_mirrored_repeat *****//
-const 
-  GL_MIRRORED_REPEAT_IBM* = 0x00008370
-
-  #***** GL_IBM_vertex_array_lists *****//
-const 
-  GL_VERTEX_ARRAY_LIST_IBM* = 0x0001929E
-  GL_NORMAL_ARRAY_LIST_IBM* = 0x0001929F
-  GL_COLOR_ARRAY_LIST_IBM* = 0x000192A0
-  GL_INDEX_ARRAY_LIST_IBM* = 0x000192A1
-  GL_TEXTURE_COORD_ARRAY_LIST_IBM* = 0x000192A2
-  GL_EDGE_FLAG_ARRAY_LIST_IBM* = 0x000192A3
-  GL_FOG_COORDINATE_ARRAY_LIST_IBM* = 0x000192A4
-  GL_SECONDARY_COLOR_ARRAY_LIST_IBM* = 0x000192A5
-  GL_VERTEX_ARRAY_LIST_STRIDE_IBM* = 0x000192A8
-  GL_NORMAL_ARRAY_LIST_STRIDE_IBM* = 0x000192A9
-  GL_COLOR_ARRAY_LIST_STRIDE_IBM* = 0x000192AA
-  GL_INDEX_ARRAY_LIST_STRIDE_IBM* = 0x000192AB
-  GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM* = 0x000192AC
-  GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM* = 0x000192AD
-  GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM* = 0x000192AE
-  GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM* = 0x000192AF
-
-proc glColorPointerListIBM*(size: TGLint, thetype: TGLenum, stride: TGLint, 
-                            pointer: PGLvoid, ptrstride: TGLint){.
-    dynlib: dllname, importc.}
-proc glSecondaryColorPointerListIBM*(size: TGLint, thetype: TGLenum, 
-                                     stride: TGLint, pointer: PGLvoid, 
-                                     ptrstride: TGLint){.dynlib: dllname, importc.}
-proc glEdgeFlagPointerListIBM*(stride: TGLint, pointer: PGLboolean, 
-                               ptrstride: TGLint){.dynlib: dllname, importc.}
-proc glFogCoordPointerListIBM*(thetype: TGLenum, stride: TGLint, pointer: PGLvoid, 
-                               ptrstride: TGLint){.dynlib: dllname, importc.}
-proc glNormalPointerListIBM*(thetype: TGLenum, stride: TGLint, pointer: PGLvoid, 
-                             ptrstride: TGLint){.dynlib: dllname, importc.}
-proc glTexCoordPointerListIBM*(size: TGLint, thetype: TGLenum, stride: TGLint, 
-                               pointer: PGLvoid, ptrstride: TGLint){.
-    dynlib: dllname, importc.}
-proc glVertexPointerListIBM*(size: TGLint, thetype: TGLenum, stride: TGLint, 
-                             pointer: PGLvoid, ptrstride: TGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_MESA_resize_buffers *****//
-proc glResizeBuffersMESA*(){.dynlib: dllname, importc.}
-  #***** GL_MESA_window_pos *****//
-proc glWindowPos2dMESA*(x: TGLdouble, y: TGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2fMESA*(x: TGLfloat, y: TGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2iMESA*(x: TGLint, y: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos2sMESA*(x: TGLshort, y: TGLshort){.dynlib: dllname, importc.}
-proc glWindowPos2ivMESA*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos2svMESA*(p: PGLshort){.dynlib: dllname, importc.}
-proc glWindowPos2fvMESA*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2dvMESA*(p: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos3iMESA*(x: TGLint, y: TGLint, z: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos3sMESA*(x: TGLshort, y: TGLshort, z: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3fMESA*(x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3dMESA*(x: TGLdouble, y: TGLdouble, z: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3ivMESA*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos3svMESA*(p: PGLshort){.dynlib: dllname, importc.}
-proc glWindowPos3fvMESA*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos3dvMESA*(p: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos4iMESA*(x: TGLint, y: TGLint, z: TGLint, w: TGLint){.
-    dynlib: dllname, importc.}
-proc glWindowPos4sMESA*(x: TGLshort, y: TGLshort, z: TGLshort, w: TGLshort){.
-    dynlib: dllname, importc.}
-proc glWindowPos4fMESA*(x: TGLfloat, y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glWindowPos4dMESA*(x: TGLdouble, y: TGLdouble, z: TGLdouble, w: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glWindowPos4ivMESA*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos4svMESA*(p: PGLshort){.dynlib: dllname, importc.}
-proc glWindowPos4fvMESA*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos4dvMESA*(p: PGLdouble){.dynlib: dllname, importc.}
-  #***** GL_OML_interlace *****//
-const 
-  GL_INTERLACE_OML* = 0x00008980
-  GL_INTERLACE_READ_OML* = 0x00008981
-
-  #***** GL_OML_resample *****//
-const 
-  GL_PACK_RESAMPLE_OML* = 0x00008984
-  GL_UNPACK_RESAMPLE_OML* = 0x00008985
-  GL_RESAMPLE_REPLICATE_OML* = 0x00008986
-  GL_RESAMPLE_ZERO_FILL_OML* = 0x00008987
-  GL_RESAMPLE_AVERAGE_OML* = 0x00008988
-  GL_RESAMPLE_DECIMATE_OML* = 0x00008989 # GL_RESAMPLE_AVERAGE_OML  { already defined }
-
-  #***** GL_OML_subsample *****//
-const 
-  GL_FORMAT_SUBSAMPLE_24_24_OML* = 0x00008982
-  GL_FORMAT_SUBSAMPLE_244_244_OML* = 0x00008983
-
-  #***** GL_SGIS_generate_mipmap *****//
-const 
-  GL_GENERATE_MIPMAP_SGIS* = 0x00008191
-  GL_GENERATE_MIPMAP_HINT_SGIS* = 0x00008192
-
-  #***** GL_SGIS_multisample *****//
-const 
-  GLX_SAMPLE_BUFFERS_SGIS* = 0x000186A0
-  GLX_SAMPLES_SGIS* = 0x000186A1
-  GL_MULTISAMPLE_SGIS* = 0x0000809D
-  GL_SAMPLE_ALPHA_TO_MASK_SGIS* = 0x0000809E
-  GL_SAMPLE_ALPHA_TO_ONE_SGIS* = 0x0000809F
-  constGL_SAMPLE_MASK_SGIS* = 0x000080A0
-  GL_MULTISAMPLE_BIT_EXT* = 0x20000000
-  GL_1PASS_SGIS* = 0x000080A1
-  GL_2PASS_0_SGIS* = 0x000080A2
-  GL_2PASS_1_SGIS* = 0x000080A3
-  GL_4PASS_0_SGIS* = 0x000080A4
-  GL_4PASS_1_SGIS* = 0x000080A5
-  GL_4PASS_2_SGIS* = 0x000080A6
-  GL_4PASS_3_SGIS* = 0x000080A7
-  GL_SAMPLE_BUFFERS_SGIS* = 0x000080A8
-  GL_SAMPLES_SGIS* = 0x000080A9
-  GL_SAMPLE_MASK_VALUE_SGIS* = 0x000080AA
-  GL_SAMPLE_MASK_INVERT_SGIS* = 0x000080AB
-  constGL_SAMPLE_PATTERN_SGIS* = 0x000080AC
-
-proc glSampleMaskSGIS*(value: TGLclampf, invert: TGLboolean){.dynlib: dllname, 
-    importc.}
-proc glSamplePatternSGIS*(pattern: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_SGIS_pixel_texture *****//
-const 
-  GL_PIXEL_TEXTURE_SGIS* = 0x00008353
-  GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS* = 0x00008354
-  GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS* = 0x00008355
-  GL_PIXEL_GROUP_COLOR_SGIS* = 0x00008356
-
-proc glPixelTexGenParameteriSGIS*(pname: TGLenum, param: TGLint){.dynlib: dllname, 
-    importc.}
-proc glPixelTexGenParameterfSGIS*(pname: TGLenum, param: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetPixelTexGenParameterivSGIS*(pname: TGLenum, params: TGLint){.
-    dynlib: dllname, importc.}
-proc glGetPixelTexGenParameterfvSGIS*(pname: TGLenum, params: TGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_SGIS_texture_border_clamp *****//
-  # GL_CLAMP_TO_BORDER_SGIS  { already defined }
-  #***** GL_SGIS_texture_color_mask *****//
-const 
-  GL_TEXTURE_COLOR_WRITEMASK_SGIS* = 0x000081EF
-
-proc glTextureColorMaskSGIS*(r: TGLboolean, g: TGLboolean, b: TGLboolean, 
-                             a: TGLboolean){.dynlib: dllname, importc.}
-  #***** GL_SGIS_texture_edge_clamp *****//
-const 
-  GL_CLAMP_TO_EDGE_SGIS* = 0x0000812F
-
-  #***** GL_SGIS_texture_lod *****//
-const 
-  GL_TEXTURE_MIN_LOD_SGIS* = 0x0000813A
-  GL_TEXTURE_MAX_LOD_SGIS* = 0x0000813B
-  GL_TEXTURE_BASE_LEVEL_SGIS* = 0x0000813C
-  GL_TEXTURE_MAX_LEVEL_SGIS* = 0x0000813D
-
-  #***** GL_SGIS_depth_texture *****//
-const 
-  GL_DEPTH_COMPONENT16_SGIX* = 0x000081A5
-  GL_DEPTH_COMPONENT24_SGIX* = 0x000081A6
-  GL_DEPTH_COMPONENT32_SGIX* = 0x000081A7
-
-  #***** GL_SGIX_fog_offset *****//
-const 
-  GL_FOG_OFFSET_SGIX* = 0x00008198
-  GL_FOG_OFFSET_VALUE_SGIX* = 0x00008199
-
-  #***** GL_SGIX_interlace *****//
-const 
-  GL_INTERLACE_SGIX* = 0x00008094
-
-  #***** GL_SGIX_shadow_ambient *****//
-const 
-  GL_SHADOW_AMBIENT_SGIX* = 0x000080BF
-
-  #***** GL_SGI_color_matrix *****//
-const 
-  GL_COLOR_MATRIX_SGI* = 0x000080B1
-  GL_COLOR_MATRIX_STACK_DEPTH_SGI* = 0x000080B2
-  GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI* = 0x000080B3
-  GL_POST_COLOR_MATRIX_RED_SCALE_SGI* = 0x000080B4
-  GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI* = 0x000080B5
-  GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI* = 0x000080B6
-  GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI* = 0x000080B7
-  GL_POST_COLOR_MATRIX_RED_BIAS_SGI* = 0x000080B8
-  GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI* = 0x000080B9
-  GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI* = 0x000080BA
-  GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI* = 0x000080BB
-
-  #***** GL_SGI_color_table *****//
-const 
-  constGL_COLOR_TABLE_SGI* = 0x000080D0
-  GL_POST_CONVOLUTION_COLOR_TABLE_SGI* = 0x000080D1
-  GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI* = 0x000080D2
-  GL_PROXY_COLOR_TABLE_SGI* = 0x000080D3
-  GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI* = 0x000080D4
-  GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI* = 0x000080D5
-  GL_COLOR_TABLE_SCALE_SGI* = 0x000080D6
-  GL_COLOR_TABLE_BIAS_SGI* = 0x000080D7
-  GL_COLOR_TABLE_FORMAT_SGI* = 0x000080D8
-  GL_COLOR_TABLE_WIDTH_SGI* = 0x000080D9
-  GL_COLOR_TABLE_RED_SIZE_SGI* = 0x000080DA
-  GL_COLOR_TABLE_GREEN_SIZE_SGI* = 0x000080DB
-  GL_COLOR_TABLE_BLUE_SIZE_SGI* = 0x000080DC
-  GL_COLOR_TABLE_ALPHA_SIZE_SGI* = 0x000080DD
-  GL_COLOR_TABLE_LUMINANCE_SIZE_SGI* = 0x000080DE
-  GL_COLOR_TABLE_INTENSITY_SIZE_SGI* = 0x000080DF
-
-proc glColorTableSGI*(target: TGLenum, internalformat: TGLenum, width: TGLsizei, 
-                      format: TGLenum, thetype: TGLenum, table: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyColorTableSGI*(target: TGLenum, internalformat: TGLenum, x: TGLint, 
-                          y: TGLint, width: TGLsizei){.dynlib: dllname, importc.}
-proc glColorTableParameterivSGI*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glColorTableParameterfvSGI*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetColorTableSGI*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                         table: PGLvoid){.dynlib: dllname, importc.}
-proc glGetColorTableParameterivSGI*(target: TGLenum, pname: TGLenum, 
-                                    params: PGLint){.dynlib: dllname, importc.}
-proc glGetColorTableParameterfvSGI*(target: TGLenum, pname: TGLenum, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-  #***** GL_SGI_texture_color_table *****//
-const 
-  GL_TEXTURE_COLOR_TABLE_SGI* = 0x000080BC
-  GL_PROXY_TEXTURE_COLOR_TABLE_SGI* = 0x000080BD
-
-  #***** GL_SUN_vertex *****//
-proc glColor4ubVertex2fSUN*(r: TGLubyte, g: TGLubyte, b: TGLubyte, a: TGLubyte, 
-                            x: TGLfloat, y: TGLfloat){.dynlib: dllname, importc.}
-proc glColor4ubVertex2fvSUN*(c: PGLubyte, v: PGLfloat){.dynlib: dllname, importc.}
-proc glColor4ubVertex3fSUN*(r: TGLubyte, g: TGLubyte, b: TGLubyte, a: TGLubyte, 
-                            x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glColor4ubVertex3fvSUN*(c: PGLubyte, v: PGLfloat){.dynlib: dllname, importc.}
-proc glColor3fVertex3fSUN*(r: TGLfloat, g: TGLfloat, b: TGLfloat, x: TGLfloat, 
-                           y: TGLfloat, z: TGLfloat){.dynlib: dllname, importc.}
-proc glColor3fVertex3fvSUN*(c: PGLfloat, v: PGLfloat){.dynlib: dllname, importc.}
-proc glNormal3fVertex3fSUN*(nx: TGLfloat, ny: TGLfloat, nz: TGLfloat, x: TGLfloat, 
-                            y: TGLfloat, z: TGLfloat){.dynlib: dllname, importc.}
-proc glNormal3fVertex3fvSUN*(n: PGLfloat, v: PGLfloat){.dynlib: dllname, importc.}
-proc glColor4fNormal3fVertex3fSUN*(r: TGLfloat, g: TGLfloat, b: TGLfloat, 
-                                   a: TGLfloat, nx: TGLfloat, ny: TGLfloat, 
-                                   nz: TGLfloat, x: TGLfloat, y: TGLfloat, 
-                                   z: TGLfloat){.dynlib: dllname, importc.}
-proc glColor4fNormal3fVertex3fvSUN*(c: PGLfloat, n: PGLfloat, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord2fVertex3fSUN*(s: TGLfloat, t: TGLfloat, x: TGLfloat, y: TGLfloat, 
-                              z: TGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord2fVertex3fvSUN*(tc: PGLfloat, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glTexCoord4fVertex4fSUN*(s: TGLfloat, t: TGLfloat, p: TGLfloat, q: TGLfloat, 
-                              x: TGLfloat, y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord4fVertex4fvSUN*(tc: PGLfloat, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glTexCoord2fColor4ubVertex3fSUN*(s: TGLfloat, t: TGLfloat, r: TGLubyte, 
-                                      g: TGLubyte, b: TGLubyte, a: TGLubyte, 
-                                      x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord2fColor4ubVertex3fvSUN*(tc: PGLfloat, c: PGLubyte, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord2fColor3fVertex3fSUN*(s: TGLfloat, t: TGLfloat, r: TGLfloat, 
-                                     g: TGLfloat, b: TGLfloat, x: TGLfloat, 
-                                     y: TGLfloat, z: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glTexCoord2fColor3fVertex3fvSUN*(tc: PGLfloat, c: PGLfloat, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord2fNormal3fVertex3fSUN*(s: TGLfloat, t: TGLfloat, nx: TGLfloat, 
-                                      ny: TGLfloat, nz: TGLfloat, x: TGLfloat, 
-                                      y: TGLfloat, z: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glTexCoord2fNormal3fVertex3fvSUN*(tc: PGLfloat, n: PGLfloat, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord2fColor4fNormal3fVertex3fSUN*(s: TGLfloat, t: TGLfloat, r: TGLfloat, 
-    g: TGLfloat, b: TGLfloat, a: TGLfloat, nx: TGLfloat, ny: TGLfloat, nz: TGLfloat, 
-    x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord2fColor4fNormal3fVertex3fvSUN*(tc: PGLfloat, c: PGLfloat, 
-    n: PGLfloat, v: PGLfloat){.dynlib: dllname, importc.}
-proc glTexCoord4fColor4fNormal3fVertex4fSUN*(s: TGLfloat, t: TGLfloat, p: TGLfloat, 
-    q: TGLfloat, r: TGLfloat, g: TGLfloat, b: TGLfloat, a: TGLfloat, nx: TGLfloat, 
-    ny: TGLfloat, nz: TGLfloat, x: TGLfloat, y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glTexCoord4fColor4fNormal3fVertex4fvSUN*(tc: PGLfloat, c: PGLfloat, 
-    n: PGLfloat, v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiVertex3fSUN*(rc: TGLuint, x: TGLfloat, y: TGLfloat, 
-                                     z: TGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiVertex3fvSUN*(rc: PGLuint, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glReplacementCodeuiColor4ubVertex3fSUN*(rc: TGLuint, r: TGLubyte, g: TGLubyte, 
-    b: TGLubyte, a: TGLubyte, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glReplacementCodeuiColor4ubVertex3fvSUN*(rc: PGLuint, c: PGLubyte, 
-    v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiColor3fVertex3fSUN*(rc: TGLuint, r: TGLfloat, g: TGLfloat, 
-    b: TGLfloat, x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiColor3fVertex3fvSUN*(rc: PGLuint, c: PGLfloat, 
-    v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiNormal3fVertex3fSUN*(rc: TGLuint, nx: TGLfloat, 
-    ny: TGLfloat, nz: TGLfloat, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glReplacementCodeuiNormal3fVertex3fvSUN*(rc: PGLuint, n: PGLfloat, 
-    v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiColor4fNormal3fVertex3fSUN*(rc: TGLuint, r: TGLfloat, 
-    g: TGLfloat, b: TGLfloat, a: TGLfloat, nx: TGLfloat, ny: TGLfloat, nz: TGLfloat, 
-    x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiColor4fNormal3fVertex3fvSUN*(rc: PGLuint, c: PGLfloat, 
-    n: PGLfloat, v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiTexCoord2fVertex3fSUN*(rc: TGLuint, s: TGLfloat, 
-    t: TGLfloat, x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiTexCoord2fVertex3fvSUN*(rc: PGLuint, tc: PGLfloat, 
-    v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN*(rc: TGLuint, s: TGLfloat, 
-    t: TGLfloat, nx: TGLfloat, ny: TGLfloat, nz: TGLfloat, x: TGLfloat, y: TGLfloat, 
-    z: TGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN*(rc: PGLuint, 
-    tc: PGLfloat, n: PGLfloat, v: PGLfloat){.dynlib: dllname, importc.}
-proc glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN*(rc: TGLuint, 
-    s: TGLfloat, t: TGLfloat, r: TGLfloat, g: TGLfloat, b: TGLfloat, a: TGLfloat, 
-    nx: TGLfloat, ny: TGLfloat, nz: TGLfloat, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN*(rc: PGLuint, 
-    tc: PGLfloat, c: PGLfloat, n: PGLfloat, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_ARB_fragment_program *****//
-const 
-  GL_FRAGMENT_PROGRAM_ARB* = 0x00008804 # GL_PROGRAM_FORMAT_ASCII_ARB  { already defined }
-                                        # GL_PROGRAM_LENGTH_ARB  { already defined }
-                                        # GL_PROGRAM_FORMAT_ARB  { already defined }
-                                        # GL_PROGRAM_BINDING_ARB  { already defined }
-                                        # GL_PROGRAM_INSTRUCTIONS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_INSTRUCTIONS_ARB  { already defined }
-                                        # GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB  { already defined }
-                                        # GL_PROGRAM_TEMPORARIES_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_TEMPORARIES_ARB  { already defined }
-                                        # GL_PROGRAM_NATIVE_TEMPORARIES_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB  { already defined }
-                                        # GL_PROGRAM_PARAMETERS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_PARAMETERS_ARB  { already defined }
-                                        # GL_PROGRAM_NATIVE_PARAMETERS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB  { already defined }
-                                        # GL_PROGRAM_ATTRIBS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_ATTRIBS_ARB  { already defined }
-                                        # GL_PROGRAM_NATIVE_ATTRIBS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB  { already defined }
-                                        # GL_MAX_PROGRAM_ENV_PARAMETERS_ARB  { already defined }
-                                        # GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB  { already defined }
-  GL_PROGRAM_ALU_INSTRUCTIONS_ARB* = 0x00008805
-  GL_PROGRAM_TEX_INSTRUCTIONS_ARB* = 0x00008806
-  GL_PROGRAM_TEX_INDIRECTIONS_ARB* = 0x00008807
-  GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB* = 0x00008808
-  GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB* = 0x00008809
-  GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB* = 0x0000880A
-  GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB* = 0x0000880B
-  GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB* = 0x0000880C
-  GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB* = 0x0000880D
-  GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB* = 0x0000880E
-  GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB* = 0x0000880F
-  GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB* = 0x00008810 # GL_PROGRAM_STRING_ARB  { already defined }
-                                                           # 
-                                                           # GL_PROGRAM_ERROR_POSITION_ARB  { already defined }
-                                                           # GL_CURRENT_MATRIX_ARB  { already defined }
-                                                           # 
-                                                           # GL_TRANSPOSE_CURRENT_MATRIX_ARB  { already defined }
-                                                           # 
-                                                           # GL_CURRENT_MATRIX_STACK_DEPTH_ARB  { already defined }
-                                                           # 
-                                                           # GL_MAX_PROGRAM_MATRICES_ARB  { already defined }
-                                                           # 
-                                                           # GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB  { already defined }
-  GL_MAX_TEXTURE_COORDS_ARB* = 0x00008871
-  GL_MAX_TEXTURE_IMAGE_UNITS_ARB* = 0x00008872 # GL_PROGRAM_ERROR_STRING_ARB  { already defined }
-                                               # GL_MATRIX0_ARB  { already defined }
-                                               # GL_MATRIX1_ARB  { already defined }
-                                               # GL_MATRIX2_ARB  { already defined }
-                                               # GL_MATRIX3_ARB  { already defined }
-                                               # GL_MATRIX4_ARB  { already defined }
-                                               # GL_MATRIX5_ARB  { already defined }
-                                               # GL_MATRIX6_ARB  { already defined }
-                                               # GL_MATRIX7_ARB  { already defined }
-                                               # GL_MATRIX8_ARB  { already defined }
-                                               # GL_MATRIX9_ARB  { already defined }
-                                               # GL_MATRIX10_ARB  { already defined }
-                                               # GL_MATRIX11_ARB  { already defined }
-                                               # GL_MATRIX12_ARB  { already defined }
-                                               # GL_MATRIX13_ARB  { already defined }
-                                               # GL_MATRIX14_ARB  { already defined }
-                                               # GL_MATRIX15_ARB  { already defined }
-                                               # GL_MATRIX16_ARB  { already defined }
-                                               # GL_MATRIX17_ARB  { already defined }
-                                               # GL_MATRIX18_ARB  { already defined }
-                                               # GL_MATRIX19_ARB  { already defined }
-                                               # GL_MATRIX20_ARB  { already defined }
-                                               # GL_MATRIX21_ARB  { already defined }
-                                               # GL_MATRIX22_ARB  { already defined }
-                                               # GL_MATRIX23_ARB  { already defined }
-                                               # GL_MATRIX24_ARB  { already defined }
-                                               # GL_MATRIX25_ARB  { already defined }
-                                               # GL_MATRIX26_ARB  { already defined }
-                                               # GL_MATRIX27_ARB  { already defined }
-                                               # GL_MATRIX28_ARB  { already defined }
-                                               # GL_MATRIX29_ARB  { already defined }
-                                               # GL_MATRIX30_ARB  { already defined }
-                                               # GL_MATRIX31_ARB  { already defined }
-                                               # glProgramStringARB  { already defined }
-                                               # glBindProgramARB  { already defined }
-                                               # glDeleteProgramsARB  { already defined }
-                                               # glGenProgramsARB  { already defined }
-                                               # glProgramEnvParameter4dARB  { already defined }
-                                               # glProgramEnvParameter4dvARB  { already defined }
-                                               # glProgramEnvParameter4fARB  { already defined }
-                                               # glProgramEnvParameter4fvARB  { already defined }
-                                               # glProgramLocalParameter4dARB  { already defined }
-                                               # glProgramLocalParameter4dvARB  { already defined }
-                                               # glProgramLocalParameter4fARB  { already defined }
-                                               # glProgramLocalParameter4fvARB  { already defined }
-                                               # glGetProgramEnvParameterdvARB  { already defined }
-                                               # glGetProgramEnvParameterfvARB  { already defined }
-                                               # glGetProgramLocalParameterdvARB  { already defined }
-                                               # glGetProgramLocalParameterfvARB  { already defined }
-                                               # glGetProgramivARB  { already defined }
-                                               # glGetProgramStringARB  { already defined }
-                                               # glIsProgramARB  { already defined }
-
-  #***** GL_ATI_text_fragment_shader *****
-const 
-  GL_TEXT_FRAGMENT_SHADER_ATI* = 0x00008200 #***** GL_ARB_vertex_buffer_object *****
-
-const 
-  GL_BUFFER_SIZE_ARB* = 0x00008764
-  GL_BUFFER_USAGE_ARB* = 0x00008765
-  GL_ARRAY_BUFFER_ARB* = 0x00008892
-  GL_ELEMENT_ARRAY_BUFFER_ARB* = 0x00008893
-  GL_ARRAY_BUFFER_BINDING_ARB* = 0x00008894
-  GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB* = 0x00008895
-  GL_VERTEX_ARRAY_BUFFER_BINDING_ARB* = 0x00008896
-  GL_NORMAL_ARRAY_BUFFER_BINDING_ARB* = 0x00008897
-  GL_COLOR_ARRAY_BUFFER_BINDING_ARB* = 0x00008898
-  GL_INDEX_ARRAY_BUFFER_BINDING_ARB* = 0x00008899
-  GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB* = 0x0000889A
-  GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB* = 0x0000889B
-  GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB* = 0x0000889C
-  GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB* = 0x0000889D
-  GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB* = 0x0000889E
-  GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB* = 0x0000889F
-  GL_READ_ONLY_ARB* = 0x000088B8
-  GL_WRITE_ONLY_ARB* = 0x000088B9
-  GL_READ_WRITE_ARB* = 0x000088BA
-  GL_BUFFER_ACCESS_ARB* = 0x000088BB
-  GL_BUFFER_MAPPED_ARB* = 0x000088BC
-  GL_BUFFER_MAP_POINTER_ARB* = 0x000088BD
-  GL_STREAM_DRAW_ARB* = 0x000088E0
-  GL_STREAM_READ_ARB* = 0x000088E1
-  GL_STREAM_COPY_ARB* = 0x000088E2
-  GL_STATIC_DRAW_ARB* = 0x000088E4
-  GL_STATIC_READ_ARB* = 0x000088E5
-  GL_STATIC_COPY_ARB* = 0x000088E6
-  GL_DYNAMIC_DRAW_ARB* = 0x000088E8
-  GL_DYNAMIC_READ_ARB* = 0x000088E9
-  GL_DYNAMIC_COPY_ARB* = 0x000088EA
-
-proc glBindBufferARB*(target: TGLenum, buffer: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteBuffersARB*(n: TGLsizei, buffers: PGLuint){.dynlib: dllname, importc.}
-proc glGenBuffersARB*(n: TGLsizei, buffers: PGLuint){.dynlib: dllname, importc.}
-proc glIsBufferARB*(buffer: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glBufferDataARB*(target: TGLenum, size: TGLsizei, data: PGLvoid, 
-                      usage: TGLenum){.dynlib: dllname, importc.}
-proc glBufferSubDataARB*(target: TGLenum, offset: TGLint, size: TGLsizei, 
-                         data: PGLvoid){.dynlib: dllname, importc.}
-proc glGetBufferSubDataARB*(target: TGLenum, offset: TGLint, size: TGLsizei, 
-                            data: PGLvoid){.dynlib: dllname, importc.}
-proc glMapBufferARB*(target: TGLenum, access: TGLenum): PGLvoid{.dynlib: dllname, 
-    importc.}
-proc glUnmapBufferARB*(target: TGLenum): TGLboolean{.dynlib: dllname, importc.}
-proc glGetBufferParameterivARB*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetBufferPointervARB*(target: TGLenum, pname: TGLenum, params: PPGLvoid){.
-    dynlib: dllname, importc.}
-  #***** GL_APPLE_client_storage *****//
-const 
-  GL_UNPACK_CLIENT_STORAGE_APPLE* = 0x000085B2
-
-  #***** GL_APPLE_element_array *****//
-const 
-  GL_ELEMENT_ARRAY_APPLE* = 0x00008768
-  GL_ELEMENT_ARRAY_TYPE_APPLE* = 0x00008769
-  GL_ELEMENT_ARRAY_POINTER_APPLE* = 0x0000876A
-
-proc glElementPointerAPPLE*(thetype: TGLenum, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glDrawElementArrayAPPLE*(mode: TGLenum, first: TGLint, count: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glDrawRangeElementArrayAPPLE*(mode: TGLenum, start: TGLuint, theend: TGLuint, 
-                                   first: TGLint, count: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glMultiDrawElementArrayAPPLE*(mode: TGLenum, first: PGLint, count: PGLsizei, 
-                                   primcount: TGLsizei){.dynlib: dllname, importc.}
-proc glMultiDrawRangeElementArrayAPPLE*(mode: TGLenum, start: TGLuint, 
-                                        theend: TGLuint, first: PGLint, 
-                                        count: PGLsizei, primcount: TGLsizei){.
-    dynlib: dllname, importc.}
-  #***** GL_APPLE_fence *****//
-const 
-  GL_DRAW_PIXELS_APPLE* = 0x00008A0A
-  GL_FENCE_APPLE* = 0x00008A0B
-
-proc glGenFencesAPPLE*(n: TGLsizei, fences: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteFencesAPPLE*(n: TGLsizei, fences: PGLuint){.dynlib: dllname, importc.}
-proc glSetFenceAPPLE*(fence: TGLuint){.dynlib: dllname, importc.}
-proc glIsFenceAPPLE*(fence: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glTestFenceAPPLE*(fence: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glFinishFenceAPPLE*(fence: TGLuint){.dynlib: dllname, importc.}
-proc glTestObjectAPPLE*(theobject: TGLenum, name: TGLuint): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glFinishObjectAPPLE*(theobject: TGLenum, name: TGLint){.dynlib: dllname, 
-    importc.}
-  #***** GL_APPLE_vertex_array_object *****//
-const 
-  GL_VERTEX_ARRAY_BINDING_APPLE* = 0x000085B5
-
-proc glBindVertexArrayAPPLE*(thearray: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteVertexArraysAPPLE*(n: TGLsizei, arrays: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGenVertexArraysAPPLE*(n: TGLsizei, arrays: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glIsVertexArrayAPPLE*(thearray: TGLuint): TGLboolean{.dynlib: dllname, 
-    importc.}
-  #***** GL_APPLE_vertex_array_range *****//
-const 
-  constGL_VERTEX_ARRAY_RANGE_APPLE* = 0x0000851D
-  GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE* = 0x0000851E
-  GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE* = 0x00008520
-  GL_VERTEX_ARRAY_RANGE_POINTER_APPLE* = 0x00008521
-  GL_VERTEX_ARRAY_STORAGE_HINT_APPLE* = 0x0000851F
-  GL_STORAGE_CACHED_APPLE* = 0x000085BE
-  GL_STORAGE_SHARED_APPLE* = 0x000085BF
-
-proc glVertexArrayRangeAPPLE*(len: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glFlushVertexArrayRangeAPPLE*(len: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glVertexArrayParameteriAPPLE*(pname: TGLenum, param: TGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_ARB_matrix_palette *****//
-const 
-  GL_MATRIX_PALETTE_ARB* = 0x00008840
-  GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB* = 0x00008841
-  GL_MAX_PALETTE_MATRICES_ARB* = 0x00008842
-  constGL_CURRENT_PALETTE_MATRIX_ARB* = 0x00008843
-  GL_MATRIX_INDEX_ARRAY_ARB* = 0x00008844
-  GL_CURRENT_MATRIX_INDEX_ARB* = 0x00008845
-  GL_MATRIX_INDEX_ARRAY_SIZE_ARB* = 0x00008846
-  GL_MATRIX_INDEX_ARRAY_TYPE_ARB* = 0x00008847
-  GL_MATRIX_INDEX_ARRAY_STRIDE_ARB* = 0x00008848
-  GL_MATRIX_INDEX_ARRAY_POINTER_ARB* = 0x00008849
-
-proc glCurrentPaletteMatrixARB*(index: TGLint){.dynlib: dllname, importc.}
-proc glMatrixIndexubvARB*(size: TGLint, indices: PGLubyte){.dynlib: dllname, 
-    importc.}
-proc glMatrixIndexusvARB*(size: TGLint, indices: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glMatrixIndexuivARB*(size: TGLint, indices: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glMatrixIndexPointerARB*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                              pointer: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_NV_element_array *****//
-const 
-  GL_ELEMENT_ARRAY_TYPE_NV* = 0x00008769
-  GL_ELEMENT_ARRAY_POINTER_NV* = 0x0000876A
-
-proc glElementPointerNV*(thetype: TGLenum, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glDrawElementArrayNV*(mode: TGLenum, first: TGLint, count: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glDrawRangeElementArrayNV*(mode: TGLenum, start: TGLuint, theend: TGLuint, 
-                                first: TGLint, count: TGLsizei){.dynlib: dllname, 
-    importc.}
-proc glMultiDrawElementArrayNV*(mode: TGLenum, first: PGLint, count: PGLsizei, 
-                                primcount: TGLsizei){.dynlib: dllname, importc.}
-proc glMultiDrawRangeElementArrayNV*(mode: TGLenum, start: TGLuint, 
-                                     theend: TGLuint, first: PGLint, 
-                                     count: PGLsizei, primcount: TGLsizei){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_float_buffer *****//
-const 
-  GL_FLOAT_R_NV* = 0x00008880
-  GL_FLOAT_RG_NV* = 0x00008881
-  GL_FLOAT_RGB_NV* = 0x00008882
-  GL_FLOAT_RGBA_NV* = 0x00008883
-  GL_FLOAT_R16_NV* = 0x00008884
-  GL_FLOAT_R32_NV* = 0x00008885
-  GL_FLOAT_RG16_NV* = 0x00008886
-  GL_FLOAT_RG32_NV* = 0x00008887
-  GL_FLOAT_RGB16_NV* = 0x00008888
-  GL_FLOAT_RGB32_NV* = 0x00008889
-  GL_FLOAT_RGBA16_NV* = 0x0000888A
-  GL_FLOAT_RGBA32_NV* = 0x0000888B
-  GL_TEXTURE_FLOAT_COMPONENTS_NV* = 0x0000888C
-  GL_FLOAT_CLEAR_COLOR_VALUE_NV* = 0x0000888D
-  GL_FLOAT_RGBA_MODE_NV* = 0x0000888E
-
-  #***** GL_NV_fragment_program *****//
-const 
-  GL_FRAGMENT_PROGRAM_NV* = 0x00008870
-  GL_MAX_TEXTURE_COORDS_NV* = 0x00008871
-  GL_MAX_TEXTURE_IMAGE_UNITS_NV* = 0x00008872
-  GL_FRAGMENT_PROGRAM_BINDING_NV* = 0x00008873
-  GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV* = 0x00008868
-  GL_PROGRAM_ERROR_STRING_NV* = 0x00008874
-
-proc glProgramNamedParameter4fNV*(id: TGLuint, length: TGLsizei, name: PGLubyte, 
-                                  x: TGLfloat, y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramNamedParameter4dNV*(id: TGLuint, length: TGLsizei, name: PGLubyte, 
-                                  x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                                  w: TGLdouble){.dynlib: dllname, importc.}
-proc glGetProgramNamedParameterfvNV*(id: TGLuint, length: TGLsizei, 
-                                     name: PGLubyte, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetProgramNamedParameterdvNV*(id: TGLuint, length: TGLsizei, 
-                                     name: PGLubyte, params: PGLdouble){.
-    dynlib: dllname, importc.}
-  # glProgramLocalParameter4dARB  { already defined }
-  # glProgramLocalParameter4dvARB  { already defined }
-  # glProgramLocalParameter4fARB  { already defined }
-  # glProgramLocalParameter4fvARB  { already defined }
-  # glGetProgramLocalParameterdvARB  { already defined }
-  # glGetProgramLocalParameterfvARB  { already defined }
-  #***** GL_NV_primitive_restart *****//
-const 
-  constGL_PRIMITIVE_RESTART_NV* = 0x00008558
-  constGL_PRIMITIVE_RESTART_INDEX_NV* = 0x00008559
-
-proc glPrimitiveRestartNV*(){.dynlib: dllname, importc.}
-proc glPrimitiveRestartIndexNV*(index: TGLuint){.dynlib: dllname, importc.}
-  #***** GL_NV_vertex_program2 *****//
-  #***** GL_NV_pixel_data_range *****//
-const 
-  GL_WRITE_PIXEL_DATA_RANGE_NV* = 0x00008878
-  GL_READ_PIXEL_DATA_RANGE_NV* = 0x00008879
-  GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV* = 0x0000887A
-  GL_READ_PIXEL_DATA_RANGE_LENGTH_NV* = 0x0000887B
-  GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV* = 0x0000887C
-  GL_READ_PIXEL_DATA_RANGE_POINTER_NV* = 0x0000887D
-
-proc glPixelDataRangeNV*(target: TGLenum, len: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glFlushPixelDataRangeNV*(target: TGLenum){.dynlib: dllname, importc.}
-  # wglAllocateMemoryNV  { already defined }
-  # wglFreeMemoryNV  { already defined }
-  #***** GL_EXT_texture_rectangle *****//
-const 
-  GL_TEXTURE_RECTANGLE_EXT* = 0x000084F5
-  GL_TEXTURE_BINDING_RECTANGLE_EXT* = 0x000084F6
-  GL_PROXY_TEXTURE_RECTANGLE_EXT* = 0x000084F7
-  GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT* = 0x000084F8
-
-  #***** GL_S3_s3tc *****//
-const 
-  GL_RGB_S3TC* = 0x000083A0
-  GL_RGB4_S3TC* = 0x000083A1
-  GL_RGBA_S3TC* = 0x000083A2
-  GL_RGBA4_S3TC* = 0x000083A3
-
-  #***** GL_ATI_draw_buffers *****//
-const 
-  GL_MAX_DRAW_BUFFERS_ATI* = 0x00008824
-  GL_DRAW_BUFFER0_ATI* = 0x00008825
-  GL_DRAW_BUFFER1_ATI* = 0x00008826
-  GL_DRAW_BUFFER2_ATI* = 0x00008827
-  GL_DRAW_BUFFER3_ATI* = 0x00008828
-  GL_DRAW_BUFFER4_ATI* = 0x00008829
-  GL_DRAW_BUFFER5_ATI* = 0x0000882A
-  GL_DRAW_BUFFER6_ATI* = 0x0000882B
-  GL_DRAW_BUFFER7_ATI* = 0x0000882C
-  GL_DRAW_BUFFER8_ATI* = 0x0000882D
-  GL_DRAW_BUFFER9_ATI* = 0x0000882E
-  GL_DRAW_BUFFER10_ATI* = 0x0000882F
-  GL_DRAW_BUFFER11_ATI* = 0x00008830
-  GL_DRAW_BUFFER12_ATI* = 0x00008831
-  GL_DRAW_BUFFER13_ATI* = 0x00008832
-  GL_DRAW_BUFFER14_ATI* = 0x00008833
-  GL_DRAW_BUFFER15_ATI* = 0x00008834
-
-proc glDrawBuffersATI*(n: TGLsizei, bufs: PGLenum){.dynlib: dllname, importc.}
-  #***** GL_ATI_texture_env_combine3 *****//
-const 
-  GL_MODULATE_ADD_ATI* = 0x00008744
-  GL_MODULATE_SIGNED_ADD_ATI* = 0x00008745
-  GL_MODULATE_SUBTRACT_ATI* = 0x00008746
-
-  #***** GL_ATI_texture_float *****//
-const 
-  GL_RGBA_FLOAT32_ATI* = 0x00008814
-  GL_RGB_FLOAT32_ATI* = 0x00008815
-  GL_ALPHA_FLOAT32_ATI* = 0x00008816
-  GL_INTENSITY_FLOAT32_ATI* = 0x00008817
-  GL_LUMINANCE_FLOAT32_ATI* = 0x00008818
-  GL_LUMINANCE_ALPHA_FLOAT32_ATI* = 0x00008819
-  GL_RGBA_FLOAT16_ATI* = 0x0000881A
-  GL_RGB_FLOAT16_ATI* = 0x0000881B
-  GL_ALPHA_FLOAT16_ATI* = 0x0000881C
-  GL_INTENSITY_FLOAT16_ATI* = 0x0000881D
-  GL_LUMINANCE_FLOAT16_ATI* = 0x0000881E
-  GL_LUMINANCE_ALPHA_FLOAT16_ATI* = 0x0000881F
-
-  #***** GL_NV_texture_expand_normal *****//
-const 
-  GL_TEXTURE_UNSIGNED_REMAP_MODE_NV* = 0x0000888F
-
-  #***** GL_NV_half_float *****//
-const 
-  GL_HALF_FLOAT_NV* = 0x0000140B
-
-proc glVertex2hNV*(x: TGLushort, y: TGLushort){.dynlib: dllname, importc.}
-proc glVertex2hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glVertex3hNV*(x: TGLushort, y: TGLushort, z: TGLushort){.dynlib: dllname, 
-    importc.}
-proc glVertex3hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glVertex4hNV*(x: TGLushort, y: TGLushort, z: TGLushort, w: TGLushort){.
-    dynlib: dllname, importc.}
-proc glVertex4hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glNormal3hNV*(nx: TGLushort, ny: TGLushort, nz: TGLushort){.dynlib: dllname, 
-    importc.}
-proc glNormal3hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glColor3hNV*(red: TGLushort, green: TGLushort, blue: TGLushort){.
-    dynlib: dllname, importc.}
-proc glColor3hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glColor4hNV*(red: TGLushort, green: TGLushort, blue: TGLushort, 
-                  alpha: TGLushort){.dynlib: dllname, importc.}
-proc glColor4hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glTexCoord1hNV*(s: TGLushort){.dynlib: dllname, importc.}
-proc glTexCoord1hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glTexCoord2hNV*(s: TGLushort, t: TGLushort){.dynlib: dllname, importc.}
-proc glTexCoord2hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glTexCoord3hNV*(s: TGLushort, t: TGLushort, r: TGLushort){.dynlib: dllname, 
-    importc.}
-proc glTexCoord3hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glTexCoord4hNV*(s: TGLushort, t: TGLushort, r: TGLushort, q: TGLushort){.
-    dynlib: dllname, importc.}
-proc glTexCoord4hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glMultiTexCoord1hNV*(target: TGLenum, s: TGLushort){.dynlib: dllname, importc.}
-proc glMultiTexCoord1hvNV*(target: TGLenum, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2hNV*(target: TGLenum, s: TGLushort, t: TGLushort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2hvNV*(target: TGLenum, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3hNV*(target: TGLenum, s: TGLushort, t: TGLushort, r: TGLushort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3hvNV*(target: TGLenum, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4hNV*(target: TGLenum, s: TGLushort, t: TGLushort, r: TGLushort, 
-                          q: TGLushort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4hvNV*(target: TGLenum, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glFogCoordhNV*(fog: TGLushort){.dynlib: dllname, importc.}
-proc glFogCoordhvNV*(fog: PGLushort){.dynlib: dllname, importc.}
-proc glSecondaryColor3hNV*(red: TGLushort, green: TGLushort, blue: TGLushort){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3hvNV*(v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexWeighthNV*(weight: TGLushort){.dynlib: dllname, importc.}
-proc glVertexWeighthvNV*(weight: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib1hNV*(index: TGLuint, x: TGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib1hvNV*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib2hNV*(index: TGLuint, x: TGLushort, y: TGLushort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2hvNV*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib3hNV*(index: TGLuint, x: TGLushort, y: TGLushort, z: TGLushort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3hvNV*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib4hNV*(index: TGLuint, x: TGLushort, y: TGLushort, z: TGLushort, 
-                         w: TGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib4hvNV*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttribs1hvNV*(index: TGLuint, n: TGLsizei, v: PGLushort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2hvNV*(index: TGLuint, n: TGLsizei, v: PGLushort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3hvNV*(index: TGLuint, n: TGLsizei, v: PGLushort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4hvNV*(index: TGLuint, n: TGLsizei, v: PGLushort){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_map_object_buffer *****//
-proc glMapObjectBufferATI*(buffer: TGLuint): PGLvoid{.dynlib: dllname, importc.}
-proc glUnmapObjectBufferATI*(buffer: TGLuint){.dynlib: dllname, importc.}
-  #***** GL_ATI_separate_stencil *****//
-const 
-  GL_KEEP* = 0x00001E00
-  GL_ZERO* = 0x00000000
-  GL_REPLACE* = 0x00001E01
-  GL_INCR* = 0x00001E02
-  GL_DECR* = 0x00001E03
-  GL_INVERT* = 0x0000150A
-  GL_NEVER* = 0x00000200
-  GL_LESS* = 0x00000201
-  GL_LEQUAL* = 0x00000203
-  GL_GREATER* = 0x00000204
-  GL_GEQUAL* = 0x00000206
-  GL_EQUAL* = 0x00000202
-  GL_NOTEQUAL* = 0x00000205
-  GL_ALWAYS* = 0x00000207
-  GL_FRONT* = 0x00000404
-  GL_BACK* = 0x00000405
-  GL_FRONT_AND_BACK* = 0x00000408
-  GL_STENCIL_BACK_FUNC_ATI* = 0x00008800
-  GL_STENCIL_BACK_FAIL_ATI* = 0x00008801
-  GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI* = 0x00008802
-  GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI* = 0x00008803
-
-proc glStencilOpSeparateATI*(face: TGLenum, sfail: TGLenum, dpfail: TGLenum, 
-                             dppass: TGLenum){.dynlib: dllname, importc.}
-proc glStencilFuncSeparateATI*(frontfunc: TGLenum, backfunc: TGLenum, theRef: TGLint, 
-                               mask: TGLuint){.dynlib: dllname, importc.}
-  #***** GL_ATI_vertex_attrib_array_object *****//
-proc glVertexAttribArrayObjectATI*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                                   normalized: TGLboolean, stride: TGLsizei, 
-                                   buffer: TGLuint, offset: TGLuint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribArrayObjectfvATI*(index: TGLuint, pname: TGLenum, 
-                                        params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetVertexAttribArrayObjectivATI*(index: TGLuint, pname: TGLenum, 
-                                        params: PGLint){.dynlib: dllname, 
-    importc.}
-  #***** GL_ARB_occlusion_query *****//
-const 
-  GL_SAMPLES_PASSED_ARB* = 0x00008914
-  GL_QUERY_COUNTER_BITS_ARB* = 0x00008864
-  GL_CURRENT_QUERY_ARB* = 0x00008865
-  GL_QUERY_RESULT_ARB* = 0x00008866
-  GL_QUERY_RESULT_AVAILABLE_ARB* = 0x00008867
-
-proc glGenQueriesARB*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteQueriesARB*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glIsQueryARB*(id: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glBeginQueryARB*(target: TGLenum, id: TGLuint){.dynlib: dllname, importc.}
-proc glEndQueryARB*(target: TGLenum){.dynlib: dllname, importc.}
-proc glGetQueryivARB*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetQueryObjectivARB*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetQueryObjectuivARB*(id: TGLuint, pname: TGLenum, params: PGLuint){.
-    dynlib: dllname, importc.}
-  #***** GL_ARB_shader_objects *****//
-const 
-  GL_PROGRAM_OBJECT_ARB* = 0x00008B40
-  GL_OBJECT_TYPE_ARB* = 0x00008B4E
-  GL_OBJECT_SUBTYPE_ARB* = 0x00008B4F
-  GL_OBJECT_DELETE_STATUS_ARB* = 0x00008B80
-  GL_OBJECT_COMPILE_STATUS_ARB* = 0x00008B81
-  GL_OBJECT_LINK_STATUS_ARB* = 0x00008B82
-  GL_OBJECT_VALIDATE_STATUS_ARB* = 0x00008B83
-  GL_OBJECT_INFO_LOG_LENGTH_ARB* = 0x00008B84
-  GL_OBJECT_ATTACHED_OBJECTS_ARB* = 0x00008B85
-  GL_OBJECT_ACTIVE_UNIFORMS_ARB* = 0x00008B86
-  GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB* = 0x00008B87
-  GL_OBJECT_SHADER_SOURCE_LENGTH_ARB* = 0x00008B88
-  GL_SHADER_OBJECT_ARB* = 0x00008B48
-  GL_FLOAT* = 0x00001406
-  GL_FLOAT_VEC2_ARB* = 0x00008B50
-  GL_FLOAT_VEC3_ARB* = 0x00008B51
-  GL_FLOAT_VEC4_ARB* = 0x00008B52
-  GL_INT* = 0x00001404
-  GL_INT_VEC2_ARB* = 0x00008B53
-  GL_INT_VEC3_ARB* = 0x00008B54
-  GL_INT_VEC4_ARB* = 0x00008B55
-  GL_BOOL_ARB* = 0x00008B56
-  GL_BOOL_VEC2_ARB* = 0x00008B57
-  GL_BOOL_VEC3_ARB* = 0x00008B58
-  GL_BOOL_VEC4_ARB* = 0x00008B59
-  GL_FLOAT_MAT2_ARB* = 0x00008B5A
-  GL_FLOAT_MAT3_ARB* = 0x00008B5B
-  GL_FLOAT_MAT4_ARB* = 0x00008B5C
-
-proc glDeleteObjectARB*(obj: GLhandleARB){.dynlib: dllname, importc.}
-proc glGetHandleARB*(pname: TGLenum): GLhandleARB{.dynlib: dllname, importc.}
-proc glDetachObjectARB*(containerObj: GLhandleARB, attachedObj: GLhandleARB){.
-    dynlib: dllname, importc.}
-proc glCreateShaderObjectARB*(shaderType: TGLenum): GLhandleARB{.dynlib: dllname, 
-    importc.}
-proc glShaderSourceARB*(shaderObj: GLhandleARB, count: TGLsizei, str: PGLvoid, 
-                        len: PGLint){.dynlib: dllname, importc.}
-proc glCompileShaderARB*(shaderObj: GLhandleARB){.dynlib: dllname, importc.}
-proc glCreateProgramObjectARB*(): GLhandleARB{.dynlib: dllname, importc.}
-proc glAttachObjectARB*(containerObj: GLhandleARB, obj: GLhandleARB){.
-    dynlib: dllname, importc.}
-proc glLinkProgramARB*(programObj: GLhandleARB){.dynlib: dllname, importc.}
-proc glUseProgramObjectARB*(programObj: GLhandleARB){.dynlib: dllname, importc.}
-proc glValidateProgramARB*(programObj: GLhandleARB){.dynlib: dllname, importc.}
-proc glUniform1fARB*(location: TGLint, v0: TGLfloat){.dynlib: dllname, importc.}
-proc glUniform2fARB*(location: TGLint, v0: TGLfloat, v1: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform3fARB*(location: TGLint, v0: TGLfloat, v1: TGLfloat, v2: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform4fARB*(location: TGLint, v0: TGLfloat, v1: TGLfloat, v2: TGLfloat, 
-                     v3: TGLfloat){.dynlib: dllname, importc.}
-proc glUniform1iARB*(location: TGLint, v0: TGLint){.dynlib: dllname, importc.}
-proc glUniform2iARB*(location: TGLint, v0: TGLint, v1: TGLint){.dynlib: dllname, 
-    importc.}
-proc glUniform3iARB*(location: TGLint, v0: TGLint, v1: TGLint, v2: TGLint){.
-    dynlib: dllname, importc.}
-proc glUniform4iARB*(location: TGLint, v0: TGLint, v1: TGLint, v2: TGLint, v3: TGLint){.
-    dynlib: dllname, importc.}
-proc glUniform1fvARB*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform2fvARB*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform3fvARB*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform4fvARB*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform1ivARB*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform2ivARB*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform3ivARB*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform4ivARB*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniformMatrix2fvARB*(location: TGLint, count: TGLsizei, 
-                            transpose: TGLboolean, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniformMatrix3fvARB*(location: TGLint, count: TGLsizei, 
-                            transpose: TGLboolean, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniformMatrix4fvARB*(location: TGLint, count: TGLsizei, 
-                            transpose: TGLboolean, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetObjectParameterfvARB*(obj: GLhandleARB, pname: TGLenum, 
-                                params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetObjectParameterivARB*(obj: GLhandleARB, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetInfoLogARB*(obj: GLhandleARB, maxLength: TGLsizei, len: PGLsizei, 
-                      infoLog: PGLcharARB){.dynlib: dllname, importc.}
-proc glGetAttachedObjectsARB*(containerObj: GLhandleARB, maxCount: TGLsizei, 
-                              count: PGLsizei, obj: PGLhandleARB){.
-    dynlib: dllname, importc.}
-proc glGetUniformLocationARB*(programObj: GLhandleARB, name: PGLcharARB): TGLint{.
-    dynlib: dllname, importc.}
-proc glGetActiveUniformARB*(programObj: GLhandleARB, index: TGLuint, 
-                            maxLength: TGLsizei, len: PGLsizei, size: PGLint, 
-                            thetype: PGLenum, name: PGLcharARB){.
-    dynlib: dllname, importc.}
-proc glGetUniformfvARB*(programObj: GLhandleARB, location: TGLint, 
-                        params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetUniformivARB*(programObj: GLhandleARB, location: TGLint, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetShaderSourceARB*(obj: GLhandleARB, maxLength: TGLsizei, len: PGLsizei, 
-                           source: PGLcharARB){.dynlib: dllname, importc.}
-
-const 
-  GL_VERTEX_SHADER_ARB* = 0x00008B31
-  GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB* = 0x00008B4A
-  GL_MAX_VARYING_FLOATS_ARB* = 0x00008B4B # GL_MAX_VERTEX_ATTRIBS_ARB  { already defined }
-                                          # GL_MAX_TEXTURE_IMAGE_UNITS_ARB  { already defined }
-  GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB* = 0x00008B4C
-  GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB* = 0x00008B4D # 
-                                                        # GL_MAX_TEXTURE_COORDS_ARB  { already defined }
-                                                        # 
-                                                        # GL_VERTEX_PROGRAM_POINT_SIZE_ARB  { already defined }
-                                                        # 
-                                                        # GL_VERTEX_PROGRAM_TWO_SIDE_ARB  { already defined }
-                                                        # GL_OBJECT_TYPE_ARB  { already defined }
-                                                        # GL_OBJECT_SUBTYPE_ARB  { already defined }
-  GL_OBJECT_ACTIVE_ATTRIBUTES_ARB* = 0x00008B89
-  GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB* = 0x00008B8A # GL_SHADER_OBJECT_ARB  { already defined }
-                                                          # 
-                                                          # GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB  { already defined }
-                                                          # 
-                                                          # GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB  { already defined }
-                                                          # 
-                                                          # GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB  { already defined }
-                                                          # 
-                                                          # GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB  { already defined }
-                                                          # 
-                                                          # GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB  { already defined }
-                                                          # 
-                                                          # GL_CURRENT_VERTEX_ATTRIB_ARB  { already defined }
-                                                          # 
-                                                          # GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB  { already defined }
-                                                          # GL_FLOAT  { already defined }
-                                                          # GL_FLOAT_VEC2_ARB  { already defined }
-                                                          # GL_FLOAT_VEC3_ARB  { already defined }
-                                                          # GL_FLOAT_VEC4_ARB  { already defined }
-                                                          # GL_FLOAT_MAT2_ARB  { already defined }
-                                                          # GL_FLOAT_MAT3_ARB  { already defined }
-                                                          # GL_FLOAT_MAT4_ARB  { already defined }
-                                                          # glVertexAttrib1fARB  { already defined }
-                                                          # glVertexAttrib1sARB  { already defined }
-                                                          # glVertexAttrib1dARB  { already defined }
-                                                          # glVertexAttrib2fARB  { already defined }
-                                                          # glVertexAttrib2sARB  { already defined }
-                                                          # glVertexAttrib2dARB  { already defined }
-                                                          # glVertexAttrib3fARB  { already defined }
-                                                          # glVertexAttrib3sARB  { already defined }
-                                                          # glVertexAttrib3dARB  { already defined }
-                                                          # glVertexAttrib4fARB  { already defined }
-                                                          # glVertexAttrib4sARB  { already defined }
-                                                          # glVertexAttrib4dARB  { already defined }
-                                                          # glVertexAttrib4NubARB  { already defined }
-                                                          # glVertexAttrib1fvARB  { already defined }
-                                                          # glVertexAttrib1svARB  { already defined }
-                                                          # glVertexAttrib1dvARB  { already defined }
-                                                          # glVertexAttrib2fvARB  { already defined }
-                                                          # glVertexAttrib2svARB  { already defined }
-                                                          # glVertexAttrib2dvARB  { already defined }
-                                                          # glVertexAttrib3fvARB  { already defined }
-                                                          # glVertexAttrib3svARB  { already defined }
-                                                          # glVertexAttrib3dvARB  { already defined }
-                                                          # glVertexAttrib4fvARB  { already defined }
-                                                          # glVertexAttrib4svARB  { already defined }
-                                                          # glVertexAttrib4dvARB  { already defined }
-                                                          # glVertexAttrib4ivARB  { already defined }
-                                                          # glVertexAttrib4bvARB  { already defined }
-                                                          # glVertexAttrib4ubvARB  { already defined }
-                                                          # glVertexAttrib4usvARB  { already defined }
-                                                          # glVertexAttrib4uivARB  { already defined }
-                                                          # glVertexAttrib4NbvARB  { already defined }
-                                                          # glVertexAttrib4NsvARB  { already defined }
-                                                          # glVertexAttrib4NivARB  { already defined }
-                                                          # glVertexAttrib4NubvARB  { already defined }
-                                                          # glVertexAttrib4NusvARB  { already defined }
-                                                          # glVertexAttrib4NuivARB  { already defined }
-                                                          # 
-                                                          # glVertexAttribPointerARB  { already defined }
-                                                          # 
-                                                          # glEnableVertexAttribArrayARB  { already defined }
-                                                          # 
-                                                          # glDisableVertexAttribArrayARB  { already defined }
-
-proc glBindAttribLocationARB*(programObj: GLhandleARB, index: TGLuint, 
-                              name: PGLcharARB){.dynlib: dllname, importc.}
-proc glGetActiveAttribARB*(programObj: GLhandleARB, index: TGLuint, 
-                           maxLength: TGLsizei, len: PGLsizei, size: PGLint, 
-                           thetype: PGLenum, name: PGLcharARB){.dynlib: dllname, 
-    importc.}
-proc glGetAttribLocationARB*(programObj: GLhandleARB, name: PGLcharARB): TGLint{.
-    dynlib: dllname, importc.}
-  # glGetVertexAttribdvARB  { already defined }
-  # glGetVertexAttribfvARB  { already defined }
-  # glGetVertexAttribivARB  { already defined }
-  # glGetVertexAttribPointervARB  { already defined }
-  #***** GL_ARB_fragment_shader *****//
-const 
-  GL_FRAGMENT_SHADER_ARB* = 0x00008B30
-  GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB* = 0x00008B49 # GL_MAX_TEXTURE_COORDS_ARB  { already defined }
-                                                       # 
-                                                       # GL_MAX_TEXTURE_IMAGE_UNITS_ARB  { already defined }
-                                                       # GL_OBJECT_TYPE_ARB  { already defined }
-                                                       # GL_OBJECT_SUBTYPE_ARB  { already defined }
-                                                       # GL_SHADER_OBJECT_ARB  { already defined }
-
-  #***** GL_ARB_shading_language_100 *****//
-  #***** GL_ARB_texture_non_power_of_two *****//
-  #***** GL_ARB_point_sprite *****//
-const 
-  GL_POINT_SPRITE_ARB* = 0x00008861
-  GL_COORD_REPLACE_ARB* = 0x00008862
-
-  #***** GL_EXT_depth_bounds_test *****//
-const 
-  constGL_DEPTH_BOUNDS_TEST_EXT* = 0x00008890
-  constGL_DEPTH_BOUNDS_EXT* = 0x00008891
-
-proc glDepthBoundsEXT*(zmin: TGLclampd, zmax: TGLclampd){.dynlib: dllname, importc.}
-  #***** GL_EXT_texture_mirror_clamp *****//
-const 
-  GL_MIRROR_CLAMP_EXT* = 0x00008742
-  GL_MIRROR_CLAMP_TO_EDGE_EXT* = 0x00008743
-  GL_MIRROR_CLAMP_TO_BORDER_EXT* = 0x00008912
-
-  #***** GL_EXT_blend_equation_separate *****//
-const 
-  GL_BLEND_EQUATION_RGB_EXT* = 0x00008009
-  GL_BLEND_EQUATION_ALPHA_EXT* = 0x0000883D
-
-proc glBlendEquationSeparateEXT*(modeRGB: TGLenum, modeAlpha: TGLenum){.
-    dynlib: dllname, importc.}
-  #***** GL_MESA_pack_invert *****//
-const 
-  GL_PACK_INVERT_MESA* = 0x00008758
-
-  #***** GL_MESA_ycbcr_texture *****//
-const 
-  GL_YCBCR_MESA* = 0x00008757
-  GL_UNSIGNED_SHORT_8_8_MESA* = 0x000085BA
-  GL_UNSIGNED_SHORT_8_8_REV_MESA* = 0x000085BB
-
-  #***** GL_ARB_fragment_program_shadow *****//
-  #***** GL_NV_fragment_program_option *****//
-  #***** GL_EXT_pixel_buffer_object *****//
-const 
-  GL_PIXEL_PACK_BUFFER_EXT* = 0x000088EB
-  GL_PIXEL_UNPACK_BUFFER_EXT* = 0x000088EC
-  GL_PIXEL_PACK_BUFFER_BINDING_EXT* = 0x000088ED
-  GL_PIXEL_UNPACK_BUFFER_BINDING_EXT* = 0x000088EF
-
-  #***** GL_NV_fragment_program2 *****//
-const 
-  GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV* = 0x000088F4
-  GL_MAX_PROGRAM_CALL_DEPTH_NV* = 0x000088F5
-  GL_MAX_PROGRAM_IF_DEPTH_NV* = 0x000088F6
-  GL_MAX_PROGRAM_LOOP_DEPTH_NV* = 0x000088F7
-  GL_MAX_PROGRAM_LOOP_COUNT_NV* = 0x000088F8
-
-  #***** GL_NV_vertex_program2_option *****//
-  # GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV  { already defined }
-  # GL_MAX_PROGRAM_CALL_DEPTH_NV  { already defined }
-  #***** GL_NV_vertex_program3 *****//
-  # GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB  { already defined }
-  #***** GL_ARB_draw_buffers *****//
-const 
-  GL_MAX_DRAW_BUFFERS_ARB* = 0x00008824
-  GL_DRAW_BUFFER0_ARB* = 0x00008825
-  GL_DRAW_BUFFER1_ARB* = 0x00008826
-  GL_DRAW_BUFFER2_ARB* = 0x00008827
-  GL_DRAW_BUFFER3_ARB* = 0x00008828
-  GL_DRAW_BUFFER4_ARB* = 0x00008829
-  GL_DRAW_BUFFER5_ARB* = 0x0000882A
-  GL_DRAW_BUFFER6_ARB* = 0x0000882B
-  GL_DRAW_BUFFER7_ARB* = 0x0000882C
-  GL_DRAW_BUFFER8_ARB* = 0x0000882D
-  GL_DRAW_BUFFER9_ARB* = 0x0000882E
-  GL_DRAW_BUFFER10_ARB* = 0x0000882F
-  GL_DRAW_BUFFER11_ARB* = 0x00008830
-  GL_DRAW_BUFFER12_ARB* = 0x00008831
-  GL_DRAW_BUFFER13_ARB* = 0x00008832
-  GL_DRAW_BUFFER14_ARB* = 0x00008833
-  GL_DRAW_BUFFER15_ARB* = 0x00008834
-
-proc glDrawBuffersARB*(n: TGLsizei, bufs: PGLenum){.dynlib: dllname, importc.}
-  #***** GL_ARB_texture_rectangle *****//
-const 
-  GL_TEXTURE_RECTANGLE_ARB* = 0x000084F5
-  GL_TEXTURE_BINDING_RECTANGLE_ARB* = 0x000084F6
-  GL_PROXY_TEXTURE_RECTANGLE_ARB* = 0x000084F7
-  GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB* = 0x000084F8
-
-  #***** GL_ARB_color_buffer_float *****//
-const 
-  GL_RGBA_FLOAT_MODE_ARB* = 0x00008820
-  GL_CLAMP_VERTEX_COLOR_ARB* = 0x0000891A
-  GL_CLAMP_FRAGMENT_COLOR_ARB* = 0x0000891B
-  GL_CLAMP_READ_COLOR_ARB* = 0x0000891C
-  GL_FIXED_ONLY_ARB* = 0x0000891D
-  WGL_TYPE_RGBA_FLOAT_ARB* = 0x000021A0
-
-proc glClampColorARB*(target: TGLenum, clamp: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_ARB_half_float_pixel *****//
-const 
-  GL_HALF_FLOAT_ARB* = 0x0000140B
-
-  #***** GL_ARB_texture_float *****//
-const 
-  GL_TEXTURE_RED_TYPE_ARB* = 0x00008C10
-  GL_TEXTURE_GREEN_TYPE_ARB* = 0x00008C11
-  GL_TEXTURE_BLUE_TYPE_ARB* = 0x00008C12
-  GL_TEXTURE_ALPHA_TYPE_ARB* = 0x00008C13
-  GL_TEXTURE_LUMINANCE_TYPE_ARB* = 0x00008C14
-  GL_TEXTURE_INTENSITY_TYPE_ARB* = 0x00008C15
-  GL_TEXTURE_DEPTH_TYPE_ARB* = 0x00008C16
-  GL_UNSIGNED_NORMALIZED_ARB* = 0x00008C17
-  GL_RGBA32F_ARB* = 0x00008814
-  GL_RGB32F_ARB* = 0x00008815
-  GL_ALPHA32F_ARB* = 0x00008816
-  GL_INTENSITY32F_ARB* = 0x00008817
-  GL_LUMINANCE32F_ARB* = 0x00008818
-  GL_LUMINANCE_ALPHA32F_ARB* = 0x00008819
-  GL_RGBA16F_ARB* = 0x0000881A
-  GL_RGB16F_ARB* = 0x0000881B
-  GL_ALPHA16F_ARB* = 0x0000881C
-  GL_INTENSITY16F_ARB* = 0x0000881D
-  GL_LUMINANCE16F_ARB* = 0x0000881E
-  GL_LUMINANCE_ALPHA16F_ARB* = 0x0000881F
-
-  #***** GL_EXT_texture_compression_dxt1 *****//
-  # GL_COMPRESSED_RGB_S3TC_DXT1_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  { already defined }
-  #***** GL_ARB_pixel_buffer_object *****//
-const 
-  GL_PIXEL_PACK_BUFFER_ARB* = 0x000088EB
-  GL_PIXEL_UNPACK_BUFFER_ARB* = 0x000088EC
-  GL_PIXEL_PACK_BUFFER_BINDING_ARB* = 0x000088ED
-  GL_PIXEL_UNPACK_BUFFER_BINDING_ARB* = 0x000088EF
-
-  #***** GL_EXT_framebuffer_object *****//
-const 
-  GL_FRAMEBUFFER_EXT* = 0x00008D40
-  GL_RENDERBUFFER_EXT* = 0x00008D41
-  GL_STENCIL_INDEX_EXT* = 0x00008D45
-  GL_STENCIL_INDEX1_EXT* = 0x00008D46
-  GL_STENCIL_INDEX4_EXT* = 0x00008D47
-  GL_STENCIL_INDEX8_EXT* = 0x00008D48
-  GL_STENCIL_INDEX16_EXT* = 0x00008D49
-  GL_RENDERBUFFER_WIDTH_EXT* = 0x00008D42
-  GL_RENDERBUFFER_HEIGHT_EXT* = 0x00008D43
-  GL_RENDERBUFFER_INTERNAL_FORMAT_EXT* = 0x00008D44
-  GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT* = 0x00008CD0
-  GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT* = 0x00008CD1
-  GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT* = 0x00008CD2
-  GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT* = 0x00008CD3
-  GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT* = 0x00008CD4
-  GL_COLOR_ATTACHMENT0_EXT* = 0x00008CE0
-  GL_COLOR_ATTACHMENT1_EXT* = 0x00008CE1
-  GL_COLOR_ATTACHMENT2_EXT* = 0x00008CE2
-  GL_COLOR_ATTACHMENT3_EXT* = 0x00008CE3
-  GL_COLOR_ATTACHMENT4_EXT* = 0x00008CE4
-  GL_COLOR_ATTACHMENT5_EXT* = 0x00008CE5
-  GL_COLOR_ATTACHMENT6_EXT* = 0x00008CE6
-  GL_COLOR_ATTACHMENT7_EXT* = 0x00008CE7
-  GL_COLOR_ATTACHMENT8_EXT* = 0x00008CE8
-  GL_COLOR_ATTACHMENT9_EXT* = 0x00008CE9
-  GL_COLOR_ATTACHMENT10_EXT* = 0x00008CEA
-  GL_COLOR_ATTACHMENT11_EXT* = 0x00008CEB
-  GL_COLOR_ATTACHMENT12_EXT* = 0x00008CEC
-  GL_COLOR_ATTACHMENT13_EXT* = 0x00008CED
-  GL_COLOR_ATTACHMENT14_EXT* = 0x00008CEE
-  GL_COLOR_ATTACHMENT15_EXT* = 0x00008CEF
-  GL_DEPTH_ATTACHMENT_EXT* = 0x00008D00
-  GL_STENCIL_ATTACHMENT_EXT* = 0x00008D20
-  GL_FRAMEBUFFER_COMPLETE_EXT* = 0x00008CD5
-  GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT* = 0x00008CD6
-  GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT* = 0x00008CD7
-  GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT* = 0x00008CD8
-  GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT* = 0x00008CD9
-  GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT* = 0x00008CDA
-  GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT* = 0x00008CDB
-  GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT* = 0x00008CDC
-  GL_FRAMEBUFFER_UNSUPPORTED_EXT* = 0x00008CDD
-  GL_FRAMEBUFFER_STATUS_ERROR_EXT* = 0x00008CDE
-  GL_FRAMEBUFFER_BINDING_EXT* = 0x00008CA6
-  GL_RENDERBUFFER_BINDING_EXT* = 0x00008CA7
-  GL_MAX_COLOR_ATTACHMENTS_EXT* = 0x00008CDF
-  GL_MAX_RENDERBUFFER_SIZE_EXT* = 0x000084E8
-  GL_INVALID_FRAMEBUFFER_OPERATION_EXT* = 0x00000506
-
-proc glIsRenderbufferEXT*(renderbuffer: TGLuint): TGLboolean{.dynlib: dllname, 
-    importc.}
-proc glBindRenderbufferEXT*(target: TGLenum, renderbuffer: TGLuint){.
-    dynlib: dllname, importc.}
-proc glDeleteRenderbuffersEXT*(n: TGLsizei, renderbuffers: PGLuint){.
-    dynlib: dllname, importc.}
-proc glGenRenderbuffersEXT*(n: TGLsizei, renderbuffers: PGLuint){.
-    dynlib: dllname, importc.}
-proc glRenderbufferStorageEXT*(target: TGLenum, internalformat: TGLenum, 
-                               width: TGLsizei, height: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glGetRenderbufferParameterivEXT*(target: TGLenum, pname: TGLenum, 
-                                      params: PGLint){.dynlib: dllname, importc.}
-proc glIsFramebufferEXT*(framebuffer: TGLuint): TGLboolean{.dynlib: dllname, 
-    importc.}
-proc glBindFramebufferEXT*(target: TGLenum, framebuffer: TGLuint){.
-    dynlib: dllname, importc.}
-proc glDeleteFramebuffersEXT*(n: TGLsizei, framebuffers: PGLuint){.
-    dynlib: dllname, importc.}
-proc glGenFramebuffersEXT*(n: TGLsizei, framebuffers: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glCheckFramebufferStatusEXT*(target: TGLenum): TGLenum{.dynlib: dllname, 
-    importc.}
-proc glFramebufferTexture1DEXT*(target: TGLenum, attachment: TGLenum, 
-                                textarget: TGLenum, texture: TGLuint, level: TGLint){.
-    dynlib: dllname, importc.}
-proc glFramebufferTexture2DEXT*(target: TGLenum, attachment: TGLenum, 
-                                textarget: TGLenum, texture: TGLuint, level: TGLint){.
-    dynlib: dllname, importc.}
-proc glFramebufferTexture3DEXT*(target: TGLenum, attachment: TGLenum, 
-                                textarget: TGLenum, texture: TGLuint, 
-                                level: TGLint, zoffset: TGLint){.dynlib: dllname, 
-    importc.}
-proc glFramebufferRenderbufferEXT*(target: TGLenum, attachment: TGLenum, 
-                                   renderbuffertarget: TGLenum, 
-                                   renderbuffer: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetFramebufferAttachmentParameterivEXT*(target: TGLenum, 
-    attachment: TGLenum, pname: TGLenum, params: PGLint){.dynlib: dllname, importc.}
-proc glGenerateMipmapEXT*(target: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_version_1_4 *****//
-const 
-  GL_BLEND_DST_RGB* = 0x000080C8
-  GL_BLEND_SRC_RGB* = 0x000080C9
-  GL_BLEND_DST_ALPHA* = 0x000080CA
-  GL_BLEND_SRC_ALPHA* = 0x000080CB
-  GL_POINT_SIZE_MIN* = 0x00008126
-  GL_POINT_SIZE_MAX* = 0x00008127
-  GL_POINT_FADE_THRESHOLD_SIZE* = 0x00008128
-  GL_POINT_DISTANCE_ATTENUATION* = 0x00008129
-  GL_GENERATE_MIPMAP* = 0x00008191
-  GL_GENERATE_MIPMAP_HINT* = 0x00008192
-  GL_DEPTH_COMPONENT16* = 0x000081A5
-  GL_DEPTH_COMPONENT24* = 0x000081A6
-  GL_DEPTH_COMPONENT32* = 0x000081A7
-  GL_MIRRORED_REPEAT* = 0x00008370
-  GL_FOG_COORDINATE_SOURCE* = 0x00008450
-  GL_FOG_COORDINATE* = 0x00008451
-  GL_FRAGMENT_DEPTH* = 0x00008452
-  GL_CURRENT_FOG_COORDINATE* = 0x00008453
-  GL_FOG_COORDINATE_ARRAY_TYPE* = 0x00008454
-  GL_FOG_COORDINATE_ARRAY_STRIDE* = 0x00008455
-  GL_FOG_COORDINATE_ARRAY_POINTER* = 0x00008456
-  GL_FOG_COORDINATE_ARRAY* = 0x00008457
-  GL_COLOR_SUM* = 0x00008458
-  GL_CURRENT_SECONDARY_COLOR* = 0x00008459
-  GL_SECONDARY_COLOR_ARRAY_SIZE* = 0x0000845A
-  GL_SECONDARY_COLOR_ARRAY_TYPE* = 0x0000845B
-  GL_SECONDARY_COLOR_ARRAY_STRIDE* = 0x0000845C
-  GL_SECONDARY_COLOR_ARRAY_POINTER* = 0x0000845D
-  GL_SECONDARY_COLOR_ARRAY* = 0x0000845E
-  GL_MAX_TEXTURE_LOD_BIAS* = 0x000084FD
-  GL_TEXTURE_FILTER_CONTROL* = 0x00008500
-  GL_TEXTURE_LOD_BIAS* = 0x00008501
-  GL_INCR_WRAP* = 0x00008507
-  GL_DECR_WRAP* = 0x00008508
-  GL_TEXTURE_DEPTH_SIZE* = 0x0000884A
-  GL_DEPTH_TEXTURE_MODE* = 0x0000884B
-  GL_TEXTURE_COMPARE_MODE* = 0x0000884C
-  GL_TEXTURE_COMPARE_FUNC* = 0x0000884D
-  GL_COMPARE_R_TO_TEXTURE* = 0x0000884E
-
-proc glBlendFuncSeparate*(sfactorRGB: TGLenum, dfactorRGB: TGLenum, 
-                          sfactorAlpha: TGLenum, dfactorAlpha: TGLenum){.
-    dynlib: dllname, importc.}
-proc glFogCoordf*(coord: TGLfloat){.dynlib: dllname, importc.}
-proc glFogCoordfv*(coord: PGLfloat){.dynlib: dllname, importc.}
-proc glFogCoordd*(coord: TGLdouble){.dynlib: dllname, importc.}
-proc glFogCoorddv*(coord: PGLdouble){.dynlib: dllname, importc.}
-proc glFogCoordPointer*(thetype: TGLenum, stride: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glMultiDrawArrays*(mode: TGLenum, first: PGLint, count: PGLsizei, 
-                        primcount: TGLsizei){.dynlib: dllname, importc.}
-proc glMultiDrawElements*(mode: TGLenum, count: PGLsizei, thetype: TGLenum, 
-                          indices: PGLvoid, primcount: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glPointParameterf*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-proc glPointParameterfv*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glPointParameteri*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPointParameteriv*(pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glSecondaryColor3b*(red: TGLByte, green: TGLByte, blue: TGLByte){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3bv*(v: PGLbyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3d*(red: TGLdouble, green: TGLdouble, blue: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glSecondaryColor3f*(red: TGLfloat, green: TGLfloat, blue: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glSecondaryColor3i*(red: TGLint, green: TGLint, blue: TGLint){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glSecondaryColor3s*(red: TGLshort, green: TGLshort, blue: TGLshort){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glSecondaryColor3ub*(red: TGLubyte, green: TGLubyte, blue: TGLubyte){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3ubv*(v: PGLubyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3ui*(red: TGLuint, green: TGLuint, blue: TGLuint){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3uiv*(v: PGLuint){.dynlib: dllname, importc.}
-proc glSecondaryColor3us*(red: TGLushort, green: TGLushort, blue: TGLushort){.
-    dynlib: dllname, importc.}
-proc glSecondaryColor3usv*(v: PGLushort){.dynlib: dllname, importc.}
-proc glSecondaryColorPointer*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                              pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glWindowPos2d*(x: TGLdouble, y: TGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2f*(x: TGLfloat, y: TGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2i*(x: TGLint, y: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos2iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos2s*(x: TGLshort, y: TGLshort){.dynlib: dllname, importc.}
-proc glWindowPos2sv*(v: PGLshort){.dynlib: dllname, importc.}
-proc glWindowPos3d*(x: TGLdouble, y: TGLdouble, z: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3dv*(v: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos3f*(x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3fv*(v: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos3i*(x: TGLint, y: TGLint, z: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos3iv*(v: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos3s*(x: TGLshort, y: TGLshort, z: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3sv*(v: PGLshort){.dynlib: dllname, importc.}
-  #***** GL_version_1_5 *****//
-const 
-  GL_BUFFER_SIZE* = 0x00008764
-  GL_BUFFER_USAGE* = 0x00008765
-  GL_QUERY_COUNTER_BITS* = 0x00008864
-  GL_CURRENT_QUERY* = 0x00008865
-  GL_QUERY_RESULT* = 0x00008866
-  GL_QUERY_RESULT_AVAILABLE* = 0x00008867
-  GL_ARRAY_BUFFER* = 0x00008892
-  GL_ELEMENT_ARRAY_BUFFER* = 0x00008893
-  GL_ARRAY_BUFFER_BINDING* = 0x00008894
-  GL_ELEMENT_ARRAY_BUFFER_BINDING* = 0x00008895
-  GL_VERTEX_ARRAY_BUFFER_BINDING* = 0x00008896
-  GL_NORMAL_ARRAY_BUFFER_BINDING* = 0x00008897
-  GL_COLOR_ARRAY_BUFFER_BINDING* = 0x00008898
-  GL_INDEX_ARRAY_BUFFER_BINDING* = 0x00008899
-  GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING* = 0x0000889A
-  GL_EDGE_FLAG_ARRAY_BUFFER_BINDING* = 0x0000889B
-  GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING* = 0x0000889C
-  GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING* = 0x0000889D
-  GL_WEIGHT_ARRAY_BUFFER_BINDING* = 0x0000889E
-  GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING* = 0x0000889F
-  GL_READ_ONLY* = 0x000088B8
-  GL_WRITE_ONLY* = 0x000088B9
-  GL_READ_WRITE* = 0x000088BA
-  GL_BUFFER_ACCESS* = 0x000088BB
-  GL_BUFFER_MAPPED* = 0x000088BC
-  GL_BUFFER_MAP_POINTER* = 0x000088BD
-  GL_STREAM_DRAW* = 0x000088E0
-  GL_STREAM_READ* = 0x000088E1
-  GL_STREAM_COPY* = 0x000088E2
-  GL_STATIC_DRAW* = 0x000088E4
-  GL_STATIC_READ* = 0x000088E5
-  GL_STATIC_COPY* = 0x000088E6
-  GL_DYNAMIC_DRAW* = 0x000088E8
-  GL_DYNAMIC_READ* = 0x000088E9
-  GL_DYNAMIC_COPY* = 0x000088EA
-  GL_SAMPLES_PASSED* = 0x00008914
-  GL_FOG_COORD_SRC* = 0x00008450
-  GL_FOG_COORD* = 0x00008451
-  GL_CURRENT_FOG_COORD* = 0x00008453
-  GL_FOG_COORD_ARRAY_TYPE* = 0x00008454
-  GL_FOG_COORD_ARRAY_STRIDE* = 0x00008455
-  GL_FOG_COORD_ARRAY_POINTER* = 0x00008456
-  GL_FOG_COORD_ARRAY* = 0x00008457
-  GL_FOG_COORD_ARRAY_BUFFER_BINDING* = 0x0000889D
-  GL_SRC0_RGB* = 0x00008580
-  GL_SRC1_RGB* = 0x00008581
-  GL_SRC2_RGB* = 0x00008582
-  GL_SRC0_ALPHA* = 0x00008588
-  GL_SRC1_ALPHA* = 0x00008589
-  GL_SRC2_ALPHA* = 0x0000858A
-
-proc glGenQueries*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteQueries*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glIsQuery*(id: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glBeginQuery*(target: TGLenum, id: TGLuint){.dynlib: dllname, importc.}
-proc glEndQuery*(target: TGLenum){.dynlib: dllname, importc.}
-proc glGetQueryiv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetQueryObjectiv*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetQueryObjectuiv*(id: TGLuint, pname: TGLenum, params: PGLuint){.
-    dynlib: dllname, importc.}
-proc glBindBuffer*(target: TGLenum, buffer: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteBuffers*(n: TGLsizei, buffers: PGLuint){.dynlib: dllname, importc.}
-proc glGenBuffers*(n: TGLsizei, buffers: PGLuint){.dynlib: dllname, importc.}
-proc glIsBuffer*(buffer: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glBufferData*(target: TGLenum, size: GLsizeiptr, data: PGLvoid, 
-                   usage: TGLenum){.dynlib: dllname, importc.}
-proc glBufferSubData*(target: TGLenum, offset: GLintptr, size: GLsizeiptr, 
-                      data: PGLvoid){.dynlib: dllname, importc.}
-proc glGetBufferSubData*(target: TGLenum, offset: GLintptr, size: GLsizeiptr, 
-                         data: PGLvoid){.dynlib: dllname, importc.}
-proc glMapBuffer*(target: TGLenum, access: TGLenum): PGLvoid{.dynlib: dllname, 
-    importc.}
-proc glUnmapBuffer*(target: TGLenum): TGLboolean{.dynlib: dllname, importc.}
-proc glGetBufferParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetBufferPointerv*(target: TGLenum, pname: TGLenum, params: PGLvoid){.
-    dynlib: dllname, importc.}
-  #***** GL_version_2_0 *****//
-const 
-  GL_BLEND_EQUATION_RGB* = 0x00008009
-  GL_VERTEX_ATTRIB_ARRAY_ENABLED* = 0x00008622
-  GL_VERTEX_ATTRIB_ARRAY_SIZE* = 0x00008623
-  GL_VERTEX_ATTRIB_ARRAY_STRIDE* = 0x00008624
-  GL_VERTEX_ATTRIB_ARRAY_TYPE* = 0x00008625
-  GL_CURRENT_VERTEX_ATTRIB* = 0x00008626
-  GL_VERTEX_PROGRAM_POINT_SIZE* = 0x00008642
-  GL_VERTEX_PROGRAM_TWO_SIDE* = 0x00008643
-  GL_VERTEX_ATTRIB_ARRAY_POINTER* = 0x00008645
-  GL_STENCIL_BACK_FUNC* = 0x00008800
-  GL_STENCIL_BACK_FAIL* = 0x00008801
-  GL_STENCIL_BACK_PASS_DEPTH_FAIL* = 0x00008802
-  GL_STENCIL_BACK_PASS_DEPTH_PASS* = 0x00008803
-  GL_MAX_DRAW_BUFFERS* = 0x00008824
-  GL_DRAW_BUFFER0* = 0x00008825
-  GL_DRAW_BUFFER1* = 0x00008826
-  GL_DRAW_BUFFER2* = 0x00008827
-  GL_DRAW_BUFFER3* = 0x00008828
-  GL_DRAW_BUFFER4* = 0x00008829
-  GL_DRAW_BUFFER5* = 0x0000882A
-  GL_DRAW_BUFFER6* = 0x0000882B
-  GL_DRAW_BUFFER7* = 0x0000882C
-  GL_DRAW_BUFFER8* = 0x0000882D
-  GL_DRAW_BUFFER9* = 0x0000882E
-  GL_DRAW_BUFFER10* = 0x0000882F
-  GL_DRAW_BUFFER11* = 0x00008830
-  GL_DRAW_BUFFER12* = 0x00008831
-  GL_DRAW_BUFFER13* = 0x00008832
-  GL_DRAW_BUFFER14* = 0x00008833
-  GL_DRAW_BUFFER15* = 0x00008834
-  GL_BLEND_EQUATION_ALPHA* = 0x0000883D
-  GL_POINT_SPRITE* = 0x00008861
-  GL_COORD_REPLACE* = 0x00008862
-  GL_MAX_VERTEX_ATTRIBS* = 0x00008869
-  GL_VERTEX_ATTRIB_ARRAY_NORMALIZED* = 0x0000886A
-  GL_MAX_TEXTURE_COORDS* = 0x00008871
-  GL_MAX_TEXTURE_IMAGE_UNITS* = 0x00008872
-  GL_FRAGMENT_SHADER* = 0x00008B30
-  GL_VERTEX_SHADER* = 0x00008B31
-  GL_MAX_FRAGMENT_UNIFORM_COMPONENTS* = 0x00008B49
-  GL_MAX_VERTEX_UNIFORM_COMPONENTS* = 0x00008B4A
-  GL_MAX_VARYING_FLOATS* = 0x00008B4B
-  GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS* = 0x00008B4C
-  GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS* = 0x00008B4D
-  GL_SHADER_TYPE* = 0x00008B4F
-  GL_FLOAT_VEC2* = 0x00008B50
-  GL_FLOAT_VEC3* = 0x00008B51
-  GL_FLOAT_VEC4* = 0x00008B52
-  GL_INT_VEC2* = 0x00008B53
-  GL_INT_VEC3* = 0x00008B54
-  GL_INT_VEC4* = 0x00008B55
-  GL_BOOL* = 0x00008B56
-  GL_BOOL_VEC2* = 0x00008B57
-  GL_BOOL_VEC3* = 0x00008B58
-  GL_BOOL_VEC4* = 0x00008B59
-  GL_FLOAT_MAT2* = 0x00008B5A
-  GL_FLOAT_MAT3* = 0x00008B5B
-  GL_FLOAT_MAT4* = 0x00008B5C
-  GL_SAMPLER_1D* = 0x00008B5D
-  GL_SAMPLER_2D* = 0x00008B5E
-  GL_SAMPLER_3D* = 0x00008B5F
-  GL_SAMPLER_CUBE* = 0x00008B60
-  GL_SAMPLER_1D_SHADOW* = 0x00008B61
-  GL_SAMPLER_2D_SHADOW* = 0x00008B62
-  GL_DELETE_STATUS* = 0x00008B80
-  GL_COMPILE_STATUS* = 0x00008B81
-  GL_LINK_STATUS* = 0x00008B82
-  GL_VALIDATE_STATUS* = 0x00008B83
-  GL_INFO_LOG_LENGTH* = 0x00008B84
-  GL_ATTACHED_SHADERS* = 0x00008B85
-  GL_ACTIVE_UNIFORMS* = 0x00008B86
-  GL_ACTIVE_UNIFORM_MAX_LENGTH* = 0x00008B87
-  GL_SHADER_SOURCE_LENGTH* = 0x00008B88
-  GL_ACTIVE_ATTRIBUTES* = 0x00008B89
-  GL_ACTIVE_ATTRIBUTE_MAX_LENGTH* = 0x00008B8A
-  GL_FRAGMENT_SHADER_DERIVATIVE_HINT* = 0x00008B8B
-  GL_SHADING_LANGUAGE_VERSION* = 0x00008B8C
-  GL_CURRENT_PROGRAM* = 0x00008B8D
-  GL_POINT_SPRITE_COORD_ORIGIN* = 0x00008CA0
-  GL_LOWER_LEFT* = 0x00008CA1
-  GL_UPPER_LEFT* = 0x00008CA2
-  GL_STENCIL_BACK_REF* = 0x00008CA3
-  GL_STENCIL_BACK_VALUE_MASK* = 0x00008CA4
-  GL_STENCIL_BACK_WRITEMASK* = 0x00008CA5
-
-{.pop.}
diff --git a/lib/wrappers/opengl/glu.nim b/lib/wrappers/opengl/glu.nim
deleted file mode 100755
index 297f4d354..000000000
--- a/lib/wrappers/opengl/glu.nim
+++ /dev/null
@@ -1,311 +0,0 @@
-#
-#
-#  Adaption of the delphi3d.net OpenGL units to FreePascal
-#  Sebastian Guenther (sg@freepascal.org) in 2002
-#  These units are free to use
-#******************************************************************************
-# Converted to Delphi by Tom Nuydens (tom@delphi3d.net)                        
-# For the latest updates, visit Delphi3D: http://www.delphi3d.net              
-#******************************************************************************
-
-import 
-  GL
-
-when defined(windows):
-  const dllname = "glu32.dll"
-elif defined(macosx):
-  const dllname = "/System/Library/Frameworks/OpenGL.framework/Libraries/libGLU.dylib"
-else:
-  const dllname = "libGLU.so.1"
-
-type 
-  TViewPortArray* = array[0..3, TGLint]
-  T16dArray* = array[0..15, TGLdouble]
-  TCallBack* = proc ()
-  T3dArray* = array[0..2, TGLdouble]
-  T4pArray* = array[0..3, Pointer]
-  T4fArray* = array[0..3, TGLfloat]
-  PPointer* = ptr Pointer
-
-type 
-  GLUnurbs*{.final.} = object 
-  PGLUnurbs* = ptr GLUnurbs
-  GLUquadric*{.final.} = object 
-  PGLUquadric* = ptr GLUquadric
-  GLUtesselator*{.final.} = object 
-  PGLUtesselator* = ptr GLUtesselator # backwards compatibility:
-  GLUnurbsObj* = GLUnurbs
-  PGLUnurbsObj* = PGLUnurbs
-  GLUquadricObj* = GLUquadric
-  PGLUquadricObj* = PGLUquadric
-  GLUtesselatorObj* = GLUtesselator
-  PGLUtesselatorObj* = PGLUtesselator
-  GLUtriangulatorObj* = GLUtesselator
-  PGLUtriangulatorObj* = PGLUtesselator
-  TGLUnurbs* = GLUnurbs
-  TGLUquadric* = GLUquadric
-  TGLUtesselator* = GLUtesselator
-  TGLUnurbsObj* = GLUnurbsObj
-  TGLUquadricObj* = GLUquadricObj
-  TGLUtesselatorObj* = GLUtesselatorObj
-  TGLUtriangulatorObj* = GLUtriangulatorObj
-
-proc gluErrorString*(errCode: TGLenum): cstring{.dynlib: dllname, importc.}
-proc gluErrorUnicodeStringEXT*(errCode: TGLenum): ptr int16{.dynlib: dllname, 
-    importc.}
-proc gluGetString*(name: TGLenum): cstring{.dynlib: dllname, importc.}
-proc gluOrtho2D*(left, right, bottom, top: TGLdouble){.dynlib: dllname, importc.}
-proc gluPerspective*(fovy, aspect, zNear, zFar: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc gluPickMatrix*(x, y, width, height: TGLdouble, viewport: var TViewPortArray){.
-    dynlib: dllname, importc.}
-proc gluLookAt*(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz: TGLdouble){.
-    dynlib: dllname, importc.}
-proc gluProject*(objx, objy, objz: TGLdouble, 
-                 modelMatrix, projMatrix: var T16dArray, 
-                 viewport: var TViewPortArray, winx, winy, winz: PGLdouble): int{.
-    dynlib: dllname, importc.}
-proc gluUnProject*(winx, winy, winz: TGLdouble, 
-                   modelMatrix, projMatrix: var T16dArray, 
-                   viewport: var TViewPortArray, objx, objy, objz: PGLdouble): int{.
-    dynlib: dllname, importc.}
-proc gluScaleImage*(format: TGLenum, widthin, heightin: TGLint, typein: TGLenum, 
-                    datain: Pointer, widthout, heightout: TGLint, 
-                    typeout: TGLenum, dataout: Pointer): int{.dynlib: dllname, 
-    importc.}
-proc gluBuild1DMipmaps*(target: TGLenum, components, width: TGLint, 
-                        format, atype: TGLenum, data: Pointer): int{.
-    dynlib: dllname, importc.}
-proc gluBuild2DMipmaps*(target: TGLenum, components, width, height: TGLint, 
-                        format, atype: TGLenum, data: Pointer): int{.
-    dynlib: dllname, importc.}
-proc gluNewQuadric*(): PGLUquadric{.dynlib: dllname, importc.}
-proc gluDeleteQuadric*(state: PGLUquadric){.dynlib: dllname, importc.}
-proc gluQuadricNormals*(quadObject: PGLUquadric, normals: TGLenum){.
-    dynlib: dllname, importc.}
-proc gluQuadricTexture*(quadObject: PGLUquadric, textureCoords: TGLboolean){.
-    dynlib: dllname, importc.}
-proc gluQuadricOrientation*(quadObject: PGLUquadric, orientation: TGLenum){.
-    dynlib: dllname, importc.}
-proc gluQuadricDrawStyle*(quadObject: PGLUquadric, drawStyle: TGLenum){.
-    dynlib: dllname, importc.}
-proc gluCylinder*(qobj: PGLUquadric, baseRadius, topRadius, height: TGLdouble, 
-                  slices, stacks: TGLint){.dynlib: dllname, importc.}
-proc gluDisk*(qobj: PGLUquadric, innerRadius, outerRadius: TGLdouble, 
-              slices, loops: TGLint){.dynlib: dllname, importc.}
-proc gluPartialDisk*(qobj: PGLUquadric, innerRadius, outerRadius: TGLdouble, 
-                     slices, loops: TGLint, startAngle, sweepAngle: TGLdouble){.
-    dynlib: dllname, importc.}
-proc gluSphere*(qobj: PGLuquadric, radius: TGLdouble, slices, stacks: TGLint){.
-    dynlib: dllname, importc.}
-proc gluQuadricCallback*(qobj: PGLUquadric, which: TGLenum, fn: TCallBack){.
-    dynlib: dllname, importc.}
-proc gluNewTess*(): PGLUtesselator{.dynlib: dllname, importc.}
-proc gluDeleteTess*(tess: PGLUtesselator){.dynlib: dllname, importc.}
-proc gluTessBeginPolygon*(tess: PGLUtesselator, polygon_data: Pointer){.
-    dynlib: dllname, importc.}
-proc gluTessBeginContour*(tess: PGLUtesselator){.dynlib: dllname, importc.}
-proc gluTessVertex*(tess: PGLUtesselator, coords: var T3dArray, data: Pointer){.
-    dynlib: dllname, importc.}
-proc gluTessEndContour*(tess: PGLUtesselator){.dynlib: dllname, importc.}
-proc gluTessEndPolygon*(tess: PGLUtesselator){.dynlib: dllname, importc.}
-proc gluTessProperty*(tess: PGLUtesselator, which: TGLenum, value: TGLdouble){.
-    dynlib: dllname, importc.}
-proc gluTessNormal*(tess: PGLUtesselator, x, y, z: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc gluTessCallback*(tess: PGLUtesselator, which: TGLenum, fn: TCallBack){.
-    dynlib: dllname, importc.}
-proc gluGetTessProperty*(tess: PGLUtesselator, which: TGLenum, value: PGLdouble){.
-    dynlib: dllname, importc.}
-proc gluNewNurbsRenderer*(): PGLUnurbs{.dynlib: dllname, importc.}
-proc gluDeleteNurbsRenderer*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluBeginSurface*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluBeginCurve*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluEndCurve*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluEndSurface*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluBeginTrim*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluEndTrim*(nobj: PGLUnurbs){.dynlib: dllname, importc.}
-proc gluPwlCurve*(nobj: PGLUnurbs, count: TGLint, aarray: PGLfloat, 
-                  stride: TGLint, atype: TGLenum){.dynlib: dllname, importc.}
-proc gluNurbsCurve*(nobj: PGLUnurbs, nknots: TGLint, knot: PGLfloat, 
-                    stride: TGLint, ctlarray: PGLfloat, order: TGLint, 
-                    atype: TGLenum){.dynlib: dllname, importc.}
-proc gluNurbsSurface*(nobj: PGLUnurbs, sknot_count: TGLint, sknot: PGLfloat, 
-                      tknot_count: TGLint, tknot: PGLfloat, 
-                      s_stride, t_stride: TGLint, ctlarray: PGLfloat, 
-                      sorder, torder: TGLint, atype: TGLenum){.dynlib: dllname, 
-    importc.}
-proc gluLoadSamplingMatrices*(nobj: PGLUnurbs, 
-                              modelMatrix, projMatrix: var T16dArray, 
-                              viewport: var TViewPortArray){.dynlib: dllname, 
-    importc.}
-proc gluNurbsProperty*(nobj: PGLUnurbs, aproperty: TGLenum, value: TGLfloat){.
-    dynlib: dllname, importc.}
-proc gluGetNurbsProperty*(nobj: PGLUnurbs, aproperty: TGLenum, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc gluNurbsCallback*(nobj: PGLUnurbs, which: TGLenum, fn: TCallBack){.
-    dynlib: dllname, importc.}
-  #*** Callback function prototypes ***
-type                          # gluQuadricCallback
-  GLUquadricErrorProc* = proc (p: TGLenum) # gluTessCallback
-  GLUtessBeginProc* = proc (p: TGLenum)
-  GLUtessEdgeFlagProc* = proc (p: TGLboolean)
-  GLUtessVertexProc* = proc (p: Pointer)
-  GLUtessEndProc* = proc ()
-  GLUtessErrorProc* = proc (p: TGLenum)
-  GLUtessCombineProc* = proc (p1: var T3dArray, p2: T4pArray, p3: T4fArray, 
-                              p4: PPointer)
-  GLUtessBeginDataProc* = proc (p1: TGLenum, p2: Pointer)
-  GLUtessEdgeFlagDataProc* = proc (p1: TGLboolean, p2: Pointer)
-  GLUtessVertexDataProc* = proc (p1, p2: Pointer)
-  GLUtessEndDataProc* = proc (p: Pointer)
-  GLUtessErrorDataProc* = proc (p1: TGLenum, p2: Pointer)
-  GLUtessCombineDataProc* = proc (p1: var T3dArray, p2: var T4pArray, 
-                                  p3: var T4fArray, p4: PPointer, p5: Pointer) # 
-                                                                               # gluNurbsCallback
-  GLUnurbsErrorProc* = proc (p: TGLenum) #***           Generic constants               ****/
-
-const                         # Version
-  GLU_VERSION_1_1* = 1
-  GLU_VERSION_1_2* = 1        # Errors: (return value 0 = no error)
-  GLU_INVALID_ENUM* = 100900
-  GLU_INVALID_VALUE* = 100901
-  GLU_OUT_OF_MEMORY* = 100902
-  GLU_INCOMPATIBLE_GL_VERSION* = 100903 # StringName
-  GLU_VERSION* = 100800
-  GLU_EXTENSIONS* = 100801    # Boolean
-  GLU_TRUE* = GL_TRUE
-  GLU_FALSE* = GL_FALSE #***           Quadric constants               ****/
-                        # QuadricNormal
-  GLU_SMOOTH* = 100000
-  GLU_FLAT* = 100001
-  GLU_NONE* = 100002          # QuadricDrawStyle
-  GLU_POINT* = 100010
-  GLU_LINE* = 100011
-  GLU_FILL* = 100012
-  GLU_SILHOUETTE* = 100013    # QuadricOrientation
-  GLU_OUTSIDE* = 100020
-  GLU_INSIDE* = 100021        # Callback types:
-                              #      GLU_ERROR       = 100103;
-                              #***           Tesselation constants           ****/
-  GLU_TESS_MAX_COORD* = 1.00000e+150 # TessProperty
-  GLU_TESS_WINDING_RULE* = 100140
-  GLU_TESS_BOUNDARY_ONLY* = 100141
-  GLU_TESS_TOLERANCE* = 100142 # TessWinding
-  GLU_TESS_WINDING_ODD* = 100130
-  GLU_TESS_WINDING_NONZERO* = 100131
-  GLU_TESS_WINDING_POSITIVE* = 100132
-  GLU_TESS_WINDING_NEGATIVE* = 100133
-  GLU_TESS_WINDING_ABS_GEQ_TWO* = 100134 # TessCallback
-  GLU_TESS_BEGIN* = 100100    # void (CALLBACK*)(TGLenum    type)
-  constGLU_TESS_VERTEX* = 100101   # void (CALLBACK*)(void      *data)
-  GLU_TESS_END* = 100102      # void (CALLBACK*)(void)
-  GLU_TESS_ERROR* = 100103    # void (CALLBACK*)(TGLenum    errno)
-  GLU_TESS_EDGE_FLAG* = 100104 # void (CALLBACK*)(TGLboolean boundaryEdge)
-  GLU_TESS_COMBINE* = 100105 # void (CALLBACK*)(TGLdouble  coords[3],
-                             #                                                            void      *data[4],
-                             #                                                            TGLfloat   weight[4],
-                             #                                                            void      **dataOut) 
-  GLU_TESS_BEGIN_DATA* = 100106 # void (CALLBACK*)(TGLenum    type,
-                                #                                                            void      *polygon_data) 
-  GLU_TESS_VERTEX_DATA* = 100107 # void (CALLBACK*)(void      *data,
-                                 #                                                            void      *polygon_data) 
-  GLU_TESS_END_DATA* = 100108 # void (CALLBACK*)(void      *polygon_data)
-  GLU_TESS_ERROR_DATA* = 100109 # void (CALLBACK*)(TGLenum    errno,
-                                #                                                            void      *polygon_data) 
-  GLU_TESS_EDGE_FLAG_DATA* = 100110 # void (CALLBACK*)(TGLboolean boundaryEdge,
-                                    #                                                            void      *polygon_data) 
-  GLU_TESS_COMBINE_DATA* = 100111 # void (CALLBACK*)(TGLdouble  coords[3],
-                                  #                                                            void      *data[4],
-                                  #                                                            TGLfloat   weight[4],
-                                  #                                                            void      **dataOut,
-                                  #                                                            void      *polygon_data) 
-                                  # TessError
-  GLU_TESS_ERROR1* = 100151
-  GLU_TESS_ERROR2* = 100152
-  GLU_TESS_ERROR3* = 100153
-  GLU_TESS_ERROR4* = 100154
-  GLU_TESS_ERROR5* = 100155
-  GLU_TESS_ERROR6* = 100156
-  GLU_TESS_ERROR7* = 100157
-  GLU_TESS_ERROR8* = 100158
-  GLU_TESS_MISSING_BEGIN_POLYGON* = GLU_TESS_ERROR1
-  GLU_TESS_MISSING_BEGIN_CONTOUR* = GLU_TESS_ERROR2
-  GLU_TESS_MISSING_END_POLYGON* = GLU_TESS_ERROR3
-  GLU_TESS_MISSING_END_CONTOUR* = GLU_TESS_ERROR4
-  GLU_TESS_COORD_TOO_LARGE* = GLU_TESS_ERROR5
-  GLU_TESS_NEED_COMBINE_CALLBACK* = GLU_TESS_ERROR6 #***           NURBS constants                 ****/
-                                                    # NurbsProperty
-  GLU_AUTO_LOAD_MATRIX* = 100200
-  GLU_CULLING* = 100201
-  GLU_SAMPLING_TOLERANCE* = 100203
-  GLU_DISPLAY_MODE* = 100204
-  GLU_PARAMETRIC_TOLERANCE* = 100202
-  GLU_SAMPLING_METHOD* = 100205
-  GLU_U_STEP* = 100206
-  GLU_V_STEP* = 100207        # NurbsSampling
-  GLU_PATH_LENGTH* = 100215
-  GLU_PARAMETRIC_ERROR* = 100216
-  GLU_DOMAIN_DISTANCE* = 100217 # NurbsTrim
-  GLU_MAP1_TRIM_2* = 100210
-  GLU_MAP1_TRIM_3* = 100211   # NurbsDisplay
-                              #      GLU_FILL                = 100012;
-  GLU_OUTLINE_POLYGON* = 100240
-  GLU_OUTLINE_PATCH* = 100241 # NurbsCallback
-                              #      GLU_ERROR               = 100103;
-                              # NurbsErrors
-  GLU_NURBS_ERROR1* = 100251
-  GLU_NURBS_ERROR2* = 100252
-  GLU_NURBS_ERROR3* = 100253
-  GLU_NURBS_ERROR4* = 100254
-  GLU_NURBS_ERROR5* = 100255
-  GLU_NURBS_ERROR6* = 100256
-  GLU_NURBS_ERROR7* = 100257
-  GLU_NURBS_ERROR8* = 100258
-  GLU_NURBS_ERROR9* = 100259
-  GLU_NURBS_ERROR10* = 100260
-  GLU_NURBS_ERROR11* = 100261
-  GLU_NURBS_ERROR12* = 100262
-  GLU_NURBS_ERROR13* = 100263
-  GLU_NURBS_ERROR14* = 100264
-  GLU_NURBS_ERROR15* = 100265
-  GLU_NURBS_ERROR16* = 100266
-  GLU_NURBS_ERROR17* = 100267
-  GLU_NURBS_ERROR18* = 100268
-  GLU_NURBS_ERROR19* = 100269
-  GLU_NURBS_ERROR20* = 100270
-  GLU_NURBS_ERROR21* = 100271
-  GLU_NURBS_ERROR22* = 100272
-  GLU_NURBS_ERROR23* = 100273
-  GLU_NURBS_ERROR24* = 100274
-  GLU_NURBS_ERROR25* = 100275
-  GLU_NURBS_ERROR26* = 100276
-  GLU_NURBS_ERROR27* = 100277
-  GLU_NURBS_ERROR28* = 100278
-  GLU_NURBS_ERROR29* = 100279
-  GLU_NURBS_ERROR30* = 100280
-  GLU_NURBS_ERROR31* = 100281
-  GLU_NURBS_ERROR32* = 100282
-  GLU_NURBS_ERROR33* = 100283
-  GLU_NURBS_ERROR34* = 100284
-  GLU_NURBS_ERROR35* = 100285
-  GLU_NURBS_ERROR36* = 100286
-  GLU_NURBS_ERROR37* = 100287 #***           Backwards compatibility for old tesselator           ****/
-
-proc gluBeginPolygon*(tess: PGLUtesselator){.dynlib: dllname, importc.}
-proc gluNextContour*(tess: PGLUtesselator, atype: TGLenum){.dynlib: dllname, 
-    importc.}
-proc gluEndPolygon*(tess: PGLUtesselator){.dynlib: dllname, importc.}
-const                         # Contours types -- obsolete!
-  GLU_CW* = 100120
-  GLU_CCW* = 100121
-  GLU_INTERIOR* = 100122
-  GLU_EXTERIOR* = 100123
-  GLU_UNKNOWN* = 100124       # Names without "TESS_" prefix
-  GLU_BEGIN* = GLU_TESS_BEGIN
-  GLU_VERTEX* = constGLU_TESS_VERTEX
-  GLU_END* = GLU_TESS_END
-  GLU_ERROR* = GLU_TESS_ERROR
-  GLU_EDGE_FLAG* = GLU_TESS_EDGE_FLAG
-
-# implementation
diff --git a/lib/wrappers/opengl/glut.nim b/lib/wrappers/opengl/glut.nim
deleted file mode 100755
index 55ee18bda..000000000
--- a/lib/wrappers/opengl/glut.nim
+++ /dev/null
@@ -1,378 +0,0 @@
-#
-#
-#  Adaption of the delphi3d.net OpenGL units to FreePascal
-#  Sebastian Guenther (sg@freepascal.org) in 2002
-#  These units are free to use
-#
-
-# Copyright (c) Mark J. Kilgard, 1994, 1995, 1996.
-# This program is freely distributable without licensing fees  and is
-#   provided without guarantee or warrantee expressed or  implied. This
-#   program is -not- in the public domain.
-#******************************************************************************
-# Converted to Delphi by Tom Nuydens (tom@delphi3d.net)
-#   Contributions by Igor Karpov (glygrik@hotbox.ru)
-#   For the latest updates, visit Delphi3D: http://www.delphi3d.net
-#******************************************************************************
-
-import
-  GL
-
-when defined(windows):
-  const dllname = "glut32.dll"
-elif defined(macosx):
-  const dllname = "/System/Library/Frameworks/GLUT.framework/GLUT"
-else:
-  const dllname = "libglut.so.3"
-
-type
-  PInteger* = ptr int
-  PPChar* = ptr cstring
-  TGlutVoidCallback* = proc (){.cdecl.}
-  TGlut1IntCallback* = proc (value: cint){.cdecl.}
-  TGlut2IntCallback* = proc (v1, v2: cint){.cdecl.}
-  TGlut3IntCallback* = proc (v1, v2, v3: cint){.cdecl.}
-  TGlut4IntCallback* = proc (v1, v2, v3, v4: cint){.cdecl.}
-  TGlut1Char2IntCallback* = proc (c: int8, v1, v2: cint){.cdecl.}
-  TGlut1UInt3IntCallback* = proc (u, v1, v2, v3: cint){.cdecl.}
-
-const
-  GLUT_API_VERSION* = 3
-  GLUT_XLIB_IMPLEMENTATION* = 12 # Display mode bit masks.
-  GLUT_RGB* = 0
-  GLUT_RGBA* = GLUT_RGB
-  GLUT_INDEX* = 1
-  GLUT_SINGLE* = 0
-  GLUT_DOUBLE* = 2
-  GLUT_ACCUM* = 4
-  GLUT_ALPHA* = 8
-  GLUT_DEPTH* = 16
-  GLUT_STENCIL* = 32
-  GLUT_MULTISAMPLE* = 128
-  GLUT_STEREO* = 256
-  GLUT_LUMINANCE* = 512       # Mouse buttons.
-  GLUT_LEFT_BUTTON* = 0
-  GLUT_MIDDLE_BUTTON* = 1
-  GLUT_RIGHT_BUTTON* = 2      # Mouse button state.
-  GLUT_DOWN* = 0
-  GLUT_UP* = 1                # function keys
-  GLUT_KEY_F1* = 1
-  GLUT_KEY_F2* = 2
-  GLUT_KEY_F3* = 3
-  GLUT_KEY_F4* = 4
-  GLUT_KEY_F5* = 5
-  GLUT_KEY_F6* = 6
-  GLUT_KEY_F7* = 7
-  GLUT_KEY_F8* = 8
-  GLUT_KEY_F9* = 9
-  GLUT_KEY_F10* = 10
-  GLUT_KEY_F11* = 11
-  GLUT_KEY_F12* = 12          # directional keys
-  GLUT_KEY_LEFT* = 100
-  GLUT_KEY_UP* = 101
-  GLUT_KEY_RIGHT* = 102
-  GLUT_KEY_DOWN* = 103
-  GLUT_KEY_PAGE_UP* = 104
-  GLUT_KEY_PAGE_DOWN* = 105
-  GLUT_KEY_HOME* = 106
-  GLUT_KEY_END* = 107
-  GLUT_KEY_INSERT* = 108      # Entry/exit  state.
-  GLUT_LEFT* = 0
-  GLUT_ENTERED* = 1           # Menu usage state.
-  GLUT_MENU_NOT_IN_USE* = 0
-  GLUT_MENU_IN_USE* = 1       # Visibility  state.
-  GLUT_NOT_VISIBLE* = 0
-  GLUT_VISIBLE* = 1           # Window status  state.
-  GLUT_HIDDEN* = 0
-  GLUT_FULLY_RETAINED* = 1
-  GLUT_PARTIALLY_RETAINED* = 2
-  GLUT_FULLY_COVERED* = 3     # Color index component selection values.
-  GLUT_RED* = 0
-  GLUT_GREEN* = 1
-  GLUT_BLUE* = 2              # Layers for use.
-  GLUT_NORMAL* = 0
-  GLUT_OVERLAY* = 1
-
-when defined(Windows):
-  const                       # Stroke font constants (use these in GLUT program).
-    GLUT_STROKE_ROMAN* = cast[Pointer](0)
-    GLUT_STROKE_MONO_ROMAN* = cast[Pointer](1) # Bitmap font constants (use these in GLUT program).
-    GLUT_BITMAP_9_BY_15* = cast[Pointer](2)
-    GLUT_BITMAP_8_BY_13* = cast[Pointer](3)
-    GLUT_BITMAP_TIMES_ROMAN_10* = cast[Pointer](4)
-    GLUT_BITMAP_TIMES_ROMAN_24* = cast[Pointer](5)
-    GLUT_BITMAP_HELVETICA_10* = cast[Pointer](6)
-    GLUT_BITMAP_HELVETICA_12* = cast[Pointer](7)
-    GLUT_BITMAP_HELVETICA_18* = cast[Pointer](8)
-else:
-  var                         # Stroke font constants (use these in GLUT program).
-    GLUT_STROKE_ROMAN*: Pointer
-    GLUT_STROKE_MONO_ROMAN*: Pointer # Bitmap font constants (use these in GLUT program).
-    GLUT_BITMAP_9_BY_15*: Pointer
-    GLUT_BITMAP_8_BY_13*: Pointer
-    GLUT_BITMAP_TIMES_ROMAN_10*: Pointer
-    GLUT_BITMAP_TIMES_ROMAN_24*: Pointer
-    GLUT_BITMAP_HELVETICA_10*: Pointer
-    GLUT_BITMAP_HELVETICA_12*: Pointer
-    GLUT_BITMAP_HELVETICA_18*: Pointer
-const                         # glutGet parameters.
-  GLUT_WINDOW_X* = 100
-  GLUT_WINDOW_Y* = 101
-  GLUT_WINDOW_WIDTH* = 102
-  GLUT_WINDOW_HEIGHT* = 103
-  GLUT_WINDOW_BUFFER_SIZE* = 104
-  GLUT_WINDOW_STENCIL_SIZE* = 105
-  GLUT_WINDOW_DEPTH_SIZE* = 106
-  GLUT_WINDOW_RED_SIZE* = 107
-  GLUT_WINDOW_GREEN_SIZE* = 108
-  GLUT_WINDOW_BLUE_SIZE* = 109
-  GLUT_WINDOW_ALPHA_SIZE* = 110
-  GLUT_WINDOW_ACCUM_RED_SIZE* = 111
-  GLUT_WINDOW_ACCUM_GREEN_SIZE* = 112
-  GLUT_WINDOW_ACCUM_BLUE_SIZE* = 113
-  GLUT_WINDOW_ACCUM_ALPHA_SIZE* = 114
-  GLUT_WINDOW_DOUBLEBUFFER* = 115
-  GLUT_WINDOW_RGBA* = 116
-  GLUT_WINDOW_PARENT* = 117
-  GLUT_WINDOW_NUM_CHILDREN* = 118
-  GLUT_WINDOW_COLORMAP_SIZE* = 119
-  GLUT_WINDOW_NUM_SAMPLES* = 120
-  GLUT_WINDOW_STEREO* = 121
-  GLUT_WINDOW_CURSOR* = 122
-  GLUT_SCREEN_WIDTH* = 200
-  GLUT_SCREEN_HEIGHT* = 201
-  GLUT_SCREEN_WIDTH_MM* = 202
-  GLUT_SCREEN_HEIGHT_MM* = 203
-  GLUT_MENU_NUM_ITEMS* = 300
-  GLUT_DISPLAY_MODE_POSSIBLE* = 400
-  GLUT_INIT_WINDOW_X* = 500
-  GLUT_INIT_WINDOW_Y* = 501
-  GLUT_INIT_WINDOW_WIDTH* = 502
-  GLUT_INIT_WINDOW_HEIGHT* = 503
-  constGLUT_INIT_DISPLAY_MODE* = 504
-  GLUT_ELAPSED_TIME* = 700
-  GLUT_WINDOW_FORMAT_ID* = 123 # glutDeviceGet parameters.
-  GLUT_HAS_KEYBOARD* = 600
-  GLUT_HAS_MOUSE* = 601
-  GLUT_HAS_SPACEBALL* = 602
-  GLUT_HAS_DIAL_AND_BUTTON_BOX* = 603
-  GLUT_HAS_TABLET* = 604
-  GLUT_NUM_MOUSE_BUTTONS* = 605
-  GLUT_NUM_SPACEBALL_BUTTONS* = 606
-  GLUT_NUM_BUTTON_BOX_BUTTONS* = 607
-  GLUT_NUM_DIALS* = 608
-  GLUT_NUM_TABLET_BUTTONS* = 609
-  GLUT_DEVICE_IGNORE_KEY_REPEAT* = 610
-  GLUT_DEVICE_KEY_REPEAT* = 611
-  GLUT_HAS_JOYSTICK* = 612
-  GLUT_OWNS_JOYSTICK* = 613
-  GLUT_JOYSTICK_BUTTONS* = 614
-  GLUT_JOYSTICK_AXES* = 615
-  GLUT_JOYSTICK_POLL_RATE* = 616 # glutLayerGet parameters.
-  GLUT_OVERLAY_POSSIBLE* = 800
-  GLUT_LAYER_IN_USE* = 801
-  GLUT_HAS_OVERLAY* = 802
-  GLUT_TRANSPARENT_INDEX* = 803
-  GLUT_NORMAL_DAMAGED* = 804
-  GLUT_OVERLAY_DAMAGED* = 805 # glutVideoResizeGet parameters.
-  GLUT_VIDEO_RESIZE_POSSIBLE* = 900
-  GLUT_VIDEO_RESIZE_IN_USE* = 901
-  GLUT_VIDEO_RESIZE_X_DELTA* = 902
-  GLUT_VIDEO_RESIZE_Y_DELTA* = 903
-  GLUT_VIDEO_RESIZE_WIDTH_DELTA* = 904
-  GLUT_VIDEO_RESIZE_HEIGHT_DELTA* = 905
-  GLUT_VIDEO_RESIZE_X* = 906
-  GLUT_VIDEO_RESIZE_Y* = 907
-  GLUT_VIDEO_RESIZE_WIDTH* = 908
-  GLUT_VIDEO_RESIZE_HEIGHT* = 909 # glutGetModifiers return mask.
-  GLUT_ACTIVE_SHIFT* = 1
-  GLUT_ACTIVE_CTRL* = 2
-  GLUT_ACTIVE_ALT* = 4        # glutSetCursor parameters.
-                              # Basic arrows.
-  GLUT_CURSOR_RIGHT_ARROW* = 0
-  GLUT_CURSOR_LEFT_ARROW* = 1 # Symbolic cursor shapes.
-  GLUT_CURSOR_INFO* = 2
-  GLUT_CURSOR_DESTROY* = 3
-  GLUT_CURSOR_HELP* = 4
-  GLUT_CURSOR_CYCLE* = 5
-  GLUT_CURSOR_SPRAY* = 6
-  GLUT_CURSOR_WAIT* = 7
-  GLUT_CURSOR_TEXT* = 8
-  GLUT_CURSOR_CROSSHAIR* = 9  # Directional cursors.
-  GLUT_CURSOR_UP_DOWN* = 10
-  GLUT_CURSOR_LEFT_RIGHT* = 11 # Sizing cursors.
-  GLUT_CURSOR_TOP_SIDE* = 12
-  GLUT_CURSOR_BOTTOM_SIDE* = 13
-  GLUT_CURSOR_LEFT_SIDE* = 14
-  GLUT_CURSOR_RIGHT_SIDE* = 15
-  GLUT_CURSOR_TOP_LEFT_CORNER* = 16
-  GLUT_CURSOR_TOP_RIGHT_CORNER* = 17
-  GLUT_CURSOR_BOTTOM_RIGHT_CORNER* = 18
-  GLUT_CURSOR_BOTTOM_LEFT_CORNER* = 19 # Inherit from parent window.
-  GLUT_CURSOR_INHERIT* = 100  # Blank cursor.
-  GLUT_CURSOR_NONE* = 101     # Fullscreen crosshair (if available).
-  GLUT_CURSOR_FULL_CROSSHAIR* = 102 # GLUT device control sub-API.
-                                    # glutSetKeyRepeat modes.
-  GLUT_KEY_REPEAT_OFF* = 0
-  GLUT_KEY_REPEAT_ON* = 1
-  GLUT_KEY_REPEAT_DEFAULT* = 2 # Joystick button masks.
-  GLUT_JOYSTICK_BUTTON_A* = 1
-  GLUT_JOYSTICK_BUTTON_B* = 2
-  GLUT_JOYSTICK_BUTTON_C* = 4
-  GLUT_JOYSTICK_BUTTON_D* = 8 # GLUT game mode sub-API.
-                              # glutGameModeGet.
-  GLUT_GAME_MODE_ACTIVE* = 0
-  GLUT_GAME_MODE_POSSIBLE* = 1
-  GLUT_GAME_MODE_WIDTH* = 2
-  GLUT_GAME_MODE_HEIGHT* = 3
-  GLUT_GAME_MODE_PIXEL_DEPTH* = 4
-  GLUT_GAME_MODE_REFRESH_RATE* = 5
-  GLUT_GAME_MODE_DISPLAY_CHANGED* = 6 # GLUT initialization sub-API.
-
-proc glutInit*(argcp: PInteger, argv: PPChar){.dynlib: dllname, importc.}
-proc glutInitDisplayMode*(mode: int16){.dynlib: dllname, importc.}
-proc glutInitDisplayString*(str: cstring){.dynlib: dllname, importc.}
-proc glutInitWindowPosition*(x, y: int){.dynlib: dllname, importc.}
-proc glutInitWindowSize*(width, height: int){.dynlib: dllname, importc.}
-proc glutMainLoop*(){.dynlib: dllname, importc.}
-  # GLUT window sub-API.
-proc glutCreateWindow*(title: cstring): int{.dynlib: dllname, importc.}
-proc glutCreateSubWindow*(win, x, y, width, height: int): int{.dynlib: dllname,
-    importc.}
-proc glutDestroyWindow*(win: int){.dynlib: dllname, importc.}
-proc glutPostRedisplay*(){.dynlib: dllname, importc.}
-proc glutPostWindowRedisplay*(win: int){.dynlib: dllname, importc.}
-proc glutSwapBuffers*(){.dynlib: dllname, importc.}
-proc glutGetWindow*(): int{.dynlib: dllname, importc.}
-proc glutSetWindow*(win: int){.dynlib: dllname, importc.}
-proc glutSetWindowTitle*(title: cstring){.dynlib: dllname, importc.}
-proc glutSetIconTitle*(title: cstring){.dynlib: dllname, importc.}
-proc glutPositionWindow*(x, y: int){.dynlib: dllname, importc.}
-proc glutReshapeWindow*(width, height: int){.dynlib: dllname, importc.}
-proc glutPopWindow*(){.dynlib: dllname, importc.}
-proc glutPushWindow*(){.dynlib: dllname, importc.}
-proc glutIconifyWindow*(){.dynlib: dllname, importc.}
-proc glutShowWindow*(){.dynlib: dllname, importc.}
-proc glutHideWindow*(){.dynlib: dllname, importc.}
-proc glutFullScreen*(){.dynlib: dllname, importc.}
-proc glutSetCursor*(cursor: int){.dynlib: dllname, importc.}
-proc glutWarpPointer*(x, y: int){.dynlib: dllname, importc.}
-  # GLUT overlay sub-API.
-proc glutEstablishOverlay*(){.dynlib: dllname, importc.}
-proc glutRemoveOverlay*(){.dynlib: dllname, importc.}
-proc glutUseLayer*(layer: TGLenum){.dynlib: dllname, importc.}
-proc glutPostOverlayRedisplay*(){.dynlib: dllname, importc.}
-proc glutPostWindowOverlayRedisplay*(win: int){.dynlib: dllname, importc.}
-proc glutShowOverlay*(){.dynlib: dllname, importc.}
-proc glutHideOverlay*(){.dynlib: dllname, importc.}
-  # GLUT menu sub-API.
-proc glutCreateMenu*(callback: TGlut1IntCallback): int{.dynlib: dllname, importc.}
-proc glutDestroyMenu*(menu: int){.dynlib: dllname, importc.}
-proc glutGetMenu*(): int{.dynlib: dllname, importc.}
-proc glutSetMenu*(menu: int){.dynlib: dllname, importc.}
-proc glutAddMenuEntry*(caption: cstring, value: int){.dynlib: dllname, importc.}
-proc glutAddSubMenu*(caption: cstring, submenu: int){.dynlib: dllname, importc.}
-proc glutChangeToMenuEntry*(item: int, caption: cstring, value: int){.
-    dynlib: dllname, importc.}
-proc glutChangeToSubMenu*(item: int, caption: cstring, submenu: int){.
-    dynlib: dllname, importc.}
-proc glutRemoveMenuItem*(item: int){.dynlib: dllname, importc.}
-proc glutAttachMenu*(button: int){.dynlib: dllname, importc.}
-proc glutDetachMenu*(button: int){.dynlib: dllname, importc.}
-  # GLUT window callback sub-API.
-proc glutDisplayFunc*(f: TGlutVoidCallback){.dynlib: dllname, importc.}
-proc glutReshapeFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutKeyboardFunc*(f: TGlut1Char2IntCallback){.dynlib: dllname, importc.}
-proc glutMouseFunc*(f: TGlut4IntCallback){.dynlib: dllname, importc.}
-proc glutMotionFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutPassiveMotionFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutEntryFunc*(f: TGlut1IntCallback){.dynlib: dllname, importc.}
-proc glutVisibilityFunc*(f: TGlut1IntCallback){.dynlib: dllname, importc.}
-proc glutIdleFunc*(f: TGlutVoidCallback){.dynlib: dllname, importc.}
-proc glutTimerFunc*(millis: int16, f: TGlut1IntCallback, value: int){.
-    dynlib: dllname, importc.}
-proc glutMenuStateFunc*(f: TGlut1IntCallback){.dynlib: dllname, importc.}
-proc glutSpecialFunc*(f: TGlut3IntCallback){.dynlib: dllname, importc.}
-proc glutSpaceballMotionFunc*(f: TGlut3IntCallback){.dynlib: dllname, importc.}
-proc glutSpaceballRotateFunc*(f: TGlut3IntCallback){.dynlib: dllname, importc.}
-proc glutSpaceballButtonFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutButtonBoxFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutDialsFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutTabletMotionFunc*(f: TGlut2IntCallback){.dynlib: dllname, importc.}
-proc glutTabletButtonFunc*(f: TGlut4IntCallback){.dynlib: dllname, importc.}
-proc glutMenuStatusFunc*(f: TGlut3IntCallback){.dynlib: dllname, importc.}
-proc glutOverlayDisplayFunc*(f: TGlutVoidCallback){.dynlib: dllname, importc.}
-proc glutWindowStatusFunc*(f: TGlut1IntCallback){.dynlib: dllname, importc.}
-proc glutKeyboardUpFunc*(f: TGlut1Char2IntCallback){.dynlib: dllname, importc.}
-proc glutSpecialUpFunc*(f: TGlut3IntCallback){.dynlib: dllname, importc.}
-proc glutJoystickFunc*(f: TGlut1UInt3IntCallback, pollInterval: int){.
-    dynlib: dllname, importc.}
-  # GLUT color index sub-API.
-proc glutSetColor*(cell: int, red, green, blue: TGLfloat){.dynlib: dllname,
-    importc.}
-proc glutGetColor*(ndx, component: int): TGLfloat{.dynlib: dllname, importc.}
-proc glutCopyColormap*(win: int){.dynlib: dllname, importc.}
-  # GLUT state retrieval sub-API.
-proc glutGet*(t: TGLenum): int{.dynlib: dllname, importc.}
-proc glutDeviceGet*(t: TGLenum): int{.dynlib: dllname, importc.}
-  # GLUT extension support sub-API
-proc glutExtensionSupported*(name: cstring): int{.dynlib: dllname, importc.}
-proc glutGetModifiers*(): int{.dynlib: dllname, importc.}
-proc glutLayerGet*(t: TGLenum): int{.dynlib: dllname, importc.}
-  # GLUT font sub-API
-proc glutBitmapCharacter*(font: pointer, character: int){.dynlib: dllname,
-    importc.}
-proc glutBitmapWidth*(font: pointer, character: int): int{.dynlib: dllname,
-    importc.}
-proc glutStrokeCharacter*(font: pointer, character: int){.dynlib: dllname,
-    importc.}
-proc glutStrokeWidth*(font: pointer, character: int): int{.dynlib: dllname,
-    importc.}
-proc glutBitmapLength*(font: pointer, str: cstring): int{.dynlib: dllname,
-    importc.}
-proc glutStrokeLength*(font: pointer, str: cstring): int{.dynlib: dllname,
-    importc.}
-  # GLUT pre-built models sub-API
-proc glutWireSphere*(radius: TGLdouble, slices, stacks: TGLint){.dynlib: dllname,
-    importc.}
-proc glutSolidSphere*(radius: TGLdouble, slices, stacks: TGLint){.dynlib: dllname,
-    importc.}
-proc glutWireCone*(base, height: TGLdouble, slices, stacks: TGLint){.
-    dynlib: dllname, importc.}
-proc glutSolidCone*(base, height: TGLdouble, slices, stacks: TGLint){.
-    dynlib: dllname, importc.}
-proc glutWireCube*(size: TGLdouble){.dynlib: dllname, importc.}
-proc glutSolidCube*(size: TGLdouble){.dynlib: dllname, importc.}
-proc glutWireTorus*(innerRadius, outerRadius: TGLdouble, sides, rings: TGLint){.
-    dynlib: dllname, importc.}
-proc glutSolidTorus*(innerRadius, outerRadius: TGLdouble, sides, rings: TGLint){.
-    dynlib: dllname, importc.}
-proc glutWireDodecahedron*(){.dynlib: dllname, importc.}
-proc glutSolidDodecahedron*(){.dynlib: dllname, importc.}
-proc glutWireTeapot*(size: TGLdouble){.dynlib: dllname, importc.}
-proc glutSolidTeapot*(size: TGLdouble){.dynlib: dllname, importc.}
-proc glutWireOctahedron*(){.dynlib: dllname, importc.}
-proc glutSolidOctahedron*(){.dynlib: dllname, importc.}
-proc glutWireTetrahedron*(){.dynlib: dllname, importc.}
-proc glutSolidTetrahedron*(){.dynlib: dllname, importc.}
-proc glutWireIcosahedron*(){.dynlib: dllname, importc.}
-proc glutSolidIcosahedron*(){.dynlib: dllname, importc.}
-  # GLUT video resize sub-API.
-proc glutVideoResizeGet*(param: TGLenum): int{.dynlib: dllname, importc.}
-proc glutSetupVideoResizing*(){.dynlib: dllname, importc.}
-proc glutStopVideoResizing*(){.dynlib: dllname, importc.}
-proc glutVideoResize*(x, y, width, height: int){.dynlib: dllname, importc.}
-proc glutVideoPan*(x, y, width, height: int){.dynlib: dllname, importc.}
-  # GLUT debugging sub-API.
-proc glutReportErrors*(){.dynlib: dllname, importc.}
-  # GLUT device control sub-API.
-proc glutIgnoreKeyRepeat*(ignore: int){.dynlib: dllname, importc.}
-proc glutSetKeyRepeat*(repeatMode: int){.dynlib: dllname, importc.}
-proc glutForceJoystickFunc*(){.dynlib: dllname, importc.}
-  # GLUT game mode sub-API.
-  #example glutGameModeString('1280x1024:32@75');
-proc glutGameModeString*(AString: cstring){.dynlib: dllname, importc.}
-proc glutEnterGameMode*(): int{.dynlib: dllname, importc.}
-proc glutLeaveGameMode*(){.dynlib: dllname, importc.}
-proc glutGameModeGet*(mode: TGLenum): int{.dynlib: dllname, importc.}
-# implementation
diff --git a/lib/wrappers/opengl/glx.nim b/lib/wrappers/opengl/glx.nim
deleted file mode 100755
index a967acfc6..000000000
--- a/lib/wrappers/opengl/glx.nim
+++ /dev/null
@@ -1,148 +0,0 @@
-#
-#
-#  Translation of the Mesa GLX headers for FreePascal
-#  Copyright (C) 1999 Sebastian Guenther
-#
-#
-#  Mesa 3-D graphics library
-#  Version:  3.0
-#  Copyright (C) 1995-1998  Brian Paul
-#
-#  This library is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU Library General Public
-#  License as published by the Free Software Foundation; either
-#  version 2 of the License, or (at your option) any later version.
-#
-#  This library is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-#  Library General Public License for more details.
-#
-#  You should have received a copy of the GNU Library General Public
-#  License along with this library; if not, write to the Free
-#  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#
-
-import
-  X, XLib, XUtil, gl
-
-when defined(windows):
-  const dllname = "GL.dll"
-elif defined(macosx):
-  const dllname = "/usr/X11R6/lib/libGL.dylib"
-else:
-  const dllname = "libGL.so"
-
-const
-  GLX_USE_GL* = 1
-  GLX_BUFFER_SIZE* = 2
-  GLX_LEVEL* = 3
-  GLX_RGBA* = 4
-  GLX_DOUBLEBUFFER* = 5
-  GLX_STEREO* = 6
-  GLX_AUX_BUFFERS* = 7
-  GLX_RED_SIZE* = 8
-  GLX_GREEN_SIZE* = 9
-  GLX_BLUE_SIZE* = 10
-  GLX_ALPHA_SIZE* = 11
-  GLX_DEPTH_SIZE* = 12
-  GLX_STENCIL_SIZE* = 13
-  GLX_ACCUM_RED_SIZE* = 14
-  GLX_ACCUM_GREEN_SIZE* = 15
-  GLX_ACCUM_BLUE_SIZE* = 16
-  GLX_ACCUM_ALPHA_SIZE* = 17  # GLX_EXT_visual_info extension
-  GLX_X_VISUAL_TYPE_EXT* = 0x00000022
-  GLX_TRANSPARENT_TYPE_EXT* = 0x00000023
-  GLX_TRANSPARENT_INDEX_VALUE_EXT* = 0x00000024
-  GLX_TRANSPARENT_RED_VALUE_EXT* = 0x00000025
-  GLX_TRANSPARENT_GREEN_VALUE_EXT* = 0x00000026
-  GLX_TRANSPARENT_BLUE_VALUE_EXT* = 0x00000027
-  GLX_TRANSPARENT_ALPHA_VALUE_EXT* = 0x00000028 # Error codes returned by glXGetConfig:
-  GLX_BAD_SCREEN* = 1
-  GLX_BAD_ATTRIBUTE* = 2
-  GLX_NO_EXTENSION* = 3
-  GLX_BAD_VISUAL* = 4
-  GLX_BAD_CONTEXT* = 5
-  GLX_BAD_VALUE* = 6
-  GLX_BAD_ENUM* = 7           # GLX 1.1 and later:
-  GLX_VENDOR* = 1
-  GLX_VERSION* = 2
-  GLX_EXTENSIONS* = 3         # GLX_visual_info extension
-  GLX_TRUE_COLOR_EXT* = 0x00008002
-  GLX_DIRECT_COLOR_EXT* = 0x00008003
-  GLX_PSEUDO_COLOR_EXT* = 0x00008004
-  GLX_STATIC_COLOR_EXT* = 0x00008005
-  GLX_GRAY_SCALE_EXT* = 0x00008006
-  GLX_STATIC_GRAY_EXT* = 0x00008007
-  GLX_NONE_EXT* = 0x00008000
-  GLX_TRANSPARENT_RGB_EXT* = 0x00008008
-  GLX_TRANSPARENT_INDEX_EXT* = 0x00008009
-
-type                          # From XLib:
-  XPixmap* = TXID
-  XFont* = TXID
-  XColormap* = TXID
-  GLXContext* = Pointer
-  GLXPixmap* = TXID
-  GLXDrawable* = TXID
-  GLXContextID* = TXID
-  TXPixmap* = XPixmap
-  TXFont* = XFont
-  TXColormap* = XColormap
-  TGLXContext* = GLXContext
-  TGLXPixmap* = GLXPixmap
-  TGLXDrawable* = GLXDrawable
-  TGLXContextID* = GLXContextID
-
-proc glXChooseVisual*(dpy: PDisplay, screen: int, attribList: ptr int32): PXVisualInfo{.
-    cdecl, dynlib: dllname, importc.}
-proc glXCreateContext*(dpy: PDisplay, vis: PXVisualInfo, shareList: GLXContext,
-                       direct: bool): GLXContext{.cdecl, dynlib: dllname,
-    importc.}
-proc glXDestroyContext*(dpy: PDisplay, ctx: GLXContext){.cdecl, dynlib: dllname,
-    importc.}
-proc glXMakeCurrent*(dpy: PDisplay, drawable: GLXDrawable, ctx: GLXContext): bool{.
-    cdecl, dynlib: dllname, importc.}
-proc glXCopyContext*(dpy: PDisplay, src, dst: GLXContext, mask: int32){.cdecl,
-    dynlib: dllname, importc.}
-proc glXSwapBuffers*(dpy: PDisplay, drawable: GLXDrawable){.cdecl,
-    dynlib: dllname, importc.}
-proc glXCreateGLXPixmap*(dpy: PDisplay, visual: PXVisualInfo, pixmap: XPixmap): GLXPixmap{.
-    cdecl, dynlib: dllname, importc.}
-proc glXDestroyGLXPixmap*(dpy: PDisplay, pixmap: GLXPixmap){.cdecl,
-    dynlib: dllname, importc.}
-proc glXQueryExtension*(dpy: PDisplay, errorb, event: var int): bool{.cdecl,
-    dynlib: dllname, importc.}
-proc glXQueryVersion*(dpy: PDisplay, maj, min: var int): bool{.cdecl,
-    dynlib: dllname, importc.}
-proc glXIsDirect*(dpy: PDisplay, ctx: GLXContext): bool{.cdecl, dynlib: dllname,
-    importc.}
-proc glXGetConfig*(dpy: PDisplay, visual: PXVisualInfo, attrib: int,
-                   value: var int): int{.cdecl, dynlib: dllname, importc.}
-proc glXGetCurrentContext*(): GLXContext{.cdecl, dynlib: dllname, importc.}
-proc glXGetCurrentDrawable*(): GLXDrawable{.cdecl, dynlib: dllname, importc.}
-proc glXWaitGL*(){.cdecl, dynlib: dllname, importc.}
-proc glXWaitX*(){.cdecl, dynlib: dllname, importc.}
-proc glXUseXFont*(font: XFont, first, count, list: int){.cdecl, dynlib: dllname,
-    importc.}
-  # GLX 1.1 and later
-proc glXQueryExtensionsString*(dpy: PDisplay, screen: int): cstring{.cdecl,
-    dynlib: dllname, importc.}
-proc glXQueryServerString*(dpy: PDisplay, screen, name: int): cstring{.cdecl,
-    dynlib: dllname, importc.}
-proc glXGetClientString*(dpy: PDisplay, name: int): cstring{.cdecl,
-    dynlib: dllname, importc.}
-  # Mesa GLX Extensions
-proc glXCreateGLXPixmapMESA*(dpy: PDisplay, visual: PXVisualInfo,
-                             pixmap: XPixmap, cmap: XColormap): GLXPixmap{.
-    cdecl, dynlib: dllname, importc.}
-proc glXReleaseBufferMESA*(dpy: PDisplay, d: GLXDrawable): bool{.cdecl,
-    dynlib: dllname, importc.}
-proc glXCopySubBufferMESA*(dpy: PDisplay, drawbale: GLXDrawable,
-                           x, y, width, height: int){.cdecl, dynlib: dllname,
-    importc.}
-proc glXGetVideoSyncSGI*(counter: var int32): int{.cdecl, dynlib: dllname,
-    importc.}
-proc glXWaitVideoSyncSGI*(divisor, remainder: int, count: var int32): int{.
-    cdecl, dynlib: dllname, importc.}
-# implementation
diff --git a/lib/wrappers/opengl/wingl.nim b/lib/wrappers/opengl/wingl.nim
deleted file mode 100755
index 2cebf8622..000000000
--- a/lib/wrappers/opengl/wingl.nim
+++ /dev/null
@@ -1,348 +0,0 @@
-
-import 
-  gl, windows
-
-proc wglGetExtensionsStringARB*(hdc: HDC): cstring{.dynlib: dllname, importc.}
-
-const 
-  WGL_FRONT_COLOR_BUFFER_BIT_ARB* = 0x00000001
-  WGL_BACK_COLOR_BUFFER_BIT_ARB* = 0x00000002
-  WGL_DEPTH_BUFFER_BIT_ARB* = 0x00000004
-  WGL_STENCIL_BUFFER_BIT_ARB* = 0x00000008
-
-proc WinChoosePixelFormat*(DC: HDC, p2: PPixelFormatDescriptor): int{.
-    dynlib: "gdi32", importc: "ChoosePixelFormat".}
-proc wglCreateBufferRegionARB*(hDC: HDC, iLayerPlane: TGLint, uType: TGLuint): THandle{.
-    dynlib: dllname, importc.}
-proc wglDeleteBufferRegionARB*(hRegion: THandle){.dynlib: dllname, importc.}
-proc wglSaveBufferRegionARB*(hRegion: THandle, x: TGLint, y: TGLint, 
-                             width: TGLint, height: TGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglRestoreBufferRegionARB*(hRegion: THandle, x: TGLint, y: TGLint, 
-                                width: TGLint, height: TGLint, xSrc: TGLint, 
-                                ySrc: TGLint): BOOL{.dynlib: dllname, importc.}
-proc wglAllocateMemoryNV*(size: TGLsizei, readFrequency: TGLfloat, 
-                          writeFrequency: TGLfloat, priority: TGLfloat): PGLvoid{.
-    dynlib: dllname, importc.}
-proc wglFreeMemoryNV*(pointer: PGLvoid){.dynlib: dllname, importc.}
-const 
-  WGL_IMAGE_BUFFER_MIN_ACCESS_I3D* = 0x00000001
-  WGL_IMAGE_BUFFER_LOCK_I3D* = 0x00000002
-
-proc wglCreateImageBufferI3D*(hDC: HDC, dwSize: DWORD, uFlags: UINT): PGLvoid{.
-    dynlib: dllname, importc.}
-proc wglDestroyImageBufferI3D*(hDC: HDC, pAddress: PGLvoid): BOOL{.
-    dynlib: dllname, importc.}
-proc wglAssociateImageBufferEventsI3D*(hdc: HDC, pEvent: PHandle, 
-                                       pAddress: PGLvoid, pSize: PDWORD, 
-                                       count: UINT): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglReleaseImageBufferEventsI3D*(hdc: HDC, pAddress: PGLvoid, count: UINT): BOOL{.
-    dynlib: dllname, importc.}
-proc wglEnableFrameLockI3D*(): BOOL{.dynlib: dllname, importc.}
-proc wglDisableFrameLockI3D*(): BOOL{.dynlib: dllname, importc.}
-proc wglIsEnabledFrameLockI3D*(pFlag: PBOOL): BOOL{.dynlib: dllname, importc.}
-proc wglQueryFrameLockMasterI3D*(pFlag: PBOOL): BOOL{.dynlib: dllname, importc.}
-proc wglGetFrameUsageI3D*(pUsage: PGLfloat): BOOL{.dynlib: dllname, importc.}
-proc wglBeginFrameTrackingI3D*(): BOOL{.dynlib: dllname, importc.}
-proc wglEndFrameTrackingI3D*(): BOOL{.dynlib: dllname, importc.}
-proc wglQueryFrameTrackingI3D*(pFrameCount: PDWORD, pMissedFrames: PDWORD, 
-                               pLastMissedUsage: PGLfloat): BOOL{.
-    dynlib: dllname, importc.}
-const 
-  WGL_NUMBER_PIXEL_FORMATS_ARB* = 0x00002000
-  WGL_DRAW_TO_WINDOW_ARB* = 0x00002001
-  WGL_DRAW_TO_BITMAP_ARB* = 0x00002002
-  WGL_ACCELERATION_ARB* = 0x00002003
-  WGL_NEED_PALETTE_ARB* = 0x00002004
-  WGL_NEED_SYSTEM_PALETTE_ARB* = 0x00002005
-  WGL_SWAP_LAYER_BUFFERS_ARB* = 0x00002006
-  WGL_SWAP_METHOD_ARB* = 0x00002007
-  WGL_NUMBER_OVERLAYS_ARB* = 0x00002008
-  WGL_NUMBER_UNDERLAYS_ARB* = 0x00002009
-  WGL_TRANSPARENT_ARB* = 0x0000200A
-  WGL_TRANSPARENT_RED_VALUE_ARB* = 0x00002037
-  WGL_TRANSPARENT_GREEN_VALUE_ARB* = 0x00002038
-  WGL_TRANSPARENT_BLUE_VALUE_ARB* = 0x00002039
-  WGL_TRANSPARENT_ALPHA_VALUE_ARB* = 0x0000203A
-  WGL_TRANSPARENT_INDEX_VALUE_ARB* = 0x0000203B
-  WGL_SHARE_DEPTH_ARB* = 0x0000200C
-  WGL_SHARE_STENCIL_ARB* = 0x0000200D
-  WGL_SHARE_ACCUM_ARB* = 0x0000200E
-  WGL_SUPPORT_GDI_ARB* = 0x0000200F
-  WGL_SUPPORT_OPENGL_ARB* = 0x00002010
-  WGL_DOUBLE_BUFFER_ARB* = 0x00002011
-  WGL_STEREO_ARB* = 0x00002012
-  WGL_PIXEL_TYPE_ARB* = 0x00002013
-  WGL_COLOR_BITS_ARB* = 0x00002014
-  WGL_RED_BITS_ARB* = 0x00002015
-  WGL_RED_SHIFT_ARB* = 0x00002016
-  WGL_GREEN_BITS_ARB* = 0x00002017
-  WGL_GREEN_SHIFT_ARB* = 0x00002018
-  WGL_BLUE_BITS_ARB* = 0x00002019
-  WGL_BLUE_SHIFT_ARB* = 0x0000201A
-  WGL_ALPHA_BITS_ARB* = 0x0000201B
-  WGL_ALPHA_SHIFT_ARB* = 0x0000201C
-  WGL_ACCUM_BITS_ARB* = 0x0000201D
-  WGL_ACCUM_RED_BITS_ARB* = 0x0000201E
-  WGL_ACCUM_GREEN_BITS_ARB* = 0x0000201F
-  WGL_ACCUM_BLUE_BITS_ARB* = 0x00002020
-  WGL_ACCUM_ALPHA_BITS_ARB* = 0x00002021
-  WGL_DEPTH_BITS_ARB* = 0x00002022
-  WGL_STENCIL_BITS_ARB* = 0x00002023
-  WGL_AUX_BUFFERS_ARB* = 0x00002024
-  WGL_NO_ACCELERATION_ARB* = 0x00002025
-  WGL_GENERIC_ACCELERATION_ARB* = 0x00002026
-  WGL_FULL_ACCELERATION_ARB* = 0x00002027
-  WGL_SWAP_EXCHANGE_ARB* = 0x00002028
-  WGL_SWAP_COPY_ARB* = 0x00002029
-  WGL_SWAP_UNDEFINED_ARB* = 0x0000202A
-  WGL_TYPE_RGBA_ARB* = 0x0000202B
-  WGL_TYPE_COLORINDEX_ARB* = 0x0000202C
-
-proc wglGetPixelFormatAttribivARB*(hdc: HDC, iPixelFormat: TGLint, 
-                                   iLayerPlane: TGLint, nAttributes: TGLuint, 
-                                   piAttributes: PGLint, piValues: PGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGetPixelFormatAttribfvARB*(hdc: HDC, iPixelFormat: TGLint, 
-                                   iLayerPlane: TGLint, nAttributes: TGLuint, 
-                                   piAttributes: PGLint, pfValues: PGLfloat): BOOL{.
-    dynlib: dllname, importc.}
-proc wglChoosePixelFormatARB*(hdc: HDC, piAttribIList: PGLint, 
-                              pfAttribFList: PGLfloat, nMaxFormats: TGLuint, 
-                              piFormats: PGLint, nNumFormats: PGLuint): BOOL{.
-    dynlib: dllname, importc.}
-const 
-  WGL_ERROR_INVALID_PIXEL_TYPE_ARB* = 0x00002043
-  WGL_ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB* = 0x00002054
-
-proc wglMakeContextCurrentARB*(hDrawDC: HDC, hReadDC: HDC, hglrc: HGLRC): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGetCurrentReadDCARB*(): HDC{.dynlib: dllname, importc.}
-const 
-  WGL_DRAW_TO_PBUFFER_ARB* = 0x0000202D # WGL_DRAW_TO_PBUFFER_ARB  { already defined }
-  WGL_MAX_PBUFFER_PIXELS_ARB* = 0x0000202E
-  WGL_MAX_PBUFFER_WIDTH_ARB* = 0x0000202F
-  WGL_MAX_PBUFFER_HEIGHT_ARB* = 0x00002030
-  WGL_PBUFFER_LARGEST_ARB* = 0x00002033
-  WGL_PBUFFER_WIDTH_ARB* = 0x00002034
-  WGL_PBUFFER_HEIGHT_ARB* = 0x00002035
-  WGL_PBUFFER_LOST_ARB* = 0x00002036
-
-proc wglCreatePbufferARB*(hDC: HDC, iPixelFormat: TGLint, iWidth: TGLint, 
-                          iHeight: TGLint, piAttribList: PGLint): THandle{.
-    dynlib: dllname, importc.}
-proc wglGetPbufferDCARB*(hPbuffer: THandle): HDC{.dynlib: dllname, importc.}
-proc wglReleasePbufferDCARB*(hPbuffer: THandle, hDC: HDC): TGLint{.
-    dynlib: dllname, importc.}
-proc wglDestroyPbufferARB*(hPbuffer: THandle): BOOL{.dynlib: dllname, importc.}
-proc wglQueryPbufferARB*(hPbuffer: THandle, iAttribute: TGLint, piValue: PGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglSwapIntervalEXT*(interval: TGLint): BOOL{.dynlib: dllname, importc.}
-proc wglGetSwapIntervalEXT*(): TGLint{.dynlib: dllname, importc.}
-const 
-  WGL_BIND_TO_TEXTURE_RGB_ARB* = 0x00002070
-  WGL_BIND_TO_TEXTURE_RGBA_ARB* = 0x00002071
-  WGL_TEXTURE_FORMAT_ARB* = 0x00002072
-  WGL_TEXTURE_TARGET_ARB* = 0x00002073
-  WGL_MIPMAP_TEXTURE_ARB* = 0x00002074
-  WGL_TEXTURE_RGB_ARB* = 0x00002075
-  WGL_TEXTURE_RGBA_ARB* = 0x00002076
-  WGL_NO_TEXTURE_ARB* = 0x00002077
-  WGL_TEXTURE_CUBE_MAP_ARB* = 0x00002078
-  WGL_TEXTURE_1D_ARB* = 0x00002079
-  WGL_TEXTURE_2D_ARB* = 0x0000207A # WGL_NO_TEXTURE_ARB  { already defined }
-  WGL_MIPMAP_LEVEL_ARB* = 0x0000207B
-  WGL_CUBE_MAP_FACE_ARB* = 0x0000207C
-  WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB* = 0x0000207D
-  WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB* = 0x0000207E
-  WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB* = 0x0000207F
-  WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB* = 0x00002080
-  WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB* = 0x00002081
-  WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB* = 0x00002082
-  WGL_FRONT_LEFT_ARB* = 0x00002083
-  WGL_FRONT_RIGHT_ARB* = 0x00002084
-  WGL_BACK_LEFT_ARB* = 0x00002085
-  WGL_BACK_RIGHT_ARB* = 0x00002086
-  WGL_AUX0_ARB* = 0x00002087
-  WGL_AUX1_ARB* = 0x00002088
-  WGL_AUX2_ARB* = 0x00002089
-  WGL_AUX3_ARB* = 0x0000208A
-  WGL_AUX4_ARB* = 0x0000208B
-  WGL_AUX5_ARB* = 0x0000208C
-  WGL_AUX6_ARB* = 0x0000208D
-  WGL_AUX7_ARB* = 0x0000208E
-  WGL_AUX8_ARB* = 0x0000208F
-  WGL_AUX9_ARB* = 0x00002090
-
-proc wglBindTexImageARB*(hPbuffer: THandle, iBuffer: TGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglReleaseTexImageARB*(hPbuffer: THandle, iBuffer: TGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglSetPbufferAttribARB*(hPbuffer: THandle, piAttribList: PGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGetExtensionsStringEXT*(): cstring{.dynlib: dllname, importc.}
-proc wglMakeContextCurrentEXT*(hDrawDC: HDC, hReadDC: HDC, hglrc: HGLRC): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGetCurrentReadDCEXT*(): HDC{.dynlib: dllname, importc.}
-const 
-  WGL_DRAW_TO_PBUFFER_EXT* = 0x0000202D
-  WGL_MAX_PBUFFER_PIXELS_EXT* = 0x0000202E
-  WGL_MAX_PBUFFER_WIDTH_EXT* = 0x0000202F
-  WGL_MAX_PBUFFER_HEIGHT_EXT* = 0x00002030
-  WGL_OPTIMAL_PBUFFER_WIDTH_EXT* = 0x00002031
-  WGL_OPTIMAL_PBUFFER_HEIGHT_EXT* = 0x00002032
-  WGL_PBUFFER_LARGEST_EXT* = 0x00002033
-  WGL_PBUFFER_WIDTH_EXT* = 0x00002034
-  WGL_PBUFFER_HEIGHT_EXT* = 0x00002035
-
-proc wglCreatePbufferEXT*(hDC: HDC, iPixelFormat: TGLint, iWidth: TGLint, 
-                          iHeight: TGLint, piAttribList: PGLint): THandle{.
-    dynlib: dllname, importc.}
-proc wglGetPbufferDCEXT*(hPbuffer: THandle): HDC{.dynlib: dllname, importc.}
-proc wglReleasePbufferDCEXT*(hPbuffer: THandle, hDC: HDC): TGLint{.
-    dynlib: dllname, importc.}
-proc wglDestroyPbufferEXT*(hPbuffer: THandle): BOOL{.dynlib: dllname, importc.}
-proc wglQueryPbufferEXT*(hPbuffer: THandle, iAttribute: TGLint, piValue: PGLint): BOOL{.
-    dynlib: dllname, importc.}
-const 
-  WGL_NUMBER_PIXEL_FORMATS_EXT* = 0x00002000
-  WGL_DRAW_TO_WINDOW_EXT* = 0x00002001
-  WGL_DRAW_TO_BITMAP_EXT* = 0x00002002
-  WGL_ACCELERATION_EXT* = 0x00002003
-  WGL_NEED_PALETTE_EXT* = 0x00002004
-  WGL_NEED_SYSTEM_PALETTE_EXT* = 0x00002005
-  WGL_SWAP_LAYER_BUFFERS_EXT* = 0x00002006
-  WGL_SWAP_METHOD_EXT* = 0x00002007
-  WGL_NUMBER_OVERLAYS_EXT* = 0x00002008
-  WGL_NUMBER_UNDERLAYS_EXT* = 0x00002009
-  WGL_TRANSPARENT_EXT* = 0x0000200A
-  WGL_TRANSPARENT_VALUE_EXT* = 0x0000200B
-  WGL_SHARE_DEPTH_EXT* = 0x0000200C
-  WGL_SHARE_STENCIL_EXT* = 0x0000200D
-  WGL_SHARE_ACCUM_EXT* = 0x0000200E
-  WGL_SUPPORT_GDI_EXT* = 0x0000200F
-  WGL_SUPPORT_OPENGL_EXT* = 0x00002010
-  WGL_DOUBLE_BUFFER_EXT* = 0x00002011
-  WGL_STEREO_EXT* = 0x00002012
-  WGL_PIXEL_TYPE_EXT* = 0x00002013
-  WGL_COLOR_BITS_EXT* = 0x00002014
-  WGL_RED_BITS_EXT* = 0x00002015
-  WGL_RED_SHIFT_EXT* = 0x00002016
-  WGL_GREEN_BITS_EXT* = 0x00002017
-  WGL_GREEN_SHIFT_EXT* = 0x00002018
-  WGL_BLUE_BITS_EXT* = 0x00002019
-  WGL_BLUE_SHIFT_EXT* = 0x0000201A
-  WGL_ALPHA_BITS_EXT* = 0x0000201B
-  WGL_ALPHA_SHIFT_EXT* = 0x0000201C
-  WGL_ACCUM_BITS_EXT* = 0x0000201D
-  WGL_ACCUM_RED_BITS_EXT* = 0x0000201E
-  WGL_ACCUM_GREEN_BITS_EXT* = 0x0000201F
-  WGL_ACCUM_BLUE_BITS_EXT* = 0x00002020
-  WGL_ACCUM_ALPHA_BITS_EXT* = 0x00002021
-  WGL_DEPTH_BITS_EXT* = 0x00002022
-  WGL_STENCIL_BITS_EXT* = 0x00002023
-  WGL_AUX_BUFFERS_EXT* = 0x00002024
-  WGL_NO_ACCELERATION_EXT* = 0x00002025
-  WGL_GENERIC_ACCELERATION_EXT* = 0x00002026
-  WGL_FULL_ACCELERATION_EXT* = 0x00002027
-  WGL_SWAP_EXCHANGE_EXT* = 0x00002028
-  WGL_SWAP_COPY_EXT* = 0x00002029
-  WGL_SWAP_UNDEFINED_EXT* = 0x0000202A
-  WGL_TYPE_RGBA_EXT* = 0x0000202B
-  WGL_TYPE_COLORINDEX_EXT* = 0x0000202C
-
-proc wglGetPixelFormatAttribivEXT*(hdc: HDC, iPixelFormat: TGLint, 
-                                   iLayerPlane: TGLint, nAttributes: TGLuint, 
-                                   piAttributes: PGLint, piValues: PGLint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGetPixelFormatAttribfvEXT*(hdc: HDC, iPixelFormat: TGLint, 
-                                   iLayerPlane: TGLint, nAttributes: TGLuint, 
-                                   piAttributes: PGLint, pfValues: PGLfloat): BOOL{.
-    dynlib: dllname, importc.}
-proc wglChoosePixelFormatEXT*(hdc: HDC, piAttribIList: PGLint, 
-                              pfAttribFList: PGLfloat, nMaxFormats: TGLuint, 
-                              piFormats: PGLint, nNumFormats: PGLuint): BOOL{.
-    dynlib: dllname, importc.}
-const 
-  WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D* = 0x00002050
-  WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D* = 0x00002051
-  WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D* = 0x00002052
-  WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D* = 0x00002053
-
-proc wglGetDigitalVideoParametersI3D*(hDC: HDC, iAttribute: TGLint, 
-                                      piValue: PGLint): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglSetDigitalVideoParametersI3D*(hDC: HDC, iAttribute: TGLint, 
-                                      piValue: PGLint): BOOL{.dynlib: dllname, 
-    importc.}
-const 
-  WGL_GAMMA_TABLE_SIZE_I3D* = 0x0000204E
-  WGL_GAMMA_EXCLUDE_DESKTOP_I3D* = 0x0000204F
-
-proc wglGetGammaTableParametersI3D*(hDC: HDC, iAttribute: TGLint, 
-                                    piValue: PGLint): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglSetGammaTableParametersI3D*(hDC: HDC, iAttribute: TGLint, 
-                                    piValue: PGLint): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglGetGammaTableI3D*(hDC: HDC, iEntries: TGLint, puRed: PGLUSHORT, 
-                          puGreen: PGLUSHORT, puBlue: PGLUSHORT): BOOL{.
-    dynlib: dllname, importc.}
-proc wglSetGammaTableI3D*(hDC: HDC, iEntries: TGLint, puRed: PGLUSHORT, 
-                          puGreen: PGLUSHORT, puBlue: PGLUSHORT): BOOL{.
-    dynlib: dllname, importc.}
-const 
-  WGL_GENLOCK_SOURCE_MULTIVIEW_I3D* = 0x00002044
-  WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D* = 0x00002045
-  WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D* = 0x00002046
-  WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D* = 0x00002047
-  WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D* = 0x00002048
-  WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D* = 0x00002049
-  WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D* = 0x0000204A
-  WGL_GENLOCK_SOURCE_EDGE_RISING_I3D* = 0x0000204B
-  WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D* = 0x0000204C
-  WGL_FLOAT_COMPONENTS_NV* = 0x000020B0
-  WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV* = 0x000020B1
-  WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV* = 0x000020B2
-  WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV* = 0x000020B3
-  WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV* = 0x000020B4
-  WGL_TEXTURE_FLOAT_R_NV* = 0x000020B5
-  WGL_TEXTURE_FLOAT_RG_NV* = 0x000020B6
-  WGL_TEXTURE_FLOAT_RGB_NV* = 0x000020B7
-  WGL_TEXTURE_FLOAT_RGBA_NV* = 0x000020B8
-
-proc wglEnableGenlockI3D*(hDC: HDC): BOOL{.dynlib: dllname, importc.}
-proc wglDisableGenlockI3D*(hDC: HDC): BOOL{.dynlib: dllname, importc.}
-proc wglIsEnabledGenlockI3D*(hDC: HDC, pFlag: PBOOL): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglGenlockSourceI3D*(hDC: HDC, uSource: TGLuint): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglGetGenlockSourceI3D*(hDC: HDC, uSource: PGLUINT): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglGenlockSourceEdgeI3D*(hDC: HDC, uEdge: TGLuint): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglGetGenlockSourceEdgeI3D*(hDC: HDC, uEdge: PGLUINT): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGenlockSampleRateI3D*(hDC: HDC, uRate: TGLuint): BOOL{.dynlib: dllname, 
-    importc.}
-proc wglGetGenlockSampleRateI3D*(hDC: HDC, uRate: PGLUINT): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGenlockSourceDelayI3D*(hDC: HDC, uDelay: TGLuint): BOOL{.
-    dynlib: dllname, importc.}
-proc wglGetGenlockSourceDelayI3D*(hDC: HDC, uDelay: PGLUINT): BOOL{.
-    dynlib: dllname, importc.}
-proc wglQueryGenlockMaxSourceDelayI3D*(hDC: HDC, uMaxLineDelay: PGLUINT, 
-                                       uMaxPixelDelay: PGLUINT): BOOL{.
-    dynlib: dllname, importc.}
-const 
-  WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV* = 0x000020A0
-  WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV* = 0x000020A1
-  WGL_TEXTURE_RECTANGLE_NV* = 0x000020A2
-
-const 
-  WGL_RGBA_FLOAT_MODE_ATI* = 0x00008820
-  WGL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI* = 0x00008835
-  WGL_TYPE_RGBA_FLOAT_ATI* = 0x000021A0
-
-# implementation
diff --git a/lib/wrappers/pcre/pcre.nim b/lib/wrappers/pcre/pcre.nim
index 05f937579..f2622d190 100755
--- a/lib/wrappers/pcre/pcre.nim
+++ b/lib/wrappers/pcre/pcre.nim
@@ -7,17 +7,15 @@
 #    distribution, for details about the copyright.
 #
 
-{.compile: "pcre_all.c" .}
-
-type
+{.compile: "pcre_all.c".}
+type 
   Pbyte = ptr byte
   PPchar = ptr cstring
   Pint = ptr cint
-  Ppcre* = ptr TPcre
-  Ppcre_callout_block* = ptr tpcre_callout_block
-  Ppcre_extra* = ptr Tpcre_extra
-  TPcre {.final, pure.} = object
-
+  PPcre* = ptr Tpcre
+  Pcallout_block* = ptr tcallout_block
+  Pextra* = ptr Textra
+  Tpcre {.final, pure.} = object 
   # The structure for passing additional data to pcre_exec(). This is defined
   # in such as way as to be extensible.
   # Bits for which fields are set
@@ -26,34 +24,34 @@ type
   # Data passed back in callouts
   # Const before type ignored
   # Pointer to character tables
-  Tpcre_extra* {.final, pure.} = object
+  Textra*{.final, pure.} = object  # The structure for passing out data via the pcre_callout_function. We use a
+                                   # structure so that new fields can be added on the end in future versions,
+                                   # without changing the API of the function, thereby allowing old clients to
+                                   # work without modification.
+                                   # Identifies version of block
+                                   # ------------------------ Version 0 -------------------------------
+                                   # Number compiled into pattern
+                                   # The offset vector
+                                   # Const before type ignored
+                                   # The subject being matched
+                                   # The length of the subject
+                                   # Offset to start of this match attempt
+                                   # Where we currently are in the subject
+                                   # Max current capture
+                                   # Most recently closed capture
+                                   # Data passed in with the call
+                                   # ------------------- Added for Version 1 --------------------------
+                                   # Offset to next item in the pattern
+                                   # Length of next item in the pattern
+                                   # 
+                                   # ------------------------------------------------------------------
     flags: cint
     study_data: pointer
     match_limit: cint
     callout_data: pointer
     tables: ptr byte
 
-  # The structure for passing out data via the pcre_callout_function. We use a
-  # structure so that new fields can be added on the end in future versions,
-  # without changing the API of the function, thereby allowing old clients to
-  # work without modification.
-  # Identifies version of block
-  # ------------------------ Version 0 -------------------------------
-  # Number compiled into pattern
-  # The offset vector
-  # Const before type ignored
-  # The subject being matched
-  # The length of the subject
-  # Offset to start of this match attempt
-  # Where we currently are in the subject
-  # Max current capture
-  # Most recently closed capture
-  # Data passed in with the call
-  # ------------------- Added for Version 1 --------------------------
-  # Offset to next item in the pattern
-  # Length of next item in the pattern
-  # ------------------------------------------------------------------
-  TPcre_callout_block* {.final, pure.} = object
+  Tcallout_block*{.final, pure.} = object 
     version: cint
     callout_number: cint
     offset_vector: ptr cint
@@ -110,7 +108,7 @@ type
 # The file pcre.h is build by "configure". Do not edit it; instead
 # make changes to pcre.in.
 
-const
+const 
   PCRE_MAJOR* = 6
   PCRE_MINOR* = 3
   PCRE_DATE* = "2005/11/29"
@@ -135,27 +133,27 @@ const
   PCRE_DFA_RESTART* = 0x00020000
   PCRE_FIRSTLINE* = 0x00040000
   # Exec-time and get/set-time error codes
-  PCRE_ERROR_NOMATCH* = -(1)
-  PCRE_ERROR_NULL* = -(2)
-  PCRE_ERROR_BADOPTION* = -(3)
-  PCRE_ERROR_BADMAGIC* = -(4)
-  PCRE_ERROR_UNKNOWN_NODE* = -(5)
-  PCRE_ERROR_NOMEMORY* = -(6)
-  PCRE_ERROR_NOSUBSTRING* = -(7)
-  PCRE_ERROR_MATCHLIMIT* = -(8)
+  PCRE_ERROR_NOMATCH* = - (1)
+  PCRE_ERROR_NULL* = - (2)
+  PCRE_ERROR_BADOPTION* = - (3)
+  PCRE_ERROR_BADMAGIC* = - (4)
+  PCRE_ERROR_UNKNOWN_NODE* = - (5)
+  PCRE_ERROR_NOMEMORY* = - (6)
+  PCRE_ERROR_NOSUBSTRING* = - (7)
+  PCRE_ERROR_MATCHLIMIT* = - (8)
   # Never used by PCRE itself
-  PCRE_ERROR_CALLOUT* = -(9)
-  PCRE_ERROR_BADUTF8* = -(10)
-  PCRE_ERROR_BADUTF8_OFFSET* = -(11)
-  PCRE_ERROR_PARTIAL* = -(12)
-  PCRE_ERROR_BADPARTIAL* = -(13)
-  PCRE_ERROR_INTERNAL* = -(14)
-  PCRE_ERROR_BADCOUNT* = -(15)
-  PCRE_ERROR_DFA_UITEM* = -(16)
-  PCRE_ERROR_DFA_UCOND* = -(17)
-  PCRE_ERROR_DFA_UMLIMIT* = -(18)
-  PCRE_ERROR_DFA_WSSIZE* = -(19)
-  PCRE_ERROR_DFA_RECURSE* = -(20)
+  PCRE_ERROR_CALLOUT* = - (9)
+  PCRE_ERROR_BADUTF8* = - (10)
+  PCRE_ERROR_BADUTF8_OFFSET* = - (11)
+  PCRE_ERROR_PARTIAL* = - (12)
+  PCRE_ERROR_BADPARTIAL* = - (13)
+  PCRE_ERROR_INTERNAL* = - (14)
+  PCRE_ERROR_BADCOUNT* = - (15)
+  PCRE_ERROR_DFA_UITEM* = - (16)
+  PCRE_ERROR_DFA_UCOND* = - (17)
+  PCRE_ERROR_DFA_UMLIMIT* = - (18)
+  PCRE_ERROR_DFA_WSSIZE* = - (19)
+  PCRE_ERROR_DFA_RECURSE* = - (20)
   # Request types for pcre_fullinfo()
   PCRE_INFO_OPTIONS* = 0
   PCRE_INFO_SIZE* = 1
@@ -180,80 +178,60 @@ const
   PCRE_CONFIG_STACKRECURSE* = 5
   PCRE_CONFIG_UNICODE_PROPERTIES* = 6
   # Bit flags for the pcre_extra structure
-  PCRE_EXTRA_STUDY_DATA* = 0x0001
-  PCRE_EXTRA_MATCH_LIMIT* = 0x0002
-  PCRE_EXTRA_CALLOUT_DATA* = 0x0004
-  PCRE_EXTRA_TABLES* = 0x0008
+  PCRE_EXTRA_STUDY_DATA* = 0x00000001
+  PCRE_EXTRA_MATCH_LIMIT* = 0x00000002
+  PCRE_EXTRA_CALLOUT_DATA* = 0x00000004
+  PCRE_EXTRA_TABLES* = 0x00000008
 
 # Exported PCRE functions
 
-proc pcre_compile*(para1: cstring, para2: cint, para3: ptr cstring,
-                  para4: ptr int, para5: Pbyte): Ppcre {.
-                  importc: "pcre_compile", noconv.}
-
-proc pcre_compile2*(para1: cstring, para2: cint, para3: Pint, para4: PPchar,
-                   para5: ptr int, para6: Pbyte): Ppcre {.
-                   importc: "pcre_compile2", noconv.}
-
-proc pcre_config*(para1: cint, para2: pointer): cint {.
-  importc: "pcre_config", noconv.}
-
-proc pcre_copy_named_substring*(para1: Ppcre, para2: cstring, para3: Pint,
-                               para4: cint, para5: cstring, para6: cstring,
-                               para7: cint): cint {.
-                               importc: "pcre_copy_named_substring", noconv.}
-
-proc pcre_copy_substring*(para1: cstring, para2: Pint, para3: cint, para4: cint,
-                         para5: cstring, para6: cint): cint {.
-                         importc: "pcre_copy_substring", noconv.}
-
-proc pcre_dfa_exec*(para1: Ppcre, para2: Ppcre_extra, para3: cstring,
-                   para4: cint, para5: cint, para6: cint, para7: Pint,
-                   para8: cint, para9: Pint, para10: cint): cint {.
-                   importc: "pcre_dfa_exec", noconv.}
-
-proc pcre_exec*(para1: Ppcre, para2: Ppcre_extra, para3: cstring,
-               para4: cint, para5: cint, para6: cint, para7: Pint,
-               para8: cint): cint {.importc: "pcre_exec", noconv.}
-
-proc pcre_free_substring*(para1: cstring) {.
-  importc: "pcre_free_substring", noconv.}
-
-proc pcre_free_substring_list*(para1: PPchar) {.
-  importc: "pcre_free_substring_list", noconv.}
-
-proc pcre_fullinfo*(para1: Ppcre, para2: Ppcre_extra, para3: cint,
-                   para4: pointer): cint {.importc: "pcre_fullinfo", noconv.}
-
-proc pcre_get_named_substring*(para1: Ppcre, para2: cstring, para3: Pint,
-                              para4: cint, para5: cstring, para6: PPchar): cint {.
-                              importc: "pcre_get_named_substring", noconv.}
-
-proc pcre_get_stringnumber*(para1: Ppcre, para2: cstring): cint {.
-  importc: "pcre_get_stringnumber", noconv.}
-
-proc pcre_get_substring*(para1: cstring, para2: Pint, para3: cint,
-                        para4: cint, para5: PPchar): cint {.
-                        importc: "pcre_get_substring", noconv.}
-
-proc pcre_get_substring_list*(para1: cstring, para2: Pint, para3: cint,
-                             para4: ptr PPchar): cint {.
-                             importc: "pcre_get_substring_list", noconv.}
-
-proc pcre_info*(para1: Ppcre, para2: Pint, para3: Pint): cint {.
-  importc: "pcre_info", noconv.}
-
-proc pcre_maketables*: ptr byte {.
-  importc: "pcre_maketables", noconv.}
-
-proc pcre_refcount*(para1: Ppcre, para2: cint): cint {.
-  importc: "pcre_refcount", noconv.}
-
-proc pcre_study*(para1: Ppcre, para2: cint,
-                 para3: ptr CString): Ppcre_extra {.importc, noconv.}
-
-proc pcre_version*: CString {.importc: "pcre_version", noconv.}
-
+proc pcre_compile*(para1: cstring, para2: cint, para3: ptr cstring, 
+                   para4: ptr int, para5: Pbyte): PPcre{.importc: "pcre_compile", 
+    noconv.}
+proc pcre_compile2*(para1: cstring, para2: cint, para3: Pint, para4: PPchar, 
+                    para5: ptr int, para6: Pbyte): PPcre{.importc: "pcre_compile2", 
+    noconv.}
+proc pcre_config*(para1: cint, para2: pointer): cint{.importc: "pcre_config", 
+    noconv.}
+proc pcre_copy_named_substring*(para1: PPcre, para2: cstring, para3: Pint, 
+                                para4: cint, para5: cstring, para6: cstring, 
+                                para7: cint): cint{.
+    importc: "pcre_copy_named_substring", noconv.}
+proc pcre_copy_substring*(para1: cstring, para2: Pint, para3: cint, para4: cint, 
+                          para5: cstring, para6: cint): cint{.
+    importc: "pcre_copy_substring", noconv.}
+proc pcre_dfa_exec*(para1: PPcre, para2: Pextra, para3: cstring, para4: cint, 
+                    para5: cint, para6: cint, para7: Pint, para8: cint, 
+                    para9: Pint, para10: cint): cint{.importc: "pcre_dfa_exec", 
+    noconv.}
+proc pcre_exec*(para1: PPcre, para2: Pextra, para3: cstring, para4: cint, 
+                para5: cint, para6: cint, para7: Pint, para8: cint): cint{.
+    importc: "pcre_exec", noconv.}
+proc pcre_free_substring*(para1: cstring){.importc: "pcre_free_substring", 
+    noconv.}
+proc pcre_free_substring_list*(para1: PPchar){.
+    importc: "pcre_free_substring_list", noconv.}
+proc pcre_fullinfo*(para1: PPcre, para2: Pextra, para3: cint, para4: pointer): cint{.
+    importc: "pcre_fullinfo", noconv.}
+proc pcre_get_named_substring*(para1: PPcre, para2: cstring, para3: Pint, 
+                               para4: cint, para5: cstring, para6: PPchar): cint{.
+    importc: "pcre_get_named_substring", noconv.}
+proc pcre_get_stringnumber*(para1: PPcre, para2: cstring): cint{.
+    importc: "pcre_get_stringnumber", noconv.}
+proc pcre_get_substring*(para1: cstring, para2: Pint, para3: cint, para4: cint, 
+                         para5: PPchar): cint{.importc: "pcre_get_substring", 
+    noconv.}
+proc pcre_get_substring_list*(para1: cstring, para2: Pint, para3: cint, 
+                              para4: ptr PPchar): cint{.
+    importc: "pcre_get_substring_list", noconv.}
+proc pcre_info*(para1: PPcre, para2: Pint, para3: Pint): cint{.importc: "pcre_info", 
+    noconv.}
+proc pcre_maketables*(): ptr byte{.importc: "pcre_maketables", noconv.}
+proc pcre_refcount*(para1: PPcre, para2: cint): cint{.importc: "pcre_refcount", 
+    noconv.}
+proc pcre_study*(para1: PPcre, para2: cint, para3: ptr CString): Pextra{.
+    importc: "pcre_study", noconv.}
+proc pcre_version*(): CString{.importc: "pcre_version", noconv.}
 # Indirection for store get and free functions. These can be set to
 # alternative malloc/free functions if required. Special ones are used in the
 # non-recursive case for "frames". There is also an optional callout function
@@ -261,16 +239,18 @@ proc pcre_version*: CString {.importc: "pcre_version", noconv.}
 #
 
 # we use Nimrod's memory manager (but not GC!) for these functions:
-type
-  TMalloc = proc (para1: int): pointer {.noconv.}
-  TFree = proc (para1: pointer) {.noconv.}
-var
-  pcre_malloc {.importc: "pcre_malloc".}: TMalloc
-  pcre_free {.importc: "pcre_free".}: TFree
-  pcre_stack_malloc {.importc: "pcre_stack_malloc".}: TMalloc
-  pcre_stack_free  {.importc: "pcre_stack_free".}: TFree
-  pcre_callout {.importc: "pcre_callout".}:
-    proc (para1: Ppcre_callout_block): cint {.noconv.}
+
+type 
+  TMalloc = proc (para1: int): pointer{.noconv.}
+  TFree = proc (para1: pointer){.noconv.}
+
+var 
+  pcre_malloc{.importc: "pcre_malloc".}: TMalloc
+  pcre_free{.importc: "pcre_free".}: TFree
+  pcre_stack_malloc{.importc: "pcre_stack_malloc".}: TMalloc
+  pcre_stack_free{.importc: "pcre_stack_free".}: TFree
+  pcre_callout{.importc: "pcre_callout".}: proc (para1: Pcallout_block): cint{.
+      noconv.}
 
 pcre_malloc = cast[TMalloc](system.alloc)
 pcre_free = cast[TFree](system.dealloc)
diff --git a/lib/wrappers/pcre/pcre_all.c b/lib/wrappers/pcre/pcre_all.c
deleted file mode 100755
index bcda06e50..000000000
--- a/lib/wrappers/pcre/pcre_all.c
+++ /dev/null
@@ -1,30072 +0,0 @@
-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* This file is automatically written by the dftables auxiliary

-program. If you edit it by hand, you might like to edit the Makefile to

-prevent its ever being regenerated.

-

-This file contains the default tables for characters with codes less than

-128 (ASCII characters). These tables are used when no external tables are

-passed to PCRE. */

-

-const unsigned char _pcre_default_tables[] = {

-

-/* This table is a lower casing table. */

-

-    0,  1,  2,  3,  4,  5,  6,  7,

-    8,  9, 10, 11, 12, 13, 14, 15,

-   16, 17, 18, 19, 20, 21, 22, 23,

-   24, 25, 26, 27, 28, 29, 30, 31,

-   32, 33, 34, 35, 36, 37, 38, 39,

-   40, 41, 42, 43, 44, 45, 46, 47,

-   48, 49, 50, 51, 52, 53, 54, 55,

-   56, 57, 58, 59, 60, 61, 62, 63,

-   64, 97, 98, 99,100,101,102,103,

-  104,105,106,107,108,109,110,111,

-  112,113,114,115,116,117,118,119,

-  120,121,122, 91, 92, 93, 94, 95,

-   96, 97, 98, 99,100,101,102,103,

-  104,105,106,107,108,109,110,111,

-  112,113,114,115,116,117,118,119,

-  120,121,122,123,124,125,126,127,

-  128,129,130,131,132,133,134,135,

-  136,137,138,139,140,141,142,143,

-  144,145,146,147,148,149,150,151,

-  152,153,154,155,156,157,158,159,

-  160,161,162,163,164,165,166,167,

-  168,169,170,171,172,173,174,175,

-  176,177,178,179,180,181,182,183,

-  184,185,186,187,188,189,190,191,

-  192,193,194,195,196,197,198,199,

-  200,201,202,203,204,205,206,207,

-  208,209,210,211,212,213,214,215,

-  216,217,218,219,220,221,222,223,

-  224,225,226,227,228,229,230,231,

-  232,233,234,235,236,237,238,239,

-  240,241,242,243,244,245,246,247,

-  248,249,250,251,252,253,254,255,

-

-/* This table is a case flipping table. */

-

-    0,  1,  2,  3,  4,  5,  6,  7,

-    8,  9, 10, 11, 12, 13, 14, 15,

-   16, 17, 18, 19, 20, 21, 22, 23,

-   24, 25, 26, 27, 28, 29, 30, 31,

-   32, 33, 34, 35, 36, 37, 38, 39,

-   40, 41, 42, 43, 44, 45, 46, 47,

-   48, 49, 50, 51, 52, 53, 54, 55,

-   56, 57, 58, 59, 60, 61, 62, 63,

-   64, 97, 98, 99,100,101,102,103,

-  104,105,106,107,108,109,110,111,

-  112,113,114,115,116,117,118,119,

-  120,121,122, 91, 92, 93, 94, 95,

-   96, 65, 66, 67, 68, 69, 70, 71,

-   72, 73, 74, 75, 76, 77, 78, 79,

-   80, 81, 82, 83, 84, 85, 86, 87,

-   88, 89, 90,123,124,125,126,127,

-  128,129,130,131,132,133,134,135,

-  136,137,138,139,140,141,142,143,

-  144,145,146,147,148,149,150,151,

-  152,153,154,155,156,157,158,159,

-  160,161,162,163,164,165,166,167,

-  168,169,170,171,172,173,174,175,

-  176,177,178,179,180,181,182,183,

-  184,185,186,187,188,189,190,191,

-  192,193,194,195,196,197,198,199,

-  200,201,202,203,204,205,206,207,

-  208,209,210,211,212,213,214,215,

-  216,217,218,219,220,221,222,223,

-  224,225,226,227,228,229,230,231,

-  232,233,234,235,236,237,238,239,

-  240,241,242,243,244,245,246,247,

-  248,249,250,251,252,253,254,255,

-

-/* This table contains bit maps for various character classes.

-Each map is 32 bytes long and the bits run from the least

-significant end of each byte. The classes that have their own

-maps are: space, xdigit, digit, upper, lower, word, graph

-print, punct, and cntrl. Other classes are built from combinations. */

-

-  0x00,0x3e,0x00,0x00,0x01,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,

-  0x7e,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0xfe,0xff,0xff,0x07,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x07,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x03,

-  0xfe,0xff,0xff,0x87,0xfe,0xff,0xff,0x07,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,

-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,

-  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0x00,0x00,0x00,0x00,0xfe,0xff,0x00,0xfc,

-  0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x78,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-  0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

-

-/* This table identifies various classes of character by individual bits:

-  0x01   white space character

-  0x02   letter

-  0x04   decimal digit

-  0x08   hexadecimal digit

-  0x10   alphanumeric or '_'

-  0x80   regular expression metacharacter or binary zero

-*/

-

-  0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7 */

-  0x00,0x01,0x01,0x00,0x01,0x01,0x00,0x00, /*   8- 15 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */

-  0x01,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /*    - '  */

-  0x80,0x80,0x80,0x80,0x00,0x00,0x80,0x00, /*  ( - /  */

-  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, /*  0 - 7  */

-  0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x80, /*  8 - ?  */

-  0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  @ - G  */

-  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  H - O  */

-  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  P - W  */

-  0x12,0x12,0x12,0x80,0x00,0x00,0x80,0x10, /*  X - _  */

-  0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  ` - g  */

-  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  h - o  */

-  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  p - w  */

-  0x12,0x12,0x12,0x80,0x80,0x00,0x00,0x00, /*  x -127 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 128-135 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 136-143 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144-151 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 152-159 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160-167 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 168-175 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 176-183 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 192-199 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 200-207 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 208-215 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 216-223 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 224-231 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 232-239 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */

-

-/* End of chartables.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_compile(), along with

-supporting internal functions that are not used by other modules. */

-

-

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-/* This header contains definitions that are shared between the different

-modules, but which are not relevant to the exported API. This includes some

-functions whose names all begin with "_pcre_". */

-

-

-/* Define DEBUG to get debugging output on stdout. */

-

-/****

-#define DEBUG

-****/

-

-/* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef

-inline, and there are *still* stupid compilers about that don't like indented

-pre-processor statements, or at least there were when I first wrote this. After

-all, it had only been about 10 years then... */

-

-#ifdef DEBUG

-#define DPRINTF(p) printf p

-#else

-#define DPRINTF(p) /*nothing*/

-#endif

-

-

-/* Get the definitions provided by running "configure" */

-

-

-/* On Unix systems config.in is converted by configure into config.h. PCRE is

-written in Standard C, but there are a few non-standard things it can cope

-with, allowing it to run on SunOS4 and other "close to standard" systems.

-

-On a non-Unix system you should just copy this file into config.h, and set up

-the macros the way you need them. You should normally change the definitions of

-HAVE_STRERROR and HAVE_MEMMOVE to 1. Unfortunately, because of the way autoconf

-works, these cannot be made the defaults. If your system has bcopy() and not

-memmove(), change the definition of HAVE_BCOPY instead of HAVE_MEMMOVE. If your

-system has neither bcopy() nor memmove(), leave them both as 0; an emulation

-function will be used. */

-

-/* If you are compiling for a system that uses EBCDIC instead of ASCII

-character codes, define this macro as 1. On systems that can use "configure",

-this can be done via --enable-ebcdic. */

-

-#ifndef EBCDIC

-#define EBCDIC 0

-#endif

-

-/* If you are compiling for a system that needs some magic to be inserted

-before the definition of an exported function, define this macro to contain the

-relevant magic. It apears at the start of every exported function. */

-

-#define EXPORT

-

-/* Define to empty if the "const" keyword does not work. */

-

-#undef const

-

-/* Define to "unsigned" if <stddef.h> doesn't define size_t. */

-

-#undef size_t

-

-/* The following two definitions are mainly for the benefit of SunOS4, which

-doesn't have the strerror() or memmove() functions that should be present in

-all Standard C libraries. The macros HAVE_STRERROR and HAVE_MEMMOVE should

-normally be defined with the value 1 for other systems, but unfortunately we

-can't make this the default because "configure" files generated by autoconf

-will only change 0 to 1; they won't change 1 to 0 if the functions are not

-found. */

-

-#define HAVE_STRERROR 1

-#define HAVE_MEMMOVE  1

-

-/* There are some non-Unix systems that don't even have bcopy(). If this macro

-is false, an emulation is used. If HAVE_MEMMOVE is set to 1, the value of

-HAVE_BCOPY is not relevant. */

-

-#define HAVE_BCOPY    0

-

-/* The value of NEWLINE determines the newline character. The default is to

-leave it up to the compiler, but some sites want to force a particular value.

-On Unix systems, "configure" can be used to override this default. */

-

-#ifndef NEWLINE

-#define NEWLINE '\n'

-#endif

-

-/* The value of LINK_SIZE determines the number of bytes used to store

-links as offsets within the compiled regex. The default is 2, which allows for

-compiled patterns up to 64K long. This covers the vast majority of cases.

-However, PCRE can also be compiled to use 3 or 4 bytes instead. This allows for

-longer patterns in extreme cases. On Unix systems, "configure" can be used to

-override this default. */

-

-#ifndef LINK_SIZE

-#define LINK_SIZE   2

-#endif

-

-/* The value of MATCH_LIMIT determines the default number of times the match()

-function can be called during a single execution of pcre_exec(). (There is a

-runtime method of setting a different limit.) The limit exists in order to

-catch runaway regular expressions that take for ever to determine that they do

-not match. The default is set very large so that it does not accidentally catch

-legitimate cases. On Unix systems, "configure" can be used to override this

-default default. */

-

-#ifndef MATCH_LIMIT

-#define MATCH_LIMIT 10000000

-#endif

-

-/* When calling PCRE via the POSIX interface, additional working storage is

-required for holding the pointers to capturing substrings because PCRE requires

-three integers per substring, whereas the POSIX interface provides only two. If

-the number of expected substrings is small, the wrapper function uses space on

-the stack, because this is faster than using malloc() for each call. The

-threshold above which the stack is no longer use is defined by POSIX_MALLOC_

-THRESHOLD. On Unix systems, "configure" can be used to override this default.

-*/

-

-#ifndef POSIX_MALLOC_THRESHOLD

-#define POSIX_MALLOC_THRESHOLD 10

-#endif

-

-/* PCRE uses recursive function calls to handle backtracking while matching.

-This can sometimes be a problem on systems that have stacks of limited size.

-Define NO_RECURSE to get a version that doesn't use recursion in the match()

-function; instead it creates its own stack by steam using pcre_recurse_malloc

-to get memory. For more detail, see comments and other stuff just above the

-match() function. On Unix systems, "configure" can be used to set this in the

-Makefile (use --disable-stack-for-recursion). */

-

-/* #define NO_RECURSE */

-

-/* End */

-

-/* Standard C headers plus the external interface definition. The only time

-setjmp and stdarg are used is when NO_RECURSE is set. */

-

-#include <ctype.h>

-#include <limits.h>

-#include <setjmp.h>

-#include <stdarg.h>

-#include <stddef.h>

-#include <stdio.h>

-#include <stdlib.h>

-#include <string.h>

-

-#ifndef PCRE_SPY

-#define PCRE_DEFINITION       /* Win32 __declspec(export) trigger for .dll */

-#endif

-

-/* We need to have types that specify unsigned 16-bit and 32-bit integers. We

-cannot determine these outside the compilation (e.g. by running a program as

-part of "configure") because PCRE is often cross-compiled for use on other

-systems. Instead we make use of the maximum sizes that are available at

-preprocessor time in standard C environments. */

-

-#if USHRT_MAX == 65535

-  typedef unsigned short pcre_uint16;

-#elif UINT_MAX == 65535

-  typedef unsigned int pcre_uint16;

-#else

-  #error Cannot determine a type for 16-bit unsigned integers

-#endif

-

-#if UINT_MAX == 4294967295

-  typedef unsigned int pcre_uint32;

-#elif ULONG_MAX == 4294967295

-  typedef unsigned long int pcre_uint32;

-#else

-  #error Cannot determine a type for 32-bit unsigned integers

-#endif

-

-/* All character handling must be done as unsigned characters. Otherwise there

-are problems with top-bit-set characters and functions such as isspace().

-However, we leave the interface to the outside world as char *, because that

-should make things easier for callers. We define a short type for unsigned char

-to save lots of typing. I tried "uchar", but it causes problems on Digital

-Unix, where it is defined in sys/types, so use "uschar" instead. */

-

-typedef unsigned char uschar;

-

-/* Include the public PCRE header */

-

-/*************************************************

-*       Perl-Compatible Regular Expressions      *

-*************************************************/

-

-/* In its original form, this is the .in file that is transformed by

-"configure" into pcre.h.

-

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-#ifndef _PCRE_H

-#define _PCRE_H

-

-/* The file pcre.h is build by "configure". Do not edit it; instead

-make changes to pcre.in. */

-

-#define PCRE_MAJOR          6

-#define PCRE_MINOR          3

-#define PCRE_DATE           "2005/11/29"

-

-/* For other operating systems, we use the standard "extern". */

-

-#ifndef PCRE_DATA_SCOPE

-#  ifdef __cplusplus

-#    define PCRE_DATA_SCOPE     extern "C"

-#  else

-#    define PCRE_DATA_SCOPE     extern

-#  endif

-#endif

-

-/* Have to include stdlib.h in order to ensure that size_t is defined;

-it is needed here for malloc. */

-

-#include <stdlib.h>

-

-/* Allow for C++ users */

-

-#ifdef __cplusplus

-extern "C" {

-#endif

-

-/* Options */

-

-#define PCRE_CASELESS           0x00000001

-#define PCRE_MULTILINE          0x00000002

-#define PCRE_DOTALL             0x00000004

-#define PCRE_EXTENDED           0x00000008

-#define PCRE_ANCHORED           0x00000010

-#define PCRE_DOLLAR_ENDONLY     0x00000020

-#define PCRE_EXTRA              0x00000040

-#define PCRE_NOTBOL             0x00000080

-#define PCRE_NOTEOL             0x00000100

-#define PCRE_UNGREEDY           0x00000200

-#define PCRE_NOTEMPTY           0x00000400

-#define PCRE_UTF8               0x00000800

-#define PCRE_NO_AUTO_CAPTURE    0x00001000

-#define PCRE_NO_UTF8_CHECK      0x00002000

-#define PCRE_AUTO_CALLOUT       0x00004000

-#define PCRE_PARTIAL            0x00008000

-#define PCRE_DFA_SHORTEST       0x00010000

-#define PCRE_DFA_RESTART        0x00020000

-#define PCRE_FIRSTLINE          0x00040000

-

-/* Exec-time and get/set-time error codes */

-

-#define PCRE_ERROR_NOMATCH         (-1)

-#define PCRE_ERROR_NULL            (-2)

-#define PCRE_ERROR_BADOPTION       (-3)

-#define PCRE_ERROR_BADMAGIC        (-4)

-#define PCRE_ERROR_UNKNOWN_NODE    (-5)

-#define PCRE_ERROR_NOMEMORY        (-6)

-#define PCRE_ERROR_NOSUBSTRING     (-7)

-#define PCRE_ERROR_MATCHLIMIT      (-8)

-#define PCRE_ERROR_CALLOUT         (-9)  /* Never used by PCRE itself */

-#define PCRE_ERROR_BADUTF8        (-10)

-#define PCRE_ERROR_BADUTF8_OFFSET (-11)

-#define PCRE_ERROR_PARTIAL        (-12)

-#define PCRE_ERROR_BADPARTIAL     (-13)

-#define PCRE_ERROR_INTERNAL       (-14)

-#define PCRE_ERROR_BADCOUNT       (-15)

-#define PCRE_ERROR_DFA_UITEM      (-16)

-#define PCRE_ERROR_DFA_UCOND      (-17)

-#define PCRE_ERROR_DFA_UMLIMIT    (-18)

-#define PCRE_ERROR_DFA_WSSIZE     (-19)

-#define PCRE_ERROR_DFA_RECURSE    (-20)

-

-/* Request types for pcre_fullinfo() */

-

-#define PCRE_INFO_OPTIONS            0

-#define PCRE_INFO_SIZE               1

-#define PCRE_INFO_CAPTURECOUNT       2

-#define PCRE_INFO_BACKREFMAX         3

-#define PCRE_INFO_FIRSTBYTE          4

-#define PCRE_INFO_FIRSTCHAR          4  /* For backwards compatibility */

-#define PCRE_INFO_FIRSTTABLE         5

-#define PCRE_INFO_LASTLITERAL        6

-#define PCRE_INFO_NAMEENTRYSIZE      7

-#define PCRE_INFO_NAMECOUNT          8

-#define PCRE_INFO_NAMETABLE          9

-#define PCRE_INFO_STUDYSIZE         10

-#define PCRE_INFO_DEFAULT_TABLES    11

-

-/* Request types for pcre_config() */

-

-#define PCRE_CONFIG_UTF8                    0

-#define PCRE_CONFIG_NEWLINE                 1

-#define PCRE_CONFIG_LINK_SIZE               2

-#define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD  3

-#define PCRE_CONFIG_MATCH_LIMIT             4

-#define PCRE_CONFIG_STACKRECURSE            5

-#define PCRE_CONFIG_UNICODE_PROPERTIES      6

-

-/* Bit flags for the pcre_extra structure */

-

-#define PCRE_EXTRA_STUDY_DATA          0x0001

-#define PCRE_EXTRA_MATCH_LIMIT         0x0002

-#define PCRE_EXTRA_CALLOUT_DATA        0x0004

-#define PCRE_EXTRA_TABLES              0x0008

-

-/* Types */

-

-struct real_pcre;                 /* declaration; the definition is private  */

-typedef struct real_pcre pcre;

-

-/* The structure for passing additional data to pcre_exec(). This is defined in

-such as way as to be extensible. Always add new fields at the end, in order to

-remain compatible. */

-

-typedef struct pcre_extra {

-  unsigned long int flags;        /* Bits for which fields are set */

-  void *study_data;               /* Opaque data from pcre_study() */

-  unsigned long int match_limit;  /* Maximum number of calls to match() */

-  void *callout_data;             /* Data passed back in callouts */

-  const unsigned char *tables;    /* Pointer to character tables */

-} pcre_extra;

-

-/* The structure for passing out data via the pcre_callout_function. We use a

-structure so that new fields can be added on the end in future versions,

-without changing the API of the function, thereby allowing old clients to work

-without modification. */

-

-typedef struct pcre_callout_block {

-  int          version;           /* Identifies version of block */

-  /* ------------------------ Version 0 ------------------------------- */

-  int          callout_number;    /* Number compiled into pattern */

-  int         *offset_vector;     /* The offset vector */

-  const char  *subject;           /* The subject being matched */

-  int          subject_length;    /* The length of the subject */

-  int          start_match;       /* Offset to start of this match attempt */

-  int          current_position;  /* Where we currently are in the subject */

-  int          capture_top;       /* Max current capture */

-  int          capture_last;      /* Most recently closed capture */

-  void        *callout_data;      /* Data passed in with the call */

-  /* ------------------- Added for Version 1 -------------------------- */

-  int          pattern_position;  /* Offset to next item in the pattern */

-  int          next_item_length;  /* Length of next item in the pattern */

-  /* ------------------------------------------------------------------ */

-} pcre_callout_block;

-

-/* Indirection for store get and free functions. These can be set to

-alternative malloc/free functions if required. Special ones are used in the

-non-recursive case for "frames". There is also an optional callout function

-that is triggered by the (?) regex item. For Virtual Pascal, these definitions

-have to take another form. */

-

-#ifndef VPCOMPAT

-PCRE_DATA_SCOPE void *(*pcre_malloc)(size_t);

-PCRE_DATA_SCOPE void  (*pcre_free)(void *);

-PCRE_DATA_SCOPE void *(*pcre_stack_malloc)(size_t);

-PCRE_DATA_SCOPE void  (*pcre_stack_free)(void *);

-PCRE_DATA_SCOPE int   (*pcre_callout)(pcre_callout_block *);

-#else   /* VPCOMPAT */

-PCRE_DATA_SCOPE void *pcre_malloc(size_t);

-PCRE_DATA_SCOPE void  pcre_free(void *);

-PCRE_DATA_SCOPE void *pcre_stack_malloc(size_t);

-PCRE_DATA_SCOPE void  pcre_stack_free(void *);

-PCRE_DATA_SCOPE int   pcre_callout(pcre_callout_block *);

-#endif  /* VPCOMPAT */

-

-/* Exported PCRE functions */

-

-PCRE_DATA_SCOPE pcre *pcre_compile(const char *, int, const char **, int *,

-                  const unsigned char *);

-PCRE_DATA_SCOPE pcre *pcre_compile2(const char *, int, int *, const char **,

-                  int *, const unsigned char *);

-PCRE_DATA_SCOPE int  pcre_config(int, void *);

-PCRE_DATA_SCOPE int  pcre_copy_named_substring(const pcre *, const char *,

-                  int *, int, const char *, char *, int);

-PCRE_DATA_SCOPE int  pcre_copy_substring(const char *, int *, int, int, char *,

-                  int);

-PCRE_DATA_SCOPE int  pcre_dfa_exec(const pcre *, const pcre_extra *,

-                  const char *, int, int, int, int *, int , int *, int);

-PCRE_DATA_SCOPE int  pcre_exec(const pcre *, const pcre_extra *, const char *,

-                   int, int, int, int *, int);

-PCRE_DATA_SCOPE void pcre_free_substring(const char *);

-PCRE_DATA_SCOPE void pcre_free_substring_list(const char **);

-PCRE_DATA_SCOPE int  pcre_fullinfo(const pcre *, const pcre_extra *, int,

-                  void *);

-PCRE_DATA_SCOPE int  pcre_get_named_substring(const pcre *, const char *,

-                  int *, int, const char *, const char **);

-PCRE_DATA_SCOPE int  pcre_get_stringnumber(const pcre *, const char *);

-PCRE_DATA_SCOPE int  pcre_get_substring(const char *, int *, int, int,

-                  const char **);

-PCRE_DATA_SCOPE int  pcre_get_substring_list(const char *, int *, int,

-                  const char ***);

-PCRE_DATA_SCOPE int  pcre_info(const pcre *, int *, int *);

-PCRE_DATA_SCOPE const unsigned char *pcre_maketables(void);

-PCRE_DATA_SCOPE int  pcre_refcount(pcre *, int);

-PCRE_DATA_SCOPE pcre_extra *pcre_study(const pcre *, int, const char **);

-PCRE_DATA_SCOPE const char *pcre_version(void);

-

-#ifdef __cplusplus

-}  /* extern "C" */

-#endif

-

-#endif /* End of pcre.h */

-

-/* Include the (copy of) the public ucp header, changing the external name into

-a private one. This does no harm, even if we aren't compiling UCP support. */

-

-#define ucp_findchar _pcre_ucp_findchar

-/*************************************************

-*     libucp - Unicode Property Table handler    *

-*************************************************/

-

-

-#ifndef _UCP_H

-#define _UCP_H

-

-/* These are the character categories that are returned by ucp_findchar */

-

-enum {

-  ucp_C,     /* Other */

-  ucp_L,     /* Letter */

-  ucp_M,     /* Mark */

-  ucp_N,     /* Number */

-  ucp_P,     /* Punctuation */

-  ucp_S,     /* Symbol */

-  ucp_Z      /* Separator */

-};

-

-/* These are the detailed character types that are returned by ucp_findchar */

-

-enum {

-  ucp_Cc,    /* Control */

-  ucp_Cf,    /* Format */

-  ucp_Cn,    /* Unassigned */

-  ucp_Co,    /* Private use */

-  ucp_Cs,    /* Surrogate */

-  ucp_Ll,    /* Lower case letter */

-  ucp_Lm,    /* Modifier letter */

-  ucp_Lo,    /* Other letter */

-  ucp_Lt,    /* Title case letter */

-  ucp_Lu,    /* Upper case letter */

-  ucp_Mc,    /* Spacing mark */

-  ucp_Me,    /* Enclosing mark */

-  ucp_Mn,    /* Non-spacing mark */

-  ucp_Nd,    /* Decimal number */

-  ucp_Nl,    /* Letter number */

-  ucp_No,    /* Other number */

-  ucp_Pc,    /* Connector punctuation */

-  ucp_Pd,    /* Dash punctuation */

-  ucp_Pe,    /* Close punctuation */

-  ucp_Pf,    /* Final punctuation */

-  ucp_Pi,    /* Initial punctuation */

-  ucp_Po,    /* Other punctuation */

-  ucp_Ps,    /* Open punctuation */

-  ucp_Sc,    /* Currency symbol */

-  ucp_Sk,    /* Modifier symbol */

-  ucp_Sm,    /* Mathematical symbol */

-  ucp_So,    /* Other symbol */

-  ucp_Zl,    /* Line separator */

-  ucp_Zp,    /* Paragraph separator */

-  ucp_Zs     /* Space separator */

-};

-

-extern int ucp_findchar(const int, int *, int *);

-

-#endif

-

-/* End of ucp.h */

-

-/* When compiling for use with the Virtual Pascal compiler, these functions

-need to have their names changed. PCRE must be compiled with the -DVPCOMPAT

-option on the command line. */

-

-#ifdef VPCOMPAT

-#define strncmp(s1,s2,m) _strncmp(s1,s2,m)

-#define memcpy(d,s,n)    _memcpy(d,s,n)

-#define memmove(d,s,n)   _memmove(d,s,n)

-#define memset(s,c,n)    _memset(s,c,n)

-#else  /* VPCOMPAT */

-

-/* To cope with SunOS4 and other systems that lack memmove() but have bcopy(),

-define a macro for memmove() if HAVE_MEMMOVE is false, provided that HAVE_BCOPY

-is set. Otherwise, include an emulating function for those systems that have

-neither (there some non-Unix environments where this is the case). This assumes

-that all calls to memmove are moving strings upwards in store, which is the

-case in PCRE. */

-

-#if ! HAVE_MEMMOVE

-#undef  memmove        /* some systems may have a macro */

-#if HAVE_BCOPY

-#define memmove(a, b, c) bcopy(b, a, c)

-#else  /* HAVE_BCOPY */

-void *

-pcre_memmove(unsigned char *dest, const unsigned char *src, size_t n)

-{

-int i;

-dest += n;

-src += n;

-for (i = 0; i < n; ++i) *(--dest) =  *(--src);

-}

-#define memmove(a, b, c) pcre_memmove(a, b, c)

-#endif   /* not HAVE_BCOPY */

-#endif   /* not HAVE_MEMMOVE */

-#endif   /* not VPCOMPAT */

-

-

-/* PCRE keeps offsets in its compiled code as 2-byte quantities (always stored

-in big-endian order) by default. These are used, for example, to link from the

-start of a subpattern to its alternatives and its end. The use of 2 bytes per

-offset limits the size of the compiled regex to around 64K, which is big enough

-for almost everybody. However, I received a request for an even bigger limit.

-For this reason, and also to make the code easier to maintain, the storing and

-loading of offsets from the byte string is now handled by the macros that are

-defined here.

-

-The macros are controlled by the value of LINK_SIZE. This defaults to 2 in

-the config.h file, but can be overridden by using -D on the command line. This

-is automated on Unix systems via the "configure" command. */

-

-#if LINK_SIZE == 2

-

-#define PUT(a,n,d)   \

-  (a[n] = (d) >> 8), \

-  (a[(n)+1] = (d) & 255)

-

-#define GET(a,n) \

-  (((a)[n] << 8) | (a)[(n)+1])

-

-#define MAX_PATTERN_SIZE (1 << 16)

-

-

-#elif LINK_SIZE == 3

-

-#define PUT(a,n,d)       \

-  (a[n] = (d) >> 16),    \

-  (a[(n)+1] = (d) >> 8), \

-  (a[(n)+2] = (d) & 255)

-

-#define GET(a,n) \

-  (((a)[n] << 16) | ((a)[(n)+1] << 8) | (a)[(n)+2])

-

-#define MAX_PATTERN_SIZE (1 << 24)

-

-

-#elif LINK_SIZE == 4

-

-#define PUT(a,n,d)        \

-  (a[n] = (d) >> 24),     \

-  (a[(n)+1] = (d) >> 16), \

-  (a[(n)+2] = (d) >> 8),  \

-  (a[(n)+3] = (d) & 255)

-

-#define GET(a,n) \

-  (((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3])

-

-#define MAX_PATTERN_SIZE (1 << 30)   /* Keep it positive */

-

-

-#else

-#error LINK_SIZE must be either 2, 3, or 4

-#endif

-

-

-/* Convenience macro defined in terms of the others */

-

-#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE

-

-

-/* PCRE uses some other 2-byte quantities that do not change when the size of

-offsets changes. There are used for repeat counts and for other things such as

-capturing parenthesis numbers in back references. */

-

-#define PUT2(a,n,d)   \

-  a[n] = (d) >> 8; \

-  a[(n)+1] = (d) & 255

-

-#define GET2(a,n) \

-  (((a)[n] << 8) | (a)[(n)+1])

-

-#define PUT2INC(a,n,d)  PUT2(a,n,d), a += 2

-

-

-/* When UTF-8 encoding is being used, a character is no longer just a single

-byte. The macros for character handling generate simple sequences when used in

-byte-mode, and more complicated ones for UTF-8 characters. */

-

-#ifndef SUPPORT_UTF8

-#define GETCHAR(c, eptr) c = *eptr;

-#define GETCHARTEST(c, eptr) c = *eptr;

-#define GETCHARINC(c, eptr) c = *eptr++;

-#define GETCHARINCTEST(c, eptr) c = *eptr++;

-#define GETCHARLEN(c, eptr, len) c = *eptr;

-#define BACKCHAR(eptr)

-

-#else   /* SUPPORT_UTF8 */

-

-/* Get the next UTF-8 character, not advancing the pointer. This is called when

-we know we are in UTF-8 mode. */

-

-#define GETCHAR(c, eptr) \

-  c = *eptr; \

-  if ((c & 0xc0) == 0xc0) \

-    { \

-    int gcii; \

-    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \

-    int gcss = 6*gcaa; \

-    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \

-    for (gcii = 1; gcii <= gcaa; gcii++) \

-      { \

-      gcss -= 6; \

-      c |= (eptr[gcii] & 0x3f) << gcss; \

-      } \

-    }

-

-/* Get the next UTF-8 character, testing for UTF-8 mode, and not advancing the

-pointer. */

-

-#define GETCHARTEST(c, eptr) \

-  c = *eptr; \

-  if (utf8 && (c & 0xc0) == 0xc0) \

-    { \

-    int gcii; \

-    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \

-    int gcss = 6*gcaa; \

-    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \

-    for (gcii = 1; gcii <= gcaa; gcii++) \

-      { \

-      gcss -= 6; \

-      c |= (eptr[gcii] & 0x3f) << gcss; \

-      } \

-    }

-

-/* Get the next UTF-8 character, advancing the pointer. This is called when we

-know we are in UTF-8 mode. */

-

-#define GETCHARINC(c, eptr) \

-  c = *eptr++; \

-  if ((c & 0xc0) == 0xc0) \

-    { \

-    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \

-    int gcss = 6*gcaa; \

-    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \

-    while (gcaa-- > 0) \

-      { \

-      gcss -= 6; \

-      c |= (*eptr++ & 0x3f) << gcss; \

-      } \

-    }

-

-/* Get the next character, testing for UTF-8 mode, and advancing the pointer */

-

-#define GETCHARINCTEST(c, eptr) \

-  c = *eptr++; \

-  if (utf8 && (c & 0xc0) == 0xc0) \

-    { \

-    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \

-    int gcss = 6*gcaa; \

-    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \

-    while (gcaa-- > 0) \

-      { \

-      gcss -= 6; \

-      c |= (*eptr++ & 0x3f) << gcss; \

-      } \

-    }

-

-/* Get the next UTF-8 character, not advancing the pointer, incrementing length

-if there are extra bytes. This is called when we know we are in UTF-8 mode. */

-

-#define GETCHARLEN(c, eptr, len) \

-  c = *eptr; \

-  if ((c & 0xc0) == 0xc0) \

-    { \

-    int gcii; \

-    int gcaa = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */ \

-    int gcss = 6*gcaa; \

-    c = (c & _pcre_utf8_table3[gcaa]) << gcss; \

-    for (gcii = 1; gcii <= gcaa; gcii++) \

-      { \

-      gcss -= 6; \

-      c |= (eptr[gcii] & 0x3f) << gcss; \

-      } \

-    len += gcaa; \

-    }

-

-/* If the pointer is not at the start of a character, move it back until

-it is. Called only in UTF-8 mode. */

-

-#define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr--;

-

-#endif

-

-

-/* In case there is no definition of offsetof() provided - though any proper

-Standard C system should have one. */

-

-#ifndef offsetof

-#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))

-#endif

-

-

-/* These are the public options that can change during matching. */

-

-#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)

-

-/* Private options flags start at the most significant end of the four bytes,

-but skip the top bit so we can use ints for convenience without getting tangled

-with negative values. The public options defined in pcre.h start at the least

-significant end. Make sure they don't overlap! */

-

-#define PCRE_FIRSTSET      0x40000000  /* first_byte is set */

-#define PCRE_REQCHSET      0x20000000  /* req_byte is set */

-#define PCRE_STARTLINE     0x10000000  /* start after \n for multiline */

-#define PCRE_ICHANGED      0x08000000  /* i option changes within regex */

-#define PCRE_NOPARTIAL     0x04000000  /* can't use partial with this regex */

-

-/* Options for the "extra" block produced by pcre_study(). */

-

-#define PCRE_STUDY_MAPPED   0x01     /* a map of starting chars exists */

-

-/* Masks for identifying the public options that are permitted at compile

-time, run time, or study time, respectively. */

-

-#define PUBLIC_OPTIONS \

-  (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \

-   PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \

-   PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT|PCRE_FIRSTLINE)

-

-#define PUBLIC_EXEC_OPTIONS \

-  (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \

-   PCRE_PARTIAL)

-

-#define PUBLIC_DFA_EXEC_OPTIONS \

-  (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \

-   PCRE_PARTIAL|PCRE_DFA_SHORTEST|PCRE_DFA_RESTART)

-

-#define PUBLIC_STUDY_OPTIONS 0   /* None defined */

-

-/* Magic number to provide a small check against being handed junk. Also used

-to detect whether a pattern was compiled on a host of different endianness. */

-

-#define MAGIC_NUMBER  0x50435245UL   /* 'PCRE' */

-

-/* Negative values for the firstchar and reqchar variables */

-

-#define REQ_UNSET (-2)

-#define REQ_NONE  (-1)

-

-/* The maximum remaining length of subject we are prepared to search for a

-req_byte match. */

-

-#define REQ_BYTE_MAX 1000

-

-/* Flags added to firstbyte or reqbyte; a "non-literal" item is either a

-variable-length repeat, or a anything other than literal characters. */

-

-#define REQ_CASELESS 0x0100    /* indicates caselessness */

-#define REQ_VARY     0x0200    /* reqbyte followed non-literal item */

-

-/* Miscellaneous definitions */

-

-typedef int BOOL;

-

-#define FALSE   0

-#define TRUE    1

-

-/* Escape items that are just an encoding of a particular data value. Note that

-ESC_n is defined as yet another macro, which is set in config.h to either \n

-(the default) or \r (which some people want). */

-

-#ifndef ESC_e

-#define ESC_e 27

-#endif

-

-#ifndef ESC_f

-#define ESC_f '\f'

-#endif

-

-#ifndef ESC_n

-#define ESC_n NEWLINE

-#endif

-

-#ifndef ESC_r

-#define ESC_r '\r'

-#endif

-

-/* We can't officially use ESC_t because it is a POSIX reserved identifier

-(presumably because of all the others like size_t). */

-

-#ifndef ESC_tee

-#define ESC_tee '\t'

-#endif

-

-/* These are escaped items that aren't just an encoding of a particular data

-value such as \n. They must have non-zero values, as check_escape() returns

-their negation. Also, they must appear in the same order as in the opcode

-definitions below, up to ESC_z. There's a dummy for OP_ANY because it

-corresponds to "." rather than an escape sequence. The final one must be

-ESC_REF as subsequent values are used for \1, \2, \3, etc. There is are two

-tests in the code for an escape greater than ESC_b and less than ESC_Z to

-detect the types that may be repeated. These are the types that consume

-characters. If any new escapes are put in between that don't consume a

-character, that code will have to change. */

-

-enum { ESC_A = 1, ESC_G, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W,

-       ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_X, ESC_Z, ESC_z, ESC_E,

-       ESC_Q, ESC_REF };

-

-/* Flag bits and data types for the extended class (OP_XCLASS) for classes that

-contain UTF-8 characters with values greater than 255. */

-

-#define XCL_NOT    0x01    /* Flag: this is a negative class */

-#define XCL_MAP    0x02    /* Flag: a 32-byte map is present */

-

-#define XCL_END       0    /* Marks end of individual items */

-#define XCL_SINGLE    1    /* Single item (one multibyte char) follows */

-#define XCL_RANGE     2    /* A range (two multibyte chars) follows */

-#define XCL_PROP      3    /* Unicode property (one property code) follows */

-#define XCL_NOTPROP   4    /* Unicode inverted property (ditto) */

-

-

-/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets

-that extract substrings. Starting from 1 (i.e. after OP_END), the values up to

-OP_EOD must correspond in order to the list of escapes immediately above.

-Note that whenever this list is updated, the two macro definitions that follow

-must also be updated to match. */

-

-enum {

-  OP_END,            /* 0 End of pattern */

-

-  /* Values corresponding to backslashed metacharacters */

-

-  OP_SOD,            /* 1 Start of data: \A */

-  OP_SOM,            /* 2 Start of match (subject + offset): \G */

-  OP_NOT_WORD_BOUNDARY,  /*  3 \B */

-  OP_WORD_BOUNDARY,      /*  4 \b */

-  OP_NOT_DIGIT,          /*  5 \D */

-  OP_DIGIT,              /*  6 \d */

-  OP_NOT_WHITESPACE,     /*  7 \S */

-  OP_WHITESPACE,         /*  8 \s */

-  OP_NOT_WORDCHAR,       /*  9 \W */

-  OP_WORDCHAR,           /* 10 \w */

-  OP_ANY,            /* 11 Match any character */

-  OP_ANYBYTE,        /* 12 Match any byte (\C); different to OP_ANY for UTF-8 */

-  OP_NOTPROP,        /* 13 \P (not Unicode property) */

-  OP_PROP,           /* 14 \p (Unicode property) */

-  OP_EXTUNI,         /* 15 \X (extended Unicode sequence */

-  OP_EODN,           /* 16 End of data or \n at end of data: \Z. */

-  OP_EOD,            /* 17 End of data: \z */

-

-  OP_OPT,            /* 18 Set runtime options */

-  OP_CIRC,           /* 19 Start of line - varies with multiline switch */

-  OP_DOLL,           /* 20 End of line - varies with multiline switch */

-  OP_CHAR,           /* 21 Match one character, casefully */

-  OP_CHARNC,         /* 22 Match one character, caselessly */

-  OP_NOT,            /* 23 Match anything but the following char */

-

-  OP_STAR,           /* 24 The maximizing and minimizing versions of */

-  OP_MINSTAR,        /* 25 all these opcodes must come in pairs, with */

-  OP_PLUS,           /* 26 the minimizing one second. */

-  OP_MINPLUS,        /* 27 This first set applies to single characters */

-  OP_QUERY,          /* 28 */

-  OP_MINQUERY,       /* 29 */

-  OP_UPTO,           /* 30 From 0 to n matches */

-  OP_MINUPTO,        /* 31 */

-  OP_EXACT,          /* 32 Exactly n matches */

-

-  OP_NOTSTAR,        /* 33 The maximizing and minimizing versions of */

-  OP_NOTMINSTAR,     /* 34 all these opcodes must come in pairs, with */

-  OP_NOTPLUS,        /* 35 the minimizing one second. */

-  OP_NOTMINPLUS,     /* 36 This set applies to "not" single characters */

-  OP_NOTQUERY,       /* 37 */

-  OP_NOTMINQUERY,    /* 38 */

-  OP_NOTUPTO,        /* 39 From 0 to n matches */

-  OP_NOTMINUPTO,     /* 40 */

-  OP_NOTEXACT,       /* 41 Exactly n matches */

-

-  OP_TYPESTAR,       /* 42 The maximizing and minimizing versions of */

-  OP_TYPEMINSTAR,    /* 43 all these opcodes must come in pairs, with */

-  OP_TYPEPLUS,       /* 44 the minimizing one second. These codes must */

-  OP_TYPEMINPLUS,    /* 45 be in exactly the same order as those above. */

-  OP_TYPEQUERY,      /* 46 This set applies to character types such as \d */

-  OP_TYPEMINQUERY,   /* 47 */

-  OP_TYPEUPTO,       /* 48 From 0 to n matches */

-  OP_TYPEMINUPTO,    /* 49 */

-  OP_TYPEEXACT,      /* 50 Exactly n matches */

-

-  OP_CRSTAR,         /* 51 The maximizing and minimizing versions of */

-  OP_CRMINSTAR,      /* 52 all these opcodes must come in pairs, with */

-  OP_CRPLUS,         /* 53 the minimizing one second. These codes must */

-  OP_CRMINPLUS,      /* 54 be in exactly the same order as those above. */

-  OP_CRQUERY,        /* 55 These are for character classes and back refs */

-  OP_CRMINQUERY,     /* 56 */

-  OP_CRRANGE,        /* 57 These are different to the three sets above. */

-  OP_CRMINRANGE,     /* 58 */

-

-  OP_CLASS,          /* 59 Match a character class, chars < 256 only */

-  OP_NCLASS,         /* 60 Same, but the bitmap was created from a negative

-                           class - the difference is relevant only when a UTF-8

-                           character > 255 is encountered. */

-

-  OP_XCLASS,         /* 61 Extended class for handling UTF-8 chars within the

-                           class. This does both positive and negative. */

-

-  OP_REF,            /* 62 Match a back reference */

-  OP_RECURSE,        /* 63 Match a numbered subpattern (possibly recursive) */

-  OP_CALLOUT,        /* 64 Call out to external function if provided */

-

-  OP_ALT,            /* 65 Start of alternation */

-  OP_KET,            /* 66 End of group that doesn't have an unbounded repeat */

-  OP_KETRMAX,        /* 67 These two must remain together and in this */

-  OP_KETRMIN,        /* 68 order. They are for groups the repeat for ever. */

-

-  /* The assertions must come before ONCE and COND */

-

-  OP_ASSERT,         /* 69 Positive lookahead */

-  OP_ASSERT_NOT,     /* 70 Negative lookahead */

-  OP_ASSERTBACK,     /* 71 Positive lookbehind */

-  OP_ASSERTBACK_NOT, /* 72 Negative lookbehind */

-  OP_REVERSE,        /* 73 Move pointer back - used in lookbehind assertions */

-

-  /* ONCE and COND must come after the assertions, with ONCE first, as there's

-  a test for >= ONCE for a subpattern that isn't an assertion. */

-

-  OP_ONCE,           /* 74 Once matched, don't back up into the subpattern */

-  OP_COND,           /* 75 Conditional group */

-  OP_CREF,           /* 76 Used to hold an extraction string number (cond ref) */

-

-  OP_BRAZERO,        /* 77 These two must remain together and in this */

-  OP_BRAMINZERO,     /* 78 order. */

-

-  OP_BRANUMBER,      /* 79 Used for extracting brackets whose number is greater

-                           than can fit into an opcode. */

-

-  OP_BRA             /* 80 This and greater values are used for brackets that

-                           extract substrings up to EXTRACT_BASIC_MAX. After

-                           that, use is made of OP_BRANUMBER. */

-};

-

-/* WARNING WARNING WARNING: There is an implicit assumption in pcre.c and

-study.c that all opcodes are less than 128 in value. This makes handling UTF-8

-character sequences easier. */

-

-/* The highest extraction number before we have to start using additional

-bytes. (Originally PCRE didn't have support for extraction counts highter than

-this number.) The value is limited by the number of opcodes left after OP_BRA,

-i.e. 255 - OP_BRA. We actually set it a bit lower to leave room for additional

-opcodes. */

-

-#define EXTRACT_BASIC_MAX  100

-

-

-/* This macro defines textual names for all the opcodes. These are used only

-for debugging. The macro is referenced only in pcre_printint.c. */

-

-#define OP_NAME_LIST \

-  "End", "\\A", "\\G", "\\B", "\\b", "\\D", "\\d",                \

-  "\\S", "\\s", "\\W", "\\w", "Any", "Anybyte",                   \

-  "notprop", "prop", "extuni",                                    \

-  "\\Z", "\\z",                                                   \

-  "Opt", "^", "$", "char", "charnc", "not",                       \

-  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \

-  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \

-  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \

-  "*", "*?", "+", "+?", "?", "??", "{", "{",                      \

-  "class", "nclass", "xclass", "Ref", "Recurse", "Callout",       \

-  "Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not",     \

-  "AssertB", "AssertB not", "Reverse", "Once", "Cond", "Cond ref",\

-  "Brazero", "Braminzero", "Branumber", "Bra"

-

-

-/* This macro defines the length of fixed length operations in the compiled

-regex. The lengths are used when searching for specific things, and also in the

-debugging printing of a compiled regex. We use a macro so that it can be

-defined close to the definitions of the opcodes themselves.

-

-As things have been extended, some of these are no longer fixed lenths, but are

-minima instead. For example, the length of a single-character repeat may vary

-in UTF-8 mode. The code that uses this table must know about such things. */

-

-#define OP_LENGTHS \

-  1,                             /* End                                    */ \

-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  /* \A, \G, \B, \B, \D, \d, \S, \s, \W, \w */ \

-  1, 1,                          /* Any, Anybyte                           */ \

-  2, 2, 1,                       /* NOTPROP, PROP, EXTUNI                  */ \

-  1, 1, 2, 1, 1,                 /* \Z, \z, Opt, ^, $                      */ \

-  2,                             /* Char  - the minimum length             */ \

-  2,                             /* Charnc  - the minimum length           */ \

-  2,                             /* not                                    */ \

-  /* Positive single-char repeats                            ** These are  */ \

-  2, 2, 2, 2, 2, 2,              /* *, *?, +, +?, ?, ??      ** minima in  */ \

-  4, 4, 4,                       /* upto, minupto, exact     ** UTF-8 mode */ \

-  /* Negative single-char repeats - only for chars < 256                   */ \

-  2, 2, 2, 2, 2, 2,              /* NOT *, *?, +, +?, ?, ??                */ \

-  4, 4, 4,                       /* NOT upto, minupto, exact               */ \

-  /* Positive type repeats                                                 */ \

-  2, 2, 2, 2, 2, 2,              /* Type *, *?, +, +?, ?, ??               */ \

-  4, 4, 4,                       /* Type upto, minupto, exact              */ \

-  /* Character class & ref repeats                                         */ \

-  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */ \

-  5, 5,                          /* CRRANGE, CRMINRANGE                    */ \

- 33,                             /* CLASS                                  */ \

- 33,                             /* NCLASS                                 */ \

-  0,                             /* XCLASS - variable length               */ \

-  3,                             /* REF                                    */ \

-  1+LINK_SIZE,                   /* RECURSE                                */ \

-  2+2*LINK_SIZE,                 /* CALLOUT                                */ \

-  1+LINK_SIZE,                   /* Alt                                    */ \

-  1+LINK_SIZE,                   /* Ket                                    */ \

-  1+LINK_SIZE,                   /* KetRmax                                */ \

-  1+LINK_SIZE,                   /* KetRmin                                */ \

-  1+LINK_SIZE,                   /* Assert                                 */ \

-  1+LINK_SIZE,                   /* Assert not                             */ \

-  1+LINK_SIZE,                   /* Assert behind                          */ \

-  1+LINK_SIZE,                   /* Assert behind not                      */ \

-  1+LINK_SIZE,                   /* Reverse                                */ \

-  1+LINK_SIZE,                   /* Once                                   */ \

-  1+LINK_SIZE,                   /* COND                                   */ \

-  3,                             /* CREF                                   */ \

-  1, 1,                          /* BRAZERO, BRAMINZERO                    */ \

-  3,                             /* BRANUMBER                              */ \

-  1+LINK_SIZE                    /* BRA                                    */ \

-

-

-/* A magic value for OP_CREF to indicate the "in recursion" condition. */

-

-#define CREF_RECURSE  0xffff

-

-/* Error code numbers. They are given names so that they can more easily be

-tracked. */

-

-enum { ERR0,  ERR1,  ERR2,  ERR3,  ERR4,  ERR5,  ERR6,  ERR7,  ERR8,  ERR9,

-       ERR10, ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19,

-       ERR20, ERR21, ERR22, ERR23, ERR24, ERR25, ERR26, ERR27, ERR28, ERR29,

-       ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,

-       ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47 };

-

-/* The real format of the start of the pcre block; the index of names and the

-code vector run on as long as necessary after the end. We store an explicit

-offset to the name table so that if a regex is compiled on one host, saved, and

-then run on another where the size of pointers is different, all might still

-be well. For the case of compiled-on-4 and run-on-8, we include an extra

-pointer that is always NULL. For future-proofing, a few dummy fields were

-originally included - even though you can never get this planning right - but

-there is only one left now.

-

-NOTE NOTE NOTE:

-Because people can now save and re-use compiled patterns, any additions to this

-structure should be made at the end, and something earlier (e.g. a new

-flag in the options or one of the dummy fields) should indicate that the new

-fields are present. Currently PCRE always sets the dummy fields to zero.

-NOTE NOTE NOTE:

-*/

-

-typedef struct real_pcre {

-  pcre_uint32 magic_number;

-  pcre_uint32 size;               /* Total that was malloced */

-  pcre_uint32 options;

-  pcre_uint32 dummy1;             /* For future use, maybe */

-

-  pcre_uint16 top_bracket;

-  pcre_uint16 top_backref;

-  pcre_uint16 first_byte;

-  pcre_uint16 req_byte;

-  pcre_uint16 name_table_offset;  /* Offset to name table that follows */

-  pcre_uint16 name_entry_size;    /* Size of any name items */

-  pcre_uint16 name_count;         /* Number of name items */

-  pcre_uint16 ref_count;          /* Reference count */

-

-  const unsigned char *tables;    /* Pointer to tables or NULL for std */

-  const unsigned char *nullpad;   /* NULL padding */

-} real_pcre;

-

-/* The format of the block used to store data from pcre_study(). The same

-remark (see NOTE above) about extending this structure applies. */

-

-typedef struct pcre_study_data {

-  pcre_uint32 size;               /* Total that was malloced */

-  pcre_uint32 options;

-  uschar start_bits[32];

-} pcre_study_data;

-

-/* Structure for passing "static" information around between the functions

-doing the compiling, so that they are thread-safe. */

-

-typedef struct compile_data {

-  const uschar *lcc;            /* Points to lower casing table */

-  const uschar *fcc;            /* Points to case-flipping table */

-  const uschar *cbits;          /* Points to character type table */

-  const uschar *ctypes;         /* Points to table of type maps */

-  const uschar *start_code;     /* The start of the compiled code */

-  const uschar *start_pattern;  /* The start of the pattern */

-  uschar *name_table;           /* The name/number table */

-  int  names_found;             /* Number of entries so far */

-  int  name_entry_size;         /* Size of each entry */

-  int  top_backref;             /* Maximum back reference */

-  unsigned int backref_map;     /* Bitmap of low back refs */

-  int  req_varyopt;             /* "After variable item" flag for reqbyte */

-  BOOL nopartial;               /* Set TRUE if partial won't work */

-} compile_data;

-

-/* Structure for maintaining a chain of pointers to the currently incomplete

-branches, for testing for left recursion. */

-

-typedef struct branch_chain {

-  struct branch_chain *outer;

-  uschar *current;

-} branch_chain;

-

-/* Structure for items in a linked list that represents an explicit recursive

-call within the pattern. */

-

-typedef struct recursion_info {

-  struct recursion_info *prevrec; /* Previous recursion record (or NULL) */

-  int group_num;                /* Number of group that was called */

-  const uschar *after_call;     /* "Return value": points after the call in the expr */

-  const uschar *save_start;     /* Old value of md->start_match */

-  int *offset_save;             /* Pointer to start of saved offsets */

-  int saved_max;                /* Number of saved offsets */

-} recursion_info;

-

-/* When compiling in a mode that doesn't use recursive calls to match(),

-a structure is used to remember local variables on the heap. It is defined in

-pcre.c, close to the match() function, so that it is easy to keep it in step

-with any changes of local variable. However, the pointer to the current frame

-must be saved in some "static" place over a longjmp(). We declare the

-structure here so that we can put a pointer in the match_data structure.

-NOTE: This isn't used for a "normal" compilation of pcre. */

-

-struct heapframe;

-

-/* Structure for passing "static" information around between the functions

-doing traditional NFA matching, so that they are thread-safe. */

-

-typedef struct match_data {

-  unsigned long int match_call_count; /* As it says */

-  unsigned long int match_limit;/* As it says */

-  int   *offset_vector;         /* Offset vector */

-  int    offset_end;            /* One past the end */

-  int    offset_max;            /* The maximum usable for return data */

-  const uschar *lcc;            /* Points to lower casing table */

-  const uschar *ctypes;         /* Points to table of type maps */

-  BOOL   offset_overflow;       /* Set if too many extractions */

-  BOOL   notbol;                /* NOTBOL flag */

-  BOOL   noteol;                /* NOTEOL flag */

-  BOOL   utf8;                  /* UTF8 flag */

-  BOOL   endonly;               /* Dollar not before final \n */

-  BOOL   notempty;              /* Empty string match not wanted */

-  BOOL   partial;               /* PARTIAL flag */

-  BOOL   hitend;                /* Hit the end of the subject at some point */

-  const uschar *start_code;     /* For use when recursing */

-  const uschar *start_subject;  /* Start of the subject string */

-  const uschar *end_subject;    /* End of the subject string */

-  const uschar *start_match;    /* Start of this match attempt */

-  const uschar *end_match_ptr;  /* Subject position at end match */

-  int    end_offset_top;        /* Highwater mark at end of match */

-  int    capture_last;          /* Most recent capture number */

-  int    start_offset;          /* The start offset value */

-  recursion_info *recursive;    /* Linked list of recursion data */

-  void  *callout_data;          /* To pass back to callouts */

-  struct heapframe *thisframe;  /* Used only when compiling for no recursion */

-} match_data;

-

-/* A similar structure is used for the same purpose by the DFA matching

-functions. */

-

-typedef struct dfa_match_data {

-  const uschar *start_code;     /* Start of the compiled pattern */

-  const uschar *start_subject;  /* Start of the subject string */

-  const uschar *end_subject;    /* End of subject string */

-  const uschar *tables;         /* Character tables */

-  int   moptions;               /* Match options */

-  int   poptions;               /* Pattern options */

-  void  *callout_data;          /* To pass back to callouts */

-} dfa_match_data;

-

-/* Bit definitions for entries in the pcre_ctypes table. */

-

-#define ctype_space   0x01

-#define ctype_letter  0x02

-#define ctype_digit   0x04

-#define ctype_xdigit  0x08

-#define ctype_word    0x10   /* alphameric or '_' */

-#define ctype_meta    0x80   /* regexp meta char or zero (end pattern) */

-

-/* Offsets for the bitmap tables in pcre_cbits. Each table contains a set

-of bits for a class map. Some classes are built by combining these tables. */

-

-#define cbit_space     0      /* [:space:] or \s */

-#define cbit_xdigit   32      /* [:xdigit:] */

-#define cbit_digit    64      /* [:digit:] or \d */

-#define cbit_upper    96      /* [:upper:] */

-#define cbit_lower   128      /* [:lower:] */

-#define cbit_word    160      /* [:word:] or \w */

-#define cbit_graph   192      /* [:graph:] */

-#define cbit_print   224      /* [:print:] */

-#define cbit_punct   256      /* [:punct:] */

-#define cbit_cntrl   288      /* [:cntrl:] */

-#define cbit_length  320      /* Length of the cbits table */

-

-/* Offsets of the various tables from the base tables pointer, and

-total length. */

-

-#define lcc_offset      0

-#define fcc_offset    256

-#define cbits_offset  512

-#define ctypes_offset (cbits_offset + cbit_length)

-#define tables_length (ctypes_offset + 256)

-

-/* Layout of the UCP type table that translates property names into codes for

-ucp_findchar(). */

-

-typedef struct {

-  const char *name;

-  int value;

-} ucp_type_table;

-

-

-/* Internal shared data tables. These are tables that are used by more than one

-of the exported public functions. They have to be "external" in the C sense,

-but are not part of the PCRE public API. The data for these tables is in the

-pcre_tables.c module. */

-

-extern const int    _pcre_utf8_table1[];

-extern const int    _pcre_utf8_table2[];

-extern const int    _pcre_utf8_table3[];

-extern const uschar _pcre_utf8_table4[];

-

-extern const int    _pcre_utf8_table1_size;

-

-extern const ucp_type_table _pcre_utt[];

-extern const int _pcre_utt_size;

-

-extern const uschar _pcre_default_tables[];

-

-extern const uschar _pcre_OP_lengths[];

-

-

-/* Internal shared functions. These are functions that are used by more than

-one of the exported public functions. They have to be "external" in the C

-sense, but are not part of the PCRE public API. */

-

-extern int         _pcre_ord2utf8(int, uschar *);

-extern void        _pcre_printint(pcre *, FILE *);

-extern real_pcre * _pcre_try_flipped(const real_pcre *, real_pcre *,

-                     const pcre_study_data *, pcre_study_data *);

-extern int         _pcre_ucp_findchar(const int, int *, int *);

-extern int         _pcre_valid_utf8(const uschar *, int);

-extern BOOL        _pcre_xclass(int, const uschar *);

-

-/* End of pcre_internal.h */

-

-

-/*************************************************

-*      Code parameters and static tables         *

-*************************************************/

-

-/* Maximum number of items on the nested bracket stacks at compile time. This

-applies to the nesting of all kinds of parentheses. It does not limit

-un-nested, non-capturing parentheses. This number can be made bigger if

-necessary - it is used to dimension one int and one unsigned char vector at

-compile time. */

-

-#define BRASTACK_SIZE 200

-

-

-/* Table for handling escaped characters in the range '0'-'z'. Positive returns

-are simple data values; negative values are for special things like \d and so

-on. Zero means further processing is needed (for things like \x), or the escape

-is invalid. */

-

-#if !EBCDIC   /* This is the "normal" table for ASCII systems */

-static const short int escapes[] = {

-     0,      0,      0,      0,      0,      0,      0,      0,   /* 0 - 7 */

-     0,      0,    ':',    ';',    '<',    '=',    '>',    '?',   /* 8 - ? */

-   '@', -ESC_A, -ESC_B, -ESC_C, -ESC_D, -ESC_E,      0, -ESC_G,   /* @ - G */

-     0,      0,      0,      0,      0,      0,      0,      0,   /* H - O */

--ESC_P, -ESC_Q,      0, -ESC_S,      0,      0,      0, -ESC_W,   /* P - W */

--ESC_X,      0, -ESC_Z,    '[',   '\\',    ']',    '^',    '_',   /* X - _ */

-   '`',      7, -ESC_b,      0, -ESC_d,  ESC_e,  ESC_f,      0,   /* ` - g */

-     0,      0,      0,      0,      0,      0,  ESC_n,      0,   /* h - o */

--ESC_p,      0,  ESC_r, -ESC_s,  ESC_tee,    0,      0, -ESC_w,   /* p - w */

-     0,      0, -ESC_z                                            /* x - z */

-};

-

-#else         /* This is the "abnormal" table for EBCDIC systems */

-static const short int escapes[] = {

-/*  48 */     0,     0,      0,     '.',    '<',   '(',    '+',    '|',

-/*  50 */   '&',     0,      0,       0,      0,     0,      0,      0,

-/*  58 */     0,     0,    '!',     '$',    '*',   ')',    ';',    '~',

-/*  60 */   '-',   '/',      0,       0,      0,     0,      0,      0,

-/*  68 */     0,     0,    '|',     ',',    '%',   '_',    '>',    '?',

-/*  70 */     0,     0,      0,       0,      0,     0,      0,      0,

-/*  78 */     0,   '`',    ':',     '#',    '@',  '\'',    '=',    '"',

-/*  80 */     0,     7, -ESC_b,       0, -ESC_d, ESC_e,  ESC_f,      0,

-/*  88 */     0,     0,      0,     '{',      0,     0,      0,      0,

-/*  90 */     0,     0,      0,     'l',      0, ESC_n,      0, -ESC_p,

-/*  98 */     0, ESC_r,      0,     '}',      0,     0,      0,      0,

-/*  A0 */     0,   '~', -ESC_s, ESC_tee,      0,     0, -ESC_w,      0,

-/*  A8 */     0,-ESC_z,      0,       0,      0,   '[',      0,      0,

-/*  B0 */     0,     0,      0,       0,      0,     0,      0,      0,

-/*  B8 */     0,     0,      0,       0,      0,   ']',    '=',    '-',

-/*  C0 */   '{',-ESC_A, -ESC_B,  -ESC_C, -ESC_D,-ESC_E,      0, -ESC_G,

-/*  C8 */     0,     0,      0,       0,      0,     0,      0,      0,

-/*  D0 */   '}',     0,      0,       0,      0,     0,      0, -ESC_P,

-/*  D8 */-ESC_Q,     0,      0,       0,      0,     0,      0,      0,

-/*  E0 */  '\\',     0, -ESC_S,       0,      0,     0, -ESC_W, -ESC_X,

-/*  E8 */     0,-ESC_Z,      0,       0,      0,     0,      0,      0,

-/*  F0 */     0,     0,      0,       0,      0,     0,      0,      0,

-/*  F8 */     0,     0,      0,       0,      0,     0,      0,      0

-};

-#endif

-

-

-/* Tables of names of POSIX character classes and their lengths. The list is

-terminated by a zero length entry. The first three must be alpha, upper, lower,

-as this is assumed for handling case independence. */

-

-static const char *const posix_names[] = {

-  "alpha", "lower", "upper",

-  "alnum", "ascii", "blank", "cntrl", "digit", "graph",

-  "print", "punct", "space", "word",  "xdigit" };

-

-static const uschar posix_name_lengths[] = {

-  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0 };

-

-/* Table of class bit maps for each POSIX class; up to three may be combined

-to form the class. The table for [:blank:] is dynamically modified to remove

-the vertical space characters. */

-

-static const int posix_class_maps[] = {

-  cbit_lower, cbit_upper, -1,             /* alpha */

-  cbit_lower, -1,         -1,             /* lower */

-  cbit_upper, -1,         -1,             /* upper */

-  cbit_digit, cbit_lower, cbit_upper,     /* alnum */

-  cbit_print, cbit_cntrl, -1,             /* ascii */

-  cbit_space, -1,         -1,             /* blank - a GNU extension */

-  cbit_cntrl, -1,         -1,             /* cntrl */

-  cbit_digit, -1,         -1,             /* digit */

-  cbit_graph, -1,         -1,             /* graph */

-  cbit_print, -1,         -1,             /* print */

-  cbit_punct, -1,         -1,             /* punct */

-  cbit_space, -1,         -1,             /* space */

-  cbit_word,  -1,         -1,             /* word - a Perl extension */

-  cbit_xdigit,-1,         -1              /* xdigit */

-};

-

-

-/* The texts of compile-time error messages. These are "char *" because they

-are passed to the outside world. */

-

-static const char *error_texts[] = {

-  "no error",

-  "\\ at end of pattern",

-  "\\c at end of pattern",

-  "unrecognized character follows \\",

-  "numbers out of order in {} quantifier",

-  /* 5 */

-  "number too big in {} quantifier",

-  "missing terminating ] for character class",

-  "invalid escape sequence in character class",

-  "range out of order in character class",

-  "nothing to repeat",

-  /* 10 */

-  "operand of unlimited repeat could match the empty string",

-  "internal error: unexpected repeat",

-  "unrecognized character after (?",

-  "POSIX named classes are supported only within a class",

-  "missing )",

-  /* 15 */

-  "reference to non-existent subpattern",

-  "erroffset passed as NULL",

-  "unknown option bit(s) set",

-  "missing ) after comment",

-  "parentheses nested too deeply",

-  /* 20 */

-  "regular expression too large",

-  "failed to get memory",

-  "unmatched parentheses",

-  "internal error: code overflow",

-  "unrecognized character after (?<",

-  /* 25 */

-  "lookbehind assertion is not fixed length",

-  "malformed number after (?(",

-  "conditional group contains more than two branches",

-  "assertion expected after (?(",

-  "(?R or (?digits must be followed by )",

-  /* 30 */

-  "unknown POSIX class name",

-  "POSIX collating elements are not supported",

-  "this version of PCRE is not compiled with PCRE_UTF8 support",

-  "spare error",

-  "character value in \\x{...} sequence is too large",

-  /* 35 */

-  "invalid condition (?(0)",

-  "\\C not allowed in lookbehind assertion",

-  "PCRE does not support \\L, \\l, \\N, \\U, or \\u",

-  "number after (?C is > 255",

-  "closing ) for (?C expected",

-  /* 40 */

-  "recursive call could loop indefinitely",

-  "unrecognized character after (?P",

-  "syntax error after (?P",

-  "two named groups have the same name",

-  "invalid UTF-8 string",

-  /* 45 */

-  "support for \\P, \\p, and \\X has not been compiled",

-  "malformed \\P or \\p sequence",

-  "unknown property name after \\P or \\p"

-};

-

-

-/* Table to identify digits and hex digits. This is used when compiling

-patterns. Note that the tables in chartables are dependent on the locale, and

-may mark arbitrary characters as digits - but the PCRE compiling code expects

-to handle only 0-9, a-z, and A-Z as digits when compiling. That is why we have

-a private table here. It costs 256 bytes, but it is a lot faster than doing

-character value tests (at least in some simple cases I timed), and in some

-applications one wants PCRE to compile efficiently as well as match

-efficiently.

-

-For convenience, we use the same bit definitions as in chartables:

-

-  0x04   decimal digit

-  0x08   hexadecimal digit

-

-Then we can use ctype_digit and ctype_xdigit in the code. */

-

-#if !EBCDIC    /* This is the "normal" case, for ASCII systems */

-static const unsigned char digitab[] =

-  {

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   8- 15 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*    - '  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  ( - /  */

-  0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, /*  0 - 7  */

-  0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, /*  8 - ?  */

-  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /*  @ - G  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  H - O  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  P - W  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  X - _  */

-  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /*  ` - g  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  h - o  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  p - w  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  x -127 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 128-135 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 136-143 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144-151 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 152-159 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160-167 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 168-175 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 176-183 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 192-199 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 200-207 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 208-215 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 216-223 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 224-231 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 232-239 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 240-247 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/* 248-255 */

-

-#else          /* This is the "abnormal" case, for EBCDIC systems */

-static const unsigned char digitab[] =

-  {

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   0-  7  0 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*   8- 15    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  16- 23 10 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  32- 39 20 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  40- 47    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  48- 55 30 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  56- 63    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*    - 71 40 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  72- |     */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  & - 87 50 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  88- ¬     */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  - -103 60 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 104- ?     */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 112-119 70 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 120- "     */

-  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /* 128- g  80 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  h -143    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 144- p  90 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  q -159    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 160- x  A0 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  y -175    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  ^ -183 B0 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 184-191    */

-  0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x00, /*  { - G  C0 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  H -207    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  } - P  D0 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  Q -223    */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  \ - X  E0 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  Y -239    */

-  0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, /*  0 - 7  F0 */

-  0x0c,0x0c,0x00,0x00,0x00,0x00,0x00,0x00};/*  8 -255    */

-

-static const unsigned char ebcdic_chartab[] = { /* chartable partial dup */

-  0x80,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /*   0-  7 */

-  0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00, /*   8- 15 */

-  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /*  16- 23 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  24- 31 */

-  0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /*  32- 39 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  40- 47 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  48- 55 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  56- 63 */

-  0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*    - 71 */

-  0x00,0x00,0x00,0x80,0x00,0x80,0x80,0x80, /*  72- |  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  & - 87 */

-  0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00, /*  88- ¬  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  - -103 */

-  0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80, /* 104- ?  */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 112-119 */

-  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 120- "  */

-  0x00,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /* 128- g  */

-  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  h -143 */

-  0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /* 144- p  */

-  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  q -159 */

-  0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12, /* 160- x  */

-  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  y -175 */

-  0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*  ^ -183 */

-  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, /* 184-191 */

-  0x80,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x12, /*  { - G  */

-  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  H -207 */

-  0x00,0x12,0x12,0x12,0x12,0x12,0x12,0x12, /*  } - P  */

-  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  Q -223 */

-  0x00,0x00,0x12,0x12,0x12,0x12,0x12,0x12, /*  \ - X  */

-  0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, /*  Y -239 */

-  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, /*  0 - 7  */

-  0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x00};/*  8 -255 */

-#endif

-

-

-/* Definition to allow mutual recursion */

-

-static BOOL

-  compile_regex(int, int, int *, uschar **, const uschar **, int *, BOOL, int,

-    int *, int *, branch_chain *, compile_data *);

-

-

-

-/*************************************************

-*            Handle escapes                      *

-*************************************************/

-

-/* This function is called when a \ has been encountered. It either returns a

-positive value for a simple escape such as \n, or a negative value which

-encodes one of the more complicated things such as \d. When UTF-8 is enabled,

-a positive value greater than 255 may be returned. On entry, ptr is pointing at

-the \. On exit, it is on the final character of the escape sequence.

-

-Arguments:

-  ptrptr         points to the pattern position pointer

-  errorcodeptr   points to the errorcode variable

-  bracount       number of previous extracting brackets

-  options        the options bits

-  isclass        TRUE if inside a character class

-

-Returns:         zero or positive => a data character

-                 negative => a special escape sequence

-                 on error, errorptr is set

-*/

-

-static int

-check_escape(const uschar **ptrptr, int *errorcodeptr, int bracount,

-  int options, BOOL isclass)

-{

-const uschar *ptr = *ptrptr;

-int c, i;

-

-/* If backslash is at the end of the pattern, it's an error. */

-

-c = *(++ptr);

-if (c == 0) *errorcodeptr = ERR1;

-

-/* Non-alphamerics are literals. For digits or letters, do an initial lookup in

-a table. A non-zero result is something that can be returned immediately.

-Otherwise further processing may be required. */

-

-#if !EBCDIC    /* ASCII coding */

-else if (c < '0' || c > 'z') {}                           /* Not alphameric */

-else if ((i = escapes[c - '0']) != 0) c = i;

-

-#else          /* EBCDIC coding */

-else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {}   /* Not alphameric */

-else if ((i = escapes[c - 0x48]) != 0)  c = i;

-#endif

-

-/* Escapes that need further processing, or are illegal. */

-

-else

-  {

-  const uschar *oldptr;

-  switch (c)

-    {

-    /* A number of Perl escapes are not handled by PCRE. We give an explicit

-    error. */

-

-    case 'l':

-    case 'L':

-    case 'N':

-    case 'u':

-    case 'U':

-    *errorcodeptr = ERR37;

-    break;

-

-    /* The handling of escape sequences consisting of a string of digits

-    starting with one that is not zero is not straightforward. By experiment,

-    the way Perl works seems to be as follows:

-

-    Outside a character class, the digits are read as a decimal number. If the

-    number is less than 10, or if there are that many previous extracting

-    left brackets, then it is a back reference. Otherwise, up to three octal

-    digits are read to form an escaped byte. Thus \123 is likely to be octal

-    123 (cf \0123, which is octal 012 followed by the literal 3). If the octal

-    value is greater than 377, the least significant 8 bits are taken. Inside a

-    character class, \ followed by a digit is always an octal number. */

-

-    case '1': case '2': case '3': case '4': case '5':

-    case '6': case '7': case '8': case '9':

-

-    if (!isclass)

-      {

-      oldptr = ptr;

-      c -= '0';

-      while ((digitab[ptr[1]] & ctype_digit) != 0)

-        c = c * 10 + *(++ptr) - '0';

-      if (c < 10 || c <= bracount)

-        {

-        c = -(ESC_REF + c);

-        break;

-        }

-      ptr = oldptr;      /* Put the pointer back and fall through */

-      }

-

-    /* Handle an octal number following \. If the first digit is 8 or 9, Perl

-    generates a binary zero byte and treats the digit as a following literal.

-    Thus we have to pull back the pointer by one. */

-

-    if ((c = *ptr) >= '8')

-      {

-      ptr--;

-      c = 0;

-      break;

-      }

-

-    /* \0 always starts an octal number, but we may drop through to here with a

-    larger first octal digit. */

-

-    case '0':

-    c -= '0';

-    while(i++ < 2 && ptr[1] >= '0' && ptr[1] <= '7')

-        c = c * 8 + *(++ptr) - '0';

-    c &= 255;     /* Take least significant 8 bits */

-    break;

-

-    /* \x is complicated when UTF-8 is enabled. \x{ddd} is a character number

-    which can be greater than 0xff, but only if the ddd are hex digits. */

-

-    case 'x':

-#ifdef SUPPORT_UTF8

-    if (ptr[1] == '{' && (options & PCRE_UTF8) != 0)

-      {

-      const uschar *pt = ptr + 2;

-      register int count = 0;

-      c = 0;

-      while ((digitab[*pt] & ctype_xdigit) != 0)

-        {

-        int cc = *pt++;

-        count++;

-#if !EBCDIC    /* ASCII coding */

-        if (cc >= 'a') cc -= 32;               /* Convert to upper case */

-        c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10));

-#else          /* EBCDIC coding */

-        if (cc >= 'a' && cc <= 'z') cc += 64;  /* Convert to upper case */

-        c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10));

-#endif

-        }

-      if (*pt == '}')

-        {

-        if (c < 0 || count > 8) *errorcodeptr = ERR34;

-        ptr = pt;

-        break;

-        }

-      /* If the sequence of hex digits does not end with '}', then we don't

-      recognize this construct; fall through to the normal \x handling. */

-      }

-#endif

-

-    /* Read just a single hex char */

-

-    c = 0;

-    while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0)

-      {

-      int cc;                               /* Some compilers don't like ++ */

-      cc = *(++ptr);                        /* in initializers */

-#if !EBCDIC    /* ASCII coding */

-      if (cc >= 'a') cc -= 32;              /* Convert to upper case */

-      c = c * 16 + cc - ((cc < 'A')? '0' : ('A' - 10));

-#else          /* EBCDIC coding */

-      if (cc <= 'z') cc += 64;              /* Convert to upper case */

-      c = c * 16 + cc - ((cc >= '0')? '0' : ('A' - 10));

-#endif

-      }

-    break;

-

-    /* Other special escapes not starting with a digit are straightforward */

-

-    case 'c':

-    c = *(++ptr);

-    if (c == 0)

-      {

-      *errorcodeptr = ERR2;

-      return 0;

-      }

-

-    /* A letter is upper-cased; then the 0x40 bit is flipped. This coding

-    is ASCII-specific, but then the whole concept of \cx is ASCII-specific.

-    (However, an EBCDIC equivalent has now been added.) */

-

-#if !EBCDIC    /* ASCII coding */

-    if (c >= 'a' && c <= 'z') c -= 32;

-    c ^= 0x40;

-#else          /* EBCDIC coding */

-    if (c >= 'a' && c <= 'z') c += 64;

-    c ^= 0xC0;

-#endif

-    break;

-

-    /* PCRE_EXTRA enables extensions to Perl in the matter of escapes. Any

-    other alphameric following \ is an error if PCRE_EXTRA was set; otherwise,

-    for Perl compatibility, it is a literal. This code looks a bit odd, but

-    there used to be some cases other than the default, and there may be again

-    in future, so I haven't "optimized" it. */

-

-    default:

-    if ((options & PCRE_EXTRA) != 0) switch(c)

-      {

-      default:

-      *errorcodeptr = ERR3;

-      break;

-      }

-    break;

-    }

-  }

-

-*ptrptr = ptr;

-return c;

-}

-

-

-

-#ifdef SUPPORT_UCP

-/*************************************************

-*               Handle \P and \p                 *

-*************************************************/

-

-/* This function is called after \P or \p has been encountered, provided that

-PCRE is compiled with support for Unicode properties. On entry, ptrptr is

-pointing at the P or p. On exit, it is pointing at the final character of the

-escape sequence.

-

-Argument:

-  ptrptr         points to the pattern position pointer

-  negptr         points to a boolean that is set TRUE for negation else FALSE

-  errorcodeptr   points to the error code variable

-

-Returns:     value from ucp_type_table, or -1 for an invalid type

-*/

-

-static int

-get_ucp(const uschar **ptrptr, BOOL *negptr, int *errorcodeptr)

-{

-int c, i, bot, top;

-const uschar *ptr = *ptrptr;

-char name[4];

-

-c = *(++ptr);

-if (c == 0) goto ERROR_RETURN;

-

-*negptr = FALSE;

-

-/* \P or \p can be followed by a one- or two-character name in {}, optionally

-preceded by ^ for negation. */

-

-if (c == '{')

-  {

-  if (ptr[1] == '^')

-    {

-    *negptr = TRUE;

-    ptr++;

-    }

-  for (i = 0; i <= 2; i++)

-    {

-    c = *(++ptr);

-    if (c == 0) goto ERROR_RETURN;

-    if (c == '}') break;

-    name[i] = c;

-    }

-  if (c !='}')   /* Try to distinguish error cases */

-    {

-    while (*(++ptr) != 0 && *ptr != '}');

-    if (*ptr == '}') goto UNKNOWN_RETURN; else goto ERROR_RETURN;

-    }

-  name[i] = 0;

-  }

-

-/* Otherwise there is just one following character */

-

-else

-  {

-  name[0] = c;

-  name[1] = 0;

-  }

-

-*ptrptr = ptr;

-

-/* Search for a recognized property name using binary chop */

-

-bot = 0;

-top = _pcre_utt_size;

-

-while (bot < top)

-  {

-  i = (bot + top)/2;

-  c = strcmp(name, _pcre_utt[i].name);

-  if (c == 0) return _pcre_utt[i].value;

-  if (c > 0) bot = i + 1; else top = i;

-  }

-

-UNKNOWN_RETURN:

-*errorcodeptr = ERR47;

-*ptrptr = ptr;

-return -1;

-

-ERROR_RETURN:

-*errorcodeptr = ERR46;

-*ptrptr = ptr;

-return -1;

-}

-#endif

-

-

-

-

-/*************************************************

-*            Check for counted repeat            *

-*************************************************/

-

-/* This function is called when a '{' is encountered in a place where it might

-start a quantifier. It looks ahead to see if it really is a quantifier or not.

-It is only a quantifier if it is one of the forms {ddd} {ddd,} or {ddd,ddd}

-where the ddds are digits.

-

-Arguments:

-  p         pointer to the first char after '{'

-

-Returns:    TRUE or FALSE

-*/

-

-static BOOL

-is_counted_repeat(const uschar *p)

-{

-if ((digitab[*p++] & ctype_digit) == 0) return FALSE;

-while ((digitab[*p] & ctype_digit) != 0) p++;

-if (*p == '}') return TRUE;

-

-if (*p++ != ',') return FALSE;

-if (*p == '}') return TRUE;

-

-if ((digitab[*p++] & ctype_digit) == 0) return FALSE;

-while ((digitab[*p] & ctype_digit) != 0) p++;

-

-return (*p == '}');

-}

-

-

-

-/*************************************************

-*         Read repeat counts                     *

-*************************************************/

-

-/* Read an item of the form {n,m} and return the values. This is called only

-after is_counted_repeat() has confirmed that a repeat-count quantifier exists,

-so the syntax is guaranteed to be correct, but we need to check the values.

-

-Arguments:

-  p              pointer to first char after '{'

-  minp           pointer to int for min

-  maxp           pointer to int for max

-                 returned as -1 if no max

-  errorcodeptr   points to error code variable

-

-Returns:         pointer to '}' on success;

-                 current ptr on error, with errorcodeptr set non-zero

-*/

-

-static const uschar *

-read_repeat_counts(const uschar *p, int *minp, int *maxp, int *errorcodeptr)

-{

-int min = 0;

-int max = -1;

-

-/* Read the minimum value and do a paranoid check: a negative value indicates

-an integer overflow. */

-

-while ((digitab[*p] & ctype_digit) != 0) min = min * 10 + *p++ - '0';

-if (min < 0 || min > 65535)

-  {

-  *errorcodeptr = ERR5;

-  return p;

-  }

-

-/* Read the maximum value if there is one, and again do a paranoid on its size.

-Also, max must not be less than min. */

-

-if (*p == '}') max = min; else

-  {

-  if (*(++p) != '}')

-    {

-    max = 0;

-    while((digitab[*p] & ctype_digit) != 0) max = max * 10 + *p++ - '0';

-    if (max < 0 || max > 65535)

-      {

-      *errorcodeptr = ERR5;

-      return p;

-      }

-    if (max < min)

-      {

-      *errorcodeptr = ERR4;

-      return p;

-      }

-    }

-  }

-

-/* Fill in the required variables, and pass back the pointer to the terminating

-'}'. */

-

-*minp = min;

-*maxp = max;

-return p;

-}

-

-

-

-/*************************************************

-*      Find first significant op code            *

-*************************************************/

-

-/* This is called by several functions that scan a compiled expression looking

-for a fixed first character, or an anchoring op code etc. It skips over things

-that do not influence this. For some calls, a change of option is important.

-For some calls, it makes sense to skip negative forward and all backward

-assertions, and also the \b assertion; for others it does not.

-

-Arguments:

-  code         pointer to the start of the group

-  options      pointer to external options

-  optbit       the option bit whose changing is significant, or

-                 zero if none are

-  skipassert   TRUE if certain assertions are to be skipped

-

-Returns:       pointer to the first significant opcode

-*/

-

-static const uschar*

-first_significant_code(const uschar *code, int *options, int optbit,

-  BOOL skipassert)

-{

-for (;;)

-  {

-  switch ((int)*code)

-    {

-    case OP_OPT:

-    if (optbit > 0 && ((int)code[1] & optbit) != (*options & optbit))

-      *options = (int)code[1];

-    code += 2;

-    break;

-

-    case OP_ASSERT_NOT:

-    case OP_ASSERTBACK:

-    case OP_ASSERTBACK_NOT:

-    if (!skipassert) return code;

-    do code += GET(code, 1); while (*code == OP_ALT);

-    code += _pcre_OP_lengths[*code];

-    break;

-

-    case OP_WORD_BOUNDARY:

-    case OP_NOT_WORD_BOUNDARY:

-    if (!skipassert) return code;

-    /* Fall through */

-

-    case OP_CALLOUT:

-    case OP_CREF:

-    case OP_BRANUMBER:

-    code += _pcre_OP_lengths[*code];

-    break;

-

-    default:

-    return code;

-    }

-  }

-/* Control never reaches here */

-}

-

-

-

-

-/*************************************************

-*        Find the fixed length of a pattern      *

-*************************************************/

-

-/* Scan a pattern and compute the fixed length of subject that will match it,

-if the length is fixed. This is needed for dealing with backward assertions.

-In UTF8 mode, the result is in characters rather than bytes.

-

-Arguments:

-  code     points to the start of the pattern (the bracket)

-  options  the compiling options

-

-Returns:   the fixed length, or -1 if there is no fixed length,

-             or -2 if \C was encountered

-*/

-

-static int

-find_fixedlength(uschar *code, int options)

-{

-int length = -1;

-

-register int branchlength = 0;

-register uschar *cc = code + 1 + LINK_SIZE;

-

-/* Scan along the opcodes for this branch. If we get to the end of the

-branch, check the length against that of the other branches. */

-

-for (;;)

-  {

-  int d;

-  register int op = *cc;

-  if (op >= OP_BRA) op = OP_BRA;

-

-  switch (op)

-    {

-    case OP_BRA:

-    case OP_ONCE:

-    case OP_COND:

-    d = find_fixedlength(cc, options);

-    if (d < 0) return d;

-    branchlength += d;

-    do cc += GET(cc, 1); while (*cc == OP_ALT);

-    cc += 1 + LINK_SIZE;

-    break;

-

-    /* Reached end of a branch; if it's a ket it is the end of a nested

-    call. If it's ALT it is an alternation in a nested call. If it is

-    END it's the end of the outer call. All can be handled by the same code. */

-

-    case OP_ALT:

-    case OP_KET:

-    case OP_KETRMAX:

-    case OP_KETRMIN:

-    case OP_END:

-    if (length < 0) length = branchlength;

-      else if (length != branchlength) return -1;

-    if (*cc != OP_ALT) return length;

-    cc += 1 + LINK_SIZE;

-    branchlength = 0;

-    break;

-

-    /* Skip over assertive subpatterns */

-

-    case OP_ASSERT:

-    case OP_ASSERT_NOT:

-    case OP_ASSERTBACK:

-    case OP_ASSERTBACK_NOT:

-    do cc += GET(cc, 1); while (*cc == OP_ALT);

-    /* Fall through */

-

-    /* Skip over things that don't match chars */

-

-    case OP_REVERSE:

-    case OP_BRANUMBER:

-    case OP_CREF:

-    case OP_OPT:

-    case OP_CALLOUT:

-    case OP_SOD:

-    case OP_SOM:

-    case OP_EOD:

-    case OP_EODN:

-    case OP_CIRC:

-    case OP_DOLL:

-    case OP_NOT_WORD_BOUNDARY:

-    case OP_WORD_BOUNDARY:

-    cc += _pcre_OP_lengths[*cc];

-    break;

-

-    /* Handle literal characters */

-

-    case OP_CHAR:

-    case OP_CHARNC:

-    branchlength++;

-    cc += 2;

-#ifdef SUPPORT_UTF8

-    if ((options & PCRE_UTF8) != 0)

-      {

-      while ((*cc & 0xc0) == 0x80) cc++;

-      }

-#endif

-    break;

-

-    /* Handle exact repetitions. The count is already in characters, but we

-    need to skip over a multibyte character in UTF8 mode.  */

-

-    case OP_EXACT:

-    branchlength += GET2(cc,1);

-    cc += 4;

-#ifdef SUPPORT_UTF8

-    if ((options & PCRE_UTF8) != 0)

-      {

-      while((*cc & 0x80) == 0x80) cc++;

-      }

-#endif

-    break;

-

-    case OP_TYPEEXACT:

-    branchlength += GET2(cc,1);

-    cc += 4;

-    break;

-

-    /* Handle single-char matchers */

-

-    case OP_PROP:

-    case OP_NOTPROP:

-    cc++;

-    /* Fall through */

-

-    case OP_NOT_DIGIT:

-    case OP_DIGIT:

-    case OP_NOT_WHITESPACE:

-    case OP_WHITESPACE:

-    case OP_NOT_WORDCHAR:

-    case OP_WORDCHAR:

-    case OP_ANY:

-    branchlength++;

-    cc++;

-    break;

-

-    /* The single-byte matcher isn't allowed */

-

-    case OP_ANYBYTE:

-    return -2;

-

-    /* Check a class for variable quantification */

-

-#ifdef SUPPORT_UTF8

-    case OP_XCLASS:

-    cc += GET(cc, 1) - 33;

-    /* Fall through */

-#endif

-

-    case OP_CLASS:

-    case OP_NCLASS:

-    cc += 33;

-

-    switch (*cc)

-      {

-      case OP_CRSTAR:

-      case OP_CRMINSTAR:

-      case OP_CRQUERY:

-      case OP_CRMINQUERY:

-      return -1;

-

-      case OP_CRRANGE:

-      case OP_CRMINRANGE:

-      if (GET2(cc,1) != GET2(cc,3)) return -1;

-      branchlength += GET2(cc,1);

-      cc += 5;

-      break;

-

-      default:

-      branchlength++;

-      }

-    break;

-

-    /* Anything else is variable length */

-

-    default:

-    return -1;

-    }

-  }

-/* Control never gets here */

-}

-

-

-

-

-/*************************************************

-*    Scan compiled regex for numbered bracket    *

-*************************************************/

-

-/* This little function scans through a compiled pattern until it finds a

-capturing bracket with the given number.

-

-Arguments:

-  code        points to start of expression

-  utf8        TRUE in UTF-8 mode

-  number      the required bracket number

-

-Returns:      pointer to the opcode for the bracket, or NULL if not found

-*/

-

-static const uschar *

-find_bracket(const uschar *code, BOOL utf8, int number)

-{

-#ifndef SUPPORT_UTF8

-utf8 = utf8;               /* Stop pedantic compilers complaining */

-#endif

-

-for (;;)

-  {

-  register int c = *code;

-  if (c == OP_END) return NULL;

-  else if (c > OP_BRA)

-    {

-    int n = c - OP_BRA;

-    if (n > EXTRACT_BASIC_MAX) n = GET2(code, 2+LINK_SIZE);

-    if (n == number) return (uschar *)code;

-    code += _pcre_OP_lengths[OP_BRA];

-    }

-  else

-    {

-    code += _pcre_OP_lengths[c];

-

-#ifdef SUPPORT_UTF8

-

-    /* In UTF-8 mode, opcodes that are followed by a character may be followed

-    by a multi-byte character. The length in the table is a minimum, so we have

-    to scan along to skip the extra bytes. All opcodes are less than 128, so we

-    can use relatively efficient code. */

-

-    if (utf8) switch(c)

-      {

-      case OP_CHAR:

-      case OP_CHARNC:

-      case OP_EXACT:

-      case OP_UPTO:

-      case OP_MINUPTO:

-      case OP_STAR:

-      case OP_MINSTAR:

-      case OP_PLUS:

-      case OP_MINPLUS:

-      case OP_QUERY:

-      case OP_MINQUERY:

-      while ((*code & 0xc0) == 0x80) code++;

-      break;

-

-      /* XCLASS is used for classes that cannot be represented just by a bit

-      map. This includes negated single high-valued characters. The length in

-      the table is zero; the actual length is stored in the compiled code. */

-

-      case OP_XCLASS:

-      code += GET(code, 1) + 1;

-      break;

-      }

-#endif

-    }

-  }

-}

-

-

-

-/*************************************************

-*   Scan compiled regex for recursion reference  *

-*************************************************/

-

-/* This little function scans through a compiled pattern until it finds an

-instance of OP_RECURSE.

-

-Arguments:

-  code        points to start of expression

-  utf8        TRUE in UTF-8 mode

-

-Returns:      pointer to the opcode for OP_RECURSE, or NULL if not found

-*/

-

-static const uschar *

-find_recurse(const uschar *code, BOOL utf8)

-{

-#ifndef SUPPORT_UTF8

-utf8 = utf8;               /* Stop pedantic compilers complaining */

-#endif

-

-for (;;)

-  {

-  register int c = *code;

-  if (c == OP_END) return NULL;

-  else if (c == OP_RECURSE) return code;

-  else if (c > OP_BRA)

-    {

-    code += _pcre_OP_lengths[OP_BRA];

-    }

-  else

-    {

-    code += _pcre_OP_lengths[c];

-

-#ifdef SUPPORT_UTF8

-

-    /* In UTF-8 mode, opcodes that are followed by a character may be followed

-    by a multi-byte character. The length in the table is a minimum, so we have

-    to scan along to skip the extra bytes. All opcodes are less than 128, so we

-    can use relatively efficient code. */

-

-    if (utf8) switch(c)

-      {

-      case OP_CHAR:

-      case OP_CHARNC:

-      case OP_EXACT:

-      case OP_UPTO:

-      case OP_MINUPTO:

-      case OP_STAR:

-      case OP_MINSTAR:

-      case OP_PLUS:

-      case OP_MINPLUS:

-      case OP_QUERY:

-      case OP_MINQUERY:

-      while ((*code & 0xc0) == 0x80) code++;

-      break;

-

-      /* XCLASS is used for classes that cannot be represented just by a bit

-      map. This includes negated single high-valued characters. The length in

-      the table is zero; the actual length is stored in the compiled code. */

-

-      case OP_XCLASS:

-      code += GET(code, 1) + 1;

-      break;

-      }

-#endif

-    }

-  }

-}

-

-

-

-/*************************************************

-*    Scan compiled branch for non-emptiness      *

-*************************************************/

-

-/* This function scans through a branch of a compiled pattern to see whether it

-can match the empty string or not. It is called only from could_be_empty()

-below. Note that first_significant_code() skips over assertions. If we hit an

-unclosed bracket, we return "empty" - this means we've struck an inner bracket

-whose current branch will already have been scanned.

-

-Arguments:

-  code        points to start of search

-  endcode     points to where to stop

-  utf8        TRUE if in UTF8 mode

-

-Returns:      TRUE if what is matched could be empty

-*/

-

-static BOOL

-could_be_empty_branch(const uschar *code, const uschar *endcode, BOOL utf8)

-{

-register int c;

-for (code = first_significant_code(code + 1 + LINK_SIZE, NULL, 0, TRUE);

-     code < endcode;

-     code = first_significant_code(code + _pcre_OP_lengths[c], NULL, 0, TRUE))

-  {

-  const uschar *ccode;

-

-  c = *code;

-

-  if (c >= OP_BRA)

-    {

-    BOOL empty_branch;

-    if (GET(code, 1) == 0) return TRUE;    /* Hit unclosed bracket */

-

-    /* Scan a closed bracket */

-

-    empty_branch = FALSE;

-    do

-      {

-      if (!empty_branch && could_be_empty_branch(code, endcode, utf8))

-        empty_branch = TRUE;

-      code += GET(code, 1);

-      }

-    while (*code == OP_ALT);

-    if (!empty_branch) return FALSE;   /* All branches are non-empty */

-    code += 1 + LINK_SIZE;

-    c = *code;

-    }

-

-  else switch (c)

-    {

-    /* Check for quantifiers after a class */

-

-#ifdef SUPPORT_UTF8

-    case OP_XCLASS:

-    ccode = code + GET(code, 1);

-    goto CHECK_CLASS_REPEAT;

-#endif

-

-    case OP_CLASS:

-    case OP_NCLASS:

-    ccode = code + 33;

-

-#ifdef SUPPORT_UTF8

-    CHECK_CLASS_REPEAT:

-#endif

-

-    switch (*ccode)

-      {

-      case OP_CRSTAR:            /* These could be empty; continue */

-      case OP_CRMINSTAR:

-      case OP_CRQUERY:

-      case OP_CRMINQUERY:

-      break;

-

-      default:                   /* Non-repeat => class must match */

-      case OP_CRPLUS:            /* These repeats aren't empty */

-      case OP_CRMINPLUS:

-      return FALSE;

-

-      case OP_CRRANGE:

-      case OP_CRMINRANGE:

-      if (GET2(ccode, 1) > 0) return FALSE;  /* Minimum > 0 */

-      break;

-      }

-    break;

-

-    /* Opcodes that must match a character */

-

-    case OP_PROP:

-    case OP_NOTPROP:

-    case OP_EXTUNI:

-    case OP_NOT_DIGIT:

-    case OP_DIGIT:

-    case OP_NOT_WHITESPACE:

-    case OP_WHITESPACE:

-    case OP_NOT_WORDCHAR:

-    case OP_WORDCHAR:

-    case OP_ANY:

-    case OP_ANYBYTE:

-    case OP_CHAR:

-    case OP_CHARNC:

-    case OP_NOT:

-    case OP_PLUS:

-    case OP_MINPLUS:

-    case OP_EXACT:

-    case OP_NOTPLUS:

-    case OP_NOTMINPLUS:

-    case OP_NOTEXACT:

-    case OP_TYPEPLUS:

-    case OP_TYPEMINPLUS:

-    case OP_TYPEEXACT:

-    return FALSE;

-

-    /* End of branch */

-

-    case OP_KET:

-    case OP_KETRMAX:

-    case OP_KETRMIN:

-    case OP_ALT:

-    return TRUE;

-

-    /* In UTF-8 mode, STAR, MINSTAR, QUERY, MINQUERY, UPTO, and MINUPTO  may be

-    followed by a multibyte character */

-

-#ifdef SUPPORT_UTF8

-    case OP_STAR:

-    case OP_MINSTAR:

-    case OP_QUERY:

-    case OP_MINQUERY:

-    case OP_UPTO:

-    case OP_MINUPTO:

-    if (utf8) while ((code[2] & 0xc0) == 0x80) code++;

-    break;

-#endif

-    }

-  }

-

-return TRUE;

-}

-

-

-

-/*************************************************

-*    Scan compiled regex for non-emptiness       *

-*************************************************/

-

-/* This function is called to check for left recursive calls. We want to check

-the current branch of the current pattern to see if it could match the empty

-string. If it could, we must look outwards for branches at other levels,

-stopping when we pass beyond the bracket which is the subject of the recursion.

-

-Arguments:

-  code        points to start of the recursion

-  endcode     points to where to stop (current RECURSE item)

-  bcptr       points to the chain of current (unclosed) branch starts

-  utf8        TRUE if in UTF-8 mode

-

-Returns:      TRUE if what is matched could be empty

-*/

-

-static BOOL

-could_be_empty(const uschar *code, const uschar *endcode, branch_chain *bcptr,

-  BOOL utf8)

-{

-while (bcptr != NULL && bcptr->current >= code)

-  {

-  if (!could_be_empty_branch(bcptr->current, endcode, utf8)) return FALSE;

-  bcptr = bcptr->outer;

-  }

-return TRUE;

-}

-

-

-

-/*************************************************

-*           Check for POSIX class syntax         *

-*************************************************/

-

-/* This function is called when the sequence "[:" or "[." or "[=" is

-encountered in a character class. It checks whether this is followed by an

-optional ^ and then a sequence of letters, terminated by a matching ":]" or

-".]" or "=]".

-

-Argument:

-  ptr      pointer to the initial [

-  endptr   where to return the end pointer

-  cd       pointer to compile data

-

-Returns:   TRUE or FALSE

-*/

-

-static BOOL

-check_posix_syntax(const uschar *ptr, const uschar **endptr, compile_data *cd)

-{

-int terminator;          /* Don't combine these lines; the Solaris cc */

-terminator = *(++ptr);   /* compiler warns about "non-constant" initializer. */

-if (*(++ptr) == '^') ptr++;

-while ((cd->ctypes[*ptr] & ctype_letter) != 0) ptr++;

-if (*ptr == terminator && ptr[1] == ']')

-  {

-  *endptr = ptr;

-  return TRUE;

-  }

-return FALSE;

-}

-

-

-

-

-/*************************************************

-*          Check POSIX class name                *

-*************************************************/

-

-/* This function is called to check the name given in a POSIX-style class entry

-such as [:alnum:].

-

-Arguments:

-  ptr        points to the first letter

-  len        the length of the name

-

-Returns:     a value representing the name, or -1 if unknown

-*/

-

-static int

-check_posix_name(const uschar *ptr, int len)

-{

-register int yield = 0;

-while (posix_name_lengths[yield] != 0)

-  {

-  if (len == posix_name_lengths[yield] &&

-    strncmp((const char *)ptr, posix_names[yield], len) == 0) return yield;

-  yield++;

-  }

-return -1;

-}

-

-

-/*************************************************

-*    Adjust OP_RECURSE items in repeated group   *

-*************************************************/

-

-/* OP_RECURSE items contain an offset from the start of the regex to the group

-that is referenced. This means that groups can be replicated for fixed

-repetition simply by copying (because the recursion is allowed to refer to

-earlier groups that are outside the current group). However, when a group is

-optional (i.e. the minimum quantifier is zero), OP_BRAZERO is inserted before

-it, after it has been compiled. This means that any OP_RECURSE items within it

-that refer to the group itself or any contained groups have to have their

-offsets adjusted. That is the job of this function. Before it is called, the

-partially compiled regex must be temporarily terminated with OP_END.

-

-Arguments:

-  group      points to the start of the group

-  adjust     the amount by which the group is to be moved

-  utf8       TRUE in UTF-8 mode

-  cd         contains pointers to tables etc.

-

-Returns:     nothing

-*/

-

-static void

-adjust_recurse(uschar *group, int adjust, BOOL utf8, compile_data *cd)

-{

-uschar *ptr = group;

-while ((ptr = (uschar *)find_recurse(ptr, utf8)) != NULL)

-  {

-  int offset = GET(ptr, 1);

-  if (cd->start_code + offset >= group) PUT(ptr, 1, offset + adjust);

-  ptr += 1 + LINK_SIZE;

-  }

-}

-

-

-

-/*************************************************

-*        Insert an automatic callout point       *

-*************************************************/

-

-/* This function is called when the PCRE_AUTO_CALLOUT option is set, to insert

-callout points before each pattern item.

-

-Arguments:

-  code           current code pointer

-  ptr            current pattern pointer

-  cd             pointers to tables etc

-

-Returns:         new code pointer

-*/

-

-static uschar *

-auto_callout(uschar *code, const uschar *ptr, compile_data *cd)

-{

-*code++ = OP_CALLOUT;

-*code++ = 255;

-PUT(code, 0, ptr - cd->start_pattern);  /* Pattern offset */

-PUT(code, LINK_SIZE, 0);                /* Default length */

-return code + 2*LINK_SIZE;

-}

-

-

-

-/*************************************************

-*         Complete a callout item                *

-*************************************************/

-

-/* A callout item contains the length of the next item in the pattern, which

-we can't fill in till after we have reached the relevant point. This is used

-for both automatic and manual callouts.

-

-Arguments:

-  previous_callout   points to previous callout item

-  ptr                current pattern pointer

-  cd                 pointers to tables etc

-

-Returns:             nothing

-*/

-

-static void

-complete_callout(uschar *previous_callout, const uschar *ptr, compile_data *cd)

-{

-int length = ptr - cd->start_pattern - GET(previous_callout, 2);

-PUT(previous_callout, 2 + LINK_SIZE, length);

-}

-

-

-

-#ifdef SUPPORT_UCP

-/*************************************************

-*           Get othercase range                  *

-*************************************************/

-

-/* This function is passed the start and end of a class range, in UTF-8 mode

-with UCP support. It searches up the characters, looking for internal ranges of

-characters in the "other" case. Each call returns the next one, updating the

-start address.

-

-Arguments:

-  cptr        points to starting character value; updated

-  d           end value

-  ocptr       where to put start of othercase range

-  odptr       where to put end of othercase range

-

-Yield:        TRUE when range returned; FALSE when no more

-*/

-

-static BOOL

-get_othercase_range(int *cptr, int d, int *ocptr, int *odptr)

-{

-int c, chartype, othercase, next;

-

-for (c = *cptr; c <= d; c++)

-  {

-  if (_pcre_ucp_findchar(c, &chartype, &othercase) == ucp_L && othercase != 0)

-    break;

-  }

-

-if (c > d) return FALSE;

-

-*ocptr = othercase;

-next = othercase + 1;

-

-for (++c; c <= d; c++)

-  {

-  if (_pcre_ucp_findchar(c, &chartype, &othercase) != ucp_L ||

-        othercase != next)

-    break;

-  next++;

-  }

-

-*odptr = next - 1;

-*cptr = c;

-

-return TRUE;

-}

-#endif  /* SUPPORT_UCP */

-

-

-/*************************************************

-*           Compile one branch                   *

-*************************************************/

-

-/* Scan the pattern, compiling it into the code vector. If the options are

-changed during the branch, the pointer is used to change the external options

-bits.

-

-Arguments:

-  optionsptr     pointer to the option bits

-  brackets       points to number of extracting brackets used

-  codeptr        points to the pointer to the current code point

-  ptrptr         points to the current pattern pointer

-  errorcodeptr   points to error code variable

-  firstbyteptr   set to initial literal character, or < 0 (REQ_UNSET, REQ_NONE)

-  reqbyteptr     set to the last literal character required, else < 0

-  bcptr          points to current branch chain

-  cd             contains pointers to tables etc.

-

-Returns:         TRUE on success

-                 FALSE, with *errorcodeptr set non-zero on error

-*/

-

-static BOOL

-compile_branch(int *optionsptr, int *brackets, uschar **codeptr,

-  const uschar **ptrptr, int *errorcodeptr, int *firstbyteptr,

-  int *reqbyteptr, branch_chain *bcptr, compile_data *cd)

-{

-int repeat_type, op_type;

-int repeat_min = 0, repeat_max = 0;      /* To please picky compilers */

-int bravalue = 0;

-int greedy_default, greedy_non_default;

-int firstbyte, reqbyte;

-int zeroreqbyte, zerofirstbyte;

-int req_caseopt, reqvary, tempreqvary;

-int condcount = 0;

-int options = *optionsptr;

-int after_manual_callout = 0;

-register int c;

-register uschar *code = *codeptr;

-uschar *tempcode;

-BOOL inescq = FALSE;

-BOOL groupsetfirstbyte = FALSE;

-const uschar *ptr = *ptrptr;

-const uschar *tempptr;

-uschar *previous = NULL;

-uschar *previous_callout = NULL;

-uschar classbits[32];

-

-#ifdef SUPPORT_UTF8

-BOOL class_utf8;

-BOOL utf8 = (options & PCRE_UTF8) != 0;

-uschar *class_utf8data;

-uschar utf8_char[6];

-#else

-BOOL utf8 = FALSE;

-#endif

-

-/* Set up the default and non-default settings for greediness */

-

-greedy_default = ((options & PCRE_UNGREEDY) != 0);

-greedy_non_default = greedy_default ^ 1;

-

-/* Initialize no first byte, no required byte. REQ_UNSET means "no char

-matching encountered yet". It gets changed to REQ_NONE if we hit something that

-matches a non-fixed char first char; reqbyte just remains unset if we never

-find one.

-

-When we hit a repeat whose minimum is zero, we may have to adjust these values

-to take the zero repeat into account. This is implemented by setting them to

-zerofirstbyte and zeroreqbyte when such a repeat is encountered. The individual

-item types that can be repeated set these backoff variables appropriately. */

-

-firstbyte = reqbyte = zerofirstbyte = zeroreqbyte = REQ_UNSET;

-

-/* The variable req_caseopt contains either the REQ_CASELESS value or zero,

-according to the current setting of the caseless flag. REQ_CASELESS is a bit

-value > 255. It is added into the firstbyte or reqbyte variables to record the

-case status of the value. This is used only for ASCII characters. */

-

-req_caseopt = ((options & PCRE_CASELESS) != 0)? REQ_CASELESS : 0;

-

-/* Switch on next character until the end of the branch */

-

-for (;; ptr++)

-  {

-  BOOL negate_class;

-  BOOL possessive_quantifier;

-  BOOL is_quantifier;

-  int class_charcount;

-  int class_lastchar;

-  int newoptions;

-  int recno;

-  int skipbytes;

-  int subreqbyte;

-  int subfirstbyte;

-  int mclength;

-  uschar mcbuffer[8];

-

-  /* Next byte in the pattern */

-

-  c = *ptr;

-

-  /* If in \Q...\E, check for the end; if not, we have a literal */

-

-  if (inescq && c != 0)

-    {

-    if (c == '\\' && ptr[1] == 'E')

-      {

-      inescq = FALSE;

-      ptr++;

-      continue;

-      }

-    else

-      {

-      if (previous_callout != NULL)

-        {

-        complete_callout(previous_callout, ptr, cd);

-        previous_callout = NULL;

-        }

-      if ((options & PCRE_AUTO_CALLOUT) != 0)

-        {

-        previous_callout = code;

-        code = auto_callout(code, ptr, cd);

-        }

-      goto NORMAL_CHAR;

-      }

-    }

-

-  /* Fill in length of a previous callout, except when the next thing is

-  a quantifier. */

-

-  is_quantifier = c == '*' || c == '+' || c == '?' ||

-    (c == '{' && is_counted_repeat(ptr+1));

-

-  if (!is_quantifier && previous_callout != NULL &&

-       after_manual_callout-- <= 0)

-    {

-    complete_callout(previous_callout, ptr, cd);

-    previous_callout = NULL;

-    }

-

-  /* In extended mode, skip white space and comments */

-

-  if ((options & PCRE_EXTENDED) != 0)

-    {

-    if ((cd->ctypes[c] & ctype_space) != 0) continue;

-    if (c == '#')

-      {

-      /* The space before the ; is to avoid a warning on a silly compiler

-      on the Macintosh. */

-      while ((c = *(++ptr)) != 0 && c != NEWLINE) ;

-      if (c != 0) continue;   /* Else fall through to handle end of string */

-      }

-    }

-

-  /* No auto callout for quantifiers. */

-

-  if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier)

-    {

-    previous_callout = code;

-    code = auto_callout(code, ptr, cd);

-    }

-

-  switch(c)

-    {

-    /* The branch terminates at end of string, |, or ). */

-

-    case 0:

-    case '|':

-    case ')':

-    *firstbyteptr = firstbyte;

-    *reqbyteptr = reqbyte;

-    *codeptr = code;

-    *ptrptr = ptr;

-    return TRUE;

-

-    /* Handle single-character metacharacters. In multiline mode, ^ disables

-    the setting of any following char as a first character. */

-

-    case '^':

-    if ((options & PCRE_MULTILINE) != 0)

-      {

-      if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;

-      }

-    previous = NULL;

-    *code++ = OP_CIRC;

-    break;

-

-    case '$':

-    previous = NULL;

-    *code++ = OP_DOLL;

-    break;

-

-    /* There can never be a first char if '.' is first, whatever happens about

-    repeats. The value of reqbyte doesn't change either. */

-

-    case '.':

-    if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;

-    zerofirstbyte = firstbyte;

-    zeroreqbyte = reqbyte;

-    previous = code;

-    *code++ = OP_ANY;

-    break;

-

-    /* Character classes. If the included characters are all < 255 in value, we

-    build a 32-byte bitmap of the permitted characters, except in the special

-    case where there is only one such character. For negated classes, we build

-    the map as usual, then invert it at the end. However, we use a different

-    opcode so that data characters > 255 can be handled correctly.

-

-    If the class contains characters outside the 0-255 range, a different

-    opcode is compiled. It may optionally have a bit map for characters < 256,

-    but those above are are explicitly listed afterwards. A flag byte tells

-    whether the bitmap is present, and whether this is a negated class or not.

-    */

-

-    case '[':

-    previous = code;

-

-    /* PCRE supports POSIX class stuff inside a class. Perl gives an error if

-    they are encountered at the top level, so we'll do that too. */

-

-    if ((ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') &&

-        check_posix_syntax(ptr, &tempptr, cd))

-      {

-      *errorcodeptr = (ptr[1] == ':')? ERR13 : ERR31;

-      goto FAILED;

-      }

-

-    /* If the first character is '^', set the negation flag and skip it. */

-

-    if ((c = *(++ptr)) == '^')

-      {

-      negate_class = TRUE;

-      c = *(++ptr);

-      }

-    else

-      {

-      negate_class = FALSE;

-      }

-

-    /* Keep a count of chars with values < 256 so that we can optimize the case

-    of just a single character (as long as it's < 256). For higher valued UTF-8

-    characters, we don't yet do any optimization. */

-

-    class_charcount = 0;

-    class_lastchar = -1;

-

-#ifdef SUPPORT_UTF8

-    class_utf8 = FALSE;                       /* No chars >= 256 */

-    class_utf8data = code + LINK_SIZE + 34;   /* For UTF-8 items */

-#endif

-

-    /* Initialize the 32-char bit map to all zeros. We have to build the

-    map in a temporary bit of store, in case the class contains only 1

-    character (< 256), because in that case the compiled code doesn't use the

-    bit map. */

-

-    memset(classbits, 0, 32 * sizeof(uschar));

-

-    /* Process characters until ] is reached. By writing this as a "do" it

-    means that an initial ] is taken as a data character. The first pass

-    through the regex checked the overall syntax, so we don't need to be very

-    strict here. At the start of the loop, c contains the first byte of the

-    character. */

-

-    do

-      {

-#ifdef SUPPORT_UTF8

-      if (utf8 && c > 127)

-        {                           /* Braces are required because the */

-        GETCHARLEN(c, ptr, ptr);    /* macro generates multiple statements */

-        }

-#endif

-

-      /* Inside \Q...\E everything is literal except \E */

-

-      if (inescq)

-        {

-        if (c == '\\' && ptr[1] == 'E')

-          {

-          inescq = FALSE;

-          ptr++;

-          continue;

-          }

-        else goto LONE_SINGLE_CHARACTER;

-        }

-

-      /* Handle POSIX class names. Perl allows a negation extension of the

-      form [:^name:]. A square bracket that doesn't match the syntax is

-      treated as a literal. We also recognize the POSIX constructions

-      [.ch.] and [=ch=] ("collating elements") and fault them, as Perl

-      5.6 and 5.8 do. */

-

-      if (c == '[' &&

-          (ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') &&

-          check_posix_syntax(ptr, &tempptr, cd))

-        {

-        BOOL local_negate = FALSE;

-        int posix_class, i;

-        register const uschar *cbits = cd->cbits;

-

-        if (ptr[1] != ':')

-          {

-          *errorcodeptr = ERR31;

-          goto FAILED;

-          }

-

-        ptr += 2;

-        if (*ptr == '^')

-          {

-          local_negate = TRUE;

-          ptr++;

-          }

-

-        posix_class = check_posix_name(ptr, tempptr - ptr);

-        if (posix_class < 0)

-          {

-          *errorcodeptr = ERR30;

-          goto FAILED;

-          }

-

-        /* If matching is caseless, upper and lower are converted to

-        alpha. This relies on the fact that the class table starts with

-        alpha, lower, upper as the first 3 entries. */

-

-        if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)

-          posix_class = 0;

-

-        /* Or into the map we are building up to 3 of the static class

-        tables, or their negations. The [:blank:] class sets up the same

-        chars as the [:space:] class (all white space). We remove the vertical

-        white space chars afterwards. */

-

-        posix_class *= 3;

-        for (i = 0; i < 3; i++)

-          {

-          BOOL blankclass = strncmp((char *)ptr, "blank", 5) == 0;

-          int taboffset = posix_class_maps[posix_class + i];

-          if (taboffset < 0) break;

-          if (local_negate)

-            {

-            if (i == 0)

-              for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+taboffset];

-            else

-              for (c = 0; c < 32; c++) classbits[c] &= ~cbits[c+taboffset];

-            if (blankclass) classbits[1] |= 0x3c;

-            }

-          else

-            {

-            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+taboffset];

-            if (blankclass) classbits[1] &= ~0x3c;

-            }

-          }

-

-        ptr = tempptr + 1;

-        class_charcount = 10;  /* Set > 1; assumes more than 1 per class */

-        continue;    /* End of POSIX syntax handling */

-        }

-

-      /* Backslash may introduce a single character, or it may introduce one

-      of the specials, which just set a flag. Escaped items are checked for

-      validity in the pre-compiling pass. The sequence \b is a special case.

-      Inside a class (and only there) it is treated as backspace. Elsewhere

-      it marks a word boundary. Other escapes have preset maps ready to

-      or into the one we are building. We assume they have more than one

-      character in them, so set class_charcount bigger than one. */

-

-      if (c == '\\')

-        {

-        c = check_escape(&ptr, errorcodeptr, *brackets, options, TRUE);

-

-        if (-c == ESC_b) c = '\b';       /* \b is backslash in a class */

-        else if (-c == ESC_X) c = 'X';   /* \X is literal X in a class */

-        else if (-c == ESC_Q)            /* Handle start of quoted string */

-          {

-          if (ptr[1] == '\\' && ptr[2] == 'E')

-            {

-            ptr += 2; /* avoid empty string */

-            }

-          else inescq = TRUE;

-          continue;

-          }

-

-        if (c < 0)

-          {

-          register const uschar *cbits = cd->cbits;

-          class_charcount += 2;     /* Greater than 1 is what matters */

-          switch (-c)

-            {

-            case ESC_d:

-            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_digit];

-            continue;

-

-            case ESC_D:

-            for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_digit];

-            continue;

-

-            case ESC_w:

-            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_word];

-            continue;

-

-            case ESC_W:

-            for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_word];

-            continue;

-

-            case ESC_s:

-            for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_space];

-            classbits[1] &= ~0x08;   /* Perl 5.004 onwards omits VT from \s */

-            continue;

-

-            case ESC_S:

-            for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_space];

-            classbits[1] |= 0x08;    /* Perl 5.004 onwards omits VT from \s */

-            continue;

-

-#ifdef SUPPORT_UCP

-            case ESC_p:

-            case ESC_P:

-              {

-              BOOL negated;

-              int property = get_ucp(&ptr, &negated, errorcodeptr);

-              if (property < 0) goto FAILED;

-              class_utf8 = TRUE;

-              *class_utf8data++ = ((-c == ESC_p) != negated)?

-                XCL_PROP : XCL_NOTPROP;

-              *class_utf8data++ = property;

-              class_charcount -= 2;   /* Not a < 256 character */

-              }

-            continue;

-#endif

-

-            /* Unrecognized escapes are faulted if PCRE is running in its

-            strict mode. By default, for compatibility with Perl, they are

-            treated as literals. */

-

-            default:

-            if ((options & PCRE_EXTRA) != 0)

-              {

-              *errorcodeptr = ERR7;

-              goto FAILED;

-              }

-            c = *ptr;              /* The final character */

-            class_charcount -= 2;  /* Undo the default count from above */

-            }

-          }

-

-        /* Fall through if we have a single character (c >= 0). This may be

-        > 256 in UTF-8 mode. */

-

-        }   /* End of backslash handling */

-

-      /* A single character may be followed by '-' to form a range. However,

-      Perl does not permit ']' to be the end of the range. A '-' character

-      here is treated as a literal. */

-

-      if (ptr[1] == '-' && ptr[2] != ']')

-        {

-        int d;

-        ptr += 2;

-

-#ifdef SUPPORT_UTF8

-        if (utf8)

-          {                           /* Braces are required because the */

-          GETCHARLEN(d, ptr, ptr);    /* macro generates multiple statements */

-          }

-        else

-#endif

-        d = *ptr;  /* Not UTF-8 mode */

-

-        /* The second part of a range can be a single-character escape, but

-        not any of the other escapes. Perl 5.6 treats a hyphen as a literal

-        in such circumstances. */

-

-        if (d == '\\')

-          {

-          const uschar *oldptr = ptr;

-          d = check_escape(&ptr, errorcodeptr, *brackets, options, TRUE);

-

-          /* \b is backslash; \X is literal X; any other special means the '-'

-          was literal */

-

-          if (d < 0)

-            {

-            if (d == -ESC_b) d = '\b';

-            else if (d == -ESC_X) d = 'X'; else

-              {

-              ptr = oldptr - 2;

-              goto LONE_SINGLE_CHARACTER;  /* A few lines below */

-              }

-            }

-          }

-

-        /* The check that the two values are in the correct order happens in

-        the pre-pass. Optimize one-character ranges */

-

-        if (d == c) goto LONE_SINGLE_CHARACTER;  /* A few lines below */

-

-        /* In UTF-8 mode, if the upper limit is > 255, or > 127 for caseless

-        matching, we have to use an XCLASS with extra data items. Caseless

-        matching for characters > 127 is available only if UCP support is

-        available. */

-

-#ifdef SUPPORT_UTF8

-        if (utf8 && (d > 255 || ((options & PCRE_CASELESS) != 0 && d > 127)))

-          {

-          class_utf8 = TRUE;

-

-          /* With UCP support, we can find the other case equivalents of

-          the relevant characters. There may be several ranges. Optimize how

-          they fit with the basic range. */

-

-#ifdef SUPPORT_UCP

-          if ((options & PCRE_CASELESS) != 0)

-            {

-            int occ, ocd;

-            int cc = c;

-            int origd = d;

-            while (get_othercase_range(&cc, origd, &occ, &ocd))

-              {

-              if (occ >= c && ocd <= d) continue;  /* Skip embedded ranges */

-

-              if (occ < c  && ocd >= c - 1)        /* Extend the basic range */

-                {                                  /* if there is overlap,   */

-                c = occ;                           /* noting that if occ < c */

-                continue;                          /* we can't have ocd > d  */

-                }                                  /* because a subrange is  */

-              if (ocd > d && occ <= d + 1)         /* always shorter than    */

-                {                                  /* the basic range.       */

-                d = ocd;

-                continue;

-                }

-

-              if (occ == ocd)

-                {

-                *class_utf8data++ = XCL_SINGLE;

-                }

-              else

-                {

-                *class_utf8data++ = XCL_RANGE;

-                class_utf8data += _pcre_ord2utf8(occ, class_utf8data);

-                }

-              class_utf8data += _pcre_ord2utf8(ocd, class_utf8data);

-              }

-            }

-#endif  /* SUPPORT_UCP */

-

-          /* Now record the original range, possibly modified for UCP caseless

-          overlapping ranges. */

-

-          *class_utf8data++ = XCL_RANGE;

-          class_utf8data += _pcre_ord2utf8(c, class_utf8data);

-          class_utf8data += _pcre_ord2utf8(d, class_utf8data);

-

-          /* With UCP support, we are done. Without UCP support, there is no

-          caseless matching for UTF-8 characters > 127; we can use the bit map

-          for the smaller ones. */

-

-#ifdef SUPPORT_UCP

-          continue;    /* With next character in the class */

-#else

-          if ((options & PCRE_CASELESS) == 0 || c > 127) continue;

-

-          /* Adjust upper limit and fall through to set up the map */

-

-          d = 127;

-

-#endif  /* SUPPORT_UCP */

-          }

-#endif  /* SUPPORT_UTF8 */

-

-        /* We use the bit map for all cases when not in UTF-8 mode; else

-        ranges that lie entirely within 0-127 when there is UCP support; else

-        for partial ranges without UCP support. */

-

-        for (; c <= d; c++)

-          {

-          classbits[c/8] |= (1 << (c&7));

-          if ((options & PCRE_CASELESS) != 0)

-            {

-            int uc = cd->fcc[c];           /* flip case */

-            classbits[uc/8] |= (1 << (uc&7));

-            }

-          class_charcount++;                /* in case a one-char range */

-          class_lastchar = c;

-          }

-

-        continue;   /* Go get the next char in the class */

-        }

-

-      /* Handle a lone single character - we can get here for a normal

-      non-escape char, or after \ that introduces a single character or for an

-      apparent range that isn't. */

-

-      LONE_SINGLE_CHARACTER:

-

-      /* Handle a character that cannot go in the bit map */

-

-#ifdef SUPPORT_UTF8

-      if (utf8 && (c > 255 || ((options & PCRE_CASELESS) != 0 && c > 127)))

-        {

-        class_utf8 = TRUE;

-        *class_utf8data++ = XCL_SINGLE;

-        class_utf8data += _pcre_ord2utf8(c, class_utf8data);

-

-#ifdef SUPPORT_UCP

-        if ((options & PCRE_CASELESS) != 0)

-          {

-          int chartype;

-          int othercase;

-          if (_pcre_ucp_findchar(c, &chartype, &othercase) >= 0 &&

-               othercase > 0)

-            {

-            *class_utf8data++ = XCL_SINGLE;

-            class_utf8data += _pcre_ord2utf8(othercase, class_utf8data);

-            }

-          }

-#endif  /* SUPPORT_UCP */

-

-        }

-      else

-#endif  /* SUPPORT_UTF8 */

-

-      /* Handle a single-byte character */

-        {

-        classbits[c/8] |= (1 << (c&7));

-        if ((options & PCRE_CASELESS) != 0)

-          {

-          c = cd->fcc[c];   /* flip case */

-          classbits[c/8] |= (1 << (c&7));

-          }

-        class_charcount++;

-        class_lastchar = c;

-        }

-      }

-

-    /* Loop until ']' reached; the check for end of string happens inside the

-    loop. This "while" is the end of the "do" above. */

-

-    while ((c = *(++ptr)) != ']' || inescq);

-

-    /* If class_charcount is 1, we saw precisely one character whose value is

-    less than 256. In non-UTF-8 mode we can always optimize. In UTF-8 mode, we

-    can optimize the negative case only if there were no characters >= 128

-    because OP_NOT and the related opcodes like OP_NOTSTAR operate on

-    single-bytes only. This is an historical hangover. Maybe one day we can

-    tidy these opcodes to handle multi-byte characters.

-

-    The optimization throws away the bit map. We turn the item into a

-    1-character OP_CHAR[NC] if it's positive, or OP_NOT if it's negative. Note

-    that OP_NOT does not support multibyte characters. In the positive case, it

-    can cause firstbyte to be set. Otherwise, there can be no first char if

-    this item is first, whatever repeat count may follow. In the case of

-    reqbyte, save the previous value for reinstating. */

-

-#ifdef SUPPORT_UTF8

-    if (class_charcount == 1 &&

-          (!utf8 ||

-          (!class_utf8 && (!negate_class || class_lastchar < 128))))

-

-#else

-    if (class_charcount == 1)

-#endif

-      {

-      zeroreqbyte = reqbyte;

-

-      /* The OP_NOT opcode works on one-byte characters only. */

-

-      if (negate_class)

-        {

-        if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;

-        zerofirstbyte = firstbyte;

-        *code++ = OP_NOT;

-        *code++ = class_lastchar;

-        break;

-        }

-

-      /* For a single, positive character, get the value into mcbuffer, and

-      then we can handle this with the normal one-character code. */

-

-#ifdef SUPPORT_UTF8

-      if (utf8 && class_lastchar > 127)

-        mclength = _pcre_ord2utf8(class_lastchar, mcbuffer);

-      else

-#endif

-        {

-        mcbuffer[0] = class_lastchar;

-        mclength = 1;

-        }

-      goto ONE_CHAR;

-      }       /* End of 1-char optimization */

-

-    /* The general case - not the one-char optimization. If this is the first

-    thing in the branch, there can be no first char setting, whatever the

-    repeat count. Any reqbyte setting must remain unchanged after any kind of

-    repeat. */

-

-    if (firstbyte == REQ_UNSET) firstbyte = REQ_NONE;

-    zerofirstbyte = firstbyte;

-    zeroreqbyte = reqbyte;

-

-    /* If there are characters with values > 255, we have to compile an

-    extended class, with its own opcode. If there are no characters < 256,

-    we can omit the bitmap. */

-

-#ifdef SUPPORT_UTF8

-    if (class_utf8)

-      {

-      *class_utf8data++ = XCL_END;    /* Marks the end of extra data */

-      *code++ = OP_XCLASS;

-      code += LINK_SIZE;

-      *code = negate_class? XCL_NOT : 0;

-

-      /* If the map is required, install it, and move on to the end of

-      the extra data */

-

-      if (class_charcount > 0)

-        {

-        *code++ |= XCL_MAP;

-        memcpy(code, classbits, 32);

-        code = class_utf8data;

-        }

-

-      /* If the map is not required, slide down the extra data. */

-

-      else

-        {

-        int len = class_utf8data - (code + 33);

-        memmove(code + 1, code + 33, len);

-        code += len + 1;

-        }

-

-      /* Now fill in the complete length of the item */

-

-      PUT(previous, 1, code - previous);

-      break;   /* End of class handling */

-      }

-#endif

-

-    /* If there are no characters > 255, negate the 32-byte map if necessary,

-    and copy it into the code vector. If this is the first thing in the branch,

-    there can be no first char setting, whatever the repeat count. Any reqbyte

-    setting must remain unchanged after any kind of repeat. */

-

-    if (negate_class)

-      {

-      *code++ = OP_NCLASS;

-      for (c = 0; c < 32; c++) code[c] = ~classbits[c];

-      }

-    else

-      {

-      *code++ = OP_CLASS;

-      memcpy(code, classbits, 32);

-      }

-    code += 32;

-    break;

-

-    /* Various kinds of repeat; '{' is not necessarily a quantifier, but this

-    has been tested above. */

-

-    case '{':

-    if (!is_quantifier) goto NORMAL_CHAR;

-    ptr = read_repeat_counts(ptr+1, &repeat_min, &repeat_max, errorcodeptr);

-    if (*errorcodeptr != 0) goto FAILED;

-    goto REPEAT;

-

-    case '*':

-    repeat_min = 0;

-    repeat_max = -1;

-    goto REPEAT;

-

-    case '+':

-    repeat_min = 1;

-    repeat_max = -1;

-    goto REPEAT;

-

-    case '?':

-    repeat_min = 0;

-    repeat_max = 1;

-

-    REPEAT:

-    if (previous == NULL)

-      {

-      *errorcodeptr = ERR9;

-      goto FAILED;

-      }

-

-    if (repeat_min == 0)

-      {

-      firstbyte = zerofirstbyte;    /* Adjust for zero repeat */

-      reqbyte = zeroreqbyte;        /* Ditto */

-      }

-

-    /* Remember whether this is a variable length repeat */

-

-    reqvary = (repeat_min == repeat_max)? 0 : REQ_VARY;

-

-    op_type = 0;                    /* Default single-char op codes */

-    possessive_quantifier = FALSE;  /* Default not possessive quantifier */

-

-    /* Save start of previous item, in case we have to move it up to make space

-    for an inserted OP_ONCE for the additional '+' extension. */

-

-    tempcode = previous;

-

-    /* If the next character is '+', we have a possessive quantifier. This

-    implies greediness, whatever the setting of the PCRE_UNGREEDY option.

-    If the next character is '?' this is a minimizing repeat, by default,

-    but if PCRE_UNGREEDY is set, it works the other way round. We change the

-    repeat type to the non-default. */

-

-    if (ptr[1] == '+')

-      {

-      repeat_type = 0;                  /* Force greedy */

-      possessive_quantifier = TRUE;

-      ptr++;

-      }

-    else if (ptr[1] == '?')

-      {

-      repeat_type = greedy_non_default;

-      ptr++;

-      }

-    else repeat_type = greedy_default;

-

-    /* If previous was a recursion, we need to wrap it inside brackets so that

-    it can be replicated if necessary. */

-

-    if (*previous == OP_RECURSE)

-      {

-      memmove(previous + 1 + LINK_SIZE, previous, 1 + LINK_SIZE);

-      code += 1 + LINK_SIZE;

-      *previous = OP_BRA;

-      PUT(previous, 1, code - previous);

-      *code = OP_KET;

-      PUT(code, 1, code - previous);

-      code += 1 + LINK_SIZE;

-      }

-

-    /* If previous was a character match, abolish the item and generate a

-    repeat item instead. If a char item has a minumum of more than one, ensure

-    that it is set in reqbyte - it might not be if a sequence such as x{3} is

-    the first thing in a branch because the x will have gone into firstbyte

-    instead.  */

-

-    if (*previous == OP_CHAR || *previous == OP_CHARNC)

-      {

-      /* Deal with UTF-8 characters that take up more than one byte. It's

-      easier to write this out separately than try to macrify it. Use c to

-      hold the length of the character in bytes, plus 0x80 to flag that it's a

-      length rather than a small character. */

-

-#ifdef SUPPORT_UTF8

-      if (utf8 && (code[-1] & 0x80) != 0)

-        {

-        uschar *lastchar = code - 1;

-        while((*lastchar & 0xc0) == 0x80) lastchar--;

-        c = code - lastchar;            /* Length of UTF-8 character */

-        memcpy(utf8_char, lastchar, c); /* Save the char */

-        c |= 0x80;                      /* Flag c as a length */

-        }

-      else

-#endif

-

-      /* Handle the case of a single byte - either with no UTF8 support, or

-      with UTF-8 disabled, or for a UTF-8 character < 128. */

-

-        {

-        c = code[-1];

-        if (repeat_min > 1) reqbyte = c | req_caseopt | cd->req_varyopt;

-        }

-

-      goto OUTPUT_SINGLE_REPEAT;   /* Code shared with single character types */

-      }

-

-    /* If previous was a single negated character ([^a] or similar), we use

-    one of the special opcodes, replacing it. The code is shared with single-

-    character repeats by setting opt_type to add a suitable offset into

-    repeat_type. OP_NOT is currently used only for single-byte chars. */

-

-    else if (*previous == OP_NOT)

-      {

-      op_type = OP_NOTSTAR - OP_STAR;  /* Use "not" opcodes */

-      c = previous[1];

-      goto OUTPUT_SINGLE_REPEAT;

-      }

-

-    /* If previous was a character type match (\d or similar), abolish it and

-    create a suitable repeat item. The code is shared with single-character

-    repeats by setting op_type to add a suitable offset into repeat_type. Note

-    the the Unicode property types will be present only when SUPPORT_UCP is

-    defined, but we don't wrap the little bits of code here because it just

-    makes it horribly messy. */

-

-    else if (*previous < OP_EODN)

-      {

-      uschar *oldcode;

-      int prop_type;

-      op_type = OP_TYPESTAR - OP_STAR;  /* Use type opcodes */

-      c = *previous;

-

-      OUTPUT_SINGLE_REPEAT:

-      prop_type = (*previous == OP_PROP || *previous == OP_NOTPROP)?

-        previous[1] : -1;

-

-      oldcode = code;

-      code = previous;                  /* Usually overwrite previous item */

-

-      /* If the maximum is zero then the minimum must also be zero; Perl allows

-      this case, so we do too - by simply omitting the item altogether. */

-

-      if (repeat_max == 0) goto END_REPEAT;

-

-      /* All real repeats make it impossible to handle partial matching (maybe

-      one day we will be able to remove this restriction). */

-

-      if (repeat_max != 1) cd->nopartial = TRUE;

-

-      /* Combine the op_type with the repeat_type */

-

-      repeat_type += op_type;

-

-      /* A minimum of zero is handled either as the special case * or ?, or as

-      an UPTO, with the maximum given. */

-

-      if (repeat_min == 0)

-        {

-        if (repeat_max == -1) *code++ = OP_STAR + repeat_type;

-          else if (repeat_max == 1) *code++ = OP_QUERY + repeat_type;

-        else

-          {

-          *code++ = OP_UPTO + repeat_type;

-          PUT2INC(code, 0, repeat_max);

-          }

-        }

-

-      /* A repeat minimum of 1 is optimized into some special cases. If the

-      maximum is unlimited, we use OP_PLUS. Otherwise, the original item it

-      left in place and, if the maximum is greater than 1, we use OP_UPTO with

-      one less than the maximum. */

-

-      else if (repeat_min == 1)

-        {

-        if (repeat_max == -1)

-          *code++ = OP_PLUS + repeat_type;

-        else

-          {

-          code = oldcode;                 /* leave previous item in place */

-          if (repeat_max == 1) goto END_REPEAT;

-          *code++ = OP_UPTO + repeat_type;

-          PUT2INC(code, 0, repeat_max - 1);

-          }

-        }

-

-      /* The case {n,n} is just an EXACT, while the general case {n,m} is

-      handled as an EXACT followed by an UPTO. */

-

-      else

-        {

-        *code++ = OP_EXACT + op_type;  /* NB EXACT doesn't have repeat_type */

-        PUT2INC(code, 0, repeat_min);

-

-        /* If the maximum is unlimited, insert an OP_STAR. Before doing so,

-        we have to insert the character for the previous code. For a repeated

-        Unicode property match, there is an extra byte that defines the

-        required property. In UTF-8 mode, long characters have their length in

-        c, with the 0x80 bit as a flag. */

-

-        if (repeat_max < 0)

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && c >= 128)

-            {

-            memcpy(code, utf8_char, c & 7);

-            code += c & 7;

-            }

-          else

-#endif

-            {

-            *code++ = c;

-            if (prop_type >= 0) *code++ = prop_type;

-            }

-          *code++ = OP_STAR + repeat_type;

-          }

-

-        /* Else insert an UPTO if the max is greater than the min, again

-        preceded by the character, for the previously inserted code. */

-

-        else if (repeat_max != repeat_min)

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && c >= 128)

-            {

-            memcpy(code, utf8_char, c & 7);

-            code += c & 7;

-            }

-          else

-#endif

-          *code++ = c;

-          if (prop_type >= 0) *code++ = prop_type;

-          repeat_max -= repeat_min;

-          *code++ = OP_UPTO + repeat_type;

-          PUT2INC(code, 0, repeat_max);

-          }

-        }

-

-      /* The character or character type itself comes last in all cases. */

-

-#ifdef SUPPORT_UTF8

-      if (utf8 && c >= 128)

-        {

-        memcpy(code, utf8_char, c & 7);

-        code += c & 7;

-        }

-      else

-#endif

-      *code++ = c;

-

-      /* For a repeated Unicode property match, there is an extra byte that

-      defines the required property. */

-

-#ifdef SUPPORT_UCP

-      if (prop_type >= 0) *code++ = prop_type;

-#endif

-      }

-

-    /* If previous was a character class or a back reference, we put the repeat

-    stuff after it, but just skip the item if the repeat was {0,0}. */

-

-    else if (*previous == OP_CLASS ||

-             *previous == OP_NCLASS ||

-#ifdef SUPPORT_UTF8

-             *previous == OP_XCLASS ||

-#endif

-             *previous == OP_REF)

-      {

-      if (repeat_max == 0)

-        {

-        code = previous;

-        goto END_REPEAT;

-        }

-

-      /* All real repeats make it impossible to handle partial matching (maybe

-      one day we will be able to remove this restriction). */

-

-      if (repeat_max != 1) cd->nopartial = TRUE;

-

-      if (repeat_min == 0 && repeat_max == -1)

-        *code++ = OP_CRSTAR + repeat_type;

-      else if (repeat_min == 1 && repeat_max == -1)

-        *code++ = OP_CRPLUS + repeat_type;

-      else if (repeat_min == 0 && repeat_max == 1)

-        *code++ = OP_CRQUERY + repeat_type;

-      else

-        {

-        *code++ = OP_CRRANGE + repeat_type;

-        PUT2INC(code, 0, repeat_min);

-        if (repeat_max == -1) repeat_max = 0;  /* 2-byte encoding for max */

-        PUT2INC(code, 0, repeat_max);

-        }

-      }

-

-    /* If previous was a bracket group, we may have to replicate it in certain

-    cases. */

-

-    else if (*previous >= OP_BRA || *previous == OP_ONCE ||

-             *previous == OP_COND)

-      {

-      register int i;

-      int ketoffset = 0;

-      int len = code - previous;

-      uschar *bralink = NULL;

-

-      /* If the maximum repeat count is unlimited, find the end of the bracket

-      by scanning through from the start, and compute the offset back to it

-      from the current code pointer. There may be an OP_OPT setting following

-      the final KET, so we can't find the end just by going back from the code

-      pointer. */

-

-      if (repeat_max == -1)

-        {

-        register uschar *ket = previous;

-        do ket += GET(ket, 1); while (*ket != OP_KET);

-        ketoffset = code - ket;

-        }

-

-      /* The case of a zero minimum is special because of the need to stick

-      OP_BRAZERO in front of it, and because the group appears once in the

-      data, whereas in other cases it appears the minimum number of times. For

-      this reason, it is simplest to treat this case separately, as otherwise

-      the code gets far too messy. There are several special subcases when the

-      minimum is zero. */

-

-      if (repeat_min == 0)

-        {

-        /* If the maximum is also zero, we just omit the group from the output

-        altogether. */

-

-        if (repeat_max == 0)

-          {

-          code = previous;

-          goto END_REPEAT;

-          }

-

-        /* If the maximum is 1 or unlimited, we just have to stick in the

-        BRAZERO and do no more at this point. However, we do need to adjust

-        any OP_RECURSE calls inside the group that refer to the group itself or

-        any internal group, because the offset is from the start of the whole

-        regex. Temporarily terminate the pattern while doing this. */

-

-        if (repeat_max <= 1)

-          {

-          *code = OP_END;

-          adjust_recurse(previous, 1, utf8, cd);

-          memmove(previous+1, previous, len);

-          code++;

-          *previous++ = OP_BRAZERO + repeat_type;

-          }

-

-        /* If the maximum is greater than 1 and limited, we have to replicate

-        in a nested fashion, sticking OP_BRAZERO before each set of brackets.

-        The first one has to be handled carefully because it's the original

-        copy, which has to be moved up. The remainder can be handled by code

-        that is common with the non-zero minimum case below. We have to

-        adjust the value or repeat_max, since one less copy is required. Once

-        again, we may have to adjust any OP_RECURSE calls inside the group. */

-

-        else

-          {

-          int offset;

-          *code = OP_END;

-          adjust_recurse(previous, 2 + LINK_SIZE, utf8, cd);

-          memmove(previous + 2 + LINK_SIZE, previous, len);

-          code += 2 + LINK_SIZE;

-          *previous++ = OP_BRAZERO + repeat_type;

-          *previous++ = OP_BRA;

-

-          /* We chain together the bracket offset fields that have to be

-          filled in later when the ends of the brackets are reached. */

-

-          offset = (bralink == NULL)? 0 : previous - bralink;

-          bralink = previous;

-          PUTINC(previous, 0, offset);

-          }

-

-        repeat_max--;

-        }

-

-      /* If the minimum is greater than zero, replicate the group as many

-      times as necessary, and adjust the maximum to the number of subsequent

-      copies that we need. If we set a first char from the group, and didn't

-      set a required char, copy the latter from the former. */

-

-      else

-        {

-        if (repeat_min > 1)

-          {

-          if (groupsetfirstbyte && reqbyte < 0) reqbyte = firstbyte;

-          for (i = 1; i < repeat_min; i++)

-            {

-            memcpy(code, previous, len);

-            code += len;

-            }

-          }

-        if (repeat_max > 0) repeat_max -= repeat_min;

-        }

-

-      /* This code is common to both the zero and non-zero minimum cases. If

-      the maximum is limited, it replicates the group in a nested fashion,

-      remembering the bracket starts on a stack. In the case of a zero minimum,

-      the first one was set up above. In all cases the repeat_max now specifies

-      the number of additional copies needed. */

-

-      if (repeat_max >= 0)

-        {

-        for (i = repeat_max - 1; i >= 0; i--)

-          {

-          *code++ = OP_BRAZERO + repeat_type;

-

-          /* All but the final copy start a new nesting, maintaining the

-          chain of brackets outstanding. */

-

-          if (i != 0)

-            {

-            int offset;

-            *code++ = OP_BRA;

-            offset = (bralink == NULL)? 0 : code - bralink;

-            bralink = code;

-            PUTINC(code, 0, offset);

-            }

-

-          memcpy(code, previous, len);

-          code += len;

-          }

-

-        /* Now chain through the pending brackets, and fill in their length

-        fields (which are holding the chain links pro tem). */

-

-        while (bralink != NULL)

-          {

-          int oldlinkoffset;

-          int offset = code - bralink + 1;

-          uschar *bra = code - offset;

-          oldlinkoffset = GET(bra, 1);

-          bralink = (oldlinkoffset == 0)? NULL : bralink - oldlinkoffset;

-          *code++ = OP_KET;

-          PUTINC(code, 0, offset);

-          PUT(bra, 1, offset);

-          }

-        }

-

-      /* If the maximum is unlimited, set a repeater in the final copy. We

-      can't just offset backwards from the current code point, because we

-      don't know if there's been an options resetting after the ket. The

-      correct offset was computed above. */

-

-      else code[-ketoffset] = OP_KETRMAX + repeat_type;

-      }

-

-    /* Else there's some kind of shambles */

-

-    else

-      {

-      *errorcodeptr = ERR11;

-      goto FAILED;

-      }

-

-    /* If the character following a repeat is '+', we wrap the entire repeated

-    item inside OP_ONCE brackets. This is just syntactic sugar, taken from

-    Sun's Java package. The repeated item starts at tempcode, not at previous,

-    which might be the first part of a string whose (former) last char we

-    repeated. However, we don't support '+' after a greediness '?'. */

-

-    if (possessive_quantifier)

-      {

-      int len = code - tempcode;

-      memmove(tempcode + 1+LINK_SIZE, tempcode, len);

-      code += 1 + LINK_SIZE;

-      len += 1 + LINK_SIZE;

-      tempcode[0] = OP_ONCE;

-      *code++ = OP_KET;

-      PUTINC(code, 0, len);

-      PUT(tempcode, 1, len);

-      }

-

-    /* In all case we no longer have a previous item. We also set the

-    "follows varying string" flag for subsequently encountered reqbytes if

-    it isn't already set and we have just passed a varying length item. */

-

-    END_REPEAT:

-    previous = NULL;

-    cd->req_varyopt |= reqvary;

-    break;

-

-

-    /* Start of nested bracket sub-expression, or comment or lookahead or

-    lookbehind or option setting or condition. First deal with special things

-    that can come after a bracket; all are introduced by ?, and the appearance

-    of any of them means that this is not a referencing group. They were

-    checked for validity in the first pass over the string, so we don't have to

-    check for syntax errors here.  */

-

-    case '(':

-    newoptions = options;

-    skipbytes = 0;

-

-    if (*(++ptr) == '?')

-      {

-      int set, unset;

-      int *optset;

-

-      switch (*(++ptr))

-        {

-        case '#':                 /* Comment; skip to ket */

-        ptr++;

-        while (*ptr != ')') ptr++;

-        continue;

-

-        case ':':                 /* Non-extracting bracket */

-        bravalue = OP_BRA;

-        ptr++;

-        break;

-

-        case '(':

-        bravalue = OP_COND;       /* Conditional group */

-

-        /* Condition to test for recursion */

-

-        if (ptr[1] == 'R')

-          {

-          code[1+LINK_SIZE] = OP_CREF;

-          PUT2(code, 2+LINK_SIZE, CREF_RECURSE);

-          skipbytes = 3;

-          ptr += 3;

-          }

-

-        /* Condition to test for a numbered subpattern match. We know that

-        if a digit follows ( then there will just be digits until ) because

-        the syntax was checked in the first pass. */

-

-        else if ((digitab[ptr[1]] && ctype_digit) != 0)

-          {

-          int condref;                 /* Don't amalgamate; some compilers */

-          condref = *(++ptr) - '0';    /* grumble at autoincrement in declaration */

-          while (*(++ptr) != ')') condref = condref*10 + *ptr - '0';

-          if (condref == 0)

-            {

-            *errorcodeptr = ERR35;

-            goto FAILED;

-            }

-          ptr++;

-          code[1+LINK_SIZE] = OP_CREF;

-          PUT2(code, 2+LINK_SIZE, condref);

-          skipbytes = 3;

-          }

-        /* For conditions that are assertions, we just fall through, having

-        set bravalue above. */

-        break;

-

-        case '=':                 /* Positive lookahead */

-        bravalue = OP_ASSERT;

-        ptr++;

-        break;

-

-        case '!':                 /* Negative lookahead */

-        bravalue = OP_ASSERT_NOT;

-        ptr++;

-        break;

-

-        case '<':                 /* Lookbehinds */

-        switch (*(++ptr))

-          {

-          case '=':               /* Positive lookbehind */

-          bravalue = OP_ASSERTBACK;

-          ptr++;

-          break;

-

-          case '!':               /* Negative lookbehind */

-          bravalue = OP_ASSERTBACK_NOT;

-          ptr++;

-          break;

-          }

-        break;

-

-        case '>':                 /* One-time brackets */

-        bravalue = OP_ONCE;

-        ptr++;

-        break;

-

-        case 'C':                 /* Callout - may be followed by digits; */

-        previous_callout = code;  /* Save for later completion */

-        after_manual_callout = 1; /* Skip one item before completing */

-        *code++ = OP_CALLOUT;     /* Already checked that the terminating */

-          {                       /* closing parenthesis is present. */

-          int n = 0;

-          while ((digitab[*(++ptr)] & ctype_digit) != 0)

-            n = n * 10 + *ptr - '0';

-          if (n > 255)

-            {

-            *errorcodeptr = ERR38;

-            goto FAILED;

-            }

-          *code++ = n;

-          PUT(code, 0, ptr - cd->start_pattern + 1);  /* Pattern offset */

-          PUT(code, LINK_SIZE, 0);                    /* Default length */

-          code += 2 * LINK_SIZE;

-          }

-        previous = NULL;

-        continue;

-

-        case 'P':                 /* Named subpattern handling */

-        if (*(++ptr) == '<')      /* Definition */

-          {

-          int i, namelen;

-          uschar *slot = cd->name_table;

-          const uschar *name;     /* Don't amalgamate; some compilers */

-          name = ++ptr;           /* grumble at autoincrement in declaration */

-

-          while (*ptr++ != '>');

-          namelen = ptr - name - 1;

-

-          for (i = 0; i < cd->names_found; i++)

-            {

-            int crc = memcmp(name, slot+2, namelen);

-            if (crc == 0)

-              {

-              if (slot[2+namelen] == 0)

-                {

-                *errorcodeptr = ERR43;

-                goto FAILED;

-                }

-              crc = -1;             /* Current name is substring */

-              }

-            if (crc < 0)

-              {

-              memmove(slot + cd->name_entry_size, slot,

-                (cd->names_found - i) * cd->name_entry_size);

-              break;

-              }

-            slot += cd->name_entry_size;

-            }

-

-          PUT2(slot, 0, *brackets + 1);

-          memcpy(slot + 2, name, namelen);

-          slot[2+namelen] = 0;

-          cd->names_found++;

-          goto NUMBERED_GROUP;

-          }

-

-        if (*ptr == '=' || *ptr == '>')  /* Reference or recursion */

-          {

-          int i, namelen;

-          int type = *ptr++;

-          const uschar *name = ptr;

-          uschar *slot = cd->name_table;

-

-          while (*ptr != ')') ptr++;

-          namelen = ptr - name;

-

-          for (i = 0; i < cd->names_found; i++)

-            {

-            if (strncmp((char *)name, (char *)slot+2, namelen) == 0) break;

-            slot += cd->name_entry_size;

-            }

-          if (i >= cd->names_found)

-            {

-            *errorcodeptr = ERR15;

-            goto FAILED;

-            }

-

-          recno = GET2(slot, 0);

-

-          if (type == '>') goto HANDLE_RECURSION;  /* A few lines below */

-

-          /* Back reference */

-

-          previous = code;

-          *code++ = OP_REF;

-          PUT2INC(code, 0, recno);

-          cd->backref_map |= (recno < 32)? (1 << recno) : 1;

-          if (recno > cd->top_backref) cd->top_backref = recno;

-          continue;

-          }

-

-        /* Should never happen */

-        break;

-

-        case 'R':                 /* Pattern recursion */

-        ptr++;                    /* Same as (?0)      */

-        /* Fall through */

-

-        /* Recursion or "subroutine" call */

-

-        case '0': case '1': case '2': case '3': case '4':

-        case '5': case '6': case '7': case '8': case '9':

-          {

-          const uschar *called;

-          recno = 0;

-          while((digitab[*ptr] & ctype_digit) != 0)

-            recno = recno * 10 + *ptr++ - '0';

-

-          /* Come here from code above that handles a named recursion */

-

-          HANDLE_RECURSION:

-

-          previous = code;

-

-          /* Find the bracket that is being referenced. Temporarily end the

-          regex in case it doesn't exist. */

-

-          *code = OP_END;

-          called = (recno == 0)?

-            cd->start_code : find_bracket(cd->start_code, utf8, recno);

-

-          if (called == NULL)

-            {

-            *errorcodeptr = ERR15;

-            goto FAILED;

-            }

-

-          /* If the subpattern is still open, this is a recursive call. We

-          check to see if this is a left recursion that could loop for ever,

-          and diagnose that case. */

-

-          if (GET(called, 1) == 0 && could_be_empty(called, code, bcptr, utf8))

-            {

-            *errorcodeptr = ERR40;

-            goto FAILED;

-            }

-

-          /* Insert the recursion/subroutine item */

-

-          *code = OP_RECURSE;

-          PUT(code, 1, called - cd->start_code);

-          code += 1 + LINK_SIZE;

-          }

-        continue;

-

-        /* Character after (? not specially recognized */

-

-        default:                  /* Option setting */

-        set = unset = 0;

-        optset = &set;

-

-        while (*ptr != ')' && *ptr != ':')

-          {

-          switch (*ptr++)

-            {

-            case '-': optset = &unset; break;

-

-            case 'i': *optset |= PCRE_CASELESS; break;

-            case 'm': *optset |= PCRE_MULTILINE; break;

-            case 's': *optset |= PCRE_DOTALL; break;

-            case 'x': *optset |= PCRE_EXTENDED; break;

-            case 'U': *optset |= PCRE_UNGREEDY; break;

-            case 'X': *optset |= PCRE_EXTRA; break;

-            }

-          }

-

-        /* Set up the changed option bits, but don't change anything yet. */

-

-        newoptions = (options | set) & (~unset);

-

-        /* If the options ended with ')' this is not the start of a nested

-        group with option changes, so the options change at this level. Compile

-        code to change the ims options if this setting actually changes any of

-        them. We also pass the new setting back so that it can be put at the

-        start of any following branches, and when this group ends (if we are in

-        a group), a resetting item can be compiled.

-

-        Note that if this item is right at the start of the pattern, the

-        options will have been abstracted and made global, so there will be no

-        change to compile. */

-

-        if (*ptr == ')')

-          {

-          if ((options & PCRE_IMS) != (newoptions & PCRE_IMS))

-            {

-            *code++ = OP_OPT;

-            *code++ = newoptions & PCRE_IMS;

-            }

-

-          /* Change options at this level, and pass them back for use

-          in subsequent branches. Reset the greedy defaults and the case

-          value for firstbyte and reqbyte. */

-

-          *optionsptr = options = newoptions;

-          greedy_default = ((newoptions & PCRE_UNGREEDY) != 0);

-          greedy_non_default = greedy_default ^ 1;

-          req_caseopt = ((options & PCRE_CASELESS) != 0)? REQ_CASELESS : 0;

-

-          previous = NULL;       /* This item can't be repeated */

-          continue;              /* It is complete */

-          }

-

-        /* If the options ended with ':' we are heading into a nested group

-        with possible change of options. Such groups are non-capturing and are

-        not assertions of any kind. All we need to do is skip over the ':';

-        the newoptions value is handled below. */

-

-        bravalue = OP_BRA;

-        ptr++;

-        }

-      }

-

-    /* If PCRE_NO_AUTO_CAPTURE is set, all unadorned brackets become

-    non-capturing and behave like (?:...) brackets */

-

-    else if ((options & PCRE_NO_AUTO_CAPTURE) != 0)

-      {

-      bravalue = OP_BRA;

-      }

-

-    /* Else we have a referencing group; adjust the opcode. If the bracket

-    number is greater than EXTRACT_BASIC_MAX, we set the opcode one higher, and

-    arrange for the true number to follow later, in an OP_BRANUMBER item. */

-

-    else

-      {

-      NUMBERED_GROUP:

-      if (++(*brackets) > EXTRACT_BASIC_MAX)

-        {

-        bravalue = OP_BRA + EXTRACT_BASIC_MAX + 1;

-        code[1+LINK_SIZE] = OP_BRANUMBER;

-        PUT2(code, 2+LINK_SIZE, *brackets);

-        skipbytes = 3;

-        }

-      else bravalue = OP_BRA + *brackets;

-      }

-

-    /* Process nested bracketed re. Assertions may not be repeated, but other

-    kinds can be. We copy code into a non-register variable in order to be able

-    to pass its address because some compilers complain otherwise. Pass in a

-    new setting for the ims options if they have changed. */

-

-    previous = (bravalue >= OP_ONCE)? code : NULL;

-    *code = bravalue;

-    tempcode = code;

-    tempreqvary = cd->req_varyopt;     /* Save value before bracket */

-

-    if (!compile_regex(

-         newoptions,                   /* The complete new option state */

-         options & PCRE_IMS,           /* The previous ims option state */

-         brackets,                     /* Extracting bracket count */

-         &tempcode,                    /* Where to put code (updated) */

-         &ptr,                         /* Input pointer (updated) */

-         errorcodeptr,                 /* Where to put an error message */

-         (bravalue == OP_ASSERTBACK ||

-          bravalue == OP_ASSERTBACK_NOT), /* TRUE if back assert */

-         skipbytes,                    /* Skip over OP_COND/OP_BRANUMBER */

-         &subfirstbyte,                /* For possible first char */

-         &subreqbyte,                  /* For possible last char */

-         bcptr,                        /* Current branch chain */

-         cd))                          /* Tables block */

-      goto FAILED;

-

-    /* At the end of compiling, code is still pointing to the start of the

-    group, while tempcode has been updated to point past the end of the group

-    and any option resetting that may follow it. The pattern pointer (ptr)

-    is on the bracket. */

-

-    /* If this is a conditional bracket, check that there are no more than

-    two branches in the group. */

-

-    else if (bravalue == OP_COND)

-      {

-      uschar *tc = code;

-      condcount = 0;

-

-      do {

-         condcount++;

-         tc += GET(tc,1);

-         }

-      while (*tc != OP_KET);

-

-      if (condcount > 2)

-        {

-        *errorcodeptr = ERR27;

-        goto FAILED;

-        }

-

-      /* If there is just one branch, we must not make use of its firstbyte or

-      reqbyte, because this is equivalent to an empty second branch. */

-

-      if (condcount == 1) subfirstbyte = subreqbyte = REQ_NONE;

-      }

-

-    /* Handle updating of the required and first characters. Update for normal

-    brackets of all kinds, and conditions with two branches (see code above).

-    If the bracket is followed by a quantifier with zero repeat, we have to

-    back off. Hence the definition of zeroreqbyte and zerofirstbyte outside the

-    main loop so that they can be accessed for the back off. */

-

-    zeroreqbyte = reqbyte;

-    zerofirstbyte = firstbyte;

-    groupsetfirstbyte = FALSE;

-

-    if (bravalue >= OP_BRA || bravalue == OP_ONCE || bravalue == OP_COND)

-      {

-      /* If we have not yet set a firstbyte in this branch, take it from the

-      subpattern, remembering that it was set here so that a repeat of more

-      than one can replicate it as reqbyte if necessary. If the subpattern has

-      no firstbyte, set "none" for the whole branch. In both cases, a zero

-      repeat forces firstbyte to "none". */

-

-      if (firstbyte == REQ_UNSET)

-        {

-        if (subfirstbyte >= 0)

-          {

-          firstbyte = subfirstbyte;

-          groupsetfirstbyte = TRUE;

-          }

-        else firstbyte = REQ_NONE;

-        zerofirstbyte = REQ_NONE;

-        }

-

-      /* If firstbyte was previously set, convert the subpattern's firstbyte

-      into reqbyte if there wasn't one, using the vary flag that was in

-      existence beforehand. */

-

-      else if (subfirstbyte >= 0 && subreqbyte < 0)

-        subreqbyte = subfirstbyte | tempreqvary;

-

-      /* If the subpattern set a required byte (or set a first byte that isn't

-      really the first byte - see above), set it. */

-

-      if (subreqbyte >= 0) reqbyte = subreqbyte;

-      }

-

-    /* For a forward assertion, we take the reqbyte, if set. This can be

-    helpful if the pattern that follows the assertion doesn't set a different

-    char. For example, it's useful for /(?=abcde).+/. We can't set firstbyte

-    for an assertion, however because it leads to incorrect effect for patterns

-    such as /(?=a)a.+/ when the "real" "a" would then become a reqbyte instead

-    of a firstbyte. This is overcome by a scan at the end if there's no

-    firstbyte, looking for an asserted first char. */

-

-    else if (bravalue == OP_ASSERT && subreqbyte >= 0) reqbyte = subreqbyte;

-

-    /* Now update the main code pointer to the end of the group. */

-

-    code = tempcode;

-

-    /* Error if hit end of pattern */

-

-    if (*ptr != ')')

-      {

-      *errorcodeptr = ERR14;

-      goto FAILED;

-      }

-    break;

-

-    /* Check \ for being a real metacharacter; if not, fall through and handle

-    it as a data character at the start of a string. Escape items are checked

-    for validity in the pre-compiling pass. */

-

-    case '\\':

-    tempptr = ptr;

-    c = check_escape(&ptr, errorcodeptr, *brackets, options, FALSE);

-

-    /* Handle metacharacters introduced by \. For ones like \d, the ESC_ values

-    are arranged to be the negation of the corresponding OP_values. For the

-    back references, the values are ESC_REF plus the reference number. Only

-    back references and those types that consume a character may be repeated.

-    We can test for values between ESC_b and ESC_Z for the latter; this may

-    have to change if any new ones are ever created. */

-

-    if (c < 0)

-      {

-      if (-c == ESC_Q)            /* Handle start of quoted string */

-        {

-        if (ptr[1] == '\\' && ptr[2] == 'E') ptr += 2; /* avoid empty string */

-          else inescq = TRUE;

-        continue;

-        }

-

-      /* For metasequences that actually match a character, we disable the

-      setting of a first character if it hasn't already been set. */

-

-      if (firstbyte == REQ_UNSET && -c > ESC_b && -c < ESC_Z)

-        firstbyte = REQ_NONE;

-

-      /* Set values to reset to if this is followed by a zero repeat. */

-

-      zerofirstbyte = firstbyte;

-      zeroreqbyte = reqbyte;

-

-      /* Back references are handled specially */

-

-      if (-c >= ESC_REF)

-        {

-        int number = -c - ESC_REF;

-        previous = code;

-        *code++ = OP_REF;

-        PUT2INC(code, 0, number);

-        }

-

-      /* So are Unicode property matches, if supported. We know that get_ucp

-      won't fail because it was tested in the pre-pass. */

-

-#ifdef SUPPORT_UCP

-      else if (-c == ESC_P || -c == ESC_p)

-        {

-        BOOL negated;

-        int value = get_ucp(&ptr, &negated, errorcodeptr);

-        previous = code;

-        *code++ = ((-c == ESC_p) != negated)? OP_PROP : OP_NOTPROP;

-        *code++ = value;

-        }

-#endif

-

-      /* For the rest, we can obtain the OP value by negating the escape

-      value */

-

-      else

-        {

-        previous = (-c > ESC_b && -c < ESC_Z)? code : NULL;

-        *code++ = -c;

-        }

-      continue;

-      }

-

-    /* We have a data character whose value is in c. In UTF-8 mode it may have

-    a value > 127. We set its representation in the length/buffer, and then

-    handle it as a data character. */

-

-#ifdef SUPPORT_UTF8

-    if (utf8 && c > 127)

-      mclength = _pcre_ord2utf8(c, mcbuffer);

-    else

-#endif

-

-     {

-     mcbuffer[0] = c;

-     mclength = 1;

-     }

-

-    goto ONE_CHAR;

-

-    /* Handle a literal character. It is guaranteed not to be whitespace or #

-    when the extended flag is set. If we are in UTF-8 mode, it may be a

-    multi-byte literal character. */

-

-    default:

-    NORMAL_CHAR:

-    mclength = 1;

-    mcbuffer[0] = c;

-

-#ifdef SUPPORT_UTF8

-    if (utf8 && (c & 0xc0) == 0xc0)

-      {

-      while ((ptr[1] & 0xc0) == 0x80)

-        mcbuffer[mclength++] = *(++ptr);

-      }

-#endif

-

-    /* At this point we have the character's bytes in mcbuffer, and the length

-    in mclength. When not in UTF-8 mode, the length is always 1. */

-

-    ONE_CHAR:

-    previous = code;

-    *code++ = ((options & PCRE_CASELESS) != 0)? OP_CHARNC : OP_CHAR;

-    for (c = 0; c < mclength; c++) *code++ = mcbuffer[c];

-

-    /* Set the first and required bytes appropriately. If no previous first

-    byte, set it from this character, but revert to none on a zero repeat.

-    Otherwise, leave the firstbyte value alone, and don't change it on a zero

-    repeat. */

-

-    if (firstbyte == REQ_UNSET)

-      {

-      zerofirstbyte = REQ_NONE;

-      zeroreqbyte = reqbyte;

-

-      /* If the character is more than one byte long, we can set firstbyte

-      only if it is not to be matched caselessly. */

-

-      if (mclength == 1 || req_caseopt == 0)

-        {

-        firstbyte = mcbuffer[0] | req_caseopt;

-        if (mclength != 1) reqbyte = code[-1] | cd->req_varyopt;

-        }

-      else firstbyte = reqbyte = REQ_NONE;

-      }

-

-    /* firstbyte was previously set; we can set reqbyte only the length is

-    1 or the matching is caseful. */

-

-    else

-      {

-      zerofirstbyte = firstbyte;

-      zeroreqbyte = reqbyte;

-      if (mclength == 1 || req_caseopt == 0)

-        reqbyte = code[-1] | req_caseopt | cd->req_varyopt;

-      }

-

-    break;            /* End of literal character handling */

-    }

-  }                   /* end of big loop */

-

-/* Control never reaches here by falling through, only by a goto for all the

-error states. Pass back the position in the pattern so that it can be displayed

-to the user for diagnosing the error. */

-

-FAILED:

-*ptrptr = ptr;

-return FALSE;

-}

-

-

-

-

-/*************************************************

-*     Compile sequence of alternatives           *

-*************************************************/

-

-/* On entry, ptr is pointing past the bracket character, but on return

-it points to the closing bracket, or vertical bar, or end of string.

-The code variable is pointing at the byte into which the BRA operator has been

-stored. If the ims options are changed at the start (for a (?ims: group) or

-during any branch, we need to insert an OP_OPT item at the start of every

-following branch to ensure they get set correctly at run time, and also pass

-the new options into every subsequent branch compile.

-

-Argument:

-  options        option bits, including any changes for this subpattern

-  oldims         previous settings of ims option bits

-  brackets       -> int containing the number of extracting brackets used

-  codeptr        -> the address of the current code pointer

-  ptrptr         -> the address of the current pattern pointer

-  errorcodeptr   -> pointer to error code variable

-  lookbehind     TRUE if this is a lookbehind assertion

-  skipbytes      skip this many bytes at start (for OP_COND, OP_BRANUMBER)

-  firstbyteptr   place to put the first required character, or a negative number

-  reqbyteptr     place to put the last required character, or a negative number

-  bcptr          pointer to the chain of currently open branches

-  cd             points to the data block with tables pointers etc.

-

-Returns:      TRUE on success

-*/

-

-static BOOL

-compile_regex(int options, int oldims, int *brackets, uschar **codeptr,

-  const uschar **ptrptr, int *errorcodeptr, BOOL lookbehind, int skipbytes,

-  int *firstbyteptr, int *reqbyteptr, branch_chain *bcptr, compile_data *cd)

-{

-const uschar *ptr = *ptrptr;

-uschar *code = *codeptr;

-uschar *last_branch = code;

-uschar *start_bracket = code;

-uschar *reverse_count = NULL;

-int firstbyte, reqbyte;

-int branchfirstbyte, branchreqbyte;

-branch_chain bc;

-

-bc.outer = bcptr;

-bc.current = code;

-

-firstbyte = reqbyte = REQ_UNSET;

-

-/* Offset is set zero to mark that this bracket is still open */

-

-PUT(code, 1, 0);

-code += 1 + LINK_SIZE + skipbytes;

-

-/* Loop for each alternative branch */

-

-for (;;)

-  {

-  /* Handle a change of ims options at the start of the branch */

-

-  if ((options & PCRE_IMS) != oldims)

-    {

-    *code++ = OP_OPT;

-    *code++ = options & PCRE_IMS;

-    }

-

-  /* Set up dummy OP_REVERSE if lookbehind assertion */

-

-  if (lookbehind)

-    {

-    *code++ = OP_REVERSE;

-    reverse_count = code;

-    PUTINC(code, 0, 0);

-    }

-

-  /* Now compile the branch */

-

-  if (!compile_branch(&options, brackets, &code, &ptr, errorcodeptr,

-        &branchfirstbyte, &branchreqbyte, &bc, cd))

-    {

-    *ptrptr = ptr;

-    return FALSE;

-    }

-

-  /* If this is the first branch, the firstbyte and reqbyte values for the

-  branch become the values for the regex. */

-

-  if (*last_branch != OP_ALT)

-    {

-    firstbyte = branchfirstbyte;

-    reqbyte = branchreqbyte;

-    }

-

-  /* If this is not the first branch, the first char and reqbyte have to

-  match the values from all the previous branches, except that if the previous

-  value for reqbyte didn't have REQ_VARY set, it can still match, and we set

-  REQ_VARY for the regex. */

-

-  else

-    {

-    /* If we previously had a firstbyte, but it doesn't match the new branch,

-    we have to abandon the firstbyte for the regex, but if there was previously

-    no reqbyte, it takes on the value of the old firstbyte. */

-

-    if (firstbyte >= 0 && firstbyte != branchfirstbyte)

-      {

-      if (reqbyte < 0) reqbyte = firstbyte;

-      firstbyte = REQ_NONE;

-      }

-

-    /* If we (now or from before) have no firstbyte, a firstbyte from the

-    branch becomes a reqbyte if there isn't a branch reqbyte. */

-

-    if (firstbyte < 0 && branchfirstbyte >= 0 && branchreqbyte < 0)

-        branchreqbyte = branchfirstbyte;

-

-    /* Now ensure that the reqbytes match */

-

-    if ((reqbyte & ~REQ_VARY) != (branchreqbyte & ~REQ_VARY))

-      reqbyte = REQ_NONE;

-    else reqbyte |= branchreqbyte;   /* To "or" REQ_VARY */

-    }

-

-  /* If lookbehind, check that this branch matches a fixed-length string,

-  and put the length into the OP_REVERSE item. Temporarily mark the end of

-  the branch with OP_END. */

-

-  if (lookbehind)

-    {

-    int length;

-    *code = OP_END;

-    length = find_fixedlength(last_branch, options);

-    DPRINTF(("fixed length = %d\n", length));

-    if (length < 0)

-      {

-      *errorcodeptr = (length == -2)? ERR36 : ERR25;

-      *ptrptr = ptr;

-      return FALSE;

-      }

-    PUT(reverse_count, 0, length);

-    }

-

-  /* Reached end of expression, either ')' or end of pattern. Go back through

-  the alternative branches and reverse the chain of offsets, with the field in

-  the BRA item now becoming an offset to the first alternative. If there are

-  no alternatives, it points to the end of the group. The length in the

-  terminating ket is always the length of the whole bracketed item. If any of

-  the ims options were changed inside the group, compile a resetting op-code

-  following, except at the very end of the pattern. Return leaving the pointer

-  at the terminating char. */

-

-  if (*ptr != '|')

-    {

-    int length = code - last_branch;

-    do

-      {

-      int prev_length = GET(last_branch, 1);

-      PUT(last_branch, 1, length);

-      length = prev_length;

-      last_branch -= length;

-      }

-    while (length > 0);

-

-    /* Fill in the ket */

-

-    *code = OP_KET;

-    PUT(code, 1, code - start_bracket);

-    code += 1 + LINK_SIZE;

-

-    /* Resetting option if needed */

-

-    if ((options & PCRE_IMS) != oldims && *ptr == ')')

-      {

-      *code++ = OP_OPT;

-      *code++ = oldims;

-      }

-

-    /* Set values to pass back */

-

-    *codeptr = code;

-    *ptrptr = ptr;

-    *firstbyteptr = firstbyte;

-    *reqbyteptr = reqbyte;

-    return TRUE;

-    }

-

-  /* Another branch follows; insert an "or" node. Its length field points back

-  to the previous branch while the bracket remains open. At the end the chain

-  is reversed. It's done like this so that the start of the bracket has a

-  zero offset until it is closed, making it possible to detect recursion. */

-

-  *code = OP_ALT;

-  PUT(code, 1, code - last_branch);

-  bc.current = last_branch = code;

-  code += 1 + LINK_SIZE;

-  ptr++;

-  }

-/* Control never reaches here */

-}

-

-

-

-

-/*************************************************

-*          Check for anchored expression         *

-*************************************************/

-

-/* Try to find out if this is an anchored regular expression. Consider each

-alternative branch. If they all start with OP_SOD or OP_CIRC, or with a bracket

-all of whose alternatives start with OP_SOD or OP_CIRC (recurse ad lib), then

-it's anchored. However, if this is a multiline pattern, then only OP_SOD

-counts, since OP_CIRC can match in the middle.

-

-We can also consider a regex to be anchored if OP_SOM starts all its branches.

-This is the code for \G, which means "match at start of match position, taking

-into account the match offset".

-

-A branch is also implicitly anchored if it starts with .* and DOTALL is set,

-because that will try the rest of the pattern at all possible matching points,

-so there is no point trying again.... er ....

-

-.... except when the .* appears inside capturing parentheses, and there is a

-subsequent back reference to those parentheses. We haven't enough information

-to catch that case precisely.

-

-At first, the best we could do was to detect when .* was in capturing brackets

-and the highest back reference was greater than or equal to that level.

-However, by keeping a bitmap of the first 31 back references, we can catch some

-of the more common cases more precisely.

-

-Arguments:

-  code           points to start of expression (the bracket)

-  options        points to the options setting

-  bracket_map    a bitmap of which brackets we are inside while testing; this

-                  handles up to substring 31; after that we just have to take

-                  the less precise approach

-  backref_map    the back reference bitmap

-

-Returns:     TRUE or FALSE

-*/

-

-static BOOL

-is_anchored(register const uschar *code, int *options, unsigned int bracket_map,

-  unsigned int backref_map)

-{

-do {

-   const uschar *scode =

-     first_significant_code(code + 1+LINK_SIZE, options, PCRE_MULTILINE, FALSE);

-   register int op = *scode;

-

-   /* Capturing brackets */

-

-   if (op > OP_BRA)

-     {

-     int new_map;

-     op -= OP_BRA;

-     if (op > EXTRACT_BASIC_MAX) op = GET2(scode, 2+LINK_SIZE);

-     new_map = bracket_map | ((op < 32)? (1 << op) : 1);

-     if (!is_anchored(scode, options, new_map, backref_map)) return FALSE;

-     }

-

-   /* Other brackets */

-

-   else if (op == OP_BRA || op == OP_ASSERT || op == OP_ONCE || op == OP_COND)

-     {

-     if (!is_anchored(scode, options, bracket_map, backref_map)) return FALSE;

-     }

-

-   /* .* is not anchored unless DOTALL is set and it isn't in brackets that

-   are or may be referenced. */

-

-   else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR) &&

-            (*options & PCRE_DOTALL) != 0)

-     {

-     if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0) return FALSE;

-     }

-

-   /* Check for explicit anchoring */

-

-   else if (op != OP_SOD && op != OP_SOM &&

-           ((*options & PCRE_MULTILINE) != 0 || op != OP_CIRC))

-     return FALSE;

-   code += GET(code, 1);

-   }

-while (*code == OP_ALT);   /* Loop for each alternative */

-return TRUE;

-}

-

-

-

-/*************************************************

-*         Check for starting with ^ or .*        *

-*************************************************/

-

-/* This is called to find out if every branch starts with ^ or .* so that

-"first char" processing can be done to speed things up in multiline

-matching and for non-DOTALL patterns that start with .* (which must start at

-the beginning or after \n). As in the case of is_anchored() (see above), we

-have to take account of back references to capturing brackets that contain .*

-because in that case we can't make the assumption.

-

-Arguments:

-  code           points to start of expression (the bracket)

-  bracket_map    a bitmap of which brackets we are inside while testing; this

-                  handles up to substring 31; after that we just have to take

-                  the less precise approach

-  backref_map    the back reference bitmap

-

-Returns:         TRUE or FALSE

-*/

-

-static BOOL

-is_startline(const uschar *code, unsigned int bracket_map,

-  unsigned int backref_map)

-{

-do {

-   const uschar *scode = first_significant_code(code + 1+LINK_SIZE, NULL, 0,

-     FALSE);

-   register int op = *scode;

-

-   /* Capturing brackets */

-

-   if (op > OP_BRA)

-     {

-     int new_map;

-     op -= OP_BRA;

-     if (op > EXTRACT_BASIC_MAX) op = GET2(scode, 2+LINK_SIZE);

-     new_map = bracket_map | ((op < 32)? (1 << op) : 1);

-     if (!is_startline(scode, new_map, backref_map)) return FALSE;

-     }

-

-   /* Other brackets */

-

-   else if (op == OP_BRA || op == OP_ASSERT || op == OP_ONCE || op == OP_COND)

-     { if (!is_startline(scode, bracket_map, backref_map)) return FALSE; }

-

-   /* .* means "start at start or after \n" if it isn't in brackets that

-   may be referenced. */

-

-   else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR)

-     {

-     if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0) return FALSE;

-     }

-

-   /* Check for explicit circumflex */

-

-   else if (op != OP_CIRC) return FALSE;

-

-   /* Move on to the next alternative */

-

-   code += GET(code, 1);

-   }

-while (*code == OP_ALT);  /* Loop for each alternative */

-return TRUE;

-}

-

-

-

-/*************************************************

-*       Check for asserted fixed first char      *

-*************************************************/

-

-/* During compilation, the "first char" settings from forward assertions are

-discarded, because they can cause conflicts with actual literals that follow.

-However, if we end up without a first char setting for an unanchored pattern,

-it is worth scanning the regex to see if there is an initial asserted first

-char. If all branches start with the same asserted char, or with a bracket all

-of whose alternatives start with the same asserted char (recurse ad lib), then

-we return that char, otherwise -1.

-

-Arguments:

-  code       points to start of expression (the bracket)

-  options    pointer to the options (used to check casing changes)

-  inassert   TRUE if in an assertion

-

-Returns:     -1 or the fixed first char

-*/

-

-static int

-find_firstassertedchar(const uschar *code, int *options, BOOL inassert)

-{

-register int c = -1;

-do {

-   int d;

-   const uschar *scode =

-     first_significant_code(code + 1+LINK_SIZE, options, PCRE_CASELESS, TRUE);

-   register int op = *scode;

-

-   if (op >= OP_BRA) op = OP_BRA;

-

-   switch(op)

-     {

-     default:

-     return -1;

-

-     case OP_BRA:

-     case OP_ASSERT:

-     case OP_ONCE:

-     case OP_COND:

-     if ((d = find_firstassertedchar(scode, options, op == OP_ASSERT)) < 0)

-       return -1;

-     if (c < 0) c = d; else if (c != d) return -1;

-     break;

-

-     case OP_EXACT:       /* Fall through */

-     scode += 2;

-

-     case OP_CHAR:

-     case OP_CHARNC:

-     case OP_PLUS:

-     case OP_MINPLUS:

-     if (!inassert) return -1;

-     if (c < 0)

-       {

-       c = scode[1];

-       if ((*options & PCRE_CASELESS) != 0) c |= REQ_CASELESS;

-       }

-     else if (c != scode[1]) return -1;

-     break;

-     }

-

-   code += GET(code, 1);

-   }

-while (*code == OP_ALT);

-return c;

-}

-

-

-

-/*************************************************

-*        Compile a Regular Expression            *

-*************************************************/

-

-/* This function takes a string and returns a pointer to a block of store

-holding a compiled version of the expression. The original API for this

-function had no error code return variable; it is retained for backwards

-compatibility. The new function is given a new name.

-

-Arguments:

-  pattern       the regular expression

-  options       various option bits

-  errorcodeptr  pointer to error code variable (pcre_compile2() only)

-                  can be NULL if you don't want a code value

-  errorptr      pointer to pointer to error text

-  erroroffset   ptr offset in pattern where error was detected

-  tables        pointer to character tables or NULL

-

-Returns:        pointer to compiled data block, or NULL on error,

-                with errorptr and erroroffset set

-*/

-

-EXPORT pcre *

-pcre_compile(const char *pattern, int options, const char **errorptr,

-  int *erroroffset, const unsigned char *tables)

-{

-return pcre_compile2(pattern, options, NULL, errorptr, erroroffset, tables);

-}

-

-

-EXPORT pcre *

-pcre_compile2(const char *pattern, int options, int *errorcodeptr,

-  const char **errorptr, int *erroroffset, const unsigned char *tables)

-{

-real_pcre *re;

-int length = 1 + LINK_SIZE;      /* For initial BRA plus length */

-int c, firstbyte, reqbyte;

-int bracount = 0;

-int branch_extra = 0;

-int branch_newextra;

-int item_count = -1;

-int name_count = 0;

-int max_name_size = 0;

-int lastitemlength = 0;

-int errorcode = 0;

-#ifdef SUPPORT_UTF8

-BOOL utf8;

-BOOL class_utf8;

-#endif

-BOOL inescq = FALSE;

-BOOL capturing;

-unsigned int brastackptr = 0;

-size_t size;

-uschar *code;

-const uschar *codestart;

-const uschar *ptr;

-compile_data compile_block;

-int brastack[BRASTACK_SIZE];

-uschar bralenstack[BRASTACK_SIZE];

-

-/* We can't pass back an error message if errorptr is NULL; I guess the best we

-can do is just return NULL, but we can set a code value if there is a code

-pointer. */

-

-if (errorptr == NULL)

-  {

-  if (errorcodeptr != NULL) *errorcodeptr = 99;

-  return NULL;

-  }

-

-*errorptr = NULL;

-if (errorcodeptr != NULL) *errorcodeptr = ERR0;

-

-/* However, we can give a message for this error */

-

-if (erroroffset == NULL)

-  {

-  errorcode = ERR16;

-  goto PCRE_EARLY_ERROR_RETURN;

-  }

-

-*erroroffset = 0;

-

-/* Can't support UTF8 unless PCRE has been compiled to include the code. */

-

-#ifdef SUPPORT_UTF8

-utf8 = (options & PCRE_UTF8) != 0;

-if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0 &&

-     (*erroroffset = _pcre_valid_utf8((uschar *)pattern, -1)) >= 0)

-  {

-  errorcode = ERR44;

-  goto PCRE_EARLY_ERROR_RETURN;

-  }

-#else

-if ((options & PCRE_UTF8) != 0)

-  {

-  errorcode = ERR32;

-  goto PCRE_EARLY_ERROR_RETURN;

-  }

-#endif

-

-if ((options & ~PUBLIC_OPTIONS) != 0)

-  {

-  errorcode = ERR17;

-  goto PCRE_EARLY_ERROR_RETURN;

-  }

-

-/* Set up pointers to the individual character tables */

-

-if (tables == NULL) tables = _pcre_default_tables;

-compile_block.lcc = tables + lcc_offset;

-compile_block.fcc = tables + fcc_offset;

-compile_block.cbits = tables + cbits_offset;

-compile_block.ctypes = tables + ctypes_offset;

-

-/* Maximum back reference and backref bitmap. This is updated for numeric

-references during the first pass, but for named references during the actual

-compile pass. The bitmap records up to 31 back references to help in deciding

-whether (.*) can be treated as anchored or not. */

-

-compile_block.top_backref = 0;

-compile_block.backref_map = 0;

-

-/* Reflect pattern for debugging output */

-

-DPRINTF(("------------------------------------------------------------------\n"));

-DPRINTF(("%s\n", pattern));

-

-/* The first thing to do is to make a pass over the pattern to compute the

-amount of store required to hold the compiled code. This does not have to be

-perfect as long as errors are overestimates. At the same time we can detect any

-flag settings right at the start, and extract them. Make an attempt to correct

-for any counted white space if an "extended" flag setting appears late in the

-pattern. We can't be so clever for #-comments. */

-

-ptr = (const uschar *)(pattern - 1);

-while ((c = *(++ptr)) != 0)

-  {

-  int min, max;

-  int class_optcount;

-  int bracket_length;

-  int duplength;

-

-  /* If we are inside a \Q...\E sequence, all chars are literal */

-

-  if (inescq)

-    {

-    if ((options & PCRE_AUTO_CALLOUT) != 0) length += 2 + 2*LINK_SIZE;

-    goto NORMAL_CHAR;

-    }

-

-  /* Otherwise, first check for ignored whitespace and comments */

-

-  if ((options & PCRE_EXTENDED) != 0)

-    {

-    if ((compile_block.ctypes[c] & ctype_space) != 0) continue;

-    if (c == '#')

-      {

-      /* The space before the ; is to avoid a warning on a silly compiler

-      on the Macintosh. */

-      while ((c = *(++ptr)) != 0 && c != NEWLINE) ;

-      if (c == 0) break;

-      continue;

-      }

-    }

-

-  item_count++;    /* Is zero for the first non-comment item */

-

-  /* Allow space for auto callout before every item except quantifiers. */

-

-  if ((options & PCRE_AUTO_CALLOUT) != 0 &&

-       c != '*' && c != '+' && c != '?' &&

-       (c != '{' || !is_counted_repeat(ptr + 1)))

-    length += 2 + 2*LINK_SIZE;

-

-  switch(c)

-    {

-    /* A backslashed item may be an escaped data character or it may be a

-    character type. */

-

-    case '\\':

-    c = check_escape(&ptr, &errorcode, bracount, options, FALSE);

-    if (errorcode != 0) goto PCRE_ERROR_RETURN;

-

-    lastitemlength = 1;     /* Default length of last item for repeats */

-

-    if (c >= 0)             /* Data character */

-      {

-      length += 2;          /* For a one-byte character */

-

-#ifdef SUPPORT_UTF8

-      if (utf8 && c > 127)

-        {

-        int i;

-        for (i = 0; i < _pcre_utf8_table1_size; i++)

-          if (c <= _pcre_utf8_table1[i]) break;

-        length += i;

-        lastitemlength += i;

-        }

-#endif

-

-      continue;

-      }

-

-    /* If \Q, enter "literal" mode */

-

-    if (-c == ESC_Q)

-      {

-      inescq = TRUE;

-      continue;

-      }

-

-    /* \X is supported only if Unicode property support is compiled */

-

-#ifndef SUPPORT_UCP

-    if (-c == ESC_X)

-      {

-      errorcode = ERR45;

-      goto PCRE_ERROR_RETURN;

-      }

-#endif

-

-    /* \P and \p are for Unicode properties, but only when the support has

-    been compiled. Each item needs 2 bytes. */

-

-    else if (-c == ESC_P || -c == ESC_p)

-      {

-#ifdef SUPPORT_UCP

-      BOOL negated;

-      length += 2;

-      lastitemlength = 2;

-      if (get_ucp(&ptr, &negated, &errorcode) < 0) goto PCRE_ERROR_RETURN;

-      continue;

-#else

-      errorcode = ERR45;

-      goto PCRE_ERROR_RETURN;

-#endif

-      }

-

-    /* Other escapes need one byte */

-

-    length++;

-

-    /* A back reference needs an additional 2 bytes, plus either one or 5

-    bytes for a repeat. We also need to keep the value of the highest

-    back reference. */

-

-    if (c <= -ESC_REF)

-      {

-      int refnum = -c - ESC_REF;

-      compile_block.backref_map |= (refnum < 32)? (1 << refnum) : 1;

-      if (refnum > compile_block.top_backref)

-        compile_block.top_backref = refnum;

-      length += 2;   /* For single back reference */

-      if (ptr[1] == '{' && is_counted_repeat(ptr+2))

-        {

-        ptr = read_repeat_counts(ptr+2, &min, &max, &errorcode);

-        if (errorcode != 0) goto PCRE_ERROR_RETURN;

-        if ((min == 0 && (max == 1 || max == -1)) ||

-          (min == 1 && max == -1))

-            length++;

-        else length += 5;

-        if (ptr[1] == '?') ptr++;

-        }

-      }

-    continue;

-

-    case '^':     /* Single-byte metacharacters */

-    case '.':

-    case '$':

-    length++;

-    lastitemlength = 1;

-    continue;

-

-    case '*':            /* These repeats won't be after brackets; */

-    case '+':            /* those are handled separately */

-    case '?':

-    length++;

-    goto POSESSIVE;      /* A few lines below */

-

-    /* This covers the cases of braced repeats after a single char, metachar,

-    class, or back reference. */

-

-    case '{':

-    if (!is_counted_repeat(ptr+1)) goto NORMAL_CHAR;

-    ptr = read_repeat_counts(ptr+1, &min, &max, &errorcode);

-    if (errorcode != 0) goto PCRE_ERROR_RETURN;

-

-    /* These special cases just insert one extra opcode */

-

-    if ((min == 0 && (max == 1 || max == -1)) ||

-      (min == 1 && max == -1))

-        length++;

-

-    /* These cases might insert additional copies of a preceding character. */

-

-    else

-      {

-      if (min != 1)

-        {

-        length -= lastitemlength;   /* Uncount the original char or metachar */

-        if (min > 0) length += 3 + lastitemlength;

-        }

-      length += lastitemlength + ((max > 0)? 3 : 1);

-      }

-

-    if (ptr[1] == '?') ptr++;      /* Needs no extra length */

-

-    POSESSIVE:                     /* Test for possessive quantifier */

-    if (ptr[1] == '+')

-      {

-      ptr++;

-      length += 2 + 2*LINK_SIZE;   /* Allow for atomic brackets */

-      }

-    continue;

-

-    /* An alternation contains an offset to the next branch or ket. If any ims

-    options changed in the previous branch(es), and/or if we are in a

-    lookbehind assertion, extra space will be needed at the start of the

-    branch. This is handled by branch_extra. */

-

-    case '|':

-    length += 1 + LINK_SIZE + branch_extra;

-    continue;

-

-    /* A character class uses 33 characters provided that all the character

-    values are less than 256. Otherwise, it uses a bit map for low valued

-    characters, and individual items for others. Don't worry about character

-    types that aren't allowed in classes - they'll get picked up during the

-    compile. A character class that contains only one single-byte character

-    uses 2 or 3 bytes, depending on whether it is negated or not. Notice this

-    where we can. (In UTF-8 mode we can do this only for chars < 128.) */

-

-    case '[':

-    if (*(++ptr) == '^')

-      {

-      class_optcount = 10;  /* Greater than one */

-      ptr++;

-      }

-    else class_optcount = 0;

-

-#ifdef SUPPORT_UTF8

-    class_utf8 = FALSE;

-#endif

-

-    /* Written as a "do" so that an initial ']' is taken as data */

-

-    if (*ptr != 0) do

-      {

-      /* Inside \Q...\E everything is literal except \E */

-

-      if (inescq)

-        {

-        if (*ptr != '\\' || ptr[1] != 'E') goto GET_ONE_CHARACTER;

-        inescq = FALSE;

-        ptr += 1;

-        continue;

-        }

-

-      /* Outside \Q...\E, check for escapes */

-

-      if (*ptr == '\\')

-        {

-        c = check_escape(&ptr, &errorcode, bracount, options, TRUE);

-        if (errorcode != 0) goto PCRE_ERROR_RETURN;

-

-        /* \b is backspace inside a class; \X is literal */

-

-        if (-c == ESC_b) c = '\b';

-        else if (-c == ESC_X) c = 'X';

-

-        /* \Q enters quoting mode */

-

-        else if (-c == ESC_Q)

-          {

-          inescq = TRUE;

-          continue;

-          }

-

-        /* Handle escapes that turn into characters */

-

-        if (c >= 0) goto NON_SPECIAL_CHARACTER;

-

-        /* Escapes that are meta-things. The normal ones just affect the

-        bit map, but Unicode properties require an XCLASS extended item. */

-

-        else

-          {

-          class_optcount = 10;         /* \d, \s etc; make sure > 1 */

-#ifdef SUPPORT_UTF8

-          if (-c == ESC_p || -c == ESC_P)

-            {

-            if (!class_utf8)

-              {

-              class_utf8 = TRUE;

-              length += LINK_SIZE + 2;

-              }

-            length += 2;

-            }

-#endif

-          }

-        }

-

-      /* Check the syntax for POSIX stuff. The bits we actually handle are

-      checked during the real compile phase. */

-

-      else if (*ptr == '[' && check_posix_syntax(ptr, &ptr, &compile_block))

-        {

-        ptr++;

-        class_optcount = 10;    /* Make sure > 1 */

-        }

-

-      /* Anything else increments the possible optimization count. We have to

-      detect ranges here so that we can compute the number of extra ranges for

-      caseless wide characters when UCP support is available. If there are wide

-      characters, we are going to have to use an XCLASS, even for single

-      characters. */

-

-      else

-        {

-        int d;

-

-        GET_ONE_CHARACTER:

-

-#ifdef SUPPORT_UTF8

-        if (utf8)

-          {

-          int extra = 0;

-          GETCHARLEN(c, ptr, extra);

-          ptr += extra;

-          }

-        else c = *ptr;

-#else

-        c = *ptr;

-#endif

-

-        /* Come here from handling \ above when it escapes to a char value */

-

-        NON_SPECIAL_CHARACTER:

-        class_optcount++;

-

-        d = -1;

-        if (ptr[1] == '-')

-          {

-          uschar const *hyptr = ptr++;

-          if (ptr[1] == '\\')

-            {

-            ptr++;

-            d = check_escape(&ptr, &errorcode, bracount, options, TRUE);

-            if (errorcode != 0) goto PCRE_ERROR_RETURN;

-            if (-d == ESC_b) d = '\b';        /* backspace */

-            else if (-d == ESC_X) d = 'X';    /* literal X in a class */

-            }

-          else if (ptr[1] != 0 && ptr[1] != ']')

-            {

-            ptr++;

-#ifdef SUPPORT_UTF8

-            if (utf8)

-              {

-              int extra = 0;

-              GETCHARLEN(d, ptr, extra);

-              ptr += extra;

-              }

-            else

-#endif

-            d = *ptr;

-            }

-          if (d < 0) ptr = hyptr;      /* go back to hyphen as data */

-          }

-

-        /* If d >= 0 we have a range. In UTF-8 mode, if the end is > 255, or >

-        127 for caseless matching, we will need to use an XCLASS. */

-

-        if (d >= 0)

-          {

-          class_optcount = 10;     /* Ensure > 1 */

-          if (d < c)

-            {

-            errorcode = ERR8;

-            goto PCRE_ERROR_RETURN;

-            }

-

-#ifdef SUPPORT_UTF8

-          if (utf8 && (d > 255 || ((options & PCRE_CASELESS) != 0 && d > 127)))

-            {

-            uschar buffer[6];

-            if (!class_utf8)         /* Allow for XCLASS overhead */

-              {

-              class_utf8 = TRUE;

-              length += LINK_SIZE + 2;

-              }

-

-#ifdef SUPPORT_UCP

-            /* If we have UCP support, find out how many extra ranges are

-            needed to map the other case of characters within this range. We

-            have to mimic the range optimization here, because extending the

-            range upwards might push d over a boundary that makes is use

-            another byte in the UTF-8 representation. */

-

-            if ((options & PCRE_CASELESS) != 0)

-              {

-              int occ, ocd;

-              int cc = c;

-              int origd = d;

-              while (get_othercase_range(&cc, origd, &occ, &ocd))

-                {

-                if (occ >= c && ocd <= d) continue;   /* Skip embedded */

-

-                if (occ < c  && ocd >= c - 1)  /* Extend the basic range */

-                  {                            /* if there is overlap,   */

-                  c = occ;                     /* noting that if occ < c */

-                  continue;                    /* we can't have ocd > d  */

-                  }                            /* because a subrange is  */

-                if (ocd > d && occ <= d + 1)   /* always shorter than    */

-                  {                            /* the basic range.       */

-                  d = ocd;

-                  continue;

-                  }

-

-                /* An extra item is needed */

-

-                length += 1 + _pcre_ord2utf8(occ, buffer) +

-                  ((occ == ocd)? 0 : _pcre_ord2utf8(ocd, buffer));

-                }

-              }

-#endif  /* SUPPORT_UCP */

-

-            /* The length of the (possibly extended) range */

-

-            length += 1 + _pcre_ord2utf8(c, buffer) + _pcre_ord2utf8(d, buffer);

-            }

-#endif  /* SUPPORT_UTF8 */

-

-          }

-

-        /* We have a single character. There is nothing to be done unless we

-        are in UTF-8 mode. If the char is > 255, or 127 when caseless, we must

-        allow for an XCL_SINGLE item, doubled for caselessness if there is UCP

-        support. */

-

-        else

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && (c > 255 || ((options & PCRE_CASELESS) != 0 && c > 127)))

-            {

-            uschar buffer[6];

-            class_optcount = 10;     /* Ensure > 1 */

-            if (!class_utf8)         /* Allow for XCLASS overhead */

-              {

-              class_utf8 = TRUE;

-              length += LINK_SIZE + 2;

-              }

-#ifdef SUPPORT_UCP

-            length += (((options & PCRE_CASELESS) != 0)? 2 : 1) *

-              (1 + _pcre_ord2utf8(c, buffer));

-#else   /* SUPPORT_UCP */

-            length += 1 + _pcre_ord2utf8(c, buffer);

-#endif  /* SUPPORT_UCP */

-            }

-#endif  /* SUPPORT_UTF8 */

-          }

-        }

-      }

-    while (*(++ptr) != 0 && (inescq || *ptr != ']')); /* Concludes "do" above */

-

-    if (*ptr == 0)                          /* Missing terminating ']' */

-      {

-      errorcode = ERR6;

-      goto PCRE_ERROR_RETURN;

-      }

-

-    /* We can optimize when there was only one optimizable character. Repeats

-    for positive and negated single one-byte chars are handled by the general

-    code. Here, we handle repeats for the class opcodes. */

-

-    if (class_optcount == 1) length += 3; else

-      {

-      length += 33;

-

-      /* A repeat needs either 1 or 5 bytes. If it is a possessive quantifier,

-      we also need extra for wrapping the whole thing in a sub-pattern. */

-

-      if (*ptr != 0 && ptr[1] == '{' && is_counted_repeat(ptr+2))

-        {

-        ptr = read_repeat_counts(ptr+2, &min, &max, &errorcode);

-        if (errorcode != 0) goto PCRE_ERROR_RETURN;

-        if ((min == 0 && (max == 1 || max == -1)) ||

-          (min == 1 && max == -1))

-            length++;

-        else length += 5;

-        if (ptr[1] == '+')

-          {

-          ptr++;

-          length += 2 + 2*LINK_SIZE;

-          }

-        else if (ptr[1] == '?') ptr++;

-        }

-      }

-    continue;

-

-    /* Brackets may be genuine groups or special things */

-

-    case '(':

-    branch_newextra = 0;

-    bracket_length = 1 + LINK_SIZE;

-    capturing = FALSE;

-

-    /* Handle special forms of bracket, which all start (? */

-

-    if (ptr[1] == '?')

-      {

-      int set, unset;

-      int *optset;

-

-      switch (c = ptr[2])

-        {

-        /* Skip over comments entirely */

-        case '#':

-        ptr += 3;

-        while (*ptr != 0 && *ptr != ')') ptr++;

-        if (*ptr == 0)

-          {

-          errorcode = ERR18;

-          goto PCRE_ERROR_RETURN;

-          }

-        continue;

-

-        /* Non-referencing groups and lookaheads just move the pointer on, and

-        then behave like a non-special bracket, except that they don't increment

-        the count of extracting brackets. Ditto for the "once only" bracket,

-        which is in Perl from version 5.005. */

-

-        case ':':

-        case '=':

-        case '!':

-        case '>':

-        ptr += 2;

-        break;

-

-        /* (?R) specifies a recursive call to the regex, which is an extension

-        to provide the facility which can be obtained by (?p{perl-code}) in

-        Perl 5.6. In Perl 5.8 this has become (??{perl-code}).

-

-        From PCRE 4.00, items such as (?3) specify subroutine-like "calls" to

-        the appropriate numbered brackets. This includes both recursive and

-        non-recursive calls. (?R) is now synonymous with (?0). */

-

-        case 'R':

-        ptr++;

-

-        case '0': case '1': case '2': case '3': case '4':

-        case '5': case '6': case '7': case '8': case '9':

-        ptr += 2;

-        if (c != 'R')

-          while ((digitab[*(++ptr)] & ctype_digit) != 0);

-        if (*ptr != ')')

-          {

-          errorcode = ERR29;

-          goto PCRE_ERROR_RETURN;

-          }

-        length += 1 + LINK_SIZE;

-

-        /* If this item is quantified, it will get wrapped inside brackets so

-        as to use the code for quantified brackets. We jump down and use the

-        code that handles this for real brackets. */

-

-        if (ptr[1] == '+' || ptr[1] == '*' || ptr[1] == '?' || ptr[1] == '{')

-          {

-          length += 2 + 2 * LINK_SIZE;       /* to make bracketed */

-          duplength = 5 + 3 * LINK_SIZE;

-          goto HANDLE_QUANTIFIED_BRACKETS;

-          }

-        continue;

-

-        /* (?C) is an extension which provides "callout" - to provide a bit of

-        the functionality of the Perl (?{...}) feature. An optional number may

-        follow (default is zero). */

-

-        case 'C':

-        ptr += 2;

-        while ((digitab[*(++ptr)] & ctype_digit) != 0);

-        if (*ptr != ')')

-          {

-          errorcode = ERR39;

-          goto PCRE_ERROR_RETURN;

-          }

-        length += 2 + 2*LINK_SIZE;

-        continue;

-

-        /* Named subpatterns are an extension copied from Python */

-

-        case 'P':

-        ptr += 3;

-

-        /* Handle the definition of a named subpattern */

-

-        if (*ptr == '<')

-          {

-          const uschar *p;    /* Don't amalgamate; some compilers */

-          p = ++ptr;          /* grumble at autoincrement in declaration */

-          while ((compile_block.ctypes[*ptr] & ctype_word) != 0) ptr++;

-          if (*ptr != '>')

-            {

-            errorcode = ERR42;

-            goto PCRE_ERROR_RETURN;

-            }

-          name_count++;

-          if (ptr - p > max_name_size) max_name_size = (ptr - p);

-          capturing = TRUE;   /* Named parentheses are always capturing */

-          break;

-          }

-

-        /* Handle back references and recursive calls to named subpatterns */

-

-        if (*ptr == '=' || *ptr == '>')

-          {

-          while ((compile_block.ctypes[*(++ptr)] & ctype_word) != 0);

-          if (*ptr != ')')

-            {

-            errorcode = ERR42;

-            goto PCRE_ERROR_RETURN;

-            }

-          break;

-          }

-

-        /* Unknown character after (?P */

-

-        errorcode = ERR41;

-        goto PCRE_ERROR_RETURN;

-

-        /* Lookbehinds are in Perl from version 5.005 */

-

-        case '<':

-        ptr += 3;

-        if (*ptr == '=' || *ptr == '!')

-          {

-          branch_newextra = 1 + LINK_SIZE;

-          length += 1 + LINK_SIZE;         /* For the first branch */

-          break;

-          }

-        errorcode = ERR24;

-        goto PCRE_ERROR_RETURN;

-

-        /* Conditionals are in Perl from version 5.005. The bracket must either

-        be followed by a number (for bracket reference) or by an assertion

-        group, or (a PCRE extension) by 'R' for a recursion test. */

-

-        case '(':

-        if (ptr[3] == 'R' && ptr[4] == ')')

-          {

-          ptr += 4;

-          length += 3;

-          }

-        else if ((digitab[ptr[3]] & ctype_digit) != 0)

-          {

-          ptr += 4;

-          length += 3;

-          while ((digitab[*ptr] & ctype_digit) != 0) ptr++;

-          if (*ptr != ')')

-            {

-            errorcode = ERR26;

-            goto PCRE_ERROR_RETURN;

-            }

-          }

-        else   /* An assertion must follow */

-          {

-          ptr++;   /* Can treat like ':' as far as spacing is concerned */

-          if (ptr[2] != '?' ||

-             (ptr[3] != '=' && ptr[3] != '!' && ptr[3] != '<') )

-            {

-            ptr += 2;    /* To get right offset in message */

-            errorcode = ERR28;

-            goto PCRE_ERROR_RETURN;

-            }

-          }

-        break;

-

-        /* Else loop checking valid options until ) is met. Anything else is an

-        error. If we are without any brackets, i.e. at top level, the settings

-        act as if specified in the options, so massage the options immediately.

-        This is for backward compatibility with Perl 5.004. */

-

-        default:

-        set = unset = 0;

-        optset = &set;

-        ptr += 2;

-

-        for (;; ptr++)

-          {

-          c = *ptr;

-          switch (c)

-            {

-            case 'i':

-            *optset |= PCRE_CASELESS;

-            continue;

-

-            case 'm':

-            *optset |= PCRE_MULTILINE;

-            continue;

-

-            case 's':

-            *optset |= PCRE_DOTALL;

-            continue;

-

-            case 'x':

-            *optset |= PCRE_EXTENDED;

-            continue;

-

-            case 'X':

-            *optset |= PCRE_EXTRA;

-            continue;

-

-            case 'U':

-            *optset |= PCRE_UNGREEDY;

-            continue;

-

-            case '-':

-            optset = &unset;

-            continue;

-

-            /* A termination by ')' indicates an options-setting-only item; if

-            this is at the very start of the pattern (indicated by item_count

-            being zero), we use it to set the global options. This is helpful

-            when analyzing the pattern for first characters, etc. Otherwise

-            nothing is done here and it is handled during the compiling

-            process.

-

-            We allow for more than one options setting at the start. If such

-            settings do not change the existing options, nothing is compiled.

-            However, we must leave space just in case something is compiled.

-            This can happen for pathological sequences such as (?i)(?-i)

-            because the global options will end up with -i set. The space is

-            small and not significant. (Before I did this there was a reported

-            bug with (?i)(?-i) in a machine-generated pattern.)

-

-            [Historical note: Up to Perl 5.8, options settings at top level

-            were always global settings, wherever they appeared in the pattern.

-            That is, they were equivalent to an external setting. From 5.8

-            onwards, they apply only to what follows (which is what you might

-            expect).] */

-

-            case ')':

-            if (item_count == 0)

-              {

-              options = (options | set) & (~unset);

-              set = unset = 0;     /* To save length */

-              item_count--;        /* To allow for several */

-              length += 2;

-              }

-

-            /* Fall through */

-

-            /* A termination by ':' indicates the start of a nested group with

-            the given options set. This is again handled at compile time, but

-            we must allow for compiled space if any of the ims options are

-            set. We also have to allow for resetting space at the end of

-            the group, which is why 4 is added to the length and not just 2.

-            If there are several changes of options within the same group, this

-            will lead to an over-estimate on the length, but this shouldn't

-            matter very much. We also have to allow for resetting options at

-            the start of any alternations, which we do by setting

-            branch_newextra to 2. Finally, we record whether the case-dependent

-            flag ever changes within the regex. This is used by the "required

-            character" code. */

-

-            case ':':

-            if (((set|unset) & PCRE_IMS) != 0)

-              {

-              length += 4;

-              branch_newextra = 2;

-              if (((set|unset) & PCRE_CASELESS) != 0) options |= PCRE_ICHANGED;

-              }

-            goto END_OPTIONS;

-

-            /* Unrecognized option character */

-

-            default:

-            errorcode = ERR12;

-            goto PCRE_ERROR_RETURN;

-            }

-          }

-

-        /* If we hit a closing bracket, that's it - this is a freestanding

-        option-setting. We need to ensure that branch_extra is updated if

-        necessary. The only values branch_newextra can have here are 0 or 2.

-        If the value is 2, then branch_extra must either be 2 or 5, depending

-        on whether this is a lookbehind group or not. */

-

-        END_OPTIONS:

-        if (c == ')')

-          {

-          if (branch_newextra == 2 &&

-              (branch_extra == 0 || branch_extra == 1+LINK_SIZE))

-            branch_extra += branch_newextra;

-          continue;

-          }

-

-        /* If options were terminated by ':' control comes here. This is a

-        non-capturing group with an options change. There is nothing more that

-        needs to be done because "capturing" is already set FALSE by default;

-        we can just fall through. */

-

-        }

-      }

-

-    /* Ordinary parentheses, not followed by '?', are capturing unless

-    PCRE_NO_AUTO_CAPTURE is set. */

-

-    else capturing = (options & PCRE_NO_AUTO_CAPTURE) == 0;

-

-    /* Capturing brackets must be counted so we can process escapes in a

-    Perlish way. If the number exceeds EXTRACT_BASIC_MAX we are going to need

-    an additional 3 bytes of memory per capturing bracket. */

-

-    if (capturing)

-      {

-      bracount++;

-      if (bracount > EXTRACT_BASIC_MAX) bracket_length += 3;

-      }

-

-    /* Save length for computing whole length at end if there's a repeat that

-    requires duplication of the group. Also save the current value of

-    branch_extra, and start the new group with the new value. If non-zero, this

-    will either be 2 for a (?imsx: group, or 3 for a lookbehind assertion. */

-

-    if (brastackptr >= sizeof(brastack)/sizeof(int))

-      {

-      errorcode = ERR19;

-      goto PCRE_ERROR_RETURN;

-      }

-

-    bralenstack[brastackptr] = branch_extra;

-    branch_extra = branch_newextra;

-

-    brastack[brastackptr++] = length;

-    length += bracket_length;

-    continue;

-

-    /* Handle ket. Look for subsequent max/min; for certain sets of values we

-    have to replicate this bracket up to that many times. If brastackptr is

-    0 this is an unmatched bracket which will generate an error, but take care

-    not to try to access brastack[-1] when computing the length and restoring

-    the branch_extra value. */

-

-    case ')':

-    length += 1 + LINK_SIZE;

-    if (brastackptr > 0)

-      {

-      duplength = length - brastack[--brastackptr];

-      branch_extra = bralenstack[brastackptr];

-      }

-    else duplength = 0;

-

-    /* The following code is also used when a recursion such as (?3) is

-    followed by a quantifier, because in that case, it has to be wrapped inside

-    brackets so that the quantifier works. The value of duplength must be

-    set before arrival. */

-

-    HANDLE_QUANTIFIED_BRACKETS:

-

-    /* Leave ptr at the final char; for read_repeat_counts this happens

-    automatically; for the others we need an increment. */

-

-    if ((c = ptr[1]) == '{' && is_counted_repeat(ptr+2))

-      {

-      ptr = read_repeat_counts(ptr+2, &min, &max, &errorcode);

-      if (errorcode != 0) goto PCRE_ERROR_RETURN;

-      }

-    else if (c == '*') { min = 0; max = -1; ptr++; }

-    else if (c == '+') { min = 1; max = -1; ptr++; }

-    else if (c == '?') { min = 0; max = 1;  ptr++; }

-    else { min = 1; max = 1; }

-

-    /* If the minimum is zero, we have to allow for an OP_BRAZERO before the

-    group, and if the maximum is greater than zero, we have to replicate

-    maxval-1 times; each replication acquires an OP_BRAZERO plus a nesting

-    bracket set. */

-

-    if (min == 0)

-      {

-      length++;

-      if (max > 0) length += (max - 1) * (duplength + 3 + 2*LINK_SIZE);

-      }

-

-    /* When the minimum is greater than zero, we have to replicate up to

-    minval-1 times, with no additions required in the copies. Then, if there

-    is a limited maximum we have to replicate up to maxval-1 times allowing

-    for a BRAZERO item before each optional copy and nesting brackets for all

-    but one of the optional copies. */

-

-    else

-      {

-      length += (min - 1) * duplength;

-      if (max > min)   /* Need this test as max=-1 means no limit */

-        length += (max - min) * (duplength + 3 + 2*LINK_SIZE)

-          - (2 + 2*LINK_SIZE);

-      }

-

-    /* Allow space for once brackets for "possessive quantifier" */

-

-    if (ptr[1] == '+')

-      {

-      ptr++;

-      length += 2 + 2*LINK_SIZE;

-      }

-    continue;

-

-    /* Non-special character. It won't be space or # in extended mode, so it is

-    always a genuine character. If we are in a \Q...\E sequence, check for the

-    end; if not, we have a literal. */

-

-    default:

-    NORMAL_CHAR:

-

-    if (inescq && c == '\\' && ptr[1] == 'E')

-      {

-      inescq = FALSE;

-      ptr++;

-      continue;

-      }

-

-    length += 2;          /* For a one-byte character */

-    lastitemlength = 1;   /* Default length of last item for repeats */

-

-    /* In UTF-8 mode, check for additional bytes. */

-

-#ifdef SUPPORT_UTF8

-    if (utf8 && (c & 0xc0) == 0xc0)

-      {

-      while ((ptr[1] & 0xc0) == 0x80)         /* Can't flow over the end */

-        {                                     /* because the end is marked */

-        lastitemlength++;                     /* by a zero byte. */

-        length++;

-        ptr++;

-        }

-      }

-#endif

-

-    continue;

-    }

-  }

-

-length += 2 + LINK_SIZE;    /* For final KET and END */

-

-if ((options & PCRE_AUTO_CALLOUT) != 0)

-  length += 2 + 2*LINK_SIZE;  /* For final callout */

-

-if (length > MAX_PATTERN_SIZE)

-  {

-  errorcode = ERR20;

-  goto PCRE_EARLY_ERROR_RETURN;

-  }

-

-/* Compute the size of data block needed and get it, either from malloc or

-externally provided function. */

-

-size = length + sizeof(real_pcre) + name_count * (max_name_size + 3);

-re = (real_pcre *)(pcre_malloc)(size);

-

-if (re == NULL)

-  {

-  errorcode = ERR21;

-  goto PCRE_EARLY_ERROR_RETURN;

-  }

-

-/* Put in the magic number, and save the sizes, options, and character table

-pointer. NULL is used for the default character tables. The nullpad field is at

-the end; it's there to help in the case when a regex compiled on a system with

-4-byte pointers is run on another with 8-byte pointers. */

-

-re->magic_number = MAGIC_NUMBER;

-re->size = size;

-re->options = options;

-re->dummy1 = 0;

-re->name_table_offset = sizeof(real_pcre);

-re->name_entry_size = max_name_size + 3;

-re->name_count = name_count;

-re->ref_count = 0;

-re->tables = (tables == _pcre_default_tables)? NULL : tables;

-re->nullpad = NULL;

-

-/* The starting points of the name/number translation table and of the code are

-passed around in the compile data block. */

-

-compile_block.names_found = 0;

-compile_block.name_entry_size = max_name_size + 3;

-compile_block.name_table = (uschar *)re + re->name_table_offset;

-codestart = compile_block.name_table + re->name_entry_size * re->name_count;

-compile_block.start_code = codestart;

-compile_block.start_pattern = (const uschar *)pattern;

-compile_block.req_varyopt = 0;

-compile_block.nopartial = FALSE;

-

-/* Set up a starting, non-extracting bracket, then compile the expression. On

-error, errorcode will be set non-zero, so we don't need to look at the result

-of the function here. */

-

-ptr = (const uschar *)pattern;

-code = (uschar *)codestart;

-*code = OP_BRA;

-bracount = 0;

-(void)compile_regex(options, options & PCRE_IMS, &bracount, &code, &ptr,

-  &errorcode, FALSE, 0, &firstbyte, &reqbyte, NULL, &compile_block);

-re->top_bracket = bracount;

-re->top_backref = compile_block.top_backref;

-

-if (compile_block.nopartial) re->options |= PCRE_NOPARTIAL;

-

-/* If not reached end of pattern on success, there's an excess bracket. */

-

-if (errorcode == 0 && *ptr != 0) errorcode = ERR22;

-

-/* Fill in the terminating state and check for disastrous overflow, but

-if debugging, leave the test till after things are printed out. */

-

-*code++ = OP_END;

-

-#ifndef DEBUG

-if (code - codestart > length) errorcode = ERR23;

-#endif

-

-/* Give an error if there's back reference to a non-existent capturing

-subpattern. */

-

-if (re->top_backref > re->top_bracket) errorcode = ERR15;

-

-/* Failed to compile, or error while post-processing */

-

-if (errorcode != 0)

-  {

-  (pcre_free)(re);

-  PCRE_ERROR_RETURN:

-  *erroroffset = ptr - (const uschar *)pattern;

-  PCRE_EARLY_ERROR_RETURN:

-  *errorptr = error_texts[errorcode];

-  if (errorcodeptr != NULL) *errorcodeptr = errorcode;

-  return NULL;

-  }

-

-/* If the anchored option was not passed, set the flag if we can determine that

-the pattern is anchored by virtue of ^ characters or \A or anything else (such

-as starting with .* when DOTALL is set).

-

-Otherwise, if we know what the first character has to be, save it, because that

-speeds up unanchored matches no end. If not, see if we can set the

-PCRE_STARTLINE flag. This is helpful for multiline matches when all branches

-start with ^. and also when all branches start with .* for non-DOTALL matches.

-*/

-

-if ((options & PCRE_ANCHORED) == 0)

-  {

-  int temp_options = options;

-  if (is_anchored(codestart, &temp_options, 0, compile_block.backref_map))

-    re->options |= PCRE_ANCHORED;

-  else

-    {

-    if (firstbyte < 0)

-      firstbyte = find_firstassertedchar(codestart, &temp_options, FALSE);

-    if (firstbyte >= 0)   /* Remove caseless flag for non-caseable chars */

-      {

-      int ch = firstbyte & 255;

-      re->first_byte = ((firstbyte & REQ_CASELESS) != 0 &&

-         compile_block.fcc[ch] == ch)? ch : firstbyte;

-      re->options |= PCRE_FIRSTSET;

-      }

-    else if (is_startline(codestart, 0, compile_block.backref_map))

-      re->options |= PCRE_STARTLINE;

-    }

-  }

-

-/* For an anchored pattern, we use the "required byte" only if it follows a

-variable length item in the regex. Remove the caseless flag for non-caseable

-bytes. */

-

-if (reqbyte >= 0 &&

-     ((re->options & PCRE_ANCHORED) == 0 || (reqbyte & REQ_VARY) != 0))

-  {

-  int ch = reqbyte & 255;

-  re->req_byte = ((reqbyte & REQ_CASELESS) != 0 &&

-    compile_block.fcc[ch] == ch)? (reqbyte & ~REQ_CASELESS) : reqbyte;

-  re->options |= PCRE_REQCHSET;

-  }

-

-/* Print out the compiled data for debugging */

-

-#ifdef DEBUG

-

-printf("Length = %d top_bracket = %d top_backref = %d\n",

-  length, re->top_bracket, re->top_backref);

-

-if (re->options != 0)

-  {

-  printf("%s%s%s%s%s%s%s%s%s%s\n",

-    ((re->options & PCRE_NOPARTIAL) != 0)? "nopartial " : "",

-    ((re->options & PCRE_ANCHORED) != 0)? "anchored " : "",

-    ((re->options & PCRE_CASELESS) != 0)? "caseless " : "",

-    ((re->options & PCRE_ICHANGED) != 0)? "case state changed " : "",

-    ((re->options & PCRE_EXTENDED) != 0)? "extended " : "",

-    ((re->options & PCRE_MULTILINE) != 0)? "multiline " : "",

-    ((re->options & PCRE_DOTALL) != 0)? "dotall " : "",

-    ((re->options & PCRE_DOLLAR_ENDONLY) != 0)? "endonly " : "",

-    ((re->options & PCRE_EXTRA) != 0)? "extra " : "",

-    ((re->options & PCRE_UNGREEDY) != 0)? "ungreedy " : "");

-  }

-

-if ((re->options & PCRE_FIRSTSET) != 0)

-  {

-  int ch = re->first_byte & 255;

-  const char *caseless = ((re->first_byte & REQ_CASELESS) == 0)? "" : " (caseless)";

-  if (isprint(ch)) printf("First char = %c%s\n", ch, caseless);

-    else printf("First char = \\x%02x%s\n", ch, caseless);

-  }

-

-if ((re->options & PCRE_REQCHSET) != 0)

-  {

-  int ch = re->req_byte & 255;

-  const char *caseless = ((re->req_byte & REQ_CASELESS) == 0)? "" : " (caseless)";

-  if (isprint(ch)) printf("Req char = %c%s\n", ch, caseless);

-    else printf("Req char = \\x%02x%s\n", ch, caseless);

-  }

-

-_pcre_printint(re, stdout);

-

-/* This check is done here in the debugging case so that the code that

-was compiled can be seen. */

-

-if (code - codestart > length)

-  {

-  (pcre_free)(re);

-  *errorptr = error_texts[ERR23];

-  *erroroffset = ptr - (uschar *)pattern;

-  if (errorcodeptr != NULL) *errorcodeptr = ERR23;

-  return NULL;

-  }

-#endif

-

-return (pcre *)re;

-}

-

-/* End of pcre_compile.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_config(). */

-

-

-

-

-/*************************************************

-* Return info about what features are configured *

-*************************************************/

-

-/* This function has an extensible interface so that additional items can be

-added compatibly.

-

-Arguments:

-  what             what information is required

-  where            where to put the information

-

-Returns:           0 if data returned, negative on error

-*/

-

-EXPORT int

-pcre_config(int what, void *where)

-{

-switch (what)

-  {

-  case PCRE_CONFIG_UTF8:

-#ifdef SUPPORT_UTF8

-  *((int *)where) = 1;

-#else

-  *((int *)where) = 0;

-#endif

-  break;

-

-  case PCRE_CONFIG_UNICODE_PROPERTIES:

-#ifdef SUPPORT_UCP

-  *((int *)where) = 1;

-#else

-  *((int *)where) = 0;

-#endif

-  break;

-

-  case PCRE_CONFIG_NEWLINE:

-  *((int *)where) = NEWLINE;

-  break;

-

-  case PCRE_CONFIG_LINK_SIZE:

-  *((int *)where) = LINK_SIZE;

-  break;

-

-  case PCRE_CONFIG_POSIX_MALLOC_THRESHOLD:

-  *((int *)where) = POSIX_MALLOC_THRESHOLD;

-  break;

-

-  case PCRE_CONFIG_MATCH_LIMIT:

-  *((unsigned int *)where) = MATCH_LIMIT;

-  break;

-

-  case PCRE_CONFIG_STACKRECURSE:

-#ifdef NO_RECURSE

-  *((int *)where) = 0;

-#else

-  *((int *)where) = 1;

-#endif

-  break;

-

-  default: return PCRE_ERROR_BADOPTION;

-  }

-

-return 0;

-}

-

-/* End of pcre_config.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_dfa_exec(), which is an

-alternative matching function that uses a DFA algorithm. This is NOT Perl-

-compatible, but it has advantages in certain applications. */

-

-

-

-

-/* For use to indent debugging output */

-

-#define SP "                   "

-

-

-

-/*************************************************

-*      Code parameters and static tables         *

-*************************************************/

-

-/* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes

-into others, under special conditions. A gap of 10 between the blocks should be

-enough. */

-

-#define OP_PROP_EXTRA    (EXTRACT_BASIC_MAX+1)

-#define OP_EXTUNI_EXTRA  (EXTRACT_BASIC_MAX+11)

-

-

-/* This table identifies those opcodes that are followed immediately by a

-character that is to be tested in some way. This makes is possible to

-centralize the loading of these characters. In the case of Type * etc, the

-"character" is the opcode for \D, \d, \S, \s, \W, or \w, which will always be a

-small value. */

-

-static uschar coptable[] = {

-  0,                             /* End                                    */

-  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  /* \A, \G, \B, \b, \D, \d, \S, \s, \W, \w */

-  0, 0,                          /* Any, Anybyte                           */

-  0, 0, 0,                       /* NOTPROP, PROP, EXTUNI                  */

-  0, 0, 0, 0, 0,                 /* \Z, \z, Opt, ^, $                      */

-  1,                             /* Char                                   */

-  1,                             /* Charnc                                 */

-  1,                             /* not                                    */

-  /* Positive single-char repeats                                          */

-  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */

-  3, 3, 3,                       /* upto, minupto, exact                   */

-  /* Negative single-char repeats - only for chars < 256                   */

-  1, 1, 1, 1, 1, 1,              /* NOT *, *?, +, +?, ?, ??                */

-  3, 3, 3,                       /* NOT upto, minupto, exact               */

-  /* Positive type repeats                                                 */

-  1, 1, 1, 1, 1, 1,              /* Type *, *?, +, +?, ?, ??               */

-  3, 3, 3,                       /* Type upto, minupto, exact              */

-  /* Character class & ref repeats                                         */

-  0, 0, 0, 0, 0, 0,              /* *, *?, +, +?, ?, ??                    */

-  0, 0,                          /* CRRANGE, CRMINRANGE                    */

-  0,                             /* CLASS                                  */

-  0,                             /* NCLASS                                 */

-  0,                             /* XCLASS - variable length               */

-  0,                             /* REF                                    */

-  0,                             /* RECURSE                                */

-  0,                             /* CALLOUT                                */

-  0,                             /* Alt                                    */

-  0,                             /* Ket                                    */

-  0,                             /* KetRmax                                */

-  0,                             /* KetRmin                                */

-  0,                             /* Assert                                 */

-  0,                             /* Assert not                             */

-  0,                             /* Assert behind                          */

-  0,                             /* Assert behind not                      */

-  0,                             /* Reverse                                */

-  0,                             /* Once                                   */

-  0,                             /* COND                                   */

-  0,                             /* CREF                                   */

-  0, 0,                          /* BRAZERO, BRAMINZERO                    */

-  0,                             /* BRANUMBER                              */

-  0                              /* BRA                                    */

-};

-

-/* These 2 tables allow for compact code for testing for \D, \d, \S, \s, \W,

-and \w */

-

-static uschar toptable1[] = {

-  0, 0, 0, 0, 0,

-  ctype_digit, ctype_digit,

-  ctype_space, ctype_space,

-  ctype_word,  ctype_word,

-  0                               /* OP_ANY */

-};

-

-static uschar toptable2[] = {

-  0, 0, 0, 0, 0,

-  ctype_digit, 0,

-  ctype_space, 0,

-  ctype_word,  0,

-  1                               /* OP_ANY */

-};

-

-

-/* Structure for holding data about a particular state, which is in effect the

-current data for an active path through the match tree. It must consist

-entirely of ints because the working vector we are passed, and which we put

-these structures in, is a vector of ints. */

-

-typedef struct stateblock {

-  int offset;                     /* Offset to opcode */

-  int count;                      /* Count for repeats */

-  int ims;                        /* ims flag bits */

-  int data;                       /* Some use extra data */

-} stateblock;

-

-#define INTS_PER_STATEBLOCK  (sizeof(stateblock)/sizeof(int))

-

-

-#ifdef DEBUG

-/*************************************************

-*             Print character string             *

-*************************************************/

-

-/* Character string printing function for debugging.

-

-Arguments:

-  p            points to string

-  length       number of bytes

-  f            where to print

-

-Returns:       nothing

-*/

-

-static void

-pchars(unsigned char *p, int length, FILE *f)

-{

-int c;

-while (length-- > 0)

-  {

-  if (isprint(c = *(p++)))

-    fprintf(f, "%c", c);

-  else

-    fprintf(f, "\\x%02x", c);

-  }

-}

-#endif

-

-

-

-/*************************************************

-*    Execute a Regular Expression - DFA engine   *

-*************************************************/

-

-/* This internal function applies a compiled pattern to a subject string,

-starting at a given point, using a DFA engine. This function is called from the

-external one, possibly multiple times if the pattern is not anchored. The

-function calls itself recursively for some kinds of subpattern.

-

-Arguments:

-  md                the match_data block with fixed information

-  this_start_code   the opening bracket of this subexpression's code

-  current_subject   where we currently are in the subject string

-  start_offset      start offset in the subject string

-  offsets           vector to contain the matching string offsets

-  offsetcount       size of same

-  workspace         vector of workspace

-  wscount           size of same

-  ims               the current ims flags

-  rlevel            function call recursion level

-  recursing         regex recursive call level

-

-Returns:            > 0 =>

-                    = 0 =>

-                     -1 => failed to match

-                   < -1 => some kind of unexpected problem

-

-The following macros are used for adding states to the two state vectors (one

-for the current character, one for the following character). */

-

-#define ADD_ACTIVE(x,y) \

-  if (active_count++ < wscount) \

-    { \

-    next_active_state->offset = (x); \

-    next_active_state->count  = (y); \

-    next_active_state->ims    = ims; \

-    next_active_state++; \

-    DPRINTF(("%.*sADD_ACTIVE(%d,%d)\n", rlevel*2-2, SP, (x), (y))); \

-    } \

-  else return PCRE_ERROR_DFA_WSSIZE

-

-#define ADD_ACTIVE_DATA(x,y,z) \

-  if (active_count++ < wscount) \

-    { \

-    next_active_state->offset = (x); \

-    next_active_state->count  = (y); \

-    next_active_state->ims    = ims; \

-    next_active_state->data   = (z); \

-    next_active_state++; \

-    DPRINTF(("%.*sADD_ACTIVE_DATA(%d,%d,%d)\n", rlevel*2-2, SP, (x), (y), (z))); \

-    } \

-  else return PCRE_ERROR_DFA_WSSIZE

-

-#define ADD_NEW(x,y) \

-  if (new_count++ < wscount) \

-    { \

-    next_new_state->offset = (x); \

-    next_new_state->count  = (y); \

-    next_new_state->ims    = ims; \

-    next_new_state++; \

-    DPRINTF(("%.*sADD_NEW(%d,%d)\n", rlevel*2-2, SP, (x), (y))); \

-    } \

-  else return PCRE_ERROR_DFA_WSSIZE

-

-#define ADD_NEW_DATA(x,y,z) \

-  if (new_count++ < wscount) \

-    { \

-    next_new_state->offset = (x); \

-    next_new_state->count  = (y); \

-    next_new_state->ims    = ims; \

-    next_new_state->data   = (z); \

-    next_new_state++; \

-    DPRINTF(("%.*sADD_NEW_DATA(%d,%d,%d)\n", rlevel*2-2, SP, (x), (y), (z))); \

-    } \

-  else return PCRE_ERROR_DFA_WSSIZE

-

-/* And now, here is the code */

-

-static int

-internal_dfa_exec(

-  dfa_match_data *md,

-  const uschar *this_start_code,

-  const uschar *current_subject,

-  int start_offset,

-  int *offsets,

-  int offsetcount,

-  int *workspace,

-  int wscount,

-  int ims,

-  int  rlevel,

-  int  recursing)

-{

-stateblock *active_states, *new_states, *temp_states;

-stateblock *next_active_state, *next_new_state;

-

-const uschar *ctypes, *lcc, *fcc;

-const uschar *ptr;

-const uschar *end_code;

-

-int active_count, new_count, match_count;

-

-/* Some fields in the md block are frequently referenced, so we load them into

-independent variables in the hope that this will perform better. */

-

-const uschar *start_subject = md->start_subject;

-const uschar *end_subject = md->end_subject;

-const uschar *start_code = md->start_code;

-

-BOOL utf8 = (md->poptions & PCRE_UTF8) != 0;

-

-rlevel++;

-offsetcount &= (-2);

-

-wscount -= 2;

-wscount = (wscount - (wscount % (INTS_PER_STATEBLOCK * 2))) /

-          (2 * INTS_PER_STATEBLOCK);

-

-DPRINTF(("\n%.*s---------------------\n"

-  "%.*sCall to internal_dfa_exec f=%d r=%d\n",

-  rlevel*2-2, SP, rlevel*2-2, SP, rlevel, recursing));

-

-ctypes = md->tables + ctypes_offset;

-lcc = md->tables + lcc_offset;

-fcc = md->tables + fcc_offset;

-

-match_count = PCRE_ERROR_NOMATCH;   /* A negative number */

-

-active_states = (stateblock *)(workspace + 2);

-next_new_state = new_states = active_states + wscount;

-new_count = 0;

-

-/* The first thing in any (sub) pattern is a bracket of some sort. Push all

-the alternative states onto the list, and find out where the end is. This

-makes is possible to use this function recursively, when we want to stop at a

-matching internal ket rather than at the end.

-

-If the first opcode in the first alternative is OP_REVERSE, we are dealing with

-a backward assertion. In that case, we have to find out the maximum amount to

-move back, and set up each alternative appropriately. */

-

-if (this_start_code[1+LINK_SIZE] == OP_REVERSE)

-  {

-  int max_back = 0;

-  int gone_back;

-

-  end_code = this_start_code;

-  do

-    {

-    int back = GET(end_code, 2+LINK_SIZE);

-    if (back > max_back) max_back = back;

-    end_code += GET(end_code, 1);

-    }

-  while (*end_code == OP_ALT);

-

-  /* If we can't go back the amount required for the longest lookbehind

-  pattern, go back as far as we can; some alternatives may still be viable. */

-

-#ifdef SUPPORT_UTF8

-  /* In character mode we have to step back character by character */

-

-  if (utf8)

-    {

-    for (gone_back = 0; gone_back < max_back; gone_back++)

-      {

-      if (current_subject <= start_subject) break;

-      current_subject--;

-      while (current_subject > start_subject &&

-             (*current_subject & 0xc0) == 0x80)

-        current_subject--;

-      }

-    }

-  else

-#endif

-

-  /* In byte-mode we can do this quickly. */

-

-    {

-    gone_back = (current_subject - max_back < start_subject)?

-      current_subject - start_subject : max_back;

-    current_subject -= gone_back;

-    }

-

-  /* Now we can process the individual branches. */

-

-  end_code = this_start_code;

-  do

-    {

-    int back = GET(end_code, 2+LINK_SIZE);

-    if (back <= gone_back)

-      {

-      int bstate = end_code - start_code + 2 + 2*LINK_SIZE;

-      ADD_NEW_DATA(-bstate, 0, gone_back - back);

-      }

-    end_code += GET(end_code, 1);

-    }

-  while (*end_code == OP_ALT);

- }

-

-/* This is the code for a "normal" subpattern (not a backward assertion). The

-start of a whole pattern is always one of these. If we are at the top level,

-we may be asked to restart matching from the same point that we reached for a

-previous partial match. We still have to scan through the top-level branches to

-find the end state. */

-

-else

-  {

-  end_code = this_start_code;

-

-  /* Restarting */

-

-  if (rlevel == 1 && (md->moptions & PCRE_DFA_RESTART) != 0)

-    {

-    do { end_code += GET(end_code, 1); } while (*end_code == OP_ALT);

-    new_count = workspace[1];

-    if (!workspace[0])

-      memcpy(new_states, active_states, new_count * sizeof(stateblock));

-    }

-

-  /* Not restarting */

-

-  else

-    {

-    do

-      {

-      ADD_NEW(end_code - start_code + 1 + LINK_SIZE, 0);

-      end_code += GET(end_code, 1);

-      }

-    while (*end_code == OP_ALT);

-    }

-  }

-

-workspace[0] = 0;    /* Bit indicating which vector is current */

-

-DPRINTF(("%.*sEnd state = %d\n", rlevel*2-2, SP, end_code - start_code));

-

-/* Loop for scanning the subject */

-

-ptr = current_subject;

-for (;;)

-  {

-  int i, j;

-  int c, d, clen, dlen;

-

-  /* Make the new state list into the active state list and empty the

-  new state list. */

-

-  temp_states = active_states;

-  active_states = new_states;

-  new_states = temp_states;

-  active_count = new_count;

-  new_count = 0;

-

-  workspace[0] ^= 1;              /* Remember for the restarting feature */

-  workspace[1] = active_count;

-

-#ifdef DEBUG

-  printf("%.*sNext character: rest of subject = \"", rlevel*2-2, SP);

-  pchars((uschar *)ptr, strlen((char *)ptr), stdout);

-  printf("\"\n");

-

-  printf("%.*sActive states: ", rlevel*2-2, SP);

-  for (i = 0; i < active_count; i++)

-    printf("%d/%d ", active_states[i].offset, active_states[i].count);

-  printf("\n");

-#endif

-

-  /* Set the pointers for adding new states */

-

-  next_active_state = active_states + active_count;

-  next_new_state = new_states;

-

-  /* Load the current character from the subject outside the loop, as many

-  different states may want to look at it, and we assume that at least one

-  will. */

-

-  if (ptr < end_subject)

-    {

-    clen = 1;

-#ifdef SUPPORT_UTF8

-    if (utf8) { GETCHARLEN(c, ptr, clen); } else

-#endif  /* SUPPORT_UTF8 */

-    c = *ptr;

-    }

-  else

-    {

-    clen = 0;    /* At end subject */

-    c = -1;

-    }

-

-  /* Scan up the active states and act on each one. The result of an action

-  may be to add more states to the currently active list (e.g. on hitting a

-  parenthesis) or it may be to put states on the new list, for considering

-  when we move the character pointer on. */

-

-  for (i = 0; i < active_count; i++)

-    {

-    stateblock *current_state = active_states + i;

-    const uschar *code;

-    int state_offset = current_state->offset;

-    int count, codevalue;

-    int chartype, othercase;

-

-#ifdef DEBUG

-    printf ("%.*sProcessing state %d c=", rlevel*2-2, SP, state_offset);

-    if (c < 0) printf("-1\n");

-      else if (c > 32 && c < 127) printf("'%c'\n", c);

-        else printf("0x%02x\n", c);

-#endif

-

-    /* This variable is referred to implicity in the ADD_xxx macros. */

-

-    ims = current_state->ims;

-

-    /* A negative offset is a special case meaning "hold off going to this

-    (negated) state until the number of characters in the data field have

-    been skipped". */

-

-    if (state_offset < 0)

-      {

-      if (current_state->data > 0)

-        {

-        DPRINTF(("%.*sSkipping this character\n", rlevel*2-2, SP));

-        ADD_NEW_DATA(state_offset, current_state->count,

-          current_state->data - 1);

-        continue;

-        }

-      else

-        {

-        current_state->offset = state_offset = -state_offset;

-        }

-      }

-

-    /* Check for a duplicate state with the same count, and skip if found. */

-

-    for (j = 0; j < i; j++)

-      {

-      if (active_states[j].offset == state_offset &&

-          active_states[j].count == current_state->count)

-        {

-        DPRINTF(("%.*sDuplicate state: skipped\n", rlevel*2-2, SP));

-        goto NEXT_ACTIVE_STATE;

-        }

-      }

-

-    /* The state offset is the offset to the opcode */

-

-    code = start_code + state_offset;

-    codevalue = *code;

-    if (codevalue >= OP_BRA) codevalue = OP_BRA; /* All brackets are equal */

-

-    /* If this opcode is followed by an inline character, load it. It is

-    tempting to test for the presence of a subject character here, but that

-    is wrong, because sometimes zero repetitions of the subject are

-    permitted.

-

-    We also use this mechanism for opcodes such as OP_TYPEPLUS that take an

-    argument that is not a data character - but is always one byte long.

-    Unfortunately, we have to take special action to deal with  \P, \p, and

-    \X in this case. To keep the other cases fast, convert these ones to new

-    opcodes. */

-

-    if (coptable[codevalue] > 0)

-      {

-      dlen = 1;

-#ifdef SUPPORT_UTF8

-      if (utf8) { GETCHARLEN(d, (code + coptable[codevalue]), dlen); } else

-#endif  /* SUPPORT_UTF8 */

-      d = code[coptable[codevalue]];

-      if (codevalue >= OP_TYPESTAR)

-        {

-        if (d == OP_ANYBYTE) return PCRE_ERROR_DFA_UITEM;

-        if (d >= OP_NOTPROP)

-          codevalue += (d == OP_EXTUNI)? OP_EXTUNI_EXTRA : OP_PROP_EXTRA;

-        }

-      }

-    else

-      {

-      dlen = 0;         /* Not strictly necessary, but compilers moan */

-      d = -1;           /* if these variables are not set. */

-      }

-

-

-    /* Now process the individual opcodes */

-

-    switch (codevalue)

-      {

-

-/* ========================================================================== */

-      /* Reached a closing bracket. If not at the end of the pattern, carry

-      on with the next opcode. Otherwise, unless we have an empty string and

-      PCRE_NOTEMPTY is set, save the match data, shifting up all previous

-      matches so we always have the longest first. */

-

-      case OP_KET:

-      case OP_KETRMIN:

-      case OP_KETRMAX:

-      if (code != end_code)

-        {

-        ADD_ACTIVE(state_offset + 1 + LINK_SIZE, 0);

-        if (codevalue != OP_KET)

-          {

-          ADD_ACTIVE(state_offset - GET(code, 1), 0);

-          }

-        }

-      else if (ptr > current_subject || (md->moptions & PCRE_NOTEMPTY) == 0)

-        {

-        if (match_count < 0) match_count = (offsetcount >= 2)? 1 : 0;

-          else if (match_count > 0 && ++match_count * 2 >= offsetcount)

-            match_count = 0;

-        count = ((match_count == 0)? offsetcount : match_count * 2) - 2;

-        if (count > 0) memmove(offsets + 2, offsets, count * sizeof(int));

-        if (offsetcount >= 2)

-          {

-          offsets[0] = current_subject - start_subject;

-          offsets[1] = ptr - start_subject;

-          DPRINTF(("%.*sSet matched string = \"%.*s\"\n", rlevel*2-2, SP,

-            offsets[1] - offsets[0], current_subject));

-          }

-        if ((md->moptions & PCRE_DFA_SHORTEST) != 0)

-          {

-          DPRINTF(("%.*sEnd of internal_dfa_exec %d: returning %d\n"

-            "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel,

-            match_count, rlevel*2-2, SP));

-          return match_count;

-          }

-        }

-      break;

-

-/* ========================================================================== */

-      /* These opcodes add to the current list of states without looking

-      at the current character. */

-

-      /*-----------------------------------------------------------------*/

-      case OP_ALT:

-      do { code += GET(code, 1); } while (*code == OP_ALT);

-      ADD_ACTIVE(code - start_code, 0);

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_BRA:

-      do

-        {

-        ADD_ACTIVE(code - start_code + 1 + LINK_SIZE, 0);

-        code += GET(code, 1);

-        }

-      while (*code == OP_ALT);

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_BRAZERO:

-      case OP_BRAMINZERO:

-      ADD_ACTIVE(state_offset + 1, 0);

-      code += 1 + GET(code, 2);

-      while (*code == OP_ALT) code += GET(code, 1);

-      ADD_ACTIVE(code - start_code + 1 + LINK_SIZE, 0);

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_BRANUMBER:

-      ADD_ACTIVE(state_offset + 1 + LINK_SIZE, 0);

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_CIRC:

-      if ((ptr == start_subject && (md->moptions & PCRE_NOTBOL) == 0) ||

-          ((ims & PCRE_MULTILINE) != 0 && ptr[-1] == NEWLINE))

-        { ADD_ACTIVE(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_EOD:

-      if (ptr >= end_subject) { ADD_ACTIVE(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_OPT:

-      ims = code[1];

-      ADD_ACTIVE(state_offset + 2, 0);

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_SOD:

-      if (ptr == start_subject) { ADD_ACTIVE(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_SOM:

-      if (ptr == start_subject + start_offset) { ADD_ACTIVE(state_offset + 1, 0); }

-      break;

-

-

-/* ========================================================================== */

-      /* These opcodes inspect the next subject character, and sometimes

-      the previous one as well, but do not have an argument. The variable

-      clen contains the length of the current character and is zero if we are

-      at the end of the subject. */

-

-      /*-----------------------------------------------------------------*/

-      case OP_ANY:

-      if (clen > 0 && (c != NEWLINE || (ims & PCRE_DOTALL) != 0))

-        { ADD_NEW(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_EODN:

-      if (clen == 0 || (c == NEWLINE && ptr + 1 == end_subject))

-        { ADD_ACTIVE(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_DOLL:

-      if ((md->moptions & PCRE_NOTEOL) == 0)

-        {

-        if (clen == 0 || (c == NEWLINE && (ptr + 1 == end_subject ||

-                                (ims & PCRE_MULTILINE) != 0)))

-          { ADD_ACTIVE(state_offset + 1, 0); }

-        }

-      else if (c == NEWLINE && (ims & PCRE_MULTILINE) != 0)

-        { ADD_ACTIVE(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-

-      case OP_DIGIT:

-      case OP_WHITESPACE:

-      case OP_WORDCHAR:

-      if (clen > 0 && c < 256 &&

-            ((ctypes[c] & toptable1[codevalue]) ^ toptable2[codevalue]) != 0)

-        { ADD_NEW(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_NOT_DIGIT:

-      case OP_NOT_WHITESPACE:

-      case OP_NOT_WORDCHAR:

-      if (clen > 0 && (c >= 256 ||

-            ((ctypes[c] & toptable1[codevalue]) ^ toptable2[codevalue]) != 0))

-        { ADD_NEW(state_offset + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_WORD_BOUNDARY:

-      case OP_NOT_WORD_BOUNDARY:

-        {

-        int left_word, right_word;

-

-        if (ptr > start_subject)

-          {

-          const uschar *temp = ptr - 1;

-#ifdef SUPPORT_UTF8

-          if (utf8) BACKCHAR(temp);

-#endif

-          GETCHARTEST(d, temp);

-          left_word = d < 256 && (ctypes[d] & ctype_word) != 0;

-          }

-        else left_word = 0;

-

-        if (clen > 0) right_word = c < 256 && (ctypes[c] & ctype_word) != 0;

-          else right_word = 0;

-

-        if ((left_word == right_word) == (codevalue == OP_NOT_WORD_BOUNDARY))

-          { ADD_ACTIVE(state_offset + 1, 0); }

-        }

-      break;

-

-

-#ifdef SUPPORT_UCP

-

-      /*-----------------------------------------------------------------*/

-      /* Check the next character by Unicode property. We will get here only

-      if the support is in the binary; otherwise a compile-time error occurs.

-      */

-

-      case OP_PROP:

-      case OP_NOTPROP:

-      if (clen > 0)

-        {

-        int rqdtype, category;

-        category = ucp_findchar(c, &chartype, &othercase);

-        rqdtype = code[1];

-        if (rqdtype >= 128)

-          {

-          if ((rqdtype - 128 == category) == (codevalue == OP_PROP))

-            { ADD_NEW(state_offset + 2, 0); }

-          }

-        else

-          {

-          if ((rqdtype == chartype) == (codevalue == OP_PROP))

-            { ADD_NEW(state_offset + 2, 0); }

-          }

-        }

-      break;

-#endif

-

-

-

-/* ========================================================================== */

-      /* These opcodes likewise inspect the subject character, but have an

-      argument that is not a data character. It is one of these opcodes:

-      OP_ANY, OP_DIGIT, OP_NOT_DIGIT, OP_WHITESPACE, OP_NOT_SPACE, OP_WORDCHAR,

-      OP_NOT_WORDCHAR. The value is loaded into d. */

-

-      case OP_TYPEPLUS:

-      case OP_TYPEMINPLUS:

-      count = current_state->count;  /* Already matched */

-      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }

-      if (clen > 0)

-        {

-        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||

-            (c < 256 &&

-              (d != OP_ANY || c != '\n' || (ims & PCRE_DOTALL) != 0) &&

-              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))

-          {

-          count++;

-          ADD_NEW(state_offset, count);

-          }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_TYPEQUERY:

-      case OP_TYPEMINQUERY:

-      ADD_ACTIVE(state_offset + 2, 0);

-      if (clen > 0)

-        {

-        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||

-            (c < 256 &&

-              (d != OP_ANY || c != '\n' || (ims & PCRE_DOTALL) != 0) &&

-              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))

-          {

-          ADD_NEW(state_offset + 2, 0);

-          }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_TYPESTAR:

-      case OP_TYPEMINSTAR:

-      ADD_ACTIVE(state_offset + 2, 0);

-      if (clen > 0)

-        {

-        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||

-            (c < 256 &&

-              (d != OP_ANY || c != '\n' || (ims & PCRE_DOTALL) != 0) &&

-              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))

-          {

-          ADD_NEW(state_offset, 0);

-          }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_TYPEEXACT:

-      case OP_TYPEUPTO:

-      case OP_TYPEMINUPTO:

-      if (codevalue != OP_TYPEEXACT)

-        { ADD_ACTIVE(state_offset + 4, 0); }

-      count = current_state->count;  /* Number already matched */

-      if (clen > 0)

-        {

-        if ((c >= 256 && d != OP_DIGIT && d != OP_WHITESPACE && d != OP_WORDCHAR) ||

-            (c < 256 &&

-              (d != OP_ANY || c != '\n' || (ims & PCRE_DOTALL) != 0) &&

-              ((ctypes[c] & toptable1[d]) ^ toptable2[d]) != 0))

-          {

-          if (++count >= GET2(code, 1))

-            { ADD_NEW(state_offset + 4, 0); }

-          else

-            { ADD_NEW(state_offset, count); }

-          }

-        }

-      break;

-

-/* ========================================================================== */

-      /* These are virtual opcodes that are used when something like

-      OP_TYPEPLUS has OP_PROP, OP_NOTPROP, or OP_EXTUNI as its argument. It

-      keeps the code above fast for the other cases. The argument is in the

-      d variable. */

-

-      case OP_PROP_EXTRA + OP_TYPEPLUS:

-      case OP_PROP_EXTRA + OP_TYPEMINPLUS:

-      count = current_state->count;           /* Already matched */

-      if (count > 0) { ADD_ACTIVE(state_offset + 3, 0); }

-      if (clen > 0)

-        {

-        int category = ucp_findchar(c, &chartype, &othercase);

-        int rqdtype = code[2];

-        if ((d == OP_PROP) ==

-            (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))

-          { count++; ADD_NEW(state_offset, count); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_EXTUNI_EXTRA + OP_TYPEPLUS:

-      case OP_EXTUNI_EXTRA + OP_TYPEMINPLUS:

-      count = current_state->count;  /* Already matched */

-      if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }

-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)

-        {

-        const uschar *nptr = ptr + clen;

-        int ncount = 0;

-        while (nptr < end_subject)

-          {

-          int nd;

-          int ndlen = 1;

-          GETCHARLEN(nd, nptr, ndlen);

-          if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;

-          ncount++;

-          nptr += ndlen;

-          }

-        count++;

-        ADD_NEW_DATA(-state_offset, count, ncount);

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_PROP_EXTRA + OP_TYPEQUERY:

-      case OP_PROP_EXTRA + OP_TYPEMINQUERY:

-      count = 3;

-      goto QS1;

-

-      case OP_PROP_EXTRA + OP_TYPESTAR:

-      case OP_PROP_EXTRA + OP_TYPEMINSTAR:

-      count = 0;

-

-      QS1:

-

-      ADD_ACTIVE(state_offset + 3, 0);

-      if (clen > 0)

-        {

-        int category = ucp_findchar(c, &chartype, &othercase);

-        int rqdtype = code[2];

-        if ((d == OP_PROP) ==

-            (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))

-          { ADD_NEW(state_offset + count, 0); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_EXTUNI_EXTRA + OP_TYPEQUERY:

-      case OP_EXTUNI_EXTRA + OP_TYPEMINQUERY:

-      count = 2;

-      goto QS2;

-

-      case OP_EXTUNI_EXTRA + OP_TYPESTAR:

-      case OP_EXTUNI_EXTRA + OP_TYPEMINSTAR:

-      count = 0;

-

-      QS2:

-

-      ADD_ACTIVE(state_offset + 2, 0);

-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)

-        {

-        const uschar *nptr = ptr + clen;

-        int ncount = 0;

-        while (nptr < end_subject)

-          {

-          int nd;

-          int ndlen = 1;

-          GETCHARLEN(nd, nptr, ndlen);

-          if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;

-          ncount++;

-          nptr += ndlen;

-          }

-        ADD_NEW_DATA(-(state_offset + count), 0, ncount);

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_PROP_EXTRA + OP_TYPEEXACT:

-      case OP_PROP_EXTRA + OP_TYPEUPTO:

-      case OP_PROP_EXTRA + OP_TYPEMINUPTO:

-      if (codevalue != OP_PROP_EXTRA + OP_TYPEEXACT)

-        { ADD_ACTIVE(state_offset + 5, 0); }

-      count = current_state->count;  /* Number already matched */

-      if (clen > 0)

-        {

-        int category = ucp_findchar(c, &chartype, &othercase);

-        int rqdtype = code[4];

-        if ((d == OP_PROP) ==

-            (rqdtype == ((rqdtype >= 128)? (category + 128) : chartype)))

-          {

-          if (++count >= GET2(code, 1))

-            { ADD_NEW(state_offset + 5, 0); }

-          else

-            { ADD_NEW(state_offset, count); }

-          }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_EXTUNI_EXTRA + OP_TYPEEXACT:

-      case OP_EXTUNI_EXTRA + OP_TYPEUPTO:

-      case OP_EXTUNI_EXTRA + OP_TYPEMINUPTO:

-      if (codevalue != OP_EXTUNI_EXTRA + OP_TYPEEXACT)

-        { ADD_ACTIVE(state_offset + 4, 0); }

-      count = current_state->count;  /* Number already matched */

-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)

-        {

-        const uschar *nptr = ptr + clen;

-        int ncount = 0;

-        while (nptr < end_subject)

-          {

-          int nd;

-          int ndlen = 1;

-          GETCHARLEN(nd, nptr, ndlen);

-          if (ucp_findchar(nd, &chartype, &othercase) != ucp_M) break;

-          ncount++;

-          nptr += ndlen;

-          }

-        if (++count >= GET2(code, 1))

-          { ADD_NEW_DATA(-(state_offset + 4), 0, ncount); }

-        else

-          { ADD_NEW_DATA(-state_offset, count, ncount); }

-        }

-      break;

-

-/* ========================================================================== */

-      /* These opcodes are followed by a character that is usually compared

-      to the current subject character; it is loaded into d. We still get

-      here even if there is no subject character, because in some cases zero

-      repetitions are permitted. */

-

-      /*-----------------------------------------------------------------*/

-      case OP_CHAR:

-      if (clen > 0 && c == d) { ADD_NEW(state_offset + dlen + 1, 0); }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_CHARNC:

-      if (clen == 0) break;

-

-#ifdef SUPPORT_UTF8

-      if (utf8)

-        {

-        if (c == d) { ADD_NEW(state_offset + dlen + 1, 0); } else

-          {

-          if (c < 128) othercase = fcc[c]; else

-

-          /* If we have Unicode property support, we can use it to test the

-          other case of the character, if there is one. The result of

-          ucp_findchar() is < 0 if the char isn't found, and othercase is

-          returned as zero if there isn't another case. */

-

-#ifdef SUPPORT_UCP

-          if (ucp_findchar(c, &chartype, &othercase) < 0)

-#endif

-            othercase = -1;

-

-          if (d == othercase) { ADD_NEW(state_offset + dlen + 1, 0); }

-          }

-        }

-      else

-#endif  /* SUPPORT_UTF8 */

-

-      /* Non-UTF-8 mode */

-        {

-        if (lcc[c] == lcc[d]) { ADD_NEW(state_offset + 2, 0); }

-        }

-      break;

-

-

-#ifdef SUPPORT_UCP

-      /*-----------------------------------------------------------------*/

-      /* This is a tricky one because it can match more than one character.

-      Find out how many characters to skip, and then set up a negative state

-      to wait for them to pass before continuing. */

-

-      case OP_EXTUNI:

-      if (clen > 0 && ucp_findchar(c, &chartype, &othercase) != ucp_M)

-        {

-        const uschar *nptr = ptr + clen;

-        int ncount = 0;

-        while (nptr < end_subject)

-          {

-          int nclen = 1;

-          GETCHARLEN(c, nptr, nclen);

-          if (ucp_findchar(c, &chartype, &othercase) != ucp_M) break;

-          ncount++;

-          nptr += nclen;

-          }

-        ADD_NEW_DATA(-(state_offset + 1), 0, ncount);

-        }

-      break;

-#endif

-

-      /*-----------------------------------------------------------------*/

-      /* Match a negated single character. This is only used for one-byte

-      characters, that is, we know that d < 256. The character we are

-      checking (c) can be multibyte. */

-

-      case OP_NOT:

-      if (clen > 0)

-        {

-        int otherd = ((ims & PCRE_CASELESS) != 0)? fcc[d] : d;

-        if (c != d && c != otherd) { ADD_NEW(state_offset + dlen + 1, 0); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_PLUS:

-      case OP_MINPLUS:

-      case OP_NOTPLUS:

-      case OP_NOTMINPLUS:

-      count = current_state->count;  /* Already matched */

-      if (count > 0) { ADD_ACTIVE(state_offset + dlen + 1, 0); }

-      if (clen > 0)

-        {

-        int otherd = -1;

-        if ((ims & PCRE_CASELESS) != 0)

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && c >= 128)

-            {

-#ifdef SUPPORT_UCP

-            if (ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;

-#endif  /* SUPPORT_UCP */

-            }

-          else

-#endif  /* SUPPORT_UTF8 */

-          otherd = fcc[d];

-          }

-        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))

-          { count++; ADD_NEW(state_offset, count); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_QUERY:

-      case OP_MINQUERY:

-      case OP_NOTQUERY:

-      case OP_NOTMINQUERY:

-      ADD_ACTIVE(state_offset + dlen + 1, 0);

-      if (clen > 0)

-        {

-        int otherd = -1;

-        if ((ims && PCRE_CASELESS) != 0)

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && c >= 128)

-            {

-#ifdef SUPPORT_UCP

-            if (ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;

-#endif  /* SUPPORT_UCP */

-            }

-          else

-#endif  /* SUPPORT_UTF8 */

-          otherd = fcc[d];

-          }

-        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))

-          { ADD_NEW(state_offset + dlen + 1, 0); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_STAR:

-      case OP_MINSTAR:

-      case OP_NOTSTAR:

-      case OP_NOTMINSTAR:

-      ADD_ACTIVE(state_offset + dlen + 1, 0);

-      if (clen > 0)

-        {

-        int otherd = -1;

-        if ((ims && PCRE_CASELESS) != 0)

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && c >= 128)

-            {

-#ifdef SUPPORT_UCP

-            if (ucp_findchar(c, &chartype, &otherd) < 0) otherd = -1;

-#endif  /* SUPPORT_UCP */

-            }

-          else

-#endif  /* SUPPORT_UTF8 */

-          otherd = fcc[d];

-          }

-        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))

-          { ADD_NEW(state_offset, 0); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_EXACT:

-      case OP_UPTO:

-      case OP_MINUPTO:

-      case OP_NOTEXACT:

-      case OP_NOTUPTO:

-      case OP_NOTMINUPTO:

-      if (codevalue != OP_EXACT && codevalue != OP_NOTEXACT)

-        { ADD_ACTIVE(state_offset + dlen + 3, 0); }

-      count = current_state->count;  /* Number already matched */

-      if (clen > 0)

-        {

-        int otherd = -1;

-        if ((ims & PCRE_CASELESS) != 0)

-          {

-#ifdef SUPPORT_UTF8

-          if (utf8 && c >= 128)

-            {

-#ifdef SUPPORT_UCP

-            if (ucp_findchar(d, &chartype, &otherd) < 0) otherd = -1;

-#endif  /* SUPPORT_UCP */

-            }

-          else

-#endif  /* SUPPORT_UTF8 */

-          otherd = fcc[d];

-          }

-        if ((c == d || c == otherd) == (codevalue < OP_NOTSTAR))

-          {

-          if (++count >= GET2(code, 1))

-            { ADD_NEW(state_offset + dlen + 3, 0); }

-          else

-            { ADD_NEW(state_offset, count); }

-          }

-        }

-      break;

-

-

-/* ========================================================================== */

-      /* These are the class-handling opcodes */

-

-      case OP_CLASS:

-      case OP_NCLASS:

-      case OP_XCLASS:

-        {

-        BOOL isinclass = FALSE;

-        int next_state_offset;

-        const uschar *ecode;

-

-        /* For a simple class, there is always just a 32-byte table, and we

-        can set isinclass from it. */

-

-        if (codevalue != OP_XCLASS)

-          {

-          ecode = code + 33;

-          if (clen > 0)

-            {

-            isinclass = (c > 255)? (codevalue == OP_NCLASS) :

-              ((code[1 + c/8] & (1 << (c&7))) != 0);

-            }

-          }

-

-        /* An extended class may have a table or a list of single characters,

-        ranges, or both, and it may be positive or negative. There's a

-        function that sorts all this out. */

-

-        else

-         {

-         ecode = code + GET(code, 1);

-         if (clen > 0) isinclass = _pcre_xclass(c, code + 1 + LINK_SIZE);

-         }

-

-        /* At this point, isinclass is set for all kinds of class, and ecode

-        points to the byte after the end of the class. If there is a

-        quantifier, this is where it will be. */

-

-        next_state_offset = ecode - start_code;

-

-        switch (*ecode)

-          {

-          case OP_CRSTAR:

-          case OP_CRMINSTAR:

-          ADD_ACTIVE(next_state_offset + 1, 0);

-          if (isinclass) { ADD_NEW(state_offset, 0); }

-          break;

-

-          case OP_CRPLUS:

-          case OP_CRMINPLUS:

-          count = current_state->count;  /* Already matched */

-          if (count > 0) { ADD_ACTIVE(next_state_offset + 1, 0); }

-          if (isinclass) { count++; ADD_NEW(state_offset, count); }

-          break;

-

-          case OP_CRQUERY:

-          case OP_CRMINQUERY:

-          ADD_ACTIVE(next_state_offset + 1, 0);

-          if (isinclass) { ADD_NEW(next_state_offset + 1, 0); }

-          break;

-

-          case OP_CRRANGE:

-          case OP_CRMINRANGE:

-          count = current_state->count;  /* Already matched */

-          if (count >= GET2(ecode, 1))

-            { ADD_ACTIVE(next_state_offset + 5, 0); }

-          if (isinclass)

-            {

-            if (++count >= GET2(ecode, 3))

-              { ADD_NEW(next_state_offset + 5, 0); }

-            else

-              { ADD_NEW(state_offset, count); }

-            }

-          break;

-

-          default:

-          if (isinclass) { ADD_NEW(next_state_offset, 0); }

-          break;

-          }

-        }

-      break;

-

-/* ========================================================================== */

-      /* These are the opcodes for fancy brackets of various kinds. We have

-      to use recursion in order to handle them. */

-

-      case OP_ASSERT:

-      case OP_ASSERT_NOT:

-      case OP_ASSERTBACK:

-      case OP_ASSERTBACK_NOT:

-        {

-        int rc;

-        int local_offsets[2];

-        int local_workspace[1000];

-        const uschar *endasscode = code + GET(code, 1);

-

-        while (*endasscode == OP_ALT) endasscode += GET(endasscode, 1);

-

-        rc = internal_dfa_exec(

-          md,                                   /* static match data */

-          code,                                 /* this subexpression's code */

-          ptr,                                  /* where we currently are */

-          ptr - start_subject,                  /* start offset */

-          local_offsets,                        /* offset vector */

-          sizeof(local_offsets)/sizeof(int),    /* size of same */

-          local_workspace,                      /* workspace vector */

-          sizeof(local_workspace)/sizeof(int),  /* size of same */

-          ims,                                  /* the current ims flags */

-          rlevel,                               /* function recursion level */

-          recursing);                           /* pass on regex recursion */

-

-        if ((rc >= 0) == (codevalue == OP_ASSERT || codevalue == OP_ASSERTBACK))

-            { ADD_ACTIVE(endasscode + LINK_SIZE + 1 - start_code, 0); }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_COND:

-        {

-        int local_offsets[1000];

-        int local_workspace[1000];

-        int condcode = code[LINK_SIZE+1];

-

-        /* The only supported version of OP_CREF is for the value 0xffff, which

-        means "test if in a recursion". */

-

-        if (condcode == OP_CREF)

-          {

-          int value = GET2(code, LINK_SIZE+2);

-          if (value != 0xffff) return PCRE_ERROR_DFA_UCOND;

-          if (recursing > 0) { ADD_ACTIVE(state_offset + LINK_SIZE + 4, 0); }

-            else { ADD_ACTIVE(state_offset + GET(code, 1) + LINK_SIZE + 1, 0); }

-          }

-

-        /* Otherwise, the condition is an assertion */

-

-        else

-          {

-          int rc;

-          const uschar *asscode = code + LINK_SIZE + 1;

-          const uschar *endasscode = asscode + GET(asscode, 1);

-

-          while (*endasscode == OP_ALT) endasscode += GET(endasscode, 1);

-

-          rc = internal_dfa_exec(

-            md,                                   /* fixed match data */

-            asscode,                              /* this subexpression's code */

-            ptr,                                  /* where we currently are */

-            ptr - start_subject,                  /* start offset */

-            local_offsets,                        /* offset vector */

-            sizeof(local_offsets)/sizeof(int),    /* size of same */

-            local_workspace,                      /* workspace vector */

-            sizeof(local_workspace)/sizeof(int),  /* size of same */

-            ims,                                  /* the current ims flags */

-            rlevel,                               /* function recursion level */

-            recursing);                           /* pass on regex recursion */

-

-          if ((rc >= 0) ==

-                (condcode == OP_ASSERT || condcode == OP_ASSERTBACK))

-            { ADD_ACTIVE(endasscode + LINK_SIZE + 1 - start_code, 0); }

-          else

-            { ADD_ACTIVE(state_offset + GET(code, 1) + LINK_SIZE + 1, 0); }

-          }

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_RECURSE:

-        {

-        int local_offsets[1000];

-        int local_workspace[1000];

-        int rc;

-

-        DPRINTF(("%.*sStarting regex recursion %d\n", rlevel*2-2, SP,

-          recursing + 1));

-

-        rc = internal_dfa_exec(

-          md,                                   /* fixed match data */

-          start_code + GET(code, 1),            /* this subexpression's code */

-          ptr,                                  /* where we currently are */

-          ptr - start_subject,                  /* start offset */

-          local_offsets,                        /* offset vector */

-          sizeof(local_offsets)/sizeof(int),    /* size of same */

-          local_workspace,                      /* workspace vector */

-          sizeof(local_workspace)/sizeof(int),  /* size of same */

-          ims,                                  /* the current ims flags */

-          rlevel,                               /* function recursion level */

-          recursing + 1);                       /* regex recurse level */

-

-        DPRINTF(("%.*sReturn from regex recursion %d: rc=%d\n", rlevel*2-2, SP,

-          recursing + 1, rc));

-

-        /* Ran out of internal offsets */

-

-        if (rc == 0) return PCRE_ERROR_DFA_RECURSE;

-

-        /* For each successful matched substring, set up the next state with a

-        count of characters to skip before trying it. Note that the count is in

-        characters, not bytes. */

-

-        if (rc > 0)

-          {

-          for (rc = rc*2 - 2; rc >= 0; rc -= 2)

-            {

-            const uschar *p = start_subject + local_offsets[rc];

-            const uschar *pp = start_subject + local_offsets[rc+1];

-            int charcount = local_offsets[rc+1] - local_offsets[rc];

-            while (p < pp) if ((*p++ & 0xc0) == 0x80) charcount--;

-            if (charcount > 0)

-              {

-              ADD_NEW_DATA(-(state_offset + LINK_SIZE + 1), 0, (charcount - 1));

-              }

-            else

-              {

-              ADD_ACTIVE(state_offset + LINK_SIZE + 1, 0);

-              }

-            }

-          }

-        else if (rc != PCRE_ERROR_NOMATCH) return rc;

-        }

-      break;

-

-      /*-----------------------------------------------------------------*/

-      case OP_ONCE:

-        {

-        const uschar *endcode;

-        int local_offsets[2];

-        int local_workspace[1000];

-

-        int rc = internal_dfa_exec(

-          md,                                   /* fixed match data */

-          code,                                 /* this subexpression's code */

-          ptr,                                  /* where we currently are */

-          ptr - start_subject,                  /* start offset */

-          local_offsets,                        /* offset vector */

-          sizeof(local_offsets)/sizeof(int),    /* size of same */

-          local_workspace,                      /* workspace vector */

-          sizeof(local_workspace)/sizeof(int),  /* size of same */

-          ims,                                  /* the current ims flags */

-          rlevel,                               /* function recursion level */

-          recursing);                           /* pass on regex recursion */

-

-        if (rc >= 0)

-          {

-          const uschar *end_subpattern = code;

-          int charcount = local_offsets[1] - local_offsets[0];

-          int next_state_offset, repeat_state_offset;

-          BOOL is_repeated;

-

-          do { end_subpattern += GET(end_subpattern, 1); }

-            while (*end_subpattern == OP_ALT);

-          next_state_offset = end_subpattern - start_code + LINK_SIZE + 1;

-

-          /* If the end of this subpattern is KETRMAX or KETRMIN, we must

-          arrange for the repeat state also to be added to the relevant list.

-          Calculate the offset, or set -1 for no repeat. */

-

-          repeat_state_offset = (*end_subpattern == OP_KETRMAX ||

-                                 *end_subpattern == OP_KETRMIN)?

-            end_subpattern - start_code - GET(end_subpattern, 1) : -1;

-

-          /* If we have matched an empty string, add the next state at the

-          current character pointer. This is important so that the duplicate

-          checking kicks in, which is what breaks infinite loops that match an

-          empty string. */

-

-          if (charcount == 0)

-            {

-            ADD_ACTIVE(next_state_offset, 0);

-            }

-

-          /* Optimization: if there are no more active states, and there

-          are no new states yet set up, then skip over the subject string

-          right here, to save looping. Otherwise, set up the new state to swing

-          into action when the end of the substring is reached. */

-

-          else if (i + 1 >= active_count && new_count == 0)

-            {

-            ptr += charcount;

-            clen = 0;

-            ADD_NEW(next_state_offset, 0);

-

-            /* If we are adding a repeat state at the new character position,

-            we must fudge things so that it is the only current state.

-            Otherwise, it might be a duplicate of one we processed before, and

-            that would cause it to be skipped. */

-

-            if (repeat_state_offset >= 0)

-              {

-              next_active_state = active_states;

-              active_count = 0;

-              i = -1;

-              ADD_ACTIVE(repeat_state_offset, 0);

-              }

-            }

-          else

-            {

-            const uschar *p = start_subject + local_offsets[0];

-            const uschar *pp = start_subject + local_offsets[1];

-            while (p < pp) if ((*p++ & 0xc0) == 0x80) charcount--;

-            ADD_NEW_DATA(-next_state_offset, 0, (charcount - 1));

-            if (repeat_state_offset >= 0)

-              { ADD_NEW_DATA(-repeat_state_offset, 0, (charcount - 1)); }

-            }

-

-          }

-        else if (rc != PCRE_ERROR_NOMATCH) return rc;

-        }

-      break;

-

-

-/* ========================================================================== */

-      /* Handle callouts */

-

-      case OP_CALLOUT:

-      if (pcre_callout != NULL)

-        {

-        int rrc;

-        pcre_callout_block cb;

-        cb.version          = 1;   /* Version 1 of the callout block */

-        cb.callout_number   = code[1];

-        cb.offset_vector    = offsets;

-        cb.subject          = (char *)start_subject;

-        cb.subject_length   = end_subject - start_subject;

-        cb.start_match      = current_subject - start_subject;

-        cb.current_position = ptr - start_subject;

-        cb.pattern_position = GET(code, 2);

-        cb.next_item_length = GET(code, 2 + LINK_SIZE);

-        cb.capture_top      = 1;

-        cb.capture_last     = -1;

-        cb.callout_data     = md->callout_data;

-        if ((rrc = (*pcre_callout)(&cb)) < 0) return rrc;   /* Abandon */

-        if (rrc == 0) { ADD_ACTIVE(state_offset + 2 + 2*LINK_SIZE, 0); }

-        }

-      break;

-

-

-/* ========================================================================== */

-      default:        /* Unsupported opcode */

-      return PCRE_ERROR_DFA_UITEM;

-      }

-

-    NEXT_ACTIVE_STATE: continue;

-

-    }      /* End of loop scanning active states */

-

-  /* We have finished the processing at the current subject character. If no

-  new states have been set for the next character, we have found all the

-  matches that we are going to find. If we are at the top level and partial

-  matching has been requested, check for appropriate conditions. */

-

-  if (new_count <= 0)

-    {

-    if (match_count < 0 &&                     /* No matches found */

-        rlevel == 1 &&                         /* Top level match function */

-        (md->moptions & PCRE_PARTIAL) != 0 &&  /* Want partial matching */

-        ptr >= end_subject &&                  /* Reached end of subject */

-        ptr > current_subject)                 /* Matched non-empty string */

-      {

-      if (offsetcount >= 2)

-        {

-        offsets[0] = current_subject - start_subject;

-        offsets[1] = end_subject - start_subject;

-        }

-      match_count = PCRE_ERROR_PARTIAL;

-      }

-

-    DPRINTF(("%.*sEnd of internal_dfa_exec %d: returning %d\n"

-      "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel, match_count,

-      rlevel*2-2, SP));

-    return match_count;

-    }

-

-  /* One or more states are active for the next character. */

-

-  ptr += clen;    /* Advance to next subject character */

-  }               /* Loop to move along the subject string */

-

-/* Control never gets here, but we must keep the compiler happy. */

-

-DPRINTF(("%.*s+++ Unexpected end of internal_dfa_exec %d +++\n"

-  "%.*s---------------------\n\n", rlevel*2-2, SP, rlevel, rlevel*2-2, SP));

-return PCRE_ERROR_NOMATCH;

-}

-

-

-

-

-/*************************************************

-*    Execute a Regular Expression - DFA engine   *

-*************************************************/

-

-/* This external function applies a compiled re to a subject string using a DFA

-engine. This function calls the internal function multiple times if the pattern

-is not anchored.

-

-Arguments:

-  argument_re     points to the compiled expression

-  extra_data      points to extra data or is NULL (not currently used)

-  subject         points to the subject string

-  length          length of subject string (may contain binary zeros)

-  start_offset    where to start in the subject string

-  options         option bits

-  offsets         vector of match offsets

-  offsetcount     size of same

-  workspace       workspace vector

-  wscount         size of same

-

-Returns:          > 0 => number of match offset pairs placed in offsets

-                  = 0 => offsets overflowed; longest matches are present

-                   -1 => failed to match

-                 < -1 => some kind of unexpected problem

-*/

-

-EXPORT int

-pcre_dfa_exec(const pcre *argument_re, const pcre_extra *extra_data,

-  const char *subject, int length, int start_offset, int options, int *offsets,

-  int offsetcount, int *workspace, int wscount)

-{

-real_pcre *re = (real_pcre *)argument_re;

-dfa_match_data match_block;

-BOOL utf8, anchored, startline, firstline;

-const uschar *current_subject, *end_subject, *lcc;

-

-pcre_study_data internal_study;

-const pcre_study_data *study = NULL;

-real_pcre internal_re;

-

-const uschar *req_byte_ptr;

-const uschar *start_bits = NULL;

-BOOL first_byte_caseless = FALSE;

-BOOL req_byte_caseless = FALSE;

-int first_byte = -1;

-int req_byte = -1;

-int req_byte2 = -1;

-

-/* Plausibility checks */

-

-if ((options & ~PUBLIC_DFA_EXEC_OPTIONS) != 0) return PCRE_ERROR_BADOPTION;

-if (re == NULL || subject == NULL || workspace == NULL ||

-   (offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL;

-if (offsetcount < 0) return PCRE_ERROR_BADCOUNT;

-if (wscount < 20) return PCRE_ERROR_DFA_WSSIZE;

-

-/* We need to find the pointer to any study data before we test for byte

-flipping, so we scan the extra_data block first. This may set two fields in the

-match block, so we must initialize them beforehand. However, the other fields

-in the match block must not be set until after the byte flipping. */

-

-match_block.tables = re->tables;

-match_block.callout_data = NULL;

-

-if (extra_data != NULL)

-  {

-  unsigned int flags = extra_data->flags;

-  if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)

-    study = (const pcre_study_data *)extra_data->study_data;

-  if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0) return PCRE_ERROR_DFA_UMLIMIT;

-  if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)

-    match_block.callout_data = extra_data->callout_data;

-  if ((flags & PCRE_EXTRA_TABLES) != 0)

-    match_block.tables = extra_data->tables;

-  }

-

-/* Check that the first field in the block is the magic number. If it is not,

-test for a regex that was compiled on a host of opposite endianness. If this is

-the case, flipped values are put in internal_re and internal_study if there was

-study data too. */

-

-if (re->magic_number != MAGIC_NUMBER)

-  {

-  re = _pcre_try_flipped(re, &internal_re, study, &internal_study);

-  if (re == NULL) return PCRE_ERROR_BADMAGIC;

-  if (study != NULL) study = &internal_study;

-  }

-

-/* Set some local values */

-

-current_subject = (const unsigned char *)subject + start_offset;

-end_subject = (const unsigned char *)subject + length;

-req_byte_ptr = current_subject - 1;

-

-utf8 = (re->options & PCRE_UTF8) != 0;

-anchored = (options & PCRE_ANCHORED) != 0 || (re->options & PCRE_ANCHORED) != 0;

-

-/* The remaining fixed data for passing around. */

-

-match_block.start_code = (const uschar *)argument_re +

-    re->name_table_offset + re->name_count * re->name_entry_size;

-match_block.start_subject = (const unsigned char *)subject;

-match_block.end_subject = end_subject;

-match_block.moptions = options;

-match_block.poptions = re->options;

-

-/* Check a UTF-8 string if required. Unfortunately there's no way of passing

-back the character offset. */

-

-#ifdef SUPPORT_UTF8

-if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0)

-  {

-  if (_pcre_valid_utf8((uschar *)subject, length) >= 0)

-    return PCRE_ERROR_BADUTF8;

-  if (start_offset > 0 && start_offset < length)

-    {

-    int tb = ((uschar *)subject)[start_offset];

-    if (tb > 127)

-      {

-      tb &= 0xc0;

-      if (tb != 0 && tb != 0xc0) return PCRE_ERROR_BADUTF8_OFFSET;

-      }

-    }

-  }

-#endif

-

-/* If the exec call supplied NULL for tables, use the inbuilt ones. This

-is a feature that makes it possible to save compiled regex and re-use them

-in other programs later. */

-

-if (match_block.tables == NULL) match_block.tables = _pcre_default_tables;

-

-/* The lower casing table and the "must be at the start of a line" flag are

-used in a loop when finding where to start. */

-

-lcc = match_block.tables + lcc_offset;

-startline = (re->options & PCRE_STARTLINE) != 0;

-firstline = (re->options & PCRE_FIRSTLINE) != 0;

-

-/* Set up the first character to match, if available. The first_byte value is

-never set for an anchored regular expression, but the anchoring may be forced

-at run time, so we have to test for anchoring. The first char may be unset for

-an unanchored pattern, of course. If there's no first char and the pattern was

-studied, there may be a bitmap of possible first characters. */

-

-if (!anchored)

-  {

-  if ((re->options & PCRE_FIRSTSET) != 0)

-    {

-    first_byte = re->first_byte & 255;

-    if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)

-      first_byte = lcc[first_byte];

-    }

-  else

-    {

-    if (startline && study != NULL &&

-         (study->options & PCRE_STUDY_MAPPED) != 0)

-      start_bits = study->start_bits;

-    }

-  }

-

-/* For anchored or unanchored matches, there may be a "last known required

-character" set. */

-

-if ((re->options & PCRE_REQCHSET) != 0)

-  {

-  req_byte = re->req_byte & 255;

-  req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;

-  req_byte2 = (match_block.tables + fcc_offset)[req_byte];  /* case flipped */

-  }

-

-/* Call the main matching function, looping for a non-anchored regex after a

-failed match. Unless restarting, optimize by moving to the first match

-character if possible, when not anchored. Then unless wanting a partial match,

-check for a required later character. */

-

-for (;;)

-  {

-  int rc;

-

-  if ((options & PCRE_DFA_RESTART) == 0)

-    {

-    const uschar *save_end_subject = end_subject;

-

-    /* Advance to a unique first char if possible. If firstline is TRUE, the

-    start of the match is constrained to the first line of a multiline string.

-    Implement this by temporarily adjusting end_subject so that we stop scanning

-    at a newline. If the match fails at the newline, later code breaks this loop.

-    */

-

-    if (firstline)

-      {

-      const uschar *t = current_subject;

-      while (t < save_end_subject && *t != '\n') t++;

-      end_subject = t;

-      }

-

-    if (first_byte >= 0)

-      {

-      if (first_byte_caseless)

-        while (current_subject < end_subject &&

-               lcc[*current_subject] != first_byte)

-          current_subject++;

-      else

-        while (current_subject < end_subject && *current_subject != first_byte)

-          current_subject++;

-      }

-

-    /* Or to just after \n for a multiline match if possible */

-

-    else if (startline)

-      {

-      if (current_subject > match_block.start_subject + start_offset)

-        {

-        while (current_subject < end_subject && current_subject[-1] != NEWLINE)

-          current_subject++;

-        }

-      }

-

-    /* Or to a non-unique first char after study */

-

-    else if (start_bits != NULL)

-      {

-      while (current_subject < end_subject)

-        {

-        register unsigned int c = *current_subject;

-        if ((start_bits[c/8] & (1 << (c&7))) == 0) current_subject++;

-          else break;

-        }

-      }

-

-    /* Restore fudged end_subject */

-

-    end_subject = save_end_subject;

-    }

-

-  /* If req_byte is set, we know that that character must appear in the subject

-  for the match to succeed. If the first character is set, req_byte must be

-  later in the subject; otherwise the test starts at the match point. This

-  optimization can save a huge amount of work in patterns with nested unlimited

-  repeats that aren't going to match. Writing separate code for cased/caseless

-  versions makes it go faster, as does using an autoincrement and backing off

-  on a match.

-

-  HOWEVER: when the subject string is very, very long, searching to its end can

-  take a long time, and give bad performance on quite ordinary patterns. This

-  showed up when somebody was matching /^C/ on a 32-megabyte string... so we

-  don't do this when the string is sufficiently long.

-

-  ALSO: this processing is disabled when partial matching is requested.

-  */

-

-  if (req_byte >= 0 &&

-      end_subject - current_subject < REQ_BYTE_MAX &&

-      (options & PCRE_PARTIAL) == 0)

-    {

-    register const uschar *p = current_subject + ((first_byte >= 0)? 1 : 0);

-

-    /* We don't need to repeat the search if we haven't yet reached the

-    place we found it at last time. */

-

-    if (p > req_byte_ptr)

-      {

-      if (req_byte_caseless)

-        {

-        while (p < end_subject)

-          {

-          register int pp = *p++;

-          if (pp == req_byte || pp == req_byte2) { p--; break; }

-          }

-        }

-      else

-        {

-        while (p < end_subject)

-          {

-          if (*p++ == req_byte) { p--; break; }

-          }

-        }

-

-      /* If we can't find the required character, break the matching loop,

-      which will cause a return or PCRE_ERROR_NOMATCH. */

-

-      if (p >= end_subject) break;

-

-      /* If we have found the required character, save the point where we

-      found it, so that we don't search again next time round the loop if

-      the start hasn't passed this character yet. */

-

-      req_byte_ptr = p;

-      }

-    }

-

-  /* OK, now we can do the business */

-

-  rc = internal_dfa_exec(

-    &match_block,                              /* fixed match data */

-    match_block.start_code,                    /* this subexpression's code */

-    current_subject,                           /* where we currently are */

-    start_offset,                              /* start offset in subject */

-    offsets,                                   /* offset vector */

-    offsetcount,                               /* size of same */

-    workspace,                                 /* workspace vector */

-    wscount,                                   /* size of same */

-    re->options & (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL), /* ims flags */

-    0,                                         /* function recurse level */

-    0);                                        /* regex recurse level */

-

-  /* Anything other than "no match" means we are done, always; otherwise, carry

-  on only if not anchored. */

-

-  if (rc != PCRE_ERROR_NOMATCH || anchored) return rc;

-

-  /* Advance to the next subject character unless we are at the end of a line

-  and firstline is set. */

-

-  if (firstline && *current_subject == NEWLINE) break;

-  current_subject++;

-

-#ifdef SUPPORT_UTF8

-  if (utf8)

-    {

-    while (current_subject < end_subject && (*current_subject & 0xc0) == 0x80)

-      current_subject++;

-    }

-#endif

-

-  if (current_subject > end_subject) break;

-  }

-

-return PCRE_ERROR_NOMATCH;

-}

-

-/* End of pcre_dfa_exec.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains pcre_exec(), the externally visible function that does

-pattern matching using an NFA algorithm, trying to mimic Perl as closely as

-possible. There are also some static supporting functions. */

-

-

-

-

-/* Structure for building a chain of data that actually lives on the

-stack, for holding the values of the subject pointer at the start of each

-subpattern, so as to detect when an empty string has been matched by a

-subpattern - to break infinite loops. When NO_RECURSE is set, these blocks

-are on the heap, not on the stack. */

-

-typedef struct eptrblock {

-  struct eptrblock *epb_prev;

-  const uschar *epb_saved_eptr;

-} eptrblock;

-

-/* Flag bits for the match() function */

-

-#define match_condassert   0x01    /* Called to check a condition assertion */

-#define match_isgroup      0x02    /* Set if start of bracketed group */

-

-/* Non-error returns from the match() function. Error returns are externally

-defined PCRE_ERROR_xxx codes, which are all negative. */

-

-#define MATCH_MATCH        1

-#define MATCH_NOMATCH      0

-

-/* Maximum number of ints of offset to save on the stack for recursive calls.

-If the offset vector is bigger, malloc is used. This should be a multiple of 3,

-because the offset vector is always a multiple of 3 long. */

-

-#define REC_STACK_SAVE_MAX 30

-

-/* Min and max values for the common repeats; for the maxima, 0 => infinity */

-

-static const char rep_min[] = { 0, 0, 1, 1, 0, 0 };

-static const char rep_max[] = { 0, 0, 0, 0, 1, 1 };

-

-

-

-#ifdef DEBUG

-/*************************************************

-*        Debugging function to print chars       *

-*************************************************/

-

-/* Print a sequence of chars in printable format, stopping at the end of the

-subject if the requested.

-

-Arguments:

-  p           points to characters

-  length      number to print

-  is_subject  TRUE if printing from within md->start_subject

-  md          pointer to matching data block, if is_subject is TRUE

-

-Returns:     nothing

-*/

-

-static void

-pchars(const uschar *p, int length, BOOL is_subject, match_data *md)

-{

-int c;

-if (is_subject && length > md->end_subject - p) length = md->end_subject - p;

-while (length-- > 0)

-  if (isprint(c = *(p++))) printf("%c", c); else printf("\\x%02x", c);

-}

-#endif

-

-

-

-/*************************************************

-*          Match a back-reference                *

-*************************************************/

-

-/* If a back reference hasn't been set, the length that is passed is greater

-than the number of characters left in the string, so the match fails.

-

-Arguments:

-  offset      index into the offset vector

-  eptr        points into the subject

-  length      length to be matched

-  md          points to match data block

-  ims         the ims flags

-

-Returns:      TRUE if matched

-*/

-

-static BOOL

-match_ref(int offset, register const uschar *eptr, int length, match_data *md,

-  unsigned long int ims)

-{

-const uschar *p = md->start_subject + md->offset_vector[offset];

-

-#ifdef DEBUG

-if (eptr >= md->end_subject)

-  printf("matching subject <null>");

-else

-  {

-  printf("matching subject ");

-  pchars(eptr, length, TRUE, md);

-  }

-printf(" against backref ");

-pchars(p, length, FALSE, md);

-printf("\n");

-#endif

-

-/* Always fail if not enough characters left */

-

-if (length > md->end_subject - eptr) return FALSE;

-

-/* Separate the caselesss case for speed */

-

-if ((ims & PCRE_CASELESS) != 0)

-  {

-  while (length-- > 0)

-    if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE;

-  }

-else

-  { while (length-- > 0) if (*p++ != *eptr++) return FALSE; }

-

-return TRUE;

-}

-

-

-

-/***************************************************************************

-****************************************************************************

-                   RECURSION IN THE match() FUNCTION

-

-The match() function is highly recursive. Some regular expressions can cause

-it to recurse thousands of times. I was writing for Unix, so I just let it

-call itself recursively. This uses the stack for saving everything that has

-to be saved for a recursive call. On Unix, the stack can be large, and this

-works fine.

-

-It turns out that on non-Unix systems there are problems with programs that

-use a lot of stack. (This despite the fact that every last chip has oodles

-of memory these days, and techniques for extending the stack have been known

-for decades.) So....

-

-There is a fudge, triggered by defining NO_RECURSE, which avoids recursive

-calls by keeping local variables that need to be preserved in blocks of memory

-obtained from malloc instead instead of on the stack. Macros are used to

-achieve this so that the actual code doesn't look very different to what it

-always used to.

-****************************************************************************

-***************************************************************************/

-

-

-/* These versions of the macros use the stack, as normal */

-

-#ifndef NO_RECURSE

-#define REGISTER register

-#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) rx = match(ra,rb,rc,rd,re,rf,rg)

-#define RRETURN(ra) return ra

-#else

-

-

-/* These versions of the macros manage a private stack on the heap. Note

-that the rd argument of RMATCH isn't actually used. It's the md argument of

-match(), which never changes. */

-

-#define REGISTER

-

-#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg)\

-  {\

-  heapframe *newframe = (pcre_stack_malloc)(sizeof(heapframe));\

-  if (setjmp(frame->Xwhere) == 0)\

-    {\

-    newframe->Xeptr = ra;\

-    newframe->Xecode = rb;\

-    newframe->Xoffset_top = rc;\

-    newframe->Xims = re;\

-    newframe->Xeptrb = rf;\

-    newframe->Xflags = rg;\

-    newframe->Xprevframe = frame;\

-    frame = newframe;\

-    DPRINTF(("restarting from line %d\n", __LINE__));\

-    goto HEAP_RECURSE;\

-    }\

-  else\

-    {\

-    DPRINTF(("longjumped back to line %d\n", __LINE__));\

-    frame = md->thisframe;\

-    rx = frame->Xresult;\

-    }\

-  }

-

-#define RRETURN(ra)\

-  {\

-  heapframe *newframe = frame;\

-  frame = newframe->Xprevframe;\

-  (pcre_stack_free)(newframe);\

-  if (frame != NULL)\

-    {\

-    frame->Xresult = ra;\

-    md->thisframe = frame;\

-    longjmp(frame->Xwhere, 1);\

-    }\

-  return ra;\

-  }

-

-

-/* Structure for remembering the local variables in a private frame */

-

-typedef struct heapframe {

-  struct heapframe *Xprevframe;

-

-  /* Function arguments that may change */

-

-  const uschar *Xeptr;

-  const uschar *Xecode;

-  int Xoffset_top;

-  long int Xims;

-  eptrblock *Xeptrb;

-  int Xflags;

-

-  /* Function local variables */

-

-  const uschar *Xcallpat;

-  const uschar *Xcharptr;

-  const uschar *Xdata;

-  const uschar *Xnext;

-  const uschar *Xpp;

-  const uschar *Xprev;

-  const uschar *Xsaved_eptr;

-

-  recursion_info Xnew_recursive;

-

-  BOOL Xcur_is_word;

-  BOOL Xcondition;

-  BOOL Xminimize;

-  BOOL Xprev_is_word;

-

-  unsigned long int Xoriginal_ims;

-

-#ifdef SUPPORT_UCP

-  int Xprop_type;

-  int Xprop_fail_result;

-  int Xprop_category;

-  int Xprop_chartype;

-  int Xprop_othercase;

-  int Xprop_test_against;

-  int *Xprop_test_variable;

-#endif

-

-  int Xctype;

-  int Xfc;

-  int Xfi;

-  int Xlength;

-  int Xmax;

-  int Xmin;

-  int Xnumber;

-  int Xoffset;

-  int Xop;

-  int Xsave_capture_last;

-  int Xsave_offset1, Xsave_offset2, Xsave_offset3;

-  int Xstacksave[REC_STACK_SAVE_MAX];

-

-  eptrblock Xnewptrb;

-

-  /* Place to pass back result, and where to jump back to */

-

-  int  Xresult;

-  jmp_buf Xwhere;

-

-} heapframe;

-

-#endif

-

-

-/***************************************************************************

-***************************************************************************/

-

-

-

-/*************************************************

-*         Match from current position            *

-*************************************************/

-

-/* On entry ecode points to the first opcode, and eptr to the first character

-in the subject string, while eptrb holds the value of eptr at the start of the

-last bracketed group - used for breaking infinite loops matching zero-length

-strings. This function is called recursively in many circumstances. Whenever it

-returns a negative (error) response, the outer incarnation must also return the

-same response.

-

-Performance note: It might be tempting to extract commonly used fields from the

-md structure (e.g. utf8, end_subject) into individual variables to improve

-performance. Tests using gcc on a SPARC disproved this; in the first case, it

-made performance worse.

-

-Arguments:

-   eptr        pointer in subject

-   ecode       position in code

-   offset_top  current top pointer

-   md          pointer to "static" info for the match

-   ims         current /i, /m, and /s options

-   eptrb       pointer to chain of blocks containing eptr at start of

-                 brackets - for testing for empty matches

-   flags       can contain

-                 match_condassert - this is an assertion condition

-                 match_isgroup - this is the start of a bracketed group

-

-Returns:       MATCH_MATCH if matched            )  these values are >= 0

-               MATCH_NOMATCH if failed to match  )

-               a negative PCRE_ERROR_xxx value if aborted by an error condition

-                 (e.g. stopped by recursion limit)

-*/

-

-static int

-match(REGISTER const uschar *eptr, REGISTER const uschar *ecode,

-  int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,

-  int flags)

-{

-/* These variables do not need to be preserved over recursion in this function,

-so they can be ordinary variables in all cases. Mark them with "register"

-because they are used a lot in loops. */

-

-register int  rrc;    /* Returns from recursive calls */

-register int  i;      /* Used for loops not involving calls to RMATCH() */

-register int  c;      /* Character values not kept over RMATCH() calls */

-register BOOL utf8;   /* Local copy of UTF-8 flag for speed */

-

-/* When recursion is not being used, all "local" variables that have to be

-preserved over calls to RMATCH() are part of a "frame" which is obtained from

-heap storage. Set up the top-level frame here; others are obtained from the

-heap whenever RMATCH() does a "recursion". See the macro definitions above. */

-

-#ifdef NO_RECURSE

-heapframe *frame = (pcre_stack_malloc)(sizeof(heapframe));

-frame->Xprevframe = NULL;            /* Marks the top level */

-

-/* Copy in the original argument variables */

-

-frame->Xeptr = eptr;

-frame->Xecode = ecode;

-frame->Xoffset_top = offset_top;

-frame->Xims = ims;

-frame->Xeptrb = eptrb;

-frame->Xflags = flags;

-

-/* This is where control jumps back to to effect "recursion" */

-

-HEAP_RECURSE:

-

-/* Macros make the argument variables come from the current frame */

-

-#define eptr               frame->Xeptr

-#define ecode              frame->Xecode

-#define offset_top         frame->Xoffset_top

-#define ims                frame->Xims

-#define eptrb              frame->Xeptrb

-#define flags              frame->Xflags

-

-/* Ditto for the local variables */

-

-#ifdef SUPPORT_UTF8

-#define charptr            frame->Xcharptr

-#endif

-#define callpat            frame->Xcallpat

-#define data               frame->Xdata

-#define next               frame->Xnext

-#define pp                 frame->Xpp

-#define prev               frame->Xprev

-#define saved_eptr         frame->Xsaved_eptr

-

-#define new_recursive      frame->Xnew_recursive

-

-#define cur_is_word        frame->Xcur_is_word

-#define condition          frame->Xcondition

-#define minimize           frame->Xminimize

-#define prev_is_word       frame->Xprev_is_word

-

-#define original_ims       frame->Xoriginal_ims

-

-#ifdef SUPPORT_UCP

-#define prop_type          frame->Xprop_type

-#define prop_fail_result   frame->Xprop_fail_result

-#define prop_category      frame->Xprop_category

-#define prop_chartype      frame->Xprop_chartype

-#define prop_othercase     frame->Xprop_othercase

-#define prop_test_against  frame->Xprop_test_against

-#define prop_test_variable frame->Xprop_test_variable

-#endif

-

-#define ctype              frame->Xctype

-#define fc                 frame->Xfc

-#define fi                 frame->Xfi

-#define length             frame->Xlength

-#define max                frame->Xmax

-#define min                frame->Xmin

-#define number             frame->Xnumber

-#define offset             frame->Xoffset

-#define op                 frame->Xop

-#define save_capture_last  frame->Xsave_capture_last

-#define save_offset1       frame->Xsave_offset1

-#define save_offset2       frame->Xsave_offset2

-#define save_offset3       frame->Xsave_offset3

-#define stacksave          frame->Xstacksave

-

-#define newptrb            frame->Xnewptrb

-

-/* When recursion is being used, local variables are allocated on the stack and

-get preserved during recursion in the normal way. In this environment, fi and

-i, and fc and c, can be the same variables. */

-

-#else

-#define fi i

-#define fc c

-

-

-#ifdef SUPPORT_UTF8                /* Many of these variables are used ony */

-const uschar *charptr;             /* small blocks of the code. My normal  */

-#endif                             /* style of coding would have declared  */

-const uschar *callpat;             /* them within each of those blocks.    */

-const uschar *data;                /* However, in order to accommodate the */

-const uschar *next;                /* version of this code that uses an    */

-const uschar *pp;                  /* external "stack" implemented on the  */

-const uschar *prev;                /* heap, it is easier to declare them   */

-const uschar *saved_eptr;          /* all here, so the declarations can    */

-                                   /* be cut out in a block. The only      */

-recursion_info new_recursive;      /* declarations within blocks below are */

-                                   /* for variables that do not have to    */

-BOOL cur_is_word;                  /* be preserved over a recursive call   */

-BOOL condition;                    /* to RMATCH().                         */

-BOOL minimize;

-BOOL prev_is_word;

-

-unsigned long int original_ims;

-

-#ifdef SUPPORT_UCP

-int prop_type;

-int prop_fail_result;

-int prop_category;

-int prop_chartype;

-int prop_othercase;

-int prop_test_against;

-int *prop_test_variable;

-#endif

-

-int ctype;

-int length;

-int max;

-int min;

-int number;

-int offset;

-int op;

-int save_capture_last;

-int save_offset1, save_offset2, save_offset3;

-int stacksave[REC_STACK_SAVE_MAX];

-

-eptrblock newptrb;

-#endif

-

-/* These statements are here to stop the compiler complaining about unitialized

-variables. */

-

-#ifdef SUPPORT_UCP

-prop_fail_result = 0;

-prop_test_against = 0;

-prop_test_variable = NULL;

-#endif

-

-/* OK, now we can get on with the real code of the function. Recursion is

-specified by the macros RMATCH and RRETURN. When NO_RECURSE is *not* defined,

-these just turn into a recursive call to match() and a "return", respectively.

-However, RMATCH isn't like a function call because it's quite a complicated

-macro. It has to be used in one particular way. This shouldn't, however, impact

-performance when true recursion is being used. */

-

-if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT);

-

-original_ims = ims;    /* Save for resetting on ')' */

-utf8 = md->utf8;       /* Local copy of the flag */

-

-/* At the start of a bracketed group, add the current subject pointer to the

-stack of such pointers, to be re-instated at the end of the group when we hit

-the closing ket. When match() is called in other circumstances, we don't add to

-this stack. */

-

-if ((flags & match_isgroup) != 0)

-  {

-  newptrb.epb_prev = eptrb;

-  newptrb.epb_saved_eptr = eptr;

-  eptrb = &newptrb;

-  }

-

-/* Now start processing the operations. */

-

-for (;;)

-  {

-  op = *ecode;

-  minimize = FALSE;

-

-  /* For partial matching, remember if we ever hit the end of the subject after

-  matching at least one subject character. */

-

-  if (md->partial &&

-      eptr >= md->end_subject &&

-      eptr > md->start_match)

-    md->hitend = TRUE;

-

-  /* Opening capturing bracket. If there is space in the offset vector, save

-  the current subject position in the working slot at the top of the vector. We

-  mustn't change the current values of the data slot, because they may be set

-  from a previous iteration of this group, and be referred to by a reference

-  inside the group.

-

-  If the bracket fails to match, we need to restore this value and also the

-  values of the final offsets, in case they were set by a previous iteration of

-  the same bracket.

-

-  If there isn't enough space in the offset vector, treat this as if it were a

-  non-capturing bracket. Don't worry about setting the flag for the error case

-  here; that is handled in the code for KET. */

-

-  if (op > OP_BRA)

-    {

-    number = op - OP_BRA;

-

-    /* For extended extraction brackets (large number), we have to fish out the

-    number from a dummy opcode at the start. */

-

-    if (number > EXTRACT_BASIC_MAX)

-      number = GET2(ecode, 2+LINK_SIZE);

-    offset = number << 1;

-

-#ifdef DEBUG

-    printf("start bracket %d subject=", number);

-    pchars(eptr, 16, TRUE, md);

-    printf("\n");

-#endif

-

-    if (offset < md->offset_max)

-      {

-      save_offset1 = md->offset_vector[offset];

-      save_offset2 = md->offset_vector[offset+1];

-      save_offset3 = md->offset_vector[md->offset_end - number];

-      save_capture_last = md->capture_last;

-

-      DPRINTF(("saving %d %d %d\n", save_offset1, save_offset2, save_offset3));

-      md->offset_vector[md->offset_end - number] = eptr - md->start_subject;

-

-      do

-        {

-        RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb,

-          match_isgroup);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        md->capture_last = save_capture_last;

-        ecode += GET(ecode, 1);

-        }

-      while (*ecode == OP_ALT);

-

-      DPRINTF(("bracket %d failed\n", number));

-

-      md->offset_vector[offset] = save_offset1;

-      md->offset_vector[offset+1] = save_offset2;

-      md->offset_vector[md->offset_end - number] = save_offset3;

-

-      RRETURN(MATCH_NOMATCH);

-      }

-

-    /* Insufficient room for saving captured contents */

-

-    else op = OP_BRA;

-    }

-

-  /* Other types of node can be handled by a switch */

-

-  switch(op)

-    {

-    case OP_BRA:     /* Non-capturing bracket: optimized */

-    DPRINTF(("start bracket 0\n"));

-    do

-      {

-      RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb,

-        match_isgroup);

-      if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-      ecode += GET(ecode, 1);

-      }

-    while (*ecode == OP_ALT);

-    DPRINTF(("bracket 0 failed\n"));

-    RRETURN(MATCH_NOMATCH);

-

-    /* Conditional group: compilation checked that there are no more than

-    two branches. If the condition is false, skipping the first branch takes us

-    past the end if there is only one branch, but that's OK because that is

-    exactly what going to the ket would do. */

-

-    case OP_COND:

-    if (ecode[LINK_SIZE+1] == OP_CREF) /* Condition extract or recurse test */

-      {

-      offset = GET2(ecode, LINK_SIZE+2) << 1;  /* Doubled ref number */

-      condition = (offset == CREF_RECURSE * 2)?

-        (md->recursive != NULL) :

-        (offset < offset_top && md->offset_vector[offset] >= 0);

-      RMATCH(rrc, eptr, ecode + (condition?

-        (LINK_SIZE + 4) : (LINK_SIZE + 1 + GET(ecode, 1))),

-        offset_top, md, ims, eptrb, match_isgroup);

-      RRETURN(rrc);

-      }

-

-    /* The condition is an assertion. Call match() to evaluate it - setting

-    the final argument TRUE causes it to stop at the end of an assertion. */

-

-    else

-      {

-      RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL,

-          match_condassert | match_isgroup);

-      if (rrc == MATCH_MATCH)

-        {

-        ecode += 1 + LINK_SIZE + GET(ecode, LINK_SIZE+2);

-        while (*ecode == OP_ALT) ecode += GET(ecode, 1);

-        }

-      else if (rrc != MATCH_NOMATCH)

-        {

-        RRETURN(rrc);         /* Need braces because of following else */

-        }

-      else ecode += GET(ecode, 1);

-      RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb,

-        match_isgroup);

-      RRETURN(rrc);

-      }

-    /* Control never reaches here */

-

-    /* Skip over conditional reference or large extraction number data if

-    encountered. */

-

-    case OP_CREF:

-    case OP_BRANUMBER:

-    ecode += 3;

-    break;

-

-    /* End of the pattern. If we are in a recursion, we should restore the

-    offsets appropriately and continue from after the call. */

-

-    case OP_END:

-    if (md->recursive != NULL && md->recursive->group_num == 0)

-      {

-      recursion_info *rec = md->recursive;

-      DPRINTF(("Hit the end in a (?0) recursion\n"));

-      md->recursive = rec->prevrec;

-      memmove(md->offset_vector, rec->offset_save,

-        rec->saved_max * sizeof(int));

-      md->start_match = rec->save_start;

-      ims = original_ims;

-      ecode = rec->after_call;

-      break;

-      }

-

-    /* Otherwise, if PCRE_NOTEMPTY is set, fail if we have matched an empty

-    string - backtracking will then try other alternatives, if any. */

-

-    if (md->notempty && eptr == md->start_match) RRETURN(MATCH_NOMATCH);

-    md->end_match_ptr = eptr;          /* Record where we ended */

-    md->end_offset_top = offset_top;   /* and how many extracts were taken */

-    RRETURN(MATCH_MATCH);

-

-    /* Change option settings */

-

-    case OP_OPT:

-    ims = ecode[1];

-    ecode += 2;

-    DPRINTF(("ims set to %02lx\n", ims));

-    break;

-

-    /* Assertion brackets. Check the alternative branches in turn - the

-    matching won't pass the KET for an assertion. If any one branch matches,

-    the assertion is true. Lookbehind assertions have an OP_REVERSE item at the

-    start of each branch to move the current point backwards, so the code at

-    this level is identical to the lookahead case. */

-

-    case OP_ASSERT:

-    case OP_ASSERTBACK:

-    do

-      {

-      RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL,

-        match_isgroup);

-      if (rrc == MATCH_MATCH) break;

-      if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-      ecode += GET(ecode, 1);

-      }

-    while (*ecode == OP_ALT);

-    if (*ecode == OP_KET) RRETURN(MATCH_NOMATCH);

-

-    /* If checking an assertion for a condition, return MATCH_MATCH. */

-

-    if ((flags & match_condassert) != 0) RRETURN(MATCH_MATCH);

-

-    /* Continue from after the assertion, updating the offsets high water

-    mark, since extracts may have been taken during the assertion. */

-

-    do ecode += GET(ecode,1); while (*ecode == OP_ALT);

-    ecode += 1 + LINK_SIZE;

-    offset_top = md->end_offset_top;

-    continue;

-

-    /* Negative assertion: all branches must fail to match */

-

-    case OP_ASSERT_NOT:

-    case OP_ASSERTBACK_NOT:

-    do

-      {

-      RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL,

-        match_isgroup);

-      if (rrc == MATCH_MATCH) RRETURN(MATCH_NOMATCH);

-      if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-      ecode += GET(ecode,1);

-      }

-    while (*ecode == OP_ALT);

-

-    if ((flags & match_condassert) != 0) RRETURN(MATCH_MATCH);

-

-    ecode += 1 + LINK_SIZE;

-    continue;

-

-    /* Move the subject pointer back. This occurs only at the start of

-    each branch of a lookbehind assertion. If we are too close to the start to

-    move back, this match function fails. When working with UTF-8 we move

-    back a number of characters, not bytes. */

-

-    case OP_REVERSE:

-#ifdef SUPPORT_UTF8

-    if (utf8)

-      {

-      c = GET(ecode,1);

-      for (i = 0; i < c; i++)

-        {

-        eptr--;

-        if (eptr < md->start_subject) RRETURN(MATCH_NOMATCH);

-        BACKCHAR(eptr)

-        }

-      }

-    else

-#endif

-

-    /* No UTF-8 support, or not in UTF-8 mode: count is byte count */

-

-      {

-      eptr -= GET(ecode,1);

-      if (eptr < md->start_subject) RRETURN(MATCH_NOMATCH);

-      }

-

-    /* Skip to next op code */

-

-    ecode += 1 + LINK_SIZE;

-    break;

-

-    /* The callout item calls an external function, if one is provided, passing

-    details of the match so far. This is mainly for debugging, though the

-    function is able to force a failure. */

-

-    case OP_CALLOUT:

-    if (pcre_callout != NULL)

-      {

-      pcre_callout_block cb;

-      cb.version          = 1;   /* Version 1 of the callout block */

-      cb.callout_number   = ecode[1];

-      cb.offset_vector    = md->offset_vector;

-      cb.subject          = (const char *)md->start_subject;

-      cb.subject_length   = md->end_subject - md->start_subject;

-      cb.start_match      = md->start_match - md->start_subject;

-      cb.current_position = eptr - md->start_subject;

-      cb.pattern_position = GET(ecode, 2);

-      cb.next_item_length = GET(ecode, 2 + LINK_SIZE);

-      cb.capture_top      = offset_top/2;

-      cb.capture_last     = md->capture_last;

-      cb.callout_data     = md->callout_data;

-      if ((rrc = (*pcre_callout)(&cb)) > 0) RRETURN(MATCH_NOMATCH);

-      if (rrc < 0) RRETURN(rrc);

-      }

-    ecode += 2 + 2*LINK_SIZE;

-    break;

-

-    /* Recursion either matches the current regex, or some subexpression. The

-    offset data is the offset to the starting bracket from the start of the

-    whole pattern. (This is so that it works from duplicated subpatterns.)

-

-    If there are any capturing brackets started but not finished, we have to

-    save their starting points and reinstate them after the recursion. However,

-    we don't know how many such there are (offset_top records the completed

-    total) so we just have to save all the potential data. There may be up to

-    65535 such values, which is too large to put on the stack, but using malloc

-    for small numbers seems expensive. As a compromise, the stack is used when

-    there are no more than REC_STACK_SAVE_MAX values to store; otherwise malloc

-    is used. A problem is what to do if the malloc fails ... there is no way of

-    returning to the top level with an error. Save the top REC_STACK_SAVE_MAX

-    values on the stack, and accept that the rest may be wrong.

-

-    There are also other values that have to be saved. We use a chained

-    sequence of blocks that actually live on the stack. Thanks to Robin Houston

-    for the original version of this logic. */

-

-    case OP_RECURSE:

-      {

-      callpat = md->start_code + GET(ecode, 1);

-      new_recursive.group_num = *callpat - OP_BRA;

-

-      /* For extended extraction brackets (large number), we have to fish out

-      the number from a dummy opcode at the start. */

-

-      if (new_recursive.group_num > EXTRACT_BASIC_MAX)

-        new_recursive.group_num = GET2(callpat, 2+LINK_SIZE);

-

-      /* Add to "recursing stack" */

-

-      new_recursive.prevrec = md->recursive;

-      md->recursive = &new_recursive;

-

-      /* Find where to continue from afterwards */

-

-      ecode += 1 + LINK_SIZE;

-      new_recursive.after_call = ecode;

-

-      /* Now save the offset data. */

-

-      new_recursive.saved_max = md->offset_end;

-      if (new_recursive.saved_max <= REC_STACK_SAVE_MAX)

-        new_recursive.offset_save = stacksave;

-      else

-        {

-        new_recursive.offset_save =

-          (int *)(pcre_malloc)(new_recursive.saved_max * sizeof(int));

-        if (new_recursive.offset_save == NULL) RRETURN(PCRE_ERROR_NOMEMORY);

-        }

-

-      memcpy(new_recursive.offset_save, md->offset_vector,

-            new_recursive.saved_max * sizeof(int));

-      new_recursive.save_start = md->start_match;

-      md->start_match = eptr;

-

-      /* OK, now we can do the recursion. For each top-level alternative we

-      restore the offset and recursion data. */

-

-      DPRINTF(("Recursing into group %d\n", new_recursive.group_num));

-      do

-        {

-        RMATCH(rrc, eptr, callpat + 1 + LINK_SIZE, offset_top, md, ims,

-            eptrb, match_isgroup);

-        if (rrc == MATCH_MATCH)

-          {

-          md->recursive = new_recursive.prevrec;

-          if (new_recursive.offset_save != stacksave)

-            (pcre_free)(new_recursive.offset_save);

-          RRETURN(MATCH_MATCH);

-          }

-        else if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-

-        md->recursive = &new_recursive;

-        memcpy(md->offset_vector, new_recursive.offset_save,

-            new_recursive.saved_max * sizeof(int));

-        callpat += GET(callpat, 1);

-        }

-      while (*callpat == OP_ALT);

-

-      DPRINTF(("Recursion didn't match\n"));

-      md->recursive = new_recursive.prevrec;

-      if (new_recursive.offset_save != stacksave)

-        (pcre_free)(new_recursive.offset_save);

-      RRETURN(MATCH_NOMATCH);

-      }

-    /* Control never reaches here */

-

-    /* "Once" brackets are like assertion brackets except that after a match,

-    the point in the subject string is not moved back. Thus there can never be

-    a move back into the brackets. Friedl calls these "atomic" subpatterns.

-    Check the alternative branches in turn - the matching won't pass the KET

-    for this kind of subpattern. If any one branch matches, we carry on as at

-    the end of a normal bracket, leaving the subject pointer. */

-

-    case OP_ONCE:

-      {

-      prev = ecode;

-      saved_eptr = eptr;

-

-      do

-        {

-        RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims,

-          eptrb, match_isgroup);

-        if (rrc == MATCH_MATCH) break;

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        ecode += GET(ecode,1);

-        }

-      while (*ecode == OP_ALT);

-

-      /* If hit the end of the group (which could be repeated), fail */

-

-      if (*ecode != OP_ONCE && *ecode != OP_ALT) RRETURN(MATCH_NOMATCH);

-

-      /* Continue as from after the assertion, updating the offsets high water

-      mark, since extracts may have been taken. */

-

-      do ecode += GET(ecode,1); while (*ecode == OP_ALT);

-

-      offset_top = md->end_offset_top;

-      eptr = md->end_match_ptr;

-

-      /* For a non-repeating ket, just continue at this level. This also

-      happens for a repeating ket if no characters were matched in the group.

-      This is the forcible breaking of infinite loops as implemented in Perl

-      5.005. If there is an options reset, it will get obeyed in the normal

-      course of events. */

-

-      if (*ecode == OP_KET || eptr == saved_eptr)

-        {

-        ecode += 1+LINK_SIZE;

-        break;

-        }

-

-      /* The repeating kets try the rest of the pattern or restart from the

-      preceding bracket, in the appropriate order. We need to reset any options

-      that changed within the bracket before re-running it, so check the next

-      opcode. */

-

-      if (ecode[1+LINK_SIZE] == OP_OPT)

-        {

-        ims = (ims & ~PCRE_IMS) | ecode[4];

-        DPRINTF(("ims set to %02lx at group repeat\n", ims));

-        }

-

-      if (*ecode == OP_KETRMIN)

-        {

-        RMATCH(rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        RMATCH(rrc, eptr, prev, offset_top, md, ims, eptrb, match_isgroup);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        }

-      else  /* OP_KETRMAX */

-        {

-        RMATCH(rrc, eptr, prev, offset_top, md, ims, eptrb, match_isgroup);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        RMATCH(rrc, eptr, ecode + 1+LINK_SIZE, offset_top, md, ims, eptrb, 0);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        }

-      }

-    RRETURN(MATCH_NOMATCH);

-

-    /* An alternation is the end of a branch; scan along to find the end of the

-    bracketed group and go to there. */

-

-    case OP_ALT:

-    do ecode += GET(ecode,1); while (*ecode == OP_ALT);

-    break;

-

-    /* BRAZERO and BRAMINZERO occur just before a bracket group, indicating

-    that it may occur zero times. It may repeat infinitely, or not at all -

-    i.e. it could be ()* or ()? in the pattern. Brackets with fixed upper

-    repeat limits are compiled as a number of copies, with the optional ones

-    preceded by BRAZERO or BRAMINZERO. */

-

-    case OP_BRAZERO:

-      {

-      next = ecode+1;

-      RMATCH(rrc, eptr, next, offset_top, md, ims, eptrb, match_isgroup);

-      if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-      do next += GET(next,1); while (*next == OP_ALT);

-      ecode = next + 1+LINK_SIZE;

-      }

-    break;

-

-    case OP_BRAMINZERO:

-      {

-      next = ecode+1;

-      do next += GET(next,1); while (*next == OP_ALT);

-      RMATCH(rrc, eptr, next + 1+LINK_SIZE, offset_top, md, ims, eptrb,

-        match_isgroup);

-      if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-      ecode++;

-      }

-    break;

-

-    /* End of a group, repeated or non-repeating. If we are at the end of

-    an assertion "group", stop matching and return MATCH_MATCH, but record the

-    current high water mark for use by positive assertions. Do this also

-    for the "once" (not-backup up) groups. */

-

-    case OP_KET:

-    case OP_KETRMIN:

-    case OP_KETRMAX:

-      {

-      prev = ecode - GET(ecode, 1);

-      saved_eptr = eptrb->epb_saved_eptr;

-

-      /* Back up the stack of bracket start pointers. */

-

-      eptrb = eptrb->epb_prev;

-

-      if (*prev == OP_ASSERT || *prev == OP_ASSERT_NOT ||

-          *prev == OP_ASSERTBACK || *prev == OP_ASSERTBACK_NOT ||

-          *prev == OP_ONCE)

-        {

-        md->end_match_ptr = eptr;      /* For ONCE */

-        md->end_offset_top = offset_top;

-        RRETURN(MATCH_MATCH);

-        }

-

-      /* In all other cases except a conditional group we have to check the

-      group number back at the start and if necessary complete handling an

-      extraction by setting the offsets and bumping the high water mark. */

-

-      if (*prev != OP_COND)

-        {

-        number = *prev - OP_BRA;

-

-        /* For extended extraction brackets (large number), we have to fish out

-        the number from a dummy opcode at the start. */

-

-        if (number > EXTRACT_BASIC_MAX) number = GET2(prev, 2+LINK_SIZE);

-        offset = number << 1;

-

-#ifdef DEBUG

-        printf("end bracket %d", number);

-        printf("\n");

-#endif

-

-        /* Test for a numbered group. This includes groups called as a result

-        of recursion. Note that whole-pattern recursion is coded as a recurse

-        into group 0, so it won't be picked up here. Instead, we catch it when

-        the OP_END is reached. */

-

-        if (number > 0)

-          {

-          md->capture_last = number;

-          if (offset >= md->offset_max) md->offset_overflow = TRUE; else

-            {

-            md->offset_vector[offset] =

-              md->offset_vector[md->offset_end - number];

-            md->offset_vector[offset+1] = eptr - md->start_subject;

-            if (offset_top <= offset) offset_top = offset + 2;

-            }

-

-          /* Handle a recursively called group. Restore the offsets

-          appropriately and continue from after the call. */

-

-          if (md->recursive != NULL && md->recursive->group_num == number)

-            {

-            recursion_info *rec = md->recursive;

-            DPRINTF(("Recursion (%d) succeeded - continuing\n", number));

-            md->recursive = rec->prevrec;

-            md->start_match = rec->save_start;

-            memcpy(md->offset_vector, rec->offset_save,

-              rec->saved_max * sizeof(int));

-            ecode = rec->after_call;

-            ims = original_ims;

-            break;

-            }

-          }

-        }

-

-      /* Reset the value of the ims flags, in case they got changed during

-      the group. */

-

-      ims = original_ims;

-      DPRINTF(("ims reset to %02lx\n", ims));

-

-      /* For a non-repeating ket, just continue at this level. This also

-      happens for a repeating ket if no characters were matched in the group.

-      This is the forcible breaking of infinite loops as implemented in Perl

-      5.005. If there is an options reset, it will get obeyed in the normal

-      course of events. */

-

-      if (*ecode == OP_KET || eptr == saved_eptr)

-        {

-        ecode += 1 + LINK_SIZE;

-        break;

-        }

-

-      /* The repeating kets try the rest of the pattern or restart from the

-      preceding bracket, in the appropriate order. */

-

-      if (*ecode == OP_KETRMIN)

-        {

-        RMATCH(rrc, eptr, ecode + 1+LINK_SIZE, offset_top, md, ims, eptrb, 0);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        RMATCH(rrc, eptr, prev, offset_top, md, ims, eptrb, match_isgroup);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        }

-      else  /* OP_KETRMAX */

-        {

-        RMATCH(rrc, eptr, prev, offset_top, md, ims, eptrb, match_isgroup);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        RMATCH(rrc, eptr, ecode + 1+LINK_SIZE, offset_top, md, ims, eptrb, 0);

-        if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-        }

-      }

-

-    RRETURN(MATCH_NOMATCH);

-

-    /* Start of subject unless notbol, or after internal newline if multiline */

-

-    case OP_CIRC:

-    if (md->notbol && eptr == md->start_subject) RRETURN(MATCH_NOMATCH);

-    if ((ims & PCRE_MULTILINE) != 0)

-      {

-      if (eptr != md->start_subject && eptr[-1] != NEWLINE)

-        RRETURN(MATCH_NOMATCH);

-      ecode++;

-      break;

-      }

-    /* ... else fall through */

-

-    /* Start of subject assertion */

-

-    case OP_SOD:

-    if (eptr != md->start_subject) RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    /* Start of match assertion */

-

-    case OP_SOM:

-    if (eptr != md->start_subject + md->start_offset) RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    /* Assert before internal newline if multiline, or before a terminating

-    newline unless endonly is set, else end of subject unless noteol is set. */

-

-    case OP_DOLL:

-    if ((ims & PCRE_MULTILINE) != 0)

-      {

-      if (eptr < md->end_subject)

-        { if (*eptr != NEWLINE) RRETURN(MATCH_NOMATCH); }

-      else

-        { if (md->noteol) RRETURN(MATCH_NOMATCH); }

-      ecode++;

-      break;

-      }

-    else

-      {

-      if (md->noteol) RRETURN(MATCH_NOMATCH);

-      if (!md->endonly)

-        {

-        if (eptr < md->end_subject - 1 ||

-           (eptr == md->end_subject - 1 && *eptr != NEWLINE))

-          RRETURN(MATCH_NOMATCH);

-        ecode++;

-        break;

-        }

-      }

-    /* ... else fall through */

-

-    /* End of subject assertion (\z) */

-

-    case OP_EOD:

-    if (eptr < md->end_subject) RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    /* End of subject or ending \n assertion (\Z) */

-

-    case OP_EODN:

-    if (eptr < md->end_subject - 1 ||

-       (eptr == md->end_subject - 1 && *eptr != NEWLINE)) RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    /* Word boundary assertions */

-

-    case OP_NOT_WORD_BOUNDARY:

-    case OP_WORD_BOUNDARY:

-      {

-

-      /* Find out if the previous and current characters are "word" characters.

-      It takes a bit more work in UTF-8 mode. Characters > 255 are assumed to

-      be "non-word" characters. */

-

-#ifdef SUPPORT_UTF8

-      if (utf8)

-        {

-        if (eptr == md->start_subject) prev_is_word = FALSE; else

-          {

-          const uschar *lastptr = eptr - 1;

-          while((*lastptr & 0xc0) == 0x80) lastptr--;

-          GETCHAR(c, lastptr);

-          prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;

-          }

-        if (eptr >= md->end_subject) cur_is_word = FALSE; else

-          {

-          GETCHAR(c, eptr);

-          cur_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0;

-          }

-        }

-      else

-#endif

-

-      /* More streamlined when not in UTF-8 mode */

-

-        {

-        prev_is_word = (eptr != md->start_subject) &&

-          ((md->ctypes[eptr[-1]] & ctype_word) != 0);

-        cur_is_word = (eptr < md->end_subject) &&

-          ((md->ctypes[*eptr] & ctype_word) != 0);

-        }

-

-      /* Now see if the situation is what we want */

-

-      if ((*ecode++ == OP_WORD_BOUNDARY)?

-           cur_is_word == prev_is_word : cur_is_word != prev_is_word)

-        RRETURN(MATCH_NOMATCH);

-      }

-    break;

-

-    /* Match a single character type; inline for speed */

-

-    case OP_ANY:

-    if ((ims & PCRE_DOTALL) == 0 && eptr < md->end_subject && *eptr == NEWLINE)

-      RRETURN(MATCH_NOMATCH);

-    if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH);

-#ifdef SUPPORT_UTF8

-    if (utf8)

-      while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;

-#endif

-    ecode++;

-    break;

-

-    /* Match a single byte, even in UTF-8 mode. This opcode really does match

-    any byte, even newline, independent of the setting of PCRE_DOTALL. */

-

-    case OP_ANYBYTE:

-    if (eptr++ >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    case OP_NOT_DIGIT:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-    if (

-#ifdef SUPPORT_UTF8

-       c < 256 &&

-#endif

-       (md->ctypes[c] & ctype_digit) != 0

-       )

-      RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    case OP_DIGIT:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-    if (

-#ifdef SUPPORT_UTF8

-       c >= 256 ||

-#endif

-       (md->ctypes[c] & ctype_digit) == 0

-       )

-      RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    case OP_NOT_WHITESPACE:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-    if (

-#ifdef SUPPORT_UTF8

-       c < 256 &&

-#endif

-       (md->ctypes[c] & ctype_space) != 0

-       )

-      RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    case OP_WHITESPACE:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-    if (

-#ifdef SUPPORT_UTF8

-       c >= 256 ||

-#endif

-       (md->ctypes[c] & ctype_space) == 0

-       )

-      RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    case OP_NOT_WORDCHAR:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-    if (

-#ifdef SUPPORT_UTF8

-       c < 256 &&

-#endif

-       (md->ctypes[c] & ctype_word) != 0

-       )

-      RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-    case OP_WORDCHAR:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-    if (

-#ifdef SUPPORT_UTF8

-       c >= 256 ||

-#endif

-       (md->ctypes[c] & ctype_word) == 0

-       )

-      RRETURN(MATCH_NOMATCH);

-    ecode++;

-    break;

-

-#ifdef SUPPORT_UCP

-    /* Check the next character by Unicode property. We will get here only

-    if the support is in the binary; otherwise a compile-time error occurs. */

-

-    case OP_PROP:

-    case OP_NOTPROP:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-      {

-      int chartype, rqdtype;

-      int othercase;

-      int category = ucp_findchar(c, &chartype, &othercase);

-

-      rqdtype = *(++ecode);

-      ecode++;

-

-      if (rqdtype >= 128)

-        {

-        if ((rqdtype - 128 != category) == (op == OP_PROP))

-          RRETURN(MATCH_NOMATCH);

-        }

-      else

-        {

-        if ((rqdtype != chartype) == (op == OP_PROP))

-          RRETURN(MATCH_NOMATCH);

-        }

-      }

-    break;

-

-    /* Match an extended Unicode sequence. We will get here only if the support

-    is in the binary; otherwise a compile-time error occurs. */

-

-    case OP_EXTUNI:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    GETCHARINCTEST(c, eptr);

-      {

-      int chartype;

-      int othercase;

-      int category = ucp_findchar(c, &chartype, &othercase);

-      if (category == ucp_M) RRETURN(MATCH_NOMATCH);

-      while (eptr < md->end_subject)

-        {

-        int len = 1;

-        if (!utf8) c = *eptr; else

-          {

-          GETCHARLEN(c, eptr, len);

-          }

-        category = ucp_findchar(c, &chartype, &othercase);

-        if (category != ucp_M) break;

-        eptr += len;

-        }

-      }

-    ecode++;

-    break;

-#endif

-

-

-    /* Match a back reference, possibly repeatedly. Look past the end of the

-    item to see if there is repeat information following. The code is similar

-    to that for character classes, but repeated for efficiency. Then obey

-    similar code to character type repeats - written out again for speed.

-    However, if the referenced string is the empty string, always treat

-    it as matched, any number of times (otherwise there could be infinite

-    loops). */

-

-    case OP_REF:

-      {

-      offset = GET2(ecode, 1) << 1;               /* Doubled ref number */

-      ecode += 3;                                 /* Advance past item */

-

-      /* If the reference is unset, set the length to be longer than the amount

-      of subject left; this ensures that every attempt at a match fails. We

-      can't just fail here, because of the possibility of quantifiers with zero

-      minima. */

-

-      length = (offset >= offset_top || md->offset_vector[offset] < 0)?

-        md->end_subject - eptr + 1 :

-        md->offset_vector[offset+1] - md->offset_vector[offset];

-

-      /* Set up for repetition, or handle the non-repeated case */

-

-      switch (*ecode)

-        {

-        case OP_CRSTAR:

-        case OP_CRMINSTAR:

-        case OP_CRPLUS:

-        case OP_CRMINPLUS:

-        case OP_CRQUERY:

-        case OP_CRMINQUERY:

-        c = *ecode++ - OP_CRSTAR;

-        minimize = (c & 1) != 0;

-        min = rep_min[c];                 /* Pick up values from tables; */

-        max = rep_max[c];                 /* zero for max => infinity */

-        if (max == 0) max = INT_MAX;

-        break;

-

-        case OP_CRRANGE:

-        case OP_CRMINRANGE:

-        minimize = (*ecode == OP_CRMINRANGE);

-        min = GET2(ecode, 1);

-        max = GET2(ecode, 3);

-        if (max == 0) max = INT_MAX;

-        ecode += 5;

-        break;

-

-        default:               /* No repeat follows */

-        if (!match_ref(offset, eptr, length, md, ims)) RRETURN(MATCH_NOMATCH);

-        eptr += length;

-        continue;              /* With the main loop */

-        }

-

-      /* If the length of the reference is zero, just continue with the

-      main loop. */

-

-      if (length == 0) continue;

-

-      /* First, ensure the minimum number of matches are present. We get back

-      the length of the reference string explicitly rather than passing the

-      address of eptr, so that eptr can be a register variable. */

-

-      for (i = 1; i <= min; i++)

-        {

-        if (!match_ref(offset, eptr, length, md, ims)) RRETURN(MATCH_NOMATCH);

-        eptr += length;

-        }

-

-      /* If min = max, continue at the same level without recursion.

-      They are not both allowed to be zero. */

-

-      if (min == max) continue;

-

-      /* If minimizing, keep trying and advancing the pointer */

-

-      if (minimize)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || !match_ref(offset, eptr, length, md, ims))

-            RRETURN(MATCH_NOMATCH);

-          eptr += length;

-          }

-        /* Control never gets here */

-        }

-

-      /* If maximizing, find the longest string and work backwards */

-

-      else

-        {

-        pp = eptr;

-        for (i = min; i < max; i++)

-          {

-          if (!match_ref(offset, eptr, length, md, ims)) break;

-          eptr += length;

-          }

-        while (eptr >= pp)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          eptr -= length;

-          }

-        RRETURN(MATCH_NOMATCH);

-        }

-      }

-    /* Control never gets here */

-

-

-

-    /* Match a bit-mapped character class, possibly repeatedly. This op code is

-    used when all the characters in the class have values in the range 0-255,

-    and either the matching is caseful, or the characters are in the range

-    0-127 when UTF-8 processing is enabled. The only difference between

-    OP_CLASS and OP_NCLASS occurs when a data character outside the range is

-    encountered.

-

-    First, look past the end of the item to see if there is repeat information

-    following. Then obey similar code to character type repeats - written out

-    again for speed. */

-

-    case OP_NCLASS:

-    case OP_CLASS:

-      {

-      data = ecode + 1;                /* Save for matching */

-      ecode += 33;                     /* Advance past the item */

-

-      switch (*ecode)

-        {

-        case OP_CRSTAR:

-        case OP_CRMINSTAR:

-        case OP_CRPLUS:

-        case OP_CRMINPLUS:

-        case OP_CRQUERY:

-        case OP_CRMINQUERY:

-        c = *ecode++ - OP_CRSTAR;

-        minimize = (c & 1) != 0;

-        min = rep_min[c];                 /* Pick up values from tables; */

-        max = rep_max[c];                 /* zero for max => infinity */

-        if (max == 0) max = INT_MAX;

-        break;

-

-        case OP_CRRANGE:

-        case OP_CRMINRANGE:

-        minimize = (*ecode == OP_CRMINRANGE);

-        min = GET2(ecode, 1);

-        max = GET2(ecode, 3);

-        if (max == 0) max = INT_MAX;

-        ecode += 5;

-        break;

-

-        default:               /* No repeat follows */

-        min = max = 1;

-        break;

-        }

-

-      /* First, ensure the minimum number of matches are present. */

-

-#ifdef SUPPORT_UTF8

-      /* UTF-8 mode */

-      if (utf8)

-        {

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          GETCHARINC(c, eptr);

-          if (c > 255)

-            {

-            if (op == OP_CLASS) RRETURN(MATCH_NOMATCH);

-            }

-          else

-            {

-            if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);

-            }

-          }

-        }

-      else

-#endif

-      /* Not UTF-8 mode */

-        {

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          c = *eptr++;

-          if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);

-          }

-        }

-

-      /* If max == min we can continue with the main loop without the

-      need to recurse. */

-

-      if (min == max) continue;

-

-      /* If minimizing, keep testing the rest of the expression and advancing

-      the pointer while it matches the class. */

-

-      if (minimize)

-        {

-#ifdef SUPPORT_UTF8

-        /* UTF-8 mode */

-        if (utf8)

-          {

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-            GETCHARINC(c, eptr);

-            if (c > 255)

-              {

-              if (op == OP_CLASS) RRETURN(MATCH_NOMATCH);

-              }

-            else

-              {

-              if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);

-              }

-            }

-          }

-        else

-#endif

-        /* Not UTF-8 mode */

-          {

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-            c = *eptr++;

-            if ((data[c/8] & (1 << (c&7))) == 0) RRETURN(MATCH_NOMATCH);

-            }

-          }

-        /* Control never gets here */

-        }

-

-      /* If maximizing, find the longest possible run, then work backwards. */

-

-      else

-        {

-        pp = eptr;

-

-#ifdef SUPPORT_UTF8

-        /* UTF-8 mode */

-        if (utf8)

-          {

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c > 255)

-              {

-              if (op == OP_CLASS) break;

-              }

-            else

-              {

-              if ((data[c/8] & (1 << (c&7))) == 0) break;

-              }

-            eptr += len;

-            }

-          for (;;)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (eptr-- == pp) break;        /* Stop if tried at original pos */

-            BACKCHAR(eptr);

-            }

-          }

-        else

-#endif

-          /* Not UTF-8 mode */

-          {

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject) break;

-            c = *eptr;

-            if ((data[c/8] & (1 << (c&7))) == 0) break;

-            eptr++;

-            }

-          while (eptr >= pp)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            eptr--;

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            }

-          }

-

-        RRETURN(MATCH_NOMATCH);

-        }

-      }

-    /* Control never gets here */

-

-

-    /* Match an extended character class. This opcode is encountered only

-    in UTF-8 mode, because that's the only time it is compiled. */

-

-#ifdef SUPPORT_UTF8

-    case OP_XCLASS:

-      {

-      data = ecode + 1 + LINK_SIZE;                /* Save for matching */

-      ecode += GET(ecode, 1);                      /* Advance past the item */

-

-      switch (*ecode)

-        {

-        case OP_CRSTAR:

-        case OP_CRMINSTAR:

-        case OP_CRPLUS:

-        case OP_CRMINPLUS:

-        case OP_CRQUERY:

-        case OP_CRMINQUERY:

-        c = *ecode++ - OP_CRSTAR;

-        minimize = (c & 1) != 0;

-        min = rep_min[c];                 /* Pick up values from tables; */

-        max = rep_max[c];                 /* zero for max => infinity */

-        if (max == 0) max = INT_MAX;

-        break;

-

-        case OP_CRRANGE:

-        case OP_CRMINRANGE:

-        minimize = (*ecode == OP_CRMINRANGE);

-        min = GET2(ecode, 1);

-        max = GET2(ecode, 3);

-        if (max == 0) max = INT_MAX;

-        ecode += 5;

-        break;

-

-        default:               /* No repeat follows */

-        min = max = 1;

-        break;

-        }

-

-      /* First, ensure the minimum number of matches are present. */

-

-      for (i = 1; i <= min; i++)

-        {

-        if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-        GETCHARINC(c, eptr);

-        if (!_pcre_xclass(c, data)) RRETURN(MATCH_NOMATCH);

-        }

-

-      /* If max == min we can continue with the main loop without the

-      need to recurse. */

-

-      if (min == max) continue;

-

-      /* If minimizing, keep testing the rest of the expression and advancing

-      the pointer while it matches the class. */

-

-      if (minimize)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          GETCHARINC(c, eptr);

-          if (!_pcre_xclass(c, data)) RRETURN(MATCH_NOMATCH);

-          }

-        /* Control never gets here */

-        }

-

-      /* If maximizing, find the longest possible run, then work backwards. */

-

-      else

-        {

-        pp = eptr;

-        for (i = min; i < max; i++)

-          {

-          int len = 1;

-          if (eptr >= md->end_subject) break;

-          GETCHARLEN(c, eptr, len);

-          if (!_pcre_xclass(c, data)) break;

-          eptr += len;

-          }

-        for(;;)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (eptr-- == pp) break;        /* Stop if tried at original pos */

-          BACKCHAR(eptr)

-          }

-        RRETURN(MATCH_NOMATCH);

-        }

-

-      /* Control never gets here */

-      }

-#endif    /* End of XCLASS */

-

-    /* Match a single character, casefully */

-

-    case OP_CHAR:

-#ifdef SUPPORT_UTF8

-    if (utf8)

-      {

-      length = 1;

-      ecode++;

-      GETCHARLEN(fc, ecode, length);

-      if (length > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);

-      while (length-- > 0) if (*ecode++ != *eptr++) RRETURN(MATCH_NOMATCH);

-      }

-    else

-#endif

-

-    /* Non-UTF-8 mode */

-      {

-      if (md->end_subject - eptr < 1) RRETURN(MATCH_NOMATCH);

-      if (ecode[1] != *eptr++) RRETURN(MATCH_NOMATCH);

-      ecode += 2;

-      }

-    break;

-

-    /* Match a single character, caselessly */

-

-    case OP_CHARNC:

-#ifdef SUPPORT_UTF8

-    if (utf8)

-      {

-      length = 1;

-      ecode++;

-      GETCHARLEN(fc, ecode, length);

-

-      if (length > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);

-

-      /* If the pattern character's value is < 128, we have only one byte, and

-      can use the fast lookup table. */

-

-      if (fc < 128)

-        {

-        if (md->lcc[*ecode++] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);

-        }

-

-      /* Otherwise we must pick up the subject character */

-

-      else

-        {

-        int dc;

-        GETCHARINC(dc, eptr);

-        ecode += length;

-

-        /* If we have Unicode property support, we can use it to test the other

-        case of the character, if there is one. The result of ucp_findchar() is

-        < 0 if the char isn't found, and othercase is returned as zero if there

-        isn't one. */

-

-        if (fc != dc)

-          {

-#ifdef SUPPORT_UCP

-          int chartype;

-          int othercase;

-          if (ucp_findchar(fc, &chartype, &othercase) < 0 || dc != othercase)

-#endif

-            RRETURN(MATCH_NOMATCH);

-          }

-        }

-      }

-    else

-#endif   /* SUPPORT_UTF8 */

-

-    /* Non-UTF-8 mode */

-      {

-      if (md->end_subject - eptr < 1) RRETURN(MATCH_NOMATCH);

-      if (md->lcc[ecode[1]] != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);

-      ecode += 2;

-      }

-    break;

-

-    /* Match a single character repeatedly; different opcodes share code. */

-

-    case OP_EXACT:

-    min = max = GET2(ecode, 1);

-    ecode += 3;

-    goto REPEATCHAR;

-

-    case OP_UPTO:

-    case OP_MINUPTO:

-    min = 0;

-    max = GET2(ecode, 1);

-    minimize = *ecode == OP_MINUPTO;

-    ecode += 3;

-    goto REPEATCHAR;

-

-    case OP_STAR:

-    case OP_MINSTAR:

-    case OP_PLUS:

-    case OP_MINPLUS:

-    case OP_QUERY:

-    case OP_MINQUERY:

-    c = *ecode++ - OP_STAR;

-    minimize = (c & 1) != 0;

-    min = rep_min[c];                 /* Pick up values from tables; */

-    max = rep_max[c];                 /* zero for max => infinity */

-    if (max == 0) max = INT_MAX;

-

-    /* Common code for all repeated single-character matches. We can give

-    up quickly if there are fewer than the minimum number of characters left in

-    the subject. */

-

-    REPEATCHAR:

-#ifdef SUPPORT_UTF8

-    if (utf8)

-      {

-      length = 1;

-      charptr = ecode;

-      GETCHARLEN(fc, ecode, length);

-      if (min * length > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);

-      ecode += length;

-

-      /* Handle multibyte character matching specially here. There is

-      support for caseless matching if UCP support is present. */

-

-      if (length > 1)

-        {

-        int oclength = 0;

-        uschar occhars[8];

-

-#ifdef SUPPORT_UCP

-        int othercase;

-        int chartype;

-        if ((ims & PCRE_CASELESS) != 0 &&

-             ucp_findchar(fc, &chartype, &othercase) >= 0 &&

-             othercase > 0)

-          oclength = _pcre_ord2utf8(othercase, occhars);

-#endif  /* SUPPORT_UCP */

-

-        for (i = 1; i <= min; i++)

-          {

-          if (memcmp(eptr, charptr, length) == 0) eptr += length;

-          /* Need braces because of following else */

-          else if (oclength == 0) { RRETURN(MATCH_NOMATCH); }

-          else

-            {

-            if (memcmp(eptr, occhars, oclength) != 0) RRETURN(MATCH_NOMATCH);

-            eptr += oclength;

-            }

-          }

-

-        if (min == max) continue;

-

-        if (minimize)

-          {

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-            if (memcmp(eptr, charptr, length) == 0) eptr += length;

-            /* Need braces because of following else */

-            else if (oclength == 0) { RRETURN(MATCH_NOMATCH); }

-            else

-              {

-              if (memcmp(eptr, occhars, oclength) != 0) RRETURN(MATCH_NOMATCH);

-              eptr += oclength;

-              }

-            }

-          /* Control never gets here */

-          }

-        else

-          {

-          pp = eptr;

-          for (i = min; i < max; i++)

-            {

-            if (eptr > md->end_subject - length) break;

-            if (memcmp(eptr, charptr, length) == 0) eptr += length;

-            else if (oclength == 0) break;

-            else

-              {

-              if (memcmp(eptr, occhars, oclength) != 0) break;

-              eptr += oclength;

-              }

-            }

-          while (eptr >= pp)

-           {

-           RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-           if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-           eptr -= length;

-           }

-          RRETURN(MATCH_NOMATCH);

-          }

-        /* Control never gets here */

-        }

-

-      /* If the length of a UTF-8 character is 1, we fall through here, and

-      obey the code as for non-UTF-8 characters below, though in this case the

-      value of fc will always be < 128. */

-      }

-    else

-#endif  /* SUPPORT_UTF8 */

-

-    /* When not in UTF-8 mode, load a single-byte character. */

-      {

-      if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);

-      fc = *ecode++;

-      }

-

-    /* The value of fc at this point is always less than 256, though we may or

-    may not be in UTF-8 mode. The code is duplicated for the caseless and

-    caseful cases, for speed, since matching characters is likely to be quite

-    common. First, ensure the minimum number of matches are present. If min =

-    max, continue at the same level without recursing. Otherwise, if

-    minimizing, keep trying the rest of the expression and advancing one

-    matching character if failing, up to the maximum. Alternatively, if

-    maximizing, find the maximum number of characters and work backwards. */

-

-    DPRINTF(("matching %c{%d,%d} against subject %.*s\n", fc, min, max,

-      max, eptr));

-

-    if ((ims & PCRE_CASELESS) != 0)

-      {

-      fc = md->lcc[fc];

-      for (i = 1; i <= min; i++)

-        if (fc != md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);

-      if (min == max) continue;

-      if (minimize)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject ||

-              fc != md->lcc[*eptr++])

-            RRETURN(MATCH_NOMATCH);

-          }

-        /* Control never gets here */

-        }

-      else

-        {

-        pp = eptr;

-        for (i = min; i < max; i++)

-          {

-          if (eptr >= md->end_subject || fc != md->lcc[*eptr]) break;

-          eptr++;

-          }

-        while (eptr >= pp)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          eptr--;

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          }

-        RRETURN(MATCH_NOMATCH);

-        }

-      /* Control never gets here */

-      }

-

-    /* Caseful comparisons (includes all multi-byte characters) */

-

-    else

-      {

-      for (i = 1; i <= min; i++) if (fc != *eptr++) RRETURN(MATCH_NOMATCH);

-      if (min == max) continue;

-      if (minimize)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject || fc != *eptr++)

-            RRETURN(MATCH_NOMATCH);

-          }

-        /* Control never gets here */

-        }

-      else

-        {

-        pp = eptr;

-        for (i = min; i < max; i++)

-          {

-          if (eptr >= md->end_subject || fc != *eptr) break;

-          eptr++;

-          }

-        while (eptr >= pp)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          eptr--;

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          }

-        RRETURN(MATCH_NOMATCH);

-        }

-      }

-    /* Control never gets here */

-

-    /* Match a negated single one-byte character. The character we are

-    checking can be multibyte. */

-

-    case OP_NOT:

-    if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-    ecode++;

-    GETCHARINCTEST(c, eptr);

-    if ((ims & PCRE_CASELESS) != 0)

-      {

-#ifdef SUPPORT_UTF8

-      if (c < 256)

-#endif

-      c = md->lcc[c];

-      if (md->lcc[*ecode++] == c) RRETURN(MATCH_NOMATCH);

-      }

-    else

-      {

-      if (*ecode++ == c) RRETURN(MATCH_NOMATCH);

-      }

-    break;

-

-    /* Match a negated single one-byte character repeatedly. This is almost a

-    repeat of the code for a repeated single character, but I haven't found a

-    nice way of commoning these up that doesn't require a test of the

-    positive/negative option for each character match. Maybe that wouldn't add

-    very much to the time taken, but character matching *is* what this is all

-    about... */

-

-    case OP_NOTEXACT:

-    min = max = GET2(ecode, 1);

-    ecode += 3;

-    goto REPEATNOTCHAR;

-

-    case OP_NOTUPTO:

-    case OP_NOTMINUPTO:

-    min = 0;

-    max = GET2(ecode, 1);

-    minimize = *ecode == OP_NOTMINUPTO;

-    ecode += 3;

-    goto REPEATNOTCHAR;

-

-    case OP_NOTSTAR:

-    case OP_NOTMINSTAR:

-    case OP_NOTPLUS:

-    case OP_NOTMINPLUS:

-    case OP_NOTQUERY:

-    case OP_NOTMINQUERY:

-    c = *ecode++ - OP_NOTSTAR;

-    minimize = (c & 1) != 0;

-    min = rep_min[c];                 /* Pick up values from tables; */

-    max = rep_max[c];                 /* zero for max => infinity */

-    if (max == 0) max = INT_MAX;

-

-    /* Common code for all repeated single-byte matches. We can give up quickly

-    if there are fewer than the minimum number of bytes left in the

-    subject. */

-

-    REPEATNOTCHAR:

-    if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);

-    fc = *ecode++;

-

-    /* The code is duplicated for the caseless and caseful cases, for speed,

-    since matching characters is likely to be quite common. First, ensure the

-    minimum number of matches are present. If min = max, continue at the same

-    level without recursing. Otherwise, if minimizing, keep trying the rest of

-    the expression and advancing one matching character if failing, up to the

-    maximum. Alternatively, if maximizing, find the maximum number of

-    characters and work backwards. */

-

-    DPRINTF(("negative matching %c{%d,%d} against subject %.*s\n", fc, min, max,

-      max, eptr));

-

-    if ((ims & PCRE_CASELESS) != 0)

-      {

-      fc = md->lcc[fc];

-

-#ifdef SUPPORT_UTF8

-      /* UTF-8 mode */

-      if (utf8)

-        {

-        register int d;

-        for (i = 1; i <= min; i++)

-          {

-          GETCHARINC(d, eptr);

-          if (d < 256) d = md->lcc[d];

-          if (fc == d) RRETURN(MATCH_NOMATCH);

-          }

-        }

-      else

-#endif

-

-      /* Not UTF-8 mode */

-        {

-        for (i = 1; i <= min; i++)

-          if (fc == md->lcc[*eptr++]) RRETURN(MATCH_NOMATCH);

-        }

-

-      if (min == max) continue;

-

-      if (minimize)

-        {

-#ifdef SUPPORT_UTF8

-        /* UTF-8 mode */

-        if (utf8)

-          {

-          register int d;

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            GETCHARINC(d, eptr);

-            if (d < 256) d = md->lcc[d];

-            if (fi >= max || eptr >= md->end_subject || fc == d)

-              RRETURN(MATCH_NOMATCH);

-            }

-          }

-        else

-#endif

-        /* Not UTF-8 mode */

-          {

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (fi >= max || eptr >= md->end_subject || fc == md->lcc[*eptr++])

-              RRETURN(MATCH_NOMATCH);

-            }

-          }

-        /* Control never gets here */

-        }

-

-      /* Maximize case */

-

-      else

-        {

-        pp = eptr;

-

-#ifdef SUPPORT_UTF8

-        /* UTF-8 mode */

-        if (utf8)

-          {

-          register int d;

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(d, eptr, len);

-            if (d < 256) d = md->lcc[d];

-            if (fc == d) break;

-            eptr += len;

-            }

-          for(;;)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (eptr-- == pp) break;        /* Stop if tried at original pos */

-            BACKCHAR(eptr);

-            }

-          }

-        else

-#endif

-        /* Not UTF-8 mode */

-          {

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || fc == md->lcc[*eptr]) break;

-            eptr++;

-            }

-          while (eptr >= pp)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            eptr--;

-            }

-          }

-

-        RRETURN(MATCH_NOMATCH);

-        }

-      /* Control never gets here */

-      }

-

-    /* Caseful comparisons */

-

-    else

-      {

-#ifdef SUPPORT_UTF8

-      /* UTF-8 mode */

-      if (utf8)

-        {

-        register int d;

-        for (i = 1; i <= min; i++)

-          {

-          GETCHARINC(d, eptr);

-          if (fc == d) RRETURN(MATCH_NOMATCH);

-          }

-        }

-      else

-#endif

-      /* Not UTF-8 mode */

-        {

-        for (i = 1; i <= min; i++)

-          if (fc == *eptr++) RRETURN(MATCH_NOMATCH);

-        }

-

-      if (min == max) continue;

-

-      if (minimize)

-        {

-#ifdef SUPPORT_UTF8

-        /* UTF-8 mode */

-        if (utf8)

-          {

-          register int d;

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            GETCHARINC(d, eptr);

-            if (fi >= max || eptr >= md->end_subject || fc == d)

-              RRETURN(MATCH_NOMATCH);

-            }

-          }

-        else

-#endif

-        /* Not UTF-8 mode */

-          {

-          for (fi = min;; fi++)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (fi >= max || eptr >= md->end_subject || fc == *eptr++)

-              RRETURN(MATCH_NOMATCH);

-            }

-          }

-        /* Control never gets here */

-        }

-

-      /* Maximize case */

-

-      else

-        {

-        pp = eptr;

-

-#ifdef SUPPORT_UTF8

-        /* UTF-8 mode */

-        if (utf8)

-          {

-          register int d;

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(d, eptr, len);

-            if (fc == d) break;

-            eptr += len;

-            }

-          for(;;)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            if (eptr-- == pp) break;        /* Stop if tried at original pos */

-            BACKCHAR(eptr);

-            }

-          }

-        else

-#endif

-        /* Not UTF-8 mode */

-          {

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || fc == *eptr) break;

-            eptr++;

-            }

-          while (eptr >= pp)

-            {

-            RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-            if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-            eptr--;

-            }

-          }

-

-        RRETURN(MATCH_NOMATCH);

-        }

-      }

-    /* Control never gets here */

-

-    /* Match a single character type repeatedly; several different opcodes

-    share code. This is very similar to the code for single characters, but we

-    repeat it in the interests of efficiency. */

-

-    case OP_TYPEEXACT:

-    min = max = GET2(ecode, 1);

-    minimize = TRUE;

-    ecode += 3;

-    goto REPEATTYPE;

-

-    case OP_TYPEUPTO:

-    case OP_TYPEMINUPTO:

-    min = 0;

-    max = GET2(ecode, 1);

-    minimize = *ecode == OP_TYPEMINUPTO;

-    ecode += 3;

-    goto REPEATTYPE;

-

-    case OP_TYPESTAR:

-    case OP_TYPEMINSTAR:

-    case OP_TYPEPLUS:

-    case OP_TYPEMINPLUS:

-    case OP_TYPEQUERY:

-    case OP_TYPEMINQUERY:

-    c = *ecode++ - OP_TYPESTAR;

-    minimize = (c & 1) != 0;

-    min = rep_min[c];                 /* Pick up values from tables; */

-    max = rep_max[c];                 /* zero for max => infinity */

-    if (max == 0) max = INT_MAX;

-

-    /* Common code for all repeated single character type matches. Note that

-    in UTF-8 mode, '.' matches a character of any length, but for the other

-    character types, the valid characters are all one-byte long. */

-

-    REPEATTYPE:

-    ctype = *ecode++;      /* Code for the character type */

-

-#ifdef SUPPORT_UCP

-    if (ctype == OP_PROP || ctype == OP_NOTPROP)

-      {

-      prop_fail_result = ctype == OP_NOTPROP;

-      prop_type = *ecode++;

-      if (prop_type >= 128)

-        {

-        prop_test_against = prop_type - 128;

-        prop_test_variable = &prop_category;

-        }

-      else

-        {

-        prop_test_against = prop_type;

-        prop_test_variable = &prop_chartype;

-        }

-      }

-    else prop_type = -1;

-#endif

-

-    /* First, ensure the minimum number of matches are present. Use inline

-    code for maximizing the speed, and do the type test once at the start

-    (i.e. keep it out of the loop). Also we can test that there are at least

-    the minimum number of bytes before we start. This isn't as effective in

-    UTF-8 mode, but it does no harm. Separate the UTF-8 code completely as that

-    is tidier. Also separate the UCP code, which can be the same for both UTF-8

-    and single-bytes. */

-

-    if (min > md->end_subject - eptr) RRETURN(MATCH_NOMATCH);

-    if (min > 0)

-      {

-#ifdef SUPPORT_UCP

-      if (prop_type > 0)

-        {

-        for (i = 1; i <= min; i++)

-          {

-          GETCHARINC(c, eptr);

-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-          if ((*prop_test_variable == prop_test_against) == prop_fail_result)

-            RRETURN(MATCH_NOMATCH);

-          }

-        }

-

-      /* Match extended Unicode sequences. We will get here only if the

-      support is in the binary; otherwise a compile-time error occurs. */

-

-      else if (ctype == OP_EXTUNI)

-        {

-        for (i = 1; i <= min; i++)

-          {

-          GETCHARINCTEST(c, eptr);

-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-          if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);

-          while (eptr < md->end_subject)

-            {

-            int len = 1;

-            if (!utf8) c = *eptr; else

-              {

-              GETCHARLEN(c, eptr, len);

-              }

-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-            if (prop_category != ucp_M) break;

-            eptr += len;

-            }

-          }

-        }

-

-      else

-#endif     /* SUPPORT_UCP */

-

-/* Handle all other cases when the coding is UTF-8 */

-

-#ifdef SUPPORT_UTF8

-      if (utf8) switch(ctype)

-        {

-        case OP_ANY:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject ||

-             (*eptr++ == NEWLINE && (ims & PCRE_DOTALL) == 0))

-            RRETURN(MATCH_NOMATCH);

-          while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;

-          }

-        break;

-

-        case OP_ANYBYTE:

-        eptr += min;

-        break;

-

-        case OP_NOT_DIGIT:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          GETCHARINC(c, eptr);

-          if (c < 128 && (md->ctypes[c] & ctype_digit) != 0)

-            RRETURN(MATCH_NOMATCH);

-          }

-        break;

-

-        case OP_DIGIT:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject ||

-             *eptr >= 128 || (md->ctypes[*eptr++] & ctype_digit) == 0)

-            RRETURN(MATCH_NOMATCH);

-          /* No need to skip more bytes - we know it's a 1-byte character */

-          }

-        break;

-

-        case OP_NOT_WHITESPACE:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject ||

-             (*eptr < 128 && (md->ctypes[*eptr++] & ctype_space) != 0))

-            RRETURN(MATCH_NOMATCH);

-          while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;

-          }

-        break;

-

-        case OP_WHITESPACE:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject ||

-             *eptr >= 128 || (md->ctypes[*eptr++] & ctype_space) == 0)

-            RRETURN(MATCH_NOMATCH);

-          /* No need to skip more bytes - we know it's a 1-byte character */

-          }

-        break;

-

-        case OP_NOT_WORDCHAR:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject ||

-             (*eptr < 128 && (md->ctypes[*eptr++] & ctype_word) != 0))

-            RRETURN(MATCH_NOMATCH);

-          while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;

-          }

-        break;

-

-        case OP_WORDCHAR:

-        for (i = 1; i <= min; i++)

-          {

-          if (eptr >= md->end_subject ||

-             *eptr >= 128 || (md->ctypes[*eptr++] & ctype_word) == 0)

-            RRETURN(MATCH_NOMATCH);

-          /* No need to skip more bytes - we know it's a 1-byte character */

-          }

-        break;

-

-        default:

-        RRETURN(PCRE_ERROR_INTERNAL);

-        }  /* End switch(ctype) */

-

-      else

-#endif     /* SUPPORT_UTF8 */

-

-      /* Code for the non-UTF-8 case for minimum matching of operators other

-      than OP_PROP and OP_NOTPROP. */

-

-      switch(ctype)

-        {

-        case OP_ANY:

-        if ((ims & PCRE_DOTALL) == 0)

-          {

-          for (i = 1; i <= min; i++)

-            if (*eptr++ == NEWLINE) RRETURN(MATCH_NOMATCH);

-          }

-        else eptr += min;

-        break;

-

-        case OP_ANYBYTE:

-        eptr += min;

-        break;

-

-        case OP_NOT_DIGIT:

-        for (i = 1; i <= min; i++)

-          if ((md->ctypes[*eptr++] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH);

-        break;

-

-        case OP_DIGIT:

-        for (i = 1; i <= min; i++)

-          if ((md->ctypes[*eptr++] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH);

-        break;

-

-        case OP_NOT_WHITESPACE:

-        for (i = 1; i <= min; i++)

-          if ((md->ctypes[*eptr++] & ctype_space) != 0) RRETURN(MATCH_NOMATCH);

-        break;

-

-        case OP_WHITESPACE:

-        for (i = 1; i <= min; i++)

-          if ((md->ctypes[*eptr++] & ctype_space) == 0) RRETURN(MATCH_NOMATCH);

-        break;

-

-        case OP_NOT_WORDCHAR:

-        for (i = 1; i <= min; i++)

-          if ((md->ctypes[*eptr++] & ctype_word) != 0)

-            RRETURN(MATCH_NOMATCH);

-        break;

-

-        case OP_WORDCHAR:

-        for (i = 1; i <= min; i++)

-          if ((md->ctypes[*eptr++] & ctype_word) == 0)

-            RRETURN(MATCH_NOMATCH);

-        break;

-

-        default:

-        RRETURN(PCRE_ERROR_INTERNAL);

-        }

-      }

-

-    /* If min = max, continue at the same level without recursing */

-

-    if (min == max) continue;

-

-    /* If minimizing, we have to test the rest of the pattern before each

-    subsequent match. Again, separate the UTF-8 case for speed, and also

-    separate the UCP cases. */

-

-    if (minimize)

-      {

-#ifdef SUPPORT_UCP

-      if (prop_type > 0)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          GETCHARINC(c, eptr);

-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-          if ((*prop_test_variable == prop_test_against) == prop_fail_result)

-            RRETURN(MATCH_NOMATCH);

-          }

-        }

-

-      /* Match extended Unicode sequences. We will get here only if the

-      support is in the binary; otherwise a compile-time error occurs. */

-

-      else if (ctype == OP_EXTUNI)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          GETCHARINCTEST(c, eptr);

-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-          if (prop_category == ucp_M) RRETURN(MATCH_NOMATCH);

-          while (eptr < md->end_subject)

-            {

-            int len = 1;

-            if (!utf8) c = *eptr; else

-              {

-              GETCHARLEN(c, eptr, len);

-              }

-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-            if (prop_category != ucp_M) break;

-            eptr += len;

-            }

-          }

-        }

-

-      else

-#endif     /* SUPPORT_UCP */

-

-#ifdef SUPPORT_UTF8

-      /* UTF-8 mode */

-      if (utf8)

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-

-          GETCHARINC(c, eptr);

-          switch(ctype)

-            {

-            case OP_ANY:

-            if ((ims & PCRE_DOTALL) == 0 && c == NEWLINE) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_ANYBYTE:

-            break;

-

-            case OP_NOT_DIGIT:

-            if (c < 256 && (md->ctypes[c] & ctype_digit) != 0)

-              RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_DIGIT:

-            if (c >= 256 || (md->ctypes[c] & ctype_digit) == 0)

-              RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_NOT_WHITESPACE:

-            if (c < 256 && (md->ctypes[c] & ctype_space) != 0)

-              RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_WHITESPACE:

-            if  (c >= 256 || (md->ctypes[c] & ctype_space) == 0)

-              RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_NOT_WORDCHAR:

-            if (c < 256 && (md->ctypes[c] & ctype_word) != 0)

-              RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_WORDCHAR:

-            if (c >= 256 || (md->ctypes[c] & ctype_word) == 0)

-              RRETURN(MATCH_NOMATCH);

-            break;

-

-            default:

-            RRETURN(PCRE_ERROR_INTERNAL);

-            }

-          }

-        }

-      else

-#endif

-      /* Not UTF-8 mode */

-        {

-        for (fi = min;; fi++)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (fi >= max || eptr >= md->end_subject) RRETURN(MATCH_NOMATCH);

-          c = *eptr++;

-          switch(ctype)

-            {

-            case OP_ANY:

-            if ((ims & PCRE_DOTALL) == 0 && c == NEWLINE) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_ANYBYTE:

-            break;

-

-            case OP_NOT_DIGIT:

-            if ((md->ctypes[c] & ctype_digit) != 0) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_DIGIT:

-            if ((md->ctypes[c] & ctype_digit) == 0) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_NOT_WHITESPACE:

-            if ((md->ctypes[c] & ctype_space) != 0) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_WHITESPACE:

-            if  ((md->ctypes[c] & ctype_space) == 0) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_NOT_WORDCHAR:

-            if ((md->ctypes[c] & ctype_word) != 0) RRETURN(MATCH_NOMATCH);

-            break;

-

-            case OP_WORDCHAR:

-            if ((md->ctypes[c] & ctype_word) == 0) RRETURN(MATCH_NOMATCH);

-            break;

-

-            default:

-            RRETURN(PCRE_ERROR_INTERNAL);

-            }

-          }

-        }

-      /* Control never gets here */

-      }

-

-    /* If maximizing it is worth using inline code for speed, doing the type

-    test once at the start (i.e. keep it out of the loop). Again, keep the

-    UTF-8 and UCP stuff separate. */

-

-    else

-      {

-      pp = eptr;  /* Remember where we started */

-

-#ifdef SUPPORT_UCP

-      if (prop_type > 0)

-        {

-        for (i = min; i < max; i++)

-          {

-          int len = 1;

-          if (eptr >= md->end_subject) break;

-          GETCHARLEN(c, eptr, len);

-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-          if ((*prop_test_variable == prop_test_against) == prop_fail_result)

-            break;

-          eptr+= len;

-          }

-

-        /* eptr is now past the end of the maximum run */

-

-        for(;;)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (eptr-- == pp) break;        /* Stop if tried at original pos */

-          BACKCHAR(eptr);

-          }

-        }

-

-      /* Match extended Unicode sequences. We will get here only if the

-      support is in the binary; otherwise a compile-time error occurs. */

-

-      else if (ctype == OP_EXTUNI)

-        {

-        for (i = min; i < max; i++)

-          {

-          if (eptr >= md->end_subject) break;

-          GETCHARINCTEST(c, eptr);

-          prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-          if (prop_category == ucp_M) break;

-          while (eptr < md->end_subject)

-            {

-            int len = 1;

-            if (!utf8) c = *eptr; else

-              {

-              GETCHARLEN(c, eptr, len);

-              }

-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-            if (prop_category != ucp_M) break;

-            eptr += len;

-            }

-          }

-

-        /* eptr is now past the end of the maximum run */

-

-        for(;;)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (eptr-- == pp) break;        /* Stop if tried at original pos */

-          for (;;)                        /* Move back over one extended */

-            {

-            int len = 1;

-            BACKCHAR(eptr);

-            if (!utf8) c = *eptr; else

-              {

-              GETCHARLEN(c, eptr, len);

-              }

-            prop_category = ucp_findchar(c, &prop_chartype, &prop_othercase);

-            if (prop_category != ucp_M) break;

-            eptr--;

-            }

-          }

-        }

-

-      else

-#endif   /* SUPPORT_UCP */

-

-#ifdef SUPPORT_UTF8

-      /* UTF-8 mode */

-

-      if (utf8)

-        {

-        switch(ctype)

-          {

-          case OP_ANY:

-

-          /* Special code is required for UTF8, but when the maximum is unlimited

-          we don't need it, so we repeat the non-UTF8 code. This is probably

-          worth it, because .* is quite a common idiom. */

-

-          if (max < INT_MAX)

-            {

-            if ((ims & PCRE_DOTALL) == 0)

-              {

-              for (i = min; i < max; i++)

-                {

-                if (eptr >= md->end_subject || *eptr == NEWLINE) break;

-                eptr++;

-                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;

-                }

-              }

-            else

-              {

-              for (i = min; i < max; i++)

-                {

-                eptr++;

-                while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++;

-                }

-              }

-            }

-

-          /* Handle unlimited UTF-8 repeat */

-

-          else

-            {

-            if ((ims & PCRE_DOTALL) == 0)

-              {

-              for (i = min; i < max; i++)

-                {

-                if (eptr >= md->end_subject || *eptr == NEWLINE) break;

-                eptr++;

-                }

-              break;

-              }

-            else

-              {

-              c = max - min;

-              if (c > md->end_subject - eptr) c = md->end_subject - eptr;

-              eptr += c;

-              }

-            }

-          break;

-

-          /* The byte case is the same as non-UTF8 */

-

-          case OP_ANYBYTE:

-          c = max - min;

-          if (c > md->end_subject - eptr) c = md->end_subject - eptr;

-          eptr += c;

-          break;

-

-          case OP_NOT_DIGIT:

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) break;

-            eptr+= len;

-            }

-          break;

-

-          case OP_DIGIT:

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c >= 256 ||(md->ctypes[c] & ctype_digit) == 0) break;

-            eptr+= len;

-            }

-          break;

-

-          case OP_NOT_WHITESPACE:

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c < 256 && (md->ctypes[c] & ctype_space) != 0) break;

-            eptr+= len;

-            }

-          break;

-

-          case OP_WHITESPACE:

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c >= 256 ||(md->ctypes[c] & ctype_space) == 0) break;

-            eptr+= len;

-            }

-          break;

-

-          case OP_NOT_WORDCHAR:

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c < 256 && (md->ctypes[c] & ctype_word) != 0) break;

-            eptr+= len;

-            }

-          break;

-

-          case OP_WORDCHAR:

-          for (i = min; i < max; i++)

-            {

-            int len = 1;

-            if (eptr >= md->end_subject) break;

-            GETCHARLEN(c, eptr, len);

-            if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) break;

-            eptr+= len;

-            }

-          break;

-

-          default:

-          RRETURN(PCRE_ERROR_INTERNAL);

-          }

-

-        /* eptr is now past the end of the maximum run */

-

-        for(;;)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          if (eptr-- == pp) break;        /* Stop if tried at original pos */

-          BACKCHAR(eptr);

-          }

-        }

-      else

-#endif

-

-      /* Not UTF-8 mode */

-        {

-        switch(ctype)

-          {

-          case OP_ANY:

-          if ((ims & PCRE_DOTALL) == 0)

-            {

-            for (i = min; i < max; i++)

-              {

-              if (eptr >= md->end_subject || *eptr == NEWLINE) break;

-              eptr++;

-              }

-            break;

-            }

-          /* For DOTALL case, fall through and treat as \C */

-

-          case OP_ANYBYTE:

-          c = max - min;

-          if (c > md->end_subject - eptr) c = md->end_subject - eptr;

-          eptr += c;

-          break;

-

-          case OP_NOT_DIGIT:

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_digit) != 0)

-              break;

-            eptr++;

-            }

-          break;

-

-          case OP_DIGIT:

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_digit) == 0)

-              break;

-            eptr++;

-            }

-          break;

-

-          case OP_NOT_WHITESPACE:

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_space) != 0)

-              break;

-            eptr++;

-            }

-          break;

-

-          case OP_WHITESPACE:

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_space) == 0)

-              break;

-            eptr++;

-            }

-          break;

-

-          case OP_NOT_WORDCHAR:

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_word) != 0)

-              break;

-            eptr++;

-            }

-          break;

-

-          case OP_WORDCHAR:

-          for (i = min; i < max; i++)

-            {

-            if (eptr >= md->end_subject || (md->ctypes[*eptr] & ctype_word) == 0)

-              break;

-            eptr++;

-            }

-          break;

-

-          default:

-          RRETURN(PCRE_ERROR_INTERNAL);

-          }

-

-        /* eptr is now past the end of the maximum run */

-

-        while (eptr >= pp)

-          {

-          RMATCH(rrc, eptr, ecode, offset_top, md, ims, eptrb, 0);

-          eptr--;

-          if (rrc != MATCH_NOMATCH) RRETURN(rrc);

-          }

-        }

-

-      /* Get here if we can't make it match with any permitted repetitions */

-

-      RRETURN(MATCH_NOMATCH);

-      }

-    /* Control never gets here */

-

-    /* There's been some horrible disaster. Since all codes > OP_BRA are

-    for capturing brackets, and there shouldn't be any gaps between 0 and

-    OP_BRA, arrival here can only mean there is something seriously wrong

-    in the code above or the OP_xxx definitions. */

-

-    default:

-    DPRINTF(("Unknown opcode %d\n", *ecode));

-    RRETURN(PCRE_ERROR_UNKNOWN_NODE);

-    }

-

-  /* Do not stick any code in here without much thought; it is assumed

-  that "continue" in the code above comes out to here to repeat the main

-  loop. */

-

-  }             /* End of main loop */

-/* Control never reaches here */

-}

-

-

-/***************************************************************************

-****************************************************************************

-                   RECURSION IN THE match() FUNCTION

-

-Undefine all the macros that were defined above to handle this. */

-

-#ifdef NO_RECURSE

-#undef eptr

-#undef ecode

-#undef offset_top

-#undef ims

-#undef eptrb

-#undef flags

-

-#undef callpat

-#undef charptr

-#undef data

-#undef next

-#undef pp

-#undef prev

-#undef saved_eptr

-

-#undef new_recursive

-

-#undef cur_is_word

-#undef condition

-#undef minimize

-#undef prev_is_word

-

-#undef original_ims

-

-#undef ctype

-#undef length

-#undef max

-#undef min

-#undef number

-#undef offset

-#undef op

-#undef save_capture_last

-#undef save_offset1

-#undef save_offset2

-#undef save_offset3

-#undef stacksave

-

-#undef newptrb

-

-#endif

-

-/* These two are defined as macros in both cases */

-

-#undef fc

-#undef fi

-

-/***************************************************************************

-***************************************************************************/

-

-

-

-/*************************************************

-*         Execute a Regular Expression           *

-*************************************************/

-

-/* This function applies a compiled re to a subject string and picks out

-portions of the string if it matches. Two elements in the vector are set for

-each substring: the offsets to the start and end of the substring.

-

-Arguments:

-  argument_re     points to the compiled expression

-  extra_data      points to extra data or is NULL

-  subject         points to the subject string

-  length          length of subject string (may contain binary zeros)

-  start_offset    where to start in the subject string

-  options         option bits

-  offsets         points to a vector of ints to be filled in with offsets

-  offsetcount     the number of elements in the vector

-

-Returns:          > 0 => success; value is the number of elements filled in

-                  = 0 => success, but offsets is not big enough

-                   -1 => failed to match

-                 < -1 => some kind of unexpected problem

-*/

-

-EXPORT int

-pcre_exec(const pcre *argument_re, const pcre_extra *extra_data,

-  const char *subject, int length, int start_offset, int options, int *offsets,

-  int offsetcount)

-{

-int rc, resetcount, ocount;

-int first_byte = -1;

-int req_byte = -1;

-int req_byte2 = -1;

-unsigned long int ims = 0;

-BOOL using_temporary_offsets = FALSE;

-BOOL anchored;

-BOOL startline;

-BOOL firstline;

-BOOL first_byte_caseless = FALSE;

-BOOL req_byte_caseless = FALSE;

-match_data match_block;

-const uschar *tables;

-const uschar *start_bits = NULL;

-const uschar *start_match = (const uschar *)subject + start_offset;

-const uschar *end_subject;

-const uschar *req_byte_ptr = start_match - 1;

-

-pcre_study_data internal_study;

-const pcre_study_data *study;

-

-real_pcre internal_re;

-const real_pcre *external_re = (const real_pcre *)argument_re;

-const real_pcre *re = external_re;

-

-/* Plausibility checks */

-

-if ((options & ~PUBLIC_EXEC_OPTIONS) != 0) return PCRE_ERROR_BADOPTION;

-if (re == NULL || subject == NULL ||

-   (offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL;

-if (offsetcount < 0) return PCRE_ERROR_BADCOUNT;

-

-/* Fish out the optional data from the extra_data structure, first setting

-the default values. */

-

-study = NULL;

-match_block.match_limit = MATCH_LIMIT;

-match_block.callout_data = NULL;

-

-/* The table pointer is always in native byte order. */

-

-tables = external_re->tables;

-

-if (extra_data != NULL)

-  {

-  register unsigned int flags = extra_data->flags;

-  if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)

-    study = (const pcre_study_data *)extra_data->study_data;

-  if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0)

-    match_block.match_limit = extra_data->match_limit;

-  if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)

-    match_block.callout_data = extra_data->callout_data;

-  if ((flags & PCRE_EXTRA_TABLES) != 0) tables = extra_data->tables;

-  }

-

-/* If the exec call supplied NULL for tables, use the inbuilt ones. This

-is a feature that makes it possible to save compiled regex and re-use them

-in other programs later. */

-

-if (tables == NULL) tables = _pcre_default_tables;

-

-/* Check that the first field in the block is the magic number. If it is not,

-test for a regex that was compiled on a host of opposite endianness. If this is

-the case, flipped values are put in internal_re and internal_study if there was

-study data too. */

-

-if (re->magic_number != MAGIC_NUMBER)

-  {

-  re = _pcre_try_flipped(re, &internal_re, study, &internal_study);

-  if (re == NULL) return PCRE_ERROR_BADMAGIC;

-  if (study != NULL) study = &internal_study;

-  }

-

-/* Set up other data */

-

-anchored = ((re->options | options) & PCRE_ANCHORED) != 0;

-startline = (re->options & PCRE_STARTLINE) != 0;

-firstline = (re->options & PCRE_FIRSTLINE) != 0;

-

-/* The code starts after the real_pcre block and the capture name table. */

-

-match_block.start_code = (const uschar *)external_re + re->name_table_offset +

-  re->name_count * re->name_entry_size;

-

-match_block.start_subject = (const uschar *)subject;

-match_block.start_offset = start_offset;

-match_block.end_subject = match_block.start_subject + length;

-end_subject = match_block.end_subject;

-

-match_block.endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0;

-match_block.utf8 = (re->options & PCRE_UTF8) != 0;

-

-match_block.notbol = (options & PCRE_NOTBOL) != 0;

-match_block.noteol = (options & PCRE_NOTEOL) != 0;

-match_block.notempty = (options & PCRE_NOTEMPTY) != 0;

-match_block.partial = (options & PCRE_PARTIAL) != 0;

-match_block.hitend = FALSE;

-

-match_block.recursive = NULL;                   /* No recursion at top level */

-

-match_block.lcc = tables + lcc_offset;

-match_block.ctypes = tables + ctypes_offset;

-

-/* Partial matching is supported only for a restricted set of regexes at the

-moment. */

-

-if (match_block.partial && (re->options & PCRE_NOPARTIAL) != 0)

-  return PCRE_ERROR_BADPARTIAL;

-

-/* Check a UTF-8 string if required. Unfortunately there's no way of passing

-back the character offset. */

-

-#ifdef SUPPORT_UTF8

-if (match_block.utf8 && (options & PCRE_NO_UTF8_CHECK) == 0)

-  {

-  if (_pcre_valid_utf8((uschar *)subject, length) >= 0)

-    return PCRE_ERROR_BADUTF8;

-  if (start_offset > 0 && start_offset < length)

-    {

-    int tb = ((uschar *)subject)[start_offset];

-    if (tb > 127)

-      {

-      tb &= 0xc0;

-      if (tb != 0 && tb != 0xc0) return PCRE_ERROR_BADUTF8_OFFSET;

-      }

-    }

-  }

-#endif

-

-/* The ims options can vary during the matching as a result of the presence

-of (?ims) items in the pattern. They are kept in a local variable so that

-restoring at the exit of a group is easy. */

-

-ims = re->options & (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL);

-

-/* If the expression has got more back references than the offsets supplied can

-hold, we get a temporary chunk of working store to use during the matching.

-Otherwise, we can use the vector supplied, rounding down its size to a multiple

-of 3. */

-

-ocount = offsetcount - (offsetcount % 3);

-

-if (re->top_backref > 0 && re->top_backref >= ocount/3)

-  {

-  ocount = re->top_backref * 3 + 3;

-  match_block.offset_vector = (int *)(pcre_malloc)(ocount * sizeof(int));

-  if (match_block.offset_vector == NULL) return PCRE_ERROR_NOMEMORY;

-  using_temporary_offsets = TRUE;

-  DPRINTF(("Got memory to hold back references\n"));

-  }

-else match_block.offset_vector = offsets;

-

-match_block.offset_end = ocount;

-match_block.offset_max = (2*ocount)/3;

-match_block.offset_overflow = FALSE;

-match_block.capture_last = -1;

-

-/* Compute the minimum number of offsets that we need to reset each time. Doing

-this makes a huge difference to execution time when there aren't many brackets

-in the pattern. */

-

-resetcount = 2 + re->top_bracket * 2;

-if (resetcount > offsetcount) resetcount = ocount;

-

-/* Reset the working variable associated with each extraction. These should

-never be used unless previously set, but they get saved and restored, and so we

-initialize them to avoid reading uninitialized locations. */

-

-if (match_block.offset_vector != NULL)

-  {

-  register int *iptr = match_block.offset_vector + ocount;

-  register int *iend = iptr - resetcount/2 + 1;

-  while (--iptr >= iend) *iptr = -1;

-  }

-

-/* Set up the first character to match, if available. The first_byte value is

-never set for an anchored regular expression, but the anchoring may be forced

-at run time, so we have to test for anchoring. The first char may be unset for

-an unanchored pattern, of course. If there's no first char and the pattern was

-studied, there may be a bitmap of possible first characters. */

-

-if (!anchored)

-  {

-  if ((re->options & PCRE_FIRSTSET) != 0)

-    {

-    first_byte = re->first_byte & 255;

-    if ((first_byte_caseless = ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)

-      first_byte = match_block.lcc[first_byte];

-    }

-  else

-    if (!startline && study != NULL &&

-      (study->options & PCRE_STUDY_MAPPED) != 0)

-        start_bits = study->start_bits;

-  }

-

-/* For anchored or unanchored matches, there may be a "last known required

-character" set. */

-

-if ((re->options & PCRE_REQCHSET) != 0)

-  {

-  req_byte = re->req_byte & 255;

-  req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;

-  req_byte2 = (tables + fcc_offset)[req_byte];  /* case flipped */

-  }

-

-/* Loop for handling unanchored repeated matching attempts; for anchored regexs

-the loop runs just once. */

-

-do

-  {

-  const uschar *save_end_subject = end_subject;

-

-  /* Reset the maximum number of extractions we might see. */

-

-  if (match_block.offset_vector != NULL)

-    {

-    register int *iptr = match_block.offset_vector;

-    register int *iend = iptr + resetcount;

-    while (iptr < iend) *iptr++ = -1;

-    }

-

-  /* Advance to a unique first char if possible. If firstline is TRUE, the

-  start of the match is constrained to the first line of a multiline string.

-  Implement this by temporarily adjusting end_subject so that we stop scanning

-  at a newline. If the match fails at the newline, later code breaks this loop.

-  */

-

-  if (firstline)

-    {

-    const uschar *t = start_match;

-    while (t < save_end_subject && *t != '\n') t++;

-    end_subject = t;

-    }

-

-  /* Now test for a unique first byte */

-

-  if (first_byte >= 0)

-    {

-    if (first_byte_caseless)

-      while (start_match < end_subject &&

-             match_block.lcc[*start_match] != first_byte)

-        start_match++;

-    else

-      while (start_match < end_subject && *start_match != first_byte)

-        start_match++;

-    }

-

-  /* Or to just after \n for a multiline match if possible */

-

-  else if (startline)

-    {

-    if (start_match > match_block.start_subject + start_offset)

-      {

-      while (start_match < end_subject && start_match[-1] != NEWLINE)

-        start_match++;

-      }

-    }

-

-  /* Or to a non-unique first char after study */

-

-  else if (start_bits != NULL)

-    {

-    while (start_match < end_subject)

-      {

-      register unsigned int c = *start_match;

-      if ((start_bits[c/8] & (1 << (c&7))) == 0) start_match++; else break;

-      }

-    }

-

-  /* Restore fudged end_subject */

-

-  end_subject = save_end_subject;

-

-#ifdef DEBUG  /* Sigh. Some compilers never learn. */

-  printf(">>>> Match against: ");

-  pchars(start_match, end_subject - start_match, TRUE, &match_block);

-  printf("\n");

-#endif

-

-  /* If req_byte is set, we know that that character must appear in the subject

-  for the match to succeed. If the first character is set, req_byte must be

-  later in the subject; otherwise the test starts at the match point. This

-  optimization can save a huge amount of backtracking in patterns with nested

-  unlimited repeats that aren't going to match. Writing separate code for

-  cased/caseless versions makes it go faster, as does using an autoincrement

-  and backing off on a match.

-

-  HOWEVER: when the subject string is very, very long, searching to its end can

-  take a long time, and give bad performance on quite ordinary patterns. This

-  showed up when somebody was matching /^C/ on a 32-megabyte string... so we

-  don't do this when the string is sufficiently long.

-

-  ALSO: this processing is disabled when partial matching is requested.

-  */

-

-  if (req_byte >= 0 &&

-      end_subject - start_match < REQ_BYTE_MAX &&

-      !match_block.partial)

-    {

-    register const uschar *p = start_match + ((first_byte >= 0)? 1 : 0);

-

-    /* We don't need to repeat the search if we haven't yet reached the

-    place we found it at last time. */

-

-    if (p > req_byte_ptr)

-      {

-      if (req_byte_caseless)

-        {

-        while (p < end_subject)

-          {

-          register int pp = *p++;

-          if (pp == req_byte || pp == req_byte2) { p--; break; }

-          }

-        }

-      else

-        {

-        while (p < end_subject)

-          {

-          if (*p++ == req_byte) { p--; break; }

-          }

-        }

-

-      /* If we can't find the required character, break the matching loop */

-

-      if (p >= end_subject) break;

-

-      /* If we have found the required character, save the point where we

-      found it, so that we don't search again next time round the loop if

-      the start hasn't passed this character yet. */

-

-      req_byte_ptr = p;

-      }

-    }

-

-  /* When a match occurs, substrings will be set for all internal extractions;

-  we just need to set up the whole thing as substring 0 before returning. If

-  there were too many extractions, set the return code to zero. In the case

-  where we had to get some local store to hold offsets for backreferences, copy

-  those back references that we can. In this case there need not be overflow

-  if certain parts of the pattern were not used. */

-

-  match_block.start_match = start_match;

-  match_block.match_call_count = 0;

-

-  rc = match(start_match, match_block.start_code, 2, &match_block, ims, NULL,

-    match_isgroup);

-

-  /* When the result is no match, if the subject's first character was a

-  newline and the PCRE_FIRSTLINE option is set, break (which will return

-  PCRE_ERROR_NOMATCH). The option requests that a match occur before the first

-  newline in the subject. Otherwise, advance the pointer to the next character

-  and continue - but the continuation will actually happen only when the

-  pattern is not anchored. */

-

-  if (rc == MATCH_NOMATCH)

-    {

-    if (firstline && *start_match == NEWLINE) break;

-    start_match++;

-#ifdef SUPPORT_UTF8

-    if (match_block.utf8)

-      while(start_match < end_subject && (*start_match & 0xc0) == 0x80)

-        start_match++;

-#endif

-    continue;

-    }

-

-  if (rc != MATCH_MATCH)

-    {

-    DPRINTF((">>>> error: returning %d\n", rc));

-    return rc;

-    }

-

-  /* We have a match! Copy the offset information from temporary store if

-  necessary */

-

-  if (using_temporary_offsets)

-    {

-    if (offsetcount >= 4)

-      {

-      memcpy(offsets + 2, match_block.offset_vector + 2,

-        (offsetcount - 2) * sizeof(int));

-      DPRINTF(("Copied offsets from temporary memory\n"));

-      }

-    if (match_block.end_offset_top > offsetcount)

-      match_block.offset_overflow = TRUE;

-

-    DPRINTF(("Freeing temporary memory\n"));

-    (pcre_free)(match_block.offset_vector);

-    }

-

-  rc = match_block.offset_overflow? 0 : match_block.end_offset_top/2;

-

-  if (offsetcount < 2) rc = 0; else

-    {

-    offsets[0] = start_match - match_block.start_subject;

-    offsets[1] = match_block.end_match_ptr - match_block.start_subject;

-    }

-

-  DPRINTF((">>>> returning %d\n", rc));

-  return rc;

-  }

-

-/* This "while" is the end of the "do" above */

-

-while (!anchored && start_match <= end_subject);

-

-if (using_temporary_offsets)

-  {

-  DPRINTF(("Freeing temporary memory\n"));

-  (pcre_free)(match_block.offset_vector);

-  }

-

-if (match_block.partial && match_block.hitend)

-  {

-  DPRINTF((">>>> returning PCRE_ERROR_PARTIAL\n"));

-  return PCRE_ERROR_PARTIAL;

-  }

-else

-  {

-  DPRINTF((">>>> returning PCRE_ERROR_NOMATCH\n"));

-  return PCRE_ERROR_NOMATCH;

-  }

-}

-

-/* End of pcre_exec.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/*PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_fullinfo(), which returns

-information about a compiled pattern. */

-

-

-

-

-/*************************************************

-*        Return info about compiled pattern      *

-*************************************************/

-

-/* This is a newer "info" function which has an extensible interface so

-that additional items can be added compatibly.

-

-Arguments:

-  argument_re      points to compiled code

-  extra_data       points extra data, or NULL

-  what             what information is required

-  where            where to put the information

-

-Returns:           0 if data returned, negative on error

-*/

-

-EXPORT int

-pcre_fullinfo(const pcre *argument_re, const pcre_extra *extra_data, int what,

-  void *where)

-{

-real_pcre internal_re;

-pcre_study_data internal_study;

-const real_pcre *re = (const real_pcre *)argument_re;

-const pcre_study_data *study = NULL;

-

-if (re == NULL || where == NULL) return PCRE_ERROR_NULL;

-

-if (extra_data != NULL && (extra_data->flags & PCRE_EXTRA_STUDY_DATA) != 0)

-  study = (const pcre_study_data *)extra_data->study_data;

-

-if (re->magic_number != MAGIC_NUMBER)

-  {

-  re = _pcre_try_flipped(re, &internal_re, study, &internal_study);

-  if (re == NULL) return PCRE_ERROR_BADMAGIC;

-  if (study != NULL) study = &internal_study;

-  }

-

-switch (what)

-  {

-  case PCRE_INFO_OPTIONS:

-  *((unsigned long int *)where) = re->options & PUBLIC_OPTIONS;

-  break;

-

-  case PCRE_INFO_SIZE:

-  *((size_t *)where) = re->size;

-  break;

-

-  case PCRE_INFO_STUDYSIZE:

-  *((size_t *)where) = (study == NULL)? 0 : study->size;

-  break;

-

-  case PCRE_INFO_CAPTURECOUNT:

-  *((int *)where) = re->top_bracket;

-  break;

-

-  case PCRE_INFO_BACKREFMAX:

-  *((int *)where) = re->top_backref;

-  break;

-

-  case PCRE_INFO_FIRSTBYTE:

-  *((int *)where) =

-    ((re->options & PCRE_FIRSTSET) != 0)? re->first_byte :

-    ((re->options & PCRE_STARTLINE) != 0)? -1 : -2;

-  break;

-

-  /* Make sure we pass back the pointer to the bit vector in the external

-  block, not the internal copy (with flipped integer fields). */

-

-  case PCRE_INFO_FIRSTTABLE:

-  *((const uschar **)where) =

-    (study != NULL && (study->options & PCRE_STUDY_MAPPED) != 0)?

-      ((const pcre_study_data *)extra_data->study_data)->start_bits : NULL;

-  break;

-

-  case PCRE_INFO_LASTLITERAL:

-  *((int *)where) =

-    ((re->options & PCRE_REQCHSET) != 0)? re->req_byte : -1;

-  break;

-

-  case PCRE_INFO_NAMEENTRYSIZE:

-  *((int *)where) = re->name_entry_size;

-  break;

-

-  case PCRE_INFO_NAMECOUNT:

-  *((int *)where) = re->name_count;

-  break;

-

-  case PCRE_INFO_NAMETABLE:

-  *((const uschar **)where) = (const uschar *)re + re->name_table_offset;

-  break;

-

-  case PCRE_INFO_DEFAULT_TABLES:

-  *((const uschar **)where) = (const uschar *)(_pcre_default_tables);

-  break;

-

-  default: return PCRE_ERROR_BADOPTION;

-  }

-

-return 0;

-}

-

-/* End of pcre_fullinfo.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains some convenience functions for extracting substrings

-from the subject string after a regex match has succeeded. The original idea

-for these functions came from Scott Wimer. */

-

-

-

-

-/*************************************************

-*           Find number for named string         *

-*************************************************/

-

-/* This function is used by the two extraction functions below, as well

-as being generally available.

-

-Arguments:

-  code        the compiled regex

-  stringname  the name whose number is required

-

-Returns:      the number of the named parentheses, or a negative number

-                (PCRE_ERROR_NOSUBSTRING) if not found

-*/

-

-int

-pcre_get_stringnumber(const pcre *code, const char *stringname)

-{

-int rc;

-int entrysize;

-int top, bot;

-uschar *nametable;

-

-if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)

-  return rc;

-if (top <= 0) return PCRE_ERROR_NOSUBSTRING;

-

-if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMEENTRYSIZE, &entrysize)) != 0)

-  return rc;

-if ((rc = pcre_fullinfo(code, NULL, PCRE_INFO_NAMETABLE, &nametable)) != 0)

-  return rc;

-

-bot = 0;

-while (top > bot)

-  {

-  int mid = (top + bot) / 2;

-  uschar *entry = nametable + entrysize*mid;

-  int c = strcmp(stringname, (char *)(entry + 2));

-  if (c == 0) return (entry[0] << 8) + entry[1];

-  if (c > 0) bot = mid + 1; else top = mid;

-  }

-

-return PCRE_ERROR_NOSUBSTRING;

-}

-

-

-

-/*************************************************

-*      Copy captured string to given buffer      *

-*************************************************/

-

-/* This function copies a single captured substring into a given buffer.

-Note that we use memcpy() rather than strncpy() in case there are binary zeros

-in the string.

-

-Arguments:

-  subject        the subject string that was matched

-  ovector        pointer to the offsets table

-  stringcount    the number of substrings that were captured

-                   (i.e. the yield of the pcre_exec call, unless

-                   that was zero, in which case it should be 1/3

-                   of the offset table size)

-  stringnumber   the number of the required substring

-  buffer         where to put the substring

-  size           the size of the buffer

-

-Returns:         if successful:

-                   the length of the copied string, not including the zero

-                   that is put on the end; can be zero

-                 if not successful:

-                   PCRE_ERROR_NOMEMORY (-6) buffer too small

-                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring

-*/

-

-int

-pcre_copy_substring(const char *subject, int *ovector, int stringcount,

-  int stringnumber, char *buffer, int size)

-{

-int yield;

-if (stringnumber < 0 || stringnumber >= stringcount)

-  return PCRE_ERROR_NOSUBSTRING;

-stringnumber *= 2;

-yield = ovector[stringnumber+1] - ovector[stringnumber];

-if (size < yield + 1) return PCRE_ERROR_NOMEMORY;

-memcpy(buffer, subject + ovector[stringnumber], yield);

-buffer[yield] = 0;

-return yield;

-}

-

-

-

-/*************************************************

-*   Copy named captured string to given buffer   *

-*************************************************/

-

-/* This function copies a single captured substring into a given buffer,

-identifying it by name.

-

-Arguments:

-  code           the compiled regex

-  subject        the subject string that was matched

-  ovector        pointer to the offsets table

-  stringcount    the number of substrings that were captured

-                   (i.e. the yield of the pcre_exec call, unless

-                   that was zero, in which case it should be 1/3

-                   of the offset table size)

-  stringname     the name of the required substring

-  buffer         where to put the substring

-  size           the size of the buffer

-

-Returns:         if successful:

-                   the length of the copied string, not including the zero

-                   that is put on the end; can be zero

-                 if not successful:

-                   PCRE_ERROR_NOMEMORY (-6) buffer too small

-                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring

-*/

-

-int

-pcre_copy_named_substring(const pcre *code, const char *subject, int *ovector,

-  int stringcount, const char *stringname, char *buffer, int size)

-{

-int n = pcre_get_stringnumber(code, stringname);

-if (n <= 0) return n;

-return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size);

-}

-

-

-

-/*************************************************

-*      Copy all captured strings to new store    *

-*************************************************/

-

-/* This function gets one chunk of store and builds a list of pointers and all

-of the captured substrings in it. A NULL pointer is put on the end of the list.

-

-Arguments:

-  subject        the subject string that was matched

-  ovector        pointer to the offsets table

-  stringcount    the number of substrings that were captured

-                   (i.e. the yield of the pcre_exec call, unless

-                   that was zero, in which case it should be 1/3

-                   of the offset table size)

-  listptr        set to point to the list of pointers

-

-Returns:         if successful: 0

-                 if not successful:

-                   PCRE_ERROR_NOMEMORY (-6) failed to get store

-*/

-

-int

-pcre_get_substring_list(const char *subject, int *ovector, int stringcount,

-  const char ***listptr)

-{

-int i;

-int size = sizeof(char *);

-int double_count = stringcount * 2;

-char **stringlist;

-char *p;

-

-for (i = 0; i < double_count; i += 2)

-  size += sizeof(char *) + ovector[i+1] - ovector[i] + 1;

-

-stringlist = (char **)(pcre_malloc)(size);

-if (stringlist == NULL) return PCRE_ERROR_NOMEMORY;

-

-*listptr = (const char **)stringlist;

-p = (char *)(stringlist + stringcount + 1);

-

-for (i = 0; i < double_count; i += 2)

-  {

-  int len = ovector[i+1] - ovector[i];

-  memcpy(p, subject + ovector[i], len);

-  *stringlist++ = p;

-  p += len;

-  *p++ = 0;

-  }

-

-*stringlist = NULL;

-return 0;

-}

-

-

-

-/*************************************************

-*   Free store obtained by get_substring_list    *

-*************************************************/

-

-/* This function exists for the benefit of people calling PCRE from non-C

-programs that can call its functions, but not free() or (pcre_free)() directly.

-

-Argument:   the result of a previous pcre_get_substring_list()

-Returns:    nothing

-*/

-

-void

-pcre_free_substring_list(const char **pointer)

-{

-(pcre_free)((void *)pointer);

-}

-

-

-

-/*************************************************

-*      Copy captured string to new store         *

-*************************************************/

-

-/* This function copies a single captured substring into a piece of new

-store

-

-Arguments:

-  subject        the subject string that was matched

-  ovector        pointer to the offsets table

-  stringcount    the number of substrings that were captured

-                   (i.e. the yield of the pcre_exec call, unless

-                   that was zero, in which case it should be 1/3

-                   of the offset table size)

-  stringnumber   the number of the required substring

-  stringptr      where to put a pointer to the substring

-

-Returns:         if successful:

-                   the length of the string, not including the zero that

-                   is put on the end; can be zero

-                 if not successful:

-                   PCRE_ERROR_NOMEMORY (-6) failed to get store

-                   PCRE_ERROR_NOSUBSTRING (-7) substring not present

-*/

-

-int

-pcre_get_substring(const char *subject, int *ovector, int stringcount,

-  int stringnumber, const char **stringptr)

-{

-int yield;

-char *substring;

-if (stringnumber < 0 || stringnumber >= stringcount)

-  return PCRE_ERROR_NOSUBSTRING;

-stringnumber *= 2;

-yield = ovector[stringnumber+1] - ovector[stringnumber];

-substring = (char *)(pcre_malloc)(yield + 1);

-if (substring == NULL) return PCRE_ERROR_NOMEMORY;

-memcpy(substring, subject + ovector[stringnumber], yield);

-substring[yield] = 0;

-*stringptr = substring;

-return yield;

-}

-

-

-

-/*************************************************

-*   Copy named captured string to new store      *

-*************************************************/

-

-/* This function copies a single captured substring, identified by name, into

-new store.

-

-Arguments:

-  code           the compiled regex

-  subject        the subject string that was matched

-  ovector        pointer to the offsets table

-  stringcount    the number of substrings that were captured

-                   (i.e. the yield of the pcre_exec call, unless

-                   that was zero, in which case it should be 1/3

-                   of the offset table size)

-  stringname     the name of the required substring

-  stringptr      where to put the pointer

-

-Returns:         if successful:

-                   the length of the copied string, not including the zero

-                   that is put on the end; can be zero

-                 if not successful:

-                   PCRE_ERROR_NOMEMORY (-6) couldn't get memory

-                   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring

-*/

-

-int

-pcre_get_named_substring(const pcre *code, const char *subject, int *ovector,

-  int stringcount, const char *stringname, const char **stringptr)

-{

-int n = pcre_get_stringnumber(code, stringname);

-if (n <= 0) return n;

-return pcre_get_substring(subject, ovector, stringcount, n, stringptr);

-}

-

-

-

-

-/*************************************************

-*       Free store obtained by get_substring     *

-*************************************************/

-

-/* This function exists for the benefit of people calling PCRE from non-C

-programs that can call its functions, but not free() or (pcre_free)() directly.

-

-Argument:   the result of a previous pcre_get_substring()

-Returns:    nothing

-*/

-

-void

-pcre_free_substring(const char *pointer)

-{

-(pcre_free)((void *)pointer);

-}

-

-/* End of pcre_get.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains global variables that are exported by the PCRE library.

-PCRE is thread-clean and doesn't use any global variables in the normal sense.

-However, it calls memory allocation and freeing functions via the four

-indirections below, and it can optionally do callouts, using the fifth

-indirection. These values can be changed by the caller, but are shared between

-all threads. However, when compiling for Virtual Pascal, things are done

-differently, and global variables are not used (see pcre.in). */

-

-

-

-

-#ifndef VPCOMPAT

-#ifdef __cplusplus

-extern "C" void *(*pcre_malloc)(size_t) = malloc;

-extern "C" void  (*pcre_free)(void *) = free;

-extern "C" void *(*pcre_stack_malloc)(size_t) = malloc;

-extern "C" void  (*pcre_stack_free)(void *) = free;

-extern "C" int   (*pcre_callout)(pcre_callout_block *) = NULL;

-#else

-void *(*pcre_malloc)(size_t) = malloc;

-void  (*pcre_free)(void *) = free;

-void *(*pcre_stack_malloc)(size_t) = malloc;

-void  (*pcre_stack_free)(void *) = free;

-int   (*pcre_callout)(pcre_callout_block *) = NULL;

-#endif

-#endif

-

-/* End of pcre_globals.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_info(), which gives some

-information about a compiled pattern. However, use of this function is now

-deprecated, as it has been superseded by pcre_fullinfo(). */

-

-

-

-

-/*************************************************

-* (Obsolete) Return info about compiled pattern  *

-*************************************************/

-

-/* This is the original "info" function. It picks potentially useful data out

-of the private structure, but its interface was too rigid. It remains for

-backwards compatibility. The public options are passed back in an int - though

-the re->options field has been expanded to a long int, all the public options

-at the low end of it, and so even on 16-bit systems this will still be OK.

-Therefore, I haven't changed the API for pcre_info().

-

-Arguments:

-  argument_re   points to compiled code

-  optptr        where to pass back the options

-  first_byte    where to pass back the first character,

-                or -1 if multiline and all branches start ^,

-                or -2 otherwise

-

-Returns:        number of capturing subpatterns

-                or negative values on error

-*/

-

-EXPORT int

-pcre_info(const pcre *argument_re, int *optptr, int *first_byte)

-{

-real_pcre internal_re;

-const real_pcre *re = (const real_pcre *)argument_re;

-if (re == NULL) return PCRE_ERROR_NULL;

-if (re->magic_number != MAGIC_NUMBER)

-  {

-  re = _pcre_try_flipped(re, &internal_re, NULL, NULL);

-  if (re == NULL) return PCRE_ERROR_BADMAGIC;

-  }

-if (optptr != NULL) *optptr = (int)(re->options & PUBLIC_OPTIONS);

-if (first_byte != NULL)

-  *first_byte = ((re->options & PCRE_FIRSTSET) != 0)? re->first_byte :

-     ((re->options & PCRE_STARTLINE) != 0)? -1 : -2;

-return re->top_bracket;

-}

-

-/* End of pcre_info.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_maketables(), which builds

-character tables for PCRE in the current locale. The file is compiled on its

-own as part of the PCRE library. However, it is also included in the

-compilation of dftables.c, in which case the macro DFTABLES is defined. */

-

-

-#ifndef DFTABLES

-#endif

-

-

-/*************************************************

-*           Create PCRE character tables         *

-*************************************************/

-

-/* This function builds a set of character tables for use by PCRE and returns

-a pointer to them. They are build using the ctype functions, and consequently

-their contents will depend upon the current locale setting. When compiled as

-part of the library, the store is obtained via pcre_malloc(), but when compiled

-inside dftables, use malloc().

-

-Arguments:   none

-Returns:     pointer to the contiguous block of data

-*/

-

-const unsigned char *

-pcre_maketables(void)

-{

-unsigned char *yield, *p;

-int i;

-

-#ifndef DFTABLES

-yield = (unsigned char*)(pcre_malloc)(tables_length);

-#else

-yield = (unsigned char*)malloc(tables_length);

-#endif

-

-if (yield == NULL) return NULL;

-p = yield;

-

-/* First comes the lower casing table */

-

-for (i = 0; i < 256; i++) *p++ = tolower(i);

-

-/* Next the case-flipping table */

-

-for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);

-

-/* Then the character class tables. Don't try to be clever and save effort

-on exclusive ones - in some locales things may be different. Note that the

-table for "space" includes everything "isspace" gives, including VT in the

-default locale. This makes it work for the POSIX class [:space:]. */

-

-memset(p, 0, cbit_length);

-for (i = 0; i < 256; i++)

-  {

-  if (isdigit(i))

-    {

-    p[cbit_digit  + i/8] |= 1 << (i&7);

-    p[cbit_word   + i/8] |= 1 << (i&7);

-    }

-  if (isupper(i))

-    {

-    p[cbit_upper  + i/8] |= 1 << (i&7);

-    p[cbit_word   + i/8] |= 1 << (i&7);

-    }

-  if (islower(i))

-    {

-    p[cbit_lower  + i/8] |= 1 << (i&7);

-    p[cbit_word   + i/8] |= 1 << (i&7);

-    }

-  if (i == '_')   p[cbit_word   + i/8] |= 1 << (i&7);

-  if (isspace(i)) p[cbit_space  + i/8] |= 1 << (i&7);

-  if (isxdigit(i))p[cbit_xdigit + i/8] |= 1 << (i&7);

-  if (isgraph(i)) p[cbit_graph  + i/8] |= 1 << (i&7);

-  if (isprint(i)) p[cbit_print  + i/8] |= 1 << (i&7);

-  if (ispunct(i)) p[cbit_punct  + i/8] |= 1 << (i&7);

-  if (iscntrl(i)) p[cbit_cntrl  + i/8] |= 1 << (i&7);

-  }

-p += cbit_length;

-

-/* Finally, the character type table. In this, we exclude VT from the white

-space chars, because Perl doesn't recognize it as such for \s and for comments

-within regexes. */

-

-for (i = 0; i < 256; i++)

-  {

-  int x = 0;

-  if (i != 0x0b && isspace(i)) x += ctype_space;

-  if (isalpha(i)) x += ctype_letter;

-  if (isdigit(i)) x += ctype_digit;

-  if (isxdigit(i)) x += ctype_xdigit;

-  if (isalnum(i) || i == '_') x += ctype_word;

-

-  /* Note: strchr includes the terminating zero in the characters it considers.

-  In this instance, that is ok because we want binary zero to be flagged as a

-  meta-character, which in this sense is any character that terminates a run

-  of data characters. */

-

-  if (strchr("*+?{^.$|()[", i) != 0) x += ctype_meta; *p++ = x; }

-

-return yield;

-}

-

-/* End of pcre_maketables.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This file contains a private PCRE function that converts an ordinal

-character value into a UTF8 string. */

-

-

-

-

-/*************************************************

-*       Convert character value to UTF-8         *

-*************************************************/

-

-/* This function takes an integer value in the range 0 - 0x7fffffff

-and encodes it as a UTF-8 character in 0 to 6 bytes.

-

-Arguments:

-  cvalue     the character value

-  buffer     pointer to buffer for result - at least 6 bytes long

-

-Returns:     number of characters placed in the buffer

-*/

-

-EXPORT int

-_pcre_ord2utf8(int cvalue, uschar *buffer)

-{

-register int i, j;

-for (i = 0; i < _pcre_utf8_table1_size; i++)

-  if (cvalue <= _pcre_utf8_table1[i]) break;

-buffer += i;

-for (j = i; j > 0; j--)

- {

- *buffer-- = 0x80 | (cvalue & 0x3f);

- cvalue >>= 6;

- }

-*buffer = _pcre_utf8_table2[i] | cvalue;

-return i + 1;

-}

-

-/* End of pcre_ord2utf8.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains an PCRE private debugging function for printing out the

-internal form of a compiled regular expression, along with some supporting

-local functions. */

-

-

-

-

-static const char *OP_names[] = { OP_NAME_LIST };

-

-

-/*************************************************

-*       Print single- or multi-byte character    *

-*************************************************/

-

-static int

-print_char(FILE *f, uschar *ptr, BOOL utf8)

-{

-int c = *ptr;

-

-if (!utf8 || (c & 0xc0) != 0xc0)

-  {

-  if (isprint(c)) fprintf(f, "%c", c); else fprintf(f, "\\x%02x", c);

-  return 0;

-  }

-else

-  {

-  int i;

-  int a = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */

-  int s = 6*a;

-  c = (c & _pcre_utf8_table3[a]) << s;

-  for (i = 1; i <= a; i++)

-    {

-    /* This is a check for malformed UTF-8; it should only occur if the sanity

-    check has been turned off. Rather than swallow random bytes, just stop if

-    we hit a bad one. Print it with \X instead of \x as an indication. */

-

-    if ((ptr[i] & 0xc0) != 0x80)

-      {

-      fprintf(f, "\\X{%x}", c);

-      return i - 1;

-      }

-

-    /* The byte is OK */

-

-    s -= 6;

-    c |= (ptr[i] & 0x3f) << s;

-    }

-  if (c < 128) fprintf(f, "\\x%02x", c); else fprintf(f, "\\x{%x}", c);

-  return a;

-  }

-}

-

-

-

-/*************************************************

-*          Find Unicode property name            *

-*************************************************/

-

-static const char *

-get_ucpname(int property)

-{

-#ifdef SUPPORT_UCP

-int i;

-for (i = _pcre_utt_size; i >= 0; i--)

-  {

-  if (property == _pcre_utt[i].value) break;

-  }

-return (i >= 0)? _pcre_utt[i].name : "??";

-#else

-return "??";

-#endif

-}

-

-

-

-/*************************************************

-*         Print compiled regex                   *

-*************************************************/

-

-/* Make this function work for a regex with integers either byte order.

-However, we assume that what we are passed is a compiled regex. */

-

-EXPORT void

-_pcre_printint(pcre *external_re, FILE *f)

-{

-real_pcre *re = (real_pcre *)external_re;

-uschar *codestart, *code;

-BOOL utf8;

-

-unsigned int options = re->options;

-int offset = re->name_table_offset;

-int count = re->name_count;

-int size = re->name_entry_size;

-

-if (re->magic_number != MAGIC_NUMBER)

-  {

-  offset = ((offset << 8) & 0xff00) | ((offset >> 8) & 0xff);

-  count = ((count << 8) & 0xff00) | ((count >> 8) & 0xff);

-  size = ((size << 8) & 0xff00) | ((size >> 8) & 0xff);

-  options = ((options << 24) & 0xff000000) |

-            ((options <<  8) & 0x00ff0000) |

-            ((options >>  8) & 0x0000ff00) |

-            ((options >> 24) & 0x000000ff);

-  }

-

-code = codestart = (uschar *)re + offset + count * size;

-utf8 = (options & PCRE_UTF8) != 0;

-

-for(;;)

-  {

-  uschar *ccode;

-  int c;

-  int extra = 0;

-

-  fprintf(f, "%3d ", (int)(code - codestart));

-

-  if (*code >= OP_BRA)

-    {

-    if (*code - OP_BRA > EXTRACT_BASIC_MAX)

-      fprintf(f, "%3d Bra extra\n", GET(code, 1));

-    else

-      fprintf(f, "%3d Bra %d\n", GET(code, 1), *code - OP_BRA);

-    code += _pcre_OP_lengths[OP_BRA];

-    continue;

-    }

-

-  switch(*code)

-    {

-    case OP_END:

-    fprintf(f, "    %s\n", OP_names[*code]);

-    fprintf(f, "------------------------------------------------------------------\n");

-    return;

-

-    case OP_OPT:

-    fprintf(f, " %.2x %s", code[1], OP_names[*code]);

-    break;

-

-    case OP_CHAR:

-      {

-      fprintf(f, "    ");

-      do

-        {

-        code++;

-        code += 1 + print_char(f, code, utf8);

-        }

-      while (*code == OP_CHAR);

-      fprintf(f, "\n");

-      continue;

-      }

-    break;

-

-    case OP_CHARNC:

-      {

-      fprintf(f, " NC ");

-      do

-        {

-        code++;

-        code += 1 + print_char(f, code, utf8);

-        }

-      while (*code == OP_CHARNC);

-      fprintf(f, "\n");

-      continue;

-      }

-    break;

-

-    case OP_KETRMAX:

-    case OP_KETRMIN:

-    case OP_ALT:

-    case OP_KET:

-    case OP_ASSERT:

-    case OP_ASSERT_NOT:

-    case OP_ASSERTBACK:

-    case OP_ASSERTBACK_NOT:

-    case OP_ONCE:

-    case OP_COND:

-    case OP_REVERSE:

-    fprintf(f, "%3d %s", GET(code, 1), OP_names[*code]);

-    break;

-

-    case OP_BRANUMBER:

-    printf("%3d %s", GET2(code, 1), OP_names[*code]);

-    break;

-

-    case OP_CREF:

-    if (GET2(code, 1) == CREF_RECURSE)

-      fprintf(f, "    Cond recurse");

-    else

-      fprintf(f, "%3d %s", GET2(code,1), OP_names[*code]);

-    break;

-

-    case OP_STAR:

-    case OP_MINSTAR:

-    case OP_PLUS:

-    case OP_MINPLUS:

-    case OP_QUERY:

-    case OP_MINQUERY:

-    case OP_TYPESTAR:

-    case OP_TYPEMINSTAR:

-    case OP_TYPEPLUS:

-    case OP_TYPEMINPLUS:

-    case OP_TYPEQUERY:

-    case OP_TYPEMINQUERY:

-    fprintf(f, "    ");

-    if (*code >= OP_TYPESTAR)

-      {

-      fprintf(f, "%s", OP_names[code[1]]);

-      if (code[1] == OP_PROP || code[1] == OP_NOTPROP)

-        {

-        fprintf(f, " %s ", get_ucpname(code[2]));

-        extra = 1;

-        }

-      }

-    else extra = print_char(f, code+1, utf8);

-    fprintf(f, "%s", OP_names[*code]);

-    break;

-

-    case OP_EXACT:

-    case OP_UPTO:

-    case OP_MINUPTO:

-    fprintf(f, "    ");

-    extra = print_char(f, code+3, utf8);

-    fprintf(f, "{");

-    if (*code != OP_EXACT) fprintf(f, ",");

-    fprintf(f, "%d}", GET2(code,1));

-    if (*code == OP_MINUPTO) fprintf(f, "?");

-    break;

-

-    case OP_TYPEEXACT:

-    case OP_TYPEUPTO:

-    case OP_TYPEMINUPTO:

-    fprintf(f, "    %s", OP_names[code[3]]);

-    if (code[3] == OP_PROP || code[3] == OP_NOTPROP)

-      {

-      fprintf(f, " %s ", get_ucpname(code[4]));

-      extra = 1;

-      }

-    fprintf(f, "{");

-    if (*code != OP_TYPEEXACT) fprintf(f, "0,");

-    fprintf(f, "%d}", GET2(code,1));

-    if (*code == OP_TYPEMINUPTO) fprintf(f, "?");

-    break;

-

-    case OP_NOT:

-    if (isprint(c = code[1])) fprintf(f, "    [^%c]", c);

-      else fprintf(f, "    [^\\x%02x]", c);

-    break;

-

-    case OP_NOTSTAR:

-    case OP_NOTMINSTAR:

-    case OP_NOTPLUS:

-    case OP_NOTMINPLUS:

-    case OP_NOTQUERY:

-    case OP_NOTMINQUERY:

-    if (isprint(c = code[1])) fprintf(f, "    [^%c]", c);

-      else fprintf(f, "    [^\\x%02x]", c);

-    fprintf(f, "%s", OP_names[*code]);

-    break;

-

-    case OP_NOTEXACT:

-    case OP_NOTUPTO:

-    case OP_NOTMINUPTO:

-    if (isprint(c = code[3])) fprintf(f, "    [^%c]{", c);

-      else fprintf(f, "    [^\\x%02x]{", c);

-    if (*code != OP_NOTEXACT) fprintf(f, "0,");

-    fprintf(f, "%d}", GET2(code,1));

-    if (*code == OP_NOTMINUPTO) fprintf(f, "?");

-    break;

-

-    case OP_RECURSE:

-    fprintf(f, "%3d %s", GET(code, 1), OP_names[*code]);

-    break;

-

-    case OP_REF:

-    fprintf(f, "    \\%d", GET2(code,1));

-    ccode = code + _pcre_OP_lengths[*code];

-    goto CLASS_REF_REPEAT;

-

-    case OP_CALLOUT:

-    fprintf(f, "    %s %d %d %d", OP_names[*code], code[1], GET(code,2),

-      GET(code, 2 + LINK_SIZE));

-    break;

-

-    case OP_PROP:

-    case OP_NOTPROP:

-    fprintf(f, "    %s %s", OP_names[*code], get_ucpname(code[1]));

-    break;

-

-    /* OP_XCLASS can only occur in UTF-8 mode. However, there's no harm in

-    having this code always here, and it makes it less messy without all those

-    #ifdefs. */

-

-    case OP_CLASS:

-    case OP_NCLASS:

-    case OP_XCLASS:

-      {

-      int i, min, max;

-      BOOL printmap;

-

-      fprintf(f, "    [");

-

-      if (*code == OP_XCLASS)

-        {

-        extra = GET(code, 1);

-        ccode = code + LINK_SIZE + 1;

-        printmap = (*ccode & XCL_MAP) != 0;

-        if ((*ccode++ & XCL_NOT) != 0) fprintf(f, "^");

-        }

-      else

-        {

-        printmap = TRUE;

-        ccode = code + 1;

-        }

-

-      /* Print a bit map */

-

-      if (printmap)

-        {

-        for (i = 0; i < 256; i++)

-          {

-          if ((ccode[i/8] & (1 << (i&7))) != 0)

-            {

-            int j;

-            for (j = i+1; j < 256; j++)

-              if ((ccode[j/8] & (1 << (j&7))) == 0) break;

-            if (i == '-' || i == ']') fprintf(f, "\\");

-            if (isprint(i)) fprintf(f, "%c", i); else fprintf(f, "\\x%02x", i);

-            if (--j > i)

-              {

-              if (j != i + 1) fprintf(f, "-");

-              if (j == '-' || j == ']') fprintf(f, "\\");

-              if (isprint(j)) fprintf(f, "%c", j); else fprintf(f, "\\x%02x", j);

-              }

-            i = j;

-            }

-          }

-        ccode += 32;

-        }

-

-      /* For an XCLASS there is always some additional data */

-

-      if (*code == OP_XCLASS)

-        {

-        int ch;

-        while ((ch = *ccode++) != XCL_END)

-          {

-          if (ch == XCL_PROP)

-            {

-            fprintf(f, "\\p{%s}", get_ucpname(*ccode++));

-            }

-          else if (ch == XCL_NOTPROP)

-            {

-            fprintf(f, "\\P{%s}", get_ucpname(*ccode++));

-            }

-          else

-            {

-            ccode += 1 + print_char(f, ccode, TRUE);

-            if (ch == XCL_RANGE)

-              {

-              fprintf(f, "-");

-              ccode += 1 + print_char(f, ccode, TRUE);

-              }

-            }

-          }

-        }

-

-      /* Indicate a non-UTF8 class which was created by negation */

-

-      fprintf(f, "]%s", (*code == OP_NCLASS)? " (neg)" : "");

-

-      /* Handle repeats after a class or a back reference */

-

-      CLASS_REF_REPEAT:

-      switch(*ccode)

-        {

-        case OP_CRSTAR:

-        case OP_CRMINSTAR:

-        case OP_CRPLUS:

-        case OP_CRMINPLUS:

-        case OP_CRQUERY:

-        case OP_CRMINQUERY:

-        fprintf(f, "%s", OP_names[*ccode]);

-        extra += _pcre_OP_lengths[*ccode];

-        break;

-

-        case OP_CRRANGE:

-        case OP_CRMINRANGE:

-        min = GET2(ccode,1);

-        max = GET2(ccode,3);

-        if (max == 0) fprintf(f, "{%d,}", min);

-        else fprintf(f, "{%d,%d}", min, max);

-        if (*ccode == OP_CRMINRANGE) fprintf(f, "?");

-        extra += _pcre_OP_lengths[*ccode];

-        break;

-        }

-      }

-    break;

-

-    /* Anything else is just an item with no data*/

-

-    default:

-    fprintf(f, "    %s", OP_names[*code]);

-    break;

-    }

-

-  code += _pcre_OP_lengths[*code] + extra;

-  fprintf(f, "\n");

-  }

-}

-

-/* End of pcre_printint.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_refcount(), which is an

-auxiliary function that can be used to maintain a reference count in a compiled

-pattern data block. This might be helpful in applications where the block is

-shared by different users. */

-

-

-

-/*************************************************

-*           Maintain reference count             *

-*************************************************/

-

-/* The reference count is a 16-bit field, initialized to zero. It is not

-possible to transfer a non-zero count from one host to a different host that

-has a different byte order - though I can't see why anyone in their right mind

-would ever want to do that!

-

-Arguments:

-  argument_re   points to compiled code

-  adjust        value to add to the count

-

-Returns:        the (possibly updated) count value (a non-negative number), or

-                a negative error number

-*/

-

-EXPORT int

-pcre_refcount(pcre *argument_re, int adjust)

-{

-real_pcre *re = (real_pcre *)argument_re;

-if (re == NULL) return PCRE_ERROR_NULL;

-re->ref_count = (-adjust > re->ref_count)? 0 :

-                (adjust + re->ref_count > 65535)? 65535 :

-                re->ref_count + adjust;

-return re->ref_count;

-}

-

-/* End of pcre_refcount.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_study(), along with local

-supporting functions. */

-

-

-

-

-/*************************************************

-*      Set a bit and maybe its alternate case    *

-*************************************************/

-

-/* Given a character, set its bit in the table, and also the bit for the other

-version of a letter if we are caseless.

-

-Arguments:

-  start_bits    points to the bit map

-  c             is the character

-  caseless      the caseless flag

-  cd            the block with char table pointers

-

-Returns:        nothing

-*/

-

-static void

-set_bit(uschar *start_bits, unsigned int c, BOOL caseless, compile_data *cd)

-{

-start_bits[c/8] |= (1 << (c&7));

-if (caseless && (cd->ctypes[c] & ctype_letter) != 0)

-  start_bits[cd->fcc[c]/8] |= (1 << (cd->fcc[c]&7));

-}

-

-

-

-/*************************************************

-*          Create bitmap of starting chars       *

-*************************************************/

-

-/* This function scans a compiled unanchored expression and attempts to build a

-bitmap of the set of initial characters. If it can't, it returns FALSE. As time

-goes by, we may be able to get more clever at doing this.

-

-Arguments:

-  code         points to an expression

-  start_bits   points to a 32-byte table, initialized to 0

-  caseless     the current state of the caseless flag

-  utf8         TRUE if in UTF-8 mode

-  cd           the block with char table pointers

-

-Returns:       TRUE if table built, FALSE otherwise

-*/

-

-static BOOL

-set_start_bits(const uschar *code, uschar *start_bits, BOOL caseless,

-  BOOL utf8, compile_data *cd)

-{

-register int c;

-

-/* This next statement and the later reference to dummy are here in order to

-trick the optimizer of the IBM C compiler for OS/2 into generating correct

-code. Apparently IBM isn't going to fix the problem, and we would rather not

-disable optimization (in this module it actually makes a big difference, and

-the pcre module can use all the optimization it can get). */

-

-volatile int dummy;

-

-do

-  {

-  const uschar *tcode = code + 1 + LINK_SIZE;

-  BOOL try_next = TRUE;

-

-  while (try_next)

-    {

-    /* If a branch starts with a bracket or a positive lookahead assertion,

-    recurse to set bits from within them. That's all for this branch. */

-

-    if ((int)*tcode >= OP_BRA || *tcode == OP_ASSERT)

-      {

-      if (!set_start_bits(tcode, start_bits, caseless, utf8, cd))

-        return FALSE;

-      try_next = FALSE;

-      }

-

-    else switch(*tcode)

-      {

-      default:

-      return FALSE;

-

-      /* Skip over callout */

-

-      case OP_CALLOUT:

-      tcode += 2 + 2*LINK_SIZE;

-      break;

-

-      /* Skip over extended extraction bracket number */

-

-      case OP_BRANUMBER:

-      tcode += 3;

-      break;

-

-      /* Skip over lookbehind and negative lookahead assertions */

-

-      case OP_ASSERT_NOT:

-      case OP_ASSERTBACK:

-      case OP_ASSERTBACK_NOT:

-      do tcode += GET(tcode, 1); while (*tcode == OP_ALT);

-      tcode += 1+LINK_SIZE;

-      break;

-

-      /* Skip over an option setting, changing the caseless flag */

-

-      case OP_OPT:

-      caseless = (tcode[1] & PCRE_CASELESS) != 0;

-      tcode += 2;

-      break;

-

-      /* BRAZERO does the bracket, but carries on. */

-

-      case OP_BRAZERO:

-      case OP_BRAMINZERO:

-      if (!set_start_bits(++tcode, start_bits, caseless, utf8, cd))

-        return FALSE;

-      dummy = 1;

-      do tcode += GET(tcode,1); while (*tcode == OP_ALT);

-      tcode += 1+LINK_SIZE;

-      break;

-

-      /* Single-char * or ? sets the bit and tries the next item */

-

-      case OP_STAR:

-      case OP_MINSTAR:

-      case OP_QUERY:

-      case OP_MINQUERY:

-      set_bit(start_bits, tcode[1], caseless, cd);

-      tcode += 2;

-#ifdef SUPPORT_UTF8

-      if (utf8) while ((*tcode & 0xc0) == 0x80) tcode++;

-#endif

-      break;

-

-      /* Single-char upto sets the bit and tries the next */

-

-      case OP_UPTO:

-      case OP_MINUPTO:

-      set_bit(start_bits, tcode[3], caseless, cd);

-      tcode += 4;

-#ifdef SUPPORT_UTF8

-      if (utf8) while ((*tcode & 0xc0) == 0x80) tcode++;

-#endif

-      break;

-

-      /* At least one single char sets the bit and stops */

-

-      case OP_EXACT:       /* Fall through */

-      tcode += 2;

-

-      case OP_CHAR:

-      case OP_CHARNC:

-      case OP_PLUS:

-      case OP_MINPLUS:

-      set_bit(start_bits, tcode[1], caseless, cd);

-      try_next = FALSE;

-      break;

-

-      /* Single character type sets the bits and stops */

-

-      case OP_NOT_DIGIT:

-      for (c = 0; c < 32; c++)

-        start_bits[c] |= ~cd->cbits[c+cbit_digit];

-      try_next = FALSE;

-      break;

-

-      case OP_DIGIT:

-      for (c = 0; c < 32; c++)

-        start_bits[c] |= cd->cbits[c+cbit_digit];

-      try_next = FALSE;

-      break;

-

-      case OP_NOT_WHITESPACE:

-      for (c = 0; c < 32; c++)

-        start_bits[c] |= ~cd->cbits[c+cbit_space];

-      try_next = FALSE;

-      break;

-

-      case OP_WHITESPACE:

-      for (c = 0; c < 32; c++)

-        start_bits[c] |= cd->cbits[c+cbit_space];

-      try_next = FALSE;

-      break;

-

-      case OP_NOT_WORDCHAR:

-      for (c = 0; c < 32; c++)

-        start_bits[c] |= ~cd->cbits[c+cbit_word];

-      try_next = FALSE;

-      break;

-

-      case OP_WORDCHAR:

-      for (c = 0; c < 32; c++)

-        start_bits[c] |= cd->cbits[c+cbit_word];

-      try_next = FALSE;

-      break;

-

-      /* One or more character type fudges the pointer and restarts, knowing

-      it will hit a single character type and stop there. */

-

-      case OP_TYPEPLUS:

-      case OP_TYPEMINPLUS:

-      tcode++;

-      break;

-

-      case OP_TYPEEXACT:

-      tcode += 3;

-      break;

-

-      /* Zero or more repeats of character types set the bits and then

-      try again. */

-

-      case OP_TYPEUPTO:

-      case OP_TYPEMINUPTO:

-      tcode += 2;               /* Fall through */

-

-      case OP_TYPESTAR:

-      case OP_TYPEMINSTAR:

-      case OP_TYPEQUERY:

-      case OP_TYPEMINQUERY:

-      switch(tcode[1])

-        {

-        case OP_ANY:

-        return FALSE;

-

-        case OP_NOT_DIGIT:

-        for (c = 0; c < 32; c++)

-          start_bits[c] |= ~cd->cbits[c+cbit_digit];

-        break;

-

-        case OP_DIGIT:

-        for (c = 0; c < 32; c++)

-          start_bits[c] |= cd->cbits[c+cbit_digit];

-        break;

-

-        case OP_NOT_WHITESPACE:

-        for (c = 0; c < 32; c++)

-          start_bits[c] |= ~cd->cbits[c+cbit_space];

-        break;

-

-        case OP_WHITESPACE:

-        for (c = 0; c < 32; c++)

-          start_bits[c] |= cd->cbits[c+cbit_space];

-        break;

-

-        case OP_NOT_WORDCHAR:

-        for (c = 0; c < 32; c++)

-          start_bits[c] |= ~cd->cbits[c+cbit_word];

-        break;

-

-        case OP_WORDCHAR:

-        for (c = 0; c < 32; c++)

-          start_bits[c] |= cd->cbits[c+cbit_word];

-        break;

-        }

-

-      tcode += 2;

-      break;

-

-      /* Character class where all the information is in a bit map: set the

-      bits and either carry on or not, according to the repeat count. If it was

-      a negative class, and we are operating with UTF-8 characters, any byte

-      with a value >= 0xc4 is a potentially valid starter because it starts a

-      character with a value > 255. */

-

-      case OP_NCLASS:

-      if (utf8)

-        {

-        start_bits[24] |= 0xf0;              /* Bits for 0xc4 - 0xc8 */

-        memset(start_bits+25, 0xff, 7);      /* Bits for 0xc9 - 0xff */

-        }

-      /* Fall through */

-

-      case OP_CLASS:

-        {

-        tcode++;

-

-        /* In UTF-8 mode, the bits in a bit map correspond to character

-        values, not to byte values. However, the bit map we are constructing is

-        for byte values. So we have to do a conversion for characters whose

-        value is > 127. In fact, there are only two possible starting bytes for

-        characters in the range 128 - 255. */

-

-        if (utf8)

-          {

-          for (c = 0; c < 16; c++) start_bits[c] |= tcode[c];

-          for (c = 128; c < 256; c++)

-            {

-            if ((tcode[c/8] && (1 << (c&7))) != 0)

-              {

-              int d = (c >> 6) | 0xc0;            /* Set bit for this starter */

-              start_bits[d/8] |= (1 << (d&7));    /* and then skip on to the */

-              c = (c & 0xc0) + 0x40 - 1;          /* next relevant character. */

-              }

-            }

-          }

-

-        /* In non-UTF-8 mode, the two bit maps are completely compatible. */

-

-        else

-          {

-          for (c = 0; c < 32; c++) start_bits[c] |= tcode[c];

-          }

-

-        /* Advance past the bit map, and act on what follows */

-

-        tcode += 32;

-        switch (*tcode)

-          {

-          case OP_CRSTAR:

-          case OP_CRMINSTAR:

-          case OP_CRQUERY:

-          case OP_CRMINQUERY:

-          tcode++;

-          break;

-

-          case OP_CRRANGE:

-          case OP_CRMINRANGE:

-          if (((tcode[1] << 8) + tcode[2]) == 0) tcode += 5;

-            else try_next = FALSE;

-          break;

-

-          default:

-          try_next = FALSE;

-          break;

-          }

-        }

-      break; /* End of bitmap class handling */

-

-      }      /* End of switch */

-    }        /* End of try_next loop */

-

-  code += GET(code, 1);   /* Advance to next branch */

-  }

-while (*code == OP_ALT);

-return TRUE;

-}

-

-

-

-/*************************************************

-*          Study a compiled expression           *

-*************************************************/

-

-/* This function is handed a compiled expression that it must study to produce

-information that will speed up the matching. It returns a pcre_extra block

-which then gets handed back to pcre_exec().

-

-Arguments:

-  re        points to the compiled expression

-  options   contains option bits

-  errorptr  points to where to place error messages;

-            set NULL unless error

-

-Returns:    pointer to a pcre_extra block, with study_data filled in and the

-              appropriate flag set;

-            NULL on error or if no optimization possible

-*/

-

-EXPORT pcre_extra *

-pcre_study(const pcre *external_re, int options, const char **errorptr)

-{

-uschar start_bits[32];

-pcre_extra *extra;

-pcre_study_data *study;

-const uschar *tables;

-const real_pcre *re = (const real_pcre *)external_re;

-uschar *code = (uschar *)re + re->name_table_offset +

-  (re->name_count * re->name_entry_size);

-compile_data compile_block;

-

-*errorptr = NULL;

-

-if (re == NULL || re->magic_number != MAGIC_NUMBER)

-  {

-  *errorptr = "argument is not a compiled regular expression";

-  return NULL;

-  }

-

-if ((options & ~PUBLIC_STUDY_OPTIONS) != 0)

-  {

-  *errorptr = "unknown or incorrect option bit(s) set";

-  return NULL;

-  }

-

-/* For an anchored pattern, or an unanchored pattern that has a first char, or

-a multiline pattern that matches only at "line starts", no further processing

-at present. */

-

-if ((re->options & (PCRE_ANCHORED|PCRE_FIRSTSET|PCRE_STARTLINE)) != 0)

-  return NULL;

-

-/* Set the character tables in the block that is passed around */

-

-tables = re->tables;

-if (tables == NULL)

-  (void)pcre_fullinfo(external_re, NULL, PCRE_INFO_DEFAULT_TABLES,

-  (void *)(&tables));

-

-compile_block.lcc = tables + lcc_offset;

-compile_block.fcc = tables + fcc_offset;

-compile_block.cbits = tables + cbits_offset;

-compile_block.ctypes = tables + ctypes_offset;

-

-/* See if we can find a fixed set of initial characters for the pattern. */

-

-memset(start_bits, 0, 32 * sizeof(uschar));

-if (!set_start_bits(code, start_bits, (re->options & PCRE_CASELESS) != 0,

-  (re->options & PCRE_UTF8) != 0, &compile_block)) return NULL;

-

-/* Get a pcre_extra block and a pcre_study_data block. The study data is put in

-the latter, which is pointed to by the former, which may also get additional

-data set later by the calling program. At the moment, the size of

-pcre_study_data is fixed. We nevertheless save it in a field for returning via

-the pcre_fullinfo() function so that if it becomes variable in the future, we

-don't have to change that code. */

-

-extra = (pcre_extra *)(pcre_malloc)

-  (sizeof(pcre_extra) + sizeof(pcre_study_data));

-

-if (extra == NULL)

-  {

-  *errorptr = "failed to get memory";

-  return NULL;

-  }

-

-study = (pcre_study_data *)((char *)extra + sizeof(pcre_extra));

-extra->flags = PCRE_EXTRA_STUDY_DATA;

-extra->study_data = study;

-

-study->size = sizeof(pcre_study_data);

-study->options = PCRE_STUDY_MAPPED;

-memcpy(study->start_bits, start_bits, sizeof(start_bits));

-

-return extra;

-}

-

-/* End of pcre_study.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains some fixed tables that are used by more than one of the

-PCRE code modules. */

-

-

-

-

-/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that

-the definition is next to the definition of the opcodes in internal.h. */

-

-const uschar _pcre_OP_lengths[] = { OP_LENGTHS };

-

-

-

-/*************************************************

-*           Tables for UTF-8 support             *

-*************************************************/

-

-/* These are the breakpoints for different numbers of bytes in a UTF-8

-character. */

-

-const int _pcre_utf8_table1[] =

-  { 0x7f, 0x7ff, 0xffff, 0x1fffff, 0x3ffffff, 0x7fffffff};

-

-const int _pcre_utf8_table1_size = sizeof(_pcre_utf8_table1)/sizeof(int);

-

-/* These are the indicator bits and the mask for the data bits to set in the

-first byte of a character, indexed by the number of additional bytes. */

-

-const int _pcre_utf8_table2[] = { 0,    0xc0, 0xe0, 0xf0, 0xf8, 0xfc};

-const int _pcre_utf8_table3[] = { 0xff, 0x1f, 0x0f, 0x07, 0x03, 0x01};

-

-/* Table of the number of extra characters, indexed by the first character

-masked with 0x3f. The highest number for a valid UTF-8 character is in fact

-0x3d. */

-

-const uschar _pcre_utf8_table4[] = {

-  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

-  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,

-  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,

-  3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 };

-

-/* This table translates Unicode property names into code values for the

-ucp_findchar() function. It is used by pcretest as well as by the library

-functions. */

-

-const ucp_type_table _pcre_utt[] = {

-  { "C",  128 + ucp_C },

-  { "Cc", ucp_Cc },

-  { "Cf", ucp_Cf },

-  { "Cn", ucp_Cn },

-  { "Co", ucp_Co },

-  { "Cs", ucp_Cs },

-  { "L",  128 + ucp_L },

-  { "Ll", ucp_Ll },

-  { "Lm", ucp_Lm },

-  { "Lo", ucp_Lo },

-  { "Lt", ucp_Lt },

-  { "Lu", ucp_Lu },

-  { "M",  128 + ucp_M },

-  { "Mc", ucp_Mc },

-  { "Me", ucp_Me },

-  { "Mn", ucp_Mn },

-  { "N",  128 + ucp_N },

-  { "Nd", ucp_Nd },

-  { "Nl", ucp_Nl },

-  { "No", ucp_No },

-  { "P",  128 + ucp_P },

-  { "Pc", ucp_Pc },

-  { "Pd", ucp_Pd },

-  { "Pe", ucp_Pe },

-  { "Pf", ucp_Pf },

-  { "Pi", ucp_Pi },

-  { "Po", ucp_Po },

-  { "Ps", ucp_Ps },

-  { "S",  128 + ucp_S },

-  { "Sc", ucp_Sc },

-  { "Sk", ucp_Sk },

-  { "Sm", ucp_Sm },

-  { "So", ucp_So },

-  { "Z",  128 + ucp_Z },

-  { "Zl", ucp_Zl },

-  { "Zp", ucp_Zp },

-  { "Zs", ucp_Zs }

-};

-

-const int _pcre_utt_size = sizeof(_pcre_utt)/sizeof(ucp_type_table);

-

-/* End of pcre_tables.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains an internal function that tests a compiled pattern to

-see if it was compiled with the opposite endianness. If so, it uses an

-auxiliary local function to flip the appropriate bytes. */

-

-

-

-

-/*************************************************

-*         Flip bytes in an integer               *

-*************************************************/

-

-/* This function is called when the magic number in a regex doesn't match, in

-order to flip its bytes to see if we are dealing with a pattern that was

-compiled on a host of different endianness. If so, this function is used to

-flip other byte values.

-

-Arguments:

-  value        the number to flip

-  n            the number of bytes to flip (assumed to be 2 or 4)

-

-Returns:       the flipped value

-*/

-

-static long int

-byteflip(long int value, int n)

-{

-if (n == 2) return ((value & 0x00ff) << 8) | ((value & 0xff00) >> 8);

-return ((value & 0x000000ff) << 24) |

-       ((value & 0x0000ff00) <<  8) |

-       ((value & 0x00ff0000) >>  8) |

-       ((value & 0xff000000) >> 24);

-}

-

-

-

-/*************************************************

-*       Test for a byte-flipped compiled regex   *

-*************************************************/

-

-/* This function is called from pcre_exec(), pcre_dfa_exec(), and also from

-pcre_fullinfo(). Its job is to test whether the regex is byte-flipped - that

-is, it was compiled on a system of opposite endianness. The function is called

-only when the native MAGIC_NUMBER test fails. If the regex is indeed flipped,

-we flip all the relevant values into a different data block, and return it.

-

-Arguments:

-  re               points to the regex

-  study            points to study data, or NULL

-  internal_re      points to a new regex block

-  internal_study   points to a new study block

-

-Returns:           the new block if is is indeed a byte-flipped regex

-                   NULL if it is not

-*/

-

-EXPORT real_pcre *

-_pcre_try_flipped(const real_pcre *re, real_pcre *internal_re,

-  const pcre_study_data *study, pcre_study_data *internal_study)

-{

-if (byteflip(re->magic_number, sizeof(re->magic_number)) != MAGIC_NUMBER)

-  return NULL;

-

-*internal_re = *re;           /* To copy other fields */

-internal_re->size = byteflip(re->size, sizeof(re->size));

-internal_re->options = byteflip(re->options, sizeof(re->options));

-internal_re->top_bracket =

-  (pcre_uint16)byteflip(re->top_bracket, sizeof(re->top_bracket));

-internal_re->top_backref =

-  (pcre_uint16)byteflip(re->top_backref, sizeof(re->top_backref));

-internal_re->first_byte =

-  (pcre_uint16)byteflip(re->first_byte, sizeof(re->first_byte));

-internal_re->req_byte =

-  (pcre_uint16)byteflip(re->req_byte, sizeof(re->req_byte));

-internal_re->name_table_offset =

-  (pcre_uint16)byteflip(re->name_table_offset, sizeof(re->name_table_offset));

-internal_re->name_entry_size =

-  (pcre_uint16)byteflip(re->name_entry_size, sizeof(re->name_entry_size));

-internal_re->name_count =

-  (pcre_uint16)byteflip(re->name_count, sizeof(re->name_count));

-

-if (study != NULL)

-  {

-  *internal_study = *study;   /* To copy other fields */

-  internal_study->size = byteflip(study->size, sizeof(study->size));

-  internal_study->options = byteflip(study->options, sizeof(study->options));

-  }

-

-return internal_re;

-}

-

-/* End of pcre_tryflipped.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module compiles code for supporting the use of Unicode character

-properties. We use the (embryonic at the time of writing) UCP library, by

-including some of its files, copies of which have been put in the PCRE

-distribution. There is a macro in pcre_internal.h that changes the name

-ucp_findchar into _pcre_ucp_findchar. */

-

-

-

-/*************************************************

-*     libucp - Unicode Property Table handler    *

-*************************************************/

-

-/* Copyright (c) University of Cambridge 2004 */

-

-/* This little library provides a fast way of obtaining the basic Unicode

-properties of a character, using a compact binary tree that occupies less than

-100K bytes.

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/*************************************************

-*     libucp - Unicode Property Table handler    *

-*************************************************/

-

-/* Internal header file defining the layout of compact nodes in the tree. */

-

-typedef struct cnode {

-  unsigned short int f0;

-  unsigned short int f1;

-  unsigned short int f2;

-} cnode;

-

-/* Things for the f0 field */

-

-#define f0_leftexists   0x8000    /* Left child exists */

-#define f0_typemask     0x3f00    /* Type bits */

-#define f0_typeshift         8    /* Type shift */

-#define f0_chhmask      0x00ff    /* Character high bits */

-

-/* Things for the f2 field */

-

-#define f2_rightmask    0xf000    /* Mask for right offset bits */

-#define f2_rightshift       12    /* Shift for right offset */

-#define f2_casemask     0x0fff    /* Mask for case offset */

-

-/* The tree consists of a vector of structures of type cnode, with the root

-node as the first element. The three short ints (16-bits) are used as follows:

-

-(f0) (1) The 0x8000 bit of f0 is set if a left child exists. The child's node

-         is the next node in the vector.

-     (2) The 0x4000 bits of f0 is spare.

-     (3) The 0x3f00 bits of f0 contain the character type; this is a number

-         defined by the enumeration in ucp.h (e.g. ucp_Lu).

-     (4) The bottom 8 bits of f0 contain the most significant byte of the

-         character's 24-bit codepoint.

-

-(f1) (1) The f1 field contains the two least significant bytes of the

-         codepoint.

-

-(f2) (1) The 0xf000 bits of f2 contain zero if there is no right child of this

-         node. Otherwise, they contain one plus the exponent of the power of

-         two of the offset to the right node (e.g. a value of 3 means 8). The

-         units of the offset are node items.

-

-     (2) The 0x0fff bits of f2 contain the signed offset from this character to

-         its alternate cased value. They are zero if there is no such

-         character.

-

-

------------------------------------------------------------------------------

-||.|.| type (6) | ms char (8) ||  ls char (16)  ||....|  case offset (12)  ||

------------------------------------------------------------------------------

-  | |                                              |

-  | |-> spare                                      |

-  |                                        exponent of right

-  |-> left child exists                       child offset

-

-

-The upper/lower casing information is set only for characters that come in

-pairs. There are (at present) four non-one-to-one mappings in the Unicode data.

-These are ignored. They are:

-

-  1FBE Greek Prosgegrammeni (lower, with upper -> capital iota)

-  2126 Ohm

-  212A Kelvin

-  212B Angstrom

-

-Certainly for the last three, having an alternate case would seem to be a

-mistake. I don't know any Greek, so cannot comment on the first one.

-

-

-When searching the tree, proceed as follows:

-

-(1) Start at the first node.

-

-(2) Extract the character value from f1 and the bottom 8 bits of f0;

-

-(3) Compare with the character being sought. If equal, we are done.

-

-(4) If the test character is smaller, inspect the f0_leftexists flag. If it is

-    not set, the character is not in the tree. If it is set, move to the next

-    node, and go to (2).

-

-(5) If the test character is bigger, extract the f2_rightmask bits from f2, and

-    shift them right by f2_rightshift. If the result is zero, the character is

-    not in the tree. Otherwise, calculate the number of nodes to skip by

-    shifting the value 1 left by this number minus one. Go to (2).

-*/

-

-

-/* End of internal.h */

-/* This source module is automatically generated from the Unicode

-property table. See internal.h for a description of the layout. */

-

-static cnode ucp_table[] = {

-  { 0x9a00, 0x2f1f, 0xe000 },

-  { 0x8700, 0x1558, 0xd000 },

-  { 0x8700, 0x0a99, 0xc000 },

-  { 0x8500, 0x0435, 0xbfe0 },

-  { 0x8500, 0x01ff, 0xafff },

-  { 0x8500, 0x00ff, 0x9079 },

-  { 0x8000, 0x007f, 0x8000 },

-  { 0x9500, 0x003f, 0x7000 },

-  { 0x8000, 0x001f, 0x6000 },

-  { 0x8000, 0x000f, 0x5000 },

-  { 0x8000, 0x0007, 0x4000 },

-  { 0x8000, 0x0003, 0x3000 },

-  { 0x8000, 0x0001, 0x2000 },

-  { 0x0000, 0x0000, 0x0000 },

-  { 0x0000, 0x0002, 0x0000 },

-  { 0x8000, 0x0005, 0x2000 },

-  { 0x0000, 0x0004, 0x0000 },

-  { 0x0000, 0x0006, 0x0000 },

-  { 0x8000, 0x000b, 0x3000 },

-  { 0x8000, 0x0009, 0x2000 },

-  { 0x0000, 0x0008, 0x0000 },

-  { 0x0000, 0x000a, 0x0000 },

-  { 0x8000, 0x000d, 0x2000 },

-  { 0x0000, 0x000c, 0x0000 },

-  { 0x0000, 0x000e, 0x0000 },

-  { 0x8000, 0x0017, 0x4000 },

-  { 0x8000, 0x0013, 0x3000 },

-  { 0x8000, 0x0011, 0x2000 },

-  { 0x0000, 0x0010, 0x0000 },

-  { 0x0000, 0x0012, 0x0000 },

-  { 0x8000, 0x0015, 0x2000 },

-  { 0x0000, 0x0014, 0x0000 },

-  { 0x0000, 0x0016, 0x0000 },

-  { 0x8000, 0x001b, 0x3000 },

-  { 0x8000, 0x0019, 0x2000 },

-  { 0x0000, 0x0018, 0x0000 },

-  { 0x0000, 0x001a, 0x0000 },

-  { 0x8000, 0x001d, 0x2000 },

-  { 0x0000, 0x001c, 0x0000 },

-  { 0x0000, 0x001e, 0x0000 },

-  { 0x9500, 0x002f, 0x5000 },

-  { 0x9500, 0x0027, 0x4000 },

-  { 0x9500, 0x0023, 0x3000 },

-  { 0x9500, 0x0021, 0x2000 },

-  { 0x1d00, 0x0020, 0x0000 },

-  { 0x1500, 0x0022, 0x0000 },

-  { 0x9500, 0x0025, 0x2000 },

-  { 0x1700, 0x0024, 0x0000 },

-  { 0x1500, 0x0026, 0x0000 },

-  { 0x9900, 0x002b, 0x3000 },

-  { 0x9200, 0x0029, 0x2000 },

-  { 0x1600, 0x0028, 0x0000 },

-  { 0x1500, 0x002a, 0x0000 },

-  { 0x9100, 0x002d, 0x2000 },

-  { 0x1500, 0x002c, 0x0000 },

-  { 0x1500, 0x002e, 0x0000 },

-  { 0x8d00, 0x0037, 0x4000 },

-  { 0x8d00, 0x0033, 0x3000 },

-  { 0x8d00, 0x0031, 0x2000 },

-  { 0x0d00, 0x0030, 0x0000 },

-  { 0x0d00, 0x0032, 0x0000 },

-  { 0x8d00, 0x0035, 0x2000 },

-  { 0x0d00, 0x0034, 0x0000 },

-  { 0x0d00, 0x0036, 0x0000 },

-  { 0x9500, 0x003b, 0x3000 },

-  { 0x8d00, 0x0039, 0x2000 },

-  { 0x0d00, 0x0038, 0x0000 },

-  { 0x1500, 0x003a, 0x0000 },

-  { 0x9900, 0x003d, 0x2000 },

-  { 0x1900, 0x003c, 0x0000 },

-  { 0x1900, 0x003e, 0x0000 },

-  { 0x9000, 0x005f, 0x6000 },

-  { 0x8900, 0x004f, 0x5020 },

-  { 0x8900, 0x0047, 0x4020 },

-  { 0x8900, 0x0043, 0x3020 },

-  { 0x8900, 0x0041, 0x2020 },

-  { 0x1500, 0x0040, 0x0000 },

-  { 0x0900, 0x0042, 0x0020 },

-  { 0x8900, 0x0045, 0x2020 },

-  { 0x0900, 0x0044, 0x0020 },

-  { 0x0900, 0x0046, 0x0020 },

-  { 0x8900, 0x004b, 0x3020 },

-  { 0x8900, 0x0049, 0x2020 },

-  { 0x0900, 0x0048, 0x0020 },

-  { 0x0900, 0x004a, 0x0020 },

-  { 0x8900, 0x004d, 0x2020 },

-  { 0x0900, 0x004c, 0x0020 },

-  { 0x0900, 0x004e, 0x0020 },

-  { 0x8900, 0x0057, 0x4020 },

-  { 0x8900, 0x0053, 0x3020 },

-  { 0x8900, 0x0051, 0x2020 },

-  { 0x0900, 0x0050, 0x0020 },

-  { 0x0900, 0x0052, 0x0020 },

-  { 0x8900, 0x0055, 0x2020 },

-  { 0x0900, 0x0054, 0x0020 },

-  { 0x0900, 0x0056, 0x0020 },

-  { 0x9600, 0x005b, 0x3000 },

-  { 0x8900, 0x0059, 0x2020 },

-  { 0x0900, 0x0058, 0x0020 },

-  { 0x0900, 0x005a, 0x0020 },

-  { 0x9200, 0x005d, 0x2000 },

-  { 0x1500, 0x005c, 0x0000 },

-  { 0x1800, 0x005e, 0x0000 },

-  { 0x8500, 0x006f, 0x5fe0 },

-  { 0x8500, 0x0067, 0x4fe0 },

-  { 0x8500, 0x0063, 0x3fe0 },

-  { 0x8500, 0x0061, 0x2fe0 },

-  { 0x1800, 0x0060, 0x0000 },

-  { 0x0500, 0x0062, 0x0fe0 },

-  { 0x8500, 0x0065, 0x2fe0 },

-  { 0x0500, 0x0064, 0x0fe0 },

-  { 0x0500, 0x0066, 0x0fe0 },

-  { 0x8500, 0x006b, 0x3fe0 },

-  { 0x8500, 0x0069, 0x2fe0 },

-  { 0x0500, 0x0068, 0x0fe0 },

-  { 0x0500, 0x006a, 0x0fe0 },

-  { 0x8500, 0x006d, 0x2fe0 },

-  { 0x0500, 0x006c, 0x0fe0 },

-  { 0x0500, 0x006e, 0x0fe0 },

-  { 0x8500, 0x0077, 0x4fe0 },

-  { 0x8500, 0x0073, 0x3fe0 },

-  { 0x8500, 0x0071, 0x2fe0 },

-  { 0x0500, 0x0070, 0x0fe0 },

-  { 0x0500, 0x0072, 0x0fe0 },

-  { 0x8500, 0x0075, 0x2fe0 },

-  { 0x0500, 0x0074, 0x0fe0 },

-  { 0x0500, 0x0076, 0x0fe0 },

-  { 0x9600, 0x007b, 0x3000 },

-  { 0x8500, 0x0079, 0x2fe0 },

-  { 0x0500, 0x0078, 0x0fe0 },

-  { 0x0500, 0x007a, 0x0fe0 },

-  { 0x9200, 0x007d, 0x2000 },

-  { 0x1900, 0x007c, 0x0000 },

-  { 0x1900, 0x007e, 0x0000 },

-  { 0x9500, 0x00bf, 0x7000 },

-  { 0x8000, 0x009f, 0x6000 },

-  { 0x8000, 0x008f, 0x5000 },

-  { 0x8000, 0x0087, 0x4000 },

-  { 0x8000, 0x0083, 0x3000 },

-  { 0x8000, 0x0081, 0x2000 },

-  { 0x0000, 0x0080, 0x0000 },

-  { 0x0000, 0x0082, 0x0000 },

-  { 0x8000, 0x0085, 0x2000 },

-  { 0x0000, 0x0084, 0x0000 },

-  { 0x0000, 0x0086, 0x0000 },

-  { 0x8000, 0x008b, 0x3000 },

-  { 0x8000, 0x0089, 0x2000 },

-  { 0x0000, 0x0088, 0x0000 },

-  { 0x0000, 0x008a, 0x0000 },

-  { 0x8000, 0x008d, 0x2000 },

-  { 0x0000, 0x008c, 0x0000 },

-  { 0x0000, 0x008e, 0x0000 },

-  { 0x8000, 0x0097, 0x4000 },

-  { 0x8000, 0x0093, 0x3000 },

-  { 0x8000, 0x0091, 0x2000 },

-  { 0x0000, 0x0090, 0x0000 },

-  { 0x0000, 0x0092, 0x0000 },

-  { 0x8000, 0x0095, 0x2000 },

-  { 0x0000, 0x0094, 0x0000 },

-  { 0x0000, 0x0096, 0x0000 },

-  { 0x8000, 0x009b, 0x3000 },

-  { 0x8000, 0x0099, 0x2000 },

-  { 0x0000, 0x0098, 0x0000 },

-  { 0x0000, 0x009a, 0x0000 },

-  { 0x8000, 0x009d, 0x2000 },

-  { 0x0000, 0x009c, 0x0000 },

-  { 0x0000, 0x009e, 0x0000 },

-  { 0x9800, 0x00af, 0x5000 },

-  { 0x9a00, 0x00a7, 0x4000 },

-  { 0x9700, 0x00a3, 0x3000 },

-  { 0x9500, 0x00a1, 0x2000 },

-  { 0x1d00, 0x00a0, 0x0000 },

-  { 0x1700, 0x00a2, 0x0000 },

-  { 0x9700, 0x00a5, 0x2000 },

-  { 0x1700, 0x00a4, 0x0000 },

-  { 0x1a00, 0x00a6, 0x0000 },

-  { 0x9400, 0x00ab, 0x3000 },

-  { 0x9a00, 0x00a9, 0x2000 },

-  { 0x1800, 0x00a8, 0x0000 },

-  { 0x0500, 0x00aa, 0x0000 },

-  { 0x8100, 0x00ad, 0x2000 },

-  { 0x1900, 0x00ac, 0x0000 },

-  { 0x1a00, 0x00ae, 0x0000 },

-  { 0x9500, 0x00b7, 0x4000 },

-  { 0x8f00, 0x00b3, 0x3000 },

-  { 0x9900, 0x00b1, 0x2000 },

-  { 0x1a00, 0x00b0, 0x0000 },

-  { 0x0f00, 0x00b2, 0x0000 },

-  { 0x8500, 0x00b5, 0x22e7 },

-  { 0x1800, 0x00b4, 0x0000 },

-  { 0x1a00, 0x00b6, 0x0000 },

-  { 0x9300, 0x00bb, 0x3000 },

-  { 0x8f00, 0x00b9, 0x2000 },

-  { 0x1800, 0x00b8, 0x0000 },

-  { 0x0500, 0x00ba, 0x0000 },

-  { 0x8f00, 0x00bd, 0x2000 },

-  { 0x0f00, 0x00bc, 0x0000 },

-  { 0x0f00, 0x00be, 0x0000 },

-  { 0x8500, 0x00df, 0x6000 },

-  { 0x8900, 0x00cf, 0x5020 },

-  { 0x8900, 0x00c7, 0x4020 },

-  { 0x8900, 0x00c3, 0x3020 },

-  { 0x8900, 0x00c1, 0x2020 },

-  { 0x0900, 0x00c0, 0x0020 },

-  { 0x0900, 0x00c2, 0x0020 },

-  { 0x8900, 0x00c5, 0x2020 },

-  { 0x0900, 0x00c4, 0x0020 },

-  { 0x0900, 0x00c6, 0x0020 },

-  { 0x8900, 0x00cb, 0x3020 },

-  { 0x8900, 0x00c9, 0x2020 },

-  { 0x0900, 0x00c8, 0x0020 },

-  { 0x0900, 0x00ca, 0x0020 },

-  { 0x8900, 0x00cd, 0x2020 },

-  { 0x0900, 0x00cc, 0x0020 },

-  { 0x0900, 0x00ce, 0x0020 },

-  { 0x9900, 0x00d7, 0x4000 },

-  { 0x8900, 0x00d3, 0x3020 },

-  { 0x8900, 0x00d1, 0x2020 },

-  { 0x0900, 0x00d0, 0x0020 },

-  { 0x0900, 0x00d2, 0x0020 },

-  { 0x8900, 0x00d5, 0x2020 },

-  { 0x0900, 0x00d4, 0x0020 },

-  { 0x0900, 0x00d6, 0x0020 },

-  { 0x8900, 0x00db, 0x3020 },

-  { 0x8900, 0x00d9, 0x2020 },

-  { 0x0900, 0x00d8, 0x0020 },

-  { 0x0900, 0x00da, 0x0020 },

-  { 0x8900, 0x00dd, 0x2020 },

-  { 0x0900, 0x00dc, 0x0020 },

-  { 0x0900, 0x00de, 0x0020 },

-  { 0x8500, 0x00ef, 0x5fe0 },

-  { 0x8500, 0x00e7, 0x4fe0 },

-  { 0x8500, 0x00e3, 0x3fe0 },

-  { 0x8500, 0x00e1, 0x2fe0 },

-  { 0x0500, 0x00e0, 0x0fe0 },

-  { 0x0500, 0x00e2, 0x0fe0 },

-  { 0x8500, 0x00e5, 0x2fe0 },

-  { 0x0500, 0x00e4, 0x0fe0 },

-  { 0x0500, 0x00e6, 0x0fe0 },

-  { 0x8500, 0x00eb, 0x3fe0 },

-  { 0x8500, 0x00e9, 0x2fe0 },

-  { 0x0500, 0x00e8, 0x0fe0 },

-  { 0x0500, 0x00ea, 0x0fe0 },

-  { 0x8500, 0x00ed, 0x2fe0 },

-  { 0x0500, 0x00ec, 0x0fe0 },

-  { 0x0500, 0x00ee, 0x0fe0 },

-  { 0x9900, 0x00f7, 0x4000 },

-  { 0x8500, 0x00f3, 0x3fe0 },

-  { 0x8500, 0x00f1, 0x2fe0 },

-  { 0x0500, 0x00f0, 0x0fe0 },

-  { 0x0500, 0x00f2, 0x0fe0 },

-  { 0x8500, 0x00f5, 0x2fe0 },

-  { 0x0500, 0x00f4, 0x0fe0 },

-  { 0x0500, 0x00f6, 0x0fe0 },

-  { 0x8500, 0x00fb, 0x3fe0 },

-  { 0x8500, 0x00f9, 0x2fe0 },

-  { 0x0500, 0x00f8, 0x0fe0 },

-  { 0x0500, 0x00fa, 0x0fe0 },

-  { 0x8500, 0x00fd, 0x2fe0 },

-  { 0x0500, 0x00fc, 0x0fe0 },

-  { 0x0500, 0x00fe, 0x0fe0 },

-  { 0x8500, 0x017f, 0x8ed4 },

-  { 0x8900, 0x013f, 0x7001 },

-  { 0x8500, 0x011f, 0x6fff },

-  { 0x8500, 0x010f, 0x5fff },

-  { 0x8500, 0x0107, 0x4fff },

-  { 0x8500, 0x0103, 0x3fff },

-  { 0x8500, 0x0101, 0x2fff },

-  { 0x0900, 0x0100, 0x0001 },

-  { 0x0900, 0x0102, 0x0001 },

-  { 0x8500, 0x0105, 0x2fff },

-  { 0x0900, 0x0104, 0x0001 },

-  { 0x0900, 0x0106, 0x0001 },

-  { 0x8500, 0x010b, 0x3fff },

-  { 0x8500, 0x0109, 0x2fff },

-  { 0x0900, 0x0108, 0x0001 },

-  { 0x0900, 0x010a, 0x0001 },

-  { 0x8500, 0x010d, 0x2fff },

-  { 0x0900, 0x010c, 0x0001 },

-  { 0x0900, 0x010e, 0x0001 },

-  { 0x8500, 0x0117, 0x4fff },

-  { 0x8500, 0x0113, 0x3fff },

-  { 0x8500, 0x0111, 0x2fff },

-  { 0x0900, 0x0110, 0x0001 },

-  { 0x0900, 0x0112, 0x0001 },

-  { 0x8500, 0x0115, 0x2fff },

-  { 0x0900, 0x0114, 0x0001 },

-  { 0x0900, 0x0116, 0x0001 },

-  { 0x8500, 0x011b, 0x3fff },

-  { 0x8500, 0x0119, 0x2fff },

-  { 0x0900, 0x0118, 0x0001 },

-  { 0x0900, 0x011a, 0x0001 },

-  { 0x8500, 0x011d, 0x2fff },

-  { 0x0900, 0x011c, 0x0001 },

-  { 0x0900, 0x011e, 0x0001 },

-  { 0x8500, 0x012f, 0x5fff },

-  { 0x8500, 0x0127, 0x4fff },

-  { 0x8500, 0x0123, 0x3fff },

-  { 0x8500, 0x0121, 0x2fff },

-  { 0x0900, 0x0120, 0x0001 },

-  { 0x0900, 0x0122, 0x0001 },

-  { 0x8500, 0x0125, 0x2fff },

-  { 0x0900, 0x0124, 0x0001 },

-  { 0x0900, 0x0126, 0x0001 },

-  { 0x8500, 0x012b, 0x3fff },

-  { 0x8500, 0x0129, 0x2fff },

-  { 0x0900, 0x0128, 0x0001 },

-  { 0x0900, 0x012a, 0x0001 },

-  { 0x8500, 0x012d, 0x2fff },

-  { 0x0900, 0x012c, 0x0001 },

-  { 0x0900, 0x012e, 0x0001 },

-  { 0x8500, 0x0137, 0x4fff },

-  { 0x8500, 0x0133, 0x3fff },

-  { 0x8500, 0x0131, 0x2f18 },

-  { 0x0900, 0x0130, 0x0f39 },

-  { 0x0900, 0x0132, 0x0001 },

-  { 0x8500, 0x0135, 0x2fff },

-  { 0x0900, 0x0134, 0x0001 },

-  { 0x0900, 0x0136, 0x0001 },

-  { 0x8900, 0x013b, 0x3001 },

-  { 0x8900, 0x0139, 0x2001 },

-  { 0x0500, 0x0138, 0x0000 },

-  { 0x0500, 0x013a, 0x0fff },

-  { 0x8900, 0x013d, 0x2001 },

-  { 0x0500, 0x013c, 0x0fff },

-  { 0x0500, 0x013e, 0x0fff },

-  { 0x8500, 0x015f, 0x6fff },

-  { 0x8500, 0x014f, 0x5fff },

-  { 0x8900, 0x0147, 0x4001 },

-  { 0x8900, 0x0143, 0x3001 },

-  { 0x8900, 0x0141, 0x2001 },

-  { 0x0500, 0x0140, 0x0fff },

-  { 0x0500, 0x0142, 0x0fff },

-  { 0x8900, 0x0145, 0x2001 },

-  { 0x0500, 0x0144, 0x0fff },

-  { 0x0500, 0x0146, 0x0fff },

-  { 0x8500, 0x014b, 0x3fff },

-  { 0x8500, 0x0149, 0x2000 },

-  { 0x0500, 0x0148, 0x0fff },

-  { 0x0900, 0x014a, 0x0001 },

-  { 0x8500, 0x014d, 0x2fff },

-  { 0x0900, 0x014c, 0x0001 },

-  { 0x0900, 0x014e, 0x0001 },

-  { 0x8500, 0x0157, 0x4fff },

-  { 0x8500, 0x0153, 0x3fff },

-  { 0x8500, 0x0151, 0x2fff },

-  { 0x0900, 0x0150, 0x0001 },

-  { 0x0900, 0x0152, 0x0001 },

-  { 0x8500, 0x0155, 0x2fff },

-  { 0x0900, 0x0154, 0x0001 },

-  { 0x0900, 0x0156, 0x0001 },

-  { 0x8500, 0x015b, 0x3fff },

-  { 0x8500, 0x0159, 0x2fff },

-  { 0x0900, 0x0158, 0x0001 },

-  { 0x0900, 0x015a, 0x0001 },

-  { 0x8500, 0x015d, 0x2fff },

-  { 0x0900, 0x015c, 0x0001 },

-  { 0x0900, 0x015e, 0x0001 },

-  { 0x8500, 0x016f, 0x5fff },

-  { 0x8500, 0x0167, 0x4fff },

-  { 0x8500, 0x0163, 0x3fff },

-  { 0x8500, 0x0161, 0x2fff },

-  { 0x0900, 0x0160, 0x0001 },

-  { 0x0900, 0x0162, 0x0001 },

-  { 0x8500, 0x0165, 0x2fff },

-  { 0x0900, 0x0164, 0x0001 },

-  { 0x0900, 0x0166, 0x0001 },

-  { 0x8500, 0x016b, 0x3fff },

-  { 0x8500, 0x0169, 0x2fff },

-  { 0x0900, 0x0168, 0x0001 },

-  { 0x0900, 0x016a, 0x0001 },

-  { 0x8500, 0x016d, 0x2fff },

-  { 0x0900, 0x016c, 0x0001 },

-  { 0x0900, 0x016e, 0x0001 },

-  { 0x8500, 0x0177, 0x4fff },

-  { 0x8500, 0x0173, 0x3fff },

-  { 0x8500, 0x0171, 0x2fff },

-  { 0x0900, 0x0170, 0x0001 },

-  { 0x0900, 0x0172, 0x0001 },

-  { 0x8500, 0x0175, 0x2fff },

-  { 0x0900, 0x0174, 0x0001 },

-  { 0x0900, 0x0176, 0x0001 },

-  { 0x8900, 0x017b, 0x3001 },

-  { 0x8900, 0x0179, 0x2001 },

-  { 0x0900, 0x0178, 0x0f87 },

-  { 0x0500, 0x017a, 0x0fff },

-  { 0x8900, 0x017d, 0x2001 },

-  { 0x0500, 0x017c, 0x0fff },

-  { 0x0500, 0x017e, 0x0fff },

-  { 0x8500, 0x01bf, 0x7038 },

-  { 0x8900, 0x019f, 0x60d6 },

-  { 0x8900, 0x018f, 0x50ca },

-  { 0x8900, 0x0187, 0x4001 },

-  { 0x8500, 0x0183, 0x3fff },

-  { 0x8900, 0x0181, 0x20d2 },

-  { 0x0500, 0x0180, 0x0000 },

-  { 0x0900, 0x0182, 0x0001 },

-  { 0x8500, 0x0185, 0x2fff },

-  { 0x0900, 0x0184, 0x0001 },

-  { 0x0900, 0x0186, 0x00ce },

-  { 0x8900, 0x018b, 0x3001 },

-  { 0x8900, 0x0189, 0x20cd },

-  { 0x0500, 0x0188, 0x0fff },

-  { 0x0900, 0x018a, 0x00cd },

-  { 0x8500, 0x018d, 0x2000 },

-  { 0x0500, 0x018c, 0x0fff },

-  { 0x0900, 0x018e, 0x004f },

-  { 0x8900, 0x0197, 0x40d1 },

-  { 0x8900, 0x0193, 0x30cd },

-  { 0x8900, 0x0191, 0x2001 },

-  { 0x0900, 0x0190, 0x00cb },

-  { 0x0500, 0x0192, 0x0fff },

-  { 0x8500, 0x0195, 0x2061 },

-  { 0x0900, 0x0194, 0x00cf },

-  { 0x0900, 0x0196, 0x00d3 },

-  { 0x8500, 0x019b, 0x3000 },

-  { 0x8500, 0x0199, 0x2fff },

-  { 0x0900, 0x0198, 0x0001 },

-  { 0x0500, 0x019a, 0x0000 },

-  { 0x8900, 0x019d, 0x20d5 },

-  { 0x0900, 0x019c, 0x00d3 },

-  { 0x0500, 0x019e, 0x0082 },

-  { 0x8900, 0x01af, 0x5001 },

-  { 0x8900, 0x01a7, 0x4001 },

-  { 0x8500, 0x01a3, 0x3fff },

-  { 0x8500, 0x01a1, 0x2fff },

-  { 0x0900, 0x01a0, 0x0001 },

-  { 0x0900, 0x01a2, 0x0001 },

-  { 0x8500, 0x01a5, 0x2fff },

-  { 0x0900, 0x01a4, 0x0001 },

-  { 0x0900, 0x01a6, 0x00da },

-  { 0x8500, 0x01ab, 0x3000 },

-  { 0x8900, 0x01a9, 0x20da },

-  { 0x0500, 0x01a8, 0x0fff },

-  { 0x0500, 0x01aa, 0x0000 },

-  { 0x8500, 0x01ad, 0x2fff },

-  { 0x0900, 0x01ac, 0x0001 },

-  { 0x0900, 0x01ae, 0x00da },

-  { 0x8900, 0x01b7, 0x40db },

-  { 0x8900, 0x01b3, 0x3001 },

-  { 0x8900, 0x01b1, 0x20d9 },

-  { 0x0500, 0x01b0, 0x0fff },

-  { 0x0900, 0x01b2, 0x00d9 },

-  { 0x8900, 0x01b5, 0x2001 },

-  { 0x0500, 0x01b4, 0x0fff },

-  { 0x0500, 0x01b6, 0x0fff },

-  { 0x8700, 0x01bb, 0x3000 },

-  { 0x8500, 0x01b9, 0x2fff },

-  { 0x0900, 0x01b8, 0x0001 },

-  { 0x0500, 0x01ba, 0x0000 },

-  { 0x8500, 0x01bd, 0x2fff },

-  { 0x0900, 0x01bc, 0x0001 },

-  { 0x0500, 0x01be, 0x0000 },

-  { 0x8500, 0x01df, 0x6fff },

-  { 0x8900, 0x01cf, 0x5001 },

-  { 0x8900, 0x01c7, 0x4002 },

-  { 0x8700, 0x01c3, 0x3000 },

-  { 0x8700, 0x01c1, 0x2000 },

-  { 0x0700, 0x01c0, 0x0000 },

-  { 0x0700, 0x01c2, 0x0000 },

-  { 0x8800, 0x01c5, 0x2000 },

-  { 0x0900, 0x01c4, 0x0002 },

-  { 0x0500, 0x01c6, 0x0ffe },

-  { 0x8800, 0x01cb, 0x3000 },

-  { 0x8500, 0x01c9, 0x2ffe },

-  { 0x0800, 0x01c8, 0x0000 },

-  { 0x0900, 0x01ca, 0x0002 },

-  { 0x8900, 0x01cd, 0x2001 },

-  { 0x0500, 0x01cc, 0x0ffe },

-  { 0x0500, 0x01ce, 0x0fff },

-  { 0x8900, 0x01d7, 0x4001 },

-  { 0x8900, 0x01d3, 0x3001 },

-  { 0x8900, 0x01d1, 0x2001 },

-  { 0x0500, 0x01d0, 0x0fff },

-  { 0x0500, 0x01d2, 0x0fff },

-  { 0x8900, 0x01d5, 0x2001 },

-  { 0x0500, 0x01d4, 0x0fff },

-  { 0x0500, 0x01d6, 0x0fff },

-  { 0x8900, 0x01db, 0x3001 },

-  { 0x8900, 0x01d9, 0x2001 },

-  { 0x0500, 0x01d8, 0x0fff },

-  { 0x0500, 0x01da, 0x0fff },

-  { 0x8500, 0x01dd, 0x2fb1 },

-  { 0x0500, 0x01dc, 0x0fff },

-  { 0x0900, 0x01de, 0x0001 },

-  { 0x8500, 0x01ef, 0x5fff },

-  { 0x8500, 0x01e7, 0x4fff },

-  { 0x8500, 0x01e3, 0x3fff },

-  { 0x8500, 0x01e1, 0x2fff },

-  { 0x0900, 0x01e0, 0x0001 },

-  { 0x0900, 0x01e2, 0x0001 },

-  { 0x8500, 0x01e5, 0x2fff },

-  { 0x0900, 0x01e4, 0x0001 },

-  { 0x0900, 0x01e6, 0x0001 },

-  { 0x8500, 0x01eb, 0x3fff },

-  { 0x8500, 0x01e9, 0x2fff },

-  { 0x0900, 0x01e8, 0x0001 },

-  { 0x0900, 0x01ea, 0x0001 },

-  { 0x8500, 0x01ed, 0x2fff },

-  { 0x0900, 0x01ec, 0x0001 },

-  { 0x0900, 0x01ee, 0x0001 },

-  { 0x8900, 0x01f7, 0x4fc8 },

-  { 0x8500, 0x01f3, 0x3ffe },

-  { 0x8900, 0x01f1, 0x2002 },

-  { 0x0500, 0x01f0, 0x0000 },

-  { 0x0800, 0x01f2, 0x0000 },

-  { 0x8500, 0x01f5, 0x2fff },

-  { 0x0900, 0x01f4, 0x0001 },

-  { 0x0900, 0x01f6, 0x0f9f },

-  { 0x8500, 0x01fb, 0x3fff },

-  { 0x8500, 0x01f9, 0x2fff },

-  { 0x0900, 0x01f8, 0x0001 },

-  { 0x0900, 0x01fa, 0x0001 },

-  { 0x8500, 0x01fd, 0x2fff },

-  { 0x0900, 0x01fc, 0x0001 },

-  { 0x0900, 0x01fe, 0x0001 },

-  { 0x8c00, 0x0318, 0x9000 },

-  { 0x8500, 0x0298, 0x8000 },

-  { 0x8500, 0x0258, 0x7000 },

-  { 0x8500, 0x021f, 0x6fff },

-  { 0x8500, 0x020f, 0x5fff },

-  { 0x8500, 0x0207, 0x4fff },

-  { 0x8500, 0x0203, 0x3fff },

-  { 0x8500, 0x0201, 0x2fff },

-  { 0x0900, 0x0200, 0x0001 },

-  { 0x0900, 0x0202, 0x0001 },

-  { 0x8500, 0x0205, 0x2fff },

-  { 0x0900, 0x0204, 0x0001 },

-  { 0x0900, 0x0206, 0x0001 },

-  { 0x8500, 0x020b, 0x3fff },

-  { 0x8500, 0x0209, 0x2fff },

-  { 0x0900, 0x0208, 0x0001 },

-  { 0x0900, 0x020a, 0x0001 },

-  { 0x8500, 0x020d, 0x2fff },

-  { 0x0900, 0x020c, 0x0001 },

-  { 0x0900, 0x020e, 0x0001 },

-  { 0x8500, 0x0217, 0x4fff },

-  { 0x8500, 0x0213, 0x3fff },

-  { 0x8500, 0x0211, 0x2fff },

-  { 0x0900, 0x0210, 0x0001 },

-  { 0x0900, 0x0212, 0x0001 },

-  { 0x8500, 0x0215, 0x2fff },

-  { 0x0900, 0x0214, 0x0001 },

-  { 0x0900, 0x0216, 0x0001 },

-  { 0x8500, 0x021b, 0x3fff },

-  { 0x8500, 0x0219, 0x2fff },

-  { 0x0900, 0x0218, 0x0001 },

-  { 0x0900, 0x021a, 0x0001 },

-  { 0x8500, 0x021d, 0x2fff },

-  { 0x0900, 0x021c, 0x0001 },

-  { 0x0900, 0x021e, 0x0001 },

-  { 0x8500, 0x022f, 0x5fff },

-  { 0x8500, 0x0227, 0x4fff },

-  { 0x8500, 0x0223, 0x3fff },

-  { 0x8500, 0x0221, 0x2000 },

-  { 0x0900, 0x0220, 0x0f7e },

-  { 0x0900, 0x0222, 0x0001 },

-  { 0x8500, 0x0225, 0x2fff },

-  { 0x0900, 0x0224, 0x0001 },

-  { 0x0900, 0x0226, 0x0001 },

-  { 0x8500, 0x022b, 0x3fff },

-  { 0x8500, 0x0229, 0x2fff },

-  { 0x0900, 0x0228, 0x0001 },

-  { 0x0900, 0x022a, 0x0001 },

-  { 0x8500, 0x022d, 0x2fff },

-  { 0x0900, 0x022c, 0x0001 },

-  { 0x0900, 0x022e, 0x0001 },

-  { 0x8500, 0x0250, 0x4000 },

-  { 0x8500, 0x0233, 0x3fff },

-  { 0x8500, 0x0231, 0x2fff },

-  { 0x0900, 0x0230, 0x0001 },

-  { 0x0900, 0x0232, 0x0001 },

-  { 0x8500, 0x0235, 0x2000 },

-  { 0x0500, 0x0234, 0x0000 },

-  { 0x0500, 0x0236, 0x0000 },

-  { 0x8500, 0x0254, 0x3f32 },

-  { 0x8500, 0x0252, 0x2000 },

-  { 0x0500, 0x0251, 0x0000 },

-  { 0x0500, 0x0253, 0x0f2e },

-  { 0x8500, 0x0256, 0x2f33 },

-  { 0x0500, 0x0255, 0x0000 },

-  { 0x0500, 0x0257, 0x0f33 },

-  { 0x8500, 0x0278, 0x6000 },

-  { 0x8500, 0x0268, 0x5f2f },

-  { 0x8500, 0x0260, 0x4f33 },

-  { 0x8500, 0x025c, 0x3000 },

-  { 0x8500, 0x025a, 0x2000 },

-  { 0x0500, 0x0259, 0x0f36 },

-  { 0x0500, 0x025b, 0x0f35 },

-  { 0x8500, 0x025e, 0x2000 },

-  { 0x0500, 0x025d, 0x0000 },

-  { 0x0500, 0x025f, 0x0000 },

-  { 0x8500, 0x0264, 0x3000 },

-  { 0x8500, 0x0262, 0x2000 },

-  { 0x0500, 0x0261, 0x0000 },

-  { 0x0500, 0x0263, 0x0f31 },

-  { 0x8500, 0x0266, 0x2000 },

-  { 0x0500, 0x0265, 0x0000 },

-  { 0x0500, 0x0267, 0x0000 },

-  { 0x8500, 0x0270, 0x4000 },

-  { 0x8500, 0x026c, 0x3000 },

-  { 0x8500, 0x026a, 0x2000 },

-  { 0x0500, 0x0269, 0x0f2d },

-  { 0x0500, 0x026b, 0x0000 },

-  { 0x8500, 0x026e, 0x2000 },

-  { 0x0500, 0x026d, 0x0000 },

-  { 0x0500, 0x026f, 0x0f2d },

-  { 0x8500, 0x0274, 0x3000 },

-  { 0x8500, 0x0272, 0x2f2b },

-  { 0x0500, 0x0271, 0x0000 },

-  { 0x0500, 0x0273, 0x0000 },

-  { 0x8500, 0x0276, 0x2000 },

-  { 0x0500, 0x0275, 0x0f2a },

-  { 0x0500, 0x0277, 0x0000 },

-  { 0x8500, 0x0288, 0x5f26 },

-  { 0x8500, 0x0280, 0x4f26 },

-  { 0x8500, 0x027c, 0x3000 },

-  { 0x8500, 0x027a, 0x2000 },

-  { 0x0500, 0x0279, 0x0000 },

-  { 0x0500, 0x027b, 0x0000 },

-  { 0x8500, 0x027e, 0x2000 },

-  { 0x0500, 0x027d, 0x0000 },

-  { 0x0500, 0x027f, 0x0000 },

-  { 0x8500, 0x0284, 0x3000 },

-  { 0x8500, 0x0282, 0x2000 },

-  { 0x0500, 0x0281, 0x0000 },

-  { 0x0500, 0x0283, 0x0f26 },

-  { 0x8500, 0x0286, 0x2000 },

-  { 0x0500, 0x0285, 0x0000 },

-  { 0x0500, 0x0287, 0x0000 },

-  { 0x8500, 0x0290, 0x4000 },

-  { 0x8500, 0x028c, 0x3000 },

-  { 0x8500, 0x028a, 0x2f27 },

-  { 0x0500, 0x0289, 0x0000 },

-  { 0x0500, 0x028b, 0x0f27 },

-  { 0x8500, 0x028e, 0x2000 },

-  { 0x0500, 0x028d, 0x0000 },

-  { 0x0500, 0x028f, 0x0000 },

-  { 0x8500, 0x0294, 0x3000 },

-  { 0x8500, 0x0292, 0x2f25 },

-  { 0x0500, 0x0291, 0x0000 },

-  { 0x0500, 0x0293, 0x0000 },

-  { 0x8500, 0x0296, 0x2000 },

-  { 0x0500, 0x0295, 0x0000 },

-  { 0x0500, 0x0297, 0x0000 },

-  { 0x9800, 0x02d8, 0x7000 },

-  { 0x8600, 0x02b8, 0x6000 },

-  { 0x8500, 0x02a8, 0x5000 },

-  { 0x8500, 0x02a0, 0x4000 },

-  { 0x8500, 0x029c, 0x3000 },

-  { 0x8500, 0x029a, 0x2000 },

-  { 0x0500, 0x0299, 0x0000 },

-  { 0x0500, 0x029b, 0x0000 },

-  { 0x8500, 0x029e, 0x2000 },

-  { 0x0500, 0x029d, 0x0000 },

-  { 0x0500, 0x029f, 0x0000 },

-  { 0x8500, 0x02a4, 0x3000 },

-  { 0x8500, 0x02a2, 0x2000 },

-  { 0x0500, 0x02a1, 0x0000 },

-  { 0x0500, 0x02a3, 0x0000 },

-  { 0x8500, 0x02a6, 0x2000 },

-  { 0x0500, 0x02a5, 0x0000 },

-  { 0x0500, 0x02a7, 0x0000 },

-  { 0x8600, 0x02b0, 0x4000 },

-  { 0x8500, 0x02ac, 0x3000 },

-  { 0x8500, 0x02aa, 0x2000 },

-  { 0x0500, 0x02a9, 0x0000 },

-  { 0x0500, 0x02ab, 0x0000 },

-  { 0x8500, 0x02ae, 0x2000 },

-  { 0x0500, 0x02ad, 0x0000 },

-  { 0x0500, 0x02af, 0x0000 },

-  { 0x8600, 0x02b4, 0x3000 },

-  { 0x8600, 0x02b2, 0x2000 },

-  { 0x0600, 0x02b1, 0x0000 },

-  { 0x0600, 0x02b3, 0x0000 },

-  { 0x8600, 0x02b6, 0x2000 },

-  { 0x0600, 0x02b5, 0x0000 },

-  { 0x0600, 0x02b7, 0x0000 },

-  { 0x8600, 0x02c8, 0x5000 },

-  { 0x8600, 0x02c0, 0x4000 },

-  { 0x8600, 0x02bc, 0x3000 },

-  { 0x8600, 0x02ba, 0x2000 },

-  { 0x0600, 0x02b9, 0x0000 },

-  { 0x0600, 0x02bb, 0x0000 },

-  { 0x8600, 0x02be, 0x2000 },

-  { 0x0600, 0x02bd, 0x0000 },

-  { 0x0600, 0x02bf, 0x0000 },

-  { 0x9800, 0x02c4, 0x3000 },

-  { 0x9800, 0x02c2, 0x2000 },

-  { 0x0600, 0x02c1, 0x0000 },

-  { 0x1800, 0x02c3, 0x0000 },

-  { 0x8600, 0x02c6, 0x2000 },

-  { 0x1800, 0x02c5, 0x0000 },

-  { 0x0600, 0x02c7, 0x0000 },

-  { 0x8600, 0x02d0, 0x4000 },

-  { 0x8600, 0x02cc, 0x3000 },

-  { 0x8600, 0x02ca, 0x2000 },

-  { 0x0600, 0x02c9, 0x0000 },

-  { 0x0600, 0x02cb, 0x0000 },

-  { 0x8600, 0x02ce, 0x2000 },

-  { 0x0600, 0x02cd, 0x0000 },

-  { 0x0600, 0x02cf, 0x0000 },

-  { 0x9800, 0x02d4, 0x3000 },

-  { 0x9800, 0x02d2, 0x2000 },

-  { 0x0600, 0x02d1, 0x0000 },

-  { 0x1800, 0x02d3, 0x0000 },

-  { 0x9800, 0x02d6, 0x2000 },

-  { 0x1800, 0x02d5, 0x0000 },

-  { 0x1800, 0x02d7, 0x0000 },

-  { 0x9800, 0x02f8, 0x6000 },

-  { 0x9800, 0x02e8, 0x5000 },

-  { 0x8600, 0x02e0, 0x4000 },

-  { 0x9800, 0x02dc, 0x3000 },

-  { 0x9800, 0x02da, 0x2000 },

-  { 0x1800, 0x02d9, 0x0000 },

-  { 0x1800, 0x02db, 0x0000 },

-  { 0x9800, 0x02de, 0x2000 },

-  { 0x1800, 0x02dd, 0x0000 },

-  { 0x1800, 0x02df, 0x0000 },

-  { 0x8600, 0x02e4, 0x3000 },

-  { 0x8600, 0x02e2, 0x2000 },

-  { 0x0600, 0x02e1, 0x0000 },

-  { 0x0600, 0x02e3, 0x0000 },

-  { 0x9800, 0x02e6, 0x2000 },

-  { 0x1800, 0x02e5, 0x0000 },

-  { 0x1800, 0x02e7, 0x0000 },

-  { 0x9800, 0x02f0, 0x4000 },

-  { 0x9800, 0x02ec, 0x3000 },

-  { 0x9800, 0x02ea, 0x2000 },

-  { 0x1800, 0x02e9, 0x0000 },

-  { 0x1800, 0x02eb, 0x0000 },

-  { 0x8600, 0x02ee, 0x2000 },

-  { 0x1800, 0x02ed, 0x0000 },

-  { 0x1800, 0x02ef, 0x0000 },

-  { 0x9800, 0x02f4, 0x3000 },

-  { 0x9800, 0x02f2, 0x2000 },

-  { 0x1800, 0x02f1, 0x0000 },

-  { 0x1800, 0x02f3, 0x0000 },

-  { 0x9800, 0x02f6, 0x2000 },

-  { 0x1800, 0x02f5, 0x0000 },

-  { 0x1800, 0x02f7, 0x0000 },

-  { 0x8c00, 0x0308, 0x5000 },

-  { 0x8c00, 0x0300, 0x4000 },

-  { 0x9800, 0x02fc, 0x3000 },

-  { 0x9800, 0x02fa, 0x2000 },

-  { 0x1800, 0x02f9, 0x0000 },

-  { 0x1800, 0x02fb, 0x0000 },

-  { 0x9800, 0x02fe, 0x2000 },

-  { 0x1800, 0x02fd, 0x0000 },

-  { 0x1800, 0x02ff, 0x0000 },

-  { 0x8c00, 0x0304, 0x3000 },

-  { 0x8c00, 0x0302, 0x2000 },

-  { 0x0c00, 0x0301, 0x0000 },

-  { 0x0c00, 0x0303, 0x0000 },

-  { 0x8c00, 0x0306, 0x2000 },

-  { 0x0c00, 0x0305, 0x0000 },

-  { 0x0c00, 0x0307, 0x0000 },

-  { 0x8c00, 0x0310, 0x4000 },

-  { 0x8c00, 0x030c, 0x3000 },

-  { 0x8c00, 0x030a, 0x2000 },

-  { 0x0c00, 0x0309, 0x0000 },

-  { 0x0c00, 0x030b, 0x0000 },

-  { 0x8c00, 0x030e, 0x2000 },

-  { 0x0c00, 0x030d, 0x0000 },

-  { 0x0c00, 0x030f, 0x0000 },

-  { 0x8c00, 0x0314, 0x3000 },

-  { 0x8c00, 0x0312, 0x2000 },

-  { 0x0c00, 0x0311, 0x0000 },

-  { 0x0c00, 0x0313, 0x0000 },

-  { 0x8c00, 0x0316, 0x2000 },

-  { 0x0c00, 0x0315, 0x0000 },

-  { 0x0c00, 0x0317, 0x0000 },

-  { 0x8500, 0x03b0, 0x8000 },

-  { 0x8c00, 0x035d, 0x7000 },

-  { 0x8c00, 0x0338, 0x6000 },

-  { 0x8c00, 0x0328, 0x5000 },

-  { 0x8c00, 0x0320, 0x4000 },

-  { 0x8c00, 0x031c, 0x3000 },

-  { 0x8c00, 0x031a, 0x2000 },

-  { 0x0c00, 0x0319, 0x0000 },

-  { 0x0c00, 0x031b, 0x0000 },

-  { 0x8c00, 0x031e, 0x2000 },

-  { 0x0c00, 0x031d, 0x0000 },

-  { 0x0c00, 0x031f, 0x0000 },

-  { 0x8c00, 0x0324, 0x3000 },

-  { 0x8c00, 0x0322, 0x2000 },

-  { 0x0c00, 0x0321, 0x0000 },

-  { 0x0c00, 0x0323, 0x0000 },

-  { 0x8c00, 0x0326, 0x2000 },

-  { 0x0c00, 0x0325, 0x0000 },

-  { 0x0c00, 0x0327, 0x0000 },

-  { 0x8c00, 0x0330, 0x4000 },

-  { 0x8c00, 0x032c, 0x3000 },

-  { 0x8c00, 0x032a, 0x2000 },

-  { 0x0c00, 0x0329, 0x0000 },

-  { 0x0c00, 0x032b, 0x0000 },

-  { 0x8c00, 0x032e, 0x2000 },

-  { 0x0c00, 0x032d, 0x0000 },

-  { 0x0c00, 0x032f, 0x0000 },

-  { 0x8c00, 0x0334, 0x3000 },

-  { 0x8c00, 0x0332, 0x2000 },

-  { 0x0c00, 0x0331, 0x0000 },

-  { 0x0c00, 0x0333, 0x0000 },

-  { 0x8c00, 0x0336, 0x2000 },

-  { 0x0c00, 0x0335, 0x0000 },

-  { 0x0c00, 0x0337, 0x0000 },

-  { 0x8c00, 0x0348, 0x5000 },

-  { 0x8c00, 0x0340, 0x4000 },

-  { 0x8c00, 0x033c, 0x3000 },

-  { 0x8c00, 0x033a, 0x2000 },

-  { 0x0c00, 0x0339, 0x0000 },

-  { 0x0c00, 0x033b, 0x0000 },

-  { 0x8c00, 0x033e, 0x2000 },

-  { 0x0c00, 0x033d, 0x0000 },

-  { 0x0c00, 0x033f, 0x0000 },

-  { 0x8c00, 0x0344, 0x3000 },

-  { 0x8c00, 0x0342, 0x2000 },

-  { 0x0c00, 0x0341, 0x0000 },

-  { 0x0c00, 0x0343, 0x0000 },

-  { 0x8c00, 0x0346, 0x2000 },

-  { 0x0c00, 0x0345, 0x0000 },

-  { 0x0c00, 0x0347, 0x0000 },

-  { 0x8c00, 0x0350, 0x4000 },

-  { 0x8c00, 0x034c, 0x3000 },

-  { 0x8c00, 0x034a, 0x2000 },

-  { 0x0c00, 0x0349, 0x0000 },

-  { 0x0c00, 0x034b, 0x0000 },

-  { 0x8c00, 0x034e, 0x2000 },

-  { 0x0c00, 0x034d, 0x0000 },

-  { 0x0c00, 0x034f, 0x0000 },

-  { 0x8c00, 0x0354, 0x3000 },

-  { 0x8c00, 0x0352, 0x2000 },

-  { 0x0c00, 0x0351, 0x0000 },

-  { 0x0c00, 0x0353, 0x0000 },

-  { 0x8c00, 0x0356, 0x2000 },

-  { 0x0c00, 0x0355, 0x0000 },

-  { 0x0c00, 0x0357, 0x0000 },

-  { 0x8900, 0x038f, 0x603f },

-  { 0x8c00, 0x036d, 0x5000 },

-  { 0x8c00, 0x0365, 0x4000 },

-  { 0x8c00, 0x0361, 0x3000 },

-  { 0x8c00, 0x035f, 0x2000 },

-  { 0x0c00, 0x035e, 0x0000 },

-  { 0x0c00, 0x0360, 0x0000 },

-  { 0x8c00, 0x0363, 0x2000 },

-  { 0x0c00, 0x0362, 0x0000 },

-  { 0x0c00, 0x0364, 0x0000 },

-  { 0x8c00, 0x0369, 0x3000 },

-  { 0x8c00, 0x0367, 0x2000 },

-  { 0x0c00, 0x0366, 0x0000 },

-  { 0x0c00, 0x0368, 0x0000 },

-  { 0x8c00, 0x036b, 0x2000 },

-  { 0x0c00, 0x036a, 0x0000 },

-  { 0x0c00, 0x036c, 0x0000 },

-  { 0x9800, 0x0385, 0x4000 },

-  { 0x9800, 0x0375, 0x3000 },

-  { 0x8c00, 0x036f, 0x2000 },

-  { 0x0c00, 0x036e, 0x0000 },

-  { 0x1800, 0x0374, 0x0000 },

-  { 0x9500, 0x037e, 0x2000 },

-  { 0x0600, 0x037a, 0x0000 },

-  { 0x1800, 0x0384, 0x0000 },

-  { 0x8900, 0x0389, 0x3025 },

-  { 0x9500, 0x0387, 0x2000 },

-  { 0x0900, 0x0386, 0x0026 },

-  { 0x0900, 0x0388, 0x0025 },

-  { 0x8900, 0x038c, 0x2040 },

-  { 0x0900, 0x038a, 0x0025 },

-  { 0x0900, 0x038e, 0x003f },

-  { 0x8900, 0x039f, 0x5020 },

-  { 0x8900, 0x0397, 0x4020 },

-  { 0x8900, 0x0393, 0x3020 },

-  { 0x8900, 0x0391, 0x2020 },

-  { 0x0500, 0x0390, 0x0000 },

-  { 0x0900, 0x0392, 0x0020 },

-  { 0x8900, 0x0395, 0x2020 },

-  { 0x0900, 0x0394, 0x0020 },

-  { 0x0900, 0x0396, 0x0020 },

-  { 0x8900, 0x039b, 0x3020 },

-  { 0x8900, 0x0399, 0x2020 },

-  { 0x0900, 0x0398, 0x0020 },

-  { 0x0900, 0x039a, 0x0020 },

-  { 0x8900, 0x039d, 0x2020 },

-  { 0x0900, 0x039c, 0x0020 },

-  { 0x0900, 0x039e, 0x0020 },

-  { 0x8900, 0x03a8, 0x4020 },

-  { 0x8900, 0x03a4, 0x3020 },

-  { 0x8900, 0x03a1, 0x2020 },

-  { 0x0900, 0x03a0, 0x0020 },

-  { 0x0900, 0x03a3, 0x0020 },

-  { 0x8900, 0x03a6, 0x2020 },

-  { 0x0900, 0x03a5, 0x0020 },

-  { 0x0900, 0x03a7, 0x0020 },

-  { 0x8500, 0x03ac, 0x3fda },

-  { 0x8900, 0x03aa, 0x2020 },

-  { 0x0900, 0x03a9, 0x0020 },

-  { 0x0900, 0x03ab, 0x0020 },

-  { 0x8500, 0x03ae, 0x2fdb },

-  { 0x0500, 0x03ad, 0x0fdb },

-  { 0x0500, 0x03af, 0x0fdb },

-  { 0x8500, 0x03f1, 0x7fb0 },

-  { 0x8500, 0x03d1, 0x6fc7 },

-  { 0x8500, 0x03c0, 0x5fe0 },

-  { 0x8500, 0x03b8, 0x4fe0 },

-  { 0x8500, 0x03b4, 0x3fe0 },

-  { 0x8500, 0x03b2, 0x2fe0 },

-  { 0x0500, 0x03b1, 0x0fe0 },

-  { 0x0500, 0x03b3, 0x0fe0 },

-  { 0x8500, 0x03b6, 0x2fe0 },

-  { 0x0500, 0x03b5, 0x0fe0 },

-  { 0x0500, 0x03b7, 0x0fe0 },

-  { 0x8500, 0x03bc, 0x3fe0 },

-  { 0x8500, 0x03ba, 0x2fe0 },

-  { 0x0500, 0x03b9, 0x0fe0 },

-  { 0x0500, 0x03bb, 0x0fe0 },

-  { 0x8500, 0x03be, 0x2fe0 },

-  { 0x0500, 0x03bd, 0x0fe0 },

-  { 0x0500, 0x03bf, 0x0fe0 },

-  { 0x8500, 0x03c8, 0x4fe0 },

-  { 0x8500, 0x03c4, 0x3fe0 },

-  { 0x8500, 0x03c2, 0x2fe1 },

-  { 0x0500, 0x03c1, 0x0fe0 },

-  { 0x0500, 0x03c3, 0x0fe0 },

-  { 0x8500, 0x03c6, 0x2fe0 },

-  { 0x0500, 0x03c5, 0x0fe0 },

-  { 0x0500, 0x03c7, 0x0fe0 },

-  { 0x8500, 0x03cc, 0x3fc0 },

-  { 0x8500, 0x03ca, 0x2fe0 },

-  { 0x0500, 0x03c9, 0x0fe0 },

-  { 0x0500, 0x03cb, 0x0fe0 },

-  { 0x8500, 0x03ce, 0x2fc1 },

-  { 0x0500, 0x03cd, 0x0fc1 },

-  { 0x0500, 0x03d0, 0x0fc2 },

-  { 0x8500, 0x03e1, 0x5fff },

-  { 0x8500, 0x03d9, 0x4fff },

-  { 0x8500, 0x03d5, 0x3fd1 },

-  { 0x8900, 0x03d3, 0x2000 },

-  { 0x0900, 0x03d2, 0x0000 },

-  { 0x0900, 0x03d4, 0x0000 },

-  { 0x8500, 0x03d7, 0x2000 },

-  { 0x0500, 0x03d6, 0x0fca },

-  { 0x0900, 0x03d8, 0x0001 },

-  { 0x8500, 0x03dd, 0x3fff },

-  { 0x8500, 0x03db, 0x2fff },

-  { 0x0900, 0x03da, 0x0001 },

-  { 0x0900, 0x03dc, 0x0001 },

-  { 0x8500, 0x03df, 0x2fff },

-  { 0x0900, 0x03de, 0x0001 },

-  { 0x0900, 0x03e0, 0x0001 },

-  { 0x8500, 0x03e9, 0x4fff },

-  { 0x8500, 0x03e5, 0x3fff },

-  { 0x8500, 0x03e3, 0x2fff },

-  { 0x0900, 0x03e2, 0x0001 },

-  { 0x0900, 0x03e4, 0x0001 },

-  { 0x8500, 0x03e7, 0x2fff },

-  { 0x0900, 0x03e6, 0x0001 },

-  { 0x0900, 0x03e8, 0x0001 },

-  { 0x8500, 0x03ed, 0x3fff },

-  { 0x8500, 0x03eb, 0x2fff },

-  { 0x0900, 0x03ea, 0x0001 },

-  { 0x0900, 0x03ec, 0x0001 },

-  { 0x8500, 0x03ef, 0x2fff },

-  { 0x0900, 0x03ee, 0x0001 },

-  { 0x0500, 0x03f0, 0x0faa },

-  { 0x8900, 0x0415, 0x6020 },

-  { 0x8900, 0x0405, 0x5050 },

-  { 0x8900, 0x03f9, 0x4ff9 },

-  { 0x8500, 0x03f5, 0x3fa0 },

-  { 0x8500, 0x03f3, 0x2000 },

-  { 0x0500, 0x03f2, 0x0007 },

-  { 0x0900, 0x03f4, 0x0fc4 },

-  { 0x8900, 0x03f7, 0x2001 },

-  { 0x1900, 0x03f6, 0x0000 },

-  { 0x0500, 0x03f8, 0x0fff },

-  { 0x8900, 0x0401, 0x3050 },

-  { 0x8500, 0x03fb, 0x2fff },

-  { 0x0900, 0x03fa, 0x0001 },

-  { 0x0900, 0x0400, 0x0050 },

-  { 0x8900, 0x0403, 0x2050 },

-  { 0x0900, 0x0402, 0x0050 },

-  { 0x0900, 0x0404, 0x0050 },

-  { 0x8900, 0x040d, 0x4050 },

-  { 0x8900, 0x0409, 0x3050 },

-  { 0x8900, 0x0407, 0x2050 },

-  { 0x0900, 0x0406, 0x0050 },

-  { 0x0900, 0x0408, 0x0050 },

-  { 0x8900, 0x040b, 0x2050 },

-  { 0x0900, 0x040a, 0x0050 },

-  { 0x0900, 0x040c, 0x0050 },

-  { 0x8900, 0x0411, 0x3020 },

-  { 0x8900, 0x040f, 0x2050 },

-  { 0x0900, 0x040e, 0x0050 },

-  { 0x0900, 0x0410, 0x0020 },

-  { 0x8900, 0x0413, 0x2020 },

-  { 0x0900, 0x0412, 0x0020 },

-  { 0x0900, 0x0414, 0x0020 },

-  { 0x8900, 0x0425, 0x5020 },

-  { 0x8900, 0x041d, 0x4020 },

-  { 0x8900, 0x0419, 0x3020 },

-  { 0x8900, 0x0417, 0x2020 },

-  { 0x0900, 0x0416, 0x0020 },

-  { 0x0900, 0x0418, 0x0020 },

-  { 0x8900, 0x041b, 0x2020 },

-  { 0x0900, 0x041a, 0x0020 },

-  { 0x0900, 0x041c, 0x0020 },

-  { 0x8900, 0x0421, 0x3020 },

-  { 0x8900, 0x041f, 0x2020 },

-  { 0x0900, 0x041e, 0x0020 },

-  { 0x0900, 0x0420, 0x0020 },

-  { 0x8900, 0x0423, 0x2020 },

-  { 0x0900, 0x0422, 0x0020 },

-  { 0x0900, 0x0424, 0x0020 },

-  { 0x8900, 0x042d, 0x4020 },

-  { 0x8900, 0x0429, 0x3020 },

-  { 0x8900, 0x0427, 0x2020 },

-  { 0x0900, 0x0426, 0x0020 },

-  { 0x0900, 0x0428, 0x0020 },

-  { 0x8900, 0x042b, 0x2020 },

-  { 0x0900, 0x042a, 0x0020 },

-  { 0x0900, 0x042c, 0x0020 },

-  { 0x8500, 0x0431, 0x3fe0 },

-  { 0x8900, 0x042f, 0x2020 },

-  { 0x0900, 0x042e, 0x0020 },

-  { 0x0500, 0x0430, 0x0fe0 },

-  { 0x8500, 0x0433, 0x2fe0 },

-  { 0x0500, 0x0432, 0x0fe0 },

-  { 0x0500, 0x0434, 0x0fe0 },

-  { 0x8700, 0x06a4, 0xa000 },

-  { 0x8500, 0x0563, 0x9fd0 },

-  { 0x8900, 0x04b6, 0x8001 },

-  { 0x8500, 0x0475, 0x7fff },

-  { 0x8500, 0x0455, 0x6fb0 },

-  { 0x8500, 0x0445, 0x5fe0 },

-  { 0x8500, 0x043d, 0x4fe0 },

-  { 0x8500, 0x0439, 0x3fe0 },

-  { 0x8500, 0x0437, 0x2fe0 },

-  { 0x0500, 0x0436, 0x0fe0 },

-  { 0x0500, 0x0438, 0x0fe0 },

-  { 0x8500, 0x043b, 0x2fe0 },

-  { 0x0500, 0x043a, 0x0fe0 },

-  { 0x0500, 0x043c, 0x0fe0 },

-  { 0x8500, 0x0441, 0x3fe0 },

-  { 0x8500, 0x043f, 0x2fe0 },

-  { 0x0500, 0x043e, 0x0fe0 },

-  { 0x0500, 0x0440, 0x0fe0 },

-  { 0x8500, 0x0443, 0x2fe0 },

-  { 0x0500, 0x0442, 0x0fe0 },

-  { 0x0500, 0x0444, 0x0fe0 },

-  { 0x8500, 0x044d, 0x4fe0 },

-  { 0x8500, 0x0449, 0x3fe0 },

-  { 0x8500, 0x0447, 0x2fe0 },

-  { 0x0500, 0x0446, 0x0fe0 },

-  { 0x0500, 0x0448, 0x0fe0 },

-  { 0x8500, 0x044b, 0x2fe0 },

-  { 0x0500, 0x044a, 0x0fe0 },

-  { 0x0500, 0x044c, 0x0fe0 },

-  { 0x8500, 0x0451, 0x3fb0 },

-  { 0x8500, 0x044f, 0x2fe0 },

-  { 0x0500, 0x044e, 0x0fe0 },

-  { 0x0500, 0x0450, 0x0fb0 },

-  { 0x8500, 0x0453, 0x2fb0 },

-  { 0x0500, 0x0452, 0x0fb0 },

-  { 0x0500, 0x0454, 0x0fb0 },

-  { 0x8500, 0x0465, 0x5fff },

-  { 0x8500, 0x045d, 0x4fb0 },

-  { 0x8500, 0x0459, 0x3fb0 },

-  { 0x8500, 0x0457, 0x2fb0 },

-  { 0x0500, 0x0456, 0x0fb0 },

-  { 0x0500, 0x0458, 0x0fb0 },

-  { 0x8500, 0x045b, 0x2fb0 },

-  { 0x0500, 0x045a, 0x0fb0 },

-  { 0x0500, 0x045c, 0x0fb0 },

-  { 0x8500, 0x0461, 0x3fff },

-  { 0x8500, 0x045f, 0x2fb0 },

-  { 0x0500, 0x045e, 0x0fb0 },

-  { 0x0900, 0x0460, 0x0001 },

-  { 0x8500, 0x0463, 0x2fff },

-  { 0x0900, 0x0462, 0x0001 },

-  { 0x0900, 0x0464, 0x0001 },

-  { 0x8500, 0x046d, 0x4fff },

-  { 0x8500, 0x0469, 0x3fff },

-  { 0x8500, 0x0467, 0x2fff },

-  { 0x0900, 0x0466, 0x0001 },

-  { 0x0900, 0x0468, 0x0001 },

-  { 0x8500, 0x046b, 0x2fff },

-  { 0x0900, 0x046a, 0x0001 },

-  { 0x0900, 0x046c, 0x0001 },

-  { 0x8500, 0x0471, 0x3fff },

-  { 0x8500, 0x046f, 0x2fff },

-  { 0x0900, 0x046e, 0x0001 },

-  { 0x0900, 0x0470, 0x0001 },

-  { 0x8500, 0x0473, 0x2fff },

-  { 0x0900, 0x0472, 0x0001 },

-  { 0x0900, 0x0474, 0x0001 },

-  { 0x8900, 0x0496, 0x6001 },

-  { 0x8c00, 0x0485, 0x5000 },

-  { 0x8500, 0x047d, 0x4fff },

-  { 0x8500, 0x0479, 0x3fff },

-  { 0x8500, 0x0477, 0x2fff },

-  { 0x0900, 0x0476, 0x0001 },

-  { 0x0900, 0x0478, 0x0001 },

-  { 0x8500, 0x047b, 0x2fff },

-  { 0x0900, 0x047a, 0x0001 },

-  { 0x0900, 0x047c, 0x0001 },

-  { 0x8500, 0x0481, 0x3fff },

-  { 0x8500, 0x047f, 0x2fff },

-  { 0x0900, 0x047e, 0x0001 },

-  { 0x0900, 0x0480, 0x0001 },

-  { 0x8c00, 0x0483, 0x2000 },

-  { 0x1a00, 0x0482, 0x0000 },

-  { 0x0c00, 0x0484, 0x0000 },

-  { 0x8900, 0x048e, 0x4001 },

-  { 0x8900, 0x048a, 0x3001 },

-  { 0x8b00, 0x0488, 0x2000 },

-  { 0x0c00, 0x0486, 0x0000 },

-  { 0x0b00, 0x0489, 0x0000 },

-  { 0x8900, 0x048c, 0x2001 },

-  { 0x0500, 0x048b, 0x0fff },

-  { 0x0500, 0x048d, 0x0fff },

-  { 0x8900, 0x0492, 0x3001 },

-  { 0x8900, 0x0490, 0x2001 },

-  { 0x0500, 0x048f, 0x0fff },

-  { 0x0500, 0x0491, 0x0fff },

-  { 0x8900, 0x0494, 0x2001 },

-  { 0x0500, 0x0493, 0x0fff },

-  { 0x0500, 0x0495, 0x0fff },

-  { 0x8900, 0x04a6, 0x5001 },

-  { 0x8900, 0x049e, 0x4001 },

-  { 0x8900, 0x049a, 0x3001 },

-  { 0x8900, 0x0498, 0x2001 },

-  { 0x0500, 0x0497, 0x0fff },

-  { 0x0500, 0x0499, 0x0fff },

-  { 0x8900, 0x049c, 0x2001 },

-  { 0x0500, 0x049b, 0x0fff },

-  { 0x0500, 0x049d, 0x0fff },

-  { 0x8900, 0x04a2, 0x3001 },

-  { 0x8900, 0x04a0, 0x2001 },

-  { 0x0500, 0x049f, 0x0fff },

-  { 0x0500, 0x04a1, 0x0fff },

-  { 0x8900, 0x04a4, 0x2001 },

-  { 0x0500, 0x04a3, 0x0fff },

-  { 0x0500, 0x04a5, 0x0fff },

-  { 0x8900, 0x04ae, 0x4001 },

-  { 0x8900, 0x04aa, 0x3001 },

-  { 0x8900, 0x04a8, 0x2001 },

-  { 0x0500, 0x04a7, 0x0fff },

-  { 0x0500, 0x04a9, 0x0fff },

-  { 0x8900, 0x04ac, 0x2001 },

-  { 0x0500, 0x04ab, 0x0fff },

-  { 0x0500, 0x04ad, 0x0fff },

-  { 0x8900, 0x04b2, 0x3001 },

-  { 0x8900, 0x04b0, 0x2001 },

-  { 0x0500, 0x04af, 0x0fff },

-  { 0x0500, 0x04b1, 0x0fff },

-  { 0x8900, 0x04b4, 0x2001 },

-  { 0x0500, 0x04b3, 0x0fff },

-  { 0x0500, 0x04b5, 0x0fff },

-  { 0x8500, 0x04f9, 0x7fff },

-  { 0x8500, 0x04d7, 0x6fff },

-  { 0x8500, 0x04c6, 0x5fff },

-  { 0x8900, 0x04be, 0x4001 },

-  { 0x8900, 0x04ba, 0x3001 },

-  { 0x8900, 0x04b8, 0x2001 },

-  { 0x0500, 0x04b7, 0x0fff },

-  { 0x0500, 0x04b9, 0x0fff },

-  { 0x8900, 0x04bc, 0x2001 },

-  { 0x0500, 0x04bb, 0x0fff },

-  { 0x0500, 0x04bd, 0x0fff },

-  { 0x8500, 0x04c2, 0x3fff },

-  { 0x8900, 0x04c0, 0x2000 },

-  { 0x0500, 0x04bf, 0x0fff },

-  { 0x0900, 0x04c1, 0x0001 },

-  { 0x8500, 0x04c4, 0x2fff },

-  { 0x0900, 0x04c3, 0x0001 },

-  { 0x0900, 0x04c5, 0x0001 },

-  { 0x8500, 0x04ce, 0x4fff },

-  { 0x8500, 0x04ca, 0x3fff },

-  { 0x8500, 0x04c8, 0x2fff },

-  { 0x0900, 0x04c7, 0x0001 },

-  { 0x0900, 0x04c9, 0x0001 },

-  { 0x8500, 0x04cc, 0x2fff },

-  { 0x0900, 0x04cb, 0x0001 },

-  { 0x0900, 0x04cd, 0x0001 },

-  { 0x8500, 0x04d3, 0x3fff },

-  { 0x8500, 0x04d1, 0x2fff },

-  { 0x0900, 0x04d0, 0x0001 },

-  { 0x0900, 0x04d2, 0x0001 },

-  { 0x8500, 0x04d5, 0x2fff },

-  { 0x0900, 0x04d4, 0x0001 },

-  { 0x0900, 0x04d6, 0x0001 },

-  { 0x8500, 0x04e7, 0x5fff },

-  { 0x8500, 0x04df, 0x4fff },

-  { 0x8500, 0x04db, 0x3fff },

-  { 0x8500, 0x04d9, 0x2fff },

-  { 0x0900, 0x04d8, 0x0001 },

-  { 0x0900, 0x04da, 0x0001 },

-  { 0x8500, 0x04dd, 0x2fff },

-  { 0x0900, 0x04dc, 0x0001 },

-  { 0x0900, 0x04de, 0x0001 },

-  { 0x8500, 0x04e3, 0x3fff },

-  { 0x8500, 0x04e1, 0x2fff },

-  { 0x0900, 0x04e0, 0x0001 },

-  { 0x0900, 0x04e2, 0x0001 },

-  { 0x8500, 0x04e5, 0x2fff },

-  { 0x0900, 0x04e4, 0x0001 },

-  { 0x0900, 0x04e6, 0x0001 },

-  { 0x8500, 0x04ef, 0x4fff },

-  { 0x8500, 0x04eb, 0x3fff },

-  { 0x8500, 0x04e9, 0x2fff },

-  { 0x0900, 0x04e8, 0x0001 },

-  { 0x0900, 0x04ea, 0x0001 },

-  { 0x8500, 0x04ed, 0x2fff },

-  { 0x0900, 0x04ec, 0x0001 },

-  { 0x0900, 0x04ee, 0x0001 },

-  { 0x8500, 0x04f3, 0x3fff },

-  { 0x8500, 0x04f1, 0x2fff },

-  { 0x0900, 0x04f0, 0x0001 },

-  { 0x0900, 0x04f2, 0x0001 },

-  { 0x8500, 0x04f5, 0x2fff },

-  { 0x0900, 0x04f4, 0x0001 },

-  { 0x0900, 0x04f8, 0x0001 },

-  { 0x8900, 0x0540, 0x6030 },

-  { 0x8500, 0x050f, 0x5fff },

-  { 0x8500, 0x0507, 0x4fff },

-  { 0x8500, 0x0503, 0x3fff },

-  { 0x8500, 0x0501, 0x2fff },

-  { 0x0900, 0x0500, 0x0001 },

-  { 0x0900, 0x0502, 0x0001 },

-  { 0x8500, 0x0505, 0x2fff },

-  { 0x0900, 0x0504, 0x0001 },

-  { 0x0900, 0x0506, 0x0001 },

-  { 0x8500, 0x050b, 0x3fff },

-  { 0x8500, 0x0509, 0x2fff },

-  { 0x0900, 0x0508, 0x0001 },

-  { 0x0900, 0x050a, 0x0001 },

-  { 0x8500, 0x050d, 0x2fff },

-  { 0x0900, 0x050c, 0x0001 },

-  { 0x0900, 0x050e, 0x0001 },

-  { 0x8900, 0x0538, 0x4030 },

-  { 0x8900, 0x0534, 0x3030 },

-  { 0x8900, 0x0532, 0x2030 },

-  { 0x0900, 0x0531, 0x0030 },

-  { 0x0900, 0x0533, 0x0030 },

-  { 0x8900, 0x0536, 0x2030 },

-  { 0x0900, 0x0535, 0x0030 },

-  { 0x0900, 0x0537, 0x0030 },

-  { 0x8900, 0x053c, 0x3030 },

-  { 0x8900, 0x053a, 0x2030 },

-  { 0x0900, 0x0539, 0x0030 },

-  { 0x0900, 0x053b, 0x0030 },

-  { 0x8900, 0x053e, 0x2030 },

-  { 0x0900, 0x053d, 0x0030 },

-  { 0x0900, 0x053f, 0x0030 },

-  { 0x8900, 0x0550, 0x5030 },

-  { 0x8900, 0x0548, 0x4030 },

-  { 0x8900, 0x0544, 0x3030 },

-  { 0x8900, 0x0542, 0x2030 },

-  { 0x0900, 0x0541, 0x0030 },

-  { 0x0900, 0x0543, 0x0030 },

-  { 0x8900, 0x0546, 0x2030 },

-  { 0x0900, 0x0545, 0x0030 },

-  { 0x0900, 0x0547, 0x0030 },

-  { 0x8900, 0x054c, 0x3030 },

-  { 0x8900, 0x054a, 0x2030 },

-  { 0x0900, 0x0549, 0x0030 },

-  { 0x0900, 0x054b, 0x0030 },

-  { 0x8900, 0x054e, 0x2030 },

-  { 0x0900, 0x054d, 0x0030 },

-  { 0x0900, 0x054f, 0x0030 },

-  { 0x9500, 0x055a, 0x4000 },

-  { 0x8900, 0x0554, 0x3030 },

-  { 0x8900, 0x0552, 0x2030 },

-  { 0x0900, 0x0551, 0x0030 },

-  { 0x0900, 0x0553, 0x0030 },

-  { 0x8900, 0x0556, 0x2030 },

-  { 0x0900, 0x0555, 0x0030 },

-  { 0x0600, 0x0559, 0x0000 },

-  { 0x9500, 0x055e, 0x3000 },

-  { 0x9500, 0x055c, 0x2000 },

-  { 0x1500, 0x055b, 0x0000 },

-  { 0x1500, 0x055d, 0x0000 },

-  { 0x8500, 0x0561, 0x2fd0 },

-  { 0x1500, 0x055f, 0x0000 },

-  { 0x0500, 0x0562, 0x0fd0 },

-  { 0x9a00, 0x060f, 0x8000 },

-  { 0x8c00, 0x05ab, 0x7000 },

-  { 0x8500, 0x0583, 0x6fd0 },

-  { 0x8500, 0x0573, 0x5fd0 },

-  { 0x8500, 0x056b, 0x4fd0 },

-  { 0x8500, 0x0567, 0x3fd0 },

-  { 0x8500, 0x0565, 0x2fd0 },

-  { 0x0500, 0x0564, 0x0fd0 },

-  { 0x0500, 0x0566, 0x0fd0 },

-  { 0x8500, 0x0569, 0x2fd0 },

-  { 0x0500, 0x0568, 0x0fd0 },

-  { 0x0500, 0x056a, 0x0fd0 },

-  { 0x8500, 0x056f, 0x3fd0 },

-  { 0x8500, 0x056d, 0x2fd0 },

-  { 0x0500, 0x056c, 0x0fd0 },

-  { 0x0500, 0x056e, 0x0fd0 },

-  { 0x8500, 0x0571, 0x2fd0 },

-  { 0x0500, 0x0570, 0x0fd0 },

-  { 0x0500, 0x0572, 0x0fd0 },

-  { 0x8500, 0x057b, 0x4fd0 },

-  { 0x8500, 0x0577, 0x3fd0 },

-  { 0x8500, 0x0575, 0x2fd0 },

-  { 0x0500, 0x0574, 0x0fd0 },

-  { 0x0500, 0x0576, 0x0fd0 },

-  { 0x8500, 0x0579, 0x2fd0 },

-  { 0x0500, 0x0578, 0x0fd0 },

-  { 0x0500, 0x057a, 0x0fd0 },

-  { 0x8500, 0x057f, 0x3fd0 },

-  { 0x8500, 0x057d, 0x2fd0 },

-  { 0x0500, 0x057c, 0x0fd0 },

-  { 0x0500, 0x057e, 0x0fd0 },

-  { 0x8500, 0x0581, 0x2fd0 },

-  { 0x0500, 0x0580, 0x0fd0 },

-  { 0x0500, 0x0582, 0x0fd0 },

-  { 0x8c00, 0x059a, 0x5000 },

-  { 0x8c00, 0x0592, 0x4000 },

-  { 0x8500, 0x0587, 0x3000 },

-  { 0x8500, 0x0585, 0x2fd0 },

-  { 0x0500, 0x0584, 0x0fd0 },

-  { 0x0500, 0x0586, 0x0fd0 },

-  { 0x9100, 0x058a, 0x2000 },

-  { 0x1500, 0x0589, 0x0000 },

-  { 0x0c00, 0x0591, 0x0000 },

-  { 0x8c00, 0x0596, 0x3000 },

-  { 0x8c00, 0x0594, 0x2000 },

-  { 0x0c00, 0x0593, 0x0000 },

-  { 0x0c00, 0x0595, 0x0000 },

-  { 0x8c00, 0x0598, 0x2000 },

-  { 0x0c00, 0x0597, 0x0000 },

-  { 0x0c00, 0x0599, 0x0000 },

-  { 0x8c00, 0x05a3, 0x4000 },

-  { 0x8c00, 0x059e, 0x3000 },

-  { 0x8c00, 0x059c, 0x2000 },

-  { 0x0c00, 0x059b, 0x0000 },

-  { 0x0c00, 0x059d, 0x0000 },

-  { 0x8c00, 0x05a0, 0x2000 },

-  { 0x0c00, 0x059f, 0x0000 },

-  { 0x0c00, 0x05a1, 0x0000 },

-  { 0x8c00, 0x05a7, 0x3000 },

-  { 0x8c00, 0x05a5, 0x2000 },

-  { 0x0c00, 0x05a4, 0x0000 },

-  { 0x0c00, 0x05a6, 0x0000 },

-  { 0x8c00, 0x05a9, 0x2000 },

-  { 0x0c00, 0x05a8, 0x0000 },

-  { 0x0c00, 0x05aa, 0x0000 },

-  { 0x8700, 0x05d7, 0x6000 },

-  { 0x8c00, 0x05bc, 0x5000 },

-  { 0x8c00, 0x05b3, 0x4000 },

-  { 0x8c00, 0x05af, 0x3000 },

-  { 0x8c00, 0x05ad, 0x2000 },

-  { 0x0c00, 0x05ac, 0x0000 },

-  { 0x0c00, 0x05ae, 0x0000 },

-  { 0x8c00, 0x05b1, 0x2000 },

-  { 0x0c00, 0x05b0, 0x0000 },

-  { 0x0c00, 0x05b2, 0x0000 },

-  { 0x8c00, 0x05b7, 0x3000 },

-  { 0x8c00, 0x05b5, 0x2000 },

-  { 0x0c00, 0x05b4, 0x0000 },

-  { 0x0c00, 0x05b6, 0x0000 },

-  { 0x8c00, 0x05b9, 0x2000 },

-  { 0x0c00, 0x05b8, 0x0000 },

-  { 0x0c00, 0x05bb, 0x0000 },

-  { 0x8c00, 0x05c4, 0x4000 },

-  { 0x9500, 0x05c0, 0x3000 },

-  { 0x9500, 0x05be, 0x2000 },

-  { 0x0c00, 0x05bd, 0x0000 },

-  { 0x0c00, 0x05bf, 0x0000 },

-  { 0x8c00, 0x05c2, 0x2000 },

-  { 0x0c00, 0x05c1, 0x0000 },

-  { 0x1500, 0x05c3, 0x0000 },

-  { 0x8700, 0x05d3, 0x3000 },

-  { 0x8700, 0x05d1, 0x2000 },

-  { 0x0700, 0x05d0, 0x0000 },

-  { 0x0700, 0x05d2, 0x0000 },

-  { 0x8700, 0x05d5, 0x2000 },

-  { 0x0700, 0x05d4, 0x0000 },

-  { 0x0700, 0x05d6, 0x0000 },

-  { 0x8700, 0x05e7, 0x5000 },

-  { 0x8700, 0x05df, 0x4000 },

-  { 0x8700, 0x05db, 0x3000 },

-  { 0x8700, 0x05d9, 0x2000 },

-  { 0x0700, 0x05d8, 0x0000 },

-  { 0x0700, 0x05da, 0x0000 },

-  { 0x8700, 0x05dd, 0x2000 },

-  { 0x0700, 0x05dc, 0x0000 },

-  { 0x0700, 0x05de, 0x0000 },

-  { 0x8700, 0x05e3, 0x3000 },

-  { 0x8700, 0x05e1, 0x2000 },

-  { 0x0700, 0x05e0, 0x0000 },

-  { 0x0700, 0x05e2, 0x0000 },

-  { 0x8700, 0x05e5, 0x2000 },

-  { 0x0700, 0x05e4, 0x0000 },

-  { 0x0700, 0x05e6, 0x0000 },

-  { 0x9500, 0x05f4, 0x4000 },

-  { 0x8700, 0x05f0, 0x3000 },

-  { 0x8700, 0x05e9, 0x2000 },

-  { 0x0700, 0x05e8, 0x0000 },

-  { 0x0700, 0x05ea, 0x0000 },

-  { 0x8700, 0x05f2, 0x2000 },

-  { 0x0700, 0x05f1, 0x0000 },

-  { 0x1500, 0x05f3, 0x0000 },

-  { 0x8100, 0x0603, 0x3000 },

-  { 0x8100, 0x0601, 0x2000 },

-  { 0x0100, 0x0600, 0x0000 },

-  { 0x0100, 0x0602, 0x0000 },

-  { 0x9500, 0x060d, 0x2000 },

-  { 0x1500, 0x060c, 0x0000 },

-  { 0x1a00, 0x060e, 0x0000 },

-  { 0x8d00, 0x0664, 0x7000 },

-  { 0x8700, 0x0638, 0x6000 },

-  { 0x8700, 0x0628, 0x5000 },

-  { 0x9500, 0x061f, 0x4000 },

-  { 0x8c00, 0x0613, 0x3000 },

-  { 0x8c00, 0x0611, 0x2000 },

-  { 0x0c00, 0x0610, 0x0000 },

-  { 0x0c00, 0x0612, 0x0000 },

-  { 0x8c00, 0x0615, 0x2000 },

-  { 0x0c00, 0x0614, 0x0000 },

-  { 0x1500, 0x061b, 0x0000 },

-  { 0x8700, 0x0624, 0x3000 },

-  { 0x8700, 0x0622, 0x2000 },

-  { 0x0700, 0x0621, 0x0000 },

-  { 0x0700, 0x0623, 0x0000 },

-  { 0x8700, 0x0626, 0x2000 },

-  { 0x0700, 0x0625, 0x0000 },

-  { 0x0700, 0x0627, 0x0000 },

-  { 0x8700, 0x0630, 0x4000 },

-  { 0x8700, 0x062c, 0x3000 },

-  { 0x8700, 0x062a, 0x2000 },

-  { 0x0700, 0x0629, 0x0000 },

-  { 0x0700, 0x062b, 0x0000 },

-  { 0x8700, 0x062e, 0x2000 },

-  { 0x0700, 0x062d, 0x0000 },

-  { 0x0700, 0x062f, 0x0000 },

-  { 0x8700, 0x0634, 0x3000 },

-  { 0x8700, 0x0632, 0x2000 },

-  { 0x0700, 0x0631, 0x0000 },

-  { 0x0700, 0x0633, 0x0000 },

-  { 0x8700, 0x0636, 0x2000 },

-  { 0x0700, 0x0635, 0x0000 },

-  { 0x0700, 0x0637, 0x0000 },

-  { 0x8c00, 0x064d, 0x5000 },

-  { 0x8700, 0x0645, 0x4000 },

-  { 0x8700, 0x0641, 0x3000 },

-  { 0x8700, 0x063a, 0x2000 },

-  { 0x0700, 0x0639, 0x0000 },

-  { 0x0600, 0x0640, 0x0000 },

-  { 0x8700, 0x0643, 0x2000 },

-  { 0x0700, 0x0642, 0x0000 },

-  { 0x0700, 0x0644, 0x0000 },

-  { 0x8700, 0x0649, 0x3000 },

-  { 0x8700, 0x0647, 0x2000 },

-  { 0x0700, 0x0646, 0x0000 },

-  { 0x0700, 0x0648, 0x0000 },

-  { 0x8c00, 0x064b, 0x2000 },

-  { 0x0700, 0x064a, 0x0000 },

-  { 0x0c00, 0x064c, 0x0000 },

-  { 0x8c00, 0x0655, 0x4000 },

-  { 0x8c00, 0x0651, 0x3000 },

-  { 0x8c00, 0x064f, 0x2000 },

-  { 0x0c00, 0x064e, 0x0000 },

-  { 0x0c00, 0x0650, 0x0000 },

-  { 0x8c00, 0x0653, 0x2000 },

-  { 0x0c00, 0x0652, 0x0000 },

-  { 0x0c00, 0x0654, 0x0000 },

-  { 0x8d00, 0x0660, 0x3000 },

-  { 0x8c00, 0x0657, 0x2000 },

-  { 0x0c00, 0x0656, 0x0000 },

-  { 0x0c00, 0x0658, 0x0000 },

-  { 0x8d00, 0x0662, 0x2000 },

-  { 0x0d00, 0x0661, 0x0000 },

-  { 0x0d00, 0x0663, 0x0000 },

-  { 0x8700, 0x0684, 0x6000 },

-  { 0x8700, 0x0674, 0x5000 },

-  { 0x9500, 0x066c, 0x4000 },

-  { 0x8d00, 0x0668, 0x3000 },

-  { 0x8d00, 0x0666, 0x2000 },

-  { 0x0d00, 0x0665, 0x0000 },

-  { 0x0d00, 0x0667, 0x0000 },

-  { 0x9500, 0x066a, 0x2000 },

-  { 0x0d00, 0x0669, 0x0000 },

-  { 0x1500, 0x066b, 0x0000 },

-  { 0x8c00, 0x0670, 0x3000 },

-  { 0x8700, 0x066e, 0x2000 },

-  { 0x1500, 0x066d, 0x0000 },

-  { 0x0700, 0x066f, 0x0000 },

-  { 0x8700, 0x0672, 0x2000 },

-  { 0x0700, 0x0671, 0x0000 },

-  { 0x0700, 0x0673, 0x0000 },

-  { 0x8700, 0x067c, 0x4000 },

-  { 0x8700, 0x0678, 0x3000 },

-  { 0x8700, 0x0676, 0x2000 },

-  { 0x0700, 0x0675, 0x0000 },

-  { 0x0700, 0x0677, 0x0000 },

-  { 0x8700, 0x067a, 0x2000 },

-  { 0x0700, 0x0679, 0x0000 },

-  { 0x0700, 0x067b, 0x0000 },

-  { 0x8700, 0x0680, 0x3000 },

-  { 0x8700, 0x067e, 0x2000 },

-  { 0x0700, 0x067d, 0x0000 },

-  { 0x0700, 0x067f, 0x0000 },

-  { 0x8700, 0x0682, 0x2000 },

-  { 0x0700, 0x0681, 0x0000 },

-  { 0x0700, 0x0683, 0x0000 },

-  { 0x8700, 0x0694, 0x5000 },

-  { 0x8700, 0x068c, 0x4000 },

-  { 0x8700, 0x0688, 0x3000 },

-  { 0x8700, 0x0686, 0x2000 },

-  { 0x0700, 0x0685, 0x0000 },

-  { 0x0700, 0x0687, 0x0000 },

-  { 0x8700, 0x068a, 0x2000 },

-  { 0x0700, 0x0689, 0x0000 },

-  { 0x0700, 0x068b, 0x0000 },

-  { 0x8700, 0x0690, 0x3000 },

-  { 0x8700, 0x068e, 0x2000 },

-  { 0x0700, 0x068d, 0x0000 },

-  { 0x0700, 0x068f, 0x0000 },

-  { 0x8700, 0x0692, 0x2000 },

-  { 0x0700, 0x0691, 0x0000 },

-  { 0x0700, 0x0693, 0x0000 },

-  { 0x8700, 0x069c, 0x4000 },

-  { 0x8700, 0x0698, 0x3000 },

-  { 0x8700, 0x0696, 0x2000 },

-  { 0x0700, 0x0695, 0x0000 },

-  { 0x0700, 0x0697, 0x0000 },

-  { 0x8700, 0x069a, 0x2000 },

-  { 0x0700, 0x0699, 0x0000 },

-  { 0x0700, 0x069b, 0x0000 },

-  { 0x8700, 0x06a0, 0x3000 },

-  { 0x8700, 0x069e, 0x2000 },

-  { 0x0700, 0x069d, 0x0000 },

-  { 0x0700, 0x069f, 0x0000 },

-  { 0x8700, 0x06a2, 0x2000 },

-  { 0x0700, 0x06a1, 0x0000 },

-  { 0x0700, 0x06a3, 0x0000 },

-  { 0x8700, 0x0926, 0x9000 },

-  { 0x8700, 0x0725, 0x8000 },

-  { 0x8c00, 0x06e4, 0x7000 },

-  { 0x8700, 0x06c4, 0x6000 },

-  { 0x8700, 0x06b4, 0x5000 },

-  { 0x8700, 0x06ac, 0x4000 },

-  { 0x8700, 0x06a8, 0x3000 },

-  { 0x8700, 0x06a6, 0x2000 },

-  { 0x0700, 0x06a5, 0x0000 },

-  { 0x0700, 0x06a7, 0x0000 },

-  { 0x8700, 0x06aa, 0x2000 },

-  { 0x0700, 0x06a9, 0x0000 },

-  { 0x0700, 0x06ab, 0x0000 },

-  { 0x8700, 0x06b0, 0x3000 },

-  { 0x8700, 0x06ae, 0x2000 },

-  { 0x0700, 0x06ad, 0x0000 },

-  { 0x0700, 0x06af, 0x0000 },

-  { 0x8700, 0x06b2, 0x2000 },

-  { 0x0700, 0x06b1, 0x0000 },

-  { 0x0700, 0x06b3, 0x0000 },

-  { 0x8700, 0x06bc, 0x4000 },

-  { 0x8700, 0x06b8, 0x3000 },

-  { 0x8700, 0x06b6, 0x2000 },

-  { 0x0700, 0x06b5, 0x0000 },

-  { 0x0700, 0x06b7, 0x0000 },

-  { 0x8700, 0x06ba, 0x2000 },

-  { 0x0700, 0x06b9, 0x0000 },

-  { 0x0700, 0x06bb, 0x0000 },

-  { 0x8700, 0x06c0, 0x3000 },

-  { 0x8700, 0x06be, 0x2000 },

-  { 0x0700, 0x06bd, 0x0000 },

-  { 0x0700, 0x06bf, 0x0000 },

-  { 0x8700, 0x06c2, 0x2000 },

-  { 0x0700, 0x06c1, 0x0000 },

-  { 0x0700, 0x06c3, 0x0000 },

-  { 0x9500, 0x06d4, 0x5000 },

-  { 0x8700, 0x06cc, 0x4000 },

-  { 0x8700, 0x06c8, 0x3000 },

-  { 0x8700, 0x06c6, 0x2000 },

-  { 0x0700, 0x06c5, 0x0000 },

-  { 0x0700, 0x06c7, 0x0000 },

-  { 0x8700, 0x06ca, 0x2000 },

-  { 0x0700, 0x06c9, 0x0000 },

-  { 0x0700, 0x06cb, 0x0000 },

-  { 0x8700, 0x06d0, 0x3000 },

-  { 0x8700, 0x06ce, 0x2000 },

-  { 0x0700, 0x06cd, 0x0000 },

-  { 0x0700, 0x06cf, 0x0000 },

-  { 0x8700, 0x06d2, 0x2000 },

-  { 0x0700, 0x06d1, 0x0000 },

-  { 0x0700, 0x06d3, 0x0000 },

-  { 0x8c00, 0x06dc, 0x4000 },

-  { 0x8c00, 0x06d8, 0x3000 },

-  { 0x8c00, 0x06d6, 0x2000 },

-  { 0x0700, 0x06d5, 0x0000 },

-  { 0x0c00, 0x06d7, 0x0000 },

-  { 0x8c00, 0x06da, 0x2000 },

-  { 0x0c00, 0x06d9, 0x0000 },

-  { 0x0c00, 0x06db, 0x0000 },

-  { 0x8c00, 0x06e0, 0x3000 },

-  { 0x8b00, 0x06de, 0x2000 },

-  { 0x0100, 0x06dd, 0x0000 },

-  { 0x0c00, 0x06df, 0x0000 },

-  { 0x8c00, 0x06e2, 0x2000 },

-  { 0x0c00, 0x06e1, 0x0000 },

-  { 0x0c00, 0x06e3, 0x0000 },

-  { 0x9500, 0x0704, 0x6000 },

-  { 0x8d00, 0x06f4, 0x5000 },

-  { 0x8c00, 0x06ec, 0x4000 },

-  { 0x8c00, 0x06e8, 0x3000 },

-  { 0x8600, 0x06e6, 0x2000 },

-  { 0x0600, 0x06e5, 0x0000 },

-  { 0x0c00, 0x06e7, 0x0000 },

-  { 0x8c00, 0x06ea, 0x2000 },

-  { 0x1a00, 0x06e9, 0x0000 },

-  { 0x0c00, 0x06eb, 0x0000 },

-  { 0x8d00, 0x06f0, 0x3000 },

-  { 0x8700, 0x06ee, 0x2000 },

-  { 0x0c00, 0x06ed, 0x0000 },

-  { 0x0700, 0x06ef, 0x0000 },

-  { 0x8d00, 0x06f2, 0x2000 },

-  { 0x0d00, 0x06f1, 0x0000 },

-  { 0x0d00, 0x06f3, 0x0000 },

-  { 0x8700, 0x06fc, 0x4000 },

-  { 0x8d00, 0x06f8, 0x3000 },

-  { 0x8d00, 0x06f6, 0x2000 },

-  { 0x0d00, 0x06f5, 0x0000 },

-  { 0x0d00, 0x06f7, 0x0000 },

-  { 0x8700, 0x06fa, 0x2000 },

-  { 0x0d00, 0x06f9, 0x0000 },

-  { 0x0700, 0x06fb, 0x0000 },

-  { 0x9500, 0x0700, 0x3000 },

-  { 0x9a00, 0x06fe, 0x2000 },

-  { 0x1a00, 0x06fd, 0x0000 },

-  { 0x0700, 0x06ff, 0x0000 },

-  { 0x9500, 0x0702, 0x2000 },

-  { 0x1500, 0x0701, 0x0000 },

-  { 0x1500, 0x0703, 0x0000 },

-  { 0x8700, 0x0715, 0x5000 },

-  { 0x9500, 0x070c, 0x4000 },

-  { 0x9500, 0x0708, 0x3000 },

-  { 0x9500, 0x0706, 0x2000 },

-  { 0x1500, 0x0705, 0x0000 },

-  { 0x1500, 0x0707, 0x0000 },

-  { 0x9500, 0x070a, 0x2000 },

-  { 0x1500, 0x0709, 0x0000 },

-  { 0x1500, 0x070b, 0x0000 },

-  { 0x8c00, 0x0711, 0x3000 },

-  { 0x8100, 0x070f, 0x2000 },

-  { 0x1500, 0x070d, 0x0000 },

-  { 0x0700, 0x0710, 0x0000 },

-  { 0x8700, 0x0713, 0x2000 },

-  { 0x0700, 0x0712, 0x0000 },

-  { 0x0700, 0x0714, 0x0000 },

-  { 0x8700, 0x071d, 0x4000 },

-  { 0x8700, 0x0719, 0x3000 },

-  { 0x8700, 0x0717, 0x2000 },

-  { 0x0700, 0x0716, 0x0000 },

-  { 0x0700, 0x0718, 0x0000 },

-  { 0x8700, 0x071b, 0x2000 },

-  { 0x0700, 0x071a, 0x0000 },

-  { 0x0700, 0x071c, 0x0000 },

-  { 0x8700, 0x0721, 0x3000 },

-  { 0x8700, 0x071f, 0x2000 },

-  { 0x0700, 0x071e, 0x0000 },

-  { 0x0700, 0x0720, 0x0000 },

-  { 0x8700, 0x0723, 0x2000 },

-  { 0x0700, 0x0722, 0x0000 },

-  { 0x0700, 0x0724, 0x0000 },

-  { 0x8700, 0x0797, 0x7000 },

-  { 0x8c00, 0x0745, 0x6000 },

-  { 0x8c00, 0x0735, 0x5000 },

-  { 0x8700, 0x072d, 0x4000 },

-  { 0x8700, 0x0729, 0x3000 },

-  { 0x8700, 0x0727, 0x2000 },

-  { 0x0700, 0x0726, 0x0000 },

-  { 0x0700, 0x0728, 0x0000 },

-  { 0x8700, 0x072b, 0x2000 },

-  { 0x0700, 0x072a, 0x0000 },

-  { 0x0700, 0x072c, 0x0000 },

-  { 0x8c00, 0x0731, 0x3000 },

-  { 0x8700, 0x072f, 0x2000 },

-  { 0x0700, 0x072e, 0x0000 },

-  { 0x0c00, 0x0730, 0x0000 },

-  { 0x8c00, 0x0733, 0x2000 },

-  { 0x0c00, 0x0732, 0x0000 },

-  { 0x0c00, 0x0734, 0x0000 },

-  { 0x8c00, 0x073d, 0x4000 },

-  { 0x8c00, 0x0739, 0x3000 },

-  { 0x8c00, 0x0737, 0x2000 },

-  { 0x0c00, 0x0736, 0x0000 },

-  { 0x0c00, 0x0738, 0x0000 },

-  { 0x8c00, 0x073b, 0x2000 },

-  { 0x0c00, 0x073a, 0x0000 },

-  { 0x0c00, 0x073c, 0x0000 },

-  { 0x8c00, 0x0741, 0x3000 },

-  { 0x8c00, 0x073f, 0x2000 },

-  { 0x0c00, 0x073e, 0x0000 },

-  { 0x0c00, 0x0740, 0x0000 },

-  { 0x8c00, 0x0743, 0x2000 },

-  { 0x0c00, 0x0742, 0x0000 },

-  { 0x0c00, 0x0744, 0x0000 },

-  { 0x8700, 0x0787, 0x5000 },

-  { 0x8700, 0x074f, 0x4000 },

-  { 0x8c00, 0x0749, 0x3000 },

-  { 0x8c00, 0x0747, 0x2000 },

-  { 0x0c00, 0x0746, 0x0000 },

-  { 0x0c00, 0x0748, 0x0000 },

-  { 0x8700, 0x074d, 0x2000 },

-  { 0x0c00, 0x074a, 0x0000 },

-  { 0x0700, 0x074e, 0x0000 },

-  { 0x8700, 0x0783, 0x3000 },

-  { 0x8700, 0x0781, 0x2000 },

-  { 0x0700, 0x0780, 0x0000 },

-  { 0x0700, 0x0782, 0x0000 },

-  { 0x8700, 0x0785, 0x2000 },

-  { 0x0700, 0x0784, 0x0000 },

-  { 0x0700, 0x0786, 0x0000 },

-  { 0x8700, 0x078f, 0x4000 },

-  { 0x8700, 0x078b, 0x3000 },

-  { 0x8700, 0x0789, 0x2000 },

-  { 0x0700, 0x0788, 0x0000 },

-  { 0x0700, 0x078a, 0x0000 },

-  { 0x8700, 0x078d, 0x2000 },

-  { 0x0700, 0x078c, 0x0000 },

-  { 0x0700, 0x078e, 0x0000 },

-  { 0x8700, 0x0793, 0x3000 },

-  { 0x8700, 0x0791, 0x2000 },

-  { 0x0700, 0x0790, 0x0000 },

-  { 0x0700, 0x0792, 0x0000 },

-  { 0x8700, 0x0795, 0x2000 },

-  { 0x0700, 0x0794, 0x0000 },

-  { 0x0700, 0x0796, 0x0000 },

-  { 0x8700, 0x0906, 0x6000 },

-  { 0x8c00, 0x07a7, 0x5000 },

-  { 0x8700, 0x079f, 0x4000 },

-  { 0x8700, 0x079b, 0x3000 },

-  { 0x8700, 0x0799, 0x2000 },

-  { 0x0700, 0x0798, 0x0000 },

-  { 0x0700, 0x079a, 0x0000 },

-  { 0x8700, 0x079d, 0x2000 },

-  { 0x0700, 0x079c, 0x0000 },

-  { 0x0700, 0x079e, 0x0000 },

-  { 0x8700, 0x07a3, 0x3000 },

-  { 0x8700, 0x07a1, 0x2000 },

-  { 0x0700, 0x07a0, 0x0000 },

-  { 0x0700, 0x07a2, 0x0000 },

-  { 0x8700, 0x07a5, 0x2000 },

-  { 0x0700, 0x07a4, 0x0000 },

-  { 0x0c00, 0x07a6, 0x0000 },

-  { 0x8c00, 0x07af, 0x4000 },

-  { 0x8c00, 0x07ab, 0x3000 },

-  { 0x8c00, 0x07a9, 0x2000 },

-  { 0x0c00, 0x07a8, 0x0000 },

-  { 0x0c00, 0x07aa, 0x0000 },

-  { 0x8c00, 0x07ad, 0x2000 },

-  { 0x0c00, 0x07ac, 0x0000 },

-  { 0x0c00, 0x07ae, 0x0000 },

-  { 0x8c00, 0x0902, 0x3000 },

-  { 0x8700, 0x07b1, 0x2000 },

-  { 0x0c00, 0x07b0, 0x0000 },

-  { 0x0c00, 0x0901, 0x0000 },

-  { 0x8700, 0x0904, 0x2000 },

-  { 0x0a00, 0x0903, 0x0000 },

-  { 0x0700, 0x0905, 0x0000 },

-  { 0x8700, 0x0916, 0x5000 },

-  { 0x8700, 0x090e, 0x4000 },

-  { 0x8700, 0x090a, 0x3000 },

-  { 0x8700, 0x0908, 0x2000 },

-  { 0x0700, 0x0907, 0x0000 },

-  { 0x0700, 0x0909, 0x0000 },

-  { 0x8700, 0x090c, 0x2000 },

-  { 0x0700, 0x090b, 0x0000 },

-  { 0x0700, 0x090d, 0x0000 },

-  { 0x8700, 0x0912, 0x3000 },

-  { 0x8700, 0x0910, 0x2000 },

-  { 0x0700, 0x090f, 0x0000 },

-  { 0x0700, 0x0911, 0x0000 },

-  { 0x8700, 0x0914, 0x2000 },

-  { 0x0700, 0x0913, 0x0000 },

-  { 0x0700, 0x0915, 0x0000 },

-  { 0x8700, 0x091e, 0x4000 },

-  { 0x8700, 0x091a, 0x3000 },

-  { 0x8700, 0x0918, 0x2000 },

-  { 0x0700, 0x0917, 0x0000 },

-  { 0x0700, 0x0919, 0x0000 },

-  { 0x8700, 0x091c, 0x2000 },

-  { 0x0700, 0x091b, 0x0000 },

-  { 0x0700, 0x091d, 0x0000 },

-  { 0x8700, 0x0922, 0x3000 },

-  { 0x8700, 0x0920, 0x2000 },

-  { 0x0700, 0x091f, 0x0000 },

-  { 0x0700, 0x0921, 0x0000 },

-  { 0x8700, 0x0924, 0x2000 },

-  { 0x0700, 0x0923, 0x0000 },

-  { 0x0700, 0x0925, 0x0000 },

-  { 0x8c00, 0x09cd, 0x8000 },

-  { 0x8d00, 0x096d, 0x7000 },

-  { 0x8c00, 0x0948, 0x6000 },

-  { 0x8700, 0x0936, 0x5000 },

-  { 0x8700, 0x092e, 0x4000 },

-  { 0x8700, 0x092a, 0x3000 },

-  { 0x8700, 0x0928, 0x2000 },

-  { 0x0700, 0x0927, 0x0000 },

-  { 0x0700, 0x0929, 0x0000 },

-  { 0x8700, 0x092c, 0x2000 },

-  { 0x0700, 0x092b, 0x0000 },

-  { 0x0700, 0x092d, 0x0000 },

-  { 0x8700, 0x0932, 0x3000 },

-  { 0x8700, 0x0930, 0x2000 },

-  { 0x0700, 0x092f, 0x0000 },

-  { 0x0700, 0x0931, 0x0000 },

-  { 0x8700, 0x0934, 0x2000 },

-  { 0x0700, 0x0933, 0x0000 },

-  { 0x0700, 0x0935, 0x0000 },

-  { 0x8a00, 0x0940, 0x4000 },

-  { 0x8c00, 0x093c, 0x3000 },

-  { 0x8700, 0x0938, 0x2000 },

-  { 0x0700, 0x0937, 0x0000 },

-  { 0x0700, 0x0939, 0x0000 },

-  { 0x8a00, 0x093e, 0x2000 },

-  { 0x0700, 0x093d, 0x0000 },

-  { 0x0a00, 0x093f, 0x0000 },

-  { 0x8c00, 0x0944, 0x3000 },

-  { 0x8c00, 0x0942, 0x2000 },

-  { 0x0c00, 0x0941, 0x0000 },

-  { 0x0c00, 0x0943, 0x0000 },

-  { 0x8c00, 0x0946, 0x2000 },

-  { 0x0c00, 0x0945, 0x0000 },

-  { 0x0c00, 0x0947, 0x0000 },

-  { 0x8700, 0x095d, 0x5000 },

-  { 0x8c00, 0x0952, 0x4000 },

-  { 0x8a00, 0x094c, 0x3000 },

-  { 0x8a00, 0x094a, 0x2000 },

-  { 0x0a00, 0x0949, 0x0000 },

-  { 0x0a00, 0x094b, 0x0000 },

-  { 0x8700, 0x0950, 0x2000 },

-  { 0x0c00, 0x094d, 0x0000 },

-  { 0x0c00, 0x0951, 0x0000 },

-  { 0x8700, 0x0959, 0x3000 },

-  { 0x8c00, 0x0954, 0x2000 },

-  { 0x0c00, 0x0953, 0x0000 },

-  { 0x0700, 0x0958, 0x0000 },

-  { 0x8700, 0x095b, 0x2000 },

-  { 0x0700, 0x095a, 0x0000 },

-  { 0x0700, 0x095c, 0x0000 },

-  { 0x9500, 0x0965, 0x4000 },

-  { 0x8700, 0x0961, 0x3000 },

-  { 0x8700, 0x095f, 0x2000 },

-  { 0x0700, 0x095e, 0x0000 },

-  { 0x0700, 0x0960, 0x0000 },

-  { 0x8c00, 0x0963, 0x2000 },

-  { 0x0c00, 0x0962, 0x0000 },

-  { 0x1500, 0x0964, 0x0000 },

-  { 0x8d00, 0x0969, 0x3000 },

-  { 0x8d00, 0x0967, 0x2000 },

-  { 0x0d00, 0x0966, 0x0000 },

-  { 0x0d00, 0x0968, 0x0000 },

-  { 0x8d00, 0x096b, 0x2000 },

-  { 0x0d00, 0x096a, 0x0000 },

-  { 0x0d00, 0x096c, 0x0000 },

-  { 0x8700, 0x09a2, 0x6000 },

-  { 0x8700, 0x0990, 0x5000 },

-  { 0x8700, 0x0986, 0x4000 },

-  { 0x8c00, 0x0981, 0x3000 },

-  { 0x8d00, 0x096f, 0x2000 },

-  { 0x0d00, 0x096e, 0x0000 },

-  { 0x1500, 0x0970, 0x0000 },

-  { 0x8a00, 0x0983, 0x2000 },

-  { 0x0a00, 0x0982, 0x0000 },

-  { 0x0700, 0x0985, 0x0000 },

-  { 0x8700, 0x098a, 0x3000 },

-  { 0x8700, 0x0988, 0x2000 },

-  { 0x0700, 0x0987, 0x0000 },

-  { 0x0700, 0x0989, 0x0000 },

-  { 0x8700, 0x098c, 0x2000 },

-  { 0x0700, 0x098b, 0x0000 },

-  { 0x0700, 0x098f, 0x0000 },

-  { 0x8700, 0x099a, 0x4000 },

-  { 0x8700, 0x0996, 0x3000 },

-  { 0x8700, 0x0994, 0x2000 },

-  { 0x0700, 0x0993, 0x0000 },

-  { 0x0700, 0x0995, 0x0000 },

-  { 0x8700, 0x0998, 0x2000 },

-  { 0x0700, 0x0997, 0x0000 },

-  { 0x0700, 0x0999, 0x0000 },

-  { 0x8700, 0x099e, 0x3000 },

-  { 0x8700, 0x099c, 0x2000 },

-  { 0x0700, 0x099b, 0x0000 },

-  { 0x0700, 0x099d, 0x0000 },

-  { 0x8700, 0x09a0, 0x2000 },

-  { 0x0700, 0x099f, 0x0000 },

-  { 0x0700, 0x09a1, 0x0000 },

-  { 0x8700, 0x09b7, 0x5000 },

-  { 0x8700, 0x09ab, 0x4000 },

-  { 0x8700, 0x09a6, 0x3000 },

-  { 0x8700, 0x09a4, 0x2000 },

-  { 0x0700, 0x09a3, 0x0000 },

-  { 0x0700, 0x09a5, 0x0000 },

-  { 0x8700, 0x09a8, 0x2000 },

-  { 0x0700, 0x09a7, 0x0000 },

-  { 0x0700, 0x09aa, 0x0000 },

-  { 0x8700, 0x09af, 0x3000 },

-  { 0x8700, 0x09ad, 0x2000 },

-  { 0x0700, 0x09ac, 0x0000 },

-  { 0x0700, 0x09ae, 0x0000 },

-  { 0x8700, 0x09b2, 0x2000 },

-  { 0x0700, 0x09b0, 0x0000 },

-  { 0x0700, 0x09b6, 0x0000 },

-  { 0x8c00, 0x09c1, 0x4000 },

-  { 0x8700, 0x09bd, 0x3000 },

-  { 0x8700, 0x09b9, 0x2000 },

-  { 0x0700, 0x09b8, 0x0000 },

-  { 0x0c00, 0x09bc, 0x0000 },

-  { 0x8a00, 0x09bf, 0x2000 },

-  { 0x0a00, 0x09be, 0x0000 },

-  { 0x0a00, 0x09c0, 0x0000 },

-  { 0x8a00, 0x09c7, 0x3000 },

-  { 0x8c00, 0x09c3, 0x2000 },

-  { 0x0c00, 0x09c2, 0x0000 },

-  { 0x0c00, 0x09c4, 0x0000 },

-  { 0x8a00, 0x09cb, 0x2000 },

-  { 0x0a00, 0x09c8, 0x0000 },

-  { 0x0a00, 0x09cc, 0x0000 },

-  { 0x8700, 0x0a2b, 0x7000 },

-  { 0x8a00, 0x0a03, 0x6000 },

-  { 0x8d00, 0x09ed, 0x5000 },

-  { 0x8c00, 0x09e3, 0x4000 },

-  { 0x8700, 0x09df, 0x3000 },

-  { 0x8700, 0x09dc, 0x2000 },

-  { 0x0a00, 0x09d7, 0x0000 },

-  { 0x0700, 0x09dd, 0x0000 },

-  { 0x8700, 0x09e1, 0x2000 },

-  { 0x0700, 0x09e0, 0x0000 },

-  { 0x0c00, 0x09e2, 0x0000 },

-  { 0x8d00, 0x09e9, 0x3000 },

-  { 0x8d00, 0x09e7, 0x2000 },

-  { 0x0d00, 0x09e6, 0x0000 },

-  { 0x0d00, 0x09e8, 0x0000 },

-  { 0x8d00, 0x09eb, 0x2000 },

-  { 0x0d00, 0x09ea, 0x0000 },

-  { 0x0d00, 0x09ec, 0x0000 },

-  { 0x8f00, 0x09f5, 0x4000 },

-  { 0x8700, 0x09f1, 0x3000 },

-  { 0x8d00, 0x09ef, 0x2000 },

-  { 0x0d00, 0x09ee, 0x0000 },

-  { 0x0700, 0x09f0, 0x0000 },

-  { 0x9700, 0x09f3, 0x2000 },

-  { 0x1700, 0x09f2, 0x0000 },

-  { 0x0f00, 0x09f4, 0x0000 },

-  { 0x8f00, 0x09f9, 0x3000 },

-  { 0x8f00, 0x09f7, 0x2000 },

-  { 0x0f00, 0x09f6, 0x0000 },

-  { 0x0f00, 0x09f8, 0x0000 },

-  { 0x8c00, 0x0a01, 0x2000 },

-  { 0x1a00, 0x09fa, 0x0000 },

-  { 0x0c00, 0x0a02, 0x0000 },

-  { 0x8700, 0x0a1a, 0x5000 },

-  { 0x8700, 0x0a10, 0x4000 },

-  { 0x8700, 0x0a08, 0x3000 },

-  { 0x8700, 0x0a06, 0x2000 },

-  { 0x0700, 0x0a05, 0x0000 },

-  { 0x0700, 0x0a07, 0x0000 },

-  { 0x8700, 0x0a0a, 0x2000 },

-  { 0x0700, 0x0a09, 0x0000 },

-  { 0x0700, 0x0a0f, 0x0000 },

-  { 0x8700, 0x0a16, 0x3000 },

-  { 0x8700, 0x0a14, 0x2000 },

-  { 0x0700, 0x0a13, 0x0000 },

-  { 0x0700, 0x0a15, 0x0000 },

-  { 0x8700, 0x0a18, 0x2000 },

-  { 0x0700, 0x0a17, 0x0000 },

-  { 0x0700, 0x0a19, 0x0000 },

-  { 0x8700, 0x0a22, 0x4000 },

-  { 0x8700, 0x0a1e, 0x3000 },

-  { 0x8700, 0x0a1c, 0x2000 },

-  { 0x0700, 0x0a1b, 0x0000 },

-  { 0x0700, 0x0a1d, 0x0000 },

-  { 0x8700, 0x0a20, 0x2000 },

-  { 0x0700, 0x0a1f, 0x0000 },

-  { 0x0700, 0x0a21, 0x0000 },

-  { 0x8700, 0x0a26, 0x3000 },

-  { 0x8700, 0x0a24, 0x2000 },

-  { 0x0700, 0x0a23, 0x0000 },

-  { 0x0700, 0x0a25, 0x0000 },

-  { 0x8700, 0x0a28, 0x2000 },

-  { 0x0700, 0x0a27, 0x0000 },

-  { 0x0700, 0x0a2a, 0x0000 },

-  { 0x8d00, 0x0a6a, 0x6000 },

-  { 0x8c00, 0x0a41, 0x5000 },

-  { 0x8700, 0x0a35, 0x4000 },

-  { 0x8700, 0x0a2f, 0x3000 },

-  { 0x8700, 0x0a2d, 0x2000 },

-  { 0x0700, 0x0a2c, 0x0000 },

-  { 0x0700, 0x0a2e, 0x0000 },

-  { 0x8700, 0x0a32, 0x2000 },

-  { 0x0700, 0x0a30, 0x0000 },

-  { 0x0700, 0x0a33, 0x0000 },

-  { 0x8c00, 0x0a3c, 0x3000 },

-  { 0x8700, 0x0a38, 0x2000 },

-  { 0x0700, 0x0a36, 0x0000 },

-  { 0x0700, 0x0a39, 0x0000 },

-  { 0x8a00, 0x0a3f, 0x2000 },

-  { 0x0a00, 0x0a3e, 0x0000 },

-  { 0x0a00, 0x0a40, 0x0000 },

-  { 0x8700, 0x0a5a, 0x4000 },

-  { 0x8c00, 0x0a4b, 0x3000 },

-  { 0x8c00, 0x0a47, 0x2000 },

-  { 0x0c00, 0x0a42, 0x0000 },

-  { 0x0c00, 0x0a48, 0x0000 },

-  { 0x8c00, 0x0a4d, 0x2000 },

-  { 0x0c00, 0x0a4c, 0x0000 },

-  { 0x0700, 0x0a59, 0x0000 },

-  { 0x8d00, 0x0a66, 0x3000 },

-  { 0x8700, 0x0a5c, 0x2000 },

-  { 0x0700, 0x0a5b, 0x0000 },

-  { 0x0700, 0x0a5e, 0x0000 },

-  { 0x8d00, 0x0a68, 0x2000 },

-  { 0x0d00, 0x0a67, 0x0000 },

-  { 0x0d00, 0x0a69, 0x0000 },

-  { 0x8700, 0x0a87, 0x5000 },

-  { 0x8700, 0x0a72, 0x4000 },

-  { 0x8d00, 0x0a6e, 0x3000 },

-  { 0x8d00, 0x0a6c, 0x2000 },

-  { 0x0d00, 0x0a6b, 0x0000 },

-  { 0x0d00, 0x0a6d, 0x0000 },

-  { 0x8c00, 0x0a70, 0x2000 },

-  { 0x0d00, 0x0a6f, 0x0000 },

-  { 0x0c00, 0x0a71, 0x0000 },

-  { 0x8c00, 0x0a82, 0x3000 },

-  { 0x8700, 0x0a74, 0x2000 },

-  { 0x0700, 0x0a73, 0x0000 },

-  { 0x0c00, 0x0a81, 0x0000 },

-  { 0x8700, 0x0a85, 0x2000 },

-  { 0x0a00, 0x0a83, 0x0000 },

-  { 0x0700, 0x0a86, 0x0000 },

-  { 0x8700, 0x0a90, 0x4000 },

-  { 0x8700, 0x0a8b, 0x3000 },

-  { 0x8700, 0x0a89, 0x2000 },

-  { 0x0700, 0x0a88, 0x0000 },

-  { 0x0700, 0x0a8a, 0x0000 },

-  { 0x8700, 0x0a8d, 0x2000 },

-  { 0x0700, 0x0a8c, 0x0000 },

-  { 0x0700, 0x0a8f, 0x0000 },

-  { 0x8700, 0x0a95, 0x3000 },

-  { 0x8700, 0x0a93, 0x2000 },

-  { 0x0700, 0x0a91, 0x0000 },

-  { 0x0700, 0x0a94, 0x0000 },

-  { 0x8700, 0x0a97, 0x2000 },

-  { 0x0700, 0x0a96, 0x0000 },

-  { 0x0700, 0x0a98, 0x0000 },

-  { 0x8700, 0x10ef, 0xb000 },

-  { 0x8700, 0x0dc6, 0xa000 },

-  { 0x8700, 0x0c31, 0x9000 },

-  { 0x8700, 0x0b5f, 0x8000 },

-  { 0x8a00, 0x0b03, 0x7000 },

-  { 0x8a00, 0x0abe, 0x6000 },

-  { 0x8700, 0x0aaa, 0x5000 },

-  { 0x8700, 0x0aa1, 0x4000 },

-  { 0x8700, 0x0a9d, 0x3000 },

-  { 0x8700, 0x0a9b, 0x2000 },

-  { 0x0700, 0x0a9a, 0x0000 },

-  { 0x0700, 0x0a9c, 0x0000 },

-  { 0x8700, 0x0a9f, 0x2000 },

-  { 0x0700, 0x0a9e, 0x0000 },

-  { 0x0700, 0x0aa0, 0x0000 },

-  { 0x8700, 0x0aa5, 0x3000 },

-  { 0x8700, 0x0aa3, 0x2000 },

-  { 0x0700, 0x0aa2, 0x0000 },

-  { 0x0700, 0x0aa4, 0x0000 },

-  { 0x8700, 0x0aa7, 0x2000 },

-  { 0x0700, 0x0aa6, 0x0000 },

-  { 0x0700, 0x0aa8, 0x0000 },

-  { 0x8700, 0x0ab3, 0x4000 },

-  { 0x8700, 0x0aae, 0x3000 },

-  { 0x8700, 0x0aac, 0x2000 },

-  { 0x0700, 0x0aab, 0x0000 },

-  { 0x0700, 0x0aad, 0x0000 },

-  { 0x8700, 0x0ab0, 0x2000 },

-  { 0x0700, 0x0aaf, 0x0000 },

-  { 0x0700, 0x0ab2, 0x0000 },

-  { 0x8700, 0x0ab8, 0x3000 },

-  { 0x8700, 0x0ab6, 0x2000 },

-  { 0x0700, 0x0ab5, 0x0000 },

-  { 0x0700, 0x0ab7, 0x0000 },

-  { 0x8c00, 0x0abc, 0x2000 },

-  { 0x0700, 0x0ab9, 0x0000 },

-  { 0x0700, 0x0abd, 0x0000 },

-  { 0x8700, 0x0ae1, 0x5000 },

-  { 0x8c00, 0x0ac7, 0x4000 },

-  { 0x8c00, 0x0ac2, 0x3000 },

-  { 0x8a00, 0x0ac0, 0x2000 },

-  { 0x0a00, 0x0abf, 0x0000 },

-  { 0x0c00, 0x0ac1, 0x0000 },

-  { 0x8c00, 0x0ac4, 0x2000 },

-  { 0x0c00, 0x0ac3, 0x0000 },

-  { 0x0c00, 0x0ac5, 0x0000 },

-  { 0x8a00, 0x0acc, 0x3000 },

-  { 0x8a00, 0x0ac9, 0x2000 },

-  { 0x0c00, 0x0ac8, 0x0000 },

-  { 0x0a00, 0x0acb, 0x0000 },

-  { 0x8700, 0x0ad0, 0x2000 },

-  { 0x0c00, 0x0acd, 0x0000 },

-  { 0x0700, 0x0ae0, 0x0000 },

-  { 0x8d00, 0x0aeb, 0x4000 },

-  { 0x8d00, 0x0ae7, 0x3000 },

-  { 0x8c00, 0x0ae3, 0x2000 },

-  { 0x0c00, 0x0ae2, 0x0000 },

-  { 0x0d00, 0x0ae6, 0x0000 },

-  { 0x8d00, 0x0ae9, 0x2000 },

-  { 0x0d00, 0x0ae8, 0x0000 },

-  { 0x0d00, 0x0aea, 0x0000 },

-  { 0x8d00, 0x0aef, 0x3000 },

-  { 0x8d00, 0x0aed, 0x2000 },

-  { 0x0d00, 0x0aec, 0x0000 },

-  { 0x0d00, 0x0aee, 0x0000 },

-  { 0x8c00, 0x0b01, 0x2000 },

-  { 0x1700, 0x0af1, 0x0000 },

-  { 0x0a00, 0x0b02, 0x0000 },

-  { 0x8700, 0x0b28, 0x6000 },

-  { 0x8700, 0x0b18, 0x5000 },

-  { 0x8700, 0x0b0c, 0x4000 },

-  { 0x8700, 0x0b08, 0x3000 },

-  { 0x8700, 0x0b06, 0x2000 },

-  { 0x0700, 0x0b05, 0x0000 },

-  { 0x0700, 0x0b07, 0x0000 },

-  { 0x8700, 0x0b0a, 0x2000 },

-  { 0x0700, 0x0b09, 0x0000 },

-  { 0x0700, 0x0b0b, 0x0000 },

-  { 0x8700, 0x0b14, 0x3000 },

-  { 0x8700, 0x0b10, 0x2000 },

-  { 0x0700, 0x0b0f, 0x0000 },

-  { 0x0700, 0x0b13, 0x0000 },

-  { 0x8700, 0x0b16, 0x2000 },

-  { 0x0700, 0x0b15, 0x0000 },

-  { 0x0700, 0x0b17, 0x0000 },

-  { 0x8700, 0x0b20, 0x4000 },

-  { 0x8700, 0x0b1c, 0x3000 },

-  { 0x8700, 0x0b1a, 0x2000 },

-  { 0x0700, 0x0b19, 0x0000 },

-  { 0x0700, 0x0b1b, 0x0000 },

-  { 0x8700, 0x0b1e, 0x2000 },

-  { 0x0700, 0x0b1d, 0x0000 },

-  { 0x0700, 0x0b1f, 0x0000 },

-  { 0x8700, 0x0b24, 0x3000 },

-  { 0x8700, 0x0b22, 0x2000 },

-  { 0x0700, 0x0b21, 0x0000 },

-  { 0x0700, 0x0b23, 0x0000 },

-  { 0x8700, 0x0b26, 0x2000 },

-  { 0x0700, 0x0b25, 0x0000 },

-  { 0x0700, 0x0b27, 0x0000 },

-  { 0x8700, 0x0b3d, 0x5000 },

-  { 0x8700, 0x0b32, 0x4000 },

-  { 0x8700, 0x0b2d, 0x3000 },

-  { 0x8700, 0x0b2b, 0x2000 },

-  { 0x0700, 0x0b2a, 0x0000 },

-  { 0x0700, 0x0b2c, 0x0000 },

-  { 0x8700, 0x0b2f, 0x2000 },

-  { 0x0700, 0x0b2e, 0x0000 },

-  { 0x0700, 0x0b30, 0x0000 },

-  { 0x8700, 0x0b37, 0x3000 },

-  { 0x8700, 0x0b35, 0x2000 },

-  { 0x0700, 0x0b33, 0x0000 },

-  { 0x0700, 0x0b36, 0x0000 },

-  { 0x8700, 0x0b39, 0x2000 },

-  { 0x0700, 0x0b38, 0x0000 },

-  { 0x0c00, 0x0b3c, 0x0000 },

-  { 0x8a00, 0x0b48, 0x4000 },

-  { 0x8c00, 0x0b41, 0x3000 },

-  { 0x8c00, 0x0b3f, 0x2000 },

-  { 0x0a00, 0x0b3e, 0x0000 },

-  { 0x0a00, 0x0b40, 0x0000 },

-  { 0x8c00, 0x0b43, 0x2000 },

-  { 0x0c00, 0x0b42, 0x0000 },

-  { 0x0a00, 0x0b47, 0x0000 },

-  { 0x8c00, 0x0b56, 0x3000 },

-  { 0x8a00, 0x0b4c, 0x2000 },

-  { 0x0a00, 0x0b4b, 0x0000 },

-  { 0x0c00, 0x0b4d, 0x0000 },

-  { 0x8700, 0x0b5c, 0x2000 },

-  { 0x0a00, 0x0b57, 0x0000 },

-  { 0x0700, 0x0b5d, 0x0000 },

-  { 0x8d00, 0x0be7, 0x7000 },

-  { 0x8700, 0x0b9c, 0x6000 },

-  { 0x8700, 0x0b83, 0x5000 },

-  { 0x8d00, 0x0b6b, 0x4000 },

-  { 0x8d00, 0x0b67, 0x3000 },

-  { 0x8700, 0x0b61, 0x2000 },

-  { 0x0700, 0x0b60, 0x0000 },

-  { 0x0d00, 0x0b66, 0x0000 },

-  { 0x8d00, 0x0b69, 0x2000 },

-  { 0x0d00, 0x0b68, 0x0000 },

-  { 0x0d00, 0x0b6a, 0x0000 },

-  { 0x8d00, 0x0b6f, 0x3000 },

-  { 0x8d00, 0x0b6d, 0x2000 },

-  { 0x0d00, 0x0b6c, 0x0000 },

-  { 0x0d00, 0x0b6e, 0x0000 },

-  { 0x8700, 0x0b71, 0x2000 },

-  { 0x1a00, 0x0b70, 0x0000 },

-  { 0x0c00, 0x0b82, 0x0000 },

-  { 0x8700, 0x0b8f, 0x4000 },

-  { 0x8700, 0x0b88, 0x3000 },

-  { 0x8700, 0x0b86, 0x2000 },

-  { 0x0700, 0x0b85, 0x0000 },

-  { 0x0700, 0x0b87, 0x0000 },

-  { 0x8700, 0x0b8a, 0x2000 },

-  { 0x0700, 0x0b89, 0x0000 },

-  { 0x0700, 0x0b8e, 0x0000 },

-  { 0x8700, 0x0b94, 0x3000 },

-  { 0x8700, 0x0b92, 0x2000 },

-  { 0x0700, 0x0b90, 0x0000 },

-  { 0x0700, 0x0b93, 0x0000 },

-  { 0x8700, 0x0b99, 0x2000 },

-  { 0x0700, 0x0b95, 0x0000 },

-  { 0x0700, 0x0b9a, 0x0000 },

-  { 0x8700, 0x0bb7, 0x5000 },

-  { 0x8700, 0x0bae, 0x4000 },

-  { 0x8700, 0x0ba4, 0x3000 },

-  { 0x8700, 0x0b9f, 0x2000 },

-  { 0x0700, 0x0b9e, 0x0000 },

-  { 0x0700, 0x0ba3, 0x0000 },

-  { 0x8700, 0x0ba9, 0x2000 },

-  { 0x0700, 0x0ba8, 0x0000 },

-  { 0x0700, 0x0baa, 0x0000 },

-  { 0x8700, 0x0bb2, 0x3000 },

-  { 0x8700, 0x0bb0, 0x2000 },

-  { 0x0700, 0x0baf, 0x0000 },

-  { 0x0700, 0x0bb1, 0x0000 },

-  { 0x8700, 0x0bb4, 0x2000 },

-  { 0x0700, 0x0bb3, 0x0000 },

-  { 0x0700, 0x0bb5, 0x0000 },

-  { 0x8a00, 0x0bc6, 0x4000 },

-  { 0x8a00, 0x0bbf, 0x3000 },

-  { 0x8700, 0x0bb9, 0x2000 },

-  { 0x0700, 0x0bb8, 0x0000 },

-  { 0x0a00, 0x0bbe, 0x0000 },

-  { 0x8a00, 0x0bc1, 0x2000 },

-  { 0x0c00, 0x0bc0, 0x0000 },

-  { 0x0a00, 0x0bc2, 0x0000 },

-  { 0x8a00, 0x0bcb, 0x3000 },

-  { 0x8a00, 0x0bc8, 0x2000 },

-  { 0x0a00, 0x0bc7, 0x0000 },

-  { 0x0a00, 0x0bca, 0x0000 },

-  { 0x8c00, 0x0bcd, 0x2000 },

-  { 0x0a00, 0x0bcc, 0x0000 },

-  { 0x0a00, 0x0bd7, 0x0000 },

-  { 0x8700, 0x0c0f, 0x6000 },

-  { 0x9a00, 0x0bf7, 0x5000 },

-  { 0x8d00, 0x0bef, 0x4000 },

-  { 0x8d00, 0x0beb, 0x3000 },

-  { 0x8d00, 0x0be9, 0x2000 },

-  { 0x0d00, 0x0be8, 0x0000 },

-  { 0x0d00, 0x0bea, 0x0000 },

-  { 0x8d00, 0x0bed, 0x2000 },

-  { 0x0d00, 0x0bec, 0x0000 },

-  { 0x0d00, 0x0bee, 0x0000 },

-  { 0x9a00, 0x0bf3, 0x3000 },

-  { 0x8f00, 0x0bf1, 0x2000 },

-  { 0x0f00, 0x0bf0, 0x0000 },

-  { 0x0f00, 0x0bf2, 0x0000 },

-  { 0x9a00, 0x0bf5, 0x2000 },

-  { 0x1a00, 0x0bf4, 0x0000 },

-  { 0x1a00, 0x0bf6, 0x0000 },

-  { 0x8700, 0x0c06, 0x4000 },

-  { 0x8a00, 0x0c01, 0x3000 },

-  { 0x9700, 0x0bf9, 0x2000 },

-  { 0x1a00, 0x0bf8, 0x0000 },

-  { 0x1a00, 0x0bfa, 0x0000 },

-  { 0x8a00, 0x0c03, 0x2000 },

-  { 0x0a00, 0x0c02, 0x0000 },

-  { 0x0700, 0x0c05, 0x0000 },

-  { 0x8700, 0x0c0a, 0x3000 },

-  { 0x8700, 0x0c08, 0x2000 },

-  { 0x0700, 0x0c07, 0x0000 },

-  { 0x0700, 0x0c09, 0x0000 },

-  { 0x8700, 0x0c0c, 0x2000 },

-  { 0x0700, 0x0c0b, 0x0000 },

-  { 0x0700, 0x0c0e, 0x0000 },

-  { 0x8700, 0x0c20, 0x5000 },

-  { 0x8700, 0x0c18, 0x4000 },

-  { 0x8700, 0x0c14, 0x3000 },

-  { 0x8700, 0x0c12, 0x2000 },

-  { 0x0700, 0x0c10, 0x0000 },

-  { 0x0700, 0x0c13, 0x0000 },

-  { 0x8700, 0x0c16, 0x2000 },

-  { 0x0700, 0x0c15, 0x0000 },

-  { 0x0700, 0x0c17, 0x0000 },

-  { 0x8700, 0x0c1c, 0x3000 },

-  { 0x8700, 0x0c1a, 0x2000 },

-  { 0x0700, 0x0c19, 0x0000 },

-  { 0x0700, 0x0c1b, 0x0000 },

-  { 0x8700, 0x0c1e, 0x2000 },

-  { 0x0700, 0x0c1d, 0x0000 },

-  { 0x0700, 0x0c1f, 0x0000 },

-  { 0x8700, 0x0c28, 0x4000 },

-  { 0x8700, 0x0c24, 0x3000 },

-  { 0x8700, 0x0c22, 0x2000 },

-  { 0x0700, 0x0c21, 0x0000 },

-  { 0x0700, 0x0c23, 0x0000 },

-  { 0x8700, 0x0c26, 0x2000 },

-  { 0x0700, 0x0c25, 0x0000 },

-  { 0x0700, 0x0c27, 0x0000 },

-  { 0x8700, 0x0c2d, 0x3000 },

-  { 0x8700, 0x0c2b, 0x2000 },

-  { 0x0700, 0x0c2a, 0x0000 },

-  { 0x0700, 0x0c2c, 0x0000 },

-  { 0x8700, 0x0c2f, 0x2000 },

-  { 0x0700, 0x0c2e, 0x0000 },

-  { 0x0700, 0x0c30, 0x0000 },

-  { 0x8700, 0x0d0e, 0x8000 },

-  { 0x8700, 0x0ca1, 0x7000 },

-  { 0x8d00, 0x0c6c, 0x6000 },

-  { 0x8c00, 0x0c47, 0x5000 },

-  { 0x8c00, 0x0c3e, 0x4000 },

-  { 0x8700, 0x0c36, 0x3000 },

-  { 0x8700, 0x0c33, 0x2000 },

-  { 0x0700, 0x0c32, 0x0000 },

-  { 0x0700, 0x0c35, 0x0000 },

-  { 0x8700, 0x0c38, 0x2000 },

-  { 0x0700, 0x0c37, 0x0000 },

-  { 0x0700, 0x0c39, 0x0000 },

-  { 0x8a00, 0x0c42, 0x3000 },

-  { 0x8c00, 0x0c40, 0x2000 },

-  { 0x0c00, 0x0c3f, 0x0000 },

-  { 0x0a00, 0x0c41, 0x0000 },

-  { 0x8a00, 0x0c44, 0x2000 },

-  { 0x0a00, 0x0c43, 0x0000 },

-  { 0x0c00, 0x0c46, 0x0000 },

-  { 0x8700, 0x0c60, 0x4000 },

-  { 0x8c00, 0x0c4c, 0x3000 },

-  { 0x8c00, 0x0c4a, 0x2000 },

-  { 0x0c00, 0x0c48, 0x0000 },

-  { 0x0c00, 0x0c4b, 0x0000 },

-  { 0x8c00, 0x0c55, 0x2000 },

-  { 0x0c00, 0x0c4d, 0x0000 },

-  { 0x0c00, 0x0c56, 0x0000 },

-  { 0x8d00, 0x0c68, 0x3000 },

-  { 0x8d00, 0x0c66, 0x2000 },

-  { 0x0700, 0x0c61, 0x0000 },

-  { 0x0d00, 0x0c67, 0x0000 },

-  { 0x8d00, 0x0c6a, 0x2000 },

-  { 0x0d00, 0x0c69, 0x0000 },

-  { 0x0d00, 0x0c6b, 0x0000 },

-  { 0x8700, 0x0c90, 0x5000 },

-  { 0x8700, 0x0c87, 0x4000 },

-  { 0x8a00, 0x0c82, 0x3000 },

-  { 0x8d00, 0x0c6e, 0x2000 },

-  { 0x0d00, 0x0c6d, 0x0000 },

-  { 0x0d00, 0x0c6f, 0x0000 },

-  { 0x8700, 0x0c85, 0x2000 },

-  { 0x0a00, 0x0c83, 0x0000 },

-  { 0x0700, 0x0c86, 0x0000 },

-  { 0x8700, 0x0c8b, 0x3000 },

-  { 0x8700, 0x0c89, 0x2000 },

-  { 0x0700, 0x0c88, 0x0000 },

-  { 0x0700, 0x0c8a, 0x0000 },

-  { 0x8700, 0x0c8e, 0x2000 },

-  { 0x0700, 0x0c8c, 0x0000 },

-  { 0x0700, 0x0c8f, 0x0000 },

-  { 0x8700, 0x0c99, 0x4000 },

-  { 0x8700, 0x0c95, 0x3000 },

-  { 0x8700, 0x0c93, 0x2000 },

-  { 0x0700, 0x0c92, 0x0000 },

-  { 0x0700, 0x0c94, 0x0000 },

-  { 0x8700, 0x0c97, 0x2000 },

-  { 0x0700, 0x0c96, 0x0000 },

-  { 0x0700, 0x0c98, 0x0000 },

-  { 0x8700, 0x0c9d, 0x3000 },

-  { 0x8700, 0x0c9b, 0x2000 },

-  { 0x0700, 0x0c9a, 0x0000 },

-  { 0x0700, 0x0c9c, 0x0000 },

-  { 0x8700, 0x0c9f, 0x2000 },

-  { 0x0700, 0x0c9e, 0x0000 },

-  { 0x0700, 0x0ca0, 0x0000 },

-  { 0x8c00, 0x0cc6, 0x6000 },

-  { 0x8700, 0x0cb2, 0x5000 },

-  { 0x8700, 0x0caa, 0x4000 },

-  { 0x8700, 0x0ca5, 0x3000 },

-  { 0x8700, 0x0ca3, 0x2000 },

-  { 0x0700, 0x0ca2, 0x0000 },

-  { 0x0700, 0x0ca4, 0x0000 },

-  { 0x8700, 0x0ca7, 0x2000 },

-  { 0x0700, 0x0ca6, 0x0000 },

-  { 0x0700, 0x0ca8, 0x0000 },

-  { 0x8700, 0x0cae, 0x3000 },

-  { 0x8700, 0x0cac, 0x2000 },

-  { 0x0700, 0x0cab, 0x0000 },

-  { 0x0700, 0x0cad, 0x0000 },

-  { 0x8700, 0x0cb0, 0x2000 },

-  { 0x0700, 0x0caf, 0x0000 },

-  { 0x0700, 0x0cb1, 0x0000 },

-  { 0x8700, 0x0cbd, 0x4000 },

-  { 0x8700, 0x0cb7, 0x3000 },

-  { 0x8700, 0x0cb5, 0x2000 },

-  { 0x0700, 0x0cb3, 0x0000 },

-  { 0x0700, 0x0cb6, 0x0000 },

-  { 0x8700, 0x0cb9, 0x2000 },

-  { 0x0700, 0x0cb8, 0x0000 },

-  { 0x0c00, 0x0cbc, 0x0000 },

-  { 0x8a00, 0x0cc1, 0x3000 },

-  { 0x8c00, 0x0cbf, 0x2000 },

-  { 0x0a00, 0x0cbe, 0x0000 },

-  { 0x0a00, 0x0cc0, 0x0000 },

-  { 0x8a00, 0x0cc3, 0x2000 },

-  { 0x0a00, 0x0cc2, 0x0000 },

-  { 0x0a00, 0x0cc4, 0x0000 },

-  { 0x8d00, 0x0cea, 0x5000 },

-  { 0x8a00, 0x0cd6, 0x4000 },

-  { 0x8a00, 0x0ccb, 0x3000 },

-  { 0x8a00, 0x0cc8, 0x2000 },

-  { 0x0a00, 0x0cc7, 0x0000 },

-  { 0x0a00, 0x0cca, 0x0000 },

-  { 0x8c00, 0x0ccd, 0x2000 },

-  { 0x0c00, 0x0ccc, 0x0000 },

-  { 0x0a00, 0x0cd5, 0x0000 },

-  { 0x8d00, 0x0ce6, 0x3000 },

-  { 0x8700, 0x0ce0, 0x2000 },

-  { 0x0700, 0x0cde, 0x0000 },

-  { 0x0700, 0x0ce1, 0x0000 },

-  { 0x8d00, 0x0ce8, 0x2000 },

-  { 0x0d00, 0x0ce7, 0x0000 },

-  { 0x0d00, 0x0ce9, 0x0000 },

-  { 0x8700, 0x0d05, 0x4000 },

-  { 0x8d00, 0x0cee, 0x3000 },

-  { 0x8d00, 0x0cec, 0x2000 },

-  { 0x0d00, 0x0ceb, 0x0000 },

-  { 0x0d00, 0x0ced, 0x0000 },

-  { 0x8a00, 0x0d02, 0x2000 },

-  { 0x0d00, 0x0cef, 0x0000 },

-  { 0x0a00, 0x0d03, 0x0000 },

-  { 0x8700, 0x0d09, 0x3000 },

-  { 0x8700, 0x0d07, 0x2000 },

-  { 0x0700, 0x0d06, 0x0000 },

-  { 0x0700, 0x0d08, 0x0000 },

-  { 0x8700, 0x0d0b, 0x2000 },

-  { 0x0700, 0x0d0a, 0x0000 },

-  { 0x0700, 0x0d0c, 0x0000 },

-  { 0x8d00, 0x0d6c, 0x7000 },

-  { 0x8700, 0x0d30, 0x6000 },

-  { 0x8700, 0x0d1f, 0x5000 },

-  { 0x8700, 0x0d17, 0x4000 },

-  { 0x8700, 0x0d13, 0x3000 },

-  { 0x8700, 0x0d10, 0x2000 },

-  { 0x0700, 0x0d0f, 0x0000 },

-  { 0x0700, 0x0d12, 0x0000 },

-  { 0x8700, 0x0d15, 0x2000 },

-  { 0x0700, 0x0d14, 0x0000 },

-  { 0x0700, 0x0d16, 0x0000 },

-  { 0x8700, 0x0d1b, 0x3000 },

-  { 0x8700, 0x0d19, 0x2000 },

-  { 0x0700, 0x0d18, 0x0000 },

-  { 0x0700, 0x0d1a, 0x0000 },

-  { 0x8700, 0x0d1d, 0x2000 },

-  { 0x0700, 0x0d1c, 0x0000 },

-  { 0x0700, 0x0d1e, 0x0000 },

-  { 0x8700, 0x0d27, 0x4000 },

-  { 0x8700, 0x0d23, 0x3000 },

-  { 0x8700, 0x0d21, 0x2000 },

-  { 0x0700, 0x0d20, 0x0000 },

-  { 0x0700, 0x0d22, 0x0000 },

-  { 0x8700, 0x0d25, 0x2000 },

-  { 0x0700, 0x0d24, 0x0000 },

-  { 0x0700, 0x0d26, 0x0000 },

-  { 0x8700, 0x0d2c, 0x3000 },

-  { 0x8700, 0x0d2a, 0x2000 },

-  { 0x0700, 0x0d28, 0x0000 },

-  { 0x0700, 0x0d2b, 0x0000 },

-  { 0x8700, 0x0d2e, 0x2000 },

-  { 0x0700, 0x0d2d, 0x0000 },

-  { 0x0700, 0x0d2f, 0x0000 },

-  { 0x8a00, 0x0d46, 0x5000 },

-  { 0x8700, 0x0d38, 0x4000 },

-  { 0x8700, 0x0d34, 0x3000 },

-  { 0x8700, 0x0d32, 0x2000 },

-  { 0x0700, 0x0d31, 0x0000 },

-  { 0x0700, 0x0d33, 0x0000 },

-  { 0x8700, 0x0d36, 0x2000 },

-  { 0x0700, 0x0d35, 0x0000 },

-  { 0x0700, 0x0d37, 0x0000 },

-  { 0x8a00, 0x0d40, 0x3000 },

-  { 0x8a00, 0x0d3e, 0x2000 },

-  { 0x0700, 0x0d39, 0x0000 },

-  { 0x0a00, 0x0d3f, 0x0000 },

-  { 0x8c00, 0x0d42, 0x2000 },

-  { 0x0c00, 0x0d41, 0x0000 },

-  { 0x0c00, 0x0d43, 0x0000 },

-  { 0x8700, 0x0d60, 0x4000 },

-  { 0x8a00, 0x0d4b, 0x3000 },

-  { 0x8a00, 0x0d48, 0x2000 },

-  { 0x0a00, 0x0d47, 0x0000 },

-  { 0x0a00, 0x0d4a, 0x0000 },

-  { 0x8c00, 0x0d4d, 0x2000 },

-  { 0x0a00, 0x0d4c, 0x0000 },

-  { 0x0a00, 0x0d57, 0x0000 },

-  { 0x8d00, 0x0d68, 0x3000 },

-  { 0x8d00, 0x0d66, 0x2000 },

-  { 0x0700, 0x0d61, 0x0000 },

-  { 0x0d00, 0x0d67, 0x0000 },

-  { 0x8d00, 0x0d6a, 0x2000 },

-  { 0x0d00, 0x0d69, 0x0000 },

-  { 0x0d00, 0x0d6b, 0x0000 },

-  { 0x8700, 0x0da2, 0x6000 },

-  { 0x8700, 0x0d8f, 0x5000 },

-  { 0x8700, 0x0d87, 0x4000 },

-  { 0x8a00, 0x0d82, 0x3000 },

-  { 0x8d00, 0x0d6e, 0x2000 },

-  { 0x0d00, 0x0d6d, 0x0000 },

-  { 0x0d00, 0x0d6f, 0x0000 },

-  { 0x8700, 0x0d85, 0x2000 },

-  { 0x0a00, 0x0d83, 0x0000 },

-  { 0x0700, 0x0d86, 0x0000 },

-  { 0x8700, 0x0d8b, 0x3000 },

-  { 0x8700, 0x0d89, 0x2000 },

-  { 0x0700, 0x0d88, 0x0000 },

-  { 0x0700, 0x0d8a, 0x0000 },

-  { 0x8700, 0x0d8d, 0x2000 },

-  { 0x0700, 0x0d8c, 0x0000 },

-  { 0x0700, 0x0d8e, 0x0000 },

-  { 0x8700, 0x0d9a, 0x4000 },

-  { 0x8700, 0x0d93, 0x3000 },

-  { 0x8700, 0x0d91, 0x2000 },

-  { 0x0700, 0x0d90, 0x0000 },

-  { 0x0700, 0x0d92, 0x0000 },

-  { 0x8700, 0x0d95, 0x2000 },

-  { 0x0700, 0x0d94, 0x0000 },

-  { 0x0700, 0x0d96, 0x0000 },

-  { 0x8700, 0x0d9e, 0x3000 },

-  { 0x8700, 0x0d9c, 0x2000 },

-  { 0x0700, 0x0d9b, 0x0000 },

-  { 0x0700, 0x0d9d, 0x0000 },

-  { 0x8700, 0x0da0, 0x2000 },

-  { 0x0700, 0x0d9f, 0x0000 },

-  { 0x0700, 0x0da1, 0x0000 },

-  { 0x8700, 0x0db3, 0x5000 },

-  { 0x8700, 0x0daa, 0x4000 },

-  { 0x8700, 0x0da6, 0x3000 },

-  { 0x8700, 0x0da4, 0x2000 },

-  { 0x0700, 0x0da3, 0x0000 },

-  { 0x0700, 0x0da5, 0x0000 },

-  { 0x8700, 0x0da8, 0x2000 },

-  { 0x0700, 0x0da7, 0x0000 },

-  { 0x0700, 0x0da9, 0x0000 },

-  { 0x8700, 0x0dae, 0x3000 },

-  { 0x8700, 0x0dac, 0x2000 },

-  { 0x0700, 0x0dab, 0x0000 },

-  { 0x0700, 0x0dad, 0x0000 },

-  { 0x8700, 0x0db0, 0x2000 },

-  { 0x0700, 0x0daf, 0x0000 },

-  { 0x0700, 0x0db1, 0x0000 },

-  { 0x8700, 0x0dbb, 0x4000 },

-  { 0x8700, 0x0db7, 0x3000 },

-  { 0x8700, 0x0db5, 0x2000 },

-  { 0x0700, 0x0db4, 0x0000 },

-  { 0x0700, 0x0db6, 0x0000 },

-  { 0x8700, 0x0db9, 0x2000 },

-  { 0x0700, 0x0db8, 0x0000 },

-  { 0x0700, 0x0dba, 0x0000 },

-  { 0x8700, 0x0dc2, 0x3000 },

-  { 0x8700, 0x0dc0, 0x2000 },

-  { 0x0700, 0x0dbd, 0x0000 },

-  { 0x0700, 0x0dc1, 0x0000 },

-  { 0x8700, 0x0dc4, 0x2000 },

-  { 0x0700, 0x0dc3, 0x0000 },

-  { 0x0700, 0x0dc5, 0x0000 },

-  { 0x8700, 0x0f55, 0x9000 },

-  { 0x8700, 0x0ea5, 0x8000 },

-  { 0x8700, 0x0e2d, 0x7000 },

-  { 0x8700, 0x0e0d, 0x6000 },

-  { 0x8a00, 0x0ddf, 0x5000 },

-  { 0x8c00, 0x0dd6, 0x4000 },

-  { 0x8a00, 0x0dd1, 0x3000 },

-  { 0x8a00, 0x0dcf, 0x2000 },

-  { 0x0c00, 0x0dca, 0x0000 },

-  { 0x0a00, 0x0dd0, 0x0000 },

-  { 0x8c00, 0x0dd3, 0x2000 },

-  { 0x0c00, 0x0dd2, 0x0000 },

-  { 0x0c00, 0x0dd4, 0x0000 },

-  { 0x8a00, 0x0ddb, 0x3000 },

-  { 0x8a00, 0x0dd9, 0x2000 },

-  { 0x0a00, 0x0dd8, 0x0000 },

-  { 0x0a00, 0x0dda, 0x0000 },

-  { 0x8a00, 0x0ddd, 0x2000 },

-  { 0x0a00, 0x0ddc, 0x0000 },

-  { 0x0a00, 0x0dde, 0x0000 },

-  { 0x8700, 0x0e05, 0x4000 },

-  { 0x8700, 0x0e01, 0x3000 },

-  { 0x8a00, 0x0df3, 0x2000 },

-  { 0x0a00, 0x0df2, 0x0000 },

-  { 0x1500, 0x0df4, 0x0000 },

-  { 0x8700, 0x0e03, 0x2000 },

-  { 0x0700, 0x0e02, 0x0000 },

-  { 0x0700, 0x0e04, 0x0000 },

-  { 0x8700, 0x0e09, 0x3000 },

-  { 0x8700, 0x0e07, 0x2000 },

-  { 0x0700, 0x0e06, 0x0000 },

-  { 0x0700, 0x0e08, 0x0000 },

-  { 0x8700, 0x0e0b, 0x2000 },

-  { 0x0700, 0x0e0a, 0x0000 },

-  { 0x0700, 0x0e0c, 0x0000 },

-  { 0x8700, 0x0e1d, 0x5000 },

-  { 0x8700, 0x0e15, 0x4000 },

-  { 0x8700, 0x0e11, 0x3000 },

-  { 0x8700, 0x0e0f, 0x2000 },

-  { 0x0700, 0x0e0e, 0x0000 },

-  { 0x0700, 0x0e10, 0x0000 },

-  { 0x8700, 0x0e13, 0x2000 },

-  { 0x0700, 0x0e12, 0x0000 },

-  { 0x0700, 0x0e14, 0x0000 },

-  { 0x8700, 0x0e19, 0x3000 },

-  { 0x8700, 0x0e17, 0x2000 },

-  { 0x0700, 0x0e16, 0x0000 },

-  { 0x0700, 0x0e18, 0x0000 },

-  { 0x8700, 0x0e1b, 0x2000 },

-  { 0x0700, 0x0e1a, 0x0000 },

-  { 0x0700, 0x0e1c, 0x0000 },

-  { 0x8700, 0x0e25, 0x4000 },

-  { 0x8700, 0x0e21, 0x3000 },

-  { 0x8700, 0x0e1f, 0x2000 },

-  { 0x0700, 0x0e1e, 0x0000 },

-  { 0x0700, 0x0e20, 0x0000 },

-  { 0x8700, 0x0e23, 0x2000 },

-  { 0x0700, 0x0e22, 0x0000 },

-  { 0x0700, 0x0e24, 0x0000 },

-  { 0x8700, 0x0e29, 0x3000 },

-  { 0x8700, 0x0e27, 0x2000 },

-  { 0x0700, 0x0e26, 0x0000 },

-  { 0x0700, 0x0e28, 0x0000 },

-  { 0x8700, 0x0e2b, 0x2000 },

-  { 0x0700, 0x0e2a, 0x0000 },

-  { 0x0700, 0x0e2c, 0x0000 },

-  { 0x8d00, 0x0e51, 0x6000 },

-  { 0x8700, 0x0e41, 0x5000 },

-  { 0x8c00, 0x0e35, 0x4000 },

-  { 0x8c00, 0x0e31, 0x3000 },

-  { 0x8700, 0x0e2f, 0x2000 },

-  { 0x0700, 0x0e2e, 0x0000 },

-  { 0x0700, 0x0e30, 0x0000 },

-  { 0x8700, 0x0e33, 0x2000 },

-  { 0x0700, 0x0e32, 0x0000 },

-  { 0x0c00, 0x0e34, 0x0000 },

-  { 0x8c00, 0x0e39, 0x3000 },

-  { 0x8c00, 0x0e37, 0x2000 },

-  { 0x0c00, 0x0e36, 0x0000 },

-  { 0x0c00, 0x0e38, 0x0000 },

-  { 0x9700, 0x0e3f, 0x2000 },

-  { 0x0c00, 0x0e3a, 0x0000 },

-  { 0x0700, 0x0e40, 0x0000 },

-  { 0x8c00, 0x0e49, 0x4000 },

-  { 0x8700, 0x0e45, 0x3000 },

-  { 0x8700, 0x0e43, 0x2000 },

-  { 0x0700, 0x0e42, 0x0000 },

-  { 0x0700, 0x0e44, 0x0000 },

-  { 0x8c00, 0x0e47, 0x2000 },

-  { 0x0600, 0x0e46, 0x0000 },

-  { 0x0c00, 0x0e48, 0x0000 },

-  { 0x8c00, 0x0e4d, 0x3000 },

-  { 0x8c00, 0x0e4b, 0x2000 },

-  { 0x0c00, 0x0e4a, 0x0000 },

-  { 0x0c00, 0x0e4c, 0x0000 },

-  { 0x9500, 0x0e4f, 0x2000 },

-  { 0x0c00, 0x0e4e, 0x0000 },

-  { 0x0d00, 0x0e50, 0x0000 },

-  { 0x8700, 0x0e8a, 0x5000 },

-  { 0x8d00, 0x0e59, 0x4000 },

-  { 0x8d00, 0x0e55, 0x3000 },

-  { 0x8d00, 0x0e53, 0x2000 },

-  { 0x0d00, 0x0e52, 0x0000 },

-  { 0x0d00, 0x0e54, 0x0000 },

-  { 0x8d00, 0x0e57, 0x2000 },

-  { 0x0d00, 0x0e56, 0x0000 },

-  { 0x0d00, 0x0e58, 0x0000 },

-  { 0x8700, 0x0e82, 0x3000 },

-  { 0x9500, 0x0e5b, 0x2000 },

-  { 0x1500, 0x0e5a, 0x0000 },

-  { 0x0700, 0x0e81, 0x0000 },

-  { 0x8700, 0x0e87, 0x2000 },

-  { 0x0700, 0x0e84, 0x0000 },

-  { 0x0700, 0x0e88, 0x0000 },

-  { 0x8700, 0x0e9b, 0x4000 },

-  { 0x8700, 0x0e96, 0x3000 },

-  { 0x8700, 0x0e94, 0x2000 },

-  { 0x0700, 0x0e8d, 0x0000 },

-  { 0x0700, 0x0e95, 0x0000 },

-  { 0x8700, 0x0e99, 0x2000 },

-  { 0x0700, 0x0e97, 0x0000 },

-  { 0x0700, 0x0e9a, 0x0000 },

-  { 0x8700, 0x0e9f, 0x3000 },

-  { 0x8700, 0x0e9d, 0x2000 },

-  { 0x0700, 0x0e9c, 0x0000 },

-  { 0x0700, 0x0e9e, 0x0000 },

-  { 0x8700, 0x0ea2, 0x2000 },

-  { 0x0700, 0x0ea1, 0x0000 },

-  { 0x0700, 0x0ea3, 0x0000 },

-  { 0x9a00, 0x0f14, 0x7000 },

-  { 0x8d00, 0x0ed0, 0x6000 },

-  { 0x8c00, 0x0eb9, 0x5000 },

-  { 0x8c00, 0x0eb1, 0x4000 },

-  { 0x8700, 0x0ead, 0x3000 },

-  { 0x8700, 0x0eaa, 0x2000 },

-  { 0x0700, 0x0ea7, 0x0000 },

-  { 0x0700, 0x0eab, 0x0000 },

-  { 0x8700, 0x0eaf, 0x2000 },

-  { 0x0700, 0x0eae, 0x0000 },

-  { 0x0700, 0x0eb0, 0x0000 },

-  { 0x8c00, 0x0eb5, 0x3000 },

-  { 0x8700, 0x0eb3, 0x2000 },

-  { 0x0700, 0x0eb2, 0x0000 },

-  { 0x0c00, 0x0eb4, 0x0000 },

-  { 0x8c00, 0x0eb7, 0x2000 },

-  { 0x0c00, 0x0eb6, 0x0000 },

-  { 0x0c00, 0x0eb8, 0x0000 },

-  { 0x8700, 0x0ec4, 0x4000 },

-  { 0x8700, 0x0ec0, 0x3000 },

-  { 0x8c00, 0x0ebc, 0x2000 },

-  { 0x0c00, 0x0ebb, 0x0000 },

-  { 0x0700, 0x0ebd, 0x0000 },

-  { 0x8700, 0x0ec2, 0x2000 },

-  { 0x0700, 0x0ec1, 0x0000 },

-  { 0x0700, 0x0ec3, 0x0000 },

-  { 0x8c00, 0x0eca, 0x3000 },

-  { 0x8c00, 0x0ec8, 0x2000 },

-  { 0x0600, 0x0ec6, 0x0000 },

-  { 0x0c00, 0x0ec9, 0x0000 },

-  { 0x8c00, 0x0ecc, 0x2000 },

-  { 0x0c00, 0x0ecb, 0x0000 },

-  { 0x0c00, 0x0ecd, 0x0000 },

-  { 0x9500, 0x0f04, 0x5000 },

-  { 0x8d00, 0x0ed8, 0x4000 },

-  { 0x8d00, 0x0ed4, 0x3000 },

-  { 0x8d00, 0x0ed2, 0x2000 },

-  { 0x0d00, 0x0ed1, 0x0000 },

-  { 0x0d00, 0x0ed3, 0x0000 },

-  { 0x8d00, 0x0ed6, 0x2000 },

-  { 0x0d00, 0x0ed5, 0x0000 },

-  { 0x0d00, 0x0ed7, 0x0000 },

-  { 0x8700, 0x0f00, 0x3000 },

-  { 0x8700, 0x0edc, 0x2000 },

-  { 0x0d00, 0x0ed9, 0x0000 },

-  { 0x0700, 0x0edd, 0x0000 },

-  { 0x9a00, 0x0f02, 0x2000 },

-  { 0x1a00, 0x0f01, 0x0000 },

-  { 0x1a00, 0x0f03, 0x0000 },

-  { 0x9500, 0x0f0c, 0x4000 },

-  { 0x9500, 0x0f08, 0x3000 },

-  { 0x9500, 0x0f06, 0x2000 },

-  { 0x1500, 0x0f05, 0x0000 },

-  { 0x1500, 0x0f07, 0x0000 },

-  { 0x9500, 0x0f0a, 0x2000 },

-  { 0x1500, 0x0f09, 0x0000 },

-  { 0x1500, 0x0f0b, 0x0000 },

-  { 0x9500, 0x0f10, 0x3000 },

-  { 0x9500, 0x0f0e, 0x2000 },

-  { 0x1500, 0x0f0d, 0x0000 },

-  { 0x1500, 0x0f0f, 0x0000 },

-  { 0x9500, 0x0f12, 0x2000 },

-  { 0x1500, 0x0f11, 0x0000 },

-  { 0x1a00, 0x0f13, 0x0000 },

-  { 0x9a00, 0x0f34, 0x6000 },

-  { 0x8d00, 0x0f24, 0x5000 },

-  { 0x9a00, 0x0f1c, 0x4000 },

-  { 0x8c00, 0x0f18, 0x3000 },

-  { 0x9a00, 0x0f16, 0x2000 },

-  { 0x1a00, 0x0f15, 0x0000 },

-  { 0x1a00, 0x0f17, 0x0000 },

-  { 0x9a00, 0x0f1a, 0x2000 },

-  { 0x0c00, 0x0f19, 0x0000 },

-  { 0x1a00, 0x0f1b, 0x0000 },

-  { 0x8d00, 0x0f20, 0x3000 },

-  { 0x9a00, 0x0f1e, 0x2000 },

-  { 0x1a00, 0x0f1d, 0x0000 },

-  { 0x1a00, 0x0f1f, 0x0000 },

-  { 0x8d00, 0x0f22, 0x2000 },

-  { 0x0d00, 0x0f21, 0x0000 },

-  { 0x0d00, 0x0f23, 0x0000 },

-  { 0x8f00, 0x0f2c, 0x4000 },

-  { 0x8d00, 0x0f28, 0x3000 },

-  { 0x8d00, 0x0f26, 0x2000 },

-  { 0x0d00, 0x0f25, 0x0000 },

-  { 0x0d00, 0x0f27, 0x0000 },

-  { 0x8f00, 0x0f2a, 0x2000 },

-  { 0x0d00, 0x0f29, 0x0000 },

-  { 0x0f00, 0x0f2b, 0x0000 },

-  { 0x8f00, 0x0f30, 0x3000 },

-  { 0x8f00, 0x0f2e, 0x2000 },

-  { 0x0f00, 0x0f2d, 0x0000 },

-  { 0x0f00, 0x0f2f, 0x0000 },

-  { 0x8f00, 0x0f32, 0x2000 },

-  { 0x0f00, 0x0f31, 0x0000 },

-  { 0x0f00, 0x0f33, 0x0000 },

-  { 0x8700, 0x0f44, 0x5000 },

-  { 0x9600, 0x0f3c, 0x4000 },

-  { 0x9a00, 0x0f38, 0x3000 },

-  { 0x9a00, 0x0f36, 0x2000 },

-  { 0x0c00, 0x0f35, 0x0000 },

-  { 0x0c00, 0x0f37, 0x0000 },

-  { 0x9600, 0x0f3a, 0x2000 },

-  { 0x0c00, 0x0f39, 0x0000 },

-  { 0x1200, 0x0f3b, 0x0000 },

-  { 0x8700, 0x0f40, 0x3000 },

-  { 0x8a00, 0x0f3e, 0x2000 },

-  { 0x1200, 0x0f3d, 0x0000 },

-  { 0x0a00, 0x0f3f, 0x0000 },

-  { 0x8700, 0x0f42, 0x2000 },

-  { 0x0700, 0x0f41, 0x0000 },

-  { 0x0700, 0x0f43, 0x0000 },

-  { 0x8700, 0x0f4d, 0x4000 },

-  { 0x8700, 0x0f49, 0x3000 },

-  { 0x8700, 0x0f46, 0x2000 },

-  { 0x0700, 0x0f45, 0x0000 },

-  { 0x0700, 0x0f47, 0x0000 },

-  { 0x8700, 0x0f4b, 0x2000 },

-  { 0x0700, 0x0f4a, 0x0000 },

-  { 0x0700, 0x0f4c, 0x0000 },

-  { 0x8700, 0x0f51, 0x3000 },

-  { 0x8700, 0x0f4f, 0x2000 },

-  { 0x0700, 0x0f4e, 0x0000 },

-  { 0x0700, 0x0f50, 0x0000 },

-  { 0x8700, 0x0f53, 0x2000 },

-  { 0x0700, 0x0f52, 0x0000 },

-  { 0x0700, 0x0f54, 0x0000 },

-  { 0x8700, 0x1013, 0x8000 },

-  { 0x8c00, 0x0fa0, 0x7000 },

-  { 0x8c00, 0x0f7b, 0x6000 },

-  { 0x8700, 0x0f65, 0x5000 },

-  { 0x8700, 0x0f5d, 0x4000 },

-  { 0x8700, 0x0f59, 0x3000 },

-  { 0x8700, 0x0f57, 0x2000 },

-  { 0x0700, 0x0f56, 0x0000 },

-  { 0x0700, 0x0f58, 0x0000 },

-  { 0x8700, 0x0f5b, 0x2000 },

-  { 0x0700, 0x0f5a, 0x0000 },

-  { 0x0700, 0x0f5c, 0x0000 },

-  { 0x8700, 0x0f61, 0x3000 },

-  { 0x8700, 0x0f5f, 0x2000 },

-  { 0x0700, 0x0f5e, 0x0000 },

-  { 0x0700, 0x0f60, 0x0000 },

-  { 0x8700, 0x0f63, 0x2000 },

-  { 0x0700, 0x0f62, 0x0000 },

-  { 0x0700, 0x0f64, 0x0000 },

-  { 0x8c00, 0x0f73, 0x4000 },

-  { 0x8700, 0x0f69, 0x3000 },

-  { 0x8700, 0x0f67, 0x2000 },

-  { 0x0700, 0x0f66, 0x0000 },

-  { 0x0700, 0x0f68, 0x0000 },

-  { 0x8c00, 0x0f71, 0x2000 },

-  { 0x0700, 0x0f6a, 0x0000 },

-  { 0x0c00, 0x0f72, 0x0000 },

-  { 0x8c00, 0x0f77, 0x3000 },

-  { 0x8c00, 0x0f75, 0x2000 },

-  { 0x0c00, 0x0f74, 0x0000 },

-  { 0x0c00, 0x0f76, 0x0000 },

-  { 0x8c00, 0x0f79, 0x2000 },

-  { 0x0c00, 0x0f78, 0x0000 },

-  { 0x0c00, 0x0f7a, 0x0000 },

-  { 0x8700, 0x0f8b, 0x5000 },

-  { 0x8c00, 0x0f83, 0x4000 },

-  { 0x8a00, 0x0f7f, 0x3000 },

-  { 0x8c00, 0x0f7d, 0x2000 },

-  { 0x0c00, 0x0f7c, 0x0000 },

-  { 0x0c00, 0x0f7e, 0x0000 },

-  { 0x8c00, 0x0f81, 0x2000 },

-  { 0x0c00, 0x0f80, 0x0000 },

-  { 0x0c00, 0x0f82, 0x0000 },

-  { 0x8c00, 0x0f87, 0x3000 },

-  { 0x9500, 0x0f85, 0x2000 },

-  { 0x0c00, 0x0f84, 0x0000 },

-  { 0x0c00, 0x0f86, 0x0000 },

-  { 0x8700, 0x0f89, 0x2000 },

-  { 0x0700, 0x0f88, 0x0000 },

-  { 0x0700, 0x0f8a, 0x0000 },

-  { 0x8c00, 0x0f97, 0x4000 },

-  { 0x8c00, 0x0f93, 0x3000 },

-  { 0x8c00, 0x0f91, 0x2000 },

-  { 0x0c00, 0x0f90, 0x0000 },

-  { 0x0c00, 0x0f92, 0x0000 },

-  { 0x8c00, 0x0f95, 0x2000 },

-  { 0x0c00, 0x0f94, 0x0000 },

-  { 0x0c00, 0x0f96, 0x0000 },

-  { 0x8c00, 0x0f9c, 0x3000 },

-  { 0x8c00, 0x0f9a, 0x2000 },

-  { 0x0c00, 0x0f99, 0x0000 },

-  { 0x0c00, 0x0f9b, 0x0000 },

-  { 0x8c00, 0x0f9e, 0x2000 },

-  { 0x0c00, 0x0f9d, 0x0000 },

-  { 0x0c00, 0x0f9f, 0x0000 },

-  { 0x9a00, 0x0fc1, 0x6000 },

-  { 0x8c00, 0x0fb0, 0x5000 },

-  { 0x8c00, 0x0fa8, 0x4000 },

-  { 0x8c00, 0x0fa4, 0x3000 },

-  { 0x8c00, 0x0fa2, 0x2000 },

-  { 0x0c00, 0x0fa1, 0x0000 },

-  { 0x0c00, 0x0fa3, 0x0000 },

-  { 0x8c00, 0x0fa6, 0x2000 },

-  { 0x0c00, 0x0fa5, 0x0000 },

-  { 0x0c00, 0x0fa7, 0x0000 },

-  { 0x8c00, 0x0fac, 0x3000 },

-  { 0x8c00, 0x0faa, 0x2000 },

-  { 0x0c00, 0x0fa9, 0x0000 },

-  { 0x0c00, 0x0fab, 0x0000 },

-  { 0x8c00, 0x0fae, 0x2000 },

-  { 0x0c00, 0x0fad, 0x0000 },

-  { 0x0c00, 0x0faf, 0x0000 },

-  { 0x8c00, 0x0fb8, 0x4000 },

-  { 0x8c00, 0x0fb4, 0x3000 },

-  { 0x8c00, 0x0fb2, 0x2000 },

-  { 0x0c00, 0x0fb1, 0x0000 },

-  { 0x0c00, 0x0fb3, 0x0000 },

-  { 0x8c00, 0x0fb6, 0x2000 },

-  { 0x0c00, 0x0fb5, 0x0000 },

-  { 0x0c00, 0x0fb7, 0x0000 },

-  { 0x8c00, 0x0fbc, 0x3000 },

-  { 0x8c00, 0x0fba, 0x2000 },

-  { 0x0c00, 0x0fb9, 0x0000 },

-  { 0x0c00, 0x0fbb, 0x0000 },

-  { 0x9a00, 0x0fbf, 0x2000 },

-  { 0x1a00, 0x0fbe, 0x0000 },

-  { 0x1a00, 0x0fc0, 0x0000 },

-  { 0x8700, 0x1003, 0x5000 },

-  { 0x9a00, 0x0fc9, 0x4000 },

-  { 0x9a00, 0x0fc5, 0x3000 },

-  { 0x9a00, 0x0fc3, 0x2000 },

-  { 0x1a00, 0x0fc2, 0x0000 },

-  { 0x1a00, 0x0fc4, 0x0000 },

-  { 0x9a00, 0x0fc7, 0x2000 },

-  { 0x0c00, 0x0fc6, 0x0000 },

-  { 0x1a00, 0x0fc8, 0x0000 },

-  { 0x9a00, 0x0fcf, 0x3000 },

-  { 0x9a00, 0x0fcb, 0x2000 },

-  { 0x1a00, 0x0fca, 0x0000 },

-  { 0x1a00, 0x0fcc, 0x0000 },

-  { 0x8700, 0x1001, 0x2000 },

-  { 0x0700, 0x1000, 0x0000 },

-  { 0x0700, 0x1002, 0x0000 },

-  { 0x8700, 0x100b, 0x4000 },

-  { 0x8700, 0x1007, 0x3000 },

-  { 0x8700, 0x1005, 0x2000 },

-  { 0x0700, 0x1004, 0x0000 },

-  { 0x0700, 0x1006, 0x0000 },

-  { 0x8700, 0x1009, 0x2000 },

-  { 0x0700, 0x1008, 0x0000 },

-  { 0x0700, 0x100a, 0x0000 },

-  { 0x8700, 0x100f, 0x3000 },

-  { 0x8700, 0x100d, 0x2000 },

-  { 0x0700, 0x100c, 0x0000 },

-  { 0x0700, 0x100e, 0x0000 },

-  { 0x8700, 0x1011, 0x2000 },

-  { 0x0700, 0x1010, 0x0000 },

-  { 0x0700, 0x1012, 0x0000 },

-  { 0x8900, 0x10a5, 0x7000 },

-  { 0x8c00, 0x1039, 0x6000 },

-  { 0x8700, 0x1024, 0x5000 },

-  { 0x8700, 0x101b, 0x4000 },

-  { 0x8700, 0x1017, 0x3000 },

-  { 0x8700, 0x1015, 0x2000 },

-  { 0x0700, 0x1014, 0x0000 },

-  { 0x0700, 0x1016, 0x0000 },

-  { 0x8700, 0x1019, 0x2000 },

-  { 0x0700, 0x1018, 0x0000 },

-  { 0x0700, 0x101a, 0x0000 },

-  { 0x8700, 0x101f, 0x3000 },

-  { 0x8700, 0x101d, 0x2000 },

-  { 0x0700, 0x101c, 0x0000 },

-  { 0x0700, 0x101e, 0x0000 },

-  { 0x8700, 0x1021, 0x2000 },

-  { 0x0700, 0x1020, 0x0000 },

-  { 0x0700, 0x1023, 0x0000 },

-  { 0x8c00, 0x102e, 0x4000 },

-  { 0x8700, 0x1029, 0x3000 },

-  { 0x8700, 0x1026, 0x2000 },

-  { 0x0700, 0x1025, 0x0000 },

-  { 0x0700, 0x1027, 0x0000 },

-  { 0x8a00, 0x102c, 0x2000 },

-  { 0x0700, 0x102a, 0x0000 },

-  { 0x0c00, 0x102d, 0x0000 },

-  { 0x8c00, 0x1032, 0x3000 },

-  { 0x8c00, 0x1030, 0x2000 },

-  { 0x0c00, 0x102f, 0x0000 },

-  { 0x0a00, 0x1031, 0x0000 },

-  { 0x8c00, 0x1037, 0x2000 },

-  { 0x0c00, 0x1036, 0x0000 },

-  { 0x0a00, 0x1038, 0x0000 },

-  { 0x9500, 0x104f, 0x5000 },

-  { 0x8d00, 0x1047, 0x4000 },

-  { 0x8d00, 0x1043, 0x3000 },

-  { 0x8d00, 0x1041, 0x2000 },

-  { 0x0d00, 0x1040, 0x0000 },

-  { 0x0d00, 0x1042, 0x0000 },

-  { 0x8d00, 0x1045, 0x2000 },

-  { 0x0d00, 0x1044, 0x0000 },

-  { 0x0d00, 0x1046, 0x0000 },

-  { 0x9500, 0x104b, 0x3000 },

-  { 0x8d00, 0x1049, 0x2000 },

-  { 0x0d00, 0x1048, 0x0000 },

-  { 0x1500, 0x104a, 0x0000 },

-  { 0x9500, 0x104d, 0x2000 },

-  { 0x1500, 0x104c, 0x0000 },

-  { 0x1500, 0x104e, 0x0000 },

-  { 0x8a00, 0x1057, 0x4000 },

-  { 0x8700, 0x1053, 0x3000 },

-  { 0x8700, 0x1051, 0x2000 },

-  { 0x0700, 0x1050, 0x0000 },

-  { 0x0700, 0x1052, 0x0000 },

-  { 0x8700, 0x1055, 0x2000 },

-  { 0x0700, 0x1054, 0x0000 },

-  { 0x0a00, 0x1056, 0x0000 },

-  { 0x8900, 0x10a1, 0x3000 },

-  { 0x8c00, 0x1059, 0x2000 },

-  { 0x0c00, 0x1058, 0x0000 },

-  { 0x0900, 0x10a0, 0x0000 },

-  { 0x8900, 0x10a3, 0x2000 },

-  { 0x0900, 0x10a2, 0x0000 },

-  { 0x0900, 0x10a4, 0x0000 },

-  { 0x8900, 0x10c5, 0x6000 },

-  { 0x8900, 0x10b5, 0x5000 },

-  { 0x8900, 0x10ad, 0x4000 },

-  { 0x8900, 0x10a9, 0x3000 },

-  { 0x8900, 0x10a7, 0x2000 },

-  { 0x0900, 0x10a6, 0x0000 },

-  { 0x0900, 0x10a8, 0x0000 },

-  { 0x8900, 0x10ab, 0x2000 },

-  { 0x0900, 0x10aa, 0x0000 },

-  { 0x0900, 0x10ac, 0x0000 },

-  { 0x8900, 0x10b1, 0x3000 },

-  { 0x8900, 0x10af, 0x2000 },

-  { 0x0900, 0x10ae, 0x0000 },

-  { 0x0900, 0x10b0, 0x0000 },

-  { 0x8900, 0x10b3, 0x2000 },

-  { 0x0900, 0x10b2, 0x0000 },

-  { 0x0900, 0x10b4, 0x0000 },

-  { 0x8900, 0x10bd, 0x4000 },

-  { 0x8900, 0x10b9, 0x3000 },

-  { 0x8900, 0x10b7, 0x2000 },

-  { 0x0900, 0x10b6, 0x0000 },

-  { 0x0900, 0x10b8, 0x0000 },

-  { 0x8900, 0x10bb, 0x2000 },

-  { 0x0900, 0x10ba, 0x0000 },

-  { 0x0900, 0x10bc, 0x0000 },

-  { 0x8900, 0x10c1, 0x3000 },

-  { 0x8900, 0x10bf, 0x2000 },

-  { 0x0900, 0x10be, 0x0000 },

-  { 0x0900, 0x10c0, 0x0000 },

-  { 0x8900, 0x10c3, 0x2000 },

-  { 0x0900, 0x10c2, 0x0000 },

-  { 0x0900, 0x10c4, 0x0000 },

-  { 0x8700, 0x10df, 0x5000 },

-  { 0x8700, 0x10d7, 0x4000 },

-  { 0x8700, 0x10d3, 0x3000 },

-  { 0x8700, 0x10d1, 0x2000 },

-  { 0x0700, 0x10d0, 0x0000 },

-  { 0x0700, 0x10d2, 0x0000 },

-  { 0x8700, 0x10d5, 0x2000 },

-  { 0x0700, 0x10d4, 0x0000 },

-  { 0x0700, 0x10d6, 0x0000 },

-  { 0x8700, 0x10db, 0x3000 },

-  { 0x8700, 0x10d9, 0x2000 },

-  { 0x0700, 0x10d8, 0x0000 },

-  { 0x0700, 0x10da, 0x0000 },

-  { 0x8700, 0x10dd, 0x2000 },

-  { 0x0700, 0x10dc, 0x0000 },

-  { 0x0700, 0x10de, 0x0000 },

-  { 0x8700, 0x10e7, 0x4000 },

-  { 0x8700, 0x10e3, 0x3000 },

-  { 0x8700, 0x10e1, 0x2000 },

-  { 0x0700, 0x10e0, 0x0000 },

-  { 0x0700, 0x10e2, 0x0000 },

-  { 0x8700, 0x10e5, 0x2000 },

-  { 0x0700, 0x10e4, 0x0000 },

-  { 0x0700, 0x10e6, 0x0000 },

-  { 0x8700, 0x10eb, 0x3000 },

-  { 0x8700, 0x10e9, 0x2000 },

-  { 0x0700, 0x10e8, 0x0000 },

-  { 0x0700, 0x10ea, 0x0000 },

-  { 0x8700, 0x10ed, 0x2000 },

-  { 0x0700, 0x10ec, 0x0000 },

-  { 0x0700, 0x10ee, 0x0000 },

-  { 0x8700, 0x1322, 0xa000 },

-  { 0x8700, 0x1205, 0x9000 },

-  { 0x8700, 0x117a, 0x8000 },

-  { 0x8700, 0x1135, 0x7000 },

-  { 0x8700, 0x1115, 0x6000 },

-  { 0x8700, 0x1105, 0x5000 },

-  { 0x8700, 0x10f7, 0x4000 },

-  { 0x8700, 0x10f3, 0x3000 },

-  { 0x8700, 0x10f1, 0x2000 },

-  { 0x0700, 0x10f0, 0x0000 },

-  { 0x0700, 0x10f2, 0x0000 },

-  { 0x8700, 0x10f5, 0x2000 },

-  { 0x0700, 0x10f4, 0x0000 },

-  { 0x0700, 0x10f6, 0x0000 },

-  { 0x8700, 0x1101, 0x3000 },

-  { 0x9500, 0x10fb, 0x2000 },

-  { 0x0700, 0x10f8, 0x0000 },

-  { 0x0700, 0x1100, 0x0000 },

-  { 0x8700, 0x1103, 0x2000 },

-  { 0x0700, 0x1102, 0x0000 },

-  { 0x0700, 0x1104, 0x0000 },

-  { 0x8700, 0x110d, 0x4000 },

-  { 0x8700, 0x1109, 0x3000 },

-  { 0x8700, 0x1107, 0x2000 },

-  { 0x0700, 0x1106, 0x0000 },

-  { 0x0700, 0x1108, 0x0000 },

-  { 0x8700, 0x110b, 0x2000 },

-  { 0x0700, 0x110a, 0x0000 },

-  { 0x0700, 0x110c, 0x0000 },

-  { 0x8700, 0x1111, 0x3000 },

-  { 0x8700, 0x110f, 0x2000 },

-  { 0x0700, 0x110e, 0x0000 },

-  { 0x0700, 0x1110, 0x0000 },

-  { 0x8700, 0x1113, 0x2000 },

-  { 0x0700, 0x1112, 0x0000 },

-  { 0x0700, 0x1114, 0x0000 },

-  { 0x8700, 0x1125, 0x5000 },

-  { 0x8700, 0x111d, 0x4000 },

-  { 0x8700, 0x1119, 0x3000 },

-  { 0x8700, 0x1117, 0x2000 },

-  { 0x0700, 0x1116, 0x0000 },

-  { 0x0700, 0x1118, 0x0000 },

-  { 0x8700, 0x111b, 0x2000 },

-  { 0x0700, 0x111a, 0x0000 },

-  { 0x0700, 0x111c, 0x0000 },

-  { 0x8700, 0x1121, 0x3000 },

-  { 0x8700, 0x111f, 0x2000 },

-  { 0x0700, 0x111e, 0x0000 },

-  { 0x0700, 0x1120, 0x0000 },

-  { 0x8700, 0x1123, 0x2000 },

-  { 0x0700, 0x1122, 0x0000 },

-  { 0x0700, 0x1124, 0x0000 },

-  { 0x8700, 0x112d, 0x4000 },

-  { 0x8700, 0x1129, 0x3000 },

-  { 0x8700, 0x1127, 0x2000 },

-  { 0x0700, 0x1126, 0x0000 },

-  { 0x0700, 0x1128, 0x0000 },

-  { 0x8700, 0x112b, 0x2000 },

-  { 0x0700, 0x112a, 0x0000 },

-  { 0x0700, 0x112c, 0x0000 },

-  { 0x8700, 0x1131, 0x3000 },

-  { 0x8700, 0x112f, 0x2000 },

-  { 0x0700, 0x112e, 0x0000 },

-  { 0x0700, 0x1130, 0x0000 },

-  { 0x8700, 0x1133, 0x2000 },

-  { 0x0700, 0x1132, 0x0000 },

-  { 0x0700, 0x1134, 0x0000 },

-  { 0x8700, 0x1155, 0x6000 },

-  { 0x8700, 0x1145, 0x5000 },

-  { 0x8700, 0x113d, 0x4000 },

-  { 0x8700, 0x1139, 0x3000 },

-  { 0x8700, 0x1137, 0x2000 },

-  { 0x0700, 0x1136, 0x0000 },

-  { 0x0700, 0x1138, 0x0000 },

-  { 0x8700, 0x113b, 0x2000 },

-  { 0x0700, 0x113a, 0x0000 },

-  { 0x0700, 0x113c, 0x0000 },

-  { 0x8700, 0x1141, 0x3000 },

-  { 0x8700, 0x113f, 0x2000 },

-  { 0x0700, 0x113e, 0x0000 },

-  { 0x0700, 0x1140, 0x0000 },

-  { 0x8700, 0x1143, 0x2000 },

-  { 0x0700, 0x1142, 0x0000 },

-  { 0x0700, 0x1144, 0x0000 },

-  { 0x8700, 0x114d, 0x4000 },

-  { 0x8700, 0x1149, 0x3000 },

-  { 0x8700, 0x1147, 0x2000 },

-  { 0x0700, 0x1146, 0x0000 },

-  { 0x0700, 0x1148, 0x0000 },

-  { 0x8700, 0x114b, 0x2000 },

-  { 0x0700, 0x114a, 0x0000 },

-  { 0x0700, 0x114c, 0x0000 },

-  { 0x8700, 0x1151, 0x3000 },

-  { 0x8700, 0x114f, 0x2000 },

-  { 0x0700, 0x114e, 0x0000 },

-  { 0x0700, 0x1150, 0x0000 },

-  { 0x8700, 0x1153, 0x2000 },

-  { 0x0700, 0x1152, 0x0000 },

-  { 0x0700, 0x1154, 0x0000 },

-  { 0x8700, 0x116a, 0x5000 },

-  { 0x8700, 0x1162, 0x4000 },

-  { 0x8700, 0x1159, 0x3000 },

-  { 0x8700, 0x1157, 0x2000 },

-  { 0x0700, 0x1156, 0x0000 },

-  { 0x0700, 0x1158, 0x0000 },

-  { 0x8700, 0x1160, 0x2000 },

-  { 0x0700, 0x115f, 0x0000 },

-  { 0x0700, 0x1161, 0x0000 },

-  { 0x8700, 0x1166, 0x3000 },

-  { 0x8700, 0x1164, 0x2000 },

-  { 0x0700, 0x1163, 0x0000 },

-  { 0x0700, 0x1165, 0x0000 },

-  { 0x8700, 0x1168, 0x2000 },

-  { 0x0700, 0x1167, 0x0000 },

-  { 0x0700, 0x1169, 0x0000 },

-  { 0x8700, 0x1172, 0x4000 },

-  { 0x8700, 0x116e, 0x3000 },

-  { 0x8700, 0x116c, 0x2000 },

-  { 0x0700, 0x116b, 0x0000 },

-  { 0x0700, 0x116d, 0x0000 },

-  { 0x8700, 0x1170, 0x2000 },

-  { 0x0700, 0x116f, 0x0000 },

-  { 0x0700, 0x1171, 0x0000 },

-  { 0x8700, 0x1176, 0x3000 },

-  { 0x8700, 0x1174, 0x2000 },

-  { 0x0700, 0x1173, 0x0000 },

-  { 0x0700, 0x1175, 0x0000 },

-  { 0x8700, 0x1178, 0x2000 },

-  { 0x0700, 0x1177, 0x0000 },

-  { 0x0700, 0x1179, 0x0000 },

-  { 0x8700, 0x11bf, 0x7000 },

-  { 0x8700, 0x119a, 0x6000 },

-  { 0x8700, 0x118a, 0x5000 },

-  { 0x8700, 0x1182, 0x4000 },

-  { 0x8700, 0x117e, 0x3000 },

-  { 0x8700, 0x117c, 0x2000 },

-  { 0x0700, 0x117b, 0x0000 },

-  { 0x0700, 0x117d, 0x0000 },

-  { 0x8700, 0x1180, 0x2000 },

-  { 0x0700, 0x117f, 0x0000 },

-  { 0x0700, 0x1181, 0x0000 },

-  { 0x8700, 0x1186, 0x3000 },

-  { 0x8700, 0x1184, 0x2000 },

-  { 0x0700, 0x1183, 0x0000 },

-  { 0x0700, 0x1185, 0x0000 },

-  { 0x8700, 0x1188, 0x2000 },

-  { 0x0700, 0x1187, 0x0000 },

-  { 0x0700, 0x1189, 0x0000 },

-  { 0x8700, 0x1192, 0x4000 },

-  { 0x8700, 0x118e, 0x3000 },

-  { 0x8700, 0x118c, 0x2000 },

-  { 0x0700, 0x118b, 0x0000 },

-  { 0x0700, 0x118d, 0x0000 },

-  { 0x8700, 0x1190, 0x2000 },

-  { 0x0700, 0x118f, 0x0000 },

-  { 0x0700, 0x1191, 0x0000 },

-  { 0x8700, 0x1196, 0x3000 },

-  { 0x8700, 0x1194, 0x2000 },

-  { 0x0700, 0x1193, 0x0000 },

-  { 0x0700, 0x1195, 0x0000 },

-  { 0x8700, 0x1198, 0x2000 },

-  { 0x0700, 0x1197, 0x0000 },

-  { 0x0700, 0x1199, 0x0000 },

-  { 0x8700, 0x11af, 0x5000 },

-  { 0x8700, 0x11a2, 0x4000 },

-  { 0x8700, 0x119e, 0x3000 },

-  { 0x8700, 0x119c, 0x2000 },

-  { 0x0700, 0x119b, 0x0000 },

-  { 0x0700, 0x119d, 0x0000 },

-  { 0x8700, 0x11a0, 0x2000 },

-  { 0x0700, 0x119f, 0x0000 },

-  { 0x0700, 0x11a1, 0x0000 },

-  { 0x8700, 0x11ab, 0x3000 },

-  { 0x8700, 0x11a9, 0x2000 },

-  { 0x0700, 0x11a8, 0x0000 },

-  { 0x0700, 0x11aa, 0x0000 },

-  { 0x8700, 0x11ad, 0x2000 },

-  { 0x0700, 0x11ac, 0x0000 },

-  { 0x0700, 0x11ae, 0x0000 },

-  { 0x8700, 0x11b7, 0x4000 },

-  { 0x8700, 0x11b3, 0x3000 },

-  { 0x8700, 0x11b1, 0x2000 },

-  { 0x0700, 0x11b0, 0x0000 },

-  { 0x0700, 0x11b2, 0x0000 },

-  { 0x8700, 0x11b5, 0x2000 },

-  { 0x0700, 0x11b4, 0x0000 },

-  { 0x0700, 0x11b6, 0x0000 },

-  { 0x8700, 0x11bb, 0x3000 },

-  { 0x8700, 0x11b9, 0x2000 },

-  { 0x0700, 0x11b8, 0x0000 },

-  { 0x0700, 0x11ba, 0x0000 },

-  { 0x8700, 0x11bd, 0x2000 },

-  { 0x0700, 0x11bc, 0x0000 },

-  { 0x0700, 0x11be, 0x0000 },

-  { 0x8700, 0x11df, 0x6000 },

-  { 0x8700, 0x11cf, 0x5000 },

-  { 0x8700, 0x11c7, 0x4000 },

-  { 0x8700, 0x11c3, 0x3000 },

-  { 0x8700, 0x11c1, 0x2000 },

-  { 0x0700, 0x11c0, 0x0000 },

-  { 0x0700, 0x11c2, 0x0000 },

-  { 0x8700, 0x11c5, 0x2000 },

-  { 0x0700, 0x11c4, 0x0000 },

-  { 0x0700, 0x11c6, 0x0000 },

-  { 0x8700, 0x11cb, 0x3000 },

-  { 0x8700, 0x11c9, 0x2000 },

-  { 0x0700, 0x11c8, 0x0000 },

-  { 0x0700, 0x11ca, 0x0000 },

-  { 0x8700, 0x11cd, 0x2000 },

-  { 0x0700, 0x11cc, 0x0000 },

-  { 0x0700, 0x11ce, 0x0000 },

-  { 0x8700, 0x11d7, 0x4000 },

-  { 0x8700, 0x11d3, 0x3000 },

-  { 0x8700, 0x11d1, 0x2000 },

-  { 0x0700, 0x11d0, 0x0000 },

-  { 0x0700, 0x11d2, 0x0000 },

-  { 0x8700, 0x11d5, 0x2000 },

-  { 0x0700, 0x11d4, 0x0000 },

-  { 0x0700, 0x11d6, 0x0000 },

-  { 0x8700, 0x11db, 0x3000 },

-  { 0x8700, 0x11d9, 0x2000 },

-  { 0x0700, 0x11d8, 0x0000 },

-  { 0x0700, 0x11da, 0x0000 },

-  { 0x8700, 0x11dd, 0x2000 },

-  { 0x0700, 0x11dc, 0x0000 },

-  { 0x0700, 0x11de, 0x0000 },

-  { 0x8700, 0x11ef, 0x5000 },

-  { 0x8700, 0x11e7, 0x4000 },

-  { 0x8700, 0x11e3, 0x3000 },

-  { 0x8700, 0x11e1, 0x2000 },

-  { 0x0700, 0x11e0, 0x0000 },

-  { 0x0700, 0x11e2, 0x0000 },

-  { 0x8700, 0x11e5, 0x2000 },

-  { 0x0700, 0x11e4, 0x0000 },

-  { 0x0700, 0x11e6, 0x0000 },

-  { 0x8700, 0x11eb, 0x3000 },

-  { 0x8700, 0x11e9, 0x2000 },

-  { 0x0700, 0x11e8, 0x0000 },

-  { 0x0700, 0x11ea, 0x0000 },

-  { 0x8700, 0x11ed, 0x2000 },

-  { 0x0700, 0x11ec, 0x0000 },

-  { 0x0700, 0x11ee, 0x0000 },

-  { 0x8700, 0x11f7, 0x4000 },

-  { 0x8700, 0x11f3, 0x3000 },

-  { 0x8700, 0x11f1, 0x2000 },

-  { 0x0700, 0x11f0, 0x0000 },

-  { 0x0700, 0x11f2, 0x0000 },

-  { 0x8700, 0x11f5, 0x2000 },

-  { 0x0700, 0x11f4, 0x0000 },

-  { 0x0700, 0x11f6, 0x0000 },

-  { 0x8700, 0x1201, 0x3000 },

-  { 0x8700, 0x11f9, 0x2000 },

-  { 0x0700, 0x11f8, 0x0000 },

-  { 0x0700, 0x1200, 0x0000 },

-  { 0x8700, 0x1203, 0x2000 },

-  { 0x0700, 0x1202, 0x0000 },

-  { 0x0700, 0x1204, 0x0000 },

-  { 0x8700, 0x1292, 0x8000 },

-  { 0x8700, 0x1246, 0x7000 },

-  { 0x8700, 0x1226, 0x6000 },

-  { 0x8700, 0x1216, 0x5000 },

-  { 0x8700, 0x120e, 0x4000 },

-  { 0x8700, 0x120a, 0x3000 },

-  { 0x8700, 0x1208, 0x2000 },

-  { 0x0700, 0x1206, 0x0000 },

-  { 0x0700, 0x1209, 0x0000 },

-  { 0x8700, 0x120c, 0x2000 },

-  { 0x0700, 0x120b, 0x0000 },

-  { 0x0700, 0x120d, 0x0000 },

-  { 0x8700, 0x1212, 0x3000 },

-  { 0x8700, 0x1210, 0x2000 },

-  { 0x0700, 0x120f, 0x0000 },

-  { 0x0700, 0x1211, 0x0000 },

-  { 0x8700, 0x1214, 0x2000 },

-  { 0x0700, 0x1213, 0x0000 },

-  { 0x0700, 0x1215, 0x0000 },

-  { 0x8700, 0x121e, 0x4000 },

-  { 0x8700, 0x121a, 0x3000 },

-  { 0x8700, 0x1218, 0x2000 },

-  { 0x0700, 0x1217, 0x0000 },

-  { 0x0700, 0x1219, 0x0000 },

-  { 0x8700, 0x121c, 0x2000 },

-  { 0x0700, 0x121b, 0x0000 },

-  { 0x0700, 0x121d, 0x0000 },

-  { 0x8700, 0x1222, 0x3000 },

-  { 0x8700, 0x1220, 0x2000 },

-  { 0x0700, 0x121f, 0x0000 },

-  { 0x0700, 0x1221, 0x0000 },

-  { 0x8700, 0x1224, 0x2000 },

-  { 0x0700, 0x1223, 0x0000 },

-  { 0x0700, 0x1225, 0x0000 },

-  { 0x8700, 0x1236, 0x5000 },

-  { 0x8700, 0x122e, 0x4000 },

-  { 0x8700, 0x122a, 0x3000 },

-  { 0x8700, 0x1228, 0x2000 },

-  { 0x0700, 0x1227, 0x0000 },

-  { 0x0700, 0x1229, 0x0000 },

-  { 0x8700, 0x122c, 0x2000 },

-  { 0x0700, 0x122b, 0x0000 },

-  { 0x0700, 0x122d, 0x0000 },

-  { 0x8700, 0x1232, 0x3000 },

-  { 0x8700, 0x1230, 0x2000 },

-  { 0x0700, 0x122f, 0x0000 },

-  { 0x0700, 0x1231, 0x0000 },

-  { 0x8700, 0x1234, 0x2000 },

-  { 0x0700, 0x1233, 0x0000 },

-  { 0x0700, 0x1235, 0x0000 },

-  { 0x8700, 0x123e, 0x4000 },

-  { 0x8700, 0x123a, 0x3000 },

-  { 0x8700, 0x1238, 0x2000 },

-  { 0x0700, 0x1237, 0x0000 },

-  { 0x0700, 0x1239, 0x0000 },

-  { 0x8700, 0x123c, 0x2000 },

-  { 0x0700, 0x123b, 0x0000 },

-  { 0x0700, 0x123d, 0x0000 },

-  { 0x8700, 0x1242, 0x3000 },

-  { 0x8700, 0x1240, 0x2000 },

-  { 0x0700, 0x123f, 0x0000 },

-  { 0x0700, 0x1241, 0x0000 },

-  { 0x8700, 0x1244, 0x2000 },

-  { 0x0700, 0x1243, 0x0000 },

-  { 0x0700, 0x1245, 0x0000 },

-  { 0x8700, 0x126e, 0x6000 },

-  { 0x8700, 0x125c, 0x5000 },

-  { 0x8700, 0x1252, 0x4000 },

-  { 0x8700, 0x124c, 0x3000 },

-  { 0x8700, 0x124a, 0x2000 },

-  { 0x0700, 0x1248, 0x0000 },

-  { 0x0700, 0x124b, 0x0000 },

-  { 0x8700, 0x1250, 0x2000 },

-  { 0x0700, 0x124d, 0x0000 },

-  { 0x0700, 0x1251, 0x0000 },

-  { 0x8700, 0x1256, 0x3000 },

-  { 0x8700, 0x1254, 0x2000 },

-  { 0x0700, 0x1253, 0x0000 },

-  { 0x0700, 0x1255, 0x0000 },

-  { 0x8700, 0x125a, 0x2000 },

-  { 0x0700, 0x1258, 0x0000 },

-  { 0x0700, 0x125b, 0x0000 },

-  { 0x8700, 0x1266, 0x4000 },

-  { 0x8700, 0x1262, 0x3000 },

-  { 0x8700, 0x1260, 0x2000 },

-  { 0x0700, 0x125d, 0x0000 },

-  { 0x0700, 0x1261, 0x0000 },

-  { 0x8700, 0x1264, 0x2000 },

-  { 0x0700, 0x1263, 0x0000 },

-  { 0x0700, 0x1265, 0x0000 },

-  { 0x8700, 0x126a, 0x3000 },

-  { 0x8700, 0x1268, 0x2000 },

-  { 0x0700, 0x1267, 0x0000 },

-  { 0x0700, 0x1269, 0x0000 },

-  { 0x8700, 0x126c, 0x2000 },

-  { 0x0700, 0x126b, 0x0000 },

-  { 0x0700, 0x126d, 0x0000 },

-  { 0x8700, 0x127e, 0x5000 },

-  { 0x8700, 0x1276, 0x4000 },

-  { 0x8700, 0x1272, 0x3000 },

-  { 0x8700, 0x1270, 0x2000 },

-  { 0x0700, 0x126f, 0x0000 },

-  { 0x0700, 0x1271, 0x0000 },

-  { 0x8700, 0x1274, 0x2000 },

-  { 0x0700, 0x1273, 0x0000 },

-  { 0x0700, 0x1275, 0x0000 },

-  { 0x8700, 0x127a, 0x3000 },

-  { 0x8700, 0x1278, 0x2000 },

-  { 0x0700, 0x1277, 0x0000 },

-  { 0x0700, 0x1279, 0x0000 },

-  { 0x8700, 0x127c, 0x2000 },

-  { 0x0700, 0x127b, 0x0000 },

-  { 0x0700, 0x127d, 0x0000 },

-  { 0x8700, 0x1286, 0x4000 },

-  { 0x8700, 0x1282, 0x3000 },

-  { 0x8700, 0x1280, 0x2000 },

-  { 0x0700, 0x127f, 0x0000 },

-  { 0x0700, 0x1281, 0x0000 },

-  { 0x8700, 0x1284, 0x2000 },

-  { 0x0700, 0x1283, 0x0000 },

-  { 0x0700, 0x1285, 0x0000 },

-  { 0x8700, 0x128c, 0x3000 },

-  { 0x8700, 0x128a, 0x2000 },

-  { 0x0700, 0x1288, 0x0000 },

-  { 0x0700, 0x128b, 0x0000 },

-  { 0x8700, 0x1290, 0x2000 },

-  { 0x0700, 0x128d, 0x0000 },

-  { 0x0700, 0x1291, 0x0000 },

-  { 0x8700, 0x12dc, 0x7000 },

-  { 0x8700, 0x12b4, 0x6000 },

-  { 0x8700, 0x12a2, 0x5000 },

-  { 0x8700, 0x129a, 0x4000 },

-  { 0x8700, 0x1296, 0x3000 },

-  { 0x8700, 0x1294, 0x2000 },

-  { 0x0700, 0x1293, 0x0000 },

-  { 0x0700, 0x1295, 0x0000 },

-  { 0x8700, 0x1298, 0x2000 },

-  { 0x0700, 0x1297, 0x0000 },

-  { 0x0700, 0x1299, 0x0000 },

-  { 0x8700, 0x129e, 0x3000 },

-  { 0x8700, 0x129c, 0x2000 },

-  { 0x0700, 0x129b, 0x0000 },

-  { 0x0700, 0x129d, 0x0000 },

-  { 0x8700, 0x12a0, 0x2000 },

-  { 0x0700, 0x129f, 0x0000 },

-  { 0x0700, 0x12a1, 0x0000 },

-  { 0x8700, 0x12aa, 0x4000 },

-  { 0x8700, 0x12a6, 0x3000 },

-  { 0x8700, 0x12a4, 0x2000 },

-  { 0x0700, 0x12a3, 0x0000 },

-  { 0x0700, 0x12a5, 0x0000 },

-  { 0x8700, 0x12a8, 0x2000 },

-  { 0x0700, 0x12a7, 0x0000 },

-  { 0x0700, 0x12a9, 0x0000 },

-  { 0x8700, 0x12ae, 0x3000 },

-  { 0x8700, 0x12ac, 0x2000 },

-  { 0x0700, 0x12ab, 0x0000 },

-  { 0x0700, 0x12ad, 0x0000 },

-  { 0x8700, 0x12b2, 0x2000 },

-  { 0x0700, 0x12b0, 0x0000 },

-  { 0x0700, 0x12b3, 0x0000 },

-  { 0x8700, 0x12ca, 0x5000 },

-  { 0x8700, 0x12be, 0x4000 },

-  { 0x8700, 0x12ba, 0x3000 },

-  { 0x8700, 0x12b8, 0x2000 },

-  { 0x0700, 0x12b5, 0x0000 },

-  { 0x0700, 0x12b9, 0x0000 },

-  { 0x8700, 0x12bc, 0x2000 },

-  { 0x0700, 0x12bb, 0x0000 },

-  { 0x0700, 0x12bd, 0x0000 },

-  { 0x8700, 0x12c4, 0x3000 },

-  { 0x8700, 0x12c2, 0x2000 },

-  { 0x0700, 0x12c0, 0x0000 },

-  { 0x0700, 0x12c3, 0x0000 },

-  { 0x8700, 0x12c8, 0x2000 },

-  { 0x0700, 0x12c5, 0x0000 },

-  { 0x0700, 0x12c9, 0x0000 },

-  { 0x8700, 0x12d3, 0x4000 },

-  { 0x8700, 0x12ce, 0x3000 },

-  { 0x8700, 0x12cc, 0x2000 },

-  { 0x0700, 0x12cb, 0x0000 },

-  { 0x0700, 0x12cd, 0x0000 },

-  { 0x8700, 0x12d1, 0x2000 },

-  { 0x0700, 0x12d0, 0x0000 },

-  { 0x0700, 0x12d2, 0x0000 },

-  { 0x8700, 0x12d8, 0x3000 },

-  { 0x8700, 0x12d5, 0x2000 },

-  { 0x0700, 0x12d4, 0x0000 },

-  { 0x0700, 0x12d6, 0x0000 },

-  { 0x8700, 0x12da, 0x2000 },

-  { 0x0700, 0x12d9, 0x0000 },

-  { 0x0700, 0x12db, 0x0000 },

-  { 0x8700, 0x12fd, 0x6000 },

-  { 0x8700, 0x12ec, 0x5000 },

-  { 0x8700, 0x12e4, 0x4000 },

-  { 0x8700, 0x12e0, 0x3000 },

-  { 0x8700, 0x12de, 0x2000 },

-  { 0x0700, 0x12dd, 0x0000 },

-  { 0x0700, 0x12df, 0x0000 },

-  { 0x8700, 0x12e2, 0x2000 },

-  { 0x0700, 0x12e1, 0x0000 },

-  { 0x0700, 0x12e3, 0x0000 },

-  { 0x8700, 0x12e8, 0x3000 },

-  { 0x8700, 0x12e6, 0x2000 },

-  { 0x0700, 0x12e5, 0x0000 },

-  { 0x0700, 0x12e7, 0x0000 },

-  { 0x8700, 0x12ea, 0x2000 },

-  { 0x0700, 0x12e9, 0x0000 },

-  { 0x0700, 0x12eb, 0x0000 },

-  { 0x8700, 0x12f5, 0x4000 },

-  { 0x8700, 0x12f1, 0x3000 },

-  { 0x8700, 0x12ee, 0x2000 },

-  { 0x0700, 0x12ed, 0x0000 },

-  { 0x0700, 0x12f0, 0x0000 },

-  { 0x8700, 0x12f3, 0x2000 },

-  { 0x0700, 0x12f2, 0x0000 },

-  { 0x0700, 0x12f4, 0x0000 },

-  { 0x8700, 0x12f9, 0x3000 },

-  { 0x8700, 0x12f7, 0x2000 },

-  { 0x0700, 0x12f6, 0x0000 },

-  { 0x0700, 0x12f8, 0x0000 },

-  { 0x8700, 0x12fb, 0x2000 },

-  { 0x0700, 0x12fa, 0x0000 },

-  { 0x0700, 0x12fc, 0x0000 },

-  { 0x8700, 0x130d, 0x5000 },

-  { 0x8700, 0x1305, 0x4000 },

-  { 0x8700, 0x1301, 0x3000 },

-  { 0x8700, 0x12ff, 0x2000 },

-  { 0x0700, 0x12fe, 0x0000 },

-  { 0x0700, 0x1300, 0x0000 },

-  { 0x8700, 0x1303, 0x2000 },

-  { 0x0700, 0x1302, 0x0000 },

-  { 0x0700, 0x1304, 0x0000 },

-  { 0x8700, 0x1309, 0x3000 },

-  { 0x8700, 0x1307, 0x2000 },

-  { 0x0700, 0x1306, 0x0000 },

-  { 0x0700, 0x1308, 0x0000 },

-  { 0x8700, 0x130b, 0x2000 },

-  { 0x0700, 0x130a, 0x0000 },

-  { 0x0700, 0x130c, 0x0000 },

-  { 0x8700, 0x1319, 0x4000 },

-  { 0x8700, 0x1313, 0x3000 },

-  { 0x8700, 0x1310, 0x2000 },

-  { 0x0700, 0x130e, 0x0000 },

-  { 0x0700, 0x1312, 0x0000 },

-  { 0x8700, 0x1315, 0x2000 },

-  { 0x0700, 0x1314, 0x0000 },

-  { 0x0700, 0x1318, 0x0000 },

-  { 0x8700, 0x131d, 0x3000 },

-  { 0x8700, 0x131b, 0x2000 },

-  { 0x0700, 0x131a, 0x0000 },

-  { 0x0700, 0x131c, 0x0000 },

-  { 0x8700, 0x1320, 0x2000 },

-  { 0x0700, 0x131e, 0x0000 },

-  { 0x0700, 0x1321, 0x0000 },

-  { 0x8700, 0x1458, 0x9000 },

-  { 0x8700, 0x13cc, 0x8000 },

-  { 0x8d00, 0x1369, 0x7000 },

-  { 0x8700, 0x1342, 0x6000 },

-  { 0x8700, 0x1332, 0x5000 },

-  { 0x8700, 0x132a, 0x4000 },

-  { 0x8700, 0x1326, 0x3000 },

-  { 0x8700, 0x1324, 0x2000 },

-  { 0x0700, 0x1323, 0x0000 },

-  { 0x0700, 0x1325, 0x0000 },

-  { 0x8700, 0x1328, 0x2000 },

-  { 0x0700, 0x1327, 0x0000 },

-  { 0x0700, 0x1329, 0x0000 },

-  { 0x8700, 0x132e, 0x3000 },

-  { 0x8700, 0x132c, 0x2000 },

-  { 0x0700, 0x132b, 0x0000 },

-  { 0x0700, 0x132d, 0x0000 },

-  { 0x8700, 0x1330, 0x2000 },

-  { 0x0700, 0x132f, 0x0000 },

-  { 0x0700, 0x1331, 0x0000 },

-  { 0x8700, 0x133a, 0x4000 },

-  { 0x8700, 0x1336, 0x3000 },

-  { 0x8700, 0x1334, 0x2000 },

-  { 0x0700, 0x1333, 0x0000 },

-  { 0x0700, 0x1335, 0x0000 },

-  { 0x8700, 0x1338, 0x2000 },

-  { 0x0700, 0x1337, 0x0000 },

-  { 0x0700, 0x1339, 0x0000 },

-  { 0x8700, 0x133e, 0x3000 },

-  { 0x8700, 0x133c, 0x2000 },

-  { 0x0700, 0x133b, 0x0000 },

-  { 0x0700, 0x133d, 0x0000 },

-  { 0x8700, 0x1340, 0x2000 },

-  { 0x0700, 0x133f, 0x0000 },

-  { 0x0700, 0x1341, 0x0000 },

-  { 0x8700, 0x1353, 0x5000 },

-  { 0x8700, 0x134b, 0x4000 },

-  { 0x8700, 0x1346, 0x3000 },

-  { 0x8700, 0x1344, 0x2000 },

-  { 0x0700, 0x1343, 0x0000 },

-  { 0x0700, 0x1345, 0x0000 },

-  { 0x8700, 0x1349, 0x2000 },

-  { 0x0700, 0x1348, 0x0000 },

-  { 0x0700, 0x134a, 0x0000 },

-  { 0x8700, 0x134f, 0x3000 },

-  { 0x8700, 0x134d, 0x2000 },

-  { 0x0700, 0x134c, 0x0000 },

-  { 0x0700, 0x134e, 0x0000 },

-  { 0x8700, 0x1351, 0x2000 },

-  { 0x0700, 0x1350, 0x0000 },

-  { 0x0700, 0x1352, 0x0000 },

-  { 0x9500, 0x1361, 0x4000 },

-  { 0x8700, 0x1357, 0x3000 },

-  { 0x8700, 0x1355, 0x2000 },

-  { 0x0700, 0x1354, 0x0000 },

-  { 0x0700, 0x1356, 0x0000 },

-  { 0x8700, 0x1359, 0x2000 },

-  { 0x0700, 0x1358, 0x0000 },

-  { 0x0700, 0x135a, 0x0000 },

-  { 0x9500, 0x1365, 0x3000 },

-  { 0x9500, 0x1363, 0x2000 },

-  { 0x1500, 0x1362, 0x0000 },

-  { 0x1500, 0x1364, 0x0000 },

-  { 0x9500, 0x1367, 0x2000 },

-  { 0x1500, 0x1366, 0x0000 },

-  { 0x1500, 0x1368, 0x0000 },

-  { 0x8700, 0x13ac, 0x6000 },

-  { 0x8f00, 0x1379, 0x5000 },

-  { 0x8d00, 0x1371, 0x4000 },

-  { 0x8d00, 0x136d, 0x3000 },

-  { 0x8d00, 0x136b, 0x2000 },

-  { 0x0d00, 0x136a, 0x0000 },

-  { 0x0d00, 0x136c, 0x0000 },

-  { 0x8d00, 0x136f, 0x2000 },

-  { 0x0d00, 0x136e, 0x0000 },

-  { 0x0d00, 0x1370, 0x0000 },

-  { 0x8f00, 0x1375, 0x3000 },

-  { 0x8f00, 0x1373, 0x2000 },

-  { 0x0f00, 0x1372, 0x0000 },

-  { 0x0f00, 0x1374, 0x0000 },

-  { 0x8f00, 0x1377, 0x2000 },

-  { 0x0f00, 0x1376, 0x0000 },

-  { 0x0f00, 0x1378, 0x0000 },

-  { 0x8700, 0x13a4, 0x4000 },

-  { 0x8700, 0x13a0, 0x3000 },

-  { 0x8f00, 0x137b, 0x2000 },

-  { 0x0f00, 0x137a, 0x0000 },

-  { 0x0f00, 0x137c, 0x0000 },

-  { 0x8700, 0x13a2, 0x2000 },

-  { 0x0700, 0x13a1, 0x0000 },

-  { 0x0700, 0x13a3, 0x0000 },

-  { 0x8700, 0x13a8, 0x3000 },

-  { 0x8700, 0x13a6, 0x2000 },

-  { 0x0700, 0x13a5, 0x0000 },

-  { 0x0700, 0x13a7, 0x0000 },

-  { 0x8700, 0x13aa, 0x2000 },

-  { 0x0700, 0x13a9, 0x0000 },

-  { 0x0700, 0x13ab, 0x0000 },

-  { 0x8700, 0x13bc, 0x5000 },

-  { 0x8700, 0x13b4, 0x4000 },

-  { 0x8700, 0x13b0, 0x3000 },

-  { 0x8700, 0x13ae, 0x2000 },

-  { 0x0700, 0x13ad, 0x0000 },

-  { 0x0700, 0x13af, 0x0000 },

-  { 0x8700, 0x13b2, 0x2000 },

-  { 0x0700, 0x13b1, 0x0000 },

-  { 0x0700, 0x13b3, 0x0000 },

-  { 0x8700, 0x13b8, 0x3000 },

-  { 0x8700, 0x13b6, 0x2000 },

-  { 0x0700, 0x13b5, 0x0000 },

-  { 0x0700, 0x13b7, 0x0000 },

-  { 0x8700, 0x13ba, 0x2000 },

-  { 0x0700, 0x13b9, 0x0000 },

-  { 0x0700, 0x13bb, 0x0000 },

-  { 0x8700, 0x13c4, 0x4000 },

-  { 0x8700, 0x13c0, 0x3000 },

-  { 0x8700, 0x13be, 0x2000 },

-  { 0x0700, 0x13bd, 0x0000 },

-  { 0x0700, 0x13bf, 0x0000 },

-  { 0x8700, 0x13c2, 0x2000 },

-  { 0x0700, 0x13c1, 0x0000 },

-  { 0x0700, 0x13c3, 0x0000 },

-  { 0x8700, 0x13c8, 0x3000 },

-  { 0x8700, 0x13c6, 0x2000 },

-  { 0x0700, 0x13c5, 0x0000 },

-  { 0x0700, 0x13c7, 0x0000 },

-  { 0x8700, 0x13ca, 0x2000 },

-  { 0x0700, 0x13c9, 0x0000 },

-  { 0x0700, 0x13cb, 0x0000 },

-  { 0x8700, 0x1418, 0x7000 },

-  { 0x8700, 0x13ec, 0x6000 },

-  { 0x8700, 0x13dc, 0x5000 },

-  { 0x8700, 0x13d4, 0x4000 },

-  { 0x8700, 0x13d0, 0x3000 },

-  { 0x8700, 0x13ce, 0x2000 },

-  { 0x0700, 0x13cd, 0x0000 },

-  { 0x0700, 0x13cf, 0x0000 },

-  { 0x8700, 0x13d2, 0x2000 },

-  { 0x0700, 0x13d1, 0x0000 },

-  { 0x0700, 0x13d3, 0x0000 },

-  { 0x8700, 0x13d8, 0x3000 },

-  { 0x8700, 0x13d6, 0x2000 },

-  { 0x0700, 0x13d5, 0x0000 },

-  { 0x0700, 0x13d7, 0x0000 },

-  { 0x8700, 0x13da, 0x2000 },

-  { 0x0700, 0x13d9, 0x0000 },

-  { 0x0700, 0x13db, 0x0000 },

-  { 0x8700, 0x13e4, 0x4000 },

-  { 0x8700, 0x13e0, 0x3000 },

-  { 0x8700, 0x13de, 0x2000 },

-  { 0x0700, 0x13dd, 0x0000 },

-  { 0x0700, 0x13df, 0x0000 },

-  { 0x8700, 0x13e2, 0x2000 },

-  { 0x0700, 0x13e1, 0x0000 },

-  { 0x0700, 0x13e3, 0x0000 },

-  { 0x8700, 0x13e8, 0x3000 },

-  { 0x8700, 0x13e6, 0x2000 },

-  { 0x0700, 0x13e5, 0x0000 },

-  { 0x0700, 0x13e7, 0x0000 },

-  { 0x8700, 0x13ea, 0x2000 },

-  { 0x0700, 0x13e9, 0x0000 },

-  { 0x0700, 0x13eb, 0x0000 },

-  { 0x8700, 0x1408, 0x5000 },

-  { 0x8700, 0x13f4, 0x4000 },

-  { 0x8700, 0x13f0, 0x3000 },

-  { 0x8700, 0x13ee, 0x2000 },

-  { 0x0700, 0x13ed, 0x0000 },

-  { 0x0700, 0x13ef, 0x0000 },

-  { 0x8700, 0x13f2, 0x2000 },

-  { 0x0700, 0x13f1, 0x0000 },

-  { 0x0700, 0x13f3, 0x0000 },

-  { 0x8700, 0x1404, 0x3000 },

-  { 0x8700, 0x1402, 0x2000 },

-  { 0x0700, 0x1401, 0x0000 },

-  { 0x0700, 0x1403, 0x0000 },

-  { 0x8700, 0x1406, 0x2000 },

-  { 0x0700, 0x1405, 0x0000 },

-  { 0x0700, 0x1407, 0x0000 },

-  { 0x8700, 0x1410, 0x4000 },

-  { 0x8700, 0x140c, 0x3000 },

-  { 0x8700, 0x140a, 0x2000 },

-  { 0x0700, 0x1409, 0x0000 },

-  { 0x0700, 0x140b, 0x0000 },

-  { 0x8700, 0x140e, 0x2000 },

-  { 0x0700, 0x140d, 0x0000 },

-  { 0x0700, 0x140f, 0x0000 },

-  { 0x8700, 0x1414, 0x3000 },

-  { 0x8700, 0x1412, 0x2000 },

-  { 0x0700, 0x1411, 0x0000 },

-  { 0x0700, 0x1413, 0x0000 },

-  { 0x8700, 0x1416, 0x2000 },

-  { 0x0700, 0x1415, 0x0000 },

-  { 0x0700, 0x1417, 0x0000 },

-  { 0x8700, 0x1438, 0x6000 },

-  { 0x8700, 0x1428, 0x5000 },

-  { 0x8700, 0x1420, 0x4000 },

-  { 0x8700, 0x141c, 0x3000 },

-  { 0x8700, 0x141a, 0x2000 },

-  { 0x0700, 0x1419, 0x0000 },

-  { 0x0700, 0x141b, 0x0000 },

-  { 0x8700, 0x141e, 0x2000 },

-  { 0x0700, 0x141d, 0x0000 },

-  { 0x0700, 0x141f, 0x0000 },

-  { 0x8700, 0x1424, 0x3000 },

-  { 0x8700, 0x1422, 0x2000 },

-  { 0x0700, 0x1421, 0x0000 },

-  { 0x0700, 0x1423, 0x0000 },

-  { 0x8700, 0x1426, 0x2000 },

-  { 0x0700, 0x1425, 0x0000 },

-  { 0x0700, 0x1427, 0x0000 },

-  { 0x8700, 0x1430, 0x4000 },

-  { 0x8700, 0x142c, 0x3000 },

-  { 0x8700, 0x142a, 0x2000 },

-  { 0x0700, 0x1429, 0x0000 },

-  { 0x0700, 0x142b, 0x0000 },

-  { 0x8700, 0x142e, 0x2000 },

-  { 0x0700, 0x142d, 0x0000 },

-  { 0x0700, 0x142f, 0x0000 },

-  { 0x8700, 0x1434, 0x3000 },

-  { 0x8700, 0x1432, 0x2000 },

-  { 0x0700, 0x1431, 0x0000 },

-  { 0x0700, 0x1433, 0x0000 },

-  { 0x8700, 0x1436, 0x2000 },

-  { 0x0700, 0x1435, 0x0000 },

-  { 0x0700, 0x1437, 0x0000 },

-  { 0x8700, 0x1448, 0x5000 },

-  { 0x8700, 0x1440, 0x4000 },

-  { 0x8700, 0x143c, 0x3000 },

-  { 0x8700, 0x143a, 0x2000 },

-  { 0x0700, 0x1439, 0x0000 },

-  { 0x0700, 0x143b, 0x0000 },

-  { 0x8700, 0x143e, 0x2000 },

-  { 0x0700, 0x143d, 0x0000 },

-  { 0x0700, 0x143f, 0x0000 },

-  { 0x8700, 0x1444, 0x3000 },

-  { 0x8700, 0x1442, 0x2000 },

-  { 0x0700, 0x1441, 0x0000 },

-  { 0x0700, 0x1443, 0x0000 },

-  { 0x8700, 0x1446, 0x2000 },

-  { 0x0700, 0x1445, 0x0000 },

-  { 0x0700, 0x1447, 0x0000 },

-  { 0x8700, 0x1450, 0x4000 },

-  { 0x8700, 0x144c, 0x3000 },

-  { 0x8700, 0x144a, 0x2000 },

-  { 0x0700, 0x1449, 0x0000 },

-  { 0x0700, 0x144b, 0x0000 },

-  { 0x8700, 0x144e, 0x2000 },

-  { 0x0700, 0x144d, 0x0000 },

-  { 0x0700, 0x144f, 0x0000 },

-  { 0x8700, 0x1454, 0x3000 },

-  { 0x8700, 0x1452, 0x2000 },

-  { 0x0700, 0x1451, 0x0000 },

-  { 0x0700, 0x1453, 0x0000 },

-  { 0x8700, 0x1456, 0x2000 },

-  { 0x0700, 0x1455, 0x0000 },

-  { 0x0700, 0x1457, 0x0000 },

-  { 0x8700, 0x14d8, 0x8000 },

-  { 0x8700, 0x1498, 0x7000 },

-  { 0x8700, 0x1478, 0x6000 },

-  { 0x8700, 0x1468, 0x5000 },

-  { 0x8700, 0x1460, 0x4000 },

-  { 0x8700, 0x145c, 0x3000 },

-  { 0x8700, 0x145a, 0x2000 },

-  { 0x0700, 0x1459, 0x0000 },

-  { 0x0700, 0x145b, 0x0000 },

-  { 0x8700, 0x145e, 0x2000 },

-  { 0x0700, 0x145d, 0x0000 },

-  { 0x0700, 0x145f, 0x0000 },

-  { 0x8700, 0x1464, 0x3000 },

-  { 0x8700, 0x1462, 0x2000 },

-  { 0x0700, 0x1461, 0x0000 },

-  { 0x0700, 0x1463, 0x0000 },

-  { 0x8700, 0x1466, 0x2000 },

-  { 0x0700, 0x1465, 0x0000 },

-  { 0x0700, 0x1467, 0x0000 },

-  { 0x8700, 0x1470, 0x4000 },

-  { 0x8700, 0x146c, 0x3000 },

-  { 0x8700, 0x146a, 0x2000 },

-  { 0x0700, 0x1469, 0x0000 },

-  { 0x0700, 0x146b, 0x0000 },

-  { 0x8700, 0x146e, 0x2000 },

-  { 0x0700, 0x146d, 0x0000 },

-  { 0x0700, 0x146f, 0x0000 },

-  { 0x8700, 0x1474, 0x3000 },

-  { 0x8700, 0x1472, 0x2000 },

-  { 0x0700, 0x1471, 0x0000 },

-  { 0x0700, 0x1473, 0x0000 },

-  { 0x8700, 0x1476, 0x2000 },

-  { 0x0700, 0x1475, 0x0000 },

-  { 0x0700, 0x1477, 0x0000 },

-  { 0x8700, 0x1488, 0x5000 },

-  { 0x8700, 0x1480, 0x4000 },

-  { 0x8700, 0x147c, 0x3000 },

-  { 0x8700, 0x147a, 0x2000 },

-  { 0x0700, 0x1479, 0x0000 },

-  { 0x0700, 0x147b, 0x0000 },

-  { 0x8700, 0x147e, 0x2000 },

-  { 0x0700, 0x147d, 0x0000 },

-  { 0x0700, 0x147f, 0x0000 },

-  { 0x8700, 0x1484, 0x3000 },

-  { 0x8700, 0x1482, 0x2000 },

-  { 0x0700, 0x1481, 0x0000 },

-  { 0x0700, 0x1483, 0x0000 },

-  { 0x8700, 0x1486, 0x2000 },

-  { 0x0700, 0x1485, 0x0000 },

-  { 0x0700, 0x1487, 0x0000 },

-  { 0x8700, 0x1490, 0x4000 },

-  { 0x8700, 0x148c, 0x3000 },

-  { 0x8700, 0x148a, 0x2000 },

-  { 0x0700, 0x1489, 0x0000 },

-  { 0x0700, 0x148b, 0x0000 },

-  { 0x8700, 0x148e, 0x2000 },

-  { 0x0700, 0x148d, 0x0000 },

-  { 0x0700, 0x148f, 0x0000 },

-  { 0x8700, 0x1494, 0x3000 },

-  { 0x8700, 0x1492, 0x2000 },

-  { 0x0700, 0x1491, 0x0000 },

-  { 0x0700, 0x1493, 0x0000 },

-  { 0x8700, 0x1496, 0x2000 },

-  { 0x0700, 0x1495, 0x0000 },

-  { 0x0700, 0x1497, 0x0000 },

-  { 0x8700, 0x14b8, 0x6000 },

-  { 0x8700, 0x14a8, 0x5000 },

-  { 0x8700, 0x14a0, 0x4000 },

-  { 0x8700, 0x149c, 0x3000 },

-  { 0x8700, 0x149a, 0x2000 },

-  { 0x0700, 0x1499, 0x0000 },

-  { 0x0700, 0x149b, 0x0000 },

-  { 0x8700, 0x149e, 0x2000 },

-  { 0x0700, 0x149d, 0x0000 },

-  { 0x0700, 0x149f, 0x0000 },

-  { 0x8700, 0x14a4, 0x3000 },

-  { 0x8700, 0x14a2, 0x2000 },

-  { 0x0700, 0x14a1, 0x0000 },

-  { 0x0700, 0x14a3, 0x0000 },

-  { 0x8700, 0x14a6, 0x2000 },

-  { 0x0700, 0x14a5, 0x0000 },

-  { 0x0700, 0x14a7, 0x0000 },

-  { 0x8700, 0x14b0, 0x4000 },

-  { 0x8700, 0x14ac, 0x3000 },

-  { 0x8700, 0x14aa, 0x2000 },

-  { 0x0700, 0x14a9, 0x0000 },

-  { 0x0700, 0x14ab, 0x0000 },

-  { 0x8700, 0x14ae, 0x2000 },

-  { 0x0700, 0x14ad, 0x0000 },

-  { 0x0700, 0x14af, 0x0000 },

-  { 0x8700, 0x14b4, 0x3000 },

-  { 0x8700, 0x14b2, 0x2000 },

-  { 0x0700, 0x14b1, 0x0000 },

-  { 0x0700, 0x14b3, 0x0000 },

-  { 0x8700, 0x14b6, 0x2000 },

-  { 0x0700, 0x14b5, 0x0000 },

-  { 0x0700, 0x14b7, 0x0000 },

-  { 0x8700, 0x14c8, 0x5000 },

-  { 0x8700, 0x14c0, 0x4000 },

-  { 0x8700, 0x14bc, 0x3000 },

-  { 0x8700, 0x14ba, 0x2000 },

-  { 0x0700, 0x14b9, 0x0000 },

-  { 0x0700, 0x14bb, 0x0000 },

-  { 0x8700, 0x14be, 0x2000 },

-  { 0x0700, 0x14bd, 0x0000 },

-  { 0x0700, 0x14bf, 0x0000 },

-  { 0x8700, 0x14c4, 0x3000 },

-  { 0x8700, 0x14c2, 0x2000 },

-  { 0x0700, 0x14c1, 0x0000 },

-  { 0x0700, 0x14c3, 0x0000 },

-  { 0x8700, 0x14c6, 0x2000 },

-  { 0x0700, 0x14c5, 0x0000 },

-  { 0x0700, 0x14c7, 0x0000 },

-  { 0x8700, 0x14d0, 0x4000 },

-  { 0x8700, 0x14cc, 0x3000 },

-  { 0x8700, 0x14ca, 0x2000 },

-  { 0x0700, 0x14c9, 0x0000 },

-  { 0x0700, 0x14cb, 0x0000 },

-  { 0x8700, 0x14ce, 0x2000 },

-  { 0x0700, 0x14cd, 0x0000 },

-  { 0x0700, 0x14cf, 0x0000 },

-  { 0x8700, 0x14d4, 0x3000 },

-  { 0x8700, 0x14d2, 0x2000 },

-  { 0x0700, 0x14d1, 0x0000 },

-  { 0x0700, 0x14d3, 0x0000 },

-  { 0x8700, 0x14d6, 0x2000 },

-  { 0x0700, 0x14d5, 0x0000 },

-  { 0x0700, 0x14d7, 0x0000 },

-  { 0x8700, 0x1518, 0x7000 },

-  { 0x8700, 0x14f8, 0x6000 },

-  { 0x8700, 0x14e8, 0x5000 },

-  { 0x8700, 0x14e0, 0x4000 },

-  { 0x8700, 0x14dc, 0x3000 },

-  { 0x8700, 0x14da, 0x2000 },

-  { 0x0700, 0x14d9, 0x0000 },

-  { 0x0700, 0x14db, 0x0000 },

-  { 0x8700, 0x14de, 0x2000 },

-  { 0x0700, 0x14dd, 0x0000 },

-  { 0x0700, 0x14df, 0x0000 },

-  { 0x8700, 0x14e4, 0x3000 },

-  { 0x8700, 0x14e2, 0x2000 },

-  { 0x0700, 0x14e1, 0x0000 },

-  { 0x0700, 0x14e3, 0x0000 },

-  { 0x8700, 0x14e6, 0x2000 },

-  { 0x0700, 0x14e5, 0x0000 },

-  { 0x0700, 0x14e7, 0x0000 },

-  { 0x8700, 0x14f0, 0x4000 },

-  { 0x8700, 0x14ec, 0x3000 },

-  { 0x8700, 0x14ea, 0x2000 },

-  { 0x0700, 0x14e9, 0x0000 },

-  { 0x0700, 0x14eb, 0x0000 },

-  { 0x8700, 0x14ee, 0x2000 },

-  { 0x0700, 0x14ed, 0x0000 },

-  { 0x0700, 0x14ef, 0x0000 },

-  { 0x8700, 0x14f4, 0x3000 },

-  { 0x8700, 0x14f2, 0x2000 },

-  { 0x0700, 0x14f1, 0x0000 },

-  { 0x0700, 0x14f3, 0x0000 },

-  { 0x8700, 0x14f6, 0x2000 },

-  { 0x0700, 0x14f5, 0x0000 },

-  { 0x0700, 0x14f7, 0x0000 },

-  { 0x8700, 0x1508, 0x5000 },

-  { 0x8700, 0x1500, 0x4000 },

-  { 0x8700, 0x14fc, 0x3000 },

-  { 0x8700, 0x14fa, 0x2000 },

-  { 0x0700, 0x14f9, 0x0000 },

-  { 0x0700, 0x14fb, 0x0000 },

-  { 0x8700, 0x14fe, 0x2000 },

-  { 0x0700, 0x14fd, 0x0000 },

-  { 0x0700, 0x14ff, 0x0000 },

-  { 0x8700, 0x1504, 0x3000 },

-  { 0x8700, 0x1502, 0x2000 },

-  { 0x0700, 0x1501, 0x0000 },

-  { 0x0700, 0x1503, 0x0000 },

-  { 0x8700, 0x1506, 0x2000 },

-  { 0x0700, 0x1505, 0x0000 },

-  { 0x0700, 0x1507, 0x0000 },

-  { 0x8700, 0x1510, 0x4000 },

-  { 0x8700, 0x150c, 0x3000 },

-  { 0x8700, 0x150a, 0x2000 },

-  { 0x0700, 0x1509, 0x0000 },

-  { 0x0700, 0x150b, 0x0000 },

-  { 0x8700, 0x150e, 0x2000 },

-  { 0x0700, 0x150d, 0x0000 },

-  { 0x0700, 0x150f, 0x0000 },

-  { 0x8700, 0x1514, 0x3000 },

-  { 0x8700, 0x1512, 0x2000 },

-  { 0x0700, 0x1511, 0x0000 },

-  { 0x0700, 0x1513, 0x0000 },

-  { 0x8700, 0x1516, 0x2000 },

-  { 0x0700, 0x1515, 0x0000 },

-  { 0x0700, 0x1517, 0x0000 },

-  { 0x8700, 0x1538, 0x6000 },

-  { 0x8700, 0x1528, 0x5000 },

-  { 0x8700, 0x1520, 0x4000 },

-  { 0x8700, 0x151c, 0x3000 },

-  { 0x8700, 0x151a, 0x2000 },

-  { 0x0700, 0x1519, 0x0000 },

-  { 0x0700, 0x151b, 0x0000 },

-  { 0x8700, 0x151e, 0x2000 },

-  { 0x0700, 0x151d, 0x0000 },

-  { 0x0700, 0x151f, 0x0000 },

-  { 0x8700, 0x1524, 0x3000 },

-  { 0x8700, 0x1522, 0x2000 },

-  { 0x0700, 0x1521, 0x0000 },

-  { 0x0700, 0x1523, 0x0000 },

-  { 0x8700, 0x1526, 0x2000 },

-  { 0x0700, 0x1525, 0x0000 },

-  { 0x0700, 0x1527, 0x0000 },

-  { 0x8700, 0x1530, 0x4000 },

-  { 0x8700, 0x152c, 0x3000 },

-  { 0x8700, 0x152a, 0x2000 },

-  { 0x0700, 0x1529, 0x0000 },

-  { 0x0700, 0x152b, 0x0000 },

-  { 0x8700, 0x152e, 0x2000 },

-  { 0x0700, 0x152d, 0x0000 },

-  { 0x0700, 0x152f, 0x0000 },

-  { 0x8700, 0x1534, 0x3000 },

-  { 0x8700, 0x1532, 0x2000 },

-  { 0x0700, 0x1531, 0x0000 },

-  { 0x0700, 0x1533, 0x0000 },

-  { 0x8700, 0x1536, 0x2000 },

-  { 0x0700, 0x1535, 0x0000 },

-  { 0x0700, 0x1537, 0x0000 },

-  { 0x8700, 0x1548, 0x5000 },

-  { 0x8700, 0x1540, 0x4000 },

-  { 0x8700, 0x153c, 0x3000 },

-  { 0x8700, 0x153a, 0x2000 },

-  { 0x0700, 0x1539, 0x0000 },

-  { 0x0700, 0x153b, 0x0000 },

-  { 0x8700, 0x153e, 0x2000 },

-  { 0x0700, 0x153d, 0x0000 },

-  { 0x0700, 0x153f, 0x0000 },

-  { 0x8700, 0x1544, 0x3000 },

-  { 0x8700, 0x1542, 0x2000 },

-  { 0x0700, 0x1541, 0x0000 },

-  { 0x0700, 0x1543, 0x0000 },

-  { 0x8700, 0x1546, 0x2000 },

-  { 0x0700, 0x1545, 0x0000 },

-  { 0x0700, 0x1547, 0x0000 },

-  { 0x8700, 0x1550, 0x4000 },

-  { 0x8700, 0x154c, 0x3000 },

-  { 0x8700, 0x154a, 0x2000 },

-  { 0x0700, 0x1549, 0x0000 },

-  { 0x0700, 0x154b, 0x0000 },

-  { 0x8700, 0x154e, 0x2000 },

-  { 0x0700, 0x154d, 0x0000 },

-  { 0x0700, 0x154f, 0x0000 },

-  { 0x8700, 0x1554, 0x3000 },

-  { 0x8700, 0x1552, 0x2000 },

-  { 0x0700, 0x1551, 0x0000 },

-  { 0x0700, 0x1553, 0x0000 },

-  { 0x8700, 0x1556, 0x2000 },

-  { 0x0700, 0x1555, 0x0000 },

-  { 0x0700, 0x1557, 0x0000 },

-  { 0x9900, 0x22ae, 0xc000 },

-  { 0x8900, 0x1e24, 0xb001 },

-  { 0x8700, 0x17a2, 0xa000 },

-  { 0x8700, 0x1658, 0x9000 },

-  { 0x8700, 0x15d8, 0x8000 },

-  { 0x8700, 0x1598, 0x7000 },

-  { 0x8700, 0x1578, 0x6000 },

-  { 0x8700, 0x1568, 0x5000 },

-  { 0x8700, 0x1560, 0x4000 },

-  { 0x8700, 0x155c, 0x3000 },

-  { 0x8700, 0x155a, 0x2000 },

-  { 0x0700, 0x1559, 0x0000 },

-  { 0x0700, 0x155b, 0x0000 },

-  { 0x8700, 0x155e, 0x2000 },

-  { 0x0700, 0x155d, 0x0000 },

-  { 0x0700, 0x155f, 0x0000 },

-  { 0x8700, 0x1564, 0x3000 },

-  { 0x8700, 0x1562, 0x2000 },

-  { 0x0700, 0x1561, 0x0000 },

-  { 0x0700, 0x1563, 0x0000 },

-  { 0x8700, 0x1566, 0x2000 },

-  { 0x0700, 0x1565, 0x0000 },

-  { 0x0700, 0x1567, 0x0000 },

-  { 0x8700, 0x1570, 0x4000 },

-  { 0x8700, 0x156c, 0x3000 },

-  { 0x8700, 0x156a, 0x2000 },

-  { 0x0700, 0x1569, 0x0000 },

-  { 0x0700, 0x156b, 0x0000 },

-  { 0x8700, 0x156e, 0x2000 },

-  { 0x0700, 0x156d, 0x0000 },

-  { 0x0700, 0x156f, 0x0000 },

-  { 0x8700, 0x1574, 0x3000 },

-  { 0x8700, 0x1572, 0x2000 },

-  { 0x0700, 0x1571, 0x0000 },

-  { 0x0700, 0x1573, 0x0000 },

-  { 0x8700, 0x1576, 0x2000 },

-  { 0x0700, 0x1575, 0x0000 },

-  { 0x0700, 0x1577, 0x0000 },

-  { 0x8700, 0x1588, 0x5000 },

-  { 0x8700, 0x1580, 0x4000 },

-  { 0x8700, 0x157c, 0x3000 },

-  { 0x8700, 0x157a, 0x2000 },

-  { 0x0700, 0x1579, 0x0000 },

-  { 0x0700, 0x157b, 0x0000 },

-  { 0x8700, 0x157e, 0x2000 },

-  { 0x0700, 0x157d, 0x0000 },

-  { 0x0700, 0x157f, 0x0000 },

-  { 0x8700, 0x1584, 0x3000 },

-  { 0x8700, 0x1582, 0x2000 },

-  { 0x0700, 0x1581, 0x0000 },

-  { 0x0700, 0x1583, 0x0000 },

-  { 0x8700, 0x1586, 0x2000 },

-  { 0x0700, 0x1585, 0x0000 },

-  { 0x0700, 0x1587, 0x0000 },

-  { 0x8700, 0x1590, 0x4000 },

-  { 0x8700, 0x158c, 0x3000 },

-  { 0x8700, 0x158a, 0x2000 },

-  { 0x0700, 0x1589, 0x0000 },

-  { 0x0700, 0x158b, 0x0000 },

-  { 0x8700, 0x158e, 0x2000 },

-  { 0x0700, 0x158d, 0x0000 },

-  { 0x0700, 0x158f, 0x0000 },

-  { 0x8700, 0x1594, 0x3000 },

-  { 0x8700, 0x1592, 0x2000 },

-  { 0x0700, 0x1591, 0x0000 },

-  { 0x0700, 0x1593, 0x0000 },

-  { 0x8700, 0x1596, 0x2000 },

-  { 0x0700, 0x1595, 0x0000 },

-  { 0x0700, 0x1597, 0x0000 },

-  { 0x8700, 0x15b8, 0x6000 },

-  { 0x8700, 0x15a8, 0x5000 },

-  { 0x8700, 0x15a0, 0x4000 },

-  { 0x8700, 0x159c, 0x3000 },

-  { 0x8700, 0x159a, 0x2000 },

-  { 0x0700, 0x1599, 0x0000 },

-  { 0x0700, 0x159b, 0x0000 },

-  { 0x8700, 0x159e, 0x2000 },

-  { 0x0700, 0x159d, 0x0000 },

-  { 0x0700, 0x159f, 0x0000 },

-  { 0x8700, 0x15a4, 0x3000 },

-  { 0x8700, 0x15a2, 0x2000 },

-  { 0x0700, 0x15a1, 0x0000 },

-  { 0x0700, 0x15a3, 0x0000 },

-  { 0x8700, 0x15a6, 0x2000 },

-  { 0x0700, 0x15a5, 0x0000 },

-  { 0x0700, 0x15a7, 0x0000 },

-  { 0x8700, 0x15b0, 0x4000 },

-  { 0x8700, 0x15ac, 0x3000 },

-  { 0x8700, 0x15aa, 0x2000 },

-  { 0x0700, 0x15a9, 0x0000 },

-  { 0x0700, 0x15ab, 0x0000 },

-  { 0x8700, 0x15ae, 0x2000 },

-  { 0x0700, 0x15ad, 0x0000 },

-  { 0x0700, 0x15af, 0x0000 },

-  { 0x8700, 0x15b4, 0x3000 },

-  { 0x8700, 0x15b2, 0x2000 },

-  { 0x0700, 0x15b1, 0x0000 },

-  { 0x0700, 0x15b3, 0x0000 },

-  { 0x8700, 0x15b6, 0x2000 },

-  { 0x0700, 0x15b5, 0x0000 },

-  { 0x0700, 0x15b7, 0x0000 },

-  { 0x8700, 0x15c8, 0x5000 },

-  { 0x8700, 0x15c0, 0x4000 },

-  { 0x8700, 0x15bc, 0x3000 },

-  { 0x8700, 0x15ba, 0x2000 },

-  { 0x0700, 0x15b9, 0x0000 },

-  { 0x0700, 0x15bb, 0x0000 },

-  { 0x8700, 0x15be, 0x2000 },

-  { 0x0700, 0x15bd, 0x0000 },

-  { 0x0700, 0x15bf, 0x0000 },

-  { 0x8700, 0x15c4, 0x3000 },

-  { 0x8700, 0x15c2, 0x2000 },

-  { 0x0700, 0x15c1, 0x0000 },

-  { 0x0700, 0x15c3, 0x0000 },

-  { 0x8700, 0x15c6, 0x2000 },

-  { 0x0700, 0x15c5, 0x0000 },

-  { 0x0700, 0x15c7, 0x0000 },

-  { 0x8700, 0x15d0, 0x4000 },

-  { 0x8700, 0x15cc, 0x3000 },

-  { 0x8700, 0x15ca, 0x2000 },

-  { 0x0700, 0x15c9, 0x0000 },

-  { 0x0700, 0x15cb, 0x0000 },

-  { 0x8700, 0x15ce, 0x2000 },

-  { 0x0700, 0x15cd, 0x0000 },

-  { 0x0700, 0x15cf, 0x0000 },

-  { 0x8700, 0x15d4, 0x3000 },

-  { 0x8700, 0x15d2, 0x2000 },

-  { 0x0700, 0x15d1, 0x0000 },

-  { 0x0700, 0x15d3, 0x0000 },

-  { 0x8700, 0x15d6, 0x2000 },

-  { 0x0700, 0x15d5, 0x0000 },

-  { 0x0700, 0x15d7, 0x0000 },

-  { 0x8700, 0x1618, 0x7000 },

-  { 0x8700, 0x15f8, 0x6000 },

-  { 0x8700, 0x15e8, 0x5000 },

-  { 0x8700, 0x15e0, 0x4000 },

-  { 0x8700, 0x15dc, 0x3000 },

-  { 0x8700, 0x15da, 0x2000 },

-  { 0x0700, 0x15d9, 0x0000 },

-  { 0x0700, 0x15db, 0x0000 },

-  { 0x8700, 0x15de, 0x2000 },

-  { 0x0700, 0x15dd, 0x0000 },

-  { 0x0700, 0x15df, 0x0000 },

-  { 0x8700, 0x15e4, 0x3000 },

-  { 0x8700, 0x15e2, 0x2000 },

-  { 0x0700, 0x15e1, 0x0000 },

-  { 0x0700, 0x15e3, 0x0000 },

-  { 0x8700, 0x15e6, 0x2000 },

-  { 0x0700, 0x15e5, 0x0000 },

-  { 0x0700, 0x15e7, 0x0000 },

-  { 0x8700, 0x15f0, 0x4000 },

-  { 0x8700, 0x15ec, 0x3000 },

-  { 0x8700, 0x15ea, 0x2000 },

-  { 0x0700, 0x15e9, 0x0000 },

-  { 0x0700, 0x15eb, 0x0000 },

-  { 0x8700, 0x15ee, 0x2000 },

-  { 0x0700, 0x15ed, 0x0000 },

-  { 0x0700, 0x15ef, 0x0000 },

-  { 0x8700, 0x15f4, 0x3000 },

-  { 0x8700, 0x15f2, 0x2000 },

-  { 0x0700, 0x15f1, 0x0000 },

-  { 0x0700, 0x15f3, 0x0000 },

-  { 0x8700, 0x15f6, 0x2000 },

-  { 0x0700, 0x15f5, 0x0000 },

-  { 0x0700, 0x15f7, 0x0000 },

-  { 0x8700, 0x1608, 0x5000 },

-  { 0x8700, 0x1600, 0x4000 },

-  { 0x8700, 0x15fc, 0x3000 },

-  { 0x8700, 0x15fa, 0x2000 },

-  { 0x0700, 0x15f9, 0x0000 },

-  { 0x0700, 0x15fb, 0x0000 },

-  { 0x8700, 0x15fe, 0x2000 },

-  { 0x0700, 0x15fd, 0x0000 },

-  { 0x0700, 0x15ff, 0x0000 },

-  { 0x8700, 0x1604, 0x3000 },

-  { 0x8700, 0x1602, 0x2000 },

-  { 0x0700, 0x1601, 0x0000 },

-  { 0x0700, 0x1603, 0x0000 },

-  { 0x8700, 0x1606, 0x2000 },

-  { 0x0700, 0x1605, 0x0000 },

-  { 0x0700, 0x1607, 0x0000 },

-  { 0x8700, 0x1610, 0x4000 },

-  { 0x8700, 0x160c, 0x3000 },

-  { 0x8700, 0x160a, 0x2000 },

-  { 0x0700, 0x1609, 0x0000 },

-  { 0x0700, 0x160b, 0x0000 },

-  { 0x8700, 0x160e, 0x2000 },

-  { 0x0700, 0x160d, 0x0000 },

-  { 0x0700, 0x160f, 0x0000 },

-  { 0x8700, 0x1614, 0x3000 },

-  { 0x8700, 0x1612, 0x2000 },

-  { 0x0700, 0x1611, 0x0000 },

-  { 0x0700, 0x1613, 0x0000 },

-  { 0x8700, 0x1616, 0x2000 },

-  { 0x0700, 0x1615, 0x0000 },

-  { 0x0700, 0x1617, 0x0000 },

-  { 0x8700, 0x1638, 0x6000 },

-  { 0x8700, 0x1628, 0x5000 },

-  { 0x8700, 0x1620, 0x4000 },

-  { 0x8700, 0x161c, 0x3000 },

-  { 0x8700, 0x161a, 0x2000 },

-  { 0x0700, 0x1619, 0x0000 },

-  { 0x0700, 0x161b, 0x0000 },

-  { 0x8700, 0x161e, 0x2000 },

-  { 0x0700, 0x161d, 0x0000 },

-  { 0x0700, 0x161f, 0x0000 },

-  { 0x8700, 0x1624, 0x3000 },

-  { 0x8700, 0x1622, 0x2000 },

-  { 0x0700, 0x1621, 0x0000 },

-  { 0x0700, 0x1623, 0x0000 },

-  { 0x8700, 0x1626, 0x2000 },

-  { 0x0700, 0x1625, 0x0000 },

-  { 0x0700, 0x1627, 0x0000 },

-  { 0x8700, 0x1630, 0x4000 },

-  { 0x8700, 0x162c, 0x3000 },

-  { 0x8700, 0x162a, 0x2000 },

-  { 0x0700, 0x1629, 0x0000 },

-  { 0x0700, 0x162b, 0x0000 },

-  { 0x8700, 0x162e, 0x2000 },

-  { 0x0700, 0x162d, 0x0000 },

-  { 0x0700, 0x162f, 0x0000 },

-  { 0x8700, 0x1634, 0x3000 },

-  { 0x8700, 0x1632, 0x2000 },

-  { 0x0700, 0x1631, 0x0000 },

-  { 0x0700, 0x1633, 0x0000 },

-  { 0x8700, 0x1636, 0x2000 },

-  { 0x0700, 0x1635, 0x0000 },

-  { 0x0700, 0x1637, 0x0000 },

-  { 0x8700, 0x1648, 0x5000 },

-  { 0x8700, 0x1640, 0x4000 },

-  { 0x8700, 0x163c, 0x3000 },

-  { 0x8700, 0x163a, 0x2000 },

-  { 0x0700, 0x1639, 0x0000 },

-  { 0x0700, 0x163b, 0x0000 },

-  { 0x8700, 0x163e, 0x2000 },

-  { 0x0700, 0x163d, 0x0000 },

-  { 0x0700, 0x163f, 0x0000 },

-  { 0x8700, 0x1644, 0x3000 },

-  { 0x8700, 0x1642, 0x2000 },

-  { 0x0700, 0x1641, 0x0000 },

-  { 0x0700, 0x1643, 0x0000 },

-  { 0x8700, 0x1646, 0x2000 },

-  { 0x0700, 0x1645, 0x0000 },

-  { 0x0700, 0x1647, 0x0000 },

-  { 0x8700, 0x1650, 0x4000 },

-  { 0x8700, 0x164c, 0x3000 },

-  { 0x8700, 0x164a, 0x2000 },

-  { 0x0700, 0x1649, 0x0000 },

-  { 0x0700, 0x164b, 0x0000 },

-  { 0x8700, 0x164e, 0x2000 },

-  { 0x0700, 0x164d, 0x0000 },

-  { 0x0700, 0x164f, 0x0000 },

-  { 0x8700, 0x1654, 0x3000 },

-  { 0x8700, 0x1652, 0x2000 },

-  { 0x0700, 0x1651, 0x0000 },

-  { 0x0700, 0x1653, 0x0000 },

-  { 0x8700, 0x1656, 0x2000 },

-  { 0x0700, 0x1655, 0x0000 },

-  { 0x0700, 0x1657, 0x0000 },

-  { 0x8700, 0x16e4, 0x8000 },

-  { 0x8700, 0x16a4, 0x7000 },

-  { 0x8700, 0x1681, 0x6000 },

-  { 0x8700, 0x1668, 0x5000 },

-  { 0x8700, 0x1660, 0x4000 },

-  { 0x8700, 0x165c, 0x3000 },

-  { 0x8700, 0x165a, 0x2000 },

-  { 0x0700, 0x1659, 0x0000 },

-  { 0x0700, 0x165b, 0x0000 },

-  { 0x8700, 0x165e, 0x2000 },

-  { 0x0700, 0x165d, 0x0000 },

-  { 0x0700, 0x165f, 0x0000 },

-  { 0x8700, 0x1664, 0x3000 },

-  { 0x8700, 0x1662, 0x2000 },

-  { 0x0700, 0x1661, 0x0000 },

-  { 0x0700, 0x1663, 0x0000 },

-  { 0x8700, 0x1666, 0x2000 },

-  { 0x0700, 0x1665, 0x0000 },

-  { 0x0700, 0x1667, 0x0000 },

-  { 0x8700, 0x1670, 0x4000 },

-  { 0x8700, 0x166c, 0x3000 },

-  { 0x8700, 0x166a, 0x2000 },

-  { 0x0700, 0x1669, 0x0000 },

-  { 0x0700, 0x166b, 0x0000 },

-  { 0x9500, 0x166e, 0x2000 },

-  { 0x1500, 0x166d, 0x0000 },

-  { 0x0700, 0x166f, 0x0000 },

-  { 0x8700, 0x1674, 0x3000 },

-  { 0x8700, 0x1672, 0x2000 },

-  { 0x0700, 0x1671, 0x0000 },

-  { 0x0700, 0x1673, 0x0000 },

-  { 0x8700, 0x1676, 0x2000 },

-  { 0x0700, 0x1675, 0x0000 },

-  { 0x1d00, 0x1680, 0x0000 },

-  { 0x8700, 0x1691, 0x5000 },

-  { 0x8700, 0x1689, 0x4000 },

-  { 0x8700, 0x1685, 0x3000 },

-  { 0x8700, 0x1683, 0x2000 },

-  { 0x0700, 0x1682, 0x0000 },

-  { 0x0700, 0x1684, 0x0000 },

-  { 0x8700, 0x1687, 0x2000 },

-  { 0x0700, 0x1686, 0x0000 },

-  { 0x0700, 0x1688, 0x0000 },

-  { 0x8700, 0x168d, 0x3000 },

-  { 0x8700, 0x168b, 0x2000 },

-  { 0x0700, 0x168a, 0x0000 },

-  { 0x0700, 0x168c, 0x0000 },

-  { 0x8700, 0x168f, 0x2000 },

-  { 0x0700, 0x168e, 0x0000 },

-  { 0x0700, 0x1690, 0x0000 },

-  { 0x8700, 0x1699, 0x4000 },

-  { 0x8700, 0x1695, 0x3000 },

-  { 0x8700, 0x1693, 0x2000 },

-  { 0x0700, 0x1692, 0x0000 },

-  { 0x0700, 0x1694, 0x0000 },

-  { 0x8700, 0x1697, 0x2000 },

-  { 0x0700, 0x1696, 0x0000 },

-  { 0x0700, 0x1698, 0x0000 },

-  { 0x8700, 0x16a0, 0x3000 },

-  { 0x9600, 0x169b, 0x2000 },

-  { 0x0700, 0x169a, 0x0000 },

-  { 0x1200, 0x169c, 0x0000 },

-  { 0x8700, 0x16a2, 0x2000 },

-  { 0x0700, 0x16a1, 0x0000 },

-  { 0x0700, 0x16a3, 0x0000 },

-  { 0x8700, 0x16c4, 0x6000 },

-  { 0x8700, 0x16b4, 0x5000 },

-  { 0x8700, 0x16ac, 0x4000 },

-  { 0x8700, 0x16a8, 0x3000 },

-  { 0x8700, 0x16a6, 0x2000 },

-  { 0x0700, 0x16a5, 0x0000 },

-  { 0x0700, 0x16a7, 0x0000 },

-  { 0x8700, 0x16aa, 0x2000 },

-  { 0x0700, 0x16a9, 0x0000 },

-  { 0x0700, 0x16ab, 0x0000 },

-  { 0x8700, 0x16b0, 0x3000 },

-  { 0x8700, 0x16ae, 0x2000 },

-  { 0x0700, 0x16ad, 0x0000 },

-  { 0x0700, 0x16af, 0x0000 },

-  { 0x8700, 0x16b2, 0x2000 },

-  { 0x0700, 0x16b1, 0x0000 },

-  { 0x0700, 0x16b3, 0x0000 },

-  { 0x8700, 0x16bc, 0x4000 },

-  { 0x8700, 0x16b8, 0x3000 },

-  { 0x8700, 0x16b6, 0x2000 },

-  { 0x0700, 0x16b5, 0x0000 },

-  { 0x0700, 0x16b7, 0x0000 },

-  { 0x8700, 0x16ba, 0x2000 },

-  { 0x0700, 0x16b9, 0x0000 },

-  { 0x0700, 0x16bb, 0x0000 },

-  { 0x8700, 0x16c0, 0x3000 },

-  { 0x8700, 0x16be, 0x2000 },

-  { 0x0700, 0x16bd, 0x0000 },

-  { 0x0700, 0x16bf, 0x0000 },

-  { 0x8700, 0x16c2, 0x2000 },

-  { 0x0700, 0x16c1, 0x0000 },

-  { 0x0700, 0x16c3, 0x0000 },

-  { 0x8700, 0x16d4, 0x5000 },

-  { 0x8700, 0x16cc, 0x4000 },

-  { 0x8700, 0x16c8, 0x3000 },

-  { 0x8700, 0x16c6, 0x2000 },

-  { 0x0700, 0x16c5, 0x0000 },

-  { 0x0700, 0x16c7, 0x0000 },

-  { 0x8700, 0x16ca, 0x2000 },

-  { 0x0700, 0x16c9, 0x0000 },

-  { 0x0700, 0x16cb, 0x0000 },

-  { 0x8700, 0x16d0, 0x3000 },

-  { 0x8700, 0x16ce, 0x2000 },

-  { 0x0700, 0x16cd, 0x0000 },

-  { 0x0700, 0x16cf, 0x0000 },

-  { 0x8700, 0x16d2, 0x2000 },

-  { 0x0700, 0x16d1, 0x0000 },

-  { 0x0700, 0x16d3, 0x0000 },

-  { 0x8700, 0x16dc, 0x4000 },

-  { 0x8700, 0x16d8, 0x3000 },

-  { 0x8700, 0x16d6, 0x2000 },

-  { 0x0700, 0x16d5, 0x0000 },

-  { 0x0700, 0x16d7, 0x0000 },

-  { 0x8700, 0x16da, 0x2000 },

-  { 0x0700, 0x16d9, 0x0000 },

-  { 0x0700, 0x16db, 0x0000 },

-  { 0x8700, 0x16e0, 0x3000 },

-  { 0x8700, 0x16de, 0x2000 },

-  { 0x0700, 0x16dd, 0x0000 },

-  { 0x0700, 0x16df, 0x0000 },

-  { 0x8700, 0x16e2, 0x2000 },

-  { 0x0700, 0x16e1, 0x0000 },

-  { 0x0700, 0x16e3, 0x0000 },

-  { 0x8700, 0x1748, 0x7000 },

-  { 0x8c00, 0x1714, 0x6000 },

-  { 0x8700, 0x1703, 0x5000 },

-  { 0x9500, 0x16ec, 0x4000 },

-  { 0x8700, 0x16e8, 0x3000 },

-  { 0x8700, 0x16e6, 0x2000 },

-  { 0x0700, 0x16e5, 0x0000 },

-  { 0x0700, 0x16e7, 0x0000 },

-  { 0x8700, 0x16ea, 0x2000 },

-  { 0x0700, 0x16e9, 0x0000 },

-  { 0x1500, 0x16eb, 0x0000 },

-  { 0x8e00, 0x16f0, 0x3000 },

-  { 0x8e00, 0x16ee, 0x2000 },

-  { 0x1500, 0x16ed, 0x0000 },

-  { 0x0e00, 0x16ef, 0x0000 },

-  { 0x8700, 0x1701, 0x2000 },

-  { 0x0700, 0x1700, 0x0000 },

-  { 0x0700, 0x1702, 0x0000 },

-  { 0x8700, 0x170b, 0x4000 },

-  { 0x8700, 0x1707, 0x3000 },

-  { 0x8700, 0x1705, 0x2000 },

-  { 0x0700, 0x1704, 0x0000 },

-  { 0x0700, 0x1706, 0x0000 },

-  { 0x8700, 0x1709, 0x2000 },

-  { 0x0700, 0x1708, 0x0000 },

-  { 0x0700, 0x170a, 0x0000 },

-  { 0x8700, 0x1710, 0x3000 },

-  { 0x8700, 0x170e, 0x2000 },

-  { 0x0700, 0x170c, 0x0000 },

-  { 0x0700, 0x170f, 0x0000 },

-  { 0x8c00, 0x1712, 0x2000 },

-  { 0x0700, 0x1711, 0x0000 },

-  { 0x0c00, 0x1713, 0x0000 },

-  { 0x8700, 0x172f, 0x5000 },

-  { 0x8700, 0x1727, 0x4000 },

-  { 0x8700, 0x1723, 0x3000 },

-  { 0x8700, 0x1721, 0x2000 },

-  { 0x0700, 0x1720, 0x0000 },

-  { 0x0700, 0x1722, 0x0000 },

-  { 0x8700, 0x1725, 0x2000 },

-  { 0x0700, 0x1724, 0x0000 },

-  { 0x0700, 0x1726, 0x0000 },

-  { 0x8700, 0x172b, 0x3000 },

-  { 0x8700, 0x1729, 0x2000 },

-  { 0x0700, 0x1728, 0x0000 },

-  { 0x0700, 0x172a, 0x0000 },

-  { 0x8700, 0x172d, 0x2000 },

-  { 0x0700, 0x172c, 0x0000 },

-  { 0x0700, 0x172e, 0x0000 },

-  { 0x8700, 0x1740, 0x4000 },

-  { 0x8c00, 0x1733, 0x3000 },

-  { 0x8700, 0x1731, 0x2000 },

-  { 0x0700, 0x1730, 0x0000 },

-  { 0x0c00, 0x1732, 0x0000 },

-  { 0x9500, 0x1735, 0x2000 },

-  { 0x0c00, 0x1734, 0x0000 },

-  { 0x1500, 0x1736, 0x0000 },

-  { 0x8700, 0x1744, 0x3000 },

-  { 0x8700, 0x1742, 0x2000 },

-  { 0x0700, 0x1741, 0x0000 },

-  { 0x0700, 0x1743, 0x0000 },

-  { 0x8700, 0x1746, 0x2000 },

-  { 0x0700, 0x1745, 0x0000 },

-  { 0x0700, 0x1747, 0x0000 },

-  { 0x8700, 0x1782, 0x6000 },

-  { 0x8700, 0x1764, 0x5000 },

-  { 0x8700, 0x1750, 0x4000 },

-  { 0x8700, 0x174c, 0x3000 },

-  { 0x8700, 0x174a, 0x2000 },

-  { 0x0700, 0x1749, 0x0000 },

-  { 0x0700, 0x174b, 0x0000 },

-  { 0x8700, 0x174e, 0x2000 },

-  { 0x0700, 0x174d, 0x0000 },

-  { 0x0700, 0x174f, 0x0000 },

-  { 0x8700, 0x1760, 0x3000 },

-  { 0x8c00, 0x1752, 0x2000 },

-  { 0x0700, 0x1751, 0x0000 },

-  { 0x0c00, 0x1753, 0x0000 },

-  { 0x8700, 0x1762, 0x2000 },

-  { 0x0700, 0x1761, 0x0000 },

-  { 0x0700, 0x1763, 0x0000 },

-  { 0x8700, 0x176c, 0x4000 },

-  { 0x8700, 0x1768, 0x3000 },

-  { 0x8700, 0x1766, 0x2000 },

-  { 0x0700, 0x1765, 0x0000 },

-  { 0x0700, 0x1767, 0x0000 },

-  { 0x8700, 0x176a, 0x2000 },

-  { 0x0700, 0x1769, 0x0000 },

-  { 0x0700, 0x176b, 0x0000 },

-  { 0x8c00, 0x1772, 0x3000 },

-  { 0x8700, 0x176f, 0x2000 },

-  { 0x0700, 0x176e, 0x0000 },

-  { 0x0700, 0x1770, 0x0000 },

-  { 0x8700, 0x1780, 0x2000 },

-  { 0x0c00, 0x1773, 0x0000 },

-  { 0x0700, 0x1781, 0x0000 },

-  { 0x8700, 0x1792, 0x5000 },

-  { 0x8700, 0x178a, 0x4000 },

-  { 0x8700, 0x1786, 0x3000 },

-  { 0x8700, 0x1784, 0x2000 },

-  { 0x0700, 0x1783, 0x0000 },

-  { 0x0700, 0x1785, 0x0000 },

-  { 0x8700, 0x1788, 0x2000 },

-  { 0x0700, 0x1787, 0x0000 },

-  { 0x0700, 0x1789, 0x0000 },

-  { 0x8700, 0x178e, 0x3000 },

-  { 0x8700, 0x178c, 0x2000 },

-  { 0x0700, 0x178b, 0x0000 },

-  { 0x0700, 0x178d, 0x0000 },

-  { 0x8700, 0x1790, 0x2000 },

-  { 0x0700, 0x178f, 0x0000 },

-  { 0x0700, 0x1791, 0x0000 },

-  { 0x8700, 0x179a, 0x4000 },

-  { 0x8700, 0x1796, 0x3000 },

-  { 0x8700, 0x1794, 0x2000 },

-  { 0x0700, 0x1793, 0x0000 },

-  { 0x0700, 0x1795, 0x0000 },

-  { 0x8700, 0x1798, 0x2000 },

-  { 0x0700, 0x1797, 0x0000 },

-  { 0x0700, 0x1799, 0x0000 },

-  { 0x8700, 0x179e, 0x3000 },

-  { 0x8700, 0x179c, 0x2000 },

-  { 0x0700, 0x179b, 0x0000 },

-  { 0x0700, 0x179d, 0x0000 },

-  { 0x8700, 0x17a0, 0x2000 },

-  { 0x0700, 0x179f, 0x0000 },

-  { 0x0700, 0x17a1, 0x0000 },

-  { 0x8700, 0x1915, 0x9000 },

-  { 0x8700, 0x1837, 0x8000 },

-  { 0x8d00, 0x17e4, 0x7000 },

-  { 0x8a00, 0x17c2, 0x6000 },

-  { 0x8700, 0x17b2, 0x5000 },

-  { 0x8700, 0x17aa, 0x4000 },

-  { 0x8700, 0x17a6, 0x3000 },

-  { 0x8700, 0x17a4, 0x2000 },

-  { 0x0700, 0x17a3, 0x0000 },

-  { 0x0700, 0x17a5, 0x0000 },

-  { 0x8700, 0x17a8, 0x2000 },

-  { 0x0700, 0x17a7, 0x0000 },

-  { 0x0700, 0x17a9, 0x0000 },

-  { 0x8700, 0x17ae, 0x3000 },

-  { 0x8700, 0x17ac, 0x2000 },

-  { 0x0700, 0x17ab, 0x0000 },

-  { 0x0700, 0x17ad, 0x0000 },

-  { 0x8700, 0x17b0, 0x2000 },

-  { 0x0700, 0x17af, 0x0000 },

-  { 0x0700, 0x17b1, 0x0000 },

-  { 0x8c00, 0x17ba, 0x4000 },

-  { 0x8a00, 0x17b6, 0x3000 },

-  { 0x8100, 0x17b4, 0x2000 },

-  { 0x0700, 0x17b3, 0x0000 },

-  { 0x0100, 0x17b5, 0x0000 },

-  { 0x8c00, 0x17b8, 0x2000 },

-  { 0x0c00, 0x17b7, 0x0000 },

-  { 0x0c00, 0x17b9, 0x0000 },

-  { 0x8a00, 0x17be, 0x3000 },

-  { 0x8c00, 0x17bc, 0x2000 },

-  { 0x0c00, 0x17bb, 0x0000 },

-  { 0x0c00, 0x17bd, 0x0000 },

-  { 0x8a00, 0x17c0, 0x2000 },

-  { 0x0a00, 0x17bf, 0x0000 },

-  { 0x0a00, 0x17c1, 0x0000 },

-  { 0x8c00, 0x17d2, 0x5000 },

-  { 0x8c00, 0x17ca, 0x4000 },

-  { 0x8c00, 0x17c6, 0x3000 },

-  { 0x8a00, 0x17c4, 0x2000 },

-  { 0x0a00, 0x17c3, 0x0000 },

-  { 0x0a00, 0x17c5, 0x0000 },

-  { 0x8a00, 0x17c8, 0x2000 },

-  { 0x0a00, 0x17c7, 0x0000 },

-  { 0x0c00, 0x17c9, 0x0000 },

-  { 0x8c00, 0x17ce, 0x3000 },

-  { 0x8c00, 0x17cc, 0x2000 },

-  { 0x0c00, 0x17cb, 0x0000 },

-  { 0x0c00, 0x17cd, 0x0000 },

-  { 0x8c00, 0x17d0, 0x2000 },

-  { 0x0c00, 0x17cf, 0x0000 },

-  { 0x0c00, 0x17d1, 0x0000 },

-  { 0x9500, 0x17da, 0x4000 },

-  { 0x9500, 0x17d6, 0x3000 },

-  { 0x9500, 0x17d4, 0x2000 },

-  { 0x0c00, 0x17d3, 0x0000 },

-  { 0x1500, 0x17d5, 0x0000 },

-  { 0x9500, 0x17d8, 0x2000 },

-  { 0x0600, 0x17d7, 0x0000 },

-  { 0x1500, 0x17d9, 0x0000 },

-  { 0x8d00, 0x17e0, 0x3000 },

-  { 0x8700, 0x17dc, 0x2000 },

-  { 0x1700, 0x17db, 0x0000 },

-  { 0x0c00, 0x17dd, 0x0000 },

-  { 0x8d00, 0x17e2, 0x2000 },

-  { 0x0d00, 0x17e1, 0x0000 },

-  { 0x0d00, 0x17e3, 0x0000 },

-  { 0x8d00, 0x1811, 0x6000 },

-  { 0x9500, 0x1800, 0x5000 },

-  { 0x8f00, 0x17f2, 0x4000 },

-  { 0x8d00, 0x17e8, 0x3000 },

-  { 0x8d00, 0x17e6, 0x2000 },

-  { 0x0d00, 0x17e5, 0x0000 },

-  { 0x0d00, 0x17e7, 0x0000 },

-  { 0x8f00, 0x17f0, 0x2000 },

-  { 0x0d00, 0x17e9, 0x0000 },

-  { 0x0f00, 0x17f1, 0x0000 },

-  { 0x8f00, 0x17f6, 0x3000 },

-  { 0x8f00, 0x17f4, 0x2000 },

-  { 0x0f00, 0x17f3, 0x0000 },

-  { 0x0f00, 0x17f5, 0x0000 },

-  { 0x8f00, 0x17f8, 0x2000 },

-  { 0x0f00, 0x17f7, 0x0000 },

-  { 0x0f00, 0x17f9, 0x0000 },

-  { 0x9500, 0x1808, 0x4000 },

-  { 0x9500, 0x1804, 0x3000 },

-  { 0x9500, 0x1802, 0x2000 },

-  { 0x1500, 0x1801, 0x0000 },

-  { 0x1500, 0x1803, 0x0000 },

-  { 0x9100, 0x1806, 0x2000 },

-  { 0x1500, 0x1805, 0x0000 },

-  { 0x1500, 0x1807, 0x0000 },

-  { 0x8c00, 0x180c, 0x3000 },

-  { 0x9500, 0x180a, 0x2000 },

-  { 0x1500, 0x1809, 0x0000 },

-  { 0x0c00, 0x180b, 0x0000 },

-  { 0x9d00, 0x180e, 0x2000 },

-  { 0x0c00, 0x180d, 0x0000 },

-  { 0x0d00, 0x1810, 0x0000 },

-  { 0x8700, 0x1827, 0x5000 },

-  { 0x8d00, 0x1819, 0x4000 },

-  { 0x8d00, 0x1815, 0x3000 },

-  { 0x8d00, 0x1813, 0x2000 },

-  { 0x0d00, 0x1812, 0x0000 },

-  { 0x0d00, 0x1814, 0x0000 },

-  { 0x8d00, 0x1817, 0x2000 },

-  { 0x0d00, 0x1816, 0x0000 },

-  { 0x0d00, 0x1818, 0x0000 },

-  { 0x8700, 0x1823, 0x3000 },

-  { 0x8700, 0x1821, 0x2000 },

-  { 0x0700, 0x1820, 0x0000 },

-  { 0x0700, 0x1822, 0x0000 },

-  { 0x8700, 0x1825, 0x2000 },

-  { 0x0700, 0x1824, 0x0000 },

-  { 0x0700, 0x1826, 0x0000 },

-  { 0x8700, 0x182f, 0x4000 },

-  { 0x8700, 0x182b, 0x3000 },

-  { 0x8700, 0x1829, 0x2000 },

-  { 0x0700, 0x1828, 0x0000 },

-  { 0x0700, 0x182a, 0x0000 },

-  { 0x8700, 0x182d, 0x2000 },

-  { 0x0700, 0x182c, 0x0000 },

-  { 0x0700, 0x182e, 0x0000 },

-  { 0x8700, 0x1833, 0x3000 },

-  { 0x8700, 0x1831, 0x2000 },

-  { 0x0700, 0x1830, 0x0000 },

-  { 0x0700, 0x1832, 0x0000 },

-  { 0x8700, 0x1835, 0x2000 },

-  { 0x0700, 0x1834, 0x0000 },

-  { 0x0700, 0x1836, 0x0000 },

-  { 0x8700, 0x1877, 0x7000 },

-  { 0x8700, 0x1857, 0x6000 },

-  { 0x8700, 0x1847, 0x5000 },

-  { 0x8700, 0x183f, 0x4000 },

-  { 0x8700, 0x183b, 0x3000 },

-  { 0x8700, 0x1839, 0x2000 },

-  { 0x0700, 0x1838, 0x0000 },

-  { 0x0700, 0x183a, 0x0000 },

-  { 0x8700, 0x183d, 0x2000 },

-  { 0x0700, 0x183c, 0x0000 },

-  { 0x0700, 0x183e, 0x0000 },

-  { 0x8600, 0x1843, 0x3000 },

-  { 0x8700, 0x1841, 0x2000 },

-  { 0x0700, 0x1840, 0x0000 },

-  { 0x0700, 0x1842, 0x0000 },

-  { 0x8700, 0x1845, 0x2000 },

-  { 0x0700, 0x1844, 0x0000 },

-  { 0x0700, 0x1846, 0x0000 },

-  { 0x8700, 0x184f, 0x4000 },

-  { 0x8700, 0x184b, 0x3000 },

-  { 0x8700, 0x1849, 0x2000 },

-  { 0x0700, 0x1848, 0x0000 },

-  { 0x0700, 0x184a, 0x0000 },

-  { 0x8700, 0x184d, 0x2000 },

-  { 0x0700, 0x184c, 0x0000 },

-  { 0x0700, 0x184e, 0x0000 },

-  { 0x8700, 0x1853, 0x3000 },

-  { 0x8700, 0x1851, 0x2000 },

-  { 0x0700, 0x1850, 0x0000 },

-  { 0x0700, 0x1852, 0x0000 },

-  { 0x8700, 0x1855, 0x2000 },

-  { 0x0700, 0x1854, 0x0000 },

-  { 0x0700, 0x1856, 0x0000 },

-  { 0x8700, 0x1867, 0x5000 },

-  { 0x8700, 0x185f, 0x4000 },

-  { 0x8700, 0x185b, 0x3000 },

-  { 0x8700, 0x1859, 0x2000 },

-  { 0x0700, 0x1858, 0x0000 },

-  { 0x0700, 0x185a, 0x0000 },

-  { 0x8700, 0x185d, 0x2000 },

-  { 0x0700, 0x185c, 0x0000 },

-  { 0x0700, 0x185e, 0x0000 },

-  { 0x8700, 0x1863, 0x3000 },

-  { 0x8700, 0x1861, 0x2000 },

-  { 0x0700, 0x1860, 0x0000 },

-  { 0x0700, 0x1862, 0x0000 },

-  { 0x8700, 0x1865, 0x2000 },

-  { 0x0700, 0x1864, 0x0000 },

-  { 0x0700, 0x1866, 0x0000 },

-  { 0x8700, 0x186f, 0x4000 },

-  { 0x8700, 0x186b, 0x3000 },

-  { 0x8700, 0x1869, 0x2000 },

-  { 0x0700, 0x1868, 0x0000 },

-  { 0x0700, 0x186a, 0x0000 },

-  { 0x8700, 0x186d, 0x2000 },

-  { 0x0700, 0x186c, 0x0000 },

-  { 0x0700, 0x186e, 0x0000 },

-  { 0x8700, 0x1873, 0x3000 },

-  { 0x8700, 0x1871, 0x2000 },

-  { 0x0700, 0x1870, 0x0000 },

-  { 0x0700, 0x1872, 0x0000 },

-  { 0x8700, 0x1875, 0x2000 },

-  { 0x0700, 0x1874, 0x0000 },

-  { 0x0700, 0x1876, 0x0000 },

-  { 0x8700, 0x189f, 0x6000 },

-  { 0x8700, 0x188f, 0x5000 },

-  { 0x8700, 0x1887, 0x4000 },

-  { 0x8700, 0x1883, 0x3000 },

-  { 0x8700, 0x1881, 0x2000 },

-  { 0x0700, 0x1880, 0x0000 },

-  { 0x0700, 0x1882, 0x0000 },

-  { 0x8700, 0x1885, 0x2000 },

-  { 0x0700, 0x1884, 0x0000 },

-  { 0x0700, 0x1886, 0x0000 },

-  { 0x8700, 0x188b, 0x3000 },

-  { 0x8700, 0x1889, 0x2000 },

-  { 0x0700, 0x1888, 0x0000 },

-  { 0x0700, 0x188a, 0x0000 },

-  { 0x8700, 0x188d, 0x2000 },

-  { 0x0700, 0x188c, 0x0000 },

-  { 0x0700, 0x188e, 0x0000 },

-  { 0x8700, 0x1897, 0x4000 },

-  { 0x8700, 0x1893, 0x3000 },

-  { 0x8700, 0x1891, 0x2000 },

-  { 0x0700, 0x1890, 0x0000 },

-  { 0x0700, 0x1892, 0x0000 },

-  { 0x8700, 0x1895, 0x2000 },

-  { 0x0700, 0x1894, 0x0000 },

-  { 0x0700, 0x1896, 0x0000 },

-  { 0x8700, 0x189b, 0x3000 },

-  { 0x8700, 0x1899, 0x2000 },

-  { 0x0700, 0x1898, 0x0000 },

-  { 0x0700, 0x189a, 0x0000 },

-  { 0x8700, 0x189d, 0x2000 },

-  { 0x0700, 0x189c, 0x0000 },

-  { 0x0700, 0x189e, 0x0000 },

-  { 0x8700, 0x1905, 0x5000 },

-  { 0x8700, 0x18a7, 0x4000 },

-  { 0x8700, 0x18a3, 0x3000 },

-  { 0x8700, 0x18a1, 0x2000 },

-  { 0x0700, 0x18a0, 0x0000 },

-  { 0x0700, 0x18a2, 0x0000 },

-  { 0x8700, 0x18a5, 0x2000 },

-  { 0x0700, 0x18a4, 0x0000 },

-  { 0x0700, 0x18a6, 0x0000 },

-  { 0x8700, 0x1901, 0x3000 },

-  { 0x8c00, 0x18a9, 0x2000 },

-  { 0x0700, 0x18a8, 0x0000 },

-  { 0x0700, 0x1900, 0x0000 },

-  { 0x8700, 0x1903, 0x2000 },

-  { 0x0700, 0x1902, 0x0000 },

-  { 0x0700, 0x1904, 0x0000 },

-  { 0x8700, 0x190d, 0x4000 },

-  { 0x8700, 0x1909, 0x3000 },

-  { 0x8700, 0x1907, 0x2000 },

-  { 0x0700, 0x1906, 0x0000 },

-  { 0x0700, 0x1908, 0x0000 },

-  { 0x8700, 0x190b, 0x2000 },

-  { 0x0700, 0x190a, 0x0000 },

-  { 0x0700, 0x190c, 0x0000 },

-  { 0x8700, 0x1911, 0x3000 },

-  { 0x8700, 0x190f, 0x2000 },

-  { 0x0700, 0x190e, 0x0000 },

-  { 0x0700, 0x1910, 0x0000 },

-  { 0x8700, 0x1913, 0x2000 },

-  { 0x0700, 0x1912, 0x0000 },

-  { 0x0700, 0x1914, 0x0000 },

-  { 0x8500, 0x1d10, 0x8000 },

-  { 0x8700, 0x1963, 0x7000 },

-  { 0x9a00, 0x1940, 0x6000 },

-  { 0x8c00, 0x1928, 0x5000 },

-  { 0x8c00, 0x1920, 0x4000 },

-  { 0x8700, 0x1919, 0x3000 },

-  { 0x8700, 0x1917, 0x2000 },

-  { 0x0700, 0x1916, 0x0000 },

-  { 0x0700, 0x1918, 0x0000 },

-  { 0x8700, 0x191b, 0x2000 },

-  { 0x0700, 0x191a, 0x0000 },

-  { 0x0700, 0x191c, 0x0000 },

-  { 0x8a00, 0x1924, 0x3000 },

-  { 0x8c00, 0x1922, 0x2000 },

-  { 0x0c00, 0x1921, 0x0000 },

-  { 0x0a00, 0x1923, 0x0000 },

-  { 0x8a00, 0x1926, 0x2000 },

-  { 0x0a00, 0x1925, 0x0000 },

-  { 0x0c00, 0x1927, 0x0000 },

-  { 0x8a00, 0x1934, 0x4000 },

-  { 0x8a00, 0x1930, 0x3000 },

-  { 0x8a00, 0x192a, 0x2000 },

-  { 0x0a00, 0x1929, 0x0000 },

-  { 0x0a00, 0x192b, 0x0000 },

-  { 0x8c00, 0x1932, 0x2000 },

-  { 0x0a00, 0x1931, 0x0000 },

-  { 0x0a00, 0x1933, 0x0000 },

-  { 0x8a00, 0x1938, 0x3000 },

-  { 0x8a00, 0x1936, 0x2000 },

-  { 0x0a00, 0x1935, 0x0000 },

-  { 0x0a00, 0x1937, 0x0000 },

-  { 0x8c00, 0x193a, 0x2000 },

-  { 0x0c00, 0x1939, 0x0000 },

-  { 0x0c00, 0x193b, 0x0000 },

-  { 0x8700, 0x1953, 0x5000 },

-  { 0x8d00, 0x194b, 0x4000 },

-  { 0x8d00, 0x1947, 0x3000 },

-  { 0x9500, 0x1945, 0x2000 },

-  { 0x1500, 0x1944, 0x0000 },

-  { 0x0d00, 0x1946, 0x0000 },

-  { 0x8d00, 0x1949, 0x2000 },

-  { 0x0d00, 0x1948, 0x0000 },

-  { 0x0d00, 0x194a, 0x0000 },

-  { 0x8d00, 0x194f, 0x3000 },

-  { 0x8d00, 0x194d, 0x2000 },

-  { 0x0d00, 0x194c, 0x0000 },

-  { 0x0d00, 0x194e, 0x0000 },

-  { 0x8700, 0x1951, 0x2000 },

-  { 0x0700, 0x1950, 0x0000 },

-  { 0x0700, 0x1952, 0x0000 },

-  { 0x8700, 0x195b, 0x4000 },

-  { 0x8700, 0x1957, 0x3000 },

-  { 0x8700, 0x1955, 0x2000 },

-  { 0x0700, 0x1954, 0x0000 },

-  { 0x0700, 0x1956, 0x0000 },

-  { 0x8700, 0x1959, 0x2000 },

-  { 0x0700, 0x1958, 0x0000 },

-  { 0x0700, 0x195a, 0x0000 },

-  { 0x8700, 0x195f, 0x3000 },

-  { 0x8700, 0x195d, 0x2000 },

-  { 0x0700, 0x195c, 0x0000 },

-  { 0x0700, 0x195e, 0x0000 },

-  { 0x8700, 0x1961, 0x2000 },

-  { 0x0700, 0x1960, 0x0000 },

-  { 0x0700, 0x1962, 0x0000 },

-  { 0x9a00, 0x19f0, 0x6000 },

-  { 0x9a00, 0x19e0, 0x5000 },

-  { 0x8700, 0x196b, 0x4000 },

-  { 0x8700, 0x1967, 0x3000 },

-  { 0x8700, 0x1965, 0x2000 },

-  { 0x0700, 0x1964, 0x0000 },

-  { 0x0700, 0x1966, 0x0000 },

-  { 0x8700, 0x1969, 0x2000 },

-  { 0x0700, 0x1968, 0x0000 },

-  { 0x0700, 0x196a, 0x0000 },

-  { 0x8700, 0x1971, 0x3000 },

-  { 0x8700, 0x196d, 0x2000 },

-  { 0x0700, 0x196c, 0x0000 },

-  { 0x0700, 0x1970, 0x0000 },

-  { 0x8700, 0x1973, 0x2000 },

-  { 0x0700, 0x1972, 0x0000 },

-  { 0x0700, 0x1974, 0x0000 },

-  { 0x9a00, 0x19e8, 0x4000 },

-  { 0x9a00, 0x19e4, 0x3000 },

-  { 0x9a00, 0x19e2, 0x2000 },

-  { 0x1a00, 0x19e1, 0x0000 },

-  { 0x1a00, 0x19e3, 0x0000 },

-  { 0x9a00, 0x19e6, 0x2000 },

-  { 0x1a00, 0x19e5, 0x0000 },

-  { 0x1a00, 0x19e7, 0x0000 },

-  { 0x9a00, 0x19ec, 0x3000 },

-  { 0x9a00, 0x19ea, 0x2000 },

-  { 0x1a00, 0x19e9, 0x0000 },

-  { 0x1a00, 0x19eb, 0x0000 },

-  { 0x9a00, 0x19ee, 0x2000 },

-  { 0x1a00, 0x19ed, 0x0000 },

-  { 0x1a00, 0x19ef, 0x0000 },

-  { 0x8500, 0x1d00, 0x5000 },

-  { 0x9a00, 0x19f8, 0x4000 },

-  { 0x9a00, 0x19f4, 0x3000 },

-  { 0x9a00, 0x19f2, 0x2000 },

-  { 0x1a00, 0x19f1, 0x0000 },

-  { 0x1a00, 0x19f3, 0x0000 },

-  { 0x9a00, 0x19f6, 0x2000 },

-  { 0x1a00, 0x19f5, 0x0000 },

-  { 0x1a00, 0x19f7, 0x0000 },

-  { 0x9a00, 0x19fc, 0x3000 },

-  { 0x9a00, 0x19fa, 0x2000 },

-  { 0x1a00, 0x19f9, 0x0000 },

-  { 0x1a00, 0x19fb, 0x0000 },

-  { 0x9a00, 0x19fe, 0x2000 },

-  { 0x1a00, 0x19fd, 0x0000 },

-  { 0x1a00, 0x19ff, 0x0000 },

-  { 0x8500, 0x1d08, 0x4000 },

-  { 0x8500, 0x1d04, 0x3000 },

-  { 0x8500, 0x1d02, 0x2000 },

-  { 0x0500, 0x1d01, 0x0000 },

-  { 0x0500, 0x1d03, 0x0000 },

-  { 0x8500, 0x1d06, 0x2000 },

-  { 0x0500, 0x1d05, 0x0000 },

-  { 0x0500, 0x1d07, 0x0000 },

-  { 0x8500, 0x1d0c, 0x3000 },

-  { 0x8500, 0x1d0a, 0x2000 },

-  { 0x0500, 0x1d09, 0x0000 },

-  { 0x0500, 0x1d0b, 0x0000 },

-  { 0x8500, 0x1d0e, 0x2000 },

-  { 0x0500, 0x1d0d, 0x0000 },

-  { 0x0500, 0x1d0f, 0x0000 },

-  { 0x8600, 0x1d50, 0x7000 },

-  { 0x8600, 0x1d30, 0x6000 },

-  { 0x8500, 0x1d20, 0x5000 },

-  { 0x8500, 0x1d18, 0x4000 },

-  { 0x8500, 0x1d14, 0x3000 },

-  { 0x8500, 0x1d12, 0x2000 },

-  { 0x0500, 0x1d11, 0x0000 },

-  { 0x0500, 0x1d13, 0x0000 },

-  { 0x8500, 0x1d16, 0x2000 },

-  { 0x0500, 0x1d15, 0x0000 },

-  { 0x0500, 0x1d17, 0x0000 },

-  { 0x8500, 0x1d1c, 0x3000 },

-  { 0x8500, 0x1d1a, 0x2000 },

-  { 0x0500, 0x1d19, 0x0000 },

-  { 0x0500, 0x1d1b, 0x0000 },

-  { 0x8500, 0x1d1e, 0x2000 },

-  { 0x0500, 0x1d1d, 0x0000 },

-  { 0x0500, 0x1d1f, 0x0000 },

-  { 0x8500, 0x1d28, 0x4000 },

-  { 0x8500, 0x1d24, 0x3000 },

-  { 0x8500, 0x1d22, 0x2000 },

-  { 0x0500, 0x1d21, 0x0000 },

-  { 0x0500, 0x1d23, 0x0000 },

-  { 0x8500, 0x1d26, 0x2000 },

-  { 0x0500, 0x1d25, 0x0000 },

-  { 0x0500, 0x1d27, 0x0000 },

-  { 0x8600, 0x1d2c, 0x3000 },

-  { 0x8500, 0x1d2a, 0x2000 },

-  { 0x0500, 0x1d29, 0x0000 },

-  { 0x0500, 0x1d2b, 0x0000 },

-  { 0x8600, 0x1d2e, 0x2000 },

-  { 0x0600, 0x1d2d, 0x0000 },

-  { 0x0600, 0x1d2f, 0x0000 },

-  { 0x8600, 0x1d40, 0x5000 },

-  { 0x8600, 0x1d38, 0x4000 },

-  { 0x8600, 0x1d34, 0x3000 },

-  { 0x8600, 0x1d32, 0x2000 },

-  { 0x0600, 0x1d31, 0x0000 },

-  { 0x0600, 0x1d33, 0x0000 },

-  { 0x8600, 0x1d36, 0x2000 },

-  { 0x0600, 0x1d35, 0x0000 },

-  { 0x0600, 0x1d37, 0x0000 },

-  { 0x8600, 0x1d3c, 0x3000 },

-  { 0x8600, 0x1d3a, 0x2000 },

-  { 0x0600, 0x1d39, 0x0000 },

-  { 0x0600, 0x1d3b, 0x0000 },

-  { 0x8600, 0x1d3e, 0x2000 },

-  { 0x0600, 0x1d3d, 0x0000 },

-  { 0x0600, 0x1d3f, 0x0000 },

-  { 0x8600, 0x1d48, 0x4000 },

-  { 0x8600, 0x1d44, 0x3000 },

-  { 0x8600, 0x1d42, 0x2000 },

-  { 0x0600, 0x1d41, 0x0000 },

-  { 0x0600, 0x1d43, 0x0000 },

-  { 0x8600, 0x1d46, 0x2000 },

-  { 0x0600, 0x1d45, 0x0000 },

-  { 0x0600, 0x1d47, 0x0000 },

-  { 0x8600, 0x1d4c, 0x3000 },

-  { 0x8600, 0x1d4a, 0x2000 },

-  { 0x0600, 0x1d49, 0x0000 },

-  { 0x0600, 0x1d4b, 0x0000 },

-  { 0x8600, 0x1d4e, 0x2000 },

-  { 0x0600, 0x1d4d, 0x0000 },

-  { 0x0600, 0x1d4f, 0x0000 },

-  { 0x8900, 0x1e04, 0x6001 },

-  { 0x8600, 0x1d60, 0x5000 },

-  { 0x8600, 0x1d58, 0x4000 },

-  { 0x8600, 0x1d54, 0x3000 },

-  { 0x8600, 0x1d52, 0x2000 },

-  { 0x0600, 0x1d51, 0x0000 },

-  { 0x0600, 0x1d53, 0x0000 },

-  { 0x8600, 0x1d56, 0x2000 },

-  { 0x0600, 0x1d55, 0x0000 },

-  { 0x0600, 0x1d57, 0x0000 },

-  { 0x8600, 0x1d5c, 0x3000 },

-  { 0x8600, 0x1d5a, 0x2000 },

-  { 0x0600, 0x1d59, 0x0000 },

-  { 0x0600, 0x1d5b, 0x0000 },

-  { 0x8600, 0x1d5e, 0x2000 },

-  { 0x0600, 0x1d5d, 0x0000 },

-  { 0x0600, 0x1d5f, 0x0000 },

-  { 0x8500, 0x1d68, 0x4000 },

-  { 0x8500, 0x1d64, 0x3000 },

-  { 0x8500, 0x1d62, 0x2000 },

-  { 0x0600, 0x1d61, 0x0000 },

-  { 0x0500, 0x1d63, 0x0000 },

-  { 0x8500, 0x1d66, 0x2000 },

-  { 0x0500, 0x1d65, 0x0000 },

-  { 0x0500, 0x1d67, 0x0000 },

-  { 0x8900, 0x1e00, 0x3001 },

-  { 0x8500, 0x1d6a, 0x2000 },

-  { 0x0500, 0x1d69, 0x0000 },

-  { 0x0500, 0x1d6b, 0x0000 },

-  { 0x8900, 0x1e02, 0x2001 },

-  { 0x0500, 0x1e01, 0x0fff },

-  { 0x0500, 0x1e03, 0x0fff },

-  { 0x8900, 0x1e14, 0x5001 },

-  { 0x8900, 0x1e0c, 0x4001 },

-  { 0x8900, 0x1e08, 0x3001 },

-  { 0x8900, 0x1e06, 0x2001 },

-  { 0x0500, 0x1e05, 0x0fff },

-  { 0x0500, 0x1e07, 0x0fff },

-  { 0x8900, 0x1e0a, 0x2001 },

-  { 0x0500, 0x1e09, 0x0fff },

-  { 0x0500, 0x1e0b, 0x0fff },

-  { 0x8900, 0x1e10, 0x3001 },

-  { 0x8900, 0x1e0e, 0x2001 },

-  { 0x0500, 0x1e0d, 0x0fff },

-  { 0x0500, 0x1e0f, 0x0fff },

-  { 0x8900, 0x1e12, 0x2001 },

-  { 0x0500, 0x1e11, 0x0fff },

-  { 0x0500, 0x1e13, 0x0fff },

-  { 0x8900, 0x1e1c, 0x4001 },

-  { 0x8900, 0x1e18, 0x3001 },

-  { 0x8900, 0x1e16, 0x2001 },

-  { 0x0500, 0x1e15, 0x0fff },

-  { 0x0500, 0x1e17, 0x0fff },

-  { 0x8900, 0x1e1a, 0x2001 },

-  { 0x0500, 0x1e19, 0x0fff },

-  { 0x0500, 0x1e1b, 0x0fff },

-  { 0x8900, 0x1e20, 0x3001 },

-  { 0x8900, 0x1e1e, 0x2001 },

-  { 0x0500, 0x1e1d, 0x0fff },

-  { 0x0500, 0x1e1f, 0x0fff },

-  { 0x8900, 0x1e22, 0x2001 },

-  { 0x0500, 0x1e21, 0x0fff },

-  { 0x0500, 0x1e23, 0x0fff },

-  { 0x9600, 0x2045, 0xa000 },

-  { 0x8500, 0x1f32, 0x9008 },

-  { 0x8900, 0x1ea8, 0x8001 },

-  { 0x8900, 0x1e64, 0x7001 },

-  { 0x8900, 0x1e44, 0x6001 },

-  { 0x8900, 0x1e34, 0x5001 },

-  { 0x8900, 0x1e2c, 0x4001 },

-  { 0x8900, 0x1e28, 0x3001 },

-  { 0x8900, 0x1e26, 0x2001 },

-  { 0x0500, 0x1e25, 0x0fff },

-  { 0x0500, 0x1e27, 0x0fff },

-  { 0x8900, 0x1e2a, 0x2001 },

-  { 0x0500, 0x1e29, 0x0fff },

-  { 0x0500, 0x1e2b, 0x0fff },

-  { 0x8900, 0x1e30, 0x3001 },

-  { 0x8900, 0x1e2e, 0x2001 },

-  { 0x0500, 0x1e2d, 0x0fff },

-  { 0x0500, 0x1e2f, 0x0fff },

-  { 0x8900, 0x1e32, 0x2001 },

-  { 0x0500, 0x1e31, 0x0fff },

-  { 0x0500, 0x1e33, 0x0fff },

-  { 0x8900, 0x1e3c, 0x4001 },

-  { 0x8900, 0x1e38, 0x3001 },

-  { 0x8900, 0x1e36, 0x2001 },

-  { 0x0500, 0x1e35, 0x0fff },

-  { 0x0500, 0x1e37, 0x0fff },

-  { 0x8900, 0x1e3a, 0x2001 },

-  { 0x0500, 0x1e39, 0x0fff },

-  { 0x0500, 0x1e3b, 0x0fff },

-  { 0x8900, 0x1e40, 0x3001 },

-  { 0x8900, 0x1e3e, 0x2001 },

-  { 0x0500, 0x1e3d, 0x0fff },

-  { 0x0500, 0x1e3f, 0x0fff },

-  { 0x8900, 0x1e42, 0x2001 },

-  { 0x0500, 0x1e41, 0x0fff },

-  { 0x0500, 0x1e43, 0x0fff },

-  { 0x8900, 0x1e54, 0x5001 },

-  { 0x8900, 0x1e4c, 0x4001 },

-  { 0x8900, 0x1e48, 0x3001 },

-  { 0x8900, 0x1e46, 0x2001 },

-  { 0x0500, 0x1e45, 0x0fff },

-  { 0x0500, 0x1e47, 0x0fff },

-  { 0x8900, 0x1e4a, 0x2001 },

-  { 0x0500, 0x1e49, 0x0fff },

-  { 0x0500, 0x1e4b, 0x0fff },

-  { 0x8900, 0x1e50, 0x3001 },

-  { 0x8900, 0x1e4e, 0x2001 },

-  { 0x0500, 0x1e4d, 0x0fff },

-  { 0x0500, 0x1e4f, 0x0fff },

-  { 0x8900, 0x1e52, 0x2001 },

-  { 0x0500, 0x1e51, 0x0fff },

-  { 0x0500, 0x1e53, 0x0fff },

-  { 0x8900, 0x1e5c, 0x4001 },

-  { 0x8900, 0x1e58, 0x3001 },

-  { 0x8900, 0x1e56, 0x2001 },

-  { 0x0500, 0x1e55, 0x0fff },

-  { 0x0500, 0x1e57, 0x0fff },

-  { 0x8900, 0x1e5a, 0x2001 },

-  { 0x0500, 0x1e59, 0x0fff },

-  { 0x0500, 0x1e5b, 0x0fff },

-  { 0x8900, 0x1e60, 0x3001 },

-  { 0x8900, 0x1e5e, 0x2001 },

-  { 0x0500, 0x1e5d, 0x0fff },

-  { 0x0500, 0x1e5f, 0x0fff },

-  { 0x8900, 0x1e62, 0x2001 },

-  { 0x0500, 0x1e61, 0x0fff },

-  { 0x0500, 0x1e63, 0x0fff },

-  { 0x8900, 0x1e84, 0x6001 },

-  { 0x8900, 0x1e74, 0x5001 },

-  { 0x8900, 0x1e6c, 0x4001 },

-  { 0x8900, 0x1e68, 0x3001 },

-  { 0x8900, 0x1e66, 0x2001 },

-  { 0x0500, 0x1e65, 0x0fff },

-  { 0x0500, 0x1e67, 0x0fff },

-  { 0x8900, 0x1e6a, 0x2001 },

-  { 0x0500, 0x1e69, 0x0fff },

-  { 0x0500, 0x1e6b, 0x0fff },

-  { 0x8900, 0x1e70, 0x3001 },

-  { 0x8900, 0x1e6e, 0x2001 },

-  { 0x0500, 0x1e6d, 0x0fff },

-  { 0x0500, 0x1e6f, 0x0fff },

-  { 0x8900, 0x1e72, 0x2001 },

-  { 0x0500, 0x1e71, 0x0fff },

-  { 0x0500, 0x1e73, 0x0fff },

-  { 0x8900, 0x1e7c, 0x4001 },

-  { 0x8900, 0x1e78, 0x3001 },

-  { 0x8900, 0x1e76, 0x2001 },

-  { 0x0500, 0x1e75, 0x0fff },

-  { 0x0500, 0x1e77, 0x0fff },

-  { 0x8900, 0x1e7a, 0x2001 },

-  { 0x0500, 0x1e79, 0x0fff },

-  { 0x0500, 0x1e7b, 0x0fff },

-  { 0x8900, 0x1e80, 0x3001 },

-  { 0x8900, 0x1e7e, 0x2001 },

-  { 0x0500, 0x1e7d, 0x0fff },

-  { 0x0500, 0x1e7f, 0x0fff },

-  { 0x8900, 0x1e82, 0x2001 },

-  { 0x0500, 0x1e81, 0x0fff },

-  { 0x0500, 0x1e83, 0x0fff },

-  { 0x8900, 0x1e94, 0x5001 },

-  { 0x8900, 0x1e8c, 0x4001 },

-  { 0x8900, 0x1e88, 0x3001 },

-  { 0x8900, 0x1e86, 0x2001 },

-  { 0x0500, 0x1e85, 0x0fff },

-  { 0x0500, 0x1e87, 0x0fff },

-  { 0x8900, 0x1e8a, 0x2001 },

-  { 0x0500, 0x1e89, 0x0fff },

-  { 0x0500, 0x1e8b, 0x0fff },

-  { 0x8900, 0x1e90, 0x3001 },

-  { 0x8900, 0x1e8e, 0x2001 },

-  { 0x0500, 0x1e8d, 0x0fff },

-  { 0x0500, 0x1e8f, 0x0fff },

-  { 0x8900, 0x1e92, 0x2001 },

-  { 0x0500, 0x1e91, 0x0fff },

-  { 0x0500, 0x1e93, 0x0fff },

-  { 0x8900, 0x1ea0, 0x4001 },

-  { 0x8500, 0x1e98, 0x3000 },

-  { 0x8500, 0x1e96, 0x2000 },

-  { 0x0500, 0x1e95, 0x0fff },

-  { 0x0500, 0x1e97, 0x0000 },

-  { 0x8500, 0x1e9a, 0x2000 },

-  { 0x0500, 0x1e99, 0x0000 },

-  { 0x0500, 0x1e9b, 0x0fc5 },

-  { 0x8900, 0x1ea4, 0x3001 },

-  { 0x8900, 0x1ea2, 0x2001 },

-  { 0x0500, 0x1ea1, 0x0fff },

-  { 0x0500, 0x1ea3, 0x0fff },

-  { 0x8900, 0x1ea6, 0x2001 },

-  { 0x0500, 0x1ea5, 0x0fff },

-  { 0x0500, 0x1ea7, 0x0fff },

-  { 0x8900, 0x1ee8, 0x7001 },

-  { 0x8900, 0x1ec8, 0x6001 },

-  { 0x8900, 0x1eb8, 0x5001 },

-  { 0x8900, 0x1eb0, 0x4001 },

-  { 0x8900, 0x1eac, 0x3001 },

-  { 0x8900, 0x1eaa, 0x2001 },

-  { 0x0500, 0x1ea9, 0x0fff },

-  { 0x0500, 0x1eab, 0x0fff },

-  { 0x8900, 0x1eae, 0x2001 },

-  { 0x0500, 0x1ead, 0x0fff },

-  { 0x0500, 0x1eaf, 0x0fff },

-  { 0x8900, 0x1eb4, 0x3001 },

-  { 0x8900, 0x1eb2, 0x2001 },

-  { 0x0500, 0x1eb1, 0x0fff },

-  { 0x0500, 0x1eb3, 0x0fff },

-  { 0x8900, 0x1eb6, 0x2001 },

-  { 0x0500, 0x1eb5, 0x0fff },

-  { 0x0500, 0x1eb7, 0x0fff },

-  { 0x8900, 0x1ec0, 0x4001 },

-  { 0x8900, 0x1ebc, 0x3001 },

-  { 0x8900, 0x1eba, 0x2001 },

-  { 0x0500, 0x1eb9, 0x0fff },

-  { 0x0500, 0x1ebb, 0x0fff },

-  { 0x8900, 0x1ebe, 0x2001 },

-  { 0x0500, 0x1ebd, 0x0fff },

-  { 0x0500, 0x1ebf, 0x0fff },

-  { 0x8900, 0x1ec4, 0x3001 },

-  { 0x8900, 0x1ec2, 0x2001 },

-  { 0x0500, 0x1ec1, 0x0fff },

-  { 0x0500, 0x1ec3, 0x0fff },

-  { 0x8900, 0x1ec6, 0x2001 },

-  { 0x0500, 0x1ec5, 0x0fff },

-  { 0x0500, 0x1ec7, 0x0fff },

-  { 0x8900, 0x1ed8, 0x5001 },

-  { 0x8900, 0x1ed0, 0x4001 },

-  { 0x8900, 0x1ecc, 0x3001 },

-  { 0x8900, 0x1eca, 0x2001 },

-  { 0x0500, 0x1ec9, 0x0fff },

-  { 0x0500, 0x1ecb, 0x0fff },

-  { 0x8900, 0x1ece, 0x2001 },

-  { 0x0500, 0x1ecd, 0x0fff },

-  { 0x0500, 0x1ecf, 0x0fff },

-  { 0x8900, 0x1ed4, 0x3001 },

-  { 0x8900, 0x1ed2, 0x2001 },

-  { 0x0500, 0x1ed1, 0x0fff },

-  { 0x0500, 0x1ed3, 0x0fff },

-  { 0x8900, 0x1ed6, 0x2001 },

-  { 0x0500, 0x1ed5, 0x0fff },

-  { 0x0500, 0x1ed7, 0x0fff },

-  { 0x8900, 0x1ee0, 0x4001 },

-  { 0x8900, 0x1edc, 0x3001 },

-  { 0x8900, 0x1eda, 0x2001 },

-  { 0x0500, 0x1ed9, 0x0fff },

-  { 0x0500, 0x1edb, 0x0fff },

-  { 0x8900, 0x1ede, 0x2001 },

-  { 0x0500, 0x1edd, 0x0fff },

-  { 0x0500, 0x1edf, 0x0fff },

-  { 0x8900, 0x1ee4, 0x3001 },

-  { 0x8900, 0x1ee2, 0x2001 },

-  { 0x0500, 0x1ee1, 0x0fff },

-  { 0x0500, 0x1ee3, 0x0fff },

-  { 0x8900, 0x1ee6, 0x2001 },

-  { 0x0500, 0x1ee5, 0x0fff },

-  { 0x0500, 0x1ee7, 0x0fff },

-  { 0x8900, 0x1f0e, 0x6ff8 },

-  { 0x8900, 0x1ef8, 0x5001 },

-  { 0x8900, 0x1ef0, 0x4001 },

-  { 0x8900, 0x1eec, 0x3001 },

-  { 0x8900, 0x1eea, 0x2001 },

-  { 0x0500, 0x1ee9, 0x0fff },

-  { 0x0500, 0x1eeb, 0x0fff },

-  { 0x8900, 0x1eee, 0x2001 },

-  { 0x0500, 0x1eed, 0x0fff },

-  { 0x0500, 0x1eef, 0x0fff },

-  { 0x8900, 0x1ef4, 0x3001 },

-  { 0x8900, 0x1ef2, 0x2001 },

-  { 0x0500, 0x1ef1, 0x0fff },

-  { 0x0500, 0x1ef3, 0x0fff },

-  { 0x8900, 0x1ef6, 0x2001 },

-  { 0x0500, 0x1ef5, 0x0fff },

-  { 0x0500, 0x1ef7, 0x0fff },

-  { 0x8500, 0x1f06, 0x4008 },

-  { 0x8500, 0x1f02, 0x3008 },

-  { 0x8500, 0x1f00, 0x2008 },

-  { 0x0500, 0x1ef9, 0x0fff },

-  { 0x0500, 0x1f01, 0x0008 },

-  { 0x8500, 0x1f04, 0x2008 },

-  { 0x0500, 0x1f03, 0x0008 },

-  { 0x0500, 0x1f05, 0x0008 },

-  { 0x8900, 0x1f0a, 0x3ff8 },

-  { 0x8900, 0x1f08, 0x2ff8 },

-  { 0x0500, 0x1f07, 0x0008 },

-  { 0x0900, 0x1f09, 0x0ff8 },

-  { 0x8900, 0x1f0c, 0x2ff8 },

-  { 0x0900, 0x1f0b, 0x0ff8 },

-  { 0x0900, 0x1f0d, 0x0ff8 },

-  { 0x8500, 0x1f22, 0x5008 },

-  { 0x8900, 0x1f18, 0x4ff8 },

-  { 0x8500, 0x1f12, 0x3008 },

-  { 0x8500, 0x1f10, 0x2008 },

-  { 0x0900, 0x1f0f, 0x0ff8 },

-  { 0x0500, 0x1f11, 0x0008 },

-  { 0x8500, 0x1f14, 0x2008 },

-  { 0x0500, 0x1f13, 0x0008 },

-  { 0x0500, 0x1f15, 0x0008 },

-  { 0x8900, 0x1f1c, 0x3ff8 },

-  { 0x8900, 0x1f1a, 0x2ff8 },

-  { 0x0900, 0x1f19, 0x0ff8 },

-  { 0x0900, 0x1f1b, 0x0ff8 },

-  { 0x8500, 0x1f20, 0x2008 },

-  { 0x0900, 0x1f1d, 0x0ff8 },

-  { 0x0500, 0x1f21, 0x0008 },

-  { 0x8900, 0x1f2a, 0x4ff8 },

-  { 0x8500, 0x1f26, 0x3008 },

-  { 0x8500, 0x1f24, 0x2008 },

-  { 0x0500, 0x1f23, 0x0008 },

-  { 0x0500, 0x1f25, 0x0008 },

-  { 0x8900, 0x1f28, 0x2ff8 },

-  { 0x0500, 0x1f27, 0x0008 },

-  { 0x0900, 0x1f29, 0x0ff8 },

-  { 0x8900, 0x1f2e, 0x3ff8 },

-  { 0x8900, 0x1f2c, 0x2ff8 },

-  { 0x0900, 0x1f2b, 0x0ff8 },

-  { 0x0900, 0x1f2d, 0x0ff8 },

-  { 0x8500, 0x1f30, 0x2008 },

-  { 0x0900, 0x1f2f, 0x0ff8 },

-  { 0x0500, 0x1f31, 0x0008 },

-  { 0x9800, 0x1fbd, 0x8000 },

-  { 0x8500, 0x1f7a, 0x7070 },

-  { 0x8500, 0x1f56, 0x6000 },

-  { 0x8500, 0x1f42, 0x5008 },

-  { 0x8900, 0x1f3a, 0x4ff8 },

-  { 0x8500, 0x1f36, 0x3008 },

-  { 0x8500, 0x1f34, 0x2008 },

-  { 0x0500, 0x1f33, 0x0008 },

-  { 0x0500, 0x1f35, 0x0008 },

-  { 0x8900, 0x1f38, 0x2ff8 },

-  { 0x0500, 0x1f37, 0x0008 },

-  { 0x0900, 0x1f39, 0x0ff8 },

-  { 0x8900, 0x1f3e, 0x3ff8 },

-  { 0x8900, 0x1f3c, 0x2ff8 },

-  { 0x0900, 0x1f3b, 0x0ff8 },

-  { 0x0900, 0x1f3d, 0x0ff8 },

-  { 0x8500, 0x1f40, 0x2008 },

-  { 0x0900, 0x1f3f, 0x0ff8 },

-  { 0x0500, 0x1f41, 0x0008 },

-  { 0x8900, 0x1f4c, 0x4ff8 },

-  { 0x8900, 0x1f48, 0x3ff8 },

-  { 0x8500, 0x1f44, 0x2008 },

-  { 0x0500, 0x1f43, 0x0008 },

-  { 0x0500, 0x1f45, 0x0008 },

-  { 0x8900, 0x1f4a, 0x2ff8 },

-  { 0x0900, 0x1f49, 0x0ff8 },

-  { 0x0900, 0x1f4b, 0x0ff8 },

-  { 0x8500, 0x1f52, 0x3000 },

-  { 0x8500, 0x1f50, 0x2000 },

-  { 0x0900, 0x1f4d, 0x0ff8 },

-  { 0x0500, 0x1f51, 0x0008 },

-  { 0x8500, 0x1f54, 0x2000 },

-  { 0x0500, 0x1f53, 0x0008 },

-  { 0x0500, 0x1f55, 0x0008 },

-  { 0x8900, 0x1f6a, 0x5ff8 },

-  { 0x8500, 0x1f62, 0x4008 },

-  { 0x8900, 0x1f5d, 0x3ff8 },

-  { 0x8900, 0x1f59, 0x2ff8 },

-  { 0x0500, 0x1f57, 0x0008 },

-  { 0x0900, 0x1f5b, 0x0ff8 },

-  { 0x8500, 0x1f60, 0x2008 },

-  { 0x0900, 0x1f5f, 0x0ff8 },

-  { 0x0500, 0x1f61, 0x0008 },

-  { 0x8500, 0x1f66, 0x3008 },

-  { 0x8500, 0x1f64, 0x2008 },

-  { 0x0500, 0x1f63, 0x0008 },

-  { 0x0500, 0x1f65, 0x0008 },

-  { 0x8900, 0x1f68, 0x2ff8 },

-  { 0x0500, 0x1f67, 0x0008 },

-  { 0x0900, 0x1f69, 0x0ff8 },

-  { 0x8500, 0x1f72, 0x4056 },

-  { 0x8900, 0x1f6e, 0x3ff8 },

-  { 0x8900, 0x1f6c, 0x2ff8 },

-  { 0x0900, 0x1f6b, 0x0ff8 },

-  { 0x0900, 0x1f6d, 0x0ff8 },

-  { 0x8500, 0x1f70, 0x204a },

-  { 0x0900, 0x1f6f, 0x0ff8 },

-  { 0x0500, 0x1f71, 0x004a },

-  { 0x8500, 0x1f76, 0x3064 },

-  { 0x8500, 0x1f74, 0x2056 },

-  { 0x0500, 0x1f73, 0x0056 },

-  { 0x0500, 0x1f75, 0x0056 },

-  { 0x8500, 0x1f78, 0x2080 },

-  { 0x0500, 0x1f77, 0x0064 },

-  { 0x0500, 0x1f79, 0x0080 },

-  { 0x8800, 0x1f9c, 0x6000 },

-  { 0x8800, 0x1f8c, 0x5000 },

-  { 0x8500, 0x1f84, 0x4008 },

-  { 0x8500, 0x1f80, 0x3008 },

-  { 0x8500, 0x1f7c, 0x207e },

-  { 0x0500, 0x1f7b, 0x0070 },

-  { 0x0500, 0x1f7d, 0x007e },

-  { 0x8500, 0x1f82, 0x2008 },

-  { 0x0500, 0x1f81, 0x0008 },

-  { 0x0500, 0x1f83, 0x0008 },

-  { 0x8800, 0x1f88, 0x3000 },

-  { 0x8500, 0x1f86, 0x2008 },

-  { 0x0500, 0x1f85, 0x0008 },

-  { 0x0500, 0x1f87, 0x0008 },

-  { 0x8800, 0x1f8a, 0x2000 },

-  { 0x0800, 0x1f89, 0x0000 },

-  { 0x0800, 0x1f8b, 0x0000 },

-  { 0x8500, 0x1f94, 0x4008 },

-  { 0x8500, 0x1f90, 0x3008 },

-  { 0x8800, 0x1f8e, 0x2000 },

-  { 0x0800, 0x1f8d, 0x0000 },

-  { 0x0800, 0x1f8f, 0x0000 },

-  { 0x8500, 0x1f92, 0x2008 },

-  { 0x0500, 0x1f91, 0x0008 },

-  { 0x0500, 0x1f93, 0x0008 },

-  { 0x8800, 0x1f98, 0x3000 },

-  { 0x8500, 0x1f96, 0x2008 },

-  { 0x0500, 0x1f95, 0x0008 },

-  { 0x0500, 0x1f97, 0x0008 },

-  { 0x8800, 0x1f9a, 0x2000 },

-  { 0x0800, 0x1f99, 0x0000 },

-  { 0x0800, 0x1f9b, 0x0000 },

-  { 0x8800, 0x1fac, 0x5000 },

-  { 0x8500, 0x1fa4, 0x4008 },

-  { 0x8500, 0x1fa0, 0x3008 },

-  { 0x8800, 0x1f9e, 0x2000 },

-  { 0x0800, 0x1f9d, 0x0000 },

-  { 0x0800, 0x1f9f, 0x0000 },

-  { 0x8500, 0x1fa2, 0x2008 },

-  { 0x0500, 0x1fa1, 0x0008 },

-  { 0x0500, 0x1fa3, 0x0008 },

-  { 0x8800, 0x1fa8, 0x3000 },

-  { 0x8500, 0x1fa6, 0x2008 },

-  { 0x0500, 0x1fa5, 0x0008 },

-  { 0x0500, 0x1fa7, 0x0008 },

-  { 0x8800, 0x1faa, 0x2000 },

-  { 0x0800, 0x1fa9, 0x0000 },

-  { 0x0800, 0x1fab, 0x0000 },

-  { 0x8500, 0x1fb4, 0x4000 },

-  { 0x8500, 0x1fb0, 0x3008 },

-  { 0x8800, 0x1fae, 0x2000 },

-  { 0x0800, 0x1fad, 0x0000 },

-  { 0x0800, 0x1faf, 0x0000 },

-  { 0x8500, 0x1fb2, 0x2000 },

-  { 0x0500, 0x1fb1, 0x0008 },

-  { 0x0500, 0x1fb3, 0x0009 },

-  { 0x8900, 0x1fb9, 0x3ff8 },

-  { 0x8500, 0x1fb7, 0x2000 },

-  { 0x0500, 0x1fb6, 0x0000 },

-  { 0x0900, 0x1fb8, 0x0ff8 },

-  { 0x8900, 0x1fbb, 0x2fb6 },

-  { 0x0900, 0x1fba, 0x0fb6 },

-  { 0x0800, 0x1fbc, 0x0000 },

-  { 0x9d00, 0x2005, 0x7000 },

-  { 0x8500, 0x1fe1, 0x6008 },

-  { 0x9800, 0x1fce, 0x5000 },

-  { 0x8500, 0x1fc6, 0x4000 },

-  { 0x9800, 0x1fc1, 0x3000 },

-  { 0x9800, 0x1fbf, 0x2000 },

-  { 0x0500, 0x1fbe, 0x0000 },

-  { 0x1800, 0x1fc0, 0x0000 },

-  { 0x8500, 0x1fc3, 0x2009 },

-  { 0x0500, 0x1fc2, 0x0000 },

-  { 0x0500, 0x1fc4, 0x0000 },

-  { 0x8900, 0x1fca, 0x3faa },

-  { 0x8900, 0x1fc8, 0x2faa },

-  { 0x0500, 0x1fc7, 0x0000 },

-  { 0x0900, 0x1fc9, 0x0faa },

-  { 0x8800, 0x1fcc, 0x2000 },

-  { 0x0900, 0x1fcb, 0x0faa },

-  { 0x1800, 0x1fcd, 0x0000 },

-  { 0x8900, 0x1fd8, 0x4ff8 },

-  { 0x8500, 0x1fd2, 0x3000 },

-  { 0x8500, 0x1fd0, 0x2008 },

-  { 0x1800, 0x1fcf, 0x0000 },

-  { 0x0500, 0x1fd1, 0x0008 },

-  { 0x8500, 0x1fd6, 0x2000 },

-  { 0x0500, 0x1fd3, 0x0000 },

-  { 0x0500, 0x1fd7, 0x0000 },

-  { 0x9800, 0x1fdd, 0x3000 },

-  { 0x8900, 0x1fda, 0x2f9c },

-  { 0x0900, 0x1fd9, 0x0ff8 },

-  { 0x0900, 0x1fdb, 0x0f9c },

-  { 0x9800, 0x1fdf, 0x2000 },

-  { 0x1800, 0x1fde, 0x0000 },

-  { 0x0500, 0x1fe0, 0x0008 },

-  { 0x8500, 0x1ff3, 0x5009 },

-  { 0x8900, 0x1fe9, 0x4ff8 },

-  { 0x8500, 0x1fe5, 0x3007 },

-  { 0x8500, 0x1fe3, 0x2000 },

-  { 0x0500, 0x1fe2, 0x0000 },

-  { 0x0500, 0x1fe4, 0x0000 },

-  { 0x8500, 0x1fe7, 0x2000 },

-  { 0x0500, 0x1fe6, 0x0000 },

-  { 0x0900, 0x1fe8, 0x0ff8 },

-  { 0x9800, 0x1fed, 0x3000 },

-  { 0x8900, 0x1feb, 0x2f90 },

-  { 0x0900, 0x1fea, 0x0f90 },

-  { 0x0900, 0x1fec, 0x0ff9 },

-  { 0x9800, 0x1fef, 0x2000 },

-  { 0x1800, 0x1fee, 0x0000 },

-  { 0x0500, 0x1ff2, 0x0000 },

-  { 0x8800, 0x1ffc, 0x4000 },

-  { 0x8900, 0x1ff8, 0x3f80 },

-  { 0x8500, 0x1ff6, 0x2000 },

-  { 0x0500, 0x1ff4, 0x0000 },

-  { 0x0500, 0x1ff7, 0x0000 },

-  { 0x8900, 0x1ffa, 0x2f82 },

-  { 0x0900, 0x1ff9, 0x0f80 },

-  { 0x0900, 0x1ffb, 0x0f82 },

-  { 0x9d00, 0x2001, 0x3000 },

-  { 0x9800, 0x1ffe, 0x2000 },

-  { 0x1800, 0x1ffd, 0x0000 },

-  { 0x1d00, 0x2000, 0x0000 },

-  { 0x9d00, 0x2003, 0x2000 },

-  { 0x1d00, 0x2002, 0x0000 },

-  { 0x1d00, 0x2004, 0x0000 },

-  { 0x9500, 0x2025, 0x6000 },

-  { 0x9100, 0x2015, 0x5000 },

-  { 0x8100, 0x200d, 0x4000 },

-  { 0x9d00, 0x2009, 0x3000 },

-  { 0x9d00, 0x2007, 0x2000 },

-  { 0x1d00, 0x2006, 0x0000 },

-  { 0x1d00, 0x2008, 0x0000 },

-  { 0x9d00, 0x200b, 0x2000 },

-  { 0x1d00, 0x200a, 0x0000 },

-  { 0x0100, 0x200c, 0x0000 },

-  { 0x9100, 0x2011, 0x3000 },

-  { 0x8100, 0x200f, 0x2000 },

-  { 0x0100, 0x200e, 0x0000 },

-  { 0x1100, 0x2010, 0x0000 },

-  { 0x9100, 0x2013, 0x2000 },

-  { 0x1100, 0x2012, 0x0000 },

-  { 0x1100, 0x2014, 0x0000 },

-  { 0x9300, 0x201d, 0x4000 },

-  { 0x9300, 0x2019, 0x3000 },

-  { 0x9500, 0x2017, 0x2000 },

-  { 0x1500, 0x2016, 0x0000 },

-  { 0x1400, 0x2018, 0x0000 },

-  { 0x9400, 0x201b, 0x2000 },

-  { 0x1600, 0x201a, 0x0000 },

-  { 0x1400, 0x201c, 0x0000 },

-  { 0x9500, 0x2021, 0x3000 },

-  { 0x9400, 0x201f, 0x2000 },

-  { 0x1600, 0x201e, 0x0000 },

-  { 0x1500, 0x2020, 0x0000 },

-  { 0x9500, 0x2023, 0x2000 },

-  { 0x1500, 0x2022, 0x0000 },

-  { 0x1500, 0x2024, 0x0000 },

-  { 0x9500, 0x2035, 0x5000 },

-  { 0x8100, 0x202d, 0x4000 },

-  { 0x9c00, 0x2029, 0x3000 },

-  { 0x9500, 0x2027, 0x2000 },

-  { 0x1500, 0x2026, 0x0000 },

-  { 0x1b00, 0x2028, 0x0000 },

-  { 0x8100, 0x202b, 0x2000 },

-  { 0x0100, 0x202a, 0x0000 },

-  { 0x0100, 0x202c, 0x0000 },

-  { 0x9500, 0x2031, 0x3000 },

-  { 0x9d00, 0x202f, 0x2000 },

-  { 0x0100, 0x202e, 0x0000 },

-  { 0x1500, 0x2030, 0x0000 },

-  { 0x9500, 0x2033, 0x2000 },

-  { 0x1500, 0x2032, 0x0000 },

-  { 0x1500, 0x2034, 0x0000 },

-  { 0x9500, 0x203d, 0x4000 },

-  { 0x9400, 0x2039, 0x3000 },

-  { 0x9500, 0x2037, 0x2000 },

-  { 0x1500, 0x2036, 0x0000 },

-  { 0x1500, 0x2038, 0x0000 },

-  { 0x9500, 0x203b, 0x2000 },

-  { 0x1300, 0x203a, 0x0000 },

-  { 0x1500, 0x203c, 0x0000 },

-  { 0x9500, 0x2041, 0x3000 },

-  { 0x9000, 0x203f, 0x2000 },

-  { 0x1500, 0x203e, 0x0000 },

-  { 0x1000, 0x2040, 0x0000 },

-  { 0x9500, 0x2043, 0x2000 },

-  { 0x1500, 0x2042, 0x0000 },

-  { 0x1900, 0x2044, 0x0000 },

-  { 0x9900, 0x21ae, 0x9000 },

-  { 0x8900, 0x211a, 0x8000 },

-  { 0x9700, 0x20a7, 0x7000 },

-  { 0x8f00, 0x2076, 0x6000 },

-  { 0x9500, 0x2057, 0x5000 },

-  { 0x9500, 0x204d, 0x4000 },

-  { 0x9500, 0x2049, 0x3000 },

-  { 0x9500, 0x2047, 0x2000 },

-  { 0x1200, 0x2046, 0x0000 },

-  { 0x1500, 0x2048, 0x0000 },

-  { 0x9500, 0x204b, 0x2000 },

-  { 0x1500, 0x204a, 0x0000 },

-  { 0x1500, 0x204c, 0x0000 },

-  { 0x9500, 0x2051, 0x3000 },

-  { 0x9500, 0x204f, 0x2000 },

-  { 0x1500, 0x204e, 0x0000 },

-  { 0x1500, 0x2050, 0x0000 },

-  { 0x9500, 0x2053, 0x2000 },

-  { 0x1900, 0x2052, 0x0000 },

-  { 0x1000, 0x2054, 0x0000 },

-  { 0x8100, 0x206c, 0x4000 },

-  { 0x8100, 0x2062, 0x3000 },

-  { 0x8100, 0x2060, 0x2000 },

-  { 0x1d00, 0x205f, 0x0000 },

-  { 0x0100, 0x2061, 0x0000 },

-  { 0x8100, 0x206a, 0x2000 },

-  { 0x0100, 0x2063, 0x0000 },

-  { 0x0100, 0x206b, 0x0000 },

-  { 0x8f00, 0x2070, 0x3000 },

-  { 0x8100, 0x206e, 0x2000 },

-  { 0x0100, 0x206d, 0x0000 },

-  { 0x0100, 0x206f, 0x0000 },

-  { 0x8f00, 0x2074, 0x2000 },

-  { 0x0500, 0x2071, 0x0000 },

-  { 0x0f00, 0x2075, 0x0000 },

-  { 0x8f00, 0x2086, 0x5000 },

-  { 0x9200, 0x207e, 0x4000 },

-  { 0x9900, 0x207a, 0x3000 },

-  { 0x8f00, 0x2078, 0x2000 },

-  { 0x0f00, 0x2077, 0x0000 },

-  { 0x0f00, 0x2079, 0x0000 },

-  { 0x9900, 0x207c, 0x2000 },

-  { 0x1900, 0x207b, 0x0000 },

-  { 0x1600, 0x207d, 0x0000 },

-  { 0x8f00, 0x2082, 0x3000 },

-  { 0x8f00, 0x2080, 0x2000 },

-  { 0x0500, 0x207f, 0x0000 },

-  { 0x0f00, 0x2081, 0x0000 },

-  { 0x8f00, 0x2084, 0x2000 },

-  { 0x0f00, 0x2083, 0x0000 },

-  { 0x0f00, 0x2085, 0x0000 },

-  { 0x9200, 0x208e, 0x4000 },

-  { 0x9900, 0x208a, 0x3000 },

-  { 0x8f00, 0x2088, 0x2000 },

-  { 0x0f00, 0x2087, 0x0000 },

-  { 0x0f00, 0x2089, 0x0000 },

-  { 0x9900, 0x208c, 0x2000 },

-  { 0x1900, 0x208b, 0x0000 },

-  { 0x1600, 0x208d, 0x0000 },

-  { 0x9700, 0x20a3, 0x3000 },

-  { 0x9700, 0x20a1, 0x2000 },

-  { 0x1700, 0x20a0, 0x0000 },

-  { 0x1700, 0x20a2, 0x0000 },

-  { 0x9700, 0x20a5, 0x2000 },

-  { 0x1700, 0x20a4, 0x0000 },

-  { 0x1700, 0x20a6, 0x0000 },

-  { 0x8c00, 0x20e5, 0x6000 },

-  { 0x8c00, 0x20d5, 0x5000 },

-  { 0x9700, 0x20af, 0x4000 },

-  { 0x9700, 0x20ab, 0x3000 },

-  { 0x9700, 0x20a9, 0x2000 },

-  { 0x1700, 0x20a8, 0x0000 },

-  { 0x1700, 0x20aa, 0x0000 },

-  { 0x9700, 0x20ad, 0x2000 },

-  { 0x1700, 0x20ac, 0x0000 },

-  { 0x1700, 0x20ae, 0x0000 },

-  { 0x8c00, 0x20d1, 0x3000 },

-  { 0x9700, 0x20b1, 0x2000 },

-  { 0x1700, 0x20b0, 0x0000 },

-  { 0x0c00, 0x20d0, 0x0000 },

-  { 0x8c00, 0x20d3, 0x2000 },

-  { 0x0c00, 0x20d2, 0x0000 },

-  { 0x0c00, 0x20d4, 0x0000 },

-  { 0x8b00, 0x20dd, 0x4000 },

-  { 0x8c00, 0x20d9, 0x3000 },

-  { 0x8c00, 0x20d7, 0x2000 },

-  { 0x0c00, 0x20d6, 0x0000 },

-  { 0x0c00, 0x20d8, 0x0000 },

-  { 0x8c00, 0x20db, 0x2000 },

-  { 0x0c00, 0x20da, 0x0000 },

-  { 0x0c00, 0x20dc, 0x0000 },

-  { 0x8c00, 0x20e1, 0x3000 },

-  { 0x8b00, 0x20df, 0x2000 },

-  { 0x0b00, 0x20de, 0x0000 },

-  { 0x0b00, 0x20e0, 0x0000 },

-  { 0x8b00, 0x20e3, 0x2000 },

-  { 0x0b00, 0x20e2, 0x0000 },

-  { 0x0b00, 0x20e4, 0x0000 },

-  { 0x8500, 0x210a, 0x5000 },

-  { 0x8900, 0x2102, 0x4000 },

-  { 0x8c00, 0x20e9, 0x3000 },

-  { 0x8c00, 0x20e7, 0x2000 },

-  { 0x0c00, 0x20e6, 0x0000 },

-  { 0x0c00, 0x20e8, 0x0000 },

-  { 0x9a00, 0x2100, 0x2000 },

-  { 0x0c00, 0x20ea, 0x0000 },

-  { 0x1a00, 0x2101, 0x0000 },

-  { 0x9a00, 0x2106, 0x3000 },

-  { 0x9a00, 0x2104, 0x2000 },

-  { 0x1a00, 0x2103, 0x0000 },

-  { 0x1a00, 0x2105, 0x0000 },

-  { 0x9a00, 0x2108, 0x2000 },

-  { 0x0900, 0x2107, 0x0000 },

-  { 0x1a00, 0x2109, 0x0000 },

-  { 0x8900, 0x2112, 0x4000 },

-  { 0x8500, 0x210e, 0x3000 },

-  { 0x8900, 0x210c, 0x2000 },

-  { 0x0900, 0x210b, 0x0000 },

-  { 0x0900, 0x210d, 0x0000 },

-  { 0x8900, 0x2110, 0x2000 },

-  { 0x0500, 0x210f, 0x0000 },

-  { 0x0900, 0x2111, 0x0000 },

-  { 0x9a00, 0x2116, 0x3000 },

-  { 0x9a00, 0x2114, 0x2000 },

-  { 0x0500, 0x2113, 0x0000 },

-  { 0x0900, 0x2115, 0x0000 },

-  { 0x9a00, 0x2118, 0x2000 },

-  { 0x1a00, 0x2117, 0x0000 },

-  { 0x0900, 0x2119, 0x0000 },

-  { 0x8e00, 0x2162, 0x7000 },

-  { 0x9a00, 0x213a, 0x6000 },

-  { 0x8900, 0x212a, 0x5000 },

-  { 0x9a00, 0x2122, 0x4000 },

-  { 0x9a00, 0x211e, 0x3000 },

-  { 0x8900, 0x211c, 0x2000 },

-  { 0x0900, 0x211b, 0x0000 },

-  { 0x0900, 0x211d, 0x0000 },

-  { 0x9a00, 0x2120, 0x2000 },

-  { 0x1a00, 0x211f, 0x0000 },

-  { 0x1a00, 0x2121, 0x0000 },

-  { 0x8900, 0x2126, 0x3000 },

-  { 0x8900, 0x2124, 0x2000 },

-  { 0x1a00, 0x2123, 0x0000 },

-  { 0x1a00, 0x2125, 0x0000 },

-  { 0x8900, 0x2128, 0x2000 },

-  { 0x1a00, 0x2127, 0x0000 },

-  { 0x1a00, 0x2129, 0x0000 },

-  { 0x9a00, 0x2132, 0x4000 },

-  { 0x9a00, 0x212e, 0x3000 },

-  { 0x8900, 0x212c, 0x2000 },

-  { 0x0900, 0x212b, 0x0000 },

-  { 0x0900, 0x212d, 0x0000 },

-  { 0x8900, 0x2130, 0x2000 },

-  { 0x0500, 0x212f, 0x0000 },

-  { 0x0900, 0x2131, 0x0000 },

-  { 0x8700, 0x2136, 0x3000 },

-  { 0x8500, 0x2134, 0x2000 },

-  { 0x0900, 0x2133, 0x0000 },

-  { 0x0700, 0x2135, 0x0000 },

-  { 0x8700, 0x2138, 0x2000 },

-  { 0x0700, 0x2137, 0x0000 },

-  { 0x0500, 0x2139, 0x0000 },

-  { 0x9900, 0x214b, 0x5000 },

-  { 0x9900, 0x2143, 0x4000 },

-  { 0x8900, 0x213f, 0x3000 },

-  { 0x8500, 0x213d, 0x2000 },

-  { 0x1a00, 0x213b, 0x0000 },

-  { 0x0900, 0x213e, 0x0000 },

-  { 0x9900, 0x2141, 0x2000 },

-  { 0x1900, 0x2140, 0x0000 },

-  { 0x1900, 0x2142, 0x0000 },

-  { 0x8500, 0x2147, 0x3000 },

-  { 0x8900, 0x2145, 0x2000 },

-  { 0x1900, 0x2144, 0x0000 },

-  { 0x0500, 0x2146, 0x0000 },

-  { 0x8500, 0x2149, 0x2000 },

-  { 0x0500, 0x2148, 0x0000 },

-  { 0x1a00, 0x214a, 0x0000 },

-  { 0x8f00, 0x215a, 0x4000 },

-  { 0x8f00, 0x2156, 0x3000 },

-  { 0x8f00, 0x2154, 0x2000 },

-  { 0x0f00, 0x2153, 0x0000 },

-  { 0x0f00, 0x2155, 0x0000 },

-  { 0x8f00, 0x2158, 0x2000 },

-  { 0x0f00, 0x2157, 0x0000 },

-  { 0x0f00, 0x2159, 0x0000 },

-  { 0x8f00, 0x215e, 0x3000 },

-  { 0x8f00, 0x215c, 0x2000 },

-  { 0x0f00, 0x215b, 0x0000 },

-  { 0x0f00, 0x215d, 0x0000 },

-  { 0x8e00, 0x2160, 0x2000 },

-  { 0x0f00, 0x215f, 0x0000 },

-  { 0x0e00, 0x2161, 0x0000 },

-  { 0x8e00, 0x2182, 0x6000 },

-  { 0x8e00, 0x2172, 0x5000 },

-  { 0x8e00, 0x216a, 0x4000 },

-  { 0x8e00, 0x2166, 0x3000 },

-  { 0x8e00, 0x2164, 0x2000 },

-  { 0x0e00, 0x2163, 0x0000 },

-  { 0x0e00, 0x2165, 0x0000 },

-  { 0x8e00, 0x2168, 0x2000 },

-  { 0x0e00, 0x2167, 0x0000 },

-  { 0x0e00, 0x2169, 0x0000 },

-  { 0x8e00, 0x216e, 0x3000 },

-  { 0x8e00, 0x216c, 0x2000 },

-  { 0x0e00, 0x216b, 0x0000 },

-  { 0x0e00, 0x216d, 0x0000 },

-  { 0x8e00, 0x2170, 0x2000 },

-  { 0x0e00, 0x216f, 0x0000 },

-  { 0x0e00, 0x2171, 0x0000 },

-  { 0x8e00, 0x217a, 0x4000 },

-  { 0x8e00, 0x2176, 0x3000 },

-  { 0x8e00, 0x2174, 0x2000 },

-  { 0x0e00, 0x2173, 0x0000 },

-  { 0x0e00, 0x2175, 0x0000 },

-  { 0x8e00, 0x2178, 0x2000 },

-  { 0x0e00, 0x2177, 0x0000 },

-  { 0x0e00, 0x2179, 0x0000 },

-  { 0x8e00, 0x217e, 0x3000 },

-  { 0x8e00, 0x217c, 0x2000 },

-  { 0x0e00, 0x217b, 0x0000 },

-  { 0x0e00, 0x217d, 0x0000 },

-  { 0x8e00, 0x2180, 0x2000 },

-  { 0x0e00, 0x217f, 0x0000 },

-  { 0x0e00, 0x2181, 0x0000 },

-  { 0x9a00, 0x219e, 0x5000 },

-  { 0x9a00, 0x2196, 0x4000 },

-  { 0x9900, 0x2192, 0x3000 },

-  { 0x9900, 0x2190, 0x2000 },

-  { 0x0e00, 0x2183, 0x0000 },

-  { 0x1900, 0x2191, 0x0000 },

-  { 0x9900, 0x2194, 0x2000 },

-  { 0x1900, 0x2193, 0x0000 },

-  { 0x1a00, 0x2195, 0x0000 },

-  { 0x9900, 0x219a, 0x3000 },

-  { 0x9a00, 0x2198, 0x2000 },

-  { 0x1a00, 0x2197, 0x0000 },

-  { 0x1a00, 0x2199, 0x0000 },

-  { 0x9a00, 0x219c, 0x2000 },

-  { 0x1900, 0x219b, 0x0000 },

-  { 0x1a00, 0x219d, 0x0000 },

-  { 0x9900, 0x21a6, 0x4000 },

-  { 0x9a00, 0x21a2, 0x3000 },

-  { 0x9900, 0x21a0, 0x2000 },

-  { 0x1a00, 0x219f, 0x0000 },

-  { 0x1a00, 0x21a1, 0x0000 },

-  { 0x9a00, 0x21a4, 0x2000 },

-  { 0x1900, 0x21a3, 0x0000 },

-  { 0x1a00, 0x21a5, 0x0000 },

-  { 0x9a00, 0x21aa, 0x3000 },

-  { 0x9a00, 0x21a8, 0x2000 },

-  { 0x1a00, 0x21a7, 0x0000 },

-  { 0x1a00, 0x21a9, 0x0000 },

-  { 0x9a00, 0x21ac, 0x2000 },

-  { 0x1a00, 0x21ab, 0x0000 },

-  { 0x1a00, 0x21ad, 0x0000 },

-  { 0x9900, 0x222e, 0x8000 },

-  { 0x9a00, 0x21ee, 0x7000 },

-  { 0x9900, 0x21ce, 0x6000 },

-  { 0x9a00, 0x21be, 0x5000 },

-  { 0x9a00, 0x21b6, 0x4000 },

-  { 0x9a00, 0x21b2, 0x3000 },

-  { 0x9a00, 0x21b0, 0x2000 },

-  { 0x1a00, 0x21af, 0x0000 },

-  { 0x1a00, 0x21b1, 0x0000 },

-  { 0x9a00, 0x21b4, 0x2000 },

-  { 0x1a00, 0x21b3, 0x0000 },

-  { 0x1a00, 0x21b5, 0x0000 },

-  { 0x9a00, 0x21ba, 0x3000 },

-  { 0x9a00, 0x21b8, 0x2000 },

-  { 0x1a00, 0x21b7, 0x0000 },

-  { 0x1a00, 0x21b9, 0x0000 },

-  { 0x9a00, 0x21bc, 0x2000 },

-  { 0x1a00, 0x21bb, 0x0000 },

-  { 0x1a00, 0x21bd, 0x0000 },

-  { 0x9a00, 0x21c6, 0x4000 },

-  { 0x9a00, 0x21c2, 0x3000 },

-  { 0x9a00, 0x21c0, 0x2000 },

-  { 0x1a00, 0x21bf, 0x0000 },

-  { 0x1a00, 0x21c1, 0x0000 },

-  { 0x9a00, 0x21c4, 0x2000 },

-  { 0x1a00, 0x21c3, 0x0000 },

-  { 0x1a00, 0x21c5, 0x0000 },

-  { 0x9a00, 0x21ca, 0x3000 },

-  { 0x9a00, 0x21c8, 0x2000 },

-  { 0x1a00, 0x21c7, 0x0000 },

-  { 0x1a00, 0x21c9, 0x0000 },

-  { 0x9a00, 0x21cc, 0x2000 },

-  { 0x1a00, 0x21cb, 0x0000 },

-  { 0x1a00, 0x21cd, 0x0000 },

-  { 0x9a00, 0x21de, 0x5000 },

-  { 0x9a00, 0x21d6, 0x4000 },

-  { 0x9900, 0x21d2, 0x3000 },

-  { 0x9a00, 0x21d0, 0x2000 },

-  { 0x1900, 0x21cf, 0x0000 },

-  { 0x1a00, 0x21d1, 0x0000 },

-  { 0x9900, 0x21d4, 0x2000 },

-  { 0x1a00, 0x21d3, 0x0000 },

-  { 0x1a00, 0x21d5, 0x0000 },

-  { 0x9a00, 0x21da, 0x3000 },

-  { 0x9a00, 0x21d8, 0x2000 },

-  { 0x1a00, 0x21d7, 0x0000 },

-  { 0x1a00, 0x21d9, 0x0000 },

-  { 0x9a00, 0x21dc, 0x2000 },

-  { 0x1a00, 0x21db, 0x0000 },

-  { 0x1a00, 0x21dd, 0x0000 },

-  { 0x9a00, 0x21e6, 0x4000 },

-  { 0x9a00, 0x21e2, 0x3000 },

-  { 0x9a00, 0x21e0, 0x2000 },

-  { 0x1a00, 0x21df, 0x0000 },

-  { 0x1a00, 0x21e1, 0x0000 },

-  { 0x9a00, 0x21e4, 0x2000 },

-  { 0x1a00, 0x21e3, 0x0000 },

-  { 0x1a00, 0x21e5, 0x0000 },

-  { 0x9a00, 0x21ea, 0x3000 },

-  { 0x9a00, 0x21e8, 0x2000 },

-  { 0x1a00, 0x21e7, 0x0000 },

-  { 0x1a00, 0x21e9, 0x0000 },

-  { 0x9a00, 0x21ec, 0x2000 },

-  { 0x1a00, 0x21eb, 0x0000 },

-  { 0x1a00, 0x21ed, 0x0000 },

-  { 0x9900, 0x220e, 0x6000 },

-  { 0x9900, 0x21fe, 0x5000 },

-  { 0x9900, 0x21f6, 0x4000 },

-  { 0x9a00, 0x21f2, 0x3000 },

-  { 0x9a00, 0x21f0, 0x2000 },

-  { 0x1a00, 0x21ef, 0x0000 },

-  { 0x1a00, 0x21f1, 0x0000 },

-  { 0x9900, 0x21f4, 0x2000 },

-  { 0x1a00, 0x21f3, 0x0000 },

-  { 0x1900, 0x21f5, 0x0000 },

-  { 0x9900, 0x21fa, 0x3000 },

-  { 0x9900, 0x21f8, 0x2000 },

-  { 0x1900, 0x21f7, 0x0000 },

-  { 0x1900, 0x21f9, 0x0000 },

-  { 0x9900, 0x21fc, 0x2000 },

-  { 0x1900, 0x21fb, 0x0000 },

-  { 0x1900, 0x21fd, 0x0000 },

-  { 0x9900, 0x2206, 0x4000 },

-  { 0x9900, 0x2202, 0x3000 },

-  { 0x9900, 0x2200, 0x2000 },

-  { 0x1900, 0x21ff, 0x0000 },

-  { 0x1900, 0x2201, 0x0000 },

-  { 0x9900, 0x2204, 0x2000 },

-  { 0x1900, 0x2203, 0x0000 },

-  { 0x1900, 0x2205, 0x0000 },

-  { 0x9900, 0x220a, 0x3000 },

-  { 0x9900, 0x2208, 0x2000 },

-  { 0x1900, 0x2207, 0x0000 },

-  { 0x1900, 0x2209, 0x0000 },

-  { 0x9900, 0x220c, 0x2000 },

-  { 0x1900, 0x220b, 0x0000 },

-  { 0x1900, 0x220d, 0x0000 },

-  { 0x9900, 0x221e, 0x5000 },

-  { 0x9900, 0x2216, 0x4000 },

-  { 0x9900, 0x2212, 0x3000 },

-  { 0x9900, 0x2210, 0x2000 },

-  { 0x1900, 0x220f, 0x0000 },

-  { 0x1900, 0x2211, 0x0000 },

-  { 0x9900, 0x2214, 0x2000 },

-  { 0x1900, 0x2213, 0x0000 },

-  { 0x1900, 0x2215, 0x0000 },

-  { 0x9900, 0x221a, 0x3000 },

-  { 0x9900, 0x2218, 0x2000 },

-  { 0x1900, 0x2217, 0x0000 },

-  { 0x1900, 0x2219, 0x0000 },

-  { 0x9900, 0x221c, 0x2000 },

-  { 0x1900, 0x221b, 0x0000 },

-  { 0x1900, 0x221d, 0x0000 },

-  { 0x9900, 0x2226, 0x4000 },

-  { 0x9900, 0x2222, 0x3000 },

-  { 0x9900, 0x2220, 0x2000 },

-  { 0x1900, 0x221f, 0x0000 },

-  { 0x1900, 0x2221, 0x0000 },

-  { 0x9900, 0x2224, 0x2000 },

-  { 0x1900, 0x2223, 0x0000 },

-  { 0x1900, 0x2225, 0x0000 },

-  { 0x9900, 0x222a, 0x3000 },

-  { 0x9900, 0x2228, 0x2000 },

-  { 0x1900, 0x2227, 0x0000 },

-  { 0x1900, 0x2229, 0x0000 },

-  { 0x9900, 0x222c, 0x2000 },

-  { 0x1900, 0x222b, 0x0000 },

-  { 0x1900, 0x222d, 0x0000 },

-  { 0x9900, 0x226e, 0x7000 },

-  { 0x9900, 0x224e, 0x6000 },

-  { 0x9900, 0x223e, 0x5000 },

-  { 0x9900, 0x2236, 0x4000 },

-  { 0x9900, 0x2232, 0x3000 },

-  { 0x9900, 0x2230, 0x2000 },

-  { 0x1900, 0x222f, 0x0000 },

-  { 0x1900, 0x2231, 0x0000 },

-  { 0x9900, 0x2234, 0x2000 },

-  { 0x1900, 0x2233, 0x0000 },

-  { 0x1900, 0x2235, 0x0000 },

-  { 0x9900, 0x223a, 0x3000 },

-  { 0x9900, 0x2238, 0x2000 },

-  { 0x1900, 0x2237, 0x0000 },

-  { 0x1900, 0x2239, 0x0000 },

-  { 0x9900, 0x223c, 0x2000 },

-  { 0x1900, 0x223b, 0x0000 },

-  { 0x1900, 0x223d, 0x0000 },

-  { 0x9900, 0x2246, 0x4000 },

-  { 0x9900, 0x2242, 0x3000 },

-  { 0x9900, 0x2240, 0x2000 },

-  { 0x1900, 0x223f, 0x0000 },

-  { 0x1900, 0x2241, 0x0000 },

-  { 0x9900, 0x2244, 0x2000 },

-  { 0x1900, 0x2243, 0x0000 },

-  { 0x1900, 0x2245, 0x0000 },

-  { 0x9900, 0x224a, 0x3000 },

-  { 0x9900, 0x2248, 0x2000 },

-  { 0x1900, 0x2247, 0x0000 },

-  { 0x1900, 0x2249, 0x0000 },

-  { 0x9900, 0x224c, 0x2000 },

-  { 0x1900, 0x224b, 0x0000 },

-  { 0x1900, 0x224d, 0x0000 },

-  { 0x9900, 0x225e, 0x5000 },

-  { 0x9900, 0x2256, 0x4000 },

-  { 0x9900, 0x2252, 0x3000 },

-  { 0x9900, 0x2250, 0x2000 },

-  { 0x1900, 0x224f, 0x0000 },

-  { 0x1900, 0x2251, 0x0000 },

-  { 0x9900, 0x2254, 0x2000 },

-  { 0x1900, 0x2253, 0x0000 },

-  { 0x1900, 0x2255, 0x0000 },

-  { 0x9900, 0x225a, 0x3000 },

-  { 0x9900, 0x2258, 0x2000 },

-  { 0x1900, 0x2257, 0x0000 },

-  { 0x1900, 0x2259, 0x0000 },

-  { 0x9900, 0x225c, 0x2000 },

-  { 0x1900, 0x225b, 0x0000 },

-  { 0x1900, 0x225d, 0x0000 },

-  { 0x9900, 0x2266, 0x4000 },

-  { 0x9900, 0x2262, 0x3000 },

-  { 0x9900, 0x2260, 0x2000 },

-  { 0x1900, 0x225f, 0x0000 },

-  { 0x1900, 0x2261, 0x0000 },

-  { 0x9900, 0x2264, 0x2000 },

-  { 0x1900, 0x2263, 0x0000 },

-  { 0x1900, 0x2265, 0x0000 },

-  { 0x9900, 0x226a, 0x3000 },

-  { 0x9900, 0x2268, 0x2000 },

-  { 0x1900, 0x2267, 0x0000 },

-  { 0x1900, 0x2269, 0x0000 },

-  { 0x9900, 0x226c, 0x2000 },

-  { 0x1900, 0x226b, 0x0000 },

-  { 0x1900, 0x226d, 0x0000 },

-  { 0x9900, 0x228e, 0x6000 },

-  { 0x9900, 0x227e, 0x5000 },

-  { 0x9900, 0x2276, 0x4000 },

-  { 0x9900, 0x2272, 0x3000 },

-  { 0x9900, 0x2270, 0x2000 },

-  { 0x1900, 0x226f, 0x0000 },

-  { 0x1900, 0x2271, 0x0000 },

-  { 0x9900, 0x2274, 0x2000 },

-  { 0x1900, 0x2273, 0x0000 },

-  { 0x1900, 0x2275, 0x0000 },

-  { 0x9900, 0x227a, 0x3000 },

-  { 0x9900, 0x2278, 0x2000 },

-  { 0x1900, 0x2277, 0x0000 },

-  { 0x1900, 0x2279, 0x0000 },

-  { 0x9900, 0x227c, 0x2000 },

-  { 0x1900, 0x227b, 0x0000 },

-  { 0x1900, 0x227d, 0x0000 },

-  { 0x9900, 0x2286, 0x4000 },

-  { 0x9900, 0x2282, 0x3000 },

-  { 0x9900, 0x2280, 0x2000 },

-  { 0x1900, 0x227f, 0x0000 },

-  { 0x1900, 0x2281, 0x0000 },

-  { 0x9900, 0x2284, 0x2000 },

-  { 0x1900, 0x2283, 0x0000 },

-  { 0x1900, 0x2285, 0x0000 },

-  { 0x9900, 0x228a, 0x3000 },

-  { 0x9900, 0x2288, 0x2000 },

-  { 0x1900, 0x2287, 0x0000 },

-  { 0x1900, 0x2289, 0x0000 },

-  { 0x9900, 0x228c, 0x2000 },

-  { 0x1900, 0x228b, 0x0000 },

-  { 0x1900, 0x228d, 0x0000 },

-  { 0x9900, 0x229e, 0x5000 },

-  { 0x9900, 0x2296, 0x4000 },

-  { 0x9900, 0x2292, 0x3000 },

-  { 0x9900, 0x2290, 0x2000 },

-  { 0x1900, 0x228f, 0x0000 },

-  { 0x1900, 0x2291, 0x0000 },

-  { 0x9900, 0x2294, 0x2000 },

-  { 0x1900, 0x2293, 0x0000 },

-  { 0x1900, 0x2295, 0x0000 },

-  { 0x9900, 0x229a, 0x3000 },

-  { 0x9900, 0x2298, 0x2000 },

-  { 0x1900, 0x2297, 0x0000 },

-  { 0x1900, 0x2299, 0x0000 },

-  { 0x9900, 0x229c, 0x2000 },

-  { 0x1900, 0x229b, 0x0000 },

-  { 0x1900, 0x229d, 0x0000 },

-  { 0x9900, 0x22a6, 0x4000 },

-  { 0x9900, 0x22a2, 0x3000 },

-  { 0x9900, 0x22a0, 0x2000 },

-  { 0x1900, 0x229f, 0x0000 },

-  { 0x1900, 0x22a1, 0x0000 },

-  { 0x9900, 0x22a4, 0x2000 },

-  { 0x1900, 0x22a3, 0x0000 },

-  { 0x1900, 0x22a5, 0x0000 },

-  { 0x9900, 0x22aa, 0x3000 },

-  { 0x9900, 0x22a8, 0x2000 },

-  { 0x1900, 0x22a7, 0x0000 },

-  { 0x1900, 0x22a9, 0x0000 },

-  { 0x9900, 0x22ac, 0x2000 },

-  { 0x1900, 0x22ab, 0x0000 },

-  { 0x1900, 0x22ad, 0x0000 },

-  { 0x8f00, 0x2787, 0xb000 },

-  { 0x9a00, 0x250b, 0xa000 },

-  { 0x9900, 0x23ae, 0x9000 },

-  { 0x9a00, 0x232e, 0x8000 },

-  { 0x9900, 0x22ee, 0x7000 },

-  { 0x9900, 0x22ce, 0x6000 },

-  { 0x9900, 0x22be, 0x5000 },

-  { 0x9900, 0x22b6, 0x4000 },

-  { 0x9900, 0x22b2, 0x3000 },

-  { 0x9900, 0x22b0, 0x2000 },

-  { 0x1900, 0x22af, 0x0000 },

-  { 0x1900, 0x22b1, 0x0000 },

-  { 0x9900, 0x22b4, 0x2000 },

-  { 0x1900, 0x22b3, 0x0000 },

-  { 0x1900, 0x22b5, 0x0000 },

-  { 0x9900, 0x22ba, 0x3000 },

-  { 0x9900, 0x22b8, 0x2000 },

-  { 0x1900, 0x22b7, 0x0000 },

-  { 0x1900, 0x22b9, 0x0000 },

-  { 0x9900, 0x22bc, 0x2000 },

-  { 0x1900, 0x22bb, 0x0000 },

-  { 0x1900, 0x22bd, 0x0000 },

-  { 0x9900, 0x22c6, 0x4000 },

-  { 0x9900, 0x22c2, 0x3000 },

-  { 0x9900, 0x22c0, 0x2000 },

-  { 0x1900, 0x22bf, 0x0000 },

-  { 0x1900, 0x22c1, 0x0000 },

-  { 0x9900, 0x22c4, 0x2000 },

-  { 0x1900, 0x22c3, 0x0000 },

-  { 0x1900, 0x22c5, 0x0000 },

-  { 0x9900, 0x22ca, 0x3000 },

-  { 0x9900, 0x22c8, 0x2000 },

-  { 0x1900, 0x22c7, 0x0000 },

-  { 0x1900, 0x22c9, 0x0000 },

-  { 0x9900, 0x22cc, 0x2000 },

-  { 0x1900, 0x22cb, 0x0000 },

-  { 0x1900, 0x22cd, 0x0000 },

-  { 0x9900, 0x22de, 0x5000 },

-  { 0x9900, 0x22d6, 0x4000 },

-  { 0x9900, 0x22d2, 0x3000 },

-  { 0x9900, 0x22d0, 0x2000 },

-  { 0x1900, 0x22cf, 0x0000 },

-  { 0x1900, 0x22d1, 0x0000 },

-  { 0x9900, 0x22d4, 0x2000 },

-  { 0x1900, 0x22d3, 0x0000 },

-  { 0x1900, 0x22d5, 0x0000 },

-  { 0x9900, 0x22da, 0x3000 },

-  { 0x9900, 0x22d8, 0x2000 },

-  { 0x1900, 0x22d7, 0x0000 },

-  { 0x1900, 0x22d9, 0x0000 },

-  { 0x9900, 0x22dc, 0x2000 },

-  { 0x1900, 0x22db, 0x0000 },

-  { 0x1900, 0x22dd, 0x0000 },

-  { 0x9900, 0x22e6, 0x4000 },

-  { 0x9900, 0x22e2, 0x3000 },

-  { 0x9900, 0x22e0, 0x2000 },

-  { 0x1900, 0x22df, 0x0000 },

-  { 0x1900, 0x22e1, 0x0000 },

-  { 0x9900, 0x22e4, 0x2000 },

-  { 0x1900, 0x22e3, 0x0000 },

-  { 0x1900, 0x22e5, 0x0000 },

-  { 0x9900, 0x22ea, 0x3000 },

-  { 0x9900, 0x22e8, 0x2000 },

-  { 0x1900, 0x22e7, 0x0000 },

-  { 0x1900, 0x22e9, 0x0000 },

-  { 0x9900, 0x22ec, 0x2000 },

-  { 0x1900, 0x22eb, 0x0000 },

-  { 0x1900, 0x22ed, 0x0000 },

-  { 0x9a00, 0x230e, 0x6000 },

-  { 0x9900, 0x22fe, 0x5000 },

-  { 0x9900, 0x22f6, 0x4000 },

-  { 0x9900, 0x22f2, 0x3000 },

-  { 0x9900, 0x22f0, 0x2000 },

-  { 0x1900, 0x22ef, 0x0000 },

-  { 0x1900, 0x22f1, 0x0000 },

-  { 0x9900, 0x22f4, 0x2000 },

-  { 0x1900, 0x22f3, 0x0000 },

-  { 0x1900, 0x22f5, 0x0000 },

-  { 0x9900, 0x22fa, 0x3000 },

-  { 0x9900, 0x22f8, 0x2000 },

-  { 0x1900, 0x22f7, 0x0000 },

-  { 0x1900, 0x22f9, 0x0000 },

-  { 0x9900, 0x22fc, 0x2000 },

-  { 0x1900, 0x22fb, 0x0000 },

-  { 0x1900, 0x22fd, 0x0000 },

-  { 0x9a00, 0x2306, 0x4000 },

-  { 0x9a00, 0x2302, 0x3000 },

-  { 0x9a00, 0x2300, 0x2000 },

-  { 0x1900, 0x22ff, 0x0000 },

-  { 0x1a00, 0x2301, 0x0000 },

-  { 0x9a00, 0x2304, 0x2000 },

-  { 0x1a00, 0x2303, 0x0000 },

-  { 0x1a00, 0x2305, 0x0000 },

-  { 0x9900, 0x230a, 0x3000 },

-  { 0x9900, 0x2308, 0x2000 },

-  { 0x1a00, 0x2307, 0x0000 },

-  { 0x1900, 0x2309, 0x0000 },

-  { 0x9a00, 0x230c, 0x2000 },

-  { 0x1900, 0x230b, 0x0000 },

-  { 0x1a00, 0x230d, 0x0000 },

-  { 0x9a00, 0x231e, 0x5000 },

-  { 0x9a00, 0x2316, 0x4000 },

-  { 0x9a00, 0x2312, 0x3000 },

-  { 0x9a00, 0x2310, 0x2000 },

-  { 0x1a00, 0x230f, 0x0000 },

-  { 0x1a00, 0x2311, 0x0000 },

-  { 0x9a00, 0x2314, 0x2000 },

-  { 0x1a00, 0x2313, 0x0000 },

-  { 0x1a00, 0x2315, 0x0000 },

-  { 0x9a00, 0x231a, 0x3000 },

-  { 0x9a00, 0x2318, 0x2000 },

-  { 0x1a00, 0x2317, 0x0000 },

-  { 0x1a00, 0x2319, 0x0000 },

-  { 0x9a00, 0x231c, 0x2000 },

-  { 0x1a00, 0x231b, 0x0000 },

-  { 0x1a00, 0x231d, 0x0000 },

-  { 0x9a00, 0x2326, 0x4000 },

-  { 0x9a00, 0x2322, 0x3000 },

-  { 0x9900, 0x2320, 0x2000 },

-  { 0x1a00, 0x231f, 0x0000 },

-  { 0x1900, 0x2321, 0x0000 },

-  { 0x9a00, 0x2324, 0x2000 },

-  { 0x1a00, 0x2323, 0x0000 },

-  { 0x1a00, 0x2325, 0x0000 },

-  { 0x9200, 0x232a, 0x3000 },

-  { 0x9a00, 0x2328, 0x2000 },

-  { 0x1a00, 0x2327, 0x0000 },

-  { 0x1600, 0x2329, 0x0000 },

-  { 0x9a00, 0x232c, 0x2000 },

-  { 0x1a00, 0x232b, 0x0000 },

-  { 0x1a00, 0x232d, 0x0000 },

-  { 0x9a00, 0x236e, 0x7000 },

-  { 0x9a00, 0x234e, 0x6000 },

-  { 0x9a00, 0x233e, 0x5000 },

-  { 0x9a00, 0x2336, 0x4000 },

-  { 0x9a00, 0x2332, 0x3000 },

-  { 0x9a00, 0x2330, 0x2000 },

-  { 0x1a00, 0x232f, 0x0000 },

-  { 0x1a00, 0x2331, 0x0000 },

-  { 0x9a00, 0x2334, 0x2000 },

-  { 0x1a00, 0x2333, 0x0000 },

-  { 0x1a00, 0x2335, 0x0000 },

-  { 0x9a00, 0x233a, 0x3000 },

-  { 0x9a00, 0x2338, 0x2000 },

-  { 0x1a00, 0x2337, 0x0000 },

-  { 0x1a00, 0x2339, 0x0000 },

-  { 0x9a00, 0x233c, 0x2000 },

-  { 0x1a00, 0x233b, 0x0000 },

-  { 0x1a00, 0x233d, 0x0000 },

-  { 0x9a00, 0x2346, 0x4000 },

-  { 0x9a00, 0x2342, 0x3000 },

-  { 0x9a00, 0x2340, 0x2000 },

-  { 0x1a00, 0x233f, 0x0000 },

-  { 0x1a00, 0x2341, 0x0000 },

-  { 0x9a00, 0x2344, 0x2000 },

-  { 0x1a00, 0x2343, 0x0000 },

-  { 0x1a00, 0x2345, 0x0000 },

-  { 0x9a00, 0x234a, 0x3000 },

-  { 0x9a00, 0x2348, 0x2000 },

-  { 0x1a00, 0x2347, 0x0000 },

-  { 0x1a00, 0x2349, 0x0000 },

-  { 0x9a00, 0x234c, 0x2000 },

-  { 0x1a00, 0x234b, 0x0000 },

-  { 0x1a00, 0x234d, 0x0000 },

-  { 0x9a00, 0x235e, 0x5000 },

-  { 0x9a00, 0x2356, 0x4000 },

-  { 0x9a00, 0x2352, 0x3000 },

-  { 0x9a00, 0x2350, 0x2000 },

-  { 0x1a00, 0x234f, 0x0000 },

-  { 0x1a00, 0x2351, 0x0000 },

-  { 0x9a00, 0x2354, 0x2000 },

-  { 0x1a00, 0x2353, 0x0000 },

-  { 0x1a00, 0x2355, 0x0000 },

-  { 0x9a00, 0x235a, 0x3000 },

-  { 0x9a00, 0x2358, 0x2000 },

-  { 0x1a00, 0x2357, 0x0000 },

-  { 0x1a00, 0x2359, 0x0000 },

-  { 0x9a00, 0x235c, 0x2000 },

-  { 0x1a00, 0x235b, 0x0000 },

-  { 0x1a00, 0x235d, 0x0000 },

-  { 0x9a00, 0x2366, 0x4000 },

-  { 0x9a00, 0x2362, 0x3000 },

-  { 0x9a00, 0x2360, 0x2000 },

-  { 0x1a00, 0x235f, 0x0000 },

-  { 0x1a00, 0x2361, 0x0000 },

-  { 0x9a00, 0x2364, 0x2000 },

-  { 0x1a00, 0x2363, 0x0000 },

-  { 0x1a00, 0x2365, 0x0000 },

-  { 0x9a00, 0x236a, 0x3000 },

-  { 0x9a00, 0x2368, 0x2000 },

-  { 0x1a00, 0x2367, 0x0000 },

-  { 0x1a00, 0x2369, 0x0000 },

-  { 0x9a00, 0x236c, 0x2000 },

-  { 0x1a00, 0x236b, 0x0000 },

-  { 0x1a00, 0x236d, 0x0000 },

-  { 0x9a00, 0x238e, 0x6000 },

-  { 0x9a00, 0x237e, 0x5000 },

-  { 0x9a00, 0x2376, 0x4000 },

-  { 0x9a00, 0x2372, 0x3000 },

-  { 0x9a00, 0x2370, 0x2000 },

-  { 0x1a00, 0x236f, 0x0000 },

-  { 0x1a00, 0x2371, 0x0000 },

-  { 0x9a00, 0x2374, 0x2000 },

-  { 0x1a00, 0x2373, 0x0000 },

-  { 0x1a00, 0x2375, 0x0000 },

-  { 0x9a00, 0x237a, 0x3000 },

-  { 0x9a00, 0x2378, 0x2000 },

-  { 0x1a00, 0x2377, 0x0000 },

-  { 0x1a00, 0x2379, 0x0000 },

-  { 0x9900, 0x237c, 0x2000 },

-  { 0x1a00, 0x237b, 0x0000 },

-  { 0x1a00, 0x237d, 0x0000 },

-  { 0x9a00, 0x2386, 0x4000 },

-  { 0x9a00, 0x2382, 0x3000 },

-  { 0x9a00, 0x2380, 0x2000 },

-  { 0x1a00, 0x237f, 0x0000 },

-  { 0x1a00, 0x2381, 0x0000 },

-  { 0x9a00, 0x2384, 0x2000 },

-  { 0x1a00, 0x2383, 0x0000 },

-  { 0x1a00, 0x2385, 0x0000 },

-  { 0x9a00, 0x238a, 0x3000 },

-  { 0x9a00, 0x2388, 0x2000 },

-  { 0x1a00, 0x2387, 0x0000 },

-  { 0x1a00, 0x2389, 0x0000 },

-  { 0x9a00, 0x238c, 0x2000 },

-  { 0x1a00, 0x238b, 0x0000 },

-  { 0x1a00, 0x238d, 0x0000 },

-  { 0x9900, 0x239e, 0x5000 },

-  { 0x9a00, 0x2396, 0x4000 },

-  { 0x9a00, 0x2392, 0x3000 },

-  { 0x9a00, 0x2390, 0x2000 },

-  { 0x1a00, 0x238f, 0x0000 },

-  { 0x1a00, 0x2391, 0x0000 },

-  { 0x9a00, 0x2394, 0x2000 },

-  { 0x1a00, 0x2393, 0x0000 },

-  { 0x1a00, 0x2395, 0x0000 },

-  { 0x9a00, 0x239a, 0x3000 },

-  { 0x9a00, 0x2398, 0x2000 },

-  { 0x1a00, 0x2397, 0x0000 },

-  { 0x1a00, 0x2399, 0x0000 },

-  { 0x9900, 0x239c, 0x2000 },

-  { 0x1900, 0x239b, 0x0000 },

-  { 0x1900, 0x239d, 0x0000 },

-  { 0x9900, 0x23a6, 0x4000 },

-  { 0x9900, 0x23a2, 0x3000 },

-  { 0x9900, 0x23a0, 0x2000 },

-  { 0x1900, 0x239f, 0x0000 },

-  { 0x1900, 0x23a1, 0x0000 },

-  { 0x9900, 0x23a4, 0x2000 },

-  { 0x1900, 0x23a3, 0x0000 },

-  { 0x1900, 0x23a5, 0x0000 },

-  { 0x9900, 0x23aa, 0x3000 },

-  { 0x9900, 0x23a8, 0x2000 },

-  { 0x1900, 0x23a7, 0x0000 },

-  { 0x1900, 0x23a9, 0x0000 },

-  { 0x9900, 0x23ac, 0x2000 },

-  { 0x1900, 0x23ab, 0x0000 },

-  { 0x1900, 0x23ad, 0x0000 },

-  { 0x8f00, 0x248b, 0x8000 },

-  { 0x9a00, 0x241d, 0x7000 },

-  { 0x9a00, 0x23ce, 0x6000 },

-  { 0x9a00, 0x23be, 0x5000 },

-  { 0x9500, 0x23b6, 0x4000 },

-  { 0x9900, 0x23b2, 0x3000 },

-  { 0x9900, 0x23b0, 0x2000 },

-  { 0x1900, 0x23af, 0x0000 },

-  { 0x1900, 0x23b1, 0x0000 },

-  { 0x9600, 0x23b4, 0x2000 },

-  { 0x1900, 0x23b3, 0x0000 },

-  { 0x1200, 0x23b5, 0x0000 },

-  { 0x9a00, 0x23ba, 0x3000 },

-  { 0x9a00, 0x23b8, 0x2000 },

-  { 0x1a00, 0x23b7, 0x0000 },

-  { 0x1a00, 0x23b9, 0x0000 },

-  { 0x9a00, 0x23bc, 0x2000 },

-  { 0x1a00, 0x23bb, 0x0000 },

-  { 0x1a00, 0x23bd, 0x0000 },

-  { 0x9a00, 0x23c6, 0x4000 },

-  { 0x9a00, 0x23c2, 0x3000 },

-  { 0x9a00, 0x23c0, 0x2000 },

-  { 0x1a00, 0x23bf, 0x0000 },

-  { 0x1a00, 0x23c1, 0x0000 },

-  { 0x9a00, 0x23c4, 0x2000 },

-  { 0x1a00, 0x23c3, 0x0000 },

-  { 0x1a00, 0x23c5, 0x0000 },

-  { 0x9a00, 0x23ca, 0x3000 },

-  { 0x9a00, 0x23c8, 0x2000 },

-  { 0x1a00, 0x23c7, 0x0000 },

-  { 0x1a00, 0x23c9, 0x0000 },

-  { 0x9a00, 0x23cc, 0x2000 },

-  { 0x1a00, 0x23cb, 0x0000 },

-  { 0x1a00, 0x23cd, 0x0000 },

-  { 0x9a00, 0x240d, 0x5000 },

-  { 0x9a00, 0x2405, 0x4000 },

-  { 0x9a00, 0x2401, 0x3000 },

-  { 0x9a00, 0x23d0, 0x2000 },

-  { 0x1a00, 0x23cf, 0x0000 },

-  { 0x1a00, 0x2400, 0x0000 },

-  { 0x9a00, 0x2403, 0x2000 },

-  { 0x1a00, 0x2402, 0x0000 },

-  { 0x1a00, 0x2404, 0x0000 },

-  { 0x9a00, 0x2409, 0x3000 },

-  { 0x9a00, 0x2407, 0x2000 },

-  { 0x1a00, 0x2406, 0x0000 },

-  { 0x1a00, 0x2408, 0x0000 },

-  { 0x9a00, 0x240b, 0x2000 },

-  { 0x1a00, 0x240a, 0x0000 },

-  { 0x1a00, 0x240c, 0x0000 },

-  { 0x9a00, 0x2415, 0x4000 },

-  { 0x9a00, 0x2411, 0x3000 },

-  { 0x9a00, 0x240f, 0x2000 },

-  { 0x1a00, 0x240e, 0x0000 },

-  { 0x1a00, 0x2410, 0x0000 },

-  { 0x9a00, 0x2413, 0x2000 },

-  { 0x1a00, 0x2412, 0x0000 },

-  { 0x1a00, 0x2414, 0x0000 },

-  { 0x9a00, 0x2419, 0x3000 },

-  { 0x9a00, 0x2417, 0x2000 },

-  { 0x1a00, 0x2416, 0x0000 },

-  { 0x1a00, 0x2418, 0x0000 },

-  { 0x9a00, 0x241b, 0x2000 },

-  { 0x1a00, 0x241a, 0x0000 },

-  { 0x1a00, 0x241c, 0x0000 },

-  { 0x8f00, 0x246b, 0x6000 },

-  { 0x9a00, 0x2446, 0x5000 },

-  { 0x9a00, 0x2425, 0x4000 },

-  { 0x9a00, 0x2421, 0x3000 },

-  { 0x9a00, 0x241f, 0x2000 },

-  { 0x1a00, 0x241e, 0x0000 },

-  { 0x1a00, 0x2420, 0x0000 },

-  { 0x9a00, 0x2423, 0x2000 },

-  { 0x1a00, 0x2422, 0x0000 },

-  { 0x1a00, 0x2424, 0x0000 },

-  { 0x9a00, 0x2442, 0x3000 },

-  { 0x9a00, 0x2440, 0x2000 },

-  { 0x1a00, 0x2426, 0x0000 },

-  { 0x1a00, 0x2441, 0x0000 },

-  { 0x9a00, 0x2444, 0x2000 },

-  { 0x1a00, 0x2443, 0x0000 },

-  { 0x1a00, 0x2445, 0x0000 },

-  { 0x8f00, 0x2463, 0x4000 },

-  { 0x9a00, 0x244a, 0x3000 },

-  { 0x9a00, 0x2448, 0x2000 },

-  { 0x1a00, 0x2447, 0x0000 },

-  { 0x1a00, 0x2449, 0x0000 },

-  { 0x8f00, 0x2461, 0x2000 },

-  { 0x0f00, 0x2460, 0x0000 },

-  { 0x0f00, 0x2462, 0x0000 },

-  { 0x8f00, 0x2467, 0x3000 },

-  { 0x8f00, 0x2465, 0x2000 },

-  { 0x0f00, 0x2464, 0x0000 },

-  { 0x0f00, 0x2466, 0x0000 },

-  { 0x8f00, 0x2469, 0x2000 },

-  { 0x0f00, 0x2468, 0x0000 },

-  { 0x0f00, 0x246a, 0x0000 },

-  { 0x8f00, 0x247b, 0x5000 },

-  { 0x8f00, 0x2473, 0x4000 },

-  { 0x8f00, 0x246f, 0x3000 },

-  { 0x8f00, 0x246d, 0x2000 },

-  { 0x0f00, 0x246c, 0x0000 },

-  { 0x0f00, 0x246e, 0x0000 },

-  { 0x8f00, 0x2471, 0x2000 },

-  { 0x0f00, 0x2470, 0x0000 },

-  { 0x0f00, 0x2472, 0x0000 },

-  { 0x8f00, 0x2477, 0x3000 },

-  { 0x8f00, 0x2475, 0x2000 },

-  { 0x0f00, 0x2474, 0x0000 },

-  { 0x0f00, 0x2476, 0x0000 },

-  { 0x8f00, 0x2479, 0x2000 },

-  { 0x0f00, 0x2478, 0x0000 },

-  { 0x0f00, 0x247a, 0x0000 },

-  { 0x8f00, 0x2483, 0x4000 },

-  { 0x8f00, 0x247f, 0x3000 },

-  { 0x8f00, 0x247d, 0x2000 },

-  { 0x0f00, 0x247c, 0x0000 },

-  { 0x0f00, 0x247e, 0x0000 },

-  { 0x8f00, 0x2481, 0x2000 },

-  { 0x0f00, 0x2480, 0x0000 },

-  { 0x0f00, 0x2482, 0x0000 },

-  { 0x8f00, 0x2487, 0x3000 },

-  { 0x8f00, 0x2485, 0x2000 },

-  { 0x0f00, 0x2484, 0x0000 },

-  { 0x0f00, 0x2486, 0x0000 },

-  { 0x8f00, 0x2489, 0x2000 },

-  { 0x0f00, 0x2488, 0x0000 },

-  { 0x0f00, 0x248a, 0x0000 },

-  { 0x9a00, 0x24cb, 0x7000 },

-  { 0x9a00, 0x24ab, 0x6000 },

-  { 0x8f00, 0x249b, 0x5000 },

-  { 0x8f00, 0x2493, 0x4000 },

-  { 0x8f00, 0x248f, 0x3000 },

-  { 0x8f00, 0x248d, 0x2000 },

-  { 0x0f00, 0x248c, 0x0000 },

-  { 0x0f00, 0x248e, 0x0000 },

-  { 0x8f00, 0x2491, 0x2000 },

-  { 0x0f00, 0x2490, 0x0000 },

-  { 0x0f00, 0x2492, 0x0000 },

-  { 0x8f00, 0x2497, 0x3000 },

-  { 0x8f00, 0x2495, 0x2000 },

-  { 0x0f00, 0x2494, 0x0000 },

-  { 0x0f00, 0x2496, 0x0000 },

-  { 0x8f00, 0x2499, 0x2000 },

-  { 0x0f00, 0x2498, 0x0000 },

-  { 0x0f00, 0x249a, 0x0000 },

-  { 0x9a00, 0x24a3, 0x4000 },

-  { 0x9a00, 0x249f, 0x3000 },

-  { 0x9a00, 0x249d, 0x2000 },

-  { 0x1a00, 0x249c, 0x0000 },

-  { 0x1a00, 0x249e, 0x0000 },

-  { 0x9a00, 0x24a1, 0x2000 },

-  { 0x1a00, 0x24a0, 0x0000 },

-  { 0x1a00, 0x24a2, 0x0000 },

-  { 0x9a00, 0x24a7, 0x3000 },

-  { 0x9a00, 0x24a5, 0x2000 },

-  { 0x1a00, 0x24a4, 0x0000 },

-  { 0x1a00, 0x24a6, 0x0000 },

-  { 0x9a00, 0x24a9, 0x2000 },

-  { 0x1a00, 0x24a8, 0x0000 },

-  { 0x1a00, 0x24aa, 0x0000 },

-  { 0x9a00, 0x24bb, 0x5000 },

-  { 0x9a00, 0x24b3, 0x4000 },

-  { 0x9a00, 0x24af, 0x3000 },

-  { 0x9a00, 0x24ad, 0x2000 },

-  { 0x1a00, 0x24ac, 0x0000 },

-  { 0x1a00, 0x24ae, 0x0000 },

-  { 0x9a00, 0x24b1, 0x2000 },

-  { 0x1a00, 0x24b0, 0x0000 },

-  { 0x1a00, 0x24b2, 0x0000 },

-  { 0x9a00, 0x24b7, 0x3000 },

-  { 0x9a00, 0x24b5, 0x2000 },

-  { 0x1a00, 0x24b4, 0x0000 },

-  { 0x1a00, 0x24b6, 0x0000 },

-  { 0x9a00, 0x24b9, 0x2000 },

-  { 0x1a00, 0x24b8, 0x0000 },

-  { 0x1a00, 0x24ba, 0x0000 },

-  { 0x9a00, 0x24c3, 0x4000 },

-  { 0x9a00, 0x24bf, 0x3000 },

-  { 0x9a00, 0x24bd, 0x2000 },

-  { 0x1a00, 0x24bc, 0x0000 },

-  { 0x1a00, 0x24be, 0x0000 },

-  { 0x9a00, 0x24c1, 0x2000 },

-  { 0x1a00, 0x24c0, 0x0000 },

-  { 0x1a00, 0x24c2, 0x0000 },

-  { 0x9a00, 0x24c7, 0x3000 },

-  { 0x9a00, 0x24c5, 0x2000 },

-  { 0x1a00, 0x24c4, 0x0000 },

-  { 0x1a00, 0x24c6, 0x0000 },

-  { 0x9a00, 0x24c9, 0x2000 },

-  { 0x1a00, 0x24c8, 0x0000 },

-  { 0x1a00, 0x24ca, 0x0000 },

-  { 0x8f00, 0x24eb, 0x6000 },

-  { 0x9a00, 0x24db, 0x5000 },

-  { 0x9a00, 0x24d3, 0x4000 },

-  { 0x9a00, 0x24cf, 0x3000 },

-  { 0x9a00, 0x24cd, 0x2000 },

-  { 0x1a00, 0x24cc, 0x0000 },

-  { 0x1a00, 0x24ce, 0x0000 },

-  { 0x9a00, 0x24d1, 0x2000 },

-  { 0x1a00, 0x24d0, 0x0000 },

-  { 0x1a00, 0x24d2, 0x0000 },

-  { 0x9a00, 0x24d7, 0x3000 },

-  { 0x9a00, 0x24d5, 0x2000 },

-  { 0x1a00, 0x24d4, 0x0000 },

-  { 0x1a00, 0x24d6, 0x0000 },

-  { 0x9a00, 0x24d9, 0x2000 },

-  { 0x1a00, 0x24d8, 0x0000 },

-  { 0x1a00, 0x24da, 0x0000 },

-  { 0x9a00, 0x24e3, 0x4000 },

-  { 0x9a00, 0x24df, 0x3000 },

-  { 0x9a00, 0x24dd, 0x2000 },

-  { 0x1a00, 0x24dc, 0x0000 },

-  { 0x1a00, 0x24de, 0x0000 },

-  { 0x9a00, 0x24e1, 0x2000 },

-  { 0x1a00, 0x24e0, 0x0000 },

-  { 0x1a00, 0x24e2, 0x0000 },

-  { 0x9a00, 0x24e7, 0x3000 },

-  { 0x9a00, 0x24e5, 0x2000 },

-  { 0x1a00, 0x24e4, 0x0000 },

-  { 0x1a00, 0x24e6, 0x0000 },

-  { 0x9a00, 0x24e9, 0x2000 },

-  { 0x1a00, 0x24e8, 0x0000 },

-  { 0x0f00, 0x24ea, 0x0000 },

-  { 0x8f00, 0x24fb, 0x5000 },

-  { 0x8f00, 0x24f3, 0x4000 },

-  { 0x8f00, 0x24ef, 0x3000 },

-  { 0x8f00, 0x24ed, 0x2000 },

-  { 0x0f00, 0x24ec, 0x0000 },

-  { 0x0f00, 0x24ee, 0x0000 },

-  { 0x8f00, 0x24f1, 0x2000 },

-  { 0x0f00, 0x24f0, 0x0000 },

-  { 0x0f00, 0x24f2, 0x0000 },

-  { 0x8f00, 0x24f7, 0x3000 },

-  { 0x8f00, 0x24f5, 0x2000 },

-  { 0x0f00, 0x24f4, 0x0000 },

-  { 0x0f00, 0x24f6, 0x0000 },

-  { 0x8f00, 0x24f9, 0x2000 },

-  { 0x0f00, 0x24f8, 0x0000 },

-  { 0x0f00, 0x24fa, 0x0000 },

-  { 0x9a00, 0x2503, 0x4000 },

-  { 0x8f00, 0x24ff, 0x3000 },

-  { 0x8f00, 0x24fd, 0x2000 },

-  { 0x0f00, 0x24fc, 0x0000 },

-  { 0x0f00, 0x24fe, 0x0000 },

-  { 0x9a00, 0x2501, 0x2000 },

-  { 0x1a00, 0x2500, 0x0000 },

-  { 0x1a00, 0x2502, 0x0000 },

-  { 0x9a00, 0x2507, 0x3000 },

-  { 0x9a00, 0x2505, 0x2000 },

-  { 0x1a00, 0x2504, 0x0000 },

-  { 0x1a00, 0x2506, 0x0000 },

-  { 0x9a00, 0x2509, 0x2000 },

-  { 0x1a00, 0x2508, 0x0000 },

-  { 0x1a00, 0x250a, 0x0000 },

-  { 0x9a00, 0x260b, 0x9000 },

-  { 0x9a00, 0x258b, 0x8000 },

-  { 0x9a00, 0x254b, 0x7000 },

-  { 0x9a00, 0x252b, 0x6000 },

-  { 0x9a00, 0x251b, 0x5000 },

-  { 0x9a00, 0x2513, 0x4000 },

-  { 0x9a00, 0x250f, 0x3000 },

-  { 0x9a00, 0x250d, 0x2000 },

-  { 0x1a00, 0x250c, 0x0000 },

-  { 0x1a00, 0x250e, 0x0000 },

-  { 0x9a00, 0x2511, 0x2000 },

-  { 0x1a00, 0x2510, 0x0000 },

-  { 0x1a00, 0x2512, 0x0000 },

-  { 0x9a00, 0x2517, 0x3000 },

-  { 0x9a00, 0x2515, 0x2000 },

-  { 0x1a00, 0x2514, 0x0000 },

-  { 0x1a00, 0x2516, 0x0000 },

-  { 0x9a00, 0x2519, 0x2000 },

-  { 0x1a00, 0x2518, 0x0000 },

-  { 0x1a00, 0x251a, 0x0000 },

-  { 0x9a00, 0x2523, 0x4000 },

-  { 0x9a00, 0x251f, 0x3000 },

-  { 0x9a00, 0x251d, 0x2000 },

-  { 0x1a00, 0x251c, 0x0000 },

-  { 0x1a00, 0x251e, 0x0000 },

-  { 0x9a00, 0x2521, 0x2000 },

-  { 0x1a00, 0x2520, 0x0000 },

-  { 0x1a00, 0x2522, 0x0000 },

-  { 0x9a00, 0x2527, 0x3000 },

-  { 0x9a00, 0x2525, 0x2000 },

-  { 0x1a00, 0x2524, 0x0000 },

-  { 0x1a00, 0x2526, 0x0000 },

-  { 0x9a00, 0x2529, 0x2000 },

-  { 0x1a00, 0x2528, 0x0000 },

-  { 0x1a00, 0x252a, 0x0000 },

-  { 0x9a00, 0x253b, 0x5000 },

-  { 0x9a00, 0x2533, 0x4000 },

-  { 0x9a00, 0x252f, 0x3000 },

-  { 0x9a00, 0x252d, 0x2000 },

-  { 0x1a00, 0x252c, 0x0000 },

-  { 0x1a00, 0x252e, 0x0000 },

-  { 0x9a00, 0x2531, 0x2000 },

-  { 0x1a00, 0x2530, 0x0000 },

-  { 0x1a00, 0x2532, 0x0000 },

-  { 0x9a00, 0x2537, 0x3000 },

-  { 0x9a00, 0x2535, 0x2000 },

-  { 0x1a00, 0x2534, 0x0000 },

-  { 0x1a00, 0x2536, 0x0000 },

-  { 0x9a00, 0x2539, 0x2000 },

-  { 0x1a00, 0x2538, 0x0000 },

-  { 0x1a00, 0x253a, 0x0000 },

-  { 0x9a00, 0x2543, 0x4000 },

-  { 0x9a00, 0x253f, 0x3000 },

-  { 0x9a00, 0x253d, 0x2000 },

-  { 0x1a00, 0x253c, 0x0000 },

-  { 0x1a00, 0x253e, 0x0000 },

-  { 0x9a00, 0x2541, 0x2000 },

-  { 0x1a00, 0x2540, 0x0000 },

-  { 0x1a00, 0x2542, 0x0000 },

-  { 0x9a00, 0x2547, 0x3000 },

-  { 0x9a00, 0x2545, 0x2000 },

-  { 0x1a00, 0x2544, 0x0000 },

-  { 0x1a00, 0x2546, 0x0000 },

-  { 0x9a00, 0x2549, 0x2000 },

-  { 0x1a00, 0x2548, 0x0000 },

-  { 0x1a00, 0x254a, 0x0000 },

-  { 0x9a00, 0x256b, 0x6000 },

-  { 0x9a00, 0x255b, 0x5000 },

-  { 0x9a00, 0x2553, 0x4000 },

-  { 0x9a00, 0x254f, 0x3000 },

-  { 0x9a00, 0x254d, 0x2000 },

-  { 0x1a00, 0x254c, 0x0000 },

-  { 0x1a00, 0x254e, 0x0000 },

-  { 0x9a00, 0x2551, 0x2000 },

-  { 0x1a00, 0x2550, 0x0000 },

-  { 0x1a00, 0x2552, 0x0000 },

-  { 0x9a00, 0x2557, 0x3000 },

-  { 0x9a00, 0x2555, 0x2000 },

-  { 0x1a00, 0x2554, 0x0000 },

-  { 0x1a00, 0x2556, 0x0000 },

-  { 0x9a00, 0x2559, 0x2000 },

-  { 0x1a00, 0x2558, 0x0000 },

-  { 0x1a00, 0x255a, 0x0000 },

-  { 0x9a00, 0x2563, 0x4000 },

-  { 0x9a00, 0x255f, 0x3000 },

-  { 0x9a00, 0x255d, 0x2000 },

-  { 0x1a00, 0x255c, 0x0000 },

-  { 0x1a00, 0x255e, 0x0000 },

-  { 0x9a00, 0x2561, 0x2000 },

-  { 0x1a00, 0x2560, 0x0000 },

-  { 0x1a00, 0x2562, 0x0000 },

-  { 0x9a00, 0x2567, 0x3000 },

-  { 0x9a00, 0x2565, 0x2000 },

-  { 0x1a00, 0x2564, 0x0000 },

-  { 0x1a00, 0x2566, 0x0000 },

-  { 0x9a00, 0x2569, 0x2000 },

-  { 0x1a00, 0x2568, 0x0000 },

-  { 0x1a00, 0x256a, 0x0000 },

-  { 0x9a00, 0x257b, 0x5000 },

-  { 0x9a00, 0x2573, 0x4000 },

-  { 0x9a00, 0x256f, 0x3000 },

-  { 0x9a00, 0x256d, 0x2000 },

-  { 0x1a00, 0x256c, 0x0000 },

-  { 0x1a00, 0x256e, 0x0000 },

-  { 0x9a00, 0x2571, 0x2000 },

-  { 0x1a00, 0x2570, 0x0000 },

-  { 0x1a00, 0x2572, 0x0000 },

-  { 0x9a00, 0x2577, 0x3000 },

-  { 0x9a00, 0x2575, 0x2000 },

-  { 0x1a00, 0x2574, 0x0000 },

-  { 0x1a00, 0x2576, 0x0000 },

-  { 0x9a00, 0x2579, 0x2000 },

-  { 0x1a00, 0x2578, 0x0000 },

-  { 0x1a00, 0x257a, 0x0000 },

-  { 0x9a00, 0x2583, 0x4000 },

-  { 0x9a00, 0x257f, 0x3000 },

-  { 0x9a00, 0x257d, 0x2000 },

-  { 0x1a00, 0x257c, 0x0000 },

-  { 0x1a00, 0x257e, 0x0000 },

-  { 0x9a00, 0x2581, 0x2000 },

-  { 0x1a00, 0x2580, 0x0000 },

-  { 0x1a00, 0x2582, 0x0000 },

-  { 0x9a00, 0x2587, 0x3000 },

-  { 0x9a00, 0x2585, 0x2000 },

-  { 0x1a00, 0x2584, 0x0000 },

-  { 0x1a00, 0x2586, 0x0000 },

-  { 0x9a00, 0x2589, 0x2000 },

-  { 0x1a00, 0x2588, 0x0000 },

-  { 0x1a00, 0x258a, 0x0000 },

-  { 0x9a00, 0x25cb, 0x7000 },

-  { 0x9a00, 0x25ab, 0x6000 },

-  { 0x9a00, 0x259b, 0x5000 },

-  { 0x9a00, 0x2593, 0x4000 },

-  { 0x9a00, 0x258f, 0x3000 },

-  { 0x9a00, 0x258d, 0x2000 },

-  { 0x1a00, 0x258c, 0x0000 },

-  { 0x1a00, 0x258e, 0x0000 },

-  { 0x9a00, 0x2591, 0x2000 },

-  { 0x1a00, 0x2590, 0x0000 },

-  { 0x1a00, 0x2592, 0x0000 },

-  { 0x9a00, 0x2597, 0x3000 },

-  { 0x9a00, 0x2595, 0x2000 },

-  { 0x1a00, 0x2594, 0x0000 },

-  { 0x1a00, 0x2596, 0x0000 },

-  { 0x9a00, 0x2599, 0x2000 },

-  { 0x1a00, 0x2598, 0x0000 },

-  { 0x1a00, 0x259a, 0x0000 },

-  { 0x9a00, 0x25a3, 0x4000 },

-  { 0x9a00, 0x259f, 0x3000 },

-  { 0x9a00, 0x259d, 0x2000 },

-  { 0x1a00, 0x259c, 0x0000 },

-  { 0x1a00, 0x259e, 0x0000 },

-  { 0x9a00, 0x25a1, 0x2000 },

-  { 0x1a00, 0x25a0, 0x0000 },

-  { 0x1a00, 0x25a2, 0x0000 },

-  { 0x9a00, 0x25a7, 0x3000 },

-  { 0x9a00, 0x25a5, 0x2000 },

-  { 0x1a00, 0x25a4, 0x0000 },

-  { 0x1a00, 0x25a6, 0x0000 },

-  { 0x9a00, 0x25a9, 0x2000 },

-  { 0x1a00, 0x25a8, 0x0000 },

-  { 0x1a00, 0x25aa, 0x0000 },

-  { 0x9a00, 0x25bb, 0x5000 },

-  { 0x9a00, 0x25b3, 0x4000 },

-  { 0x9a00, 0x25af, 0x3000 },

-  { 0x9a00, 0x25ad, 0x2000 },

-  { 0x1a00, 0x25ac, 0x0000 },

-  { 0x1a00, 0x25ae, 0x0000 },

-  { 0x9a00, 0x25b1, 0x2000 },

-  { 0x1a00, 0x25b0, 0x0000 },

-  { 0x1a00, 0x25b2, 0x0000 },

-  { 0x9900, 0x25b7, 0x3000 },

-  { 0x9a00, 0x25b5, 0x2000 },

-  { 0x1a00, 0x25b4, 0x0000 },

-  { 0x1a00, 0x25b6, 0x0000 },

-  { 0x9a00, 0x25b9, 0x2000 },

-  { 0x1a00, 0x25b8, 0x0000 },

-  { 0x1a00, 0x25ba, 0x0000 },

-  { 0x9a00, 0x25c3, 0x4000 },

-  { 0x9a00, 0x25bf, 0x3000 },

-  { 0x9a00, 0x25bd, 0x2000 },

-  { 0x1a00, 0x25bc, 0x0000 },

-  { 0x1a00, 0x25be, 0x0000 },

-  { 0x9900, 0x25c1, 0x2000 },

-  { 0x1a00, 0x25c0, 0x0000 },

-  { 0x1a00, 0x25c2, 0x0000 },

-  { 0x9a00, 0x25c7, 0x3000 },

-  { 0x9a00, 0x25c5, 0x2000 },

-  { 0x1a00, 0x25c4, 0x0000 },

-  { 0x1a00, 0x25c6, 0x0000 },

-  { 0x9a00, 0x25c9, 0x2000 },

-  { 0x1a00, 0x25c8, 0x0000 },

-  { 0x1a00, 0x25ca, 0x0000 },

-  { 0x9a00, 0x25eb, 0x6000 },

-  { 0x9a00, 0x25db, 0x5000 },

-  { 0x9a00, 0x25d3, 0x4000 },

-  { 0x9a00, 0x25cf, 0x3000 },

-  { 0x9a00, 0x25cd, 0x2000 },

-  { 0x1a00, 0x25cc, 0x0000 },

-  { 0x1a00, 0x25ce, 0x0000 },

-  { 0x9a00, 0x25d1, 0x2000 },

-  { 0x1a00, 0x25d0, 0x0000 },

-  { 0x1a00, 0x25d2, 0x0000 },

-  { 0x9a00, 0x25d7, 0x3000 },

-  { 0x9a00, 0x25d5, 0x2000 },

-  { 0x1a00, 0x25d4, 0x0000 },

-  { 0x1a00, 0x25d6, 0x0000 },

-  { 0x9a00, 0x25d9, 0x2000 },

-  { 0x1a00, 0x25d8, 0x0000 },

-  { 0x1a00, 0x25da, 0x0000 },

-  { 0x9a00, 0x25e3, 0x4000 },

-  { 0x9a00, 0x25df, 0x3000 },

-  { 0x9a00, 0x25dd, 0x2000 },

-  { 0x1a00, 0x25dc, 0x0000 },

-  { 0x1a00, 0x25de, 0x0000 },

-  { 0x9a00, 0x25e1, 0x2000 },

-  { 0x1a00, 0x25e0, 0x0000 },

-  { 0x1a00, 0x25e2, 0x0000 },

-  { 0x9a00, 0x25e7, 0x3000 },

-  { 0x9a00, 0x25e5, 0x2000 },

-  { 0x1a00, 0x25e4, 0x0000 },

-  { 0x1a00, 0x25e6, 0x0000 },

-  { 0x9a00, 0x25e9, 0x2000 },

-  { 0x1a00, 0x25e8, 0x0000 },

-  { 0x1a00, 0x25ea, 0x0000 },

-  { 0x9900, 0x25fb, 0x5000 },

-  { 0x9a00, 0x25f3, 0x4000 },

-  { 0x9a00, 0x25ef, 0x3000 },

-  { 0x9a00, 0x25ed, 0x2000 },

-  { 0x1a00, 0x25ec, 0x0000 },

-  { 0x1a00, 0x25ee, 0x0000 },

-  { 0x9a00, 0x25f1, 0x2000 },

-  { 0x1a00, 0x25f0, 0x0000 },

-  { 0x1a00, 0x25f2, 0x0000 },

-  { 0x9a00, 0x25f7, 0x3000 },

-  { 0x9a00, 0x25f5, 0x2000 },

-  { 0x1a00, 0x25f4, 0x0000 },

-  { 0x1a00, 0x25f6, 0x0000 },

-  { 0x9900, 0x25f9, 0x2000 },

-  { 0x1900, 0x25f8, 0x0000 },

-  { 0x1900, 0x25fa, 0x0000 },

-  { 0x9a00, 0x2603, 0x4000 },

-  { 0x9900, 0x25ff, 0x3000 },

-  { 0x9900, 0x25fd, 0x2000 },

-  { 0x1900, 0x25fc, 0x0000 },

-  { 0x1900, 0x25fe, 0x0000 },

-  { 0x9a00, 0x2601, 0x2000 },

-  { 0x1a00, 0x2600, 0x0000 },

-  { 0x1a00, 0x2602, 0x0000 },

-  { 0x9a00, 0x2607, 0x3000 },

-  { 0x9a00, 0x2605, 0x2000 },

-  { 0x1a00, 0x2604, 0x0000 },

-  { 0x1a00, 0x2606, 0x0000 },

-  { 0x9a00, 0x2609, 0x2000 },

-  { 0x1a00, 0x2608, 0x0000 },

-  { 0x1a00, 0x260a, 0x0000 },

-  { 0x9a00, 0x268e, 0x8000 },

-  { 0x9a00, 0x264c, 0x7000 },

-  { 0x9a00, 0x262c, 0x6000 },

-  { 0x9a00, 0x261c, 0x5000 },

-  { 0x9a00, 0x2613, 0x4000 },

-  { 0x9a00, 0x260f, 0x3000 },

-  { 0x9a00, 0x260d, 0x2000 },

-  { 0x1a00, 0x260c, 0x0000 },

-  { 0x1a00, 0x260e, 0x0000 },

-  { 0x9a00, 0x2611, 0x2000 },

-  { 0x1a00, 0x2610, 0x0000 },

-  { 0x1a00, 0x2612, 0x0000 },

-  { 0x9a00, 0x2617, 0x3000 },

-  { 0x9a00, 0x2615, 0x2000 },

-  { 0x1a00, 0x2614, 0x0000 },

-  { 0x1a00, 0x2616, 0x0000 },

-  { 0x9a00, 0x261a, 0x2000 },

-  { 0x1a00, 0x2619, 0x0000 },

-  { 0x1a00, 0x261b, 0x0000 },

-  { 0x9a00, 0x2624, 0x4000 },

-  { 0x9a00, 0x2620, 0x3000 },

-  { 0x9a00, 0x261e, 0x2000 },

-  { 0x1a00, 0x261d, 0x0000 },

-  { 0x1a00, 0x261f, 0x0000 },

-  { 0x9a00, 0x2622, 0x2000 },

-  { 0x1a00, 0x2621, 0x0000 },

-  { 0x1a00, 0x2623, 0x0000 },

-  { 0x9a00, 0x2628, 0x3000 },

-  { 0x9a00, 0x2626, 0x2000 },

-  { 0x1a00, 0x2625, 0x0000 },

-  { 0x1a00, 0x2627, 0x0000 },

-  { 0x9a00, 0x262a, 0x2000 },

-  { 0x1a00, 0x2629, 0x0000 },

-  { 0x1a00, 0x262b, 0x0000 },

-  { 0x9a00, 0x263c, 0x5000 },

-  { 0x9a00, 0x2634, 0x4000 },

-  { 0x9a00, 0x2630, 0x3000 },

-  { 0x9a00, 0x262e, 0x2000 },

-  { 0x1a00, 0x262d, 0x0000 },

-  { 0x1a00, 0x262f, 0x0000 },

-  { 0x9a00, 0x2632, 0x2000 },

-  { 0x1a00, 0x2631, 0x0000 },

-  { 0x1a00, 0x2633, 0x0000 },

-  { 0x9a00, 0x2638, 0x3000 },

-  { 0x9a00, 0x2636, 0x2000 },

-  { 0x1a00, 0x2635, 0x0000 },

-  { 0x1a00, 0x2637, 0x0000 },

-  { 0x9a00, 0x263a, 0x2000 },

-  { 0x1a00, 0x2639, 0x0000 },

-  { 0x1a00, 0x263b, 0x0000 },

-  { 0x9a00, 0x2644, 0x4000 },

-  { 0x9a00, 0x2640, 0x3000 },

-  { 0x9a00, 0x263e, 0x2000 },

-  { 0x1a00, 0x263d, 0x0000 },

-  { 0x1a00, 0x263f, 0x0000 },

-  { 0x9a00, 0x2642, 0x2000 },

-  { 0x1a00, 0x2641, 0x0000 },

-  { 0x1a00, 0x2643, 0x0000 },

-  { 0x9a00, 0x2648, 0x3000 },

-  { 0x9a00, 0x2646, 0x2000 },

-  { 0x1a00, 0x2645, 0x0000 },

-  { 0x1a00, 0x2647, 0x0000 },

-  { 0x9a00, 0x264a, 0x2000 },

-  { 0x1a00, 0x2649, 0x0000 },

-  { 0x1a00, 0x264b, 0x0000 },

-  { 0x9a00, 0x266c, 0x6000 },

-  { 0x9a00, 0x265c, 0x5000 },

-  { 0x9a00, 0x2654, 0x4000 },

-  { 0x9a00, 0x2650, 0x3000 },

-  { 0x9a00, 0x264e, 0x2000 },

-  { 0x1a00, 0x264d, 0x0000 },

-  { 0x1a00, 0x264f, 0x0000 },

-  { 0x9a00, 0x2652, 0x2000 },

-  { 0x1a00, 0x2651, 0x0000 },

-  { 0x1a00, 0x2653, 0x0000 },

-  { 0x9a00, 0x2658, 0x3000 },

-  { 0x9a00, 0x2656, 0x2000 },

-  { 0x1a00, 0x2655, 0x0000 },

-  { 0x1a00, 0x2657, 0x0000 },

-  { 0x9a00, 0x265a, 0x2000 },

-  { 0x1a00, 0x2659, 0x0000 },

-  { 0x1a00, 0x265b, 0x0000 },

-  { 0x9a00, 0x2664, 0x4000 },

-  { 0x9a00, 0x2660, 0x3000 },

-  { 0x9a00, 0x265e, 0x2000 },

-  { 0x1a00, 0x265d, 0x0000 },

-  { 0x1a00, 0x265f, 0x0000 },

-  { 0x9a00, 0x2662, 0x2000 },

-  { 0x1a00, 0x2661, 0x0000 },

-  { 0x1a00, 0x2663, 0x0000 },

-  { 0x9a00, 0x2668, 0x3000 },

-  { 0x9a00, 0x2666, 0x2000 },

-  { 0x1a00, 0x2665, 0x0000 },

-  { 0x1a00, 0x2667, 0x0000 },

-  { 0x9a00, 0x266a, 0x2000 },

-  { 0x1a00, 0x2669, 0x0000 },

-  { 0x1a00, 0x266b, 0x0000 },

-  { 0x9a00, 0x267c, 0x5000 },

-  { 0x9a00, 0x2674, 0x4000 },

-  { 0x9a00, 0x2670, 0x3000 },

-  { 0x9a00, 0x266e, 0x2000 },

-  { 0x1a00, 0x266d, 0x0000 },

-  { 0x1900, 0x266f, 0x0000 },

-  { 0x9a00, 0x2672, 0x2000 },

-  { 0x1a00, 0x2671, 0x0000 },

-  { 0x1a00, 0x2673, 0x0000 },

-  { 0x9a00, 0x2678, 0x3000 },

-  { 0x9a00, 0x2676, 0x2000 },

-  { 0x1a00, 0x2675, 0x0000 },

-  { 0x1a00, 0x2677, 0x0000 },

-  { 0x9a00, 0x267a, 0x2000 },

-  { 0x1a00, 0x2679, 0x0000 },

-  { 0x1a00, 0x267b, 0x0000 },

-  { 0x9a00, 0x2686, 0x4000 },

-  { 0x9a00, 0x2682, 0x3000 },

-  { 0x9a00, 0x2680, 0x2000 },

-  { 0x1a00, 0x267d, 0x0000 },

-  { 0x1a00, 0x2681, 0x0000 },

-  { 0x9a00, 0x2684, 0x2000 },

-  { 0x1a00, 0x2683, 0x0000 },

-  { 0x1a00, 0x2685, 0x0000 },

-  { 0x9a00, 0x268a, 0x3000 },

-  { 0x9a00, 0x2688, 0x2000 },

-  { 0x1a00, 0x2687, 0x0000 },

-  { 0x1a00, 0x2689, 0x0000 },

-  { 0x9a00, 0x268c, 0x2000 },

-  { 0x1a00, 0x268b, 0x0000 },

-  { 0x1a00, 0x268d, 0x0000 },

-  { 0x9a00, 0x273f, 0x7000 },

-  { 0x9a00, 0x271e, 0x6000 },

-  { 0x9a00, 0x270e, 0x5000 },

-  { 0x9a00, 0x2703, 0x4000 },

-  { 0x9a00, 0x26a0, 0x3000 },

-  { 0x9a00, 0x2690, 0x2000 },

-  { 0x1a00, 0x268f, 0x0000 },

-  { 0x1a00, 0x2691, 0x0000 },

-  { 0x9a00, 0x2701, 0x2000 },

-  { 0x1a00, 0x26a1, 0x0000 },

-  { 0x1a00, 0x2702, 0x0000 },

-  { 0x9a00, 0x2708, 0x3000 },

-  { 0x9a00, 0x2706, 0x2000 },

-  { 0x1a00, 0x2704, 0x0000 },

-  { 0x1a00, 0x2707, 0x0000 },

-  { 0x9a00, 0x270c, 0x2000 },

-  { 0x1a00, 0x2709, 0x0000 },

-  { 0x1a00, 0x270d, 0x0000 },

-  { 0x9a00, 0x2716, 0x4000 },

-  { 0x9a00, 0x2712, 0x3000 },

-  { 0x9a00, 0x2710, 0x2000 },

-  { 0x1a00, 0x270f, 0x0000 },

-  { 0x1a00, 0x2711, 0x0000 },

-  { 0x9a00, 0x2714, 0x2000 },

-  { 0x1a00, 0x2713, 0x0000 },

-  { 0x1a00, 0x2715, 0x0000 },

-  { 0x9a00, 0x271a, 0x3000 },

-  { 0x9a00, 0x2718, 0x2000 },

-  { 0x1a00, 0x2717, 0x0000 },

-  { 0x1a00, 0x2719, 0x0000 },

-  { 0x9a00, 0x271c, 0x2000 },

-  { 0x1a00, 0x271b, 0x0000 },

-  { 0x1a00, 0x271d, 0x0000 },

-  { 0x9a00, 0x272f, 0x5000 },

-  { 0x9a00, 0x2726, 0x4000 },

-  { 0x9a00, 0x2722, 0x3000 },

-  { 0x9a00, 0x2720, 0x2000 },

-  { 0x1a00, 0x271f, 0x0000 },

-  { 0x1a00, 0x2721, 0x0000 },

-  { 0x9a00, 0x2724, 0x2000 },

-  { 0x1a00, 0x2723, 0x0000 },

-  { 0x1a00, 0x2725, 0x0000 },

-  { 0x9a00, 0x272b, 0x3000 },

-  { 0x9a00, 0x2729, 0x2000 },

-  { 0x1a00, 0x2727, 0x0000 },

-  { 0x1a00, 0x272a, 0x0000 },

-  { 0x9a00, 0x272d, 0x2000 },

-  { 0x1a00, 0x272c, 0x0000 },

-  { 0x1a00, 0x272e, 0x0000 },

-  { 0x9a00, 0x2737, 0x4000 },

-  { 0x9a00, 0x2733, 0x3000 },

-  { 0x9a00, 0x2731, 0x2000 },

-  { 0x1a00, 0x2730, 0x0000 },

-  { 0x1a00, 0x2732, 0x0000 },

-  { 0x9a00, 0x2735, 0x2000 },

-  { 0x1a00, 0x2734, 0x0000 },

-  { 0x1a00, 0x2736, 0x0000 },

-  { 0x9a00, 0x273b, 0x3000 },

-  { 0x9a00, 0x2739, 0x2000 },

-  { 0x1a00, 0x2738, 0x0000 },

-  { 0x1a00, 0x273a, 0x0000 },

-  { 0x9a00, 0x273d, 0x2000 },

-  { 0x1a00, 0x273c, 0x0000 },

-  { 0x1a00, 0x273e, 0x0000 },

-  { 0x9a00, 0x2767, 0x6000 },

-  { 0x9a00, 0x2751, 0x5000 },

-  { 0x9a00, 0x2747, 0x4000 },

-  { 0x9a00, 0x2743, 0x3000 },

-  { 0x9a00, 0x2741, 0x2000 },

-  { 0x1a00, 0x2740, 0x0000 },

-  { 0x1a00, 0x2742, 0x0000 },

-  { 0x9a00, 0x2745, 0x2000 },

-  { 0x1a00, 0x2744, 0x0000 },

-  { 0x1a00, 0x2746, 0x0000 },

-  { 0x9a00, 0x274b, 0x3000 },

-  { 0x9a00, 0x2749, 0x2000 },

-  { 0x1a00, 0x2748, 0x0000 },

-  { 0x1a00, 0x274a, 0x0000 },

-  { 0x9a00, 0x274f, 0x2000 },

-  { 0x1a00, 0x274d, 0x0000 },

-  { 0x1a00, 0x2750, 0x0000 },

-  { 0x9a00, 0x275d, 0x4000 },

-  { 0x9a00, 0x2759, 0x3000 },

-  { 0x9a00, 0x2756, 0x2000 },

-  { 0x1a00, 0x2752, 0x0000 },

-  { 0x1a00, 0x2758, 0x0000 },

-  { 0x9a00, 0x275b, 0x2000 },

-  { 0x1a00, 0x275a, 0x0000 },

-  { 0x1a00, 0x275c, 0x0000 },

-  { 0x9a00, 0x2763, 0x3000 },

-  { 0x9a00, 0x2761, 0x2000 },

-  { 0x1a00, 0x275e, 0x0000 },

-  { 0x1a00, 0x2762, 0x0000 },

-  { 0x9a00, 0x2765, 0x2000 },

-  { 0x1a00, 0x2764, 0x0000 },

-  { 0x1a00, 0x2766, 0x0000 },

-  { 0x8f00, 0x2777, 0x5000 },

-  { 0x9200, 0x276f, 0x4000 },

-  { 0x9200, 0x276b, 0x3000 },

-  { 0x9200, 0x2769, 0x2000 },

-  { 0x1600, 0x2768, 0x0000 },

-  { 0x1600, 0x276a, 0x0000 },

-  { 0x9200, 0x276d, 0x2000 },

-  { 0x1600, 0x276c, 0x0000 },

-  { 0x1600, 0x276e, 0x0000 },

-  { 0x9200, 0x2773, 0x3000 },

-  { 0x9200, 0x2771, 0x2000 },

-  { 0x1600, 0x2770, 0x0000 },

-  { 0x1600, 0x2772, 0x0000 },

-  { 0x9200, 0x2775, 0x2000 },

-  { 0x1600, 0x2774, 0x0000 },

-  { 0x0f00, 0x2776, 0x0000 },

-  { 0x8f00, 0x277f, 0x4000 },

-  { 0x8f00, 0x277b, 0x3000 },

-  { 0x8f00, 0x2779, 0x2000 },

-  { 0x0f00, 0x2778, 0x0000 },

-  { 0x0f00, 0x277a, 0x0000 },

-  { 0x8f00, 0x277d, 0x2000 },

-  { 0x0f00, 0x277c, 0x0000 },

-  { 0x0f00, 0x277e, 0x0000 },

-  { 0x8f00, 0x2783, 0x3000 },

-  { 0x8f00, 0x2781, 0x2000 },

-  { 0x0f00, 0x2780, 0x0000 },

-  { 0x0f00, 0x2782, 0x0000 },

-  { 0x8f00, 0x2785, 0x2000 },

-  { 0x0f00, 0x2784, 0x0000 },

-  { 0x0f00, 0x2786, 0x0000 },

-  { 0x9900, 0x29a0, 0xa000 },

-  { 0x9a00, 0x28a0, 0x9000 },

-  { 0x9a00, 0x2820, 0x8000 },

-  { 0x9900, 0x27dc, 0x7000 },

-  { 0x9a00, 0x27aa, 0x6000 },

-  { 0x9a00, 0x279a, 0x5000 },

-  { 0x8f00, 0x278f, 0x4000 },

-  { 0x8f00, 0x278b, 0x3000 },

-  { 0x8f00, 0x2789, 0x2000 },

-  { 0x0f00, 0x2788, 0x0000 },

-  { 0x0f00, 0x278a, 0x0000 },

-  { 0x8f00, 0x278d, 0x2000 },

-  { 0x0f00, 0x278c, 0x0000 },

-  { 0x0f00, 0x278e, 0x0000 },

-  { 0x8f00, 0x2793, 0x3000 },

-  { 0x8f00, 0x2791, 0x2000 },

-  { 0x0f00, 0x2790, 0x0000 },

-  { 0x0f00, 0x2792, 0x0000 },

-  { 0x9a00, 0x2798, 0x2000 },

-  { 0x1a00, 0x2794, 0x0000 },

-  { 0x1a00, 0x2799, 0x0000 },

-  { 0x9a00, 0x27a2, 0x4000 },

-  { 0x9a00, 0x279e, 0x3000 },

-  { 0x9a00, 0x279c, 0x2000 },

-  { 0x1a00, 0x279b, 0x0000 },

-  { 0x1a00, 0x279d, 0x0000 },

-  { 0x9a00, 0x27a0, 0x2000 },

-  { 0x1a00, 0x279f, 0x0000 },

-  { 0x1a00, 0x27a1, 0x0000 },

-  { 0x9a00, 0x27a6, 0x3000 },

-  { 0x9a00, 0x27a4, 0x2000 },

-  { 0x1a00, 0x27a3, 0x0000 },

-  { 0x1a00, 0x27a5, 0x0000 },

-  { 0x9a00, 0x27a8, 0x2000 },

-  { 0x1a00, 0x27a7, 0x0000 },

-  { 0x1a00, 0x27a9, 0x0000 },

-  { 0x9a00, 0x27bb, 0x5000 },

-  { 0x9a00, 0x27b3, 0x4000 },

-  { 0x9a00, 0x27ae, 0x3000 },

-  { 0x9a00, 0x27ac, 0x2000 },

-  { 0x1a00, 0x27ab, 0x0000 },

-  { 0x1a00, 0x27ad, 0x0000 },

-  { 0x9a00, 0x27b1, 0x2000 },

-  { 0x1a00, 0x27af, 0x0000 },

-  { 0x1a00, 0x27b2, 0x0000 },

-  { 0x9a00, 0x27b7, 0x3000 },

-  { 0x9a00, 0x27b5, 0x2000 },

-  { 0x1a00, 0x27b4, 0x0000 },

-  { 0x1a00, 0x27b6, 0x0000 },

-  { 0x9a00, 0x27b9, 0x2000 },

-  { 0x1a00, 0x27b8, 0x0000 },

-  { 0x1a00, 0x27ba, 0x0000 },

-  { 0x9900, 0x27d4, 0x4000 },

-  { 0x9900, 0x27d0, 0x3000 },

-  { 0x9a00, 0x27bd, 0x2000 },

-  { 0x1a00, 0x27bc, 0x0000 },

-  { 0x1a00, 0x27be, 0x0000 },

-  { 0x9900, 0x27d2, 0x2000 },

-  { 0x1900, 0x27d1, 0x0000 },

-  { 0x1900, 0x27d3, 0x0000 },

-  { 0x9900, 0x27d8, 0x3000 },

-  { 0x9900, 0x27d6, 0x2000 },

-  { 0x1900, 0x27d5, 0x0000 },

-  { 0x1900, 0x27d7, 0x0000 },

-  { 0x9900, 0x27da, 0x2000 },

-  { 0x1900, 0x27d9, 0x0000 },

-  { 0x1900, 0x27db, 0x0000 },

-  { 0x9a00, 0x2800, 0x6000 },

-  { 0x9900, 0x27f0, 0x5000 },

-  { 0x9900, 0x27e4, 0x4000 },

-  { 0x9900, 0x27e0, 0x3000 },

-  { 0x9900, 0x27de, 0x2000 },

-  { 0x1900, 0x27dd, 0x0000 },

-  { 0x1900, 0x27df, 0x0000 },

-  { 0x9900, 0x27e2, 0x2000 },

-  { 0x1900, 0x27e1, 0x0000 },

-  { 0x1900, 0x27e3, 0x0000 },

-  { 0x9600, 0x27e8, 0x3000 },

-  { 0x9600, 0x27e6, 0x2000 },

-  { 0x1900, 0x27e5, 0x0000 },

-  { 0x1200, 0x27e7, 0x0000 },

-  { 0x9600, 0x27ea, 0x2000 },

-  { 0x1200, 0x27e9, 0x0000 },

-  { 0x1200, 0x27eb, 0x0000 },

-  { 0x9900, 0x27f8, 0x4000 },

-  { 0x9900, 0x27f4, 0x3000 },

-  { 0x9900, 0x27f2, 0x2000 },

-  { 0x1900, 0x27f1, 0x0000 },

-  { 0x1900, 0x27f3, 0x0000 },

-  { 0x9900, 0x27f6, 0x2000 },

-  { 0x1900, 0x27f5, 0x0000 },

-  { 0x1900, 0x27f7, 0x0000 },

-  { 0x9900, 0x27fc, 0x3000 },

-  { 0x9900, 0x27fa, 0x2000 },

-  { 0x1900, 0x27f9, 0x0000 },

-  { 0x1900, 0x27fb, 0x0000 },

-  { 0x9900, 0x27fe, 0x2000 },

-  { 0x1900, 0x27fd, 0x0000 },

-  { 0x1900, 0x27ff, 0x0000 },

-  { 0x9a00, 0x2810, 0x5000 },

-  { 0x9a00, 0x2808, 0x4000 },

-  { 0x9a00, 0x2804, 0x3000 },

-  { 0x9a00, 0x2802, 0x2000 },

-  { 0x1a00, 0x2801, 0x0000 },

-  { 0x1a00, 0x2803, 0x0000 },

-  { 0x9a00, 0x2806, 0x2000 },

-  { 0x1a00, 0x2805, 0x0000 },

-  { 0x1a00, 0x2807, 0x0000 },

-  { 0x9a00, 0x280c, 0x3000 },

-  { 0x9a00, 0x280a, 0x2000 },

-  { 0x1a00, 0x2809, 0x0000 },

-  { 0x1a00, 0x280b, 0x0000 },

-  { 0x9a00, 0x280e, 0x2000 },

-  { 0x1a00, 0x280d, 0x0000 },

-  { 0x1a00, 0x280f, 0x0000 },

-  { 0x9a00, 0x2818, 0x4000 },

-  { 0x9a00, 0x2814, 0x3000 },

-  { 0x9a00, 0x2812, 0x2000 },

-  { 0x1a00, 0x2811, 0x0000 },

-  { 0x1a00, 0x2813, 0x0000 },

-  { 0x9a00, 0x2816, 0x2000 },

-  { 0x1a00, 0x2815, 0x0000 },

-  { 0x1a00, 0x2817, 0x0000 },

-  { 0x9a00, 0x281c, 0x3000 },

-  { 0x9a00, 0x281a, 0x2000 },

-  { 0x1a00, 0x2819, 0x0000 },

-  { 0x1a00, 0x281b, 0x0000 },

-  { 0x9a00, 0x281e, 0x2000 },

-  { 0x1a00, 0x281d, 0x0000 },

-  { 0x1a00, 0x281f, 0x0000 },

-  { 0x9a00, 0x2860, 0x7000 },

-  { 0x9a00, 0x2840, 0x6000 },

-  { 0x9a00, 0x2830, 0x5000 },

-  { 0x9a00, 0x2828, 0x4000 },

-  { 0x9a00, 0x2824, 0x3000 },

-  { 0x9a00, 0x2822, 0x2000 },

-  { 0x1a00, 0x2821, 0x0000 },

-  { 0x1a00, 0x2823, 0x0000 },

-  { 0x9a00, 0x2826, 0x2000 },

-  { 0x1a00, 0x2825, 0x0000 },

-  { 0x1a00, 0x2827, 0x0000 },

-  { 0x9a00, 0x282c, 0x3000 },

-  { 0x9a00, 0x282a, 0x2000 },

-  { 0x1a00, 0x2829, 0x0000 },

-  { 0x1a00, 0x282b, 0x0000 },

-  { 0x9a00, 0x282e, 0x2000 },

-  { 0x1a00, 0x282d, 0x0000 },

-  { 0x1a00, 0x282f, 0x0000 },

-  { 0x9a00, 0x2838, 0x4000 },

-  { 0x9a00, 0x2834, 0x3000 },

-  { 0x9a00, 0x2832, 0x2000 },

-  { 0x1a00, 0x2831, 0x0000 },

-  { 0x1a00, 0x2833, 0x0000 },

-  { 0x9a00, 0x2836, 0x2000 },

-  { 0x1a00, 0x2835, 0x0000 },

-  { 0x1a00, 0x2837, 0x0000 },

-  { 0x9a00, 0x283c, 0x3000 },

-  { 0x9a00, 0x283a, 0x2000 },

-  { 0x1a00, 0x2839, 0x0000 },

-  { 0x1a00, 0x283b, 0x0000 },

-  { 0x9a00, 0x283e, 0x2000 },

-  { 0x1a00, 0x283d, 0x0000 },

-  { 0x1a00, 0x283f, 0x0000 },

-  { 0x9a00, 0x2850, 0x5000 },

-  { 0x9a00, 0x2848, 0x4000 },

-  { 0x9a00, 0x2844, 0x3000 },

-  { 0x9a00, 0x2842, 0x2000 },

-  { 0x1a00, 0x2841, 0x0000 },

-  { 0x1a00, 0x2843, 0x0000 },

-  { 0x9a00, 0x2846, 0x2000 },

-  { 0x1a00, 0x2845, 0x0000 },

-  { 0x1a00, 0x2847, 0x0000 },

-  { 0x9a00, 0x284c, 0x3000 },

-  { 0x9a00, 0x284a, 0x2000 },

-  { 0x1a00, 0x2849, 0x0000 },

-  { 0x1a00, 0x284b, 0x0000 },

-  { 0x9a00, 0x284e, 0x2000 },

-  { 0x1a00, 0x284d, 0x0000 },

-  { 0x1a00, 0x284f, 0x0000 },

-  { 0x9a00, 0x2858, 0x4000 },

-  { 0x9a00, 0x2854, 0x3000 },

-  { 0x9a00, 0x2852, 0x2000 },

-  { 0x1a00, 0x2851, 0x0000 },

-  { 0x1a00, 0x2853, 0x0000 },

-  { 0x9a00, 0x2856, 0x2000 },

-  { 0x1a00, 0x2855, 0x0000 },

-  { 0x1a00, 0x2857, 0x0000 },

-  { 0x9a00, 0x285c, 0x3000 },

-  { 0x9a00, 0x285a, 0x2000 },

-  { 0x1a00, 0x2859, 0x0000 },

-  { 0x1a00, 0x285b, 0x0000 },

-  { 0x9a00, 0x285e, 0x2000 },

-  { 0x1a00, 0x285d, 0x0000 },

-  { 0x1a00, 0x285f, 0x0000 },

-  { 0x9a00, 0x2880, 0x6000 },

-  { 0x9a00, 0x2870, 0x5000 },

-  { 0x9a00, 0x2868, 0x4000 },

-  { 0x9a00, 0x2864, 0x3000 },

-  { 0x9a00, 0x2862, 0x2000 },

-  { 0x1a00, 0x2861, 0x0000 },

-  { 0x1a00, 0x2863, 0x0000 },

-  { 0x9a00, 0x2866, 0x2000 },

-  { 0x1a00, 0x2865, 0x0000 },

-  { 0x1a00, 0x2867, 0x0000 },

-  { 0x9a00, 0x286c, 0x3000 },

-  { 0x9a00, 0x286a, 0x2000 },

-  { 0x1a00, 0x2869, 0x0000 },

-  { 0x1a00, 0x286b, 0x0000 },

-  { 0x9a00, 0x286e, 0x2000 },

-  { 0x1a00, 0x286d, 0x0000 },

-  { 0x1a00, 0x286f, 0x0000 },

-  { 0x9a00, 0x2878, 0x4000 },

-  { 0x9a00, 0x2874, 0x3000 },

-  { 0x9a00, 0x2872, 0x2000 },

-  { 0x1a00, 0x2871, 0x0000 },

-  { 0x1a00, 0x2873, 0x0000 },

-  { 0x9a00, 0x2876, 0x2000 },

-  { 0x1a00, 0x2875, 0x0000 },

-  { 0x1a00, 0x2877, 0x0000 },

-  { 0x9a00, 0x287c, 0x3000 },

-  { 0x9a00, 0x287a, 0x2000 },

-  { 0x1a00, 0x2879, 0x0000 },

-  { 0x1a00, 0x287b, 0x0000 },

-  { 0x9a00, 0x287e, 0x2000 },

-  { 0x1a00, 0x287d, 0x0000 },

-  { 0x1a00, 0x287f, 0x0000 },

-  { 0x9a00, 0x2890, 0x5000 },

-  { 0x9a00, 0x2888, 0x4000 },

-  { 0x9a00, 0x2884, 0x3000 },

-  { 0x9a00, 0x2882, 0x2000 },

-  { 0x1a00, 0x2881, 0x0000 },

-  { 0x1a00, 0x2883, 0x0000 },

-  { 0x9a00, 0x2886, 0x2000 },

-  { 0x1a00, 0x2885, 0x0000 },

-  { 0x1a00, 0x2887, 0x0000 },

-  { 0x9a00, 0x288c, 0x3000 },

-  { 0x9a00, 0x288a, 0x2000 },

-  { 0x1a00, 0x2889, 0x0000 },

-  { 0x1a00, 0x288b, 0x0000 },

-  { 0x9a00, 0x288e, 0x2000 },

-  { 0x1a00, 0x288d, 0x0000 },

-  { 0x1a00, 0x288f, 0x0000 },

-  { 0x9a00, 0x2898, 0x4000 },

-  { 0x9a00, 0x2894, 0x3000 },

-  { 0x9a00, 0x2892, 0x2000 },

-  { 0x1a00, 0x2891, 0x0000 },

-  { 0x1a00, 0x2893, 0x0000 },

-  { 0x9a00, 0x2896, 0x2000 },

-  { 0x1a00, 0x2895, 0x0000 },

-  { 0x1a00, 0x2897, 0x0000 },

-  { 0x9a00, 0x289c, 0x3000 },

-  { 0x9a00, 0x289a, 0x2000 },

-  { 0x1a00, 0x2899, 0x0000 },

-  { 0x1a00, 0x289b, 0x0000 },

-  { 0x9a00, 0x289e, 0x2000 },

-  { 0x1a00, 0x289d, 0x0000 },

-  { 0x1a00, 0x289f, 0x0000 },

-  { 0x9900, 0x2920, 0x8000 },

-  { 0x9a00, 0x28e0, 0x7000 },

-  { 0x9a00, 0x28c0, 0x6000 },

-  { 0x9a00, 0x28b0, 0x5000 },

-  { 0x9a00, 0x28a8, 0x4000 },

-  { 0x9a00, 0x28a4, 0x3000 },

-  { 0x9a00, 0x28a2, 0x2000 },

-  { 0x1a00, 0x28a1, 0x0000 },

-  { 0x1a00, 0x28a3, 0x0000 },

-  { 0x9a00, 0x28a6, 0x2000 },

-  { 0x1a00, 0x28a5, 0x0000 },

-  { 0x1a00, 0x28a7, 0x0000 },

-  { 0x9a00, 0x28ac, 0x3000 },

-  { 0x9a00, 0x28aa, 0x2000 },

-  { 0x1a00, 0x28a9, 0x0000 },

-  { 0x1a00, 0x28ab, 0x0000 },

-  { 0x9a00, 0x28ae, 0x2000 },

-  { 0x1a00, 0x28ad, 0x0000 },

-  { 0x1a00, 0x28af, 0x0000 },

-  { 0x9a00, 0x28b8, 0x4000 },

-  { 0x9a00, 0x28b4, 0x3000 },

-  { 0x9a00, 0x28b2, 0x2000 },

-  { 0x1a00, 0x28b1, 0x0000 },

-  { 0x1a00, 0x28b3, 0x0000 },

-  { 0x9a00, 0x28b6, 0x2000 },

-  { 0x1a00, 0x28b5, 0x0000 },

-  { 0x1a00, 0x28b7, 0x0000 },

-  { 0x9a00, 0x28bc, 0x3000 },

-  { 0x9a00, 0x28ba, 0x2000 },

-  { 0x1a00, 0x28b9, 0x0000 },

-  { 0x1a00, 0x28bb, 0x0000 },

-  { 0x9a00, 0x28be, 0x2000 },

-  { 0x1a00, 0x28bd, 0x0000 },

-  { 0x1a00, 0x28bf, 0x0000 },

-  { 0x9a00, 0x28d0, 0x5000 },

-  { 0x9a00, 0x28c8, 0x4000 },

-  { 0x9a00, 0x28c4, 0x3000 },

-  { 0x9a00, 0x28c2, 0x2000 },

-  { 0x1a00, 0x28c1, 0x0000 },

-  { 0x1a00, 0x28c3, 0x0000 },

-  { 0x9a00, 0x28c6, 0x2000 },

-  { 0x1a00, 0x28c5, 0x0000 },

-  { 0x1a00, 0x28c7, 0x0000 },

-  { 0x9a00, 0x28cc, 0x3000 },

-  { 0x9a00, 0x28ca, 0x2000 },

-  { 0x1a00, 0x28c9, 0x0000 },

-  { 0x1a00, 0x28cb, 0x0000 },

-  { 0x9a00, 0x28ce, 0x2000 },

-  { 0x1a00, 0x28cd, 0x0000 },

-  { 0x1a00, 0x28cf, 0x0000 },

-  { 0x9a00, 0x28d8, 0x4000 },

-  { 0x9a00, 0x28d4, 0x3000 },

-  { 0x9a00, 0x28d2, 0x2000 },

-  { 0x1a00, 0x28d1, 0x0000 },

-  { 0x1a00, 0x28d3, 0x0000 },

-  { 0x9a00, 0x28d6, 0x2000 },

-  { 0x1a00, 0x28d5, 0x0000 },

-  { 0x1a00, 0x28d7, 0x0000 },

-  { 0x9a00, 0x28dc, 0x3000 },

-  { 0x9a00, 0x28da, 0x2000 },

-  { 0x1a00, 0x28d9, 0x0000 },

-  { 0x1a00, 0x28db, 0x0000 },

-  { 0x9a00, 0x28de, 0x2000 },

-  { 0x1a00, 0x28dd, 0x0000 },

-  { 0x1a00, 0x28df, 0x0000 },

-  { 0x9900, 0x2900, 0x6000 },

-  { 0x9a00, 0x28f0, 0x5000 },

-  { 0x9a00, 0x28e8, 0x4000 },

-  { 0x9a00, 0x28e4, 0x3000 },

-  { 0x9a00, 0x28e2, 0x2000 },

-  { 0x1a00, 0x28e1, 0x0000 },

-  { 0x1a00, 0x28e3, 0x0000 },

-  { 0x9a00, 0x28e6, 0x2000 },

-  { 0x1a00, 0x28e5, 0x0000 },

-  { 0x1a00, 0x28e7, 0x0000 },

-  { 0x9a00, 0x28ec, 0x3000 },

-  { 0x9a00, 0x28ea, 0x2000 },

-  { 0x1a00, 0x28e9, 0x0000 },

-  { 0x1a00, 0x28eb, 0x0000 },

-  { 0x9a00, 0x28ee, 0x2000 },

-  { 0x1a00, 0x28ed, 0x0000 },

-  { 0x1a00, 0x28ef, 0x0000 },

-  { 0x9a00, 0x28f8, 0x4000 },

-  { 0x9a00, 0x28f4, 0x3000 },

-  { 0x9a00, 0x28f2, 0x2000 },

-  { 0x1a00, 0x28f1, 0x0000 },

-  { 0x1a00, 0x28f3, 0x0000 },

-  { 0x9a00, 0x28f6, 0x2000 },

-  { 0x1a00, 0x28f5, 0x0000 },

-  { 0x1a00, 0x28f7, 0x0000 },

-  { 0x9a00, 0x28fc, 0x3000 },

-  { 0x9a00, 0x28fa, 0x2000 },

-  { 0x1a00, 0x28f9, 0x0000 },

-  { 0x1a00, 0x28fb, 0x0000 },

-  { 0x9a00, 0x28fe, 0x2000 },

-  { 0x1a00, 0x28fd, 0x0000 },

-  { 0x1a00, 0x28ff, 0x0000 },

-  { 0x9900, 0x2910, 0x5000 },

-  { 0x9900, 0x2908, 0x4000 },

-  { 0x9900, 0x2904, 0x3000 },

-  { 0x9900, 0x2902, 0x2000 },

-  { 0x1900, 0x2901, 0x0000 },

-  { 0x1900, 0x2903, 0x0000 },

-  { 0x9900, 0x2906, 0x2000 },

-  { 0x1900, 0x2905, 0x0000 },

-  { 0x1900, 0x2907, 0x0000 },

-  { 0x9900, 0x290c, 0x3000 },

-  { 0x9900, 0x290a, 0x2000 },

-  { 0x1900, 0x2909, 0x0000 },

-  { 0x1900, 0x290b, 0x0000 },

-  { 0x9900, 0x290e, 0x2000 },

-  { 0x1900, 0x290d, 0x0000 },

-  { 0x1900, 0x290f, 0x0000 },

-  { 0x9900, 0x2918, 0x4000 },

-  { 0x9900, 0x2914, 0x3000 },

-  { 0x9900, 0x2912, 0x2000 },

-  { 0x1900, 0x2911, 0x0000 },

-  { 0x1900, 0x2913, 0x0000 },

-  { 0x9900, 0x2916, 0x2000 },

-  { 0x1900, 0x2915, 0x0000 },

-  { 0x1900, 0x2917, 0x0000 },

-  { 0x9900, 0x291c, 0x3000 },

-  { 0x9900, 0x291a, 0x2000 },

-  { 0x1900, 0x2919, 0x0000 },

-  { 0x1900, 0x291b, 0x0000 },

-  { 0x9900, 0x291e, 0x2000 },

-  { 0x1900, 0x291d, 0x0000 },

-  { 0x1900, 0x291f, 0x0000 },

-  { 0x9900, 0x2960, 0x7000 },

-  { 0x9900, 0x2940, 0x6000 },

-  { 0x9900, 0x2930, 0x5000 },

-  { 0x9900, 0x2928, 0x4000 },

-  { 0x9900, 0x2924, 0x3000 },

-  { 0x9900, 0x2922, 0x2000 },

-  { 0x1900, 0x2921, 0x0000 },

-  { 0x1900, 0x2923, 0x0000 },

-  { 0x9900, 0x2926, 0x2000 },

-  { 0x1900, 0x2925, 0x0000 },

-  { 0x1900, 0x2927, 0x0000 },

-  { 0x9900, 0x292c, 0x3000 },

-  { 0x9900, 0x292a, 0x2000 },

-  { 0x1900, 0x2929, 0x0000 },

-  { 0x1900, 0x292b, 0x0000 },

-  { 0x9900, 0x292e, 0x2000 },

-  { 0x1900, 0x292d, 0x0000 },

-  { 0x1900, 0x292f, 0x0000 },

-  { 0x9900, 0x2938, 0x4000 },

-  { 0x9900, 0x2934, 0x3000 },

-  { 0x9900, 0x2932, 0x2000 },

-  { 0x1900, 0x2931, 0x0000 },

-  { 0x1900, 0x2933, 0x0000 },

-  { 0x9900, 0x2936, 0x2000 },

-  { 0x1900, 0x2935, 0x0000 },

-  { 0x1900, 0x2937, 0x0000 },

-  { 0x9900, 0x293c, 0x3000 },

-  { 0x9900, 0x293a, 0x2000 },

-  { 0x1900, 0x2939, 0x0000 },

-  { 0x1900, 0x293b, 0x0000 },

-  { 0x9900, 0x293e, 0x2000 },

-  { 0x1900, 0x293d, 0x0000 },

-  { 0x1900, 0x293f, 0x0000 },

-  { 0x9900, 0x2950, 0x5000 },

-  { 0x9900, 0x2948, 0x4000 },

-  { 0x9900, 0x2944, 0x3000 },

-  { 0x9900, 0x2942, 0x2000 },

-  { 0x1900, 0x2941, 0x0000 },

-  { 0x1900, 0x2943, 0x0000 },

-  { 0x9900, 0x2946, 0x2000 },

-  { 0x1900, 0x2945, 0x0000 },

-  { 0x1900, 0x2947, 0x0000 },

-  { 0x9900, 0x294c, 0x3000 },

-  { 0x9900, 0x294a, 0x2000 },

-  { 0x1900, 0x2949, 0x0000 },

-  { 0x1900, 0x294b, 0x0000 },

-  { 0x9900, 0x294e, 0x2000 },

-  { 0x1900, 0x294d, 0x0000 },

-  { 0x1900, 0x294f, 0x0000 },

-  { 0x9900, 0x2958, 0x4000 },

-  { 0x9900, 0x2954, 0x3000 },

-  { 0x9900, 0x2952, 0x2000 },

-  { 0x1900, 0x2951, 0x0000 },

-  { 0x1900, 0x2953, 0x0000 },

-  { 0x9900, 0x2956, 0x2000 },

-  { 0x1900, 0x2955, 0x0000 },

-  { 0x1900, 0x2957, 0x0000 },

-  { 0x9900, 0x295c, 0x3000 },

-  { 0x9900, 0x295a, 0x2000 },

-  { 0x1900, 0x2959, 0x0000 },

-  { 0x1900, 0x295b, 0x0000 },

-  { 0x9900, 0x295e, 0x2000 },

-  { 0x1900, 0x295d, 0x0000 },

-  { 0x1900, 0x295f, 0x0000 },

-  { 0x9900, 0x2980, 0x6000 },

-  { 0x9900, 0x2970, 0x5000 },

-  { 0x9900, 0x2968, 0x4000 },

-  { 0x9900, 0x2964, 0x3000 },

-  { 0x9900, 0x2962, 0x2000 },

-  { 0x1900, 0x2961, 0x0000 },

-  { 0x1900, 0x2963, 0x0000 },

-  { 0x9900, 0x2966, 0x2000 },

-  { 0x1900, 0x2965, 0x0000 },

-  { 0x1900, 0x2967, 0x0000 },

-  { 0x9900, 0x296c, 0x3000 },

-  { 0x9900, 0x296a, 0x2000 },

-  { 0x1900, 0x2969, 0x0000 },

-  { 0x1900, 0x296b, 0x0000 },

-  { 0x9900, 0x296e, 0x2000 },

-  { 0x1900, 0x296d, 0x0000 },

-  { 0x1900, 0x296f, 0x0000 },

-  { 0x9900, 0x2978, 0x4000 },

-  { 0x9900, 0x2974, 0x3000 },

-  { 0x9900, 0x2972, 0x2000 },

-  { 0x1900, 0x2971, 0x0000 },

-  { 0x1900, 0x2973, 0x0000 },

-  { 0x9900, 0x2976, 0x2000 },

-  { 0x1900, 0x2975, 0x0000 },

-  { 0x1900, 0x2977, 0x0000 },

-  { 0x9900, 0x297c, 0x3000 },

-  { 0x9900, 0x297a, 0x2000 },

-  { 0x1900, 0x2979, 0x0000 },

-  { 0x1900, 0x297b, 0x0000 },

-  { 0x9900, 0x297e, 0x2000 },

-  { 0x1900, 0x297d, 0x0000 },

-  { 0x1900, 0x297f, 0x0000 },

-  { 0x9200, 0x2990, 0x5000 },

-  { 0x9200, 0x2988, 0x4000 },

-  { 0x9200, 0x2984, 0x3000 },

-  { 0x9900, 0x2982, 0x2000 },

-  { 0x1900, 0x2981, 0x0000 },

-  { 0x1600, 0x2983, 0x0000 },

-  { 0x9200, 0x2986, 0x2000 },

-  { 0x1600, 0x2985, 0x0000 },

-  { 0x1600, 0x2987, 0x0000 },

-  { 0x9200, 0x298c, 0x3000 },

-  { 0x9200, 0x298a, 0x2000 },

-  { 0x1600, 0x2989, 0x0000 },

-  { 0x1600, 0x298b, 0x0000 },

-  { 0x9200, 0x298e, 0x2000 },

-  { 0x1600, 0x298d, 0x0000 },

-  { 0x1600, 0x298f, 0x0000 },

-  { 0x9200, 0x2998, 0x4000 },

-  { 0x9200, 0x2994, 0x3000 },

-  { 0x9200, 0x2992, 0x2000 },

-  { 0x1600, 0x2991, 0x0000 },

-  { 0x1600, 0x2993, 0x0000 },

-  { 0x9200, 0x2996, 0x2000 },

-  { 0x1600, 0x2995, 0x0000 },

-  { 0x1600, 0x2997, 0x0000 },

-  { 0x9900, 0x299c, 0x3000 },

-  { 0x9900, 0x299a, 0x2000 },

-  { 0x1900, 0x2999, 0x0000 },

-  { 0x1900, 0x299b, 0x0000 },

-  { 0x9900, 0x299e, 0x2000 },

-  { 0x1900, 0x299d, 0x0000 },

-  { 0x1900, 0x299f, 0x0000 },

-  { 0x9900, 0x2aa0, 0x9000 },

-  { 0x9900, 0x2a20, 0x8000 },

-  { 0x9900, 0x29e0, 0x7000 },

-  { 0x9900, 0x29c0, 0x6000 },

-  { 0x9900, 0x29b0, 0x5000 },

-  { 0x9900, 0x29a8, 0x4000 },

-  { 0x9900, 0x29a4, 0x3000 },

-  { 0x9900, 0x29a2, 0x2000 },

-  { 0x1900, 0x29a1, 0x0000 },

-  { 0x1900, 0x29a3, 0x0000 },

-  { 0x9900, 0x29a6, 0x2000 },

-  { 0x1900, 0x29a5, 0x0000 },

-  { 0x1900, 0x29a7, 0x0000 },

-  { 0x9900, 0x29ac, 0x3000 },

-  { 0x9900, 0x29aa, 0x2000 },

-  { 0x1900, 0x29a9, 0x0000 },

-  { 0x1900, 0x29ab, 0x0000 },

-  { 0x9900, 0x29ae, 0x2000 },

-  { 0x1900, 0x29ad, 0x0000 },

-  { 0x1900, 0x29af, 0x0000 },

-  { 0x9900, 0x29b8, 0x4000 },

-  { 0x9900, 0x29b4, 0x3000 },

-  { 0x9900, 0x29b2, 0x2000 },

-  { 0x1900, 0x29b1, 0x0000 },

-  { 0x1900, 0x29b3, 0x0000 },

-  { 0x9900, 0x29b6, 0x2000 },

-  { 0x1900, 0x29b5, 0x0000 },

-  { 0x1900, 0x29b7, 0x0000 },

-  { 0x9900, 0x29bc, 0x3000 },

-  { 0x9900, 0x29ba, 0x2000 },

-  { 0x1900, 0x29b9, 0x0000 },

-  { 0x1900, 0x29bb, 0x0000 },

-  { 0x9900, 0x29be, 0x2000 },

-  { 0x1900, 0x29bd, 0x0000 },

-  { 0x1900, 0x29bf, 0x0000 },

-  { 0x9900, 0x29d0, 0x5000 },

-  { 0x9900, 0x29c8, 0x4000 },

-  { 0x9900, 0x29c4, 0x3000 },

-  { 0x9900, 0x29c2, 0x2000 },

-  { 0x1900, 0x29c1, 0x0000 },

-  { 0x1900, 0x29c3, 0x0000 },

-  { 0x9900, 0x29c6, 0x2000 },

-  { 0x1900, 0x29c5, 0x0000 },

-  { 0x1900, 0x29c7, 0x0000 },

-  { 0x9900, 0x29cc, 0x3000 },

-  { 0x9900, 0x29ca, 0x2000 },

-  { 0x1900, 0x29c9, 0x0000 },

-  { 0x1900, 0x29cb, 0x0000 },

-  { 0x9900, 0x29ce, 0x2000 },

-  { 0x1900, 0x29cd, 0x0000 },

-  { 0x1900, 0x29cf, 0x0000 },

-  { 0x9600, 0x29d8, 0x4000 },

-  { 0x9900, 0x29d4, 0x3000 },

-  { 0x9900, 0x29d2, 0x2000 },

-  { 0x1900, 0x29d1, 0x0000 },

-  { 0x1900, 0x29d3, 0x0000 },

-  { 0x9900, 0x29d6, 0x2000 },

-  { 0x1900, 0x29d5, 0x0000 },

-  { 0x1900, 0x29d7, 0x0000 },

-  { 0x9900, 0x29dc, 0x3000 },

-  { 0x9600, 0x29da, 0x2000 },

-  { 0x1200, 0x29d9, 0x0000 },

-  { 0x1200, 0x29db, 0x0000 },

-  { 0x9900, 0x29de, 0x2000 },

-  { 0x1900, 0x29dd, 0x0000 },

-  { 0x1900, 0x29df, 0x0000 },

-  { 0x9900, 0x2a00, 0x6000 },

-  { 0x9900, 0x29f0, 0x5000 },

-  { 0x9900, 0x29e8, 0x4000 },

-  { 0x9900, 0x29e4, 0x3000 },

-  { 0x9900, 0x29e2, 0x2000 },

-  { 0x1900, 0x29e1, 0x0000 },

-  { 0x1900, 0x29e3, 0x0000 },

-  { 0x9900, 0x29e6, 0x2000 },

-  { 0x1900, 0x29e5, 0x0000 },

-  { 0x1900, 0x29e7, 0x0000 },

-  { 0x9900, 0x29ec, 0x3000 },

-  { 0x9900, 0x29ea, 0x2000 },

-  { 0x1900, 0x29e9, 0x0000 },

-  { 0x1900, 0x29eb, 0x0000 },

-  { 0x9900, 0x29ee, 0x2000 },

-  { 0x1900, 0x29ed, 0x0000 },

-  { 0x1900, 0x29ef, 0x0000 },

-  { 0x9900, 0x29f8, 0x4000 },

-  { 0x9900, 0x29f4, 0x3000 },

-  { 0x9900, 0x29f2, 0x2000 },

-  { 0x1900, 0x29f1, 0x0000 },

-  { 0x1900, 0x29f3, 0x0000 },

-  { 0x9900, 0x29f6, 0x2000 },

-  { 0x1900, 0x29f5, 0x0000 },

-  { 0x1900, 0x29f7, 0x0000 },

-  { 0x9600, 0x29fc, 0x3000 },

-  { 0x9900, 0x29fa, 0x2000 },

-  { 0x1900, 0x29f9, 0x0000 },

-  { 0x1900, 0x29fb, 0x0000 },

-  { 0x9900, 0x29fe, 0x2000 },

-  { 0x1200, 0x29fd, 0x0000 },

-  { 0x1900, 0x29ff, 0x0000 },

-  { 0x9900, 0x2a10, 0x5000 },

-  { 0x9900, 0x2a08, 0x4000 },

-  { 0x9900, 0x2a04, 0x3000 },

-  { 0x9900, 0x2a02, 0x2000 },

-  { 0x1900, 0x2a01, 0x0000 },

-  { 0x1900, 0x2a03, 0x0000 },

-  { 0x9900, 0x2a06, 0x2000 },

-  { 0x1900, 0x2a05, 0x0000 },

-  { 0x1900, 0x2a07, 0x0000 },

-  { 0x9900, 0x2a0c, 0x3000 },

-  { 0x9900, 0x2a0a, 0x2000 },

-  { 0x1900, 0x2a09, 0x0000 },

-  { 0x1900, 0x2a0b, 0x0000 },

-  { 0x9900, 0x2a0e, 0x2000 },

-  { 0x1900, 0x2a0d, 0x0000 },

-  { 0x1900, 0x2a0f, 0x0000 },

-  { 0x9900, 0x2a18, 0x4000 },

-  { 0x9900, 0x2a14, 0x3000 },

-  { 0x9900, 0x2a12, 0x2000 },

-  { 0x1900, 0x2a11, 0x0000 },

-  { 0x1900, 0x2a13, 0x0000 },

-  { 0x9900, 0x2a16, 0x2000 },

-  { 0x1900, 0x2a15, 0x0000 },

-  { 0x1900, 0x2a17, 0x0000 },

-  { 0x9900, 0x2a1c, 0x3000 },

-  { 0x9900, 0x2a1a, 0x2000 },

-  { 0x1900, 0x2a19, 0x0000 },

-  { 0x1900, 0x2a1b, 0x0000 },

-  { 0x9900, 0x2a1e, 0x2000 },

-  { 0x1900, 0x2a1d, 0x0000 },

-  { 0x1900, 0x2a1f, 0x0000 },

-  { 0x9900, 0x2a60, 0x7000 },

-  { 0x9900, 0x2a40, 0x6000 },

-  { 0x9900, 0x2a30, 0x5000 },

-  { 0x9900, 0x2a28, 0x4000 },

-  { 0x9900, 0x2a24, 0x3000 },

-  { 0x9900, 0x2a22, 0x2000 },

-  { 0x1900, 0x2a21, 0x0000 },

-  { 0x1900, 0x2a23, 0x0000 },

-  { 0x9900, 0x2a26, 0x2000 },

-  { 0x1900, 0x2a25, 0x0000 },

-  { 0x1900, 0x2a27, 0x0000 },

-  { 0x9900, 0x2a2c, 0x3000 },

-  { 0x9900, 0x2a2a, 0x2000 },

-  { 0x1900, 0x2a29, 0x0000 },

-  { 0x1900, 0x2a2b, 0x0000 },

-  { 0x9900, 0x2a2e, 0x2000 },

-  { 0x1900, 0x2a2d, 0x0000 },

-  { 0x1900, 0x2a2f, 0x0000 },

-  { 0x9900, 0x2a38, 0x4000 },

-  { 0x9900, 0x2a34, 0x3000 },

-  { 0x9900, 0x2a32, 0x2000 },

-  { 0x1900, 0x2a31, 0x0000 },

-  { 0x1900, 0x2a33, 0x0000 },

-  { 0x9900, 0x2a36, 0x2000 },

-  { 0x1900, 0x2a35, 0x0000 },

-  { 0x1900, 0x2a37, 0x0000 },

-  { 0x9900, 0x2a3c, 0x3000 },

-  { 0x9900, 0x2a3a, 0x2000 },

-  { 0x1900, 0x2a39, 0x0000 },

-  { 0x1900, 0x2a3b, 0x0000 },

-  { 0x9900, 0x2a3e, 0x2000 },

-  { 0x1900, 0x2a3d, 0x0000 },

-  { 0x1900, 0x2a3f, 0x0000 },

-  { 0x9900, 0x2a50, 0x5000 },

-  { 0x9900, 0x2a48, 0x4000 },

-  { 0x9900, 0x2a44, 0x3000 },

-  { 0x9900, 0x2a42, 0x2000 },

-  { 0x1900, 0x2a41, 0x0000 },

-  { 0x1900, 0x2a43, 0x0000 },

-  { 0x9900, 0x2a46, 0x2000 },

-  { 0x1900, 0x2a45, 0x0000 },

-  { 0x1900, 0x2a47, 0x0000 },

-  { 0x9900, 0x2a4c, 0x3000 },

-  { 0x9900, 0x2a4a, 0x2000 },

-  { 0x1900, 0x2a49, 0x0000 },

-  { 0x1900, 0x2a4b, 0x0000 },

-  { 0x9900, 0x2a4e, 0x2000 },

-  { 0x1900, 0x2a4d, 0x0000 },

-  { 0x1900, 0x2a4f, 0x0000 },

-  { 0x9900, 0x2a58, 0x4000 },

-  { 0x9900, 0x2a54, 0x3000 },

-  { 0x9900, 0x2a52, 0x2000 },

-  { 0x1900, 0x2a51, 0x0000 },

-  { 0x1900, 0x2a53, 0x0000 },

-  { 0x9900, 0x2a56, 0x2000 },

-  { 0x1900, 0x2a55, 0x0000 },

-  { 0x1900, 0x2a57, 0x0000 },

-  { 0x9900, 0x2a5c, 0x3000 },

-  { 0x9900, 0x2a5a, 0x2000 },

-  { 0x1900, 0x2a59, 0x0000 },

-  { 0x1900, 0x2a5b, 0x0000 },

-  { 0x9900, 0x2a5e, 0x2000 },

-  { 0x1900, 0x2a5d, 0x0000 },

-  { 0x1900, 0x2a5f, 0x0000 },

-  { 0x9900, 0x2a80, 0x6000 },

-  { 0x9900, 0x2a70, 0x5000 },

-  { 0x9900, 0x2a68, 0x4000 },

-  { 0x9900, 0x2a64, 0x3000 },

-  { 0x9900, 0x2a62, 0x2000 },

-  { 0x1900, 0x2a61, 0x0000 },

-  { 0x1900, 0x2a63, 0x0000 },

-  { 0x9900, 0x2a66, 0x2000 },

-  { 0x1900, 0x2a65, 0x0000 },

-  { 0x1900, 0x2a67, 0x0000 },

-  { 0x9900, 0x2a6c, 0x3000 },

-  { 0x9900, 0x2a6a, 0x2000 },

-  { 0x1900, 0x2a69, 0x0000 },

-  { 0x1900, 0x2a6b, 0x0000 },

-  { 0x9900, 0x2a6e, 0x2000 },

-  { 0x1900, 0x2a6d, 0x0000 },

-  { 0x1900, 0x2a6f, 0x0000 },

-  { 0x9900, 0x2a78, 0x4000 },

-  { 0x9900, 0x2a74, 0x3000 },

-  { 0x9900, 0x2a72, 0x2000 },

-  { 0x1900, 0x2a71, 0x0000 },

-  { 0x1900, 0x2a73, 0x0000 },

-  { 0x9900, 0x2a76, 0x2000 },

-  { 0x1900, 0x2a75, 0x0000 },

-  { 0x1900, 0x2a77, 0x0000 },

-  { 0x9900, 0x2a7c, 0x3000 },

-  { 0x9900, 0x2a7a, 0x2000 },

-  { 0x1900, 0x2a79, 0x0000 },

-  { 0x1900, 0x2a7b, 0x0000 },

-  { 0x9900, 0x2a7e, 0x2000 },

-  { 0x1900, 0x2a7d, 0x0000 },

-  { 0x1900, 0x2a7f, 0x0000 },

-  { 0x9900, 0x2a90, 0x5000 },

-  { 0x9900, 0x2a88, 0x4000 },

-  { 0x9900, 0x2a84, 0x3000 },

-  { 0x9900, 0x2a82, 0x2000 },

-  { 0x1900, 0x2a81, 0x0000 },

-  { 0x1900, 0x2a83, 0x0000 },

-  { 0x9900, 0x2a86, 0x2000 },

-  { 0x1900, 0x2a85, 0x0000 },

-  { 0x1900, 0x2a87, 0x0000 },

-  { 0x9900, 0x2a8c, 0x3000 },

-  { 0x9900, 0x2a8a, 0x2000 },

-  { 0x1900, 0x2a89, 0x0000 },

-  { 0x1900, 0x2a8b, 0x0000 },

-  { 0x9900, 0x2a8e, 0x2000 },

-  { 0x1900, 0x2a8d, 0x0000 },

-  { 0x1900, 0x2a8f, 0x0000 },

-  { 0x9900, 0x2a98, 0x4000 },

-  { 0x9900, 0x2a94, 0x3000 },

-  { 0x9900, 0x2a92, 0x2000 },

-  { 0x1900, 0x2a91, 0x0000 },

-  { 0x1900, 0x2a93, 0x0000 },

-  { 0x9900, 0x2a96, 0x2000 },

-  { 0x1900, 0x2a95, 0x0000 },

-  { 0x1900, 0x2a97, 0x0000 },

-  { 0x9900, 0x2a9c, 0x3000 },

-  { 0x9900, 0x2a9a, 0x2000 },

-  { 0x1900, 0x2a99, 0x0000 },

-  { 0x1900, 0x2a9b, 0x0000 },

-  { 0x9900, 0x2a9e, 0x2000 },

-  { 0x1900, 0x2a9d, 0x0000 },

-  { 0x1900, 0x2a9f, 0x0000 },

-  { 0x9a00, 0x2e92, 0x8000 },

-  { 0x9900, 0x2ae0, 0x7000 },

-  { 0x9900, 0x2ac0, 0x6000 },

-  { 0x9900, 0x2ab0, 0x5000 },

-  { 0x9900, 0x2aa8, 0x4000 },

-  { 0x9900, 0x2aa4, 0x3000 },

-  { 0x9900, 0x2aa2, 0x2000 },

-  { 0x1900, 0x2aa1, 0x0000 },

-  { 0x1900, 0x2aa3, 0x0000 },

-  { 0x9900, 0x2aa6, 0x2000 },

-  { 0x1900, 0x2aa5, 0x0000 },

-  { 0x1900, 0x2aa7, 0x0000 },

-  { 0x9900, 0x2aac, 0x3000 },

-  { 0x9900, 0x2aaa, 0x2000 },

-  { 0x1900, 0x2aa9, 0x0000 },

-  { 0x1900, 0x2aab, 0x0000 },

-  { 0x9900, 0x2aae, 0x2000 },

-  { 0x1900, 0x2aad, 0x0000 },

-  { 0x1900, 0x2aaf, 0x0000 },

-  { 0x9900, 0x2ab8, 0x4000 },

-  { 0x9900, 0x2ab4, 0x3000 },

-  { 0x9900, 0x2ab2, 0x2000 },

-  { 0x1900, 0x2ab1, 0x0000 },

-  { 0x1900, 0x2ab3, 0x0000 },

-  { 0x9900, 0x2ab6, 0x2000 },

-  { 0x1900, 0x2ab5, 0x0000 },

-  { 0x1900, 0x2ab7, 0x0000 },

-  { 0x9900, 0x2abc, 0x3000 },

-  { 0x9900, 0x2aba, 0x2000 },

-  { 0x1900, 0x2ab9, 0x0000 },

-  { 0x1900, 0x2abb, 0x0000 },

-  { 0x9900, 0x2abe, 0x2000 },

-  { 0x1900, 0x2abd, 0x0000 },

-  { 0x1900, 0x2abf, 0x0000 },

-  { 0x9900, 0x2ad0, 0x5000 },

-  { 0x9900, 0x2ac8, 0x4000 },

-  { 0x9900, 0x2ac4, 0x3000 },

-  { 0x9900, 0x2ac2, 0x2000 },

-  { 0x1900, 0x2ac1, 0x0000 },

-  { 0x1900, 0x2ac3, 0x0000 },

-  { 0x9900, 0x2ac6, 0x2000 },

-  { 0x1900, 0x2ac5, 0x0000 },

-  { 0x1900, 0x2ac7, 0x0000 },

-  { 0x9900, 0x2acc, 0x3000 },

-  { 0x9900, 0x2aca, 0x2000 },

-  { 0x1900, 0x2ac9, 0x0000 },

-  { 0x1900, 0x2acb, 0x0000 },

-  { 0x9900, 0x2ace, 0x2000 },

-  { 0x1900, 0x2acd, 0x0000 },

-  { 0x1900, 0x2acf, 0x0000 },

-  { 0x9900, 0x2ad8, 0x4000 },

-  { 0x9900, 0x2ad4, 0x3000 },

-  { 0x9900, 0x2ad2, 0x2000 },

-  { 0x1900, 0x2ad1, 0x0000 },

-  { 0x1900, 0x2ad3, 0x0000 },

-  { 0x9900, 0x2ad6, 0x2000 },

-  { 0x1900, 0x2ad5, 0x0000 },

-  { 0x1900, 0x2ad7, 0x0000 },

-  { 0x9900, 0x2adc, 0x3000 },

-  { 0x9900, 0x2ada, 0x2000 },

-  { 0x1900, 0x2ad9, 0x0000 },

-  { 0x1900, 0x2adb, 0x0000 },

-  { 0x9900, 0x2ade, 0x2000 },

-  { 0x1900, 0x2add, 0x0000 },

-  { 0x1900, 0x2adf, 0x0000 },

-  { 0x9a00, 0x2b00, 0x6000 },

-  { 0x9900, 0x2af0, 0x5000 },

-  { 0x9900, 0x2ae8, 0x4000 },

-  { 0x9900, 0x2ae4, 0x3000 },

-  { 0x9900, 0x2ae2, 0x2000 },

-  { 0x1900, 0x2ae1, 0x0000 },

-  { 0x1900, 0x2ae3, 0x0000 },

-  { 0x9900, 0x2ae6, 0x2000 },

-  { 0x1900, 0x2ae5, 0x0000 },

-  { 0x1900, 0x2ae7, 0x0000 },

-  { 0x9900, 0x2aec, 0x3000 },

-  { 0x9900, 0x2aea, 0x2000 },

-  { 0x1900, 0x2ae9, 0x0000 },

-  { 0x1900, 0x2aeb, 0x0000 },

-  { 0x9900, 0x2aee, 0x2000 },

-  { 0x1900, 0x2aed, 0x0000 },

-  { 0x1900, 0x2aef, 0x0000 },

-  { 0x9900, 0x2af8, 0x4000 },

-  { 0x9900, 0x2af4, 0x3000 },

-  { 0x9900, 0x2af2, 0x2000 },

-  { 0x1900, 0x2af1, 0x0000 },

-  { 0x1900, 0x2af3, 0x0000 },

-  { 0x9900, 0x2af6, 0x2000 },

-  { 0x1900, 0x2af5, 0x0000 },

-  { 0x1900, 0x2af7, 0x0000 },

-  { 0x9900, 0x2afc, 0x3000 },

-  { 0x9900, 0x2afa, 0x2000 },

-  { 0x1900, 0x2af9, 0x0000 },

-  { 0x1900, 0x2afb, 0x0000 },

-  { 0x9900, 0x2afe, 0x2000 },

-  { 0x1900, 0x2afd, 0x0000 },

-  { 0x1900, 0x2aff, 0x0000 },

-  { 0x9a00, 0x2e82, 0x5000 },

-  { 0x9a00, 0x2b08, 0x4000 },

-  { 0x9a00, 0x2b04, 0x3000 },

-  { 0x9a00, 0x2b02, 0x2000 },

-  { 0x1a00, 0x2b01, 0x0000 },

-  { 0x1a00, 0x2b03, 0x0000 },

-  { 0x9a00, 0x2b06, 0x2000 },

-  { 0x1a00, 0x2b05, 0x0000 },

-  { 0x1a00, 0x2b07, 0x0000 },

-  { 0x9a00, 0x2b0c, 0x3000 },

-  { 0x9a00, 0x2b0a, 0x2000 },

-  { 0x1a00, 0x2b09, 0x0000 },

-  { 0x1a00, 0x2b0b, 0x0000 },

-  { 0x9a00, 0x2e80, 0x2000 },

-  { 0x1a00, 0x2b0d, 0x0000 },

-  { 0x1a00, 0x2e81, 0x0000 },

-  { 0x9a00, 0x2e8a, 0x4000 },

-  { 0x9a00, 0x2e86, 0x3000 },

-  { 0x9a00, 0x2e84, 0x2000 },

-  { 0x1a00, 0x2e83, 0x0000 },

-  { 0x1a00, 0x2e85, 0x0000 },

-  { 0x9a00, 0x2e88, 0x2000 },

-  { 0x1a00, 0x2e87, 0x0000 },

-  { 0x1a00, 0x2e89, 0x0000 },

-  { 0x9a00, 0x2e8e, 0x3000 },

-  { 0x9a00, 0x2e8c, 0x2000 },

-  { 0x1a00, 0x2e8b, 0x0000 },

-  { 0x1a00, 0x2e8d, 0x0000 },

-  { 0x9a00, 0x2e90, 0x2000 },

-  { 0x1a00, 0x2e8f, 0x0000 },

-  { 0x1a00, 0x2e91, 0x0000 },

-  { 0x9a00, 0x2ed3, 0x7000 },

-  { 0x9a00, 0x2eb3, 0x6000 },

-  { 0x9a00, 0x2ea3, 0x5000 },

-  { 0x9a00, 0x2e9b, 0x4000 },

-  { 0x9a00, 0x2e96, 0x3000 },

-  { 0x9a00, 0x2e94, 0x2000 },

-  { 0x1a00, 0x2e93, 0x0000 },

-  { 0x1a00, 0x2e95, 0x0000 },

-  { 0x9a00, 0x2e98, 0x2000 },

-  { 0x1a00, 0x2e97, 0x0000 },

-  { 0x1a00, 0x2e99, 0x0000 },

-  { 0x9a00, 0x2e9f, 0x3000 },

-  { 0x9a00, 0x2e9d, 0x2000 },

-  { 0x1a00, 0x2e9c, 0x0000 },

-  { 0x1a00, 0x2e9e, 0x0000 },

-  { 0x9a00, 0x2ea1, 0x2000 },

-  { 0x1a00, 0x2ea0, 0x0000 },

-  { 0x1a00, 0x2ea2, 0x0000 },

-  { 0x9a00, 0x2eab, 0x4000 },

-  { 0x9a00, 0x2ea7, 0x3000 },

-  { 0x9a00, 0x2ea5, 0x2000 },

-  { 0x1a00, 0x2ea4, 0x0000 },

-  { 0x1a00, 0x2ea6, 0x0000 },

-  { 0x9a00, 0x2ea9, 0x2000 },

-  { 0x1a00, 0x2ea8, 0x0000 },

-  { 0x1a00, 0x2eaa, 0x0000 },

-  { 0x9a00, 0x2eaf, 0x3000 },

-  { 0x9a00, 0x2ead, 0x2000 },

-  { 0x1a00, 0x2eac, 0x0000 },

-  { 0x1a00, 0x2eae, 0x0000 },

-  { 0x9a00, 0x2eb1, 0x2000 },

-  { 0x1a00, 0x2eb0, 0x0000 },

-  { 0x1a00, 0x2eb2, 0x0000 },

-  { 0x9a00, 0x2ec3, 0x5000 },

-  { 0x9a00, 0x2ebb, 0x4000 },

-  { 0x9a00, 0x2eb7, 0x3000 },

-  { 0x9a00, 0x2eb5, 0x2000 },

-  { 0x1a00, 0x2eb4, 0x0000 },

-  { 0x1a00, 0x2eb6, 0x0000 },

-  { 0x9a00, 0x2eb9, 0x2000 },

-  { 0x1a00, 0x2eb8, 0x0000 },

-  { 0x1a00, 0x2eba, 0x0000 },

-  { 0x9a00, 0x2ebf, 0x3000 },

-  { 0x9a00, 0x2ebd, 0x2000 },

-  { 0x1a00, 0x2ebc, 0x0000 },

-  { 0x1a00, 0x2ebe, 0x0000 },

-  { 0x9a00, 0x2ec1, 0x2000 },

-  { 0x1a00, 0x2ec0, 0x0000 },

-  { 0x1a00, 0x2ec2, 0x0000 },

-  { 0x9a00, 0x2ecb, 0x4000 },

-  { 0x9a00, 0x2ec7, 0x3000 },

-  { 0x9a00, 0x2ec5, 0x2000 },

-  { 0x1a00, 0x2ec4, 0x0000 },

-  { 0x1a00, 0x2ec6, 0x0000 },

-  { 0x9a00, 0x2ec9, 0x2000 },

-  { 0x1a00, 0x2ec8, 0x0000 },

-  { 0x1a00, 0x2eca, 0x0000 },

-  { 0x9a00, 0x2ecf, 0x3000 },

-  { 0x9a00, 0x2ecd, 0x2000 },

-  { 0x1a00, 0x2ecc, 0x0000 },

-  { 0x1a00, 0x2ece, 0x0000 },

-  { 0x9a00, 0x2ed1, 0x2000 },

-  { 0x1a00, 0x2ed0, 0x0000 },

-  { 0x1a00, 0x2ed2, 0x0000 },

-  { 0x9a00, 0x2ef3, 0x6000 },

-  { 0x9a00, 0x2ee3, 0x5000 },

-  { 0x9a00, 0x2edb, 0x4000 },

-  { 0x9a00, 0x2ed7, 0x3000 },

-  { 0x9a00, 0x2ed5, 0x2000 },

-  { 0x1a00, 0x2ed4, 0x0000 },

-  { 0x1a00, 0x2ed6, 0x0000 },

-  { 0x9a00, 0x2ed9, 0x2000 },

-  { 0x1a00, 0x2ed8, 0x0000 },

-  { 0x1a00, 0x2eda, 0x0000 },

-  { 0x9a00, 0x2edf, 0x3000 },

-  { 0x9a00, 0x2edd, 0x2000 },

-  { 0x1a00, 0x2edc, 0x0000 },

-  { 0x1a00, 0x2ede, 0x0000 },

-  { 0x9a00, 0x2ee1, 0x2000 },

-  { 0x1a00, 0x2ee0, 0x0000 },

-  { 0x1a00, 0x2ee2, 0x0000 },

-  { 0x9a00, 0x2eeb, 0x4000 },

-  { 0x9a00, 0x2ee7, 0x3000 },

-  { 0x9a00, 0x2ee5, 0x2000 },

-  { 0x1a00, 0x2ee4, 0x0000 },

-  { 0x1a00, 0x2ee6, 0x0000 },

-  { 0x9a00, 0x2ee9, 0x2000 },

-  { 0x1a00, 0x2ee8, 0x0000 },

-  { 0x1a00, 0x2eea, 0x0000 },

-  { 0x9a00, 0x2eef, 0x3000 },

-  { 0x9a00, 0x2eed, 0x2000 },

-  { 0x1a00, 0x2eec, 0x0000 },

-  { 0x1a00, 0x2eee, 0x0000 },

-  { 0x9a00, 0x2ef1, 0x2000 },

-  { 0x1a00, 0x2ef0, 0x0000 },

-  { 0x1a00, 0x2ef2, 0x0000 },

-  { 0x9a00, 0x2f0f, 0x5000 },

-  { 0x9a00, 0x2f07, 0x4000 },

-  { 0x9a00, 0x2f03, 0x3000 },

-  { 0x9a00, 0x2f01, 0x2000 },

-  { 0x1a00, 0x2f00, 0x0000 },

-  { 0x1a00, 0x2f02, 0x0000 },

-  { 0x9a00, 0x2f05, 0x2000 },

-  { 0x1a00, 0x2f04, 0x0000 },

-  { 0x1a00, 0x2f06, 0x0000 },

-  { 0x9a00, 0x2f0b, 0x3000 },

-  { 0x9a00, 0x2f09, 0x2000 },

-  { 0x1a00, 0x2f08, 0x0000 },

-  { 0x1a00, 0x2f0a, 0x0000 },

-  { 0x9a00, 0x2f0d, 0x2000 },

-  { 0x1a00, 0x2f0c, 0x0000 },

-  { 0x1a00, 0x2f0e, 0x0000 },

-  { 0x9a00, 0x2f17, 0x4000 },

-  { 0x9a00, 0x2f13, 0x3000 },

-  { 0x9a00, 0x2f11, 0x2000 },

-  { 0x1a00, 0x2f10, 0x0000 },

-  { 0x1a00, 0x2f12, 0x0000 },

-  { 0x9a00, 0x2f15, 0x2000 },

-  { 0x1a00, 0x2f14, 0x0000 },

-  { 0x1a00, 0x2f16, 0x0000 },

-  { 0x9a00, 0x2f1b, 0x3000 },

-  { 0x9a00, 0x2f19, 0x2000 },

-  { 0x1a00, 0x2f18, 0x0000 },

-  { 0x1a00, 0x2f1a, 0x0000 },

-  { 0x9a00, 0x2f1d, 0x2000 },

-  { 0x1a00, 0x2f1c, 0x0000 },

-  { 0x1a00, 0x2f1e, 0x0000 },

-  { 0x8701, 0x00f0, 0xd000 },

-  { 0x8700, 0xa34d, 0xc000 },

-  { 0x9a00, 0x3391, 0xb000 },

-  { 0x8700, 0x3149, 0xa000 },

-  { 0x9500, 0x303d, 0x9000 },

-  { 0x9a00, 0x2f9f, 0x8000 },

-  { 0x9a00, 0x2f5f, 0x7000 },

-  { 0x9a00, 0x2f3f, 0x6000 },

-  { 0x9a00, 0x2f2f, 0x5000 },

-  { 0x9a00, 0x2f27, 0x4000 },

-  { 0x9a00, 0x2f23, 0x3000 },

-  { 0x9a00, 0x2f21, 0x2000 },

-  { 0x1a00, 0x2f20, 0x0000 },

-  { 0x1a00, 0x2f22, 0x0000 },

-  { 0x9a00, 0x2f25, 0x2000 },

-  { 0x1a00, 0x2f24, 0x0000 },

-  { 0x1a00, 0x2f26, 0x0000 },

-  { 0x9a00, 0x2f2b, 0x3000 },

-  { 0x9a00, 0x2f29, 0x2000 },

-  { 0x1a00, 0x2f28, 0x0000 },

-  { 0x1a00, 0x2f2a, 0x0000 },

-  { 0x9a00, 0x2f2d, 0x2000 },

-  { 0x1a00, 0x2f2c, 0x0000 },

-  { 0x1a00, 0x2f2e, 0x0000 },

-  { 0x9a00, 0x2f37, 0x4000 },

-  { 0x9a00, 0x2f33, 0x3000 },

-  { 0x9a00, 0x2f31, 0x2000 },

-  { 0x1a00, 0x2f30, 0x0000 },

-  { 0x1a00, 0x2f32, 0x0000 },

-  { 0x9a00, 0x2f35, 0x2000 },

-  { 0x1a00, 0x2f34, 0x0000 },

-  { 0x1a00, 0x2f36, 0x0000 },

-  { 0x9a00, 0x2f3b, 0x3000 },

-  { 0x9a00, 0x2f39, 0x2000 },

-  { 0x1a00, 0x2f38, 0x0000 },

-  { 0x1a00, 0x2f3a, 0x0000 },

-  { 0x9a00, 0x2f3d, 0x2000 },

-  { 0x1a00, 0x2f3c, 0x0000 },

-  { 0x1a00, 0x2f3e, 0x0000 },

-  { 0x9a00, 0x2f4f, 0x5000 },

-  { 0x9a00, 0x2f47, 0x4000 },

-  { 0x9a00, 0x2f43, 0x3000 },

-  { 0x9a00, 0x2f41, 0x2000 },

-  { 0x1a00, 0x2f40, 0x0000 },

-  { 0x1a00, 0x2f42, 0x0000 },

-  { 0x9a00, 0x2f45, 0x2000 },

-  { 0x1a00, 0x2f44, 0x0000 },

-  { 0x1a00, 0x2f46, 0x0000 },

-  { 0x9a00, 0x2f4b, 0x3000 },

-  { 0x9a00, 0x2f49, 0x2000 },

-  { 0x1a00, 0x2f48, 0x0000 },

-  { 0x1a00, 0x2f4a, 0x0000 },

-  { 0x9a00, 0x2f4d, 0x2000 },

-  { 0x1a00, 0x2f4c, 0x0000 },

-  { 0x1a00, 0x2f4e, 0x0000 },

-  { 0x9a00, 0x2f57, 0x4000 },

-  { 0x9a00, 0x2f53, 0x3000 },

-  { 0x9a00, 0x2f51, 0x2000 },

-  { 0x1a00, 0x2f50, 0x0000 },

-  { 0x1a00, 0x2f52, 0x0000 },

-  { 0x9a00, 0x2f55, 0x2000 },

-  { 0x1a00, 0x2f54, 0x0000 },

-  { 0x1a00, 0x2f56, 0x0000 },

-  { 0x9a00, 0x2f5b, 0x3000 },

-  { 0x9a00, 0x2f59, 0x2000 },

-  { 0x1a00, 0x2f58, 0x0000 },

-  { 0x1a00, 0x2f5a, 0x0000 },

-  { 0x9a00, 0x2f5d, 0x2000 },

-  { 0x1a00, 0x2f5c, 0x0000 },

-  { 0x1a00, 0x2f5e, 0x0000 },

-  { 0x9a00, 0x2f7f, 0x6000 },

-  { 0x9a00, 0x2f6f, 0x5000 },

-  { 0x9a00, 0x2f67, 0x4000 },

-  { 0x9a00, 0x2f63, 0x3000 },

-  { 0x9a00, 0x2f61, 0x2000 },

-  { 0x1a00, 0x2f60, 0x0000 },

-  { 0x1a00, 0x2f62, 0x0000 },

-  { 0x9a00, 0x2f65, 0x2000 },

-  { 0x1a00, 0x2f64, 0x0000 },

-  { 0x1a00, 0x2f66, 0x0000 },

-  { 0x9a00, 0x2f6b, 0x3000 },

-  { 0x9a00, 0x2f69, 0x2000 },

-  { 0x1a00, 0x2f68, 0x0000 },

-  { 0x1a00, 0x2f6a, 0x0000 },

-  { 0x9a00, 0x2f6d, 0x2000 },

-  { 0x1a00, 0x2f6c, 0x0000 },

-  { 0x1a00, 0x2f6e, 0x0000 },

-  { 0x9a00, 0x2f77, 0x4000 },

-  { 0x9a00, 0x2f73, 0x3000 },

-  { 0x9a00, 0x2f71, 0x2000 },

-  { 0x1a00, 0x2f70, 0x0000 },

-  { 0x1a00, 0x2f72, 0x0000 },

-  { 0x9a00, 0x2f75, 0x2000 },

-  { 0x1a00, 0x2f74, 0x0000 },

-  { 0x1a00, 0x2f76, 0x0000 },

-  { 0x9a00, 0x2f7b, 0x3000 },

-  { 0x9a00, 0x2f79, 0x2000 },

-  { 0x1a00, 0x2f78, 0x0000 },

-  { 0x1a00, 0x2f7a, 0x0000 },

-  { 0x9a00, 0x2f7d, 0x2000 },

-  { 0x1a00, 0x2f7c, 0x0000 },

-  { 0x1a00, 0x2f7e, 0x0000 },

-  { 0x9a00, 0x2f8f, 0x5000 },

-  { 0x9a00, 0x2f87, 0x4000 },

-  { 0x9a00, 0x2f83, 0x3000 },

-  { 0x9a00, 0x2f81, 0x2000 },

-  { 0x1a00, 0x2f80, 0x0000 },

-  { 0x1a00, 0x2f82, 0x0000 },

-  { 0x9a00, 0x2f85, 0x2000 },

-  { 0x1a00, 0x2f84, 0x0000 },

-  { 0x1a00, 0x2f86, 0x0000 },

-  { 0x9a00, 0x2f8b, 0x3000 },

-  { 0x9a00, 0x2f89, 0x2000 },

-  { 0x1a00, 0x2f88, 0x0000 },

-  { 0x1a00, 0x2f8a, 0x0000 },

-  { 0x9a00, 0x2f8d, 0x2000 },

-  { 0x1a00, 0x2f8c, 0x0000 },

-  { 0x1a00, 0x2f8e, 0x0000 },

-  { 0x9a00, 0x2f97, 0x4000 },

-  { 0x9a00, 0x2f93, 0x3000 },

-  { 0x9a00, 0x2f91, 0x2000 },

-  { 0x1a00, 0x2f90, 0x0000 },

-  { 0x1a00, 0x2f92, 0x0000 },

-  { 0x9a00, 0x2f95, 0x2000 },

-  { 0x1a00, 0x2f94, 0x0000 },

-  { 0x1a00, 0x2f96, 0x0000 },

-  { 0x9a00, 0x2f9b, 0x3000 },

-  { 0x9a00, 0x2f99, 0x2000 },

-  { 0x1a00, 0x2f98, 0x0000 },

-  { 0x1a00, 0x2f9a, 0x0000 },

-  { 0x9a00, 0x2f9d, 0x2000 },

-  { 0x1a00, 0x2f9c, 0x0000 },

-  { 0x1a00, 0x2f9e, 0x0000 },

-  { 0x9a00, 0x2ff9, 0x7000 },

-  { 0x9a00, 0x2fbf, 0x6000 },

-  { 0x9a00, 0x2faf, 0x5000 },

-  { 0x9a00, 0x2fa7, 0x4000 },

-  { 0x9a00, 0x2fa3, 0x3000 },

-  { 0x9a00, 0x2fa1, 0x2000 },

-  { 0x1a00, 0x2fa0, 0x0000 },

-  { 0x1a00, 0x2fa2, 0x0000 },

-  { 0x9a00, 0x2fa5, 0x2000 },

-  { 0x1a00, 0x2fa4, 0x0000 },

-  { 0x1a00, 0x2fa6, 0x0000 },

-  { 0x9a00, 0x2fab, 0x3000 },

-  { 0x9a00, 0x2fa9, 0x2000 },

-  { 0x1a00, 0x2fa8, 0x0000 },

-  { 0x1a00, 0x2faa, 0x0000 },

-  { 0x9a00, 0x2fad, 0x2000 },

-  { 0x1a00, 0x2fac, 0x0000 },

-  { 0x1a00, 0x2fae, 0x0000 },

-  { 0x9a00, 0x2fb7, 0x4000 },

-  { 0x9a00, 0x2fb3, 0x3000 },

-  { 0x9a00, 0x2fb1, 0x2000 },

-  { 0x1a00, 0x2fb0, 0x0000 },

-  { 0x1a00, 0x2fb2, 0x0000 },

-  { 0x9a00, 0x2fb5, 0x2000 },

-  { 0x1a00, 0x2fb4, 0x0000 },

-  { 0x1a00, 0x2fb6, 0x0000 },

-  { 0x9a00, 0x2fbb, 0x3000 },

-  { 0x9a00, 0x2fb9, 0x2000 },

-  { 0x1a00, 0x2fb8, 0x0000 },

-  { 0x1a00, 0x2fba, 0x0000 },

-  { 0x9a00, 0x2fbd, 0x2000 },

-  { 0x1a00, 0x2fbc, 0x0000 },

-  { 0x1a00, 0x2fbe, 0x0000 },

-  { 0x9a00, 0x2fcf, 0x5000 },

-  { 0x9a00, 0x2fc7, 0x4000 },

-  { 0x9a00, 0x2fc3, 0x3000 },

-  { 0x9a00, 0x2fc1, 0x2000 },

-  { 0x1a00, 0x2fc0, 0x0000 },

-  { 0x1a00, 0x2fc2, 0x0000 },

-  { 0x9a00, 0x2fc5, 0x2000 },

-  { 0x1a00, 0x2fc4, 0x0000 },

-  { 0x1a00, 0x2fc6, 0x0000 },

-  { 0x9a00, 0x2fcb, 0x3000 },

-  { 0x9a00, 0x2fc9, 0x2000 },

-  { 0x1a00, 0x2fc8, 0x0000 },

-  { 0x1a00, 0x2fca, 0x0000 },

-  { 0x9a00, 0x2fcd, 0x2000 },

-  { 0x1a00, 0x2fcc, 0x0000 },

-  { 0x1a00, 0x2fce, 0x0000 },

-  { 0x9a00, 0x2ff1, 0x4000 },

-  { 0x9a00, 0x2fd3, 0x3000 },

-  { 0x9a00, 0x2fd1, 0x2000 },

-  { 0x1a00, 0x2fd0, 0x0000 },

-  { 0x1a00, 0x2fd2, 0x0000 },

-  { 0x9a00, 0x2fd5, 0x2000 },

-  { 0x1a00, 0x2fd4, 0x0000 },

-  { 0x1a00, 0x2ff0, 0x0000 },

-  { 0x9a00, 0x2ff5, 0x3000 },

-  { 0x9a00, 0x2ff3, 0x2000 },

-  { 0x1a00, 0x2ff2, 0x0000 },

-  { 0x1a00, 0x2ff4, 0x0000 },

-  { 0x9a00, 0x2ff7, 0x2000 },

-  { 0x1a00, 0x2ff6, 0x0000 },

-  { 0x1a00, 0x2ff8, 0x0000 },

-  { 0x9600, 0x301d, 0x6000 },

-  { 0x9200, 0x300d, 0x5000 },

-  { 0x8600, 0x3005, 0x4000 },

-  { 0x9500, 0x3001, 0x3000 },

-  { 0x9a00, 0x2ffb, 0x2000 },

-  { 0x1a00, 0x2ffa, 0x0000 },

-  { 0x1d00, 0x3000, 0x0000 },

-  { 0x9500, 0x3003, 0x2000 },

-  { 0x1500, 0x3002, 0x0000 },

-  { 0x1a00, 0x3004, 0x0000 },

-  { 0x9200, 0x3009, 0x3000 },

-  { 0x8e00, 0x3007, 0x2000 },

-  { 0x0700, 0x3006, 0x0000 },

-  { 0x1600, 0x3008, 0x0000 },

-  { 0x9200, 0x300b, 0x2000 },

-  { 0x1600, 0x300a, 0x0000 },

-  { 0x1600, 0x300c, 0x0000 },

-  { 0x9200, 0x3015, 0x4000 },

-  { 0x9200, 0x3011, 0x3000 },

-  { 0x9200, 0x300f, 0x2000 },

-  { 0x1600, 0x300e, 0x0000 },

-  { 0x1600, 0x3010, 0x0000 },

-  { 0x9a00, 0x3013, 0x2000 },

-  { 0x1a00, 0x3012, 0x0000 },

-  { 0x1600, 0x3014, 0x0000 },

-  { 0x9200, 0x3019, 0x3000 },

-  { 0x9200, 0x3017, 0x2000 },

-  { 0x1600, 0x3016, 0x0000 },

-  { 0x1600, 0x3018, 0x0000 },

-  { 0x9200, 0x301b, 0x2000 },

-  { 0x1600, 0x301a, 0x0000 },

-  { 0x1100, 0x301c, 0x0000 },

-  { 0x8c00, 0x302d, 0x5000 },

-  { 0x8e00, 0x3025, 0x4000 },

-  { 0x8e00, 0x3021, 0x3000 },

-  { 0x9200, 0x301f, 0x2000 },

-  { 0x1200, 0x301e, 0x0000 },

-  { 0x1a00, 0x3020, 0x0000 },

-  { 0x8e00, 0x3023, 0x2000 },

-  { 0x0e00, 0x3022, 0x0000 },

-  { 0x0e00, 0x3024, 0x0000 },

-  { 0x8e00, 0x3029, 0x3000 },

-  { 0x8e00, 0x3027, 0x2000 },

-  { 0x0e00, 0x3026, 0x0000 },

-  { 0x0e00, 0x3028, 0x0000 },

-  { 0x8c00, 0x302b, 0x2000 },

-  { 0x0c00, 0x302a, 0x0000 },

-  { 0x0c00, 0x302c, 0x0000 },

-  { 0x8600, 0x3035, 0x4000 },

-  { 0x8600, 0x3031, 0x3000 },

-  { 0x8c00, 0x302f, 0x2000 },

-  { 0x0c00, 0x302e, 0x0000 },

-  { 0x1100, 0x3030, 0x0000 },

-  { 0x8600, 0x3033, 0x2000 },

-  { 0x0600, 0x3032, 0x0000 },

-  { 0x0600, 0x3034, 0x0000 },

-  { 0x8e00, 0x3039, 0x3000 },

-  { 0x9a00, 0x3037, 0x2000 },

-  { 0x1a00, 0x3036, 0x0000 },

-  { 0x0e00, 0x3038, 0x0000 },

-  { 0x8600, 0x303b, 0x2000 },

-  { 0x0e00, 0x303a, 0x0000 },

-  { 0x0700, 0x303c, 0x0000 },

-  { 0x8700, 0x30c0, 0x8000 },

-  { 0x8700, 0x307e, 0x7000 },

-  { 0x8700, 0x305e, 0x6000 },

-  { 0x8700, 0x304e, 0x5000 },

-  { 0x8700, 0x3046, 0x4000 },

-  { 0x8700, 0x3042, 0x3000 },

-  { 0x9a00, 0x303f, 0x2000 },

-  { 0x1a00, 0x303e, 0x0000 },

-  { 0x0700, 0x3041, 0x0000 },

-  { 0x8700, 0x3044, 0x2000 },

-  { 0x0700, 0x3043, 0x0000 },

-  { 0x0700, 0x3045, 0x0000 },

-  { 0x8700, 0x304a, 0x3000 },

-  { 0x8700, 0x3048, 0x2000 },

-  { 0x0700, 0x3047, 0x0000 },

-  { 0x0700, 0x3049, 0x0000 },

-  { 0x8700, 0x304c, 0x2000 },

-  { 0x0700, 0x304b, 0x0000 },

-  { 0x0700, 0x304d, 0x0000 },

-  { 0x8700, 0x3056, 0x4000 },

-  { 0x8700, 0x3052, 0x3000 },

-  { 0x8700, 0x3050, 0x2000 },

-  { 0x0700, 0x304f, 0x0000 },

-  { 0x0700, 0x3051, 0x0000 },

-  { 0x8700, 0x3054, 0x2000 },

-  { 0x0700, 0x3053, 0x0000 },

-  { 0x0700, 0x3055, 0x0000 },

-  { 0x8700, 0x305a, 0x3000 },

-  { 0x8700, 0x3058, 0x2000 },

-  { 0x0700, 0x3057, 0x0000 },

-  { 0x0700, 0x3059, 0x0000 },

-  { 0x8700, 0x305c, 0x2000 },

-  { 0x0700, 0x305b, 0x0000 },

-  { 0x0700, 0x305d, 0x0000 },

-  { 0x8700, 0x306e, 0x5000 },

-  { 0x8700, 0x3066, 0x4000 },

-  { 0x8700, 0x3062, 0x3000 },

-  { 0x8700, 0x3060, 0x2000 },

-  { 0x0700, 0x305f, 0x0000 },

-  { 0x0700, 0x3061, 0x0000 },

-  { 0x8700, 0x3064, 0x2000 },

-  { 0x0700, 0x3063, 0x0000 },

-  { 0x0700, 0x3065, 0x0000 },

-  { 0x8700, 0x306a, 0x3000 },

-  { 0x8700, 0x3068, 0x2000 },

-  { 0x0700, 0x3067, 0x0000 },

-  { 0x0700, 0x3069, 0x0000 },

-  { 0x8700, 0x306c, 0x2000 },

-  { 0x0700, 0x306b, 0x0000 },

-  { 0x0700, 0x306d, 0x0000 },

-  { 0x8700, 0x3076, 0x4000 },

-  { 0x8700, 0x3072, 0x3000 },

-  { 0x8700, 0x3070, 0x2000 },

-  { 0x0700, 0x306f, 0x0000 },

-  { 0x0700, 0x3071, 0x0000 },

-  { 0x8700, 0x3074, 0x2000 },

-  { 0x0700, 0x3073, 0x0000 },

-  { 0x0700, 0x3075, 0x0000 },

-  { 0x8700, 0x307a, 0x3000 },

-  { 0x8700, 0x3078, 0x2000 },

-  { 0x0700, 0x3077, 0x0000 },

-  { 0x0700, 0x3079, 0x0000 },

-  { 0x8700, 0x307c, 0x2000 },

-  { 0x0700, 0x307b, 0x0000 },

-  { 0x0700, 0x307d, 0x0000 },

-  { 0x9100, 0x30a0, 0x6000 },

-  { 0x8700, 0x308e, 0x5000 },

-  { 0x8700, 0x3086, 0x4000 },

-  { 0x8700, 0x3082, 0x3000 },

-  { 0x8700, 0x3080, 0x2000 },

-  { 0x0700, 0x307f, 0x0000 },

-  { 0x0700, 0x3081, 0x0000 },

-  { 0x8700, 0x3084, 0x2000 },

-  { 0x0700, 0x3083, 0x0000 },

-  { 0x0700, 0x3085, 0x0000 },

-  { 0x8700, 0x308a, 0x3000 },

-  { 0x8700, 0x3088, 0x2000 },

-  { 0x0700, 0x3087, 0x0000 },

-  { 0x0700, 0x3089, 0x0000 },

-  { 0x8700, 0x308c, 0x2000 },

-  { 0x0700, 0x308b, 0x0000 },

-  { 0x0700, 0x308d, 0x0000 },

-  { 0x8700, 0x3096, 0x4000 },

-  { 0x8700, 0x3092, 0x3000 },

-  { 0x8700, 0x3090, 0x2000 },

-  { 0x0700, 0x308f, 0x0000 },

-  { 0x0700, 0x3091, 0x0000 },

-  { 0x8700, 0x3094, 0x2000 },

-  { 0x0700, 0x3093, 0x0000 },

-  { 0x0700, 0x3095, 0x0000 },

-  { 0x9800, 0x309c, 0x3000 },

-  { 0x8c00, 0x309a, 0x2000 },

-  { 0x0c00, 0x3099, 0x0000 },

-  { 0x1800, 0x309b, 0x0000 },

-  { 0x8600, 0x309e, 0x2000 },

-  { 0x0600, 0x309d, 0x0000 },

-  { 0x0700, 0x309f, 0x0000 },

-  { 0x8700, 0x30b0, 0x5000 },

-  { 0x8700, 0x30a8, 0x4000 },

-  { 0x8700, 0x30a4, 0x3000 },

-  { 0x8700, 0x30a2, 0x2000 },

-  { 0x0700, 0x30a1, 0x0000 },

-  { 0x0700, 0x30a3, 0x0000 },

-  { 0x8700, 0x30a6, 0x2000 },

-  { 0x0700, 0x30a5, 0x0000 },

-  { 0x0700, 0x30a7, 0x0000 },

-  { 0x8700, 0x30ac, 0x3000 },

-  { 0x8700, 0x30aa, 0x2000 },

-  { 0x0700, 0x30a9, 0x0000 },

-  { 0x0700, 0x30ab, 0x0000 },

-  { 0x8700, 0x30ae, 0x2000 },

-  { 0x0700, 0x30ad, 0x0000 },

-  { 0x0700, 0x30af, 0x0000 },

-  { 0x8700, 0x30b8, 0x4000 },

-  { 0x8700, 0x30b4, 0x3000 },

-  { 0x8700, 0x30b2, 0x2000 },

-  { 0x0700, 0x30b1, 0x0000 },

-  { 0x0700, 0x30b3, 0x0000 },

-  { 0x8700, 0x30b6, 0x2000 },

-  { 0x0700, 0x30b5, 0x0000 },

-  { 0x0700, 0x30b7, 0x0000 },

-  { 0x8700, 0x30bc, 0x3000 },

-  { 0x8700, 0x30ba, 0x2000 },

-  { 0x0700, 0x30b9, 0x0000 },

-  { 0x0700, 0x30bb, 0x0000 },

-  { 0x8700, 0x30be, 0x2000 },

-  { 0x0700, 0x30bd, 0x0000 },

-  { 0x0700, 0x30bf, 0x0000 },

-  { 0x8700, 0x3105, 0x7000 },

-  { 0x8700, 0x30e0, 0x6000 },

-  { 0x8700, 0x30d0, 0x5000 },

-  { 0x8700, 0x30c8, 0x4000 },

-  { 0x8700, 0x30c4, 0x3000 },

-  { 0x8700, 0x30c2, 0x2000 },

-  { 0x0700, 0x30c1, 0x0000 },

-  { 0x0700, 0x30c3, 0x0000 },

-  { 0x8700, 0x30c6, 0x2000 },

-  { 0x0700, 0x30c5, 0x0000 },

-  { 0x0700, 0x30c7, 0x0000 },

-  { 0x8700, 0x30cc, 0x3000 },

-  { 0x8700, 0x30ca, 0x2000 },

-  { 0x0700, 0x30c9, 0x0000 },

-  { 0x0700, 0x30cb, 0x0000 },

-  { 0x8700, 0x30ce, 0x2000 },

-  { 0x0700, 0x30cd, 0x0000 },

-  { 0x0700, 0x30cf, 0x0000 },

-  { 0x8700, 0x30d8, 0x4000 },

-  { 0x8700, 0x30d4, 0x3000 },

-  { 0x8700, 0x30d2, 0x2000 },

-  { 0x0700, 0x30d1, 0x0000 },

-  { 0x0700, 0x30d3, 0x0000 },

-  { 0x8700, 0x30d6, 0x2000 },

-  { 0x0700, 0x30d5, 0x0000 },

-  { 0x0700, 0x30d7, 0x0000 },

-  { 0x8700, 0x30dc, 0x3000 },

-  { 0x8700, 0x30da, 0x2000 },

-  { 0x0700, 0x30d9, 0x0000 },

-  { 0x0700, 0x30db, 0x0000 },

-  { 0x8700, 0x30de, 0x2000 },

-  { 0x0700, 0x30dd, 0x0000 },

-  { 0x0700, 0x30df, 0x0000 },

-  { 0x8700, 0x30f0, 0x5000 },

-  { 0x8700, 0x30e8, 0x4000 },

-  { 0x8700, 0x30e4, 0x3000 },

-  { 0x8700, 0x30e2, 0x2000 },

-  { 0x0700, 0x30e1, 0x0000 },

-  { 0x0700, 0x30e3, 0x0000 },

-  { 0x8700, 0x30e6, 0x2000 },

-  { 0x0700, 0x30e5, 0x0000 },

-  { 0x0700, 0x30e7, 0x0000 },

-  { 0x8700, 0x30ec, 0x3000 },

-  { 0x8700, 0x30ea, 0x2000 },

-  { 0x0700, 0x30e9, 0x0000 },

-  { 0x0700, 0x30eb, 0x0000 },

-  { 0x8700, 0x30ee, 0x2000 },

-  { 0x0700, 0x30ed, 0x0000 },

-  { 0x0700, 0x30ef, 0x0000 },

-  { 0x8700, 0x30f8, 0x4000 },

-  { 0x8700, 0x30f4, 0x3000 },

-  { 0x8700, 0x30f2, 0x2000 },

-  { 0x0700, 0x30f1, 0x0000 },

-  { 0x0700, 0x30f3, 0x0000 },

-  { 0x8700, 0x30f6, 0x2000 },

-  { 0x0700, 0x30f5, 0x0000 },

-  { 0x0700, 0x30f7, 0x0000 },

-  { 0x8600, 0x30fc, 0x3000 },

-  { 0x8700, 0x30fa, 0x2000 },

-  { 0x0700, 0x30f9, 0x0000 },

-  { 0x1000, 0x30fb, 0x0000 },

-  { 0x8600, 0x30fe, 0x2000 },

-  { 0x0600, 0x30fd, 0x0000 },

-  { 0x0700, 0x30ff, 0x0000 },

-  { 0x8700, 0x3125, 0x6000 },

-  { 0x8700, 0x3115, 0x5000 },

-  { 0x8700, 0x310d, 0x4000 },

-  { 0x8700, 0x3109, 0x3000 },

-  { 0x8700, 0x3107, 0x2000 },

-  { 0x0700, 0x3106, 0x0000 },

-  { 0x0700, 0x3108, 0x0000 },

-  { 0x8700, 0x310b, 0x2000 },

-  { 0x0700, 0x310a, 0x0000 },

-  { 0x0700, 0x310c, 0x0000 },

-  { 0x8700, 0x3111, 0x3000 },

-  { 0x8700, 0x310f, 0x2000 },

-  { 0x0700, 0x310e, 0x0000 },

-  { 0x0700, 0x3110, 0x0000 },

-  { 0x8700, 0x3113, 0x2000 },

-  { 0x0700, 0x3112, 0x0000 },

-  { 0x0700, 0x3114, 0x0000 },

-  { 0x8700, 0x311d, 0x4000 },

-  { 0x8700, 0x3119, 0x3000 },

-  { 0x8700, 0x3117, 0x2000 },

-  { 0x0700, 0x3116, 0x0000 },

-  { 0x0700, 0x3118, 0x0000 },

-  { 0x8700, 0x311b, 0x2000 },

-  { 0x0700, 0x311a, 0x0000 },

-  { 0x0700, 0x311c, 0x0000 },

-  { 0x8700, 0x3121, 0x3000 },

-  { 0x8700, 0x311f, 0x2000 },

-  { 0x0700, 0x311e, 0x0000 },

-  { 0x0700, 0x3120, 0x0000 },

-  { 0x8700, 0x3123, 0x2000 },

-  { 0x0700, 0x3122, 0x0000 },

-  { 0x0700, 0x3124, 0x0000 },

-  { 0x8700, 0x3139, 0x5000 },

-  { 0x8700, 0x3131, 0x4000 },

-  { 0x8700, 0x3129, 0x3000 },

-  { 0x8700, 0x3127, 0x2000 },

-  { 0x0700, 0x3126, 0x0000 },

-  { 0x0700, 0x3128, 0x0000 },

-  { 0x8700, 0x312b, 0x2000 },

-  { 0x0700, 0x312a, 0x0000 },

-  { 0x0700, 0x312c, 0x0000 },

-  { 0x8700, 0x3135, 0x3000 },

-  { 0x8700, 0x3133, 0x2000 },

-  { 0x0700, 0x3132, 0x0000 },

-  { 0x0700, 0x3134, 0x0000 },

-  { 0x8700, 0x3137, 0x2000 },

-  { 0x0700, 0x3136, 0x0000 },

-  { 0x0700, 0x3138, 0x0000 },

-  { 0x8700, 0x3141, 0x4000 },

-  { 0x8700, 0x313d, 0x3000 },

-  { 0x8700, 0x313b, 0x2000 },

-  { 0x0700, 0x313a, 0x0000 },

-  { 0x0700, 0x313c, 0x0000 },

-  { 0x8700, 0x313f, 0x2000 },

-  { 0x0700, 0x313e, 0x0000 },

-  { 0x0700, 0x3140, 0x0000 },

-  { 0x8700, 0x3145, 0x3000 },

-  { 0x8700, 0x3143, 0x2000 },

-  { 0x0700, 0x3142, 0x0000 },

-  { 0x0700, 0x3144, 0x0000 },

-  { 0x8700, 0x3147, 0x2000 },

-  { 0x0700, 0x3146, 0x0000 },

-  { 0x0700, 0x3148, 0x0000 },

-  { 0x9a00, 0x3290, 0x9000 },

-  { 0x9a00, 0x3202, 0x8000 },

-  { 0x8700, 0x3189, 0x7000 },

-  { 0x8700, 0x3169, 0x6000 },

-  { 0x8700, 0x3159, 0x5000 },

-  { 0x8700, 0x3151, 0x4000 },

-  { 0x8700, 0x314d, 0x3000 },

-  { 0x8700, 0x314b, 0x2000 },

-  { 0x0700, 0x314a, 0x0000 },

-  { 0x0700, 0x314c, 0x0000 },

-  { 0x8700, 0x314f, 0x2000 },

-  { 0x0700, 0x314e, 0x0000 },

-  { 0x0700, 0x3150, 0x0000 },

-  { 0x8700, 0x3155, 0x3000 },

-  { 0x8700, 0x3153, 0x2000 },

-  { 0x0700, 0x3152, 0x0000 },

-  { 0x0700, 0x3154, 0x0000 },

-  { 0x8700, 0x3157, 0x2000 },

-  { 0x0700, 0x3156, 0x0000 },

-  { 0x0700, 0x3158, 0x0000 },

-  { 0x8700, 0x3161, 0x4000 },

-  { 0x8700, 0x315d, 0x3000 },

-  { 0x8700, 0x315b, 0x2000 },

-  { 0x0700, 0x315a, 0x0000 },

-  { 0x0700, 0x315c, 0x0000 },

-  { 0x8700, 0x315f, 0x2000 },

-  { 0x0700, 0x315e, 0x0000 },

-  { 0x0700, 0x3160, 0x0000 },

-  { 0x8700, 0x3165, 0x3000 },

-  { 0x8700, 0x3163, 0x2000 },

-  { 0x0700, 0x3162, 0x0000 },

-  { 0x0700, 0x3164, 0x0000 },

-  { 0x8700, 0x3167, 0x2000 },

-  { 0x0700, 0x3166, 0x0000 },

-  { 0x0700, 0x3168, 0x0000 },

-  { 0x8700, 0x3179, 0x5000 },

-  { 0x8700, 0x3171, 0x4000 },

-  { 0x8700, 0x316d, 0x3000 },

-  { 0x8700, 0x316b, 0x2000 },

-  { 0x0700, 0x316a, 0x0000 },

-  { 0x0700, 0x316c, 0x0000 },

-  { 0x8700, 0x316f, 0x2000 },

-  { 0x0700, 0x316e, 0x0000 },

-  { 0x0700, 0x3170, 0x0000 },

-  { 0x8700, 0x3175, 0x3000 },

-  { 0x8700, 0x3173, 0x2000 },

-  { 0x0700, 0x3172, 0x0000 },

-  { 0x0700, 0x3174, 0x0000 },

-  { 0x8700, 0x3177, 0x2000 },

-  { 0x0700, 0x3176, 0x0000 },

-  { 0x0700, 0x3178, 0x0000 },

-  { 0x8700, 0x3181, 0x4000 },

-  { 0x8700, 0x317d, 0x3000 },

-  { 0x8700, 0x317b, 0x2000 },

-  { 0x0700, 0x317a, 0x0000 },

-  { 0x0700, 0x317c, 0x0000 },

-  { 0x8700, 0x317f, 0x2000 },

-  { 0x0700, 0x317e, 0x0000 },

-  { 0x0700, 0x3180, 0x0000 },

-  { 0x8700, 0x3185, 0x3000 },

-  { 0x8700, 0x3183, 0x2000 },

-  { 0x0700, 0x3182, 0x0000 },

-  { 0x0700, 0x3184, 0x0000 },

-  { 0x8700, 0x3187, 0x2000 },

-  { 0x0700, 0x3186, 0x0000 },

-  { 0x0700, 0x3188, 0x0000 },

-  { 0x8700, 0x31aa, 0x6000 },

-  { 0x9a00, 0x319a, 0x5000 },

-  { 0x8f00, 0x3192, 0x4000 },

-  { 0x8700, 0x318d, 0x3000 },

-  { 0x8700, 0x318b, 0x2000 },

-  { 0x0700, 0x318a, 0x0000 },

-  { 0x0700, 0x318c, 0x0000 },

-  { 0x9a00, 0x3190, 0x2000 },

-  { 0x0700, 0x318e, 0x0000 },

-  { 0x1a00, 0x3191, 0x0000 },

-  { 0x9a00, 0x3196, 0x3000 },

-  { 0x8f00, 0x3194, 0x2000 },

-  { 0x0f00, 0x3193, 0x0000 },

-  { 0x0f00, 0x3195, 0x0000 },

-  { 0x9a00, 0x3198, 0x2000 },

-  { 0x1a00, 0x3197, 0x0000 },

-  { 0x1a00, 0x3199, 0x0000 },

-  { 0x8700, 0x31a2, 0x4000 },

-  { 0x9a00, 0x319e, 0x3000 },

-  { 0x9a00, 0x319c, 0x2000 },

-  { 0x1a00, 0x319b, 0x0000 },

-  { 0x1a00, 0x319d, 0x0000 },

-  { 0x8700, 0x31a0, 0x2000 },

-  { 0x1a00, 0x319f, 0x0000 },

-  { 0x0700, 0x31a1, 0x0000 },

-  { 0x8700, 0x31a6, 0x3000 },

-  { 0x8700, 0x31a4, 0x2000 },

-  { 0x0700, 0x31a3, 0x0000 },

-  { 0x0700, 0x31a5, 0x0000 },

-  { 0x8700, 0x31a8, 0x2000 },

-  { 0x0700, 0x31a7, 0x0000 },

-  { 0x0700, 0x31a9, 0x0000 },

-  { 0x8700, 0x31f2, 0x5000 },

-  { 0x8700, 0x31b2, 0x4000 },

-  { 0x8700, 0x31ae, 0x3000 },

-  { 0x8700, 0x31ac, 0x2000 },

-  { 0x0700, 0x31ab, 0x0000 },

-  { 0x0700, 0x31ad, 0x0000 },

-  { 0x8700, 0x31b0, 0x2000 },

-  { 0x0700, 0x31af, 0x0000 },

-  { 0x0700, 0x31b1, 0x0000 },

-  { 0x8700, 0x31b6, 0x3000 },

-  { 0x8700, 0x31b4, 0x2000 },

-  { 0x0700, 0x31b3, 0x0000 },

-  { 0x0700, 0x31b5, 0x0000 },

-  { 0x8700, 0x31f0, 0x2000 },

-  { 0x0700, 0x31b7, 0x0000 },

-  { 0x0700, 0x31f1, 0x0000 },

-  { 0x8700, 0x31fa, 0x4000 },

-  { 0x8700, 0x31f6, 0x3000 },

-  { 0x8700, 0x31f4, 0x2000 },

-  { 0x0700, 0x31f3, 0x0000 },

-  { 0x0700, 0x31f5, 0x0000 },

-  { 0x8700, 0x31f8, 0x2000 },

-  { 0x0700, 0x31f7, 0x0000 },

-  { 0x0700, 0x31f9, 0x0000 },

-  { 0x8700, 0x31fe, 0x3000 },

-  { 0x8700, 0x31fc, 0x2000 },

-  { 0x0700, 0x31fb, 0x0000 },

-  { 0x0700, 0x31fd, 0x0000 },

-  { 0x9a00, 0x3200, 0x2000 },

-  { 0x0700, 0x31ff, 0x0000 },

-  { 0x1a00, 0x3201, 0x0000 },

-  { 0x9a00, 0x3243, 0x7000 },

-  { 0x8f00, 0x3223, 0x6000 },

-  { 0x9a00, 0x3212, 0x5000 },

-  { 0x9a00, 0x320a, 0x4000 },

-  { 0x9a00, 0x3206, 0x3000 },

-  { 0x9a00, 0x3204, 0x2000 },

-  { 0x1a00, 0x3203, 0x0000 },

-  { 0x1a00, 0x3205, 0x0000 },

-  { 0x9a00, 0x3208, 0x2000 },

-  { 0x1a00, 0x3207, 0x0000 },

-  { 0x1a00, 0x3209, 0x0000 },

-  { 0x9a00, 0x320e, 0x3000 },

-  { 0x9a00, 0x320c, 0x2000 },

-  { 0x1a00, 0x320b, 0x0000 },

-  { 0x1a00, 0x320d, 0x0000 },

-  { 0x9a00, 0x3210, 0x2000 },

-  { 0x1a00, 0x320f, 0x0000 },

-  { 0x1a00, 0x3211, 0x0000 },

-  { 0x9a00, 0x321a, 0x4000 },

-  { 0x9a00, 0x3216, 0x3000 },

-  { 0x9a00, 0x3214, 0x2000 },

-  { 0x1a00, 0x3213, 0x0000 },

-  { 0x1a00, 0x3215, 0x0000 },

-  { 0x9a00, 0x3218, 0x2000 },

-  { 0x1a00, 0x3217, 0x0000 },

-  { 0x1a00, 0x3219, 0x0000 },

-  { 0x9a00, 0x321e, 0x3000 },

-  { 0x9a00, 0x321c, 0x2000 },

-  { 0x1a00, 0x321b, 0x0000 },

-  { 0x1a00, 0x321d, 0x0000 },

-  { 0x8f00, 0x3221, 0x2000 },

-  { 0x0f00, 0x3220, 0x0000 },

-  { 0x0f00, 0x3222, 0x0000 },

-  { 0x9a00, 0x3233, 0x5000 },

-  { 0x9a00, 0x322b, 0x4000 },

-  { 0x8f00, 0x3227, 0x3000 },

-  { 0x8f00, 0x3225, 0x2000 },

-  { 0x0f00, 0x3224, 0x0000 },

-  { 0x0f00, 0x3226, 0x0000 },

-  { 0x8f00, 0x3229, 0x2000 },

-  { 0x0f00, 0x3228, 0x0000 },

-  { 0x1a00, 0x322a, 0x0000 },

-  { 0x9a00, 0x322f, 0x3000 },

-  { 0x9a00, 0x322d, 0x2000 },

-  { 0x1a00, 0x322c, 0x0000 },

-  { 0x1a00, 0x322e, 0x0000 },

-  { 0x9a00, 0x3231, 0x2000 },

-  { 0x1a00, 0x3230, 0x0000 },

-  { 0x1a00, 0x3232, 0x0000 },

-  { 0x9a00, 0x323b, 0x4000 },

-  { 0x9a00, 0x3237, 0x3000 },

-  { 0x9a00, 0x3235, 0x2000 },

-  { 0x1a00, 0x3234, 0x0000 },

-  { 0x1a00, 0x3236, 0x0000 },

-  { 0x9a00, 0x3239, 0x2000 },

-  { 0x1a00, 0x3238, 0x0000 },

-  { 0x1a00, 0x323a, 0x0000 },

-  { 0x9a00, 0x323f, 0x3000 },

-  { 0x9a00, 0x323d, 0x2000 },

-  { 0x1a00, 0x323c, 0x0000 },

-  { 0x1a00, 0x323e, 0x0000 },

-  { 0x9a00, 0x3241, 0x2000 },

-  { 0x1a00, 0x3240, 0x0000 },

-  { 0x1a00, 0x3242, 0x0000 },

-  { 0x9a00, 0x326f, 0x6000 },

-  { 0x8f00, 0x325f, 0x5000 },

-  { 0x8f00, 0x3257, 0x4000 },

-  { 0x8f00, 0x3253, 0x3000 },

-  { 0x8f00, 0x3251, 0x2000 },

-  { 0x1a00, 0x3250, 0x0000 },

-  { 0x0f00, 0x3252, 0x0000 },

-  { 0x8f00, 0x3255, 0x2000 },

-  { 0x0f00, 0x3254, 0x0000 },

-  { 0x0f00, 0x3256, 0x0000 },

-  { 0x8f00, 0x325b, 0x3000 },

-  { 0x8f00, 0x3259, 0x2000 },

-  { 0x0f00, 0x3258, 0x0000 },

-  { 0x0f00, 0x325a, 0x0000 },

-  { 0x8f00, 0x325d, 0x2000 },

-  { 0x0f00, 0x325c, 0x0000 },

-  { 0x0f00, 0x325e, 0x0000 },

-  { 0x9a00, 0x3267, 0x4000 },

-  { 0x9a00, 0x3263, 0x3000 },

-  { 0x9a00, 0x3261, 0x2000 },

-  { 0x1a00, 0x3260, 0x0000 },

-  { 0x1a00, 0x3262, 0x0000 },

-  { 0x9a00, 0x3265, 0x2000 },

-  { 0x1a00, 0x3264, 0x0000 },

-  { 0x1a00, 0x3266, 0x0000 },

-  { 0x9a00, 0x326b, 0x3000 },

-  { 0x9a00, 0x3269, 0x2000 },

-  { 0x1a00, 0x3268, 0x0000 },

-  { 0x1a00, 0x326a, 0x0000 },

-  { 0x9a00, 0x326d, 0x2000 },

-  { 0x1a00, 0x326c, 0x0000 },

-  { 0x1a00, 0x326e, 0x0000 },

-  { 0x8f00, 0x3280, 0x5000 },

-  { 0x9a00, 0x3277, 0x4000 },

-  { 0x9a00, 0x3273, 0x3000 },

-  { 0x9a00, 0x3271, 0x2000 },

-  { 0x1a00, 0x3270, 0x0000 },

-  { 0x1a00, 0x3272, 0x0000 },

-  { 0x9a00, 0x3275, 0x2000 },

-  { 0x1a00, 0x3274, 0x0000 },

-  { 0x1a00, 0x3276, 0x0000 },

-  { 0x9a00, 0x327b, 0x3000 },

-  { 0x9a00, 0x3279, 0x2000 },

-  { 0x1a00, 0x3278, 0x0000 },

-  { 0x1a00, 0x327a, 0x0000 },

-  { 0x9a00, 0x327d, 0x2000 },

-  { 0x1a00, 0x327c, 0x0000 },

-  { 0x1a00, 0x327f, 0x0000 },

-  { 0x8f00, 0x3288, 0x4000 },

-  { 0x8f00, 0x3284, 0x3000 },

-  { 0x8f00, 0x3282, 0x2000 },

-  { 0x0f00, 0x3281, 0x0000 },

-  { 0x0f00, 0x3283, 0x0000 },

-  { 0x8f00, 0x3286, 0x2000 },

-  { 0x0f00, 0x3285, 0x0000 },

-  { 0x0f00, 0x3287, 0x0000 },

-  { 0x9a00, 0x328c, 0x3000 },

-  { 0x9a00, 0x328a, 0x2000 },

-  { 0x0f00, 0x3289, 0x0000 },

-  { 0x1a00, 0x328b, 0x0000 },

-  { 0x9a00, 0x328e, 0x2000 },

-  { 0x1a00, 0x328d, 0x0000 },

-  { 0x1a00, 0x328f, 0x0000 },

-  { 0x9a00, 0x3311, 0x8000 },

-  { 0x9a00, 0x32d0, 0x7000 },

-  { 0x9a00, 0x32b0, 0x6000 },

-  { 0x9a00, 0x32a0, 0x5000 },

-  { 0x9a00, 0x3298, 0x4000 },

-  { 0x9a00, 0x3294, 0x3000 },

-  { 0x9a00, 0x3292, 0x2000 },

-  { 0x1a00, 0x3291, 0x0000 },

-  { 0x1a00, 0x3293, 0x0000 },

-  { 0x9a00, 0x3296, 0x2000 },

-  { 0x1a00, 0x3295, 0x0000 },

-  { 0x1a00, 0x3297, 0x0000 },

-  { 0x9a00, 0x329c, 0x3000 },

-  { 0x9a00, 0x329a, 0x2000 },

-  { 0x1a00, 0x3299, 0x0000 },

-  { 0x1a00, 0x329b, 0x0000 },

-  { 0x9a00, 0x329e, 0x2000 },

-  { 0x1a00, 0x329d, 0x0000 },

-  { 0x1a00, 0x329f, 0x0000 },

-  { 0x9a00, 0x32a8, 0x4000 },

-  { 0x9a00, 0x32a4, 0x3000 },

-  { 0x9a00, 0x32a2, 0x2000 },

-  { 0x1a00, 0x32a1, 0x0000 },

-  { 0x1a00, 0x32a3, 0x0000 },

-  { 0x9a00, 0x32a6, 0x2000 },

-  { 0x1a00, 0x32a5, 0x0000 },

-  { 0x1a00, 0x32a7, 0x0000 },

-  { 0x9a00, 0x32ac, 0x3000 },

-  { 0x9a00, 0x32aa, 0x2000 },

-  { 0x1a00, 0x32a9, 0x0000 },

-  { 0x1a00, 0x32ab, 0x0000 },

-  { 0x9a00, 0x32ae, 0x2000 },

-  { 0x1a00, 0x32ad, 0x0000 },

-  { 0x1a00, 0x32af, 0x0000 },

-  { 0x9a00, 0x32c0, 0x5000 },

-  { 0x8f00, 0x32b8, 0x4000 },

-  { 0x8f00, 0x32b4, 0x3000 },

-  { 0x8f00, 0x32b2, 0x2000 },

-  { 0x0f00, 0x32b1, 0x0000 },

-  { 0x0f00, 0x32b3, 0x0000 },

-  { 0x8f00, 0x32b6, 0x2000 },

-  { 0x0f00, 0x32b5, 0x0000 },

-  { 0x0f00, 0x32b7, 0x0000 },

-  { 0x8f00, 0x32bc, 0x3000 },

-  { 0x8f00, 0x32ba, 0x2000 },

-  { 0x0f00, 0x32b9, 0x0000 },

-  { 0x0f00, 0x32bb, 0x0000 },

-  { 0x8f00, 0x32be, 0x2000 },

-  { 0x0f00, 0x32bd, 0x0000 },

-  { 0x0f00, 0x32bf, 0x0000 },

-  { 0x9a00, 0x32c8, 0x4000 },

-  { 0x9a00, 0x32c4, 0x3000 },

-  { 0x9a00, 0x32c2, 0x2000 },

-  { 0x1a00, 0x32c1, 0x0000 },

-  { 0x1a00, 0x32c3, 0x0000 },

-  { 0x9a00, 0x32c6, 0x2000 },

-  { 0x1a00, 0x32c5, 0x0000 },

-  { 0x1a00, 0x32c7, 0x0000 },

-  { 0x9a00, 0x32cc, 0x3000 },

-  { 0x9a00, 0x32ca, 0x2000 },

-  { 0x1a00, 0x32c9, 0x0000 },

-  { 0x1a00, 0x32cb, 0x0000 },

-  { 0x9a00, 0x32ce, 0x2000 },

-  { 0x1a00, 0x32cd, 0x0000 },

-  { 0x1a00, 0x32cf, 0x0000 },

-  { 0x9a00, 0x32f0, 0x6000 },

-  { 0x9a00, 0x32e0, 0x5000 },

-  { 0x9a00, 0x32d8, 0x4000 },

-  { 0x9a00, 0x32d4, 0x3000 },

-  { 0x9a00, 0x32d2, 0x2000 },

-  { 0x1a00, 0x32d1, 0x0000 },

-  { 0x1a00, 0x32d3, 0x0000 },

-  { 0x9a00, 0x32d6, 0x2000 },

-  { 0x1a00, 0x32d5, 0x0000 },

-  { 0x1a00, 0x32d7, 0x0000 },

-  { 0x9a00, 0x32dc, 0x3000 },

-  { 0x9a00, 0x32da, 0x2000 },

-  { 0x1a00, 0x32d9, 0x0000 },

-  { 0x1a00, 0x32db, 0x0000 },

-  { 0x9a00, 0x32de, 0x2000 },

-  { 0x1a00, 0x32dd, 0x0000 },

-  { 0x1a00, 0x32df, 0x0000 },

-  { 0x9a00, 0x32e8, 0x4000 },

-  { 0x9a00, 0x32e4, 0x3000 },

-  { 0x9a00, 0x32e2, 0x2000 },

-  { 0x1a00, 0x32e1, 0x0000 },

-  { 0x1a00, 0x32e3, 0x0000 },

-  { 0x9a00, 0x32e6, 0x2000 },

-  { 0x1a00, 0x32e5, 0x0000 },

-  { 0x1a00, 0x32e7, 0x0000 },

-  { 0x9a00, 0x32ec, 0x3000 },

-  { 0x9a00, 0x32ea, 0x2000 },

-  { 0x1a00, 0x32e9, 0x0000 },

-  { 0x1a00, 0x32eb, 0x0000 },

-  { 0x9a00, 0x32ee, 0x2000 },

-  { 0x1a00, 0x32ed, 0x0000 },

-  { 0x1a00, 0x32ef, 0x0000 },

-  { 0x9a00, 0x3301, 0x5000 },

-  { 0x9a00, 0x32f8, 0x4000 },

-  { 0x9a00, 0x32f4, 0x3000 },

-  { 0x9a00, 0x32f2, 0x2000 },

-  { 0x1a00, 0x32f1, 0x0000 },

-  { 0x1a00, 0x32f3, 0x0000 },

-  { 0x9a00, 0x32f6, 0x2000 },

-  { 0x1a00, 0x32f5, 0x0000 },

-  { 0x1a00, 0x32f7, 0x0000 },

-  { 0x9a00, 0x32fc, 0x3000 },

-  { 0x9a00, 0x32fa, 0x2000 },

-  { 0x1a00, 0x32f9, 0x0000 },

-  { 0x1a00, 0x32fb, 0x0000 },

-  { 0x9a00, 0x32fe, 0x2000 },

-  { 0x1a00, 0x32fd, 0x0000 },

-  { 0x1a00, 0x3300, 0x0000 },

-  { 0x9a00, 0x3309, 0x4000 },

-  { 0x9a00, 0x3305, 0x3000 },

-  { 0x9a00, 0x3303, 0x2000 },

-  { 0x1a00, 0x3302, 0x0000 },

-  { 0x1a00, 0x3304, 0x0000 },

-  { 0x9a00, 0x3307, 0x2000 },

-  { 0x1a00, 0x3306, 0x0000 },

-  { 0x1a00, 0x3308, 0x0000 },

-  { 0x9a00, 0x330d, 0x3000 },

-  { 0x9a00, 0x330b, 0x2000 },

-  { 0x1a00, 0x330a, 0x0000 },

-  { 0x1a00, 0x330c, 0x0000 },

-  { 0x9a00, 0x330f, 0x2000 },

-  { 0x1a00, 0x330e, 0x0000 },

-  { 0x1a00, 0x3310, 0x0000 },

-  { 0x9a00, 0x3351, 0x7000 },

-  { 0x9a00, 0x3331, 0x6000 },

-  { 0x9a00, 0x3321, 0x5000 },

-  { 0x9a00, 0x3319, 0x4000 },

-  { 0x9a00, 0x3315, 0x3000 },

-  { 0x9a00, 0x3313, 0x2000 },

-  { 0x1a00, 0x3312, 0x0000 },

-  { 0x1a00, 0x3314, 0x0000 },

-  { 0x9a00, 0x3317, 0x2000 },

-  { 0x1a00, 0x3316, 0x0000 },

-  { 0x1a00, 0x3318, 0x0000 },

-  { 0x9a00, 0x331d, 0x3000 },

-  { 0x9a00, 0x331b, 0x2000 },

-  { 0x1a00, 0x331a, 0x0000 },

-  { 0x1a00, 0x331c, 0x0000 },

-  { 0x9a00, 0x331f, 0x2000 },

-  { 0x1a00, 0x331e, 0x0000 },

-  { 0x1a00, 0x3320, 0x0000 },

-  { 0x9a00, 0x3329, 0x4000 },

-  { 0x9a00, 0x3325, 0x3000 },

-  { 0x9a00, 0x3323, 0x2000 },

-  { 0x1a00, 0x3322, 0x0000 },

-  { 0x1a00, 0x3324, 0x0000 },

-  { 0x9a00, 0x3327, 0x2000 },

-  { 0x1a00, 0x3326, 0x0000 },

-  { 0x1a00, 0x3328, 0x0000 },

-  { 0x9a00, 0x332d, 0x3000 },

-  { 0x9a00, 0x332b, 0x2000 },

-  { 0x1a00, 0x332a, 0x0000 },

-  { 0x1a00, 0x332c, 0x0000 },

-  { 0x9a00, 0x332f, 0x2000 },

-  { 0x1a00, 0x332e, 0x0000 },

-  { 0x1a00, 0x3330, 0x0000 },

-  { 0x9a00, 0x3341, 0x5000 },

-  { 0x9a00, 0x3339, 0x4000 },

-  { 0x9a00, 0x3335, 0x3000 },

-  { 0x9a00, 0x3333, 0x2000 },

-  { 0x1a00, 0x3332, 0x0000 },

-  { 0x1a00, 0x3334, 0x0000 },

-  { 0x9a00, 0x3337, 0x2000 },

-  { 0x1a00, 0x3336, 0x0000 },

-  { 0x1a00, 0x3338, 0x0000 },

-  { 0x9a00, 0x333d, 0x3000 },

-  { 0x9a00, 0x333b, 0x2000 },

-  { 0x1a00, 0x333a, 0x0000 },

-  { 0x1a00, 0x333c, 0x0000 },

-  { 0x9a00, 0x333f, 0x2000 },

-  { 0x1a00, 0x333e, 0x0000 },

-  { 0x1a00, 0x3340, 0x0000 },

-  { 0x9a00, 0x3349, 0x4000 },

-  { 0x9a00, 0x3345, 0x3000 },

-  { 0x9a00, 0x3343, 0x2000 },

-  { 0x1a00, 0x3342, 0x0000 },

-  { 0x1a00, 0x3344, 0x0000 },

-  { 0x9a00, 0x3347, 0x2000 },

-  { 0x1a00, 0x3346, 0x0000 },

-  { 0x1a00, 0x3348, 0x0000 },

-  { 0x9a00, 0x334d, 0x3000 },

-  { 0x9a00, 0x334b, 0x2000 },

-  { 0x1a00, 0x334a, 0x0000 },

-  { 0x1a00, 0x334c, 0x0000 },

-  { 0x9a00, 0x334f, 0x2000 },

-  { 0x1a00, 0x334e, 0x0000 },

-  { 0x1a00, 0x3350, 0x0000 },

-  { 0x9a00, 0x3371, 0x6000 },

-  { 0x9a00, 0x3361, 0x5000 },

-  { 0x9a00, 0x3359, 0x4000 },

-  { 0x9a00, 0x3355, 0x3000 },

-  { 0x9a00, 0x3353, 0x2000 },

-  { 0x1a00, 0x3352, 0x0000 },

-  { 0x1a00, 0x3354, 0x0000 },

-  { 0x9a00, 0x3357, 0x2000 },

-  { 0x1a00, 0x3356, 0x0000 },

-  { 0x1a00, 0x3358, 0x0000 },

-  { 0x9a00, 0x335d, 0x3000 },

-  { 0x9a00, 0x335b, 0x2000 },

-  { 0x1a00, 0x335a, 0x0000 },

-  { 0x1a00, 0x335c, 0x0000 },

-  { 0x9a00, 0x335f, 0x2000 },

-  { 0x1a00, 0x335e, 0x0000 },

-  { 0x1a00, 0x3360, 0x0000 },

-  { 0x9a00, 0x3369, 0x4000 },

-  { 0x9a00, 0x3365, 0x3000 },

-  { 0x9a00, 0x3363, 0x2000 },

-  { 0x1a00, 0x3362, 0x0000 },

-  { 0x1a00, 0x3364, 0x0000 },

-  { 0x9a00, 0x3367, 0x2000 },

-  { 0x1a00, 0x3366, 0x0000 },

-  { 0x1a00, 0x3368, 0x0000 },

-  { 0x9a00, 0x336d, 0x3000 },

-  { 0x9a00, 0x336b, 0x2000 },

-  { 0x1a00, 0x336a, 0x0000 },

-  { 0x1a00, 0x336c, 0x0000 },

-  { 0x9a00, 0x336f, 0x2000 },

-  { 0x1a00, 0x336e, 0x0000 },

-  { 0x1a00, 0x3370, 0x0000 },

-  { 0x9a00, 0x3381, 0x5000 },

-  { 0x9a00, 0x3379, 0x4000 },

-  { 0x9a00, 0x3375, 0x3000 },

-  { 0x9a00, 0x3373, 0x2000 },

-  { 0x1a00, 0x3372, 0x0000 },

-  { 0x1a00, 0x3374, 0x0000 },

-  { 0x9a00, 0x3377, 0x2000 },

-  { 0x1a00, 0x3376, 0x0000 },

-  { 0x1a00, 0x3378, 0x0000 },

-  { 0x9a00, 0x337d, 0x3000 },

-  { 0x9a00, 0x337b, 0x2000 },

-  { 0x1a00, 0x337a, 0x0000 },

-  { 0x1a00, 0x337c, 0x0000 },

-  { 0x9a00, 0x337f, 0x2000 },

-  { 0x1a00, 0x337e, 0x0000 },

-  { 0x1a00, 0x3380, 0x0000 },

-  { 0x9a00, 0x3389, 0x4000 },

-  { 0x9a00, 0x3385, 0x3000 },

-  { 0x9a00, 0x3383, 0x2000 },

-  { 0x1a00, 0x3382, 0x0000 },

-  { 0x1a00, 0x3384, 0x0000 },

-  { 0x9a00, 0x3387, 0x2000 },

-  { 0x1a00, 0x3386, 0x0000 },

-  { 0x1a00, 0x3388, 0x0000 },

-  { 0x9a00, 0x338d, 0x3000 },

-  { 0x9a00, 0x338b, 0x2000 },

-  { 0x1a00, 0x338a, 0x0000 },

-  { 0x1a00, 0x338c, 0x0000 },

-  { 0x9a00, 0x338f, 0x2000 },

-  { 0x1a00, 0x338e, 0x0000 },

-  { 0x1a00, 0x3390, 0x0000 },

-  { 0x8700, 0xa14d, 0xa000 },

-  { 0x8700, 0xa04d, 0x9000 },

-  { 0x9a00, 0x4dcf, 0x8000 },

-  { 0x9a00, 0x33d1, 0x7000 },

-  { 0x9a00, 0x33b1, 0x6000 },

-  { 0x9a00, 0x33a1, 0x5000 },

-  { 0x9a00, 0x3399, 0x4000 },

-  { 0x9a00, 0x3395, 0x3000 },

-  { 0x9a00, 0x3393, 0x2000 },

-  { 0x1a00, 0x3392, 0x0000 },

-  { 0x1a00, 0x3394, 0x0000 },

-  { 0x9a00, 0x3397, 0x2000 },

-  { 0x1a00, 0x3396, 0x0000 },

-  { 0x1a00, 0x3398, 0x0000 },

-  { 0x9a00, 0x339d, 0x3000 },

-  { 0x9a00, 0x339b, 0x2000 },

-  { 0x1a00, 0x339a, 0x0000 },

-  { 0x1a00, 0x339c, 0x0000 },

-  { 0x9a00, 0x339f, 0x2000 },

-  { 0x1a00, 0x339e, 0x0000 },

-  { 0x1a00, 0x33a0, 0x0000 },

-  { 0x9a00, 0x33a9, 0x4000 },

-  { 0x9a00, 0x33a5, 0x3000 },

-  { 0x9a00, 0x33a3, 0x2000 },

-  { 0x1a00, 0x33a2, 0x0000 },

-  { 0x1a00, 0x33a4, 0x0000 },

-  { 0x9a00, 0x33a7, 0x2000 },

-  { 0x1a00, 0x33a6, 0x0000 },

-  { 0x1a00, 0x33a8, 0x0000 },

-  { 0x9a00, 0x33ad, 0x3000 },

-  { 0x9a00, 0x33ab, 0x2000 },

-  { 0x1a00, 0x33aa, 0x0000 },

-  { 0x1a00, 0x33ac, 0x0000 },

-  { 0x9a00, 0x33af, 0x2000 },

-  { 0x1a00, 0x33ae, 0x0000 },

-  { 0x1a00, 0x33b0, 0x0000 },

-  { 0x9a00, 0x33c1, 0x5000 },

-  { 0x9a00, 0x33b9, 0x4000 },

-  { 0x9a00, 0x33b5, 0x3000 },

-  { 0x9a00, 0x33b3, 0x2000 },

-  { 0x1a00, 0x33b2, 0x0000 },

-  { 0x1a00, 0x33b4, 0x0000 },

-  { 0x9a00, 0x33b7, 0x2000 },

-  { 0x1a00, 0x33b6, 0x0000 },

-  { 0x1a00, 0x33b8, 0x0000 },

-  { 0x9a00, 0x33bd, 0x3000 },

-  { 0x9a00, 0x33bb, 0x2000 },

-  { 0x1a00, 0x33ba, 0x0000 },

-  { 0x1a00, 0x33bc, 0x0000 },

-  { 0x9a00, 0x33bf, 0x2000 },

-  { 0x1a00, 0x33be, 0x0000 },

-  { 0x1a00, 0x33c0, 0x0000 },

-  { 0x9a00, 0x33c9, 0x4000 },

-  { 0x9a00, 0x33c5, 0x3000 },

-  { 0x9a00, 0x33c3, 0x2000 },

-  { 0x1a00, 0x33c2, 0x0000 },

-  { 0x1a00, 0x33c4, 0x0000 },

-  { 0x9a00, 0x33c7, 0x2000 },

-  { 0x1a00, 0x33c6, 0x0000 },

-  { 0x1a00, 0x33c8, 0x0000 },

-  { 0x9a00, 0x33cd, 0x3000 },

-  { 0x9a00, 0x33cb, 0x2000 },

-  { 0x1a00, 0x33ca, 0x0000 },

-  { 0x1a00, 0x33cc, 0x0000 },

-  { 0x9a00, 0x33cf, 0x2000 },

-  { 0x1a00, 0x33ce, 0x0000 },

-  { 0x1a00, 0x33d0, 0x0000 },

-  { 0x9a00, 0x33f1, 0x6000 },

-  { 0x9a00, 0x33e1, 0x5000 },

-  { 0x9a00, 0x33d9, 0x4000 },

-  { 0x9a00, 0x33d5, 0x3000 },

-  { 0x9a00, 0x33d3, 0x2000 },

-  { 0x1a00, 0x33d2, 0x0000 },

-  { 0x1a00, 0x33d4, 0x0000 },

-  { 0x9a00, 0x33d7, 0x2000 },

-  { 0x1a00, 0x33d6, 0x0000 },

-  { 0x1a00, 0x33d8, 0x0000 },

-  { 0x9a00, 0x33dd, 0x3000 },

-  { 0x9a00, 0x33db, 0x2000 },

-  { 0x1a00, 0x33da, 0x0000 },

-  { 0x1a00, 0x33dc, 0x0000 },

-  { 0x9a00, 0x33df, 0x2000 },

-  { 0x1a00, 0x33de, 0x0000 },

-  { 0x1a00, 0x33e0, 0x0000 },

-  { 0x9a00, 0x33e9, 0x4000 },

-  { 0x9a00, 0x33e5, 0x3000 },

-  { 0x9a00, 0x33e3, 0x2000 },

-  { 0x1a00, 0x33e2, 0x0000 },

-  { 0x1a00, 0x33e4, 0x0000 },

-  { 0x9a00, 0x33e7, 0x2000 },

-  { 0x1a00, 0x33e6, 0x0000 },

-  { 0x1a00, 0x33e8, 0x0000 },

-  { 0x9a00, 0x33ed, 0x3000 },

-  { 0x9a00, 0x33eb, 0x2000 },

-  { 0x1a00, 0x33ea, 0x0000 },

-  { 0x1a00, 0x33ec, 0x0000 },

-  { 0x9a00, 0x33ef, 0x2000 },

-  { 0x1a00, 0x33ee, 0x0000 },

-  { 0x1a00, 0x33f0, 0x0000 },

-  { 0x8700, 0x4db5, 0x5000 },

-  { 0x9a00, 0x33f9, 0x4000 },

-  { 0x9a00, 0x33f5, 0x3000 },

-  { 0x9a00, 0x33f3, 0x2000 },

-  { 0x1a00, 0x33f2, 0x0000 },

-  { 0x1a00, 0x33f4, 0x0000 },

-  { 0x9a00, 0x33f7, 0x2000 },

-  { 0x1a00, 0x33f6, 0x0000 },

-  { 0x1a00, 0x33f8, 0x0000 },

-  { 0x9a00, 0x33fd, 0x3000 },

-  { 0x9a00, 0x33fb, 0x2000 },

-  { 0x1a00, 0x33fa, 0x0000 },

-  { 0x1a00, 0x33fc, 0x0000 },

-  { 0x9a00, 0x33ff, 0x2000 },

-  { 0x1a00, 0x33fe, 0x0000 },

-  { 0x0700, 0x3400, 0x0000 },

-  { 0x9a00, 0x4dc7, 0x4000 },

-  { 0x9a00, 0x4dc3, 0x3000 },

-  { 0x9a00, 0x4dc1, 0x2000 },

-  { 0x1a00, 0x4dc0, 0x0000 },

-  { 0x1a00, 0x4dc2, 0x0000 },

-  { 0x9a00, 0x4dc5, 0x2000 },

-  { 0x1a00, 0x4dc4, 0x0000 },

-  { 0x1a00, 0x4dc6, 0x0000 },

-  { 0x9a00, 0x4dcb, 0x3000 },

-  { 0x9a00, 0x4dc9, 0x2000 },

-  { 0x1a00, 0x4dc8, 0x0000 },

-  { 0x1a00, 0x4dca, 0x0000 },

-  { 0x9a00, 0x4dcd, 0x2000 },

-  { 0x1a00, 0x4dcc, 0x0000 },

-  { 0x1a00, 0x4dce, 0x0000 },

-  { 0x8700, 0xa00d, 0x7000 },

-  { 0x9a00, 0x4def, 0x6000 },

-  { 0x9a00, 0x4ddf, 0x5000 },

-  { 0x9a00, 0x4dd7, 0x4000 },

-  { 0x9a00, 0x4dd3, 0x3000 },

-  { 0x9a00, 0x4dd1, 0x2000 },

-  { 0x1a00, 0x4dd0, 0x0000 },

-  { 0x1a00, 0x4dd2, 0x0000 },

-  { 0x9a00, 0x4dd5, 0x2000 },

-  { 0x1a00, 0x4dd4, 0x0000 },

-  { 0x1a00, 0x4dd6, 0x0000 },

-  { 0x9a00, 0x4ddb, 0x3000 },

-  { 0x9a00, 0x4dd9, 0x2000 },

-  { 0x1a00, 0x4dd8, 0x0000 },

-  { 0x1a00, 0x4dda, 0x0000 },

-  { 0x9a00, 0x4ddd, 0x2000 },

-  { 0x1a00, 0x4ddc, 0x0000 },

-  { 0x1a00, 0x4dde, 0x0000 },

-  { 0x9a00, 0x4de7, 0x4000 },

-  { 0x9a00, 0x4de3, 0x3000 },

-  { 0x9a00, 0x4de1, 0x2000 },

-  { 0x1a00, 0x4de0, 0x0000 },

-  { 0x1a00, 0x4de2, 0x0000 },

-  { 0x9a00, 0x4de5, 0x2000 },

-  { 0x1a00, 0x4de4, 0x0000 },

-  { 0x1a00, 0x4de6, 0x0000 },

-  { 0x9a00, 0x4deb, 0x3000 },

-  { 0x9a00, 0x4de9, 0x2000 },

-  { 0x1a00, 0x4de8, 0x0000 },

-  { 0x1a00, 0x4dea, 0x0000 },

-  { 0x9a00, 0x4ded, 0x2000 },

-  { 0x1a00, 0x4dec, 0x0000 },

-  { 0x1a00, 0x4dee, 0x0000 },

-  { 0x9a00, 0x4dff, 0x5000 },

-  { 0x9a00, 0x4df7, 0x4000 },

-  { 0x9a00, 0x4df3, 0x3000 },

-  { 0x9a00, 0x4df1, 0x2000 },

-  { 0x1a00, 0x4df0, 0x0000 },

-  { 0x1a00, 0x4df2, 0x0000 },

-  { 0x9a00, 0x4df5, 0x2000 },

-  { 0x1a00, 0x4df4, 0x0000 },

-  { 0x1a00, 0x4df6, 0x0000 },

-  { 0x9a00, 0x4dfb, 0x3000 },

-  { 0x9a00, 0x4df9, 0x2000 },

-  { 0x1a00, 0x4df8, 0x0000 },

-  { 0x1a00, 0x4dfa, 0x0000 },

-  { 0x9a00, 0x4dfd, 0x2000 },

-  { 0x1a00, 0x4dfc, 0x0000 },

-  { 0x1a00, 0x4dfe, 0x0000 },

-  { 0x8700, 0xa005, 0x4000 },

-  { 0x8700, 0xa001, 0x3000 },

-  { 0x8700, 0x9fa5, 0x2000 },

-  { 0x0700, 0x4e00, 0x0000 },

-  { 0x0700, 0xa000, 0x0000 },

-  { 0x8700, 0xa003, 0x2000 },

-  { 0x0700, 0xa002, 0x0000 },

-  { 0x0700, 0xa004, 0x0000 },

-  { 0x8700, 0xa009, 0x3000 },

-  { 0x8700, 0xa007, 0x2000 },

-  { 0x0700, 0xa006, 0x0000 },

-  { 0x0700, 0xa008, 0x0000 },

-  { 0x8700, 0xa00b, 0x2000 },

-  { 0x0700, 0xa00a, 0x0000 },

-  { 0x0700, 0xa00c, 0x0000 },

-  { 0x8700, 0xa02d, 0x6000 },

-  { 0x8700, 0xa01d, 0x5000 },

-  { 0x8700, 0xa015, 0x4000 },

-  { 0x8700, 0xa011, 0x3000 },

-  { 0x8700, 0xa00f, 0x2000 },

-  { 0x0700, 0xa00e, 0x0000 },

-  { 0x0700, 0xa010, 0x0000 },

-  { 0x8700, 0xa013, 0x2000 },

-  { 0x0700, 0xa012, 0x0000 },

-  { 0x0700, 0xa014, 0x0000 },

-  { 0x8700, 0xa019, 0x3000 },

-  { 0x8700, 0xa017, 0x2000 },

-  { 0x0700, 0xa016, 0x0000 },

-  { 0x0700, 0xa018, 0x0000 },

-  { 0x8700, 0xa01b, 0x2000 },

-  { 0x0700, 0xa01a, 0x0000 },

-  { 0x0700, 0xa01c, 0x0000 },

-  { 0x8700, 0xa025, 0x4000 },

-  { 0x8700, 0xa021, 0x3000 },

-  { 0x8700, 0xa01f, 0x2000 },

-  { 0x0700, 0xa01e, 0x0000 },

-  { 0x0700, 0xa020, 0x0000 },

-  { 0x8700, 0xa023, 0x2000 },

-  { 0x0700, 0xa022, 0x0000 },

-  { 0x0700, 0xa024, 0x0000 },

-  { 0x8700, 0xa029, 0x3000 },

-  { 0x8700, 0xa027, 0x2000 },

-  { 0x0700, 0xa026, 0x0000 },

-  { 0x0700, 0xa028, 0x0000 },

-  { 0x8700, 0xa02b, 0x2000 },

-  { 0x0700, 0xa02a, 0x0000 },

-  { 0x0700, 0xa02c, 0x0000 },

-  { 0x8700, 0xa03d, 0x5000 },

-  { 0x8700, 0xa035, 0x4000 },

-  { 0x8700, 0xa031, 0x3000 },

-  { 0x8700, 0xa02f, 0x2000 },

-  { 0x0700, 0xa02e, 0x0000 },

-  { 0x0700, 0xa030, 0x0000 },

-  { 0x8700, 0xa033, 0x2000 },

-  { 0x0700, 0xa032, 0x0000 },

-  { 0x0700, 0xa034, 0x0000 },

-  { 0x8700, 0xa039, 0x3000 },

-  { 0x8700, 0xa037, 0x2000 },

-  { 0x0700, 0xa036, 0x0000 },

-  { 0x0700, 0xa038, 0x0000 },

-  { 0x8700, 0xa03b, 0x2000 },

-  { 0x0700, 0xa03a, 0x0000 },

-  { 0x0700, 0xa03c, 0x0000 },

-  { 0x8700, 0xa045, 0x4000 },

-  { 0x8700, 0xa041, 0x3000 },

-  { 0x8700, 0xa03f, 0x2000 },

-  { 0x0700, 0xa03e, 0x0000 },

-  { 0x0700, 0xa040, 0x0000 },

-  { 0x8700, 0xa043, 0x2000 },

-  { 0x0700, 0xa042, 0x0000 },

-  { 0x0700, 0xa044, 0x0000 },

-  { 0x8700, 0xa049, 0x3000 },

-  { 0x8700, 0xa047, 0x2000 },

-  { 0x0700, 0xa046, 0x0000 },

-  { 0x0700, 0xa048, 0x0000 },

-  { 0x8700, 0xa04b, 0x2000 },

-  { 0x0700, 0xa04a, 0x0000 },

-  { 0x0700, 0xa04c, 0x0000 },

-  { 0x8700, 0xa0cd, 0x8000 },

-  { 0x8700, 0xa08d, 0x7000 },

-  { 0x8700, 0xa06d, 0x6000 },

-  { 0x8700, 0xa05d, 0x5000 },

-  { 0x8700, 0xa055, 0x4000 },

-  { 0x8700, 0xa051, 0x3000 },

-  { 0x8700, 0xa04f, 0x2000 },

-  { 0x0700, 0xa04e, 0x0000 },

-  { 0x0700, 0xa050, 0x0000 },

-  { 0x8700, 0xa053, 0x2000 },

-  { 0x0700, 0xa052, 0x0000 },

-  { 0x0700, 0xa054, 0x0000 },

-  { 0x8700, 0xa059, 0x3000 },

-  { 0x8700, 0xa057, 0x2000 },

-  { 0x0700, 0xa056, 0x0000 },

-  { 0x0700, 0xa058, 0x0000 },

-  { 0x8700, 0xa05b, 0x2000 },

-  { 0x0700, 0xa05a, 0x0000 },

-  { 0x0700, 0xa05c, 0x0000 },

-  { 0x8700, 0xa065, 0x4000 },

-  { 0x8700, 0xa061, 0x3000 },

-  { 0x8700, 0xa05f, 0x2000 },

-  { 0x0700, 0xa05e, 0x0000 },

-  { 0x0700, 0xa060, 0x0000 },

-  { 0x8700, 0xa063, 0x2000 },

-  { 0x0700, 0xa062, 0x0000 },

-  { 0x0700, 0xa064, 0x0000 },

-  { 0x8700, 0xa069, 0x3000 },

-  { 0x8700, 0xa067, 0x2000 },

-  { 0x0700, 0xa066, 0x0000 },

-  { 0x0700, 0xa068, 0x0000 },

-  { 0x8700, 0xa06b, 0x2000 },

-  { 0x0700, 0xa06a, 0x0000 },

-  { 0x0700, 0xa06c, 0x0000 },

-  { 0x8700, 0xa07d, 0x5000 },

-  { 0x8700, 0xa075, 0x4000 },

-  { 0x8700, 0xa071, 0x3000 },

-  { 0x8700, 0xa06f, 0x2000 },

-  { 0x0700, 0xa06e, 0x0000 },

-  { 0x0700, 0xa070, 0x0000 },

-  { 0x8700, 0xa073, 0x2000 },

-  { 0x0700, 0xa072, 0x0000 },

-  { 0x0700, 0xa074, 0x0000 },

-  { 0x8700, 0xa079, 0x3000 },

-  { 0x8700, 0xa077, 0x2000 },

-  { 0x0700, 0xa076, 0x0000 },

-  { 0x0700, 0xa078, 0x0000 },

-  { 0x8700, 0xa07b, 0x2000 },

-  { 0x0700, 0xa07a, 0x0000 },

-  { 0x0700, 0xa07c, 0x0000 },

-  { 0x8700, 0xa085, 0x4000 },

-  { 0x8700, 0xa081, 0x3000 },

-  { 0x8700, 0xa07f, 0x2000 },

-  { 0x0700, 0xa07e, 0x0000 },

-  { 0x0700, 0xa080, 0x0000 },

-  { 0x8700, 0xa083, 0x2000 },

-  { 0x0700, 0xa082, 0x0000 },

-  { 0x0700, 0xa084, 0x0000 },

-  { 0x8700, 0xa089, 0x3000 },

-  { 0x8700, 0xa087, 0x2000 },

-  { 0x0700, 0xa086, 0x0000 },

-  { 0x0700, 0xa088, 0x0000 },

-  { 0x8700, 0xa08b, 0x2000 },

-  { 0x0700, 0xa08a, 0x0000 },

-  { 0x0700, 0xa08c, 0x0000 },

-  { 0x8700, 0xa0ad, 0x6000 },

-  { 0x8700, 0xa09d, 0x5000 },

-  { 0x8700, 0xa095, 0x4000 },

-  { 0x8700, 0xa091, 0x3000 },

-  { 0x8700, 0xa08f, 0x2000 },

-  { 0x0700, 0xa08e, 0x0000 },

-  { 0x0700, 0xa090, 0x0000 },

-  { 0x8700, 0xa093, 0x2000 },

-  { 0x0700, 0xa092, 0x0000 },

-  { 0x0700, 0xa094, 0x0000 },

-  { 0x8700, 0xa099, 0x3000 },

-  { 0x8700, 0xa097, 0x2000 },

-  { 0x0700, 0xa096, 0x0000 },

-  { 0x0700, 0xa098, 0x0000 },

-  { 0x8700, 0xa09b, 0x2000 },

-  { 0x0700, 0xa09a, 0x0000 },

-  { 0x0700, 0xa09c, 0x0000 },

-  { 0x8700, 0xa0a5, 0x4000 },

-  { 0x8700, 0xa0a1, 0x3000 },

-  { 0x8700, 0xa09f, 0x2000 },

-  { 0x0700, 0xa09e, 0x0000 },

-  { 0x0700, 0xa0a0, 0x0000 },

-  { 0x8700, 0xa0a3, 0x2000 },

-  { 0x0700, 0xa0a2, 0x0000 },

-  { 0x0700, 0xa0a4, 0x0000 },

-  { 0x8700, 0xa0a9, 0x3000 },

-  { 0x8700, 0xa0a7, 0x2000 },

-  { 0x0700, 0xa0a6, 0x0000 },

-  { 0x0700, 0xa0a8, 0x0000 },

-  { 0x8700, 0xa0ab, 0x2000 },

-  { 0x0700, 0xa0aa, 0x0000 },

-  { 0x0700, 0xa0ac, 0x0000 },

-  { 0x8700, 0xa0bd, 0x5000 },

-  { 0x8700, 0xa0b5, 0x4000 },

-  { 0x8700, 0xa0b1, 0x3000 },

-  { 0x8700, 0xa0af, 0x2000 },

-  { 0x0700, 0xa0ae, 0x0000 },

-  { 0x0700, 0xa0b0, 0x0000 },

-  { 0x8700, 0xa0b3, 0x2000 },

-  { 0x0700, 0xa0b2, 0x0000 },

-  { 0x0700, 0xa0b4, 0x0000 },

-  { 0x8700, 0xa0b9, 0x3000 },

-  { 0x8700, 0xa0b7, 0x2000 },

-  { 0x0700, 0xa0b6, 0x0000 },

-  { 0x0700, 0xa0b8, 0x0000 },

-  { 0x8700, 0xa0bb, 0x2000 },

-  { 0x0700, 0xa0ba, 0x0000 },

-  { 0x0700, 0xa0bc, 0x0000 },

-  { 0x8700, 0xa0c5, 0x4000 },

-  { 0x8700, 0xa0c1, 0x3000 },

-  { 0x8700, 0xa0bf, 0x2000 },

-  { 0x0700, 0xa0be, 0x0000 },

-  { 0x0700, 0xa0c0, 0x0000 },

-  { 0x8700, 0xa0c3, 0x2000 },

-  { 0x0700, 0xa0c2, 0x0000 },

-  { 0x0700, 0xa0c4, 0x0000 },

-  { 0x8700, 0xa0c9, 0x3000 },

-  { 0x8700, 0xa0c7, 0x2000 },

-  { 0x0700, 0xa0c6, 0x0000 },

-  { 0x0700, 0xa0c8, 0x0000 },

-  { 0x8700, 0xa0cb, 0x2000 },

-  { 0x0700, 0xa0ca, 0x0000 },

-  { 0x0700, 0xa0cc, 0x0000 },

-  { 0x8700, 0xa10d, 0x7000 },

-  { 0x8700, 0xa0ed, 0x6000 },

-  { 0x8700, 0xa0dd, 0x5000 },

-  { 0x8700, 0xa0d5, 0x4000 },

-  { 0x8700, 0xa0d1, 0x3000 },

-  { 0x8700, 0xa0cf, 0x2000 },

-  { 0x0700, 0xa0ce, 0x0000 },

-  { 0x0700, 0xa0d0, 0x0000 },

-  { 0x8700, 0xa0d3, 0x2000 },

-  { 0x0700, 0xa0d2, 0x0000 },

-  { 0x0700, 0xa0d4, 0x0000 },

-  { 0x8700, 0xa0d9, 0x3000 },

-  { 0x8700, 0xa0d7, 0x2000 },

-  { 0x0700, 0xa0d6, 0x0000 },

-  { 0x0700, 0xa0d8, 0x0000 },

-  { 0x8700, 0xa0db, 0x2000 },

-  { 0x0700, 0xa0da, 0x0000 },

-  { 0x0700, 0xa0dc, 0x0000 },

-  { 0x8700, 0xa0e5, 0x4000 },

-  { 0x8700, 0xa0e1, 0x3000 },

-  { 0x8700, 0xa0df, 0x2000 },

-  { 0x0700, 0xa0de, 0x0000 },

-  { 0x0700, 0xa0e0, 0x0000 },

-  { 0x8700, 0xa0e3, 0x2000 },

-  { 0x0700, 0xa0e2, 0x0000 },

-  { 0x0700, 0xa0e4, 0x0000 },

-  { 0x8700, 0xa0e9, 0x3000 },

-  { 0x8700, 0xa0e7, 0x2000 },

-  { 0x0700, 0xa0e6, 0x0000 },

-  { 0x0700, 0xa0e8, 0x0000 },

-  { 0x8700, 0xa0eb, 0x2000 },

-  { 0x0700, 0xa0ea, 0x0000 },

-  { 0x0700, 0xa0ec, 0x0000 },

-  { 0x8700, 0xa0fd, 0x5000 },

-  { 0x8700, 0xa0f5, 0x4000 },

-  { 0x8700, 0xa0f1, 0x3000 },

-  { 0x8700, 0xa0ef, 0x2000 },

-  { 0x0700, 0xa0ee, 0x0000 },

-  { 0x0700, 0xa0f0, 0x0000 },

-  { 0x8700, 0xa0f3, 0x2000 },

-  { 0x0700, 0xa0f2, 0x0000 },

-  { 0x0700, 0xa0f4, 0x0000 },

-  { 0x8700, 0xa0f9, 0x3000 },

-  { 0x8700, 0xa0f7, 0x2000 },

-  { 0x0700, 0xa0f6, 0x0000 },

-  { 0x0700, 0xa0f8, 0x0000 },

-  { 0x8700, 0xa0fb, 0x2000 },

-  { 0x0700, 0xa0fa, 0x0000 },

-  { 0x0700, 0xa0fc, 0x0000 },

-  { 0x8700, 0xa105, 0x4000 },

-  { 0x8700, 0xa101, 0x3000 },

-  { 0x8700, 0xa0ff, 0x2000 },

-  { 0x0700, 0xa0fe, 0x0000 },

-  { 0x0700, 0xa100, 0x0000 },

-  { 0x8700, 0xa103, 0x2000 },

-  { 0x0700, 0xa102, 0x0000 },

-  { 0x0700, 0xa104, 0x0000 },

-  { 0x8700, 0xa109, 0x3000 },

-  { 0x8700, 0xa107, 0x2000 },

-  { 0x0700, 0xa106, 0x0000 },

-  { 0x0700, 0xa108, 0x0000 },

-  { 0x8700, 0xa10b, 0x2000 },

-  { 0x0700, 0xa10a, 0x0000 },

-  { 0x0700, 0xa10c, 0x0000 },

-  { 0x8700, 0xa12d, 0x6000 },

-  { 0x8700, 0xa11d, 0x5000 },

-  { 0x8700, 0xa115, 0x4000 },

-  { 0x8700, 0xa111, 0x3000 },

-  { 0x8700, 0xa10f, 0x2000 },

-  { 0x0700, 0xa10e, 0x0000 },

-  { 0x0700, 0xa110, 0x0000 },

-  { 0x8700, 0xa113, 0x2000 },

-  { 0x0700, 0xa112, 0x0000 },

-  { 0x0700, 0xa114, 0x0000 },

-  { 0x8700, 0xa119, 0x3000 },

-  { 0x8700, 0xa117, 0x2000 },

-  { 0x0700, 0xa116, 0x0000 },

-  { 0x0700, 0xa118, 0x0000 },

-  { 0x8700, 0xa11b, 0x2000 },

-  { 0x0700, 0xa11a, 0x0000 },

-  { 0x0700, 0xa11c, 0x0000 },

-  { 0x8700, 0xa125, 0x4000 },

-  { 0x8700, 0xa121, 0x3000 },

-  { 0x8700, 0xa11f, 0x2000 },

-  { 0x0700, 0xa11e, 0x0000 },

-  { 0x0700, 0xa120, 0x0000 },

-  { 0x8700, 0xa123, 0x2000 },

-  { 0x0700, 0xa122, 0x0000 },

-  { 0x0700, 0xa124, 0x0000 },

-  { 0x8700, 0xa129, 0x3000 },

-  { 0x8700, 0xa127, 0x2000 },

-  { 0x0700, 0xa126, 0x0000 },

-  { 0x0700, 0xa128, 0x0000 },

-  { 0x8700, 0xa12b, 0x2000 },

-  { 0x0700, 0xa12a, 0x0000 },

-  { 0x0700, 0xa12c, 0x0000 },

-  { 0x8700, 0xa13d, 0x5000 },

-  { 0x8700, 0xa135, 0x4000 },

-  { 0x8700, 0xa131, 0x3000 },

-  { 0x8700, 0xa12f, 0x2000 },

-  { 0x0700, 0xa12e, 0x0000 },

-  { 0x0700, 0xa130, 0x0000 },

-  { 0x8700, 0xa133, 0x2000 },

-  { 0x0700, 0xa132, 0x0000 },

-  { 0x0700, 0xa134, 0x0000 },

-  { 0x8700, 0xa139, 0x3000 },

-  { 0x8700, 0xa137, 0x2000 },

-  { 0x0700, 0xa136, 0x0000 },

-  { 0x0700, 0xa138, 0x0000 },

-  { 0x8700, 0xa13b, 0x2000 },

-  { 0x0700, 0xa13a, 0x0000 },

-  { 0x0700, 0xa13c, 0x0000 },

-  { 0x8700, 0xa145, 0x4000 },

-  { 0x8700, 0xa141, 0x3000 },

-  { 0x8700, 0xa13f, 0x2000 },

-  { 0x0700, 0xa13e, 0x0000 },

-  { 0x0700, 0xa140, 0x0000 },

-  { 0x8700, 0xa143, 0x2000 },

-  { 0x0700, 0xa142, 0x0000 },

-  { 0x0700, 0xa144, 0x0000 },

-  { 0x8700, 0xa149, 0x3000 },

-  { 0x8700, 0xa147, 0x2000 },

-  { 0x0700, 0xa146, 0x0000 },

-  { 0x0700, 0xa148, 0x0000 },

-  { 0x8700, 0xa14b, 0x2000 },

-  { 0x0700, 0xa14a, 0x0000 },

-  { 0x0700, 0xa14c, 0x0000 },

-  { 0x8700, 0xa24d, 0x9000 },

-  { 0x8700, 0xa1cd, 0x8000 },

-  { 0x8700, 0xa18d, 0x7000 },

-  { 0x8700, 0xa16d, 0x6000 },

-  { 0x8700, 0xa15d, 0x5000 },

-  { 0x8700, 0xa155, 0x4000 },

-  { 0x8700, 0xa151, 0x3000 },

-  { 0x8700, 0xa14f, 0x2000 },

-  { 0x0700, 0xa14e, 0x0000 },

-  { 0x0700, 0xa150, 0x0000 },

-  { 0x8700, 0xa153, 0x2000 },

-  { 0x0700, 0xa152, 0x0000 },

-  { 0x0700, 0xa154, 0x0000 },

-  { 0x8700, 0xa159, 0x3000 },

-  { 0x8700, 0xa157, 0x2000 },

-  { 0x0700, 0xa156, 0x0000 },

-  { 0x0700, 0xa158, 0x0000 },

-  { 0x8700, 0xa15b, 0x2000 },

-  { 0x0700, 0xa15a, 0x0000 },

-  { 0x0700, 0xa15c, 0x0000 },

-  { 0x8700, 0xa165, 0x4000 },

-  { 0x8700, 0xa161, 0x3000 },

-  { 0x8700, 0xa15f, 0x2000 },

-  { 0x0700, 0xa15e, 0x0000 },

-  { 0x0700, 0xa160, 0x0000 },

-  { 0x8700, 0xa163, 0x2000 },

-  { 0x0700, 0xa162, 0x0000 },

-  { 0x0700, 0xa164, 0x0000 },

-  { 0x8700, 0xa169, 0x3000 },

-  { 0x8700, 0xa167, 0x2000 },

-  { 0x0700, 0xa166, 0x0000 },

-  { 0x0700, 0xa168, 0x0000 },

-  { 0x8700, 0xa16b, 0x2000 },

-  { 0x0700, 0xa16a, 0x0000 },

-  { 0x0700, 0xa16c, 0x0000 },

-  { 0x8700, 0xa17d, 0x5000 },

-  { 0x8700, 0xa175, 0x4000 },

-  { 0x8700, 0xa171, 0x3000 },

-  { 0x8700, 0xa16f, 0x2000 },

-  { 0x0700, 0xa16e, 0x0000 },

-  { 0x0700, 0xa170, 0x0000 },

-  { 0x8700, 0xa173, 0x2000 },

-  { 0x0700, 0xa172, 0x0000 },

-  { 0x0700, 0xa174, 0x0000 },

-  { 0x8700, 0xa179, 0x3000 },

-  { 0x8700, 0xa177, 0x2000 },

-  { 0x0700, 0xa176, 0x0000 },

-  { 0x0700, 0xa178, 0x0000 },

-  { 0x8700, 0xa17b, 0x2000 },

-  { 0x0700, 0xa17a, 0x0000 },

-  { 0x0700, 0xa17c, 0x0000 },

-  { 0x8700, 0xa185, 0x4000 },

-  { 0x8700, 0xa181, 0x3000 },

-  { 0x8700, 0xa17f, 0x2000 },

-  { 0x0700, 0xa17e, 0x0000 },

-  { 0x0700, 0xa180, 0x0000 },

-  { 0x8700, 0xa183, 0x2000 },

-  { 0x0700, 0xa182, 0x0000 },

-  { 0x0700, 0xa184, 0x0000 },

-  { 0x8700, 0xa189, 0x3000 },

-  { 0x8700, 0xa187, 0x2000 },

-  { 0x0700, 0xa186, 0x0000 },

-  { 0x0700, 0xa188, 0x0000 },

-  { 0x8700, 0xa18b, 0x2000 },

-  { 0x0700, 0xa18a, 0x0000 },

-  { 0x0700, 0xa18c, 0x0000 },

-  { 0x8700, 0xa1ad, 0x6000 },

-  { 0x8700, 0xa19d, 0x5000 },

-  { 0x8700, 0xa195, 0x4000 },

-  { 0x8700, 0xa191, 0x3000 },

-  { 0x8700, 0xa18f, 0x2000 },

-  { 0x0700, 0xa18e, 0x0000 },

-  { 0x0700, 0xa190, 0x0000 },

-  { 0x8700, 0xa193, 0x2000 },

-  { 0x0700, 0xa192, 0x0000 },

-  { 0x0700, 0xa194, 0x0000 },

-  { 0x8700, 0xa199, 0x3000 },

-  { 0x8700, 0xa197, 0x2000 },

-  { 0x0700, 0xa196, 0x0000 },

-  { 0x0700, 0xa198, 0x0000 },

-  { 0x8700, 0xa19b, 0x2000 },

-  { 0x0700, 0xa19a, 0x0000 },

-  { 0x0700, 0xa19c, 0x0000 },

-  { 0x8700, 0xa1a5, 0x4000 },

-  { 0x8700, 0xa1a1, 0x3000 },

-  { 0x8700, 0xa19f, 0x2000 },

-  { 0x0700, 0xa19e, 0x0000 },

-  { 0x0700, 0xa1a0, 0x0000 },

-  { 0x8700, 0xa1a3, 0x2000 },

-  { 0x0700, 0xa1a2, 0x0000 },

-  { 0x0700, 0xa1a4, 0x0000 },

-  { 0x8700, 0xa1a9, 0x3000 },

-  { 0x8700, 0xa1a7, 0x2000 },

-  { 0x0700, 0xa1a6, 0x0000 },

-  { 0x0700, 0xa1a8, 0x0000 },

-  { 0x8700, 0xa1ab, 0x2000 },

-  { 0x0700, 0xa1aa, 0x0000 },

-  { 0x0700, 0xa1ac, 0x0000 },

-  { 0x8700, 0xa1bd, 0x5000 },

-  { 0x8700, 0xa1b5, 0x4000 },

-  { 0x8700, 0xa1b1, 0x3000 },

-  { 0x8700, 0xa1af, 0x2000 },

-  { 0x0700, 0xa1ae, 0x0000 },

-  { 0x0700, 0xa1b0, 0x0000 },

-  { 0x8700, 0xa1b3, 0x2000 },

-  { 0x0700, 0xa1b2, 0x0000 },

-  { 0x0700, 0xa1b4, 0x0000 },

-  { 0x8700, 0xa1b9, 0x3000 },

-  { 0x8700, 0xa1b7, 0x2000 },

-  { 0x0700, 0xa1b6, 0x0000 },

-  { 0x0700, 0xa1b8, 0x0000 },

-  { 0x8700, 0xa1bb, 0x2000 },

-  { 0x0700, 0xa1ba, 0x0000 },

-  { 0x0700, 0xa1bc, 0x0000 },

-  { 0x8700, 0xa1c5, 0x4000 },

-  { 0x8700, 0xa1c1, 0x3000 },

-  { 0x8700, 0xa1bf, 0x2000 },

-  { 0x0700, 0xa1be, 0x0000 },

-  { 0x0700, 0xa1c0, 0x0000 },

-  { 0x8700, 0xa1c3, 0x2000 },

-  { 0x0700, 0xa1c2, 0x0000 },

-  { 0x0700, 0xa1c4, 0x0000 },

-  { 0x8700, 0xa1c9, 0x3000 },

-  { 0x8700, 0xa1c7, 0x2000 },

-  { 0x0700, 0xa1c6, 0x0000 },

-  { 0x0700, 0xa1c8, 0x0000 },

-  { 0x8700, 0xa1cb, 0x2000 },

-  { 0x0700, 0xa1ca, 0x0000 },

-  { 0x0700, 0xa1cc, 0x0000 },

-  { 0x8700, 0xa20d, 0x7000 },

-  { 0x8700, 0xa1ed, 0x6000 },

-  { 0x8700, 0xa1dd, 0x5000 },

-  { 0x8700, 0xa1d5, 0x4000 },

-  { 0x8700, 0xa1d1, 0x3000 },

-  { 0x8700, 0xa1cf, 0x2000 },

-  { 0x0700, 0xa1ce, 0x0000 },

-  { 0x0700, 0xa1d0, 0x0000 },

-  { 0x8700, 0xa1d3, 0x2000 },

-  { 0x0700, 0xa1d2, 0x0000 },

-  { 0x0700, 0xa1d4, 0x0000 },

-  { 0x8700, 0xa1d9, 0x3000 },

-  { 0x8700, 0xa1d7, 0x2000 },

-  { 0x0700, 0xa1d6, 0x0000 },

-  { 0x0700, 0xa1d8, 0x0000 },

-  { 0x8700, 0xa1db, 0x2000 },

-  { 0x0700, 0xa1da, 0x0000 },

-  { 0x0700, 0xa1dc, 0x0000 },

-  { 0x8700, 0xa1e5, 0x4000 },

-  { 0x8700, 0xa1e1, 0x3000 },

-  { 0x8700, 0xa1df, 0x2000 },

-  { 0x0700, 0xa1de, 0x0000 },

-  { 0x0700, 0xa1e0, 0x0000 },

-  { 0x8700, 0xa1e3, 0x2000 },

-  { 0x0700, 0xa1e2, 0x0000 },

-  { 0x0700, 0xa1e4, 0x0000 },

-  { 0x8700, 0xa1e9, 0x3000 },

-  { 0x8700, 0xa1e7, 0x2000 },

-  { 0x0700, 0xa1e6, 0x0000 },

-  { 0x0700, 0xa1e8, 0x0000 },

-  { 0x8700, 0xa1eb, 0x2000 },

-  { 0x0700, 0xa1ea, 0x0000 },

-  { 0x0700, 0xa1ec, 0x0000 },

-  { 0x8700, 0xa1fd, 0x5000 },

-  { 0x8700, 0xa1f5, 0x4000 },

-  { 0x8700, 0xa1f1, 0x3000 },

-  { 0x8700, 0xa1ef, 0x2000 },

-  { 0x0700, 0xa1ee, 0x0000 },

-  { 0x0700, 0xa1f0, 0x0000 },

-  { 0x8700, 0xa1f3, 0x2000 },

-  { 0x0700, 0xa1f2, 0x0000 },

-  { 0x0700, 0xa1f4, 0x0000 },

-  { 0x8700, 0xa1f9, 0x3000 },

-  { 0x8700, 0xa1f7, 0x2000 },

-  { 0x0700, 0xa1f6, 0x0000 },

-  { 0x0700, 0xa1f8, 0x0000 },

-  { 0x8700, 0xa1fb, 0x2000 },

-  { 0x0700, 0xa1fa, 0x0000 },

-  { 0x0700, 0xa1fc, 0x0000 },

-  { 0x8700, 0xa205, 0x4000 },

-  { 0x8700, 0xa201, 0x3000 },

-  { 0x8700, 0xa1ff, 0x2000 },

-  { 0x0700, 0xa1fe, 0x0000 },

-  { 0x0700, 0xa200, 0x0000 },

-  { 0x8700, 0xa203, 0x2000 },

-  { 0x0700, 0xa202, 0x0000 },

-  { 0x0700, 0xa204, 0x0000 },

-  { 0x8700, 0xa209, 0x3000 },

-  { 0x8700, 0xa207, 0x2000 },

-  { 0x0700, 0xa206, 0x0000 },

-  { 0x0700, 0xa208, 0x0000 },

-  { 0x8700, 0xa20b, 0x2000 },

-  { 0x0700, 0xa20a, 0x0000 },

-  { 0x0700, 0xa20c, 0x0000 },

-  { 0x8700, 0xa22d, 0x6000 },

-  { 0x8700, 0xa21d, 0x5000 },

-  { 0x8700, 0xa215, 0x4000 },

-  { 0x8700, 0xa211, 0x3000 },

-  { 0x8700, 0xa20f, 0x2000 },

-  { 0x0700, 0xa20e, 0x0000 },

-  { 0x0700, 0xa210, 0x0000 },

-  { 0x8700, 0xa213, 0x2000 },

-  { 0x0700, 0xa212, 0x0000 },

-  { 0x0700, 0xa214, 0x0000 },

-  { 0x8700, 0xa219, 0x3000 },

-  { 0x8700, 0xa217, 0x2000 },

-  { 0x0700, 0xa216, 0x0000 },

-  { 0x0700, 0xa218, 0x0000 },

-  { 0x8700, 0xa21b, 0x2000 },

-  { 0x0700, 0xa21a, 0x0000 },

-  { 0x0700, 0xa21c, 0x0000 },

-  { 0x8700, 0xa225, 0x4000 },

-  { 0x8700, 0xa221, 0x3000 },

-  { 0x8700, 0xa21f, 0x2000 },

-  { 0x0700, 0xa21e, 0x0000 },

-  { 0x0700, 0xa220, 0x0000 },

-  { 0x8700, 0xa223, 0x2000 },

-  { 0x0700, 0xa222, 0x0000 },

-  { 0x0700, 0xa224, 0x0000 },

-  { 0x8700, 0xa229, 0x3000 },

-  { 0x8700, 0xa227, 0x2000 },

-  { 0x0700, 0xa226, 0x0000 },

-  { 0x0700, 0xa228, 0x0000 },

-  { 0x8700, 0xa22b, 0x2000 },

-  { 0x0700, 0xa22a, 0x0000 },

-  { 0x0700, 0xa22c, 0x0000 },

-  { 0x8700, 0xa23d, 0x5000 },

-  { 0x8700, 0xa235, 0x4000 },

-  { 0x8700, 0xa231, 0x3000 },

-  { 0x8700, 0xa22f, 0x2000 },

-  { 0x0700, 0xa22e, 0x0000 },

-  { 0x0700, 0xa230, 0x0000 },

-  { 0x8700, 0xa233, 0x2000 },

-  { 0x0700, 0xa232, 0x0000 },

-  { 0x0700, 0xa234, 0x0000 },

-  { 0x8700, 0xa239, 0x3000 },

-  { 0x8700, 0xa237, 0x2000 },

-  { 0x0700, 0xa236, 0x0000 },

-  { 0x0700, 0xa238, 0x0000 },

-  { 0x8700, 0xa23b, 0x2000 },

-  { 0x0700, 0xa23a, 0x0000 },

-  { 0x0700, 0xa23c, 0x0000 },

-  { 0x8700, 0xa245, 0x4000 },

-  { 0x8700, 0xa241, 0x3000 },

-  { 0x8700, 0xa23f, 0x2000 },

-  { 0x0700, 0xa23e, 0x0000 },

-  { 0x0700, 0xa240, 0x0000 },

-  { 0x8700, 0xa243, 0x2000 },

-  { 0x0700, 0xa242, 0x0000 },

-  { 0x0700, 0xa244, 0x0000 },

-  { 0x8700, 0xa249, 0x3000 },

-  { 0x8700, 0xa247, 0x2000 },

-  { 0x0700, 0xa246, 0x0000 },

-  { 0x0700, 0xa248, 0x0000 },

-  { 0x8700, 0xa24b, 0x2000 },

-  { 0x0700, 0xa24a, 0x0000 },

-  { 0x0700, 0xa24c, 0x0000 },

-  { 0x8700, 0xa2cd, 0x8000 },

-  { 0x8700, 0xa28d, 0x7000 },

-  { 0x8700, 0xa26d, 0x6000 },

-  { 0x8700, 0xa25d, 0x5000 },

-  { 0x8700, 0xa255, 0x4000 },

-  { 0x8700, 0xa251, 0x3000 },

-  { 0x8700, 0xa24f, 0x2000 },

-  { 0x0700, 0xa24e, 0x0000 },

-  { 0x0700, 0xa250, 0x0000 },

-  { 0x8700, 0xa253, 0x2000 },

-  { 0x0700, 0xa252, 0x0000 },

-  { 0x0700, 0xa254, 0x0000 },

-  { 0x8700, 0xa259, 0x3000 },

-  { 0x8700, 0xa257, 0x2000 },

-  { 0x0700, 0xa256, 0x0000 },

-  { 0x0700, 0xa258, 0x0000 },

-  { 0x8700, 0xa25b, 0x2000 },

-  { 0x0700, 0xa25a, 0x0000 },

-  { 0x0700, 0xa25c, 0x0000 },

-  { 0x8700, 0xa265, 0x4000 },

-  { 0x8700, 0xa261, 0x3000 },

-  { 0x8700, 0xa25f, 0x2000 },

-  { 0x0700, 0xa25e, 0x0000 },

-  { 0x0700, 0xa260, 0x0000 },

-  { 0x8700, 0xa263, 0x2000 },

-  { 0x0700, 0xa262, 0x0000 },

-  { 0x0700, 0xa264, 0x0000 },

-  { 0x8700, 0xa269, 0x3000 },

-  { 0x8700, 0xa267, 0x2000 },

-  { 0x0700, 0xa266, 0x0000 },

-  { 0x0700, 0xa268, 0x0000 },

-  { 0x8700, 0xa26b, 0x2000 },

-  { 0x0700, 0xa26a, 0x0000 },

-  { 0x0700, 0xa26c, 0x0000 },

-  { 0x8700, 0xa27d, 0x5000 },

-  { 0x8700, 0xa275, 0x4000 },

-  { 0x8700, 0xa271, 0x3000 },

-  { 0x8700, 0xa26f, 0x2000 },

-  { 0x0700, 0xa26e, 0x0000 },

-  { 0x0700, 0xa270, 0x0000 },

-  { 0x8700, 0xa273, 0x2000 },

-  { 0x0700, 0xa272, 0x0000 },

-  { 0x0700, 0xa274, 0x0000 },

-  { 0x8700, 0xa279, 0x3000 },

-  { 0x8700, 0xa277, 0x2000 },

-  { 0x0700, 0xa276, 0x0000 },

-  { 0x0700, 0xa278, 0x0000 },

-  { 0x8700, 0xa27b, 0x2000 },

-  { 0x0700, 0xa27a, 0x0000 },

-  { 0x0700, 0xa27c, 0x0000 },

-  { 0x8700, 0xa285, 0x4000 },

-  { 0x8700, 0xa281, 0x3000 },

-  { 0x8700, 0xa27f, 0x2000 },

-  { 0x0700, 0xa27e, 0x0000 },

-  { 0x0700, 0xa280, 0x0000 },

-  { 0x8700, 0xa283, 0x2000 },

-  { 0x0700, 0xa282, 0x0000 },

-  { 0x0700, 0xa284, 0x0000 },

-  { 0x8700, 0xa289, 0x3000 },

-  { 0x8700, 0xa287, 0x2000 },

-  { 0x0700, 0xa286, 0x0000 },

-  { 0x0700, 0xa288, 0x0000 },

-  { 0x8700, 0xa28b, 0x2000 },

-  { 0x0700, 0xa28a, 0x0000 },

-  { 0x0700, 0xa28c, 0x0000 },

-  { 0x8700, 0xa2ad, 0x6000 },

-  { 0x8700, 0xa29d, 0x5000 },

-  { 0x8700, 0xa295, 0x4000 },

-  { 0x8700, 0xa291, 0x3000 },

-  { 0x8700, 0xa28f, 0x2000 },

-  { 0x0700, 0xa28e, 0x0000 },

-  { 0x0700, 0xa290, 0x0000 },

-  { 0x8700, 0xa293, 0x2000 },

-  { 0x0700, 0xa292, 0x0000 },

-  { 0x0700, 0xa294, 0x0000 },

-  { 0x8700, 0xa299, 0x3000 },

-  { 0x8700, 0xa297, 0x2000 },

-  { 0x0700, 0xa296, 0x0000 },

-  { 0x0700, 0xa298, 0x0000 },

-  { 0x8700, 0xa29b, 0x2000 },

-  { 0x0700, 0xa29a, 0x0000 },

-  { 0x0700, 0xa29c, 0x0000 },

-  { 0x8700, 0xa2a5, 0x4000 },

-  { 0x8700, 0xa2a1, 0x3000 },

-  { 0x8700, 0xa29f, 0x2000 },

-  { 0x0700, 0xa29e, 0x0000 },

-  { 0x0700, 0xa2a0, 0x0000 },

-  { 0x8700, 0xa2a3, 0x2000 },

-  { 0x0700, 0xa2a2, 0x0000 },

-  { 0x0700, 0xa2a4, 0x0000 },

-  { 0x8700, 0xa2a9, 0x3000 },

-  { 0x8700, 0xa2a7, 0x2000 },

-  { 0x0700, 0xa2a6, 0x0000 },

-  { 0x0700, 0xa2a8, 0x0000 },

-  { 0x8700, 0xa2ab, 0x2000 },

-  { 0x0700, 0xa2aa, 0x0000 },

-  { 0x0700, 0xa2ac, 0x0000 },

-  { 0x8700, 0xa2bd, 0x5000 },

-  { 0x8700, 0xa2b5, 0x4000 },

-  { 0x8700, 0xa2b1, 0x3000 },

-  { 0x8700, 0xa2af, 0x2000 },

-  { 0x0700, 0xa2ae, 0x0000 },

-  { 0x0700, 0xa2b0, 0x0000 },

-  { 0x8700, 0xa2b3, 0x2000 },

-  { 0x0700, 0xa2b2, 0x0000 },

-  { 0x0700, 0xa2b4, 0x0000 },

-  { 0x8700, 0xa2b9, 0x3000 },

-  { 0x8700, 0xa2b7, 0x2000 },

-  { 0x0700, 0xa2b6, 0x0000 },

-  { 0x0700, 0xa2b8, 0x0000 },

-  { 0x8700, 0xa2bb, 0x2000 },

-  { 0x0700, 0xa2ba, 0x0000 },

-  { 0x0700, 0xa2bc, 0x0000 },

-  { 0x8700, 0xa2c5, 0x4000 },

-  { 0x8700, 0xa2c1, 0x3000 },

-  { 0x8700, 0xa2bf, 0x2000 },

-  { 0x0700, 0xa2be, 0x0000 },

-  { 0x0700, 0xa2c0, 0x0000 },

-  { 0x8700, 0xa2c3, 0x2000 },

-  { 0x0700, 0xa2c2, 0x0000 },

-  { 0x0700, 0xa2c4, 0x0000 },

-  { 0x8700, 0xa2c9, 0x3000 },

-  { 0x8700, 0xa2c7, 0x2000 },

-  { 0x0700, 0xa2c6, 0x0000 },

-  { 0x0700, 0xa2c8, 0x0000 },

-  { 0x8700, 0xa2cb, 0x2000 },

-  { 0x0700, 0xa2ca, 0x0000 },

-  { 0x0700, 0xa2cc, 0x0000 },

-  { 0x8700, 0xa30d, 0x7000 },

-  { 0x8700, 0xa2ed, 0x6000 },

-  { 0x8700, 0xa2dd, 0x5000 },

-  { 0x8700, 0xa2d5, 0x4000 },

-  { 0x8700, 0xa2d1, 0x3000 },

-  { 0x8700, 0xa2cf, 0x2000 },

-  { 0x0700, 0xa2ce, 0x0000 },

-  { 0x0700, 0xa2d0, 0x0000 },

-  { 0x8700, 0xa2d3, 0x2000 },

-  { 0x0700, 0xa2d2, 0x0000 },

-  { 0x0700, 0xa2d4, 0x0000 },

-  { 0x8700, 0xa2d9, 0x3000 },

-  { 0x8700, 0xa2d7, 0x2000 },

-  { 0x0700, 0xa2d6, 0x0000 },

-  { 0x0700, 0xa2d8, 0x0000 },

-  { 0x8700, 0xa2db, 0x2000 },

-  { 0x0700, 0xa2da, 0x0000 },

-  { 0x0700, 0xa2dc, 0x0000 },

-  { 0x8700, 0xa2e5, 0x4000 },

-  { 0x8700, 0xa2e1, 0x3000 },

-  { 0x8700, 0xa2df, 0x2000 },

-  { 0x0700, 0xa2de, 0x0000 },

-  { 0x0700, 0xa2e0, 0x0000 },

-  { 0x8700, 0xa2e3, 0x2000 },

-  { 0x0700, 0xa2e2, 0x0000 },

-  { 0x0700, 0xa2e4, 0x0000 },

-  { 0x8700, 0xa2e9, 0x3000 },

-  { 0x8700, 0xa2e7, 0x2000 },

-  { 0x0700, 0xa2e6, 0x0000 },

-  { 0x0700, 0xa2e8, 0x0000 },

-  { 0x8700, 0xa2eb, 0x2000 },

-  { 0x0700, 0xa2ea, 0x0000 },

-  { 0x0700, 0xa2ec, 0x0000 },

-  { 0x8700, 0xa2fd, 0x5000 },

-  { 0x8700, 0xa2f5, 0x4000 },

-  { 0x8700, 0xa2f1, 0x3000 },

-  { 0x8700, 0xa2ef, 0x2000 },

-  { 0x0700, 0xa2ee, 0x0000 },

-  { 0x0700, 0xa2f0, 0x0000 },

-  { 0x8700, 0xa2f3, 0x2000 },

-  { 0x0700, 0xa2f2, 0x0000 },

-  { 0x0700, 0xa2f4, 0x0000 },

-  { 0x8700, 0xa2f9, 0x3000 },

-  { 0x8700, 0xa2f7, 0x2000 },

-  { 0x0700, 0xa2f6, 0x0000 },

-  { 0x0700, 0xa2f8, 0x0000 },

-  { 0x8700, 0xa2fb, 0x2000 },

-  { 0x0700, 0xa2fa, 0x0000 },

-  { 0x0700, 0xa2fc, 0x0000 },

-  { 0x8700, 0xa305, 0x4000 },

-  { 0x8700, 0xa301, 0x3000 },

-  { 0x8700, 0xa2ff, 0x2000 },

-  { 0x0700, 0xa2fe, 0x0000 },

-  { 0x0700, 0xa300, 0x0000 },

-  { 0x8700, 0xa303, 0x2000 },

-  { 0x0700, 0xa302, 0x0000 },

-  { 0x0700, 0xa304, 0x0000 },

-  { 0x8700, 0xa309, 0x3000 },

-  { 0x8700, 0xa307, 0x2000 },

-  { 0x0700, 0xa306, 0x0000 },

-  { 0x0700, 0xa308, 0x0000 },

-  { 0x8700, 0xa30b, 0x2000 },

-  { 0x0700, 0xa30a, 0x0000 },

-  { 0x0700, 0xa30c, 0x0000 },

-  { 0x8700, 0xa32d, 0x6000 },

-  { 0x8700, 0xa31d, 0x5000 },

-  { 0x8700, 0xa315, 0x4000 },

-  { 0x8700, 0xa311, 0x3000 },

-  { 0x8700, 0xa30f, 0x2000 },

-  { 0x0700, 0xa30e, 0x0000 },

-  { 0x0700, 0xa310, 0x0000 },

-  { 0x8700, 0xa313, 0x2000 },

-  { 0x0700, 0xa312, 0x0000 },

-  { 0x0700, 0xa314, 0x0000 },

-  { 0x8700, 0xa319, 0x3000 },

-  { 0x8700, 0xa317, 0x2000 },

-  { 0x0700, 0xa316, 0x0000 },

-  { 0x0700, 0xa318, 0x0000 },

-  { 0x8700, 0xa31b, 0x2000 },

-  { 0x0700, 0xa31a, 0x0000 },

-  { 0x0700, 0xa31c, 0x0000 },

-  { 0x8700, 0xa325, 0x4000 },

-  { 0x8700, 0xa321, 0x3000 },

-  { 0x8700, 0xa31f, 0x2000 },

-  { 0x0700, 0xa31e, 0x0000 },

-  { 0x0700, 0xa320, 0x0000 },

-  { 0x8700, 0xa323, 0x2000 },

-  { 0x0700, 0xa322, 0x0000 },

-  { 0x0700, 0xa324, 0x0000 },

-  { 0x8700, 0xa329, 0x3000 },

-  { 0x8700, 0xa327, 0x2000 },

-  { 0x0700, 0xa326, 0x0000 },

-  { 0x0700, 0xa328, 0x0000 },

-  { 0x8700, 0xa32b, 0x2000 },

-  { 0x0700, 0xa32a, 0x0000 },

-  { 0x0700, 0xa32c, 0x0000 },

-  { 0x8700, 0xa33d, 0x5000 },

-  { 0x8700, 0xa335, 0x4000 },

-  { 0x8700, 0xa331, 0x3000 },

-  { 0x8700, 0xa32f, 0x2000 },

-  { 0x0700, 0xa32e, 0x0000 },

-  { 0x0700, 0xa330, 0x0000 },

-  { 0x8700, 0xa333, 0x2000 },

-  { 0x0700, 0xa332, 0x0000 },

-  { 0x0700, 0xa334, 0x0000 },

-  { 0x8700, 0xa339, 0x3000 },

-  { 0x8700, 0xa337, 0x2000 },

-  { 0x0700, 0xa336, 0x0000 },

-  { 0x0700, 0xa338, 0x0000 },

-  { 0x8700, 0xa33b, 0x2000 },

-  { 0x0700, 0xa33a, 0x0000 },

-  { 0x0700, 0xa33c, 0x0000 },

-  { 0x8700, 0xa345, 0x4000 },

-  { 0x8700, 0xa341, 0x3000 },

-  { 0x8700, 0xa33f, 0x2000 },

-  { 0x0700, 0xa33e, 0x0000 },

-  { 0x0700, 0xa340, 0x0000 },

-  { 0x8700, 0xa343, 0x2000 },

-  { 0x0700, 0xa342, 0x0000 },

-  { 0x0700, 0xa344, 0x0000 },

-  { 0x8700, 0xa349, 0x3000 },

-  { 0x8700, 0xa347, 0x2000 },

-  { 0x0700, 0xa346, 0x0000 },

-  { 0x0700, 0xa348, 0x0000 },

-  { 0x8700, 0xa34b, 0x2000 },

-  { 0x0700, 0xa34a, 0x0000 },

-  { 0x0700, 0xa34c, 0x0000 },

-  { 0x8700, 0xfc4d, 0xb000 },

-  { 0x8700, 0xf97f, 0xa000 },

-  { 0x8700, 0xa44d, 0x9000 },

-  { 0x8700, 0xa3cd, 0x8000 },

-  { 0x8700, 0xa38d, 0x7000 },

-  { 0x8700, 0xa36d, 0x6000 },

-  { 0x8700, 0xa35d, 0x5000 },

-  { 0x8700, 0xa355, 0x4000 },

-  { 0x8700, 0xa351, 0x3000 },

-  { 0x8700, 0xa34f, 0x2000 },

-  { 0x0700, 0xa34e, 0x0000 },

-  { 0x0700, 0xa350, 0x0000 },

-  { 0x8700, 0xa353, 0x2000 },

-  { 0x0700, 0xa352, 0x0000 },

-  { 0x0700, 0xa354, 0x0000 },

-  { 0x8700, 0xa359, 0x3000 },

-  { 0x8700, 0xa357, 0x2000 },

-  { 0x0700, 0xa356, 0x0000 },

-  { 0x0700, 0xa358, 0x0000 },

-  { 0x8700, 0xa35b, 0x2000 },

-  { 0x0700, 0xa35a, 0x0000 },

-  { 0x0700, 0xa35c, 0x0000 },

-  { 0x8700, 0xa365, 0x4000 },

-  { 0x8700, 0xa361, 0x3000 },

-  { 0x8700, 0xa35f, 0x2000 },

-  { 0x0700, 0xa35e, 0x0000 },

-  { 0x0700, 0xa360, 0x0000 },

-  { 0x8700, 0xa363, 0x2000 },

-  { 0x0700, 0xa362, 0x0000 },

-  { 0x0700, 0xa364, 0x0000 },

-  { 0x8700, 0xa369, 0x3000 },

-  { 0x8700, 0xa367, 0x2000 },

-  { 0x0700, 0xa366, 0x0000 },

-  { 0x0700, 0xa368, 0x0000 },

-  { 0x8700, 0xa36b, 0x2000 },

-  { 0x0700, 0xa36a, 0x0000 },

-  { 0x0700, 0xa36c, 0x0000 },

-  { 0x8700, 0xa37d, 0x5000 },

-  { 0x8700, 0xa375, 0x4000 },

-  { 0x8700, 0xa371, 0x3000 },

-  { 0x8700, 0xa36f, 0x2000 },

-  { 0x0700, 0xa36e, 0x0000 },

-  { 0x0700, 0xa370, 0x0000 },

-  { 0x8700, 0xa373, 0x2000 },

-  { 0x0700, 0xa372, 0x0000 },

-  { 0x0700, 0xa374, 0x0000 },

-  { 0x8700, 0xa379, 0x3000 },

-  { 0x8700, 0xa377, 0x2000 },

-  { 0x0700, 0xa376, 0x0000 },

-  { 0x0700, 0xa378, 0x0000 },

-  { 0x8700, 0xa37b, 0x2000 },

-  { 0x0700, 0xa37a, 0x0000 },

-  { 0x0700, 0xa37c, 0x0000 },

-  { 0x8700, 0xa385, 0x4000 },

-  { 0x8700, 0xa381, 0x3000 },

-  { 0x8700, 0xa37f, 0x2000 },

-  { 0x0700, 0xa37e, 0x0000 },

-  { 0x0700, 0xa380, 0x0000 },

-  { 0x8700, 0xa383, 0x2000 },

-  { 0x0700, 0xa382, 0x0000 },

-  { 0x0700, 0xa384, 0x0000 },

-  { 0x8700, 0xa389, 0x3000 },

-  { 0x8700, 0xa387, 0x2000 },

-  { 0x0700, 0xa386, 0x0000 },

-  { 0x0700, 0xa388, 0x0000 },

-  { 0x8700, 0xa38b, 0x2000 },

-  { 0x0700, 0xa38a, 0x0000 },

-  { 0x0700, 0xa38c, 0x0000 },

-  { 0x8700, 0xa3ad, 0x6000 },

-  { 0x8700, 0xa39d, 0x5000 },

-  { 0x8700, 0xa395, 0x4000 },

-  { 0x8700, 0xa391, 0x3000 },

-  { 0x8700, 0xa38f, 0x2000 },

-  { 0x0700, 0xa38e, 0x0000 },

-  { 0x0700, 0xa390, 0x0000 },

-  { 0x8700, 0xa393, 0x2000 },

-  { 0x0700, 0xa392, 0x0000 },

-  { 0x0700, 0xa394, 0x0000 },

-  { 0x8700, 0xa399, 0x3000 },

-  { 0x8700, 0xa397, 0x2000 },

-  { 0x0700, 0xa396, 0x0000 },

-  { 0x0700, 0xa398, 0x0000 },

-  { 0x8700, 0xa39b, 0x2000 },

-  { 0x0700, 0xa39a, 0x0000 },

-  { 0x0700, 0xa39c, 0x0000 },

-  { 0x8700, 0xa3a5, 0x4000 },

-  { 0x8700, 0xa3a1, 0x3000 },

-  { 0x8700, 0xa39f, 0x2000 },

-  { 0x0700, 0xa39e, 0x0000 },

-  { 0x0700, 0xa3a0, 0x0000 },

-  { 0x8700, 0xa3a3, 0x2000 },

-  { 0x0700, 0xa3a2, 0x0000 },

-  { 0x0700, 0xa3a4, 0x0000 },

-  { 0x8700, 0xa3a9, 0x3000 },

-  { 0x8700, 0xa3a7, 0x2000 },

-  { 0x0700, 0xa3a6, 0x0000 },

-  { 0x0700, 0xa3a8, 0x0000 },

-  { 0x8700, 0xa3ab, 0x2000 },

-  { 0x0700, 0xa3aa, 0x0000 },

-  { 0x0700, 0xa3ac, 0x0000 },

-  { 0x8700, 0xa3bd, 0x5000 },

-  { 0x8700, 0xa3b5, 0x4000 },

-  { 0x8700, 0xa3b1, 0x3000 },

-  { 0x8700, 0xa3af, 0x2000 },

-  { 0x0700, 0xa3ae, 0x0000 },

-  { 0x0700, 0xa3b0, 0x0000 },

-  { 0x8700, 0xa3b3, 0x2000 },

-  { 0x0700, 0xa3b2, 0x0000 },

-  { 0x0700, 0xa3b4, 0x0000 },

-  { 0x8700, 0xa3b9, 0x3000 },

-  { 0x8700, 0xa3b7, 0x2000 },

-  { 0x0700, 0xa3b6, 0x0000 },

-  { 0x0700, 0xa3b8, 0x0000 },

-  { 0x8700, 0xa3bb, 0x2000 },

-  { 0x0700, 0xa3ba, 0x0000 },

-  { 0x0700, 0xa3bc, 0x0000 },

-  { 0x8700, 0xa3c5, 0x4000 },

-  { 0x8700, 0xa3c1, 0x3000 },

-  { 0x8700, 0xa3bf, 0x2000 },

-  { 0x0700, 0xa3be, 0x0000 },

-  { 0x0700, 0xa3c0, 0x0000 },

-  { 0x8700, 0xa3c3, 0x2000 },

-  { 0x0700, 0xa3c2, 0x0000 },

-  { 0x0700, 0xa3c4, 0x0000 },

-  { 0x8700, 0xa3c9, 0x3000 },

-  { 0x8700, 0xa3c7, 0x2000 },

-  { 0x0700, 0xa3c6, 0x0000 },

-  { 0x0700, 0xa3c8, 0x0000 },

-  { 0x8700, 0xa3cb, 0x2000 },

-  { 0x0700, 0xa3ca, 0x0000 },

-  { 0x0700, 0xa3cc, 0x0000 },

-  { 0x8700, 0xa40d, 0x7000 },

-  { 0x8700, 0xa3ed, 0x6000 },

-  { 0x8700, 0xa3dd, 0x5000 },

-  { 0x8700, 0xa3d5, 0x4000 },

-  { 0x8700, 0xa3d1, 0x3000 },

-  { 0x8700, 0xa3cf, 0x2000 },

-  { 0x0700, 0xa3ce, 0x0000 },

-  { 0x0700, 0xa3d0, 0x0000 },

-  { 0x8700, 0xa3d3, 0x2000 },

-  { 0x0700, 0xa3d2, 0x0000 },

-  { 0x0700, 0xa3d4, 0x0000 },

-  { 0x8700, 0xa3d9, 0x3000 },

-  { 0x8700, 0xa3d7, 0x2000 },

-  { 0x0700, 0xa3d6, 0x0000 },

-  { 0x0700, 0xa3d8, 0x0000 },

-  { 0x8700, 0xa3db, 0x2000 },

-  { 0x0700, 0xa3da, 0x0000 },

-  { 0x0700, 0xa3dc, 0x0000 },

-  { 0x8700, 0xa3e5, 0x4000 },

-  { 0x8700, 0xa3e1, 0x3000 },

-  { 0x8700, 0xa3df, 0x2000 },

-  { 0x0700, 0xa3de, 0x0000 },

-  { 0x0700, 0xa3e0, 0x0000 },

-  { 0x8700, 0xa3e3, 0x2000 },

-  { 0x0700, 0xa3e2, 0x0000 },

-  { 0x0700, 0xa3e4, 0x0000 },

-  { 0x8700, 0xa3e9, 0x3000 },

-  { 0x8700, 0xa3e7, 0x2000 },

-  { 0x0700, 0xa3e6, 0x0000 },

-  { 0x0700, 0xa3e8, 0x0000 },

-  { 0x8700, 0xa3eb, 0x2000 },

-  { 0x0700, 0xa3ea, 0x0000 },

-  { 0x0700, 0xa3ec, 0x0000 },

-  { 0x8700, 0xa3fd, 0x5000 },

-  { 0x8700, 0xa3f5, 0x4000 },

-  { 0x8700, 0xa3f1, 0x3000 },

-  { 0x8700, 0xa3ef, 0x2000 },

-  { 0x0700, 0xa3ee, 0x0000 },

-  { 0x0700, 0xa3f0, 0x0000 },

-  { 0x8700, 0xa3f3, 0x2000 },

-  { 0x0700, 0xa3f2, 0x0000 },

-  { 0x0700, 0xa3f4, 0x0000 },

-  { 0x8700, 0xa3f9, 0x3000 },

-  { 0x8700, 0xa3f7, 0x2000 },

-  { 0x0700, 0xa3f6, 0x0000 },

-  { 0x0700, 0xa3f8, 0x0000 },

-  { 0x8700, 0xa3fb, 0x2000 },

-  { 0x0700, 0xa3fa, 0x0000 },

-  { 0x0700, 0xa3fc, 0x0000 },

-  { 0x8700, 0xa405, 0x4000 },

-  { 0x8700, 0xa401, 0x3000 },

-  { 0x8700, 0xa3ff, 0x2000 },

-  { 0x0700, 0xa3fe, 0x0000 },

-  { 0x0700, 0xa400, 0x0000 },

-  { 0x8700, 0xa403, 0x2000 },

-  { 0x0700, 0xa402, 0x0000 },

-  { 0x0700, 0xa404, 0x0000 },

-  { 0x8700, 0xa409, 0x3000 },

-  { 0x8700, 0xa407, 0x2000 },

-  { 0x0700, 0xa406, 0x0000 },

-  { 0x0700, 0xa408, 0x0000 },

-  { 0x8700, 0xa40b, 0x2000 },

-  { 0x0700, 0xa40a, 0x0000 },

-  { 0x0700, 0xa40c, 0x0000 },

-  { 0x8700, 0xa42d, 0x6000 },

-  { 0x8700, 0xa41d, 0x5000 },

-  { 0x8700, 0xa415, 0x4000 },

-  { 0x8700, 0xa411, 0x3000 },

-  { 0x8700, 0xa40f, 0x2000 },

-  { 0x0700, 0xa40e, 0x0000 },

-  { 0x0700, 0xa410, 0x0000 },

-  { 0x8700, 0xa413, 0x2000 },

-  { 0x0700, 0xa412, 0x0000 },

-  { 0x0700, 0xa414, 0x0000 },

-  { 0x8700, 0xa419, 0x3000 },

-  { 0x8700, 0xa417, 0x2000 },

-  { 0x0700, 0xa416, 0x0000 },

-  { 0x0700, 0xa418, 0x0000 },

-  { 0x8700, 0xa41b, 0x2000 },

-  { 0x0700, 0xa41a, 0x0000 },

-  { 0x0700, 0xa41c, 0x0000 },

-  { 0x8700, 0xa425, 0x4000 },

-  { 0x8700, 0xa421, 0x3000 },

-  { 0x8700, 0xa41f, 0x2000 },

-  { 0x0700, 0xa41e, 0x0000 },

-  { 0x0700, 0xa420, 0x0000 },

-  { 0x8700, 0xa423, 0x2000 },

-  { 0x0700, 0xa422, 0x0000 },

-  { 0x0700, 0xa424, 0x0000 },

-  { 0x8700, 0xa429, 0x3000 },

-  { 0x8700, 0xa427, 0x2000 },

-  { 0x0700, 0xa426, 0x0000 },

-  { 0x0700, 0xa428, 0x0000 },

-  { 0x8700, 0xa42b, 0x2000 },

-  { 0x0700, 0xa42a, 0x0000 },

-  { 0x0700, 0xa42c, 0x0000 },

-  { 0x8700, 0xa43d, 0x5000 },

-  { 0x8700, 0xa435, 0x4000 },

-  { 0x8700, 0xa431, 0x3000 },

-  { 0x8700, 0xa42f, 0x2000 },

-  { 0x0700, 0xa42e, 0x0000 },

-  { 0x0700, 0xa430, 0x0000 },

-  { 0x8700, 0xa433, 0x2000 },

-  { 0x0700, 0xa432, 0x0000 },

-  { 0x0700, 0xa434, 0x0000 },

-  { 0x8700, 0xa439, 0x3000 },

-  { 0x8700, 0xa437, 0x2000 },

-  { 0x0700, 0xa436, 0x0000 },

-  { 0x0700, 0xa438, 0x0000 },

-  { 0x8700, 0xa43b, 0x2000 },

-  { 0x0700, 0xa43a, 0x0000 },

-  { 0x0700, 0xa43c, 0x0000 },

-  { 0x8700, 0xa445, 0x4000 },

-  { 0x8700, 0xa441, 0x3000 },

-  { 0x8700, 0xa43f, 0x2000 },

-  { 0x0700, 0xa43e, 0x0000 },

-  { 0x0700, 0xa440, 0x0000 },

-  { 0x8700, 0xa443, 0x2000 },

-  { 0x0700, 0xa442, 0x0000 },

-  { 0x0700, 0xa444, 0x0000 },

-  { 0x8700, 0xa449, 0x3000 },

-  { 0x8700, 0xa447, 0x2000 },

-  { 0x0700, 0xa446, 0x0000 },

-  { 0x0700, 0xa448, 0x0000 },

-  { 0x8700, 0xa44b, 0x2000 },

-  { 0x0700, 0xa44a, 0x0000 },

-  { 0x0700, 0xa44c, 0x0000 },

-  { 0x8300, 0xf8ff, 0x8000 },

-  { 0x9a00, 0xa490, 0x7000 },

-  { 0x8700, 0xa46d, 0x6000 },

-  { 0x8700, 0xa45d, 0x5000 },

-  { 0x8700, 0xa455, 0x4000 },

-  { 0x8700, 0xa451, 0x3000 },

-  { 0x8700, 0xa44f, 0x2000 },

-  { 0x0700, 0xa44e, 0x0000 },

-  { 0x0700, 0xa450, 0x0000 },

-  { 0x8700, 0xa453, 0x2000 },

-  { 0x0700, 0xa452, 0x0000 },

-  { 0x0700, 0xa454, 0x0000 },

-  { 0x8700, 0xa459, 0x3000 },

-  { 0x8700, 0xa457, 0x2000 },

-  { 0x0700, 0xa456, 0x0000 },

-  { 0x0700, 0xa458, 0x0000 },

-  { 0x8700, 0xa45b, 0x2000 },

-  { 0x0700, 0xa45a, 0x0000 },

-  { 0x0700, 0xa45c, 0x0000 },

-  { 0x8700, 0xa465, 0x4000 },

-  { 0x8700, 0xa461, 0x3000 },

-  { 0x8700, 0xa45f, 0x2000 },

-  { 0x0700, 0xa45e, 0x0000 },

-  { 0x0700, 0xa460, 0x0000 },

-  { 0x8700, 0xa463, 0x2000 },

-  { 0x0700, 0xa462, 0x0000 },

-  { 0x0700, 0xa464, 0x0000 },

-  { 0x8700, 0xa469, 0x3000 },

-  { 0x8700, 0xa467, 0x2000 },

-  { 0x0700, 0xa466, 0x0000 },

-  { 0x0700, 0xa468, 0x0000 },

-  { 0x8700, 0xa46b, 0x2000 },

-  { 0x0700, 0xa46a, 0x0000 },

-  { 0x0700, 0xa46c, 0x0000 },

-  { 0x8700, 0xa47d, 0x5000 },

-  { 0x8700, 0xa475, 0x4000 },

-  { 0x8700, 0xa471, 0x3000 },

-  { 0x8700, 0xa46f, 0x2000 },

-  { 0x0700, 0xa46e, 0x0000 },

-  { 0x0700, 0xa470, 0x0000 },

-  { 0x8700, 0xa473, 0x2000 },

-  { 0x0700, 0xa472, 0x0000 },

-  { 0x0700, 0xa474, 0x0000 },

-  { 0x8700, 0xa479, 0x3000 },

-  { 0x8700, 0xa477, 0x2000 },

-  { 0x0700, 0xa476, 0x0000 },

-  { 0x0700, 0xa478, 0x0000 },

-  { 0x8700, 0xa47b, 0x2000 },

-  { 0x0700, 0xa47a, 0x0000 },

-  { 0x0700, 0xa47c, 0x0000 },

-  { 0x8700, 0xa485, 0x4000 },

-  { 0x8700, 0xa481, 0x3000 },

-  { 0x8700, 0xa47f, 0x2000 },

-  { 0x0700, 0xa47e, 0x0000 },

-  { 0x0700, 0xa480, 0x0000 },

-  { 0x8700, 0xa483, 0x2000 },

-  { 0x0700, 0xa482, 0x0000 },

-  { 0x0700, 0xa484, 0x0000 },

-  { 0x8700, 0xa489, 0x3000 },

-  { 0x8700, 0xa487, 0x2000 },

-  { 0x0700, 0xa486, 0x0000 },

-  { 0x0700, 0xa488, 0x0000 },

-  { 0x8700, 0xa48b, 0x2000 },

-  { 0x0700, 0xa48a, 0x0000 },

-  { 0x0700, 0xa48c, 0x0000 },

-  { 0x9a00, 0xa4b0, 0x6000 },

-  { 0x9a00, 0xa4a0, 0x5000 },

-  { 0x9a00, 0xa498, 0x4000 },

-  { 0x9a00, 0xa494, 0x3000 },

-  { 0x9a00, 0xa492, 0x2000 },

-  { 0x1a00, 0xa491, 0x0000 },

-  { 0x1a00, 0xa493, 0x0000 },

-  { 0x9a00, 0xa496, 0x2000 },

-  { 0x1a00, 0xa495, 0x0000 },

-  { 0x1a00, 0xa497, 0x0000 },

-  { 0x9a00, 0xa49c, 0x3000 },

-  { 0x9a00, 0xa49a, 0x2000 },

-  { 0x1a00, 0xa499, 0x0000 },

-  { 0x1a00, 0xa49b, 0x0000 },

-  { 0x9a00, 0xa49e, 0x2000 },

-  { 0x1a00, 0xa49d, 0x0000 },

-  { 0x1a00, 0xa49f, 0x0000 },

-  { 0x9a00, 0xa4a8, 0x4000 },

-  { 0x9a00, 0xa4a4, 0x3000 },

-  { 0x9a00, 0xa4a2, 0x2000 },

-  { 0x1a00, 0xa4a1, 0x0000 },

-  { 0x1a00, 0xa4a3, 0x0000 },

-  { 0x9a00, 0xa4a6, 0x2000 },

-  { 0x1a00, 0xa4a5, 0x0000 },

-  { 0x1a00, 0xa4a7, 0x0000 },

-  { 0x9a00, 0xa4ac, 0x3000 },

-  { 0x9a00, 0xa4aa, 0x2000 },

-  { 0x1a00, 0xa4a9, 0x0000 },

-  { 0x1a00, 0xa4ab, 0x0000 },

-  { 0x9a00, 0xa4ae, 0x2000 },

-  { 0x1a00, 0xa4ad, 0x0000 },

-  { 0x1a00, 0xa4af, 0x0000 },

-  { 0x9a00, 0xa4c0, 0x5000 },

-  { 0x9a00, 0xa4b8, 0x4000 },

-  { 0x9a00, 0xa4b4, 0x3000 },

-  { 0x9a00, 0xa4b2, 0x2000 },

-  { 0x1a00, 0xa4b1, 0x0000 },

-  { 0x1a00, 0xa4b3, 0x0000 },

-  { 0x9a00, 0xa4b6, 0x2000 },

-  { 0x1a00, 0xa4b5, 0x0000 },

-  { 0x1a00, 0xa4b7, 0x0000 },

-  { 0x9a00, 0xa4bc, 0x3000 },

-  { 0x9a00, 0xa4ba, 0x2000 },

-  { 0x1a00, 0xa4b9, 0x0000 },

-  { 0x1a00, 0xa4bb, 0x0000 },

-  { 0x9a00, 0xa4be, 0x2000 },

-  { 0x1a00, 0xa4bd, 0x0000 },

-  { 0x1a00, 0xa4bf, 0x0000 },

-  { 0x8700, 0xd7a3, 0x4000 },

-  { 0x9a00, 0xa4c4, 0x3000 },

-  { 0x9a00, 0xa4c2, 0x2000 },

-  { 0x1a00, 0xa4c1, 0x0000 },

-  { 0x1a00, 0xa4c3, 0x0000 },

-  { 0x9a00, 0xa4c6, 0x2000 },

-  { 0x1a00, 0xa4c5, 0x0000 },

-  { 0x0700, 0xac00, 0x0000 },

-  { 0x8400, 0xdbff, 0x3000 },

-  { 0x8400, 0xdb7f, 0x2000 },

-  { 0x0400, 0xd800, 0x0000 },

-  { 0x0400, 0xdb80, 0x0000 },

-  { 0x8400, 0xdfff, 0x2000 },

-  { 0x0400, 0xdc00, 0x0000 },

-  { 0x0300, 0xe000, 0x0000 },

-  { 0x8700, 0xf93f, 0x7000 },

-  { 0x8700, 0xf91f, 0x6000 },

-  { 0x8700, 0xf90f, 0x5000 },

-  { 0x8700, 0xf907, 0x4000 },

-  { 0x8700, 0xf903, 0x3000 },

-  { 0x8700, 0xf901, 0x2000 },

-  { 0x0700, 0xf900, 0x0000 },

-  { 0x0700, 0xf902, 0x0000 },

-  { 0x8700, 0xf905, 0x2000 },

-  { 0x0700, 0xf904, 0x0000 },

-  { 0x0700, 0xf906, 0x0000 },

-  { 0x8700, 0xf90b, 0x3000 },

-  { 0x8700, 0xf909, 0x2000 },

-  { 0x0700, 0xf908, 0x0000 },

-  { 0x0700, 0xf90a, 0x0000 },

-  { 0x8700, 0xf90d, 0x2000 },

-  { 0x0700, 0xf90c, 0x0000 },

-  { 0x0700, 0xf90e, 0x0000 },

-  { 0x8700, 0xf917, 0x4000 },

-  { 0x8700, 0xf913, 0x3000 },

-  { 0x8700, 0xf911, 0x2000 },

-  { 0x0700, 0xf910, 0x0000 },

-  { 0x0700, 0xf912, 0x0000 },

-  { 0x8700, 0xf915, 0x2000 },

-  { 0x0700, 0xf914, 0x0000 },

-  { 0x0700, 0xf916, 0x0000 },

-  { 0x8700, 0xf91b, 0x3000 },

-  { 0x8700, 0xf919, 0x2000 },

-  { 0x0700, 0xf918, 0x0000 },

-  { 0x0700, 0xf91a, 0x0000 },

-  { 0x8700, 0xf91d, 0x2000 },

-  { 0x0700, 0xf91c, 0x0000 },

-  { 0x0700, 0xf91e, 0x0000 },

-  { 0x8700, 0xf92f, 0x5000 },

-  { 0x8700, 0xf927, 0x4000 },

-  { 0x8700, 0xf923, 0x3000 },

-  { 0x8700, 0xf921, 0x2000 },

-  { 0x0700, 0xf920, 0x0000 },

-  { 0x0700, 0xf922, 0x0000 },

-  { 0x8700, 0xf925, 0x2000 },

-  { 0x0700, 0xf924, 0x0000 },

-  { 0x0700, 0xf926, 0x0000 },

-  { 0x8700, 0xf92b, 0x3000 },

-  { 0x8700, 0xf929, 0x2000 },

-  { 0x0700, 0xf928, 0x0000 },

-  { 0x0700, 0xf92a, 0x0000 },

-  { 0x8700, 0xf92d, 0x2000 },

-  { 0x0700, 0xf92c, 0x0000 },

-  { 0x0700, 0xf92e, 0x0000 },

-  { 0x8700, 0xf937, 0x4000 },

-  { 0x8700, 0xf933, 0x3000 },

-  { 0x8700, 0xf931, 0x2000 },

-  { 0x0700, 0xf930, 0x0000 },

-  { 0x0700, 0xf932, 0x0000 },

-  { 0x8700, 0xf935, 0x2000 },

-  { 0x0700, 0xf934, 0x0000 },

-  { 0x0700, 0xf936, 0x0000 },

-  { 0x8700, 0xf93b, 0x3000 },

-  { 0x8700, 0xf939, 0x2000 },

-  { 0x0700, 0xf938, 0x0000 },

-  { 0x0700, 0xf93a, 0x0000 },

-  { 0x8700, 0xf93d, 0x2000 },

-  { 0x0700, 0xf93c, 0x0000 },

-  { 0x0700, 0xf93e, 0x0000 },

-  { 0x8700, 0xf95f, 0x6000 },

-  { 0x8700, 0xf94f, 0x5000 },

-  { 0x8700, 0xf947, 0x4000 },

-  { 0x8700, 0xf943, 0x3000 },

-  { 0x8700, 0xf941, 0x2000 },

-  { 0x0700, 0xf940, 0x0000 },

-  { 0x0700, 0xf942, 0x0000 },

-  { 0x8700, 0xf945, 0x2000 },

-  { 0x0700, 0xf944, 0x0000 },

-  { 0x0700, 0xf946, 0x0000 },

-  { 0x8700, 0xf94b, 0x3000 },

-  { 0x8700, 0xf949, 0x2000 },

-  { 0x0700, 0xf948, 0x0000 },

-  { 0x0700, 0xf94a, 0x0000 },

-  { 0x8700, 0xf94d, 0x2000 },

-  { 0x0700, 0xf94c, 0x0000 },

-  { 0x0700, 0xf94e, 0x0000 },

-  { 0x8700, 0xf957, 0x4000 },

-  { 0x8700, 0xf953, 0x3000 },

-  { 0x8700, 0xf951, 0x2000 },

-  { 0x0700, 0xf950, 0x0000 },

-  { 0x0700, 0xf952, 0x0000 },

-  { 0x8700, 0xf955, 0x2000 },

-  { 0x0700, 0xf954, 0x0000 },

-  { 0x0700, 0xf956, 0x0000 },

-  { 0x8700, 0xf95b, 0x3000 },

-  { 0x8700, 0xf959, 0x2000 },

-  { 0x0700, 0xf958, 0x0000 },

-  { 0x0700, 0xf95a, 0x0000 },

-  { 0x8700, 0xf95d, 0x2000 },

-  { 0x0700, 0xf95c, 0x0000 },

-  { 0x0700, 0xf95e, 0x0000 },

-  { 0x8700, 0xf96f, 0x5000 },

-  { 0x8700, 0xf967, 0x4000 },

-  { 0x8700, 0xf963, 0x3000 },

-  { 0x8700, 0xf961, 0x2000 },

-  { 0x0700, 0xf960, 0x0000 },

-  { 0x0700, 0xf962, 0x0000 },

-  { 0x8700, 0xf965, 0x2000 },

-  { 0x0700, 0xf964, 0x0000 },

-  { 0x0700, 0xf966, 0x0000 },

-  { 0x8700, 0xf96b, 0x3000 },

-  { 0x8700, 0xf969, 0x2000 },

-  { 0x0700, 0xf968, 0x0000 },

-  { 0x0700, 0xf96a, 0x0000 },

-  { 0x8700, 0xf96d, 0x2000 },

-  { 0x0700, 0xf96c, 0x0000 },

-  { 0x0700, 0xf96e, 0x0000 },

-  { 0x8700, 0xf977, 0x4000 },

-  { 0x8700, 0xf973, 0x3000 },

-  { 0x8700, 0xf971, 0x2000 },

-  { 0x0700, 0xf970, 0x0000 },

-  { 0x0700, 0xf972, 0x0000 },

-  { 0x8700, 0xf975, 0x2000 },

-  { 0x0700, 0xf974, 0x0000 },

-  { 0x0700, 0xf976, 0x0000 },

-  { 0x8700, 0xf97b, 0x3000 },

-  { 0x8700, 0xf979, 0x2000 },

-  { 0x0700, 0xf978, 0x0000 },

-  { 0x0700, 0xf97a, 0x0000 },

-  { 0x8700, 0xf97d, 0x2000 },

-  { 0x0700, 0xf97c, 0x0000 },

-  { 0x0700, 0xf97e, 0x0000 },

-  { 0x8700, 0xfb27, 0x9000 },

-  { 0x8700, 0xf9ff, 0x8000 },

-  { 0x8700, 0xf9bf, 0x7000 },

-  { 0x8700, 0xf99f, 0x6000 },

-  { 0x8700, 0xf98f, 0x5000 },

-  { 0x8700, 0xf987, 0x4000 },

-  { 0x8700, 0xf983, 0x3000 },

-  { 0x8700, 0xf981, 0x2000 },

-  { 0x0700, 0xf980, 0x0000 },

-  { 0x0700, 0xf982, 0x0000 },

-  { 0x8700, 0xf985, 0x2000 },

-  { 0x0700, 0xf984, 0x0000 },

-  { 0x0700, 0xf986, 0x0000 },

-  { 0x8700, 0xf98b, 0x3000 },

-  { 0x8700, 0xf989, 0x2000 },

-  { 0x0700, 0xf988, 0x0000 },

-  { 0x0700, 0xf98a, 0x0000 },

-  { 0x8700, 0xf98d, 0x2000 },

-  { 0x0700, 0xf98c, 0x0000 },

-  { 0x0700, 0xf98e, 0x0000 },

-  { 0x8700, 0xf997, 0x4000 },

-  { 0x8700, 0xf993, 0x3000 },

-  { 0x8700, 0xf991, 0x2000 },

-  { 0x0700, 0xf990, 0x0000 },

-  { 0x0700, 0xf992, 0x0000 },

-  { 0x8700, 0xf995, 0x2000 },

-  { 0x0700, 0xf994, 0x0000 },

-  { 0x0700, 0xf996, 0x0000 },

-  { 0x8700, 0xf99b, 0x3000 },

-  { 0x8700, 0xf999, 0x2000 },

-  { 0x0700, 0xf998, 0x0000 },

-  { 0x0700, 0xf99a, 0x0000 },

-  { 0x8700, 0xf99d, 0x2000 },

-  { 0x0700, 0xf99c, 0x0000 },

-  { 0x0700, 0xf99e, 0x0000 },

-  { 0x8700, 0xf9af, 0x5000 },

-  { 0x8700, 0xf9a7, 0x4000 },

-  { 0x8700, 0xf9a3, 0x3000 },

-  { 0x8700, 0xf9a1, 0x2000 },

-  { 0x0700, 0xf9a0, 0x0000 },

-  { 0x0700, 0xf9a2, 0x0000 },

-  { 0x8700, 0xf9a5, 0x2000 },

-  { 0x0700, 0xf9a4, 0x0000 },

-  { 0x0700, 0xf9a6, 0x0000 },

-  { 0x8700, 0xf9ab, 0x3000 },

-  { 0x8700, 0xf9a9, 0x2000 },

-  { 0x0700, 0xf9a8, 0x0000 },

-  { 0x0700, 0xf9aa, 0x0000 },

-  { 0x8700, 0xf9ad, 0x2000 },

-  { 0x0700, 0xf9ac, 0x0000 },

-  { 0x0700, 0xf9ae, 0x0000 },

-  { 0x8700, 0xf9b7, 0x4000 },

-  { 0x8700, 0xf9b3, 0x3000 },

-  { 0x8700, 0xf9b1, 0x2000 },

-  { 0x0700, 0xf9b0, 0x0000 },

-  { 0x0700, 0xf9b2, 0x0000 },

-  { 0x8700, 0xf9b5, 0x2000 },

-  { 0x0700, 0xf9b4, 0x0000 },

-  { 0x0700, 0xf9b6, 0x0000 },

-  { 0x8700, 0xf9bb, 0x3000 },

-  { 0x8700, 0xf9b9, 0x2000 },

-  { 0x0700, 0xf9b8, 0x0000 },

-  { 0x0700, 0xf9ba, 0x0000 },

-  { 0x8700, 0xf9bd, 0x2000 },

-  { 0x0700, 0xf9bc, 0x0000 },

-  { 0x0700, 0xf9be, 0x0000 },

-  { 0x8700, 0xf9df, 0x6000 },

-  { 0x8700, 0xf9cf, 0x5000 },

-  { 0x8700, 0xf9c7, 0x4000 },

-  { 0x8700, 0xf9c3, 0x3000 },

-  { 0x8700, 0xf9c1, 0x2000 },

-  { 0x0700, 0xf9c0, 0x0000 },

-  { 0x0700, 0xf9c2, 0x0000 },

-  { 0x8700, 0xf9c5, 0x2000 },

-  { 0x0700, 0xf9c4, 0x0000 },

-  { 0x0700, 0xf9c6, 0x0000 },

-  { 0x8700, 0xf9cb, 0x3000 },

-  { 0x8700, 0xf9c9, 0x2000 },

-  { 0x0700, 0xf9c8, 0x0000 },

-  { 0x0700, 0xf9ca, 0x0000 },

-  { 0x8700, 0xf9cd, 0x2000 },

-  { 0x0700, 0xf9cc, 0x0000 },

-  { 0x0700, 0xf9ce, 0x0000 },

-  { 0x8700, 0xf9d7, 0x4000 },

-  { 0x8700, 0xf9d3, 0x3000 },

-  { 0x8700, 0xf9d1, 0x2000 },

-  { 0x0700, 0xf9d0, 0x0000 },

-  { 0x0700, 0xf9d2, 0x0000 },

-  { 0x8700, 0xf9d5, 0x2000 },

-  { 0x0700, 0xf9d4, 0x0000 },

-  { 0x0700, 0xf9d6, 0x0000 },

-  { 0x8700, 0xf9db, 0x3000 },

-  { 0x8700, 0xf9d9, 0x2000 },

-  { 0x0700, 0xf9d8, 0x0000 },

-  { 0x0700, 0xf9da, 0x0000 },

-  { 0x8700, 0xf9dd, 0x2000 },

-  { 0x0700, 0xf9dc, 0x0000 },

-  { 0x0700, 0xf9de, 0x0000 },

-  { 0x8700, 0xf9ef, 0x5000 },

-  { 0x8700, 0xf9e7, 0x4000 },

-  { 0x8700, 0xf9e3, 0x3000 },

-  { 0x8700, 0xf9e1, 0x2000 },

-  { 0x0700, 0xf9e0, 0x0000 },

-  { 0x0700, 0xf9e2, 0x0000 },

-  { 0x8700, 0xf9e5, 0x2000 },

-  { 0x0700, 0xf9e4, 0x0000 },

-  { 0x0700, 0xf9e6, 0x0000 },

-  { 0x8700, 0xf9eb, 0x3000 },

-  { 0x8700, 0xf9e9, 0x2000 },

-  { 0x0700, 0xf9e8, 0x0000 },

-  { 0x0700, 0xf9ea, 0x0000 },

-  { 0x8700, 0xf9ed, 0x2000 },

-  { 0x0700, 0xf9ec, 0x0000 },

-  { 0x0700, 0xf9ee, 0x0000 },

-  { 0x8700, 0xf9f7, 0x4000 },

-  { 0x8700, 0xf9f3, 0x3000 },

-  { 0x8700, 0xf9f1, 0x2000 },

-  { 0x0700, 0xf9f0, 0x0000 },

-  { 0x0700, 0xf9f2, 0x0000 },

-  { 0x8700, 0xf9f5, 0x2000 },

-  { 0x0700, 0xf9f4, 0x0000 },

-  { 0x0700, 0xf9f6, 0x0000 },

-  { 0x8700, 0xf9fb, 0x3000 },

-  { 0x8700, 0xf9f9, 0x2000 },

-  { 0x0700, 0xf9f8, 0x0000 },

-  { 0x0700, 0xf9fa, 0x0000 },

-  { 0x8700, 0xf9fd, 0x2000 },

-  { 0x0700, 0xf9fc, 0x0000 },

-  { 0x0700, 0xf9fe, 0x0000 },

-  { 0x8700, 0xfa41, 0x7000 },

-  { 0x8700, 0xfa1f, 0x6000 },

-  { 0x8700, 0xfa0f, 0x5000 },

-  { 0x8700, 0xfa07, 0x4000 },

-  { 0x8700, 0xfa03, 0x3000 },

-  { 0x8700, 0xfa01, 0x2000 },

-  { 0x0700, 0xfa00, 0x0000 },

-  { 0x0700, 0xfa02, 0x0000 },

-  { 0x8700, 0xfa05, 0x2000 },

-  { 0x0700, 0xfa04, 0x0000 },

-  { 0x0700, 0xfa06, 0x0000 },

-  { 0x8700, 0xfa0b, 0x3000 },

-  { 0x8700, 0xfa09, 0x2000 },

-  { 0x0700, 0xfa08, 0x0000 },

-  { 0x0700, 0xfa0a, 0x0000 },

-  { 0x8700, 0xfa0d, 0x2000 },

-  { 0x0700, 0xfa0c, 0x0000 },

-  { 0x0700, 0xfa0e, 0x0000 },

-  { 0x8700, 0xfa17, 0x4000 },

-  { 0x8700, 0xfa13, 0x3000 },

-  { 0x8700, 0xfa11, 0x2000 },

-  { 0x0700, 0xfa10, 0x0000 },

-  { 0x0700, 0xfa12, 0x0000 },

-  { 0x8700, 0xfa15, 0x2000 },

-  { 0x0700, 0xfa14, 0x0000 },

-  { 0x0700, 0xfa16, 0x0000 },

-  { 0x8700, 0xfa1b, 0x3000 },

-  { 0x8700, 0xfa19, 0x2000 },

-  { 0x0700, 0xfa18, 0x0000 },

-  { 0x0700, 0xfa1a, 0x0000 },

-  { 0x8700, 0xfa1d, 0x2000 },

-  { 0x0700, 0xfa1c, 0x0000 },

-  { 0x0700, 0xfa1e, 0x0000 },

-  { 0x8700, 0xfa31, 0x5000 },

-  { 0x8700, 0xfa27, 0x4000 },

-  { 0x8700, 0xfa23, 0x3000 },

-  { 0x8700, 0xfa21, 0x2000 },

-  { 0x0700, 0xfa20, 0x0000 },

-  { 0x0700, 0xfa22, 0x0000 },

-  { 0x8700, 0xfa25, 0x2000 },

-  { 0x0700, 0xfa24, 0x0000 },

-  { 0x0700, 0xfa26, 0x0000 },

-  { 0x8700, 0xfa2b, 0x3000 },

-  { 0x8700, 0xfa29, 0x2000 },

-  { 0x0700, 0xfa28, 0x0000 },

-  { 0x0700, 0xfa2a, 0x0000 },

-  { 0x8700, 0xfa2d, 0x2000 },

-  { 0x0700, 0xfa2c, 0x0000 },

-  { 0x0700, 0xfa30, 0x0000 },

-  { 0x8700, 0xfa39, 0x4000 },

-  { 0x8700, 0xfa35, 0x3000 },

-  { 0x8700, 0xfa33, 0x2000 },

-  { 0x0700, 0xfa32, 0x0000 },

-  { 0x0700, 0xfa34, 0x0000 },

-  { 0x8700, 0xfa37, 0x2000 },

-  { 0x0700, 0xfa36, 0x0000 },

-  { 0x0700, 0xfa38, 0x0000 },

-  { 0x8700, 0xfa3d, 0x3000 },

-  { 0x8700, 0xfa3b, 0x2000 },

-  { 0x0700, 0xfa3a, 0x0000 },

-  { 0x0700, 0xfa3c, 0x0000 },

-  { 0x8700, 0xfa3f, 0x2000 },

-  { 0x0700, 0xfa3e, 0x0000 },

-  { 0x0700, 0xfa40, 0x0000 },

-  { 0x8700, 0xfa61, 0x6000 },

-  { 0x8700, 0xfa51, 0x5000 },

-  { 0x8700, 0xfa49, 0x4000 },

-  { 0x8700, 0xfa45, 0x3000 },

-  { 0x8700, 0xfa43, 0x2000 },

-  { 0x0700, 0xfa42, 0x0000 },

-  { 0x0700, 0xfa44, 0x0000 },

-  { 0x8700, 0xfa47, 0x2000 },

-  { 0x0700, 0xfa46, 0x0000 },

-  { 0x0700, 0xfa48, 0x0000 },

-  { 0x8700, 0xfa4d, 0x3000 },

-  { 0x8700, 0xfa4b, 0x2000 },

-  { 0x0700, 0xfa4a, 0x0000 },

-  { 0x0700, 0xfa4c, 0x0000 },

-  { 0x8700, 0xfa4f, 0x2000 },

-  { 0x0700, 0xfa4e, 0x0000 },

-  { 0x0700, 0xfa50, 0x0000 },

-  { 0x8700, 0xfa59, 0x4000 },

-  { 0x8700, 0xfa55, 0x3000 },

-  { 0x8700, 0xfa53, 0x2000 },

-  { 0x0700, 0xfa52, 0x0000 },

-  { 0x0700, 0xfa54, 0x0000 },

-  { 0x8700, 0xfa57, 0x2000 },

-  { 0x0700, 0xfa56, 0x0000 },

-  { 0x0700, 0xfa58, 0x0000 },

-  { 0x8700, 0xfa5d, 0x3000 },

-  { 0x8700, 0xfa5b, 0x2000 },

-  { 0x0700, 0xfa5a, 0x0000 },

-  { 0x0700, 0xfa5c, 0x0000 },

-  { 0x8700, 0xfa5f, 0x2000 },

-  { 0x0700, 0xfa5e, 0x0000 },

-  { 0x0700, 0xfa60, 0x0000 },

-  { 0x8500, 0xfb06, 0x5000 },

-  { 0x8700, 0xfa69, 0x4000 },

-  { 0x8700, 0xfa65, 0x3000 },

-  { 0x8700, 0xfa63, 0x2000 },

-  { 0x0700, 0xfa62, 0x0000 },

-  { 0x0700, 0xfa64, 0x0000 },

-  { 0x8700, 0xfa67, 0x2000 },

-  { 0x0700, 0xfa66, 0x0000 },

-  { 0x0700, 0xfa68, 0x0000 },

-  { 0x8500, 0xfb02, 0x3000 },

-  { 0x8500, 0xfb00, 0x2000 },

-  { 0x0700, 0xfa6a, 0x0000 },

-  { 0x0500, 0xfb01, 0x0000 },

-  { 0x8500, 0xfb04, 0x2000 },

-  { 0x0500, 0xfb03, 0x0000 },

-  { 0x0500, 0xfb05, 0x0000 },

-  { 0x8700, 0xfb1f, 0x4000 },

-  { 0x8500, 0xfb16, 0x3000 },

-  { 0x8500, 0xfb14, 0x2000 },

-  { 0x0500, 0xfb13, 0x0000 },

-  { 0x0500, 0xfb15, 0x0000 },

-  { 0x8700, 0xfb1d, 0x2000 },

-  { 0x0500, 0xfb17, 0x0000 },

-  { 0x0c00, 0xfb1e, 0x0000 },

-  { 0x8700, 0xfb23, 0x3000 },

-  { 0x8700, 0xfb21, 0x2000 },

-  { 0x0700, 0xfb20, 0x0000 },

-  { 0x0700, 0xfb22, 0x0000 },

-  { 0x8700, 0xfb25, 0x2000 },

-  { 0x0700, 0xfb24, 0x0000 },

-  { 0x0700, 0xfb26, 0x0000 },

-  { 0x8700, 0xfbac, 0x8000 },

-  { 0x8700, 0xfb6c, 0x7000 },

-  { 0x8700, 0xfb4c, 0x6000 },

-  { 0x8700, 0xfb38, 0x5000 },

-  { 0x8700, 0xfb2f, 0x4000 },

-  { 0x8700, 0xfb2b, 0x3000 },

-  { 0x9900, 0xfb29, 0x2000 },

-  { 0x0700, 0xfb28, 0x0000 },

-  { 0x0700, 0xfb2a, 0x0000 },

-  { 0x8700, 0xfb2d, 0x2000 },

-  { 0x0700, 0xfb2c, 0x0000 },

-  { 0x0700, 0xfb2e, 0x0000 },

-  { 0x8700, 0xfb33, 0x3000 },

-  { 0x8700, 0xfb31, 0x2000 },

-  { 0x0700, 0xfb30, 0x0000 },

-  { 0x0700, 0xfb32, 0x0000 },

-  { 0x8700, 0xfb35, 0x2000 },

-  { 0x0700, 0xfb34, 0x0000 },

-  { 0x0700, 0xfb36, 0x0000 },

-  { 0x8700, 0xfb43, 0x4000 },

-  { 0x8700, 0xfb3c, 0x3000 },

-  { 0x8700, 0xfb3a, 0x2000 },

-  { 0x0700, 0xfb39, 0x0000 },

-  { 0x0700, 0xfb3b, 0x0000 },

-  { 0x8700, 0xfb40, 0x2000 },

-  { 0x0700, 0xfb3e, 0x0000 },

-  { 0x0700, 0xfb41, 0x0000 },

-  { 0x8700, 0xfb48, 0x3000 },

-  { 0x8700, 0xfb46, 0x2000 },

-  { 0x0700, 0xfb44, 0x0000 },

-  { 0x0700, 0xfb47, 0x0000 },

-  { 0x8700, 0xfb4a, 0x2000 },

-  { 0x0700, 0xfb49, 0x0000 },

-  { 0x0700, 0xfb4b, 0x0000 },

-  { 0x8700, 0xfb5c, 0x5000 },

-  { 0x8700, 0xfb54, 0x4000 },

-  { 0x8700, 0xfb50, 0x3000 },

-  { 0x8700, 0xfb4e, 0x2000 },

-  { 0x0700, 0xfb4d, 0x0000 },

-  { 0x0700, 0xfb4f, 0x0000 },

-  { 0x8700, 0xfb52, 0x2000 },

-  { 0x0700, 0xfb51, 0x0000 },

-  { 0x0700, 0xfb53, 0x0000 },

-  { 0x8700, 0xfb58, 0x3000 },

-  { 0x8700, 0xfb56, 0x2000 },

-  { 0x0700, 0xfb55, 0x0000 },

-  { 0x0700, 0xfb57, 0x0000 },

-  { 0x8700, 0xfb5a, 0x2000 },

-  { 0x0700, 0xfb59, 0x0000 },

-  { 0x0700, 0xfb5b, 0x0000 },

-  { 0x8700, 0xfb64, 0x4000 },

-  { 0x8700, 0xfb60, 0x3000 },

-  { 0x8700, 0xfb5e, 0x2000 },

-  { 0x0700, 0xfb5d, 0x0000 },

-  { 0x0700, 0xfb5f, 0x0000 },

-  { 0x8700, 0xfb62, 0x2000 },

-  { 0x0700, 0xfb61, 0x0000 },

-  { 0x0700, 0xfb63, 0x0000 },

-  { 0x8700, 0xfb68, 0x3000 },

-  { 0x8700, 0xfb66, 0x2000 },

-  { 0x0700, 0xfb65, 0x0000 },

-  { 0x0700, 0xfb67, 0x0000 },

-  { 0x8700, 0xfb6a, 0x2000 },

-  { 0x0700, 0xfb69, 0x0000 },

-  { 0x0700, 0xfb6b, 0x0000 },

-  { 0x8700, 0xfb8c, 0x6000 },

-  { 0x8700, 0xfb7c, 0x5000 },

-  { 0x8700, 0xfb74, 0x4000 },

-  { 0x8700, 0xfb70, 0x3000 },

-  { 0x8700, 0xfb6e, 0x2000 },

-  { 0x0700, 0xfb6d, 0x0000 },

-  { 0x0700, 0xfb6f, 0x0000 },

-  { 0x8700, 0xfb72, 0x2000 },

-  { 0x0700, 0xfb71, 0x0000 },

-  { 0x0700, 0xfb73, 0x0000 },

-  { 0x8700, 0xfb78, 0x3000 },

-  { 0x8700, 0xfb76, 0x2000 },

-  { 0x0700, 0xfb75, 0x0000 },

-  { 0x0700, 0xfb77, 0x0000 },

-  { 0x8700, 0xfb7a, 0x2000 },

-  { 0x0700, 0xfb79, 0x0000 },

-  { 0x0700, 0xfb7b, 0x0000 },

-  { 0x8700, 0xfb84, 0x4000 },

-  { 0x8700, 0xfb80, 0x3000 },

-  { 0x8700, 0xfb7e, 0x2000 },

-  { 0x0700, 0xfb7d, 0x0000 },

-  { 0x0700, 0xfb7f, 0x0000 },

-  { 0x8700, 0xfb82, 0x2000 },

-  { 0x0700, 0xfb81, 0x0000 },

-  { 0x0700, 0xfb83, 0x0000 },

-  { 0x8700, 0xfb88, 0x3000 },

-  { 0x8700, 0xfb86, 0x2000 },

-  { 0x0700, 0xfb85, 0x0000 },

-  { 0x0700, 0xfb87, 0x0000 },

-  { 0x8700, 0xfb8a, 0x2000 },

-  { 0x0700, 0xfb89, 0x0000 },

-  { 0x0700, 0xfb8b, 0x0000 },

-  { 0x8700, 0xfb9c, 0x5000 },

-  { 0x8700, 0xfb94, 0x4000 },

-  { 0x8700, 0xfb90, 0x3000 },

-  { 0x8700, 0xfb8e, 0x2000 },

-  { 0x0700, 0xfb8d, 0x0000 },

-  { 0x0700, 0xfb8f, 0x0000 },

-  { 0x8700, 0xfb92, 0x2000 },

-  { 0x0700, 0xfb91, 0x0000 },

-  { 0x0700, 0xfb93, 0x0000 },

-  { 0x8700, 0xfb98, 0x3000 },

-  { 0x8700, 0xfb96, 0x2000 },

-  { 0x0700, 0xfb95, 0x0000 },

-  { 0x0700, 0xfb97, 0x0000 },

-  { 0x8700, 0xfb9a, 0x2000 },

-  { 0x0700, 0xfb99, 0x0000 },

-  { 0x0700, 0xfb9b, 0x0000 },

-  { 0x8700, 0xfba4, 0x4000 },

-  { 0x8700, 0xfba0, 0x3000 },

-  { 0x8700, 0xfb9e, 0x2000 },

-  { 0x0700, 0xfb9d, 0x0000 },

-  { 0x0700, 0xfb9f, 0x0000 },

-  { 0x8700, 0xfba2, 0x2000 },

-  { 0x0700, 0xfba1, 0x0000 },

-  { 0x0700, 0xfba3, 0x0000 },

-  { 0x8700, 0xfba8, 0x3000 },

-  { 0x8700, 0xfba6, 0x2000 },

-  { 0x0700, 0xfba5, 0x0000 },

-  { 0x0700, 0xfba7, 0x0000 },

-  { 0x8700, 0xfbaa, 0x2000 },

-  { 0x0700, 0xfba9, 0x0000 },

-  { 0x0700, 0xfbab, 0x0000 },

-  { 0x8700, 0xfc0d, 0x7000 },

-  { 0x8700, 0xfbed, 0x6000 },

-  { 0x8700, 0xfbdd, 0x5000 },

-  { 0x8700, 0xfbd5, 0x4000 },

-  { 0x8700, 0xfbb0, 0x3000 },

-  { 0x8700, 0xfbae, 0x2000 },

-  { 0x0700, 0xfbad, 0x0000 },

-  { 0x0700, 0xfbaf, 0x0000 },

-  { 0x8700, 0xfbd3, 0x2000 },

-  { 0x0700, 0xfbb1, 0x0000 },

-  { 0x0700, 0xfbd4, 0x0000 },

-  { 0x8700, 0xfbd9, 0x3000 },

-  { 0x8700, 0xfbd7, 0x2000 },

-  { 0x0700, 0xfbd6, 0x0000 },

-  { 0x0700, 0xfbd8, 0x0000 },

-  { 0x8700, 0xfbdb, 0x2000 },

-  { 0x0700, 0xfbda, 0x0000 },

-  { 0x0700, 0xfbdc, 0x0000 },

-  { 0x8700, 0xfbe5, 0x4000 },

-  { 0x8700, 0xfbe1, 0x3000 },

-  { 0x8700, 0xfbdf, 0x2000 },

-  { 0x0700, 0xfbde, 0x0000 },

-  { 0x0700, 0xfbe0, 0x0000 },

-  { 0x8700, 0xfbe3, 0x2000 },

-  { 0x0700, 0xfbe2, 0x0000 },

-  { 0x0700, 0xfbe4, 0x0000 },

-  { 0x8700, 0xfbe9, 0x3000 },

-  { 0x8700, 0xfbe7, 0x2000 },

-  { 0x0700, 0xfbe6, 0x0000 },

-  { 0x0700, 0xfbe8, 0x0000 },

-  { 0x8700, 0xfbeb, 0x2000 },

-  { 0x0700, 0xfbea, 0x0000 },

-  { 0x0700, 0xfbec, 0x0000 },

-  { 0x8700, 0xfbfd, 0x5000 },

-  { 0x8700, 0xfbf5, 0x4000 },

-  { 0x8700, 0xfbf1, 0x3000 },

-  { 0x8700, 0xfbef, 0x2000 },

-  { 0x0700, 0xfbee, 0x0000 },

-  { 0x0700, 0xfbf0, 0x0000 },

-  { 0x8700, 0xfbf3, 0x2000 },

-  { 0x0700, 0xfbf2, 0x0000 },

-  { 0x0700, 0xfbf4, 0x0000 },

-  { 0x8700, 0xfbf9, 0x3000 },

-  { 0x8700, 0xfbf7, 0x2000 },

-  { 0x0700, 0xfbf6, 0x0000 },

-  { 0x0700, 0xfbf8, 0x0000 },

-  { 0x8700, 0xfbfb, 0x2000 },

-  { 0x0700, 0xfbfa, 0x0000 },

-  { 0x0700, 0xfbfc, 0x0000 },

-  { 0x8700, 0xfc05, 0x4000 },

-  { 0x8700, 0xfc01, 0x3000 },

-  { 0x8700, 0xfbff, 0x2000 },

-  { 0x0700, 0xfbfe, 0x0000 },

-  { 0x0700, 0xfc00, 0x0000 },

-  { 0x8700, 0xfc03, 0x2000 },

-  { 0x0700, 0xfc02, 0x0000 },

-  { 0x0700, 0xfc04, 0x0000 },

-  { 0x8700, 0xfc09, 0x3000 },

-  { 0x8700, 0xfc07, 0x2000 },

-  { 0x0700, 0xfc06, 0x0000 },

-  { 0x0700, 0xfc08, 0x0000 },

-  { 0x8700, 0xfc0b, 0x2000 },

-  { 0x0700, 0xfc0a, 0x0000 },

-  { 0x0700, 0xfc0c, 0x0000 },

-  { 0x8700, 0xfc2d, 0x6000 },

-  { 0x8700, 0xfc1d, 0x5000 },

-  { 0x8700, 0xfc15, 0x4000 },

-  { 0x8700, 0xfc11, 0x3000 },

-  { 0x8700, 0xfc0f, 0x2000 },

-  { 0x0700, 0xfc0e, 0x0000 },

-  { 0x0700, 0xfc10, 0x0000 },

-  { 0x8700, 0xfc13, 0x2000 },

-  { 0x0700, 0xfc12, 0x0000 },

-  { 0x0700, 0xfc14, 0x0000 },

-  { 0x8700, 0xfc19, 0x3000 },

-  { 0x8700, 0xfc17, 0x2000 },

-  { 0x0700, 0xfc16, 0x0000 },

-  { 0x0700, 0xfc18, 0x0000 },

-  { 0x8700, 0xfc1b, 0x2000 },

-  { 0x0700, 0xfc1a, 0x0000 },

-  { 0x0700, 0xfc1c, 0x0000 },

-  { 0x8700, 0xfc25, 0x4000 },

-  { 0x8700, 0xfc21, 0x3000 },

-  { 0x8700, 0xfc1f, 0x2000 },

-  { 0x0700, 0xfc1e, 0x0000 },

-  { 0x0700, 0xfc20, 0x0000 },

-  { 0x8700, 0xfc23, 0x2000 },

-  { 0x0700, 0xfc22, 0x0000 },

-  { 0x0700, 0xfc24, 0x0000 },

-  { 0x8700, 0xfc29, 0x3000 },

-  { 0x8700, 0xfc27, 0x2000 },

-  { 0x0700, 0xfc26, 0x0000 },

-  { 0x0700, 0xfc28, 0x0000 },

-  { 0x8700, 0xfc2b, 0x2000 },

-  { 0x0700, 0xfc2a, 0x0000 },

-  { 0x0700, 0xfc2c, 0x0000 },

-  { 0x8700, 0xfc3d, 0x5000 },

-  { 0x8700, 0xfc35, 0x4000 },

-  { 0x8700, 0xfc31, 0x3000 },

-  { 0x8700, 0xfc2f, 0x2000 },

-  { 0x0700, 0xfc2e, 0x0000 },

-  { 0x0700, 0xfc30, 0x0000 },

-  { 0x8700, 0xfc33, 0x2000 },

-  { 0x0700, 0xfc32, 0x0000 },

-  { 0x0700, 0xfc34, 0x0000 },

-  { 0x8700, 0xfc39, 0x3000 },

-  { 0x8700, 0xfc37, 0x2000 },

-  { 0x0700, 0xfc36, 0x0000 },

-  { 0x0700, 0xfc38, 0x0000 },

-  { 0x8700, 0xfc3b, 0x2000 },

-  { 0x0700, 0xfc3a, 0x0000 },

-  { 0x0700, 0xfc3c, 0x0000 },

-  { 0x8700, 0xfc45, 0x4000 },

-  { 0x8700, 0xfc41, 0x3000 },

-  { 0x8700, 0xfc3f, 0x2000 },

-  { 0x0700, 0xfc3e, 0x0000 },

-  { 0x0700, 0xfc40, 0x0000 },

-  { 0x8700, 0xfc43, 0x2000 },

-  { 0x0700, 0xfc42, 0x0000 },

-  { 0x0700, 0xfc44, 0x0000 },

-  { 0x8700, 0xfc49, 0x3000 },

-  { 0x8700, 0xfc47, 0x2000 },

-  { 0x0700, 0xfc46, 0x0000 },

-  { 0x0700, 0xfc48, 0x0000 },

-  { 0x8700, 0xfc4b, 0x2000 },

-  { 0x0700, 0xfc4a, 0x0000 },

-  { 0x0700, 0xfc4c, 0x0000 },

-  { 0x8700, 0xfeac, 0xa000 },

-  { 0x8700, 0xfd5d, 0x9000 },

-  { 0x8700, 0xfccd, 0x8000 },

-  { 0x8700, 0xfc8d, 0x7000 },

-  { 0x8700, 0xfc6d, 0x6000 },

-  { 0x8700, 0xfc5d, 0x5000 },

-  { 0x8700, 0xfc55, 0x4000 },

-  { 0x8700, 0xfc51, 0x3000 },

-  { 0x8700, 0xfc4f, 0x2000 },

-  { 0x0700, 0xfc4e, 0x0000 },

-  { 0x0700, 0xfc50, 0x0000 },

-  { 0x8700, 0xfc53, 0x2000 },

-  { 0x0700, 0xfc52, 0x0000 },

-  { 0x0700, 0xfc54, 0x0000 },

-  { 0x8700, 0xfc59, 0x3000 },

-  { 0x8700, 0xfc57, 0x2000 },

-  { 0x0700, 0xfc56, 0x0000 },

-  { 0x0700, 0xfc58, 0x0000 },

-  { 0x8700, 0xfc5b, 0x2000 },

-  { 0x0700, 0xfc5a, 0x0000 },

-  { 0x0700, 0xfc5c, 0x0000 },

-  { 0x8700, 0xfc65, 0x4000 },

-  { 0x8700, 0xfc61, 0x3000 },

-  { 0x8700, 0xfc5f, 0x2000 },

-  { 0x0700, 0xfc5e, 0x0000 },

-  { 0x0700, 0xfc60, 0x0000 },

-  { 0x8700, 0xfc63, 0x2000 },

-  { 0x0700, 0xfc62, 0x0000 },

-  { 0x0700, 0xfc64, 0x0000 },

-  { 0x8700, 0xfc69, 0x3000 },

-  { 0x8700, 0xfc67, 0x2000 },

-  { 0x0700, 0xfc66, 0x0000 },

-  { 0x0700, 0xfc68, 0x0000 },

-  { 0x8700, 0xfc6b, 0x2000 },

-  { 0x0700, 0xfc6a, 0x0000 },

-  { 0x0700, 0xfc6c, 0x0000 },

-  { 0x8700, 0xfc7d, 0x5000 },

-  { 0x8700, 0xfc75, 0x4000 },

-  { 0x8700, 0xfc71, 0x3000 },

-  { 0x8700, 0xfc6f, 0x2000 },

-  { 0x0700, 0xfc6e, 0x0000 },

-  { 0x0700, 0xfc70, 0x0000 },

-  { 0x8700, 0xfc73, 0x2000 },

-  { 0x0700, 0xfc72, 0x0000 },

-  { 0x0700, 0xfc74, 0x0000 },

-  { 0x8700, 0xfc79, 0x3000 },

-  { 0x8700, 0xfc77, 0x2000 },

-  { 0x0700, 0xfc76, 0x0000 },

-  { 0x0700, 0xfc78, 0x0000 },

-  { 0x8700, 0xfc7b, 0x2000 },

-  { 0x0700, 0xfc7a, 0x0000 },

-  { 0x0700, 0xfc7c, 0x0000 },

-  { 0x8700, 0xfc85, 0x4000 },

-  { 0x8700, 0xfc81, 0x3000 },

-  { 0x8700, 0xfc7f, 0x2000 },

-  { 0x0700, 0xfc7e, 0x0000 },

-  { 0x0700, 0xfc80, 0x0000 },

-  { 0x8700, 0xfc83, 0x2000 },

-  { 0x0700, 0xfc82, 0x0000 },

-  { 0x0700, 0xfc84, 0x0000 },

-  { 0x8700, 0xfc89, 0x3000 },

-  { 0x8700, 0xfc87, 0x2000 },

-  { 0x0700, 0xfc86, 0x0000 },

-  { 0x0700, 0xfc88, 0x0000 },

-  { 0x8700, 0xfc8b, 0x2000 },

-  { 0x0700, 0xfc8a, 0x0000 },

-  { 0x0700, 0xfc8c, 0x0000 },

-  { 0x8700, 0xfcad, 0x6000 },

-  { 0x8700, 0xfc9d, 0x5000 },

-  { 0x8700, 0xfc95, 0x4000 },

-  { 0x8700, 0xfc91, 0x3000 },

-  { 0x8700, 0xfc8f, 0x2000 },

-  { 0x0700, 0xfc8e, 0x0000 },

-  { 0x0700, 0xfc90, 0x0000 },

-  { 0x8700, 0xfc93, 0x2000 },

-  { 0x0700, 0xfc92, 0x0000 },

-  { 0x0700, 0xfc94, 0x0000 },

-  { 0x8700, 0xfc99, 0x3000 },

-  { 0x8700, 0xfc97, 0x2000 },

-  { 0x0700, 0xfc96, 0x0000 },

-  { 0x0700, 0xfc98, 0x0000 },

-  { 0x8700, 0xfc9b, 0x2000 },

-  { 0x0700, 0xfc9a, 0x0000 },

-  { 0x0700, 0xfc9c, 0x0000 },

-  { 0x8700, 0xfca5, 0x4000 },

-  { 0x8700, 0xfca1, 0x3000 },

-  { 0x8700, 0xfc9f, 0x2000 },

-  { 0x0700, 0xfc9e, 0x0000 },

-  { 0x0700, 0xfca0, 0x0000 },

-  { 0x8700, 0xfca3, 0x2000 },

-  { 0x0700, 0xfca2, 0x0000 },

-  { 0x0700, 0xfca4, 0x0000 },

-  { 0x8700, 0xfca9, 0x3000 },

-  { 0x8700, 0xfca7, 0x2000 },

-  { 0x0700, 0xfca6, 0x0000 },

-  { 0x0700, 0xfca8, 0x0000 },

-  { 0x8700, 0xfcab, 0x2000 },

-  { 0x0700, 0xfcaa, 0x0000 },

-  { 0x0700, 0xfcac, 0x0000 },

-  { 0x8700, 0xfcbd, 0x5000 },

-  { 0x8700, 0xfcb5, 0x4000 },

-  { 0x8700, 0xfcb1, 0x3000 },

-  { 0x8700, 0xfcaf, 0x2000 },

-  { 0x0700, 0xfcae, 0x0000 },

-  { 0x0700, 0xfcb0, 0x0000 },

-  { 0x8700, 0xfcb3, 0x2000 },

-  { 0x0700, 0xfcb2, 0x0000 },

-  { 0x0700, 0xfcb4, 0x0000 },

-  { 0x8700, 0xfcb9, 0x3000 },

-  { 0x8700, 0xfcb7, 0x2000 },

-  { 0x0700, 0xfcb6, 0x0000 },

-  { 0x0700, 0xfcb8, 0x0000 },

-  { 0x8700, 0xfcbb, 0x2000 },

-  { 0x0700, 0xfcba, 0x0000 },

-  { 0x0700, 0xfcbc, 0x0000 },

-  { 0x8700, 0xfcc5, 0x4000 },

-  { 0x8700, 0xfcc1, 0x3000 },

-  { 0x8700, 0xfcbf, 0x2000 },

-  { 0x0700, 0xfcbe, 0x0000 },

-  { 0x0700, 0xfcc0, 0x0000 },

-  { 0x8700, 0xfcc3, 0x2000 },

-  { 0x0700, 0xfcc2, 0x0000 },

-  { 0x0700, 0xfcc4, 0x0000 },

-  { 0x8700, 0xfcc9, 0x3000 },

-  { 0x8700, 0xfcc7, 0x2000 },

-  { 0x0700, 0xfcc6, 0x0000 },

-  { 0x0700, 0xfcc8, 0x0000 },

-  { 0x8700, 0xfccb, 0x2000 },

-  { 0x0700, 0xfcca, 0x0000 },

-  { 0x0700, 0xfccc, 0x0000 },

-  { 0x8700, 0xfd0d, 0x7000 },

-  { 0x8700, 0xfced, 0x6000 },

-  { 0x8700, 0xfcdd, 0x5000 },

-  { 0x8700, 0xfcd5, 0x4000 },

-  { 0x8700, 0xfcd1, 0x3000 },

-  { 0x8700, 0xfccf, 0x2000 },

-  { 0x0700, 0xfcce, 0x0000 },

-  { 0x0700, 0xfcd0, 0x0000 },

-  { 0x8700, 0xfcd3, 0x2000 },

-  { 0x0700, 0xfcd2, 0x0000 },

-  { 0x0700, 0xfcd4, 0x0000 },

-  { 0x8700, 0xfcd9, 0x3000 },

-  { 0x8700, 0xfcd7, 0x2000 },

-  { 0x0700, 0xfcd6, 0x0000 },

-  { 0x0700, 0xfcd8, 0x0000 },

-  { 0x8700, 0xfcdb, 0x2000 },

-  { 0x0700, 0xfcda, 0x0000 },

-  { 0x0700, 0xfcdc, 0x0000 },

-  { 0x8700, 0xfce5, 0x4000 },

-  { 0x8700, 0xfce1, 0x3000 },

-  { 0x8700, 0xfcdf, 0x2000 },

-  { 0x0700, 0xfcde, 0x0000 },

-  { 0x0700, 0xfce0, 0x0000 },

-  { 0x8700, 0xfce3, 0x2000 },

-  { 0x0700, 0xfce2, 0x0000 },

-  { 0x0700, 0xfce4, 0x0000 },

-  { 0x8700, 0xfce9, 0x3000 },

-  { 0x8700, 0xfce7, 0x2000 },

-  { 0x0700, 0xfce6, 0x0000 },

-  { 0x0700, 0xfce8, 0x0000 },

-  { 0x8700, 0xfceb, 0x2000 },

-  { 0x0700, 0xfcea, 0x0000 },

-  { 0x0700, 0xfcec, 0x0000 },

-  { 0x8700, 0xfcfd, 0x5000 },

-  { 0x8700, 0xfcf5, 0x4000 },

-  { 0x8700, 0xfcf1, 0x3000 },

-  { 0x8700, 0xfcef, 0x2000 },

-  { 0x0700, 0xfcee, 0x0000 },

-  { 0x0700, 0xfcf0, 0x0000 },

-  { 0x8700, 0xfcf3, 0x2000 },

-  { 0x0700, 0xfcf2, 0x0000 },

-  { 0x0700, 0xfcf4, 0x0000 },

-  { 0x8700, 0xfcf9, 0x3000 },

-  { 0x8700, 0xfcf7, 0x2000 },

-  { 0x0700, 0xfcf6, 0x0000 },

-  { 0x0700, 0xfcf8, 0x0000 },

-  { 0x8700, 0xfcfb, 0x2000 },

-  { 0x0700, 0xfcfa, 0x0000 },

-  { 0x0700, 0xfcfc, 0x0000 },

-  { 0x8700, 0xfd05, 0x4000 },

-  { 0x8700, 0xfd01, 0x3000 },

-  { 0x8700, 0xfcff, 0x2000 },

-  { 0x0700, 0xfcfe, 0x0000 },

-  { 0x0700, 0xfd00, 0x0000 },

-  { 0x8700, 0xfd03, 0x2000 },

-  { 0x0700, 0xfd02, 0x0000 },

-  { 0x0700, 0xfd04, 0x0000 },

-  { 0x8700, 0xfd09, 0x3000 },

-  { 0x8700, 0xfd07, 0x2000 },

-  { 0x0700, 0xfd06, 0x0000 },

-  { 0x0700, 0xfd08, 0x0000 },

-  { 0x8700, 0xfd0b, 0x2000 },

-  { 0x0700, 0xfd0a, 0x0000 },

-  { 0x0700, 0xfd0c, 0x0000 },

-  { 0x8700, 0xfd2d, 0x6000 },

-  { 0x8700, 0xfd1d, 0x5000 },

-  { 0x8700, 0xfd15, 0x4000 },

-  { 0x8700, 0xfd11, 0x3000 },

-  { 0x8700, 0xfd0f, 0x2000 },

-  { 0x0700, 0xfd0e, 0x0000 },

-  { 0x0700, 0xfd10, 0x0000 },

-  { 0x8700, 0xfd13, 0x2000 },

-  { 0x0700, 0xfd12, 0x0000 },

-  { 0x0700, 0xfd14, 0x0000 },

-  { 0x8700, 0xfd19, 0x3000 },

-  { 0x8700, 0xfd17, 0x2000 },

-  { 0x0700, 0xfd16, 0x0000 },

-  { 0x0700, 0xfd18, 0x0000 },

-  { 0x8700, 0xfd1b, 0x2000 },

-  { 0x0700, 0xfd1a, 0x0000 },

-  { 0x0700, 0xfd1c, 0x0000 },

-  { 0x8700, 0xfd25, 0x4000 },

-  { 0x8700, 0xfd21, 0x3000 },

-  { 0x8700, 0xfd1f, 0x2000 },

-  { 0x0700, 0xfd1e, 0x0000 },

-  { 0x0700, 0xfd20, 0x0000 },

-  { 0x8700, 0xfd23, 0x2000 },

-  { 0x0700, 0xfd22, 0x0000 },

-  { 0x0700, 0xfd24, 0x0000 },

-  { 0x8700, 0xfd29, 0x3000 },

-  { 0x8700, 0xfd27, 0x2000 },

-  { 0x0700, 0xfd26, 0x0000 },

-  { 0x0700, 0xfd28, 0x0000 },

-  { 0x8700, 0xfd2b, 0x2000 },

-  { 0x0700, 0xfd2a, 0x0000 },

-  { 0x0700, 0xfd2c, 0x0000 },

-  { 0x8700, 0xfd3d, 0x5000 },

-  { 0x8700, 0xfd35, 0x4000 },

-  { 0x8700, 0xfd31, 0x3000 },

-  { 0x8700, 0xfd2f, 0x2000 },

-  { 0x0700, 0xfd2e, 0x0000 },

-  { 0x0700, 0xfd30, 0x0000 },

-  { 0x8700, 0xfd33, 0x2000 },

-  { 0x0700, 0xfd32, 0x0000 },

-  { 0x0700, 0xfd34, 0x0000 },

-  { 0x8700, 0xfd39, 0x3000 },

-  { 0x8700, 0xfd37, 0x2000 },

-  { 0x0700, 0xfd36, 0x0000 },

-  { 0x0700, 0xfd38, 0x0000 },

-  { 0x8700, 0xfd3b, 0x2000 },

-  { 0x0700, 0xfd3a, 0x0000 },

-  { 0x0700, 0xfd3c, 0x0000 },

-  { 0x8700, 0xfd55, 0x4000 },

-  { 0x8700, 0xfd51, 0x3000 },

-  { 0x9200, 0xfd3f, 0x2000 },

-  { 0x1600, 0xfd3e, 0x0000 },

-  { 0x0700, 0xfd50, 0x0000 },

-  { 0x8700, 0xfd53, 0x2000 },

-  { 0x0700, 0xfd52, 0x0000 },

-  { 0x0700, 0xfd54, 0x0000 },

-  { 0x8700, 0xfd59, 0x3000 },

-  { 0x8700, 0xfd57, 0x2000 },

-  { 0x0700, 0xfd56, 0x0000 },

-  { 0x0700, 0xfd58, 0x0000 },

-  { 0x8700, 0xfd5b, 0x2000 },

-  { 0x0700, 0xfd5a, 0x0000 },

-  { 0x0700, 0xfd5c, 0x0000 },

-  { 0x8c00, 0xfe09, 0x8000 },

-  { 0x8700, 0xfd9f, 0x7000 },

-  { 0x8700, 0xfd7d, 0x6000 },

-  { 0x8700, 0xfd6d, 0x5000 },

-  { 0x8700, 0xfd65, 0x4000 },

-  { 0x8700, 0xfd61, 0x3000 },

-  { 0x8700, 0xfd5f, 0x2000 },

-  { 0x0700, 0xfd5e, 0x0000 },

-  { 0x0700, 0xfd60, 0x0000 },

-  { 0x8700, 0xfd63, 0x2000 },

-  { 0x0700, 0xfd62, 0x0000 },

-  { 0x0700, 0xfd64, 0x0000 },

-  { 0x8700, 0xfd69, 0x3000 },

-  { 0x8700, 0xfd67, 0x2000 },

-  { 0x0700, 0xfd66, 0x0000 },

-  { 0x0700, 0xfd68, 0x0000 },

-  { 0x8700, 0xfd6b, 0x2000 },

-  { 0x0700, 0xfd6a, 0x0000 },

-  { 0x0700, 0xfd6c, 0x0000 },

-  { 0x8700, 0xfd75, 0x4000 },

-  { 0x8700, 0xfd71, 0x3000 },

-  { 0x8700, 0xfd6f, 0x2000 },

-  { 0x0700, 0xfd6e, 0x0000 },

-  { 0x0700, 0xfd70, 0x0000 },

-  { 0x8700, 0xfd73, 0x2000 },

-  { 0x0700, 0xfd72, 0x0000 },

-  { 0x0700, 0xfd74, 0x0000 },

-  { 0x8700, 0xfd79, 0x3000 },

-  { 0x8700, 0xfd77, 0x2000 },

-  { 0x0700, 0xfd76, 0x0000 },

-  { 0x0700, 0xfd78, 0x0000 },

-  { 0x8700, 0xfd7b, 0x2000 },

-  { 0x0700, 0xfd7a, 0x0000 },

-  { 0x0700, 0xfd7c, 0x0000 },

-  { 0x8700, 0xfd8d, 0x5000 },

-  { 0x8700, 0xfd85, 0x4000 },

-  { 0x8700, 0xfd81, 0x3000 },

-  { 0x8700, 0xfd7f, 0x2000 },

-  { 0x0700, 0xfd7e, 0x0000 },

-  { 0x0700, 0xfd80, 0x0000 },

-  { 0x8700, 0xfd83, 0x2000 },

-  { 0x0700, 0xfd82, 0x0000 },

-  { 0x0700, 0xfd84, 0x0000 },

-  { 0x8700, 0xfd89, 0x3000 },

-  { 0x8700, 0xfd87, 0x2000 },

-  { 0x0700, 0xfd86, 0x0000 },

-  { 0x0700, 0xfd88, 0x0000 },

-  { 0x8700, 0xfd8b, 0x2000 },

-  { 0x0700, 0xfd8a, 0x0000 },

-  { 0x0700, 0xfd8c, 0x0000 },

-  { 0x8700, 0xfd97, 0x4000 },

-  { 0x8700, 0xfd93, 0x3000 },

-  { 0x8700, 0xfd8f, 0x2000 },

-  { 0x0700, 0xfd8e, 0x0000 },

-  { 0x0700, 0xfd92, 0x0000 },

-  { 0x8700, 0xfd95, 0x2000 },

-  { 0x0700, 0xfd94, 0x0000 },

-  { 0x0700, 0xfd96, 0x0000 },

-  { 0x8700, 0xfd9b, 0x3000 },

-  { 0x8700, 0xfd99, 0x2000 },

-  { 0x0700, 0xfd98, 0x0000 },

-  { 0x0700, 0xfd9a, 0x0000 },

-  { 0x8700, 0xfd9d, 0x2000 },

-  { 0x0700, 0xfd9c, 0x0000 },

-  { 0x0700, 0xfd9e, 0x0000 },

-  { 0x8700, 0xfdbf, 0x6000 },

-  { 0x8700, 0xfdaf, 0x5000 },

-  { 0x8700, 0xfda7, 0x4000 },

-  { 0x8700, 0xfda3, 0x3000 },

-  { 0x8700, 0xfda1, 0x2000 },

-  { 0x0700, 0xfda0, 0x0000 },

-  { 0x0700, 0xfda2, 0x0000 },

-  { 0x8700, 0xfda5, 0x2000 },

-  { 0x0700, 0xfda4, 0x0000 },

-  { 0x0700, 0xfda6, 0x0000 },

-  { 0x8700, 0xfdab, 0x3000 },

-  { 0x8700, 0xfda9, 0x2000 },

-  { 0x0700, 0xfda8, 0x0000 },

-  { 0x0700, 0xfdaa, 0x0000 },

-  { 0x8700, 0xfdad, 0x2000 },

-  { 0x0700, 0xfdac, 0x0000 },

-  { 0x0700, 0xfdae, 0x0000 },

-  { 0x8700, 0xfdb7, 0x4000 },

-  { 0x8700, 0xfdb3, 0x3000 },

-  { 0x8700, 0xfdb1, 0x2000 },

-  { 0x0700, 0xfdb0, 0x0000 },

-  { 0x0700, 0xfdb2, 0x0000 },

-  { 0x8700, 0xfdb5, 0x2000 },

-  { 0x0700, 0xfdb4, 0x0000 },

-  { 0x0700, 0xfdb6, 0x0000 },

-  { 0x8700, 0xfdbb, 0x3000 },

-  { 0x8700, 0xfdb9, 0x2000 },

-  { 0x0700, 0xfdb8, 0x0000 },

-  { 0x0700, 0xfdba, 0x0000 },

-  { 0x8700, 0xfdbd, 0x2000 },

-  { 0x0700, 0xfdbc, 0x0000 },

-  { 0x0700, 0xfdbe, 0x0000 },

-  { 0x8700, 0xfdf7, 0x5000 },

-  { 0x8700, 0xfdc7, 0x4000 },

-  { 0x8700, 0xfdc3, 0x3000 },

-  { 0x8700, 0xfdc1, 0x2000 },

-  { 0x0700, 0xfdc0, 0x0000 },

-  { 0x0700, 0xfdc2, 0x0000 },

-  { 0x8700, 0xfdc5, 0x2000 },

-  { 0x0700, 0xfdc4, 0x0000 },

-  { 0x0700, 0xfdc6, 0x0000 },

-  { 0x8700, 0xfdf3, 0x3000 },

-  { 0x8700, 0xfdf1, 0x2000 },

-  { 0x0700, 0xfdf0, 0x0000 },

-  { 0x0700, 0xfdf2, 0x0000 },

-  { 0x8700, 0xfdf5, 0x2000 },

-  { 0x0700, 0xfdf4, 0x0000 },

-  { 0x0700, 0xfdf6, 0x0000 },

-  { 0x8c00, 0xfe01, 0x4000 },

-  { 0x8700, 0xfdfb, 0x3000 },

-  { 0x8700, 0xfdf9, 0x2000 },

-  { 0x0700, 0xfdf8, 0x0000 },

-  { 0x0700, 0xfdfa, 0x0000 },

-  { 0x9a00, 0xfdfd, 0x2000 },

-  { 0x1700, 0xfdfc, 0x0000 },

-  { 0x0c00, 0xfe00, 0x0000 },

-  { 0x8c00, 0xfe05, 0x3000 },

-  { 0x8c00, 0xfe03, 0x2000 },

-  { 0x0c00, 0xfe02, 0x0000 },

-  { 0x0c00, 0xfe04, 0x0000 },

-  { 0x8c00, 0xfe07, 0x2000 },

-  { 0x0c00, 0xfe06, 0x0000 },

-  { 0x0c00, 0xfe08, 0x0000 },

-  { 0x9900, 0xfe66, 0x7000 },

-  { 0x9500, 0xfe45, 0x6000 },

-  { 0x9600, 0xfe35, 0x5000 },

-  { 0x8c00, 0xfe21, 0x4000 },

-  { 0x8c00, 0xfe0d, 0x3000 },

-  { 0x8c00, 0xfe0b, 0x2000 },

-  { 0x0c00, 0xfe0a, 0x0000 },

-  { 0x0c00, 0xfe0c, 0x0000 },

-  { 0x8c00, 0xfe0f, 0x2000 },

-  { 0x0c00, 0xfe0e, 0x0000 },

-  { 0x0c00, 0xfe20, 0x0000 },

-  { 0x9100, 0xfe31, 0x3000 },

-  { 0x8c00, 0xfe23, 0x2000 },

-  { 0x0c00, 0xfe22, 0x0000 },

-  { 0x1500, 0xfe30, 0x0000 },

-  { 0x9000, 0xfe33, 0x2000 },

-  { 0x1100, 0xfe32, 0x0000 },

-  { 0x1000, 0xfe34, 0x0000 },

-  { 0x9600, 0xfe3d, 0x4000 },

-  { 0x9600, 0xfe39, 0x3000 },

-  { 0x9600, 0xfe37, 0x2000 },

-  { 0x1200, 0xfe36, 0x0000 },

-  { 0x1200, 0xfe38, 0x0000 },

-  { 0x9600, 0xfe3b, 0x2000 },

-  { 0x1200, 0xfe3a, 0x0000 },

-  { 0x1200, 0xfe3c, 0x0000 },

-  { 0x9600, 0xfe41, 0x3000 },

-  { 0x9600, 0xfe3f, 0x2000 },

-  { 0x1200, 0xfe3e, 0x0000 },

-  { 0x1200, 0xfe40, 0x0000 },

-  { 0x9600, 0xfe43, 0x2000 },

-  { 0x1200, 0xfe42, 0x0000 },

-  { 0x1200, 0xfe44, 0x0000 },

-  { 0x9500, 0xfe56, 0x5000 },

-  { 0x9000, 0xfe4d, 0x4000 },

-  { 0x9500, 0xfe49, 0x3000 },

-  { 0x9600, 0xfe47, 0x2000 },

-  { 0x1500, 0xfe46, 0x0000 },

-  { 0x1200, 0xfe48, 0x0000 },

-  { 0x9500, 0xfe4b, 0x2000 },

-  { 0x1500, 0xfe4a, 0x0000 },

-  { 0x1500, 0xfe4c, 0x0000 },

-  { 0x9500, 0xfe51, 0x3000 },

-  { 0x9000, 0xfe4f, 0x2000 },

-  { 0x1000, 0xfe4e, 0x0000 },

-  { 0x1500, 0xfe50, 0x0000 },

-  { 0x9500, 0xfe54, 0x2000 },

-  { 0x1500, 0xfe52, 0x0000 },

-  { 0x1500, 0xfe55, 0x0000 },

-  { 0x9200, 0xfe5e, 0x4000 },

-  { 0x9200, 0xfe5a, 0x3000 },

-  { 0x9100, 0xfe58, 0x2000 },

-  { 0x1500, 0xfe57, 0x0000 },

-  { 0x1600, 0xfe59, 0x0000 },

-  { 0x9200, 0xfe5c, 0x2000 },

-  { 0x1600, 0xfe5b, 0x0000 },

-  { 0x1600, 0xfe5d, 0x0000 },

-  { 0x9900, 0xfe62, 0x3000 },

-  { 0x9500, 0xfe60, 0x2000 },

-  { 0x1500, 0xfe5f, 0x0000 },

-  { 0x1500, 0xfe61, 0x0000 },

-  { 0x9900, 0xfe64, 0x2000 },

-  { 0x1100, 0xfe63, 0x0000 },

-  { 0x1900, 0xfe65, 0x0000 },

-  { 0x8700, 0xfe8c, 0x6000 },

-  { 0x8700, 0xfe7c, 0x5000 },

-  { 0x8700, 0xfe73, 0x4000 },

-  { 0x9500, 0xfe6b, 0x3000 },

-  { 0x9700, 0xfe69, 0x2000 },

-  { 0x1500, 0xfe68, 0x0000 },

-  { 0x1500, 0xfe6a, 0x0000 },

-  { 0x8700, 0xfe71, 0x2000 },

-  { 0x0700, 0xfe70, 0x0000 },

-  { 0x0700, 0xfe72, 0x0000 },

-  { 0x8700, 0xfe78, 0x3000 },

-  { 0x8700, 0xfe76, 0x2000 },

-  { 0x0700, 0xfe74, 0x0000 },

-  { 0x0700, 0xfe77, 0x0000 },

-  { 0x8700, 0xfe7a, 0x2000 },

-  { 0x0700, 0xfe79, 0x0000 },

-  { 0x0700, 0xfe7b, 0x0000 },

-  { 0x8700, 0xfe84, 0x4000 },

-  { 0x8700, 0xfe80, 0x3000 },

-  { 0x8700, 0xfe7e, 0x2000 },

-  { 0x0700, 0xfe7d, 0x0000 },

-  { 0x0700, 0xfe7f, 0x0000 },

-  { 0x8700, 0xfe82, 0x2000 },

-  { 0x0700, 0xfe81, 0x0000 },

-  { 0x0700, 0xfe83, 0x0000 },

-  { 0x8700, 0xfe88, 0x3000 },

-  { 0x8700, 0xfe86, 0x2000 },

-  { 0x0700, 0xfe85, 0x0000 },

-  { 0x0700, 0xfe87, 0x0000 },

-  { 0x8700, 0xfe8a, 0x2000 },

-  { 0x0700, 0xfe89, 0x0000 },

-  { 0x0700, 0xfe8b, 0x0000 },

-  { 0x8700, 0xfe9c, 0x5000 },

-  { 0x8700, 0xfe94, 0x4000 },

-  { 0x8700, 0xfe90, 0x3000 },

-  { 0x8700, 0xfe8e, 0x2000 },

-  { 0x0700, 0xfe8d, 0x0000 },

-  { 0x0700, 0xfe8f, 0x0000 },

-  { 0x8700, 0xfe92, 0x2000 },

-  { 0x0700, 0xfe91, 0x0000 },

-  { 0x0700, 0xfe93, 0x0000 },

-  { 0x8700, 0xfe98, 0x3000 },

-  { 0x8700, 0xfe96, 0x2000 },

-  { 0x0700, 0xfe95, 0x0000 },

-  { 0x0700, 0xfe97, 0x0000 },

-  { 0x8700, 0xfe9a, 0x2000 },

-  { 0x0700, 0xfe99, 0x0000 },

-  { 0x0700, 0xfe9b, 0x0000 },

-  { 0x8700, 0xfea4, 0x4000 },

-  { 0x8700, 0xfea0, 0x3000 },

-  { 0x8700, 0xfe9e, 0x2000 },

-  { 0x0700, 0xfe9d, 0x0000 },

-  { 0x0700, 0xfe9f, 0x0000 },

-  { 0x8700, 0xfea2, 0x2000 },

-  { 0x0700, 0xfea1, 0x0000 },

-  { 0x0700, 0xfea3, 0x0000 },

-  { 0x8700, 0xfea8, 0x3000 },

-  { 0x8700, 0xfea6, 0x2000 },

-  { 0x0700, 0xfea5, 0x0000 },

-  { 0x0700, 0xfea7, 0x0000 },

-  { 0x8700, 0xfeaa, 0x2000 },

-  { 0x0700, 0xfea9, 0x0000 },

-  { 0x0700, 0xfeab, 0x0000 },

-  { 0x8700, 0xffaf, 0x9000 },

-  { 0x8900, 0xff2f, 0x8020 },

-  { 0x8700, 0xfeec, 0x7000 },

-  { 0x8700, 0xfecc, 0x6000 },

-  { 0x8700, 0xfebc, 0x5000 },

-  { 0x8700, 0xfeb4, 0x4000 },

-  { 0x8700, 0xfeb0, 0x3000 },

-  { 0x8700, 0xfeae, 0x2000 },

-  { 0x0700, 0xfead, 0x0000 },

-  { 0x0700, 0xfeaf, 0x0000 },

-  { 0x8700, 0xfeb2, 0x2000 },

-  { 0x0700, 0xfeb1, 0x0000 },

-  { 0x0700, 0xfeb3, 0x0000 },

-  { 0x8700, 0xfeb8, 0x3000 },

-  { 0x8700, 0xfeb6, 0x2000 },

-  { 0x0700, 0xfeb5, 0x0000 },

-  { 0x0700, 0xfeb7, 0x0000 },

-  { 0x8700, 0xfeba, 0x2000 },

-  { 0x0700, 0xfeb9, 0x0000 },

-  { 0x0700, 0xfebb, 0x0000 },

-  { 0x8700, 0xfec4, 0x4000 },

-  { 0x8700, 0xfec0, 0x3000 },

-  { 0x8700, 0xfebe, 0x2000 },

-  { 0x0700, 0xfebd, 0x0000 },

-  { 0x0700, 0xfebf, 0x0000 },

-  { 0x8700, 0xfec2, 0x2000 },

-  { 0x0700, 0xfec1, 0x0000 },

-  { 0x0700, 0xfec3, 0x0000 },

-  { 0x8700, 0xfec8, 0x3000 },

-  { 0x8700, 0xfec6, 0x2000 },

-  { 0x0700, 0xfec5, 0x0000 },

-  { 0x0700, 0xfec7, 0x0000 },

-  { 0x8700, 0xfeca, 0x2000 },

-  { 0x0700, 0xfec9, 0x0000 },

-  { 0x0700, 0xfecb, 0x0000 },

-  { 0x8700, 0xfedc, 0x5000 },

-  { 0x8700, 0xfed4, 0x4000 },

-  { 0x8700, 0xfed0, 0x3000 },

-  { 0x8700, 0xfece, 0x2000 },

-  { 0x0700, 0xfecd, 0x0000 },

-  { 0x0700, 0xfecf, 0x0000 },

-  { 0x8700, 0xfed2, 0x2000 },

-  { 0x0700, 0xfed1, 0x0000 },

-  { 0x0700, 0xfed3, 0x0000 },

-  { 0x8700, 0xfed8, 0x3000 },

-  { 0x8700, 0xfed6, 0x2000 },

-  { 0x0700, 0xfed5, 0x0000 },

-  { 0x0700, 0xfed7, 0x0000 },

-  { 0x8700, 0xfeda, 0x2000 },

-  { 0x0700, 0xfed9, 0x0000 },

-  { 0x0700, 0xfedb, 0x0000 },

-  { 0x8700, 0xfee4, 0x4000 },

-  { 0x8700, 0xfee0, 0x3000 },

-  { 0x8700, 0xfede, 0x2000 },

-  { 0x0700, 0xfedd, 0x0000 },

-  { 0x0700, 0xfedf, 0x0000 },

-  { 0x8700, 0xfee2, 0x2000 },

-  { 0x0700, 0xfee1, 0x0000 },

-  { 0x0700, 0xfee3, 0x0000 },

-  { 0x8700, 0xfee8, 0x3000 },

-  { 0x8700, 0xfee6, 0x2000 },

-  { 0x0700, 0xfee5, 0x0000 },

-  { 0x0700, 0xfee7, 0x0000 },

-  { 0x8700, 0xfeea, 0x2000 },

-  { 0x0700, 0xfee9, 0x0000 },

-  { 0x0700, 0xfeeb, 0x0000 },

-  { 0x9500, 0xff0f, 0x6000 },

-  { 0x8700, 0xfefc, 0x5000 },

-  { 0x8700, 0xfef4, 0x4000 },

-  { 0x8700, 0xfef0, 0x3000 },

-  { 0x8700, 0xfeee, 0x2000 },

-  { 0x0700, 0xfeed, 0x0000 },

-  { 0x0700, 0xfeef, 0x0000 },

-  { 0x8700, 0xfef2, 0x2000 },

-  { 0x0700, 0xfef1, 0x0000 },

-  { 0x0700, 0xfef3, 0x0000 },

-  { 0x8700, 0xfef8, 0x3000 },

-  { 0x8700, 0xfef6, 0x2000 },

-  { 0x0700, 0xfef5, 0x0000 },

-  { 0x0700, 0xfef7, 0x0000 },

-  { 0x8700, 0xfefa, 0x2000 },

-  { 0x0700, 0xfef9, 0x0000 },

-  { 0x0700, 0xfefb, 0x0000 },

-  { 0x9500, 0xff07, 0x4000 },

-  { 0x9500, 0xff03, 0x3000 },

-  { 0x9500, 0xff01, 0x2000 },

-  { 0x0100, 0xfeff, 0x0000 },

-  { 0x1500, 0xff02, 0x0000 },

-  { 0x9500, 0xff05, 0x2000 },

-  { 0x1700, 0xff04, 0x0000 },

-  { 0x1500, 0xff06, 0x0000 },

-  { 0x9900, 0xff0b, 0x3000 },

-  { 0x9200, 0xff09, 0x2000 },

-  { 0x1600, 0xff08, 0x0000 },

-  { 0x1500, 0xff0a, 0x0000 },

-  { 0x9100, 0xff0d, 0x2000 },

-  { 0x1500, 0xff0c, 0x0000 },

-  { 0x1500, 0xff0e, 0x0000 },

-  { 0x9500, 0xff1f, 0x5000 },

-  { 0x8d00, 0xff17, 0x4000 },

-  { 0x8d00, 0xff13, 0x3000 },

-  { 0x8d00, 0xff11, 0x2000 },

-  { 0x0d00, 0xff10, 0x0000 },

-  { 0x0d00, 0xff12, 0x0000 },

-  { 0x8d00, 0xff15, 0x2000 },

-  { 0x0d00, 0xff14, 0x0000 },

-  { 0x0d00, 0xff16, 0x0000 },

-  { 0x9500, 0xff1b, 0x3000 },

-  { 0x8d00, 0xff19, 0x2000 },

-  { 0x0d00, 0xff18, 0x0000 },

-  { 0x1500, 0xff1a, 0x0000 },

-  { 0x9900, 0xff1d, 0x2000 },

-  { 0x1900, 0xff1c, 0x0000 },

-  { 0x1900, 0xff1e, 0x0000 },

-  { 0x8900, 0xff27, 0x4020 },

-  { 0x8900, 0xff23, 0x3020 },

-  { 0x8900, 0xff21, 0x2020 },

-  { 0x1500, 0xff20, 0x0000 },

-  { 0x0900, 0xff22, 0x0020 },

-  { 0x8900, 0xff25, 0x2020 },

-  { 0x0900, 0xff24, 0x0020 },

-  { 0x0900, 0xff26, 0x0020 },

-  { 0x8900, 0xff2b, 0x3020 },

-  { 0x8900, 0xff29, 0x2020 },

-  { 0x0900, 0xff28, 0x0020 },

-  { 0x0900, 0xff2a, 0x0020 },

-  { 0x8900, 0xff2d, 0x2020 },

-  { 0x0900, 0xff2c, 0x0020 },

-  { 0x0900, 0xff2e, 0x0020 },

-  { 0x8700, 0xff6f, 0x7000 },

-  { 0x8500, 0xff4f, 0x6fe0 },

-  { 0x9000, 0xff3f, 0x5000 },

-  { 0x8900, 0xff37, 0x4020 },

-  { 0x8900, 0xff33, 0x3020 },

-  { 0x8900, 0xff31, 0x2020 },

-  { 0x0900, 0xff30, 0x0020 },

-  { 0x0900, 0xff32, 0x0020 },

-  { 0x8900, 0xff35, 0x2020 },

-  { 0x0900, 0xff34, 0x0020 },

-  { 0x0900, 0xff36, 0x0020 },

-  { 0x9600, 0xff3b, 0x3000 },

-  { 0x8900, 0xff39, 0x2020 },

-  { 0x0900, 0xff38, 0x0020 },

-  { 0x0900, 0xff3a, 0x0020 },

-  { 0x9200, 0xff3d, 0x2000 },

-  { 0x1500, 0xff3c, 0x0000 },

-  { 0x1800, 0xff3e, 0x0000 },

-  { 0x8500, 0xff47, 0x4fe0 },

-  { 0x8500, 0xff43, 0x3fe0 },

-  { 0x8500, 0xff41, 0x2fe0 },

-  { 0x1800, 0xff40, 0x0000 },

-  { 0x0500, 0xff42, 0x0fe0 },

-  { 0x8500, 0xff45, 0x2fe0 },

-  { 0x0500, 0xff44, 0x0fe0 },

-  { 0x0500, 0xff46, 0x0fe0 },

-  { 0x8500, 0xff4b, 0x3fe0 },

-  { 0x8500, 0xff49, 0x2fe0 },

-  { 0x0500, 0xff48, 0x0fe0 },

-  { 0x0500, 0xff4a, 0x0fe0 },

-  { 0x8500, 0xff4d, 0x2fe0 },

-  { 0x0500, 0xff4c, 0x0fe0 },

-  { 0x0500, 0xff4e, 0x0fe0 },

-  { 0x9600, 0xff5f, 0x5000 },

-  { 0x8500, 0xff57, 0x4fe0 },

-  { 0x8500, 0xff53, 0x3fe0 },

-  { 0x8500, 0xff51, 0x2fe0 },

-  { 0x0500, 0xff50, 0x0fe0 },

-  { 0x0500, 0xff52, 0x0fe0 },

-  { 0x8500, 0xff55, 0x2fe0 },

-  { 0x0500, 0xff54, 0x0fe0 },

-  { 0x0500, 0xff56, 0x0fe0 },

-  { 0x9600, 0xff5b, 0x3000 },

-  { 0x8500, 0xff59, 0x2fe0 },

-  { 0x0500, 0xff58, 0x0fe0 },

-  { 0x0500, 0xff5a, 0x0fe0 },

-  { 0x9200, 0xff5d, 0x2000 },

-  { 0x1900, 0xff5c, 0x0000 },

-  { 0x1900, 0xff5e, 0x0000 },

-  { 0x8700, 0xff67, 0x4000 },

-  { 0x9200, 0xff63, 0x3000 },

-  { 0x9500, 0xff61, 0x2000 },

-  { 0x1200, 0xff60, 0x0000 },

-  { 0x1600, 0xff62, 0x0000 },

-  { 0x9000, 0xff65, 0x2000 },

-  { 0x1500, 0xff64, 0x0000 },

-  { 0x0700, 0xff66, 0x0000 },

-  { 0x8700, 0xff6b, 0x3000 },

-  { 0x8700, 0xff69, 0x2000 },

-  { 0x0700, 0xff68, 0x0000 },

-  { 0x0700, 0xff6a, 0x0000 },

-  { 0x8700, 0xff6d, 0x2000 },

-  { 0x0700, 0xff6c, 0x0000 },

-  { 0x0700, 0xff6e, 0x0000 },

-  { 0x8700, 0xff8f, 0x6000 },

-  { 0x8700, 0xff7f, 0x5000 },

-  { 0x8700, 0xff77, 0x4000 },

-  { 0x8700, 0xff73, 0x3000 },

-  { 0x8700, 0xff71, 0x2000 },

-  { 0x0600, 0xff70, 0x0000 },

-  { 0x0700, 0xff72, 0x0000 },

-  { 0x8700, 0xff75, 0x2000 },

-  { 0x0700, 0xff74, 0x0000 },

-  { 0x0700, 0xff76, 0x0000 },

-  { 0x8700, 0xff7b, 0x3000 },

-  { 0x8700, 0xff79, 0x2000 },

-  { 0x0700, 0xff78, 0x0000 },

-  { 0x0700, 0xff7a, 0x0000 },

-  { 0x8700, 0xff7d, 0x2000 },

-  { 0x0700, 0xff7c, 0x0000 },

-  { 0x0700, 0xff7e, 0x0000 },

-  { 0x8700, 0xff87, 0x4000 },

-  { 0x8700, 0xff83, 0x3000 },

-  { 0x8700, 0xff81, 0x2000 },

-  { 0x0700, 0xff80, 0x0000 },

-  { 0x0700, 0xff82, 0x0000 },

-  { 0x8700, 0xff85, 0x2000 },

-  { 0x0700, 0xff84, 0x0000 },

-  { 0x0700, 0xff86, 0x0000 },

-  { 0x8700, 0xff8b, 0x3000 },

-  { 0x8700, 0xff89, 0x2000 },

-  { 0x0700, 0xff88, 0x0000 },

-  { 0x0700, 0xff8a, 0x0000 },

-  { 0x8700, 0xff8d, 0x2000 },

-  { 0x0700, 0xff8c, 0x0000 },

-  { 0x0700, 0xff8e, 0x0000 },

-  { 0x8600, 0xff9f, 0x5000 },

-  { 0x8700, 0xff97, 0x4000 },

-  { 0x8700, 0xff93, 0x3000 },

-  { 0x8700, 0xff91, 0x2000 },

-  { 0x0700, 0xff90, 0x0000 },

-  { 0x0700, 0xff92, 0x0000 },

-  { 0x8700, 0xff95, 0x2000 },

-  { 0x0700, 0xff94, 0x0000 },

-  { 0x0700, 0xff96, 0x0000 },

-  { 0x8700, 0xff9b, 0x3000 },

-  { 0x8700, 0xff99, 0x2000 },

-  { 0x0700, 0xff98, 0x0000 },

-  { 0x0700, 0xff9a, 0x0000 },

-  { 0x8700, 0xff9d, 0x2000 },

-  { 0x0700, 0xff9c, 0x0000 },

-  { 0x0600, 0xff9e, 0x0000 },

-  { 0x8700, 0xffa7, 0x4000 },

-  { 0x8700, 0xffa3, 0x3000 },

-  { 0x8700, 0xffa1, 0x2000 },

-  { 0x0700, 0xffa0, 0x0000 },

-  { 0x0700, 0xffa2, 0x0000 },

-  { 0x8700, 0xffa5, 0x2000 },

-  { 0x0700, 0xffa4, 0x0000 },

-  { 0x0700, 0xffa6, 0x0000 },

-  { 0x8700, 0xffab, 0x3000 },

-  { 0x8700, 0xffa9, 0x2000 },

-  { 0x0700, 0xffa8, 0x0000 },

-  { 0x0700, 0xffaa, 0x0000 },

-  { 0x8700, 0xffad, 0x2000 },

-  { 0x0700, 0xffac, 0x0000 },

-  { 0x0700, 0xffae, 0x0000 },

-  { 0x8701, 0x004c, 0x8000 },

-  { 0x8701, 0x0008, 0x7000 },

-  { 0x8700, 0xffd6, 0x6000 },

-  { 0x8700, 0xffc2, 0x5000 },

-  { 0x8700, 0xffb7, 0x4000 },

-  { 0x8700, 0xffb3, 0x3000 },

-  { 0x8700, 0xffb1, 0x2000 },

-  { 0x0700, 0xffb0, 0x0000 },

-  { 0x0700, 0xffb2, 0x0000 },

-  { 0x8700, 0xffb5, 0x2000 },

-  { 0x0700, 0xffb4, 0x0000 },

-  { 0x0700, 0xffb6, 0x0000 },

-  { 0x8700, 0xffbb, 0x3000 },

-  { 0x8700, 0xffb9, 0x2000 },

-  { 0x0700, 0xffb8, 0x0000 },

-  { 0x0700, 0xffba, 0x0000 },

-  { 0x8700, 0xffbd, 0x2000 },

-  { 0x0700, 0xffbc, 0x0000 },

-  { 0x0700, 0xffbe, 0x0000 },

-  { 0x8700, 0xffcc, 0x4000 },

-  { 0x8700, 0xffc6, 0x3000 },

-  { 0x8700, 0xffc4, 0x2000 },

-  { 0x0700, 0xffc3, 0x0000 },

-  { 0x0700, 0xffc5, 0x0000 },

-  { 0x8700, 0xffca, 0x2000 },

-  { 0x0700, 0xffc7, 0x0000 },

-  { 0x0700, 0xffcb, 0x0000 },

-  { 0x8700, 0xffd2, 0x3000 },

-  { 0x8700, 0xffce, 0x2000 },

-  { 0x0700, 0xffcd, 0x0000 },

-  { 0x0700, 0xffcf, 0x0000 },

-  { 0x8700, 0xffd4, 0x2000 },

-  { 0x0700, 0xffd3, 0x0000 },

-  { 0x0700, 0xffd5, 0x0000 },

-  { 0x9900, 0xffec, 0x5000 },

-  { 0x9800, 0xffe3, 0x4000 },

-  { 0x8700, 0xffdc, 0x3000 },

-  { 0x8700, 0xffda, 0x2000 },

-  { 0x0700, 0xffd7, 0x0000 },

-  { 0x0700, 0xffdb, 0x0000 },

-  { 0x9700, 0xffe1, 0x2000 },

-  { 0x1700, 0xffe0, 0x0000 },

-  { 0x1900, 0xffe2, 0x0000 },

-  { 0x9a00, 0xffe8, 0x3000 },

-  { 0x9700, 0xffe5, 0x2000 },

-  { 0x1a00, 0xffe4, 0x0000 },

-  { 0x1700, 0xffe6, 0x0000 },

-  { 0x9900, 0xffea, 0x2000 },

-  { 0x1900, 0xffe9, 0x0000 },

-  { 0x1900, 0xffeb, 0x0000 },

-  { 0x8701, 0x0000, 0x4000 },

-  { 0x8100, 0xfffa, 0x3000 },

-  { 0x9a00, 0xffee, 0x2000 },

-  { 0x1a00, 0xffed, 0x0000 },

-  { 0x0100, 0xfff9, 0x0000 },

-  { 0x9a00, 0xfffc, 0x2000 },

-  { 0x0100, 0xfffb, 0x0000 },

-  { 0x1a00, 0xfffd, 0x0000 },

-  { 0x8701, 0x0004, 0x3000 },

-  { 0x8701, 0x0002, 0x2000 },

-  { 0x0701, 0x0001, 0x0000 },

-  { 0x0701, 0x0003, 0x0000 },

-  { 0x8701, 0x0006, 0x2000 },

-  { 0x0701, 0x0005, 0x0000 },

-  { 0x0701, 0x0007, 0x0000 },

-  { 0x8701, 0x002a, 0x6000 },

-  { 0x8701, 0x0019, 0x5000 },

-  { 0x8701, 0x0011, 0x4000 },

-  { 0x8701, 0x000d, 0x3000 },

-  { 0x8701, 0x000a, 0x2000 },

-  { 0x0701, 0x0009, 0x0000 },

-  { 0x0701, 0x000b, 0x0000 },

-  { 0x8701, 0x000f, 0x2000 },

-  { 0x0701, 0x000e, 0x0000 },

-  { 0x0701, 0x0010, 0x0000 },

-  { 0x8701, 0x0015, 0x3000 },

-  { 0x8701, 0x0013, 0x2000 },

-  { 0x0701, 0x0012, 0x0000 },

-  { 0x0701, 0x0014, 0x0000 },

-  { 0x8701, 0x0017, 0x2000 },

-  { 0x0701, 0x0016, 0x0000 },

-  { 0x0701, 0x0018, 0x0000 },

-  { 0x8701, 0x0021, 0x4000 },

-  { 0x8701, 0x001d, 0x3000 },

-  { 0x8701, 0x001b, 0x2000 },

-  { 0x0701, 0x001a, 0x0000 },

-  { 0x0701, 0x001c, 0x0000 },

-  { 0x8701, 0x001f, 0x2000 },

-  { 0x0701, 0x001e, 0x0000 },

-  { 0x0701, 0x0020, 0x0000 },

-  { 0x8701, 0x0025, 0x3000 },

-  { 0x8701, 0x0023, 0x2000 },

-  { 0x0701, 0x0022, 0x0000 },

-  { 0x0701, 0x0024, 0x0000 },

-  { 0x8701, 0x0028, 0x2000 },

-  { 0x0701, 0x0026, 0x0000 },

-  { 0x0701, 0x0029, 0x0000 },

-  { 0x8701, 0x003a, 0x5000 },

-  { 0x8701, 0x0032, 0x4000 },

-  { 0x8701, 0x002e, 0x3000 },

-  { 0x8701, 0x002c, 0x2000 },

-  { 0x0701, 0x002b, 0x0000 },

-  { 0x0701, 0x002d, 0x0000 },

-  { 0x8701, 0x0030, 0x2000 },

-  { 0x0701, 0x002f, 0x0000 },

-  { 0x0701, 0x0031, 0x0000 },

-  { 0x8701, 0x0036, 0x3000 },

-  { 0x8701, 0x0034, 0x2000 },

-  { 0x0701, 0x0033, 0x0000 },

-  { 0x0701, 0x0035, 0x0000 },

-  { 0x8701, 0x0038, 0x2000 },

-  { 0x0701, 0x0037, 0x0000 },

-  { 0x0701, 0x0039, 0x0000 },

-  { 0x8701, 0x0044, 0x4000 },

-  { 0x8701, 0x0040, 0x3000 },

-  { 0x8701, 0x003d, 0x2000 },

-  { 0x0701, 0x003c, 0x0000 },

-  { 0x0701, 0x003f, 0x0000 },

-  { 0x8701, 0x0042, 0x2000 },

-  { 0x0701, 0x0041, 0x0000 },

-  { 0x0701, 0x0043, 0x0000 },

-  { 0x8701, 0x0048, 0x3000 },

-  { 0x8701, 0x0046, 0x2000 },

-  { 0x0701, 0x0045, 0x0000 },

-  { 0x0701, 0x0047, 0x0000 },

-  { 0x8701, 0x004a, 0x2000 },

-  { 0x0701, 0x0049, 0x0000 },

-  { 0x0701, 0x004b, 0x0000 },

-  { 0x8701, 0x00b0, 0x7000 },

-  { 0x8701, 0x0090, 0x6000 },

-  { 0x8701, 0x0080, 0x5000 },

-  { 0x8701, 0x0056, 0x4000 },

-  { 0x8701, 0x0052, 0x3000 },

-  { 0x8701, 0x0050, 0x2000 },

-  { 0x0701, 0x004d, 0x0000 },

-  { 0x0701, 0x0051, 0x0000 },

-  { 0x8701, 0x0054, 0x2000 },

-  { 0x0701, 0x0053, 0x0000 },

-  { 0x0701, 0x0055, 0x0000 },

-  { 0x8701, 0x005a, 0x3000 },

-  { 0x8701, 0x0058, 0x2000 },

-  { 0x0701, 0x0057, 0x0000 },

-  { 0x0701, 0x0059, 0x0000 },

-  { 0x8701, 0x005c, 0x2000 },

-  { 0x0701, 0x005b, 0x0000 },

-  { 0x0701, 0x005d, 0x0000 },

-  { 0x8701, 0x0088, 0x4000 },

-  { 0x8701, 0x0084, 0x3000 },

-  { 0x8701, 0x0082, 0x2000 },

-  { 0x0701, 0x0081, 0x0000 },

-  { 0x0701, 0x0083, 0x0000 },

-  { 0x8701, 0x0086, 0x2000 },

-  { 0x0701, 0x0085, 0x0000 },

-  { 0x0701, 0x0087, 0x0000 },

-  { 0x8701, 0x008c, 0x3000 },

-  { 0x8701, 0x008a, 0x2000 },

-  { 0x0701, 0x0089, 0x0000 },

-  { 0x0701, 0x008b, 0x0000 },

-  { 0x8701, 0x008e, 0x2000 },

-  { 0x0701, 0x008d, 0x0000 },

-  { 0x0701, 0x008f, 0x0000 },

-  { 0x8701, 0x00a0, 0x5000 },

-  { 0x8701, 0x0098, 0x4000 },

-  { 0x8701, 0x0094, 0x3000 },

-  { 0x8701, 0x0092, 0x2000 },

-  { 0x0701, 0x0091, 0x0000 },

-  { 0x0701, 0x0093, 0x0000 },

-  { 0x8701, 0x0096, 0x2000 },

-  { 0x0701, 0x0095, 0x0000 },

-  { 0x0701, 0x0097, 0x0000 },

-  { 0x8701, 0x009c, 0x3000 },

-  { 0x8701, 0x009a, 0x2000 },

-  { 0x0701, 0x0099, 0x0000 },

-  { 0x0701, 0x009b, 0x0000 },

-  { 0x8701, 0x009e, 0x2000 },

-  { 0x0701, 0x009d, 0x0000 },

-  { 0x0701, 0x009f, 0x0000 },

-  { 0x8701, 0x00a8, 0x4000 },

-  { 0x8701, 0x00a4, 0x3000 },

-  { 0x8701, 0x00a2, 0x2000 },

-  { 0x0701, 0x00a1, 0x0000 },

-  { 0x0701, 0x00a3, 0x0000 },

-  { 0x8701, 0x00a6, 0x2000 },

-  { 0x0701, 0x00a5, 0x0000 },

-  { 0x0701, 0x00a7, 0x0000 },

-  { 0x8701, 0x00ac, 0x3000 },

-  { 0x8701, 0x00aa, 0x2000 },

-  { 0x0701, 0x00a9, 0x0000 },

-  { 0x0701, 0x00ab, 0x0000 },

-  { 0x8701, 0x00ae, 0x2000 },

-  { 0x0701, 0x00ad, 0x0000 },

-  { 0x0701, 0x00af, 0x0000 },

-  { 0x8701, 0x00d0, 0x6000 },

-  { 0x8701, 0x00c0, 0x5000 },

-  { 0x8701, 0x00b8, 0x4000 },

-  { 0x8701, 0x00b4, 0x3000 },

-  { 0x8701, 0x00b2, 0x2000 },

-  { 0x0701, 0x00b1, 0x0000 },

-  { 0x0701, 0x00b3, 0x0000 },

-  { 0x8701, 0x00b6, 0x2000 },

-  { 0x0701, 0x00b5, 0x0000 },

-  { 0x0701, 0x00b7, 0x0000 },

-  { 0x8701, 0x00bc, 0x3000 },

-  { 0x8701, 0x00ba, 0x2000 },

-  { 0x0701, 0x00b9, 0x0000 },

-  { 0x0701, 0x00bb, 0x0000 },

-  { 0x8701, 0x00be, 0x2000 },

-  { 0x0701, 0x00bd, 0x0000 },

-  { 0x0701, 0x00bf, 0x0000 },

-  { 0x8701, 0x00c8, 0x4000 },

-  { 0x8701, 0x00c4, 0x3000 },

-  { 0x8701, 0x00c2, 0x2000 },

-  { 0x0701, 0x00c1, 0x0000 },

-  { 0x0701, 0x00c3, 0x0000 },

-  { 0x8701, 0x00c6, 0x2000 },

-  { 0x0701, 0x00c5, 0x0000 },

-  { 0x0701, 0x00c7, 0x0000 },

-  { 0x8701, 0x00cc, 0x3000 },

-  { 0x8701, 0x00ca, 0x2000 },

-  { 0x0701, 0x00c9, 0x0000 },

-  { 0x0701, 0x00cb, 0x0000 },

-  { 0x8701, 0x00ce, 0x2000 },

-  { 0x0701, 0x00cd, 0x0000 },

-  { 0x0701, 0x00cf, 0x0000 },

-  { 0x8701, 0x00e0, 0x5000 },

-  { 0x8701, 0x00d8, 0x4000 },

-  { 0x8701, 0x00d4, 0x3000 },

-  { 0x8701, 0x00d2, 0x2000 },

-  { 0x0701, 0x00d1, 0x0000 },

-  { 0x0701, 0x00d3, 0x0000 },

-  { 0x8701, 0x00d6, 0x2000 },

-  { 0x0701, 0x00d5, 0x0000 },

-  { 0x0701, 0x00d7, 0x0000 },

-  { 0x8701, 0x00dc, 0x3000 },

-  { 0x8701, 0x00da, 0x2000 },

-  { 0x0701, 0x00d9, 0x0000 },

-  { 0x0701, 0x00db, 0x0000 },

-  { 0x8701, 0x00de, 0x2000 },

-  { 0x0701, 0x00dd, 0x0000 },

-  { 0x0701, 0x00df, 0x0000 },

-  { 0x8701, 0x00e8, 0x4000 },

-  { 0x8701, 0x00e4, 0x3000 },

-  { 0x8701, 0x00e2, 0x2000 },

-  { 0x0701, 0x00e1, 0x0000 },

-  { 0x0701, 0x00e3, 0x0000 },

-  { 0x8701, 0x00e6, 0x2000 },

-  { 0x0701, 0x00e5, 0x0000 },

-  { 0x0701, 0x00e7, 0x0000 },

-  { 0x8701, 0x00ec, 0x3000 },

-  { 0x8701, 0x00ea, 0x2000 },

-  { 0x0701, 0x00e9, 0x0000 },

-  { 0x0701, 0x00eb, 0x0000 },

-  { 0x8701, 0x00ee, 0x2000 },

-  { 0x0701, 0x00ed, 0x0000 },

-  { 0x0701, 0x00ef, 0x0000 },

-  { 0x8501, 0xd459, 0xb000 },

-  { 0x9a01, 0xd080, 0xa000 },

-  { 0x8701, 0x045f, 0x9000 },

-  { 0x8701, 0x0349, 0x8000 },

-  { 0x9a01, 0x013c, 0x7000 },

-  { 0x8f01, 0x0119, 0x6000 },

-  { 0x8f01, 0x0109, 0x5000 },

-  { 0x8701, 0x00f8, 0x4000 },

-  { 0x8701, 0x00f4, 0x3000 },

-  { 0x8701, 0x00f2, 0x2000 },

-  { 0x0701, 0x00f1, 0x0000 },

-  { 0x0701, 0x00f3, 0x0000 },

-  { 0x8701, 0x00f6, 0x2000 },

-  { 0x0701, 0x00f5, 0x0000 },

-  { 0x0701, 0x00f7, 0x0000 },

-  { 0x9501, 0x0101, 0x3000 },

-  { 0x8701, 0x00fa, 0x2000 },

-  { 0x0701, 0x00f9, 0x0000 },

-  { 0x1501, 0x0100, 0x0000 },

-  { 0x8f01, 0x0107, 0x2000 },

-  { 0x1a01, 0x0102, 0x0000 },

-  { 0x0f01, 0x0108, 0x0000 },

-  { 0x8f01, 0x0111, 0x4000 },

-  { 0x8f01, 0x010d, 0x3000 },

-  { 0x8f01, 0x010b, 0x2000 },

-  { 0x0f01, 0x010a, 0x0000 },

-  { 0x0f01, 0x010c, 0x0000 },

-  { 0x8f01, 0x010f, 0x2000 },

-  { 0x0f01, 0x010e, 0x0000 },

-  { 0x0f01, 0x0110, 0x0000 },

-  { 0x8f01, 0x0115, 0x3000 },

-  { 0x8f01, 0x0113, 0x2000 },

-  { 0x0f01, 0x0112, 0x0000 },

-  { 0x0f01, 0x0114, 0x0000 },

-  { 0x8f01, 0x0117, 0x2000 },

-  { 0x0f01, 0x0116, 0x0000 },

-  { 0x0f01, 0x0118, 0x0000 },

-  { 0x8f01, 0x0129, 0x5000 },

-  { 0x8f01, 0x0121, 0x4000 },

-  { 0x8f01, 0x011d, 0x3000 },

-  { 0x8f01, 0x011b, 0x2000 },

-  { 0x0f01, 0x011a, 0x0000 },

-  { 0x0f01, 0x011c, 0x0000 },

-  { 0x8f01, 0x011f, 0x2000 },

-  { 0x0f01, 0x011e, 0x0000 },

-  { 0x0f01, 0x0120, 0x0000 },

-  { 0x8f01, 0x0125, 0x3000 },

-  { 0x8f01, 0x0123, 0x2000 },

-  { 0x0f01, 0x0122, 0x0000 },

-  { 0x0f01, 0x0124, 0x0000 },

-  { 0x8f01, 0x0127, 0x2000 },

-  { 0x0f01, 0x0126, 0x0000 },

-  { 0x0f01, 0x0128, 0x0000 },

-  { 0x8f01, 0x0131, 0x4000 },

-  { 0x8f01, 0x012d, 0x3000 },

-  { 0x8f01, 0x012b, 0x2000 },

-  { 0x0f01, 0x012a, 0x0000 },

-  { 0x0f01, 0x012c, 0x0000 },

-  { 0x8f01, 0x012f, 0x2000 },

-  { 0x0f01, 0x012e, 0x0000 },

-  { 0x0f01, 0x0130, 0x0000 },

-  { 0x9a01, 0x0138, 0x3000 },

-  { 0x8f01, 0x0133, 0x2000 },

-  { 0x0f01, 0x0132, 0x0000 },

-  { 0x1a01, 0x0137, 0x0000 },

-  { 0x9a01, 0x013a, 0x2000 },

-  { 0x1a01, 0x0139, 0x0000 },

-  { 0x1a01, 0x013b, 0x0000 },

-  { 0x8701, 0x031c, 0x6000 },

-  { 0x8701, 0x030c, 0x5000 },

-  { 0x8701, 0x0304, 0x4000 },

-  { 0x8701, 0x0300, 0x3000 },

-  { 0x9a01, 0x013e, 0x2000 },

-  { 0x1a01, 0x013d, 0x0000 },

-  { 0x1a01, 0x013f, 0x0000 },

-  { 0x8701, 0x0302, 0x2000 },

-  { 0x0701, 0x0301, 0x0000 },

-  { 0x0701, 0x0303, 0x0000 },

-  { 0x8701, 0x0308, 0x3000 },

-  { 0x8701, 0x0306, 0x2000 },

-  { 0x0701, 0x0305, 0x0000 },

-  { 0x0701, 0x0307, 0x0000 },

-  { 0x8701, 0x030a, 0x2000 },

-  { 0x0701, 0x0309, 0x0000 },

-  { 0x0701, 0x030b, 0x0000 },

-  { 0x8701, 0x0314, 0x4000 },

-  { 0x8701, 0x0310, 0x3000 },

-  { 0x8701, 0x030e, 0x2000 },

-  { 0x0701, 0x030d, 0x0000 },

-  { 0x0701, 0x030f, 0x0000 },

-  { 0x8701, 0x0312, 0x2000 },

-  { 0x0701, 0x0311, 0x0000 },

-  { 0x0701, 0x0313, 0x0000 },

-  { 0x8701, 0x0318, 0x3000 },

-  { 0x8701, 0x0316, 0x2000 },

-  { 0x0701, 0x0315, 0x0000 },

-  { 0x0701, 0x0317, 0x0000 },

-  { 0x8701, 0x031a, 0x2000 },

-  { 0x0701, 0x0319, 0x0000 },

-  { 0x0701, 0x031b, 0x0000 },

-  { 0x8701, 0x0339, 0x5000 },

-  { 0x8701, 0x0331, 0x4000 },

-  { 0x8f01, 0x0321, 0x3000 },

-  { 0x8701, 0x031e, 0x2000 },

-  { 0x0701, 0x031d, 0x0000 },

-  { 0x0f01, 0x0320, 0x0000 },

-  { 0x8f01, 0x0323, 0x2000 },

-  { 0x0f01, 0x0322, 0x0000 },

-  { 0x0701, 0x0330, 0x0000 },

-  { 0x8701, 0x0335, 0x3000 },

-  { 0x8701, 0x0333, 0x2000 },

-  { 0x0701, 0x0332, 0x0000 },

-  { 0x0701, 0x0334, 0x0000 },

-  { 0x8701, 0x0337, 0x2000 },

-  { 0x0701, 0x0336, 0x0000 },

-  { 0x0701, 0x0338, 0x0000 },

-  { 0x8701, 0x0341, 0x4000 },

-  { 0x8701, 0x033d, 0x3000 },

-  { 0x8701, 0x033b, 0x2000 },

-  { 0x0701, 0x033a, 0x0000 },

-  { 0x0701, 0x033c, 0x0000 },

-  { 0x8701, 0x033f, 0x2000 },

-  { 0x0701, 0x033e, 0x0000 },

-  { 0x0701, 0x0340, 0x0000 },

-  { 0x8701, 0x0345, 0x3000 },

-  { 0x8701, 0x0343, 0x2000 },

-  { 0x0701, 0x0342, 0x0000 },

-  { 0x0701, 0x0344, 0x0000 },

-  { 0x8701, 0x0347, 0x2000 },

-  { 0x0701, 0x0346, 0x0000 },

-  { 0x0701, 0x0348, 0x0000 },

-  { 0x8901, 0x041f, 0x7028 },

-  { 0x9501, 0x039f, 0x6000 },

-  { 0x8701, 0x038e, 0x5000 },

-  { 0x8701, 0x0386, 0x4000 },

-  { 0x8701, 0x0382, 0x3000 },

-  { 0x8701, 0x0380, 0x2000 },

-  { 0x0e01, 0x034a, 0x0000 },

-  { 0x0701, 0x0381, 0x0000 },

-  { 0x8701, 0x0384, 0x2000 },

-  { 0x0701, 0x0383, 0x0000 },

-  { 0x0701, 0x0385, 0x0000 },

-  { 0x8701, 0x038a, 0x3000 },

-  { 0x8701, 0x0388, 0x2000 },

-  { 0x0701, 0x0387, 0x0000 },

-  { 0x0701, 0x0389, 0x0000 },

-  { 0x8701, 0x038c, 0x2000 },

-  { 0x0701, 0x038b, 0x0000 },

-  { 0x0701, 0x038d, 0x0000 },

-  { 0x8701, 0x0396, 0x4000 },

-  { 0x8701, 0x0392, 0x3000 },

-  { 0x8701, 0x0390, 0x2000 },

-  { 0x0701, 0x038f, 0x0000 },

-  { 0x0701, 0x0391, 0x0000 },

-  { 0x8701, 0x0394, 0x2000 },

-  { 0x0701, 0x0393, 0x0000 },

-  { 0x0701, 0x0395, 0x0000 },

-  { 0x8701, 0x039a, 0x3000 },

-  { 0x8701, 0x0398, 0x2000 },

-  { 0x0701, 0x0397, 0x0000 },

-  { 0x0701, 0x0399, 0x0000 },

-  { 0x8701, 0x039c, 0x2000 },

-  { 0x0701, 0x039b, 0x0000 },

-  { 0x0701, 0x039d, 0x0000 },

-  { 0x8901, 0x040f, 0x5028 },

-  { 0x8901, 0x0407, 0x4028 },

-  { 0x8901, 0x0403, 0x3028 },

-  { 0x8901, 0x0401, 0x2028 },

-  { 0x0901, 0x0400, 0x0028 },

-  { 0x0901, 0x0402, 0x0028 },

-  { 0x8901, 0x0405, 0x2028 },

-  { 0x0901, 0x0404, 0x0028 },

-  { 0x0901, 0x0406, 0x0028 },

-  { 0x8901, 0x040b, 0x3028 },

-  { 0x8901, 0x0409, 0x2028 },

-  { 0x0901, 0x0408, 0x0028 },

-  { 0x0901, 0x040a, 0x0028 },

-  { 0x8901, 0x040d, 0x2028 },

-  { 0x0901, 0x040c, 0x0028 },

-  { 0x0901, 0x040e, 0x0028 },

-  { 0x8901, 0x0417, 0x4028 },

-  { 0x8901, 0x0413, 0x3028 },

-  { 0x8901, 0x0411, 0x2028 },

-  { 0x0901, 0x0410, 0x0028 },

-  { 0x0901, 0x0412, 0x0028 },

-  { 0x8901, 0x0415, 0x2028 },

-  { 0x0901, 0x0414, 0x0028 },

-  { 0x0901, 0x0416, 0x0028 },

-  { 0x8901, 0x041b, 0x3028 },

-  { 0x8901, 0x0419, 0x2028 },

-  { 0x0901, 0x0418, 0x0028 },

-  { 0x0901, 0x041a, 0x0028 },

-  { 0x8901, 0x041d, 0x2028 },

-  { 0x0901, 0x041c, 0x0028 },

-  { 0x0901, 0x041e, 0x0028 },

-  { 0x8501, 0x043f, 0x6fd8 },

-  { 0x8501, 0x042f, 0x5fd8 },

-  { 0x8901, 0x0427, 0x4028 },

-  { 0x8901, 0x0423, 0x3028 },

-  { 0x8901, 0x0421, 0x2028 },

-  { 0x0901, 0x0420, 0x0028 },

-  { 0x0901, 0x0422, 0x0028 },

-  { 0x8901, 0x0425, 0x2028 },

-  { 0x0901, 0x0424, 0x0028 },

-  { 0x0901, 0x0426, 0x0028 },

-  { 0x8501, 0x042b, 0x3fd8 },

-  { 0x8501, 0x0429, 0x2fd8 },

-  { 0x0501, 0x0428, 0x0fd8 },

-  { 0x0501, 0x042a, 0x0fd8 },

-  { 0x8501, 0x042d, 0x2fd8 },

-  { 0x0501, 0x042c, 0x0fd8 },

-  { 0x0501, 0x042e, 0x0fd8 },

-  { 0x8501, 0x0437, 0x4fd8 },

-  { 0x8501, 0x0433, 0x3fd8 },

-  { 0x8501, 0x0431, 0x2fd8 },

-  { 0x0501, 0x0430, 0x0fd8 },

-  { 0x0501, 0x0432, 0x0fd8 },

-  { 0x8501, 0x0435, 0x2fd8 },

-  { 0x0501, 0x0434, 0x0fd8 },

-  { 0x0501, 0x0436, 0x0fd8 },

-  { 0x8501, 0x043b, 0x3fd8 },

-  { 0x8501, 0x0439, 0x2fd8 },

-  { 0x0501, 0x0438, 0x0fd8 },

-  { 0x0501, 0x043a, 0x0fd8 },

-  { 0x8501, 0x043d, 0x2fd8 },

-  { 0x0501, 0x043c, 0x0fd8 },

-  { 0x0501, 0x043e, 0x0fd8 },

-  { 0x8501, 0x044f, 0x5fd8 },

-  { 0x8501, 0x0447, 0x4fd8 },

-  { 0x8501, 0x0443, 0x3fd8 },

-  { 0x8501, 0x0441, 0x2fd8 },

-  { 0x0501, 0x0440, 0x0fd8 },

-  { 0x0501, 0x0442, 0x0fd8 },

-  { 0x8501, 0x0445, 0x2fd8 },

-  { 0x0501, 0x0444, 0x0fd8 },

-  { 0x0501, 0x0446, 0x0fd8 },

-  { 0x8501, 0x044b, 0x3fd8 },

-  { 0x8501, 0x0449, 0x2fd8 },

-  { 0x0501, 0x0448, 0x0fd8 },

-  { 0x0501, 0x044a, 0x0fd8 },

-  { 0x8501, 0x044d, 0x2fd8 },

-  { 0x0501, 0x044c, 0x0fd8 },

-  { 0x0501, 0x044e, 0x0fd8 },

-  { 0x8701, 0x0457, 0x4000 },

-  { 0x8701, 0x0453, 0x3000 },

-  { 0x8701, 0x0451, 0x2000 },

-  { 0x0701, 0x0450, 0x0000 },

-  { 0x0701, 0x0452, 0x0000 },

-  { 0x8701, 0x0455, 0x2000 },

-  { 0x0701, 0x0454, 0x0000 },

-  { 0x0701, 0x0456, 0x0000 },

-  { 0x8701, 0x045b, 0x3000 },

-  { 0x8701, 0x0459, 0x2000 },

-  { 0x0701, 0x0458, 0x0000 },

-  { 0x0701, 0x045a, 0x0000 },

-  { 0x8701, 0x045d, 0x2000 },

-  { 0x0701, 0x045c, 0x0000 },

-  { 0x0701, 0x045e, 0x0000 },

-  { 0x9a01, 0xd000, 0x8000 },

-  { 0x8d01, 0x04a1, 0x7000 },

-  { 0x8701, 0x047f, 0x6000 },

-  { 0x8701, 0x046f, 0x5000 },

-  { 0x8701, 0x0467, 0x4000 },

-  { 0x8701, 0x0463, 0x3000 },

-  { 0x8701, 0x0461, 0x2000 },

-  { 0x0701, 0x0460, 0x0000 },

-  { 0x0701, 0x0462, 0x0000 },

-  { 0x8701, 0x0465, 0x2000 },

-  { 0x0701, 0x0464, 0x0000 },

-  { 0x0701, 0x0466, 0x0000 },

-  { 0x8701, 0x046b, 0x3000 },

-  { 0x8701, 0x0469, 0x2000 },

-  { 0x0701, 0x0468, 0x0000 },

-  { 0x0701, 0x046a, 0x0000 },

-  { 0x8701, 0x046d, 0x2000 },

-  { 0x0701, 0x046c, 0x0000 },

-  { 0x0701, 0x046e, 0x0000 },

-  { 0x8701, 0x0477, 0x4000 },

-  { 0x8701, 0x0473, 0x3000 },

-  { 0x8701, 0x0471, 0x2000 },

-  { 0x0701, 0x0470, 0x0000 },

-  { 0x0701, 0x0472, 0x0000 },

-  { 0x8701, 0x0475, 0x2000 },

-  { 0x0701, 0x0474, 0x0000 },

-  { 0x0701, 0x0476, 0x0000 },

-  { 0x8701, 0x047b, 0x3000 },

-  { 0x8701, 0x0479, 0x2000 },

-  { 0x0701, 0x0478, 0x0000 },

-  { 0x0701, 0x047a, 0x0000 },

-  { 0x8701, 0x047d, 0x2000 },

-  { 0x0701, 0x047c, 0x0000 },

-  { 0x0701, 0x047e, 0x0000 },

-  { 0x8701, 0x048f, 0x5000 },

-  { 0x8701, 0x0487, 0x4000 },

-  { 0x8701, 0x0483, 0x3000 },

-  { 0x8701, 0x0481, 0x2000 },

-  { 0x0701, 0x0480, 0x0000 },

-  { 0x0701, 0x0482, 0x0000 },

-  { 0x8701, 0x0485, 0x2000 },

-  { 0x0701, 0x0484, 0x0000 },

-  { 0x0701, 0x0486, 0x0000 },

-  { 0x8701, 0x048b, 0x3000 },

-  { 0x8701, 0x0489, 0x2000 },

-  { 0x0701, 0x0488, 0x0000 },

-  { 0x0701, 0x048a, 0x0000 },

-  { 0x8701, 0x048d, 0x2000 },

-  { 0x0701, 0x048c, 0x0000 },

-  { 0x0701, 0x048e, 0x0000 },

-  { 0x8701, 0x0497, 0x4000 },

-  { 0x8701, 0x0493, 0x3000 },

-  { 0x8701, 0x0491, 0x2000 },

-  { 0x0701, 0x0490, 0x0000 },

-  { 0x0701, 0x0492, 0x0000 },

-  { 0x8701, 0x0495, 0x2000 },

-  { 0x0701, 0x0494, 0x0000 },

-  { 0x0701, 0x0496, 0x0000 },

-  { 0x8701, 0x049b, 0x3000 },

-  { 0x8701, 0x0499, 0x2000 },

-  { 0x0701, 0x0498, 0x0000 },

-  { 0x0701, 0x049a, 0x0000 },

-  { 0x8701, 0x049d, 0x2000 },

-  { 0x0701, 0x049c, 0x0000 },

-  { 0x0d01, 0x04a0, 0x0000 },

-  { 0x8701, 0x081a, 0x6000 },

-  { 0x8701, 0x080a, 0x5000 },

-  { 0x8d01, 0x04a9, 0x4000 },

-  { 0x8d01, 0x04a5, 0x3000 },

-  { 0x8d01, 0x04a3, 0x2000 },

-  { 0x0d01, 0x04a2, 0x0000 },

-  { 0x0d01, 0x04a4, 0x0000 },

-  { 0x8d01, 0x04a7, 0x2000 },

-  { 0x0d01, 0x04a6, 0x0000 },

-  { 0x0d01, 0x04a8, 0x0000 },

-  { 0x8701, 0x0803, 0x3000 },

-  { 0x8701, 0x0801, 0x2000 },

-  { 0x0701, 0x0800, 0x0000 },

-  { 0x0701, 0x0802, 0x0000 },

-  { 0x8701, 0x0805, 0x2000 },

-  { 0x0701, 0x0804, 0x0000 },

-  { 0x0701, 0x0808, 0x0000 },

-  { 0x8701, 0x0812, 0x4000 },

-  { 0x8701, 0x080e, 0x3000 },

-  { 0x8701, 0x080c, 0x2000 },

-  { 0x0701, 0x080b, 0x0000 },

-  { 0x0701, 0x080d, 0x0000 },

-  { 0x8701, 0x0810, 0x2000 },

-  { 0x0701, 0x080f, 0x0000 },

-  { 0x0701, 0x0811, 0x0000 },

-  { 0x8701, 0x0816, 0x3000 },

-  { 0x8701, 0x0814, 0x2000 },

-  { 0x0701, 0x0813, 0x0000 },

-  { 0x0701, 0x0815, 0x0000 },

-  { 0x8701, 0x0818, 0x2000 },

-  { 0x0701, 0x0817, 0x0000 },

-  { 0x0701, 0x0819, 0x0000 },

-  { 0x8701, 0x082a, 0x5000 },

-  { 0x8701, 0x0822, 0x4000 },

-  { 0x8701, 0x081e, 0x3000 },

-  { 0x8701, 0x081c, 0x2000 },

-  { 0x0701, 0x081b, 0x0000 },

-  { 0x0701, 0x081d, 0x0000 },

-  { 0x8701, 0x0820, 0x2000 },

-  { 0x0701, 0x081f, 0x0000 },

-  { 0x0701, 0x0821, 0x0000 },

-  { 0x8701, 0x0826, 0x3000 },

-  { 0x8701, 0x0824, 0x2000 },

-  { 0x0701, 0x0823, 0x0000 },

-  { 0x0701, 0x0825, 0x0000 },

-  { 0x8701, 0x0828, 0x2000 },

-  { 0x0701, 0x0827, 0x0000 },

-  { 0x0701, 0x0829, 0x0000 },

-  { 0x8701, 0x0832, 0x4000 },

-  { 0x8701, 0x082e, 0x3000 },

-  { 0x8701, 0x082c, 0x2000 },

-  { 0x0701, 0x082b, 0x0000 },

-  { 0x0701, 0x082d, 0x0000 },

-  { 0x8701, 0x0830, 0x2000 },

-  { 0x0701, 0x082f, 0x0000 },

-  { 0x0701, 0x0831, 0x0000 },

-  { 0x8701, 0x0837, 0x3000 },

-  { 0x8701, 0x0834, 0x2000 },

-  { 0x0701, 0x0833, 0x0000 },

-  { 0x0701, 0x0835, 0x0000 },

-  { 0x8701, 0x083c, 0x2000 },

-  { 0x0701, 0x0838, 0x0000 },

-  { 0x0701, 0x083f, 0x0000 },

-  { 0x9a01, 0xd040, 0x7000 },

-  { 0x9a01, 0xd020, 0x6000 },

-  { 0x9a01, 0xd010, 0x5000 },

-  { 0x9a01, 0xd008, 0x4000 },

-  { 0x9a01, 0xd004, 0x3000 },

-  { 0x9a01, 0xd002, 0x2000 },

-  { 0x1a01, 0xd001, 0x0000 },

-  { 0x1a01, 0xd003, 0x0000 },

-  { 0x9a01, 0xd006, 0x2000 },

-  { 0x1a01, 0xd005, 0x0000 },

-  { 0x1a01, 0xd007, 0x0000 },

-  { 0x9a01, 0xd00c, 0x3000 },

-  { 0x9a01, 0xd00a, 0x2000 },

-  { 0x1a01, 0xd009, 0x0000 },

-  { 0x1a01, 0xd00b, 0x0000 },

-  { 0x9a01, 0xd00e, 0x2000 },

-  { 0x1a01, 0xd00d, 0x0000 },

-  { 0x1a01, 0xd00f, 0x0000 },

-  { 0x9a01, 0xd018, 0x4000 },

-  { 0x9a01, 0xd014, 0x3000 },

-  { 0x9a01, 0xd012, 0x2000 },

-  { 0x1a01, 0xd011, 0x0000 },

-  { 0x1a01, 0xd013, 0x0000 },

-  { 0x9a01, 0xd016, 0x2000 },

-  { 0x1a01, 0xd015, 0x0000 },

-  { 0x1a01, 0xd017, 0x0000 },

-  { 0x9a01, 0xd01c, 0x3000 },

-  { 0x9a01, 0xd01a, 0x2000 },

-  { 0x1a01, 0xd019, 0x0000 },

-  { 0x1a01, 0xd01b, 0x0000 },

-  { 0x9a01, 0xd01e, 0x2000 },

-  { 0x1a01, 0xd01d, 0x0000 },

-  { 0x1a01, 0xd01f, 0x0000 },

-  { 0x9a01, 0xd030, 0x5000 },

-  { 0x9a01, 0xd028, 0x4000 },

-  { 0x9a01, 0xd024, 0x3000 },

-  { 0x9a01, 0xd022, 0x2000 },

-  { 0x1a01, 0xd021, 0x0000 },

-  { 0x1a01, 0xd023, 0x0000 },

-  { 0x9a01, 0xd026, 0x2000 },

-  { 0x1a01, 0xd025, 0x0000 },

-  { 0x1a01, 0xd027, 0x0000 },

-  { 0x9a01, 0xd02c, 0x3000 },

-  { 0x9a01, 0xd02a, 0x2000 },

-  { 0x1a01, 0xd029, 0x0000 },

-  { 0x1a01, 0xd02b, 0x0000 },

-  { 0x9a01, 0xd02e, 0x2000 },

-  { 0x1a01, 0xd02d, 0x0000 },

-  { 0x1a01, 0xd02f, 0x0000 },

-  { 0x9a01, 0xd038, 0x4000 },

-  { 0x9a01, 0xd034, 0x3000 },

-  { 0x9a01, 0xd032, 0x2000 },

-  { 0x1a01, 0xd031, 0x0000 },

-  { 0x1a01, 0xd033, 0x0000 },

-  { 0x9a01, 0xd036, 0x2000 },

-  { 0x1a01, 0xd035, 0x0000 },

-  { 0x1a01, 0xd037, 0x0000 },

-  { 0x9a01, 0xd03c, 0x3000 },

-  { 0x9a01, 0xd03a, 0x2000 },

-  { 0x1a01, 0xd039, 0x0000 },

-  { 0x1a01, 0xd03b, 0x0000 },

-  { 0x9a01, 0xd03e, 0x2000 },

-  { 0x1a01, 0xd03d, 0x0000 },

-  { 0x1a01, 0xd03f, 0x0000 },

-  { 0x9a01, 0xd060, 0x6000 },

-  { 0x9a01, 0xd050, 0x5000 },

-  { 0x9a01, 0xd048, 0x4000 },

-  { 0x9a01, 0xd044, 0x3000 },

-  { 0x9a01, 0xd042, 0x2000 },

-  { 0x1a01, 0xd041, 0x0000 },

-  { 0x1a01, 0xd043, 0x0000 },

-  { 0x9a01, 0xd046, 0x2000 },

-  { 0x1a01, 0xd045, 0x0000 },

-  { 0x1a01, 0xd047, 0x0000 },

-  { 0x9a01, 0xd04c, 0x3000 },

-  { 0x9a01, 0xd04a, 0x2000 },

-  { 0x1a01, 0xd049, 0x0000 },

-  { 0x1a01, 0xd04b, 0x0000 },

-  { 0x9a01, 0xd04e, 0x2000 },

-  { 0x1a01, 0xd04d, 0x0000 },

-  { 0x1a01, 0xd04f, 0x0000 },

-  { 0x9a01, 0xd058, 0x4000 },

-  { 0x9a01, 0xd054, 0x3000 },

-  { 0x9a01, 0xd052, 0x2000 },

-  { 0x1a01, 0xd051, 0x0000 },

-  { 0x1a01, 0xd053, 0x0000 },

-  { 0x9a01, 0xd056, 0x2000 },

-  { 0x1a01, 0xd055, 0x0000 },

-  { 0x1a01, 0xd057, 0x0000 },

-  { 0x9a01, 0xd05c, 0x3000 },

-  { 0x9a01, 0xd05a, 0x2000 },

-  { 0x1a01, 0xd059, 0x0000 },

-  { 0x1a01, 0xd05b, 0x0000 },

-  { 0x9a01, 0xd05e, 0x2000 },

-  { 0x1a01, 0xd05d, 0x0000 },

-  { 0x1a01, 0xd05f, 0x0000 },

-  { 0x9a01, 0xd070, 0x5000 },

-  { 0x9a01, 0xd068, 0x4000 },

-  { 0x9a01, 0xd064, 0x3000 },

-  { 0x9a01, 0xd062, 0x2000 },

-  { 0x1a01, 0xd061, 0x0000 },

-  { 0x1a01, 0xd063, 0x0000 },

-  { 0x9a01, 0xd066, 0x2000 },

-  { 0x1a01, 0xd065, 0x0000 },

-  { 0x1a01, 0xd067, 0x0000 },

-  { 0x9a01, 0xd06c, 0x3000 },

-  { 0x9a01, 0xd06a, 0x2000 },

-  { 0x1a01, 0xd069, 0x0000 },

-  { 0x1a01, 0xd06b, 0x0000 },

-  { 0x9a01, 0xd06e, 0x2000 },

-  { 0x1a01, 0xd06d, 0x0000 },

-  { 0x1a01, 0xd06f, 0x0000 },

-  { 0x9a01, 0xd078, 0x4000 },

-  { 0x9a01, 0xd074, 0x3000 },

-  { 0x9a01, 0xd072, 0x2000 },

-  { 0x1a01, 0xd071, 0x0000 },

-  { 0x1a01, 0xd073, 0x0000 },

-  { 0x9a01, 0xd076, 0x2000 },

-  { 0x1a01, 0xd075, 0x0000 },

-  { 0x1a01, 0xd077, 0x0000 },

-  { 0x9a01, 0xd07c, 0x3000 },

-  { 0x9a01, 0xd07a, 0x2000 },

-  { 0x1a01, 0xd079, 0x0000 },

-  { 0x1a01, 0xd07b, 0x0000 },

-  { 0x9a01, 0xd07e, 0x2000 },

-  { 0x1a01, 0xd07d, 0x0000 },

-  { 0x1a01, 0xd07f, 0x0000 },

-  { 0x9a01, 0xd18d, 0x9000 },

-  { 0x9a01, 0xd10a, 0x8000 },

-  { 0x9a01, 0xd0c0, 0x7000 },

-  { 0x9a01, 0xd0a0, 0x6000 },

-  { 0x9a01, 0xd090, 0x5000 },

-  { 0x9a01, 0xd088, 0x4000 },

-  { 0x9a01, 0xd084, 0x3000 },

-  { 0x9a01, 0xd082, 0x2000 },

-  { 0x1a01, 0xd081, 0x0000 },

-  { 0x1a01, 0xd083, 0x0000 },

-  { 0x9a01, 0xd086, 0x2000 },

-  { 0x1a01, 0xd085, 0x0000 },

-  { 0x1a01, 0xd087, 0x0000 },

-  { 0x9a01, 0xd08c, 0x3000 },

-  { 0x9a01, 0xd08a, 0x2000 },

-  { 0x1a01, 0xd089, 0x0000 },

-  { 0x1a01, 0xd08b, 0x0000 },

-  { 0x9a01, 0xd08e, 0x2000 },

-  { 0x1a01, 0xd08d, 0x0000 },

-  { 0x1a01, 0xd08f, 0x0000 },

-  { 0x9a01, 0xd098, 0x4000 },

-  { 0x9a01, 0xd094, 0x3000 },

-  { 0x9a01, 0xd092, 0x2000 },

-  { 0x1a01, 0xd091, 0x0000 },

-  { 0x1a01, 0xd093, 0x0000 },

-  { 0x9a01, 0xd096, 0x2000 },

-  { 0x1a01, 0xd095, 0x0000 },

-  { 0x1a01, 0xd097, 0x0000 },

-  { 0x9a01, 0xd09c, 0x3000 },

-  { 0x9a01, 0xd09a, 0x2000 },

-  { 0x1a01, 0xd099, 0x0000 },

-  { 0x1a01, 0xd09b, 0x0000 },

-  { 0x9a01, 0xd09e, 0x2000 },

-  { 0x1a01, 0xd09d, 0x0000 },

-  { 0x1a01, 0xd09f, 0x0000 },

-  { 0x9a01, 0xd0b0, 0x5000 },

-  { 0x9a01, 0xd0a8, 0x4000 },

-  { 0x9a01, 0xd0a4, 0x3000 },

-  { 0x9a01, 0xd0a2, 0x2000 },

-  { 0x1a01, 0xd0a1, 0x0000 },

-  { 0x1a01, 0xd0a3, 0x0000 },

-  { 0x9a01, 0xd0a6, 0x2000 },

-  { 0x1a01, 0xd0a5, 0x0000 },

-  { 0x1a01, 0xd0a7, 0x0000 },

-  { 0x9a01, 0xd0ac, 0x3000 },

-  { 0x9a01, 0xd0aa, 0x2000 },

-  { 0x1a01, 0xd0a9, 0x0000 },

-  { 0x1a01, 0xd0ab, 0x0000 },

-  { 0x9a01, 0xd0ae, 0x2000 },

-  { 0x1a01, 0xd0ad, 0x0000 },

-  { 0x1a01, 0xd0af, 0x0000 },

-  { 0x9a01, 0xd0b8, 0x4000 },

-  { 0x9a01, 0xd0b4, 0x3000 },

-  { 0x9a01, 0xd0b2, 0x2000 },

-  { 0x1a01, 0xd0b1, 0x0000 },

-  { 0x1a01, 0xd0b3, 0x0000 },

-  { 0x9a01, 0xd0b6, 0x2000 },

-  { 0x1a01, 0xd0b5, 0x0000 },

-  { 0x1a01, 0xd0b7, 0x0000 },

-  { 0x9a01, 0xd0bc, 0x3000 },

-  { 0x9a01, 0xd0ba, 0x2000 },

-  { 0x1a01, 0xd0b9, 0x0000 },

-  { 0x1a01, 0xd0bb, 0x0000 },

-  { 0x9a01, 0xd0be, 0x2000 },

-  { 0x1a01, 0xd0bd, 0x0000 },

-  { 0x1a01, 0xd0bf, 0x0000 },

-  { 0x9a01, 0xd0e0, 0x6000 },

-  { 0x9a01, 0xd0d0, 0x5000 },

-  { 0x9a01, 0xd0c8, 0x4000 },

-  { 0x9a01, 0xd0c4, 0x3000 },

-  { 0x9a01, 0xd0c2, 0x2000 },

-  { 0x1a01, 0xd0c1, 0x0000 },

-  { 0x1a01, 0xd0c3, 0x0000 },

-  { 0x9a01, 0xd0c6, 0x2000 },

-  { 0x1a01, 0xd0c5, 0x0000 },

-  { 0x1a01, 0xd0c7, 0x0000 },

-  { 0x9a01, 0xd0cc, 0x3000 },

-  { 0x9a01, 0xd0ca, 0x2000 },

-  { 0x1a01, 0xd0c9, 0x0000 },

-  { 0x1a01, 0xd0cb, 0x0000 },

-  { 0x9a01, 0xd0ce, 0x2000 },

-  { 0x1a01, 0xd0cd, 0x0000 },

-  { 0x1a01, 0xd0cf, 0x0000 },

-  { 0x9a01, 0xd0d8, 0x4000 },

-  { 0x9a01, 0xd0d4, 0x3000 },

-  { 0x9a01, 0xd0d2, 0x2000 },

-  { 0x1a01, 0xd0d1, 0x0000 },

-  { 0x1a01, 0xd0d3, 0x0000 },

-  { 0x9a01, 0xd0d6, 0x2000 },

-  { 0x1a01, 0xd0d5, 0x0000 },

-  { 0x1a01, 0xd0d7, 0x0000 },

-  { 0x9a01, 0xd0dc, 0x3000 },

-  { 0x9a01, 0xd0da, 0x2000 },

-  { 0x1a01, 0xd0d9, 0x0000 },

-  { 0x1a01, 0xd0db, 0x0000 },

-  { 0x9a01, 0xd0de, 0x2000 },

-  { 0x1a01, 0xd0dd, 0x0000 },

-  { 0x1a01, 0xd0df, 0x0000 },

-  { 0x9a01, 0xd0f0, 0x5000 },

-  { 0x9a01, 0xd0e8, 0x4000 },

-  { 0x9a01, 0xd0e4, 0x3000 },

-  { 0x9a01, 0xd0e2, 0x2000 },

-  { 0x1a01, 0xd0e1, 0x0000 },

-  { 0x1a01, 0xd0e3, 0x0000 },

-  { 0x9a01, 0xd0e6, 0x2000 },

-  { 0x1a01, 0xd0e5, 0x0000 },

-  { 0x1a01, 0xd0e7, 0x0000 },

-  { 0x9a01, 0xd0ec, 0x3000 },

-  { 0x9a01, 0xd0ea, 0x2000 },

-  { 0x1a01, 0xd0e9, 0x0000 },

-  { 0x1a01, 0xd0eb, 0x0000 },

-  { 0x9a01, 0xd0ee, 0x2000 },

-  { 0x1a01, 0xd0ed, 0x0000 },

-  { 0x1a01, 0xd0ef, 0x0000 },

-  { 0x9a01, 0xd102, 0x4000 },

-  { 0x9a01, 0xd0f4, 0x3000 },

-  { 0x9a01, 0xd0f2, 0x2000 },

-  { 0x1a01, 0xd0f1, 0x0000 },

-  { 0x1a01, 0xd0f3, 0x0000 },

-  { 0x9a01, 0xd100, 0x2000 },

-  { 0x1a01, 0xd0f5, 0x0000 },

-  { 0x1a01, 0xd101, 0x0000 },

-  { 0x9a01, 0xd106, 0x3000 },

-  { 0x9a01, 0xd104, 0x2000 },

-  { 0x1a01, 0xd103, 0x0000 },

-  { 0x1a01, 0xd105, 0x0000 },

-  { 0x9a01, 0xd108, 0x2000 },

-  { 0x1a01, 0xd107, 0x0000 },

-  { 0x1a01, 0xd109, 0x0000 },

-  { 0x9a01, 0xd14d, 0x7000 },

-  { 0x9a01, 0xd12d, 0x6000 },

-  { 0x9a01, 0xd11a, 0x5000 },

-  { 0x9a01, 0xd112, 0x4000 },

-  { 0x9a01, 0xd10e, 0x3000 },

-  { 0x9a01, 0xd10c, 0x2000 },

-  { 0x1a01, 0xd10b, 0x0000 },

-  { 0x1a01, 0xd10d, 0x0000 },

-  { 0x9a01, 0xd110, 0x2000 },

-  { 0x1a01, 0xd10f, 0x0000 },

-  { 0x1a01, 0xd111, 0x0000 },

-  { 0x9a01, 0xd116, 0x3000 },

-  { 0x9a01, 0xd114, 0x2000 },

-  { 0x1a01, 0xd113, 0x0000 },

-  { 0x1a01, 0xd115, 0x0000 },

-  { 0x9a01, 0xd118, 0x2000 },

-  { 0x1a01, 0xd117, 0x0000 },

-  { 0x1a01, 0xd119, 0x0000 },

-  { 0x9a01, 0xd122, 0x4000 },

-  { 0x9a01, 0xd11e, 0x3000 },

-  { 0x9a01, 0xd11c, 0x2000 },

-  { 0x1a01, 0xd11b, 0x0000 },

-  { 0x1a01, 0xd11d, 0x0000 },

-  { 0x9a01, 0xd120, 0x2000 },

-  { 0x1a01, 0xd11f, 0x0000 },

-  { 0x1a01, 0xd121, 0x0000 },

-  { 0x9a01, 0xd126, 0x3000 },

-  { 0x9a01, 0xd124, 0x2000 },

-  { 0x1a01, 0xd123, 0x0000 },

-  { 0x1a01, 0xd125, 0x0000 },

-  { 0x9a01, 0xd12b, 0x2000 },

-  { 0x1a01, 0xd12a, 0x0000 },

-  { 0x1a01, 0xd12c, 0x0000 },

-  { 0x9a01, 0xd13d, 0x5000 },

-  { 0x9a01, 0xd135, 0x4000 },

-  { 0x9a01, 0xd131, 0x3000 },

-  { 0x9a01, 0xd12f, 0x2000 },

-  { 0x1a01, 0xd12e, 0x0000 },

-  { 0x1a01, 0xd130, 0x0000 },

-  { 0x9a01, 0xd133, 0x2000 },

-  { 0x1a01, 0xd132, 0x0000 },

-  { 0x1a01, 0xd134, 0x0000 },

-  { 0x9a01, 0xd139, 0x3000 },

-  { 0x9a01, 0xd137, 0x2000 },

-  { 0x1a01, 0xd136, 0x0000 },

-  { 0x1a01, 0xd138, 0x0000 },

-  { 0x9a01, 0xd13b, 0x2000 },

-  { 0x1a01, 0xd13a, 0x0000 },

-  { 0x1a01, 0xd13c, 0x0000 },

-  { 0x9a01, 0xd145, 0x4000 },

-  { 0x9a01, 0xd141, 0x3000 },

-  { 0x9a01, 0xd13f, 0x2000 },

-  { 0x1a01, 0xd13e, 0x0000 },

-  { 0x1a01, 0xd140, 0x0000 },

-  { 0x9a01, 0xd143, 0x2000 },

-  { 0x1a01, 0xd142, 0x0000 },

-  { 0x1a01, 0xd144, 0x0000 },

-  { 0x9a01, 0xd149, 0x3000 },

-  { 0x9a01, 0xd147, 0x2000 },

-  { 0x1a01, 0xd146, 0x0000 },

-  { 0x1a01, 0xd148, 0x0000 },

-  { 0x9a01, 0xd14b, 0x2000 },

-  { 0x1a01, 0xd14a, 0x0000 },

-  { 0x1a01, 0xd14c, 0x0000 },

-  { 0x8a01, 0xd16d, 0x6000 },

-  { 0x9a01, 0xd15d, 0x5000 },

-  { 0x9a01, 0xd155, 0x4000 },

-  { 0x9a01, 0xd151, 0x3000 },

-  { 0x9a01, 0xd14f, 0x2000 },

-  { 0x1a01, 0xd14e, 0x0000 },

-  { 0x1a01, 0xd150, 0x0000 },

-  { 0x9a01, 0xd153, 0x2000 },

-  { 0x1a01, 0xd152, 0x0000 },

-  { 0x1a01, 0xd154, 0x0000 },

-  { 0x9a01, 0xd159, 0x3000 },

-  { 0x9a01, 0xd157, 0x2000 },

-  { 0x1a01, 0xd156, 0x0000 },

-  { 0x1a01, 0xd158, 0x0000 },

-  { 0x9a01, 0xd15b, 0x2000 },

-  { 0x1a01, 0xd15a, 0x0000 },

-  { 0x1a01, 0xd15c, 0x0000 },

-  { 0x8a01, 0xd165, 0x4000 },

-  { 0x9a01, 0xd161, 0x3000 },

-  { 0x9a01, 0xd15f, 0x2000 },

-  { 0x1a01, 0xd15e, 0x0000 },

-  { 0x1a01, 0xd160, 0x0000 },

-  { 0x9a01, 0xd163, 0x2000 },

-  { 0x1a01, 0xd162, 0x0000 },

-  { 0x1a01, 0xd164, 0x0000 },

-  { 0x8c01, 0xd169, 0x3000 },

-  { 0x8c01, 0xd167, 0x2000 },

-  { 0x0a01, 0xd166, 0x0000 },

-  { 0x0c01, 0xd168, 0x0000 },

-  { 0x9a01, 0xd16b, 0x2000 },

-  { 0x1a01, 0xd16a, 0x0000 },

-  { 0x1a01, 0xd16c, 0x0000 },

-  { 0x8c01, 0xd17d, 0x5000 },

-  { 0x8101, 0xd175, 0x4000 },

-  { 0x8a01, 0xd171, 0x3000 },

-  { 0x8a01, 0xd16f, 0x2000 },

-  { 0x0a01, 0xd16e, 0x0000 },

-  { 0x0a01, 0xd170, 0x0000 },

-  { 0x8101, 0xd173, 0x2000 },

-  { 0x0a01, 0xd172, 0x0000 },

-  { 0x0101, 0xd174, 0x0000 },

-  { 0x8101, 0xd179, 0x3000 },

-  { 0x8101, 0xd177, 0x2000 },

-  { 0x0101, 0xd176, 0x0000 },

-  { 0x0101, 0xd178, 0x0000 },

-  { 0x8c01, 0xd17b, 0x2000 },

-  { 0x0101, 0xd17a, 0x0000 },

-  { 0x0c01, 0xd17c, 0x0000 },

-  { 0x8c01, 0xd185, 0x4000 },

-  { 0x8c01, 0xd181, 0x3000 },

-  { 0x8c01, 0xd17f, 0x2000 },

-  { 0x0c01, 0xd17e, 0x0000 },

-  { 0x0c01, 0xd180, 0x0000 },

-  { 0x9a01, 0xd183, 0x2000 },

-  { 0x0c01, 0xd182, 0x0000 },

-  { 0x1a01, 0xd184, 0x0000 },

-  { 0x8c01, 0xd189, 0x3000 },

-  { 0x8c01, 0xd187, 0x2000 },

-  { 0x0c01, 0xd186, 0x0000 },

-  { 0x0c01, 0xd188, 0x0000 },

-  { 0x8c01, 0xd18b, 0x2000 },

-  { 0x0c01, 0xd18a, 0x0000 },

-  { 0x1a01, 0xd18c, 0x0000 },

-  { 0x9a01, 0xd32f, 0x8000 },

-  { 0x9a01, 0xd1cd, 0x7000 },

-  { 0x8c01, 0xd1ad, 0x6000 },

-  { 0x9a01, 0xd19d, 0x5000 },

-  { 0x9a01, 0xd195, 0x4000 },

-  { 0x9a01, 0xd191, 0x3000 },

-  { 0x9a01, 0xd18f, 0x2000 },

-  { 0x1a01, 0xd18e, 0x0000 },

-  { 0x1a01, 0xd190, 0x0000 },

-  { 0x9a01, 0xd193, 0x2000 },

-  { 0x1a01, 0xd192, 0x0000 },

-  { 0x1a01, 0xd194, 0x0000 },

-  { 0x9a01, 0xd199, 0x3000 },

-  { 0x9a01, 0xd197, 0x2000 },

-  { 0x1a01, 0xd196, 0x0000 },

-  { 0x1a01, 0xd198, 0x0000 },

-  { 0x9a01, 0xd19b, 0x2000 },

-  { 0x1a01, 0xd19a, 0x0000 },

-  { 0x1a01, 0xd19c, 0x0000 },

-  { 0x9a01, 0xd1a5, 0x4000 },

-  { 0x9a01, 0xd1a1, 0x3000 },

-  { 0x9a01, 0xd19f, 0x2000 },

-  { 0x1a01, 0xd19e, 0x0000 },

-  { 0x1a01, 0xd1a0, 0x0000 },

-  { 0x9a01, 0xd1a3, 0x2000 },

-  { 0x1a01, 0xd1a2, 0x0000 },

-  { 0x1a01, 0xd1a4, 0x0000 },

-  { 0x9a01, 0xd1a9, 0x3000 },

-  { 0x9a01, 0xd1a7, 0x2000 },

-  { 0x1a01, 0xd1a6, 0x0000 },

-  { 0x1a01, 0xd1a8, 0x0000 },

-  { 0x8c01, 0xd1ab, 0x2000 },

-  { 0x0c01, 0xd1aa, 0x0000 },

-  { 0x0c01, 0xd1ac, 0x0000 },

-  { 0x9a01, 0xd1bd, 0x5000 },

-  { 0x9a01, 0xd1b5, 0x4000 },

-  { 0x9a01, 0xd1b1, 0x3000 },

-  { 0x9a01, 0xd1af, 0x2000 },

-  { 0x1a01, 0xd1ae, 0x0000 },

-  { 0x1a01, 0xd1b0, 0x0000 },

-  { 0x9a01, 0xd1b3, 0x2000 },

-  { 0x1a01, 0xd1b2, 0x0000 },

-  { 0x1a01, 0xd1b4, 0x0000 },

-  { 0x9a01, 0xd1b9, 0x3000 },

-  { 0x9a01, 0xd1b7, 0x2000 },

-  { 0x1a01, 0xd1b6, 0x0000 },

-  { 0x1a01, 0xd1b8, 0x0000 },

-  { 0x9a01, 0xd1bb, 0x2000 },

-  { 0x1a01, 0xd1ba, 0x0000 },

-  { 0x1a01, 0xd1bc, 0x0000 },

-  { 0x9a01, 0xd1c5, 0x4000 },

-  { 0x9a01, 0xd1c1, 0x3000 },

-  { 0x9a01, 0xd1bf, 0x2000 },

-  { 0x1a01, 0xd1be, 0x0000 },

-  { 0x1a01, 0xd1c0, 0x0000 },

-  { 0x9a01, 0xd1c3, 0x2000 },

-  { 0x1a01, 0xd1c2, 0x0000 },

-  { 0x1a01, 0xd1c4, 0x0000 },

-  { 0x9a01, 0xd1c9, 0x3000 },

-  { 0x9a01, 0xd1c7, 0x2000 },

-  { 0x1a01, 0xd1c6, 0x0000 },

-  { 0x1a01, 0xd1c8, 0x0000 },

-  { 0x9a01, 0xd1cb, 0x2000 },

-  { 0x1a01, 0xd1ca, 0x0000 },

-  { 0x1a01, 0xd1cc, 0x0000 },

-  { 0x9a01, 0xd30f, 0x6000 },

-  { 0x9a01, 0xd1dd, 0x5000 },

-  { 0x9a01, 0xd1d5, 0x4000 },

-  { 0x9a01, 0xd1d1, 0x3000 },

-  { 0x9a01, 0xd1cf, 0x2000 },

-  { 0x1a01, 0xd1ce, 0x0000 },

-  { 0x1a01, 0xd1d0, 0x0000 },

-  { 0x9a01, 0xd1d3, 0x2000 },

-  { 0x1a01, 0xd1d2, 0x0000 },

-  { 0x1a01, 0xd1d4, 0x0000 },

-  { 0x9a01, 0xd1d9, 0x3000 },

-  { 0x9a01, 0xd1d7, 0x2000 },

-  { 0x1a01, 0xd1d6, 0x0000 },

-  { 0x1a01, 0xd1d8, 0x0000 },

-  { 0x9a01, 0xd1db, 0x2000 },

-  { 0x1a01, 0xd1da, 0x0000 },

-  { 0x1a01, 0xd1dc, 0x0000 },

-  { 0x9a01, 0xd307, 0x4000 },

-  { 0x9a01, 0xd303, 0x3000 },

-  { 0x9a01, 0xd301, 0x2000 },

-  { 0x1a01, 0xd300, 0x0000 },

-  { 0x1a01, 0xd302, 0x0000 },

-  { 0x9a01, 0xd305, 0x2000 },

-  { 0x1a01, 0xd304, 0x0000 },

-  { 0x1a01, 0xd306, 0x0000 },

-  { 0x9a01, 0xd30b, 0x3000 },

-  { 0x9a01, 0xd309, 0x2000 },

-  { 0x1a01, 0xd308, 0x0000 },

-  { 0x1a01, 0xd30a, 0x0000 },

-  { 0x9a01, 0xd30d, 0x2000 },

-  { 0x1a01, 0xd30c, 0x0000 },

-  { 0x1a01, 0xd30e, 0x0000 },

-  { 0x9a01, 0xd31f, 0x5000 },

-  { 0x9a01, 0xd317, 0x4000 },

-  { 0x9a01, 0xd313, 0x3000 },

-  { 0x9a01, 0xd311, 0x2000 },

-  { 0x1a01, 0xd310, 0x0000 },

-  { 0x1a01, 0xd312, 0x0000 },

-  { 0x9a01, 0xd315, 0x2000 },

-  { 0x1a01, 0xd314, 0x0000 },

-  { 0x1a01, 0xd316, 0x0000 },

-  { 0x9a01, 0xd31b, 0x3000 },

-  { 0x9a01, 0xd319, 0x2000 },

-  { 0x1a01, 0xd318, 0x0000 },

-  { 0x1a01, 0xd31a, 0x0000 },

-  { 0x9a01, 0xd31d, 0x2000 },

-  { 0x1a01, 0xd31c, 0x0000 },

-  { 0x1a01, 0xd31e, 0x0000 },

-  { 0x9a01, 0xd327, 0x4000 },

-  { 0x9a01, 0xd323, 0x3000 },

-  { 0x9a01, 0xd321, 0x2000 },

-  { 0x1a01, 0xd320, 0x0000 },

-  { 0x1a01, 0xd322, 0x0000 },

-  { 0x9a01, 0xd325, 0x2000 },

-  { 0x1a01, 0xd324, 0x0000 },

-  { 0x1a01, 0xd326, 0x0000 },

-  { 0x9a01, 0xd32b, 0x3000 },

-  { 0x9a01, 0xd329, 0x2000 },

-  { 0x1a01, 0xd328, 0x0000 },

-  { 0x1a01, 0xd32a, 0x0000 },

-  { 0x9a01, 0xd32d, 0x2000 },

-  { 0x1a01, 0xd32c, 0x0000 },

-  { 0x1a01, 0xd32e, 0x0000 },

-  { 0x8901, 0xd418, 0x7000 },

-  { 0x9a01, 0xd34f, 0x6000 },

-  { 0x9a01, 0xd33f, 0x5000 },

-  { 0x9a01, 0xd337, 0x4000 },

-  { 0x9a01, 0xd333, 0x3000 },

-  { 0x9a01, 0xd331, 0x2000 },

-  { 0x1a01, 0xd330, 0x0000 },

-  { 0x1a01, 0xd332, 0x0000 },

-  { 0x9a01, 0xd335, 0x2000 },

-  { 0x1a01, 0xd334, 0x0000 },

-  { 0x1a01, 0xd336, 0x0000 },

-  { 0x9a01, 0xd33b, 0x3000 },

-  { 0x9a01, 0xd339, 0x2000 },

-  { 0x1a01, 0xd338, 0x0000 },

-  { 0x1a01, 0xd33a, 0x0000 },

-  { 0x9a01, 0xd33d, 0x2000 },

-  { 0x1a01, 0xd33c, 0x0000 },

-  { 0x1a01, 0xd33e, 0x0000 },

-  { 0x9a01, 0xd347, 0x4000 },

-  { 0x9a01, 0xd343, 0x3000 },

-  { 0x9a01, 0xd341, 0x2000 },

-  { 0x1a01, 0xd340, 0x0000 },

-  { 0x1a01, 0xd342, 0x0000 },

-  { 0x9a01, 0xd345, 0x2000 },

-  { 0x1a01, 0xd344, 0x0000 },

-  { 0x1a01, 0xd346, 0x0000 },

-  { 0x9a01, 0xd34b, 0x3000 },

-  { 0x9a01, 0xd349, 0x2000 },

-  { 0x1a01, 0xd348, 0x0000 },

-  { 0x1a01, 0xd34a, 0x0000 },

-  { 0x9a01, 0xd34d, 0x2000 },

-  { 0x1a01, 0xd34c, 0x0000 },

-  { 0x1a01, 0xd34e, 0x0000 },

-  { 0x8901, 0xd408, 0x5000 },

-  { 0x8901, 0xd400, 0x4000 },

-  { 0x9a01, 0xd353, 0x3000 },

-  { 0x9a01, 0xd351, 0x2000 },

-  { 0x1a01, 0xd350, 0x0000 },

-  { 0x1a01, 0xd352, 0x0000 },

-  { 0x9a01, 0xd355, 0x2000 },

-  { 0x1a01, 0xd354, 0x0000 },

-  { 0x1a01, 0xd356, 0x0000 },

-  { 0x8901, 0xd404, 0x3000 },

-  { 0x8901, 0xd402, 0x2000 },

-  { 0x0901, 0xd401, 0x0000 },

-  { 0x0901, 0xd403, 0x0000 },

-  { 0x8901, 0xd406, 0x2000 },

-  { 0x0901, 0xd405, 0x0000 },

-  { 0x0901, 0xd407, 0x0000 },

-  { 0x8901, 0xd410, 0x4000 },

-  { 0x8901, 0xd40c, 0x3000 },

-  { 0x8901, 0xd40a, 0x2000 },

-  { 0x0901, 0xd409, 0x0000 },

-  { 0x0901, 0xd40b, 0x0000 },

-  { 0x8901, 0xd40e, 0x2000 },

-  { 0x0901, 0xd40d, 0x0000 },

-  { 0x0901, 0xd40f, 0x0000 },

-  { 0x8901, 0xd414, 0x3000 },

-  { 0x8901, 0xd412, 0x2000 },

-  { 0x0901, 0xd411, 0x0000 },

-  { 0x0901, 0xd413, 0x0000 },

-  { 0x8901, 0xd416, 0x2000 },

-  { 0x0901, 0xd415, 0x0000 },

-  { 0x0901, 0xd417, 0x0000 },

-  { 0x8901, 0xd438, 0x6000 },

-  { 0x8501, 0xd428, 0x5000 },

-  { 0x8501, 0xd420, 0x4000 },

-  { 0x8501, 0xd41c, 0x3000 },

-  { 0x8501, 0xd41a, 0x2000 },

-  { 0x0901, 0xd419, 0x0000 },

-  { 0x0501, 0xd41b, 0x0000 },

-  { 0x8501, 0xd41e, 0x2000 },

-  { 0x0501, 0xd41d, 0x0000 },

-  { 0x0501, 0xd41f, 0x0000 },

-  { 0x8501, 0xd424, 0x3000 },

-  { 0x8501, 0xd422, 0x2000 },

-  { 0x0501, 0xd421, 0x0000 },

-  { 0x0501, 0xd423, 0x0000 },

-  { 0x8501, 0xd426, 0x2000 },

-  { 0x0501, 0xd425, 0x0000 },

-  { 0x0501, 0xd427, 0x0000 },

-  { 0x8501, 0xd430, 0x4000 },

-  { 0x8501, 0xd42c, 0x3000 },

-  { 0x8501, 0xd42a, 0x2000 },

-  { 0x0501, 0xd429, 0x0000 },

-  { 0x0501, 0xd42b, 0x0000 },

-  { 0x8501, 0xd42e, 0x2000 },

-  { 0x0501, 0xd42d, 0x0000 },

-  { 0x0501, 0xd42f, 0x0000 },

-  { 0x8901, 0xd434, 0x3000 },

-  { 0x8501, 0xd432, 0x2000 },

-  { 0x0501, 0xd431, 0x0000 },

-  { 0x0501, 0xd433, 0x0000 },

-  { 0x8901, 0xd436, 0x2000 },

-  { 0x0901, 0xd435, 0x0000 },

-  { 0x0901, 0xd437, 0x0000 },

-  { 0x8901, 0xd448, 0x5000 },

-  { 0x8901, 0xd440, 0x4000 },

-  { 0x8901, 0xd43c, 0x3000 },

-  { 0x8901, 0xd43a, 0x2000 },

-  { 0x0901, 0xd439, 0x0000 },

-  { 0x0901, 0xd43b, 0x0000 },

-  { 0x8901, 0xd43e, 0x2000 },

-  { 0x0901, 0xd43d, 0x0000 },

-  { 0x0901, 0xd43f, 0x0000 },

-  { 0x8901, 0xd444, 0x3000 },

-  { 0x8901, 0xd442, 0x2000 },

-  { 0x0901, 0xd441, 0x0000 },

-  { 0x0901, 0xd443, 0x0000 },

-  { 0x8901, 0xd446, 0x2000 },

-  { 0x0901, 0xd445, 0x0000 },

-  { 0x0901, 0xd447, 0x0000 },

-  { 0x8501, 0xd450, 0x4000 },

-  { 0x8901, 0xd44c, 0x3000 },

-  { 0x8901, 0xd44a, 0x2000 },

-  { 0x0901, 0xd449, 0x0000 },

-  { 0x0901, 0xd44b, 0x0000 },

-  { 0x8501, 0xd44e, 0x2000 },

-  { 0x0901, 0xd44d, 0x0000 },

-  { 0x0501, 0xd44f, 0x0000 },

-  { 0x8501, 0xd454, 0x3000 },

-  { 0x8501, 0xd452, 0x2000 },

-  { 0x0501, 0xd451, 0x0000 },

-  { 0x0501, 0xd453, 0x0000 },

-  { 0x8501, 0xd457, 0x2000 },

-  { 0x0501, 0xd456, 0x0000 },

-  { 0x0501, 0xd458, 0x0000 },

-  { 0x8702, 0xf876, 0xb000 },

-  { 0x8901, 0xd670, 0xa000 },

-  { 0x8901, 0xd570, 0x9000 },

-  { 0x8901, 0xd4e4, 0x8000 },

-  { 0x8501, 0xd499, 0x7000 },

-  { 0x8901, 0xd479, 0x6000 },

-  { 0x8901, 0xd469, 0x5000 },

-  { 0x8501, 0xd461, 0x4000 },

-  { 0x8501, 0xd45d, 0x3000 },

-  { 0x8501, 0xd45b, 0x2000 },

-  { 0x0501, 0xd45a, 0x0000 },

-  { 0x0501, 0xd45c, 0x0000 },

-  { 0x8501, 0xd45f, 0x2000 },

-  { 0x0501, 0xd45e, 0x0000 },

-  { 0x0501, 0xd460, 0x0000 },

-  { 0x8501, 0xd465, 0x3000 },

-  { 0x8501, 0xd463, 0x2000 },

-  { 0x0501, 0xd462, 0x0000 },

-  { 0x0501, 0xd464, 0x0000 },

-  { 0x8501, 0xd467, 0x2000 },

-  { 0x0501, 0xd466, 0x0000 },

-  { 0x0901, 0xd468, 0x0000 },

-  { 0x8901, 0xd471, 0x4000 },

-  { 0x8901, 0xd46d, 0x3000 },

-  { 0x8901, 0xd46b, 0x2000 },

-  { 0x0901, 0xd46a, 0x0000 },

-  { 0x0901, 0xd46c, 0x0000 },

-  { 0x8901, 0xd46f, 0x2000 },

-  { 0x0901, 0xd46e, 0x0000 },

-  { 0x0901, 0xd470, 0x0000 },

-  { 0x8901, 0xd475, 0x3000 },

-  { 0x8901, 0xd473, 0x2000 },

-  { 0x0901, 0xd472, 0x0000 },

-  { 0x0901, 0xd474, 0x0000 },

-  { 0x8901, 0xd477, 0x2000 },

-  { 0x0901, 0xd476, 0x0000 },

-  { 0x0901, 0xd478, 0x0000 },

-  { 0x8501, 0xd489, 0x5000 },

-  { 0x8901, 0xd481, 0x4000 },

-  { 0x8901, 0xd47d, 0x3000 },

-  { 0x8901, 0xd47b, 0x2000 },

-  { 0x0901, 0xd47a, 0x0000 },

-  { 0x0901, 0xd47c, 0x0000 },

-  { 0x8901, 0xd47f, 0x2000 },

-  { 0x0901, 0xd47e, 0x0000 },

-  { 0x0901, 0xd480, 0x0000 },

-  { 0x8501, 0xd485, 0x3000 },

-  { 0x8501, 0xd483, 0x2000 },

-  { 0x0501, 0xd482, 0x0000 },

-  { 0x0501, 0xd484, 0x0000 },

-  { 0x8501, 0xd487, 0x2000 },

-  { 0x0501, 0xd486, 0x0000 },

-  { 0x0501, 0xd488, 0x0000 },

-  { 0x8501, 0xd491, 0x4000 },

-  { 0x8501, 0xd48d, 0x3000 },

-  { 0x8501, 0xd48b, 0x2000 },

-  { 0x0501, 0xd48a, 0x0000 },

-  { 0x0501, 0xd48c, 0x0000 },

-  { 0x8501, 0xd48f, 0x2000 },

-  { 0x0501, 0xd48e, 0x0000 },

-  { 0x0501, 0xd490, 0x0000 },

-  { 0x8501, 0xd495, 0x3000 },

-  { 0x8501, 0xd493, 0x2000 },

-  { 0x0501, 0xd492, 0x0000 },

-  { 0x0501, 0xd494, 0x0000 },

-  { 0x8501, 0xd497, 0x2000 },

-  { 0x0501, 0xd496, 0x0000 },

-  { 0x0501, 0xd498, 0x0000 },

-  { 0x8501, 0xd4c3, 0x6000 },

-  { 0x8901, 0xd4b1, 0x5000 },

-  { 0x8901, 0xd4a6, 0x4000 },

-  { 0x8901, 0xd49e, 0x3000 },

-  { 0x8501, 0xd49b, 0x2000 },

-  { 0x0501, 0xd49a, 0x0000 },

-  { 0x0901, 0xd49c, 0x0000 },

-  { 0x8901, 0xd4a2, 0x2000 },

-  { 0x0901, 0xd49f, 0x0000 },

-  { 0x0901, 0xd4a5, 0x0000 },

-  { 0x8901, 0xd4ac, 0x3000 },

-  { 0x8901, 0xd4aa, 0x2000 },

-  { 0x0901, 0xd4a9, 0x0000 },

-  { 0x0901, 0xd4ab, 0x0000 },

-  { 0x8901, 0xd4af, 0x2000 },

-  { 0x0901, 0xd4ae, 0x0000 },

-  { 0x0901, 0xd4b0, 0x0000 },

-  { 0x8501, 0xd4b9, 0x4000 },

-  { 0x8901, 0xd4b5, 0x3000 },

-  { 0x8901, 0xd4b3, 0x2000 },

-  { 0x0901, 0xd4b2, 0x0000 },

-  { 0x0901, 0xd4b4, 0x0000 },

-  { 0x8501, 0xd4b7, 0x2000 },

-  { 0x0501, 0xd4b6, 0x0000 },

-  { 0x0501, 0xd4b8, 0x0000 },

-  { 0x8501, 0xd4bf, 0x3000 },

-  { 0x8501, 0xd4bd, 0x2000 },

-  { 0x0501, 0xd4bb, 0x0000 },

-  { 0x0501, 0xd4be, 0x0000 },

-  { 0x8501, 0xd4c1, 0x2000 },

-  { 0x0501, 0xd4c0, 0x0000 },

-  { 0x0501, 0xd4c2, 0x0000 },

-  { 0x8901, 0xd4d4, 0x5000 },

-  { 0x8501, 0xd4cc, 0x4000 },

-  { 0x8501, 0xd4c8, 0x3000 },

-  { 0x8501, 0xd4c6, 0x2000 },

-  { 0x0501, 0xd4c5, 0x0000 },

-  { 0x0501, 0xd4c7, 0x0000 },

-  { 0x8501, 0xd4ca, 0x2000 },

-  { 0x0501, 0xd4c9, 0x0000 },

-  { 0x0501, 0xd4cb, 0x0000 },

-  { 0x8901, 0xd4d0, 0x3000 },

-  { 0x8501, 0xd4ce, 0x2000 },

-  { 0x0501, 0xd4cd, 0x0000 },

-  { 0x0501, 0xd4cf, 0x0000 },

-  { 0x8901, 0xd4d2, 0x2000 },

-  { 0x0901, 0xd4d1, 0x0000 },

-  { 0x0901, 0xd4d3, 0x0000 },

-  { 0x8901, 0xd4dc, 0x4000 },

-  { 0x8901, 0xd4d8, 0x3000 },

-  { 0x8901, 0xd4d6, 0x2000 },

-  { 0x0901, 0xd4d5, 0x0000 },

-  { 0x0901, 0xd4d7, 0x0000 },

-  { 0x8901, 0xd4da, 0x2000 },

-  { 0x0901, 0xd4d9, 0x0000 },

-  { 0x0901, 0xd4db, 0x0000 },

-  { 0x8901, 0xd4e0, 0x3000 },

-  { 0x8901, 0xd4de, 0x2000 },

-  { 0x0901, 0xd4dd, 0x0000 },

-  { 0x0901, 0xd4df, 0x0000 },

-  { 0x8901, 0xd4e2, 0x2000 },

-  { 0x0901, 0xd4e1, 0x0000 },

-  { 0x0901, 0xd4e3, 0x0000 },

-  { 0x8501, 0xd529, 0x7000 },

-  { 0x8901, 0xd504, 0x6000 },

-  { 0x8501, 0xd4f4, 0x5000 },

-  { 0x8501, 0xd4ec, 0x4000 },

-  { 0x8901, 0xd4e8, 0x3000 },

-  { 0x8901, 0xd4e6, 0x2000 },

-  { 0x0901, 0xd4e5, 0x0000 },

-  { 0x0901, 0xd4e7, 0x0000 },

-  { 0x8501, 0xd4ea, 0x2000 },

-  { 0x0901, 0xd4e9, 0x0000 },

-  { 0x0501, 0xd4eb, 0x0000 },

-  { 0x8501, 0xd4f0, 0x3000 },

-  { 0x8501, 0xd4ee, 0x2000 },

-  { 0x0501, 0xd4ed, 0x0000 },

-  { 0x0501, 0xd4ef, 0x0000 },

-  { 0x8501, 0xd4f2, 0x2000 },

-  { 0x0501, 0xd4f1, 0x0000 },

-  { 0x0501, 0xd4f3, 0x0000 },

-  { 0x8501, 0xd4fc, 0x4000 },

-  { 0x8501, 0xd4f8, 0x3000 },

-  { 0x8501, 0xd4f6, 0x2000 },

-  { 0x0501, 0xd4f5, 0x0000 },

-  { 0x0501, 0xd4f7, 0x0000 },

-  { 0x8501, 0xd4fa, 0x2000 },

-  { 0x0501, 0xd4f9, 0x0000 },

-  { 0x0501, 0xd4fb, 0x0000 },

-  { 0x8501, 0xd500, 0x3000 },

-  { 0x8501, 0xd4fe, 0x2000 },

-  { 0x0501, 0xd4fd, 0x0000 },

-  { 0x0501, 0xd4ff, 0x0000 },

-  { 0x8501, 0xd502, 0x2000 },

-  { 0x0501, 0xd501, 0x0000 },

-  { 0x0501, 0xd503, 0x0000 },

-  { 0x8901, 0xd518, 0x5000 },

-  { 0x8901, 0xd50f, 0x4000 },

-  { 0x8901, 0xd509, 0x3000 },

-  { 0x8901, 0xd507, 0x2000 },

-  { 0x0901, 0xd505, 0x0000 },

-  { 0x0901, 0xd508, 0x0000 },

-  { 0x8901, 0xd50d, 0x2000 },

-  { 0x0901, 0xd50a, 0x0000 },

-  { 0x0901, 0xd50e, 0x0000 },

-  { 0x8901, 0xd513, 0x3000 },

-  { 0x8901, 0xd511, 0x2000 },

-  { 0x0901, 0xd510, 0x0000 },

-  { 0x0901, 0xd512, 0x0000 },

-  { 0x8901, 0xd516, 0x2000 },

-  { 0x0901, 0xd514, 0x0000 },

-  { 0x0901, 0xd517, 0x0000 },

-  { 0x8501, 0xd521, 0x4000 },

-  { 0x8901, 0xd51c, 0x3000 },

-  { 0x8901, 0xd51a, 0x2000 },

-  { 0x0901, 0xd519, 0x0000 },

-  { 0x0901, 0xd51b, 0x0000 },

-  { 0x8501, 0xd51f, 0x2000 },

-  { 0x0501, 0xd51e, 0x0000 },

-  { 0x0501, 0xd520, 0x0000 },

-  { 0x8501, 0xd525, 0x3000 },

-  { 0x8501, 0xd523, 0x2000 },

-  { 0x0501, 0xd522, 0x0000 },

-  { 0x0501, 0xd524, 0x0000 },

-  { 0x8501, 0xd527, 0x2000 },

-  { 0x0501, 0xd526, 0x0000 },

-  { 0x0501, 0xd528, 0x0000 },

-  { 0x8901, 0xd54f, 0x6000 },

-  { 0x8901, 0xd539, 0x5000 },

-  { 0x8501, 0xd531, 0x4000 },

-  { 0x8501, 0xd52d, 0x3000 },

-  { 0x8501, 0xd52b, 0x2000 },

-  { 0x0501, 0xd52a, 0x0000 },

-  { 0x0501, 0xd52c, 0x0000 },

-  { 0x8501, 0xd52f, 0x2000 },

-  { 0x0501, 0xd52e, 0x0000 },

-  { 0x0501, 0xd530, 0x0000 },

-  { 0x8501, 0xd535, 0x3000 },

-  { 0x8501, 0xd533, 0x2000 },

-  { 0x0501, 0xd532, 0x0000 },

-  { 0x0501, 0xd534, 0x0000 },

-  { 0x8501, 0xd537, 0x2000 },

-  { 0x0501, 0xd536, 0x0000 },

-  { 0x0901, 0xd538, 0x0000 },

-  { 0x8901, 0xd543, 0x4000 },

-  { 0x8901, 0xd53e, 0x3000 },

-  { 0x8901, 0xd53c, 0x2000 },

-  { 0x0901, 0xd53b, 0x0000 },

-  { 0x0901, 0xd53d, 0x0000 },

-  { 0x8901, 0xd541, 0x2000 },

-  { 0x0901, 0xd540, 0x0000 },

-  { 0x0901, 0xd542, 0x0000 },

-  { 0x8901, 0xd54b, 0x3000 },

-  { 0x8901, 0xd546, 0x2000 },

-  { 0x0901, 0xd544, 0x0000 },

-  { 0x0901, 0xd54a, 0x0000 },

-  { 0x8901, 0xd54d, 0x2000 },

-  { 0x0901, 0xd54c, 0x0000 },

-  { 0x0901, 0xd54e, 0x0000 },

-  { 0x8501, 0xd560, 0x5000 },

-  { 0x8501, 0xd558, 0x4000 },

-  { 0x8501, 0xd554, 0x3000 },

-  { 0x8501, 0xd552, 0x2000 },

-  { 0x0901, 0xd550, 0x0000 },

-  { 0x0501, 0xd553, 0x0000 },

-  { 0x8501, 0xd556, 0x2000 },

-  { 0x0501, 0xd555, 0x0000 },

-  { 0x0501, 0xd557, 0x0000 },

-  { 0x8501, 0xd55c, 0x3000 },

-  { 0x8501, 0xd55a, 0x2000 },

-  { 0x0501, 0xd559, 0x0000 },

-  { 0x0501, 0xd55b, 0x0000 },

-  { 0x8501, 0xd55e, 0x2000 },

-  { 0x0501, 0xd55d, 0x0000 },

-  { 0x0501, 0xd55f, 0x0000 },

-  { 0x8501, 0xd568, 0x4000 },

-  { 0x8501, 0xd564, 0x3000 },

-  { 0x8501, 0xd562, 0x2000 },

-  { 0x0501, 0xd561, 0x0000 },

-  { 0x0501, 0xd563, 0x0000 },

-  { 0x8501, 0xd566, 0x2000 },

-  { 0x0501, 0xd565, 0x0000 },

-  { 0x0501, 0xd567, 0x0000 },

-  { 0x8901, 0xd56c, 0x3000 },

-  { 0x8501, 0xd56a, 0x2000 },

-  { 0x0501, 0xd569, 0x0000 },

-  { 0x0501, 0xd56b, 0x0000 },

-  { 0x8901, 0xd56e, 0x2000 },

-  { 0x0901, 0xd56d, 0x0000 },

-  { 0x0901, 0xd56f, 0x0000 },

-  { 0x8501, 0xd5f0, 0x8000 },

-  { 0x8901, 0xd5b0, 0x7000 },

-  { 0x8501, 0xd590, 0x6000 },

-  { 0x8901, 0xd580, 0x5000 },

-  { 0x8901, 0xd578, 0x4000 },

-  { 0x8901, 0xd574, 0x3000 },

-  { 0x8901, 0xd572, 0x2000 },

-  { 0x0901, 0xd571, 0x0000 },

-  { 0x0901, 0xd573, 0x0000 },

-  { 0x8901, 0xd576, 0x2000 },

-  { 0x0901, 0xd575, 0x0000 },

-  { 0x0901, 0xd577, 0x0000 },

-  { 0x8901, 0xd57c, 0x3000 },

-  { 0x8901, 0xd57a, 0x2000 },

-  { 0x0901, 0xd579, 0x0000 },

-  { 0x0901, 0xd57b, 0x0000 },

-  { 0x8901, 0xd57e, 0x2000 },

-  { 0x0901, 0xd57d, 0x0000 },

-  { 0x0901, 0xd57f, 0x0000 },

-  { 0x8501, 0xd588, 0x4000 },

-  { 0x8901, 0xd584, 0x3000 },

-  { 0x8901, 0xd582, 0x2000 },

-  { 0x0901, 0xd581, 0x0000 },

-  { 0x0901, 0xd583, 0x0000 },

-  { 0x8501, 0xd586, 0x2000 },

-  { 0x0901, 0xd585, 0x0000 },

-  { 0x0501, 0xd587, 0x0000 },

-  { 0x8501, 0xd58c, 0x3000 },

-  { 0x8501, 0xd58a, 0x2000 },

-  { 0x0501, 0xd589, 0x0000 },

-  { 0x0501, 0xd58b, 0x0000 },

-  { 0x8501, 0xd58e, 0x2000 },

-  { 0x0501, 0xd58d, 0x0000 },

-  { 0x0501, 0xd58f, 0x0000 },

-  { 0x8901, 0xd5a0, 0x5000 },

-  { 0x8501, 0xd598, 0x4000 },

-  { 0x8501, 0xd594, 0x3000 },

-  { 0x8501, 0xd592, 0x2000 },

-  { 0x0501, 0xd591, 0x0000 },

-  { 0x0501, 0xd593, 0x0000 },

-  { 0x8501, 0xd596, 0x2000 },

-  { 0x0501, 0xd595, 0x0000 },

-  { 0x0501, 0xd597, 0x0000 },

-  { 0x8501, 0xd59c, 0x3000 },

-  { 0x8501, 0xd59a, 0x2000 },

-  { 0x0501, 0xd599, 0x0000 },

-  { 0x0501, 0xd59b, 0x0000 },

-  { 0x8501, 0xd59e, 0x2000 },

-  { 0x0501, 0xd59d, 0x0000 },

-  { 0x0501, 0xd59f, 0x0000 },

-  { 0x8901, 0xd5a8, 0x4000 },

-  { 0x8901, 0xd5a4, 0x3000 },

-  { 0x8901, 0xd5a2, 0x2000 },

-  { 0x0901, 0xd5a1, 0x0000 },

-  { 0x0901, 0xd5a3, 0x0000 },

-  { 0x8901, 0xd5a6, 0x2000 },

-  { 0x0901, 0xd5a5, 0x0000 },

-  { 0x0901, 0xd5a7, 0x0000 },

-  { 0x8901, 0xd5ac, 0x3000 },

-  { 0x8901, 0xd5aa, 0x2000 },

-  { 0x0901, 0xd5a9, 0x0000 },

-  { 0x0901, 0xd5ab, 0x0000 },

-  { 0x8901, 0xd5ae, 0x2000 },

-  { 0x0901, 0xd5ad, 0x0000 },

-  { 0x0901, 0xd5af, 0x0000 },

-  { 0x8501, 0xd5d0, 0x6000 },

-  { 0x8501, 0xd5c0, 0x5000 },

-  { 0x8901, 0xd5b8, 0x4000 },

-  { 0x8901, 0xd5b4, 0x3000 },

-  { 0x8901, 0xd5b2, 0x2000 },

-  { 0x0901, 0xd5b1, 0x0000 },

-  { 0x0901, 0xd5b3, 0x0000 },

-  { 0x8901, 0xd5b6, 0x2000 },

-  { 0x0901, 0xd5b5, 0x0000 },

-  { 0x0901, 0xd5b7, 0x0000 },

-  { 0x8501, 0xd5bc, 0x3000 },

-  { 0x8501, 0xd5ba, 0x2000 },

-  { 0x0901, 0xd5b9, 0x0000 },

-  { 0x0501, 0xd5bb, 0x0000 },

-  { 0x8501, 0xd5be, 0x2000 },

-  { 0x0501, 0xd5bd, 0x0000 },

-  { 0x0501, 0xd5bf, 0x0000 },

-  { 0x8501, 0xd5c8, 0x4000 },

-  { 0x8501, 0xd5c4, 0x3000 },

-  { 0x8501, 0xd5c2, 0x2000 },

-  { 0x0501, 0xd5c1, 0x0000 },

-  { 0x0501, 0xd5c3, 0x0000 },

-  { 0x8501, 0xd5c6, 0x2000 },

-  { 0x0501, 0xd5c5, 0x0000 },

-  { 0x0501, 0xd5c7, 0x0000 },

-  { 0x8501, 0xd5cc, 0x3000 },

-  { 0x8501, 0xd5ca, 0x2000 },

-  { 0x0501, 0xd5c9, 0x0000 },

-  { 0x0501, 0xd5cb, 0x0000 },

-  { 0x8501, 0xd5ce, 0x2000 },

-  { 0x0501, 0xd5cd, 0x0000 },

-  { 0x0501, 0xd5cf, 0x0000 },

-  { 0x8901, 0xd5e0, 0x5000 },

-  { 0x8901, 0xd5d8, 0x4000 },

-  { 0x8901, 0xd5d4, 0x3000 },

-  { 0x8501, 0xd5d2, 0x2000 },

-  { 0x0501, 0xd5d1, 0x0000 },

-  { 0x0501, 0xd5d3, 0x0000 },

-  { 0x8901, 0xd5d6, 0x2000 },

-  { 0x0901, 0xd5d5, 0x0000 },

-  { 0x0901, 0xd5d7, 0x0000 },

-  { 0x8901, 0xd5dc, 0x3000 },

-  { 0x8901, 0xd5da, 0x2000 },

-  { 0x0901, 0xd5d9, 0x0000 },

-  { 0x0901, 0xd5db, 0x0000 },

-  { 0x8901, 0xd5de, 0x2000 },

-  { 0x0901, 0xd5dd, 0x0000 },

-  { 0x0901, 0xd5df, 0x0000 },

-  { 0x8901, 0xd5e8, 0x4000 },

-  { 0x8901, 0xd5e4, 0x3000 },

-  { 0x8901, 0xd5e2, 0x2000 },

-  { 0x0901, 0xd5e1, 0x0000 },

-  { 0x0901, 0xd5e3, 0x0000 },

-  { 0x8901, 0xd5e6, 0x2000 },

-  { 0x0901, 0xd5e5, 0x0000 },

-  { 0x0901, 0xd5e7, 0x0000 },

-  { 0x8901, 0xd5ec, 0x3000 },

-  { 0x8901, 0xd5ea, 0x2000 },

-  { 0x0901, 0xd5e9, 0x0000 },

-  { 0x0901, 0xd5eb, 0x0000 },

-  { 0x8501, 0xd5ee, 0x2000 },

-  { 0x0901, 0xd5ed, 0x0000 },

-  { 0x0501, 0xd5ef, 0x0000 },

-  { 0x8501, 0xd630, 0x7000 },

-  { 0x8901, 0xd610, 0x6000 },

-  { 0x8501, 0xd600, 0x5000 },

-  { 0x8501, 0xd5f8, 0x4000 },

-  { 0x8501, 0xd5f4, 0x3000 },

-  { 0x8501, 0xd5f2, 0x2000 },

-  { 0x0501, 0xd5f1, 0x0000 },

-  { 0x0501, 0xd5f3, 0x0000 },

-  { 0x8501, 0xd5f6, 0x2000 },

-  { 0x0501, 0xd5f5, 0x0000 },

-  { 0x0501, 0xd5f7, 0x0000 },

-  { 0x8501, 0xd5fc, 0x3000 },

-  { 0x8501, 0xd5fa, 0x2000 },

-  { 0x0501, 0xd5f9, 0x0000 },

-  { 0x0501, 0xd5fb, 0x0000 },

-  { 0x8501, 0xd5fe, 0x2000 },

-  { 0x0501, 0xd5fd, 0x0000 },

-  { 0x0501, 0xd5ff, 0x0000 },

-  { 0x8901, 0xd608, 0x4000 },

-  { 0x8501, 0xd604, 0x3000 },

-  { 0x8501, 0xd602, 0x2000 },

-  { 0x0501, 0xd601, 0x0000 },

-  { 0x0501, 0xd603, 0x0000 },

-  { 0x8501, 0xd606, 0x2000 },

-  { 0x0501, 0xd605, 0x0000 },

-  { 0x0501, 0xd607, 0x0000 },

-  { 0x8901, 0xd60c, 0x3000 },

-  { 0x8901, 0xd60a, 0x2000 },

-  { 0x0901, 0xd609, 0x0000 },

-  { 0x0901, 0xd60b, 0x0000 },

-  { 0x8901, 0xd60e, 0x2000 },

-  { 0x0901, 0xd60d, 0x0000 },

-  { 0x0901, 0xd60f, 0x0000 },

-  { 0x8901, 0xd620, 0x5000 },

-  { 0x8901, 0xd618, 0x4000 },

-  { 0x8901, 0xd614, 0x3000 },

-  { 0x8901, 0xd612, 0x2000 },

-  { 0x0901, 0xd611, 0x0000 },

-  { 0x0901, 0xd613, 0x0000 },

-  { 0x8901, 0xd616, 0x2000 },

-  { 0x0901, 0xd615, 0x0000 },

-  { 0x0901, 0xd617, 0x0000 },

-  { 0x8901, 0xd61c, 0x3000 },

-  { 0x8901, 0xd61a, 0x2000 },

-  { 0x0901, 0xd619, 0x0000 },

-  { 0x0901, 0xd61b, 0x0000 },

-  { 0x8901, 0xd61e, 0x2000 },

-  { 0x0901, 0xd61d, 0x0000 },

-  { 0x0901, 0xd61f, 0x0000 },

-  { 0x8501, 0xd628, 0x4000 },

-  { 0x8501, 0xd624, 0x3000 },

-  { 0x8501, 0xd622, 0x2000 },

-  { 0x0901, 0xd621, 0x0000 },

-  { 0x0501, 0xd623, 0x0000 },

-  { 0x8501, 0xd626, 0x2000 },

-  { 0x0501, 0xd625, 0x0000 },

-  { 0x0501, 0xd627, 0x0000 },

-  { 0x8501, 0xd62c, 0x3000 },

-  { 0x8501, 0xd62a, 0x2000 },

-  { 0x0501, 0xd629, 0x0000 },

-  { 0x0501, 0xd62b, 0x0000 },

-  { 0x8501, 0xd62e, 0x2000 },

-  { 0x0501, 0xd62d, 0x0000 },

-  { 0x0501, 0xd62f, 0x0000 },

-  { 0x8901, 0xd650, 0x6000 },

-  { 0x8901, 0xd640, 0x5000 },

-  { 0x8501, 0xd638, 0x4000 },

-  { 0x8501, 0xd634, 0x3000 },

-  { 0x8501, 0xd632, 0x2000 },

-  { 0x0501, 0xd631, 0x0000 },

-  { 0x0501, 0xd633, 0x0000 },

-  { 0x8501, 0xd636, 0x2000 },

-  { 0x0501, 0xd635, 0x0000 },

-  { 0x0501, 0xd637, 0x0000 },

-  { 0x8901, 0xd63c, 0x3000 },

-  { 0x8501, 0xd63a, 0x2000 },

-  { 0x0501, 0xd639, 0x0000 },

-  { 0x0501, 0xd63b, 0x0000 },

-  { 0x8901, 0xd63e, 0x2000 },

-  { 0x0901, 0xd63d, 0x0000 },

-  { 0x0901, 0xd63f, 0x0000 },

-  { 0x8901, 0xd648, 0x4000 },

-  { 0x8901, 0xd644, 0x3000 },

-  { 0x8901, 0xd642, 0x2000 },

-  { 0x0901, 0xd641, 0x0000 },

-  { 0x0901, 0xd643, 0x0000 },

-  { 0x8901, 0xd646, 0x2000 },

-  { 0x0901, 0xd645, 0x0000 },

-  { 0x0901, 0xd647, 0x0000 },

-  { 0x8901, 0xd64c, 0x3000 },

-  { 0x8901, 0xd64a, 0x2000 },

-  { 0x0901, 0xd649, 0x0000 },

-  { 0x0901, 0xd64b, 0x0000 },

-  { 0x8901, 0xd64e, 0x2000 },

-  { 0x0901, 0xd64d, 0x0000 },

-  { 0x0901, 0xd64f, 0x0000 },

-  { 0x8501, 0xd660, 0x5000 },

-  { 0x8501, 0xd658, 0x4000 },

-  { 0x8901, 0xd654, 0x3000 },

-  { 0x8901, 0xd652, 0x2000 },

-  { 0x0901, 0xd651, 0x0000 },

-  { 0x0901, 0xd653, 0x0000 },

-  { 0x8501, 0xd656, 0x2000 },

-  { 0x0901, 0xd655, 0x0000 },

-  { 0x0501, 0xd657, 0x0000 },

-  { 0x8501, 0xd65c, 0x3000 },

-  { 0x8501, 0xd65a, 0x2000 },

-  { 0x0501, 0xd659, 0x0000 },

-  { 0x0501, 0xd65b, 0x0000 },

-  { 0x8501, 0xd65e, 0x2000 },

-  { 0x0501, 0xd65d, 0x0000 },

-  { 0x0501, 0xd65f, 0x0000 },

-  { 0x8501, 0xd668, 0x4000 },

-  { 0x8501, 0xd664, 0x3000 },

-  { 0x8501, 0xd662, 0x2000 },

-  { 0x0501, 0xd661, 0x0000 },

-  { 0x0501, 0xd663, 0x0000 },

-  { 0x8501, 0xd666, 0x2000 },

-  { 0x0501, 0xd665, 0x0000 },

-  { 0x0501, 0xd667, 0x0000 },

-  { 0x8501, 0xd66c, 0x3000 },

-  { 0x8501, 0xd66a, 0x2000 },

-  { 0x0501, 0xd669, 0x0000 },

-  { 0x0501, 0xd66b, 0x0000 },

-  { 0x8501, 0xd66e, 0x2000 },

-  { 0x0501, 0xd66d, 0x0000 },

-  { 0x0501, 0xd66f, 0x0000 },

-  { 0x8501, 0xd774, 0x9000 },

-  { 0x8901, 0xd6f4, 0x8000 },

-  { 0x8901, 0xd6b4, 0x7000 },

-  { 0x8501, 0xd690, 0x6000 },

-  { 0x8901, 0xd680, 0x5000 },

-  { 0x8901, 0xd678, 0x4000 },

-  { 0x8901, 0xd674, 0x3000 },

-  { 0x8901, 0xd672, 0x2000 },

-  { 0x0901, 0xd671, 0x0000 },

-  { 0x0901, 0xd673, 0x0000 },

-  { 0x8901, 0xd676, 0x2000 },

-  { 0x0901, 0xd675, 0x0000 },

-  { 0x0901, 0xd677, 0x0000 },

-  { 0x8901, 0xd67c, 0x3000 },

-  { 0x8901, 0xd67a, 0x2000 },

-  { 0x0901, 0xd679, 0x0000 },

-  { 0x0901, 0xd67b, 0x0000 },

-  { 0x8901, 0xd67e, 0x2000 },

-  { 0x0901, 0xd67d, 0x0000 },

-  { 0x0901, 0xd67f, 0x0000 },

-  { 0x8901, 0xd688, 0x4000 },

-  { 0x8901, 0xd684, 0x3000 },

-  { 0x8901, 0xd682, 0x2000 },

-  { 0x0901, 0xd681, 0x0000 },

-  { 0x0901, 0xd683, 0x0000 },

-  { 0x8901, 0xd686, 0x2000 },

-  { 0x0901, 0xd685, 0x0000 },

-  { 0x0901, 0xd687, 0x0000 },

-  { 0x8501, 0xd68c, 0x3000 },

-  { 0x8501, 0xd68a, 0x2000 },

-  { 0x0901, 0xd689, 0x0000 },

-  { 0x0501, 0xd68b, 0x0000 },

-  { 0x8501, 0xd68e, 0x2000 },

-  { 0x0501, 0xd68d, 0x0000 },

-  { 0x0501, 0xd68f, 0x0000 },

-  { 0x8501, 0xd6a0, 0x5000 },

-  { 0x8501, 0xd698, 0x4000 },

-  { 0x8501, 0xd694, 0x3000 },

-  { 0x8501, 0xd692, 0x2000 },

-  { 0x0501, 0xd691, 0x0000 },

-  { 0x0501, 0xd693, 0x0000 },

-  { 0x8501, 0xd696, 0x2000 },

-  { 0x0501, 0xd695, 0x0000 },

-  { 0x0501, 0xd697, 0x0000 },

-  { 0x8501, 0xd69c, 0x3000 },

-  { 0x8501, 0xd69a, 0x2000 },

-  { 0x0501, 0xd699, 0x0000 },

-  { 0x0501, 0xd69b, 0x0000 },

-  { 0x8501, 0xd69e, 0x2000 },

-  { 0x0501, 0xd69d, 0x0000 },

-  { 0x0501, 0xd69f, 0x0000 },

-  { 0x8901, 0xd6ac, 0x4000 },

-  { 0x8901, 0xd6a8, 0x3000 },

-  { 0x8501, 0xd6a2, 0x2000 },

-  { 0x0501, 0xd6a1, 0x0000 },

-  { 0x0501, 0xd6a3, 0x0000 },

-  { 0x8901, 0xd6aa, 0x2000 },

-  { 0x0901, 0xd6a9, 0x0000 },

-  { 0x0901, 0xd6ab, 0x0000 },

-  { 0x8901, 0xd6b0, 0x3000 },

-  { 0x8901, 0xd6ae, 0x2000 },

-  { 0x0901, 0xd6ad, 0x0000 },

-  { 0x0901, 0xd6af, 0x0000 },

-  { 0x8901, 0xd6b2, 0x2000 },

-  { 0x0901, 0xd6b1, 0x0000 },

-  { 0x0901, 0xd6b3, 0x0000 },

-  { 0x8501, 0xd6d4, 0x6000 },

-  { 0x8501, 0xd6c4, 0x5000 },

-  { 0x8901, 0xd6bc, 0x4000 },

-  { 0x8901, 0xd6b8, 0x3000 },

-  { 0x8901, 0xd6b6, 0x2000 },

-  { 0x0901, 0xd6b5, 0x0000 },

-  { 0x0901, 0xd6b7, 0x0000 },

-  { 0x8901, 0xd6ba, 0x2000 },

-  { 0x0901, 0xd6b9, 0x0000 },

-  { 0x0901, 0xd6bb, 0x0000 },

-  { 0x8901, 0xd6c0, 0x3000 },

-  { 0x8901, 0xd6be, 0x2000 },

-  { 0x0901, 0xd6bd, 0x0000 },

-  { 0x0901, 0xd6bf, 0x0000 },

-  { 0x8501, 0xd6c2, 0x2000 },

-  { 0x1901, 0xd6c1, 0x0000 },

-  { 0x0501, 0xd6c3, 0x0000 },

-  { 0x8501, 0xd6cc, 0x4000 },

-  { 0x8501, 0xd6c8, 0x3000 },

-  { 0x8501, 0xd6c6, 0x2000 },

-  { 0x0501, 0xd6c5, 0x0000 },

-  { 0x0501, 0xd6c7, 0x0000 },

-  { 0x8501, 0xd6ca, 0x2000 },

-  { 0x0501, 0xd6c9, 0x0000 },

-  { 0x0501, 0xd6cb, 0x0000 },

-  { 0x8501, 0xd6d0, 0x3000 },

-  { 0x8501, 0xd6ce, 0x2000 },

-  { 0x0501, 0xd6cd, 0x0000 },

-  { 0x0501, 0xd6cf, 0x0000 },

-  { 0x8501, 0xd6d2, 0x2000 },

-  { 0x0501, 0xd6d1, 0x0000 },

-  { 0x0501, 0xd6d3, 0x0000 },

-  { 0x8901, 0xd6e4, 0x5000 },

-  { 0x8501, 0xd6dc, 0x4000 },

-  { 0x8501, 0xd6d8, 0x3000 },

-  { 0x8501, 0xd6d6, 0x2000 },

-  { 0x0501, 0xd6d5, 0x0000 },

-  { 0x0501, 0xd6d7, 0x0000 },

-  { 0x8501, 0xd6da, 0x2000 },

-  { 0x0501, 0xd6d9, 0x0000 },

-  { 0x1901, 0xd6db, 0x0000 },

-  { 0x8501, 0xd6e0, 0x3000 },

-  { 0x8501, 0xd6de, 0x2000 },

-  { 0x0501, 0xd6dd, 0x0000 },

-  { 0x0501, 0xd6df, 0x0000 },

-  { 0x8901, 0xd6e2, 0x2000 },

-  { 0x0501, 0xd6e1, 0x0000 },

-  { 0x0901, 0xd6e3, 0x0000 },

-  { 0x8901, 0xd6ec, 0x4000 },

-  { 0x8901, 0xd6e8, 0x3000 },

-  { 0x8901, 0xd6e6, 0x2000 },

-  { 0x0901, 0xd6e5, 0x0000 },

-  { 0x0901, 0xd6e7, 0x0000 },

-  { 0x8901, 0xd6ea, 0x2000 },

-  { 0x0901, 0xd6e9, 0x0000 },

-  { 0x0901, 0xd6eb, 0x0000 },

-  { 0x8901, 0xd6f0, 0x3000 },

-  { 0x8901, 0xd6ee, 0x2000 },

-  { 0x0901, 0xd6ed, 0x0000 },

-  { 0x0901, 0xd6ef, 0x0000 },

-  { 0x8901, 0xd6f2, 0x2000 },

-  { 0x0901, 0xd6f1, 0x0000 },

-  { 0x0901, 0xd6f3, 0x0000 },

-  { 0x8901, 0xd734, 0x7000 },

-  { 0x8501, 0xd714, 0x6000 },

-  { 0x8501, 0xd704, 0x5000 },

-  { 0x8501, 0xd6fc, 0x4000 },

-  { 0x8901, 0xd6f8, 0x3000 },

-  { 0x8901, 0xd6f6, 0x2000 },

-  { 0x0901, 0xd6f5, 0x0000 },

-  { 0x0901, 0xd6f7, 0x0000 },

-  { 0x8901, 0xd6fa, 0x2000 },

-  { 0x0901, 0xd6f9, 0x0000 },

-  { 0x1901, 0xd6fb, 0x0000 },

-  { 0x8501, 0xd700, 0x3000 },

-  { 0x8501, 0xd6fe, 0x2000 },

-  { 0x0501, 0xd6fd, 0x0000 },

-  { 0x0501, 0xd6ff, 0x0000 },

-  { 0x8501, 0xd702, 0x2000 },

-  { 0x0501, 0xd701, 0x0000 },

-  { 0x0501, 0xd703, 0x0000 },

-  { 0x8501, 0xd70c, 0x4000 },

-  { 0x8501, 0xd708, 0x3000 },

-  { 0x8501, 0xd706, 0x2000 },

-  { 0x0501, 0xd705, 0x0000 },

-  { 0x0501, 0xd707, 0x0000 },

-  { 0x8501, 0xd70a, 0x2000 },

-  { 0x0501, 0xd709, 0x0000 },

-  { 0x0501, 0xd70b, 0x0000 },

-  { 0x8501, 0xd710, 0x3000 },

-  { 0x8501, 0xd70e, 0x2000 },

-  { 0x0501, 0xd70d, 0x0000 },

-  { 0x0501, 0xd70f, 0x0000 },

-  { 0x8501, 0xd712, 0x2000 },

-  { 0x0501, 0xd711, 0x0000 },

-  { 0x0501, 0xd713, 0x0000 },

-  { 0x8901, 0xd724, 0x5000 },

-  { 0x8901, 0xd71c, 0x4000 },

-  { 0x8501, 0xd718, 0x3000 },

-  { 0x8501, 0xd716, 0x2000 },

-  { 0x1901, 0xd715, 0x0000 },

-  { 0x0501, 0xd717, 0x0000 },

-  { 0x8501, 0xd71a, 0x2000 },

-  { 0x0501, 0xd719, 0x0000 },

-  { 0x0501, 0xd71b, 0x0000 },

-  { 0x8901, 0xd720, 0x3000 },

-  { 0x8901, 0xd71e, 0x2000 },

-  { 0x0901, 0xd71d, 0x0000 },

-  { 0x0901, 0xd71f, 0x0000 },

-  { 0x8901, 0xd722, 0x2000 },

-  { 0x0901, 0xd721, 0x0000 },

-  { 0x0901, 0xd723, 0x0000 },

-  { 0x8901, 0xd72c, 0x4000 },

-  { 0x8901, 0xd728, 0x3000 },

-  { 0x8901, 0xd726, 0x2000 },

-  { 0x0901, 0xd725, 0x0000 },

-  { 0x0901, 0xd727, 0x0000 },

-  { 0x8901, 0xd72a, 0x2000 },

-  { 0x0901, 0xd729, 0x0000 },

-  { 0x0901, 0xd72b, 0x0000 },

-  { 0x8901, 0xd730, 0x3000 },

-  { 0x8901, 0xd72e, 0x2000 },

-  { 0x0901, 0xd72d, 0x0000 },

-  { 0x0901, 0xd72f, 0x0000 },

-  { 0x8901, 0xd732, 0x2000 },

-  { 0x0901, 0xd731, 0x0000 },

-  { 0x0901, 0xd733, 0x0000 },

-  { 0x8501, 0xd754, 0x6000 },

-  { 0x8501, 0xd744, 0x5000 },

-  { 0x8501, 0xd73c, 0x4000 },

-  { 0x8501, 0xd738, 0x3000 },

-  { 0x8501, 0xd736, 0x2000 },

-  { 0x1901, 0xd735, 0x0000 },

-  { 0x0501, 0xd737, 0x0000 },

-  { 0x8501, 0xd73a, 0x2000 },

-  { 0x0501, 0xd739, 0x0000 },

-  { 0x0501, 0xd73b, 0x0000 },

-  { 0x8501, 0xd740, 0x3000 },

-  { 0x8501, 0xd73e, 0x2000 },

-  { 0x0501, 0xd73d, 0x0000 },

-  { 0x0501, 0xd73f, 0x0000 },

-  { 0x8501, 0xd742, 0x2000 },

-  { 0x0501, 0xd741, 0x0000 },

-  { 0x0501, 0xd743, 0x0000 },

-  { 0x8501, 0xd74c, 0x4000 },

-  { 0x8501, 0xd748, 0x3000 },

-  { 0x8501, 0xd746, 0x2000 },

-  { 0x0501, 0xd745, 0x0000 },

-  { 0x0501, 0xd747, 0x0000 },

-  { 0x8501, 0xd74a, 0x2000 },

-  { 0x0501, 0xd749, 0x0000 },

-  { 0x0501, 0xd74b, 0x0000 },

-  { 0x8501, 0xd750, 0x3000 },

-  { 0x8501, 0xd74e, 0x2000 },

-  { 0x0501, 0xd74d, 0x0000 },

-  { 0x1901, 0xd74f, 0x0000 },

-  { 0x8501, 0xd752, 0x2000 },

-  { 0x0501, 0xd751, 0x0000 },

-  { 0x0501, 0xd753, 0x0000 },

-  { 0x8901, 0xd764, 0x5000 },

-  { 0x8901, 0xd75c, 0x4000 },

-  { 0x8901, 0xd758, 0x3000 },

-  { 0x8901, 0xd756, 0x2000 },

-  { 0x0501, 0xd755, 0x0000 },

-  { 0x0901, 0xd757, 0x0000 },

-  { 0x8901, 0xd75a, 0x2000 },

-  { 0x0901, 0xd759, 0x0000 },

-  { 0x0901, 0xd75b, 0x0000 },

-  { 0x8901, 0xd760, 0x3000 },

-  { 0x8901, 0xd75e, 0x2000 },

-  { 0x0901, 0xd75d, 0x0000 },

-  { 0x0901, 0xd75f, 0x0000 },

-  { 0x8901, 0xd762, 0x2000 },

-  { 0x0901, 0xd761, 0x0000 },

-  { 0x0901, 0xd763, 0x0000 },

-  { 0x8901, 0xd76c, 0x4000 },

-  { 0x8901, 0xd768, 0x3000 },

-  { 0x8901, 0xd766, 0x2000 },

-  { 0x0901, 0xd765, 0x0000 },

-  { 0x0901, 0xd767, 0x0000 },

-  { 0x8901, 0xd76a, 0x2000 },

-  { 0x0901, 0xd769, 0x0000 },

-  { 0x0901, 0xd76b, 0x0000 },

-  { 0x8501, 0xd770, 0x3000 },

-  { 0x8901, 0xd76e, 0x2000 },

-  { 0x0901, 0xd76d, 0x0000 },

-  { 0x1901, 0xd76f, 0x0000 },

-  { 0x8501, 0xd772, 0x2000 },

-  { 0x0501, 0xd771, 0x0000 },

-  { 0x0501, 0xd773, 0x0000 },

-  { 0x8d01, 0xd7f8, 0x8000 },

-  { 0x8501, 0xd7b4, 0x7000 },

-  { 0x8901, 0xd794, 0x6000 },

-  { 0x8501, 0xd784, 0x5000 },

-  { 0x8501, 0xd77c, 0x4000 },

-  { 0x8501, 0xd778, 0x3000 },

-  { 0x8501, 0xd776, 0x2000 },

-  { 0x0501, 0xd775, 0x0000 },

-  { 0x0501, 0xd777, 0x0000 },

-  { 0x8501, 0xd77a, 0x2000 },

-  { 0x0501, 0xd779, 0x0000 },

-  { 0x0501, 0xd77b, 0x0000 },

-  { 0x8501, 0xd780, 0x3000 },

-  { 0x8501, 0xd77e, 0x2000 },

-  { 0x0501, 0xd77d, 0x0000 },

-  { 0x0501, 0xd77f, 0x0000 },

-  { 0x8501, 0xd782, 0x2000 },

-  { 0x0501, 0xd781, 0x0000 },

-  { 0x0501, 0xd783, 0x0000 },

-  { 0x8501, 0xd78c, 0x4000 },

-  { 0x8501, 0xd788, 0x3000 },

-  { 0x8501, 0xd786, 0x2000 },

-  { 0x0501, 0xd785, 0x0000 },

-  { 0x0501, 0xd787, 0x0000 },

-  { 0x8501, 0xd78a, 0x2000 },

-  { 0x1901, 0xd789, 0x0000 },

-  { 0x0501, 0xd78b, 0x0000 },

-  { 0x8901, 0xd790, 0x3000 },

-  { 0x8501, 0xd78e, 0x2000 },

-  { 0x0501, 0xd78d, 0x0000 },

-  { 0x0501, 0xd78f, 0x0000 },

-  { 0x8901, 0xd792, 0x2000 },

-  { 0x0901, 0xd791, 0x0000 },

-  { 0x0901, 0xd793, 0x0000 },

-  { 0x8901, 0xd7a4, 0x5000 },

-  { 0x8901, 0xd79c, 0x4000 },

-  { 0x8901, 0xd798, 0x3000 },

-  { 0x8901, 0xd796, 0x2000 },

-  { 0x0901, 0xd795, 0x0000 },

-  { 0x0901, 0xd797, 0x0000 },

-  { 0x8901, 0xd79a, 0x2000 },

-  { 0x0901, 0xd799, 0x0000 },

-  { 0x0901, 0xd79b, 0x0000 },

-  { 0x8901, 0xd7a0, 0x3000 },

-  { 0x8901, 0xd79e, 0x2000 },

-  { 0x0901, 0xd79d, 0x0000 },

-  { 0x0901, 0xd79f, 0x0000 },

-  { 0x8901, 0xd7a2, 0x2000 },

-  { 0x0901, 0xd7a1, 0x0000 },

-  { 0x0901, 0xd7a3, 0x0000 },

-  { 0x8501, 0xd7ac, 0x4000 },

-  { 0x8901, 0xd7a8, 0x3000 },

-  { 0x8901, 0xd7a6, 0x2000 },

-  { 0x0901, 0xd7a5, 0x0000 },

-  { 0x0901, 0xd7a7, 0x0000 },

-  { 0x8501, 0xd7aa, 0x2000 },

-  { 0x1901, 0xd7a9, 0x0000 },

-  { 0x0501, 0xd7ab, 0x0000 },

-  { 0x8501, 0xd7b0, 0x3000 },

-  { 0x8501, 0xd7ae, 0x2000 },

-  { 0x0501, 0xd7ad, 0x0000 },

-  { 0x0501, 0xd7af, 0x0000 },

-  { 0x8501, 0xd7b2, 0x2000 },

-  { 0x0501, 0xd7b1, 0x0000 },

-  { 0x0501, 0xd7b3, 0x0000 },

-  { 0x8d01, 0xd7d8, 0x6000 },

-  { 0x8501, 0xd7c4, 0x5000 },

-  { 0x8501, 0xd7bc, 0x4000 },

-  { 0x8501, 0xd7b8, 0x3000 },

-  { 0x8501, 0xd7b6, 0x2000 },

-  { 0x0501, 0xd7b5, 0x0000 },

-  { 0x0501, 0xd7b7, 0x0000 },

-  { 0x8501, 0xd7ba, 0x2000 },

-  { 0x0501, 0xd7b9, 0x0000 },

-  { 0x0501, 0xd7bb, 0x0000 },

-  { 0x8501, 0xd7c0, 0x3000 },

-  { 0x8501, 0xd7be, 0x2000 },

-  { 0x0501, 0xd7bd, 0x0000 },

-  { 0x0501, 0xd7bf, 0x0000 },

-  { 0x8501, 0xd7c2, 0x2000 },

-  { 0x0501, 0xd7c1, 0x0000 },

-  { 0x1901, 0xd7c3, 0x0000 },

-  { 0x8d01, 0xd7d0, 0x4000 },

-  { 0x8501, 0xd7c8, 0x3000 },

-  { 0x8501, 0xd7c6, 0x2000 },

-  { 0x0501, 0xd7c5, 0x0000 },

-  { 0x0501, 0xd7c7, 0x0000 },

-  { 0x8d01, 0xd7ce, 0x2000 },

-  { 0x0501, 0xd7c9, 0x0000 },

-  { 0x0d01, 0xd7cf, 0x0000 },

-  { 0x8d01, 0xd7d4, 0x3000 },

-  { 0x8d01, 0xd7d2, 0x2000 },

-  { 0x0d01, 0xd7d1, 0x0000 },

-  { 0x0d01, 0xd7d3, 0x0000 },

-  { 0x8d01, 0xd7d6, 0x2000 },

-  { 0x0d01, 0xd7d5, 0x0000 },

-  { 0x0d01, 0xd7d7, 0x0000 },

-  { 0x8d01, 0xd7e8, 0x5000 },

-  { 0x8d01, 0xd7e0, 0x4000 },

-  { 0x8d01, 0xd7dc, 0x3000 },

-  { 0x8d01, 0xd7da, 0x2000 },

-  { 0x0d01, 0xd7d9, 0x0000 },

-  { 0x0d01, 0xd7db, 0x0000 },

-  { 0x8d01, 0xd7de, 0x2000 },

-  { 0x0d01, 0xd7dd, 0x0000 },

-  { 0x0d01, 0xd7df, 0x0000 },

-  { 0x8d01, 0xd7e4, 0x3000 },

-  { 0x8d01, 0xd7e2, 0x2000 },

-  { 0x0d01, 0xd7e1, 0x0000 },

-  { 0x0d01, 0xd7e3, 0x0000 },

-  { 0x8d01, 0xd7e6, 0x2000 },

-  { 0x0d01, 0xd7e5, 0x0000 },

-  { 0x0d01, 0xd7e7, 0x0000 },

-  { 0x8d01, 0xd7f0, 0x4000 },

-  { 0x8d01, 0xd7ec, 0x3000 },

-  { 0x8d01, 0xd7ea, 0x2000 },

-  { 0x0d01, 0xd7e9, 0x0000 },

-  { 0x0d01, 0xd7eb, 0x0000 },

-  { 0x8d01, 0xd7ee, 0x2000 },

-  { 0x0d01, 0xd7ed, 0x0000 },

-  { 0x0d01, 0xd7ef, 0x0000 },

-  { 0x8d01, 0xd7f4, 0x3000 },

-  { 0x8d01, 0xd7f2, 0x2000 },

-  { 0x0d01, 0xd7f1, 0x0000 },

-  { 0x0d01, 0xd7f3, 0x0000 },

-  { 0x8d01, 0xd7f6, 0x2000 },

-  { 0x0d01, 0xd7f5, 0x0000 },

-  { 0x0d01, 0xd7f7, 0x0000 },

-  { 0x8702, 0xf836, 0x7000 },

-  { 0x8702, 0xf816, 0x6000 },

-  { 0x8702, 0xf806, 0x5000 },

-  { 0x8702, 0x0000, 0x4000 },

-  { 0x8d01, 0xd7fc, 0x3000 },

-  { 0x8d01, 0xd7fa, 0x2000 },

-  { 0x0d01, 0xd7f9, 0x0000 },

-  { 0x0d01, 0xd7fb, 0x0000 },

-  { 0x8d01, 0xd7fe, 0x2000 },

-  { 0x0d01, 0xd7fd, 0x0000 },

-  { 0x0d01, 0xd7ff, 0x0000 },

-  { 0x8702, 0xf802, 0x3000 },

-  { 0x8702, 0xf800, 0x2000 },

-  { 0x0702, 0xa6d6, 0x0000 },

-  { 0x0702, 0xf801, 0x0000 },

-  { 0x8702, 0xf804, 0x2000 },

-  { 0x0702, 0xf803, 0x0000 },

-  { 0x0702, 0xf805, 0x0000 },

-  { 0x8702, 0xf80e, 0x4000 },

-  { 0x8702, 0xf80a, 0x3000 },

-  { 0x8702, 0xf808, 0x2000 },

-  { 0x0702, 0xf807, 0x0000 },

-  { 0x0702, 0xf809, 0x0000 },

-  { 0x8702, 0xf80c, 0x2000 },

-  { 0x0702, 0xf80b, 0x0000 },

-  { 0x0702, 0xf80d, 0x0000 },

-  { 0x8702, 0xf812, 0x3000 },

-  { 0x8702, 0xf810, 0x2000 },

-  { 0x0702, 0xf80f, 0x0000 },

-  { 0x0702, 0xf811, 0x0000 },

-  { 0x8702, 0xf814, 0x2000 },

-  { 0x0702, 0xf813, 0x0000 },

-  { 0x0702, 0xf815, 0x0000 },

-  { 0x8702, 0xf826, 0x5000 },

-  { 0x8702, 0xf81e, 0x4000 },

-  { 0x8702, 0xf81a, 0x3000 },

-  { 0x8702, 0xf818, 0x2000 },

-  { 0x0702, 0xf817, 0x0000 },

-  { 0x0702, 0xf819, 0x0000 },

-  { 0x8702, 0xf81c, 0x2000 },

-  { 0x0702, 0xf81b, 0x0000 },

-  { 0x0702, 0xf81d, 0x0000 },

-  { 0x8702, 0xf822, 0x3000 },

-  { 0x8702, 0xf820, 0x2000 },

-  { 0x0702, 0xf81f, 0x0000 },

-  { 0x0702, 0xf821, 0x0000 },

-  { 0x8702, 0xf824, 0x2000 },

-  { 0x0702, 0xf823, 0x0000 },

-  { 0x0702, 0xf825, 0x0000 },

-  { 0x8702, 0xf82e, 0x4000 },

-  { 0x8702, 0xf82a, 0x3000 },

-  { 0x8702, 0xf828, 0x2000 },

-  { 0x0702, 0xf827, 0x0000 },

-  { 0x0702, 0xf829, 0x0000 },

-  { 0x8702, 0xf82c, 0x2000 },

-  { 0x0702, 0xf82b, 0x0000 },

-  { 0x0702, 0xf82d, 0x0000 },

-  { 0x8702, 0xf832, 0x3000 },

-  { 0x8702, 0xf830, 0x2000 },

-  { 0x0702, 0xf82f, 0x0000 },

-  { 0x0702, 0xf831, 0x0000 },

-  { 0x8702, 0xf834, 0x2000 },

-  { 0x0702, 0xf833, 0x0000 },

-  { 0x0702, 0xf835, 0x0000 },

-  { 0x8702, 0xf856, 0x6000 },

-  { 0x8702, 0xf846, 0x5000 },

-  { 0x8702, 0xf83e, 0x4000 },

-  { 0x8702, 0xf83a, 0x3000 },

-  { 0x8702, 0xf838, 0x2000 },

-  { 0x0702, 0xf837, 0x0000 },

-  { 0x0702, 0xf839, 0x0000 },

-  { 0x8702, 0xf83c, 0x2000 },

-  { 0x0702, 0xf83b, 0x0000 },

-  { 0x0702, 0xf83d, 0x0000 },

-  { 0x8702, 0xf842, 0x3000 },

-  { 0x8702, 0xf840, 0x2000 },

-  { 0x0702, 0xf83f, 0x0000 },

-  { 0x0702, 0xf841, 0x0000 },

-  { 0x8702, 0xf844, 0x2000 },

-  { 0x0702, 0xf843, 0x0000 },

-  { 0x0702, 0xf845, 0x0000 },

-  { 0x8702, 0xf84e, 0x4000 },

-  { 0x8702, 0xf84a, 0x3000 },

-  { 0x8702, 0xf848, 0x2000 },

-  { 0x0702, 0xf847, 0x0000 },

-  { 0x0702, 0xf849, 0x0000 },

-  { 0x8702, 0xf84c, 0x2000 },

-  { 0x0702, 0xf84b, 0x0000 },

-  { 0x0702, 0xf84d, 0x0000 },

-  { 0x8702, 0xf852, 0x3000 },

-  { 0x8702, 0xf850, 0x2000 },

-  { 0x0702, 0xf84f, 0x0000 },

-  { 0x0702, 0xf851, 0x0000 },

-  { 0x8702, 0xf854, 0x2000 },

-  { 0x0702, 0xf853, 0x0000 },

-  { 0x0702, 0xf855, 0x0000 },

-  { 0x8702, 0xf866, 0x5000 },

-  { 0x8702, 0xf85e, 0x4000 },

-  { 0x8702, 0xf85a, 0x3000 },

-  { 0x8702, 0xf858, 0x2000 },

-  { 0x0702, 0xf857, 0x0000 },

-  { 0x0702, 0xf859, 0x0000 },

-  { 0x8702, 0xf85c, 0x2000 },

-  { 0x0702, 0xf85b, 0x0000 },

-  { 0x0702, 0xf85d, 0x0000 },

-  { 0x8702, 0xf862, 0x3000 },

-  { 0x8702, 0xf860, 0x2000 },

-  { 0x0702, 0xf85f, 0x0000 },

-  { 0x0702, 0xf861, 0x0000 },

-  { 0x8702, 0xf864, 0x2000 },

-  { 0x0702, 0xf863, 0x0000 },

-  { 0x0702, 0xf865, 0x0000 },

-  { 0x8702, 0xf86e, 0x4000 },

-  { 0x8702, 0xf86a, 0x3000 },

-  { 0x8702, 0xf868, 0x2000 },

-  { 0x0702, 0xf867, 0x0000 },

-  { 0x0702, 0xf869, 0x0000 },

-  { 0x8702, 0xf86c, 0x2000 },

-  { 0x0702, 0xf86b, 0x0000 },

-  { 0x0702, 0xf86d, 0x0000 },

-  { 0x8702, 0xf872, 0x3000 },

-  { 0x8702, 0xf870, 0x2000 },

-  { 0x0702, 0xf86f, 0x0000 },

-  { 0x0702, 0xf871, 0x0000 },

-  { 0x8702, 0xf874, 0x2000 },

-  { 0x0702, 0xf873, 0x0000 },

-  { 0x0702, 0xf875, 0x0000 },

-  { 0x8702, 0xf976, 0x9000 },

-  { 0x8702, 0xf8f6, 0x8000 },

-  { 0x8702, 0xf8b6, 0x7000 },

-  { 0x8702, 0xf896, 0x6000 },

-  { 0x8702, 0xf886, 0x5000 },

-  { 0x8702, 0xf87e, 0x4000 },

-  { 0x8702, 0xf87a, 0x3000 },

-  { 0x8702, 0xf878, 0x2000 },

-  { 0x0702, 0xf877, 0x0000 },

-  { 0x0702, 0xf879, 0x0000 },

-  { 0x8702, 0xf87c, 0x2000 },

-  { 0x0702, 0xf87b, 0x0000 },

-  { 0x0702, 0xf87d, 0x0000 },

-  { 0x8702, 0xf882, 0x3000 },

-  { 0x8702, 0xf880, 0x2000 },

-  { 0x0702, 0xf87f, 0x0000 },

-  { 0x0702, 0xf881, 0x0000 },

-  { 0x8702, 0xf884, 0x2000 },

-  { 0x0702, 0xf883, 0x0000 },

-  { 0x0702, 0xf885, 0x0000 },

-  { 0x8702, 0xf88e, 0x4000 },

-  { 0x8702, 0xf88a, 0x3000 },

-  { 0x8702, 0xf888, 0x2000 },

-  { 0x0702, 0xf887, 0x0000 },

-  { 0x0702, 0xf889, 0x0000 },

-  { 0x8702, 0xf88c, 0x2000 },

-  { 0x0702, 0xf88b, 0x0000 },

-  { 0x0702, 0xf88d, 0x0000 },

-  { 0x8702, 0xf892, 0x3000 },

-  { 0x8702, 0xf890, 0x2000 },

-  { 0x0702, 0xf88f, 0x0000 },

-  { 0x0702, 0xf891, 0x0000 },

-  { 0x8702, 0xf894, 0x2000 },

-  { 0x0702, 0xf893, 0x0000 },

-  { 0x0702, 0xf895, 0x0000 },

-  { 0x8702, 0xf8a6, 0x5000 },

-  { 0x8702, 0xf89e, 0x4000 },

-  { 0x8702, 0xf89a, 0x3000 },

-  { 0x8702, 0xf898, 0x2000 },

-  { 0x0702, 0xf897, 0x0000 },

-  { 0x0702, 0xf899, 0x0000 },

-  { 0x8702, 0xf89c, 0x2000 },

-  { 0x0702, 0xf89b, 0x0000 },

-  { 0x0702, 0xf89d, 0x0000 },

-  { 0x8702, 0xf8a2, 0x3000 },

-  { 0x8702, 0xf8a0, 0x2000 },

-  { 0x0702, 0xf89f, 0x0000 },

-  { 0x0702, 0xf8a1, 0x0000 },

-  { 0x8702, 0xf8a4, 0x2000 },

-  { 0x0702, 0xf8a3, 0x0000 },

-  { 0x0702, 0xf8a5, 0x0000 },

-  { 0x8702, 0xf8ae, 0x4000 },

-  { 0x8702, 0xf8aa, 0x3000 },

-  { 0x8702, 0xf8a8, 0x2000 },

-  { 0x0702, 0xf8a7, 0x0000 },

-  { 0x0702, 0xf8a9, 0x0000 },

-  { 0x8702, 0xf8ac, 0x2000 },

-  { 0x0702, 0xf8ab, 0x0000 },

-  { 0x0702, 0xf8ad, 0x0000 },

-  { 0x8702, 0xf8b2, 0x3000 },

-  { 0x8702, 0xf8b0, 0x2000 },

-  { 0x0702, 0xf8af, 0x0000 },

-  { 0x0702, 0xf8b1, 0x0000 },

-  { 0x8702, 0xf8b4, 0x2000 },

-  { 0x0702, 0xf8b3, 0x0000 },

-  { 0x0702, 0xf8b5, 0x0000 },

-  { 0x8702, 0xf8d6, 0x6000 },

-  { 0x8702, 0xf8c6, 0x5000 },

-  { 0x8702, 0xf8be, 0x4000 },

-  { 0x8702, 0xf8ba, 0x3000 },

-  { 0x8702, 0xf8b8, 0x2000 },

-  { 0x0702, 0xf8b7, 0x0000 },

-  { 0x0702, 0xf8b9, 0x0000 },

-  { 0x8702, 0xf8bc, 0x2000 },

-  { 0x0702, 0xf8bb, 0x0000 },

-  { 0x0702, 0xf8bd, 0x0000 },

-  { 0x8702, 0xf8c2, 0x3000 },

-  { 0x8702, 0xf8c0, 0x2000 },

-  { 0x0702, 0xf8bf, 0x0000 },

-  { 0x0702, 0xf8c1, 0x0000 },

-  { 0x8702, 0xf8c4, 0x2000 },

-  { 0x0702, 0xf8c3, 0x0000 },

-  { 0x0702, 0xf8c5, 0x0000 },

-  { 0x8702, 0xf8ce, 0x4000 },

-  { 0x8702, 0xf8ca, 0x3000 },

-  { 0x8702, 0xf8c8, 0x2000 },

-  { 0x0702, 0xf8c7, 0x0000 },

-  { 0x0702, 0xf8c9, 0x0000 },

-  { 0x8702, 0xf8cc, 0x2000 },

-  { 0x0702, 0xf8cb, 0x0000 },

-  { 0x0702, 0xf8cd, 0x0000 },

-  { 0x8702, 0xf8d2, 0x3000 },

-  { 0x8702, 0xf8d0, 0x2000 },

-  { 0x0702, 0xf8cf, 0x0000 },

-  { 0x0702, 0xf8d1, 0x0000 },

-  { 0x8702, 0xf8d4, 0x2000 },

-  { 0x0702, 0xf8d3, 0x0000 },

-  { 0x0702, 0xf8d5, 0x0000 },

-  { 0x8702, 0xf8e6, 0x5000 },

-  { 0x8702, 0xf8de, 0x4000 },

-  { 0x8702, 0xf8da, 0x3000 },

-  { 0x8702, 0xf8d8, 0x2000 },

-  { 0x0702, 0xf8d7, 0x0000 },

-  { 0x0702, 0xf8d9, 0x0000 },

-  { 0x8702, 0xf8dc, 0x2000 },

-  { 0x0702, 0xf8db, 0x0000 },

-  { 0x0702, 0xf8dd, 0x0000 },

-  { 0x8702, 0xf8e2, 0x3000 },

-  { 0x8702, 0xf8e0, 0x2000 },

-  { 0x0702, 0xf8df, 0x0000 },

-  { 0x0702, 0xf8e1, 0x0000 },

-  { 0x8702, 0xf8e4, 0x2000 },

-  { 0x0702, 0xf8e3, 0x0000 },

-  { 0x0702, 0xf8e5, 0x0000 },

-  { 0x8702, 0xf8ee, 0x4000 },

-  { 0x8702, 0xf8ea, 0x3000 },

-  { 0x8702, 0xf8e8, 0x2000 },

-  { 0x0702, 0xf8e7, 0x0000 },

-  { 0x0702, 0xf8e9, 0x0000 },

-  { 0x8702, 0xf8ec, 0x2000 },

-  { 0x0702, 0xf8eb, 0x0000 },

-  { 0x0702, 0xf8ed, 0x0000 },

-  { 0x8702, 0xf8f2, 0x3000 },

-  { 0x8702, 0xf8f0, 0x2000 },

-  { 0x0702, 0xf8ef, 0x0000 },

-  { 0x0702, 0xf8f1, 0x0000 },

-  { 0x8702, 0xf8f4, 0x2000 },

-  { 0x0702, 0xf8f3, 0x0000 },

-  { 0x0702, 0xf8f5, 0x0000 },

-  { 0x8702, 0xf936, 0x7000 },

-  { 0x8702, 0xf916, 0x6000 },

-  { 0x8702, 0xf906, 0x5000 },

-  { 0x8702, 0xf8fe, 0x4000 },

-  { 0x8702, 0xf8fa, 0x3000 },

-  { 0x8702, 0xf8f8, 0x2000 },

-  { 0x0702, 0xf8f7, 0x0000 },

-  { 0x0702, 0xf8f9, 0x0000 },

-  { 0x8702, 0xf8fc, 0x2000 },

-  { 0x0702, 0xf8fb, 0x0000 },

-  { 0x0702, 0xf8fd, 0x0000 },

-  { 0x8702, 0xf902, 0x3000 },

-  { 0x8702, 0xf900, 0x2000 },

-  { 0x0702, 0xf8ff, 0x0000 },

-  { 0x0702, 0xf901, 0x0000 },

-  { 0x8702, 0xf904, 0x2000 },

-  { 0x0702, 0xf903, 0x0000 },

-  { 0x0702, 0xf905, 0x0000 },

-  { 0x8702, 0xf90e, 0x4000 },

-  { 0x8702, 0xf90a, 0x3000 },

-  { 0x8702, 0xf908, 0x2000 },

-  { 0x0702, 0xf907, 0x0000 },

-  { 0x0702, 0xf909, 0x0000 },

-  { 0x8702, 0xf90c, 0x2000 },

-  { 0x0702, 0xf90b, 0x0000 },

-  { 0x0702, 0xf90d, 0x0000 },

-  { 0x8702, 0xf912, 0x3000 },

-  { 0x8702, 0xf910, 0x2000 },

-  { 0x0702, 0xf90f, 0x0000 },

-  { 0x0702, 0xf911, 0x0000 },

-  { 0x8702, 0xf914, 0x2000 },

-  { 0x0702, 0xf913, 0x0000 },

-  { 0x0702, 0xf915, 0x0000 },

-  { 0x8702, 0xf926, 0x5000 },

-  { 0x8702, 0xf91e, 0x4000 },

-  { 0x8702, 0xf91a, 0x3000 },

-  { 0x8702, 0xf918, 0x2000 },

-  { 0x0702, 0xf917, 0x0000 },

-  { 0x0702, 0xf919, 0x0000 },

-  { 0x8702, 0xf91c, 0x2000 },

-  { 0x0702, 0xf91b, 0x0000 },

-  { 0x0702, 0xf91d, 0x0000 },

-  { 0x8702, 0xf922, 0x3000 },

-  { 0x8702, 0xf920, 0x2000 },

-  { 0x0702, 0xf91f, 0x0000 },

-  { 0x0702, 0xf921, 0x0000 },

-  { 0x8702, 0xf924, 0x2000 },

-  { 0x0702, 0xf923, 0x0000 },

-  { 0x0702, 0xf925, 0x0000 },

-  { 0x8702, 0xf92e, 0x4000 },

-  { 0x8702, 0xf92a, 0x3000 },

-  { 0x8702, 0xf928, 0x2000 },

-  { 0x0702, 0xf927, 0x0000 },

-  { 0x0702, 0xf929, 0x0000 },

-  { 0x8702, 0xf92c, 0x2000 },

-  { 0x0702, 0xf92b, 0x0000 },

-  { 0x0702, 0xf92d, 0x0000 },

-  { 0x8702, 0xf932, 0x3000 },

-  { 0x8702, 0xf930, 0x2000 },

-  { 0x0702, 0xf92f, 0x0000 },

-  { 0x0702, 0xf931, 0x0000 },

-  { 0x8702, 0xf934, 0x2000 },

-  { 0x0702, 0xf933, 0x0000 },

-  { 0x0702, 0xf935, 0x0000 },

-  { 0x8702, 0xf956, 0x6000 },

-  { 0x8702, 0xf946, 0x5000 },

-  { 0x8702, 0xf93e, 0x4000 },

-  { 0x8702, 0xf93a, 0x3000 },

-  { 0x8702, 0xf938, 0x2000 },

-  { 0x0702, 0xf937, 0x0000 },

-  { 0x0702, 0xf939, 0x0000 },

-  { 0x8702, 0xf93c, 0x2000 },

-  { 0x0702, 0xf93b, 0x0000 },

-  { 0x0702, 0xf93d, 0x0000 },

-  { 0x8702, 0xf942, 0x3000 },

-  { 0x8702, 0xf940, 0x2000 },

-  { 0x0702, 0xf93f, 0x0000 },

-  { 0x0702, 0xf941, 0x0000 },

-  { 0x8702, 0xf944, 0x2000 },

-  { 0x0702, 0xf943, 0x0000 },

-  { 0x0702, 0xf945, 0x0000 },

-  { 0x8702, 0xf94e, 0x4000 },

-  { 0x8702, 0xf94a, 0x3000 },

-  { 0x8702, 0xf948, 0x2000 },

-  { 0x0702, 0xf947, 0x0000 },

-  { 0x0702, 0xf949, 0x0000 },

-  { 0x8702, 0xf94c, 0x2000 },

-  { 0x0702, 0xf94b, 0x0000 },

-  { 0x0702, 0xf94d, 0x0000 },

-  { 0x8702, 0xf952, 0x3000 },

-  { 0x8702, 0xf950, 0x2000 },

-  { 0x0702, 0xf94f, 0x0000 },

-  { 0x0702, 0xf951, 0x0000 },

-  { 0x8702, 0xf954, 0x2000 },

-  { 0x0702, 0xf953, 0x0000 },

-  { 0x0702, 0xf955, 0x0000 },

-  { 0x8702, 0xf966, 0x5000 },

-  { 0x8702, 0xf95e, 0x4000 },

-  { 0x8702, 0xf95a, 0x3000 },

-  { 0x8702, 0xf958, 0x2000 },

-  { 0x0702, 0xf957, 0x0000 },

-  { 0x0702, 0xf959, 0x0000 },

-  { 0x8702, 0xf95c, 0x2000 },

-  { 0x0702, 0xf95b, 0x0000 },

-  { 0x0702, 0xf95d, 0x0000 },

-  { 0x8702, 0xf962, 0x3000 },

-  { 0x8702, 0xf960, 0x2000 },

-  { 0x0702, 0xf95f, 0x0000 },

-  { 0x0702, 0xf961, 0x0000 },

-  { 0x8702, 0xf964, 0x2000 },

-  { 0x0702, 0xf963, 0x0000 },

-  { 0x0702, 0xf965, 0x0000 },

-  { 0x8702, 0xf96e, 0x4000 },

-  { 0x8702, 0xf96a, 0x3000 },

-  { 0x8702, 0xf968, 0x2000 },

-  { 0x0702, 0xf967, 0x0000 },

-  { 0x0702, 0xf969, 0x0000 },

-  { 0x8702, 0xf96c, 0x2000 },

-  { 0x0702, 0xf96b, 0x0000 },

-  { 0x0702, 0xf96d, 0x0000 },

-  { 0x8702, 0xf972, 0x3000 },

-  { 0x8702, 0xf970, 0x2000 },

-  { 0x0702, 0xf96f, 0x0000 },

-  { 0x0702, 0xf971, 0x0000 },

-  { 0x8702, 0xf974, 0x2000 },

-  { 0x0702, 0xf973, 0x0000 },

-  { 0x0702, 0xf975, 0x0000 },

-  { 0x810e, 0x0077, 0x9000 },

-  { 0x8702, 0xf9f6, 0x8000 },

-  { 0x8702, 0xf9b6, 0x7000 },

-  { 0x8702, 0xf996, 0x6000 },

-  { 0x8702, 0xf986, 0x5000 },

-  { 0x8702, 0xf97e, 0x4000 },

-  { 0x8702, 0xf97a, 0x3000 },

-  { 0x8702, 0xf978, 0x2000 },

-  { 0x0702, 0xf977, 0x0000 },

-  { 0x0702, 0xf979, 0x0000 },

-  { 0x8702, 0xf97c, 0x2000 },

-  { 0x0702, 0xf97b, 0x0000 },

-  { 0x0702, 0xf97d, 0x0000 },

-  { 0x8702, 0xf982, 0x3000 },

-  { 0x8702, 0xf980, 0x2000 },

-  { 0x0702, 0xf97f, 0x0000 },

-  { 0x0702, 0xf981, 0x0000 },

-  { 0x8702, 0xf984, 0x2000 },

-  { 0x0702, 0xf983, 0x0000 },

-  { 0x0702, 0xf985, 0x0000 },

-  { 0x8702, 0xf98e, 0x4000 },

-  { 0x8702, 0xf98a, 0x3000 },

-  { 0x8702, 0xf988, 0x2000 },

-  { 0x0702, 0xf987, 0x0000 },

-  { 0x0702, 0xf989, 0x0000 },

-  { 0x8702, 0xf98c, 0x2000 },

-  { 0x0702, 0xf98b, 0x0000 },

-  { 0x0702, 0xf98d, 0x0000 },

-  { 0x8702, 0xf992, 0x3000 },

-  { 0x8702, 0xf990, 0x2000 },

-  { 0x0702, 0xf98f, 0x0000 },

-  { 0x0702, 0xf991, 0x0000 },

-  { 0x8702, 0xf994, 0x2000 },

-  { 0x0702, 0xf993, 0x0000 },

-  { 0x0702, 0xf995, 0x0000 },

-  { 0x8702, 0xf9a6, 0x5000 },

-  { 0x8702, 0xf99e, 0x4000 },

-  { 0x8702, 0xf99a, 0x3000 },

-  { 0x8702, 0xf998, 0x2000 },

-  { 0x0702, 0xf997, 0x0000 },

-  { 0x0702, 0xf999, 0x0000 },

-  { 0x8702, 0xf99c, 0x2000 },

-  { 0x0702, 0xf99b, 0x0000 },

-  { 0x0702, 0xf99d, 0x0000 },

-  { 0x8702, 0xf9a2, 0x3000 },

-  { 0x8702, 0xf9a0, 0x2000 },

-  { 0x0702, 0xf99f, 0x0000 },

-  { 0x0702, 0xf9a1, 0x0000 },

-  { 0x8702, 0xf9a4, 0x2000 },

-  { 0x0702, 0xf9a3, 0x0000 },

-  { 0x0702, 0xf9a5, 0x0000 },

-  { 0x8702, 0xf9ae, 0x4000 },

-  { 0x8702, 0xf9aa, 0x3000 },

-  { 0x8702, 0xf9a8, 0x2000 },

-  { 0x0702, 0xf9a7, 0x0000 },

-  { 0x0702, 0xf9a9, 0x0000 },

-  { 0x8702, 0xf9ac, 0x2000 },

-  { 0x0702, 0xf9ab, 0x0000 },

-  { 0x0702, 0xf9ad, 0x0000 },

-  { 0x8702, 0xf9b2, 0x3000 },

-  { 0x8702, 0xf9b0, 0x2000 },

-  { 0x0702, 0xf9af, 0x0000 },

-  { 0x0702, 0xf9b1, 0x0000 },

-  { 0x8702, 0xf9b4, 0x2000 },

-  { 0x0702, 0xf9b3, 0x0000 },

-  { 0x0702, 0xf9b5, 0x0000 },

-  { 0x8702, 0xf9d6, 0x6000 },

-  { 0x8702, 0xf9c6, 0x5000 },

-  { 0x8702, 0xf9be, 0x4000 },

-  { 0x8702, 0xf9ba, 0x3000 },

-  { 0x8702, 0xf9b8, 0x2000 },

-  { 0x0702, 0xf9b7, 0x0000 },

-  { 0x0702, 0xf9b9, 0x0000 },

-  { 0x8702, 0xf9bc, 0x2000 },

-  { 0x0702, 0xf9bb, 0x0000 },

-  { 0x0702, 0xf9bd, 0x0000 },

-  { 0x8702, 0xf9c2, 0x3000 },

-  { 0x8702, 0xf9c0, 0x2000 },

-  { 0x0702, 0xf9bf, 0x0000 },

-  { 0x0702, 0xf9c1, 0x0000 },

-  { 0x8702, 0xf9c4, 0x2000 },

-  { 0x0702, 0xf9c3, 0x0000 },

-  { 0x0702, 0xf9c5, 0x0000 },

-  { 0x8702, 0xf9ce, 0x4000 },

-  { 0x8702, 0xf9ca, 0x3000 },

-  { 0x8702, 0xf9c8, 0x2000 },

-  { 0x0702, 0xf9c7, 0x0000 },

-  { 0x0702, 0xf9c9, 0x0000 },

-  { 0x8702, 0xf9cc, 0x2000 },

-  { 0x0702, 0xf9cb, 0x0000 },

-  { 0x0702, 0xf9cd, 0x0000 },

-  { 0x8702, 0xf9d2, 0x3000 },

-  { 0x8702, 0xf9d0, 0x2000 },

-  { 0x0702, 0xf9cf, 0x0000 },

-  { 0x0702, 0xf9d1, 0x0000 },

-  { 0x8702, 0xf9d4, 0x2000 },

-  { 0x0702, 0xf9d3, 0x0000 },

-  { 0x0702, 0xf9d5, 0x0000 },

-  { 0x8702, 0xf9e6, 0x5000 },

-  { 0x8702, 0xf9de, 0x4000 },

-  { 0x8702, 0xf9da, 0x3000 },

-  { 0x8702, 0xf9d8, 0x2000 },

-  { 0x0702, 0xf9d7, 0x0000 },

-  { 0x0702, 0xf9d9, 0x0000 },

-  { 0x8702, 0xf9dc, 0x2000 },

-  { 0x0702, 0xf9db, 0x0000 },

-  { 0x0702, 0xf9dd, 0x0000 },

-  { 0x8702, 0xf9e2, 0x3000 },

-  { 0x8702, 0xf9e0, 0x2000 },

-  { 0x0702, 0xf9df, 0x0000 },

-  { 0x0702, 0xf9e1, 0x0000 },

-  { 0x8702, 0xf9e4, 0x2000 },

-  { 0x0702, 0xf9e3, 0x0000 },

-  { 0x0702, 0xf9e5, 0x0000 },

-  { 0x8702, 0xf9ee, 0x4000 },

-  { 0x8702, 0xf9ea, 0x3000 },

-  { 0x8702, 0xf9e8, 0x2000 },

-  { 0x0702, 0xf9e7, 0x0000 },

-  { 0x0702, 0xf9e9, 0x0000 },

-  { 0x8702, 0xf9ec, 0x2000 },

-  { 0x0702, 0xf9eb, 0x0000 },

-  { 0x0702, 0xf9ed, 0x0000 },

-  { 0x8702, 0xf9f2, 0x3000 },

-  { 0x8702, 0xf9f0, 0x2000 },

-  { 0x0702, 0xf9ef, 0x0000 },

-  { 0x0702, 0xf9f1, 0x0000 },

-  { 0x8702, 0xf9f4, 0x2000 },

-  { 0x0702, 0xf9f3, 0x0000 },

-  { 0x0702, 0xf9f5, 0x0000 },

-  { 0x810e, 0x0037, 0x7000 },

-  { 0x8702, 0xfa16, 0x6000 },

-  { 0x8702, 0xfa06, 0x5000 },

-  { 0x8702, 0xf9fe, 0x4000 },

-  { 0x8702, 0xf9fa, 0x3000 },

-  { 0x8702, 0xf9f8, 0x2000 },

-  { 0x0702, 0xf9f7, 0x0000 },

-  { 0x0702, 0xf9f9, 0x0000 },

-  { 0x8702, 0xf9fc, 0x2000 },

-  { 0x0702, 0xf9fb, 0x0000 },

-  { 0x0702, 0xf9fd, 0x0000 },

-  { 0x8702, 0xfa02, 0x3000 },

-  { 0x8702, 0xfa00, 0x2000 },

-  { 0x0702, 0xf9ff, 0x0000 },

-  { 0x0702, 0xfa01, 0x0000 },

-  { 0x8702, 0xfa04, 0x2000 },

-  { 0x0702, 0xfa03, 0x0000 },

-  { 0x0702, 0xfa05, 0x0000 },

-  { 0x8702, 0xfa0e, 0x4000 },

-  { 0x8702, 0xfa0a, 0x3000 },

-  { 0x8702, 0xfa08, 0x2000 },

-  { 0x0702, 0xfa07, 0x0000 },

-  { 0x0702, 0xfa09, 0x0000 },

-  { 0x8702, 0xfa0c, 0x2000 },

-  { 0x0702, 0xfa0b, 0x0000 },

-  { 0x0702, 0xfa0d, 0x0000 },

-  { 0x8702, 0xfa12, 0x3000 },

-  { 0x8702, 0xfa10, 0x2000 },

-  { 0x0702, 0xfa0f, 0x0000 },

-  { 0x0702, 0xfa11, 0x0000 },

-  { 0x8702, 0xfa14, 0x2000 },

-  { 0x0702, 0xfa13, 0x0000 },

-  { 0x0702, 0xfa15, 0x0000 },

-  { 0x810e, 0x0027, 0x5000 },

-  { 0x810e, 0x0001, 0x4000 },

-  { 0x8702, 0xfa1a, 0x3000 },

-  { 0x8702, 0xfa18, 0x2000 },

-  { 0x0702, 0xfa17, 0x0000 },

-  { 0x0702, 0xfa19, 0x0000 },

-  { 0x8702, 0xfa1c, 0x2000 },

-  { 0x0702, 0xfa1b, 0x0000 },

-  { 0x0702, 0xfa1d, 0x0000 },

-  { 0x810e, 0x0023, 0x3000 },

-  { 0x810e, 0x0021, 0x2000 },

-  { 0x010e, 0x0020, 0x0000 },

-  { 0x010e, 0x0022, 0x0000 },

-  { 0x810e, 0x0025, 0x2000 },

-  { 0x010e, 0x0024, 0x0000 },

-  { 0x010e, 0x0026, 0x0000 },

-  { 0x810e, 0x002f, 0x4000 },

-  { 0x810e, 0x002b, 0x3000 },

-  { 0x810e, 0x0029, 0x2000 },

-  { 0x010e, 0x0028, 0x0000 },

-  { 0x010e, 0x002a, 0x0000 },

-  { 0x810e, 0x002d, 0x2000 },

-  { 0x010e, 0x002c, 0x0000 },

-  { 0x010e, 0x002e, 0x0000 },

-  { 0x810e, 0x0033, 0x3000 },

-  { 0x810e, 0x0031, 0x2000 },

-  { 0x010e, 0x0030, 0x0000 },

-  { 0x010e, 0x0032, 0x0000 },

-  { 0x810e, 0x0035, 0x2000 },

-  { 0x010e, 0x0034, 0x0000 },

-  { 0x010e, 0x0036, 0x0000 },

-  { 0x810e, 0x0057, 0x6000 },

-  { 0x810e, 0x0047, 0x5000 },

-  { 0x810e, 0x003f, 0x4000 },

-  { 0x810e, 0x003b, 0x3000 },

-  { 0x810e, 0x0039, 0x2000 },

-  { 0x010e, 0x0038, 0x0000 },

-  { 0x010e, 0x003a, 0x0000 },

-  { 0x810e, 0x003d, 0x2000 },

-  { 0x010e, 0x003c, 0x0000 },

-  { 0x010e, 0x003e, 0x0000 },

-  { 0x810e, 0x0043, 0x3000 },

-  { 0x810e, 0x0041, 0x2000 },

-  { 0x010e, 0x0040, 0x0000 },

-  { 0x010e, 0x0042, 0x0000 },

-  { 0x810e, 0x0045, 0x2000 },

-  { 0x010e, 0x0044, 0x0000 },

-  { 0x010e, 0x0046, 0x0000 },

-  { 0x810e, 0x004f, 0x4000 },

-  { 0x810e, 0x004b, 0x3000 },

-  { 0x810e, 0x0049, 0x2000 },

-  { 0x010e, 0x0048, 0x0000 },

-  { 0x010e, 0x004a, 0x0000 },

-  { 0x810e, 0x004d, 0x2000 },

-  { 0x010e, 0x004c, 0x0000 },

-  { 0x010e, 0x004e, 0x0000 },

-  { 0x810e, 0x0053, 0x3000 },

-  { 0x810e, 0x0051, 0x2000 },

-  { 0x010e, 0x0050, 0x0000 },

-  { 0x010e, 0x0052, 0x0000 },

-  { 0x810e, 0x0055, 0x2000 },

-  { 0x010e, 0x0054, 0x0000 },

-  { 0x010e, 0x0056, 0x0000 },

-  { 0x810e, 0x0067, 0x5000 },

-  { 0x810e, 0x005f, 0x4000 },

-  { 0x810e, 0x005b, 0x3000 },

-  { 0x810e, 0x0059, 0x2000 },

-  { 0x010e, 0x0058, 0x0000 },

-  { 0x010e, 0x005a, 0x0000 },

-  { 0x810e, 0x005d, 0x2000 },

-  { 0x010e, 0x005c, 0x0000 },

-  { 0x010e, 0x005e, 0x0000 },

-  { 0x810e, 0x0063, 0x3000 },

-  { 0x810e, 0x0061, 0x2000 },

-  { 0x010e, 0x0060, 0x0000 },

-  { 0x010e, 0x0062, 0x0000 },

-  { 0x810e, 0x0065, 0x2000 },

-  { 0x010e, 0x0064, 0x0000 },

-  { 0x010e, 0x0066, 0x0000 },

-  { 0x810e, 0x006f, 0x4000 },

-  { 0x810e, 0x006b, 0x3000 },

-  { 0x810e, 0x0069, 0x2000 },

-  { 0x010e, 0x0068, 0x0000 },

-  { 0x010e, 0x006a, 0x0000 },

-  { 0x810e, 0x006d, 0x2000 },

-  { 0x010e, 0x006c, 0x0000 },

-  { 0x010e, 0x006e, 0x0000 },

-  { 0x810e, 0x0073, 0x3000 },

-  { 0x810e, 0x0071, 0x2000 },

-  { 0x010e, 0x0070, 0x0000 },

-  { 0x010e, 0x0072, 0x0000 },

-  { 0x810e, 0x0075, 0x2000 },

-  { 0x010e, 0x0074, 0x0000 },

-  { 0x010e, 0x0076, 0x0000 },

-  { 0x8c0e, 0x0177, 0x8000 },

-  { 0x8c0e, 0x0137, 0x7000 },

-  { 0x8c0e, 0x0117, 0x6000 },

-  { 0x8c0e, 0x0107, 0x5000 },

-  { 0x810e, 0x007f, 0x4000 },

-  { 0x810e, 0x007b, 0x3000 },

-  { 0x810e, 0x0079, 0x2000 },

-  { 0x010e, 0x0078, 0x0000 },

-  { 0x010e, 0x007a, 0x0000 },

-  { 0x810e, 0x007d, 0x2000 },

-  { 0x010e, 0x007c, 0x0000 },

-  { 0x010e, 0x007e, 0x0000 },

-  { 0x8c0e, 0x0103, 0x3000 },

-  { 0x8c0e, 0x0101, 0x2000 },

-  { 0x0c0e, 0x0100, 0x0000 },

-  { 0x0c0e, 0x0102, 0x0000 },

-  { 0x8c0e, 0x0105, 0x2000 },

-  { 0x0c0e, 0x0104, 0x0000 },

-  { 0x0c0e, 0x0106, 0x0000 },

-  { 0x8c0e, 0x010f, 0x4000 },

-  { 0x8c0e, 0x010b, 0x3000 },

-  { 0x8c0e, 0x0109, 0x2000 },

-  { 0x0c0e, 0x0108, 0x0000 },

-  { 0x0c0e, 0x010a, 0x0000 },

-  { 0x8c0e, 0x010d, 0x2000 },

-  { 0x0c0e, 0x010c, 0x0000 },

-  { 0x0c0e, 0x010e, 0x0000 },

-  { 0x8c0e, 0x0113, 0x3000 },

-  { 0x8c0e, 0x0111, 0x2000 },

-  { 0x0c0e, 0x0110, 0x0000 },

-  { 0x0c0e, 0x0112, 0x0000 },

-  { 0x8c0e, 0x0115, 0x2000 },

-  { 0x0c0e, 0x0114, 0x0000 },

-  { 0x0c0e, 0x0116, 0x0000 },

-  { 0x8c0e, 0x0127, 0x5000 },

-  { 0x8c0e, 0x011f, 0x4000 },

-  { 0x8c0e, 0x011b, 0x3000 },

-  { 0x8c0e, 0x0119, 0x2000 },

-  { 0x0c0e, 0x0118, 0x0000 },

-  { 0x0c0e, 0x011a, 0x0000 },

-  { 0x8c0e, 0x011d, 0x2000 },

-  { 0x0c0e, 0x011c, 0x0000 },

-  { 0x0c0e, 0x011e, 0x0000 },

-  { 0x8c0e, 0x0123, 0x3000 },

-  { 0x8c0e, 0x0121, 0x2000 },

-  { 0x0c0e, 0x0120, 0x0000 },

-  { 0x0c0e, 0x0122, 0x0000 },

-  { 0x8c0e, 0x0125, 0x2000 },

-  { 0x0c0e, 0x0124, 0x0000 },

-  { 0x0c0e, 0x0126, 0x0000 },

-  { 0x8c0e, 0x012f, 0x4000 },

-  { 0x8c0e, 0x012b, 0x3000 },

-  { 0x8c0e, 0x0129, 0x2000 },

-  { 0x0c0e, 0x0128, 0x0000 },

-  { 0x0c0e, 0x012a, 0x0000 },

-  { 0x8c0e, 0x012d, 0x2000 },

-  { 0x0c0e, 0x012c, 0x0000 },

-  { 0x0c0e, 0x012e, 0x0000 },

-  { 0x8c0e, 0x0133, 0x3000 },

-  { 0x8c0e, 0x0131, 0x2000 },

-  { 0x0c0e, 0x0130, 0x0000 },

-  { 0x0c0e, 0x0132, 0x0000 },

-  { 0x8c0e, 0x0135, 0x2000 },

-  { 0x0c0e, 0x0134, 0x0000 },

-  { 0x0c0e, 0x0136, 0x0000 },

-  { 0x8c0e, 0x0157, 0x6000 },

-  { 0x8c0e, 0x0147, 0x5000 },

-  { 0x8c0e, 0x013f, 0x4000 },

-  { 0x8c0e, 0x013b, 0x3000 },

-  { 0x8c0e, 0x0139, 0x2000 },

-  { 0x0c0e, 0x0138, 0x0000 },

-  { 0x0c0e, 0x013a, 0x0000 },

-  { 0x8c0e, 0x013d, 0x2000 },

-  { 0x0c0e, 0x013c, 0x0000 },

-  { 0x0c0e, 0x013e, 0x0000 },

-  { 0x8c0e, 0x0143, 0x3000 },

-  { 0x8c0e, 0x0141, 0x2000 },

-  { 0x0c0e, 0x0140, 0x0000 },

-  { 0x0c0e, 0x0142, 0x0000 },

-  { 0x8c0e, 0x0145, 0x2000 },

-  { 0x0c0e, 0x0144, 0x0000 },

-  { 0x0c0e, 0x0146, 0x0000 },

-  { 0x8c0e, 0x014f, 0x4000 },

-  { 0x8c0e, 0x014b, 0x3000 },

-  { 0x8c0e, 0x0149, 0x2000 },

-  { 0x0c0e, 0x0148, 0x0000 },

-  { 0x0c0e, 0x014a, 0x0000 },

-  { 0x8c0e, 0x014d, 0x2000 },

-  { 0x0c0e, 0x014c, 0x0000 },

-  { 0x0c0e, 0x014e, 0x0000 },

-  { 0x8c0e, 0x0153, 0x3000 },

-  { 0x8c0e, 0x0151, 0x2000 },

-  { 0x0c0e, 0x0150, 0x0000 },

-  { 0x0c0e, 0x0152, 0x0000 },

-  { 0x8c0e, 0x0155, 0x2000 },

-  { 0x0c0e, 0x0154, 0x0000 },

-  { 0x0c0e, 0x0156, 0x0000 },

-  { 0x8c0e, 0x0167, 0x5000 },

-  { 0x8c0e, 0x015f, 0x4000 },

-  { 0x8c0e, 0x015b, 0x3000 },

-  { 0x8c0e, 0x0159, 0x2000 },

-  { 0x0c0e, 0x0158, 0x0000 },

-  { 0x0c0e, 0x015a, 0x0000 },

-  { 0x8c0e, 0x015d, 0x2000 },

-  { 0x0c0e, 0x015c, 0x0000 },

-  { 0x0c0e, 0x015e, 0x0000 },

-  { 0x8c0e, 0x0163, 0x3000 },

-  { 0x8c0e, 0x0161, 0x2000 },

-  { 0x0c0e, 0x0160, 0x0000 },

-  { 0x0c0e, 0x0162, 0x0000 },

-  { 0x8c0e, 0x0165, 0x2000 },

-  { 0x0c0e, 0x0164, 0x0000 },

-  { 0x0c0e, 0x0166, 0x0000 },

-  { 0x8c0e, 0x016f, 0x4000 },

-  { 0x8c0e, 0x016b, 0x3000 },

-  { 0x8c0e, 0x0169, 0x2000 },

-  { 0x0c0e, 0x0168, 0x0000 },

-  { 0x0c0e, 0x016a, 0x0000 },

-  { 0x8c0e, 0x016d, 0x2000 },

-  { 0x0c0e, 0x016c, 0x0000 },

-  { 0x0c0e, 0x016e, 0x0000 },

-  { 0x8c0e, 0x0173, 0x3000 },

-  { 0x8c0e, 0x0171, 0x2000 },

-  { 0x0c0e, 0x0170, 0x0000 },

-  { 0x0c0e, 0x0172, 0x0000 },

-  { 0x8c0e, 0x0175, 0x2000 },

-  { 0x0c0e, 0x0174, 0x0000 },

-  { 0x0c0e, 0x0176, 0x0000 },

-  { 0x8c0e, 0x01b7, 0x7000 },

-  { 0x8c0e, 0x0197, 0x6000 },

-  { 0x8c0e, 0x0187, 0x5000 },

-  { 0x8c0e, 0x017f, 0x4000 },

-  { 0x8c0e, 0x017b, 0x3000 },

-  { 0x8c0e, 0x0179, 0x2000 },

-  { 0x0c0e, 0x0178, 0x0000 },

-  { 0x0c0e, 0x017a, 0x0000 },

-  { 0x8c0e, 0x017d, 0x2000 },

-  { 0x0c0e, 0x017c, 0x0000 },

-  { 0x0c0e, 0x017e, 0x0000 },

-  { 0x8c0e, 0x0183, 0x3000 },

-  { 0x8c0e, 0x0181, 0x2000 },

-  { 0x0c0e, 0x0180, 0x0000 },

-  { 0x0c0e, 0x0182, 0x0000 },

-  { 0x8c0e, 0x0185, 0x2000 },

-  { 0x0c0e, 0x0184, 0x0000 },

-  { 0x0c0e, 0x0186, 0x0000 },

-  { 0x8c0e, 0x018f, 0x4000 },

-  { 0x8c0e, 0x018b, 0x3000 },

-  { 0x8c0e, 0x0189, 0x2000 },

-  { 0x0c0e, 0x0188, 0x0000 },

-  { 0x0c0e, 0x018a, 0x0000 },

-  { 0x8c0e, 0x018d, 0x2000 },

-  { 0x0c0e, 0x018c, 0x0000 },

-  { 0x0c0e, 0x018e, 0x0000 },

-  { 0x8c0e, 0x0193, 0x3000 },

-  { 0x8c0e, 0x0191, 0x2000 },

-  { 0x0c0e, 0x0190, 0x0000 },

-  { 0x0c0e, 0x0192, 0x0000 },

-  { 0x8c0e, 0x0195, 0x2000 },

-  { 0x0c0e, 0x0194, 0x0000 },

-  { 0x0c0e, 0x0196, 0x0000 },

-  { 0x8c0e, 0x01a7, 0x5000 },

-  { 0x8c0e, 0x019f, 0x4000 },

-  { 0x8c0e, 0x019b, 0x3000 },

-  { 0x8c0e, 0x0199, 0x2000 },

-  { 0x0c0e, 0x0198, 0x0000 },

-  { 0x0c0e, 0x019a, 0x0000 },

-  { 0x8c0e, 0x019d, 0x2000 },

-  { 0x0c0e, 0x019c, 0x0000 },

-  { 0x0c0e, 0x019e, 0x0000 },

-  { 0x8c0e, 0x01a3, 0x3000 },

-  { 0x8c0e, 0x01a1, 0x2000 },

-  { 0x0c0e, 0x01a0, 0x0000 },

-  { 0x0c0e, 0x01a2, 0x0000 },

-  { 0x8c0e, 0x01a5, 0x2000 },

-  { 0x0c0e, 0x01a4, 0x0000 },

-  { 0x0c0e, 0x01a6, 0x0000 },

-  { 0x8c0e, 0x01af, 0x4000 },

-  { 0x8c0e, 0x01ab, 0x3000 },

-  { 0x8c0e, 0x01a9, 0x2000 },

-  { 0x0c0e, 0x01a8, 0x0000 },

-  { 0x0c0e, 0x01aa, 0x0000 },

-  { 0x8c0e, 0x01ad, 0x2000 },

-  { 0x0c0e, 0x01ac, 0x0000 },

-  { 0x0c0e, 0x01ae, 0x0000 },

-  { 0x8c0e, 0x01b3, 0x3000 },

-  { 0x8c0e, 0x01b1, 0x2000 },

-  { 0x0c0e, 0x01b0, 0x0000 },

-  { 0x0c0e, 0x01b2, 0x0000 },

-  { 0x8c0e, 0x01b5, 0x2000 },

-  { 0x0c0e, 0x01b4, 0x0000 },

-  { 0x0c0e, 0x01b6, 0x0000 },

-  { 0x8c0e, 0x01d7, 0x6000 },

-  { 0x8c0e, 0x01c7, 0x5000 },

-  { 0x8c0e, 0x01bf, 0x4000 },

-  { 0x8c0e, 0x01bb, 0x3000 },

-  { 0x8c0e, 0x01b9, 0x2000 },

-  { 0x0c0e, 0x01b8, 0x0000 },

-  { 0x0c0e, 0x01ba, 0x0000 },

-  { 0x8c0e, 0x01bd, 0x2000 },

-  { 0x0c0e, 0x01bc, 0x0000 },

-  { 0x0c0e, 0x01be, 0x0000 },

-  { 0x8c0e, 0x01c3, 0x3000 },

-  { 0x8c0e, 0x01c1, 0x2000 },

-  { 0x0c0e, 0x01c0, 0x0000 },

-  { 0x0c0e, 0x01c2, 0x0000 },

-  { 0x8c0e, 0x01c5, 0x2000 },

-  { 0x0c0e, 0x01c4, 0x0000 },

-  { 0x0c0e, 0x01c6, 0x0000 },

-  { 0x8c0e, 0x01cf, 0x4000 },

-  { 0x8c0e, 0x01cb, 0x3000 },

-  { 0x8c0e, 0x01c9, 0x2000 },

-  { 0x0c0e, 0x01c8, 0x0000 },

-  { 0x0c0e, 0x01ca, 0x0000 },

-  { 0x8c0e, 0x01cd, 0x2000 },

-  { 0x0c0e, 0x01cc, 0x0000 },

-  { 0x0c0e, 0x01ce, 0x0000 },

-  { 0x8c0e, 0x01d3, 0x3000 },

-  { 0x8c0e, 0x01d1, 0x2000 },

-  { 0x0c0e, 0x01d0, 0x0000 },

-  { 0x0c0e, 0x01d2, 0x0000 },

-  { 0x8c0e, 0x01d5, 0x2000 },

-  { 0x0c0e, 0x01d4, 0x0000 },

-  { 0x0c0e, 0x01d6, 0x0000 },

-  { 0x8c0e, 0x01e7, 0x5000 },

-  { 0x8c0e, 0x01df, 0x4000 },

-  { 0x8c0e, 0x01db, 0x3000 },

-  { 0x8c0e, 0x01d9, 0x2000 },

-  { 0x0c0e, 0x01d8, 0x0000 },

-  { 0x0c0e, 0x01da, 0x0000 },

-  { 0x8c0e, 0x01dd, 0x2000 },

-  { 0x0c0e, 0x01dc, 0x0000 },

-  { 0x0c0e, 0x01de, 0x0000 },

-  { 0x8c0e, 0x01e3, 0x3000 },

-  { 0x8c0e, 0x01e1, 0x2000 },

-  { 0x0c0e, 0x01e0, 0x0000 },

-  { 0x0c0e, 0x01e2, 0x0000 },

-  { 0x8c0e, 0x01e5, 0x2000 },

-  { 0x0c0e, 0x01e4, 0x0000 },

-  { 0x0c0e, 0x01e6, 0x0000 },

-  { 0x8c0e, 0x01ef, 0x4000 },

-  { 0x8c0e, 0x01eb, 0x3000 },

-  { 0x8c0e, 0x01e9, 0x2000 },

-  { 0x0c0e, 0x01e8, 0x0000 },

-  { 0x0c0e, 0x01ea, 0x0000 },

-  { 0x8c0e, 0x01ed, 0x2000 },

-  { 0x0c0e, 0x01ec, 0x0000 },

-  { 0x0c0e, 0x01ee, 0x0000 },

-  { 0x830f, 0xfffd, 0x2000 },

-  { 0x030f, 0x0000, 0x0000 },

-  { 0x0310, 0x0000, 0x1000 },

-  { 0x0310, 0xfffd, 0x0000 },

-};

-

-

-/* In some environments, external functions have to be preceded by some magic.

-In my world (Unix), they do not. Use a macro to deal with this. */

-

-#ifndef EXPORT

-#define EXPORT

-#endif

-

-

-

-/*************************************************

-*         Search table and return data           *

-*************************************************/

-

-/* Two values are returned: the category is ucp_C, ucp_L, etc. The detailed

-character type is ucp_Lu, ucp_Nd, etc.

-

-Arguments:

-  c           the character value

-  type_ptr    the detailed character type is returned here

-  case_ptr    for letters, the opposite case is returned here, if there

-                is one, else zero

-

-Returns:      the character type category or -1 if not found

-*/

-

-EXPORT int

-ucp_findchar(const int c, int *type_ptr, int *case_ptr)

-{

-cnode *node = ucp_table;

-register int cc = c;

-int case_offset;

-

-for (;;)

-  {

-  register int d = node->f1 | ((node->f0 & f0_chhmask) << 16);

-  if (cc == d) break;

-  if (cc < d)

-    {

-    if ((node->f0 & f0_leftexists) == 0) return -1;

-    node ++;

-    }

-  else

-    {

-    register int roffset = (node->f2 & f2_rightmask) >> f2_rightshift;

-    if (roffset == 0) return -1;

-    node += 1 << (roffset - 1);

-    }

-  }

-

-switch ((*type_ptr = ((node->f0 & f0_typemask) >> f0_typeshift)))

-  {

-  case ucp_Cc:

-  case ucp_Cf:

-  case ucp_Cn:

-  case ucp_Co:

-  case ucp_Cs:

-  return ucp_C;

-  break;

-

-  case ucp_Ll:

-  case ucp_Lu:

-  case_offset = node->f2 & f2_casemask;

-  if ((case_offset & 0x0100) != 0) case_offset |= 0xfffff000;

-  *case_ptr = (case_offset == 0)? 0 : cc + case_offset;

-  return ucp_L;

-

-  case ucp_Lm:

-  case ucp_Lo:

-  case ucp_Lt:

-  *case_ptr = 0;

-  return ucp_L;

-  break;

-

-  case ucp_Mc:

-  case ucp_Me:

-  case ucp_Mn:

-  return ucp_M;

-  break;

-

-  case ucp_Nd:

-  case ucp_Nl:

-  case ucp_No:

-  return ucp_N;

-  break;

-

-  case ucp_Pc:

-  case ucp_Pd:

-  case ucp_Pe:

-  case ucp_Pf:

-  case ucp_Pi:

-  case ucp_Ps:

-  case ucp_Po:

-  return ucp_P;

-  break;

-

-  case ucp_Sc:

-  case ucp_Sk:

-  case ucp_Sm:

-  case ucp_So:

-  return ucp_S;

-  break;

-

-  case ucp_Zl:

-  case ucp_Zp:

-  case ucp_Zs:

-  return ucp_Z;

-  break;

-

-  default:         /* "Should never happen" */

-  return -1;

-  break;

-  }

-}

-

-/* End of ucp_findchar.c */

-

-

-/* End of pcre_ucp_findchar.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains an internal function for validating UTF-8 character

-strings. */

-

-

-

-

-/*************************************************

-*         Validate a UTF-8 string                *

-*************************************************/

-

-/* This function is called (optionally) at the start of compile or match, to

-validate that a supposed UTF-8 string is actually valid. The early check means

-that subsequent code can assume it is dealing with a valid string. The check

-can be turned off for maximum performance, but the consequences of supplying

-an invalid string are then undefined.

-

-Arguments:

-  string       points to the string

-  length       length of string, or -1 if the string is zero-terminated

-

-Returns:       < 0    if the string is a valid UTF-8 string

-               >= 0   otherwise; the value is the offset of the bad byte

-*/

-

-EXPORT int

-_pcre_valid_utf8(const uschar *string, int length)

-{

-register const uschar *p;

-

-if (length < 0)

-  {

-  for (p = string; *p != 0; p++);

-  length = p - string;

-  }

-

-for (p = string; length-- > 0; p++)

-  {

-  register int ab;

-  register int c = *p;

-  if (c < 128) continue;

-  if ((c & 0xc0) != 0xc0) return p - string;

-  ab = _pcre_utf8_table4[c & 0x3f];  /* Number of additional bytes */

-  if (length < ab) return p - string;

-  length -= ab;

-

-  /* Check top bits in the second byte */

-  if ((*(++p) & 0xc0) != 0x80) return p - string;

-

-  /* Check for overlong sequences for each different length */

-  switch (ab)

-    {

-    /* Check for xx00 000x */

-    case 1:

-    if ((c & 0x3e) == 0) return p - string;

-    continue;   /* We know there aren't any more bytes to check */

-

-    /* Check for 1110 0000, xx0x xxxx */

-    case 2:

-    if (c == 0xe0 && (*p & 0x20) == 0) return p - string;

-    break;

-

-    /* Check for 1111 0000, xx00 xxxx */

-    case 3:

-    if (c == 0xf0 && (*p & 0x30) == 0) return p - string;

-    break;

-

-    /* Check for 1111 1000, xx00 0xxx */

-    case 4:

-    if (c == 0xf8 && (*p & 0x38) == 0) return p - string;

-    break;

-

-    /* Check for leading 0xfe or 0xff, and then for 1111 1100, xx00 00xx */

-    case 5:

-    if (c == 0xfe || c == 0xff ||

-       (c == 0xfc && (*p & 0x3c) == 0)) return p - string;

-    break;

-    }

-

-  /* Check for valid bytes after the 2nd, if any; all must start 10 */

-  while (--ab > 0)

-    {

-    if ((*(++p) & 0xc0) != 0x80) return p - string;

-    }

-  }

-

-return -1;

-}

-

-/* End of pcre_valid_utf8.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains the external function pcre_version(), which returns a

-string that identifies the PCRE version that is in use. */

-

-

-

-

-/*************************************************

-*          Return version string                 *

-*************************************************/

-

-#define STRING(a)  # a

-#define XSTRING(s) STRING(s)

-

-EXPORT const char *

-pcre_version(void)

-{

-return XSTRING(PCRE_MAJOR) "." XSTRING(PCRE_MINOR) " " XSTRING(PCRE_DATE);

-}

-

-/* End of pcre_version.c */

-/*************************************************

-*      Perl-Compatible Regular Expressions       *

-*************************************************/

-

-/* PCRE is a library of functions to support regular expressions whose syntax

-and semantics are as close as possible to those of the Perl 5 language.

-

-                       Written by Philip Hazel

-           Copyright (c) 1997-2005 University of Cambridge

-

------------------------------------------------------------------------------

-Redistribution and use in source and binary forms, with or without

-modification, are permitted provided that the following conditions are met:

-

-    * Redistributions of source code must retain the above copyright notice,

-      this list of conditions and the following disclaimer.

-

-    * Redistributions in binary form must reproduce the above copyright

-      notice, this list of conditions and the following disclaimer in the

-      documentation and/or other materials provided with the distribution.

-

-    * Neither the name of the University of Cambridge nor the names of its

-      contributors may be used to endorse or promote products derived from

-      this software without specific prior written permission.

-

-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

-POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------------------

-*/

-

-

-/* This module contains an internal function that is used to match an extended

-class (one that contains characters whose values are > 255). It is used by both

-pcre_exec() and pcre_def_exec(). */

-

-

-

-

-/*************************************************

-*       Match character against an XCLASS        *

-*************************************************/

-

-/* This function is called to match a character against an extended class that

-might contain values > 255.

-

-Arguments:

-  c           the character

-  data        points to the flag byte of the XCLASS data

-

-Returns:      TRUE if character matches, else FALSE

-*/

-

-EXPORT BOOL

-_pcre_xclass(int c, const uschar *data)

-{

-int t;

-BOOL negated = (*data & XCL_NOT) != 0;

-

-/* Character values < 256 are matched against a bitmap, if one is present. If

-not, we still carry on, because there may be ranges that start below 256 in the

-additional data. */

-

-if (c < 256)

-  {

-  if ((*data & XCL_MAP) != 0 && (data[1 + c/8] & (1 << (c&7))) != 0)

-    return !negated;   /* char found */

-  }

-

-/* First skip the bit map if present. Then match against the list of Unicode

-properties or large chars or ranges that end with a large char. We won't ever

-encounter XCL_PROP or XCL_NOTPROP when UCP support is not compiled. */

-

-if ((*data++ & XCL_MAP) != 0) data += 32;

-

-while ((t = *data++) != XCL_END)

-  {

-  int x, y;

-  if (t == XCL_SINGLE)

-    {

-    GETCHARINC(x, data);

-    if (c == x) return !negated;

-    }

-  else if (t == XCL_RANGE)

-    {

-    GETCHARINC(x, data);

-    GETCHARINC(y, data);

-    if (c >= x && c <= y) return !negated;

-    }

-

-#ifdef SUPPORT_UCP

-  else  /* XCL_PROP & XCL_NOTPROP */

-    {

-    int chartype, othercase;

-    int rqdtype = *data++;

-    int category = ucp_findchar(c, &chartype, &othercase);

-    if (rqdtype >= 128)

-      {

-      if ((rqdtype - 128 == category) == (t == XCL_PROP)) return !negated;

-      }

-    else

-      {

-      if ((rqdtype == chartype) == (t == XCL_PROP)) return !negated;

-      }

-    }

-#endif  /* SUPPORT_UCP */

-  }

-

-return negated;   /* char did not match */

-}

-

-/* End of pcre_xclass.c */

diff --git a/lib/wrappers/postgres.nim b/lib/wrappers/postgres.nim
deleted file mode 100755
index 4b43333d7..000000000
--- a/lib/wrappers/postgres.nim
+++ /dev/null
@@ -1,386 +0,0 @@
-# This module contains the definitions for structures and externs for
-# functions used by frontend postgres applications. It is based on
-# Postgresql's libpq-fe.h.
-#
-# It is for postgreSQL version 7.4 and higher with support for the v3.0
-# connection-protocol.
-#
-
-{.deadCodeElim: on.}
-
-when defined(windows):
-  const dllName = "pq.dll"
-elif defined(macosx):
-  const dllName = "libpq.dylib"
-else:
-  const dllName = "libpq.so(.5|)"
-  
-type
-  POid* = ptr Oid
-  Oid* = int32
-
-const 
-  ERROR_MSG_LENGTH* = 4096
-  CMDSTATUS_LEN* = 40
-
-type 
-  TSockAddr* = array[1..112, int8]
-  TPGresAttDesc*{.pure, final.} = object 
-    name*: cstring
-    adtid*: Oid
-    adtsize*: int
-
-  PPGresAttDesc* = ptr TPGresAttDesc
-  PPPGresAttDesc* = ptr PPGresAttDesc
-  TPGresAttValue*{.pure, final.} = object 
-    length*: int32
-    value*: cstring
-
-  PPGresAttValue* = ptr TPGresAttValue
-  PPPGresAttValue* = ptr PPGresAttValue
-  PExecStatusType* = ptr TExecStatusType
-  TExecStatusType* = enum 
-    PGRES_EMPTY_QUERY = 0, PGRES_COMMAND_OK, PGRES_TUPLES_OK, PGRES_COPY_OUT, 
-    PGRES_COPY_IN, PGRES_BAD_RESPONSE, PGRES_NONFATAL_ERROR, PGRES_FATAL_ERROR
-  TPGlobjfuncs*{.pure, final.} = object 
-    fn_lo_open*: Oid
-    fn_lo_close*: Oid
-    fn_lo_creat*: Oid
-    fn_lo_unlink*: Oid
-    fn_lo_lseek*: Oid
-    fn_lo_tell*: Oid
-    fn_lo_read*: Oid
-    fn_lo_write*: Oid
-
-  PPGlobjfuncs* = ptr TPGlobjfuncs
-  PConnStatusType* = ptr TConnStatusType
-  TConnStatusType* = enum 
-    CONNECTION_OK, CONNECTION_BAD, CONNECTION_STARTED, CONNECTION_MADE, 
-    CONNECTION_AWAITING_RESPONSE, CONNECTION_AUTH_OK, CONNECTION_SETENV, 
-    CONNECTION_SSL_STARTUP, CONNECTION_NEEDED
-  TPGconn* {.pure, final.} = object 
-    pghost*: cstring
-    pgtty*: cstring
-    pgport*: cstring
-    pgoptions*: cstring
-    dbName*: cstring
-    status*: TConnStatusType
-    errorMessage*: array[0..(ERROR_MSG_LENGTH) - 1, char]
-    Pfin*: TFile
-    Pfout*: TFile
-    Pfdebug*: TFile
-    sock*: int32
-    laddr*: TSockAddr
-    raddr*: TSockAddr
-    salt*: array[0..(2) - 1, char]
-    asyncNotifyWaiting*: int32
-    notifyList*: pointer
-    pguser*: cstring
-    pgpass*: cstring
-    lobjfuncs*: PPGlobjfuncs
-
-  PPGconn* = ptr TPGconn
-  TPGresult* {.pure, final.} = object 
-    ntups*: int32
-    numAttributes*: int32
-    attDescs*: PPGresAttDesc
-    tuples*: PPPGresAttValue
-    tupArrSize*: int32
-    resultStatus*: TExecStatusType
-    cmdStatus*: array[0..(CMDSTATUS_LEN) - 1, char]
-    binary*: int32
-    conn*: PPGconn
-
-  PPGresult* = ptr TPGresult
-  PPostgresPollingStatusType* = ptr PostgresPollingStatusType
-  PostgresPollingStatusType* = enum 
-    PGRES_POLLING_FAILED = 0, PGRES_POLLING_READING, PGRES_POLLING_WRITING, 
-    PGRES_POLLING_OK, PGRES_POLLING_ACTIVE
-  PPGTransactionStatusType* = ptr PGTransactionStatusType
-  PGTransactionStatusType* = enum 
-    PQTRANS_IDLE, PQTRANS_ACTIVE, PQTRANS_INTRANS, PQTRANS_INERROR, 
-    PQTRANS_UNKNOWN
-  PPGVerbosity* = ptr PGVerbosity
-  PGVerbosity* = enum 
-    PQERRORS_TERSE, PQERRORS_DEFAULT, PQERRORS_VERBOSE
-  PpgNotify* = ptr pgNotify
-  pgNotify* {.pure, final.} = object
-    relname*: cstring
-    be_pid*: int32
-    extra*: cstring
-
-  PQnoticeReceiver* = proc (arg: pointer, res: PPGresult){.cdecl.}
-  PQnoticeProcessor* = proc (arg: pointer, message: cstring){.cdecl.} 
-  Ppqbool* = ptr pqbool
-  pqbool* = char
-  P_PQprintOpt* = ptr PQprintOpt
-  PQprintOpt* {.pure, final.} = object
-    header*: pqbool
-    align*: pqbool
-    standard*: pqbool
-    html3*: pqbool
-    expanded*: pqbool
-    pager*: pqbool
-    fieldSep*: cstring
-    tableOpt*: cstring
-    caption*: cstring
-    fieldName*: ptr cstring
-
-  P_PQconninfoOption* = ptr PQconninfoOption
-  PQconninfoOption* {.pure, final.} = object
-    keyword*: cstring
-    envvar*: cstring
-    compiled*: cstring
-    val*: cstring
-    label*: cstring
-    dispchar*: cstring
-    dispsize*: int32
-
-  PPQArgBlock* = ptr PQArgBlock
-  PQArgBlock* {.pure, final.} = object  
-    length*: int32
-    isint*: int32
-    p*: pointer
-
-proc PQconnectStart*(conninfo: cstring): PPGconn{.cdecl, dynlib: dllName, 
-    importc: "PQconnectStart".}
-proc PQconnectPoll*(conn: PPGconn): PostgresPollingStatusType{.cdecl, 
-    dynlib: dllName, importc: "PQconnectPoll".}
-
-proc PQconnectdb*(conninfo: cstring): PPGconn{.cdecl, dynlib: dllName, 
-    importc: "PQconnectdb".}
-proc PQsetdbLogin*(pghost: cstring, pgport: cstring, pgoptions: cstring, 
-                   pgtty: cstring, dbName: cstring, login: cstring, pwd: cstring): PPGconn{.
-    cdecl, dynlib: dllName, importc: "PQsetdbLogin".}
-
-proc PQsetdb*(M_PGHOST, M_PGPORT, M_PGOPT, M_PGTTY, M_DBNAME: cstring): ppgconn
-
-proc PQfinish*(conn: PPGconn){.cdecl, dynlib: dllName, importc: "PQfinish".}
-
-proc PQconndefaults*(): PPQconninfoOption{.cdecl, dynlib: dllName, 
-    importc: "PQconndefaults".}
-
-proc PQconninfoFree*(connOptions: PPQconninfoOption){.cdecl, dynlib: dllName, 
-    importc: "PQconninfoFree".}
-
-proc PQresetStart*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQresetStart".}
-proc PQresetPoll*(conn: PPGconn): PostgresPollingStatusType{.cdecl, 
-    dynlib: dllName, importc: "PQresetPoll".}
-
-proc PQreset*(conn: PPGconn){.cdecl, dynlib: dllName, importc: "PQreset".}
-
-proc PQrequestCancel*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQrequestCancel".}
-
-proc PQdb*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, importc: "PQdb".}
-proc PQuser*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, importc: "PQuser".}
-proc PQpass*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, importc: "PQpass".}
-proc PQhost*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, importc: "PQhost".}
-proc PQport*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, importc: "PQport".}
-proc PQtty*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, importc: "PQtty".}
-proc PQoptions*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQoptions".}
-proc PQstatus*(conn: PPGconn): TConnStatusType{.cdecl, dynlib: dllName, 
-    importc: "PQstatus".}
-proc PQtransactionStatus*(conn: PPGconn): PGTransactionStatusType{.cdecl, 
-    dynlib: dllName, importc: "PQtransactionStatus".}
-proc PQparameterStatus*(conn: PPGconn, paramName: cstring): cstring{.cdecl, 
-    dynlib: dllName, importc: "PQparameterStatus".}
-proc PQprotocolVersion*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQprotocolVersion".}
-proc PQerrorMessage*(conn: PPGconn): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQerrorMessage".}
-proc PQsocket*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-                                      importc: "PQsocket".}
-proc PQbackendPID*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQbackendPID".}
-proc PQclientEncoding*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQclientEncoding".}
-proc PQsetClientEncoding*(conn: PPGconn, encoding: cstring): int32{.cdecl, 
-    dynlib: dllName, importc: "PQsetClientEncoding".}
-when defined(USE_SSL): 
-  # Get the SSL structure associated with a connection  
-  proc PQgetssl*(conn: PPGconn): PSSL{.cdecl, dynlib: dllName, 
-                                       importc: "PQgetssl".}
-
-proc PQsetErrorVerbosity*(conn: PPGconn, verbosity: PGVerbosity): PGVerbosity{.
-    cdecl, dynlib: dllName, importc: "PQsetErrorVerbosity".}
-
-proc PQtrace*(conn: PPGconn, debug_port: TFile){.cdecl, dynlib: dllName, 
-    importc: "PQtrace".}
-proc PQuntrace*(conn: PPGconn){.cdecl, dynlib: dllName, importc: "PQuntrace".}
-
-proc PQsetNoticeReceiver*(conn: PPGconn, theProc: PQnoticeReceiver, 
-                          arg: pointer): PQnoticeReceiver {.
-    cdecl, dynlib: dllName, importc: "PQsetNoticeReceiver".}
-proc PQsetNoticeProcessor*(conn: PPGconn, theProc: PQnoticeProcessor, 
-                           arg: pointer): PQnoticeProcessor{.
-    cdecl, dynlib: dllName, importc: "PQsetNoticeProcessor".}
-
-proc PQexec*(conn: PPGconn, query: cstring): PPGresult{.cdecl, dynlib: dllName, 
-    importc: "PQexec".}
-proc PQexecParams*(conn: PPGconn, command: cstring, nParams: int32, 
-                   paramTypes: POid, paramValues: cstringArray, 
-                   paramLengths, paramFormats: ptr int32, 
-                   resultFormat: int32): PPGresult {.cdecl, dynlib: dllName, 
-    importc: "PQexecParams".}
-proc PQexecPrepared*(conn: PPGconn, stmtName: cstring, nParams: int32, 
-                     paramValues: cstringArray, 
-                     paramLengths, paramFormats: ptr int32, 
-                     resultFormat: int32): PPGresult {.
-    cdecl, dynlib: dllName, importc: "PQexecPrepared".}
-
-proc PQsendQuery*(conn: PPGconn, query: cstring): int32{.cdecl, dynlib: dllName, 
-    importc: "PQsendQuery".}
-proc PQsendQueryParams*(conn: PPGconn, command: cstring, nParams: int32, 
-                        paramTypes: POid, paramValues: cstringArray, 
-                        paramLengths, paramFormats: ptr int32, 
-                        resultFormat: int32): int32 {.cdecl, dynlib: dllName, 
-    importc: "PQsendQueryParams".}
-proc PQsendQueryPrepared*(conn: PPGconn, stmtName: cstring, nParams: int32, 
-                          paramValues: cstringArray, 
-                          paramLengths, paramFormats: ptr int32, 
-                          resultFormat: int32): int32{.
-    cdecl, dynlib: dllName, importc: "PQsendQueryPrepared".}
-proc PQgetResult*(conn: PPGconn): PPGresult{.cdecl, dynlib: dllName, 
-    importc: "PQgetResult".}
-proc PQisBusy*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-                                      importc: "PQisBusy".}
-proc PQconsumeInput*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQconsumeInput".}
-
-proc PQnotifies*(conn: PPGconn): PPGnotify{.cdecl, dynlib: dllName, 
-    importc: "PQnotifies".}
-
-proc PQputCopyData*(conn: PPGconn, buffer: cstring, nbytes: int32): int32{.
-    cdecl, dynlib: dllName, importc: "PQputCopyData".}
-proc PQputCopyEnd*(conn: PPGconn, errormsg: cstring): int32{.cdecl, 
-    dynlib: dllName, importc: "PQputCopyEnd".}
-proc PQgetCopyData*(conn: PPGconn, buffer: cstringArray, async: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "PQgetCopyData".}
-
-proc PQgetline*(conn: PPGconn, str: cstring, len: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "PQgetline".}
-proc PQputline*(conn: PPGconn, str: cstring): int32{.cdecl, dynlib: dllName, 
-    importc: "PQputline".}
-proc PQgetlineAsync*(conn: PPGconn, buffer: cstring, bufsize: int32): int32{.
-    cdecl, dynlib: dllName, importc: "PQgetlineAsync".}
-proc PQputnbytes*(conn: PPGconn, buffer: cstring, nbytes: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "PQputnbytes".}
-proc PQendcopy*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-                                       importc: "PQendcopy".}
-
-proc PQsetnonblocking*(conn: PPGconn, arg: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "PQsetnonblocking".}
-proc PQisnonblocking*(conn: PPGconn): int32{.cdecl, dynlib: dllName, 
-    importc: "PQisnonblocking".}
-
-proc PQflush*(conn: PPGconn): int32{.cdecl, dynlib: dllName, importc: "PQflush".}
-
-proc PQfn*(conn: PPGconn, fnid: int32, result_buf, 
-           result_len: ptr int32, result_is_int: int32, args: PPQArgBlock, 
-           nargs: int32): PPGresult{.cdecl, dynlib: dllName, importc: "PQfn".}
-
-proc PQresultStatus*(res: PPGresult): TExecStatusType{.cdecl, dynlib: dllName, 
-    importc: "PQresultStatus".}
-proc PQresStatus*(status: TExecStatusType): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQresStatus".}
-proc PQresultErrorMessage*(res: PPGresult): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQresultErrorMessage".}
-proc PQresultErrorField*(res: PPGresult, fieldcode: int32): cstring{.cdecl, 
-    dynlib: dllName, importc: "PQresultErrorField".}
-proc PQntuples*(res: PPGresult): int32{.cdecl, dynlib: dllName, 
-                                        importc: "PQntuples".}
-proc PQnfields*(res: PPGresult): int32{.cdecl, dynlib: dllName, 
-                                        importc: "PQnfields".}
-proc PQbinaryTuples*(res: PPGresult): int32{.cdecl, dynlib: dllName, 
-    importc: "PQbinaryTuples".}
-proc PQfname*(res: PPGresult, field_num: int32): cstring{.cdecl, 
-    dynlib: dllName, importc: "PQfname".}
-proc PQfnumber*(res: PPGresult, field_name: cstring): int32{.cdecl, 
-    dynlib: dllName, importc: "PQfnumber".}
-proc PQftable*(res: PPGresult, field_num: int32): Oid{.cdecl, dynlib: dllName, 
-    importc: "PQftable".}
-proc PQftablecol*(res: PPGresult, field_num: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "PQftablecol".}
-proc PQfformat*(res: PPGresult, field_num: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "PQfformat".}
-proc PQftype*(res: PPGresult, field_num: int32): Oid{.cdecl, dynlib: dllName, 
-    importc: "PQftype".}
-proc PQfsize*(res: PPGresult, field_num: int32): int32{.cdecl, dynlib: dllName, 
-    importc: "PQfsize".}
-proc PQfmod*(res: PPGresult, field_num: int32): int32{.cdecl, dynlib: dllName, 
-    importc: "PQfmod".}
-proc PQcmdStatus*(res: PPGresult): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQcmdStatus".}
-proc PQoidStatus*(res: PPGresult): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQoidStatus".}
-
-proc PQoidValue*(res: PPGresult): Oid{.cdecl, dynlib: dllName, 
-                                       importc: "PQoidValue".}
-
-proc PQcmdTuples*(res: PPGresult): cstring{.cdecl, dynlib: dllName, 
-    importc: "PQcmdTuples".}
-proc PQgetvalue*(res: PPGresult, tup_num: int32, field_num: int32): cstring{.
-    cdecl, dynlib: dllName, importc: "PQgetvalue".}
-proc PQgetlength*(res: PPGresult, tup_num: int32, field_num: int32): int32{.
-    cdecl, dynlib: dllName, importc: "PQgetlength".}
-proc PQgetisnull*(res: PPGresult, tup_num: int32, field_num: int32): int32{.
-    cdecl, dynlib: dllName, importc: "PQgetisnull".}
-
-proc PQclear*(res: PPGresult){.cdecl, dynlib: dllName, importc: "PQclear".}
-
-proc PQfreemem*(p: pointer){.cdecl, dynlib: dllName, importc: "PQfreemem".}
-
-proc PQmakeEmptyPGresult*(conn: PPGconn, status: TExecStatusType): PPGresult{.
-    cdecl, dynlib: dllName, importc: "PQmakeEmptyPGresult".}
-
-proc PQescapeString*(till, `from`: cstring, len: int): int{.cdecl, 
-    dynlib: dllName, importc: "PQescapeString".}
-proc PQescapeBytea*(bintext: cstring, binlen: int, 
-                    bytealen: var int): cstring{.
-    cdecl, dynlib: dllName, importc: "PQescapeBytea".}
-proc PQunescapeBytea*(strtext: cstring, retbuflen: var int): cstring{.cdecl, 
-    dynlib: dllName, importc: "PQunescapeBytea".}
-
-proc PQprint*(fout: TFile, res: PPGresult, ps: PPQprintOpt){.cdecl, 
-    dynlib: dllName, importc: "PQprint".}
-
-proc PQdisplayTuples*(res: PPGresult, fp: TFile, fillAlign: int32, 
-                      fieldSep: cstring, printHeader: int32, quiet: int32){.
-    cdecl, dynlib: dllName, importc: "PQdisplayTuples".}
-
-proc PQprintTuples*(res: PPGresult, fout: TFile, printAttName: int32, 
-                    terseOutput: int32, width: int32){.cdecl, dynlib: dllName, 
-    importc: "PQprintTuples".}
-
-proc lo_open*(conn: PPGconn, lobjId: Oid, mode: int32): int32{.cdecl, 
-    dynlib: dllName, importc: "lo_open".}
-proc lo_close*(conn: PPGconn, fd: int32): int32{.cdecl, dynlib: dllName, 
-    importc: "lo_close".}
-proc lo_read*(conn: PPGconn, fd: int32, buf: cstring, length: int): int32{.
-    cdecl, dynlib: dllName, importc: "lo_read".}
-proc lo_write*(conn: PPGconn, fd: int32, buf: cstring, length: int): int32{.
-    cdecl, dynlib: dllName, importc: "lo_write".}
-proc lo_lseek*(conn: PPGconn, fd: int32, offset: int32, whence: int32): int32{.
-    cdecl, dynlib: dllName, importc: "lo_lseek".}
-proc lo_creat*(conn: PPGconn, mode: int32): Oid{.cdecl, dynlib: dllName, 
-    importc: "lo_creat".}
-proc lo_tell*(conn: PPGconn, fd: int32): int32{.cdecl, dynlib: dllName, 
-    importc: "lo_tell".}
-proc lo_unlink*(conn: PPGconn, lobjId: Oid): int32{.cdecl, dynlib: dllName, 
-    importc: "lo_unlink".}
-proc lo_import*(conn: PPGconn, filename: cstring): Oid{.cdecl, dynlib: dllName, 
-    importc: "lo_import".}
-proc lo_export*(conn: PPGconn, lobjId: Oid, filename: cstring): int32{.cdecl, 
-    dynlib: dllName, importc: "lo_export".}
-
-proc PQmblen*(s: cstring, encoding: int32): int32{.cdecl, dynlib: dllName, 
-    importc: "PQmblen".}
-
-proc PQenv2encoding*(): int32{.cdecl, dynlib: dllName, importc: "PQenv2encoding".}
-
-proc PQsetdb(M_PGHOST, M_PGPORT, M_PGOPT, M_PGTTY, M_DBNAME: cstring): ppgconn = 
-  result = PQsetdbLogin(M_PGHOST, M_PGPORT, M_PGOPT, M_PGTTY, M_DBNAME, "", "")
-
diff --git a/lib/wrappers/python.nim b/lib/wrappers/python.nim
deleted file mode 100755
index ea9ef1fd5..000000000
--- a/lib/wrappers/python.nim
+++ /dev/null
@@ -1,1583 +0,0 @@
-#
-#    Light-weight binding for the Python interpreter
-#       (c) 2010 Andreas Rumpf 
-#    Based on 'PythonEngine' module by Dr. Dietmar Budelsky
-#
-#
-#************************************************************************
-#                                                                        
-# Module:  Unit 'PythonEngine'     Copyright (c) 1997                    
-#                                                                        
-# Version: 3.0                     Dr. Dietmar Budelsky                  
-# Sub-Version: 0.25                dbudelsky@web.de                      
-#                                  Germany                               
-#                                                                        
-#                                  Morgan Martinet                       
-#                                  4721 rue Brebeuf                      
-#                                  H2J 3L2 MONTREAL (QC)                 
-#                                  CANADA                                
-#                                  e-mail: mmm@free.fr                   
-#                                                                        
-#  look our page at: http://www.multimania.com/marat                     
-#************************************************************************
-#  Functionality:  Delphi Components that provide an interface to the    
-#                  Python language (see python.txt for more infos on     
-#                  Python itself).                                       
-#                                                                        
-#************************************************************************
-#  Contributors:                                                         
-#      Grzegorz Makarewicz (mak@mikroplan.com.pl)                        
-#      Andrew Robinson (andy@hps1.demon.co.uk)                           
-#      Mark Watts(mark_watts@hotmail.com)                                
-#      Olivier Deckmyn (olivier.deckmyn@mail.dotcom.fr)                  
-#      Sigve Tjora (public@tjora.no)                                     
-#      Mark Derricutt (mark@talios.com)                                  
-#      Igor E. Poteryaev (jah@mail.ru)                                   
-#      Yuri Filimonov (fil65@mail.ru)                                    
-#      Stefan Hoffmeister (Stefan.Hoffmeister@Econos.de)                 
-#************************************************************************
-# This source code is distributed with no WARRANTY, for no reason or use.
-# Everyone is allowed to use and change this code free for his own tasks 
-# and projects, as long as this header and its copyright text is intact. 
-# For changed versions of this code, which are public distributed the    
-# following additional conditions have to be fullfilled:                 
-# 1) The header has to contain a comment on the change and the author of 
-#    it.                                                                 
-# 2) A copy of the changed source has to be sent to the above E-Mail     
-#    address or my then valid address, if this is possible to the        
-#    author.                                                             
-# The second condition has the target to maintain an up to date central  
-# version of the component. If this condition is not acceptable for      
-# confidential or legal reasons, everyone is free to derive a component  
-# or to generate a diff file to my or other original sources.            
-# Dr. Dietmar Budelsky, 1997-11-17                                       
-#************************************************************************
-
-{.deadCodeElim: on.}
-
-import 
-  dynlib
-
-
-when defined(windows): 
-  const dllname = "python(26|25|24|23|22|21|20|16|15).dll"
-elif defined(macosx):
-  const dllname = "libpython(2.6|2.5|2.4|2.3|2.2|2.1|2.0|1.6|1.5).dylib"
-else: 
-  const dllver = ".1"
-  const dllname = "libpython(2.6|2.5|2.4|2.3|2.2|2.1|2.0|1.6|1.5).so" & dllver
-  
-const 
-  PYT_METHOD_BUFFER_INCREASE* = 10
-  PYT_MEMBER_BUFFER_INCREASE* = 10
-  PYT_GETSET_BUFFER_INCREASE* = 10
-  METH_VARARGS* = 0x0001
-  METH_KEYWORDS* = 0x0002 # Masks for the co_flags field of PyCodeObject
-  CO_OPTIMIZED* = 0x0001
-  CO_NEWLOCALS* = 0x0002
-  CO_VARARGS* = 0x0004
-  CO_VARKEYWORDS* = 0x0008
-
-type                          # Rich comparison opcodes introduced in version 2.1
-  TRichComparisonOpcode* = enum 
-    pyLT, pyLE, pyEQ, pyNE, pyGT, pyGE
-
-const
-  Py_TPFLAGS_HAVE_GETCHARBUFFER* = (1 shl 0) # PySequenceMethods contains sq_contains
-  Py_TPFLAGS_HAVE_SEQUENCE_IN* = (1 shl 1) # Objects which participate in garbage collection (see objimp.h)
-  Py_TPFLAGS_GC* = (1 shl 2)  # PySequenceMethods and PyNumberMethods contain in-place operators
-  Py_TPFLAGS_HAVE_INPLACEOPS* = (1 shl 3) # PyNumberMethods do their own coercion */
-  Py_TPFLAGS_CHECKTYPES* = (1 shl 4)
-  Py_TPFLAGS_HAVE_RICHCOMPARE* = (1 shl 5) # Objects which are weakly referencable if their tp_weaklistoffset is >0
-                                           # XXX Should this have the same value as Py_TPFLAGS_HAVE_RICHCOMPARE?
-                                           # These both indicate a feature that appeared in the same alpha release.
-  Py_TPFLAGS_HAVE_WEAKREFS* = (1 shl 6) # tp_iter is defined
-  Py_TPFLAGS_HAVE_ITER* = (1 shl 7) # New members introduced by Python 2.2 exist
-  Py_TPFLAGS_HAVE_CLASS* = (1 shl 8) # Set if the type object is dynamically allocated
-  Py_TPFLAGS_HEAPTYPE* = (1 shl 9) # Set if the type allows subclassing
-  Py_TPFLAGS_BASETYPE* = (1 shl 10) # Set if the type is 'ready' -- fully initialized
-  Py_TPFLAGS_READY* = (1 shl 12) # Set while the type is being 'readied', to prevent recursive ready calls
-  Py_TPFLAGS_READYING* = (1 shl 13) # Objects support garbage collection (see objimp.h)
-  Py_TPFLAGS_HAVE_GC* = (1 shl 14)
-  Py_TPFLAGS_DEFAULT* = Py_TPFLAGS_HAVE_GETCHARBUFFER or
-      Py_TPFLAGS_HAVE_SEQUENCE_IN or Py_TPFLAGS_HAVE_INPLACEOPS or
-      Py_TPFLAGS_HAVE_RICHCOMPARE or Py_TPFLAGS_HAVE_WEAKREFS or
-      Py_TPFLAGS_HAVE_ITER or Py_TPFLAGS_HAVE_CLASS 
-
-type 
-  TPFlag* = enum 
-    tpfHaveGetCharBuffer, tpfHaveSequenceIn, tpfGC, tpfHaveInplaceOps, 
-    tpfCheckTypes, tpfHaveRichCompare, tpfHaveWeakRefs, tpfHaveIter, 
-    tpfHaveClass, tpfHeapType, tpfBaseType, tpfReady, tpfReadying, tpfHaveGC
-  TPFlags* = set[TPFlag]
-
-const 
-  TPFLAGS_DEFAULT* = {tpfHaveGetCharBuffer, tpfHaveSequenceIn, 
-    tpfHaveInplaceOps, tpfHaveRichCompare, tpfHaveWeakRefs, tpfHaveIter, 
-    tpfHaveClass}
-
-const # Python opcodes
-  single_input* = 256 
-  file_input* = 257
-  eval_input* = 258
-  funcdef* = 259
-  parameters* = 260
-  varargslist* = 261
-  fpdef* = 262
-  fplist* = 263
-  stmt* = 264
-  simple_stmt* = 265
-  small_stmt* = 266
-  expr_stmt* = 267
-  augassign* = 268
-  print_stmt* = 269
-  del_stmt* = 270
-  pass_stmt* = 271
-  flow_stmt* = 272
-  break_stmt* = 273
-  continue_stmt* = 274
-  return_stmt* = 275
-  raise_stmt* = 276
-  import_stmt* = 277
-  import_as_name* = 278
-  dotted_as_name* = 279
-  dotted_name* = 280
-  global_stmt* = 281
-  exec_stmt* = 282
-  assert_stmt* = 283
-  compound_stmt* = 284
-  if_stmt* = 285
-  while_stmt* = 286
-  for_stmt* = 287
-  try_stmt* = 288
-  except_clause* = 289
-  suite* = 290
-  test* = 291
-  and_test* = 291
-  not_test* = 293
-  comparison* = 294
-  comp_op* = 295
-  expr* = 296
-  xor_expr* = 297
-  and_expr* = 298
-  shift_expr* = 299
-  arith_expr* = 300
-  term* = 301
-  factor* = 302
-  power* = 303
-  atom* = 304
-  listmaker* = 305
-  lambdef* = 306
-  trailer* = 307
-  subscriptlist* = 308
-  subscript* = 309
-  sliceop* = 310
-  exprlist* = 311
-  testlist* = 312
-  dictmaker* = 313
-  classdef* = 314
-  arglist* = 315
-  argument* = 316
-  list_iter* = 317
-  list_for* = 318
-  list_if* = 319
-
-const 
-  T_SHORT* = 0
-  T_INT* = 1
-  T_LONG* = 2
-  T_FLOAT* = 3
-  T_DOUBLE* = 4
-  T_STRING* = 5
-  T_OBJECT* = 6
-  T_CHAR* = 7                 # 1-character string
-  T_BYTE* = 8                 # 8-bit signed int
-  T_UBYTE* = 9
-  T_USHORT* = 10
-  T_UINT* = 11
-  T_ULONG* = 12
-  T_STRING_INPLACE* = 13
-  T_OBJECT_EX* = 16 
-  READONLY* = 1
-  RO* = READONLY              # Shorthand 
-  READ_RESTRICTED* = 2
-  WRITE_RESTRICTED* = 4
-  RESTRICTED* = (READ_RESTRICTED or WRITE_RESTRICTED)
-
-type 
-  TPyMemberType* = enum 
-    mtShort, mtInt, mtLong, mtFloat, mtDouble, mtString, mtObject, mtChar, 
-    mtByte, mtUByte, mtUShort, mtUInt, mtULong, mtStringInplace, mtObjectEx
-  TPyMemberFlag* = enum 
-    mfDefault, mfReadOnly, mfReadRestricted, mfWriteRestricted, mfRestricted
-
-type 
-  PInt* = ptr int
-
-#  PLong* = ptr int32
-#  PFloat* = ptr float32
-#  PShort* = ptr int8
-  
-type 
-  PP_frozen* = ptr Pfrozen
-  P_frozen* = ptr Tfrozen
-  PPyObject* = ptr TPyObject
-  PPPyObject* = ptr PPyObject
-  PPPPyObject* = ptr PPPyObject
-  PPyIntObject* = ptr TPyIntObject
-  PPyTypeObject* = ptr TPyTypeObject
-  PPySliceObject* = ptr TPySliceObject
-  TPyCFunction* = proc (self, args: PPyObject): PPyObject{.cdecl.}
-  Tunaryfunc* = proc (ob1: PPyObject): PPyObject{.cdecl.}
-  Tbinaryfunc* = proc (ob1, ob2: PPyObject): PPyObject{.cdecl.}
-  Tternaryfunc* = proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.}
-  Tinquiry* = proc (ob1: PPyObject): int{.cdecl.}
-  Tcoercion* = proc (ob1, ob2: PPPyObject): int{.cdecl.}
-  Tintargfunc* = proc (ob1: PPyObject, i: int): PPyObject{.cdecl.}
-  Tintintargfunc* = proc (ob1: PPyObject, i1, i2: int): PPyObject{.cdecl.}
-  Tintobjargproc* = proc (ob1: PPyObject, i: int, ob2: PPyObject): int{.cdecl.}
-  Tintintobjargproc* = proc (ob1: PPyObject, i1, i2: int, ob2: PPyObject): int{.
-      cdecl.}
-  Tobjobjargproc* = proc (ob1, ob2, ob3: PPyObject): int{.cdecl.}
-  Tpydestructor* = proc (ob: PPyObject){.cdecl.}
-  Tprintfunc* = proc (ob: PPyObject, f: TFile, i: int): int{.cdecl.}
-  Tgetattrfunc* = proc (ob1: PPyObject, name: cstring): PPyObject{.cdecl.}
-  Tsetattrfunc* = proc (ob1: PPyObject, name: cstring, ob2: PPyObject): int{.
-      cdecl.}
-  Tcmpfunc* = proc (ob1, ob2: PPyObject): int{.cdecl.}
-  Treprfunc* = proc (ob: PPyObject): PPyObject{.cdecl.}
-  Thashfunc* = proc (ob: PPyObject): int32{.cdecl.}
-  Tgetattrofunc* = proc (ob1, ob2: PPyObject): PPyObject{.cdecl.}
-  Tsetattrofunc* = proc (ob1, ob2, ob3: PPyObject): int{.cdecl.} 
-  Tgetreadbufferproc* = proc (ob1: PPyObject, i: int, p: Pointer): int{.cdecl.}
-  Tgetwritebufferproc* = proc (ob1: PPyObject, i: int, p: Pointer): int{.cdecl.}
-  Tgetsegcountproc* = proc (ob1: PPyObject, i: int): int{.cdecl.}
-  Tgetcharbufferproc* = proc (ob1: PPyObject, i: int, pstr: cstring): int{.cdecl.}
-  Tobjobjproc* = proc (ob1, ob2: PPyObject): int{.cdecl.}
-  Tvisitproc* = proc (ob1: PPyObject, p: Pointer): int{.cdecl.}
-  Ttraverseproc* = proc (ob1: PPyObject, prc: TVisitproc, p: Pointer): int{.
-      cdecl.}
-  Trichcmpfunc* = proc (ob1, ob2: PPyObject, i: int): PPyObject{.cdecl.}
-  Tgetiterfunc* = proc (ob1: PPyObject): PPyObject{.cdecl.}
-  Titernextfunc* = proc (ob1: PPyObject): PPyObject{.cdecl.}
-  Tdescrgetfunc* = proc (ob1, ob2, ob3: PPyObject): PPyObject{.cdecl.}
-  Tdescrsetfunc* = proc (ob1, ob2, ob3: PPyObject): int{.cdecl.}
-  Tinitproc* = proc (self, args, kwds: PPyObject): int{.cdecl.}
-  Tnewfunc* = proc (subtype: PPyTypeObject, args, kwds: PPyObject): PPyObject{.
-      cdecl.}
-  Tallocfunc* = proc (self: PPyTypeObject, nitems: int): PPyObject{.cdecl.}
-  TPyNumberMethods*{.final.} = object 
-    nb_add*: Tbinaryfunc
-    nb_substract*: Tbinaryfunc
-    nb_multiply*: Tbinaryfunc
-    nb_divide*: Tbinaryfunc
-    nb_remainder*: Tbinaryfunc
-    nb_divmod*: Tbinaryfunc
-    nb_power*: Tternaryfunc
-    nb_negative*: Tunaryfunc
-    nb_positive*: Tunaryfunc
-    nb_absolute*: Tunaryfunc
-    nb_nonzero*: Tinquiry
-    nb_invert*: Tunaryfunc
-    nb_lshift*: Tbinaryfunc
-    nb_rshift*: Tbinaryfunc
-    nb_and*: Tbinaryfunc
-    nb_xor*: Tbinaryfunc
-    nb_or*: Tbinaryfunc
-    nb_coerce*: Tcoercion
-    nb_int*: Tunaryfunc
-    nb_long*: Tunaryfunc
-    nb_float*: Tunaryfunc
-    nb_oct*: Tunaryfunc
-    nb_hex*: Tunaryfunc       #/ jah 29-sep-2000: updated for python 2.0
-                              #/                   added from .h
-    nb_inplace_add*: Tbinaryfunc
-    nb_inplace_subtract*: Tbinaryfunc
-    nb_inplace_multiply*: Tbinaryfunc
-    nb_inplace_divide*: Tbinaryfunc
-    nb_inplace_remainder*: Tbinaryfunc
-    nb_inplace_power*: Tternaryfunc
-    nb_inplace_lshift*: Tbinaryfunc
-    nb_inplace_rshift*: Tbinaryfunc
-    nb_inplace_and*: Tbinaryfunc
-    nb_inplace_xor*: Tbinaryfunc
-    nb_inplace_or*: Tbinaryfunc # Added in release 2.2
-                                # The following require the Py_TPFLAGS_HAVE_CLASS flag
-    nb_floor_divide*: Tbinaryfunc
-    nb_true_divide*: Tbinaryfunc
-    nb_inplace_floor_divide*: Tbinaryfunc
-    nb_inplace_true_divide*: Tbinaryfunc
-
-  PPyNumberMethods* = ptr TPyNumberMethods
-  TPySequenceMethods*{.final.} = object 
-    sq_length*: Tinquiry
-    sq_concat*: Tbinaryfunc
-    sq_repeat*: Tintargfunc
-    sq_item*: Tintargfunc
-    sq_slice*: Tintintargfunc
-    sq_ass_item*: Tintobjargproc
-    sq_ass_slice*: Tintintobjargproc 
-    sq_contains*: Tobjobjproc
-    sq_inplace_concat*: Tbinaryfunc
-    sq_inplace_repeat*: Tintargfunc
-
-  PPySequenceMethods* = ptr TPySequenceMethods
-  TPyMappingMethods*{.final.} = object 
-    mp_length*: Tinquiry
-    mp_subscript*: Tbinaryfunc
-    mp_ass_subscript*: Tobjobjargproc
-
-  PPyMappingMethods* = ptr TPyMappingMethods 
-  TPyBufferProcs*{.final.} = object 
-    bf_getreadbuffer*: Tgetreadbufferproc
-    bf_getwritebuffer*: Tgetwritebufferproc
-    bf_getsegcount*: Tgetsegcountproc
-    bf_getcharbuffer*: Tgetcharbufferproc
-
-  PPyBufferProcs* = ptr TPyBufferProcs
-  TPy_complex*{.final.} = object 
-    float*: float64
-    imag*: float64
-
-  TPyObject*{.pure.} = object 
-    ob_refcnt*: int
-    ob_type*: PPyTypeObject
-
-  TPyIntObject* = object of TPyObject
-    ob_ival*: int32
-
-  PByte* = ptr int8
-  Tfrozen*{.final.} = object 
-    name*: cstring
-    code*: PByte
-    size*: int
-
-  TPySliceObject* = object of TPyObject
-    start*, stop*, step*: PPyObject
-
-  PPyMethodDef* = ptr TPyMethodDef
-  TPyMethodDef*{.final.} = object  # structmember.h
-    ml_name*: cstring
-    ml_meth*: TPyCFunction
-    ml_flags*: int
-    ml_doc*: cstring
-
-  PPyMemberDef* = ptr TPyMemberDef
-  TPyMemberDef*{.final.} = object  # descrobject.h
-                                   # Descriptors
-    name*: cstring
-    theType*: int
-    offset*: int
-    flags*: int
-    doc*: cstring
-
-  Tgetter* = proc (obj: PPyObject, context: Pointer): PPyObject{.cdecl.}
-  Tsetter* = proc (obj, value: PPyObject, context: Pointer): int{.cdecl.}
-  PPyGetSetDef* = ptr TPyGetSetDef
-  TPyGetSetDef*{.final.} = object 
-    name*: cstring
-    get*: Tgetter
-    setter*: Tsetter
-    doc*: cstring
-    closure*: Pointer
-
-  Twrapperfunc* = proc (self, args: PPyObject, wrapped: Pointer): PPyObject{.
-      cdecl.}
-  pwrapperbase* = ptr Twrapperbase
-  Twrapperbase*{.final.} = object  # Various kinds of descriptor objects
-                                   ##define PyDescr_COMMON \
-                                   #          PyObject_HEAD \
-                                   #          PyTypeObject *d_type; \
-                                   #          PyObject *d_name
-                                   #  
-    name*: cstring
-    wrapper*: Twrapperfunc
-    doc*: cstring
-
-  PPyDescrObject* = ptr TPyDescrObject
-  TPyDescrObject* = object of TPyObject
-    d_type*: PPyTypeObject
-    d_name*: PPyObject
-
-  PPyMethodDescrObject* = ptr TPyMethodDescrObject
-  TPyMethodDescrObject* = object of TPyDescrObject
-    d_method*: PPyMethodDef
-
-  PPyMemberDescrObject* = ptr TPyMemberDescrObject
-  TPyMemberDescrObject* = object of TPyDescrObject
-    d_member*: PPyMemberDef
-
-  PPyGetSetDescrObject* = ptr TPyGetSetDescrObject
-  TPyGetSetDescrObject* = object of TPyDescrObject
-    d_getset*: PPyGetSetDef
-
-  PPyWrapperDescrObject* = ptr TPyWrapperDescrObject
-  TPyWrapperDescrObject* = object of TPyDescrObject # object.h
-    d_base*: pwrapperbase
-    d_wrapped*: Pointer       # This can be any function pointer
-  
-  TPyTypeObject* = object of TPyObject
-    ob_size*: int             # Number of items in variable part
-    tp_name*: cstring         # For printing
-    tp_basicsize*, tp_itemsize*: int # For allocation
-                                     # Methods to implement standard operations
-    tp_dealloc*: Tpydestructor
-    tp_print*: Tprintfunc
-    tp_getattr*: Tgetattrfunc
-    tp_setattr*: Tsetattrfunc
-    tp_compare*: Tcmpfunc
-    tp_repr*: Treprfunc       # Method suites for standard classes
-    tp_as_number*: PPyNumberMethods
-    tp_as_sequence*: PPySequenceMethods
-    tp_as_mapping*: PPyMappingMethods # More standard operations (here for binary compatibility)
-    tp_hash*: Thashfunc
-    tp_call*: Tternaryfunc
-    tp_str*: Treprfunc
-    tp_getattro*: Tgetattrofunc
-    tp_setattro*: Tsetattrofunc #/ jah 29-sep-2000: updated for python 2.0
-                                # Functions to access object as input/output buffer
-    tp_as_buffer*: PPyBufferProcs # Flags to define presence of optional/expanded features
-    tp_flags*: int32
-    tp_doc*: cstring          # Documentation string
-                              # call function for all accessible objects
-    tp_traverse*: Ttraverseproc # delete references to contained objects
-    tp_clear*: Tinquiry       # rich comparisons
-    tp_richcompare*: Trichcmpfunc # weak reference enabler
-    tp_weaklistoffset*: int32 # Iterators
-    tp_iter*: Tgetiterfunc
-    tp_iternext*: Titernextfunc # Attribute descriptor and subclassing stuff
-    tp_methods*: PPyMethodDef
-    tp_members*: PPyMemberDef
-    tp_getset*: PPyGetSetDef
-    tp_base*: PPyTypeObject
-    tp_dict*: PPyObject
-    tp_descr_get*: Tdescrgetfunc
-    tp_descr_set*: Tdescrsetfunc
-    tp_dictoffset*: int32
-    tp_init*: Tinitproc
-    tp_alloc*: Tallocfunc
-    tp_new*: Tnewfunc
-    tp_free*: Tpydestructor   # Low-level free-memory routine
-    tp_is_gc*: Tinquiry       # For PyObject_IS_GC
-    tp_bases*: PPyObject
-    tp_mro*: PPyObject        # method resolution order
-    tp_cache*: PPyObject
-    tp_subclasses*: PPyObject
-    tp_weaklist*: PPyObject   #More spares
-    tp_xxx7*: pointer
-    tp_xxx8*: pointer
-
-  PPyMethodChain* = ptr TPyMethodChain
-  TPyMethodChain*{.final.} = object 
-    methods*: PPyMethodDef
-    link*: PPyMethodChain
-
-  PPyClassObject* = ptr TPyClassObject
-  TPyClassObject* = object of TPyObject
-    cl_bases*: PPyObject      # A tuple of class objects
-    cl_dict*: PPyObject       # A dictionary
-    cl_name*: PPyObject       # A string
-                              # The following three are functions or NULL
-    cl_getattr*: PPyObject
-    cl_setattr*: PPyObject
-    cl_delattr*: PPyObject
-
-  PPyInstanceObject* = ptr TPyInstanceObject
-  TPyInstanceObject* = object of TPyObject 
-    in_class*: PPyClassObject # The class object
-    in_dict*: PPyObject       # A dictionary
-  
-  PPyMethodObject* = ptr TPyMethodObject
-  TPyMethodObject* = object of TPyObject # Bytecode object, compile.h
-    im_func*: PPyObject       # The function implementing the method
-    im_self*: PPyObject       # The instance it is bound to, or NULL
-    im_class*: PPyObject      # The class that defined the method
-  
-  PPyCodeObject* = ptr TPyCodeObject
-  TPyCodeObject* = object of TPyObject # from pystate.h
-    co_argcount*: int         # #arguments, except *args
-    co_nlocals*: int          # #local variables
-    co_stacksize*: int        # #entries needed for evaluation stack
-    co_flags*: int            # CO_..., see below
-    co_code*: PPyObject       # instruction opcodes (it hides a PyStringObject)
-    co_consts*: PPyObject     # list (constants used)
-    co_names*: PPyObject      # list of strings (names used)
-    co_varnames*: PPyObject   # tuple of strings (local variable names)
-    co_freevars*: PPyObject   # tuple of strings (free variable names)
-    co_cellvars*: PPyObject   # tuple of strings (cell variable names)
-                              # The rest doesn't count for hash/cmp
-    co_filename*: PPyObject   # string (where it was loaded from)
-    co_name*: PPyObject       # string (name, for reference)
-    co_firstlineno*: int      # first source line number
-    co_lnotab*: PPyObject     # string (encoding addr<->lineno mapping)
-  
-  PPyInterpreterState* = ptr TPyInterpreterState
-  PPyThreadState* = ptr TPyThreadState
-  PPyFrameObject* = ptr TPyFrameObject # Interpreter environments
-  TPyInterpreterState*{.final.} = object  # Thread specific information
-    next*: PPyInterpreterState
-    tstate_head*: PPyThreadState
-    modules*: PPyObject
-    sysdict*: PPyObject
-    builtins*: PPyObject
-    checkinterval*: int
-
-  TPyThreadState*{.final.} = object  # from frameobject.h
-    next*: PPyThreadState
-    interp*: PPyInterpreterState
-    frame*: PPyFrameObject
-    recursion_depth*: int
-    ticker*: int
-    tracing*: int
-    sys_profilefunc*: PPyObject
-    sys_tracefunc*: PPyObject
-    curexc_type*: PPyObject
-    curexc_value*: PPyObject
-    curexc_traceback*: PPyObject
-    exc_type*: PPyObject
-    exc_value*: PPyObject
-    exc_traceback*: PPyObject
-    dict*: PPyObject
-
-  PPyTryBlock* = ptr TPyTryBlock
-  TPyTryBlock*{.final.} = object 
-    b_type*: int              # what kind of block this is
-    b_handler*: int           # where to jump to find handler
-    b_level*: int             # value stack level to pop to
-  
-  CO_MAXBLOCKS* = range[0..19]
-  TPyFrameObject* = object of TPyObject # start of the VAR_HEAD of an object
-                                        # From traceback.c
-    ob_size*: int             # Number of items in variable part
-                              # End of the Head of an object
-    f_back*: PPyFrameObject   # previous frame, or NULL
-    f_code*: PPyCodeObject    # code segment
-    f_builtins*: PPyObject    # builtin symbol table (PyDictObject)
-    f_globals*: PPyObject     # global symbol table (PyDictObject)
-    f_locals*: PPyObject      # local symbol table (PyDictObject)
-    f_valuestack*: PPPyObject # points after the last local
-                              # Next free slot in f_valuestack. Frame creation sets to f_valuestack.
-                              # Frame evaluation usually NULLs it, but a frame that yields sets it
-                              # to the current stack top. 
-    f_stacktop*: PPPyObject
-    f_trace*: PPyObject       # Trace function
-    f_exc_type*, f_exc_value*, f_exc_traceback*: PPyObject
-    f_tstate*: PPyThreadState
-    f_lasti*: int             # Last instruction if called
-    f_lineno*: int            # Current line number
-    f_restricted*: int        # Flag set if restricted operations
-                              # in this scope
-    f_iblock*: int            # index in f_blockstack
-    f_blockstack*: array[CO_MAXBLOCKS, TPyTryBlock] # for try and loop blocks
-    f_nlocals*: int           # number of locals
-    f_ncells*: int
-    f_nfreevars*: int
-    f_stacksize*: int         # size of value stack
-    f_localsplus*: array[0..0, PPyObject] # locals+stack, dynamically sized
-  
-  PPyTraceBackObject* = ptr TPyTraceBackObject
-  TPyTraceBackObject* = object of TPyObject # Parse tree node interface
-    tb_next*: PPyTraceBackObject
-    tb_frame*: PPyFrameObject
-    tb_lasti*: int
-    tb_lineno*: int
-
-  PNode* = ptr Tnode
-  Tnode*{.final.} = object    # From weakrefobject.h
-    n_type*: int16
-    n_str*: cstring
-    n_lineno*: int16
-    n_nchildren*: int16
-    n_child*: PNode
-
-  PPyWeakReference* = ptr TPyWeakReference
-  TPyWeakReference* = object of TPyObject 
-    wr_object*: PPyObject
-    wr_callback*: PPyObject
-    hash*: int32
-    wr_prev*: PPyWeakReference
-    wr_next*: PPyWeakReference
-
-
-const                         
-  PyDateTime_DATE_DATASIZE* = 4 # # of bytes for year, month, and day
-  PyDateTime_TIME_DATASIZE* = 6 # # of bytes for hour, minute, second, and usecond
-  PyDateTime_DATETIME_DATASIZE* = 10 # # of bytes for year, month, 
-                                     # day, hour, minute, second, and usecond. 
-
-type 
-  TPyDateTime_Delta* = object of TPyObject
-    hashcode*: int            # -1 when unknown
-    days*: int                # -MAX_DELTA_DAYS <= days <= MAX_DELTA_DAYS
-    seconds*: int             # 0 <= seconds < 24*3600 is invariant
-    microseconds*: int        # 0 <= microseconds < 1000000 is invariant
-  
-  PPyDateTime_Delta* = ptr TPyDateTime_Delta
-  TPyDateTime_TZInfo* = object of TPyObject # a pure abstract base clase
-  PPyDateTime_TZInfo* = ptr TPyDateTime_TZInfo 
-  TPyDateTime_BaseTZInfo* = object of TPyObject
-    hashcode*: int
-    hastzinfo*: bool          # boolean flag
-  
-  PPyDateTime_BaseTZInfo* = ptr TPyDateTime_BaseTZInfo 
-  TPyDateTime_BaseTime* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_TIME_DATASIZE), int8]
-
-  PPyDateTime_BaseTime* = ptr TPyDateTime_BaseTime
-  TPyDateTime_Time* = object of TPyDateTime_BaseTime # hastzinfo true
-    tzinfo*: PPyObject
-
-  PPyDateTime_Time* = ptr TPyDateTime_Time 
-  TPyDateTime_Date* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_DATE_DATASIZE), int8]
-
-  PPyDateTime_Date* = ptr TPyDateTime_Date 
-  TPyDateTime_BaseDateTime* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_DATETIME_DATASIZE), int8]
-
-  PPyDateTime_BaseDateTime* = ptr TPyDateTime_BaseDateTime
-  TPyDateTime_DateTime* = object of TPyDateTime_BaseTZInfo
-    data*: array[0..Pred(PyDateTime_DATETIME_DATASIZE), int8]
-    tzinfo*: PPyObject
-
-  PPyDateTime_DateTime* = ptr TPyDateTime_DateTime 
-
-#----------------------------------------------------#
-#                                                    #
-#         New exception classes                      #
-#                                                    #
-#----------------------------------------------------#
-
-#
-#  // Python's exceptions
-#  EPythonError   = object(Exception)
-#      EName: String;
-#      EValue: String;
-#  end;
-#  EPyExecError   = object(EPythonError)
-#  end;
-#
-#  // Standard exception classes of Python
-#
-#/// jah 29-sep-2000: updated for python 2.0
-#///                   base classes updated according python documentation
-#
-#{ Hierarchy of Python exceptions, Python 2.3, copied from <INSTALL>\Python\exceptions.c
-#
-#Exception\n\
-# |\n\
-# +-- SystemExit\n\
-# +-- StopIteration\n\
-# +-- StandardError\n\
-# |    |\n\
-# |    +-- KeyboardInterrupt\n\
-# |    +-- ImportError\n\
-# |    +-- EnvironmentError\n\
-# |    |    |\n\
-# |    |    +-- IOError\n\
-# |    |    +-- OSError\n\
-# |    |         |\n\
-# |    |         +-- WindowsError\n\
-# |    |         +-- VMSError\n\
-# |    |\n\
-# |    +-- EOFError\n\
-# |    +-- RuntimeError\n\
-# |    |    |\n\
-# |    |    +-- NotImplementedError\n\
-# |    |\n\
-# |    +-- NameError\n\
-# |    |    |\n\
-# |    |    +-- UnboundLocalError\n\
-# |    |\n\
-# |    +-- AttributeError\n\
-# |    +-- SyntaxError\n\
-# |    |    |\n\
-# |    |    +-- IndentationError\n\
-# |    |         |\n\
-# |    |         +-- TabError\n\
-# |    |\n\
-# |    +-- TypeError\n\
-# |    +-- AssertionError\n\
-# |    +-- LookupError\n\
-# |    |    |\n\
-# |    |    +-- IndexError\n\
-# |    |    +-- KeyError\n\
-# |    |\n\
-# |    +-- ArithmeticError\n\
-# |    |    |\n\
-# |    |    +-- OverflowError\n\
-# |    |    +-- ZeroDivisionError\n\
-# |    |    +-- FloatingPointError\n\
-# |    |\n\
-# |    +-- ValueError\n\
-# |    |    |\n\
-# |    |    +-- UnicodeError\n\
-# |    |        |\n\
-# |    |        +-- UnicodeEncodeError\n\
-# |    |        +-- UnicodeDecodeError\n\
-# |    |        +-- UnicodeTranslateError\n\
-# |    |\n\
-# |    +-- ReferenceError\n\
-# |    +-- SystemError\n\
-# |    +-- MemoryError\n\
-# |\n\
-# +---Warning\n\
-#      |\n\
-#      +-- UserWarning\n\
-#      +-- DeprecationWarning\n\
-#      +-- PendingDeprecationWarning\n\
-#      +-- SyntaxWarning\n\
-#      +-- OverflowWarning\n\
-#      +-- RuntimeWarning\n\
-#      +-- FutureWarning"
-#}
-#   EPyException = class (EPythonError);
-#   EPyStandardError = class (EPyException);
-#   EPyArithmeticError = class (EPyStandardError);
-#   EPyLookupError = class (EPyStandardError);
-#   EPyAssertionError = class (EPyStandardError);
-#   EPyAttributeError = class (EPyStandardError);
-#   EPyEOFError = class (EPyStandardError);
-#   EPyFloatingPointError = class (EPyArithmeticError);
-#   EPyEnvironmentError = class (EPyStandardError);
-#   EPyIOError = class (EPyEnvironmentError);
-#   EPyOSError = class (EPyEnvironmentError);
-#   EPyImportError = class (EPyStandardError);
-#   EPyIndexError = class (EPyLookupError);
-#   EPyKeyError = class (EPyLookupError);
-#   EPyKeyboardInterrupt = class (EPyStandardError);
-#   EPyMemoryError = class (EPyStandardError);
-#   EPyNameError = class (EPyStandardError);
-#   EPyOverflowError = class (EPyArithmeticError);
-#   EPyRuntimeError = class (EPyStandardError);
-#   EPyNotImplementedError = class (EPyRuntimeError);
-#   EPySyntaxError = class (EPyStandardError)
-#   public
-#      EFileName: string;
-#      ELineStr: string;
-#      ELineNumber: Integer;
-#      EOffset: Integer;
-#   end;
-#   EPyIndentationError = class (EPySyntaxError);
-#   EPyTabError = class (EPyIndentationError);
-#   EPySystemError = class (EPyStandardError);
-#   EPySystemExit = class (EPyException);
-#   EPyTypeError = class (EPyStandardError);
-#   EPyUnboundLocalError = class (EPyNameError);
-#   EPyValueError = class (EPyStandardError);
-#   EPyUnicodeError = class (EPyValueError);
-#   UnicodeEncodeError = class (EPyUnicodeError);
-#   UnicodeDecodeError = class (EPyUnicodeError);
-#   UnicodeTranslateError = class (EPyUnicodeError);
-#   EPyZeroDivisionError = class (EPyArithmeticError);
-#   EPyStopIteration = class(EPyException);
-#   EPyWarning = class (EPyException);
-#   EPyUserWarning = class (EPyWarning);
-#   EPyDeprecationWarning = class (EPyWarning);
-#   PendingDeprecationWarning = class (EPyWarning);
-#   FutureWarning = class (EPyWarning);
-#   EPySyntaxWarning = class (EPyWarning);
-#   EPyOverflowWarning = class (EPyWarning);
-#   EPyRuntimeWarning = class (EPyWarning);
-#   EPyReferenceError = class (EPyStandardError);
-#
-
-var 
-  PyArg_Parse*: proc (args: PPyObject, format: cstring): int{.cdecl, varargs.} 
-  PyArg_ParseTuple*: proc (args: PPyObject, format: cstring, x1: Pointer = nil, 
-                           x2: Pointer = nil, x3: Pointer = nil): int{.cdecl, varargs.} 
-  Py_BuildValue*: proc (format: cstring): PPyObject{.cdecl, varargs.} 
-  PyCode_Addr2Line*: proc (co: PPyCodeObject, addrq: int): int{.cdecl.}
-  DLL_Py_GetBuildInfo*: proc (): cstring{.cdecl.}
-
-var
-  Py_DebugFlag*: PInt
-  Py_VerboseFlag*: PInt
-  Py_InteractiveFlag*: PInt
-  Py_OptimizeFlag*: PInt
-  Py_NoSiteFlag*: PInt
-  Py_UseClassExceptionsFlag*: PInt
-  Py_FrozenFlag*: PInt
-  Py_TabcheckFlag*: PInt
-  Py_UnicodeFlag*: PInt
-  Py_IgnoreEnvironmentFlag*: PInt
-  Py_DivisionWarningFlag*: PInt 
-  #_PySys_TraceFunc:    PPPyObject;
-  #_PySys_ProfileFunc: PPPPyObject;
-  PyImport_FrozenModules*: PP_frozen
-  Py_None*: PPyObject
-  Py_Ellipsis*: PPyObject
-  Py_False*: PPyIntObject
-  Py_True*: PPyIntObject
-  Py_NotImplemented*: PPyObject
-  PyExc_AttributeError*: PPPyObject
-  PyExc_EOFError*: PPPyObject
-  PyExc_IOError*: PPPyObject
-  PyExc_ImportError*: PPPyObject
-  PyExc_IndexError*: PPPyObject
-  PyExc_KeyError*: PPPyObject
-  PyExc_KeyboardInterrupt*: PPPyObject
-  PyExc_MemoryError*: PPPyObject
-  PyExc_NameError*: PPPyObject
-  PyExc_OverflowError*: PPPyObject
-  PyExc_RuntimeError*: PPPyObject
-  PyExc_SyntaxError*: PPPyObject
-  PyExc_SystemError*: PPPyObject
-  PyExc_SystemExit*: PPPyObject
-  PyExc_TypeError*: PPPyObject
-  PyExc_ValueError*: PPPyObject
-  PyExc_ZeroDivisionError*: PPPyObject
-  PyExc_ArithmeticError*: PPPyObject
-  PyExc_Exception*: PPPyObject
-  PyExc_FloatingPointError*: PPPyObject
-  PyExc_LookupError*: PPPyObject
-  PyExc_StandardError*: PPPyObject
-  PyExc_AssertionError*: PPPyObject
-  PyExc_EnvironmentError*: PPPyObject
-  PyExc_IndentationError*: PPPyObject
-  PyExc_MemoryErrorInst*: PPPyObject
-  PyExc_NotImplementedError*: PPPyObject
-  PyExc_OSError*: PPPyObject
-  PyExc_TabError*: PPPyObject
-  PyExc_UnboundLocalError*: PPPyObject
-  PyExc_UnicodeError*: PPPyObject
-  PyExc_Warning*: PPPyObject
-  PyExc_DeprecationWarning*: PPPyObject
-  PyExc_RuntimeWarning*: PPPyObject
-  PyExc_SyntaxWarning*: PPPyObject
-  PyExc_UserWarning*: PPPyObject
-  PyExc_OverflowWarning*: PPPyObject
-  PyExc_ReferenceError*: PPPyObject
-  PyExc_StopIteration*: PPPyObject
-  PyExc_FutureWarning*: PPPyObject
-  PyExc_PendingDeprecationWarning*: PPPyObject
-  PyExc_UnicodeDecodeError*: PPPyObject
-  PyExc_UnicodeEncodeError*: PPPyObject
-  PyExc_UnicodeTranslateError*: PPPyObject
-  PyType_Type*: PPyTypeObject
-  PyCFunction_Type*: PPyTypeObject
-  PyCObject_Type*: PPyTypeObject
-  PyClass_Type*: PPyTypeObject
-  PyCode_Type*: PPyTypeObject
-  PyComplex_Type*: PPyTypeObject
-  PyDict_Type*: PPyTypeObject
-  PyFile_Type*: PPyTypeObject
-  PyFloat_Type*: PPyTypeObject
-  PyFrame_Type*: PPyTypeObject
-  PyFunction_Type*: PPyTypeObject
-  PyInstance_Type*: PPyTypeObject
-  PyInt_Type*: PPyTypeObject
-  PyList_Type*: PPyTypeObject
-  PyLong_Type*: PPyTypeObject
-  PyMethod_Type*: PPyTypeObject
-  PyModule_Type*: PPyTypeObject
-  PyObject_Type*: PPyTypeObject
-  PyRange_Type*: PPyTypeObject
-  PySlice_Type*: PPyTypeObject
-  PyString_Type*: PPyTypeObject
-  PyTuple_Type*: PPyTypeObject
-  PyBaseObject_Type*: PPyTypeObject
-  PyBuffer_Type*: PPyTypeObject
-  PyCallIter_Type*: PPyTypeObject
-  PyCell_Type*: PPyTypeObject
-  PyClassMethod_Type*: PPyTypeObject
-  PyProperty_Type*: PPyTypeObject
-  PySeqIter_Type*: PPyTypeObject
-  PyStaticMethod_Type*: PPyTypeObject
-  PySuper_Type*: PPyTypeObject
-  PySymtableEntry_Type*: PPyTypeObject
-  PyTraceBack_Type*: PPyTypeObject
-  PyUnicode_Type*: PPyTypeObject
-  PyWrapperDescr_Type*: PPyTypeObject
-  PyBaseString_Type*: PPyTypeObject
-  PyBool_Type*: PPyTypeObject
-  PyEnum_Type*: PPyTypeObject
-
-  #PyArg_GetObject: proc(args: PPyObject; nargs, i: integer; p_a: PPPyObject): integer; cdecl;
-  #PyArg_GetLong: proc(args: PPyObject; nargs, i: integer; p_a: PLong): integer; cdecl;
-  #PyArg_GetShort: proc(args: PPyObject; nargs, i: integer; p_a: PShort): integer; cdecl;
-  #PyArg_GetFloat: proc(args: PPyObject; nargs, i: integer; p_a: PFloat): integer; cdecl;
-  #PyArg_GetString: proc(args: PPyObject; nargs, i: integer; p_a: PString): integer; cdecl;
-  #PyArgs_VaParse:  proc (args: PPyObject; format: PChar; 
-  #                          va_list: array of const): integer; cdecl;
-  # Does not work!
-  # Py_VaBuildValue: proc (format: PChar; va_list: array of const): PPyObject; cdecl;
-  #PyBuiltin_Init: proc; cdecl;
-proc PyComplex_FromCComplex*(c: TPy_complex): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_FromDoubles*(realv, imag: float64): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_RealAsDouble*(op: PPyObject): float64{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_ImagAsDouble*(op: PPyObject): float64{.cdecl, importc, dynlib: dllname.}
-proc PyComplex_AsCComplex*(op: PPyObject): TPy_complex{.cdecl, importc, dynlib: dllname.}
-proc PyCFunction_GetFunction*(ob: PPyObject): Pointer{.cdecl, importc, dynlib: dllname.}
-proc PyCFunction_GetSelf*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyCallable_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyCObject_FromVoidPtr*(cobj, destruct: Pointer): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyCObject_AsVoidPtr*(ob: PPyObject): Pointer{.cdecl, importc, dynlib: dllname.}
-proc PyClass_New*(ob1, ob2, ob3: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyClass_IsSubclass*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc Py_InitModule4*(name: cstring, methods: PPyMethodDef, doc: cstring, 
-                         passthrough: PPyObject, Api_Version: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}
-proc PyErr_BadArgument*(): int{.cdecl, importc, dynlib: dllname.}
-proc PyErr_BadInternalCall*(){.cdecl, importc, dynlib: dllname.}
-proc PyErr_CheckSignals*(): int{.cdecl, importc, dynlib: dllname.}
-proc PyErr_Clear*(){.cdecl, importc, dynlib: dllname.}
-proc PyErr_Fetch*(errtype, errvalue, errtraceback: PPPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_NoMemory*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyErr_Occurred*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyErr_Print*(){.cdecl, importc, dynlib: dllname.}
-proc PyErr_Restore*(errtype, errvalue, errtraceback: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetFromErrno*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetNone*(value: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetObject*(ob1, ob2: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyErr_SetString*(ErrorObject: PPyObject, text: cstring){.cdecl, importc, dynlib: dllname.}
-proc PyImport_GetModuleDict*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyInt_FromLong*(x: int32): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc Py_Initialize*(){.cdecl, importc, dynlib: dllname.}
-proc Py_Exit*(RetVal: int){.cdecl, importc, dynlib: dllname.}
-proc PyEval_GetBuiltins*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_GetItem*(mp, key: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_SetItem*(mp, key, item: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_DelItem*(mp, key: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Clear*(mp: PPyObject){.cdecl, importc, dynlib: dllname.}
-proc PyDict_Next*(mp: PPyObject, pos: PInt, key, value: PPPyObject): int{.
-      cdecl, importc, dynlib: dllname.}
-proc PyDict_Keys*(mp: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Values*(mp: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Items*(mp: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_Size*(mp: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_DelItemString*(dp: PPyObject, key: cstring): int{.cdecl, importc, dynlib: dllname.}
-proc PyDict_New*(): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_GetItemString*(dp: PPyObject, key: cstring): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyDict_SetItemString*(dp: PPyObject, key: cstring, item: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}
-proc PyDictProxy_New*(obj: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyModule_GetDict*(module: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyObject_Str*(v: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyRun_String*(str: cstring, start: int, globals: PPyObject, 
-                       locals: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyRun_SimpleString*(str: cstring): int{.cdecl, importc, dynlib: dllname.}
-proc PyString_AsString*(ob: PPyObject): cstring{.cdecl, importc, dynlib: dllname.}
-proc PyString_FromString*(str: cstring): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PySys_SetArgv*(argc: int, argv: cstringArray){.cdecl, importc, dynlib: dllname.} 
-  #+ means, Grzegorz or me has tested his non object version of this function
-  #+
-proc PyCFunction_New*(md: PPyMethodDef, ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyEval_CallObject*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_CallObjectWithKeywords*(ob1, ob2, ob3: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyEval_GetFrame*(): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_GetGlobals*(): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_GetLocals*(): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_GetOwner*(): PPyObject {.cdecl, importc, dynlib: dllname.}
-proc PyEval_GetRestricted*(): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_InitThreads*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_RestoreThread*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_SaveThread*(): PPyThreadState{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_FromString*(pc1, pc2: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_GetLine*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_Name*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_SetBufSize*(ob: PPyObject, i: int){.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_SoftSpace*(ob: PPyObject, i: int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_WriteObject*(ob1, ob2: PPyObject, i: int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyFile_WriteString*(s: cstring, ob: PPyObject){.cdecl, importc, dynlib: dllname.} #+
-proc PyFloat_AsDouble*(ob: PPyObject): float64{.cdecl, importc, dynlib: dllname.} #+
-proc PyFloat_FromDouble*(db: float64): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFunction_GetCode*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFunction_GetGlobals*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyFunction_New*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyImport_AddModule*(name: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyImport_Cleanup*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyImport_GetMagicNumber*(): int32{.cdecl, importc, dynlib: dllname.} #+
-proc PyImport_ImportFrozenModule*(key: cstring): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyImport_ImportModule*(name: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyImport_Import*(name: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-                                                               
-proc PyImport_Init*() {.cdecl, importc, dynlib: dllname.}
-proc PyImport_ReloadModule*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyInstance_New*(obClass, obArg, obKW: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyInt_AsLong*(ob: PPyObject): int32{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Append*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_AsTuple*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyList_GetItem*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_GetSlice*(ob: PPyObject, i1, i2: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Insert*(dp: PPyObject, idx: int, item: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_New*(size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Reverse*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_SetItem*(dp: PPyObject, idx: int, item: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_SetSlice*(ob: PPyObject, i1, i2: int, ob2: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #+
-proc PyList_Size*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyList_Sort*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_AsDouble*(ob: PPyObject): float64{.cdecl, importc, dynlib: dllname.} #+
-proc PyLong_AsLong*(ob: PPyObject): int32{.cdecl, importc, dynlib: dllname.} #+
-proc PyLong_FromDouble*(db: float64): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyLong_FromLong*(L: int32): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_FromString*(pc: cstring, ppc: var cstring, i: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyLong_FromUnsignedLong*(val: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_AsUnsignedLong*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_FromUnicode*(ob: PPyObject, a, b: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_FromLongLong*(val: Int64): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyLong_AsLongLong*(ob: PPyObject): Int64{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_GetItemString*(ob: PPyObject, key: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_HasKey*(ob, key: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_HasKeyString*(ob: PPyObject, key: cstring): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_Length*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyMapping_SetItemString*(ob: PPyObject, key: cstring, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyMethod_Class*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMethod_Function*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMethod_New*(ob1, ob2, ob3: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyMethod_Self*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyModule_GetName*(ob: PPyObject): cstring{.cdecl, importc, dynlib: dllname.} #-
-proc PyModule_New*(key: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Absolute*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Add*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_And*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Coerce*(ob1, ob2: var PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Divide*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_FloorDivide*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_TrueDivide*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Divmod*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Float*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Int*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Invert*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Long*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Lshift*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Multiply*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Negative*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Or*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Positive*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Power*(ob1, ob2, ob3: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Remainder*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Rshift*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Subtract*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyNumber_Xor*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyOS_InitInterrupts*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyOS_InterruptOccurred*(): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_CallObject*(ob, args: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Compare*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GetAttr*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyObject_GetAttrString*(ob: PPyObject, c: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GetItem*(ob, key: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_DelItem*(ob, key: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_HasAttrString*(ob: PPyObject, key: cstring): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Hash*(ob: PPyObject): int32{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_IsTrue*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Length*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Repr*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_SetAttr*(ob1, ob2, ob3: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_SetAttrString*(ob: PPyObject, key: cstring, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyObject_SetItem*(ob1, ob2, ob3: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_Init*(ob: PPyObject, t: PPyTypeObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_InitVar*(ob: PPyObject, t: PPyTypeObject, size: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyObject_New*(t: PPyTypeObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_NewVar*(t: PPyTypeObject, size: int): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyObject_Free*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_IsInstance*(inst, cls: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_IsSubclass*(derived, cls: PPyObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyObject_GenericGetAttr*(obj, name: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyObject_GenericSetAttr*(obj, name, value: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Malloc*(size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_New*(t: PPyTypeObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_NewVar*(t: PPyTypeObject, size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Resize*(t: PPyObject, newsize: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Del*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_Track*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyObject_GC_UnTrack*(ob: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyRange_New*(l1, l2, l3: int32, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Check*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Concat*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Count*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_GetItem*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_GetSlice*(ob: PPyObject, i1, i2: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_In*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Index*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Length*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Repeat*(ob: PPyObject, count: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_SetItem*(ob: PPyObject, i: int, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PySequence_SetSlice*(ob: PPyObject, i1, i2: int, value: PPyObject): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PySequence_DelSlice*(ob: PPyObject, i1, i2: int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Tuple*(ob: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PySequence_Contains*(ob, value: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySlice_GetIndices*(ob: PPySliceObject, len: int, 
-                             start, stop, step: var int): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySlice_GetIndicesEx*(ob: PPySliceObject, len: int, 
-                               start, stop, step, slicelength: var int): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PySlice_New*(start, stop, step: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_Concat*(ob1: var PPyObject, ob2: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyString_ConcatAndDel*(ob1: var PPyObject, ob2: PPyObject){.cdecl, importc, dynlib: dllname.} #-
-proc PyString_Format*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_FromStringAndSize*(s: cstring, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_Size*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyString_DecodeEscape*(s: cstring, length: int, errors: cstring, 
-                                unicode: int, recode_encoding: cstring): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyString_Repr*(ob: PPyObject, smartquotes: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PySys_GetObject*(s: cstring): PPyObject{.cdecl, importc, dynlib: dllname.} 
-#-
-#PySys_Init:procedure; cdecl, importc, dynlib: dllname;
-#-
-proc PySys_SetObject*(s: cstring, ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PySys_SetPath*(path: cstring){.cdecl, importc, dynlib: dllname.} #-
-#PyTraceBack_Fetch:function:PPyObject; cdecl, importc, dynlib: dllname;
-#-
-proc PyTraceBack_Here*(p: pointer): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyTraceBack_Print*(ob1, ob2: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-#PyTraceBack_Store:function (ob:PPyObject):integer; cdecl, importc, dynlib: dllname;
-#+
-proc PyTuple_GetItem*(ob: PPyObject, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc PyTuple_GetSlice*(ob: PPyObject, i1, i2: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyTuple_New*(size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyTuple_SetItem*(ob: PPyObject, key: int, value: PPyObject): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyTuple_Size*(ob: PPyObject): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyType_IsSubtype*(a, b: PPyTypeObject): int{.cdecl, importc, dynlib: dllname.}
-proc PyType_GenericAlloc*(atype: PPyTypeObject, nitems: int): PPyObject{.
-      cdecl, importc, dynlib: dllname.}
-proc PyType_GenericNew*(atype: PPyTypeObject, args, kwds: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}
-proc PyType_Ready*(atype: PPyTypeObject): int{.cdecl, importc, dynlib: dllname.} #+
-proc PyUnicode_FromWideChar*(w: pointer, size: int): PPyObject{.cdecl, importc, dynlib: dllname.} #+
-proc PyUnicode_AsWideChar*(unicode: PPyObject, w: pointer, size: int): int{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc PyUnicode_FromOrdinal*(ordinal: int): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWeakref_GetObject*(theRef: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWeakref_NewProxy*(ob, callback: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWeakref_NewRef*(ob, callback: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyWrapper_New*(ob1, ob2: PPyObject): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc PyBool_FromLong*(ok: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc Py_AtExit*(prc: proc ()): int{.cdecl, importc, dynlib: dllname.} #-
-#Py_Cleanup:procedure; cdecl, importc, dynlib: dllname;
-#-
-proc Py_CompileString*(s1, s2: cstring, i: int): PPyObject{.cdecl, importc, dynlib: dllname.} #-
-proc Py_FatalError*(s: cstring){.cdecl, importc, dynlib: dllname.} #-
-proc Py_FindMethod*(md: PPyMethodDef, ob: PPyObject, key: cstring): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc Py_FindMethodInChain*(mc: PPyMethodChain, ob: PPyObject, key: cstring): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc Py_FlushLine*(){.cdecl, importc, dynlib: dllname.} #+
-proc Py_Finalize*(){.cdecl, importc, dynlib: dllname.} #-
-proc PyErr_ExceptionMatches*(exc: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyErr_GivenExceptionMatches*(raised_exc, exc: PPyObject): int{.cdecl, importc, dynlib: dllname.} #-
-proc PyEval_EvalCode*(co: PPyCodeObject, globals, locals: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #+
-proc Py_GetVersion*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetCopyright*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetExecPrefix*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetPath*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetPrefix*(): cstring{.cdecl, importc, dynlib: dllname.} #+
-proc Py_GetProgramName*(): cstring{.cdecl, importc, dynlib: dllname.} #-
-proc PyParser_SimpleParseString*(str: cstring, start: int): PNode{.cdecl, importc, dynlib: dllname.} #-
-proc PyNode_Free*(n: PNode){.cdecl, importc, dynlib: dllname.} #-
-proc PyErr_NewException*(name: cstring, base, dict: PPyObject): PPyObject{.
-      cdecl, importc, dynlib: dllname.}                 #-
-proc Py_Malloc*(size: int): Pointer {.cdecl, importc, dynlib: dllname.}
-proc PyMem_Malloc*(size: int): Pointer {.cdecl, importc, dynlib: dllname.}
-proc PyObject_CallMethod*(obj: PPyObject, theMethod, 
-                              format: cstring): PPyObject{.cdecl, importc, dynlib: dllname.}
-proc Py_SetProgramName*(name: cstring){.cdecl, importc, dynlib: dllname.}
-proc Py_IsInitialized*(): int{.cdecl, importc, dynlib: dllname.}
-proc Py_GetProgramFullPath*(): cstring{.cdecl, importc, dynlib: dllname.}
-proc Py_NewInterpreter*(): PPyThreadState{.cdecl, importc, dynlib: dllname.}
-proc Py_EndInterpreter*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyEval_AcquireLock*(){.cdecl, importc, dynlib: dllname.}
-proc PyEval_ReleaseLock*(){.cdecl, importc, dynlib: dllname.}
-proc PyEval_AcquireThread*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyEval_ReleaseThread*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyInterpreterState_New*(): PPyInterpreterState{.cdecl, importc, dynlib: dllname.}
-proc PyInterpreterState_Clear*(interp: PPyInterpreterState){.cdecl, importc, dynlib: dllname.}
-proc PyInterpreterState_Delete*(interp: PPyInterpreterState){.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_New*(interp: PPyInterpreterState): PPyThreadState{.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Clear*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Delete*(tstate: PPyThreadState){.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Get*(): PPyThreadState{.cdecl, importc, dynlib: dllname.}
-proc PyThreadState_Swap*(tstate: PPyThreadState): PPyThreadState{.cdecl, importc, dynlib: dllname.} 
-
-#Further exported Objects, may be implemented later
-#
-#    PyCode_New: Pointer;
-#    PyErr_SetInterrupt: Pointer;
-#    PyFile_AsFile: Pointer;
-#    PyFile_FromFile: Pointer;
-#    PyFloat_AsString: Pointer;
-#    PyFrame_BlockPop: Pointer;
-#    PyFrame_BlockSetup: Pointer;
-#    PyFrame_ExtendStack: Pointer;
-#    PyFrame_FastToLocals: Pointer;
-#    PyFrame_LocalsToFast: Pointer;
-#    PyFrame_New: Pointer;
-#    PyGrammar_AddAccelerators: Pointer;
-#    PyGrammar_FindDFA: Pointer;
-#    PyGrammar_LabelRepr: Pointer;
-#    PyInstance_DoBinOp: Pointer;
-#    PyInt_GetMax: Pointer;
-#    PyMarshal_Init: Pointer;
-#    PyMarshal_ReadLongFromFile: Pointer;
-#    PyMarshal_ReadObjectFromFile: Pointer;
-#    PyMarshal_ReadObjectFromString: Pointer;
-#    PyMarshal_WriteLongToFile: Pointer;
-#    PyMarshal_WriteObjectToFile: Pointer;
-#    PyMember_Get: Pointer;
-#    PyMember_Set: Pointer;
-#    PyNode_AddChild: Pointer;
-#    PyNode_Compile: Pointer;
-#    PyNode_New: Pointer;
-#    PyOS_GetLastModificationTime: Pointer;
-#    PyOS_Readline: Pointer;
-#    PyOS_strtol: Pointer;
-#    PyOS_strtoul: Pointer;
-#    PyObject_CallFunction: Pointer;
-#    PyObject_CallMethod: Pointer;
-#    PyObject_Print: Pointer;
-#    PyParser_AddToken: Pointer;
-#    PyParser_Delete: Pointer;
-#    PyParser_New: Pointer;
-#    PyParser_ParseFile: Pointer;
-#    PyParser_ParseString: Pointer;
-#    PyParser_SimpleParseFile: Pointer;
-#    PyRun_AnyFile: Pointer;
-#    PyRun_File: Pointer;
-#    PyRun_InteractiveLoop: Pointer;
-#    PyRun_InteractiveOne: Pointer;
-#    PyRun_SimpleFile: Pointer;
-#    PySys_GetFile: Pointer;
-#    PyToken_OneChar: Pointer;
-#    PyToken_TwoChars: Pointer;
-#    PyTokenizer_Free: Pointer;
-#    PyTokenizer_FromFile: Pointer;
-#    PyTokenizer_FromString: Pointer;
-#    PyTokenizer_Get: Pointer;
-#    Py_Main: Pointer;
-#    _PyObject_NewVar: Pointer;
-#    _PyParser_Grammar: Pointer;
-#    _PyParser_TokenNames: Pointer;
-#    _PyThread_Started: Pointer;
-#    _Py_c_diff: Pointer;
-#    _Py_c_neg: Pointer;
-#    _Py_c_pow: Pointer;
-#    _Py_c_prod: Pointer;
-#    _Py_c_quot: Pointer;
-#    _Py_c_sum: Pointer;
-#
-
-# This function handles all cardinals, pointer types (with no adjustment of pointers!)
-# (Extended) floats, which are handled as Python doubles and currencies, handled
-# as (normalized) Python doubles.
-proc PyImport_ExecCodeModule*(name: String, codeobject: PPyObject): PPyObject
-proc PyString_Check*(obj: PPyObject): bool
-proc PyString_CheckExact*(obj: PPyObject): bool
-proc PyFloat_Check*(obj: PPyObject): bool
-proc PyFloat_CheckExact*(obj: PPyObject): bool
-proc PyInt_Check*(obj: PPyObject): bool
-proc PyInt_CheckExact*(obj: PPyObject): bool
-proc PyLong_Check*(obj: PPyObject): bool
-proc PyLong_CheckExact*(obj: PPyObject): bool
-proc PyTuple_Check*(obj: PPyObject): bool
-proc PyTuple_CheckExact*(obj: PPyObject): bool
-proc PyInstance_Check*(obj: PPyObject): bool
-proc PyClass_Check*(obj: PPyObject): bool
-proc PyMethod_Check*(obj: PPyObject): bool
-proc PyList_Check*(obj: PPyObject): bool
-proc PyList_CheckExact*(obj: PPyObject): bool
-proc PyDict_Check*(obj: PPyObject): bool
-proc PyDict_CheckExact*(obj: PPyObject): bool
-proc PyModule_Check*(obj: PPyObject): bool
-proc PyModule_CheckExact*(obj: PPyObject): bool
-proc PySlice_Check*(obj: PPyObject): bool
-proc PyFunction_Check*(obj: PPyObject): bool
-proc PyUnicode_Check*(obj: PPyObject): bool
-proc PyUnicode_CheckExact*(obj: PPyObject): bool
-proc PyType_IS_GC*(t: PPyTypeObject): bool
-proc PyObject_IS_GC*(obj: PPyObject): bool
-proc PyBool_Check*(obj: PPyObject): bool
-proc PyBaseString_Check*(obj: PPyObject): bool
-proc PyEnum_Check*(obj: PPyObject): bool
-proc PyObject_TypeCheck*(obj: PPyObject, t: PPyTypeObject): bool
-proc Py_InitModule*(name: cstring, md: PPyMethodDef): PPyObject
-proc PyType_HasFeature*(AType: PPyTypeObject, AFlag: int): bool
-# implementation
-
-proc Py_INCREF*(op: PPyObject) {.inline.} = 
-  Inc(op.ob_refcnt)
-
-proc Py_DECREF*(op: PPyObject) {.inline.} = 
-  Dec(op.ob_refcnt)
-  if op.ob_refcnt == 0: 
-    op.ob_type.tp_dealloc(op)
-
-proc Py_XINCREF*(op: PPyObject) {.inline.} = 
-  if op != nil: Py_INCREF(op)
-  
-proc Py_XDECREF*(op: PPyObject) {.inline.} = 
-  if op != nil: Py_DECREF(op)
-  
-proc PyImport_ExecCodeModule(name: string, codeobject: PPyObject): PPyObject = 
-  var m, d, v, modules: PPyObject
-  m = PyImport_AddModule(cstring(name))
-  if m == nil: 
-    return nil
-  d = PyModule_GetDict(m)
-  if PyDict_GetItemString(d, "__builtins__") == nil: 
-    if PyDict_SetItemString(d, "__builtins__", PyEval_GetBuiltins()) != 0: 
-      return nil
-  if PyDict_SetItemString(d, "__file__", 
-                          PPyCodeObject(codeobject).co_filename) != 0: 
-    PyErr_Clear() # Not important enough to report
-  v = PyEval_EvalCode(PPyCodeObject(codeobject), d, d) # XXX owner ?
-  if v == nil: 
-    return nil
-  Py_XDECREF(v)
-  modules = PyImport_GetModuleDict()
-  if PyDict_GetItemString(modules, cstring(name)) == nil: 
-    PyErr_SetString(PyExc_ImportError^ , cstring(
-        "Loaded module " & name & "not found in sys.modules"))
-    return nil
-  Py_XINCREF(m)
-  Result = m
-
-proc PyString_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyString_Type)
-
-proc PyString_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyString_Type)
-
-proc PyFloat_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyFloat_Type)
-
-proc PyFloat_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyFloat_Type)
-
-proc PyInt_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyInt_Type)
-
-proc PyInt_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyInt_Type)
-
-proc PyLong_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyLong_Type)
-
-proc PyLong_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyLong_Type)
-
-proc PyTuple_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyTuple_Type)
-
-proc PyTuple_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyTuple_Type)
-
-proc PyInstance_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyInstance_Type)
-
-proc PyClass_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyClass_Type)
-
-proc PyMethod_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyMethod_Type)
-
-proc PyList_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyList_Type)
-
-proc PyList_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyList_Type)
-
-proc PyDict_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyDict_Type)
-
-proc PyDict_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyDict_Type)
-
-proc PyModule_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyModule_Type)
-
-proc PyModule_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PyModule_Type)
-
-proc PySlice_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj^ .ob_type == PySlice_Type)
-
-proc PyFunction_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and
-      ((obj.ob_type == PyCFunction_Type) or
-      (obj.ob_type == PyFunction_Type))
-
-proc PyUnicode_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyUnicode_Type)
-
-proc PyUnicode_CheckExact(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyUnicode_Type)
-
-proc PyType_IS_GC(t: PPyTypeObject): bool = 
-  Result = PyType_HasFeature(t, Py_TPFLAGS_HAVE_GC)
-
-proc PyObject_IS_GC(obj: PPyObject): bool = 
-  Result = PyType_IS_GC(obj.ob_type) and
-      ((obj.ob_type.tp_is_gc == nil) or (obj.ob_type.tp_is_gc(obj) == 1))
-
-proc PyBool_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyBool_Type)
-
-proc PyBaseString_Check(obj: PPyObject): bool = 
-  Result = PyObject_TypeCheck(obj, PyBaseString_Type)
-
-proc PyEnum_Check(obj: PPyObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == PyEnum_Type)
-
-proc PyObject_TypeCheck(obj: PPyObject, t: PPyTypeObject): bool = 
-  Result = (obj != nil) and (obj.ob_type == t)
-  if not Result and (obj != nil) and (t != nil): 
-    Result = PyType_IsSubtype(obj.ob_type, t) == 1
-  
-proc Py_InitModule(name: cstring, md: PPyMethodDef): PPyObject = 
-  result = Py_InitModule4(name, md, nil, nil, 1012)
-
-proc PyType_HasFeature(AType: PPyTypeObject, AFlag: int): bool = 
-  #(((t)->tp_flags & (f)) != 0)
-  Result = (AType.tp_flags and AFlag) != 0
-
-proc init(lib: TLibHandle) = 
-  Py_DebugFlag = cast[PInt](symAddr(lib, "Py_DebugFlag"))
-  Py_VerboseFlag = cast[PInt](symAddr(lib, "Py_VerboseFlag"))
-  Py_InteractiveFlag = cast[PInt](symAddr(lib, "Py_InteractiveFlag"))
-  Py_OptimizeFlag = cast[PInt](symAddr(lib, "Py_OptimizeFlag"))
-  Py_NoSiteFlag = cast[PInt](symAddr(lib, "Py_NoSiteFlag"))
-  Py_UseClassExceptionsFlag = cast[PInt](symAddr(lib, "Py_UseClassExceptionsFlag"))
-  Py_FrozenFlag = cast[PInt](symAddr(lib, "Py_FrozenFlag"))
-  Py_TabcheckFlag = cast[PInt](symAddr(lib, "Py_TabcheckFlag"))
-  Py_UnicodeFlag = cast[PInt](symAddr(lib, "Py_UnicodeFlag"))
-  Py_IgnoreEnvironmentFlag = cast[PInt](symAddr(lib, "Py_IgnoreEnvironmentFlag"))
-  Py_DivisionWarningFlag = cast[PInt](symAddr(lib, "Py_DivisionWarningFlag"))
-  Py_None = cast[PPyObject](symAddr(lib, "_Py_NoneStruct"))
-  Py_Ellipsis = cast[PPyObject](symAddr(lib, "_Py_EllipsisObject"))
-  Py_False = cast[PPyIntObject](symAddr(lib, "_Py_ZeroStruct"))
-  Py_True = cast[PPyIntObject](symAddr(lib, "_Py_TrueStruct"))
-  Py_NotImplemented = cast[PPyObject](symAddr(lib, "_Py_NotImplementedStruct"))
-  PyImport_FrozenModules = cast[PP_frozen](symAddr(lib, "PyImport_FrozenModules"))
-  PyExc_AttributeError = cast[PPPyObject](symAddr(lib, "PyExc_AttributeError"))
-  PyExc_EOFError = cast[PPPyObject](symAddr(lib, "PyExc_EOFError"))
-  PyExc_IOError = cast[PPPyObject](symAddr(lib, "PyExc_IOError"))
-  PyExc_ImportError = cast[PPPyObject](symAddr(lib, "PyExc_ImportError"))
-  PyExc_IndexError = cast[PPPyObject](symAddr(lib, "PyExc_IndexError"))
-  PyExc_KeyError = cast[PPPyObject](symAddr(lib, "PyExc_KeyError"))
-  PyExc_KeyboardInterrupt = cast[PPPyObject](symAddr(lib, "PyExc_KeyboardInterrupt"))
-  PyExc_MemoryError = cast[PPPyObject](symAddr(lib, "PyExc_MemoryError"))
-  PyExc_NameError = cast[PPPyObject](symAddr(lib, "PyExc_NameError"))
-  PyExc_OverflowError = cast[PPPyObject](symAddr(lib, "PyExc_OverflowError"))
-  PyExc_RuntimeError = cast[PPPyObject](symAddr(lib, "PyExc_RuntimeError"))
-  PyExc_SyntaxError = cast[PPPyObject](symAddr(lib, "PyExc_SyntaxError"))
-  PyExc_SystemError = cast[PPPyObject](symAddr(lib, "PyExc_SystemError"))
-  PyExc_SystemExit = cast[PPPyObject](symAddr(lib, "PyExc_SystemExit"))
-  PyExc_TypeError = cast[PPPyObject](symAddr(lib, "PyExc_TypeError"))
-  PyExc_ValueError = cast[PPPyObject](symAddr(lib, "PyExc_ValueError"))
-  PyExc_ZeroDivisionError = cast[PPPyObject](symAddr(lib, "PyExc_ZeroDivisionError"))
-  PyExc_ArithmeticError = cast[PPPyObject](symAddr(lib, "PyExc_ArithmeticError"))
-  PyExc_Exception = cast[PPPyObject](symAddr(lib, "PyExc_Exception"))
-  PyExc_FloatingPointError = cast[PPPyObject](symAddr(lib, "PyExc_FloatingPointError"))
-  PyExc_LookupError = cast[PPPyObject](symAddr(lib, "PyExc_LookupError"))
-  PyExc_StandardError = cast[PPPyObject](symAddr(lib, "PyExc_StandardError"))
-  PyExc_AssertionError = cast[PPPyObject](symAddr(lib, "PyExc_AssertionError"))
-  PyExc_EnvironmentError = cast[PPPyObject](symAddr(lib, "PyExc_EnvironmentError"))
-  PyExc_IndentationError = cast[PPPyObject](symAddr(lib, "PyExc_IndentationError"))
-  PyExc_MemoryErrorInst = cast[PPPyObject](symAddr(lib, "PyExc_MemoryErrorInst"))
-  PyExc_NotImplementedError = cast[PPPyObject](symAddr(lib, "PyExc_NotImplementedError"))
-  PyExc_OSError = cast[PPPyObject](symAddr(lib, "PyExc_OSError"))
-  PyExc_TabError = cast[PPPyObject](symAddr(lib, "PyExc_TabError"))
-  PyExc_UnboundLocalError = cast[PPPyObject](symAddr(lib, "PyExc_UnboundLocalError"))
-  PyExc_UnicodeError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeError"))
-  PyExc_Warning = cast[PPPyObject](symAddr(lib, "PyExc_Warning"))
-  PyExc_DeprecationWarning = cast[PPPyObject](symAddr(lib, "PyExc_DeprecationWarning"))
-  PyExc_RuntimeWarning = cast[PPPyObject](symAddr(lib, "PyExc_RuntimeWarning"))
-  PyExc_SyntaxWarning = cast[PPPyObject](symAddr(lib, "PyExc_SyntaxWarning"))
-  PyExc_UserWarning = cast[PPPyObject](symAddr(lib, "PyExc_UserWarning"))
-  PyExc_OverflowWarning = cast[PPPyObject](symAddr(lib, "PyExc_OverflowWarning"))
-  PyExc_ReferenceError = cast[PPPyObject](symAddr(lib, "PyExc_ReferenceError"))
-  PyExc_StopIteration = cast[PPPyObject](symAddr(lib, "PyExc_StopIteration"))
-  PyExc_FutureWarning = cast[PPPyObject](symAddr(lib, "PyExc_FutureWarning"))
-  PyExc_PendingDeprecationWarning = cast[PPPyObject](symAddr(lib, 
-      "PyExc_PendingDeprecationWarning"))
-  PyExc_UnicodeDecodeError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeDecodeError"))
-  PyExc_UnicodeEncodeError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeEncodeError"))
-  PyExc_UnicodeTranslateError = cast[PPPyObject](symAddr(lib, "PyExc_UnicodeTranslateError"))
-  PyType_Type = cast[PPyTypeObject](symAddr(lib, "PyType_Type"))
-  PyCFunction_Type = cast[PPyTypeObject](symAddr(lib, "PyCFunction_Type"))
-  PyCObject_Type = cast[PPyTypeObject](symAddr(lib, "PyCObject_Type"))
-  PyClass_Type = cast[PPyTypeObject](symAddr(lib, "PyClass_Type"))
-  PyCode_Type = cast[PPyTypeObject](symAddr(lib, "PyCode_Type"))
-  PyComplex_Type = cast[PPyTypeObject](symAddr(lib, "PyComplex_Type"))
-  PyDict_Type = cast[PPyTypeObject](symAddr(lib, "PyDict_Type"))
-  PyFile_Type = cast[PPyTypeObject](symAddr(lib, "PyFile_Type"))
-  PyFloat_Type = cast[PPyTypeObject](symAddr(lib, "PyFloat_Type"))
-  PyFrame_Type = cast[PPyTypeObject](symAddr(lib, "PyFrame_Type"))
-  PyFunction_Type = cast[PPyTypeObject](symAddr(lib, "PyFunction_Type"))
-  PyInstance_Type = cast[PPyTypeObject](symAddr(lib, "PyInstance_Type"))
-  PyInt_Type = cast[PPyTypeObject](symAddr(lib, "PyInt_Type"))
-  PyList_Type = cast[PPyTypeObject](symAddr(lib, "PyList_Type"))
-  PyLong_Type = cast[PPyTypeObject](symAddr(lib, "PyLong_Type"))
-  PyMethod_Type = cast[PPyTypeObject](symAddr(lib, "PyMethod_Type"))
-  PyModule_Type = cast[PPyTypeObject](symAddr(lib, "PyModule_Type"))
-  PyObject_Type = cast[PPyTypeObject](symAddr(lib, "PyObject_Type"))
-  PyRange_Type = cast[PPyTypeObject](symAddr(lib, "PyRange_Type"))
-  PySlice_Type = cast[PPyTypeObject](symAddr(lib, "PySlice_Type"))
-  PyString_Type = cast[PPyTypeObject](symAddr(lib, "PyString_Type"))
-  PyTuple_Type = cast[PPyTypeObject](symAddr(lib, "PyTuple_Type"))
-  PyUnicode_Type = cast[PPyTypeObject](symAddr(lib, "PyUnicode_Type"))
-  PyBaseObject_Type = cast[PPyTypeObject](symAddr(lib, "PyBaseObject_Type"))
-  PyBuffer_Type = cast[PPyTypeObject](symAddr(lib, "PyBuffer_Type"))
-  PyCallIter_Type = cast[PPyTypeObject](symAddr(lib, "PyCallIter_Type"))
-  PyCell_Type = cast[PPyTypeObject](symAddr(lib, "PyCell_Type"))
-  PyClassMethod_Type = cast[PPyTypeObject](symAddr(lib, "PyClassMethod_Type"))
-  PyProperty_Type = cast[PPyTypeObject](symAddr(lib, "PyProperty_Type"))
-  PySeqIter_Type = cast[PPyTypeObject](symAddr(lib, "PySeqIter_Type"))
-  PyStaticMethod_Type = cast[PPyTypeObject](symAddr(lib, "PyStaticMethod_Type"))
-  PySuper_Type = cast[PPyTypeObject](symAddr(lib, "PySuper_Type"))
-  PySymtableEntry_Type = cast[PPyTypeObject](symAddr(lib, "PySymtableEntry_Type"))
-  PyTraceBack_Type = cast[PPyTypeObject](symAddr(lib, "PyTraceBack_Type"))
-  PyWrapperDescr_Type = cast[PPyTypeObject](symAddr(lib, "PyWrapperDescr_Type"))
-  PyBaseString_Type = cast[PPyTypeObject](symAddr(lib, "PyBaseString_Type"))
-  PyBool_Type = cast[PPyTypeObject](symAddr(lib, "PyBool_Type"))
-  PyEnum_Type = cast[PPyTypeObject](symAddr(lib, "PyEnum_Type"))
-
-# Unfortunately we have to duplicate the loading mechanism here, because Nimrod
-# does not support variables from dynamic libraries. Well designed API's don't
-# require this anyway. Python is an exception.
-
-var
-  lib: TLibHandle
-
-when defined(windows): 
-  const
-    LibNames = ["python26.dll", "python25.dll", 
-      "python24.dll", "python23.dll", "python22.dll", "python21.dll", 
-      "python20.dll", "python16.dll", "python15.dll"]
-elif defined(macosx):
-  const
-    LibNames = ["libpython2.6.dylib", "libpython2.5.dylib", 
-      "libpython2.4.dylib", "libpython2.3.dylib", "libpython2.2.dylib", 
-      "libpython2.1.dylib", "libpython2.0.dylib",
-      "libpython1.6.dylib", "libpython1.5.dylib"]
-else: 
-  const
-    LibNames = ["libpython2.6.so" & dllver, 
-      "libpython2.5.so" & dllver, 
-      "libpython2.4.so" & dllver, 
-      "libpython2.3.so" & dllver, 
-      "libpython2.2.so" & dllver, 
-      "libpython2.1.so" & dllver, 
-      "libpython2.0.so" & dllver,
-      "libpython1.6.so" & dllver, 
-      "libpython1.5.so" & dllver]
-  
-for libName in items(libNames): 
-  lib = loadLib(libName)
-  if lib != nil: break
-
-if lib == nil: quit("could not load python library")
-init(lib)
-
diff --git a/lib/wrappers/sdl/sdl.nim b/lib/wrappers/sdl/sdl.nim
deleted file mode 100755
index 7d2b6ba26..000000000
--- a/lib/wrappers/sdl/sdl.nim
+++ /dev/null
@@ -1,2522 +0,0 @@
-
-#******************************************************************************
-#
-#          JEDI-SDL : Pascal units for SDL - Simple DirectMedia Layer
-#             Conversion of the Simple DirectMedia Layer Headers
-#
-# Portions created by Sam Lantinga <slouken@devolution.com> are
-# Copyright (C) 1997-2004  Sam Lantinga
-# 5635-34 Springhouse Dr.
-# Pleasanton, CA 94588 (USA)
-#
-# All Rights Reserved.
-#
-# The original files are : SDL.h
-#                          SDL_main.h
-#                          SDL_types.h
-#                          SDL_rwops.h
-#                          SDL_timer.h
-#                          SDL_audio.h
-#                          SDL_cdrom.h
-#                          SDL_joystick.h
-#                          SDL_mouse.h
-#                          SDL_keyboard.h
-#                          SDL_events.h
-#                          SDL_video.h
-#                          SDL_byteorder.h
-#                          SDL_version.h
-#                          SDL_active.h
-#                          SDL_thread.h
-#                          SDL_mutex .h
-#                          SDL_getenv.h
-#                          SDL_loadso.h
-#
-# The initial developer of this Pascal code was :
-# Dominique Louis <Dominique@SavageSoftware.com.au>
-#
-# Portions created by Dominique Louis are
-# Copyright (C) 2000 - 2004 Dominique Louis.
-#
-#
-# Contributor(s)
-# --------------
-# Tom Jones <tigertomjones@gmx.de>  His Project inspired this conversion
-# Matthias Thoma <ma.thoma@gmx.de>
-#
-# Obtained through:
-# Joint Endeavour of Delphi Innovators ( Project JEDI )
-#
-# You may retrieve the latest version of this file at the Project
-# JEDI home page, located at http://delphi-jedi.org
-#
-# The contents of this file are used with permission, subject to
-# the Mozilla Public License Version 1.1 (the "License"); you may
-# not use this file except in compliance with the License. You may
-# obtain a copy of the License at
-# http://www.mozilla.org/MPL/MPL-1.1.html
-#
-# Software distributed under the License is distributed on an
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# Description
-# -----------
-#
-#
-#
-#
-#
-#
-#
-# Requires
-# --------
-#   The SDL Runtime libraris on Win32  : SDL.dll on Linux : libSDL.so
-#   They are available from...
-#   http://www.libsdl.org .
-#
-# Programming Notes
-# -----------------
-#
-#
-#
-#
-# Revision History
-# ----------------
-#   May      08 2001 - DL : Added Keyboard  State Array ( See demos for how to
-#                           use )
-#                           PKeyStateArr = ^TKeyStateArr;
-#                           TKeyStateArr = array[0..65000] of UInt8;
-#                           As most games will need it.
-#
-#   April    02 2001 - DL : Added SDL_getenv.h definitions and tested version
-#                           1.2.0 compatability.
-#
-#   March    13 2001 - MT : Added Linux compatibility.
-#
-#   March    10 2001 - MT : Added externalsyms for DEFINES
-#                           Changed the license header
-#
-#   March    09 2001 - MT : Added Kylix Ifdefs/Deleted the uses mmsystem
-#
-#   March    01 2001 - DL : Update conversion of version 1.1.8
-#
-#   July     22 2001 - DL : Added TUInt8Array and PUIntArray after suggestions
-#                           from Matthias Thoma and Eric Grange.
-#
-#   October  12 2001 - DL : Various changes as suggested by Matthias Thoma and
-#                           David Acklam
-#
-#   October  24 2001 - DL : Added FreePascal support as per suggestions from
-#                           Dean Ellis.
-#
-#   October  27 2001 - DL : Added SDL_BUTTON macro
-#
-#  November  08 2001 - DL : Bug fix as pointed out by Puthoon.
-#
-#  November  29 2001 - DL : Bug fix of SDL_SetGammaRamp as pointed out by Simon
-#                           Rushton.
-#
-#  November  30 2001 - DL : SDL_NOFRAME added as pointed out by Simon Rushton.
-#
-#  December  11 2001 - DL : Added $WEAKPACKAGEUNIT ON to facilitate useage in
-#                           Components
-#
-#  January   05 2002 - DL : Added SDL_Swap32 function as suggested by Matthias
-#                           Thoma and also made sure the _getenv from
-#                           MSVCRT.DLL uses the right calling convention
-#
-#  January   25 2002 - DL : Updated conversion of SDL_AddTimer &
-#                           SDL_RemoveTimer as per suggestions from Matthias
-#                           Thoma.
-#
-#  January   27 2002 - DL : Commented out exported function putenv and getenv
-#                           So that developers get used to using SDL_putenv
-#                           SDL_getenv, as they are more portable
-#
-#  March     05 2002 - DL : Added FreeAnNil procedure for Delphi 4 users.
-#
-#  October   23 2002 - DL : Added Delphi 3 Define of Win32.
-#                           If you intend to you Delphi 3...
-#                           ( which is officially unsupported ) make sure you
-#                           remove references to $EXTERNALSYM in this and other
-#                           SDL files.
-#
-# November  29 2002 - DL : Fixed bug in Declaration of SDL_GetRGBA that was
-#                          pointed out by Todd Lang
-#
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more
-#                          Pascal compilers. Initial support is now included
-#                          for GnuPascal, VirtualPascal, TMT and obviously
-#                          continue support for Delphi Kylix and FreePascal.
-#
-#   April   08 2003 - MK : Aka Mr Kroket - Added Better FPC support
-#
-#   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction
-#                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support
-#
-#   April   30 2003 - DL : under instruction from David Mears AKA
-#                          Jason Siletto, I have added FPC Linux support.
-#                          This was compiled with fpc 1.1, so remember to set
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*
-#
-#
-#
-#  Revision 1.31  2007/05/29 21:30:48  savage
-#  Changes as suggested by Almindor for 64bit compatibility.
-#
-#  Revision 1.30  2007/05/29 19:31:03  savage
-#  Fix to TSDL_Overlay structure - thanks David Pethes (aka imcold)
-#
-#  Revision 1.29  2007/05/20 20:29:11  savage
-#  Initial Changes to Handle 64 Bits
-#
-#  Revision 1.26  2007/02/11 13:38:04  savage
-#  Added Nintendo DS support - Thanks Dean.
-#
-#  Revision 1.25  2006/12/02 00:12:52  savage
-#  Updated to latest version
-#
-#  Revision 1.24  2006/05/18 21:10:04  savage
-#  Added 1.2.10 Changes
-#
-#  Revision 1.23  2005/12/04 23:17:52  drellis
-#  Added declaration of SInt8 and PSInt8
-#
-#  Revision 1.22  2005/05/24 21:59:03  savage
-#  Re-arranged uses clause to work on Win32 and Linux, Thanks again Michalis.
-#
-#  Revision 1.21  2005/05/22 18:42:31  savage
-#  Changes as suggested by Michalis Kamburelis. Thanks again.
-#
-#  Revision 1.20  2005/04/10 11:48:33  savage
-#  Changes as suggested by Michalis, thanks.
-#
-#  Revision 1.19  2005/01/05 01:47:06  savage
-#  Changed LibName to reflect what MacOS X should have. ie libSDL*-1.2.0.dylib respectively.
-#
-#  Revision 1.18  2005/01/04 23:14:41  savage
-#  Changed LibName to reflect what most Linux distros will have. ie libSDL*-1.2.so.0 respectively.
-#
-#  Revision 1.17  2005/01/03 18:40:59  savage
-#  Updated Version number to reflect latest one
-#
-#  Revision 1.16  2005/01/01 02:02:06  savage
-#  Updated to v1.2.8
-#
-#  Revision 1.15  2004/12/24 18:57:11  savage
-#  forgot to apply Michalis Kamburelis' patch to the implementation section. now fixed
-#
-#  Revision 1.14  2004/12/23 23:42:18  savage
-#  Applied Patches supplied by Michalis Kamburelis ( THANKS! ), for greater FreePascal compatability.
-#
-#  Revision 1.13  2004/09/30 22:31:59  savage
-#  Updated with slightly different header comments
-#
-#  Revision 1.12  2004/09/12 21:52:58  savage
-#  Slight changes to fix some issues with the sdl classes.
-#
-#  Revision 1.11  2004/08/14 22:54:30  savage
-#  Updated so that Library name defines are correctly defined for MacOS X.
-#
-#  Revision 1.10  2004/07/20 23:57:33  savage
-#  Thanks to Paul Toth for spotting an error in the SDL Audio Convertion structures.
-#  In TSDL_AudioCVT the filters variable should point to and array of pointers and not what I had there previously.
-#
-#  Revision 1.9  2004/07/03 22:07:22  savage
-#  Added Bitwise Manipulation Functions for TSDL_VideoInfo struct.
-#
-#  Revision 1.8  2004/05/10 14:10:03  savage
-#  Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ).
-#
-#  Revision 1.7  2004/04/13 09:32:08  savage
-#  Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary.
-#
-#  Revision 1.6  2004/04/01 20:53:23  savage
-#  Changed Linux Shared Object names so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site.
-#
-#  Revision 1.5  2004/02/22 15:32:10  savage
-#  SDL_GetEnv Fix so it also works on FPC/Linux. Thanks to Rodrigo for pointing this out.
-#
-#  Revision 1.4  2004/02/21 23:24:29  savage
-#  SDL_GetEnv Fix so that it is not define twice for FPC. Thanks to Rene Hugentobler for pointing out this bug,
-#
-#  Revision 1.3  2004/02/18 22:35:51  savage
-#  Brought sdl.pas up to 1.2.7 compatability
-#  Thus...
-#  Added SDL_GL_STEREO,
-#      SDL_GL_MULTISAMPLEBUFFERS,
-#      SDL_GL_MULTISAMPLESAMPLES
-#
-#  Add DLL/Shared object functions
-#  function SDL_LoadObject( const sofile : PChar ) : Pointer;
-#
-#  function SDL_LoadFunction( handle : Pointer; const name : PChar ) : Pointer;
-#
-#  procedure SDL_UnloadObject( handle : Pointer );
-#
-#  Added function to create RWops from const memory: SDL_RWFromConstMem()
-#  function SDL_RWFromConstMem(const mem: Pointer; size: Integer) : PSDL_RWops;
-#
-#  Ported SDL_cpuinfo.h so Now you can test for Specific CPU types.
-#
-#  Revision 1.2  2004/02/17 21:37:12  savage
-#  Tidying up of units
-#
-#  Revision 1.1  2004/02/05 00:08:20  savage
-#  Module 1.0 release
-#
-#
-
-{.deadCodeElim: on.}
-
-when defined(windows):
-  const SDLLibName = "SDL.dll"
-elif defined(macosx):
-  const SDLLibName = "libSDL-1.2.0.dylib"
-else:
-  const SDLLibName = "libSDL.so"
-
-const
-  SDL_MAJOR_VERSION* = 1'i8
-  SDL_MINOR_VERSION* = 2'i8
-  SDL_PATCHLEVEL* = 11'i8        # SDL.h constants
-  SDL_INIT_TIMER* = 0x00000001
-  SDL_INIT_AUDIO* = 0x00000010
-  SDL_INIT_VIDEO* = 0x00000020
-  SDL_INIT_CDROM* = 0x00000100
-  SDL_INIT_JOYSTICK* = 0x00000200
-  SDL_INIT_NOPARACHUTE* = 0x00100000 # Don't catch fatal signals
-  SDL_INIT_EVENTTHREAD* = 0x01000000 # Not supported on all OS's
-  SDL_INIT_EVERYTHING* = 0x0000FFFF # SDL_error.h constants
-  ERR_MAX_STRLEN* = 128
-  ERR_MAX_ARGS* = 5           # SDL_types.h constants
-  SDL_PRESSED* = 0x00000001
-  SDL_RELEASED* = 0x00000000  # SDL_timer.h constants
-                              # This is the OS scheduler timeslice, in milliseconds
-  SDL_TIMESLICE* = 10         # This is the maximum resolution of the SDL timer on all platforms
-  TIMER_RESOLUTION* = 10      # Experimentally determined
-                              # SDL_audio.h constants
-  AUDIO_U8* = 0x00000008      # Unsigned 8-bit samples
-  AUDIO_S8* = 0x00008008      # Signed 8-bit samples
-  AUDIO_U16LSB* = 0x00000010  # Unsigned 16-bit samples
-  AUDIO_S16LSB* = 0x00008010  # Signed 16-bit samples
-  AUDIO_U16MSB* = 0x00001010  # As above, but big-endian byte order
-  AUDIO_S16MSB* = 0x00009010  # As above, but big-endian byte order
-  AUDIO_U16* = AUDIO_U16LSB
-  AUDIO_S16* = AUDIO_S16LSB   # SDL_cdrom.h constants
-                              # The maximum number of CD-ROM tracks on a disk
-  SDL_MAX_TRACKS* = 99        # The types of CD-ROM track possible
-  SDL_AUDIO_TRACK* = 0x00000000
-  SDL_DATA_TRACK* = 0x00000004 # Conversion functions from frames to Minute/Second/Frames and vice versa
-  CD_FPS* = 75                # SDL_byteorder.h constants
-                              # The two types of endianness
-  SDL_LIL_ENDIAN* = 1234
-  SDL_BIG_ENDIAN* = 4321
-
-when cpuEndian == littleEndian:
-  const
-    SDL_BYTEORDER* = SDL_LIL_ENDIAN # Native audio byte ordering
-    AUDIO_U16SYS* = AUDIO_U16LSB
-    AUDIO_S16SYS* = AUDIO_S16LSB
-else:
-  const
-    SDL_BYTEORDER* = SDL_BIG_ENDIAN # Native audio byte ordering
-    AUDIO_U16SYS* = AUDIO_U16MSB
-    AUDIO_S16SYS* = AUDIO_S16MSB
-const
-  SDL_MIX_MAXVOLUME* = 128    # SDL_joystick.h constants
-  MAX_JOYSTICKS* = 2          # only 2 are supported in the multimedia API
-  MAX_AXES* = 6               # each joystick can have up to 6 axes
-  MAX_BUTTONS* = 32           # and 32 buttons
-  AXIS_MIN* = - 32768         # minimum value for axis coordinate
-  AXIS_MAX* = 32767           # maximum value for axis coordinate
-  JOY_AXIS_THRESHOLD* = (toFloat((AXIS_MAX) - (AXIS_MIN)) / 100.0) # 1% motion
-  SDL_HAT_CENTERED* = 0x00000000
-  SDL_HAT_UP* = 0x00000001
-  SDL_HAT_RIGHT* = 0x00000002
-  SDL_HAT_DOWN* = 0x00000004
-  SDL_HAT_LEFT* = 0x00000008
-  SDL_HAT_RIGHTUP* = SDL_HAT_RIGHT or SDL_HAT_UP
-  SDL_HAT_RIGHTDOWN* = SDL_HAT_RIGHT or SDL_HAT_DOWN
-  SDL_HAT_LEFTUP* = SDL_HAT_LEFT or SDL_HAT_UP
-  SDL_HAT_LEFTDOWN* = SDL_HAT_LEFT or SDL_HAT_DOWN # SDL_events.h constants
-
-type
-  TSDL_EventKind* = enum        # kind of an SDL event
-    SDL_NOEVENT = 0,            # Unused (do not remove)
-    SDL_ACTIVEEVENT = 1,        # Application loses/gains visibility
-    SDL_KEYDOWN = 2,            # Keys pressed
-    SDL_KEYUP = 3,              # Keys released
-    SDL_MOUSEMOTION = 4,        # Mouse moved
-    SDL_MOUSEBUTTONDOWN = 5,    # Mouse button pressed
-    SDL_MOUSEBUTTONUP = 6,      # Mouse button released
-    SDL_JOYAXISMOTION = 7,      # Joystick axis motion
-    SDL_JOYBALLMOTION = 8,      # Joystick trackball motion
-    SDL_JOYHATMOTION = 9,       # Joystick hat position change
-    SDL_JOYBUTTONDOWN = 10,     # Joystick button pressed
-    SDL_JOYBUTTONUP = 11,       # Joystick button released
-    SDL_QUITEV = 12,            # User-requested quit ( Changed due to procedure conflict )
-    SDL_SYSWMEVENT = 13,        # System specific event
-    SDL_EVENT_RESERVEDA = 14,   # Reserved for future use..
-    SDL_EVENT_RESERVED = 15,    # Reserved for future use..
-    SDL_VIDEORESIZE = 16,       # User resized video mode
-    SDL_VIDEOEXPOSE = 17,       # Screen needs to be redrawn
-    SDL_EVENT_RESERVED2 = 18,   # Reserved for future use..
-    SDL_EVENT_RESERVED3 = 19,   # Reserved for future use..
-    SDL_EVENT_RESERVED4 = 20,   # Reserved for future use..
-    SDL_EVENT_RESERVED5 = 21,   # Reserved for future use..
-    SDL_EVENT_RESERVED6 = 22,   # Reserved for future use..
-    SDL_EVENT_RESERVED7 = 23,   # Reserved for future use..
-                                # Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use
-    SDL_USEREVENT = 24 # This last event is only for bounding internal arrays
-                       # It is the number of bits in the event mask datatype -- UInt32
-
-const
-  SDL_NUMEVENTS* = 32
-  SDL_ALLEVENTS* = 0xFFFFFFFF
-  SDL_ACTIVEEVENTMASK* = 1 shl ord(SDL_ACTIVEEVENT)
-  SDL_KEYDOWNMASK* = 1 shl ord(SDL_KEYDOWN)
-  SDL_KEYUPMASK* = 1 shl ord(SDL_KEYUP)
-  SDL_MOUSEMOTIONMASK* = 1 shl ord(SDL_MOUSEMOTION)
-  SDL_MOUSEBUTTONDOWNMASK* = 1 shl ord(SDL_MOUSEBUTTONDOWN)
-  SDL_MOUSEBUTTONUPMASK* = 1 shl ord(SDL_MOUSEBUTTONUP)
-  SDL_MOUSEEVENTMASK* = 1 shl ord(SDL_MOUSEMOTION) or 1 shl ord(SDL_MOUSEBUTTONDOWN) or
-      1 shl ord(SDL_MOUSEBUTTONUP)
-  SDL_JOYAXISMOTIONMASK* = 1 shl ord(SDL_JOYAXISMOTION)
-  SDL_JOYBALLMOTIONMASK* = 1 shl ord(SDL_JOYBALLMOTION)
-  SDL_JOYHATMOTIONMASK* = 1 shl ord(SDL_JOYHATMOTION)
-  SDL_JOYBUTTONDOWNMASK* = 1 shl ord(SDL_JOYBUTTONDOWN)
-  SDL_JOYBUTTONUPMASK* = 1 shl ord(SDL_JOYBUTTONUP)
-  SDL_JOYEVENTMASK* = 1 shl ord(SDL_JOYAXISMOTION) or 1 shl ord(SDL_JOYBALLMOTION) or
-      1 shl ord(SDL_JOYHATMOTION) or 1 shl ord(SDL_JOYBUTTONDOWN) or
-      1 shl ord(SDL_JOYBUTTONUP)
-  SDL_VIDEORESIZEMASK* = 1 shl ord(SDL_VIDEORESIZE)
-  SDL_QUITMASK* = 1 shl ord(SDL_QUITEV)
-  SDL_SYSWMEVENTMASK* = 1 shl ord(SDL_SYSWMEVENT)
-  SDL_QUERY* = - 1
-  SDL_IGNORE* = 0
-  SDL_DISABLE* = 0
-  SDL_ENABLE* = 1             #SDL_keyboard.h constants
-                              # This is the mask which refers to all hotkey bindings
-  SDL_ALL_HOTKEYS* = 0xFFFFFFFF # Enable/Disable keyboard repeat.  Keyboard repeat defaults to off.
-                                #  'delay' is the initial delay in ms between the time when a key is
-                                #  pressed, and keyboard repeat begins.
-                                #  'interval' is the time in ms between keyboard repeat events.
-  SDL_DEFAULT_REPEAT_DELAY* = 500
-  SDL_DEFAULT_REPEAT_INTERVAL* = 30 # The keyboard syms have been cleverly chosen to map to ASCII
-  SDLK_UNKNOWN* = 0
-  SDLK_FIRST* = 0
-  SDLK_BACKSPACE* = 8
-  SDLK_TAB* = 9
-  SDLK_CLEAR* = 12
-  SDLK_RETURN* = 13
-  SDLK_PAUSE* = 19
-  SDLK_ESCAPE* = 27
-  SDLK_SPACE* = 32
-  SDLK_EXCLAIM* = 33
-  SDLK_QUOTEDBL* = 34
-  SDLK_HASH* = 35
-  SDLK_DOLLAR* = 36
-  SDLK_AMPERSAND* = 38
-  SDLK_QUOTE* = 39
-  SDLK_LEFTPAREN* = 40
-  SDLK_RIGHTPAREN* = 41
-  SDLK_ASTERISK* = 42
-  SDLK_PLUS* = 43
-  SDLK_COMMA* = 44
-  SDLK_MINUS* = 45
-  SDLK_PERIOD* = 46
-  SDLK_SLASH* = 47
-  SDLK_0* = 48
-  SDLK_1* = 49
-  SDLK_2* = 50
-  SDLK_3* = 51
-  SDLK_4* = 52
-  SDLK_5* = 53
-  SDLK_6* = 54
-  SDLK_7* = 55
-  SDLK_8* = 56
-  SDLK_9* = 57
-  SDLK_COLON* = 58
-  SDLK_SEMICOLON* = 59
-  SDLK_LESS* = 60
-  SDLK_EQUALS* = 61
-  SDLK_GREATER* = 62
-  SDLK_QUESTION* = 63
-  SDLK_AT* = 64               # Skip uppercase letters
-  SDLK_LEFTBRACKET* = 91
-  SDLK_BACKSLASH* = 92
-  SDLK_RIGHTBRACKET* = 93
-  SDLK_CARET* = 94
-  SDLK_UNDERSCORE* = 95
-  SDLK_BACKQUOTE* = 96
-  SDLK_a* = 97
-  SDLK_b* = 98
-  SDLK_c* = 99
-  SDLK_d* = 100
-  SDLK_e* = 101
-  SDLK_f* = 102
-  SDLK_g* = 103
-  SDLK_h* = 104
-  SDLK_i* = 105
-  SDLK_j* = 106
-  SDLK_k* = 107
-  SDLK_l* = 108
-  SDLK_m* = 109
-  SDLK_n* = 110
-  SDLK_o* = 111
-  SDLK_p* = 112
-  SDLK_q* = 113
-  SDLK_r* = 114
-  SDLK_s* = 115
-  SDLK_t* = 116
-  SDLK_u* = 117
-  SDLK_v* = 118
-  SDLK_w* = 119
-  SDLK_x* = 120
-  SDLK_y* = 121
-  SDLK_z* = 122
-  SDLK_DELETE* = 127          # End of ASCII mapped keysyms
-                              # International keyboard syms
-  SDLK_WORLD_0* = 160         # 0xA0
-  SDLK_WORLD_1* = 161
-  SDLK_WORLD_2* = 162
-  SDLK_WORLD_3* = 163
-  SDLK_WORLD_4* = 164
-  SDLK_WORLD_5* = 165
-  SDLK_WORLD_6* = 166
-  SDLK_WORLD_7* = 167
-  SDLK_WORLD_8* = 168
-  SDLK_WORLD_9* = 169
-  SDLK_WORLD_10* = 170
-  SDLK_WORLD_11* = 171
-  SDLK_WORLD_12* = 172
-  SDLK_WORLD_13* = 173
-  SDLK_WORLD_14* = 174
-  SDLK_WORLD_15* = 175
-  SDLK_WORLD_16* = 176
-  SDLK_WORLD_17* = 177
-  SDLK_WORLD_18* = 178
-  SDLK_WORLD_19* = 179
-  SDLK_WORLD_20* = 180
-  SDLK_WORLD_21* = 181
-  SDLK_WORLD_22* = 182
-  SDLK_WORLD_23* = 183
-  SDLK_WORLD_24* = 184
-  SDLK_WORLD_25* = 185
-  SDLK_WORLD_26* = 186
-  SDLK_WORLD_27* = 187
-  SDLK_WORLD_28* = 188
-  SDLK_WORLD_29* = 189
-  SDLK_WORLD_30* = 190
-  SDLK_WORLD_31* = 191
-  SDLK_WORLD_32* = 192
-  SDLK_WORLD_33* = 193
-  SDLK_WORLD_34* = 194
-  SDLK_WORLD_35* = 195
-  SDLK_WORLD_36* = 196
-  SDLK_WORLD_37* = 197
-  SDLK_WORLD_38* = 198
-  SDLK_WORLD_39* = 199
-  SDLK_WORLD_40* = 200
-  SDLK_WORLD_41* = 201
-  SDLK_WORLD_42* = 202
-  SDLK_WORLD_43* = 203
-  SDLK_WORLD_44* = 204
-  SDLK_WORLD_45* = 205
-  SDLK_WORLD_46* = 206
-  SDLK_WORLD_47* = 207
-  SDLK_WORLD_48* = 208
-  SDLK_WORLD_49* = 209
-  SDLK_WORLD_50* = 210
-  SDLK_WORLD_51* = 211
-  SDLK_WORLD_52* = 212
-  SDLK_WORLD_53* = 213
-  SDLK_WORLD_54* = 214
-  SDLK_WORLD_55* = 215
-  SDLK_WORLD_56* = 216
-  SDLK_WORLD_57* = 217
-  SDLK_WORLD_58* = 218
-  SDLK_WORLD_59* = 219
-  SDLK_WORLD_60* = 220
-  SDLK_WORLD_61* = 221
-  SDLK_WORLD_62* = 222
-  SDLK_WORLD_63* = 223
-  SDLK_WORLD_64* = 224
-  SDLK_WORLD_65* = 225
-  SDLK_WORLD_66* = 226
-  SDLK_WORLD_67* = 227
-  SDLK_WORLD_68* = 228
-  SDLK_WORLD_69* = 229
-  SDLK_WORLD_70* = 230
-  SDLK_WORLD_71* = 231
-  SDLK_WORLD_72* = 232
-  SDLK_WORLD_73* = 233
-  SDLK_WORLD_74* = 234
-  SDLK_WORLD_75* = 235
-  SDLK_WORLD_76* = 236
-  SDLK_WORLD_77* = 237
-  SDLK_WORLD_78* = 238
-  SDLK_WORLD_79* = 239
-  SDLK_WORLD_80* = 240
-  SDLK_WORLD_81* = 241
-  SDLK_WORLD_82* = 242
-  SDLK_WORLD_83* = 243
-  SDLK_WORLD_84* = 244
-  SDLK_WORLD_85* = 245
-  SDLK_WORLD_86* = 246
-  SDLK_WORLD_87* = 247
-  SDLK_WORLD_88* = 248
-  SDLK_WORLD_89* = 249
-  SDLK_WORLD_90* = 250
-  SDLK_WORLD_91* = 251
-  SDLK_WORLD_92* = 252
-  SDLK_WORLD_93* = 253
-  SDLK_WORLD_94* = 254
-  SDLK_WORLD_95* = 255        # 0xFF
-                              # Numeric keypad
-  SDLK_KP0* = 256
-  SDLK_KP1* = 257
-  SDLK_KP2* = 258
-  SDLK_KP3* = 259
-  SDLK_KP4* = 260
-  SDLK_KP5* = 261
-  SDLK_KP6* = 262
-  SDLK_KP7* = 263
-  SDLK_KP8* = 264
-  SDLK_KP9* = 265
-  SDLK_KP_PERIOD* = 266
-  SDLK_KP_DIVIDE* = 267
-  SDLK_KP_MULTIPLY* = 268
-  SDLK_KP_MINUS* = 269
-  SDLK_KP_PLUS* = 270
-  SDLK_KP_ENTER* = 271
-  SDLK_KP_EQUALS* = 272       # Arrows + Home/End pad
-  SDLK_UP* = 273
-  SDLK_DOWN* = 274
-  SDLK_RIGHT* = 275
-  SDLK_LEFT* = 276
-  SDLK_INSERT* = 277
-  SDLK_HOME* = 278
-  SDLK_END* = 279
-  SDLK_PAGEUP* = 280
-  SDLK_PAGEDOWN* = 281        # Function keys
-  SDLK_F1* = 282
-  SDLK_F2* = 283
-  SDLK_F3* = 284
-  SDLK_F4* = 285
-  SDLK_F5* = 286
-  SDLK_F6* = 287
-  SDLK_F7* = 288
-  SDLK_F8* = 289
-  SDLK_F9* = 290
-  SDLK_F10* = 291
-  SDLK_F11* = 292
-  SDLK_F12* = 293
-  SDLK_F13* = 294
-  SDLK_F14* = 295
-  SDLK_F15* = 296             # Key state modifier keys
-  SDLK_NUMLOCK* = 300
-  SDLK_CAPSLOCK* = 301
-  SDLK_SCROLLOCK* = 302
-  SDLK_RSHIFT* = 303
-  SDLK_LSHIFT* = 304
-  SDLK_RCTRL* = 305
-  SDLK_LCTRL* = 306
-  SDLK_RALT* = 307
-  SDLK_LALT* = 308
-  SDLK_RMETA* = 309
-  SDLK_LMETA* = 310
-  SDLK_LSUPER* = 311          # Left "Windows" key
-  SDLK_RSUPER* = 312          # Right "Windows" key
-  SDLK_MODE* = 313            # "Alt Gr" key
-  SDLK_COMPOSE* = 314         # Multi-key compose key
-                              # Miscellaneous function keys
-  SDLK_HELP* = 315
-  SDLK_PRINT* = 316
-  SDLK_SYSREQ* = 317
-  SDLK_BREAK* = 318
-  SDLK_MENU* = 319
-  SDLK_POWER* = 320           # Power Macintosh power key
-  SDLK_EURO* = 321            # Some european keyboards
-  SDLK_GP2X_UP* = 0
-  SDLK_GP2X_UPLEFT* = 1
-  SDLK_GP2X_LEFT* = 2
-  SDLK_GP2X_DOWNLEFT* = 3
-  SDLK_GP2X_DOWN* = 4
-  SDLK_GP2X_DOWNRIGHT* = 5
-  SDLK_GP2X_RIGHT* = 6
-  SDLK_GP2X_UPRIGHT* = 7
-  SDLK_GP2X_START* = 8
-  SDLK_GP2X_SELECT* = 9
-  SDLK_GP2X_L* = 10
-  SDLK_GP2X_R* = 11
-  SDLK_GP2X_A* = 12
-  SDLK_GP2X_B* = 13
-  SDLK_GP2X_Y* = 14
-  SDLK_GP2X_X* = 15
-  SDLK_GP2X_VOLUP* = 16
-  SDLK_GP2X_VOLDOWN* = 17
-  SDLK_GP2X_CLICK* = 18
-
-const                         # Enumeration of valid key mods (possibly OR'd together)
-  KMOD_NONE* = 0x00000000
-  KMOD_LSHIFT* = 0x00000001
-  KMOD_RSHIFT* = 0x00000002
-  KMOD_LCTRL* = 0x00000040
-  KMOD_RCTRL* = 0x00000080
-  KMOD_LALT* = 0x00000100
-  KMOD_RALT* = 0x00000200
-  KMOD_LMETA* = 0x00000400
-  KMOD_RMETA* = 0x00000800
-  KMOD_NUM* = 0x00001000
-  KMOD_CAPS* = 0x00002000
-  KMOD_MODE* = 44000
-  KMOD_RESERVED* = 0x00008000
-  KMOD_CTRL* = (KMOD_LCTRL or KMOD_RCTRL)
-  KMOD_SHIFT* = (KMOD_LSHIFT or KMOD_RSHIFT)
-  KMOD_ALT* = (KMOD_LALT or KMOD_RALT)
-  KMOD_META* = (KMOD_LMETA or KMOD_RMETA) #SDL_video.h constants
-                                          # Transparency definitions: These define alpha as the opacity of a surface */
-  SDL_ALPHA_OPAQUE* = 255
-  SDL_ALPHA_TRANSPARENT* = 0 # These are the currently supported flags for the SDL_surface
-                             # Available for SDL_CreateRGBSurface() or SDL_SetVideoMode()
-  SDL_SWSURFACE* = 0x00000000 # Surface is in system memory
-  SDL_HWSURFACE* = 0x00000001 # Surface is in video memory
-  SDL_ASYNCBLIT* = 0x00000004 # Use asynchronous blits if possible
-                              # Available for SDL_SetVideoMode()
-  SDL_ANYFORMAT* = 0x10000000 # Allow any video depth/pixel-format
-  SDL_HWPALETTE* = 0x20000000 # Surface has exclusive palette
-  SDL_DOUBLEBUF* = 0x40000000 # Set up double-buffered video mode
-  SDL_FULLSCREEN* = 0x80000000 # Surface is a full screen display
-  SDL_OPENGL* = 0x00000002    # Create an OpenGL rendering context
-  SDL_OPENGLBLIT* = 0x00000002 # Create an OpenGL rendering context
-  SDL_RESIZABLE* = 0x00000010 # This video mode may be resized
-  SDL_NOFRAME* = 0x00000020   # No window caption or edge frame
-                              # Used internally (read-only)
-  SDL_HWACCEL* = 0x00000100   # Blit uses hardware acceleration
-  SDL_SRCCOLORKEY* = 0x00001000 # Blit uses a source color key
-  SDL_RLEACCELOK* = 0x00002000 # Private flag
-  SDL_RLEACCEL* = 0x00004000  # Colorkey blit is RLE accelerated
-  SDL_SRCALPHA* = 0x00010000  # Blit uses source alpha blending
-  SDL_SRCCLIPPING* = 0x00100000 # Blit uses source clipping
-  SDL_PREALLOC* = 0x01000000 # Surface uses preallocated memory
-                             # The most common video overlay formats.
-                             #    For an explanation of these pixel formats, see:
-                             #    http://www.webartz.com/fourcc/indexyuv.htm
-                             #
-                             #   For information on the relationship between color spaces, see:
-                             #
-                             #   http://www.neuro.sfc.keio.ac.jp/~aly/polygon/info/color-space-faq.html
-  SDL_YV12_OVERLAY* = 0x32315659 # Planar mode: Y + V + U  (3 planes)
-  SDL_IYUV_OVERLAY* = 0x56555949 # Planar mode: Y + U + V  (3 planes)
-  SDL_YUY2_OVERLAY* = 0x32595559 # Packed mode: Y0+U0+Y1+V0 (1 plane)
-  SDL_UYVY_OVERLAY* = 0x59565955 # Packed mode: U0+Y0+V0+Y1 (1 plane)
-  SDL_YVYU_OVERLAY* = 0x55595659 # Packed mode: Y0+V0+Y1+U0 (1 plane)
-                                 # flags for SDL_SetPalette()
-  SDL_LOGPAL* = 0x00000001
-  SDL_PHYSPAL* = 0x00000002 #SDL_mouse.h constants
-                            # Used as a mask when testing buttons in buttonstate
-                            #    Button 1:	Left mouse button
-                            #    Button 2:	Middle mouse button
-                            #    Button 3:	Right mouse button
-                            #    Button 4:	Mouse Wheel Up
-                            #    Button 5:	Mouse Wheel Down
-                            #
-  SDL_BUTTON_LEFT* = 1
-  SDL_BUTTON_MIDDLE* = 2
-  SDL_BUTTON_RIGHT* = 3
-  SDL_BUTTON_WHEELUP* = 4
-  SDL_BUTTON_WHEELDOWN* = 5
-  SDL_BUTTON_LMASK* = SDL_PRESSED shl (SDL_BUTTON_LEFT - 1)
-  SDL_BUTTON_MMASK* = SDL_PRESSED shl (SDL_BUTTON_MIDDLE - 1)
-  SDL_BUTTON_RMask* = SDL_PRESSED shl (SDL_BUTTON_RIGHT - 1) # SDL_active.h constants
-                                                             # The available application states
-  SDL_APPMOUSEFOCUS* = 0x00000001 # The app has mouse coverage
-  SDL_APPINPUTFOCUS* = 0x00000002 # The app has input focus
-  SDL_APPACTIVE* = 0x00000004 # The application is active
-                              # SDL_mutex.h constants
-                              # Synchronization functions which can time out return this value
-                              #  they time out.
-  SDL_MUTEX_TIMEDOUT* = 1     # This is the timeout value which corresponds to never time out
-  SDL_MUTEX_MAXWAIT* = not int(0)
-  SDL_GRAB_QUERY* = - 1
-  SDL_GRAB_OFF* = 0
-  SDL_GRAB_ON* = 1            #SDL_GRAB_FULLSCREEN // Used internally
-
-type
-  THandle* = int              #SDL_types.h types
-                              # Basic data types
-  TSDL_Bool* = enum
-    SDL_FALSE, SDL_TRUE
-  PUInt8Array* = ptr TUInt8Array
-  PUInt8* = ptr UInt8
-  PPUInt8* = ptr PUInt8
-  UInt8* = int8
-  TUInt8Array* = array[0..high(int) shr 1, UInt8]
-  PUInt16* = ptr UInt16
-  UInt16* = int16
-  PSInt8* = ptr SInt8
-  SInt8* = int8
-  PSInt16* = ptr SInt16
-  SInt16* = int16
-  PUInt32* = ptr UInt32
-  UInt32* = int
-  SInt32* = int
-  PInt* = ptr int
-  PShortInt* = ptr int8
-  PUInt64* = ptr UInt64
-  UInt64*{.final.} = object
-    hi*: UInt32
-    lo*: UInt32
-
-  PSInt64* = ptr SInt64
-  SInt64*{.final.} = object
-    hi*: UInt32
-    lo*: UInt32
-
-  TSDL_GrabMode* = int        # SDL_error.h types
-  TSDL_errorcode* = enum
-    SDL_ENOMEM, SDL_EFREAD, SDL_EFWRITE, SDL_EFSEEK, SDL_LASTERROR
-  SDL_errorcode* = TSDL_errorcode
-  TArg*{.final.} = object
-    buf*: array[0..ERR_MAX_STRLEN - 1, int8]
-
-  PSDL_error* = ptr TSDL_error
-  TSDL_error*{.final.} = object  # This is a numeric value corresponding to the current error
-                                 # SDL_rwops.h types
-                                 # This is the read/write operation structure -- very basic
-                                 # some helper types to handle the unions
-                                 # "packed" is only guessed
-    error*: int # This is a key used to index into a language hashtable containing
-                #       internationalized versions of the SDL error messages.  If the key
-                #       is not in the hashtable, or no hashtable is available, the key is
-                #       used directly as an error message format string.
-    key*: array[0..ERR_MAX_STRLEN - 1, int8] # These are the arguments for the error functions
-    argc*: int
-    args*: array[0..ERR_MAX_ARGS - 1, TArg]
-
-  TStdio*{.final.} = object
-    autoclose*: int           # FILE * is only defined in Kylix so we use a simple Pointer
-    fp*: Pointer
-
-  TMem*{.final.} = object
-    base*: PUInt8
-    here*: PUInt8
-    stop*: PUInt8
-
-  TUnknown*{.final.} = object  # first declare the pointer type
-    data1*: Pointer
-
-  PSDL_RWops* = ptr TSDL_RWops # now the pointer to function types
-  TSeek* = proc (context: PSDL_RWops, offset: int, whence: int): int{.cdecl.}
-  TRead* = proc (context: PSDL_RWops, thePtr: Pointer, size: int, maxnum: int): int{.
-      cdecl.}
-  TWrite* = proc (context: PSDL_RWops, thePtr: Pointer, size: int, num: int): int{.
-      cdecl.}
-  TClose* = proc (context: PSDL_RWops): int{.cdecl.} # the variant record itself
-  trange010 = range[0..2]
-  TSDL_RWops*{.final.} = object
-    seek*: TSeek
-    read*: TRead
-    write*: TWrite
-    closeFile*: TClose        # a keyword as name is not allowed
-                              # be warned! structure alignment may arise at this point
-    case theType*: trange010
-    of trange010(0):
-      stdio*: TStdio
-    of trange010(1):
-      mem*: TMem
-    of trange010(2):
-      unknown*: TUnknown
-
-
-  SDL_RWops* = TSDL_RWops     # SDL_timer.h types
-                              # Function prototype for the timer callback function
-  TSDL_TimerCallback* = proc (interval: UInt32): UInt32{.cdecl.} # New timer API, supports multiple timers
-                                                                 #   Written by Stephane Peter
-                                                                 #   <megastep@lokigames.com>
-                                                                 # Function prototype for the new timer callback function.
-                                                                 #   The callback function is passed the current timer interval and returns
-                                                                 #   the next timer interval.  If the returned value is the same as the one
-                                                                 #   passed in, the periodic alarm continues, otherwise a new alarm is
-                                                                 #   scheduled.  If the callback returns 0, the periodic alarm is cancelled.
-  TSDL_NewTimerCallback* = proc (interval: UInt32, param: Pointer): UInt32{.
-      cdecl.}                 # Definition of the timer ID type
-  PSDL_TimerID* = ptr TSDL_TimerID
-  TSDL_TimerID*{.final.} = object
-    interval*: UInt32
-    callback*: TSDL_NewTimerCallback
-    param*: Pointer
-    last_alarm*: UInt32
-    next*: PSDL_TimerID
-
-  TSDL_AudioSpecCallback* = proc (userdata: Pointer, stream: PUInt8, length: int){.
-      cdecl.}                 # SDL_audio.h types
-                              # The calculated values in this structure are calculated by SDL_OpenAudio()
-  PSDL_AudioSpec* = ptr TSDL_AudioSpec
-  TSDL_AudioSpec*{.final.} = object  # A structure to hold a set of audio conversion filters and buffers
-    freq*: int                # DSP frequency -- samples per second
-    format*: UInt16           # Audio data format
-    channels*: UInt8          # Number of channels: 1 mono, 2 stereo
-    silence*: UInt8           # Audio buffer silence value (calculated)
-    samples*: UInt16          # Audio buffer size in samples
-    padding*: UInt16          # Necessary for some compile environments
-    size*: UInt32 # Audio buffer size in bytes (calculated)
-                  # This function is called when the audio device needs more data.
-                  #      'stream' is a pointer to the audio data buffer
-                  #      'len' is the length of that buffer in bytes.
-                  #      Once the callback returns, the buffer will no longer be valid.
-                  #      Stereo samples are stored in a LRLRLR ordering.
-    callback*: TSDL_AudioSpecCallback
-    userdata*: Pointer
-
-  PSDL_AudioCVT* = ptr TSDL_AudioCVT
-  PSDL_AudioCVTFilter* = ptr TSDL_AudioCVTFilter
-  TSDL_AudioCVTFilter*{.final.} = object
-    cvt*: PSDL_AudioCVT
-    format*: UInt16
-
-  PSDL_AudioCVTFilterArray* = ptr TSDL_AudioCVTFilterArray
-  TSDL_AudioCVTFilterArray* = array[0..9, PSDL_AudioCVTFilter]
-  TSDL_AudioCVT*{.final.} = object
-    needed*: int              # Set to 1 if conversion possible
-    src_format*: UInt16       # Source audio format
-    dst_format*: UInt16       # Target audio format
-    rate_incr*: float64       # Rate conversion increment
-    buf*: PUInt8              # Buffer to hold entire audio data
-    length*: int              # Length of original audio buffer
-    len_cvt*: int             # Length of converted audio buffer
-    len_mult*: int            # buffer must be len*len_mult big
-    len_ratio*: float64       # Given len, final size is len*len_ratio
-    filters*: TSDL_AudioCVTFilterArray
-    filter_index*: int        # Current audio conversion function
-
-  TSDL_Audiostatus* = enum    # SDL_cdrom.h types
-    SDL_AUDIO_STOPPED, SDL_AUDIO_PLAYING, SDL_AUDIO_PAUSED
-  TSDL_CDStatus* = enum
-    CD_ERROR, CD_TRAYEMPTY, CD_STOPPED, CD_PLAYING, CD_PAUSED
-  PSDL_CDTrack* = ptr TSDL_CDTrack
-  TSDL_CDTrack*{.final.} = object  # This structure is only current as of the last call to SDL_CDStatus()
-    id*: UInt8                # Track number
-    theType*: UInt8           # Data or audio track
-    unused*: UInt16
-    len*: UInt32              # Length, in frames, of this track
-    offset*: UInt32           # Offset, in frames, from start of disk
-
-  PSDL_CD* = ptr TSDL_CD
-  TSDL_CD*{.final.} = object  #SDL_joystick.h types
-    id*: int                  # Private drive identifier
-    status*: TSDL_CDStatus    # Current drive status
-                              # The rest of this structure is only valid if there's a CD in drive
-    numtracks*: int           # Number of tracks on disk
-    cur_track*: int           # Current track position
-    cur_frame*: int           # Current frame offset within current track
-    track*: array[0..SDL_MAX_TRACKS, TSDL_CDTrack]
-
-  PTransAxis* = ptr TTransAxis
-  TTransAxis*{.final.} = object  # The private structure used to keep track of a joystick
-    offset*: int
-    scale*: float32
-
-  PJoystick_hwdata* = ptr TJoystick_hwdata
-  TJoystick_hwdata*{.final.} = object  # joystick ID
-    id*: int                  # values used to translate device-specific coordinates into  SDL-standard ranges
-    transaxis*: array[0..5, TTransAxis]
-
-  PBallDelta* = ptr TBallDelta
-  TBallDelta*{.final.} = object  # Current ball motion deltas
-                                 # The SDL joystick structure
-    dx*: int
-    dy*: int
-
-  PSDL_Joystick* = ptr TSDL_Joystick
-  TSDL_Joystick*{.final.} = object  # SDL_verion.h types
-    index*: UInt8             # Device index
-    name*: cstring            # Joystick name - system dependent
-    naxes*: int               # Number of axis controls on the joystick
-    axes*: PUInt16            # Current axis states
-    nhats*: int               # Number of hats on the joystick
-    hats*: PUInt8             # Current hat states
-    nballs*: int              # Number of trackballs on the joystick
-    balls*: PBallDelta        # Current ball motion deltas
-    nbuttons*: int            # Number of buttons on the joystick
-    buttons*: PUInt8          # Current button states
-    hwdata*: PJoystick_hwdata # Driver dependent information
-    ref_count*: int           # Reference count for multiple opens
-
-  PSDL_version* = ptr TSDL_version
-  TSDL_version*{.final.} = object  # SDL_keyboard.h types
-    major*: UInt8
-    minor*: UInt8
-    patch*: UInt8
-
-  TSDLKey* = int32
-  TSDLMod* = int32
-  PSDL_KeySym* = ptr TSDL_KeySym
-  TSDL_KeySym*{.final.} = object  # SDL_events.h types
-                                  #Checks the event queue for messages and optionally returns them.
-                                  #   If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to
-                                  #   the back of the event queue.
-                                  #   If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front
-                                  #   of the event queue, matching 'mask', will be returned and will not
-                                  #   be removed from the queue.
-                                  #   If 'action' is SDL_GETEVENT, up to 'numevents' events at the front
-                                  #   of the event queue, matching 'mask', will be returned and will be
-                                  #   removed from the queue.
-                                  #   This function returns the number of events actually stored, or -1
-                                  #   if there was an error.  This function is thread-safe.
-    scancode*: UInt8          # hardware specific scancode
-    sym*: TSDLKey             # SDL virtual keysym
-    modifier*: TSDLMod        # current key modifiers
-    unicode*: UInt16          # translated character
-
-  TSDL_EventAction* = enum    # Application visibility event structure
-    SDL_ADDEVENT, SDL_PEEKEVENT, SDL_GETEVENT
-  TSDL_ActiveEvent*{.final.} = object  # SDL_ACTIVEEVENT
-                                       # Keyboard event structure
-    gain*: UInt8              # Whether given states were gained or lost (1/0)
-    state*: UInt8             # A mask of the focus states
-
-  TSDL_KeyboardEvent*{.final.} = object  # SDL_KEYDOWN or SDL_KEYUP
-                                         # Mouse motion event structure
-    which*: UInt8             # The keyboard device index
-    state*: UInt8             # SDL_PRESSED or SDL_RELEASED
-    keysym*: TSDL_KeySym
-
-  TSDL_MouseMotionEvent*{.final.} = object  # SDL_MOUSEMOTION
-                                            # Mouse button event structure
-    which*: UInt8             # The mouse device index
-    state*: UInt8             # The current button state
-    x*, y*: UInt16            # The X/Y coordinates of the mouse
-    xrel*: SInt16             # The relative motion in the X direction
-    yrel*: SInt16             # The relative motion in the Y direction
-
-  TSDL_MouseButtonEvent*{.final.} = object  # SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP
-                                            # Joystick axis motion event structure
-    which*: UInt8             # The mouse device index
-    button*: UInt8            # The mouse button index
-    state*: UInt8             # SDL_PRESSED or SDL_RELEASED
-    x*: UInt16                # The X coordinates of the mouse at press time
-    y*: UInt16                # The Y coordinates of the mouse at press time
-
-  TSDL_JoyAxisEvent*{.final.} = object  # SDL_JOYAXISMOTION
-                                        # Joystick trackball motion event structure
-    which*: UInt8             # The joystick device index
-    axis*: UInt8              # The joystick axis index
-    value*: SInt16            # The axis value (range: -32768 to 32767)
-
-  TSDL_JoyBallEvent*{.final.} = object  # SDL_JOYAVBALLMOTION
-                                        # Joystick hat position change event structure
-    which*: UInt8             # The joystick device index
-    ball*: UInt8              # The joystick trackball index
-    xrel*: SInt16             # The relative motion in the X direction
-    yrel*: SInt16             # The relative motion in the Y direction
-
-  TSDL_JoyHatEvent*{.final.} = object  # SDL_JOYHATMOTION */
-                                       # Joystick button event structure
-    which*: UInt8             # The joystick device index */
-    hat*: UInt8               # The joystick hat index */
-    value*: UInt8             # The hat position value:
-                              #                    8   1   2
-                              #                    7   0   3
-                              #                    6   5   4
-                              #                    Note that zero means the POV is centered.
-
-  TSDL_JoyButtonEvent*{.final.} = object  # SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP
-                                          # The "window resized" event
-                                          #    When you get this event, you are responsible for setting a new video
-                                          #    mode with the new width and height.
-    which*: UInt8             # The joystick device index
-    button*: UInt8            # The joystick button index
-    state*: UInt8             # SDL_PRESSED or SDL_RELEASED
-
-  TSDL_ResizeEvent*{.final.} = object  # SDL_VIDEORESIZE
-                                       # A user-defined event type
-    w*: int                   # New width
-    h*: int                   # New height
-
-  PSDL_UserEvent* = ptr TSDL_UserEvent
-  TSDL_UserEvent*{.final.} = object  # SDL_USEREVENT through SDL_NUMEVENTS-1
-    code*: int                # User defined event code */
-    data1*: Pointer           # User defined data pointer */
-    data2*: Pointer           # User defined data pointer */
-
-
-when defined(Unix):
-  type                        #These are the various supported subsystems under UNIX
-    TSDL_SysWm* = enum
-      SDL_SYSWM_X11
-# The windows custom event structure
-
-when defined(WINDOWS):
-  type
-    PSDL_SysWMmsg* = ptr TSDL_SysWMmsg
-    TSDL_SysWMmsg*{.final.} = object
-      version*: TSDL_version
-      hwnd*: THandle          # The window for the message
-      msg*: int               # The type of message
-      w_Param*: int32         # WORD message parameter
-      lParam*: int32          # LONG message parameter
-
-elif defined(Unix):
-  type                      # The Linux custom event structure
-    PSDL_SysWMmsg* = ptr TSDL_SysWMmsg
-    TSDL_SysWMmsg*{.final.} = object
-      version*: TSDL_version
-      subsystem*: TSDL_SysWm
-      when false:
-        event*: TXEvent
-else:
-  type                      # The generic custom event structure
-    PSDL_SysWMmsg* = ptr TSDL_SysWMmsg
-    TSDL_SysWMmsg*{.final.} = object
-      version*: TSDL_version
-      data*: int
-
-# The Windows custom window manager information structure
-
-when defined(WINDOWS):
-  type
-    PSDL_SysWMinfo* = ptr TSDL_SysWMinfo
-    TSDL_SysWMinfo*{.final.} = object
-      version*: TSDL_version
-      window*: THandle        # The display window
-
-elif defined(Unix):
-  type
-    TX11*{.final.} = object
-      when false:
-        display*: PDisplay # The X11 display
-        window*: TWindow # The X11 display window
-                         # These locking functions should be called around
-                         # any X11 functions using the display variable.
-                         # They lock the event thread, so should not be
-                         # called around event functions or from event filters.
-        lock_func*: Pointer
-        unlock_func*: Pointer # Introduced in SDL 1.0.2
-        fswindow*: TWindow    # The X11 fullscreen window
-        wmwindow*: TWindow    # The X11 managed input window
-
-  type
-    PSDL_SysWMinfo* = ptr TSDL_SysWMinfo
-    TSDL_SysWMinfo*{.final.} = object
-      version*: TSDL_version
-      subsystem*: TSDL_SysWm
-      X11*: TX11
-else:
-  type  # The generic custom window manager information structure
-    PSDL_SysWMinfo* = ptr TSDL_SysWMinfo
-    TSDL_SysWMinfo*{.final.} = object
-      version*: TSDL_version
-      data*: int
-
-type
-  PSDL_SysWMEvent* = ptr TSDL_SysWMEvent
-  TSDL_SysWMEvent*{.final.} = object
-    msg*: PSDL_SysWMmsg
-
-  PSDL_Event* = ptr TSDL_Event
-  TSDL_Event*{.final.} = object  # This function sets up a filter to process all events before they
-                                 #  change internal state and are posted to the internal event queue.
-                                 #
-                                 #  The filter is protypted as:
-    case theType*: TSDL_EventKind      # SDL_NOEVENT, SDL_QUITEV: ();
-    of SDL_ACTIVEEVENT:
-      active*: TSDL_ActiveEvent
-    of SDL_KEYDOWN, SDL_KEYUP:
-      key*: TSDL_KeyboardEvent
-    of SDL_MOUSEMOTION:
-      motion*: TSDL_MouseMotionEvent
-    of SDL_MOUSEBUTTONDOWN, SDL_MOUSEBUTTONUP:
-      button*: TSDL_MouseButtonEvent
-    of SDL_JOYAXISMOTION:
-      jaxis*: TSDL_JoyAxisEvent
-    of SDL_JOYBALLMOTION:
-      jball*: TSDL_JoyBallEvent
-    of SDL_JOYHATMOTION:
-      jhat*: TSDL_JoyHatEvent
-    of SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP:
-      jbutton*: TSDL_JoyButtonEvent
-    of SDL_VIDEORESIZE:
-      resize*: TSDL_ResizeEvent
-    of SDL_USEREVENT:
-      user*: TSDL_UserEvent
-    of SDL_SYSWMEVENT:
-      syswm*: TSDL_SysWMEvent
-    else:
-      nil
-
-  TSDL_EventFilter* = proc (event: PSDL_Event): int{.cdecl.} # SDL_video.h types
-                                                             # Useful data types
-  PPSDL_Rect* = ptr PSDL_Rect
-  PSDL_Rect* = ptr TSDL_Rect
-  TSDL_Rect*{.final.} = object
-    x*, y*: SInt16
-    w*, h*: UInt16
-
-  SDL_Rect* = TSDL_Rect
-  PSDL_Color* = ptr TSDL_Color
-  TSDL_Color*{.final.} = object
-    r*: UInt8
-    g*: UInt8
-    b*: UInt8
-    unused*: UInt8
-
-  PSDL_ColorArray* = ptr TSDL_ColorArray
-  TSDL_ColorArray* = array[0..65000, TSDL_Color]
-  PSDL_Palette* = ptr TSDL_Palette
-  TSDL_Palette*{.final.} = object  # Everything in the pixel format structure is read-only
-    ncolors*: int
-    colors*: PSDL_ColorArray
-
-  PSDL_PixelFormat* = ptr TSDL_PixelFormat
-  TSDL_PixelFormat*{.final.} = object  # The structure passed to the low level blit functions
-    palette*: PSDL_Palette
-    BitsPerPixel*: UInt8
-    BytesPerPixel*: UInt8
-    Rloss*: UInt8
-    Gloss*: UInt8
-    Bloss*: UInt8
-    Aloss*: UInt8
-    Rshift*: UInt8
-    Gshift*: UInt8
-    Bshift*: UInt8
-    Ashift*: UInt8
-    RMask*: UInt32
-    GMask*: UInt32
-    BMask*: UInt32
-    AMask*: UInt32
-    colorkey*: UInt32         # RGB color key information
-    alpha*: UInt8             # Alpha value information (per-surface alpha)
-
-  PSDL_BlitInfo* = ptr TSDL_BlitInfo
-  TSDL_BlitInfo*{.final.} = object  # typedef for private surface blitting functions
-    s_pixels*: PUInt8
-    s_width*: int
-    s_height*: int
-    s_skip*: int
-    d_pixels*: PUInt8
-    d_width*: int
-    d_height*: int
-    d_skip*: int
-    aux_data*: Pointer
-    src*: PSDL_PixelFormat
-    table*: PUInt8
-    dst*: PSDL_PixelFormat
-
-  PSDL_Surface* = ptr TSDL_Surface
-  TSDL_Blit* = proc (src: PSDL_Surface, srcrect: PSDL_Rect, dst: PSDL_Surface,
-                     dstrect: PSDL_Rect): int{.cdecl.}
-  TSDL_Surface*{.final.} = object  # Useful for determining the video hardware capabilities
-    flags*: UInt32            # Read-only
-    format*: PSDL_PixelFormat # Read-only
-    w*, h*: int               # Read-only
-    pitch*: UInt16            # Read-only
-    pixels*: Pointer          # Read-write
-    offset*: int              # Private
-    hwdata*: Pointer          #TPrivate_hwdata;  Hardware-specific surface info
-                              # clipping information:
-    clip_rect*: TSDL_Rect     # Read-only
-    unused1*: UInt32          # for binary compatibility
-                              # Allow recursive locks
-    locked*: UInt32           # Private
-                              # info for fast blit mapping to other surfaces
-    Blitmap*: Pointer         # PSDL_BlitMap; //   Private
-                              # format version, bumped at every change to invalidate blit maps
-    format_version*: int      # Private
-    refcount*: int
-
-  PSDL_VideoInfo* = ptr TSDL_VideoInfo
-  TSDL_VideoInfo*{.final.} = object  # The YUV hardware video overlay
-    hw_available*: UInt8 # Hardware and WindowManager flags in first 2 bits ( see below )
-                         #hw_available: 1; // Can you create hardware surfaces
-                         #    wm_available: 1; // Can you talk to a window manager?
-                         #    UnusedBits1: 6;
-    blit_hw*: UInt8 # Blit Hardware flags. See below for which bits do what
-                    #UnusedBits2: 1;
-                    #    blit_hw: 1; // Flag:UInt32  Accelerated blits HW --> HW
-                    #    blit_hw_CC: 1; // Flag:UInt32  Accelerated blits with Colorkey
-                    #    blit_hw_A: 1; // Flag:UInt32  Accelerated blits with Alpha
-                    #    blit_sw: 1; // Flag:UInt32  Accelerated blits SW --> HW
-                    #    blit_sw_CC: 1; // Flag:UInt32  Accelerated blits with Colorkey
-                    #    blit_sw_A: 1; // Flag:UInt32  Accelerated blits with Alpha
-                    #    blit_fill: 1; // Flag:UInt32  Accelerated color fill
-    UnusedBits3*: UInt8       # Unused at this point
-    video_mem*: UInt32        # The total amount of video memory (in K)
-    vfmt*: PSDL_PixelFormat   # Value: The format of the video surface
-    current_w*: SInt32        # Value: The current video mode width
-    current_h*: SInt32        # Value: The current video mode height
-
-  PSDL_Overlay* = ptr TSDL_Overlay
-  TSDL_Overlay*{.final.} = object  # Public enumeration for setting the OpenGL window attributes.
-    format*: UInt32           # Overlay format
-    w*, h*: int               # Width and height of overlay
-    planes*: int              # Number of planes in the overlay. Usually either 1 or 3
-    pitches*: PUInt16         # An array of pitches, one for each plane. Pitch is the length of a row in bytes.
-    pixels*: PPUInt8          # An array of pointers to the data of each plane. The overlay should be locked before these pointers are used.
-    hw_overlay*: UInt32       # This will be set to 1 if the overlay is hardware accelerated.
-
-  TSDL_GLAttr* = enum
-    SDL_GL_RED_SIZE, SDL_GL_GREEN_SIZE, SDL_GL_BLUE_SIZE, SDL_GL_ALPHA_SIZE,
-    SDL_GL_BUFFER_SIZE, SDL_GL_DOUBLEBUFFER, SDL_GL_DEPTH_SIZE,
-    SDL_GL_STENCIL_SIZE, SDL_GL_ACCUM_RED_SIZE, SDL_GL_ACCUM_GREEN_SIZE,
-    SDL_GL_ACCUM_BLUE_SIZE, SDL_GL_ACCUM_ALPHA_SIZE, SDL_GL_STEREO,
-    SDL_GL_MULTISAMPLEBUFFERS, SDL_GL_MULTISAMPLESAMPLES,
-    SDL_GL_ACCELERATED_VISUAL, SDL_GL_SWAP_CONTROL
-  PSDL_Cursor* = ptr TSDL_Cursor
-  TSDL_Cursor*{.final.} = object  # SDL_mutex.h types
-    area*: TSDL_Rect          # The area of the mouse cursor
-    hot_x*, hot_y*: SInt16    # The "tip" of the cursor
-    data*: PUInt8             # B/W cursor data
-    mask*: PUInt8             # B/W cursor mask
-    save*: array[1..2, PUInt8] # Place to save cursor area
-    wm_cursor*: Pointer       # Window-manager cursor
-
-
-type
-  PSDL_Mutex* = ptr TSDL_Mutex
-  TSDL_Mutex*{.final.} = object
-  PSDL_semaphore* = ptr TSDL_semaphore
-  TSDL_semaphore*{.final.} = object
-  PSDL_Sem* = ptr TSDL_Sem
-  TSDL_Sem* = TSDL_Semaphore
-  PSDL_Cond* = ptr TSDL_Cond
-  TSDL_Cond*{.final.} = object  # SDL_thread.h types
-
-when defined(WINDOWS):
-  type
-    TSYS_ThreadHandle* = THandle
-when defined(Unix):
-  type
-    TSYS_ThreadHandle* = pointer
-type                          # This is the system-independent thread info structure
-  PSDL_Thread* = ptr TSDL_Thread
-  TSDL_Thread*{.final.} = object  # Helper Types
-                                  # Keyboard  State Array ( See demos for how to use )
-    threadid*: UInt32
-    handle*: TSYS_ThreadHandle
-    status*: int
-    errbuf*: TSDL_Error
-    data*: Pointer
-
-  PKeyStateArr* = ptr TKeyStateArr
-  TKeyStateArr* = array[0..65000, UInt8] # Types required so we don't need to use Windows.pas
-  PInteger* = ptr int
-  PByte* = ptr int8
-  PWord* = ptr int16
-  PLongWord* = ptr int32      # General arrays
-  PByteArray* = ptr TByteArray
-  TByteArray* = array[0..32767, int8]
-  PWordArray* = ptr TWordArray
-  TWordArray* = array[0..16383, int16] # Generic procedure pointer
-  TProcedure* = proc () #------------------------------------------------------------------------------
-                        # initialization
-                        #------------------------------------------------------------------------------
-                        # This function loads the SDL dynamically linked library and initializes
-                        #  the subsystems specified by 'flags' (and those satisfying dependencies)
-                        #  Unless the SDL_INIT_NOPARACHUTE flag is set, it will install cleanup
-                        #  signal handlers for some commonly ignored fatal signals (like SIGSEGV)
-
-proc SDL_Init*(flags: UInt32): int{.cdecl, importc, dynlib: SDLLibName.}
-  # This function initializes specific SDL subsystems
-proc SDL_InitSubSystem*(flags: UInt32): int{.cdecl, importc, dynlib: SDLLibName.}
-  # This function cleans up specific SDL subsystems
-proc SDL_QuitSubSystem*(flags: UInt32){.cdecl, importc, dynlib: SDLLibName.}
-  # This function returns mask of the specified subsystems which have
-  #  been initialized.
-  #  If 'flags' is 0, it returns a mask of all initialized subsystems.
-proc SDL_WasInit*(flags: UInt32): UInt32{.cdecl, importc, dynlib: SDLLibName.}
-  # This function cleans up all initialized subsystems and unloads the
-  #  dynamically linked library.  You should call it upon all exit conditions.
-proc SDL_Quit*(){.cdecl, importc, dynlib: SDLLibName.}
-when defined(WINDOWS):
-  # This should be called from your WinMain() function, if any
-  proc SDL_RegisterApp*(name: cstring, style: UInt32, h_Inst: Pointer): int{.
-      cdecl, importc, dynlib: SDLLibName.}
-#------------------------------------------------------------------------------
-# types
-#------------------------------------------------------------------------------
-# The number of elements in a table
-
-proc SDL_TableSize*(table: cstring): int
-  #------------------------------------------------------------------------------
-  # error-handling
-  #------------------------------------------------------------------------------
-  # Public functions
-proc SDL_GetError*(): cstring{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_SetError*(fmt: cstring){.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_ClearError*(){.cdecl, importc, dynlib: SDLLibName.}
-when not(defined(WINDOWS)):
-  proc SDL_Error*(Code: TSDL_errorcode){.cdecl, importc, dynlib: SDLLibName.}
-# Private error message function - used internally
-
-proc SDL_OutOfMemory*()
-  #------------------------------------------------------------------------------
-  # io handling
-  #------------------------------------------------------------------------------
-  # Functions to create SDL_RWops structures from various data sources
-proc SDL_RWFromFile*(filename, mode: cstring): PSDL_RWops{.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_FreeRW*(area: PSDL_RWops){.cdecl, importc, dynlib: SDLLibName.}
-  #fp is FILE *fp ???
-proc SDL_RWFromFP*(fp: Pointer, autoclose: int): PSDL_RWops{.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_RWFromMem*(mem: Pointer, size: int): PSDL_RWops{.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_RWFromConstMem*(mem: Pointer, size: int): PSDL_RWops{.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_AllocRW*(): PSDL_RWops{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_RWSeek*(context: PSDL_RWops, offset: int, whence: int): int
-proc SDL_RWTell*(context: PSDL_RWops): int
-proc SDL_RWRead*(context: PSDL_RWops, theptr: Pointer, size: int, n: int): int
-proc SDL_RWWrite*(context: PSDL_RWops, theptr: Pointer, size: int, n: int): int
-proc SDL_RWClose*(context: PSDL_RWops): int
-  #------------------------------------------------------------------------------
-  # time-handling
-  #------------------------------------------------------------------------------
-  # Get the number of milliseconds since the SDL library initialization.
-  # Note that this value wraps if the program runs for more than ~49 days.
-proc SDL_GetTicks*(): UInt32{.cdecl, importc, dynlib: SDLLibName.}
-  # Wait a specified number of milliseconds before returning
-proc SDL_Delay*(msec: UInt32){.cdecl, importc, dynlib: SDLLibName.}
-  # Add a new timer to the pool of timers already running.
-  # Returns a timer ID, or NULL when an error occurs.
-proc SDL_AddTimer*(interval: UInt32, callback: TSDL_NewTimerCallback,
-                   param: Pointer): PSDL_TimerID{.cdecl, importc, dynlib: SDLLibName.}
-  # Remove one of the multiple timers knowing its ID.
-  # Returns a boolean value indicating success.
-proc SDL_RemoveTimer*(t: PSDL_TimerID): TSDL_Bool{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_SetTimer*(interval: UInt32, callback: TSDL_TimerCallback): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # audio-routines
-  #------------------------------------------------------------------------------
-  # These functions are used internally, and should not be used unless you
-  #  have a specific need to specify the audio driver you want to use.
-  #  You should normally use SDL_Init() or SDL_InitSubSystem().
-proc SDL_AudioInit*(driver_name: cstring): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_AudioQuit*(){.cdecl, importc, dynlib: SDLLibName.}
-  # This function fills the given character buffer with the name of the
-  #  current audio driver, and returns a Pointer to it if the audio driver has
-  #  been initialized.  It returns NULL if no driver has been initialized.
-proc SDL_AudioDriverName*(namebuf: cstring, maxlen: int): cstring{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # This function opens the audio device with the desired parameters, and
-  #  returns 0 if successful, placing the actual hardware parameters in the
-  #  structure pointed to by 'obtained'.  If 'obtained' is NULL, the audio
-  #  data passed to the callback function will be guaranteed to be in the
-  #  requested format, and will be automatically converted to the hardware
-  #  audio format if necessary.  This function returns -1 if it failed
-  #  to open the audio device, or couldn't set up the audio thread.
-  #
-  #  When filling in the desired audio spec structure,
-  #   'desired->freq' should be the desired audio frequency in samples-per-second.
-  #   'desired->format' should be the desired audio format.
-  #   'desired->samples' is the desired size of the audio buffer, in samples.
-  #      This number should be a power of two, and may be adjusted by the audio
-  #      driver to a value more suitable for the hardware.  Good values seem to
-  #      range between 512 and 8096 inclusive, depending on the application and
-  #      CPU speed.  Smaller values yield faster response time, but can lead
-  #      to underflow if the application is doing heavy processing and cannot
-  #      fill the audio buffer in time.  A stereo sample consists of both right
-  #      and left channels in LR ordering.
-  #      Note that the number of samples is directly related to time by the
-  #      following formula:  ms = (samples*1000)/freq
-  #   'desired->size' is the size in bytes of the audio buffer, and is
-  #      calculated by SDL_OpenAudio().
-  #   'desired->silence' is the value used to set the buffer to silence,
-  #      and is calculated by SDL_OpenAudio().
-  #   'desired->callback' should be set to a function that will be called
-  #      when the audio device is ready for more data.  It is passed a pointer
-  #      to the audio buffer, and the length in bytes of the audio buffer.
-  #      This function usually runs in a separate thread, and so you should
-  #      protect data structures that it accesses by calling SDL_LockAudio()
-  #      and SDL_UnlockAudio() in your code.
-  #   'desired->userdata' is passed as the first parameter to your callback
-  #      function.
-  #
-  #  The audio device starts out playing silence when it's opened, and should
-  #  be enabled for playing by calling SDL_PauseAudio(0) when you are ready
-  #  for your audio callback function to be called.  Since the audio driver
-  #  may modify the requested size of the audio buffer, you should allocate
-  #  any local mixing buffers after you open the audio device.
-proc SDL_OpenAudio*(desired, obtained: PSDL_AudioSpec): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get the current audio state:
-proc SDL_GetAudioStatus*(): TSDL_Audiostatus{.cdecl, importc, dynlib: SDLLibName.}
-  # This function pauses and unpauses the audio callback processing.
-  #  It should be called with a parameter of 0 after opening the audio
-  #  device to start playing sound.  This is so you can safely initialize
-  #  data for your callback function after opening the audio device.
-  #  Silence will be written to the audio device during the pause.
-proc SDL_PauseAudio*(pause_on: int){.cdecl, importc, dynlib: SDLLibName.}
-  # This function loads a WAVE from the data source, automatically freeing
-  #  that source if 'freesrc' is non-zero.  For example, to load a WAVE file,
-  #  you could do:
-  #  SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...);
-  #
-  #  If this function succeeds, it returns the given SDL_AudioSpec,
-  #  filled with the audio data format of the wave data, and sets
-  #  'audio_buf' to a malloc()'d buffer containing the audio data,
-  #  and sets 'audio_len' to the length of that audio buffer, in bytes.
-  #  You need to free the audio buffer with SDL_FreeWAV() when you are
-  #  done with it.
-  #
-  #  This function returns NULL and sets the SDL error message if the
-  #  wave file cannot be opened, uses an unknown data format, or is
-  #  corrupt.  Currently raw and MS-ADPCM WAVE files are supported.
-proc SDL_LoadWAV_RW*(src: PSDL_RWops, freesrc: int, spec: PSDL_AudioSpec,
-                     audio_buf: PUInt8, audiolen: PUInt32): PSDL_AudioSpec{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Compatibility convenience function -- loads a WAV from a file
-proc SDL_LoadWAV*(filename: cstring, spec: PSDL_AudioSpec, audio_buf: PUInt8,
-                  audiolen: PUInt32): PSDL_AudioSpec
-  # This function frees data previously allocated with SDL_LoadWAV_RW()
-proc SDL_FreeWAV*(audio_buf: PUInt8){.cdecl, importc, dynlib: SDLLibName.}
-  # This function takes a source format and rate and a destination format
-  #  and rate, and initializes the 'cvt' structure with information needed
-  #  by SDL_ConvertAudio() to convert a buffer of audio data from one format
-  #  to the other.
-  #  This function returns 0, or -1 if there was an error.
-proc SDL_BuildAudioCVT*(cvt: PSDL_AudioCVT, src_format: UInt16,
-                        src_channels: UInt8, src_rate: int, dst_format: UInt16,
-                        dst_channels: UInt8, dst_rate: int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Once you have initialized the 'cvt' structure using SDL_BuildAudioCVT(),
-  #  created an audio buffer cvt->buf, and filled it with cvt->len bytes of
-  #  audio data in the source format, this function will convert it in-place
-  #  to the desired format.
-  #  The data conversion may expand the size of the audio data, so the buffer
-  #  cvt->buf should be allocated after the cvt structure is initialized by
-  #  SDL_BuildAudioCVT(), and should be cvt->len*cvt->len_mult bytes long.
-proc SDL_ConvertAudio*(cvt: PSDL_AudioCVT): int{.cdecl, importc, dynlib: SDLLibName.}
-  # This takes two audio buffers of the playing audio format and mixes
-  #  them, performing addition, volume adjustment, and overflow clipping.
-  #  The volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
-  #  for full audio volume.  Note this does not change hardware volume.
-  #  This is provided for convenience -- you can mix your own audio data.
-proc SDL_MixAudio*(dst, src: PUInt8, length: UInt32, volume: int){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # The lock manipulated by these functions protects the callback function.
-  #  During a LockAudio/UnlockAudio pair, you can be guaranteed that the
-  #  callback function is not running.  Do not call these from the callback
-  #  function or you will cause deadlock.
-proc SDL_LockAudio*(){.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_UnlockAudio*(){.cdecl, importc, dynlib: SDLLibName.}
-  # This function shuts down audio processing and closes the audio device.
-proc SDL_CloseAudio*(){.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # CD-routines
-  #------------------------------------------------------------------------------
-  # Returns the number of CD-ROM drives on the system, or -1 if
-  #  SDL_Init() has not been called with the SDL_INIT_CDROM flag.
-proc SDL_CDNumDrives*(): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Returns a human-readable, system-dependent identifier for the CD-ROM.
-  #   Example:
-  #   "/dev/cdrom"
-  #   "E:"
-  #   "/dev/disk/ide/1/master"
-proc SDL_CDName*(drive: int): cstring{.cdecl, importc, dynlib: SDLLibName.}
-  # Opens a CD-ROM drive for access.  It returns a drive handle on success,
-  #  or NULL if the drive was invalid or busy.  This newly opened CD-ROM
-  #  becomes the default CD used when other CD functions are passed a NULL
-  #  CD-ROM handle.
-  #  Drives are numbered starting with 0.  Drive 0 is the system default CD-ROM.
-proc SDL_CDOpen*(drive: int): PSDL_CD{.cdecl, importc, dynlib: SDLLibName.}
-  # This function returns the current status of the given drive.
-  #  If the drive has a CD in it, the table of contents of the CD and current
-  #  play position of the CD will be stored in the SDL_CD structure.
-proc SDL_CDStatus*(cdrom: PSDL_CD): TSDL_CDStatus{.cdecl, importc, dynlib: SDLLibName.}
-  #  Play the given CD starting at 'start_track' and 'start_frame' for 'ntracks'
-  #   tracks and 'nframes' frames.  If both 'ntrack' and 'nframe' are 0, play
-  #   until the end of the CD.  This function will skip data tracks.
-  #   This function should only be called after calling SDL_CDStatus() to
-  #   get track information about the CD.
-  #
-  #   For example:
-  #   // Play entire CD:
-  #  if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) then
-  #    SDL_CDPlayTracks(cdrom, 0, 0, 0, 0);
-  #   // Play last track:
-  #   if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) then
-  #   begin
-  #    SDL_CDPlayTracks(cdrom, cdrom->numtracks-1, 0, 0, 0);
-  #   end;
-  #
-  #   // Play first and second track and 10 seconds of third track:
-  #   if ( CD_INDRIVE(SDL_CDStatus(cdrom)) )
-  #    SDL_CDPlayTracks(cdrom, 0, 0, 2, 10);
-  #
-  #   This function returns 0, or -1 if there was an error.
-proc SDL_CDPlayTracks*(cdrom: PSDL_CD, start_track: int, start_frame: int,
-                       ntracks: int, nframes: int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  #  Play the given CD starting at 'start' frame for 'length' frames.
-  #   It returns 0, or -1 if there was an error.
-proc SDL_CDPlay*(cdrom: PSDL_CD, start: int, len: int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Pause play -- returns 0, or -1 on error
-proc SDL_CDPause*(cdrom: PSDL_CD): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Resume play -- returns 0, or -1 on error
-proc SDL_CDResume*(cdrom: PSDL_CD): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Stop play -- returns 0, or -1 on error
-proc SDL_CDStop*(cdrom: PSDL_CD): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Eject CD-ROM -- returns 0, or -1 on error
-proc SDL_CDEject*(cdrom: PSDL_CD): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Closes the handle for the CD-ROM drive
-proc SDL_CDClose*(cdrom: PSDL_CD){.cdecl, importc, dynlib: SDLLibName.}
-  # Given a status, returns true if there's a disk in the drive
-proc SDL_CDInDrive*(status: TSDL_CDStatus): bool
-  # Conversion functions from frames to Minute/Second/Frames and vice versa
-proc FRAMES_TO_MSF*(frames: int, M: var int, S: var int, F: var int)
-proc MSF_TO_FRAMES*(M: int, S: int, F: int): int
-  #------------------------------------------------------------------------------
-  # JoyStick-routines
-  #------------------------------------------------------------------------------
-  # Count the number of joysticks attached to the system
-proc SDL_NumJoysticks*(): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the implementation dependent name of a joystick.
-  #  This can be called before any joysticks are opened.
-  #  If no name can be found, this function returns NULL.
-proc SDL_JoystickName*(index: int): cstring{.cdecl, importc, dynlib: SDLLibName.}
-  # Open a joystick for use - the index passed as an argument refers to
-  #  the N'th joystick on the system.  This index is the value which will
-  #  identify this joystick in future joystick events.
-  #
-  #  This function returns a joystick identifier, or NULL if an error occurred.
-proc SDL_JoystickOpen*(index: int): PSDL_Joystick{.cdecl, importc, dynlib: SDLLibName.}
-  # Returns 1 if the joystick has been opened, or 0 if it has not.
-proc SDL_JoystickOpened*(index: int): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the device index of an opened joystick.
-proc SDL_JoystickIndex*(joystick: PSDL_Joystick): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the number of general axis controls on a joystick
-proc SDL_JoystickNumAxes*(joystick: PSDL_Joystick): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get the number of trackballs on a joystick
-  #  Joystick trackballs have only relative motion events associated
-  #  with them and their state cannot be polled.
-proc SDL_JoystickNumBalls*(joystick: PSDL_Joystick): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get the number of POV hats on a joystick
-proc SDL_JoystickNumHats*(joystick: PSDL_Joystick): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get the number of buttons on a joystick
-proc SDL_JoystickNumButtons*(joystick: PSDL_Joystick): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Update the current state of the open joysticks.
-  #  This is called automatically by the event loop if any joystick
-  #  events are enabled.
-proc SDL_JoystickUpdate*(){.cdecl, importc, dynlib: SDLLibName.}
-  # Enable/disable joystick event polling.
-  #  If joystick events are disabled, you must call SDL_JoystickUpdate()
-  #  yourself and check the state of the joystick when you want joystick
-  #  information.
-  #  The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE.
-proc SDL_JoystickEventState*(state: int): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the current state of an axis control on a joystick
-  #  The state is a value ranging from -32768 to 32767.
-  #  The axis indices start at index 0.
-proc SDL_JoystickGetAxis*(joystick: PSDL_Joystick, axis: int): SInt16{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # The hat indices start at index 0.
-proc SDL_JoystickGetHat*(joystick: PSDL_Joystick, hat: int): UInt8{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get the ball axis change since the last poll
-  #  This returns 0, or -1 if you passed it invalid parameters.
-  #  The ball indices start at index 0.
-proc SDL_JoystickGetBall*(joystick: PSDL_Joystick, ball: int, dx: var int,
-                          dy: var int): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the current state of a button on a joystick
-  #  The button indices start at index 0.
-proc SDL_JoystickGetButton*(joystick: PSDL_Joystick, Button: int): UInt8{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Close a joystick previously opened with SDL_JoystickOpen()
-proc SDL_JoystickClose*(joystick: PSDL_Joystick){.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # event-handling
-  #------------------------------------------------------------------------------
-  # Pumps the event loop, gathering events from the input devices.
-  #  This function updates the event queue and internal input device state.
-  #  This should only be run in the thread that sets the video mode.
-proc SDL_PumpEvents*(){.cdecl, importc, dynlib: SDLLibName.}
-  # Checks the event queue for messages and optionally returns them.
-  #  If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to
-  #  the back of the event queue.
-  #  If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front
-  #  of the event queue, matching 'mask', will be returned and will not
-  #  be removed from the queue.
-  #  If 'action' is SDL_GETEVENT, up to 'numevents' events at the front
-  #  of the event queue, matching 'mask', will be returned and will be
-  #  removed from the queue.
-  #  This function returns the number of events actually stored, or -1
-  #  if there was an error.  This function is thread-safe.
-proc SDL_PeepEvents*(events: PSDL_Event, numevents: int,
-                     action: TSDL_eventaction, mask: UInt32): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Polls for currently pending events, and returns 1 if there are any pending
-  #   events, or 0 if there are none available.  If 'event' is not NULL, the next
-  #   event is removed from the queue and stored in that area.
-proc SDL_PollEvent*(event: PSDL_Event): int{.cdecl, importc, dynlib: SDLLibName.}
-  #  Waits indefinitely for the next available event, returning 1, or 0 if there
-  #   was an error while waiting for events.  If 'event' is not NULL, the next
-  #   event is removed from the queue and stored in that area.
-proc SDL_WaitEvent*(event: PSDL_Event): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_PushEvent*(event: PSDL_Event): int{.cdecl, importc, dynlib: SDLLibName.}
-  # If the filter returns 1, then the event will be added to the internal queue.
-  #  If it returns 0, then the event will be dropped from the queue, but the
-  #  internal state will still be updated.  This allows selective filtering of
-  #  dynamically arriving events.
-  #
-  #  WARNING:  Be very careful of what you do in the event filter function, as
-  #            it may run in a different thread!
-  #
-  #  There is one caveat when dealing with the SDL_QUITEVENT event type.  The
-  #  event filter is only called when the window manager desires to close the
-  #  application window.  If the event filter returns 1, then the window will
-  #  be closed, otherwise the window will remain open if possible.
-  #  If the quit event is generated by an interrupt signal, it will bypass the
-  #  internal queue and be delivered to the application at the next event poll.
-proc SDL_SetEventFilter*(filter: TSDL_EventFilter){.cdecl, importc, dynlib: SDLLibName.}
-  # Return the current event filter - can be used to "chain" filters.
-  #  If there is no event filter set, this function returns NULL.
-proc SDL_GetEventFilter*(): TSDL_EventFilter{.cdecl, importc, dynlib: SDLLibName.}
-  # This function allows you to set the state of processing certain events.
-  #  If 'state' is set to SDL_IGNORE, that event will be automatically dropped
-  #  from the event queue and will not event be filtered.
-  #  If 'state' is set to SDL_ENABLE, that event will be processed normally.
-  #  If 'state' is set to SDL_QUERY, SDL_EventState() will return the
-  #  current processing state of the specified event.
-proc SDL_EventState*(theType: UInt8, state: int): UInt8{.cdecl,
-    importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # Version Routines
-  #------------------------------------------------------------------------------
-  # This macro can be used to fill a version structure with the compile-time
-  #  version of the SDL library.
-proc SDL_VERSION*(X: var TSDL_Version)
-  # This macro turns the version numbers into a numeric value:
-  #   (1,2,3) -> (1203)
-  #   This assumes that there will never be more than 100 patchlevels
-proc SDL_VERSIONNUM*(X, Y, Z: int): int
-  # This is the version number macro for the current SDL version
-proc SDL_COMPILEDVERSION*(): int
-  # This macro will evaluate to true if compiled with SDL at least X.Y.Z
-proc SDL_VERSION_ATLEAST*(X: int, Y: int, Z: int): bool
-  # This function gets the version of the dynamically linked SDL library.
-  #  it should NOT be used to fill a version structure, instead you should
-  #  use the SDL_Version() macro.
-proc SDL_Linked_Version*(): PSDL_version{.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # video
-  #------------------------------------------------------------------------------
-  # These functions are used internally, and should not be used unless you
-  #  have a specific need to specify the video driver you want to use.
-  #  You should normally use SDL_Init() or SDL_InitSubSystem().
-  #
-  #  SDL_VideoInit() initializes the video subsystem -- sets up a connection
-  #  to the window manager, etc, and determines the current video mode and
-  #  pixel format, but does not initialize a window or graphics mode.
-  #  Note that event handling is activated by this routine.
-  #
-  #  If you use both sound and video in your application, you need to call
-  #  SDL_Init() before opening the sound device, otherwise under Win32 DirectX,
-  #  you won't be able to set full-screen display modes.
-proc SDL_VideoInit*(driver_name: cstring, flags: UInt32): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_VideoQuit*(){.cdecl, importc, dynlib: SDLLibName.}
-  # This function fills the given character buffer with the name of the
-  #  video driver, and returns a pointer to it if the video driver has
-  #  been initialized.  It returns NULL if no driver has been initialized.
-proc SDL_VideoDriverName*(namebuf: cstring, maxlen: int): cstring{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # This function returns a pointer to the current display surface.
-  #  If SDL is doing format conversion on the display surface, this
-  #  function returns the publicly visible surface, not the real video
-  #  surface.
-proc SDL_GetVideoSurface*(): PSDL_Surface{.cdecl, importc, dynlib: SDLLibName.}
-  # This function returns a read-only pointer to information about the
-  #  video hardware.  If this is called before SDL_SetVideoMode(), the 'vfmt'
-  #  member of the returned structure will contain the pixel format of the
-  #  "best" video mode.
-proc SDL_GetVideoInfo*(): PSDL_VideoInfo{.cdecl, importc, dynlib: SDLLibName.}
-  # Check to see if a particular video mode is supported.
-  #  It returns 0 if the requested mode is not supported under any bit depth,
-  #  or returns the bits-per-pixel of the closest available mode with the
-  #  given width and height.  If this bits-per-pixel is different from the
-  #  one used when setting the video mode, SDL_SetVideoMode() will succeed,
-  #  but will emulate the requested bits-per-pixel with a shadow surface.
-  #
-  #  The arguments to SDL_VideoModeOK() are the same ones you would pass to
-  #  SDL_SetVideoMode()
-proc SDL_VideoModeOK*(width, height, bpp: int, flags: UInt32): int{.cdecl,
-    importc, importc, dynlib: SDLLibName.}
-  # Return a pointer to an array of available screen dimensions for the
-  #  given format and video flags, sorted largest to smallest.  Returns
-  #  NULL if there are no dimensions available for a particular format,
-  #  or (SDL_Rect **)-1 if any dimension is okay for the given format.
-  #
-  #  if 'format' is NULL, the mode list will be for the format given
-  #  by SDL_GetVideoInfo( ) - > vfmt
-proc SDL_ListModes*(format: PSDL_PixelFormat, flags: UInt32): PPSDL_Rect{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Set up a video mode with the specified width, height and bits-per-pixel.
-  #
-  #  If 'bpp' is 0, it is treated as the current display bits per pixel.
-  #
-  #  If SDL_ANYFORMAT is set in 'flags', the SDL library will try to set the
-  #  requested bits-per-pixel, but will return whatever video pixel format is
-  #  available.  The default is to emulate the requested pixel format if it
-  #  is not natively available.
-  #
-  #  If SDL_HWSURFACE is set in 'flags', the video surface will be placed in
-  #  video memory, if possible, and you may have to call SDL_LockSurface()
-  #  in order to access the raw framebuffer.  Otherwise, the video surface
-  #  will be created in system memory.
-  #
-  #  If SDL_ASYNCBLIT is set in 'flags', SDL will try to perform rectangle
-  #  updates asynchronously, but you must always lock before accessing pixels.
-  #  SDL will wait for updates to complete before returning from the lock.
-  #
-  #  If SDL_HWPALETTE is set in 'flags', the SDL library will guarantee
-  #  that the colors set by SDL_SetColors() will be the colors you get.
-  #  Otherwise, in 8-bit mode, SDL_SetColors() may not be able to set all
-  #  of the colors exactly the way they are requested, and you should look
-  #  at the video surface structure to determine the actual palette.
-  #  If SDL cannot guarantee that the colors you request can be set,
-  #  i.e. if the colormap is shared, then the video surface may be created
-  #  under emulation in system memory, overriding the SDL_HWSURFACE flag.
-  #
-  #  If SDL_FULLSCREEN is set in 'flags', the SDL library will try to set
-  #  a fullscreen video mode.  The default is to create a windowed mode
-  #  if the current graphics system has a window manager.
-  #  If the SDL library is able to set a fullscreen video mode, this flag
-  #  will be set in the surface that is returned.
-  #
-  #  If SDL_DOUBLEBUF is set in 'flags', the SDL library will try to set up
-  #  two surfaces in video memory and swap between them when you call
-  #  SDL_Flip().  This is usually slower than the normal single-buffering
-  #  scheme, but prevents "tearing" artifacts caused by modifying video
-  #  memory while the monitor is refreshing.  It should only be used by
-  #  applications that redraw the entire screen on every update.
-  #
-  #  This function returns the video framebuffer surface, or NULL if it fails.
-proc SDL_SetVideoMode*(width, height, bpp: int, flags: UInt32): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Makes sure the given list of rectangles is updated on the given screen.
-  #  If 'x', 'y', 'w' and 'h' are all 0, SDL_UpdateRect will update the entire
-  #  screen.
-  #  These functions should not be called while 'screen' is locked.
-proc SDL_UpdateRects*(screen: PSDL_Surface, numrects: int, rects: PSDL_Rect){.
-    cdecl, importc, dynlib: SDLLibName.}
-proc SDL_UpdateRect*(screen: PSDL_Surface, x, y: SInt32, w, h: UInt32){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # On hardware that supports double-buffering, this function sets up a flip
-  #  and returns.  The hardware will wait for vertical retrace, and then swap
-  #  video buffers before the next video surface blit or lock will return.
-  #  On hardware that doesn not support double-buffering, this is equivalent
-  #  to calling SDL_UpdateRect(screen, 0, 0, 0, 0);
-  #  The SDL_DOUBLEBUF flag must have been passed to SDL_SetVideoMode() when
-  #  setting the video mode for this function to perform hardware flipping.
-  #  This function returns 0 if successful, or -1 if there was an error.
-proc SDL_Flip*(screen: PSDL_Surface): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Set the gamma correction for each of the color channels.
-  #  The gamma values range (approximately) between 0.1 and 10.0
-  #
-  #  If this function isn't supported directly by the hardware, it will
-  #  be emulated using gamma ramps, if available.  If successful, this
-  #  function returns 0, otherwise it returns -1.
-proc SDL_SetGamma*(redgamma: float32, greengamma: float32, bluegamma: float32): int{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Set the gamma translation table for the red, green, and blue channels
-  #  of the video hardware.  Each table is an array of 256 16-bit quantities,
-  #  representing a mapping between the input and output for that channel.
-  #  The input is the index into the array, and the output is the 16-bit
-  #  gamma value at that index, scaled to the output color precision.
-  #
-  #  You may pass NULL for any of the channels to leave it unchanged.
-  #  If the call succeeds, it will return 0.  If the display driver or
-  #  hardware does not support gamma translation, or otherwise fails,
-  #  this function will return -1.
-proc SDL_SetGammaRamp*(redtable: PUInt16, greentable: PUInt16,
-                       bluetable: PUInt16): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Retrieve the current values of the gamma translation tables.
-  #
-  #  You must pass in valid pointers to arrays of 256 16-bit quantities.
-  #  Any of the pointers may be NULL to ignore that channel.
-  #  If the call succeeds, it will return 0.  If the display driver or
-  #  hardware does not support gamma translation, or otherwise fails,
-  #  this function will return -1.
-proc SDL_GetGammaRamp*(redtable: PUInt16, greentable: PUInt16,
-                       bluetable: PUInt16): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Sets a portion of the colormap for the given 8-bit surface.  If 'surface'
-  #  is not a palettized surface, this function does nothing, returning 0.
-  #  If all of the colors were set as passed to SDL_SetColors(), it will
-  #  return 1.  If not all the color entries were set exactly as given,
-  #  it will return 0, and you should look at the surface palette to
-  #  determine the actual color palette.
-  #
-  #  When 'surface' is the surface associated with the current display, the
-  #  display colormap will be updated with the requested colors.  If
-  #  SDL_HWPALETTE was set in SDL_SetVideoMode() flags, SDL_SetColors()
-  #  will always return 1, and the palette is guaranteed to be set the way
-  #  you desire, even if the window colormap has to be warped or run under
-  #  emulation.
-proc SDL_SetColors*(surface: PSDL_Surface, colors: PSDL_Color, firstcolor: int,
-                    ncolors: int): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Sets a portion of the colormap for a given 8-bit surface.
-  #  'flags' is one or both of:
-  #  SDL_LOGPAL  -- set logical palette, which controls how blits are mapped
-  #                 to/from the surface,
-  #  SDL_PHYSPAL -- set physical palette, which controls how pixels look on
-  #                 the screen
-  #  Only screens have physical palettes. Separate change of physical/logical
-  #  palettes is only possible if the screen has SDL_HWPALETTE set.
-  #
-  #  The return value is 1 if all colours could be set as requested, and 0
-  #  otherwise.
-  #
-  #  SDL_SetColors() is equivalent to calling this function with
-  #  flags = (SDL_LOGPAL or SDL_PHYSPAL).
-proc SDL_SetPalette*(surface: PSDL_Surface, flags: int, colors: PSDL_Color,
-                     firstcolor: int, ncolors: int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Maps an RGB triple to an opaque pixel value for a given pixel format
-proc SDL_MapRGB*(format: PSDL_PixelFormat, r: UInt8, g: UInt8, b: UInt8): UInt32{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Maps an RGBA quadruple to a pixel value for a given pixel format
-proc SDL_MapRGBA*(format: PSDL_PixelFormat, r: UInt8, g: UInt8, b: UInt8,
-                  a: UInt8): UInt32{.cdecl, importc, dynlib: SDLLibName.}
-  # Maps a pixel value into the RGB components for a given pixel format
-proc SDL_GetRGB*(pixel: UInt32, fmt: PSDL_PixelFormat, r: PUInt8, g: PUInt8,
-                 b: PUInt8){.cdecl, importc, dynlib: SDLLibName.}
-  # Maps a pixel value into the RGBA components for a given pixel format
-proc SDL_GetRGBA*(pixel: UInt32, fmt: PSDL_PixelFormat, r: PUInt8, g: PUInt8,
-                  b: PUInt8, a: PUInt8){.cdecl, importc, dynlib: SDLLibName.}
-  # Allocate and free an RGB surface (must be called after SDL_SetVideoMode)
-  #  If the depth is 4 or 8 bits, an empty palette is allocated for the surface.
-  #  If the depth is greater than 8 bits, the pixel format is set using the
-  #  flags '[RGB]mask'.
-  #  If the function runs out of memory, it will return NULL.
-  #
-  #  The 'flags' tell what kind of surface to create.
-  #  SDL_SWSURFACE means that the surface should be created in system memory.
-  #  SDL_HWSURFACE means that the surface should be created in video memory,
-  #  with the same format as the display surface.  This is useful for surfaces
-  #  that will not change much, to take advantage of hardware acceleration
-  #  when being blitted to the display surface.
-  #  SDL_ASYNCBLIT means that SDL will try to perform asynchronous blits with
-  #  this surface, but you must always lock it before accessing the pixels.
-  #  SDL will wait for current blits to finish before returning from the lock.
-  #  SDL_SRCCOLORKEY indicates that the surface will be used for colorkey blits.
-  #  If the hardware supports acceleration of colorkey blits between
-  #  two surfaces in video memory, SDL will try to place the surface in
-  #  video memory. If this isn't possible or if there is no hardware
-  #  acceleration available, the surface will be placed in system memory.
-  #  SDL_SRCALPHA means that the surface will be used for alpha blits and
-  #  if the hardware supports hardware acceleration of alpha blits between
-  #  two surfaces in video memory, to place the surface in video memory
-  #  if possible, otherwise it will be placed in system memory.
-  #  If the surface is created in video memory, blits will be _much_ faster,
-  #  but the surface format must be identical to the video surface format,
-  #  and the only way to access the pixels member of the surface is to use
-  #  the SDL_LockSurface() and SDL_UnlockSurface() calls.
-  #  If the requested surface actually resides in video memory, SDL_HWSURFACE
-  #  will be set in the flags member of the returned surface.  If for some
-  #  reason the surface could not be placed in video memory, it will not have
-  #  the SDL_HWSURFACE flag set, and will be created in system memory instead.
-proc SDL_AllocSurface*(flags: UInt32, width, height, depth: int,
-                       RMask, GMask, BMask, AMask: UInt32): PSDL_Surface
-proc SDL_CreateRGBSurface*(flags: UInt32, width, height, depth: int,
-                           RMask, GMask, BMask, AMask: UInt32): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLLibName.}
-proc SDL_CreateRGBSurfaceFrom*(pixels: Pointer,
-                               width, height, depth, pitch: int,
-                               RMask, GMask, BMask, AMask: UInt32): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLLibName.}
-proc SDL_FreeSurface*(surface: PSDL_Surface){.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_MustLock*(Surface: PSDL_Surface): bool
-  # SDL_LockSurface() sets up a surface for directly accessing the pixels.
-  #  Between calls to SDL_LockSurface()/SDL_UnlockSurface(), you can write
-  #  to and read from 'surface->pixels', using the pixel format stored in
-  #  'surface->format'.  Once you are done accessing the surface, you should
-  #  use SDL_UnlockSurface() to release it.
-  #
-  #  Not all surfaces require locking.  If SDL_MUSTLOCK(surface) evaluates
-  #  to 0, then you can read and write to the surface at any time, and the
-  #  pixel format of the surface will not change.  In particular, if the
-  #  SDL_HWSURFACE flag is not given when calling SDL_SetVideoMode(), you
-  #  will not need to lock the display surface before accessing it.
-  #
-  #  No operating system or library calls should be made between lock/unlock
-  #  pairs, as critical system locks may be held during this time.
-  #
-  #  SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked.
-proc SDL_LockSurface*(surface: PSDL_Surface): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_UnlockSurface*(surface: PSDL_Surface){.cdecl, importc, dynlib: SDLLibName.}
-  # Load a surface from a seekable SDL data source (memory or file.)
-  #  If 'freesrc' is non-zero, the source will be closed after being read.
-  #  Returns the new surface, or NULL if there was an error.
-  #  The new surface should be freed with SDL_FreeSurface().
-proc SDL_LoadBMP_RW*(src: PSDL_RWops, freesrc: int): PSDL_Surface{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Convenience macro -- load a surface from a file
-proc SDL_LoadBMP*(filename: cstring): PSDL_Surface
-  # Save a surface to a seekable SDL data source (memory or file.)
-  #  If 'freedst' is non-zero, the source will be closed after being written.
-  #  Returns 0 if successful or -1 if there was an error.
-proc SDL_SaveBMP_RW*(surface: PSDL_Surface, dst: PSDL_RWops, freedst: int): int{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Convenience macro -- save a surface to a file
-proc SDL_SaveBMP*(surface: PSDL_Surface, filename: cstring): int
-  # Sets the color key (transparent pixel) in a blittable surface.
-  #  If 'flag' is SDL_SRCCOLORKEY (optionally OR'd with SDL_RLEACCEL),
-  #  'key' will be the transparent pixel in the source image of a blit.
-  #  SDL_RLEACCEL requests RLE acceleration for the surface if present,
-  #  and removes RLE acceleration if absent.
-  #  If 'flag' is 0, this function clears any current color key.
-  #  This function returns 0, or -1 if there was an error.
-proc SDL_SetColorKey*(surface: PSDL_Surface, flag, key: UInt32): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # This function sets the alpha value for the entire surface, as opposed to
-  #  using the alpha component of each pixel. This value measures the range
-  #  of transparency of the surface, 0 being completely transparent to 255
-  #  being completely opaque. An 'alpha' value of 255 causes blits to be
-  #  opaque, the source pixels copied to the destination (the default). Note
-  #  that per-surface alpha can be combined with colorkey transparency.
-  #
-  #  If 'flag' is 0, alpha blending is disabled for the surface.
-  #  If 'flag' is SDL_SRCALPHA, alpha blending is enabled for the surface.
-  #  OR:ing the flag with SDL_RLEACCEL requests RLE acceleration for the
-  #  surface; if SDL_RLEACCEL is not specified, the RLE accel will be removed.
-proc SDL_SetAlpha*(surface: PSDL_Surface, flag: UInt32, alpha: UInt8): int{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Sets the clipping rectangle for the destination surface in a blit.
-  #
-  #  If the clip rectangle is NULL, clipping will be disabled.
-  #  If the clip rectangle doesn't intersect the surface, the function will
-  #  return SDL_FALSE and blits will be completely clipped.  Otherwise the
-  #  function returns SDL_TRUE and blits to the surface will be clipped to
-  #  the intersection of the surface area and the clipping rectangle.
-  #
-  #  Note that blits are automatically clipped to the edges of the source
-  #  and destination surfaces.
-proc SDL_SetClipRect*(surface: PSDL_Surface, rect: PSDL_Rect){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Gets the clipping rectangle for the destination surface in a blit.
-  #  'rect' must be a pointer to a valid rectangle which will be filled
-  #  with the correct values.
-proc SDL_GetClipRect*(surface: PSDL_Surface, rect: PSDL_Rect){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Creates a new surface of the specified format, and then copies and maps
-  #  the given surface to it so the blit of the converted surface will be as
-  #  fast as possible.  If this function fails, it returns NULL.
-  #
-  #  The 'flags' parameter is passed to SDL_CreateRGBSurface() and has those
-  #  semantics.  You can also pass SDL_RLEACCEL in the flags parameter and
-  #  SDL will try to RLE accelerate colorkey and alpha blits in the resulting
-  #  surface.
-  #
-  #  This function is used internally by SDL_DisplayFormat().
-proc SDL_ConvertSurface*(src: PSDL_Surface, fmt: PSDL_PixelFormat, flags: UInt32): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLLibName.}
-  #
-  #  This performs a fast blit from the source surface to the destination
-  #  surface.  It assumes that the source and destination rectangles are
-  #  the same size.  If either 'srcrect' or 'dstrect' are NULL, the entire
-  #  surface (src or dst) is copied.  The final blit rectangles are saved
-  #  in 'srcrect' and 'dstrect' after all clipping is performed.
-  #  If the blit is successful, it returns 0, otherwise it returns -1.
-  #
-  #  The blit function should not be called on a locked surface.
-  #
-  #  The blit semantics for surfaces with and without alpha and colorkey
-  #  are defined as follows:
-  #
-  #  RGBA->RGB:
-  #      SDL_SRCALPHA set:
-  #   alpha-blend (using alpha-channel).
-  #   SDL_SRCCOLORKEY ignored.
-  #      SDL_SRCALPHA not set:
-  #   copy RGB.
-  #   if SDL_SRCCOLORKEY set, only copy the pixels matching the
-  #   RGB values of the source colour key, ignoring alpha in the
-  #   comparison.
-  #
-  #  RGB->RGBA:
-  #      SDL_SRCALPHA set:
-  #   alpha-blend (using the source per-surface alpha value);
-  #   set destination alpha to opaque.
-  #      SDL_SRCALPHA not set:
-  #   copy RGB, set destination alpha to opaque.
-  #      both:
-  #   if SDL_SRCCOLORKEY set, only copy the pixels matching the
-  #   source colour key.
-  #
-  #  RGBA->RGBA:
-  #      SDL_SRCALPHA set:
-  #   alpha-blend (using the source alpha channel) the RGB values;
-  #   leave destination alpha untouched. [Note: is this correct?]
-  #   SDL_SRCCOLORKEY ignored.
-  #      SDL_SRCALPHA not set:
-  #   copy all of RGBA to the destination.
-  #   if SDL_SRCCOLORKEY set, only copy the pixels matching the
-  #   RGB values of the source colour key, ignoring alpha in the
-  #   comparison.
-  #
-  #  RGB->RGB:
-  #      SDL_SRCALPHA set:
-  #   alpha-blend (using the source per-surface alpha value).
-  #      SDL_SRCALPHA not set:
-  #   copy RGB.
-  #      both:
-  #   if SDL_SRCCOLORKEY set, only copy the pixels matching the
-  #   source colour key.
-  #
-  #  If either of the surfaces were in video memory, and the blit returns -2,
-  #  the video memory was lost, so it should be reloaded with artwork and
-  #  re-blitted:
-  #  while ( SDL_BlitSurface(image, imgrect, screen, dstrect) = -2 ) do
-  #  begin
-  #  while ( SDL_LockSurface(image) < 0 ) do
-  #   Sleep(10);
-  #  -- Write image pixels to image->pixels --
-  #  SDL_UnlockSurface(image);
-  # end;
-  #
-  #  This happens under DirectX 5.0 when the system switches away from your
-  #  fullscreen application.  The lock will also fail until you have access
-  #  to the video memory again.
-  # You should call SDL_BlitSurface() unless you know exactly how SDL
-  #   blitting works internally and how to use the other blit functions.
-proc SDL_BlitSurface*(src: PSDL_Surface, srcrect: PSDL_Rect, dst: PSDL_Surface,
-                      dstrect: PSDL_Rect): int
-  #  This is the public blit function, SDL_BlitSurface(), and it performs
-  #   rectangle validation and clipping before passing it to SDL_LowerBlit()
-proc SDL_UpperBlit*(src: PSDL_Surface, srcrect: PSDL_Rect, dst: PSDL_Surface,
-                    dstrect: PSDL_Rect): int{.cdecl, importc, dynlib: SDLLibName.}
-  # This is a semi-private blit function and it performs low-level surface
-  #  blitting only.
-proc SDL_LowerBlit*(src: PSDL_Surface, srcrect: PSDL_Rect, dst: PSDL_Surface,
-                    dstrect: PSDL_Rect): int{.cdecl, importc, dynlib: SDLLibName.}
-  # This function performs a fast fill of the given rectangle with 'color'
-  #  The given rectangle is clipped to the destination surface clip area
-  #  and the final fill rectangle is saved in the passed in pointer.
-  #  If 'dstrect' is NULL, the whole surface will be filled with 'color'
-  #  The color should be a pixel of the format used by the surface, and
-  #  can be generated by the SDL_MapRGB() function.
-  #  This function returns 0 on success, or -1 on error.
-proc SDL_FillRect*(dst: PSDL_Surface, dstrect: PSDL_Rect, color: UInt32): int{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # This function takes a surface and copies it to a new surface of the
-  #  pixel format and colors of the video framebuffer, suitable for fast
-  #  blitting onto the display surface.  It calls SDL_ConvertSurface()
-  #
-  #  If you want to take advantage of hardware colorkey or alpha blit
-  #  acceleration, you should set the colorkey and alpha value before
-  #  calling this function.
-  #
-  #  If the conversion fails or runs out of memory, it returns NULL
-proc SDL_DisplayFormat*(surface: PSDL_Surface): PSDL_Surface{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # This function takes a surface and copies it to a new surface of the
-  #  pixel format and colors of the video framebuffer (if possible),
-  #  suitable for fast alpha blitting onto the display surface.
-  #  The new surface will always have an alpha channel.
-  #
-  #  If you want to take advantage of hardware colorkey or alpha blit
-  #  acceleration, you should set the colorkey and alpha value before
-  #  calling this function.
-  #
-  #  If the conversion fails or runs out of memory, it returns NULL
-proc SDL_DisplayFormatAlpha*(surface: PSDL_Surface): PSDL_Surface{.cdecl,
-    importc, dynlib: SDLLibName.}
-  #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-  #* YUV video surface overlay functions                                       */
-  #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-  # This function creates a video output overlay
-  #  Calling the returned surface an overlay is something of a misnomer because
-  #  the contents of the display surface underneath the area where the overlay
-  #  is shown is undefined - it may be overwritten with the converted YUV data.
-proc SDL_CreateYUVOverlay*(width: int, height: int, format: UInt32,
-                           display: PSDL_Surface): PSDL_Overlay{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Lock an overlay for direct access, and unlock it when you are done
-proc SDL_LockYUVOverlay*(Overlay: PSDL_Overlay): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_UnlockYUVOverlay*(Overlay: PSDL_Overlay){.cdecl, importc, dynlib: SDLLibName.}
-  # Blit a video overlay to the display surface.
-  #  The contents of the video surface underneath the blit destination are
-  #  not defined.
-  #  The width and height of the destination rectangle may be different from
-  #  that of the overlay, but currently only 2x scaling is supported.
-proc SDL_DisplayYUVOverlay*(Overlay: PSDL_Overlay, dstrect: PSDL_Rect): int{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Free a video overlay
-proc SDL_FreeYUVOverlay*(Overlay: PSDL_Overlay){.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # OpenGL Routines
-  #------------------------------------------------------------------------------
-  # Dynamically load a GL driver, if SDL is built with dynamic GL.
-  #
-  #  SDL links normally with the OpenGL library on your system by default,
-  #  but you can compile it to dynamically load the GL driver at runtime.
-  #  If you do this, you need to retrieve all of the GL functions used in
-  #  your program from the dynamic library using SDL_GL_GetProcAddress().
-  #
-  #  This is disabled in default builds of SDL.
-proc SDL_GL_LoadLibrary*(filename: cstring): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the address of a GL function (for extension functions)
-proc SDL_GL_GetProcAddress*(procname: cstring): Pointer{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Set an attribute of the OpenGL subsystem before intialization.
-proc SDL_GL_SetAttribute*(attr: TSDL_GLAttr, value: int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get an attribute of the OpenGL subsystem from the windowing
-  #  interface, such as glX. This is of course different from getting
-  #  the values from SDL's internal OpenGL subsystem, which only
-  #  stores the values you request before initialization.
-  #
-  #  Developers should track the values they pass into SDL_GL_SetAttribute
-  #  themselves if they want to retrieve these values.
-proc SDL_GL_GetAttribute*(attr: TSDL_GLAttr, value: var int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Swap the OpenGL buffers, if double-buffering is supported.
-proc SDL_GL_SwapBuffers*(){.cdecl, importc, dynlib: SDLLibName.}
-  # Internal functions that should not be called unless you have read
-  #  and understood the source code for these functions.
-proc SDL_GL_UpdateRects*(numrects: int, rects: PSDL_Rect){.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_GL_Lock*(){.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_GL_Unlock*(){.cdecl, importc, dynlib: SDLLibName.}
-  #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  #* These functions allow interaction with the window manager, if any.        *
-  #* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Sets/Gets the title and icon text of the display window
-proc SDL_WM_GetCaption*(title: var cstring, icon: var cstring){.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_WM_SetCaption*(title: cstring, icon: cstring){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Sets the icon for the display window.
-  #  This function must be called before the first call to SDL_SetVideoMode().
-  #  It takes an icon surface, and a mask in MSB format.
-  #  If 'mask' is NULL, the entire icon surface will be used as the icon.
-proc SDL_WM_SetIcon*(icon: PSDL_Surface, mask: UInt8){.cdecl, importc, dynlib: SDLLibName.}
-  # This function iconifies the window, and returns 1 if it succeeded.
-  #  If the function succeeds, it generates an SDL_APPACTIVE loss event.
-  #  This function is a noop and returns 0 in non-windowed environments.
-proc SDL_WM_IconifyWindow*(): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Toggle fullscreen mode without changing the contents of the screen.
-  #  If the display surface does not require locking before accessing
-  #  the pixel information, then the memory pointers will not change.
-  #
-  #  If this function was able to toggle fullscreen mode (change from
-  #  running in a window to fullscreen, or vice-versa), it will return 1.
-  #  If it is not implemented, or fails, it returns 0.
-  #
-  #  The next call to SDL_SetVideoMode() will set the mode fullscreen
-  #  attribute based on the flags parameter - if SDL_FULLSCREEN is not
-  #  set, then the display will be windowed by default where supported.
-  #
-  #  This is currently only implemented in the X11 video driver.
-proc SDL_WM_ToggleFullScreen*(surface: PSDL_Surface): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Grabbing means that the mouse is confined to the application window,
-  #  and nearly all keyboard input is passed directly to the application,
-  #  and not interpreted by a window manager, if any.
-proc SDL_WM_GrabInput*(mode: TSDL_GrabMode): TSDL_GrabMode{.cdecl,
-    importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # mouse-routines
-  #------------------------------------------------------------------------------
-  # Retrieve the current state of the mouse.
-  #  The current button state is returned as a button bitmask, which can
-  #  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
-  #  current mouse cursor position.  You can pass NULL for either x or y.
-proc SDL_GetMouseState*(x: var int, y: var int): UInt8{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Retrieve the current state of the mouse.
-  #  The current button state is returned as a button bitmask, which can
-  #  be tested using the SDL_BUTTON(X) macros, and x and y are set to the
-  #  mouse deltas since the last call to SDL_GetRelativeMouseState().
-proc SDL_GetRelativeMouseState*(x: var int, y: var int): UInt8{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Set the position of the mouse cursor (generates a mouse motion event)
-proc SDL_WarpMouse*(x, y: UInt16){.cdecl, importc, dynlib: SDLLibName.}
-  # Create a cursor using the specified data and mask (in MSB format).
-  #  The cursor width must be a multiple of 8 bits.
-  #
-  #  The cursor is created in black and white according to the following:
-  #  data  mask    resulting pixel on screen
-  #   0     1       White
-  #   1     1       Black
-  #   0     0       Transparent
-  #   1     0       Inverted color if possible, black if not.
-  #
-  #  Cursors created with this function must be freed with SDL_FreeCursor().
-proc SDL_CreateCursor*(data, mask: PUInt8, w, h, hot_x, hot_y: int): PSDL_Cursor{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # Set the currently active cursor to the specified one.
-  #  If the cursor is currently visible, the change will be immediately
-  #  represented on the display.
-proc SDL_SetCursor*(cursor: PSDL_Cursor){.cdecl, importc, dynlib: SDLLibName.}
-  # Returns the currently active cursor.
-proc SDL_GetCursor*(): PSDL_Cursor{.cdecl, importc, dynlib: SDLLibName.}
-  # Deallocates a cursor created with SDL_CreateCursor().
-proc SDL_FreeCursor*(cursor: PSDL_Cursor){.cdecl, importc, dynlib: SDLLibName.}
-  # Toggle whether or not the cursor is shown on the screen.
-  #  The cursor start off displayed, but can be turned off.
-  #  SDL_ShowCursor() returns 1 if the cursor was being displayed
-  #  before the call, or 0 if it was not.  You can query the current
-  #  state by passing a 'toggle' value of -1.
-proc SDL_ShowCursor*(toggle: int): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_BUTTON*(Button: int): int
-  #------------------------------------------------------------------------------
-  # Keyboard-routines
-  #------------------------------------------------------------------------------
-  # Enable/Disable UNICODE translation of keyboard input.
-  #  This translation has some overhead, so translation defaults off.
-  #  If 'enable' is 1, translation is enabled.
-  #  If 'enable' is 0, translation is disabled.
-  #  If 'enable' is -1, the translation state is not changed.
-  #  It returns the previous state of keyboard translation.
-proc SDL_EnableUNICODE*(enable: int): int{.cdecl, importc, dynlib: SDLLibName.}
-  # If 'delay' is set to 0, keyboard repeat is disabled.
-proc SDL_EnableKeyRepeat*(delay: int, interval: int): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-proc SDL_GetKeyRepeat*(delay: PInteger, interval: PInteger){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get a snapshot of the current state of the keyboard.
-  #  Returns an array of keystates, indexed by the SDLK_* syms.
-  #  Used:
-  #
-  #  UInt8 *keystate = SDL_GetKeyState(NULL);
-  #  if ( keystate[SDLK_RETURN] ) ... <RETURN> is pressed
-proc SDL_GetKeyState*(numkeys: PInt): PUInt8{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the current key modifier state
-proc SDL_GetModState*(): TSDLMod{.cdecl, importc, dynlib: SDLLibName.}
-  # Set the current key modifier state
-  #  This does not change the keyboard state, only the key modifier flags.
-proc SDL_SetModState*(modstate: TSDLMod){.cdecl, importc, dynlib: SDLLibName.}
-  # Get the name of an SDL virtual keysym
-proc SDL_GetKeyName*(key: TSDLKey): cstring{.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # Active Routines
-  #------------------------------------------------------------------------------
-  # This function returns the current state of the application, which is a
-  #  bitwise combination of SDL_APPMOUSEFOCUS, SDL_APPINPUTFOCUS, and
-  #  SDL_APPACTIVE.  If SDL_APPACTIVE is set, then the user is able to
-  #  see your application, otherwise it has been iconified or disabled.
-proc SDL_GetAppState*(): UInt8{.cdecl, importc, dynlib: SDLLibName.}
-  # Mutex functions
-  # Create a mutex, initialized unlocked
-proc SDL_CreateMutex*(): PSDL_Mutex{.cdecl, importc, dynlib: SDLLibName.}
-  # Lock the mutex  (Returns 0, or -1 on error)
-proc SDL_mutexP*(mutex: PSDL_mutex): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_LockMutex*(mutex: PSDL_mutex): int
-  # Unlock the mutex  (Returns 0, or -1 on error)
-proc SDL_mutexV*(mutex: PSDL_mutex): int{.cdecl, importc, dynlib: SDLLibName.}
-proc SDL_UnlockMutex*(mutex: PSDL_mutex): int
-  # Destroy a mutex
-proc SDL_DestroyMutex*(mutex: PSDL_mutex){.cdecl, importc, dynlib: SDLLibName.}
-  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Semaphore functions
-  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Create a semaphore, initialized with value, returns NULL on failure.
-proc SDL_CreateSemaphore*(initial_value: UInt32): PSDL_Sem{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Destroy a semaphore
-proc SDL_DestroySemaphore*(sem: PSDL_sem){.cdecl, importc, dynlib: SDLLibName.}
-  # This function suspends the calling thread until the semaphore pointed
-  #  to by sem has a positive count. It then atomically decreases the semaphore
-  #  count.
-proc SDL_SemWait*(sem: PSDL_sem): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Non-blocking variant of SDL_SemWait(), returns 0 if the wait succeeds,
-  #   SDL_MUTEX_TIMEDOUT if the wait would block, and -1 on error.
-proc SDL_SemTryWait*(sem: PSDL_sem): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Variant of SDL_SemWait() with a timeout in milliseconds, returns 0 if
-  #   the wait succeeds, SDL_MUTEX_TIMEDOUT if the wait does not succeed in
-  #   the allotted time, and -1 on error.
-  #   On some platforms this function is implemented by looping with a delay
-  #   of 1 ms, and so should be avoided if possible.
-proc SDL_SemWaitTimeout*(sem: PSDL_sem, ms: UInt32): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Atomically increases the semaphore's count (not blocking), returns 0,
-  #   or -1 on error.
-proc SDL_SemPost*(sem: PSDL_sem): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Returns the current count of the semaphore
-proc SDL_SemValue*(sem: PSDL_sem): UInt32{.cdecl, importc, dynlib: SDLLibName.}
-  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Condition variable functions
-  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Create a condition variable
-proc SDL_CreateCond*(): PSDL_Cond{.cdecl, importc, dynlib: SDLLibName.}
-  # Destroy a condition variable
-proc SDL_DestroyCond*(cond: PSDL_Cond){.cdecl, importc, dynlib: SDLLibName.}
-  # Restart one of the threads that are waiting on the condition variable,
-  #   returns 0 or -1 on error.
-proc SDL_CondSignal*(cond: PSDL_cond): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Restart all threads that are waiting on the condition variable,
-  #  returns 0 or -1 on error.
-proc SDL_CondBroadcast*(cond: PSDL_cond): int{.cdecl, importc, dynlib: SDLLibName.}
-  # Wait on the condition variable, unlocking the provided mutex.
-  #  The mutex must be locked before entering this function!
-  #  Returns 0 when it is signaled, or -1 on error.
-proc SDL_CondWait*(cond: PSDL_cond, mut: PSDL_mutex): int{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Waits for at most 'ms' milliseconds, and returns 0 if the condition
-  #  variable is signaled, SDL_MUTEX_TIMEDOUT if the condition is not
-  #  signaled in the allotted time, and -1 on error.
-  #  On some platforms this function is implemented by looping with a delay
-  #  of 1 ms, and so should be avoided if possible.
-proc SDL_CondWaitTimeout*(cond: PSDL_cond, mut: PSDL_mutex, ms: UInt32): int{.
-    cdecl, importc, dynlib: SDLLibName.}
-  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Condition variable functions
-  # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-  # Create a thread
-proc SDL_CreateThread*(fn: PInt, data: Pointer): PSDL_Thread{.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Get the 32-bit thread identifier for the current thread
-proc SDL_ThreadID*(): UInt32{.cdecl, importc, dynlib: SDLLibName.}
-  # Get the 32-bit thread identifier for the specified thread,
-  #  equivalent to SDL_ThreadID() if the specified thread is NULL.
-proc SDL_GetThreadID*(thread: PSDL_Thread): UInt32{.cdecl, importc, dynlib: SDLLibName.}
-  # Wait for a thread to finish.
-  #  The return code for the thread function is placed in the area
-  #  pointed to by 'status', if 'status' is not NULL.
-proc SDL_WaitThread*(thread: PSDL_Thread, status: var int){.cdecl,
-    importc, dynlib: SDLLibName.}
-  # Forcefully kill a thread without worrying about its state
-proc SDL_KillThread*(thread: PSDL_Thread){.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  # Get Environment Routines
-  #------------------------------------------------------------------------------
-  #*
-  # * This function gives you custom hooks into the window manager information.
-  # * It fills the structure pointed to by 'info' with custom information and
-  # * returns 1 if the function is implemented.  If it's not implemented, or
-  # * the version member of the 'info' structure is invalid, it returns 0.
-  # *
-proc SDL_GetWMInfo*(info: PSDL_SysWMinfo): int{.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-  #SDL_loadso.h
-  #* This function dynamically loads a shared object and returns a pointer
-  # * to the object handle (or NULL if there was an error).
-  # * The 'sofile' parameter is a system dependent name of the object file.
-  # *
-proc SDL_LoadObject*(sofile: cstring): Pointer{.cdecl, importc, dynlib: SDLLibName.}
-  #* Given an object handle, this function looks up the address of the
-  # * named function in the shared object and returns it.  This address
-  # * is no longer valid after calling SDL_UnloadObject().
-  # *
-proc SDL_LoadFunction*(handle: Pointer, name: cstring): Pointer{.cdecl,
-    importc, dynlib: SDLLibName.}
-  #* Unload a shared object from memory *
-proc SDL_UnloadObject*(handle: Pointer){.cdecl, importc, dynlib: SDLLibName.}
-  #------------------------------------------------------------------------------
-proc SDL_Swap32*(D: Uint32): Uint32
-  # Bitwise Checking functions
-proc IsBitOn*(value: int, bit: int8): bool
-proc TurnBitOn*(value: int, bit: int8): int
-proc TurnBitOff*(value: int, bit: int8): int
-# implementation
-
-proc SDL_TABLESIZE(table: cstring): int =
-  Result = SizeOf(table) div SizeOf(table[0])
-
-proc SDL_OutOfMemory() =
-  when not(defined(WINDOWS)): SDL_Error(SDL_ENOMEM)
-
-proc SDL_RWSeek(context: PSDL_RWops, offset: int, whence: int): int =
-  Result = context.seek(context, offset, whence)
-
-proc SDL_RWTell(context: PSDL_RWops): int =
-  Result = context.seek(context, 0, 1)
-
-proc SDL_RWRead(context: PSDL_RWops, theptr: Pointer, size: int, n: int): int =
-  Result = context.read(context, theptr, size, n)
-
-proc SDL_RWWrite(context: PSDL_RWops, theptr: Pointer, size: int, n: int): int =
-  Result = context.write(context, theptr, size, n)
-
-proc SDL_RWClose(context: PSDL_RWops): int =
-  Result = context.closeFile(context)
-
-proc SDL_LoadWAV(filename: cstring, spec: PSDL_AudioSpec, audio_buf: PUInt8,
-                 audiolen: PUInt32): PSDL_AudioSpec =
-  Result = SDL_LoadWAV_RW(SDL_RWFromFile(filename, "rb"), 1, spec, audio_buf,
-                          audiolen)
-
-proc SDL_CDInDrive(status: TSDL_CDStatus): bool =
-  Result = ord(status) > ord(CD_ERROR)
-
-proc FRAMES_TO_MSF(frames: int, M: var int, S: var int, F: var int) =
-  var value: int
-  value = frames
-  F = value mod CD_FPS
-  value = value div CD_FPS
-  S = value mod 60
-  value = value div 60
-  M = value
-
-proc MSF_TO_FRAMES(M: int, S: int, F: int): int =
-  Result = M * 60 * CD_FPS + S * CD_FPS + F
-
-proc SDL_VERSION(X: var TSDL_Version) =
-  X.major = SDL_MAJOR_VERSION
-  X.minor = SDL_MINOR_VERSION
-  X.patch = SDL_PATCHLEVEL
-
-proc SDL_VERSIONNUM(X, Y, Z: int): int =
-  Result = X * 1000 + Y * 100 + Z
-
-proc SDL_COMPILEDVERSION(): int =
-  Result = SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
-
-proc SDL_VERSION_ATLEAST(X, Y, Z: int): bool =
-  Result = (SDL_COMPILEDVERSION() >= SDL_VERSIONNUM(X, Y, Z))
-
-proc SDL_LoadBMP(filename: cstring): PSDL_Surface =
-  Result = SDL_LoadBMP_RW(SDL_RWFromFile(filename, "rb"), 1)
-
-proc SDL_SaveBMP(surface: PSDL_Surface, filename: cstring): int =
-  Result = SDL_SaveBMP_RW(surface, SDL_RWFromFile(filename, "wb"), 1)
-
-proc SDL_BlitSurface(src: PSDL_Surface, srcrect: PSDL_Rect, dst: PSDL_Surface,
-                     dstrect: PSDL_Rect): int =
-  Result = SDL_UpperBlit(src, srcrect, dst, dstrect)
-
-proc SDL_AllocSurface(flags: UInt32, width, height, depth: int,
-                      RMask, GMask, BMask, AMask: UInt32): PSDL_Surface =
-  Result = SDL_CreateRGBSurface(flags, width, height, depth, RMask, GMask,
-                                BMask, AMask)
-
-proc SDL_MustLock(Surface: PSDL_Surface): bool =
-  Result = ((surface^ .offset != 0) or
-      ((surface^ .flags and (SDL_HWSURFACE or SDL_ASYNCBLIT or SDL_RLEACCEL)) !=
-      0))
-
-proc SDL_LockMutex(mutex: PSDL_mutex): int =
-  Result = SDL_mutexP(mutex)
-
-proc SDL_UnlockMutex(mutex: PSDL_mutex): int =
-  Result = SDL_mutexV(mutex)
-
-proc SDL_BUTTON(Button: int): int =
-  Result = SDL_PRESSED shl (Button - 1)
-
-proc SDL_Swap32(D: Uint32): Uint32 =
-  Result = ((D shl 24) or ((D shl 8) and 0x00FF0000) or
-      ((D shr 8) and 0x0000FF00) or (D shr 24))
-
-proc IsBitOn(value: int, bit: int8): bool =
-  result = ((value and (1 shl ze(bit))) != 0)
-
-proc TurnBitOn(value: int, bit: int8): int =
-  result = (value or (1 shl ze(bit)))
-
-proc TurnBitOff(value: int, bit: int8): int =
-  result = (value and not (1 shl ze(bit)))
diff --git a/lib/wrappers/sdl/sdl_gfx.nim b/lib/wrappers/sdl/sdl_gfx.nim
deleted file mode 100755
index 8ae8eca0b..000000000
--- a/lib/wrappers/sdl/sdl_gfx.nim
+++ /dev/null
@@ -1,421 +0,0 @@
-
-#
-#  $Id: sdl_gfx.pas,v 1.3 2007/05/29 21:31:04 savage Exp $
-#
-#
-#
-#  $Log: sdl_gfx.pas,v $
-#  Revision 1.3  2007/05/29 21:31:04  savage
-#  Changes as suggested by Almindor for 64bit compatibility.
-#
-#  Revision 1.2  2007/05/20 20:30:18  savage
-#  Initial Changes to Handle 64 Bits
-#
-#  Revision 1.1  2005/01/03 19:08:32  savage
-#  Header for the SDL_Gfx library.
-#
-#
-#
-#
-
-import
-  sdl
-
-when defined(windows):
-  const SDLgfxLibName = "SDL_gfx.dll"
-elif defined(macosx):
-  const SDLgfxLibName = "libSDL_gfx.dylib"
-else:
-  const SDLgfxLibName = "libSDL_gfx.so"
-
-const                         # Some rates in Hz
-  FPS_UPPER_LIMIT* = 200
-  FPS_LOWER_LIMIT* = 1
-  FPS_DEFAULT* = 30           # ---- Defines
-  SMOOTHING_OFF* = 0
-  SMOOTHING_ON* = 1
-
-type 
-  PFPSmanager* = ptr TFPSmanager
-  TFPSmanager*{.final.} = object  # ---- Structures
-    framecount*: Uint32
-    rateticks*: float32
-    lastticks*: Uint32
-    rate*: Uint32
-
-  PColorRGBA* = ptr TColorRGBA
-  TColorRGBA*{.final.} = object 
-    r*: Uint8
-    g*: Uint8
-    b*: Uint8
-    a*: Uint8
-
-  PColorY* = ptr TColorY
-  TColorY*{.final.} = object  #
-                              #
-                              # SDL_framerate: framerate manager
-                              #
-                              # LGPL (c) A. Schiffler
-                              #
-                              #
-    y*: Uint8
-
-
-proc SDL_initFramerate*(manager: PFPSmanager){.cdecl, importc, dynlib: SDLgfxLibName.}
-proc SDL_setFramerate*(manager: PFPSmanager, rate: int): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc SDL_getFramerate*(manager: PFPSmanager): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc SDL_framerateDelay*(manager: PFPSmanager){.cdecl, importc, dynlib: SDLgfxLibName.}
-  #
-  #
-  # SDL_gfxPrimitives: graphics primitives for SDL
-  #
-  # LGPL (c) A. Schiffler
-  #
-  #
-  # Note: all ___Color routines expect the color to be in format 0xRRGGBBAA 
-  # Pixel 
-proc pixelColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, color: Uint32): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-proc pixelRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, r: Uint8, g: Uint8, 
-                b: Uint8, a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Horizontal line 
-proc hlineColor*(dst: PSDL_Surface, x1: Sint16, x2: Sint16, y: Sint16, 
-                 color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc hlineRGBA*(dst: PSDL_Surface, x1: Sint16, x2: Sint16, y: Sint16, r: Uint8, 
-                g: Uint8, b: Uint8, a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Vertical line 
-proc vlineColor*(dst: PSDL_Surface, x: Sint16, y1: Sint16, y2: Sint16, 
-                 color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc vlineRGBA*(dst: PSDL_Surface, x: Sint16, y1: Sint16, y2: Sint16, r: Uint8, 
-                g: Uint8, b: Uint8, a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Rectangle 
-proc rectangleColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                     y2: Sint16, color: Uint32): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc rectangleRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                    y2: Sint16, r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # Filled rectangle (Box) 
-proc boxColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-               y2: Sint16, color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc boxRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, y2: Sint16, 
-              r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Line 
-proc lineColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                y2: Sint16, color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc lineRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-               y2: Sint16, r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # AA Line 
-proc aalineColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                  y2: Sint16, color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc aalineRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                 y2: Sint16, r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # Circle 
-proc circleColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, r: Sint16, 
-                  color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc circleRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, r: Uint8, 
-                 g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # AA Circle 
-proc aacircleColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, r: Sint16, 
-                    color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc aacircleRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, 
-                   r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Filled Circle 
-proc filledCircleColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, r: Sint16, 
-                        color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc filledCircleRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, 
-                       r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Ellipse 
-proc ellipseColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, rx: Sint16, 
-                   ry: Sint16, color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc ellipseRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rx: Sint16, 
-                  ry: Sint16, r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # AA Ellipse 
-proc aaellipseColor*(dst: PSDL_Surface, xc: Sint16, yc: Sint16, rx: Sint16, 
-                     ry: Sint16, color: Uint32): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc aaellipseRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rx: Sint16, 
-                    ry: Sint16, r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # Filled Ellipse 
-proc filledEllipseColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, rx: Sint16, 
-                         ry: Sint16, color: Uint32): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc filledEllipseRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rx: Sint16, 
-                        ry: Sint16, r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # Pie
-proc pieColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, 
-               start: Sint16, finish: Sint16, color: Uint32): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc pieRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, 
-              start: Sint16, finish: Sint16, r: Uint8, g: Uint8, b: Uint8, 
-              a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Filled Pie
-proc filledPieColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, 
-                     start: Sint16, finish: Sint16, color: Uint32): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc filledPieRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, rad: Sint16, 
-                    start: Sint16, finish: Sint16, r: Uint8, g: Uint8, b: Uint8, 
-                    a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Trigon
-proc trigonColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                  y2: Sint16, x3: Sint16, y3: Sint16, color: Uint32): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-proc trigonRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                 y2: Sint16, x3: Sint16, y3: Sint16, r: Uint8, g: Uint8, 
-                 b: Uint8, a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # AA-Trigon
-proc aatrigonColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                    y2: Sint16, x3: Sint16, y3: Sint16, color: Uint32): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-proc aatrigonRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                   y2: Sint16, x3: Sint16, y3: Sint16, r: Uint8, g: Uint8, 
-                   b: Uint8, a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Filled Trigon
-proc filledTrigonColor*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                        y2: Sint16, x3: Sint16, y3: Sint16, color: Uint32): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-proc filledTrigonRGBA*(dst: PSDL_Surface, x1: Sint16, y1: Sint16, x2: Sint16, 
-                       y2: Sint16, x3: Sint16, y3: Sint16, r: Uint8, g: Uint8, 
-                       b: Uint8, a: Uint8): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Polygon
-proc polygonColor*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, 
-                   color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc polygonRGBA*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, r: Uint8, 
-                  g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # AA-Polygon
-proc aapolygonColor*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, 
-                     color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc aapolygonRGBA*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, 
-                    r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Filled Polygon
-proc filledPolygonColor*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, 
-                         color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc filledPolygonRGBA*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, 
-                        r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Bezier
-  # s = number of steps
-proc bezierColor*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, s: int, 
-                  color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc bezierRGBA*(dst: PSDL_Surface, vx: PSint16, vy: PSint16, n: int, s: int, 
-                 r: Uint8, g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Characters/Strings
-proc characterColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, c: char, 
-                     color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc characterRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, c: char, r: Uint8, 
-                    g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc stringColor*(dst: PSDL_Surface, x: Sint16, y: Sint16, c: cstring, 
-                  color: Uint32): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc stringRGBA*(dst: PSDL_Surface, x: Sint16, y: Sint16, c: cstring, r: Uint8, 
-                 g: Uint8, b: Uint8, a: Uint8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-proc gfxPrimitivesSetFont*(fontdata: Pointer, cw: int, ch: int){.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #
-  #
-  # SDL_imageFilter - bytes-image "filter" routines
-  # (uses inline x86 MMX optimizations if available)
-  #
-  # LGPL (c) A. Schiffler
-  #
-  #
-  # Comments:                                                                           
-  #  1.) MMX functions work best if all data blocks are aligned on a 32 bytes boundary. 
-  #  2.) Data that is not within an 8 byte boundary is processed using the C routine.   
-  #  3.) Convolution routines do not have C routines at this time.                      
-  # Detect MMX capability in CPU
-proc SDL_imageFilterMMXdetect*(): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  # Force use of MMX off (or turn possible use back on)
-proc SDL_imageFilterMMXoff*(){.cdecl, importc, dynlib: SDLgfxLibName.}
-proc SDL_imageFilterMMXon*(){.cdecl, importc, dynlib: SDLgfxLibName.}
-  #
-  # All routines return:
-  #   0   OK
-  #  -1   Error (internal error, parameter error)
-  #
-  #  SDL_imageFilterAdd: D = saturation255(S1 + S2)
-proc SDL_imageFilterAdd*(Src1: cstring, Src2: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterMean: D = S1/2 + S2/2
-proc SDL_imageFilterMean*(Src1: cstring, Src2: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterSub: D = saturation0(S1 - S2)
-proc SDL_imageFilterSub*(Src1: cstring, Src2: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterAbsDiff: D = | S1 - S2 |
-proc SDL_imageFilterAbsDiff*(Src1: cstring, Src2: cstring, Dest: cstring, 
-                             len: int): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterMult: D = saturation(S1 * S2)
-proc SDL_imageFilterMult*(Src1: cstring, Src2: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterMultNor: D = S1 * S2   (non-MMX)
-proc SDL_imageFilterMultNor*(Src1: cstring, Src2: cstring, Dest: cstring, 
-                             len: int): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterMultDivby2: D = saturation255(S1/2 * S2)
-proc SDL_imageFilterMultDivby2*(Src1: cstring, Src2: cstring, Dest: cstring, 
-                                len: int): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterMultDivby4: D = saturation255(S1/2 * S2/2)
-proc SDL_imageFilterMultDivby4*(Src1: cstring, Src2: cstring, Dest: cstring, 
-                                len: int): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterBitAnd: D = S1 & S2
-proc SDL_imageFilterBitAnd*(Src1: cstring, Src2: cstring, Dest: cstring, 
-                            len: int): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterBitOr: D = S1 | S2
-proc SDL_imageFilterBitOr*(Src1: cstring, Src2: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterDiv: D = S1 / S2   (non-MMX)
-proc SDL_imageFilterDiv*(Src1: cstring, Src2: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterBitNegation: D = !S
-proc SDL_imageFilterBitNegation*(Src1: cstring, Dest: cstring, len: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterAddByte: D = saturation255(S + C)
-proc SDL_imageFilterAddByte*(Src1: cstring, Dest: cstring, len: int, C: char): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterAddUint: D = saturation255(S + (uint)C)
-proc SDL_imageFilterAddUint*(Src1: cstring, Dest: cstring, len: int, C: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterAddByteToHalf: D = saturation255(S/2 + C)
-proc SDL_imageFilterAddByteToHalf*(Src1: cstring, Dest: cstring, len: int, 
-                                   C: char): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterSubByte: D = saturation0(S - C)
-proc SDL_imageFilterSubByte*(Src1: cstring, Dest: cstring, len: int, C: char): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterSubUint: D = saturation0(S - (uint)C)
-proc SDL_imageFilterSubUint*(Src1: cstring, Dest: cstring, len: int, C: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterShiftRight: D = saturation0(S >> N)
-proc SDL_imageFilterShiftRight*(Src1: cstring, Dest: cstring, len: int, N: char): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterShiftRightUint: D = saturation0((uint)S >> N)
-proc SDL_imageFilterShiftRightUint*(Src1: cstring, Dest: cstring, len: int, 
-                                    N: char): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterMultByByte: D = saturation255(S * C)
-proc SDL_imageFilterMultByByte*(Src1: cstring, Dest: cstring, len: int, C: char): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterShiftRightAndMultByByte: D = saturation255((S >> N) * C)
-proc SDL_imageFilterShiftRightAndMultByByte*(Src1: cstring, Dest: cstring, 
-    len: int, N: char, C: char): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterShiftLeftByte: D = (S << N)
-proc SDL_imageFilterShiftLeftByte*(Src1: cstring, Dest: cstring, len: int, 
-                                   N: char): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterShiftLeftUint: D = ((uint)S << N)
-proc SDL_imageFilterShiftLeftUint*(Src1: cstring, Dest: cstring, len: int, 
-                                   N: char): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterShiftLeft: D = saturation255(S << N)
-proc SDL_imageFilterShiftLeft*(Src1: cstring, Dest: cstring, len: int, N: char): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterBinarizeUsingThreshold: D = S >= T ? 255:0
-proc SDL_imageFilterBinarizeUsingThreshold*(Src1: cstring, Dest: cstring, 
-    len: int, T: char): int{.cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterClipToRange: D = (S >= Tmin) & (S <= Tmax) 255:0
-proc SDL_imageFilterClipToRange*(Src1: cstring, Dest: cstring, len: int, 
-                                 Tmin: int8, Tmax: int8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterNormalizeLinear: D = saturation255((Nmax - Nmin)/(Cmax - Cmin)*(S - Cmin) + Nmin)
-proc SDL_imageFilterNormalizeLinear*(Src1: cstring, Dest: cstring, len: int, 
-                                     Cmin: int, Cmax: int, Nmin: int, Nmax: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # !!! NO C-ROUTINE FOR THESE FUNCTIONS YET !!! 
-  #  SDL_imageFilterConvolveKernel3x3Divide: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel3x3Divide*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, Divisor: int8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel5x5Divide: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel5x5Divide*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, Divisor: int8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel7x7Divide: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel7x7Divide*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, Divisor: int8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel9x9Divide: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel9x9Divide*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, Divisor: int8): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel3x3ShiftRight: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel3x3ShiftRight*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, NRightShift: char): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel5x5ShiftRight: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel5x5ShiftRight*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, NRightShift: char): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel7x7ShiftRight: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel7x7ShiftRight*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, NRightShift: char): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterConvolveKernel9x9ShiftRight: Dij = saturation0and255( ... )
-proc SDL_imageFilterConvolveKernel9x9ShiftRight*(Src: cstring, Dest: cstring, 
-    rows: int, columns: int, Kernel: PShortInt, NRightShift: char): int{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterSobelX: Dij = saturation255( ... )
-proc SDL_imageFilterSobelX*(Src: cstring, Dest: cstring, rows: int, columns: int): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  #  SDL_imageFilterSobelXShiftRight: Dij = saturation255( ... )
-proc SDL_imageFilterSobelXShiftRight*(Src: cstring, Dest: cstring, rows: int, 
-                                      columns: int, NRightShift: char): int{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # Align/restore stack to 32 byte boundary -- Functionality untested! --
-proc SDL_imageFilterAlignStack*(){.cdecl, importc, dynlib: SDLgfxLibName.}
-proc SDL_imageFilterRestoreStack*(){.cdecl, importc, dynlib: SDLgfxLibName.}
-  #
-  #
-  # SDL_rotozoom - rotozoomer
-  #
-  # LGPL (c) A. Schiffler
-  #
-  #
-  # 
-  # 
-  # rotozoomSurface()
-  #
-  # Rotates and zoomes a 32bit or 8bit 'src' surface to newly created 'dst' surface.
-  # 'angle' is the rotation in degrees. 'zoom' a scaling factor. If 'smooth' is 1
-  # then the destination 32bit surface is anti-aliased. If the surface is not 8bit
-  # or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly.
-  #
-  #
-proc rotozoomSurface*(src: PSDL_Surface, angle: float64, zoom: float64, 
-                      smooth: int): PSDL_Surface{.cdecl, importc, dynlib: SDLgfxLibName.}
-proc rotozoomSurfaceXY*(src: PSDL_Surface, angle: float64, zoomx: float64, 
-                        zoomy: float64, smooth: int): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-  # Returns the size of the target surface for a rotozoomSurface() call 
-proc rotozoomSurfaceSize*(width: int, height: int, angle: float64, 
-                          zoom: float64, dstwidth: var int, dstheight: var int){.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-proc rotozoomSurfaceSizeXY*(width: int, height: int, angle: float64, 
-                            zoomx: float64, zoomy: float64, dstwidth: var int, 
-                            dstheight: var int){.cdecl, importc, dynlib: SDLgfxLibName.}
-  #
-  #
-  # zoomSurface()
-  #
-  # Zoomes a 32bit or 8bit 'src' surface to newly created 'dst' surface.
-  # 'zoomx' and 'zoomy' are scaling factors for width and height. If 'smooth' is 1
-  # then the destination 32bit surface is anti-aliased. If the surface is not 8bit
-  # or 32bit RGBA/ABGR it will be converted into a 32bit RGBA format on the fly.
-  #
-  #
-proc zoomSurface*(src: PSDL_Surface, zoomx: float64, zoomy: float64, smooth: int): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLgfxLibName.}
-  # Returns the size of the target surface for a zoomSurface() call 
-proc zoomSurfaceSize*(width: int, height: int, zoomx: float64, zoomy: float64, 
-                      dstwidth: var int, dstheight: var int){.cdecl, 
-    importc, dynlib: SDLgfxLibName.}
-# implementation
diff --git a/lib/wrappers/sdl/sdl_image.nim b/lib/wrappers/sdl/sdl_image.nim
deleted file mode 100755
index a15afd575..000000000
--- a/lib/wrappers/sdl/sdl_image.nim
+++ /dev/null
@@ -1,227 +0,0 @@
-
-#
-#  $Id: sdl_image.pas,v 1.14 2007/05/29 21:31:13 savage Exp $
-#  
-#
-#******************************************************************************
-#                                                                              
-#       Borland Delphi SDL_Image - An example image loading library for use    
-#                                  with SDL                                    
-#       Conversion of the Simple DirectMedia Layer Image Headers               
-#                                                                              
-# Portions created by Sam Lantinga <slouken@devolution.com> are                
-# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga                     
-# 5635-34 Springhouse Dr.                                                      
-# Pleasanton, CA 94588 (USA)                                                   
-#                                                                              
-# All Rights Reserved.                                                         
-#                                                                              
-# The original files are : SDL_image.h                                         
-#                                                                              
-# The initial developer of this Pascal code was :                              
-# Matthias Thoma <ma.thoma@gmx.de>                                             
-#                                                                              
-# Portions created by Matthias Thoma are                                       
-# Copyright (C) 2000 - 2001 Matthias Thoma.                                    
-#                                                                              
-#                                                                              
-# Contributor(s)                                                               
-# --------------                                                               
-# Dominique Louis <Dominique@SavageSoftware.com.au>                            
-#                                                                              
-# Obtained through:                                                            
-# Joint Endeavour of Delphi Innovators ( Project JEDI )                        
-#                                                                              
-# You may retrieve the latest version of this file at the Project              
-# JEDI home page, located at http://delphi-jedi.org                            
-#                                                                              
-# The contents of this file are used with permission, subject to               
-# the Mozilla Public License Version 1.1 (the "License"); you may              
-# not use this file except in compliance with the License. You may             
-# obtain a copy of the License at                                              
-# http://www.mozilla.org/MPL/MPL-1.1.html                                      
-#                                                                              
-# Software distributed under the License is distributed on an                  
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               
-# implied. See the License for the specific language governing                 
-# rights and limitations under the License.                                    
-#                                                                              
-# Description                                                                  
-# -----------                                                                  
-#   A simple library to load images of various formats as SDL surfaces         
-#                                                                              
-# Requires                                                                     
-# --------                                                                     
-#   SDL.pas in your search path.                                               
-#                                                                              
-# Programming Notes                                                            
-# -----------------                                                            
-#   See the Aliens Demo on how to make use of this libaray                     
-#                                                                              
-# Revision History                                                             
-# ----------------                                                             
-#   April    02 2001 - MT : Initial Translation                                
-#                                                                              
-#   May      08 2001 - DL : Added ExternalSym derectives and copyright header  
-#                                                                              
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more     
-#                          Pascal compilers. Initial support is now included   
-#                          for GnuPascal, VirtualPascal, TMT and obviously     
-#                          continue support for Delphi Kylix and FreePascal.   
-#                                                                              
-#   April   08 2003 - MK : Aka Mr Kroket - Added Better FPC support            
-#                                                                              
-#   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction     
-#                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support              
-#                                                                              
-#   April   30 2003 - DL : under instruction from David Mears AKA              
-#                          Jason Siletto, I have added FPC Linux support.      
-#                          This was compiled with fpc 1.1, so remember to set  
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*   
-#                                                                              
-#
-#  $Log: sdl_image.pas,v $
-#  Revision 1.14  2007/05/29 21:31:13  savage
-#  Changes as suggested by Almindor for 64bit compatibility.
-#
-#  Revision 1.13  2007/05/20 20:30:54  savage
-#  Initial Changes to Handle 64 Bits
-#
-#  Revision 1.12  2006/12/02 00:14:40  savage
-#  Updated to latest version
-#
-#  Revision 1.11  2005/04/10 18:22:59  savage
-#  Changes as suggested by Michalis, thanks.
-#
-#  Revision 1.10  2005/04/10 11:48:33  savage
-#  Changes as suggested by Michalis, thanks.
-#
-#  Revision 1.9  2005/01/05 01:47:07  savage
-#  Changed LibName to reflect what MacOS X should have. ie libSDL*-1.2.0.dylib respectively.
-#
-#  Revision 1.8  2005/01/04 23:14:44  savage
-#  Changed LibName to reflect what most Linux distros will have. ie libSDL*-1.2.so.0 respectively.
-#
-#  Revision 1.7  2005/01/01 02:03:12  savage
-#  Updated to v1.2.4
-#
-#  Revision 1.6  2004/08/14 22:54:30  savage
-#  Updated so that Library name defines are correctly defined for MacOS X.
-#
-#  Revision 1.5  2004/05/10 14:10:04  savage
-#  Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ).
-#
-#  Revision 1.4  2004/04/13 09:32:08  savage
-#  Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary.
-#
-#  Revision 1.3  2004/04/01 20:53:23  savage
-#  Changed Linux Shared Object names so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site.
-#
-#  Revision 1.2  2004/03/30 20:23:28  savage
-#  Tidied up use of UNIX compiler directive.
-#
-#  Revision 1.1  2004/02/14 23:35:42  savage
-#  version 1 of sdl_image, sdl_mixer and smpeg.
-#
-#
-#
-#******************************************************************************
-
-import
-  sdl
-
-when defined(windows):
-  const SDL_ImageLibName = "SDL_Image.dll"
-elif defined(macosx):
-  const SDL_ImageLibName = "libSDL_image-1.2.0.dylib"
-else:
-  const SDL_ImageLibName = "libSDL_image.so"
-
-const
-  SDL_IMAGE_MAJOR_VERSION* = 1'i8
-  SDL_IMAGE_MINOR_VERSION* = 2'i8
-  SDL_IMAGE_PATCHLEVEL* = 5'i8
-  
-# This macro can be used to fill a version structure with the compile-time
-#  version of the SDL_image library. 
-
-proc SDL_IMAGE_VERSION*(X: var TSDL_Version)
-  # This function gets the version of the dynamically linked SDL_image library.
-  #   it should NOT be used to fill a version structure, instead you should
-  #   use the SDL_IMAGE_VERSION() macro.
-  # 
-proc IMG_Linked_Version*(): PSDL_version{.importc, dynlib: SDL_ImageLibName.}
-  # Load an image from an SDL data source.
-  #   The 'type' may be one of: "BMP", "GIF", "PNG", etc.
-  #
-  #   If the image format supports a transparent pixel, SDL will set the
-  #   colorkey for the surface.  You can enable RLE acceleration on the
-  #   surface afterwards by calling:
-  #        SDL_SetColorKey(image, SDL_RLEACCEL, image.format.colorkey);
-  #
-proc IMG_LoadTyped_RW*(src: PSDL_RWops, freesrc: int, theType: cstring): PSDL_Surface{.
-    cdecl, importc, dynlib: SDL_ImageLibName.}
-  # Convenience functions 
-proc IMG_Load*(theFile: cstring): PSDL_Surface{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_Load_RW*(src: PSDL_RWops, freesrc: int): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-  # Invert the alpha of a surface for use with OpenGL
-  #  This function is now a no-op, and only provided for backwards compatibility. 
-proc IMG_InvertAlpha*(theOn: int): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-  # Functions to detect a file type, given a seekable source 
-proc IMG_isBMP*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isGIF*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isJPG*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isLBM*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isPCX*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isPNG*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isPNM*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isTIF*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isXCF*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isXPM*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-proc IMG_isXV*(src: PSDL_RWops): int{.cdecl, importc, dynlib: SDL_ImageLibName.}
-  # Individual loading functions 
-proc IMG_LoadBMP_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadGIF_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadJPG_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadLBM_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadPCX_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadPNM_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadPNG_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadTGA_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadTIF_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadXCF_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadXPM_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_LoadXV_RW*(src: PSDL_RWops): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-proc IMG_ReadXPMFromArray*(xpm: cstringArray): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDL_ImageLibName.}
-  # Error Macros 
-  # We'll use SDL for reporting errors 
-proc IMG_SetError*(fmt: cstring)
-proc IMG_GetError*(): cstring
-# implementation
-
-proc SDL_IMAGE_VERSION(X: var TSDL_Version) = 
-  X.major = SDL_IMAGE_MAJOR_VERSION
-  X.minor = SDL_IMAGE_MINOR_VERSION
-  X.patch = SDL_IMAGE_PATCHLEVEL
-
-proc IMG_SetError(fmt: cstring) = 
-  SDL_SetError(fmt)
-
-proc IMG_GetError(): cstring = 
-  result = SDL_GetError()
diff --git a/lib/wrappers/sdl/sdl_mixer.nim b/lib/wrappers/sdl/sdl_mixer.nim
deleted file mode 100755
index a17ef09d4..000000000
--- a/lib/wrappers/sdl/sdl_mixer.nim
+++ /dev/null
@@ -1,737 +0,0 @@
-
-#******************************************************************************
-#
-#  $Id: sdl_mixer.pas,v 1.18 2007/05/29 21:31:44 savage Exp $
-#
-#
-#
-#       Borland Delphi SDL_Mixer - Simple DirectMedia Layer Mixer Library
-#       Conversion of the Simple DirectMedia Layer Headers
-#
-# Portions created by Sam Lantinga <slouken@devolution.com> are
-# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
-# 5635-34 Springhouse Dr.
-# Pleasanton, CA 94588 (USA)
-#
-# All Rights Reserved.
-#
-# The original files are : SDL_mixer.h
-#                          music_cmd.h
-#                          wavestream.h
-#                          timidity.h
-#                          playmidi.h
-#                          music_ogg.h
-#                          mikmod.h
-#
-# The initial developer of this Pascal code was :
-# Dominqiue Louis <Dominique@SavageSoftware.com.au>
-#
-# Portions created by Dominqiue Louis are
-# Copyright (C) 2000 - 2001 Dominqiue Louis.
-#
-#
-# Contributor(s)
-# --------------
-# Matthias Thoma <ma.thoma@gmx.de>
-#
-# Obtained through:
-# Joint Endeavour of Delphi Innovators ( Project JEDI )
-#
-# You may retrieve the latest version of this file at the Project
-# JEDI home page, located at http://delphi-jedi.org
-#
-# The contents of this file are used with permission, subject to
-# the Mozilla Public License Version 1.1 (the "License"); you may
-# not use this file except in compliance with the License. You may
-# obtain a copy of the License at
-# http://www.mozilla.org/MPL/MPL-1.1.html
-#
-# Software distributed under the License is distributed on an
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# Description
-# -----------
-#
-#
-#
-#
-#
-#
-#
-# Requires
-# --------
-#   SDL.pas & SMPEG.pas somewhere within your search path.
-#
-# Programming Notes
-# -----------------
-#   See the Aliens Demo to see how this library is used
-#
-# Revision History
-# ----------------
-#   April    02 2001 - DL : Initial Translation
-#
-#  February  02 2002 - DL : Update to version 1.2.1
-#
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more
-#                          Pascal compilers. Initial support is now included
-#                          for GnuPascal, VirtualPascal, TMT and obviously
-#                          continue support for Delphi Kylix and FreePascal.
-#
-#   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction
-#                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support
-#
-#   April   30 2003 - DL : under instruction from David Mears AKA
-#                          Jason Siletto, I have added FPC Linux support.
-#                          This was compiled with fpc 1.1, so remember to set
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*
-#
-#
-#  $Log: sdl_mixer.pas,v $
-#  Revision 1.18  2007/05/29 21:31:44  savage
-#  Changes as suggested by Almindor for 64bit compatibility.
-#
-#  Revision 1.17  2007/05/20 20:31:17  savage
-#  Initial Changes to Handle 64 Bits
-#
-#  Revision 1.16  2006/12/02 00:16:17  savage
-#  Updated to latest version
-#
-#  Revision 1.15  2005/04/10 11:48:33  savage
-#  Changes as suggested by Michalis, thanks.
-#
-#  Revision 1.14  2005/02/24 20:20:07  savage
-#  Changed definition of MusicType and added GetMusicType function
-#
-#  Revision 1.13  2005/01/05 01:47:09  savage
-#  Changed LibName to reflect what MacOS X should have. ie libSDL*-1.2.0.dylib respectively.
-#
-#  Revision 1.12  2005/01/04 23:14:56  savage
-#  Changed LibName to reflect what most Linux distros will have. ie libSDL*-1.2.so.0 respectively.
-#
-#  Revision 1.11  2005/01/01 02:05:19  savage
-#  Updated to v1.2.6
-#
-#  Revision 1.10  2004/09/12 21:45:17  savage
-#  Robert Reed spotted that Mix_SetMusicPosition was missing from the conversion, so this has now been added.
-#
-#  Revision 1.9  2004/08/27 21:48:24  savage
-#  IFDEFed out Smpeg support on MacOS X
-#
-#  Revision 1.8  2004/08/14 22:54:30  savage
-#  Updated so that Library name defines are correctly defined for MacOS X.
-#
-#  Revision 1.7  2004/05/10 14:10:04  savage
-#  Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ).
-#
-#  Revision 1.6  2004/04/13 09:32:08  savage
-#  Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary.
-#
-#  Revision 1.5  2004/04/01 20:53:23  savage
-#  Changed Linux Shared Object names so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site.
-#
-#  Revision 1.4  2004/03/31 22:20:02  savage
-#  Windows unit not used in this file, so it was removed to keep the code tidy.
-#
-#  Revision 1.3  2004/03/31 10:05:08  savage
-#  Better defines for Endianess under FreePascal and Borland compilers.
-#
-#  Revision 1.2  2004/03/30 20:23:28  savage
-#  Tidied up use of UNIX compiler directive.
-#
-#  Revision 1.1  2004/02/14 23:35:42  savage
-#  version 1 of sdl_image, sdl_mixer and smpeg.
-#
-#
-#
-#******************************************************************************
-
-import
-  sdl, smpeg
-
-when defined(windows):
-  const SDL_MixerLibName = "SDL_mixer.dll"
-elif defined(macosx):
-  const SDL_MixerLibName = "libSDL_mixer-1.2.0.dylib"
-else:
-  const SDL_MixerLibName = "libSDL_mixer.so"
-
-const
-  SDL_MIXER_MAJOR_VERSION* = 1'i8
-  SDL_MIXER_MINOR_VERSION* = 2'i8
-  SDL_MIXER_PATCHLEVEL* = 7'i8   # Backwards compatibility
-  MIX_MAJOR_VERSION* = SDL_MIXER_MAJOR_VERSION
-  MIX_MINOR_VERSION* = SDL_MIXER_MINOR_VERSION
-  MIX_PATCHLEVEL* = SDL_MIXER_PATCHLEVEL # SDL_Mixer.h constants
-                                         # The default mixer has 8 simultaneous mixing channels
-  MIX_CHANNELS* = 8           # Good default values for a PC soundcard
-  MIX_DEFAULT_FREQUENCY* = 22050
-
-when defined(IA32):
-  const
-    MIX_DEFAULT_FORMAT* = AUDIO_S16LSB
-else:
-  const
-    MIX_DEFAULT_FORMAT* = AUDIO_S16MSB
-const
-  MIX_DEFAULT_CHANNELS* = 2
-  MIX_MAX_VOLUME* = 128       # Volume of a chunk
-  PATH_MAX* = 255             # mikmod.h constants
-                              #*
-                              #  * Library version
-                              #  *
-  LIBMIKMOD_VERSION_MAJOR* = 3
-  LIBMIKMOD_VERSION_MINOR* = 1
-  LIBMIKMOD_REVISION* = 8
-  LIBMIKMOD_VERSION* = ((LIBMIKMOD_VERSION_MAJOR shl 16) or
-      (LIBMIKMOD_VERSION_MINOR shl 8) or (LIBMIKMOD_REVISION))
-
-type                          #music_cmd.h types
-  PMusicCMD* = ptr TMusicCMD
-  TMusicCMD*{.final.} = object  #wavestream.h types
-    filename*: array[0..PATH_MAX - 1, char]
-    cmd*: array[0..PATH_MAX - 1, char]
-    pid*: TSYS_ThreadHandle
-
-  PWAVStream* = ptr TWAVStream
-  TWAVStream*{.final.} = object  #playmidi.h types
-    wavefp*: Pointer
-    start*: int32
-    stop*: int32
-    cvt*: TSDL_AudioCVT
-
-  PMidiEvent* = ptr TMidiEvent
-  TMidiEvent*{.final.} = object
-    time*: int32
-    channel*: uint8
-    typ*: uint8
-    a*: uint8
-    b*: uint8
-
-  PMidiSong* = ptr TMidiSong
-  TMidiSong*{.final.} = object  #music_ogg.h types
-    samples*: int32
-    events*: PMidiEvent
-
-  POGG_Music* = ptr TOGG_Music
-  TOGG_Music*{.final.} = object  # mikmod.h types
-                                 #*
-                                 #  * Error codes
-                                 #  *
-    playing*: int
-    volume*: int              #vf: OggVorbis_File;
-    section*: int
-    cvt*: TSDL_AudioCVT
-    len_available*: int
-    snd_available*: PUint8
-
-  TErrorEnum* = enum
-    MMERR_OPENING_FILE, MMERR_OUT_OF_MEMORY, MMERR_DYNAMIC_LINKING,
-    MMERR_SAMPLE_TOO_BIG, MMERR_OUT_OF_HANDLES, MMERR_UNKNOWN_WAVE_TYPE,
-    MMERR_LOADING_PATTERN, MMERR_LOADING_TRACK, MMERR_LOADING_HEADER,
-    MMERR_LOADING_SAMPLEINFO, MMERR_NOT_A_MODULE, MMERR_NOT_A_STREAM,
-    MMERR_MED_SYNTHSAMPLES, MMERR_ITPACK_INVALID_DATA, MMERR_DETECTING_DEVICE,
-    MMERR_INVALID_DEVICE, MMERR_INITIALIZING_MIXER, MMERR_OPENING_AUDIO,
-    MMERR_8BIT_ONLY, MMERR_16BIT_ONLY, MMERR_STEREO_ONLY, MMERR_ULAW,
-    MMERR_NON_BLOCK, MMERR_AF_AUDIO_PORT, MMERR_AIX_CONFIG_INIT,
-    MMERR_AIX_CONFIG_CONTROL, MMERR_AIX_CONFIG_START, MMERR_GUS_SETTINGS,
-    MMERR_GUS_RESET, MMERR_GUS_TIMER, MMERR_HP_SETSAMPLESIZE, MMERR_HP_SETSPEED,
-    MMERR_HP_CHANNELS, MMERR_HP_AUDIO_OUTPUT, MMERR_HP_AUDIO_DESC,
-    MMERR_HP_BUFFERSIZE, MMERR_OSS_SETFRAGMENT, MMERR_OSS_SETSAMPLESIZE,
-    MMERR_OSS_SETSTEREO, MMERR_OSS_SETSPEED, MMERR_SGI_SPEED, MMERR_SGI_16BIT,
-    MMERR_SGI_8BIT, MMERR_SGI_STEREO, MMERR_SGI_MONO, MMERR_SUN_INIT,
-    MMERR_OS2_MIXSETUP, MMERR_OS2_SEMAPHORE, MMERR_OS2_TIMER, MMERR_OS2_THREAD,
-    MMERR_DS_PRIORITY, MMERR_DS_BUFFER, MMERR_DS_FORMAT, MMERR_DS_NOTIFY,
-    MMERR_DS_EVENT, MMERR_DS_THREAD, MMERR_DS_UPDATE, MMERR_WINMM_HANDLE,
-    MMERR_WINMM_ALLOCATED, MMERR_WINMM_DEVICEID, MMERR_WINMM_FORMAT,
-    MMERR_WINMM_UNKNOWN, MMERR_MAC_SPEED, MMERR_MAC_START, MMERR_MAX
-  PMODULE* = ptr TMODULE
-  TMODULE*{.final.} = object
-  PUNIMOD* = ptr TUNIMOD
-  TUNIMOD* = TMODULE          #SDL_mixer.h types
-                              # The internal format for an audio chunk
-  PMix_Chunk* = ptr TMix_Chunk
-  TMix_Chunk*{.final.} = object
-    allocated*: int
-    abuf*: PUint8
-    alen*: Uint32
-    volume*: Uint8            # Per-sample volume, 0-128
-
-  Mix_Chunk* = TMix_Chunk     # The different fading types supported
-  TMix_Fading* = enum
-    MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN
-  Mix_Fading* = TMix_Fading
-  TMix_MusicType* = enum
-    MUS_NONE, MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG, MUS_MP3
-  Mix_MusicType* = TMix_MusicType #
-                                  #  TMusicUnion = record
-                                  #    case XXX: Byte of
-                                  #      0 : ( cmd : PMusicCMD );
-                                  #      1 : ( wave : PWAVStream );
-                                  #      2 : ( module : PUNIMOD );
-                                  #      3 : ( midi : TMidiSong );
-                                  #      4 : ( ogg : POGG_music );
-                                  #      {$IFNDEF DARWIN}
-                                  #      5 : ( mp3 : PSMPEG );
-                                  #      {$ENDIF}
-                                  #  end;
-  PMix_Music* = ptr TMix_Music
-  TMix_Music*{.final.} = object  # The internal format for a music chunk interpreted via mikmod
-    typ*: TMix_MusicType      # other fields are not aviable
-                              #    data : TMusicUnion;
-                              #    fading : TMix_Fading;
-                              #    fade_volume : integer;
-                              #    fade_step : integer;
-                              #    fade_steps : integer;
-                              #    error : integer;
-
-  TMixFunction* = proc (udata: Pointer, stream: PUint8, length: int): Pointer{.
-      cdecl.} # This macro can be used to fill a version structure with the compile-time
-              #  version of the SDL_mixer library.
-
-proc SDL_MIXER_VERSION*(X: var TSDL_Version)
-  # This function gets the version of the dynamically linked SDL_mixer library.
-  #     It should NOT be used to fill a version structure, instead you should use the
-  #     SDL_MIXER_VERSION() macro.
-proc Mix_Linked_Version*(): PSDL_version{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Open the mixer with a certain audio format
-proc Mix_OpenAudio*(frequency: int, format: Uint16, channels: int,
-                    chunksize: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Dynamically change the number of channels managed by the mixer.
-  #   If decreasing the number of channels, the upper channels are
-  #   stopped.
-  #   This function returns the new number of allocated channels.
-  #
-proc Mix_AllocateChannels*(numchannels: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Find out what the actual audio device parameters are.
-  #   This function returns 1 if the audio has been opened, 0 otherwise.
-  #
-proc Mix_QuerySpec*(frequency: var int, format: var Uint16, channels: var int): int{.
-    cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Load a wave file or a music (.mod .s3m .it .xm) file
-proc Mix_LoadWAV_RW*(src: PSDL_RWops, freesrc: int): PMix_Chunk{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_LoadWAV*(filename: cstring): PMix_Chunk
-proc Mix_LoadMUS*(filename: cstring): PMix_Music{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Load a wave file of the mixer format from a memory buffer
-proc Mix_QuickLoad_WAV*(mem: PUint8): PMix_Chunk{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Free an audio chunk previously loaded
-proc Mix_FreeChunk*(chunk: PMix_Chunk){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FreeMusic*(music: PMix_Music){.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Find out the music format of a mixer music, or the currently playing
-  #   music, if 'music' is NULL.
-proc Mix_GetMusicType*(music: PMix_Music): TMix_MusicType{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Set a function that is called after all mixing is performed.
-  #   This can be used to provide real-time visual display of the audio stream
-  #   or add a custom mixer filter for the stream data.
-  #
-proc Mix_SetPostMix*(mix_func: TMixFunction, arg: Pointer){.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Add your own music player or additional mixer function.
-  #   If 'mix_func' is NULL, the default music player is re-enabled.
-  #
-proc Mix_HookMusic*(mix_func: TMixFunction, arg: Pointer){.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Add your own callback when the music has finished playing.
-  #
-proc Mix_HookMusicFinished*(music_finished: Pointer){.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Get a pointer to the user data for the current music hook
-proc Mix_GetMusicHookData*(): Pointer{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  #* Add your own callback when a channel has finished playing. NULL
-  # * to disable callback.*
-type
-  TChannel_finished* = proc (channel: int){.cdecl.}
-
-proc Mix_ChannelFinished*(channel_finished: TChannel_finished){.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-const
-  MIX_CHANNEL_POST* = - 2
-    # This is the format of a special effect callback:
-    #      myeffect(int chan, void *stream, int len, void *udata);
-    #
-    #    (chan) is the channel number that your effect is affecting. (stream) is
-    #     the buffer of data to work upon. (len) is the size of (stream), and
-    #     (udata) is a user-defined bit of data, which you pass as the last arg of
-    #     Mix_RegisterEffect(), and is passed back unmolested to your callback.
-    #     Your effect changes the contents of (stream) based on whatever parameters
-    #     are significant, or just leaves it be, if you prefer. You can do whatever
-    #     you like to the buffer, though, and it will continue in its changed state
-    #     down the mixing pipeline, through any other effect functions, then finally
-    #     to be mixed with the rest of the channels and music for the final output
-    #     stream.
-    #
-
-type
-  TMix_EffectFunc* = proc (chan: int, stream: Pointer, length: int,
-                           udata: Pointer): Pointer{.cdecl.}
-    #   * This is a callback that signifies that a channel has finished all its
-    #   *  loops and has completed playback. This gets called if the buffer
-    #   *  plays out normally, or if you call Mix_HaltChannel(), implicitly stop
-    #   *  a channel via Mix_AllocateChannels(), or unregister a callback while
-    #   *  it's still playing.
-  TMix_EffectDone* = proc (chan: int, udata: Pointer): Pointer{.cdecl.}
-    #* Register a special effect function. At mixing time, the channel data is
-    #  *  copied into a buffer and passed through each registered effect function.
-    #  *  After it passes through all the functions, it is mixed into the final
-    #  *  output stream. The copy to buffer is performed once, then each effect
-    #  *  function performs on the output of the previous effect. Understand that
-    #  *  this extra copy to a buffer is not performed if there are no effects
-    #  *  registered for a given chunk, which saves CPU cycles, and any given
-    #  *  effect will be extra cycles, too, so it is crucial that your code run
-    #  *  fast. Also note that the data that your function is given is in the
-    #  *  format of the sound device, and not the format you gave to Mix_OpenAudio(),
-    #  *  although they may in reality be the same. This is an unfortunate but
-    #  *  necessary speed concern. Use Mix_QuerySpec() to determine if you can
-    #  *  handle the data before you register your effect, and take appropriate
-    #  *  actions.
-    #  * You may also specify a callback (Mix_EffectDone_t) that is called when
-    #  *  the channel finishes playing. This gives you a more fine-grained control
-    #  *  than Mix_ChannelFinished(), in case you need to free effect-specific
-    #  *  resources, etc. If you don't need this, you can specify NULL.
-    #  * You may set the callbacks before or after calling Mix_PlayChannel().
-    #  * Things like Mix_SetPanning() are just internal special effect functions,
-    #  *  so if you are using that, you've already incurred the overhead of a copy
-    #  *  to a separate buffer, and that these effects will be in the queue with
-    #  *  any functions you've registered. The list of registered effects for a
-    #  *  channel is reset when a chunk finishes playing, so you need to explicitly
-    #  *  set them with each call to Mix_PlayChannel*().
-    #  * You may also register a special effect function that is to be run after
-    #  *  final mixing occurs. The rules for these callbacks are identical to those
-    #  *  in Mix_RegisterEffect, but they are run after all the channels and the
-    #  *  music have been mixed into a single stream, whereas channel-specific
-    #  *  effects run on a given channel before any other mixing occurs. These
-    #  *  global effect callbacks are call "posteffects". Posteffects only have
-    #  *  their Mix_EffectDone_t function called when they are unregistered (since
-    #  *  the main output stream is never "done" in the same sense as a channel).
-    #  *  You must unregister them manually when you've had enough. Your callback
-    #  *  will be told that the channel being mixed is (MIX_CHANNEL_POST) if the
-    #  *  processing is considered a posteffect.
-    #  *
-    #  * After all these effects have finished processing, the callback registered
-    #  *  through Mix_SetPostMix() runs, and then the stream goes to the audio
-    #  *  device.
-    #  *
-    #  * returns zero if error (no such channel), nonzero if added.
-    #  *  Error messages can be retrieved from Mix_GetError().
-    #  *
-
-proc Mix_RegisterEffect*(chan: int, f: TMix_EffectFunc, d: TMix_EffectDone,
-                         arg: Pointer): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  #* You may not need to call this explicitly, unless you need to stop an
-  # *  effect from processing in the middle of a chunk's playback.
-  # * Posteffects are never implicitly unregistered as they are for channels,
-  # *  but they may be explicitly unregistered through this function by
-  # *  specifying MIX_CHANNEL_POST for a channel.
-  # * returns zero if error (no such channel or effect), nonzero if removed.
-  # *  Error messages can be retrieved from Mix_GetError().
-  # *
-proc Mix_UnregisterEffect*(channel: int, f: TMix_EffectFunc): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  #* You may not need to call this explicitly, unless you need to stop all
-  #  * effects from processing in the middle of a chunk's playback. Note that
-  #  * this will also shut off some internal effect processing, since
-  #  * Mix_SetPanning( ) and others may use this API under the hood.This is
-  #  * called internally when a channel completes playback.
-  #  * Posteffects are never implicitly unregistered as they are for channels,
-  #  * but they may be explicitly unregistered through this function by
-  #  * specifying MIX_CHANNEL_POST for a channel.
-  #  * returns zero if error( no such channel ), nonzero if all effects removed.
-  #  * Error messages can be retrieved from Mix_GetError( ).
-  #  *
-proc Mix_UnregisterAllEffects*(channel: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-const
-  MIX_EFFECTSMAXSPEED* = "MIX_EFFECTSMAXSPEED"
-    #  * These are the internally - defined mixing effects.They use the same API that
-    #  * effects defined in the application use, but are provided here as a
-    #  * convenience.Some effects can reduce their quality or use more memory in
-    #  * the name of speed; to enable this, make sure the environment variable
-    #  * MIX_EFFECTSMAXSPEED( see above ) is defined before you call
-    #  * Mix_OpenAudio( ).
-    #  *
-    #* set the panning of a channel.The left and right channels are specified
-    #  * as integers between 0 and 255, quietest to loudest, respectively.
-    #  *
-    #  * Technically, this is just individual volume control for a sample with
-    #  * two( stereo )channels, so it can be used for more than just panning.
-    #  * if you want real panning, call it like this :
-    #  *
-    #  * Mix_SetPanning( channel, left, 255 - left );
-    #  *
-    #  * ...which isn't so hard.
-    #  *
-    #  * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-    #  * the panning will be done to the final mixed stream before passing it on
-    #  * to the audio device.
-    #  *
-    #  * This uses the Mix_RegisterEffect( )API internally, and returns without
-    #  * registering the effect function if the audio device is not configured
-    #  * for stereo output.Setting both( left ) and ( right ) to 255 causes this
-    #  * effect to be unregistered, since that is the data's normal state.
-    #  *
-    #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-    #  * nonzero if panning effect enabled.Note that an audio device in mono
-    #  * mode is a no - op, but this call will return successful in that case .
-    #  * Error messages can be retrieved from Mix_GetError( ).
-    #  *
-
-proc Mix_SetPanning*(channel: int, left: Uint8, right: Uint8): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # * set the position ofa channel.( angle ) is an integer from 0 to 360, that
-  #    * specifies the location of the sound in relation to the listener.( angle )
-  #    * will be reduced as neccesary( 540 becomes 180 degrees, -100 becomes 260 ).
-  #    * Angle 0 is due north, and rotates clockwise as the value increases.
-  #    * for efficiency, the precision of this effect may be limited( angles 1
-  #    * through 7 might all produce the same effect, 8 through 15 are equal, etc ).
-  #    * ( distance ) is an integer between 0 and 255 that specifies the space
-  #    * between the sound and the listener.The larger the number, the further
-  #    * away the sound is .Using 255 does not guarantee that the channel will be
-  #    * culled from the mixing process or be completely silent.For efficiency,
-  #    * the precision of this effect may be limited( distance 0 through 5 might
-  #    * all produce the same effect, 6 through 10 are equal, etc ).Setting( angle )
-  #    * and ( distance ) to 0 unregisters this effect, since the data would be
-  #    * unchanged.
-  #    *
-  #    * if you need more precise positional audio, consider using OpenAL for
-  #    * spatialized effects instead of SDL_mixer.This is only meant to be a
-  #    * basic effect for simple "3D" games.
-  #    *
-  #    * if the audio device is configured for mono output, then you won't get
-  #    * any effectiveness from the angle; however, distance attenuation on the
-  #  * channel will still occur.While this effect will function with stereo
-  #  * voices, it makes more sense to use voices with only one channel of sound,
-  #  * so when they are mixed through this effect, the positioning will sound
-  #  * correct.You can convert them to mono through SDL before giving them to
-  #  * the mixer in the first place if you like.
-  #  *
-  #  * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-  #  * the positioning will be done to the final mixed stream before passing it
-  #  * on to the audio device.
-  #  *
-  #  * This is a convenience wrapper over Mix_SetDistance( ) and Mix_SetPanning( ).
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if position effect is enabled.
-  #  * Error messages can be retrieved from Mix_GetError( ).
-  #  *
-proc Mix_SetPosition*(channel: int, angle: Sint16, distance: Uint8): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  #* set the "distance" of a channel.( distance ) is an integer from 0 to 255
-  #  * that specifies the location of the sound in relation to the listener.
-  #  * Distance 0 is overlapping the listener, and 255 is as far away as possible
-  #  * A distance of 255 does not guarantee silence; in such a case , you might
-  #  * want to try changing the chunk's volume, or just cull the sample from the
-  #  * mixing process with Mix_HaltChannel( ).
-  #    * for efficiency, the precision of this effect may be limited( distances 1
-  #    * through 7 might all produce the same effect, 8 through 15 are equal, etc ).
-  #    * ( distance ) is an integer between 0 and 255 that specifies the space
-  #    * between the sound and the listener.The larger the number, the further
-  #    * away the sound is .
-  #    * Setting( distance ) to 0 unregisters this effect, since the data would be
-  #    * unchanged.
-  #    * if you need more precise positional audio, consider using OpenAL for
-  #    * spatialized effects instead of SDL_mixer.This is only meant to be a
-  #    * basic effect for simple "3D" games.
-  #    *
-  #    * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-  #    * the distance attenuation will be done to the final mixed stream before
-  #    * passing it on to the audio device.
-  #    *
-  #  * This uses the Mix_RegisterEffect( )API internally.
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if position effect is enabled.
-  #    * Error messages can be retrieved from Mix_GetError( ).
-  #    *
-proc Mix_SetDistance*(channel: int, distance: Uint8): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # *
-  #    * !!! FIXME : Haven't implemented, since the effect goes past the
-  #  * end of the sound buffer.Will have to think about this.
-  #  * - -ryan.
-  #  * /
-  #  { if 0
-  #  { * Causes an echo effect to be mixed into a sound.( echo ) is the amount
-  #  * of echo to mix.0 is no echo, 255 is infinite( and probably not
-  #  * what you want ).
-  #  *
-  #  * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-  #  * the reverbing will be done to the final mixed stream before passing it on
-  #  * to the audio device.
-  #  *
-  #  * This uses the Mix_RegisterEffect( )API internally.If you specify an echo
-  #  * of zero, the effect is unregistered, as the data is already in that state.
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if reversing effect is enabled.
-  #    * Error messages can be retrieved from Mix_GetError( ).
-  #    *
-  #    extern no_parse_DECLSPEC int Mix_SetReverb( int channel, Uint8 echo );
-  #  #E ndif
-  # * Causes a channel to reverse its stereo.This is handy if the user has his
-  #    * speakers hooked up backwards, or you would like to have a minor bit of
-  #  * psychedelia in your sound code. : )Calling this function with ( flip )
-  #  * set to non - zero reverses the chunks's usual channels. If (flip) is zero,
-  #  * the effect is unregistered.
-  #  *
-  #  * This uses the Mix_RegisterEffect( )API internally, and thus is probably
-  #  * more CPU intensive than having the user just plug in his speakers
-  #  * correctly.Mix_SetReverseStereo( )returns without registering the effect
-  #  * function if the audio device is not configured for stereo output.
-  #  *
-  #  * if you specify MIX_CHANNEL_POST for ( channel ), then this the effect is used
-  #  * on the final mixed stream before sending it on to the audio device( a
-  #  * posteffect ).
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if reversing effect is enabled.Note that an audio device in mono
-  #  * mode is a no - op, but this call will return successful in that case .
-  #  * Error messages can be retrieved from Mix_GetError( ).
-  #  *
-proc Mix_SetReverseStereo*(channel: int, flip: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # end of effects API. - -ryan. *
-  # Reserve the first channels (0 -> n-1) for the application, i.e. don't allocate
-  #   them dynamically to the next sample if requested with a -1 value below.
-  #   Returns the number of reserved channels.
-  #
-proc Mix_ReserveChannels*(num: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Channel grouping functions
-  # Attach a tag to a channel. A tag can be assigned to several mixer
-  #   channels, to form groups of channels.
-  #   If 'tag' is -1, the tag is removed (actually -1 is the tag used to
-  #   represent the group of all the channels).
-  #   Returns true if everything was OK.
-  #
-proc Mix_GroupChannel*(which: int, tag: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Assign several consecutive channels to a group
-proc Mix_GroupChannels*(`from`: int, `to`: int, tag: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Finds the first available channel in a group of channels
-proc Mix_GroupAvailable*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Returns the number of channels in a group. This is also a subtle
-  #   way to get the total number of channels when 'tag' is -1
-  #
-proc Mix_GroupCount*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Finds the "oldest" sample playing in a group of channels
-proc Mix_GroupOldest*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Finds the "most recent" (i.e. last) sample playing in a group of channels
-proc Mix_GroupNewer*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # The same as above, but the sound is played at most 'ticks' milliseconds
-proc Mix_PlayChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int,
-                           ticks: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Play an audio chunk on a specific channel.
-  #   If the specified channel is -1, play on the first free channel.
-  #   If 'loops' is greater than zero, loop the sound that many times.
-  #   If 'loops' is -1, loop inifinitely (~65000 times).
-  #   Returns which channel was used to play the sound.
-  #
-proc Mix_PlayChannel*(channel: int, chunk: PMix_Chunk, loops: int): int
-proc Mix_PlayMusic*(music: PMix_Music, loops: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Fade in music or a channel over "ms" milliseconds, same semantics as the "Play" functions
-proc Mix_FadeInMusic*(music: PMix_Music, loops: int, ms: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeInChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int,
-                             ms: int, ticks: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeInChannel*(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int
-  # Set the volume in the range of 0-128 of a specific channel or chunk.
-  #   If the specified channel is -1, set volume for all channels.
-  #   Returns the original volume.
-  #   If the specified volume is -1, just return the current volume.
-  #
-proc Mix_Volume*(channel: int, volume: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_VolumeChunk*(chunk: PMix_Chunk, volume: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_VolumeMusic*(volume: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Halt playing of a particular channel
-proc Mix_HaltChannel*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_HaltGroup*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_HaltMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Change the expiration delay for a particular channel.
-  #   The sample will stop playing after the 'ticks' milliseconds have elapsed,
-  #   or remove the expiration if 'ticks' is -1
-  #
-proc Mix_ExpireChannel*(channel: int, ticks: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Halt a channel, fading it out progressively till it's silent
-  #   The ms parameter indicates the number of milliseconds the fading
-  #   will take.
-  #
-proc Mix_FadeOutChannel*(which: int, ms: int): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeOutGroup*(tag: int, ms: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeOutMusic*(ms: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Query the fading status of a channel
-proc Mix_FadingMusic*(): TMix_Fading{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadingChannel*(which: int): TMix_Fading{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Pause/Resume a particular channel
-proc Mix_Pause*(channel: int){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_Resume*(channel: int){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_Paused*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Pause/Resume the music stream
-proc Mix_PauseMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_ResumeMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_RewindMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_PausedMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Set the current position in the music stream.
-  #  This returns 0 if successful, or -1 if it failed or isn't implemented.
-  #  This function is only implemented for MOD music formats (set pattern
-  #  order number) and for OGG music (set position in seconds), at the
-  #  moment.
-  #
-proc Mix_SetMusicPosition*(position: float64): int{.cdecl,
-    importc, dynlib: SDL_MixerLibName.}
-  # Check the status of a specific channel.
-  #   If the specified channel is -1, check all channels.
-  #
-proc Mix_Playing*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_PlayingMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Stop music and set external music playback command
-proc Mix_SetMusicCMD*(command: cstring): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Synchro value is set by MikMod from modules while playing
-proc Mix_SetSynchroValue*(value: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_GetSynchroValue*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  #
-  #  Get the Mix_Chunk currently associated with a mixer channel
-  #    Returns nil if it's an invalid channel, or there's no chunk associated.
-  #
-proc Mix_GetChunk*(channel: int): PMix_Chunk{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Close the mixer, halting all playing audio
-proc Mix_CloseAudio*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # We'll use SDL for reporting errors
-proc Mix_SetError*(fmt: cstring)
-proc Mix_GetError*(): cstring
-# implementation
-
-proc SDL_MIXER_VERSION(X: var TSDL_version) =
-  X.major = SDL_MIXER_MAJOR_VERSION
-  X.minor = SDL_MIXER_MINOR_VERSION
-  X.patch = SDL_MIXER_PATCHLEVEL
-
-proc Mix_LoadWAV(filename: cstring): PMix_Chunk =
-  result = Mix_LoadWAV_RW(SDL_RWFromFile(filename, "rb"), 1)
-
-proc Mix_PlayChannel(channel: int, chunk: PMix_Chunk, loops: int): int =
-  result = Mix_PlayChannelTimed(channel, chunk, loops, - 1)
-
-proc Mix_FadeInChannel(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int =
-  result = Mix_FadeInChannelTimed(channel, chunk, loops, ms, - 1)
-
-proc Mix_SetError(fmt: cstring) =
-  SDL_SetError(fmt)
-
-proc Mix_GetError(): cstring =
-  result = SDL_GetError()
diff --git a/lib/wrappers/sdl/sdl_mixer_nosmpeg.nim b/lib/wrappers/sdl/sdl_mixer_nosmpeg.nim
deleted file mode 100755
index 879867607..000000000
--- a/lib/wrappers/sdl/sdl_mixer_nosmpeg.nim
+++ /dev/null
@@ -1,572 +0,0 @@
-
-#******************************************************************************
-# Copy of SDL_Mixer without smpeg dependency and mp3 support                    
-#******************************************************************************
-
-import
-  sdl
-
-when defined(windows):
-  const SDL_MixerLibName = "SDL_mixer.dll"
-elif defined(macosx):
-  const SDL_MixerLibName = "libSDL_mixer-1.2.0.dylib"
-else:
-  const SDL_MixerLibName = "libSDL_mixer.so"
-
-const                    
-  SDL_MIXER_MAJOR_VERSION* = 1'i8
-  SDL_MIXER_MINOR_VERSION* = 2'i8
-  SDL_MIXER_PATCHLEVEL* = 7'i8   # Backwards compatibility
-  MIX_MAJOR_VERSION* = SDL_MIXER_MAJOR_VERSION
-  MIX_MINOR_VERSION* = SDL_MIXER_MINOR_VERSION
-  MIX_PATCHLEVEL* = SDL_MIXER_PATCHLEVEL # SDL_Mixer.h constants
-                                         # The default mixer has 8 simultaneous mixing channels 
-  MIX_CHANNELS* = 8           # Good default values for a PC soundcard 
-  MIX_DEFAULT_FREQUENCY* = 22050
-
-when defined(IA32): 
-  const 
-    MIX_DEFAULT_FORMAT* = AUDIO_S16LSB
-else: 
-  const 
-    MIX_DEFAULT_FORMAT* = AUDIO_S16MSB
-const 
-  MIX_DEFAULT_CHANNELS* = 2
-  MIX_MAX_VOLUME* = 128       # Volume of a chunk 
-  PATH_MAX* = 255             # mikmod.h constants
-                              #*
-                              #  * Library version
-                              #  *
-  LIBMIKMOD_VERSION_MAJOR* = 3
-  LIBMIKMOD_VERSION_MINOR* = 1
-  LIBMIKMOD_REVISION* = 8
-  LIBMIKMOD_VERSION* = ((LIBMIKMOD_VERSION_MAJOR shl 16) or
-      (LIBMIKMOD_VERSION_MINOR shl 8) or (LIBMIKMOD_REVISION))
-
-type                          #music_cmd.h types
-  PMusicCMD* = ptr TMusicCMD
-  TMusicCMD*{.final.} = object  #wavestream.h types
-    filename*: array[0..PATH_MAX - 1, char]
-    cmd*: array[0..PATH_MAX - 1, char]
-    pid*: TSYS_ThreadHandle
-
-  PWAVStream* = ptr TWAVStream
-  TWAVStream*{.final.} = object  #playmidi.h types
-    wavefp*: Pointer
-    start*: int32
-    stop*: int32
-    cvt*: TSDL_AudioCVT
-
-  PMidiEvent* = ptr TMidiEvent
-  TMidiEvent*{.final.} = object 
-    time*: int32
-    channel*: uint8
-    typ*: uint8
-    a*: uint8
-    b*: uint8
-
-  PMidiSong* = ptr TMidiSong
-  TMidiSong*{.final.} = object  #music_ogg.h types
-    samples*: int32
-    events*: PMidiEvent
-
-  POGG_Music* = ptr TOGG_Music
-  TOGG_Music*{.final.} = object  # mikmod.h types
-                                 #*
-                                 #  * Error codes
-                                 #  *
-    playing*: int
-    volume*: int              #vf: OggVorbis_File;
-    section*: int
-    cvt*: TSDL_AudioCVT
-    len_available*: int
-    snd_available*: PUint8
-
-  TErrorEnum* = enum 
-    MMERR_OPENING_FILE, MMERR_OUT_OF_MEMORY, MMERR_DYNAMIC_LINKING, 
-    MMERR_SAMPLE_TOO_BIG, MMERR_OUT_OF_HANDLES, MMERR_UNKNOWN_WAVE_TYPE, 
-    MMERR_LOADING_PATTERN, MMERR_LOADING_TRACK, MMERR_LOADING_HEADER, 
-    MMERR_LOADING_SAMPLEINFO, MMERR_NOT_A_MODULE, MMERR_NOT_A_STREAM, 
-    MMERR_MED_SYNTHSAMPLES, MMERR_ITPACK_INVALID_DATA, MMERR_DETECTING_DEVICE, 
-    MMERR_INVALID_DEVICE, MMERR_INITIALIZING_MIXER, MMERR_OPENING_AUDIO, 
-    MMERR_8BIT_ONLY, MMERR_16BIT_ONLY, MMERR_STEREO_ONLY, MMERR_ULAW, 
-    MMERR_NON_BLOCK, MMERR_AF_AUDIO_PORT, MMERR_AIX_CONFIG_INIT, 
-    MMERR_AIX_CONFIG_CONTROL, MMERR_AIX_CONFIG_START, MMERR_GUS_SETTINGS, 
-    MMERR_GUS_RESET, MMERR_GUS_TIMER, MMERR_HP_SETSAMPLESIZE, MMERR_HP_SETSPEED, 
-    MMERR_HP_CHANNELS, MMERR_HP_AUDIO_OUTPUT, MMERR_HP_AUDIO_DESC, 
-    MMERR_HP_BUFFERSIZE, MMERR_OSS_SETFRAGMENT, MMERR_OSS_SETSAMPLESIZE, 
-    MMERR_OSS_SETSTEREO, MMERR_OSS_SETSPEED, MMERR_SGI_SPEED, MMERR_SGI_16BIT, 
-    MMERR_SGI_8BIT, MMERR_SGI_STEREO, MMERR_SGI_MONO, MMERR_SUN_INIT, 
-    MMERR_OS2_MIXSETUP, MMERR_OS2_SEMAPHORE, MMERR_OS2_TIMER, MMERR_OS2_THREAD, 
-    MMERR_DS_PRIORITY, MMERR_DS_BUFFER, MMERR_DS_FORMAT, MMERR_DS_NOTIFY, 
-    MMERR_DS_EVENT, MMERR_DS_THREAD, MMERR_DS_UPDATE, MMERR_WINMM_HANDLE, 
-    MMERR_WINMM_ALLOCATED, MMERR_WINMM_DEVICEID, MMERR_WINMM_FORMAT, 
-    MMERR_WINMM_UNKNOWN, MMERR_MAC_SPEED, MMERR_MAC_START, MMERR_MAX
-  PMODULE* = ptr TMODULE
-  TMODULE*{.final.} = object 
-  PUNIMOD* = ptr TUNIMOD
-  TUNIMOD* = TMODULE          #SDL_mixer.h types
-                              # The internal format for an audio chunk 
-  PMix_Chunk* = ptr TMix_Chunk
-  TMix_Chunk*{.final.} = object 
-    allocated*: int
-    abuf*: PUint8
-    alen*: Uint32
-    volume*: Uint8            # Per-sample volume, 0-128 
-  
-  Mix_Chunk* = TMix_Chunk     # The different fading types supported 
-  TMix_Fading* = enum 
-    MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN
-  Mix_Fading* = TMix_Fading
-  TMix_MusicType* = enum 
-    MUS_NONE, MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG
-  PMix_Music* = ptr TMix_Music
-  TMix_Music*{.final.} = object 
-    typ*: TMix_MusicType
-
-  TMixFunction* = proc (udata: Pointer, stream: PUint8, length: int): Pointer{.
-      cdecl.} # This macro can be used to fill a version structure with the compile-time
-              #  version of the SDL_mixer library. 
-
-proc SDL_MIXER_VERSION*(X: var TSDL_Version)
-  # This function gets the version of the dynamically linked SDL_mixer library.
-  #     It should NOT be used to fill a version structure, instead you should use the
-  #     SDL_MIXER_VERSION() macro. 
-proc Mix_Linked_Version*(): PSDL_version{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Open the mixer with a certain audio format 
-proc Mix_OpenAudio*(frequency: int, format: Uint16, channels: int, 
-                    chunksize: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Dynamically change the number of channels managed by the mixer.
-  #   If decreasing the number of channels, the upper channels are
-  #   stopped.
-  #   This function returns the new number of allocated channels.
-  # 
-proc Mix_AllocateChannels*(numchannels: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Find out what the actual audio device parameters are.
-  #   This function returns 1 if the audio has been opened, 0 otherwise.
-  # 
-proc Mix_QuerySpec*(frequency: var int, format: var Uint16, channels: var int): int{.
-    cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Load a wave file or a music (.mod .s3m .it .xm) file 
-proc Mix_LoadWAV_RW*(src: PSDL_RWops, freesrc: int): PMix_Chunk{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_LoadWAV*(filename: cstring): PMix_Chunk
-proc Mix_LoadMUS*(filename: cstring): PMix_Music{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Load a wave file of the mixer format from a memory buffer 
-proc Mix_QuickLoad_WAV*(mem: PUint8): PMix_Chunk{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Free an audio chunk previously loaded 
-proc Mix_FreeChunk*(chunk: PMix_Chunk){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FreeMusic*(music: PMix_Music){.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Find out the music format of a mixer music, or the currently playing
-  #   music, if 'music' is NULL.
-proc Mix_GetMusicType*(music: PMix_Music): TMix_MusicType{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Set a function that is called after all mixing is performed.
-  #   This can be used to provide real-time visual display of the audio stream
-  #   or add a custom mixer filter for the stream data.
-  #
-proc Mix_SetPostMix*(mix_func: TMixFunction, arg: Pointer){.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Add your own music player or additional mixer function.
-  #   If 'mix_func' is NULL, the default music player is re-enabled.
-  # 
-proc Mix_HookMusic*(mix_func: TMixFunction, arg: Pointer){.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Add your own callback when the music has finished playing.
-  # 
-proc Mix_HookMusicFinished*(music_finished: Pointer){.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Get a pointer to the user data for the current music hook 
-proc Mix_GetMusicHookData*(): Pointer{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  #* Add your own callback when a channel has finished playing. NULL
-  # * to disable callback.*
-type 
-  TChannel_finished* = proc (channel: int){.cdecl.}
-
-proc Mix_ChannelFinished*(channel_finished: TChannel_finished){.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-const 
-  MIX_CHANNEL_POST* = - 2 #* This is the format of a special effect callback:
-                          #   *
-                          #   *   myeffect(int chan, void *stream, int len, void *udata);
-                          #   *
-                          #   * (chan) is the channel number that your effect is affecting. (stream) is
-                          #   *  the buffer of data to work upon. (len) is the size of (stream), and
-                          #   *  (udata) is a user-defined bit of data, which you pass as the last arg of
-                          #   *  Mix_RegisterEffect(), and is passed back unmolested to your callback.
-                          #   *  Your effect changes the contents of (stream) based on whatever parameters
-                          #   *  are significant, or just leaves it be, if you prefer. You can do whatever
-                          #   *  you like to the buffer, though, and it will continue in its changed state
-                          #   *  down the mixing pipeline, through any other effect functions, then finally
-                          #   *  to be mixed with the rest of the channels and music for the final output
-                          #   *  stream.
-                          #   *
-
-type 
-  TMix_EffectFunc* = proc (chan: int, stream: Pointer, length: int, 
-                           udata: Pointer): Pointer{.cdecl.} 
-    #   * This is a callback that signifies that a channel has finished all its
-    #   *  loops and has completed playback. This gets called if the buffer
-    #   *  plays out normally, or if you call Mix_HaltChannel(), implicitly stop
-    #   *  a channel via Mix_AllocateChannels(), or unregister a callback while
-    #   *  it's still playing.
-  TMix_EffectDone* = proc (chan: int, udata: Pointer): Pointer{.cdecl.}
-    #* Register a special effect function. At mixing time, the channel data is
-    #  *  copied into a buffer and passed through each registered effect function.
-    #  *  After it passes through all the functions, it is mixed into the final
-    #  *  output stream. The copy to buffer is performed once, then each effect
-    #  *  function performs on the output of the previous effect. Understand that
-    #  *  this extra copy to a buffer is not performed if there are no effects
-    #  *  registered for a given chunk, which saves CPU cycles, and any given
-    #  *  effect will be extra cycles, too, so it is crucial that your code run
-    #  *  fast. Also note that the data that your function is given is in the
-    #  *  format of the sound device, and not the format you gave to Mix_OpenAudio(),
-    #  *  although they may in reality be the same. This is an unfortunate but
-    #  *  necessary speed concern. Use Mix_QuerySpec() to determine if you can
-    #  *  handle the data before you register your effect, and take appropriate
-    #  *  actions.
-    #  * You may also specify a callback (Mix_EffectDone_t) that is called when
-    #  *  the channel finishes playing. This gives you a more fine-grained control
-    #  *  than Mix_ChannelFinished(), in case you need to free effect-specific
-    #  *  resources, etc. If you don't need this, you can specify NULL.
-    #  * You may set the callbacks before or after calling Mix_PlayChannel().
-    #  * Things like Mix_SetPanning() are just internal special effect functions,
-    #  *  so if you are using that, you've already incurred the overhead of a copy
-    #  *  to a separate buffer, and that these effects will be in the queue with
-    #  *  any functions you've registered. The list of registered effects for a
-    #  *  channel is reset when a chunk finishes playing, so you need to explicitly
-    #  *  set them with each call to Mix_PlayChannel*().
-    #  * You may also register a special effect function that is to be run after
-    #  *  final mixing occurs. The rules for these callbacks are identical to those
-    #  *  in Mix_RegisterEffect, but they are run after all the channels and the
-    #  *  music have been mixed into a single stream, whereas channel-specific
-    #  *  effects run on a given channel before any other mixing occurs. These
-    #  *  global effect callbacks are call "posteffects". Posteffects only have
-    #  *  their Mix_EffectDone_t function called when they are unregistered (since
-    #  *  the main output stream is never "done" in the same sense as a channel).
-    #  *  You must unregister them manually when you've had enough. Your callback
-    #  *  will be told that the channel being mixed is (MIX_CHANNEL_POST) if the
-    #  *  processing is considered a posteffect.
-    #  *
-    #  * After all these effects have finished processing, the callback registered
-    #  *  through Mix_SetPostMix() runs, and then the stream goes to the audio
-    #  *  device.
-    #  *
-    #  * returns zero if error (no such channel), nonzero if added.
-    #  *  Error messages can be retrieved from Mix_GetError().
-
-proc Mix_RegisterEffect*(chan: int, f: TMix_EffectFunc, d: TMix_EffectDone, 
-                         arg: Pointer): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  #* You may not need to call this explicitly, unless you need to stop an
-  # *  effect from processing in the middle of a chunk's playback.
-  # * Posteffects are never implicitly unregistered as they are for channels,
-  # *  but they may be explicitly unregistered through this function by
-  # *  specifying MIX_CHANNEL_POST for a channel.
-  # * returns zero if error (no such channel or effect), nonzero if removed.
-  # *  Error messages can be retrieved from Mix_GetError().
-  # *
-proc Mix_UnregisterEffect*(channel: int, f: TMix_EffectFunc): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  #* You may not need to call this explicitly, unless you need to stop all
-  #  * effects from processing in the middle of a chunk's playback. Note that
-  #  * this will also shut off some internal effect processing, since
-  #  * Mix_SetPanning( ) and others may use this API under the hood.This is
-  #  * called internally when a channel completes playback.
-  #  * Posteffects are never implicitly unregistered as they are for channels,
-  #  * but they may be explicitly unregistered through this function by
-  #  * specifying MIX_CHANNEL_POST for a channel.
-  #  * returns zero if error( no such channel ), nonzero if all effects removed.
-  #  * Error messages can be retrieved from Mix_GetError( ).
-  #  *
-proc Mix_UnregisterAllEffects*(channel: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-const 
-  MIX_EFFECTSMAXSPEED* = "MIX_EFFECTSMAXSPEED" 
-    #  * These are the internally - defined mixing effects.They use the same API that
-    #  * effects defined in the application use, but are provided here as a
-    #  * convenience.Some effects can reduce their quality or use more memory in
-    #  * the name of speed; to enable this, make sure the environment variable
-    #  * MIX_EFFECTSMAXSPEED( see above ) is defined before you call
-    #  * Mix_OpenAudio( ).
-    #  * 
-    #* set the panning of a channel.The left and right channels are specified
-    #  * as integers between 0 and 255, quietest to loudest, respectively.
-    #  *
-    #  * Technically, this is just individual volume control for a sample with
-    #  * two( stereo )channels, so it can be used for more than just panning.
-    #  * if you want real panning, call it like this :
-    #  *
-    #  * Mix_SetPanning( channel, left, 255 - left );
-    #  *
-    #  * ...which isn't so hard.
-    #  *
-    #  * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-    #  * the panning will be done to the final mixed stream before passing it on
-    #  * to the audio device.
-    #  *
-    #  * This uses the Mix_RegisterEffect( )API internally, and returns without
-    #  * registering the effect function if the audio device is not configured
-    #  * for stereo output.Setting both( left ) and ( right ) to 255 causes this
-    #  * effect to be unregistered, since that is the data's normal state.
-    #  *
-    #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-    #  * nonzero if panning effect enabled.Note that an audio device in mono
-    #  * mode is a no - op, but this call will return successful in that case .
-    #  * Error messages can be retrieved from Mix_GetError( ).
-                                               
-
-proc Mix_SetPanning*(channel: int, left: Uint8, right: Uint8): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # * set the position ofa channel.( angle ) is an integer from 0 to 360, that
-  #    * specifies the location of the sound in relation to the listener.( angle )
-  #    * will be reduced as neccesary( 540 becomes 180 degrees, -100 becomes 260 ).
-  #    * Angle 0 is due north, and rotates clockwise as the value increases.
-  #    * for efficiency, the precision of this effect may be limited( angles 1
-  #    * through 7 might all produce the same effect, 8 through 15 are equal, etc ).
-  #    * ( distance ) is an integer between 0 and 255 that specifies the space
-  #    * between the sound and the listener.The larger the number, the further
-  #    * away the sound is .Using 255 does not guarantee that the channel will be
-  #    * culled from the mixing process or be completely silent.For efficiency,
-  #    * the precision of this effect may be limited( distance 0 through 5 might
-  #    * all produce the same effect, 6 through 10 are equal, etc ).Setting( angle )
-  #    * and ( distance ) to 0 unregisters this effect, since the data would be
-  #    * unchanged.
-  #    *
-  #    * if you need more precise positional audio, consider using OpenAL for
-  #    * spatialized effects instead of SDL_mixer.This is only meant to be a
-  #    * basic effect for simple "3D" games.
-  #    *
-  #    * if the audio device is configured for mono output, then you won't get
-  #    * any effectiveness from the angle; however, distance attenuation on the
-  #  * channel will still occur.While this effect will function with stereo
-  #  * voices, it makes more sense to use voices with only one channel of sound,
-  #  * so when they are mixed through this effect, the positioning will sound
-  #  * correct.You can convert them to mono through SDL before giving them to
-  #  * the mixer in the first place if you like.
-  #  *
-  #  * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-  #  * the positioning will be done to the final mixed stream before passing it
-  #  * on to the audio device.
-  #  *
-  #  * This is a convenience wrapper over Mix_SetDistance( ) and Mix_SetPanning( ).
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if position effect is enabled.
-  #  * Error messages can be retrieved from Mix_GetError( ).
-  #  * 
-proc Mix_SetPosition*(channel: int, angle: Sint16, distance: Uint8): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  #* set the "distance" of a channel.( distance ) is an integer from 0 to 255
-  #  * that specifies the location of the sound in relation to the listener.
-  #  * Distance 0 is overlapping the listener, and 255 is as far away as possible
-  #  * A distance of 255 does not guarantee silence; in such a case , you might
-  #  * want to try changing the chunk's volume, or just cull the sample from the
-  #  * mixing process with Mix_HaltChannel( ).
-  #    * for efficiency, the precision of this effect may be limited( distances 1
-  #    * through 7 might all produce the same effect, 8 through 15 are equal, etc ).
-  #    * ( distance ) is an integer between 0 and 255 that specifies the space
-  #    * between the sound and the listener.The larger the number, the further
-  #    * away the sound is .
-  #    * Setting( distance ) to 0 unregisters this effect, since the data would be
-  #    * unchanged.
-  #    * if you need more precise positional audio, consider using OpenAL for
-  #    * spatialized effects instead of SDL_mixer.This is only meant to be a
-  #    * basic effect for simple "3D" games.
-  #    *
-  #    * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-  #    * the distance attenuation will be done to the final mixed stream before
-  #    * passing it on to the audio device.
-  #    *
-  #  * This uses the Mix_RegisterEffect( )API internally.
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if position effect is enabled.
-  #    * Error messages can be retrieved from Mix_GetError( ).
-  #    * 
-proc Mix_SetDistance*(channel: int, distance: Uint8): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # *
-  #    * !!! FIXME : Haven't implemented, since the effect goes past the
-  #  * end of the sound buffer.Will have to think about this.
-  #  * - -ryan.
-  #  * /
-  #  { if 0
-  #  { * Causes an echo effect to be mixed into a sound.( echo ) is the amount
-  #  * of echo to mix.0 is no echo, 255 is infinite( and probably not
-  #  * what you want ).
-  #  *
-  #  * Setting( channel ) to MIX_CHANNEL_POST registers this as a posteffect, and
-  #  * the reverbing will be done to the final mixed stream before passing it on
-  #  * to the audio device.
-  #  *
-  #  * This uses the Mix_RegisterEffect( )API internally.If you specify an echo
-  #  * of zero, the effect is unregistered, as the data is already in that state.
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if reversing effect is enabled.
-  #    * Error messages can be retrieved from Mix_GetError( ).
-  #    *
-  #    extern no_parse_DECLSPEC int Mix_SetReverb( int channel, Uint8 echo );
-  #  #E ndif
-  # * Causes a channel to reverse its stereo.This is handy if the user has his
-  #    * speakers hooked up backwards, or you would like to have a minor bit of
-  #  * psychedelia in your sound code. : )Calling this function with ( flip )
-  #  * set to non - zero reverses the chunks's usual channels. If (flip) is zero,
-  #  * the effect is unregistered.
-  #  *
-  #  * This uses the Mix_RegisterEffect( )API internally, and thus is probably
-  #  * more CPU intensive than having the user just plug in his speakers
-  #  * correctly.Mix_SetReverseStereo( )returns without registering the effect
-  #  * function if the audio device is not configured for stereo output.
-  #  *
-  #  * if you specify MIX_CHANNEL_POST for ( channel ), then this the effect is used
-  #  * on the final mixed stream before sending it on to the audio device( a
-  #  * posteffect ).
-  #  *
-  #  * returns zero if error( no such channel or Mix_RegisterEffect( )fails ),
-  #  * nonzero if reversing effect is enabled.Note that an audio device in mono
-  #  * mode is a no - op, but this call will return successful in that case .
-  #  * Error messages can be retrieved from Mix_GetError( ).
-  #  * 
-proc Mix_SetReverseStereo*(channel: int, flip: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # end of effects API. - -ryan. *
-  # Reserve the first channels (0 -> n-1) for the application, i.e. don't allocate
-  #   them dynamically to the next sample if requested with a -1 value below.
-  #   Returns the number of reserved channels.
-  # 
-proc Mix_ReserveChannels*(num: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Channel grouping functions 
-  # Attach a tag to a channel. A tag can be assigned to several mixer
-  #   channels, to form groups of channels.
-  #   If 'tag' is -1, the tag is removed (actually -1 is the tag used to
-  #   represent the group of all the channels).
-  #   Returns true if everything was OK.
-  # 
-proc Mix_GroupChannel*(which: int, tag: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Assign several consecutive channels to a group 
-proc Mix_GroupChannels*(`from`: int, `to`: int, tag: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Finds the first available channel in a group of channels 
-proc Mix_GroupAvailable*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Returns the number of channels in a group. This is also a subtle
-  #   way to get the total number of channels when 'tag' is -1
-  # 
-proc Mix_GroupCount*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Finds the "oldest" sample playing in a group of channels 
-proc Mix_GroupOldest*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Finds the "most recent" (i.e. last) sample playing in a group of channels 
-proc Mix_GroupNewer*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # The same as above, but the sound is played at most 'ticks' milliseconds 
-proc Mix_PlayChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int, 
-                           ticks: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Play an audio chunk on a specific channel.
-  #   If the specified channel is -1, play on the first free channel.
-  #   If 'loops' is greater than zero, loop the sound that many times.
-  #   If 'loops' is -1, loop inifinitely (~65000 times).
-  #   Returns which channel was used to play the sound.
-  #
-proc Mix_PlayChannel*(channel: int, chunk: PMix_Chunk, loops: int): int
-proc Mix_PlayMusic*(music: PMix_Music, loops: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Fade in music or a channel over "ms" milliseconds, same semantics as the "Play" functions 
-proc Mix_FadeInMusic*(music: PMix_Music, loops: int, ms: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeInChannelTimed*(channel: int, chunk: PMix_Chunk, loops: int, 
-                             ms: int, ticks: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeInChannel*(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int
-  # Set the volume in the range of 0-128 of a specific channel or chunk.
-  #   If the specified channel is -1, set volume for all channels.
-  #   Returns the original volume.
-  #   If the specified volume is -1, just return the current volume.
-  #
-proc Mix_Volume*(channel: int, volume: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_VolumeChunk*(chunk: PMix_Chunk, volume: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_VolumeMusic*(volume: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Halt playing of a particular channel 
-proc Mix_HaltChannel*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_HaltGroup*(tag: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_HaltMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Change the expiration delay for a particular channel.
-  #   The sample will stop playing after the 'ticks' milliseconds have elapsed,
-  #   or remove the expiration if 'ticks' is -1
-  #
-proc Mix_ExpireChannel*(channel: int, ticks: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Halt a channel, fading it out progressively till it's silent
-  #   The ms parameter indicates the number of milliseconds the fading
-  #   will take.
-  # 
-proc Mix_FadeOutChannel*(which: int, ms: int): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeOutGroup*(tag: int, ms: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadeOutMusic*(ms: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Query the fading status of a channel 
-proc Mix_FadingMusic*(): TMix_Fading{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_FadingChannel*(which: int): TMix_Fading{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Pause/Resume a particular channel 
-proc Mix_Pause*(channel: int){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_Resume*(channel: int){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_Paused*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Pause/Resume the music stream 
-proc Mix_PauseMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_ResumeMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_RewindMusic*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_PausedMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Set the current position in the music stream.
-  #  This returns 0 if successful, or -1 if it failed or isn't implemented.
-  #  This function is only implemented for MOD music formats (set pattern
-  #  order number) and for OGG music (set position in seconds), at the
-  #  moment.
-  #
-proc Mix_SetMusicPosition*(position: float64): int{.cdecl, 
-    importc, dynlib: SDL_MixerLibName.}
-  # Check the status of a specific channel.
-  #   If the specified channel is -1, check all channels.
-  #
-proc Mix_Playing*(channel: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_PlayingMusic*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Stop music and set external music playback command 
-proc Mix_SetMusicCMD*(command: cstring): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Synchro value is set by MikMod from modules while playing 
-proc Mix_SetSynchroValue*(value: int): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-proc Mix_GetSynchroValue*(): int{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  #
-  #  Get the Mix_Chunk currently associated with a mixer channel
-  #    Returns nil if it's an invalid channel, or there's no chunk associated.
-  #
-proc Mix_GetChunk*(channel: int): PMix_Chunk{.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # Close the mixer, halting all playing audio 
-proc Mix_CloseAudio*(){.cdecl, importc, dynlib: SDL_MixerLibName.}
-  # We'll use SDL for reporting errors 
-proc Mix_SetError*(fmt: cstring)
-proc Mix_GetError*(): cstring
-# implementation
-
-proc SDL_MIXER_VERSION(X: var TSDL_version) = 
-  X.major = SDL_MIXER_MAJOR_VERSION
-  X.minor = SDL_MIXER_MINOR_VERSION
-  X.patch = SDL_MIXER_PATCHLEVEL
-
-proc Mix_LoadWAV(filename: cstring): PMix_Chunk = 
-  result = Mix_LoadWAV_RW(SDL_RWFromFile(filename, "rb"), 1)
-
-proc Mix_PlayChannel(channel: int, chunk: PMix_Chunk, loops: int): int = 
-  result = Mix_PlayChannelTimed(channel, chunk, loops, - 1)
-
-proc Mix_FadeInChannel(channel: int, chunk: PMix_Chunk, loops: int, ms: int): int = 
-  result = Mix_FadeInChannelTimed(channel, chunk, loops, ms, - 1)
-
-proc Mix_SetError(fmt: cstring) = 
-  SDL_SetError(fmt)
-
-proc Mix_GetError(): cstring = 
-  result = SDL_GetError()
diff --git a/lib/wrappers/sdl/sdl_net.nim b/lib/wrappers/sdl/sdl_net.nim
deleted file mode 100755
index f27a674ae..000000000
--- a/lib/wrappers/sdl/sdl_net.nim
+++ /dev/null
@@ -1,431 +0,0 @@
-
-#******************************************************************************
-#
-#  $Id: sdl_net.pas,v 1.7 2005/01/01 02:14:21 savage Exp $
-#
-#
-#                                                                              
-#       Borland Delphi SDL_Net - A x-platform network library for use with SDL.
-#       Conversion of the Simple DirectMedia Layer Network Headers             
-#                                                                              
-# Portions created by Sam Lantinga <slouken@devolution.com> are                
-# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga                     
-# 5635-34 Springhouse Dr.                                                      
-# Pleasanton, CA 94588 (USA)                                                   
-#                                                                              
-# All Rights Reserved.                                                         
-#                                                                              
-# The original files are : SDL_net.h                                           
-#                                                                              
-# The initial developer of this Pascal code was :                              
-# Dominqiue Louis <Dominique@SavageSoftware.com.au>                            
-#                                                                              
-# Portions created by Dominqiue Louis are                                      
-# Copyright (C) 2000 - 2001 Dominqiue Louis.                                   
-#                                                                              
-#                                                                              
-# Contributor(s)                                                               
-# --------------                                                               
-# Matthias Thoma <ma.thoma@gmx.de>                                             
-#                                                                              
-# Obtained through:                                                            
-# Joint Endeavour of Delphi Innovators ( Project JEDI )                        
-#                                                                              
-# You may retrieve the latest version of this file at the Project              
-# JEDI home page, located at http://delphi-jedi.org                            
-#                                                                              
-# The contents of this file are used with permission, subject to               
-# the Mozilla Public License Version 1.1 (the "License"); you may              
-# not use this file except in compliance with the License. You may             
-# obtain a copy of the License at                                              
-# http://www.mozilla.org/MPL/MPL-1.1.html                                      
-#                                                                              
-# Software distributed under the License is distributed on an                  
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               
-# implied. See the License for the specific language governing                 
-# rights and limitations under the License.                                    
-#                                                                              
-# Description                                                                  
-# -----------                                                                  
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Requires                                                                     
-# --------                                                                     
-#   SDL.pas somehere in your search path                                       
-#                                                                              
-# Programming Notes                                                            
-# -----------------                                                            
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Revision History                                                             
-# ----------------                                                             
-#   April   09 2001 - DL : Initial Translation                                 
-#                                                                              
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more     
-#                          Pascal compilers. Initial support is now included   
-#                          for GnuPascal, VirtualPascal, TMT and obviously     
-#                          continue support for Delphi Kylix and FreePascal.   
-#                                                                              
-#   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction     
-#                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support              
-#                                                                              
-#   April   30 2003 - DL : under instruction from David Mears AKA              
-#                          Jason Siletto, I have added FPC Linux support.      
-#                          This was compiled with fpc 1.1, so remember to set  
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*   
-#                                                                              
-#
-#  $Log: sdl_net.pas,v $
-#  Revision 1.7  2005/01/01 02:14:21  savage
-#  Updated to v1.2.5
-#
-#  Revision 1.6  2004/08/14 22:54:30  savage
-#  Updated so that Library name defines are correctly defined for MacOS X.
-#
-#  Revision 1.5  2004/05/10 14:10:04  savage
-#  Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ).
-#
-#  Revision 1.4  2004/04/13 09:32:08  savage
-#  Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary.
-#
-#  Revision 1.3  2004/04/01 20:53:23  savage
-#  Changed Linux Shared Object names so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site.
-#
-#  Revision 1.2  2004/03/30 20:23:28  savage
-#  Tidied up use of UNIX compiler directive.
-#
-#  Revision 1.1  2004/02/16 22:16:40  savage
-#  v1.0 changes
-#
-#
-#
-#******************************************************************************
-
-import
-  sdl
-
-when defined(windows):
-  const SDLNetLibName = "SDL_net.dll"
-elif defined(macosx):
-  const SDLNetLibName = "libSDL_net.dylib"
-else:
-  const SDLNetLibName = "libSDL_net.so"
-
-const                         #* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL *
-  SDL_NET_MAJOR_VERSION* = 1'i8
-  SDL_NET_MINOR_VERSION* = 2'i8
-  SDL_NET_PATCHLEVEL* = 5'i8  # SDL_Net.h constants
-                              #* Resolve a host name and port to an IP address in network form.
-                              #   If the function succeeds, it will return 0.
-                              #   If the host couldn't be resolved, the host portion of the returned
-                              #   address will be INADDR_NONE, and the function will return -1.
-                              #   If 'host' is NULL, the resolved host will be set to INADDR_ANY.
-                              # *
-  INADDR_ANY* = 0x00000000
-  INADDR_NONE* = 0xFFFFFFFF #***********************************************************************
-                            #* UDP network API                                                     *
-                            #***********************************************************************
-                            #* The maximum channels on a a UDP socket *
-  SDLNET_MAX_UDPCHANNELS* = 32 #* The maximum addresses bound to a single UDP socket channel *
-  SDLNET_MAX_UDPADDRESSES* = 4
-
-type  # SDL_net.h types
-      #***********************************************************************
-      #* IPv4 hostname resolution API                                        *
-      #***********************************************************************
-  PIPAddress* = ptr TIPAddress
-  TIPAddress*{.final.} = object  #* TCP network API                                                     
-    host*: Uint32             # 32-bit IPv4 host address */
-    port*: Uint16             # 16-bit protocol port */
-  
-  PTCPSocket* = ptr TTCPSocket
-  TTCPSocket*{.final.} = object  #***********************************************************************
-                                 #* UDP network API                                                     *
-                                 #***********************************************************************
-    ready*: int
-    channel*: int
-    remoteAddress*: TIPaddress
-    localAddress*: TIPaddress
-    sflag*: int
-
-  PUDP_Channel* = ptr TUDP_Channel
-  TUDP_Channel*{.final.} = object 
-    numbound*: int
-    address*: array[0..SDLNET_MAX_UDPADDRESSES - 1, TIPAddress]
-
-  PUDPSocket* = ptr TUDPSocket
-  TUDPSocket*{.final.} = object 
-    ready*: int
-    channel*: int
-    address*: TIPAddress
-    binding*: array[0..SDLNET_MAX_UDPCHANNELS - 1, TUDP_Channel]
-
-  PUDPpacket* = ptr TUDPpacket
-  PPUDPpacket* = ptr PUDPpacket
-  TUDPpacket*{.final.} = object  #***********************************************************************
-                                 #* Hooks for checking sockets for available data                       *
-                                 #***********************************************************************
-    channel*: int             #* The src/dst channel of the packet *
-    data*: PUint8             #* The packet data *
-    length*: int              #* The length of the packet data *
-    maxlen*: int              #* The size of the data buffer *
-    status*: int              #* packet status after sending *
-    address*: TIPAddress      #* The source/dest address of an incoming/outgoing packet *
-  
-  PSDLNet_Socket* = ptr TSDLNet_Socket
-  TSDLNet_Socket*{.final.} = object 
-    ready*: int
-    channel*: int
-
-  PSDLNet_SocketSet* = ptr TSDLNet_SocketSet
-  TSDLNet_SocketSet*{.final.} = object  #* Any network socket can be safely cast to this socket type *
-    numsockets*: int
-    maxsockets*: int
-    sockets*: PSDLNet_Socket
-
-  PSDLNet_GenericSocket* = ptr TSDLNet_GenericSocket
-  TSDLNet_GenericSocket*{.final.} = object  # This macro can be used to fill a version structure with the compile-time
-                                            #  version of the SDL_net library. 
-    ready*: int
-
-
-proc SDL_NET_VERSION*(X: var TSDL_version)
-  #* Initialize/Cleanup the network API
-  #   SDL must be initialized before calls to functions in this library,
-  #   because this library uses utility functions from the SDL library.
-  #*
-proc SDLNet_Init*(): int{.cdecl, importc, dynlib: SDLNetLibName.}
-proc SDLNet_Quit*(){.cdecl, importc, dynlib: SDLNetLibName.}
-  #* Resolve a host name and port to an IP address in network form.
-  #   If the function succeeds, it will return 0.
-  #   If the host couldn't be resolved, the host portion of the returned
-  #   address will be INADDR_NONE, and the function will return -1.
-  #   If 'host' is NULL, the resolved host will be set to INADDR_ANY.
-  # *
-proc SDLNet_ResolveHost*(address: var TIPaddress, host: cstring, port: Uint16): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-  #* Resolve an ip address to a host name in canonical form.
-  #   If the ip couldn't be resolved, this function returns NULL,
-  #   otherwise a pointer to a static buffer containing the hostname
-  #   is returned.  Note that this function is not thread-safe.
-  #*
-proc SDLNet_ResolveIP*(ip: var TIPaddress): cstring{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #***********************************************************************
-  #* TCP network API                                                     *
-  #***********************************************************************
-  #* Open a TCP network socket
-  #   If ip.host is INADDR_NONE, this creates a local server socket on the
-  #   given port, otherwise a TCP connection to the remote host and port is
-  #   attempted.  The address passed in should already be swapped to network
-  #   byte order (addresses returned from SDLNet_ResolveHost() are already
-  #   in the correct form).
-  #   The newly created socket is returned, or NULL if there was an error.
-  #*
-proc SDLNet_TCP_Open*(ip: var TIPaddress): PTCPSocket{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Accept an incoming connection on the given server socket.
-  #   The newly created socket is returned, or NULL if there was an error.
-  #*
-proc SDLNet_TCP_Accept*(server: PTCPsocket): PTCPSocket{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Get the IP address of the remote system associated with the socket.
-  #   If the socket is a server socket, this function returns NULL.
-  #*
-proc SDLNet_TCP_GetPeerAddress*(sock: PTCPsocket): PIPAddress{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Send 'len' bytes of 'data' over the non-server socket 'sock'
-  #   This function returns the actual amount of data sent.  If the return value
-  #   is less than the amount of data sent, then either the remote connection was
-  #   closed, or an unknown socket error occurred.
-  #*
-proc SDLNet_TCP_Send*(sock: PTCPsocket, data: Pointer, length: int): int{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Receive up to 'maxlen' bytes of data over the non-server socket 'sock',
-  #   and store them in the buffer pointed to by 'data'.
-  #   This function returns the actual amount of data received.  If the return
-  #   value is less than or equal to zero, then either the remote connection was
-  #   closed, or an unknown socket error occurred.
-  #*
-proc SDLNet_TCP_Recv*(sock: PTCPsocket, data: Pointer, maxlen: int): int{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Close a TCP network socket *
-proc SDLNet_TCP_Close*(sock: PTCPsocket){.cdecl, importc, dynlib: SDLNetLibName.}
-  #***********************************************************************
-  #* UDP network API                                                     *
-  #***********************************************************************
-  #* Allocate/resize/free a single UDP packet 'size' bytes long.
-  #   The new packet is returned, or NULL if the function ran out of memory.
-  # *
-proc SDLNet_AllocPacket*(size: int): PUDPpacket{.cdecl, importc, dynlib: SDLNetLibName.}
-proc SDLNet_ResizePacket*(packet: PUDPpacket, newsize: int): int{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-proc SDLNet_FreePacket*(packet: PUDPpacket){.cdecl, importc, dynlib: SDLNetLibName.}
-  #* Allocate/Free a UDP packet vector (array of packets) of 'howmany' packets,
-  #   each 'size' bytes long.
-  #   A pointer to the first packet in the array is returned, or NULL if the
-  #   function ran out of memory.
-  # *
-proc SDLNet_AllocPacketV*(howmany: int, size: int): PUDPpacket{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-proc SDLNet_FreePacketV*(packetV: PUDPpacket){.cdecl, importc, dynlib: SDLNetLibName.}
-  #* Open a UDP network socket
-  #   If 'port' is non-zero, the UDP socket is bound to a local port.
-  #   This allows other systems to send to this socket via a known port.
-  #*
-proc SDLNet_UDP_Open*(port: Uint16): PUDPsocket{.cdecl, importc, dynlib: SDLNetLibName.}
-  #* Bind the address 'address' to the requested channel on the UDP socket.
-  #   If the channel is -1, then the first unbound channel will be bound with
-  #   the given address as it's primary address.
-  #   If the channel is already bound, this new address will be added to the
-  #   list of valid source addresses for packets arriving on the channel.
-  #   If the channel is not already bound, then the address becomes the primary
-  #   address, to which all outbound packets on the channel are sent.
-  #   This function returns the channel which was bound, or -1 on error.
-  #*
-proc SDLNet_UDP_Bind*(sock: PUDPsocket, channel: int, address: var TIPaddress): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-  #* Unbind all addresses from the given channel *
-proc SDLNet_UDP_Unbind*(sock: PUDPsocket, channel: int){.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Get the primary IP address of the remote system associated with the
-  #   socket and channel.  If the channel is -1, then the primary IP port
-  #   of the UDP socket is returned -- this is only meaningful for sockets
-  #   opened with a specific port.
-  #   If the channel is not bound and not -1, this function returns NULL.
-  # *
-proc SDLNet_UDP_GetPeerAddress*(sock: PUDPsocket, channel: int): PIPAddress{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-  #* Send a vector of packets to the the channels specified within the packet.
-  #   If the channel specified in the packet is -1, the packet will be sent to
-  #   the address in the 'src' member of the packet.
-  #   Each packet will be updated with the status of the packet after it has
-  #   been sent, -1 if the packet send failed.
-  #   This function returns the number of packets sent.
-  #*
-proc SDLNet_UDP_SendV*(sock: PUDPsocket, packets: PPUDPpacket, npackets: int): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-  #* Send a single packet to the specified channel.
-  #   If the channel specified in the packet is -1, the packet will be sent to
-  #   the address in the 'src' member of the packet.
-  #   The packet will be updated with the status of the packet after it has
-  #   been sent.
-  #   This function returns 1 if the packet was sent, or 0 on error.
-  #*
-proc SDLNet_UDP_Send*(sock: PUDPsocket, channel: int, packet: PUDPpacket): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-  #* Receive a vector of pending packets from the UDP socket.
-  #   The returned packets contain the source address and the channel they arrived
-  #   on.  If they did not arrive on a bound channel, the the channel will be set
-  #   to -1.
-  #   The channels are checked in highest to lowest order, so if an address is
-  #   bound to multiple channels, the highest channel with the source address
-  #   bound will be returned.
-  #   This function returns the number of packets read from the network, or -1
-  #   on error.  This function does not block, so can return 0 packets pending.
-  #*
-proc SDLNet_UDP_RecvV*(sock: PUDPsocket, packets: PPUDPpacket): int{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Receive a single packet from the UDP socket.
-  #   The returned packet contains the source address and the channel it arrived
-  #   on.  If it did not arrive on a bound channel, the the channel will be set
-  #   to -1.
-  #   The channels are checked in highest to lowest order, so if an address is
-  #   bound to multiple channels, the highest channel with the source address
-  #   bound will be returned.
-  #   This function returns the number of packets read from the network, or -1
-  #   on error.  This function does not block, so can return 0 packets pending.
-  #*
-proc SDLNet_UDP_Recv*(sock: PUDPsocket, packet: PUDPpacket): int{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Close a UDP network socket *
-proc SDLNet_UDP_Close*(sock: PUDPsocket){.cdecl, importc, dynlib: SDLNetLibName.}
-  #***********************************************************************
-  #* Hooks for checking sockets for available data                       *
-  #***********************************************************************
-  #* Allocate a socket set for use with SDLNet_CheckSockets()
-  #   This returns a socket set for up to 'maxsockets' sockets, or NULL if
-  #   the function ran out of memory.
-  # *
-proc SDLNet_AllocSocketSet*(maxsockets: int): PSDLNet_SocketSet{.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #* Add a socket to a set of sockets to be checked for available data *
-proc SDLNet_AddSocket*(theSet: PSDLNet_SocketSet, sock: PSDLNet_GenericSocket): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-proc SDLNet_TCP_AddSocket*(theSet: PSDLNet_SocketSet, sock: PTCPSocket): int
-proc SDLNet_UDP_AddSocket*(theSet: PSDLNet_SocketSet, sock: PUDPSocket): int
-  #* Remove a socket from a set of sockets to be checked for available data *
-proc SDLNet_DelSocket*(theSet: PSDLNet_SocketSet, sock: PSDLNet_GenericSocket): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-proc SDLNet_TCP_DelSocket*(theSet: PSDLNet_SocketSet, sock: PTCPSocket): int
-  # SDLNet_DelSocket(set, (SDLNet_GenericSocket)sock)
-proc SDLNet_UDP_DelSocket*(theSet: PSDLNet_SocketSet, sock: PUDPSocket): int
-  #SDLNet_DelSocket(set, (SDLNet_GenericSocket)sock)
-  #* This function checks to see if data is available for reading on the
-  #   given set of sockets.  If 'timeout' is 0, it performs a quick poll,
-  #   otherwise the function returns when either data is available for
-  #   reading, or the timeout in milliseconds has elapsed, which ever occurs
-  #   first.  This function returns the number of sockets ready for reading,
-  #   or -1 if there was an error with the select() system call.
-  #*
-proc SDLNet_CheckSockets*(theSet: PSDLNet_SocketSet, timeout: Sint32): int{.
-    cdecl, importc, dynlib: SDLNetLibName.}
-  #* After calling SDLNet_CheckSockets(), you can use this function on a
-  #   socket that was in the socket set, to find out if data is available
-  #   for reading.
-  #*
-proc SDLNet_SocketReady*(sock: PSDLNet_GenericSocket): bool
-  #* Free a set of sockets allocated by SDL_NetAllocSocketSet() *
-proc SDLNet_FreeSocketSet*(theSet: PSDLNet_SocketSet){.cdecl, 
-    importc, dynlib: SDLNetLibName.}
-  #***********************************************************************
-  #* Platform-independent data conversion functions                      *
-  #***********************************************************************
-  #* Write a 16/32 bit value to network packet buffer *
-proc SDLNet_Write16*(value: Uint16, area: Pointer){.cdecl, importc, dynlib: SDLNetLibName.}
-proc SDLNet_Write32*(value: Uint32, area: Pointer){.cdecl, importc, dynlib: SDLNetLibName.}
-  #* Read a 16/32 bit value from network packet buffer *
-proc SDLNet_Read16*(area: Pointer): Uint16{.cdecl, importc, dynlib: SDLNetLibName.}
-proc SDLNet_Read32*(area: Pointer): Uint32{.cdecl, importc, dynlib: SDLNetLibName.}
-  #***********************************************************************
-  #* Error reporting functions                                           *
-  #***********************************************************************
-  #* We'll use SDL's functions for error reporting *
-proc SDLNet_SetError*(fmt: cstring)
-proc SDLNet_GetError*(): cstring
-# implementation
-
-proc SDL_NET_VERSION(X: var TSDL_version) = 
-  X.major = SDL_NET_MAJOR_VERSION
-  X.minor = SDL_NET_MINOR_VERSION
-  X.patch = SDL_NET_PATCHLEVEL
-
-proc SDLNet_TCP_AddSocket(theSet: PSDLNet_SocketSet, sock: PTCPSocket): int = 
-  result = SDLNet_AddSocket(theSet, cast[PSDLNet_GenericSocket](sock))
-
-proc SDLNet_UDP_AddSocket(theSet: PSDLNet_SocketSet, sock: PUDPSocket): int = 
-  result = SDLNet_AddSocket(theSet, cast[PSDLNet_GenericSocket](sock))
-
-proc SDLNet_TCP_DelSocket(theSet: PSDLNet_SocketSet, sock: PTCPSocket): int = 
-  result = SDLNet_DelSocket(theSet, cast[PSDLNet_GenericSocket](sock))
-
-proc SDLNet_UDP_DelSocket(theSet: PSDLNet_SocketSet, sock: PUDPSocket): int = 
-  result = SDLNet_DelSocket(theSet, cast[PSDLNet_GenericSocket](sock))
-
-proc SDLNet_SocketReady(sock: PSDLNet_GenericSocket): bool = 
-  result = ((sock != nil) and (sock.ready == 1))
-
-proc SDLNet_SetError(fmt: cstring) = 
-  SDL_SetError(fmt)
-
-proc SDLNet_GetError(): cstring = 
-  result = SDL_GetError()
diff --git a/lib/wrappers/sdl/sdl_ttf.nim b/lib/wrappers/sdl/sdl_ttf.nim
deleted file mode 100755
index 724c2f634..000000000
--- a/lib/wrappers/sdl/sdl_ttf.nim
+++ /dev/null
@@ -1,346 +0,0 @@
-
-#
-#  $Id: sdl_ttf.pas,v 1.18 2007/06/01 11:16:33 savage Exp $
-#
-#
-#******************************************************************************
-#                                                                              
-#          JEDI-SDL : Pascal units for SDL - Simple DirectMedia Layer          
-#       Conversion of the Simple DirectMedia Layer Headers                     
-#                                                                              
-# Portions created by Sam Lantinga <slouken@devolution.com> are                
-# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga                     
-# 5635-34 Springhouse Dr.                                                      
-# Pleasanton, CA 94588 (USA)                                                   
-#                                                                              
-# All Rights Reserved.                                                         
-#                                                                              
-# The original files are : SDL_ttf.h                                           
-#                                                                              
-# The initial developer of this Pascal code was :                              
-# Dominqiue Louis <Dominique@SavageSoftware.com.au>                            
-#                                                                              
-# Portions created by Dominqiue Louis are                                      
-# Copyright (C) 2000 - 2001 Dominqiue Louis.                                   
-#                                                                              
-#                                                                              
-# Contributor(s)                                                               
-# --------------                                                               
-# Tom Jones <tigertomjones@gmx.de>  His Project inspired this conversion       
-#                                                                              
-# Obtained through:                                                            
-# Joint Endeavour of Delphi Innovators ( Project JEDI )                        
-#                                                                              
-# You may retrieve the latest version of this file at the Project              
-# JEDI home page, located at http://delphi-jedi.org                            
-#                                                                              
-# The contents of this file are used with permission, subject to               
-# the Mozilla Public License Version 1.1 (the "License"); you may              
-# not use this file except in compliance with the License. You may             
-# obtain a copy of the License at                                              
-# http://www.mozilla.org/MPL/MPL-1.1.html                                      
-#                                                                              
-# Software distributed under the License is distributed on an                  
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               
-# implied. See the License for the specific language governing                 
-# rights and limitations under the License.                                    
-#                                                                              
-# Description                                                                  
-# -----------                                                                  
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Requires                                                                     
-# --------                                                                     
-#   The SDL Runtime libraris on Win32  : SDL.dll on Linux : libSDL.so          
-#   They are available from...                                                 
-#   http://www.libsdl.org .                                                    
-#                                                                              
-# Programming Notes                                                            
-# -----------------                                                            
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Revision History                                                             
-# ----------------                                                             
-#   December 08 2002 - DL : Fixed definition of TTF_RenderUnicode_Solid        
-#                                                                              
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more     
-#                          Pascal compilers. Initial support is now included   
-#                          for GnuPascal, VirtualPascal, TMT and obviously     
-#                          continue support for Delphi Kylix and FreePascal.   
-#                                                                              
-#   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction     
-#                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support              
-#                                                                              
-#   April   30 2003 - DL : under instruction from David Mears AKA              
-#                          Jason Siletto, I have added FPC Linux support.      
-#                          This was compiled with fpc 1.1, so remember to set  
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*   
-#                                                                              
-#
-#  $Log: sdl_ttf.pas,v $
-#  Revision 1.18  2007/06/01 11:16:33  savage
-#  Added IFDEF UNIX for Workaround.
-#
-#  Revision 1.17  2007/06/01 08:38:21  savage
-#  Added TTF_RenderText_Solid workaround as suggested by Michalis Kamburelis
-#
-#  Revision 1.16  2007/05/29 21:32:14  savage
-#  Changes as suggested by Almindor for 64bit compatibility.
-#
-#  Revision 1.15  2007/05/20 20:32:45  savage
-#  Initial Changes to Handle 64 Bits
-#
-#  Revision 1.14  2006/12/02 00:19:01  savage
-#  Updated to latest version
-#
-#  Revision 1.13  2005/04/10 11:48:33  savage
-#  Changes as suggested by Michalis, thanks.
-#
-#  Revision 1.12  2005/01/05 01:47:14  savage
-#  Changed LibName to reflect what MacOS X should have. ie libSDL*-1.2.0.dylib respectively.
-#
-#  Revision 1.11  2005/01/04 23:14:57  savage
-#  Changed LibName to reflect what most Linux distros will have. ie libSDL*-1.2.so.0 respectively.
-#
-#  Revision 1.10  2005/01/02 19:07:32  savage
-#  Slight bug fix to use LongInt instead of Long ( Thanks Michalis Kamburelis )
-#
-#  Revision 1.9  2005/01/01 02:15:20  savage
-#  Updated to v2.0.7
-#
-#  Revision 1.8  2004/10/07 21:02:32  savage
-#  Fix for FPC
-#
-#  Revision 1.7  2004/09/30 22:39:50  savage
-#  Added a true type font class which contains a wrap text function.
-#  Changed the sdl_ttf.pas header to reflect the future of jedi-sdl.
-#
-#  Revision 1.6  2004/08/14 22:54:30  savage
-#  Updated so that Library name defines are correctly defined for MacOS X.
-#
-#  Revision 1.5  2004/05/10 14:10:04  savage
-#  Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ).
-#
-#  Revision 1.4  2004/04/13 09:32:08  savage
-#  Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary.
-#
-#  Revision 1.3  2004/04/01 20:53:24  savage
-#  Changed Linux Shared Object names so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site.
-#
-#  Revision 1.2  2004/03/30 20:23:28  savage
-#  Tidied up use of UNIX compiler directive.
-#
-#  Revision 1.1  2004/02/16 22:16:40  savage
-#  v1.0 changes
-#
-#  
-#
-#******************************************************************************
-#
-#  Define this to workaround a known bug in some freetype versions.
-#  The error manifests as TTF_RenderGlyph_Solid returning nil (error)
-#  and error message (in SDL_Error) is
-#  "Failed loading DPMSDisable: /usr/lib/libX11.so.6: undefined symbol: DPMSDisable"
-#  See [http://lists.libsdl.org/pipermail/sdl-libsdl.org/2007-March/060459.html]
-#
-
-import sdl
-
-when defined(windows):
-  const SDLttfLibName = "SDL_ttf.dll"
-elif defined(macosx):
-  const SDLttfLibName = "libSDL_ttf-2.0.0.dylib"
-else:
-  const SDLttfLibName = "libSDL_ttf.so"
-
-const
-  SDL_TTF_MAJOR_VERSION* = 2'i8
-  SDL_TTF_MINOR_VERSION* = 0'i8
-  SDL_TTF_PATCHLEVEL* = 8'i8     # Backwards compatibility
-  TTF_MAJOR_VERSION* = SDL_TTF_MAJOR_VERSION
-  TTF_MINOR_VERSION* = SDL_TTF_MINOR_VERSION
-  TTF_PATCHLEVEL* = SDL_TTF_PATCHLEVEL #*
-                                       #   Set and retrieve the font style
-                                       #   This font style is implemented by modifying the font glyphs, and
-                                       #   doesn't reflect any inherent properties of the truetype font file.
-                                       #*
-  TTF_STYLE_NORMAL* = 0x00000000
-  TTF_STYLE_BOLD* = 0x00000001
-  TTF_STYLE_ITALIC* = 0x00000002
-  TTF_STYLE_UNDERLINE* = 0x00000004 # ZERO WIDTH NO-BREAKSPACE (Unicode byte order mark)
-  UNICODE_BOM_NATIVE* = 0x0000FEFF
-  UNICODE_BOM_SWAPPED* = 0x0000FFFE
-
-type 
-  PTTF_Font* = ptr TTTF_font
-  TTTF_Font*{.final.} = object  # This macro can be used to fill a version structure with the compile-time
-                                #  version of the SDL_ttf library. 
-
-proc SDL_TTF_VERSION*(X: var TSDL_version)
-  # This function gets the version of the dynamically linked SDL_ttf library.
-  #     It should NOT be used to fill a version structure, instead you should use the
-  #     SDL_TTF_VERSION() macro. 
-proc TTF_Linked_Version*(): PSDL_version{.cdecl, importc, dynlib: SDLttfLibName.}
-  # This function tells the library whether UNICODE text is generally
-  #   byteswapped.  A UNICODE BOM character in a string will override
-  #   this setting for the remainder of that string.
-  #
-proc TTF_ByteSwappedUNICODE*(swapped: int){.cdecl, importc, dynlib: SDLttfLibName.}
-  #returns 0 on succes, -1 if error occurs
-proc TTF_Init*(): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  #
-  # Open a font file and create a font of the specified point size.
-  # Some .fon fonts will have several sizes embedded in the file, so the
-  # point size becomes the index of choosing which size.  If the value
-  # is too high, the last indexed size will be the default.
-  #
-proc TTF_OpenFont*(filename: cstring, ptsize: int): PTTF_Font{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-proc TTF_OpenFontIndex*(filename: cstring, ptsize: int, index: int32): PTTF_Font{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_OpenFontRW*(src: PSDL_RWops, freesrc: int, ptsize: int): PTTF_Font{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_OpenFontIndexRW*(src: PSDL_RWops, freesrc: int, ptsize: int, 
-                          index: int32): PTTF_Font{.cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_GetFontStyle*(font: PTTF_Font): int{.cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_SetFontStyle*(font: PTTF_Font, style: int){.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-  # Get the total height of the font - usually equal to point size 
-proc TTF_FontHeight*(font: PTTF_Font): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  # Get the offset from the baseline to the top of the font
-  #   This is a positive value, relative to the baseline.
-  #
-proc TTF_FontAscent*(font: PTTF_Font): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  # Get the offset from the baseline to the bottom of the font
-  #   This is a negative value, relative to the baseline.
-  #
-proc TTF_FontDescent*(font: PTTF_Font): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  # Get the recommended spacing between lines of text for this font 
-proc TTF_FontLineSkip*(font: PTTF_Font): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  # Get the number of faces of the font 
-proc TTF_FontFaces*(font: PTTF_Font): int32{.cdecl, importc, dynlib: SDLttfLibName.}
-  # Get the font face attributes, if any 
-proc TTF_FontFaceIsFixedWidth*(font: PTTF_Font): int{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-proc TTF_FontFaceFamilyName*(font: PTTF_Font): cstring{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-proc TTF_FontFaceStyleName*(font: PTTF_Font): cstring{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-  # Get the metrics (dimensions) of a glyph 
-proc TTF_GlyphMetrics*(font: PTTF_Font, ch: Uint16, minx: var int, 
-                       maxx: var int, miny: var int, maxy: var int, 
-                       advance: var int): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  # Get the dimensions of a rendered string of text 
-proc TTF_SizeText*(font: PTTF_Font, text: cstring, w: var int, y: var int): int{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_SizeUTF8*(font: PTTF_Font, text: cstring, w: var int, y: var int): int{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_SizeUNICODE*(font: PTTF_Font, text: PUint16, w: var int, y: var int): int{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-  # Create an 8-bit palettized surface and render the given text at
-  #   fast quality with the given font and color.  The 0 pixel is the
-  #   colorkey, giving a transparent background, and the 1 pixel is set
-  #   to the text color.
-  #   This function returns the new surface, or NULL if there was an error.
-  #
-proc TTF_RenderUTF8_Solid*(font: PTTF_Font, text: cstring, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_RenderUNICODE_Solid*(font: PTTF_Font, text: PUint16, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-  #
-  #Create an 8-bit palettized surface and render the given glyph at
-  #   fast quality with the given font and color.  The 0 pixel is the
-  #   colorkey, giving a transparent background, and the 1 pixel is set
-  #   to the text color.  The glyph is rendered without any padding or
-  #   centering in the X direction, and aligned normally in the Y direction.
-  #   This function returns the new surface, or NULL if there was an error.
-  #
-proc TTF_RenderGlyph_Solid*(font: PTTF_Font, ch: Uint16, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-  # Create an 8-bit palettized surface and render the given text at
-  #   high quality with the given font and colors.  The 0 pixel is background,
-  #   while other pixels have varying degrees of the foreground color.
-  #   This function returns the new surface, or NULL if there was an error.
-  #
-proc TTF_RenderText_Shaded*(font: PTTF_Font, text: cstring, fg: TSDL_Color, 
-                            bg: TSDL_Color): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-proc TTF_RenderUTF8_Shaded*(font: PTTF_Font, text: cstring, fg: TSDL_Color, 
-                            bg: TSDL_Color): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-proc TTF_RenderUNICODE_Shaded*(font: PTTF_Font, text: PUint16, fg: TSDL_Color, 
-                               bg: TSDL_Color): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-  # Create an 8-bit palettized surface and render the given glyph at
-  #   high quality with the given font and colors.  The 0 pixel is background,
-  #   while other pixels have varying degrees of the foreground color.
-  #   The glyph is rendered without any padding or centering in the X
-  #   direction, and aligned normally in the Y direction.
-  #   This function returns the new surface, or NULL if there was an error.
-  #
-proc TTF_RenderGlyph_Shaded*(font: PTTF_Font, ch: Uint16, fg: TSDL_Color, 
-                             bg: TSDL_Color): PSDL_Surface{.cdecl, 
-    importc, dynlib: SDLttfLibName.}
-  # Create a 32-bit ARGB surface and render the given text at high quality,
-  #   using alpha blending to dither the font with the given color.
-  #   This function returns the new surface, or NULL if there was an error.
-  #
-proc TTF_RenderText_Blended*(font: PTTF_Font, text: cstring, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_RenderUTF8_Blended*(font: PTTF_Font, text: cstring, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-proc TTF_RenderUNICODE_Blended*(font: PTTF_Font, text: PUint16, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-  # Create a 32-bit ARGB surface and render the given glyph at high quality,
-  #   using alpha blending to dither the font with the given color.
-  #   The glyph is rendered without any padding or centering in the X
-  #   direction, and aligned normally in the Y direction.
-  #   This function returns the new surface, or NULL if there was an error.
-  #
-proc TTF_RenderGlyph_Blended*(font: PTTF_Font, ch: Uint16, fg: TSDL_Color): PSDL_Surface{.
-    cdecl, importc, dynlib: SDLttfLibName.}
-  # For compatibility with previous versions, here are the old functions 
-  ##define TTF_RenderText(font, text, fg, bg)
-  #	TTF_RenderText_Shaded(font, text, fg, bg)
-  ##define TTF_RenderUTF8(font, text, fg, bg)	
-  #	TTF_RenderUTF8_Shaded(font, text, fg, bg)
-  ##define TTF_RenderUNICODE(font, text, fg, bg)	
-  #	TTF_RenderUNICODE_Shaded(font, text, fg, bg)
-  # Close an opened font file 
-proc TTF_CloseFont*(font: PTTF_Font){.cdecl, importc, dynlib: SDLttfLibName.}
-  #De-initialize TTF engine
-proc TTF_Quit*(){.cdecl, importc, dynlib: SDLttfLibName.}
-  # Check if the TTF engine is initialized
-proc TTF_WasInit*(): int{.cdecl, importc, dynlib: SDLttfLibName.}
-  # We'll use SDL for reporting errors
-proc TTF_SetError*(fmt: cstring)
-proc TTF_GetError*(): cstring
-# implementation
-
-proc SDL_TTF_VERSION(X: var TSDL_version) = 
-  X.major = SDL_TTF_MAJOR_VERSION
-  X.minor = SDL_TTF_MINOR_VERSION
-  X.patch = SDL_TTF_PATCHLEVEL
-
-proc TTF_SetError(fmt: cstring) = 
-  SDL_SetError(fmt)
-
-proc TTF_GetError(): cstring = 
-  result = SDL_GetError()
-
-when not(defined(Workaround_TTF_RenderText_Solid)): 
-  proc TTF_RenderText_Solid*(font: PTTF_Font, text: cstring, fg: TSDL_Color): PSDL_Surface{.
-      cdecl, importc, dynlib: SDLttfLibName.}
-else: 
-  proc TTF_RenderText_Solid(font: PTTF_Font, text: cstring, fg: TSDL_Color): PSDL_Surface = 
-    var Black: TSDL_Color # initialized to zero
-    Result = TTF_RenderText_Shaded(font, text, fg, Black)
diff --git a/lib/wrappers/sdl/sdlutils.pas b/lib/wrappers/sdl/sdlutils.pas
deleted file mode 100755
index e4206e935..000000000
--- a/lib/wrappers/sdl/sdlutils.pas
+++ /dev/null
@@ -1,4354 +0,0 @@
-unit sdlutils;
-{
-  $Id: sdlutils.pas,v 1.5 2006/11/19 18:56:44 savage Exp $
-
-}
-{******************************************************************************}
-{                                                                              }
-{       Borland Delphi SDL - Simple DirectMedia Layer                          }
-{                SDL Utility functions                                         }
-{                                                                              }
-{                                                                              }
-{ The initial developer of this Pascal code was :                              }
-{ Tom Jones <tigertomjones@gmx.de>                                             }
-{                                                                              }
-{ Portions created by Tom Jones are                                            }
-{ Copyright (C) 2000 - 2001 Tom Jones.                                         }
-{                                                                              }
-{                                                                              }
-{ Contributor(s)                                                               }
-{ --------------                                                               }
-{ Dominique Louis <Dominique@SavageSoftware.com.au>                            }
-{ Róbert Kisnémeth <mikrobi@freemail.hu>                                       }
-{                                                                              }
-{ Obtained through:                                                            }
-{ Joint Endeavour of Delphi Innovators ( Project JEDI )                        }
-{                                                                              }
-{ You may retrieve the latest version of this file at the Project              }
-{ JEDI home page, located at http://delphi-jedi.org                            }
-{                                                                              }
-{ The contents of this file are used with permission, subject to               }
-{ the Mozilla Public License Version 1.1 (the "License"); you may              }
-{ not use this file except in compliance with the License. You may             }
-{ obtain a copy of the License at                                              }
-{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
-{                                                                              }
-{ Software distributed under the License is distributed on an                  }
-{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               }
-{ implied. See the License for the specific language governing                 }
-{ rights and limitations under the License.                                    }
-{                                                                              }
-{ Description                                                                  }
-{ -----------                                                                  }
-{   Helper functions...                                                        }
-{                                                                              }
-{                                                                              }
-{ Requires                                                                     }
-{ --------                                                                     }
-{   SDL.dll on Windows platforms                                               }
-{   libSDL-1.1.so.0 on Linux platform                                          }
-{                                                                              }
-{ Programming Notes                                                            }
-{ -----------------                                                            }
-{                                                                              }
-{                                                                              }
-{                                                                              }
-{                                                                              }
-{ Revision History                                                             }
-{ ----------------                                                             }
-{               2000 - TJ : Initial creation                                   }
-{                                                                              }
-{   July   13   2001 - DL : Added PutPixel and GetPixel routines.              }
-{                                                                              }
-{   Sept   14   2001 - RK : Added flipping routines.                           }
-{                                                                              }
-{   Sept   19   2001 - RK : Added PutPixel & line drawing & blitting with ADD  }
-{                           effect. Fixed a bug in SDL_PutPixel & SDL_GetPixel }
-{                           Added PSDLRect()                                   }
-{   Sept   22   2001 - DL : Removed need for Windows.pas by defining types here}
-{                           Also removed by poor attempt or a dialog box       }
-{                                                                              }
-{   Sept   25   2001 - RK : Added PixelTest, NewPutPixel, SubPixel, SubLine,   }
-{                           SubSurface, MonoSurface & TexturedSurface          }
-{                                                                              }
-{   Sept   26   2001 - DL : Made change so that it refers to native Pascal     }
-{                           types rather that Windows types. This makes it more}
-{                           portable to Linix.                                 }
-{                                                                              }
-{   Sept   27   2001 - RK : SDLUtils now can be compiled with FreePascal       }
-{                                                                              }
-{   Oct    27   2001 - JF : Added ScrollY function                             }
-{                                                                              }
-{   Jan    21   2002 - RK : Added SDL_ZoomSurface and SDL_WarpSurface          }
-{                                                                              }
-{   Mar    28   2002 - JF : Added SDL_RotateSurface                            }
-{                                                                              }
-{   May    13   2002 - RK : Improved SDL_FillRectAdd & SDL_FillRectSub         }
-{                                                                              }
-{   May    27   2002 - YS : GradientFillRect function                          }
-{                                                                              }
-{   May    30   2002 - RK : Added SDL_2xBlit, SDL_Scanline2xBlit               }
-{                           & SDL_50Scanline2xBlit                             }
-{                                                                              }
-{  June    12   2002 - RK : Added SDL_PixelTestSurfaceVsRect                   }
-{                                                                              }
-{  June    12   2002 - JF : Updated SDL_PixelTestSurfaceVsRect                 }
-{                                                                              }
-{ November  9   2002 - JF : Added Jason's boolean Surface functions            }
-{                                                                              }
-{ December 10   2002 - DE : Added Dean's SDL_ClipLine function                 }
-{                                                                              }
-{    April 26   2003 - SS : Incorporated JF's changes to SDL_ClipLine          }
-{                           Fixed SDL_ClipLine bug for non-zero cliprect x, y  }
-{                           Added overloaded SDL_DrawLine for dashed lines     }
-{                                                                              }
-{******************************************************************************}
-{
-  $Log: sdlutils.pas,v $
-  Revision 1.5  2006/11/19 18:56:44  savage
-  Removed Hints and Warnings.
-
-  Revision 1.4  2004/06/02 19:38:53  savage
-  Changes to SDL_GradientFillRect as suggested by
-  Ángel Eduardo García Hernández.  Many thanks.
-
-  Revision 1.3  2004/05/29 23:11:54  savage
-  Changes to SDL_ScaleSurfaceRect as suggested by
-  Ángel Eduardo García Hernández to fix a colour issue with the function. Many thanks.
-
-  Revision 1.2  2004/02/14 00:23:39  savage
-  As UNIX is defined in jedi-sdl.inc this will be used to check linux compatability as well. Units have been changed to reflect this change.
-
-  Revision 1.1  2004/02/05 00:08:20  savage
-  Module 1.0 release
-
-
-}
-
-interface
-
-uses
-  sdl;
-
-type
-  TGradientStyle = ( gsHorizontal, gsVertical );
-
-// Pixel procedures
-function SDL_PixelTest( SrcSurface1 : PSDL_Surface; SrcRect1 : PSDL_Rect; SrcSurface2 :
-  PSDL_Surface; SrcRect2 : PSDL_Rect; Left1, Top1, Left2, Top2 : integer ) : Boolean;
-
-function SDL_GetPixel( SrcSurface : PSDL_Surface; x : integer; y : integer ) : Uint32;
-
-procedure SDL_PutPixel( DstSurface : PSDL_Surface; x : integer; y : integer; pixel :
-  Uint32 );
-
-procedure SDL_AddPixel( DstSurface : PSDL_Surface; x : cardinal; y : cardinal; Color :
-  cardinal );
-
-procedure SDL_SubPixel( DstSurface : PSDL_Surface; x : cardinal; y : cardinal; Color :
-  cardinal );
-
-// Line procedures
-procedure SDL_DrawLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal ); overload;
-
-procedure SDL_DrawLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal; DashLength, DashSpace : byte ); overload;
-
-procedure SDL_AddLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal );
-
-procedure SDL_SubLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal );
-
-// Surface procedures
-procedure SDL_AddSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-
-procedure SDL_SubSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-
-procedure SDL_MonoSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect; Color : cardinal );
-
-procedure SDL_TexturedSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect; Texture : PSDL_Surface;
-  TextureRect : PSDL_Rect );
-
-procedure SDL_ZoomSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect; DstSurface : PSDL_Surface; DstRect : PSDL_Rect );
-
-procedure SDL_WarpSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect; DstSurface : PSDL_Surface; UL, UR, LR, LL : PPoint );
-
-// Flip procedures
-procedure SDL_FlipRectH( DstSurface : PSDL_Surface; Rect : PSDL_Rect );
-
-procedure SDL_FlipRectV( DstSurface : PSDL_Surface; Rect : PSDL_Rect );
-
-function PSDLRect( aLeft, aTop, aWidth, aHeight : integer ) : PSDL_Rect;
-
-function SDLRect( aLeft, aTop, aWidth, aHeight : integer ) : TSDL_Rect; overload;
-
-function SDLRect( aRect : TRect ) : TSDL_Rect; overload;
-
-function SDL_ScaleSurfaceRect( SrcSurface : PSDL_Surface; SrcX1, SrcY1, SrcW, SrcH,
-  Width, Height : integer ) : PSDL_Surface;
-
-procedure SDL_ScrollY( DstSurface : PSDL_Surface; DifY : integer );
-
-procedure SDL_ScrollX( DstSurface : PSDL_Surface; DifX : integer );
-
-procedure SDL_RotateDeg( DstSurface, SrcSurface : PSDL_Surface; SrcRect :
-  PSDL_Rect; DestX, DestY, OffsetX, OffsetY : Integer; Angle : Integer );
-
-procedure SDL_RotateRad( DstSurface, SrcSurface : PSDL_Surface; SrcRect :
-  PSDL_Rect; DestX, DestY, OffsetX, OffsetY : Integer; Angle : Single );
-
-function ValidateSurfaceRect( DstSurface : PSDL_Surface; dstrect : PSDL_Rect ) : TSDL_Rect;
-
-// Fill Rect routine
-procedure SDL_FillRectAdd( DstSurface : PSDL_Surface; dstrect : PSDL_Rect; color : UInt32 );
-
-procedure SDL_FillRectSub( DstSurface : PSDL_Surface; dstrect : PSDL_Rect; color : UInt32 );
-
-procedure SDL_GradientFillRect( DstSurface : PSDL_Surface; const Rect : PSDL_Rect; const StartColor, EndColor : TSDL_Color; const Style : TGradientStyle );
-
-// NOTE for All SDL_2xblit... function : the dest surface must be 2x of the source surface!
-procedure SDL_2xBlit( Src, Dest : PSDL_Surface );
-
-procedure SDL_Scanline2xBlit( Src, Dest : PSDL_Surface );
-
-procedure SDL_50Scanline2xBlit( Src, Dest : PSDL_Surface );
-
-//
-function SDL_PixelTestSurfaceVsRect( SrcSurface1 : PSDL_Surface; SrcRect1 :
-  PSDL_Rect; SrcRect2 : PSDL_Rect; Left1, Top1, Left2, Top2 : integer ) :
-  boolean;
-
-// Jason's boolean Surface functions
-procedure SDL_ORSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-
-procedure SDL_ANDSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-
-
-procedure SDL_GTSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-
-procedure SDL_LTSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-
-function SDL_ClipLine( var x1, y1, x2, y2 : Integer; ClipRect : PSDL_Rect ) : boolean;
-
-implementation
-
-uses
-  Math;
-
-function SDL_PixelTest( SrcSurface1 : PSDL_Surface; SrcRect1 : PSDL_Rect; SrcSurface2 :
-  PSDL_Surface; SrcRect2 : PSDL_Rect; Left1, Top1, Left2, Top2 : integer ) : boolean;
-var
-  Src_Rect1, Src_Rect2 : TSDL_Rect;
-  right1, bottom1 : integer;
-  right2, bottom2 : integer;
-  Scan1Start, Scan2Start, ScanWidth, ScanHeight : cardinal;
-  Mod1, Mod2   : cardinal;
-  Addr1, Addr2 : cardinal;
-  BPP          : cardinal;
-  Pitch1, Pitch2 : cardinal;
-  TransparentColor1, TransparentColor2 : cardinal;
-  tx, ty       : cardinal;
-  StartTick    : cardinal;
-  Color1, Color2 : cardinal;
-begin
-  Result := false;
-  if SrcRect1 = nil then
-  begin
-    with Src_Rect1 do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface1.w;
-      h := SrcSurface1.h;
-    end;
-  end
-  else
-    Src_Rect1 := SrcRect1^;
-  if SrcRect2 = nil then
-  begin
-    with Src_Rect2 do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface2.w;
-      h := SrcSurface2.h;
-    end;
-  end
-  else
-    Src_Rect2 := SrcRect2^;
-  with Src_Rect1 do
-  begin
-    Right1 := Left1 + w;
-    Bottom1 := Top1 + h;
-  end;
-  with Src_Rect2 do
-  begin
-    Right2 := Left2 + w;
-    Bottom2 := Top2 + h;
-  end;
-  if ( Left1 >= Right2 ) or ( Right1 <= Left2 ) or ( Top1 >= Bottom2 ) or ( Bottom1 <=
-    Top2 ) then
-    exit;
-  if Left1 <= Left2 then
-  begin
-    // 1. left, 2. right
-    Scan1Start := Src_Rect1.x + Left2 - Left1;
-    Scan2Start := Src_Rect2.x;
-    ScanWidth := Right1 - Left2;
-    with Src_Rect2 do
-      if ScanWidth > w then
-        ScanWidth := w;
-  end
-  else
-  begin
-    // 1. right, 2. left
-    Scan1Start := Src_Rect1.x;
-    Scan2Start := Src_Rect2.x + Left1 - Left2;
-    ScanWidth := Right2 - Left1;
-    with Src_Rect1 do
-      if ScanWidth > w then
-        ScanWidth := w;
-  end;
-  with SrcSurface1^ do
-  begin
-    Pitch1 := Pitch;
-    Addr1 := cardinal( Pixels );
-    inc( Addr1, Pitch1 * UInt32( Src_Rect1.y ) );
-    with format^ do
-    begin
-      BPP := BytesPerPixel;
-      TransparentColor1 := colorkey;
-    end;
-  end;
-  with SrcSurface2^ do
-  begin
-    TransparentColor2 := format.colorkey;
-    Pitch2 := Pitch;
-    Addr2 := cardinal( Pixels );
-    inc( Addr2, Pitch2 * UInt32( Src_Rect2.y ) );
-  end;
-  Mod1 := Pitch1 - ( ScanWidth * BPP );
-  Mod2 := Pitch2 - ( ScanWidth * BPP );
-  inc( Addr1, BPP * Scan1Start );
-  inc( Addr2, BPP * Scan2Start );
-  if Top1 <= Top2 then
-  begin
-    // 1. up, 2. down
-    ScanHeight := Bottom1 - Top2;
-    if ScanHeight > Src_Rect2.h then
-      ScanHeight := Src_Rect2.h;
-    inc( Addr1, Pitch1 * UInt32( Top2 - Top1 ) );
-  end
-  else
-  begin
-    // 1. down, 2. up
-    ScanHeight := Bottom2 - Top1;
-    if ScanHeight > Src_Rect1.h then
-      ScanHeight := Src_Rect1.h;
-    inc( Addr2, Pitch2 * UInt32( Top1 - Top2 ) );
-  end;
-  case BPP of
-    1 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          if ( PByte( Addr1 )^ <> TransparentColor1 ) and ( PByte( Addr2 )^ <>
-            TransparentColor2 ) then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1 );
-          inc( Addr2 );
-        end;
-        inc( Addr1, Mod1 );
-        inc( Addr2, Mod2 );
-      end;
-    2 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          if ( PWord( Addr1 )^ <> TransparentColor1 ) and ( PWord( Addr2 )^ <>
-            TransparentColor2 ) then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1, 2 );
-          inc( Addr2, 2 );
-        end;
-        inc( Addr1, Mod1 );
-        inc( Addr2, Mod2 );
-      end;
-    3 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          Color1 := PLongWord( Addr1 )^ and $00FFFFFF;
-          Color2 := PLongWord( Addr2 )^ and $00FFFFFF;
-          if ( Color1 <> TransparentColor1 ) and ( Color2 <> TransparentColor2 )
-            then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1, 3 );
-          inc( Addr2, 3 );
-        end;
-        inc( Addr1, Mod1 );
-        inc( Addr2, Mod2 );
-      end;
-    4 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          if ( PLongWord( Addr1 )^ <> TransparentColor1 ) and ( PLongWord( Addr2 )^ <>
-            TransparentColor2 ) then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1, 4 );
-          inc( Addr2, 4 );
-        end;
-        inc( Addr1, Mod1 );
-        inc( Addr2, Mod2 );
-      end;
-  end;
-end;
-
-procedure SDL_AddPixel( DstSurface : PSDL_Surface; x : cardinal; y : cardinal; Color :
-  cardinal );
-var
-  SrcColor     : cardinal;
-  Addr         : cardinal;
-  R, G, B      : cardinal;
-begin
-  if Color = 0 then
-    exit;
-  with DstSurface^ do
-  begin
-    Addr := cardinal( Pixels ) + y * Pitch + x * format.BytesPerPixel;
-    SrcColor := PUInt32( Addr )^;
-    case format.BitsPerPixel of
-      8 :
-        begin
-          R := SrcColor and $E0 + Color and $E0;
-          G := SrcColor and $1C + Color and $1C;
-          B := SrcColor and $03 + Color and $03;
-          if R > $E0 then
-            R := $E0;
-          if G > $1C then
-            G := $1C;
-          if B > $03 then
-            B := $03;
-          PUInt8( Addr )^ := R or G or B;
-        end;
-      15 :
-        begin
-          R := SrcColor and $7C00 + Color and $7C00;
-          G := SrcColor and $03E0 + Color and $03E0;
-          B := SrcColor and $001F + Color and $001F;
-          if R > $7C00 then
-            R := $7C00;
-          if G > $03E0 then
-            G := $03E0;
-          if B > $001F then
-            B := $001F;
-          PUInt16( Addr )^ := R or G or B;
-        end;
-      16 :
-        begin
-          R := SrcColor and $F800 + Color and $F800;
-          G := SrcColor and $07C0 + Color and $07C0;
-          B := SrcColor and $001F + Color and $001F;
-          if R > $F800 then
-            R := $F800;
-          if G > $07C0 then
-            G := $07C0;
-          if B > $001F then
-            B := $001F;
-          PUInt16( Addr )^ := R or G or B;
-        end;
-      24 :
-        begin
-          R := SrcColor and $00FF0000 + Color and $00FF0000;
-          G := SrcColor and $0000FF00 + Color and $0000FF00;
-          B := SrcColor and $000000FF + Color and $000000FF;
-          if R > $FF0000 then
-            R := $FF0000;
-          if G > $00FF00 then
-            G := $00FF00;
-          if B > $0000FF then
-            B := $0000FF;
-          PUInt32( Addr )^ := SrcColor and $FF000000 or R or G or B;
-        end;
-      32 :
-        begin
-          R := SrcColor and $00FF0000 + Color and $00FF0000;
-          G := SrcColor and $0000FF00 + Color and $0000FF00;
-          B := SrcColor and $000000FF + Color and $000000FF;
-          if R > $FF0000 then
-            R := $FF0000;
-          if G > $00FF00 then
-            G := $00FF00;
-          if B > $0000FF then
-            B := $0000FF;
-          PUInt32( Addr )^ := R or G or B;
-        end;
-    end;
-  end;
-end;
-
-procedure SDL_SubPixel( DstSurface : PSDL_Surface; x : cardinal; y : cardinal; Color :
-  cardinal );
-var
-  SrcColor     : cardinal;
-  Addr         : cardinal;
-  R, G, B      : cardinal;
-begin
-  if Color = 0 then
-    exit;
-  with DstSurface^ do
-  begin
-    Addr := cardinal( Pixels ) + y * Pitch + x * format.BytesPerPixel;
-    SrcColor := PUInt32( Addr )^;
-    case format.BitsPerPixel of
-      8 :
-        begin
-          R := SrcColor and $E0 - Color and $E0;
-          G := SrcColor and $1C - Color and $1C;
-          B := SrcColor and $03 - Color and $03;
-          if R > $E0 then
-            R := 0;
-          if G > $1C then
-            G := 0;
-          if B > $03 then
-            B := 0;
-          PUInt8( Addr )^ := R or G or B;
-        end;
-      15 :
-        begin
-          R := SrcColor and $7C00 - Color and $7C00;
-          G := SrcColor and $03E0 - Color and $03E0;
-          B := SrcColor and $001F - Color and $001F;
-          if R > $7C00 then
-            R := 0;
-          if G > $03E0 then
-            G := 0;
-          if B > $001F then
-            B := 0;
-          PUInt16( Addr )^ := R or G or B;
-        end;
-      16 :
-        begin
-          R := SrcColor and $F800 - Color and $F800;
-          G := SrcColor and $07C0 - Color and $07C0;
-          B := SrcColor and $001F - Color and $001F;
-          if R > $F800 then
-            R := 0;
-          if G > $07C0 then
-            G := 0;
-          if B > $001F then
-            B := 0;
-          PUInt16( Addr )^ := R or G or B;
-        end;
-      24 :
-        begin
-          R := SrcColor and $00FF0000 - Color and $00FF0000;
-          G := SrcColor and $0000FF00 - Color and $0000FF00;
-          B := SrcColor and $000000FF - Color and $000000FF;
-          if R > $FF0000 then
-            R := 0;
-          if G > $00FF00 then
-            G := 0;
-          if B > $0000FF then
-            B := 0;
-          PUInt32( Addr )^ := SrcColor and $FF000000 or R or G or B;
-        end;
-      32 :
-        begin
-          R := SrcColor and $00FF0000 - Color and $00FF0000;
-          G := SrcColor and $0000FF00 - Color and $0000FF00;
-          B := SrcColor and $000000FF - Color and $000000FF;
-          if R > $FF0000 then
-            R := 0;
-          if G > $00FF00 then
-            G := 0;
-          if B > $0000FF then
-            B := 0;
-          PUInt32( Addr )^ := R or G or B;
-        end;
-    end;
-  end;
-end;
-// This procedure works on 8, 15, 16, 24 and 32 bits color depth surfaces.
-// In 8 bit color depth mode the procedure works with the default packed
-//  palette (RRRGGGBB). It handles all clipping.
-
-procedure SDL_AddSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-var
-  R, G, B, Pixel1, Pixel2, TransparentColor : cardinal;
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  Bits         : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    Bits := Format.BitsPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case bits of
-    8 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt8( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt8( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel1 and $E0 + Pixel2 and $E0;
-                G := Pixel1 and $1C + Pixel2 and $1C;
-                B := Pixel1 and $03 + Pixel2 and $03;
-                if R > $E0 then
-                  R := $E0;
-                if G > $1C then
-                  G := $1C;
-                if B > $03 then
-                  B := $03;
-                PUInt8( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt8( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    15 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel1 and $7C00 + Pixel2 and $7C00;
-                G := Pixel1 and $03E0 + Pixel2 and $03E0;
-                B := Pixel1 and $001F + Pixel2 and $001F;
-                if R > $7C00 then
-                  R := $7C00;
-                if G > $03E0 then
-                  G := $03E0;
-                if B > $001F then
-                  B := $001F;
-                PUInt16( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt16( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    16 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel1 and $F800 + Pixel2 and $F800;
-                G := Pixel1 and $07E0 + Pixel2 and $07E0;
-                B := Pixel1 and $001F + Pixel2 and $001F;
-                if R > $F800 then
-                  R := $F800;
-                if G > $07E0 then
-                  G := $07E0;
-                if B > $001F then
-                  B := $001F;
-                PUInt16( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt16( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    24 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^ and $00FFFFFF;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^ and $00FFFFFF;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel1 and $FF0000 + Pixel2 and $FF0000;
-                G := Pixel1 and $00FF00 + Pixel2 and $00FF00;
-                B := Pixel1 and $0000FF + Pixel2 and $0000FF;
-                if R > $FF0000 then
-                  R := $FF0000;
-                if G > $00FF00 then
-                  G := $00FF00;
-                if B > $0000FF then
-                  B := $0000FF;
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or ( R or G or B );
-              end
-              else
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or Pixel1;
-            end;
-            inc( SrcAddr, 3 );
-            inc( DestAddr, 3 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    32 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel1 and $FF0000 + Pixel2 and $FF0000;
-                G := Pixel1 and $00FF00 + Pixel2 and $00FF00;
-                B := Pixel1 and $0000FF + Pixel2 and $0000FF;
-                if R > $FF0000 then
-                  R := $FF0000;
-                if G > $00FF00 then
-                  G := $00FF00;
-                if B > $0000FF then
-                  B := $0000FF;
-                PUInt32( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt32( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 4 );
-            inc( DestAddr, 4 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-
-procedure SDL_SubSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-var
-  R, G, B, Pixel1, Pixel2, TransparentColor : cardinal;
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  _ebx, _esi, _edi, _esp : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  Bits         : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    Bits := DestSurface.Format.BitsPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case bits of
-    8 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt8( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt8( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel2 and $E0 - Pixel1 and $E0;
-                G := Pixel2 and $1C - Pixel1 and $1C;
-                B := Pixel2 and $03 - Pixel1 and $03;
-                if R > $E0 then
-                  R := 0;
-                if G > $1C then
-                  G := 0;
-                if B > $03 then
-                  B := 0;
-                PUInt8( DestAddr )^ := R or G or B;
-              end;
-            end;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    15 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel2 and $7C00 - Pixel1 and $7C00;
-                G := Pixel2 and $03E0 - Pixel1 and $03E0;
-                B := Pixel2 and $001F - Pixel1 and $001F;
-                if R > $7C00 then
-                  R := 0;
-                if G > $03E0 then
-                  G := 0;
-                if B > $001F then
-                  B := 0;
-                PUInt16( DestAddr )^ := R or G or B;
-              end;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    16 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel2 and $F800 - Pixel1 and $F800;
-                G := Pixel2 and $07E0 - Pixel1 and $07E0;
-                B := Pixel2 and $001F - Pixel1 and $001F;
-                if R > $F800 then
-                  R := 0;
-                if G > $07E0 then
-                  G := 0;
-                if B > $001F then
-                  B := 0;
-                PUInt16( DestAddr )^ := R or G or B;
-              end;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    24 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^ and $00FFFFFF;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^ and $00FFFFFF;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel2 and $FF0000 - Pixel1 and $FF0000;
-                G := Pixel2 and $00FF00 - Pixel1 and $00FF00;
-                B := Pixel2 and $0000FF - Pixel1 and $0000FF;
-                if R > $FF0000 then
-                  R := 0;
-                if G > $00FF00 then
-                  G := 0;
-                if B > $0000FF then
-                  B := 0;
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or ( R or G or B );
-              end;
-            end;
-            inc( SrcAddr, 3 );
-            inc( DestAddr, 3 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    32 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                R := Pixel2 and $FF0000 - Pixel1 and $FF0000;
-                G := Pixel2 and $00FF00 - Pixel1 and $00FF00;
-                B := Pixel2 and $0000FF - Pixel1 and $0000FF;
-                if R > $FF0000 then
-                  R := 0;
-                if G > $00FF00 then
-                  G := 0;
-                if B > $0000FF then
-                  B := 0;
-                PUInt32( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt32( DestAddr )^ := Pixel2;
-            end;
-            inc( SrcAddr, 4 );
-            inc( DestAddr, 4 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-
-procedure SDL_MonoSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect; Color : cardinal );
-var
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  _ebx, _esi, _edi, _esp : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  TransparentColor, SrcColor : cardinal;
-  BPP          : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    BPP := DestSurface.Format.BytesPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case BPP of
-    1 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt8( SrcAddr )^;
-            if SrcColor <> TransparentColor then
-              PUInt8( DestAddr )^ := SrcColor;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    2 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt16( SrcAddr )^;
-            if SrcColor <> TransparentColor then
-              PUInt16( DestAddr )^ := SrcColor;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    3 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt32( SrcAddr )^ and $FFFFFF;
-            if SrcColor <> TransparentColor then
-              PUInt32( DestAddr )^ := ( PUInt32( DestAddr )^ and $FFFFFF ) or SrcColor;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    4 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt32( SrcAddr )^;
-            if SrcColor <> TransparentColor then
-              PUInt32( DestAddr )^ := SrcColor;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-// TextureRect.w and TextureRect.h are not used.
-// The TextureSurface's size MUST larger than the drawing rectangle!!!
-
-procedure SDL_TexturedSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect; Texture : PSDL_Surface;
-  TextureRect : PSDL_Rect );
-var
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr, TextAddr : cardinal;
-  _ebx, _esi, _edi, _esp : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod, TextMod : cardinal;
-  SrcColor, TransparentColor, TextureColor : cardinal;
-  BPP          : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    BPP := DestSurface.Format.BitsPerPixel;
-  end;
-  with Texture^ do
-  begin
-    TextAddr := cardinal( Pixels ) + UInt32( TextureRect.y ) * Pitch +
-      UInt32( TextureRect.x ) * Format.BytesPerPixel;
-    TextMod := Pitch - Src.w * Format.BytesPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  SDL_LockSurface( Texture );
-  WorkY := Src.h;
-  case BPP of
-    1 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt8( SrcAddr )^;
-            if SrcColor <> TransparentColor then
-              PUInt8( DestAddr )^ := PUint8( TextAddr )^;
-            inc( SrcAddr );
-            inc( DestAddr );
-            inc( TextAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          inc( TextAddr, TextMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    2 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt16( SrcAddr )^;
-            if SrcColor <> TransparentColor then
-              PUInt16( DestAddr )^ := PUInt16( TextAddr )^;
-            inc( SrcAddr );
-            inc( DestAddr );
-            inc( TextAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          inc( TextAddr, TextMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    3 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt32( SrcAddr )^ and $FFFFFF;
-            if SrcColor <> TransparentColor then
-              PUInt32( DestAddr )^ := ( PUInt32( DestAddr )^ and $FFFFFF ) or ( PUInt32( TextAddr )^ and $FFFFFF );
-            inc( SrcAddr );
-            inc( DestAddr );
-            inc( TextAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          inc( TextAddr, TextMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    4 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            SrcColor := PUInt32( SrcAddr )^;
-            if SrcColor <> TransparentColor then
-              PUInt32( DestAddr )^ := PUInt32( TextAddr )^;
-            inc( SrcAddr );
-            inc( DestAddr );
-            inc( TextAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          inc( TextAddr, TextMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-  SDL_UnlockSurface( Texture );
-end;
-
-procedure SDL_ZoomSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect; DstSurface : PSDL_Surface; DstRect : PSDL_Rect );
-var
-  xc, yc       : cardinal;
-  rx, wx, ry, wy, ry16 : cardinal;
-  color        : cardinal;
-  modx, mody   : cardinal;
-begin
-  // Warning! No checks for surface pointers!!!
-  if srcrect = nil then
-    srcrect := @SrcSurface.clip_rect;
-  if dstrect = nil then
-    dstrect := @DstSurface.clip_rect;
-  if SDL_MustLock( SrcSurface ) then
-    SDL_LockSurface( SrcSurface );
-  if SDL_MustLock( DstSurface ) then
-    SDL_LockSurface( DstSurface );
-  modx := trunc( ( srcrect.w / dstrect.w ) * 65536 );
-  mody := trunc( ( srcrect.h / dstrect.h ) * 65536 );
-  //rx := srcrect.x * 65536;
-  ry := srcrect.y * 65536;
-  wy := dstrect.y;
-  for yc := 0 to dstrect.h - 1 do
-  begin
-    rx := srcrect.x * 65536;
-    wx := dstrect.x;
-    ry16 := ry shr 16;
-    for xc := 0 to dstrect.w - 1 do
-    begin
-      color := SDL_GetPixel( SrcSurface, rx shr 16, ry16 );
-      SDL_PutPixel( DstSurface, wx, wy, color );
-      rx := rx + modx;
-      inc( wx );
-    end;
-    ry := ry + mody;
-    inc( wy );
-  end;
-  if SDL_MustLock( SrcSurface ) then
-    SDL_UnlockSurface( SrcSurface );
-  if SDL_MustLock( DstSurface ) then
-    SDL_UnlockSurface( DstSurface );
-end;
-// Re-map a rectangular area into an area defined by four vertices
-// Converted from C to Pascal by KiCHY
-
-procedure SDL_WarpSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect; DstSurface : PSDL_Surface; UL, UR, LR, LL : PPoint );
-const
-  SHIFTS       = 15; // Extend ints to limit round-off error (try 2 - 20)
-  THRESH       = 1 shl SHIFTS; // Threshold for pixel size value
-  procedure CopySourceToDest( UL, UR, LR, LL : TPoint; x1, y1, x2, y2 : cardinal );
-  var
-    tm, lm, rm, bm, m : TPoint;
-    mx, my     : cardinal;
-    cr         : cardinal;
-  begin
-    // Does the destination area specify a single pixel?
-    if ( ( abs( ul.x - ur.x ) < THRESH ) and
-      ( abs( ul.x - lr.x ) < THRESH ) and
-      ( abs( ul.x - ll.x ) < THRESH ) and
-      ( abs( ul.y - ur.y ) < THRESH ) and
-      ( abs( ul.y - lr.y ) < THRESH ) and
-      ( abs( ul.y - ll.y ) < THRESH ) ) then
-    begin // Yes
-      cr := SDL_GetPixel( SrcSurface, ( x1 shr SHIFTS ), ( y1 shr SHIFTS ) );
-      SDL_PutPixel( DstSurface, ( ul.x shr SHIFTS ), ( ul.y shr SHIFTS ), cr );
-    end
-    else
-    begin // No
-      // Quarter the source and the destination, and then recurse
-      tm.x := ( ul.x + ur.x ) shr 1;
-      tm.y := ( ul.y + ur.y ) shr 1;
-      bm.x := ( ll.x + lr.x ) shr 1;
-      bm.y := ( ll.y + lr.y ) shr 1;
-      lm.x := ( ul.x + ll.x ) shr 1;
-      lm.y := ( ul.y + ll.y ) shr 1;
-      rm.x := ( ur.x + lr.x ) shr 1;
-      rm.y := ( ur.y + lr.y ) shr 1;
-      m.x := ( tm.x + bm.x ) shr 1;
-      m.y := ( tm.y + bm.y ) shr 1;
-      mx := ( x1 + x2 ) shr 1;
-      my := ( y1 + y2 ) shr 1;
-      CopySourceToDest( ul, tm, m, lm, x1, y1, mx, my );
-      CopySourceToDest( tm, ur, rm, m, mx, y1, x2, my );
-      CopySourceToDest( m, rm, lr, bm, mx, my, x2, y2 );
-      CopySourceToDest( lm, m, bm, ll, x1, my, mx, y2 );
-    end;
-  end;
-var
-  _UL, _UR, _LR, _LL : TPoint;
-  Rect_x, Rect_y, Rect_w, Rect_h : integer;
-begin
-  if SDL_MustLock( SrcSurface ) then
-    SDL_LockSurface( SrcSurface );
-  if SDL_MustLock( DstSurface ) then
-    SDL_LockSurface( DstSurface );
-  if SrcRect = nil then
-  begin
-    Rect_x := 0;
-    Rect_y := 0;
-    Rect_w := ( SrcSurface.w - 1 ) shl SHIFTS;
-    Rect_h := ( SrcSurface.h - 1 ) shl SHIFTS;
-  end
-  else
-  begin
-    Rect_x := SrcRect.x;
-    Rect_y := SrcRect.y;
-    Rect_w := ( SrcRect.w - 1 ) shl SHIFTS;
-    Rect_h := ( SrcRect.h - 1 ) shl SHIFTS;
-  end;
-  // Shift all values to help reduce round-off error.
-  _ul.x := ul.x shl SHIFTS;
-  _ul.y := ul.y shl SHIFTS;
-  _ur.x := ur.x shl SHIFTS;
-  _ur.y := ur.y shl SHIFTS;
-  _lr.x := lr.x shl SHIFTS;
-  _lr.y := lr.y shl SHIFTS;
-  _ll.x := ll.x shl SHIFTS;
-  _ll.y := ll.y shl SHIFTS;
-  CopySourceToDest( _ul, _ur, _lr, _ll, Rect_x, Rect_y, Rect_w, Rect_h );
-  if SDL_MustLock( SrcSurface ) then
-    SDL_UnlockSurface( SrcSurface );
-  if SDL_MustLock( DstSurface ) then
-    SDL_UnlockSurface( DstSurface );
-end;
-
-// Draw a line between x1,y1 and x2,y2 to the given surface
-// NOTE: The surface must be locked before calling this!
-
-procedure SDL_DrawLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal );
-var
-  dx, dy, sdx, sdy, x, y, px, py : integer;
-begin
-  dx := x2 - x1;
-  dy := y2 - y1;
-  if dx < 0 then
-    sdx := -1
-  else
-    sdx := 1;
-  if dy < 0 then
-    sdy := -1
-  else
-    sdy := 1;
-  dx := sdx * dx + 1;
-  dy := sdy * dy + 1;
-  x := 0;
-  y := 0;
-  px := x1;
-  py := y1;
-  if dx >= dy then
-  begin
-    for x := 0 to dx - 1 do
-    begin
-      SDL_PutPixel( DstSurface, px, py, Color );
-      y := y + dy;
-      if y >= dx then
-      begin
-        y := y - dx;
-        py := py + sdy;
-      end;
-      px := px + sdx;
-    end;
-  end
-  else
-  begin
-    for y := 0 to dy - 1 do
-    begin
-      SDL_PutPixel( DstSurface, px, py, Color );
-      x := x + dx;
-      if x >= dy then
-      begin
-        x := x - dy;
-        px := px + sdx;
-      end;
-      py := py + sdy;
-    end;
-  end;
-end;
-
-// Draw a dashed line between x1,y1 and x2,y2 to the given surface
-// NOTE: The surface must be locked before calling this!
-
-procedure SDL_DrawLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal; DashLength, DashSpace : byte ); overload;
-var
-  dx, dy, sdx, sdy, x, y, px, py, counter : integer; drawdash : boolean;
-begin
-  counter := 0;
-  drawdash := true; //begin line drawing with dash
-
-  //Avoid invalid user-passed dash parameters
-  if ( DashLength < 1 )
-    then
-    DashLength := 1;
-  if ( DashSpace < 1 )
-    then
-    DashSpace := 0;
-
-  dx := x2 - x1;
-  dy := y2 - y1;
-  if dx < 0 then
-    sdx := -1
-  else
-    sdx := 1;
-  if dy < 0 then
-    sdy := -1
-  else
-    sdy := 1;
-  dx := sdx * dx + 1;
-  dy := sdy * dy + 1;
-  x := 0;
-  y := 0;
-  px := x1;
-  py := y1;
-  if dx >= dy then
-  begin
-    for x := 0 to dx - 1 do
-    begin
-
-      //Alternate drawing dashes, or leaving spaces
-      if drawdash then
-      begin
-        SDL_PutPixel( DstSurface, px, py, Color );
-        inc( counter );
-        if ( counter > DashLength - 1 ) and ( DashSpace > 0 ) then
-        begin
-          drawdash := false;
-          counter := 0;
-        end;
-      end
-      else //space
-      begin
-        inc( counter );
-        if counter > DashSpace - 1 then
-        begin
-          drawdash := true;
-          counter := 0;
-        end;
-      end;
-
-      y := y + dy;
-      if y >= dx then
-      begin
-        y := y - dx;
-        py := py + sdy;
-      end;
-      px := px + sdx;
-    end;
-  end
-  else
-  begin
-    for y := 0 to dy - 1 do
-    begin
-
-      //Alternate drawing dashes, or leaving spaces
-      if drawdash then
-      begin
-        SDL_PutPixel( DstSurface, px, py, Color );
-        inc( counter );
-        if ( counter > DashLength - 1 ) and ( DashSpace > 0 ) then
-        begin
-          drawdash := false;
-          counter := 0;
-        end;
-      end
-      else //space
-      begin
-        inc( counter );
-        if counter > DashSpace - 1 then
-        begin
-          drawdash := true;
-          counter := 0;
-        end;
-      end;
-
-      x := x + dx;
-      if x >= dy then
-      begin
-        x := x - dy;
-        px := px + sdx;
-      end;
-      py := py + sdy;
-    end;
-  end;
-end;
-
-procedure SDL_AddLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal );
-var
-  dx, dy, sdx, sdy, x, y, px, py : integer;
-begin
-  dx := x2 - x1;
-  dy := y2 - y1;
-  if dx < 0 then
-    sdx := -1
-  else
-    sdx := 1;
-  if dy < 0 then
-    sdy := -1
-  else
-    sdy := 1;
-  dx := sdx * dx + 1;
-  dy := sdy * dy + 1;
-  x := 0;
-  y := 0;
-  px := x1;
-  py := y1;
-  if dx >= dy then
-  begin
-    for x := 0 to dx - 1 do
-    begin
-      SDL_AddPixel( DstSurface, px, py, Color );
-      y := y + dy;
-      if y >= dx then
-      begin
-        y := y - dx;
-        py := py + sdy;
-      end;
-      px := px + sdx;
-    end;
-  end
-  else
-  begin
-    for y := 0 to dy - 1 do
-    begin
-      SDL_AddPixel( DstSurface, px, py, Color );
-      x := x + dx;
-      if x >= dy then
-      begin
-        x := x - dy;
-        px := px + sdx;
-      end;
-      py := py + sdy;
-    end;
-  end;
-end;
-
-procedure SDL_SubLine( DstSurface : PSDL_Surface; x1, y1, x2, y2 : integer; Color :
-  cardinal );
-var
-  dx, dy, sdx, sdy, x, y, px, py : integer;
-begin
-  dx := x2 - x1;
-  dy := y2 - y1;
-  if dx < 0 then
-    sdx := -1
-  else
-    sdx := 1;
-  if dy < 0 then
-    sdy := -1
-  else
-    sdy := 1;
-  dx := sdx * dx + 1;
-  dy := sdy * dy + 1;
-  x := 0;
-  y := 0;
-  px := x1;
-  py := y1;
-  if dx >= dy then
-  begin
-    for x := 0 to dx - 1 do
-    begin
-      SDL_SubPixel( DstSurface, px, py, Color );
-      y := y + dy;
-      if y >= dx then
-      begin
-        y := y - dx;
-        py := py + sdy;
-      end;
-      px := px + sdx;
-    end;
-  end
-  else
-  begin
-    for y := 0 to dy - 1 do
-    begin
-      SDL_SubPixel( DstSurface, px, py, Color );
-      x := x + dx;
-      if x >= dy then
-      begin
-        x := x - dy;
-        px := px + sdx;
-      end;
-      py := py + sdy;
-    end;
-  end;
-end;
-
-// flips a rectangle vertically on given surface
-
-procedure SDL_FlipRectV( DstSurface : PSDL_Surface; Rect : PSDL_Rect );
-var
-  TmpRect      : TSDL_Rect;
-  Locked       : boolean;
-  y, FlipLength, RowLength : integer;
-  Row1, Row2   : Pointer;
-  OneRow       : TByteArray; // Optimize it if you wish
-begin
-  if DstSurface <> nil then
-  begin
-    if Rect = nil then
-    begin // if Rect=nil then we flip the whole surface
-      TmpRect := SDLRect( 0, 0, DstSurface.w, DstSurface.h );
-      Rect := @TmpRect;
-    end;
-    FlipLength := Rect^.h shr 1 - 1;
-    RowLength := Rect^.w * DstSurface^.format.BytesPerPixel;
-    if SDL_MustLock( DstSurface ) then
-    begin
-      Locked := true;
-      SDL_LockSurface( DstSurface );
-    end
-    else
-      Locked := false;
-    Row1 := pointer( cardinal( DstSurface^.Pixels ) + UInt32( Rect^.y ) *
-      DstSurface^.Pitch );
-    Row2 := pointer( cardinal( DstSurface^.Pixels ) + ( UInt32( Rect^.y ) + Rect^.h - 1 )
-      * DstSurface^.Pitch );
-    for y := 0 to FlipLength do
-    begin
-      Move( Row1^, OneRow, RowLength );
-      Move( Row2^, Row1^, RowLength );
-      Move( OneRow, Row2^, RowLength );
-      inc( cardinal( Row1 ), DstSurface^.Pitch );
-      dec( cardinal( Row2 ), DstSurface^.Pitch );
-    end;
-    if Locked then
-      SDL_UnlockSurface( DstSurface );
-  end;
-end;
-
-// flips a rectangle horizontally on given surface
-
-procedure SDL_FlipRectH( DstSurface : PSDL_Surface; Rect : PSDL_Rect );
-type
-  T24bit = packed array[ 0..2 ] of byte;
-  T24bitArray = packed array[ 0..8191 ] of T24bit;
-  P24bitArray = ^T24bitArray;
-  TLongWordArray = array[ 0..8191 ] of LongWord;
-  PLongWordArray = ^TLongWordArray;
-var
-  TmpRect      : TSDL_Rect;
-  Row8bit      : PByteArray;
-  Row16bit     : PWordArray;
-  Row24bit     : P24bitArray;
-  Row32bit     : PLongWordArray;
-  y, x, RightSide, FlipLength : integer;
-  Pixel        : cardinal;
-  Pixel24      : T24bit;
-  Locked       : boolean;
-begin
-  if DstSurface <> nil then
-  begin
-    if Rect = nil then
-    begin
-      TmpRect := SDLRect( 0, 0, DstSurface.w, DstSurface.h );
-      Rect := @TmpRect;
-    end;
-    FlipLength := Rect^.w shr 1 - 1;
-    if SDL_MustLock( DstSurface ) then
-    begin
-      Locked := true;
-      SDL_LockSurface( DstSurface );
-    end
-    else
-      Locked := false;
-    case DstSurface^.format.BytesPerPixel of
-      1 :
-        begin
-          Row8Bit := pointer( cardinal( DstSurface^.pixels ) + UInt32( Rect^.y ) *
-            DstSurface^.pitch );
-          for y := 1 to Rect^.h do
-          begin
-            RightSide := Rect^.w - 1;
-            for x := 0 to FlipLength do
-            begin
-              Pixel := Row8Bit^[ x ];
-              Row8Bit^[ x ] := Row8Bit^[ RightSide ];
-              Row8Bit^[ RightSide ] := Pixel;
-              dec( RightSide );
-            end;
-            inc( cardinal( Row8Bit ), DstSurface^.pitch );
-          end;
-        end;
-      2 :
-        begin
-          Row16Bit := pointer( cardinal( DstSurface^.pixels ) + UInt32( Rect^.y ) *
-            DstSurface^.pitch );
-          for y := 1 to Rect^.h do
-          begin
-            RightSide := Rect^.w - 1;
-            for x := 0 to FlipLength do
-            begin
-              Pixel := Row16Bit^[ x ];
-              Row16Bit^[ x ] := Row16Bit^[ RightSide ];
-              Row16Bit^[ RightSide ] := Pixel;
-              dec( RightSide );
-            end;
-            inc( cardinal( Row16Bit ), DstSurface^.pitch );
-          end;
-        end;
-      3 :
-        begin
-          Row24Bit := pointer( cardinal( DstSurface^.pixels ) + UInt32( Rect^.y ) *
-            DstSurface^.pitch );
-          for y := 1 to Rect^.h do
-          begin
-            RightSide := Rect^.w - 1;
-            for x := 0 to FlipLength do
-            begin
-              Pixel24 := Row24Bit^[ x ];
-              Row24Bit^[ x ] := Row24Bit^[ RightSide ];
-              Row24Bit^[ RightSide ] := Pixel24;
-              dec( RightSide );
-            end;
-            inc( cardinal( Row24Bit ), DstSurface^.pitch );
-          end;
-        end;
-      4 :
-        begin
-          Row32Bit := pointer( cardinal( DstSurface^.pixels ) + UInt32( Rect^.y ) *
-            DstSurface^.pitch );
-          for y := 1 to Rect^.h do
-          begin
-            RightSide := Rect^.w - 1;
-            for x := 0 to FlipLength do
-            begin
-              Pixel := Row32Bit^[ x ];
-              Row32Bit^[ x ] := Row32Bit^[ RightSide ];
-              Row32Bit^[ RightSide ] := Pixel;
-              dec( RightSide );
-            end;
-            inc( cardinal( Row32Bit ), DstSurface^.pitch );
-          end;
-        end;
-    end;
-    if Locked then
-      SDL_UnlockSurface( DstSurface );
-  end;
-end;
-
-// Use with caution! The procedure allocates memory for TSDL_Rect and return with its pointer.
-// But you MUST free it after you don't need it anymore!!!
-
-function PSDLRect( aLeft, aTop, aWidth, aHeight : integer ) : PSDL_Rect;
-var
-  Rect         : PSDL_Rect;
-begin
-  New( Rect );
-  with Rect^ do
-  begin
-    x := aLeft;
-    y := aTop;
-    w := aWidth;
-    h := aHeight;
-  end;
-  Result := Rect;
-end;
-
-function SDLRect( aLeft, aTop, aWidth, aHeight : integer ) : TSDL_Rect;
-begin
-  with result do
-  begin
-    x := aLeft;
-    y := aTop;
-    w := aWidth;
-    h := aHeight;
-  end;
-end;
-
-function SDLRect( aRect : TRect ) : TSDL_Rect;
-begin
-  with aRect do
-    result := SDLRect( Left, Top, Right - Left, Bottom - Top );
-end;
-
-procedure SDL_Stretch8( Surface, Dst_Surface : PSDL_Surface; x1, x2, y1, y2, yr, yw,
-  depth : integer );
-var
-  dx, dy, e, d, dx2 : integer;
-  src_pitch, dst_pitch : uint16;
-  src_pixels, dst_pixels : PUint8;
-begin
-  if ( yw >= dst_surface^.h ) then
-    exit;
-  dx := ( x2 - x1 );
-  dy := ( y2 - y1 );
-  dy := dy shl 1;
-  e := dy - dx;
-  dx2 := dx shl 1;
-  src_pitch := Surface^.pitch;
-  dst_pitch := dst_surface^.pitch;
-  src_pixels := PUint8( integer( Surface^.pixels ) + yr * src_pitch + y1 * depth );
-  dst_pixels := PUint8( integer( dst_surface^.pixels ) + yw * dst_pitch + x1 *
-    depth );
-  for d := 0 to dx - 1 do
-  begin
-    move( src_pixels^, dst_pixels^, depth );
-    while ( e >= 0 ) do
-    begin
-      inc( src_pixels, depth );
-      e := e - dx2;
-    end;
-    inc( dst_pixels, depth );
-    e := e + dy;
-  end;
-end;
-
-function sign( x : integer ) : integer;
-begin
-  if x > 0 then
-    result := 1
-  else
-    result := -1;
-end;
-
-// Stretches a part of a surface
-
-function SDL_ScaleSurfaceRect( SrcSurface : PSDL_Surface; SrcX1, SrcY1, SrcW, SrcH,
-  Width, Height : integer ) : PSDL_Surface;
-var
-  dst_surface  : PSDL_Surface;
-  dx, dy, e, d, dx2, srcx2, srcy2 : integer;
-  destx1, desty1 : integer;
-begin
-  srcx2 := srcx1 + SrcW;
-  srcy2 := srcy1 + SrcH;
-  result := nil;
-  destx1 := 0;
-  desty1 := 0;
-  dx := abs( integer( Height - desty1 ) );
-  dy := abs( integer( SrcY2 - SrcY1 ) );
-  e := ( dy shl 1 ) - dx;
-  dx2 := dx shl 1;
-  dy := dy shl 1;
-  dst_surface := SDL_CreateRGBSurface( SDL_HWPALETTE, width - destx1, Height -
-    desty1,
-    SrcSurface^.Format^.BitsPerPixel,
-    SrcSurface^.Format^.RMask,
-    SrcSurface^.Format^.GMask,
-    SrcSurface^.Format^.BMask,
-    SrcSurface^.Format^.AMask );
-  if ( dst_surface^.format^.BytesPerPixel = 1 ) then
-    SDL_SetColors( dst_surface, @SrcSurface^.format^.palette^.colors^[ 0 ], 0, 256 );
-  SDL_SetColorKey( dst_surface, sdl_srccolorkey, SrcSurface^.format^.colorkey );
-  if ( SDL_MustLock( dst_surface ) ) then
-    if ( SDL_LockSurface( dst_surface ) < 0 ) then
-      exit;
-  for d := 0 to dx - 1 do
-  begin
-    SDL_Stretch8( SrcSurface, dst_surface, destx1, Width, SrcX1, SrcX2, SrcY1, desty1,
-      SrcSurface^.format^.BytesPerPixel );
-    while e >= 0 do
-    begin
-      inc( SrcY1 );
-      e := e - dx2;
-    end;
-    inc( desty1 );
-    e := e + dy;
-  end;
-  if SDL_MUSTLOCK( dst_surface ) then
-    SDL_UnlockSurface( dst_surface );
-  result := dst_surface;
-end;
-
-procedure SDL_MoveLine( Surface : PSDL_Surface; x1, x2, y1, xofs, depth : integer );
-var
-  src_pixels, dst_pixels : PUint8;
-  i            : integer;
-begin
-  src_pixels := PUint8( integer( Surface^.pixels ) + Surface^.w * y1 * depth + x2 *
-    depth );
-  dst_pixels := PUint8( integer( Surface^.pixels ) + Surface^.w * y1 * depth + ( x2
-    + xofs ) * depth );
-  for i := x2 downto x1 do
-  begin
-    move( src_pixels^, dst_pixels^, depth );
-    dec( src_pixels );
-    dec( dst_pixels );
-  end;
-end;
-{ Return the pixel value at (x, y)
-NOTE: The surface must be locked before calling this! }
-
-function SDL_GetPixel( SrcSurface : PSDL_Surface; x : integer; y : integer ) : Uint32;
-var
-  bpp          : UInt32;
-  p            : PInteger;
-begin
-  bpp := SrcSurface.format.BytesPerPixel;
-  // Here p is the address to the pixel we want to retrieve
-  p := Pointer( Uint32( SrcSurface.pixels ) + UInt32( y ) * SrcSurface.pitch + UInt32( x ) *
-    bpp );
-  case bpp of
-    1 : result := PUint8( p )^;
-    2 : result := PUint16( p )^;
-    3 :
-      if ( SDL_BYTEORDER = SDL_BIG_ENDIAN ) then
-        result := PUInt8Array( p )[ 0 ] shl 16 or PUInt8Array( p )[ 1 ] shl 8 or
-          PUInt8Array( p )[ 2 ]
-      else
-        result := PUInt8Array( p )[ 0 ] or PUInt8Array( p )[ 1 ] shl 8 or
-          PUInt8Array( p )[ 2 ] shl 16;
-    4 : result := PUint32( p )^;
-  else
-    result := 0; // shouldn't happen, but avoids warnings
-  end;
-end;
-{ Set the pixel at (x, y) to the given value
-  NOTE: The surface must be locked before calling this! }
-
-procedure SDL_PutPixel( DstSurface : PSDL_Surface; x : integer; y : integer; pixel :
-  Uint32 );
-var
-  bpp          : UInt32;
-  p            : PInteger;
-begin
-  bpp := DstSurface.format.BytesPerPixel;
-  p := Pointer( Uint32( DstSurface.pixels ) + UInt32( y ) * DstSurface.pitch + UInt32( x )
-    * bpp );
-  case bpp of
-    1 : PUint8( p )^ := pixel;
-    2 : PUint16( p )^ := pixel;
-    3 :
-      if ( SDL_BYTEORDER = SDL_BIG_ENDIAN ) then
-      begin
-        PUInt8Array( p )[ 0 ] := ( pixel shr 16 ) and $FF;
-        PUInt8Array( p )[ 1 ] := ( pixel shr 8 ) and $FF;
-        PUInt8Array( p )[ 2 ] := pixel and $FF;
-      end
-      else
-      begin
-        PUInt8Array( p )[ 0 ] := pixel and $FF;
-        PUInt8Array( p )[ 1 ] := ( pixel shr 8 ) and $FF;
-        PUInt8Array( p )[ 2 ] := ( pixel shr 16 ) and $FF;
-      end;
-    4 :
-      PUint32( p )^ := pixel;
-  end;
-end;
-
-procedure SDL_ScrollY( DstSurface : PSDL_Surface; DifY : integer );
-var
-  r1, r2       : TSDL_Rect;
-  //buffer: PSDL_Surface;
-  YPos         : Integer;
-begin
-  if ( DstSurface <> nil ) and ( DifY <> 0 ) then
-  begin
-    //if DifY > 0 then // going up
-    //begin
-    ypos := 0;
-    r1.x := 0;
-    r2.x := 0;
-    r1.w := DstSurface.w;
-    r2.w := DstSurface.w;
-    r1.h := DifY;
-    r2.h := DifY;
-    while ypos < DstSurface.h do
-    begin
-      r1.y := ypos;
-      r2.y := ypos + DifY;
-      SDL_BlitSurface( DstSurface, @r2, DstSurface, @r1 );
-      ypos := ypos + DifY;
-    end;
-    //end
-    //else
-    //begin // Going Down
-    //end;
-  end;
-end;
-
-{procedure SDL_ScrollY(Surface: PSDL_Surface; DifY: integer);
-var
-  r1, r2: TSDL_Rect;
-  buffer: PSDL_Surface;
-begin
-  if (Surface <> nil) and (Dify <> 0) then
-  begin
-    buffer := SDL_CreateRGBSurface(SDL_HWSURFACE, (Surface^.w - DifY) * 2,
-      Surface^.h * 2,
-      Surface^.Format^.BitsPerPixel, 0, 0, 0, 0);
-    if buffer <> nil then
-    begin
-      if (buffer^.format^.BytesPerPixel = 1) then
-        SDL_SetColors(buffer, @Surface^.format^.palette^.colors^[0], 0, 256);
-      r1 := SDLRect(0, DifY, buffer^.w, buffer^.h);
-      r2 := SDLRect(0, 0, buffer^.w, buffer^.h);
-      SDL_BlitSurface(Surface, @r1, buffer, @r2);
-      SDL_BlitSurface(buffer, @r2, Surface, @r2);
-      SDL_FreeSurface(buffer);
-    end;
-  end;
-end;}
-
-procedure SDL_ScrollX( DstSurface : PSDL_Surface; DifX : integer );
-var
-  r1, r2       : TSDL_Rect;
-  buffer       : PSDL_Surface;
-begin
-  if ( DstSurface <> nil ) and ( DifX <> 0 ) then
-  begin
-    buffer := SDL_CreateRGBSurface( SDL_HWSURFACE, ( DstSurface^.w - DifX ) * 2,
-      DstSurface^.h * 2,
-      DstSurface^.Format^.BitsPerPixel,
-      DstSurface^.Format^.RMask,
-      DstSurface^.Format^.GMask,
-      DstSurface^.Format^.BMask,
-      DstSurface^.Format^.AMask );
-    if buffer <> nil then
-    begin
-      if ( buffer^.format^.BytesPerPixel = 1 ) then
-        SDL_SetColors( buffer, @DstSurface^.format^.palette^.colors^[ 0 ], 0, 256 );
-      r1 := SDLRect( DifX, 0, buffer^.w, buffer^.h );
-      r2 := SDLRect( 0, 0, buffer^.w, buffer^.h );
-      SDL_BlitSurface( DstSurface, @r1, buffer, @r2 );
-      SDL_BlitSurface( buffer, @r2, DstSurface, @r2 );
-      SDL_FreeSurface( buffer );
-    end;
-  end;
-end;
-
-procedure SDL_RotateRad( DstSurface, SrcSurface : PSDL_Surface; SrcRect :
-  PSDL_Rect; DestX, DestY, OffsetX, OffsetY : Integer; Angle : Single );
-var
-  aSin, aCos   : Single;
-  MX, MY, DX, DY, NX, NY, SX, SY, OX, OY, Width, Height, TX, TY, RX, RY, ROX, ROY : Integer;
-  Colour, TempTransparentColour : UInt32;
-  MAXX, MAXY   : Integer;
-begin
-  // Rotate the surface to the target surface.
-  TempTransparentColour := SrcSurface.format.colorkey;
-  {if srcRect.w > srcRect.h then
-  begin
-    Width := srcRect.w;
-    Height := srcRect.w;
-  end
-  else
-  begin
-    Width := srcRect.h;
-    Height := srcRect.h;
-  end; }
-
-  maxx := DstSurface.w;
-  maxy := DstSurface.h;
-  aCos := cos( Angle );
-  aSin := sin( Angle );
-
-  Width := round( abs( srcrect.h * acos ) + abs( srcrect.w * asin ) );
-  Height := round( abs( srcrect.h * asin ) + abs( srcrect.w * acos ) );
-
-  OX := Width div 2;
-  OY := Height div 2; ;
-  MX := ( srcRect.x + ( srcRect.x + srcRect.w ) ) div 2;
-  MY := ( srcRect.y + ( srcRect.y + srcRect.h ) ) div 2;
-  ROX := ( -( srcRect.w div 2 ) ) + Offsetx;
-  ROY := ( -( srcRect.h div 2 ) ) + OffsetY;
-  Tx := ox + round( ROX * aSin - ROY * aCos );
-  Ty := oy + round( ROY * aSin + ROX * aCos );
-  SX := 0;
-  for DX := DestX - TX to DestX - TX + ( width ) do
-  begin
-    Inc( SX );
-    SY := 0;
-    for DY := DestY - TY to DestY - TY + ( Height ) do
-    begin
-      RX := SX - OX;
-      RY := SY - OY;
-      NX := round( mx + RX * aSin + RY * aCos ); //
-      NY := round( my + RY * aSin - RX * aCos ); //
-      // Used for testing only
-     //SDL_PutPixel(DestSurface.SDLSurfacePointer,DX,DY,0);
-      if ( ( DX > 0 ) and ( DX < MAXX ) ) and ( ( DY > 0 ) and ( DY < MAXY ) ) then
-      begin
-        if ( NX >= srcRect.x ) and ( NX <= srcRect.x + srcRect.w ) then
-        begin
-          if ( NY >= srcRect.y ) and ( NY <= srcRect.y + srcRect.h ) then
-          begin
-            Colour := SDL_GetPixel( SrcSurface, NX, NY );
-            if Colour <> TempTransparentColour then
-            begin
-              SDL_PutPixel( DstSurface, DX, DY, Colour );
-            end;
-          end;
-        end;
-      end;
-      inc( SY );
-    end;
-  end;
-end;
-
-procedure SDL_RotateDeg( DstSurface, SrcSurface : PSDL_Surface; SrcRect :
-  PSDL_Rect; DestX, DestY, OffsetX, OffsetY : Integer; Angle : Integer );
-begin
-  SDL_RotateRad( DstSurface, SrcSurface, SrcRect, DestX, DestY, OffsetX, OffsetY, DegToRad( Angle ) );
-end;
-
-function ValidateSurfaceRect( DstSurface : PSDL_Surface; dstrect : PSDL_Rect ) : TSDL_Rect;
-var
-  RealRect     : TSDL_Rect;
-  OutOfRange   : Boolean;
-begin
-  OutOfRange := false;
-  if dstrect = nil then
-  begin
-    RealRect.x := 0;
-    RealRect.y := 0;
-    RealRect.w := DstSurface.w;
-    RealRect.h := DstSurface.h;
-  end
-  else
-  begin
-    if dstrect.x < DstSurface.w then
-    begin
-      RealRect.x := dstrect.x;
-    end
-    else if dstrect.x < 0 then
-    begin
-      realrect.x := 0;
-    end
-    else
-    begin
-      OutOfRange := True;
-    end;
-    if dstrect.y < DstSurface.h then
-    begin
-      RealRect.y := dstrect.y;
-    end
-    else if dstrect.y < 0 then
-    begin
-      realrect.y := 0;
-    end
-    else
-    begin
-      OutOfRange := True;
-    end;
-    if OutOfRange = False then
-    begin
-      if realrect.x + dstrect.w <= DstSurface.w then
-      begin
-        RealRect.w := dstrect.w;
-      end
-      else
-      begin
-        RealRect.w := dstrect.w - realrect.x;
-      end;
-      if realrect.y + dstrect.h <= DstSurface.h then
-      begin
-        RealRect.h := dstrect.h;
-      end
-      else
-      begin
-        RealRect.h := dstrect.h - realrect.y;
-      end;
-    end;
-  end;
-  if OutOfRange = False then
-  begin
-    result := realrect;
-  end
-  else
-  begin
-    realrect.w := 0;
-    realrect.h := 0;
-    realrect.x := 0;
-    realrect.y := 0;
-    result := realrect;
-  end;
-end;
-
-procedure SDL_FillRectAdd( DstSurface : PSDL_Surface; dstrect : PSDL_Rect; color : UInt32 );
-var
-  RealRect     : TSDL_Rect;
-  Addr         : pointer;
-  ModX, BPP    : cardinal;
-  x, y, R, G, B, SrcColor : cardinal;
-begin
-  RealRect := ValidateSurfaceRect( DstSurface, DstRect );
-  if ( RealRect.w > 0 ) and ( RealRect.h > 0 ) then
-  begin
-    SDL_LockSurface( DstSurface );
-    BPP := DstSurface.format.BytesPerPixel;
-    with DstSurface^ do
-    begin
-      Addr := pointer( UInt32( pixels ) + UInt32( RealRect.y ) * pitch + UInt32( RealRect.x ) * BPP );
-      ModX := Pitch - UInt32( RealRect.w ) * BPP;
-    end;
-    case DstSurface.format.BitsPerPixel of
-      8 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $E0 + Color and $E0;
-              G := SrcColor and $1C + Color and $1C;
-              B := SrcColor and $03 + Color and $03;
-              if R > $E0 then
-                R := $E0;
-              if G > $1C then
-                G := $1C;
-              if B > $03 then
-                B := $03;
-              PUInt8( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      15 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $7C00 + Color and $7C00;
-              G := SrcColor and $03E0 + Color and $03E0;
-              B := SrcColor and $001F + Color and $001F;
-              if R > $7C00 then
-                R := $7C00;
-              if G > $03E0 then
-                G := $03E0;
-              if B > $001F then
-                B := $001F;
-              PUInt16( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      16 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $F800 + Color and $F800;
-              G := SrcColor and $07C0 + Color and $07C0;
-              B := SrcColor and $001F + Color and $001F;
-              if R > $F800 then
-                R := $F800;
-              if G > $07C0 then
-                G := $07C0;
-              if B > $001F then
-                B := $001F;
-              PUInt16( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      24 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $00FF0000 + Color and $00FF0000;
-              G := SrcColor and $0000FF00 + Color and $0000FF00;
-              B := SrcColor and $000000FF + Color and $000000FF;
-              if R > $FF0000 then
-                R := $FF0000;
-              if G > $00FF00 then
-                G := $00FF00;
-              if B > $0000FF then
-                B := $0000FF;
-              PUInt32( Addr )^ := SrcColor and $FF000000 or R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      32 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $00FF0000 + Color and $00FF0000;
-              G := SrcColor and $0000FF00 + Color and $0000FF00;
-              B := SrcColor and $000000FF + Color and $000000FF;
-              if R > $FF0000 then
-                R := $FF0000;
-              if G > $00FF00 then
-                G := $00FF00;
-              if B > $0000FF then
-                B := $0000FF;
-              PUInt32( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-    end;
-    SDL_UnlockSurface( DstSurface );
-  end;
-end;
-
-procedure SDL_FillRectSub( DstSurface : PSDL_Surface; dstrect : PSDL_Rect; color : UInt32 );
-var
-  RealRect     : TSDL_Rect;
-  Addr         : pointer;
-  ModX, BPP    : cardinal;
-  x, y, R, G, B, SrcColor : cardinal;
-begin
-  RealRect := ValidateSurfaceRect( DstSurface, DstRect );
-  if ( RealRect.w > 0 ) and ( RealRect.h > 0 ) then
-  begin
-    SDL_LockSurface( DstSurface );
-    BPP := DstSurface.format.BytesPerPixel;
-    with DstSurface^ do
-    begin
-      Addr := pointer( UInt32( pixels ) + UInt32( RealRect.y ) * pitch + UInt32( RealRect.x ) * BPP );
-      ModX := Pitch - UInt32( RealRect.w ) * BPP;
-    end;
-    case DstSurface.format.BitsPerPixel of
-      8 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $E0 - Color and $E0;
-              G := SrcColor and $1C - Color and $1C;
-              B := SrcColor and $03 - Color and $03;
-              if R > $E0 then
-                R := 0;
-              if G > $1C then
-                G := 0;
-              if B > $03 then
-                B := 0;
-              PUInt8( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      15 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $7C00 - Color and $7C00;
-              G := SrcColor and $03E0 - Color and $03E0;
-              B := SrcColor and $001F - Color and $001F;
-              if R > $7C00 then
-                R := 0;
-              if G > $03E0 then
-                G := 0;
-              if B > $001F then
-                B := 0;
-              PUInt16( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      16 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $F800 - Color and $F800;
-              G := SrcColor and $07C0 - Color and $07C0;
-              B := SrcColor and $001F - Color and $001F;
-              if R > $F800 then
-                R := 0;
-              if G > $07C0 then
-                G := 0;
-              if B > $001F then
-                B := 0;
-              PUInt16( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      24 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $00FF0000 - Color and $00FF0000;
-              G := SrcColor and $0000FF00 - Color and $0000FF00;
-              B := SrcColor and $000000FF - Color and $000000FF;
-              if R > $FF0000 then
-                R := 0;
-              if G > $00FF00 then
-                G := 0;
-              if B > $0000FF then
-                B := 0;
-              PUInt32( Addr )^ := SrcColor and $FF000000 or R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-      32 :
-        begin
-          for y := 0 to RealRect.h - 1 do
-          begin
-            for x := 0 to RealRect.w - 1 do
-            begin
-              SrcColor := PUInt32( Addr )^;
-              R := SrcColor and $00FF0000 - Color and $00FF0000;
-              G := SrcColor and $0000FF00 - Color and $0000FF00;
-              B := SrcColor and $000000FF - Color and $000000FF;
-              if R > $FF0000 then
-                R := 0;
-              if G > $00FF00 then
-                G := 0;
-              if B > $0000FF then
-                B := 0;
-              PUInt32( Addr )^ := R or G or B;
-              inc( UInt32( Addr ), BPP );
-            end;
-            inc( UInt32( Addr ), ModX );
-          end;
-        end;
-    end;
-    SDL_UnlockSurface( DstSurface );
-  end;
-end;
-
-procedure SDL_GradientFillRect( DstSurface : PSDL_Surface; const Rect : PSDL_Rect; const StartColor, EndColor : TSDL_Color; const Style : TGradientStyle );
-var
-  FBC          : array[ 0..255 ] of Cardinal;
-  // temp vars
-  i, YR, YG, YB, SR, SG, SB, DR, DG, DB : Integer;
-
-  TempStepV, TempStepH : Single;
-  TempLeft, TempTop, TempHeight, TempWidth : integer;
-  TempRect     : TSDL_Rect;
-
-begin
-  // calc FBC
-  YR := StartColor.r;
-  YG := StartColor.g;
-  YB := StartColor.b;
-  SR := YR;
-  SG := YG;
-  SB := YB;
-  DR := EndColor.r - SR;
-  DG := EndColor.g - SG;
-  DB := EndColor.b - SB;
-
-  for i := 0 to 255 do
-  begin
-    FBC[ i ] := SDL_MapRGB( DstSurface.format, YR, YG, YB );
-    YR := SR + round( DR / 255 * i );
-    YG := SG + round( DG / 255 * i );
-    YB := SB + round( DB / 255 * i );
-  end;
-
-  //  if aStyle = 1 then begin
-  TempStepH := Rect.w / 255;
-  TempStepV := Rect.h / 255;
-  TempHeight := Trunc( TempStepV + 1 );
-  TempWidth := Trunc( TempStepH + 1 );
-  TempTop := 0;
-  TempLeft := 0;
-  TempRect.x := Rect.x;
-  TempRect.y := Rect.y;
-  TempRect.h := Rect.h;
-  TempRect.w := Rect.w;
-
-  case Style of
-    gsHorizontal :
-      begin
-        TempRect.h := TempHeight;
-        for i := 0 to 255 do
-        begin
-          TempRect.y := Rect.y + TempTop;
-          SDL_FillRect( DstSurface, @TempRect, FBC[ i ] );
-          TempTop := Trunc( TempStepV * i );
-        end;
-      end;
-    gsVertical :
-      begin
-        TempRect.w := TempWidth;
-        for i := 0 to 255 do
-        begin
-          TempRect.x := Rect.x + TempLeft;
-          SDL_FillRect( DstSurface, @TempRect, FBC[ i ] );
-          TempLeft := Trunc( TempStepH * i );
-        end;
-      end;
-  end;
-end;
-
-procedure SDL_2xBlit( Src, Dest : PSDL_Surface );
-var
-  ReadAddr, WriteAddr, ReadRow, WriteRow : UInt32;
-  SrcPitch, DestPitch, x, y : UInt32;
-begin
-  if ( Src = nil ) or ( Dest = nil ) then
-    exit;
-  if ( Src.w shl 1 ) < Dest.w then
-    exit;
-  if ( Src.h shl 1 ) < Dest.h then
-    exit;
-
-  if SDL_MustLock( Src ) then
-    SDL_LockSurface( Src );
-  if SDL_MustLock( Dest ) then
-    SDL_LockSurface( Dest );
-
-  ReadRow := UInt32( Src.Pixels );
-  WriteRow := UInt32( Dest.Pixels );
-
-  SrcPitch := Src.pitch;
-  DestPitch := Dest.pitch;
-
-  case Src.format.BytesPerPixel of
-    1 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt8( WriteAddr )^ := PUInt8( ReadAddr )^;
-          PUInt8( WriteAddr + 1 )^ := PUInt8( ReadAddr )^;
-          PUInt8( WriteAddr + DestPitch )^ := PUInt8( ReadAddr )^;
-          PUInt8( WriteAddr + DestPitch + 1 )^ := PUInt8( ReadAddr )^;
-          inc( ReadAddr );
-          inc( WriteAddr, 2 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    2 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt16( WriteAddr )^ := PUInt16( ReadAddr )^;
-          PUInt16( WriteAddr + 2 )^ := PUInt16( ReadAddr )^;
-          PUInt16( WriteAddr + DestPitch )^ := PUInt16( ReadAddr )^;
-          PUInt16( WriteAddr + DestPitch + 2 )^ := PUInt16( ReadAddr )^;
-          inc( ReadAddr, 2 );
-          inc( WriteAddr, 4 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    3 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt32( WriteAddr )^ := ( PUInt32( WriteAddr )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          PUInt32( WriteAddr + 3 )^ := ( PUInt32( WriteAddr + 3 )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          PUInt32( WriteAddr + DestPitch )^ := ( PUInt32( WriteAddr + DestPitch )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          PUInt32( WriteAddr + DestPitch + 3 )^ := ( PUInt32( WriteAddr + DestPitch + 3 )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          inc( ReadAddr, 3 );
-          inc( WriteAddr, 6 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    4 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt32( WriteAddr )^ := PUInt32( ReadAddr )^;
-          PUInt32( WriteAddr + 4 )^ := PUInt32( ReadAddr )^;
-          PUInt32( WriteAddr + DestPitch )^ := PUInt32( ReadAddr )^;
-          PUInt32( WriteAddr + DestPitch + 4 )^ := PUInt32( ReadAddr )^;
-          inc( ReadAddr, 4 );
-          inc( WriteAddr, 8 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-  end;
-
-  if SDL_MustLock( Src ) then
-    SDL_UnlockSurface( Src );
-  if SDL_MustLock( Dest ) then
-    SDL_UnlockSurface( Dest );
-end;
-
-procedure SDL_Scanline2xBlit( Src, Dest : PSDL_Surface );
-var
-  ReadAddr, WriteAddr, ReadRow, WriteRow : UInt32;
-  SrcPitch, DestPitch, x, y : UInt32;
-begin
-  if ( Src = nil ) or ( Dest = nil ) then
-    exit;
-  if ( Src.w shl 1 ) < Dest.w then
-    exit;
-  if ( Src.h shl 1 ) < Dest.h then
-    exit;
-
-  if SDL_MustLock( Src ) then
-    SDL_LockSurface( Src );
-  if SDL_MustLock( Dest ) then
-    SDL_LockSurface( Dest );
-
-  ReadRow := UInt32( Src.Pixels );
-  WriteRow := UInt32( Dest.Pixels );
-
-  SrcPitch := Src.pitch;
-  DestPitch := Dest.pitch;
-
-  case Src.format.BytesPerPixel of
-    1 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt8( WriteAddr )^ := PUInt8( ReadAddr )^;
-          PUInt8( WriteAddr + 1 )^ := PUInt8( ReadAddr )^;
-          inc( ReadAddr );
-          inc( WriteAddr, 2 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    2 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt16( WriteAddr )^ := PUInt16( ReadAddr )^;
-          PUInt16( WriteAddr + 2 )^ := PUInt16( ReadAddr )^;
-          inc( ReadAddr, 2 );
-          inc( WriteAddr, 4 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    3 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt32( WriteAddr )^ := ( PUInt32( WriteAddr )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          PUInt32( WriteAddr + 3 )^ := ( PUInt32( WriteAddr + 3 )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          inc( ReadAddr, 3 );
-          inc( WriteAddr, 6 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    4 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          PUInt32( WriteAddr )^ := PUInt32( ReadAddr )^;
-          PUInt32( WriteAddr + 4 )^ := PUInt32( ReadAddr )^;
-          inc( ReadAddr, 4 );
-          inc( WriteAddr, 8 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-  end;
-
-  if SDL_MustLock( Src ) then
-    SDL_UnlockSurface( Src );
-  if SDL_MustLock( Dest ) then
-    SDL_UnlockSurface( Dest );
-end;
-
-procedure SDL_50Scanline2xBlit( Src, Dest : PSDL_Surface );
-var
-  ReadAddr, WriteAddr, ReadRow, WriteRow : UInt32;
-  SrcPitch, DestPitch, x, y, Color : UInt32;
-begin
-  if ( Src = nil ) or ( Dest = nil ) then
-    exit;
-  if ( Src.w shl 1 ) < Dest.w then
-    exit;
-  if ( Src.h shl 1 ) < Dest.h then
-    exit;
-
-  if SDL_MustLock( Src ) then
-    SDL_LockSurface( Src );
-  if SDL_MustLock( Dest ) then
-    SDL_LockSurface( Dest );
-
-  ReadRow := UInt32( Src.Pixels );
-  WriteRow := UInt32( Dest.Pixels );
-
-  SrcPitch := Src.pitch;
-  DestPitch := Dest.pitch;
-
-  case Src.format.BitsPerPixel of
-    8 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          Color := PUInt8( ReadAddr )^;
-          PUInt8( WriteAddr )^ := Color;
-          PUInt8( WriteAddr + 1 )^ := Color;
-          Color := ( Color shr 1 ) and $6D; {%01101101}
-          PUInt8( WriteAddr + DestPitch )^ := Color;
-          PUInt8( WriteAddr + DestPitch + 1 )^ := Color;
-          inc( ReadAddr );
-          inc( WriteAddr, 2 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    15 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          Color := PUInt16( ReadAddr )^;
-          PUInt16( WriteAddr )^ := Color;
-          PUInt16( WriteAddr + 2 )^ := Color;
-          Color := ( Color shr 1 ) and $3DEF; {%0011110111101111}
-          PUInt16( WriteAddr + DestPitch )^ := Color;
-          PUInt16( WriteAddr + DestPitch + 2 )^ := Color;
-          inc( ReadAddr, 2 );
-          inc( WriteAddr, 4 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    16 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          Color := PUInt16( ReadAddr )^;
-          PUInt16( WriteAddr )^ := Color;
-          PUInt16( WriteAddr + 2 )^ := Color;
-          Color := ( Color shr 1 ) and $7BEF; {%0111101111101111}
-          PUInt16( WriteAddr + DestPitch )^ := Color;
-          PUInt16( WriteAddr + DestPitch + 2 )^ := Color;
-          inc( ReadAddr, 2 );
-          inc( WriteAddr, 4 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    24 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          Color := ( PUInt32( WriteAddr )^ and $FF000000 ) or ( PUInt32( ReadAddr )^ and $00FFFFFF );
-          PUInt32( WriteAddr )^ := Color;
-          PUInt32( WriteAddr + 3 )^ := Color;
-          Color := ( Color shr 1 ) and $007F7F7F; {%011111110111111101111111}
-          PUInt32( WriteAddr + DestPitch )^ := Color;
-          PUInt32( WriteAddr + DestPitch + 3 )^ := Color;
-          inc( ReadAddr, 3 );
-          inc( WriteAddr, 6 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-    32 : for y := 1 to Src.h do
-      begin
-        ReadAddr := ReadRow;
-        WriteAddr := WriteRow;
-        for x := 1 to Src.w do
-        begin
-          Color := PUInt32( ReadAddr )^;
-          PUInt32( WriteAddr )^ := Color;
-          PUInt32( WriteAddr + 4 )^ := Color;
-          Color := ( Color shr 1 ) and $7F7F7F7F;
-          PUInt32( WriteAddr + DestPitch )^ := Color;
-          PUInt32( WriteAddr + DestPitch + 4 )^ := Color;
-          inc( ReadAddr, 4 );
-          inc( WriteAddr, 8 );
-        end;
-        inc( UInt32( ReadRow ), SrcPitch );
-        inc( UInt32( WriteRow ), DestPitch * 2 );
-      end;
-  end;
-
-  if SDL_MustLock( Src ) then
-    SDL_UnlockSurface( Src );
-  if SDL_MustLock( Dest ) then
-    SDL_UnlockSurface( Dest );
-end;
-
-function SDL_PixelTestSurfaceVsRect( SrcSurface1 : PSDL_Surface; SrcRect1 :
-  PSDL_Rect; SrcRect2 : PSDL_Rect; Left1, Top1, Left2, Top2 : integer ) :
-  boolean;
-var
-  Src_Rect1, Src_Rect2 : TSDL_Rect;
-  right1, bottom1 : integer;
-  right2, bottom2 : integer;
-  Scan1Start, {Scan2Start,} ScanWidth, ScanHeight : cardinal;
-  Mod1         : cardinal;
-  Addr1        : cardinal;
-  BPP          : cardinal;
-  Pitch1       : cardinal;
-  TransparentColor1 : cardinal;
-  tx, ty       : cardinal;
-  StartTick    : cardinal;
-  Color1       : cardinal;
-begin
-  Result := false;
-  if SrcRect1 = nil then
-  begin
-    with Src_Rect1 do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface1.w;
-      h := SrcSurface1.h;
-    end;
-  end
-  else
-    Src_Rect1 := SrcRect1^;
-
-  Src_Rect2 := SrcRect2^;
-  with Src_Rect1 do
-  begin
-    Right1 := Left1 + w;
-    Bottom1 := Top1 + h;
-  end;
-  with Src_Rect2 do
-  begin
-    Right2 := Left2 + w;
-    Bottom2 := Top2 + h;
-  end;
-  if ( Left1 >= Right2 ) or ( Right1 <= Left2 ) or ( Top1 >= Bottom2 ) or ( Bottom1 <= Top2 ) then
-    exit;
-  if Left1 <= Left2 then
-  begin
-    // 1. left, 2. right
-    Scan1Start := Src_Rect1.x + Left2 - Left1;
-    //Scan2Start := Src_Rect2.x;
-    ScanWidth := Right1 - Left2;
-    with Src_Rect2 do
-      if ScanWidth > w then
-        ScanWidth := w;
-  end
-  else
-  begin
-    // 1. right, 2. left
-    Scan1Start := Src_Rect1.x;
-    //Scan2Start := Src_Rect2.x + Left1 - Left2;
-    ScanWidth := Right2 - Left1;
-    with Src_Rect1 do
-      if ScanWidth > w then
-        ScanWidth := w;
-  end;
-  with SrcSurface1^ do
-  begin
-    Pitch1 := Pitch;
-    Addr1 := cardinal( Pixels );
-    inc( Addr1, Pitch1 * UInt32( Src_Rect1.y ) );
-    with format^ do
-    begin
-      BPP := BytesPerPixel;
-      TransparentColor1 := colorkey;
-    end;
-  end;
-
-  Mod1 := Pitch1 - ( ScanWidth * BPP );
-
-  inc( Addr1, BPP * Scan1Start );
-
-  if Top1 <= Top2 then
-  begin
-    // 1. up, 2. down
-    ScanHeight := Bottom1 - Top2;
-    if ScanHeight > Src_Rect2.h then
-      ScanHeight := Src_Rect2.h;
-    inc( Addr1, Pitch1 * UInt32( Top2 - Top1 ) );
-  end
-  else
-  begin
-    // 1. down, 2. up
-    ScanHeight := Bottom2 - Top1;
-    if ScanHeight > Src_Rect1.h then
-      ScanHeight := Src_Rect1.h;
-
-  end;
-  case BPP of
-    1 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          if ( PByte( Addr1 )^ <> TransparentColor1 ) then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1 );
-
-        end;
-        inc( Addr1, Mod1 );
-
-      end;
-    2 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          if ( PWord( Addr1 )^ <> TransparentColor1 ) then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1, 2 );
-
-        end;
-        inc( Addr1, Mod1 );
-
-      end;
-    3 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          Color1 := PLongWord( Addr1 )^ and $00FFFFFF;
-
-          if ( Color1 <> TransparentColor1 )
-            then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1, 3 );
-
-        end;
-        inc( Addr1, Mod1 );
-
-      end;
-    4 :
-      for ty := 1 to ScanHeight do
-      begin
-        for tx := 1 to ScanWidth do
-        begin
-          if ( PLongWord( Addr1 )^ <> TransparentColor1 ) then
-          begin
-            Result := true;
-            exit;
-          end;
-          inc( Addr1, 4 );
-
-        end;
-        inc( Addr1, Mod1 );
-
-      end;
-  end;
-end;
-
-procedure SDL_ORSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-var
-  R, G, B, Pixel1, Pixel2, TransparentColor : cardinal;
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  Bits         : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    Bits := Format.BitsPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case bits of
-    8 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt8( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt8( DestAddr )^;
-              PUInt8( DestAddr )^ := Pixel2 or Pixel1;
-            end;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    15 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-
-              PUInt16( DestAddr )^ := Pixel2 or Pixel1;
-
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    16 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-
-              PUInt16( DestAddr )^ := Pixel2 or Pixel1;
-
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    24 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^ and $00FFFFFF;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^ and $00FFFFFF;
-
-              PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or Pixel2 or Pixel1;
-            end;
-            inc( SrcAddr, 3 );
-            inc( DestAddr, 3 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    32 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^;
-
-              PUInt32( DestAddr )^ := Pixel2 or Pixel1;
-            end;
-            inc( SrcAddr, 4 );
-            inc( DestAddr, 4 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-
-procedure SDL_ANDSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-var
-  R, G, B, Pixel1, Pixel2, TransparentColor : cardinal;
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  Bits         : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    Bits := Format.BitsPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case bits of
-    8 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt8( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt8( DestAddr )^;
-              PUInt8( DestAddr )^ := Pixel2 and Pixel1;
-            end;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    15 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-
-              PUInt16( DestAddr )^ := Pixel2 and Pixel1;
-
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    16 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-
-              PUInt16( DestAddr )^ := Pixel2 and Pixel1;
-
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    24 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^ and $00FFFFFF;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^ and $00FFFFFF;
-
-              PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or Pixel2 and Pixel1;
-            end;
-            inc( SrcAddr, 3 );
-            inc( DestAddr, 3 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    32 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^;
-
-              PUInt32( DestAddr )^ := Pixel2 and Pixel1;
-            end;
-            inc( SrcAddr, 4 );
-            inc( DestAddr, 4 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-
-
-
-procedure SDL_GTSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-var
-  R, G, B, Pixel1, Pixel2, TransparentColor : cardinal;
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  Bits         : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    Bits := Format.BitsPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case bits of
-    8 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt8( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt8( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                if Pixel2 and $E0 > Pixel1 and $E0 then
-                  R := Pixel2 and $E0
-                else
-                  R := Pixel1 and $E0;
-                if Pixel2 and $1C > Pixel1 and $1C then
-                  G := Pixel2 and $1C
-                else
-                  G := Pixel1 and $1C;
-                if Pixel2 and $03 > Pixel1 and $03 then
-                  B := Pixel2 and $03
-                else
-                  B := Pixel1 and $03;
-
-                if R > $E0 then
-                  R := $E0;
-                if G > $1C then
-                  G := $1C;
-                if B > $03 then
-                  B := $03;
-                PUInt8( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt8( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    15 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $7C00 > Pixel1 and $7C00 then
-                  R := Pixel2 and $7C00
-                else
-                  R := Pixel1 and $7C00;
-                if Pixel2 and $03E0 > Pixel1 and $03E0 then
-                  G := Pixel2 and $03E0
-                else
-                  G := Pixel1 and $03E0;
-                if Pixel2 and $001F > Pixel1 and $001F then
-                  B := Pixel2 and $001F
-                else
-                  B := Pixel1 and $001F;
-
-                PUInt16( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt16( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    16 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $F800 > Pixel1 and $F800 then
-                  R := Pixel2 and $F800
-                else
-                  R := Pixel1 and $F800;
-                if Pixel2 and $07E0 > Pixel1 and $07E0 then
-                  G := Pixel2 and $07E0
-                else
-                  G := Pixel1 and $07E0;
-                if Pixel2 and $001F > Pixel1 and $001F then
-                  B := Pixel2 and $001F
-                else
-                  B := Pixel1 and $001F;
-
-                PUInt16( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt16( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    24 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^ and $00FFFFFF;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^ and $00FFFFFF;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $FF0000 > Pixel1 and $FF0000 then
-                  R := Pixel2 and $FF0000
-                else
-                  R := Pixel1 and $FF0000;
-                if Pixel2 and $00FF00 > Pixel1 and $00FF00 then
-                  G := Pixel2 and $00FF00
-                else
-                  G := Pixel1 and $00FF00;
-                if Pixel2 and $0000FF > Pixel1 and $0000FF then
-                  B := Pixel2 and $0000FF
-                else
-                  B := Pixel1 and $0000FF;
-
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or ( R or G or B );
-              end
-              else
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or Pixel1;
-            end;
-            inc( SrcAddr, 3 );
-            inc( DestAddr, 3 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    32 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $FF0000 > Pixel1 and $FF0000 then
-                  R := Pixel2 and $FF0000
-                else
-                  R := Pixel1 and $FF0000;
-                if Pixel2 and $00FF00 > Pixel1 and $00FF00 then
-                  G := Pixel2 and $00FF00
-                else
-                  G := Pixel1 and $00FF00;
-                if Pixel2 and $0000FF > Pixel1 and $0000FF then
-                  B := Pixel2 and $0000FF
-                else
-                  B := Pixel1 and $0000FF;
-
-                PUInt32( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt32( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 4 );
-            inc( DestAddr, 4 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-
-
-procedure SDL_LTSurface( SrcSurface : PSDL_Surface; SrcRect : PSDL_Rect;
-  DestSurface : PSDL_Surface; DestRect : PSDL_Rect );
-var
-  R, G, B, Pixel1, Pixel2, TransparentColor : cardinal;
-  Src, Dest    : TSDL_Rect;
-  Diff         : integer;
-  SrcAddr, DestAddr : cardinal;
-  WorkX, WorkY : word;
-  SrcMod, DestMod : cardinal;
-  Bits         : cardinal;
-begin
-  if ( SrcSurface = nil ) or ( DestSurface = nil ) then
-    exit; // Remove this to make it faster
-  if ( SrcSurface.Format.BitsPerPixel <> DestSurface.Format.BitsPerPixel ) then
-    exit; // Remove this to make it faster
-  if SrcRect = nil then
-  begin
-    with Src do
-    begin
-      x := 0;
-      y := 0;
-      w := SrcSurface.w;
-      h := SrcSurface.h;
-    end;
-  end
-  else
-    Src := SrcRect^;
-  if DestRect = nil then
-  begin
-    Dest.x := 0;
-    Dest.y := 0;
-  end
-  else
-    Dest := DestRect^;
-  Dest.w := Src.w;
-  Dest.h := Src.h;
-  with DestSurface.Clip_Rect do
-  begin
-    // Source's right side is greater than the dest.cliprect
-    if Dest.x + Src.w > x + w then
-    begin
-      smallint( Src.w ) := x + w - Dest.x;
-      smallint( Dest.w ) := x + w - Dest.x;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's bottom side is greater than the dest.clip
-    if Dest.y + Src.h > y + h then
-    begin
-      smallint( Src.h ) := y + h - Dest.y;
-      smallint( Dest.h ) := y + h - Dest.y;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-    // Source's left side is less than the dest.clip
-    if Dest.x < x then
-    begin
-      Diff := x - Dest.x;
-      Src.x := Src.x + Diff;
-      smallint( Src.w ) := smallint( Src.w ) - Diff;
-      Dest.x := x;
-      smallint( Dest.w ) := smallint( Dest.w ) - Diff;
-      if smallint( Dest.w ) < 1 then
-        exit;
-    end;
-    // Source's Top side is less than the dest.clip
-    if Dest.y < y then
-    begin
-      Diff := y - Dest.y;
-      Src.y := Src.y + Diff;
-      smallint( Src.h ) := smallint( Src.h ) - Diff;
-      Dest.y := y;
-      smallint( Dest.h ) := smallint( Dest.h ) - Diff;
-      if smallint( Dest.h ) < 1 then
-        exit;
-    end;
-  end;
-  with SrcSurface^ do
-  begin
-    SrcAddr := cardinal( Pixels ) + UInt32( Src.y ) * Pitch + UInt32( Src.x ) *
-      Format.BytesPerPixel;
-    SrcMod := Pitch - Src.w * Format.BytesPerPixel;
-    TransparentColor := Format.colorkey;
-  end;
-  with DestSurface^ do
-  begin
-    DestAddr := cardinal( Pixels ) + UInt32( Dest.y ) * Pitch + UInt32( Dest.x ) *
-      Format.BytesPerPixel;
-    DestMod := Pitch - Dest.w * Format.BytesPerPixel;
-    Bits := Format.BitsPerPixel;
-  end;
-  SDL_LockSurface( SrcSurface );
-  SDL_LockSurface( DestSurface );
-  WorkY := Src.h;
-  case bits of
-    8 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt8( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt8( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-                if Pixel2 and $E0 < Pixel1 and $E0 then
-                  R := Pixel2 and $E0
-                else
-                  R := Pixel1 and $E0;
-                if Pixel2 and $1C < Pixel1 and $1C then
-                  G := Pixel2 and $1C
-                else
-                  G := Pixel1 and $1C;
-                if Pixel2 and $03 < Pixel1 and $03 then
-                  B := Pixel2 and $03
-                else
-                  B := Pixel1 and $03;
-
-                if R > $E0 then
-                  R := $E0;
-                if G > $1C then
-                  G := $1C;
-                if B > $03 then
-                  B := $03;
-                PUInt8( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt8( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr );
-            inc( DestAddr );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    15 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $7C00 < Pixel1 and $7C00 then
-                  R := Pixel2 and $7C00
-                else
-                  R := Pixel1 and $7C00;
-                if Pixel2 and $03E0 < Pixel1 and $03E0 then
-                  G := Pixel2 and $03E0
-                else
-                  G := Pixel1 and $03E0;
-                if Pixel2 and $001F < Pixel1 and $001F then
-                  B := Pixel2 and $001F
-                else
-                  B := Pixel1 and $001F;
-
-                PUInt16( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt16( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    16 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt16( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt16( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $F800 < Pixel1 and $F800 then
-                  R := Pixel2 and $F800
-                else
-                  R := Pixel1 and $F800;
-                if Pixel2 and $07E0 < Pixel1 and $07E0 then
-                  G := Pixel2 and $07E0
-                else
-                  G := Pixel1 and $07E0;
-                if Pixel2 and $001F < Pixel1 and $001F then
-                  B := Pixel2 and $001F
-                else
-                  B := Pixel1 and $001F;
-
-                PUInt16( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt16( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 2 );
-            inc( DestAddr, 2 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    24 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^ and $00FFFFFF;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^ and $00FFFFFF;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $FF0000 < Pixel1 and $FF0000 then
-                  R := Pixel2 and $FF0000
-                else
-                  R := Pixel1 and $FF0000;
-                if Pixel2 and $00FF00 < Pixel1 and $00FF00 then
-                  G := Pixel2 and $00FF00
-                else
-                  G := Pixel1 and $00FF00;
-                if Pixel2 and $0000FF < Pixel1 and $0000FF then
-                  B := Pixel2 and $0000FF
-                else
-                  B := Pixel1 and $0000FF;
-
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or ( R or G or B );
-              end
-              else
-                PUInt32( DestAddr )^ := PUInt32( DestAddr )^ and $FF000000 or Pixel1;
-            end;
-            inc( SrcAddr, 3 );
-            inc( DestAddr, 3 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-    32 :
-      begin
-        repeat
-          WorkX := Src.w;
-          repeat
-            Pixel1 := PUInt32( SrcAddr )^;
-            if ( Pixel1 <> TransparentColor ) and ( Pixel1 <> 0 ) then
-            begin
-              Pixel2 := PUInt32( DestAddr )^;
-              if Pixel2 > 0 then
-              begin
-
-                if Pixel2 and $FF0000 < Pixel1 and $FF0000 then
-                  R := Pixel2 and $FF0000
-                else
-                  R := Pixel1 and $FF0000;
-                if Pixel2 and $00FF00 < Pixel1 and $00FF00 then
-                  G := Pixel2 and $00FF00
-                else
-                  G := Pixel1 and $00FF00;
-                if Pixel2 and $0000FF < Pixel1 and $0000FF then
-                  B := Pixel2 and $0000FF
-                else
-                  B := Pixel1 and $0000FF;
-
-                PUInt32( DestAddr )^ := R or G or B;
-              end
-              else
-                PUInt32( DestAddr )^ := Pixel1;
-            end;
-            inc( SrcAddr, 4 );
-            inc( DestAddr, 4 );
-            dec( WorkX );
-          until WorkX = 0;
-          inc( SrcAddr, SrcMod );
-          inc( DestAddr, DestMod );
-          dec( WorkY );
-        until WorkY = 0;
-      end;
-  end;
-  SDL_UnlockSurface( SrcSurface );
-  SDL_UnlockSurface( DestSurface );
-end;
-
-// Will clip the x1,x2,y1,x2 params to the ClipRect provided
-
-function SDL_ClipLine( var x1, y1, x2, y2 : Integer; ClipRect : PSDL_Rect ) : boolean;
-var
-  tflag, flag1, flag2 : word;
-  txy, xedge, yedge : Integer;
-  slope        : single;
-
-  function ClipCode( x, y : Integer ) : word;
-  begin
-    Result := 0;
-    if x < ClipRect.x then
-      Result := 1;
-    if x >= ClipRect.w + ClipRect.x then
-      Result := Result or 2;
-    if y < ClipRect.y then
-      Result := Result or 4;
-    if y >= ClipRect.h + ClipRect.y then
-      Result := Result or 8;
-  end;
-
-begin
-  flag1 := ClipCode( x1, y1 );
-  flag2 := ClipCode( x2, y2 );
-  result := true;
-
-  while true do
-  begin
-    if ( flag1 or flag2 ) = 0 then
-      Exit; // all in
-
-    if ( flag1 and flag2 ) <> 0 then
-    begin
-      result := false;
-      Exit; // all out
-    end;
-
-    if flag2 = 0 then
-    begin
-      txy := x1; x1 := x2; x2 := txy;
-      txy := y1; y1 := y2; y2 := txy;
-      tflag := flag1; flag1 := flag2; flag2 := tflag;
-    end;
-
-    if ( flag2 and 3 ) <> 0 then
-    begin
-      if ( flag2 and 1 ) <> 0 then
-        xedge := ClipRect.x
-      else
-        xedge := ClipRect.w + ClipRect.x - 1; // back 1 pixel otherwise we end up in a loop
-
-      slope := ( y2 - y1 ) / ( x2 - x1 );
-      y2 := y1 + Round( slope * ( xedge - x1 ) );
-      x2 := xedge;
-    end
-    else
-    begin
-      if ( flag2 and 4 ) <> 0 then
-        yedge := ClipRect.y
-      else
-        yedge := ClipRect.h + ClipRect.y - 1; // up 1 pixel otherwise we end up in a loop
-
-      slope := ( x2 - x1 ) / ( y2 - y1 );
-      x2 := x1 + Round( slope * ( yedge - y1 ) );
-      y2 := yedge;
-    end;
-
-    flag2 := ClipCode( x2, y2 );
-  end;
-end;
-
-end.
-
diff --git a/lib/wrappers/sdl/smpeg.nim b/lib/wrappers/sdl/smpeg.nim
deleted file mode 100755
index 733a3fcf9..000000000
--- a/lib/wrappers/sdl/smpeg.nim
+++ /dev/null
@@ -1,319 +0,0 @@
-
-#******************************************************************************
-#
-#  $Id: smpeg.pas,v 1.7 2004/08/14 22:54:30 savage Exp $
-#  
-#
-#                                                                              
-#       Borland Delphi SMPEG - SDL MPEG Player Library                         
-#       Conversion of the SMPEG - SDL MPEG Player Library                      
-#                                                                              
-# Portions created by Sam Lantinga <slouken@devolution.com> are                
-# Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga                     
-# 5635-34 Springhouse Dr.                                                      
-# Pleasanton, CA 94588 (USA)                                                   
-#                                                                              
-# All Rights Reserved.                                                         
-#                                                                              
-# The original files are : smpeg.h                                             
-#                                                                              
-# The initial developer of this Pascal code was :                              
-# Matthias Thoma <ma.thoma@gmx.de>                                             
-#                                                                              
-# Portions created by Matthias Thoma are                                       
-# Copyright (C) 2000 - 2001 Matthias Thoma.                                    
-#                                                                              
-#                                                                              
-# Contributor(s)                                                               
-# --------------                                                               
-# Tom Jones <tigertomjones@gmx.de>  His Project inspired this conversion       
-# Matthias Thoma <ma.thoma@gmx.de>                                             
-#                                                                              
-# Obtained through:                                                            
-# Joint Endeavour of Delphi Innovators ( Project JEDI )                        
-#                                                                              
-# You may retrieve the latest version of this file at the Project              
-# JEDI home page, located at http://delphi-jedi.org                            
-#                                                                              
-# The contents of this file are used with permission, subject to               
-# the Mozilla Public License Version 1.1 (the "License"); you may              
-# not use this file except in compliance with the License. You may             
-# obtain a copy of the License at                                              
-# http://www.mozilla.org/MPL/MPL-1.1.html                                      
-#                                                                              
-# Software distributed under the License is distributed on an                  
-# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or               
-# implied. See the License for the specific language governing                 
-# rights and limitations under the License.                                    
-#                                                                              
-# Description                                                                  
-# -----------                                                                  
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Requires                                                                     
-# --------                                                                     
-#   The SDL Runtime libraris on Win32  : SDL.dll on Linux : libSDL-1.2.so.0    
-#   They are available from...                                                 
-#   http://www.libsdl.org .                                                    
-#                                                                              
-# Programming Notes                                                            
-# -----------------                                                            
-#                                                                              
-#                                                                              
-#                                                                              
-#                                                                              
-# Revision History                                                             
-# ----------------                                                             
-#   May      08 2001 - MT : Initial conversion                                 
-#                                                                              
-#   October  12 2001 - DA : Various changes as suggested by David Acklam       
-#                                                                              
-#   April   03 2003 - DL : Added jedi-sdl.inc include file to support more     
-#                          Pascal compilers. Initial support is now included   
-#                          for GnuPascal, VirtualPascal, TMT and obviously     
-#                          continue support for Delphi Kylix and FreePascal.   
-#                                                                              
-#   April   08 2003 - MK : Aka Mr Kroket - Added Better FPC support            
-#                          Fixed all invalid calls to DLL.                     
-#                          Changed constant names to:                          
-#                          const                                               
-#                          STATUS_SMPEG_ERROR = -1;                            
-#                          STATUS_SMPEG_STOPPED = 0;                           
-#                          STATUS_SMPEG_PLAYING = 1;                           
-#                          because SMPEG_ERROR is a function (_SMPEG_error     
-#                          isn't correct), and cannot be two elements with the 
-#                          same name                                           
-#                                                                              
-#   April   24 2003 - DL : under instruction from Alexey Barkovoy, I have added
-#                          better TMT Pascal support and under instruction     
-#                          from Prof. Abimbola Olowofoyeku (The African Chief),
-#                          I have added better Gnu Pascal support              
-#                                                                              
-#   April   30 2003 - DL : under instruction from David Mears AKA              
-#                          Jason Siletto, I have added FPC Linux support.      
-#                          This was compiled with fpc 1.1, so remember to set  
-#                          include file path. ie. -Fi/usr/share/fpcsrc/rtl/*   
-#                                                                              
-#
-#  $Log: smpeg.pas,v $
-#  Revision 1.7  2004/08/14 22:54:30  savage
-#  Updated so that Library name defines are correctly defined for MacOS X.
-#
-#  Revision 1.6  2004/05/10 14:10:04  savage
-#  Initial MacOS X support. Fixed defines for MACOS ( Classic ) and DARWIN ( MacOS X ).
-#
-#  Revision 1.5  2004/04/13 09:32:08  savage
-#  Changed Shared object names back to just the .so extension to avoid conflicts on various Linux/Unix distros. Therefore developers will need to create Symbolic links to the actual Share Objects if necessary.
-#
-#  Revision 1.4  2004/04/02 10:40:55  savage
-#  Changed Linux Shared Object name so they reflect the Symbolic Links that are created when installing the RPMs from the SDL site.
-#
-#  Revision 1.3  2004/03/31 22:20:02  savage
-#  Windows unit not used in this file, so it was removed to keep the code tidy.
-#
-#  Revision 1.2  2004/03/30 20:23:28  savage
-#  Tidied up use of UNIX compiler directive.
-#
-#  Revision 1.1  2004/02/14 23:35:42  savage
-#  version 1 of sdl_image, sdl_mixer and smpeg.
-#
-#  
-#
-#******************************************************************************
-
-import
-  sdl
-
-when defined(windows):
-  const SmpegLibName = "smpeg.dll"
-elif defined(macosx):
-  const SmpegLibName = "libsmpeg.dylib"
-else:
-  const SmpegLibName = "libsmpeg.so"
-
-const 
-  SMPEG_FILTER_INFO_MB_ERROR* = 1
-  SMPEG_FILTER_INFO_PIXEL_ERROR* = 2 # Filter info from SMPEG 
-
-type 
-  SMPEG_FilterInfo*{.final.} = object 
-    yuv_mb_square_error*: PUint16
-    yuv_pixel_square_error*: PUint16
-
-  TSMPEG_FilterInfo* = SMPEG_FilterInfo
-  PSMPEG_FilterInfo* = ptr SMPEG_FilterInfo # MPEG filter definition 
-  PSMPEG_Filter* = ptr TSMPEG_Filter # Callback functions for the filter 
-  TSMPEG_FilterCallback* = proc (dest, source: PSDL_Overlay, region: PSDL_Rect, 
-                                 filter_info: PSMPEG_FilterInfo, data: Pointer): Pointer{.
-      cdecl.}
-  TSMPEG_FilterDestroy* = proc (Filter: PSMPEG_Filter): Pointer{.cdecl.} # The filter 
-                                                                         # definition itself 
-  TSMPEG_Filter*{.final.} = object  # The null filter (default). It simply copies the source rectangle to the video overlay. 
-    flags*: Uint32
-    data*: Pointer
-    callback*: TSMPEG_FilterCallback
-    destroy*: TSMPEG_FilterDestroy
-
-
-proc SMPEGfilter_null*(): PSMPEG_Filter{.cdecl, importc, dynlib: SmpegLibName.}
-  # The bilinear filter. A basic low-pass filter that will produce a smoother image. 
-proc SMPEGfilter_bilinear*(): PSMPEG_Filter{.cdecl, importc, dynlib: SmpegLibName.}
-  # The deblocking filter. It filters block borders and non-intra coded blocks to reduce blockiness 
-proc SMPEGfilter_deblocking*(): PSMPEG_Filter{.cdecl, importc, dynlib: SmpegLibName.}
-  #------------------------------------------------------------------------------
-  # SMPEG.h
-  #------------------------------------------------------------------------------
-const 
-  SMPEG_MAJOR_VERSION* = 0'i8
-  SMPEG_MINOR_VERSION* = 4'i8
-  SMPEG_PATCHLEVEL* = 2'i8
-
-type 
-  SMPEG_version*{.final.} = object 
-    major*: UInt8
-    minor*: UInt8
-    patch*: UInt8
-
-  TSMPEG_version* = SMPEG_version
-  PSMPEG_version* = ptr TSMPEG_version # This is the actual SMPEG object
-  TSMPEG*{.final.} = object 
-  PSMPEG* = ptr TSMPEG        # Used to get information about the SMPEG object 
-  TSMPEG_Info*{.final.} = object 
-    has_audio*: int
-    has_video*: int
-    width*: int
-    height*: int
-    current_frame*: int
-    current_fps*: float64
-    audio_string*: array[0..79, char]
-    audio_current_frame*: int
-    current_offset*: UInt32
-    total_size*: UInt32
-    current_time*: float64
-    total_time*: float64
-
-  PSMPEG_Info* = ptr TSMPEG_Info # Possible MPEG status codes 
-
-const 
-  STATUS_SMPEG_ERROR* = - 1
-  STATUS_SMPEG_STOPPED* = 0
-  STATUS_SMPEG_PLAYING* = 1
-
-type 
-  TSMPEGstatus* = int
-  PSMPEGstatus* = ptr int     # Matches the declaration of SDL_UpdateRect() 
-  TSMPEG_DisplayCallback* = proc (dst: PSDL_Surface, x, y: int, w, h: int): Pointer{.
-      cdecl.} # Create a new SMPEG object from an MPEG file.
-              #  On return, if 'info' is not NULL, it will be filled with information
-              #  about the MPEG object.
-              #  This function returns a new SMPEG object.  Use SMPEG_error() to find out
-              #  whether or not there was a problem building the MPEG stream.
-              #  The sdl_audio parameter indicates if SMPEG should initialize the SDL audio
-              #  subsystem. If not, you will have to use the SMPEG_playaudio() function below
-              #  to extract the decoded data. 
-
-proc SMPEG_new*(theFile: cstring, info: PSMPEG_Info, sdl_audio: int): PSMPEG{.
-    cdecl, importc, dynlib: SmpegLibName.}
-  # The same as above for a file descriptor 
-proc SMPEG_new_descr*(theFile: int, info: PSMPEG_Info, sdl_audio: int): PSMPEG{.
-    cdecl, importc, dynlib: SmpegLibName.}
-  #  The same as above but for a raw chunk of data.  SMPEG makes a copy of the
-  #   data, so the application is free to delete after a successful call to this
-  #   function. 
-proc SMPEG_new_data*(data: Pointer, size: int, info: PSMPEG_Info, sdl_audio: int): PSMPEG{.
-    cdecl, importc, dynlib: SmpegLibName.}
-  # Get current information about an SMPEG object 
-proc SMPEG_getinfo*(mpeg: PSMPEG, info: PSMPEG_Info){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  #procedure SMPEG_getinfo(mpeg: PSMPEG; info: Pointer);
-  #cdecl; external  SmpegLibName;
-  # Enable or disable audio playback in MPEG stream 
-proc SMPEG_enableaudio*(mpeg: PSMPEG, enable: int){.cdecl, importc, dynlib: SmpegLibName.}
-  # Enable or disable video playback in MPEG stream 
-proc SMPEG_enablevideo*(mpeg: PSMPEG, enable: int){.cdecl, importc, dynlib: SmpegLibName.}
-  # Delete an SMPEG object 
-proc SMPEG_delete*(mpeg: PSMPEG){.cdecl, importc, dynlib: SmpegLibName.}
-  # Get the current status of an SMPEG object 
-proc SMPEG_status*(mpeg: PSMPEG): TSMPEGstatus{.cdecl, importc, dynlib: SmpegLibName.}
-  # status
-  # Set the audio volume of an MPEG stream, in the range 0-100 
-proc SMPEG_setvolume*(mpeg: PSMPEG, volume: int){.cdecl, importc, dynlib: SmpegLibName.}
-  # Set the destination surface for MPEG video playback
-  #  'surfLock' is a mutex used to synchronize access to 'dst', and can be NULL.
-  #  'callback' is a function called when an area of 'dst' needs to be updated.
-  #  If 'callback' is NULL, the default function (SDL_UpdateRect) will be used. 
-proc SMPEG_setdisplay*(mpeg: PSMPEG, dst: PSDL_Surface, surfLock: PSDL_mutex, 
-                       callback: TSMPEG_DisplayCallback){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Set or clear looping play on an SMPEG object 
-proc SMPEG_loop*(mpeg: PSMPEG, repeat: int){.cdecl, importc, dynlib: SmpegLibName.}
-  # Scale pixel display on an SMPEG object 
-proc SMPEG_scaleXY*(mpeg: PSMPEG, width, height: int){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-proc SMPEG_scale*(mpeg: PSMPEG, scale: int){.cdecl, importc, dynlib: SmpegLibName.}
-proc SMPEG_Double*(mpeg: PSMPEG, doubleit: bool)
-  # Move the video display area within the destination surface 
-proc SMPEG_move*(mpeg: PSMPEG, x, y: int){.cdecl, importc, dynlib: SmpegLibName.}
-  # Set the region of the video to be shown 
-proc SMPEG_setdisplayregion*(mpeg: PSMPEG, x, y, w, h: int){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Play an SMPEG object 
-proc SMPEG_play*(mpeg: PSMPEG){.cdecl, importc, dynlib: SmpegLibName.}
-  # Pause/Resume playback of an SMPEG object
-proc SMPEG_pause*(mpeg: PSMPEG){.cdecl, importc, dynlib: SmpegLibName.}
-  # Stop playback of an SMPEG object 
-proc SMPEG_stop*(mpeg: PSMPEG){.cdecl, importc, dynlib: SmpegLibName.}
-  # Rewind the play position of an SMPEG object to the beginning of the MPEG 
-proc SMPEG_rewind*(mpeg: PSMPEG){.cdecl, importc, dynlib: SmpegLibName.}
-  # Seek 'bytes' bytes in the MPEG stream 
-proc SMPEG_seek*(mpeg: PSMPEG, bytes: int){.cdecl, importc, dynlib: SmpegLibName.}
-  # Skip 'seconds' seconds in the MPEG stream 
-proc SMPEG_skip*(mpeg: PSMPEG, seconds: float32){.cdecl, importc, dynlib: SmpegLibName.}
-  # Render a particular frame in the MPEG video
-  #   API CHANGE: This function no longer takes a target surface and position.
-  #               Use SMPEG_setdisplay() and SMPEG_move() to set this information. 
-proc SMPEG_renderFrame*(mpeg: PSMPEG, framenum: int){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Render the last frame of an MPEG video 
-proc SMPEG_renderFinal*(mpeg: PSMPEG, dst: PSDL_Surface, x, y: int){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Set video filter 
-proc SMPEG_filter*(mpeg: PSMPEG, filter: PSMPEG_Filter): PSMPEG_Filter{.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Return NULL if there is no error in the MPEG stream, or an error message
-  #   if there was a fatal error in the MPEG stream for the SMPEG object. 
-proc SMPEG_error*(mpeg: PSMPEG): cstring{.cdecl, importc, dynlib: SmpegLibName.}
-  # Exported callback function for audio playback.
-  #   The function takes a buffer and the amount of data to fill, and returns
-  #   the amount of data in bytes that was actually written.  This will be the
-  #   amount requested unless the MPEG audio has finished.
-  #
-proc SMPEG_playAudio*(mpeg: PSMPEG, stream: PUInt8, length: int): int{.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Wrapper for SMPEG_playAudio() that can be passed to SDL and SDL_mixer 
-proc SMPEG_playAudioSDL*(mpeg: Pointer, stream: PUInt8, length: int){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Get the best SDL audio spec for the audio stream 
-proc SMPEG_wantedSpec*(mpeg: PSMPEG, wanted: PSDL_AudioSpec): int{.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # Inform SMPEG of the actual SDL audio spec used for sound playback 
-proc SMPEG_actualSpec*(mpeg: PSMPEG, spec: PSDL_AudioSpec){.cdecl, 
-    importc, dynlib: SmpegLibName.}
-  # This macro can be used to fill a version structure with the compile-time
-  #  version of the SDL library. 
-proc SMPEG_GETVERSION*(X: var TSMPEG_version)
-# implementation
-
-proc SMPEG_double(mpeg: PSMPEG, doubleit: bool) = 
-  if doubleit: SMPEG_scale(mpeg, 2)
-  else: SMPEG_scale(mpeg, 1)
-  
-proc SMPEG_GETVERSION(X: var TSMPEG_version) = 
-  X.major = SMPEG_MAJOR_VERSION
-  X.minor = SMPEG_MINOR_VERSION
-  X.patch = SMPEG_PATCHLEVEL
diff --git a/lib/wrappers/sqlite3.nim b/lib/wrappers/sqlite3.nim
deleted file mode 100755
index 7dd33f296..000000000
--- a/lib/wrappers/sqlite3.nim
+++ /dev/null
@@ -1,376 +0,0 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2010 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-{.deadCodeElim: on.}
-
-when defined(windows): 
-  const Sqlite3Lib = "sqlite3.dll"
-elif defined(macosx):
-  const Sqlite3Lib = "sqlite-3.6.13.dylib"
-else: 
-  const Sqlite3Lib = "libsqlite3.so"
-
-const 
-  SQLITE_INTEGER* = 1
-  SQLITE_FLOAT* = 2
-  SQLITE_BLOB* = 4
-  SQLITE_NULL* = 5
-  SQLITE_TEXT* = 3
-  SQLITE3_TEXT* = 3
-  SQLITE_UTF8* = 1
-  SQLITE_UTF16LE* = 2
-  SQLITE_UTF16BE* = 3         # Use native byte order  
-  SQLITE_UTF16* = 4           # sqlite3_create_function only  
-  SQLITE_ANY* = 5             #sqlite_exec return values
-  SQLITE_OK* = 0
-  SQLITE_ERROR* = 1           # SQL error or missing database  
-  SQLITE_INTERNAL* = 2        # An internal logic error in SQLite  
-  SQLITE_PERM* = 3            # Access permission denied  
-  SQLITE_ABORT* = 4           # Callback routine requested an abort  
-  SQLITE_BUSY* = 5            # The database file is locked  
-  SQLITE_LOCKED* = 6          # A table in the database is locked  
-  SQLITE_NOMEM* = 7           # A malloc() failed  
-  SQLITE_READONLY* = 8        # Attempt to write a readonly database  
-  SQLITE_INTERRUPT* = 9       # Operation terminated by sqlite3_interrupt() 
-  SQLITE_IOERR* = 10          # Some kind of disk I/O error occurred  
-  SQLITE_CORRUPT* = 11        # The database disk image is malformed  
-  SQLITE_NOTFOUND* = 12       # (Internal Only) Table or record not found  
-  SQLITE_FULL* = 13           # Insertion failed because database is full  
-  SQLITE_CANTOPEN* = 14       # Unable to open the database file  
-  SQLITE_PROTOCOL* = 15       # Database lock protocol error  
-  SQLITE_EMPTY* = 16          # Database is empty  
-  SQLITE_SCHEMA* = 17         # The database schema changed  
-  SQLITE_TOOBIG* = 18         # Too much data for one row of a table  
-  SQLITE_CONSTRAINT* = 19     # Abort due to contraint violation  
-  SQLITE_MISMATCH* = 20       # Data type mismatch  
-  SQLITE_MISUSE* = 21         # Library used incorrectly  
-  SQLITE_NOLFS* = 22          # Uses OS features not supported on host  
-  SQLITE_AUTH* = 23           # Authorization denied  
-  SQLITE_FORMAT* = 24         # Auxiliary database format error  
-  SQLITE_RANGE* = 25          # 2nd parameter to sqlite3_bind out of range  
-  SQLITE_NOTADB* = 26         # File opened that is not a database file  
-  SQLITE_ROW* = 100           # sqlite3_step() has another row ready  
-  SQLITE_DONE* = 101          # sqlite3_step() has finished executing  
-  SQLITE_COPY* = 0
-  SQLITE_CREATE_INDEX* = 1
-  SQLITE_CREATE_TABLE* = 2
-  SQLITE_CREATE_TEMP_INDEX* = 3
-  SQLITE_CREATE_TEMP_TABLE* = 4
-  SQLITE_CREATE_TEMP_TRIGGER* = 5
-  SQLITE_CREATE_TEMP_VIEW* = 6
-  SQLITE_CREATE_TRIGGER* = 7
-  SQLITE_CREATE_VIEW* = 8
-  SQLITE_DELETE* = 9
-  SQLITE_DROP_INDEX* = 10
-  SQLITE_DROP_TABLE* = 11
-  SQLITE_DROP_TEMP_INDEX* = 12
-  SQLITE_DROP_TEMP_TABLE* = 13
-  SQLITE_DROP_TEMP_TRIGGER* = 14
-  SQLITE_DROP_TEMP_VIEW* = 15
-  SQLITE_DROP_TRIGGER* = 16
-  SQLITE_DROP_VIEW* = 17
-  SQLITE_INSERT* = 18
-  SQLITE_PRAGMA* = 19
-  SQLITE_READ* = 20
-  SQLITE_SELECT* = 21
-  SQLITE_TRANSACTION* = 22
-  SQLITE_UPDATE* = 23
-  SQLITE_ATTACH* = 24
-  SQLITE_DETACH* = 25
-  SQLITE_ALTER_TABLE* = 26
-  SQLITE_REINDEX* = 27
-  SQLITE_DENY* = 1
-  SQLITE_IGNORE* = 2          # Original from sqlite3.h: 
-                              ##define SQLITE_STATIC      ((void(*)(void *))0)
-                              ##define SQLITE_TRANSIENT   ((void(*)(void *))-1)
-
-const 
-  SQLITE_STATIC* = nil
-  SQLITE_TRANSIENT* = cast[pointer](-1)
-
-type 
-  sqlite_int64* = int64
-  PPPChar* = ptr ptr cstring
-  TSqlite3 {.pure, final.} = object
-  Psqlite3* = ptr TSqlite3
-  PPSqlite3* = ptr PSqlite3
-  TSqlLite3Context {.pure, final.} = object
-  Psqlite3_context* = ptr TSqlLite3Context
-  Tsqlite3_stmt {.pure, final.} = object
-  Psqlite3_stmt* = ptr TSqlite3_stmt
-  PPsqlite3_stmt* = ptr Psqlite3_stmt
-  Tsqlite3_value {.pure, final.} = object
-  Psqlite3_value* = ptr Tsqlite3_value
-  PPsqlite3_value* = ptr Psqlite3_value #Callback function types
-                                        #Notice that most functions 
-                                        #were named using as prefix the 
-                                        #function name that uses them,
-                                        #rather than describing their functions  
-  Tsqlite3_callback* = proc (para1: pointer, para2: int32, para3, 
-                             para4: cstringArray): int32{.cdecl.}
-  Tbind_destructor_func* = proc (para1: pointer){.cdecl.}
-  Tcreate_function_step_func* = proc (para1: Psqlite3_context, para2: int32, 
-                                     para3: PPsqlite3_value){.cdecl.}
-  Tcreate_function_func_func* = proc (para1: Psqlite3_context, para2: int32, 
-                                     para3: PPsqlite3_value){.cdecl.}
-  Tcreate_function_final_func* = proc (para1: Psqlite3_context){.cdecl.}
-  Tsqlite3_result_func* = proc (para1: pointer){.cdecl.}
-  Tsqlite3_create_collation_func* = proc (para1: pointer, para2: int32, 
-      para3: pointer, para4: int32, para5: pointer): int32{.cdecl.}
-  Tsqlite3_collation_needed_func* = proc (para1: pointer, para2: Psqlite3, 
-      eTextRep: int32, para4: cstring){.cdecl.}
-
-proc sqlite3_close*(para1: Psqlite3): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_close".}
-proc sqlite3_exec*(para1: Psqlite3, sql: cstring, para3: Tsqlite3_callback, 
-                   para4: pointer, errmsg: var cstring): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_exec".}
-proc sqlite3_last_insert_rowid*(para1: Psqlite3): sqlite_int64{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_last_insert_rowid".}
-proc sqlite3_changes*(para1: Psqlite3): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_changes".}
-proc sqlite3_total_changes*(para1: Psqlite3): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_total_changes".}
-proc sqlite3_interrupt*(para1: Psqlite3){.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_interrupt".}
-proc sqlite3_complete*(sql: cstring): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_complete".}
-proc sqlite3_complete16*(sql: pointer): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_complete16".}
-proc sqlite3_busy_handler*(para1: Psqlite3, 
-    para2: proc (para1: pointer, para2: int32): int32 {.cdecl.}, 
-    para3: pointer): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_busy_handler".}
-proc sqlite3_busy_timeout*(para1: Psqlite3, ms: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_busy_timeout".}
-proc sqlite3_get_table*(para1: Psqlite3, sql: cstring, resultp: var cstringArray, 
-                        nrow, ncolumn: var cint, errmsg: ptr cstring): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_get_table".}
-proc sqlite3_free_table*(result: cstringArray){.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_free_table".}
-  # Todo: see how translate sqlite3_mprintf, sqlite3_vmprintf, sqlite3_snprintf
-  # function sqlite3_mprintf(_para1:Pchar; args:array of const):Pchar;cdecl; external Sqlite3Lib name 'sqlite3_mprintf';
-proc sqlite3_mprintf*(para1: cstring): cstring{.cdecl, varargs, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_mprintf".}
-  #function sqlite3_vmprintf(_para1:Pchar; _para2:va_list):Pchar;cdecl; external Sqlite3Lib name 'sqlite3_vmprintf';
-proc sqlite3_free*(z: cstring){.cdecl, dynlib: Sqlite3Lib, 
-                                importc: "sqlite3_free".}
-  #function sqlite3_snprintf(_para1:longint; _para2:Pchar; _para3:Pchar; args:array of const):Pchar;cdecl; external Sqlite3Lib name 'sqlite3_snprintf';
-proc sqlite3_snprintf*(para1: int32, para2: cstring, para3: cstring): cstring{.
-    cdecl, dynlib: Sqlite3Lib, varargs, importc: "sqlite3_snprintf".}
-proc sqlite3_set_authorizer*(para1: Psqlite3, 
-                             xAuth: proc (para1: pointer, para2: int32, 
-                                      para3: cstring, para4: cstring, 
-                                      para5: cstring, 
-                                      para6: cstring): int32{.cdecl.}, 
-                             pUserData: pointer): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_set_authorizer".}
-proc sqlite3_trace*(para1: Psqlite3, 
-                    xTrace: proc (para1: pointer, para2: cstring){.cdecl.}, 
-                    para3: pointer): pointer{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_trace".}
-proc sqlite3_progress_handler*(para1: Psqlite3, para2: int32, 
-                               para3: proc (para1: pointer): int32 {.cdecl.}, 
-                               para4: pointer){.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_progress_handler".}
-proc sqlite3_commit_hook*(para1: Psqlite3, 
-                          para2: proc (para1: pointer): int32{.cdecl.}, 
-                          para3: pointer): pointer{.cdecl, dynlib: Sqlite3Lib,
-    importc: "sqlite3_commit_hook".}
-proc sqlite3_open*(filename: cstring, ppDb: var Psqlite3): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_open".}
-proc sqlite3_open16*(filename: pointer, ppDb: var Psqlite3): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_open16".}
-proc sqlite3_errcode*(db: Psqlite3): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_errcode".}
-proc sqlite3_errmsg*(para1: Psqlite3): cstring{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_errmsg".}
-proc sqlite3_errmsg16*(para1: Psqlite3): pointer{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_errmsg16".}
-proc sqlite3_prepare*(db: Psqlite3, zSql: cstring, nBytes: int32, 
-                      ppStmt: PPsqlite3_stmt, pzTail: ptr cstring): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_prepare".}
-proc sqlite3_prepare16*(db: Psqlite3, zSql: pointer, nBytes: int32, 
-                        ppStmt: PPsqlite3_stmt, pzTail: var pointer): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_prepare16".}
-proc sqlite3_bind_blob*(para1: Psqlite3_stmt, para2: int32, para3: pointer, 
-                        n: int32, para5: Tbind_destructor_func): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_blob".}
-proc sqlite3_bind_double*(para1: Psqlite3_stmt, para2: int32, para3: float64): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_bind_double".}
-proc sqlite3_bind_int*(para1: Psqlite3_stmt, para2: int32, para3: int32): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_bind_int".}
-proc sqlite3_bind_int64*(para1: Psqlite3_stmt, para2: int32, para3: sqlite_int64): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_bind_int64".}
-proc sqlite3_bind_null*(para1: Psqlite3_stmt, para2: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_null".}
-proc sqlite3_bind_text*(para1: Psqlite3_stmt, para2: int32, para3: cstring, 
-                        n: int32, para5: Tbind_destructor_func): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_text".}
-proc sqlite3_bind_text16*(para1: Psqlite3_stmt, para2: int32, para3: pointer, 
-                          para4: int32, para5: Tbind_destructor_func): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_bind_text16".}
-  #function sqlite3_bind_value(_para1:Psqlite3_stmt; _para2:longint; _para3:Psqlite3_value):longint;cdecl; external Sqlite3Lib name 'sqlite3_bind_value';
-  #These overloaded functions were introduced to allow the use of SQLITE_STATIC and SQLITE_TRANSIENT
-  #It's the c world man ;-)
-proc sqlite3_bind_blob*(para1: Psqlite3_stmt, para2: int32, para3: pointer, 
-                        n: int32, para5: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_blob".}
-proc sqlite3_bind_text*(para1: Psqlite3_stmt, para2: int32, para3: cstring, 
-                        n: int32, para5: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_text".}
-proc sqlite3_bind_text16*(para1: Psqlite3_stmt, para2: int32, para3: pointer, 
-                          para4: int32, para5: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_text16".}
-proc sqlite3_bind_parameter_count*(para1: Psqlite3_stmt): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_bind_parameter_count".}
-proc sqlite3_bind_parameter_name*(para1: Psqlite3_stmt, para2: int32): cstring{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_bind_parameter_name".}
-proc sqlite3_bind_parameter_index*(para1: Psqlite3_stmt, zName: cstring): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_bind_parameter_index".}
-  #function sqlite3_clear_bindings(_para1:Psqlite3_stmt):longint;cdecl; external Sqlite3Lib name 'sqlite3_clear_bindings';
-proc sqlite3_column_count*(pStmt: Psqlite3_stmt): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_count".}
-proc sqlite3_column_name*(para1: Psqlite3_stmt, para2: int32): cstring{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_name".}
-proc sqlite3_column_name16*(para1: Psqlite3_stmt, para2: int32): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_name16".}
-proc sqlite3_column_decltype*(para1: Psqlite3_stmt, i: int32): cstring{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_decltype".}
-proc sqlite3_column_decltype16*(para1: Psqlite3_stmt, para2: int32): pointer{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_column_decltype16".}
-proc sqlite3_step*(para1: Psqlite3_stmt): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_step".}
-proc sqlite3_data_count*(pStmt: Psqlite3_stmt): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_data_count".}
-proc sqlite3_column_blob*(para1: Psqlite3_stmt, iCol: int32): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_blob".}
-proc sqlite3_column_bytes*(para1: Psqlite3_stmt, iCol: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_bytes".}
-proc sqlite3_column_bytes16*(para1: Psqlite3_stmt, iCol: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_bytes16".}
-proc sqlite3_column_double*(para1: Psqlite3_stmt, iCol: int32): float64{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_double".}
-proc sqlite3_column_int*(para1: Psqlite3_stmt, iCol: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_int".}
-proc sqlite3_column_int64*(para1: Psqlite3_stmt, iCol: int32): sqlite_int64{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_column_int64".}
-proc sqlite3_column_text*(para1: Psqlite3_stmt, iCol: int32): cstring{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_text".}
-proc sqlite3_column_text16*(para1: Psqlite3_stmt, iCol: int32): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_text16".}
-proc sqlite3_column_type*(para1: Psqlite3_stmt, iCol: int32): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_column_type".}
-proc sqlite3_finalize*(pStmt: Psqlite3_stmt): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_finalize".}
-proc sqlite3_reset*(pStmt: Psqlite3_stmt): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_reset".}
-proc sqlite3_create_function*(para1: Psqlite3, zFunctionName: cstring, 
-                              nArg: int32, eTextRep: int32, para5: pointer, 
-                              xFunc: Tcreate_function_func_func, 
-                              xStep: Tcreate_function_step_func, 
-                              xFinal: Tcreate_function_final_func): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_create_function".}
-proc sqlite3_create_function16*(para1: Psqlite3, zFunctionName: pointer, 
-                                nArg: int32, eTextRep: int32, para5: pointer, 
-                                xFunc: Tcreate_function_func_func, 
-                                xStep: Tcreate_function_step_func, 
-                                xFinal: Tcreate_function_final_func): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_create_function16".}
-proc sqlite3_aggregate_count*(para1: Psqlite3_context): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_aggregate_count".}
-proc sqlite3_value_blob*(para1: Psqlite3_value): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_blob".}
-proc sqlite3_value_bytes*(para1: Psqlite3_value): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_bytes".}
-proc sqlite3_value_bytes16*(para1: Psqlite3_value): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_bytes16".}
-proc sqlite3_value_double*(para1: Psqlite3_value): float64{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_double".}
-proc sqlite3_value_int*(para1: Psqlite3_value): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_int".}
-proc sqlite3_value_int64*(para1: Psqlite3_value): sqlite_int64{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_int64".}
-proc sqlite3_value_text*(para1: Psqlite3_value): cstring{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_text".}
-proc sqlite3_value_text16*(para1: Psqlite3_value): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_text16".}
-proc sqlite3_value_text16le*(para1: Psqlite3_value): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_text16le".}
-proc sqlite3_value_text16be*(para1: Psqlite3_value): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_text16be".}
-proc sqlite3_value_type*(para1: Psqlite3_value): int32{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_value_type".}
-proc sqlite3_aggregate_context*(para1: Psqlite3_context, nBytes: int32): pointer{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_aggregate_context".}
-proc sqlite3_user_data*(para1: Psqlite3_context): pointer{.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_user_data".}
-proc sqlite3_get_auxdata*(para1: Psqlite3_context, para2: int32): pointer{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_get_auxdata".}
-proc sqlite3_set_auxdata*(para1: Psqlite3_context, para2: int32, para3: pointer, 
-                          para4: proc (para1: pointer) {.cdecl.}){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_set_auxdata".}
-proc sqlite3_result_blob*(para1: Psqlite3_context, para2: pointer, para3: int32, 
-                          para4: Tsqlite3_result_func){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_blob".}
-proc sqlite3_result_double*(para1: Psqlite3_context, para2: float64){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_double".}
-proc sqlite3_result_error*(para1: Psqlite3_context, para2: cstring, para3: int32){.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_result_error".}
-proc sqlite3_result_error16*(para1: Psqlite3_context, para2: pointer, 
-                             para3: int32){.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_result_error16".}
-proc sqlite3_result_int*(para1: Psqlite3_context, para2: int32){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_int".}
-proc sqlite3_result_int64*(para1: Psqlite3_context, para2: sqlite_int64){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_int64".}
-proc sqlite3_result_null*(para1: Psqlite3_context){.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_result_null".}
-proc sqlite3_result_text*(para1: Psqlite3_context, para2: cstring, para3: int32, 
-                          para4: Tsqlite3_result_func){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_text".}
-proc sqlite3_result_text16*(para1: Psqlite3_context, para2: pointer, 
-                            para3: int32, para4: Tsqlite3_result_func){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_text16".}
-proc sqlite3_result_text16le*(para1: Psqlite3_context, para2: pointer, 
-                              para3: int32, para4: Tsqlite3_result_func){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_text16le".}
-proc sqlite3_result_text16be*(para1: Psqlite3_context, para2: pointer, 
-                              para3: int32, para4: Tsqlite3_result_func){.cdecl, 
-    dynlib: Sqlite3Lib, importc: "sqlite3_result_text16be".}
-proc sqlite3_result_value*(para1: Psqlite3_context, para2: Psqlite3_value){.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_result_value".}
-proc sqlite3_create_collation*(para1: Psqlite3, zName: cstring, eTextRep: int32, 
-                               para4: pointer, 
-                               xCompare: Tsqlite3_create_collation_func): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_create_collation".}
-proc sqlite3_create_collation16*(para1: Psqlite3, zName: cstring, 
-                                 eTextRep: int32, para4: pointer, 
-                                 xCompare: Tsqlite3_create_collation_func): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_create_collation16".}
-proc sqlite3_collation_needed*(para1: Psqlite3, para2: pointer, 
-                               para3: Tsqlite3_collation_needed_func): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_collation_needed".}
-proc sqlite3_collation_needed16*(para1: Psqlite3, para2: pointer, 
-                                 para3: Tsqlite3_collation_needed_func): int32{.
-    cdecl, dynlib: Sqlite3Lib, importc: "sqlite3_collation_needed16".}
-proc sqlite3_libversion*(): cstring{.cdecl, dynlib: Sqlite3Lib, 
-                                     importc: "sqlite3_libversion".}
-  #Alias for allowing better code portability (win32 is not working with external variables) 
-proc sqlite3_version*(): cstring{.cdecl, dynlib: Sqlite3Lib, 
-                                  importc: "sqlite3_libversion".}
-  # Not published functions
-proc sqlite3_libversion_number*(): int32{.cdecl, dynlib: Sqlite3Lib, 
-    importc: "sqlite3_libversion_number".}
-  #function sqlite3_key(db:Psqlite3; pKey:pointer; nKey:longint):longint;cdecl; external Sqlite3Lib name 'sqlite3_key';
-  #function sqlite3_rekey(db:Psqlite3; pKey:pointer; nKey:longint):longint;cdecl; external Sqlite3Lib name 'sqlite3_rekey';
-  #function sqlite3_sleep(_para1:longint):longint;cdecl; external Sqlite3Lib name 'sqlite3_sleep';
-  #function sqlite3_expired(_para1:Psqlite3_stmt):longint;cdecl; external Sqlite3Lib name 'sqlite3_expired';
-  #function sqlite3_global_recover:longint;cdecl; external Sqlite3Lib name 'sqlite3_global_recover';
-# implementation
diff --git a/lib/wrappers/tcl.nim b/lib/wrappers/tcl.nim
deleted file mode 100755
index 813714ecd..000000000
--- a/lib/wrappers/tcl.nim
+++ /dev/null
@@ -1,857 +0,0 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2009 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-## This module is a wrapper for the TCL programming language.
-
-#
-#  tcl.h --
-# 
-#  This header file describes the externally-visible facilities of the Tcl
-#  interpreter.
-# 
-#  Translated to Pascal Copyright (c) 2002 by Max Artemev
-#  aka Bert Raccoon (bert@furry.ru, bert_raccoon@freemail.ru)
-# 
-# 
-#  Copyright (c) 1998-2000 by Scriptics Corporation.
-#  Copyright (c) 1994-1998 Sun Microsystems, Inc.
-#  Copyright (c) 1993-1996 Lucent Technologies.
-#  Copyright (c) 1987-1994 John Ousterhout, The Regents of the
-#                          University of California, Berkeley.
-# 
-#  ***********************************************************************
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#  ***********************************************************************
-# 
-
-{.deadCodeElim: on.}
-
-when defined(WIN32): 
-  const dllName = "tcl(85|84|83|82|81|80).dll"
-elif defined(macosx): 
-  const dllName = "libtcl(8.5|8.4|8.3|8.2|8.1).dynlib"
-else:
-  const dllName = "libtcl(8.5|8.4|8.3|8.2|8.1).so.(1|0)"
-
-const 
-  TCL_DESTROYED* = 0xDEADDEAD
-  TCL_OK* = 0
-  TCL_ERROR* = 1
-  TCL_RETURN* = 2
-  TCL_BREAK* = 3
-  TCL_CONTINUE* = 4
-  TCL_RESULT_SIZE* = 200
-  MAX_ARGV* = 0x00007FFF
-  TCL_VERSION_MAJOR* = 0
-  TCL_VERSION_MINOR* = 0
-  TCL_NO_EVAL* = 0x00010000
-  TCL_EVAL_GLOBAL* = 0x00020000 # Flag values passed to variable-related procedures. *
-  TCL_GLOBAL_ONLY* = 1
-  TCL_NAMESPACE_ONLY* = 2
-  TCL_APPEND_VALUE* = 4
-  TCL_LIST_ELEMENT* = 8
-  TCL_TRACE_READS* = 0x00000010
-  TCL_TRACE_WRITES* = 0x00000020
-  TCL_TRACE_UNSETS* = 0x00000040
-  TCL_TRACE_DESTROYED* = 0x00000080
-  TCL_INTERP_DESTROYED* = 0x00000100
-  TCL_LEAVE_ERR_MSG* = 0x00000200
-  TCL_PARSE_PART1* = 0x00000400 # Types for linked variables: *
-  TCL_LINK_INT* = 1
-  TCL_LINK_DOUBLE* = 2
-  TCL_LINK_BOOLEAN* = 3
-  TCL_LINK_STRING* = 4
-  TCL_LINK_READ_ONLY* = 0x00000080
-  TCL_SMALL_HASH_TABLE* = 4   # Hash Table *
-  TCL_STRING_KEYS* = 0
-  TCL_ONE_WORD_KEYS* = 1      # Const/enums Tcl_QueuePosition *
-                              # typedef enum {
-  TCL_QUEUE_TAIL* = 0
-  TCL_QUEUE_HEAD* = 1
-  TCL_QUEUE_MARK* = 2         #} Tcl_QueuePosition;
-                              # Event Flags
-  TCL_DONT_WAIT* = 1 shl 1
-  TCL_WINDOW_EVENTS* = 1 shl 2
-  TCL_FILE_EVENTS* = 1 shl 3
-  TCL_TIMER_EVENTS* = 1 shl 4
-  TCL_IDLE_EVENTS* = 1 shl 5  # WAS 0x10 ???? *
-  TCL_ALL_EVENTS* = not TCL_DONT_WAIT 
-
-  TCL_VOLATILE* = 1
-  TCL_STATIC* = 0
-  TCL_DYNAMIC* = 3            # Channel
-  TCL_STDIN* = 1 shl 1
-  TCL_STDOUT* = 1 shl 2
-  TCL_STDERR* = 1 shl 3
-  TCL_ENFORCE_MODE* = 1 shl 4
-  TCL_READABLE* = 1 shl 1
-  TCL_WRITABLE* = 1 shl 2
-  TCL_EXCEPTION* = 1 shl 3    # POSIX *
-  EPERM* = 1 # Operation not permitted; only the owner of the file (or other
-             # resource) or processes with special privileges can perform the
-             # operation.
-             #
-  ENOENT* = 2 # No such file or directory.  This is a "file doesn't exist" error
-              # for ordinary files that are referenced in contexts where they are
-              # expected to already exist.
-              #
-  ESRCH* = 3                  # No process matches the specified process ID. *
-  EINTR* = 4 # Interrupted function call; an asynchronous signal occurred and
-             # prevented completion of the call.  When this happens, you should
-             # try the call again.
-             #
-  EIO* = 5                    # Input/output error; usually used for physical read or write errors. *
-  ENXIO* = 6 # No such device or address.  The system tried to use the device
-             # represented by a file you specified, and it couldn't find the
-             # device.  This can mean that the device file was installed
-             # incorrectly, or that the physical device is missing or not
-             # correctly attached to the computer.
-             #
-  E2BIG* = 7 # Argument list too long; used when the arguments passed to a new
-             # program being executed with one of the `exec' functions (*note
-             # Executing a File::.) occupy too much memory space.  This condition
-             # never arises in the GNU system.
-             #
-  ENOEXEC* = 8 # Invalid executable file format.  This condition is detected by the
-               # `exec' functions; see *Note Executing a File::.
-               #
-  EBADF* = 9 # Bad file descriptor; for example, I/O on a descriptor that has been
-             # closed or reading from a descriptor open only for writing (or vice
-             # versa).
-             #
-  ECHILD* = 10 # There are no child processes.  This error happens on operations
-               # that are supposed to manipulate child processes, when there aren't
-               # any processes to manipulate.
-               #
-  EDEADLK* = 11 # Deadlock avoided; allocating a system resource would have resulted
-                # in a deadlock situation.  The system does not guarantee that it
-                # will notice all such situations.  This error means you got lucky
-                # and the system noticed; it might just hang.  *Note File Locks::,
-                # for an example.
-                #
-  ENOMEM* = 12 # No memory available.  The system cannot allocate more virtual
-               # memory because its capacity is full.
-               #
-  EACCES* = 13 # Permission denied; the file permissions do not allow the attempted
-               # operation.
-               #
-  EFAULT* = 14 # Bad address; an invalid pointer was detected.  In the GNU system,
-               # this error never happens; you get a signal instead.
-               #
-  ENOTBLK* = 15 # A file that isn't a block special file was given in a situation
-                # that requires one.  For example, trying to mount an ordinary file
-                # as a file system in Unix gives this error.
-                #
-  EBUSY* = 16 # Resource busy; a system resource that can't be shared is already
-              # in use.  For example, if you try to delete a file that is the root
-              # of a currently mounted filesystem, you get this error.
-              #
-  EEXIST* = 17 # File exists; an existing file was specified in a context where it
-               # only makes sense to specify a new file.
-               #
-  EXDEV* = 18 # An attempt to make an improper link across file systems was
-              # detected.  This happens not only when you use `link' (*note Hard
-              # Links::.) but also when you rename a file with `rename' (*note
-              # Renaming Files::.).
-              #
-  ENODEV* = 19 # The wrong type of device was given to a function that expects a
-               # particular sort of device.
-               #
-  ENOTDIR* = 20 # A file that isn't a directory was specified when a directory is
-                # required.
-                #
-  EISDIR* = 21 # File is a directory; you cannot open a directory for writing, or
-               # create or remove hard links to it.
-               #
-  EINVAL* = 22 # Invalid argument.  This is used to indicate various kinds of
-               # problems with passing the wrong argument to a library function.
-               #
-  EMFILE* = 24 # The current process has too many files open and can't open any
-               # more.  Duplicate descriptors do count toward this limit.
-               #
-               # In BSD and GNU, the number of open files is controlled by a
-               # resource limit that can usually be increased.  If you get this
-               # error, you might want to increase the `RLIMIT_NOFILE' limit or
-               # make it unlimited; *note Limits on Resources::..
-               #
-  ENFILE* = 23 # There are too many distinct file openings in the entire system.
-               # Note that any number of linked channels count as just one file
-               # opening; see *Note Linked Channels::.  This error never occurs in
-               # the GNU system.
-               #
-  ENOTTY* = 25 # Inappropriate I/O control operation, such as trying to set terminal
-               # modes on an ordinary file.
-               #
-  ETXTBSY* = 26 # An attempt to execute a file that is currently open for writing, or
-                # write to a file that is currently being executed.  Often using a
-                # debugger to run a program is considered having it open for writing
-                # and will cause this error.  (The name stands for "text file
-                # busy".)  This is not an error in the GNU system; the text is
-                # copied as necessary.
-                #
-  EFBIG* = 27 # File too big; the size of a file would be larger than allowed by
-              # the system.
-              #
-  ENOSPC* = 28 # No space left on device; write operation on a file failed because
-               # the disk is full.
-               #
-  ESPIPE* = 29                # Invalid seek operation (such as on a pipe).  *
-  EROFS* = 30                 # An attempt was made to modify something on a read-only file system.  *
-  EMLINK* = 31 # Too many links; the link count of a single file would become too
-               # large.  `rename' can cause this error if the file being renamed
-               # already has as many links as it can take (*note Renaming Files::.).
-               #
-  EPIPE* = 32 # Broken pipe; there is no process reading from the other end of a
-              # pipe.  Every library function that returns this error code also
-              # generates a `SIGPIPE' signal; this signal terminates the program
-              # if not handled or blocked.  Thus, your program will never actually
-              # see `EPIPE' unless it has handled or blocked `SIGPIPE'.
-              #
-  EDOM* = 33 # Domain error; used by mathematical functions when an argument
-             # value does not fall into the domain over which the function is
-             # defined.
-             #
-  ERANGE* = 34 # Range error; used by mathematical functions when the result value
-               # is not representable because of overflow or underflow.
-               #
-  EAGAIN* = 35 # Resource temporarily unavailable; the call might work if you try
-               # again later.  The macro `EWOULDBLOCK' is another name for `EAGAIN';
-               # they are always the same in the GNU C library.
-               #
-  EWOULDBLOCK* = EAGAIN # In the GNU C library, this is another name for `EAGAIN' (above).
-                        # The values are always the same, on every operating system.
-                        # C libraries in many older Unix systems have `EWOULDBLOCK' as a
-                        # separate error code.
-                        #
-  EINPROGRESS* = 36 # An operation that cannot complete immediately was initiated on an
-                    # object that has non-blocking mode selected.  Some functions that
-                    # must always block (such as `connect'; *note Connecting::.) never
-                    # return `EAGAIN'.  Instead, they return `EINPROGRESS' to indicate
-                    # that the operation has begun and will take some time.  Attempts to
-                    # manipulate the object before the call completes return `EALREADY'.
-                    # You can use the `select' function to find out when the pending
-                    # operation has completed; *note Waiting for I/O::..
-                    #
-  EALREADY* = 37 # An operation is already in progress on an object that has
-                 # non-blocking mode selected.
-                 #
-  ENOTSOCK* = 38              # A file that isn't a socket was specified when a socket is required.  *
-  EDESTADDRREQ* = 39 # No default destination address was set for the socket.  You get
-                     # this error when you try to transmit data over a connectionless
-                     # socket, without first specifying a destination for the data with
-                     # `connect'.
-                     #
-  EMSGSIZE* = 40 # The size of a message sent on a socket was larger than the
-                 # supported maximum size.
-                 #
-  EPROTOTYPE* = 41 # The socket type does not support the requested communications
-                   # protocol.
-                   #
-  ENOPROTOOPT* = 42 # You specified a socket option that doesn't make sense for the
-                    # particular protocol being used by the socket.  *Note Socket
-                    # Options::.
-                    #
-  EPROTONOSUPPORT* = 43 # The socket domain does not support the requested communications
-                        # protocol (perhaps because the requested protocol is completely
-                        # invalid.) *Note Creating a Socket::.
-                        #
-  ESOCKTNOSUPPORT* = 44       # The socket type is not supported.  *
-  EOPNOTSUPP* = 45 # The operation you requested is not supported.  Some socket
-                   # functions don't make sense for all types of sockets, and others
-                   # may not be implemented for all communications protocols.  In the
-                   # GNU system, this error can happen for many calls when the object
-                   # does not support the particular operation; it is a generic
-                   # indication that the server knows nothing to do for that call.
-                   #
-  EPFNOSUPPORT* = 46 # The socket communications protocol family you requested is not
-                     # supported.
-                     #
-  EAFNOSUPPORT* = 47 # The address family specified for a socket is not supported; it is
-                     # inconsistent with the protocol being used on the socket.  *Note
-                     # Sockets::.
-                     #
-  EADDRINUSE* = 48 # The requested socket address is already in use.  *Note Socket
-                   # Addresses::.
-                   #
-  EADDRNOTAVAIL* = 49 # The requested socket address is not available; for example, you
-                      # tried to give a socket a name that doesn't match the local host
-                      # name.  *Note Socket Addresses::.
-                      #
-  ENETDOWN* = 50              # A socket operation failed because the network was down.  *
-  ENETUNREACH* = 51 # A socket operation failed because the subnet containing the remote
-                    # host was unreachable.
-                    #
-  ENETRESET* = 52             # A network connection was reset because the remote host crashed.  *
-  ECONNABORTED* = 53          # A network connection was aborted locally. *
-  ECONNRESET* = 54 # A network connection was closed for reasons outside the control of
-                   # the local host, such as by the remote machine rebooting or an
-                   # unrecoverable protocol violation.
-                   #
-  ENOBUFS* = 55 # The kernel's buffers for I/O operations are all in use.  In GNU,
-                # this error is always synonymous with `ENOMEM'; you may get one or
-                # the other from network operations.
-                #
-  EISCONN* = 56 # You tried to connect a socket that is already connected.  *Note
-                # Connecting::.
-                #
-  ENOTCONN* = 57 # The socket is not connected to anything.  You get this error when
-                 # you try to transmit data over a socket, without first specifying a
-                 # destination for the data.  For a connectionless socket (for
-                 # datagram protocols, such as UDP), you get `EDESTADDRREQ' instead.
-                 #
-  ESHUTDOWN* = 58             # The socket has already been shut down.  *
-  ETOOMANYREFS* = 59          # ???  *
-  ETIMEDOUT* = 60 # A socket operation with a specified timeout received no response
-                  # during the timeout period.
-                  #
-  ECONNREFUSED* = 61 # A remote host refused to allow the network connection (typically
-                     # because it is not running the requested service).
-                     #
-  ELOOP* = 62 # Too many levels of symbolic links were encountered in looking up a
-              # file name.  This often indicates a cycle of symbolic links.
-              #
-  ENAMETOOLONG* = 63 # Filename too long (longer than `PATH_MAX'; *note Limits for
-                     # Files::.) or host name too long (in `gethostname' or
-                     # `sethostname'; *note Host Identification::.).
-                     #
-  EHOSTDOWN* = 64             # The remote host for a requested network connection is down.  *
-  EHOSTUNREACH* = 65 # The remote host for a requested network connection is not
-                     # reachable.
-                     #
-  ENOTEMPTY* = 66 # Directory not empty, where an empty directory was expected.
-                  # Typically, this error occurs when you are trying to delete a
-                  # directory.
-                  #
-  EPROCLIM* = 67 # This means that the per-user limit on new process would be
-                 # exceeded by an attempted `fork'.  *Note Limits on Resources::, for
-                 # details on the `RLIMIT_NPROC' limit.
-                 #
-  EUSERS* = 68                # The file quota system is confused because there are too many users.  *
-  EDQUOT* = 69                # The user's disk quota was exceeded.  *
-  ESTALE* = 70 # Stale NFS file handle.  This indicates an internal confusion in
-               # the NFS system which is due to file system rearrangements on the
-               # server host.  Repairing this condition usually requires unmounting
-               # and remounting the NFS file system on the local host.
-               #
-  EREMOTE* = 71 # An attempt was made to NFS-mount a remote file system with a file
-                # name that already specifies an NFS-mounted file.  (This is an
-                # error on some operating systems, but we expect it to work properly
-                # on the GNU system, making this error code impossible.)
-                #
-  EBADRPC* = 72               # ???  *
-  ERPCMISMATCH* = 73          # ???  *
-  EPROGUNAVAIL* = 74          # ???  *
-  EPROGMISMATCH* = 75         # ???  *
-  EPROCUNAVAIL* = 76          # ???  *
-  ENOLCK* = 77 # No locks available.  This is used by the file locking facilities;
-               # see *Note File Locks::.  This error is never generated by the GNU
-               # system, but it can result from an operation to an NFS server
-               # running another operating system.
-               #
-  ENOSYS* = 78 # Function not implemented.  Some functions have commands or options
-               # defined that might not be supported in all implementations, and
-               # this is the kind of error you get if you request them and they are
-               # not supported.
-               #
-  EFTYPE* = 79 # Inappropriate file type or format.  The file was the wrong type
-               # for the operation, or a data file had the wrong format.
-               # On some systems `chmod' returns this error if you try to set the
-               # sticky bit on a non-directory file; *note Setting Permissions::..
-               #
-
-type 
-  Tcl_Argv* = cstringArray
-  Tcl_ClientData* = pointer
-  Tcl_FreeProc* = proc (theBlock: pointer){.cdecl.}
-  PTcl_Interp* = ptr Tcl_Interp
-  Tcl_Interp*{.final.} = object  #  Event Definitions  *
-    result*: cstring # Do not access this directly. Use
-                     #                          * Tcl_GetStringResult since result
-                     #                          * may be pointing to an object
-                     #                          *
-    freeProc*: Tcl_FreeProc
-    errorLine*: int
-
-  TTcl_EventSetupProc* = proc (clientData: Tcl_ClientData, flags: int){.cdecl.}
-  TTcl_EventCheckProc* = TTcl_EventSetupProc
-  PTcl_Event* = ptr Tcl_Event
-  TTcl_EventProc* = proc (evPtr: PTcl_Event, flags: int): int{.cdecl.}
-  Tcl_Event*{.final.} = object 
-    prc*: TTcl_EventProc
-    nextPtr*: PTcl_Event
-    ClientData*: TObject      # ClientData is just pointer.*
-  
-  PTcl_Time* = ptr Tcl_Time
-  Tcl_Time*{.final.} = object 
-    sec*: int32               # Seconds. * 
-    usec*: int32              # Microseconds. * 
-  
-  Tcl_TimerToken* = pointer
-  PInteger* = ptr int
-  PTcl_HashTable* = pointer
-  PTcl_HashEntry* = ptr Tcl_HashEntry
-  PPTcl_HashEntry* = ptr PTcl_HashEntry
-  Tcl_HashEntry*{.final.} = object  
-    nextPtr*: PTcl_HashEntry
-    tablePtr*: PTcl_HashTable
-    bucketPtr*: PPTcl_HashEntry
-    clientData*: Tcl_ClientData
-    key*: cstring
-
-  Tcl_HashFindProc* = proc (tablePtr: PTcl_HashTable, key: cstring): PTcl_HashEntry{.
-      cdecl.}
-  Tcl_HashCreateProc* = proc (tablePtr: PTcl_HashTable, key: cstring, 
-                              newPtr: PInteger): PTcl_HashEntry{.cdecl.}
-  PHashTable* = ptr Tcl_HashTable
-  Tcl_HashTable*{.final.} = object 
-    buckets*: ppTcl_HashEntry
-    staticBuckets*: array[0..TCL_SMALL_HASH_TABLE - 1, PTcl_HashEntry]
-    numBuckets*: int
-    numEntries*: int
-    rebuildSize*: int
-    downShift*: int
-    mask*: int
-    keyType*: int
-    findProc*: Tcl_HashFindProc
-    createProc*: Tcl_HashCreateProc
-
-  PTcl_HashSearch* = ptr Tcl_HashSearch
-  Tcl_HashSearch*{.final.} = object 
-    tablePtr*: PTcl_HashTable
-    nextIndex*: int
-    nextEntryPtr*: PTcl_HashEntry
-
-  TTclAppInitProc* = proc (interp: pTcl_Interp): int{.cdecl.}
-  TTclPackageInitProc* = proc (interp: pTcl_Interp): int{.cdecl.}
-  TTclCmdProc* = proc (clientData: Tcl_ClientData, interp: pTcl_Interp, 
-                       argc: int, argv: Tcl_Argv): int{.cdecl.}
-  TTclVarTraceProc* = proc (clientData: Tcl_ClientData, interp: pTcl_Interp, 
-                            varName: cstring, elemName: cstring, flags: int): cstring{.
-      cdecl.}
-  TTclFreeProc* = proc (theBlock: pointer){.cdecl.}
-  TTclInterpDeleteProc* = proc (clientData: Tcl_ClientData, interp: pTcl_Interp){.
-      cdecl.}
-  TTclCmdDeleteProc* = proc (clientData: Tcl_ClientData){.cdecl.}
-  TTclNamespaceDeleteProc* = proc (clientData: Tcl_ClientData){.cdecl.}
-
-const 
-  TCL_DSTRING_STATIC_SIZE* = 200
-
-type 
-  PTcl_DString* = ptr Tcl_DString
-  Tcl_DString*{.final.} = object 
-    str*: cstring
-    len*: int
-    spaceAvl*: int
-    staticSpace*: array[0..TCL_DSTRING_STATIC_SIZE - 1, char]
-
-  PTcl_Channel* = ptr Tcl_Channel
-  Tcl_Channel*{.final.} = object 
-  TTclDriverBlockModeProc* = proc (instanceData: Tcl_ClientData, mode: int): int{.
-      cdecl.}
-  TTclDriverCloseProc* = proc (instanceData: Tcl_ClientData, interp: PTcl_Interp): int{.
-      cdecl.}
-  TTclDriverInputProc* = proc (instanceData: Tcl_ClientData, buf: cstring, 
-                               toRead: int, errorCodePtr: PInteger): int{.cdecl.}
-  TTclDriverOutputProc* = proc (instanceData: Tcl_ClientData, buf: cstring, 
-                                toWrite: int, errorCodePtr: PInteger): int{.
-      cdecl.}
-  TTclDriverSeekProc* = proc (instanceData: Tcl_ClientData, offset: int32, 
-                              mode: int, errorCodePtr: PInteger): int{.cdecl.}
-  TTclDriverSetOptionProc* = proc (instanceData: Tcl_ClientData, 
-                                   interp: PTcl_Interp, optionName: cstring, 
-                                   value: cstring): int{.cdecl.}
-  TTclDriverGetOptionProc* = proc (instanceData: Tcl_ClientData, 
-                                   interp: pTcl_Interp, optionName: cstring, 
-                                   dsPtr: PTcl_DString): int{.cdecl.}
-  TTclDriverWatchProc* = proc (instanceData: Tcl_ClientData, mask: int){.cdecl.}
-  TTclDriverGetHandleProc* = proc (instanceData: Tcl_ClientData, direction: int, 
-                                   handlePtr: var Tcl_ClientData): int{.cdecl.}
-  PTcl_ChannelType* = ptr Tcl_ChannelType
-  Tcl_ChannelType*{.final.} = object 
-    typeName*: cstring
-    blockModeProc*: TTclDriverBlockModeProc
-    closeProc*: TTclDriverCloseProc
-    inputProc*: TTclDriverInputProc
-    ouputProc*: TTclDriverOutputProc
-    seekProc*: TTclDriverSeekProc
-    setOptionProc*: TTclDriverSetOptionProc
-    getOptionProc*: TTclDriverGetOptionProc
-    watchProc*: TTclDriverWatchProc
-    getHandleProc*: TTclDriverGetHandleProc
-
-  TTclChannelProc* = proc (clientData: Tcl_ClientData, mask: int){.cdecl.}
-  PTcl_Obj* = ptr Tcl_Obj
-  PPTcl_Obj* = ptr PTcl_Obj
-  Tcl_Obj*{.final.} = object 
-    refCount*: int            # ...
-  
-  TTclObjCmdProc* = proc (clientData: Tcl_ClientData, interp: PTcl_Interp, 
-                          objc: int, PPObj: PPTcl_Obj): int{.cdecl.}
-  PTcl_Namespace* = ptr Tcl_Namespace
-  Tcl_Namespace*{.final.} = object 
-    name*: cstring
-    fullName*: cstring
-    clientData*: Tcl_ClientData
-    deleteProc*: TTclNamespaceDeleteProc
-    parentPtr*: PTcl_Namespace
-
-  PTcl_CallFrame* = ptr Tcl_CallFrame
-  Tcl_CallFrame*{.final.} = object 
-    nsPtr*: PTcl_Namespace
-    dummy1*: int
-    dummy2*: int
-    dummy3*: cstring
-    dummy4*: cstring
-    dummy5*: cstring
-    dummy6*: int
-    dummy7*: cstring
-    dummy8*: cstring
-    dummy9*: int
-    dummy10*: cstring
-
-  PTcl_CmdInfo* = ptr Tcl_CmdInfo
-  Tcl_CmdInfo*{.final.} = object 
-    isNativeObjectProc*: int
-    objProc*: TTclObjCmdProc
-    objClientData*: Tcl_ClientData
-    prc*: TTclCmdProc
-    clientData*: Tcl_ClientData
-    deleteProc*: TTclCmdDeleteProc
-    deleteData*: Tcl_ClientData
-    namespacePtr*: pTcl_Namespace
-
-  pTcl_Command* = ptr Tcl_Command
-  Tcl_Command*{.final.} = object  #       hPtr            : pTcl_HashEntry;
-                                  #        nsPtr           : pTcl_Namespace;
-                                  #        refCount        : integer;
-                                  #        isCmdEpoch      : integer;
-                                  #        compileProc     : pointer;
-                                  #        objProc         : pointer;
-                                  #        objClientData   : Tcl_ClientData;
-                                  #        proc            : pointer;
-                                  #        clientData      : Tcl_ClientData;
-                                  #        deleteProc      : TTclCmdDeleteProc;
-                                  #        deleteData      : Tcl_ClientData;
-                                  #        deleted         : integer;
-                                  #        importRefPtr    : pointer;
-                                  #
-
-type 
-  TTclPanicProc* = proc (fmt, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8: cstring){.
-      cdecl.}                 # 1/15/97 orig. Tcl style
-  TTclClientDataProc* = proc (clientData: Tcl_ClientData){.cdecl.}
-  TTclIdleProc* = proc (clientData: Tcl_ClientData){.cdecl.}
-  TTclTimerProc* = TTclIdleProc
-  TTclCreateCloseHandler* = proc (channel: pTcl_Channel, 
-                                  prc: TTclClientDataProc, 
-                                  clientData: Tcl_ClientData){.cdecl.}
-  TTclDeleteCloseHandler* = TTclCreateCloseHandler
-  TTclEventDeleteProc* = proc (evPtr: pTcl_Event, clientData: Tcl_ClientData): int{.
-      cdecl.}
-
-proc Tcl_Alloc*(size: int): cstring{.cdecl, dynlib: dllName, importc.}
-proc Tcl_CreateInterp*(): pTcl_Interp{.cdecl, dynlib: dllName, importc.}
-proc Tcl_DeleteInterp*(interp: pTcl_Interp){.cdecl, dynlib: dllName, importc.}
-proc Tcl_ResetResult*(interp: pTcl_Interp){.cdecl, dynlib: dllName, importc.}
-proc Tcl_Eval*(interp: pTcl_Interp, script: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_EvalFile*(interp: pTcl_Interp, filename: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_AddErrorInfo*(interp: pTcl_Interp, message: cstring){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_BackgroundError*(interp: pTcl_Interp){.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_CreateCommand*(interp: pTcl_Interp, name: cstring, 
-                        cmdProc: TTclCmdProc, clientData: Tcl_ClientData, 
-                        deleteProc: TTclCmdDeleteProc): pTcl_Command{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_DeleteCommand*(interp: pTcl_Interp, name: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_CallWhenDeleted*(interp: pTcl_Interp, prc: TTclInterpDeleteProc, 
-                          clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_DontCallWhenDeleted*(interp: pTcl_Interp, prc: TTclInterpDeleteProc, 
-                              clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_CommandComplete*(cmd: cstring): int{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_LinkVar*(interp: pTcl_Interp, varName: cstring, varAddr: pointer, 
-                  typ: int): int{.cdecl, dynlib: dllName, importc.}
-proc Tcl_UnlinkVar*(interp: pTcl_Interp, varName: cstring){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_TraceVar*(interp: pTcl_Interp, varName: cstring, flags: int, 
-                   prc: TTclVarTraceProc, clientData: Tcl_ClientData): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_TraceVar2*(interp: pTcl_Interp, varName: cstring, elemName: cstring, 
-                    flags: int, prc: TTclVarTraceProc, 
-                    clientData: Tcl_ClientData): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_UntraceVar*(interp: pTcl_Interp, varName: cstring, flags: int, 
-                     prc: TTclVarTraceProc, clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_UntraceVar2*(interp: pTcl_Interp, varName: cstring, elemName: cstring, 
-                      flags: int, prc: TTclVarTraceProc, 
-                      clientData: Tcl_ClientData){.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_GetVar*(interp: pTcl_Interp, varName: cstring, flags: int): cstring{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_GetVar2*(interp: pTcl_Interp, varName: cstring, elemName: cstring, 
-                  flags: int): cstring{.cdecl, dynlib: dllName, importc.}
-proc Tcl_SetVar*(interp: pTcl_Interp, varName: cstring, newValue: cstring, 
-                 flags: int): cstring{.cdecl, dynlib: dllName, importc.}
-proc Tcl_SetVar2*(interp: pTcl_Interp, varName: cstring, elemName: cstring, 
-                  newValue: cstring, flags: int): cstring{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_UnsetVar*(interp: pTcl_Interp, varName: cstring, flags: int): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_UnsetVar2*(interp: pTcl_Interp, varName: cstring, elemName: cstring, 
-                    flags: int): int{.cdecl, dynlib: dllName, importc.}
-proc Tcl_SetResult*(interp: pTcl_Interp, newValue: cstring, 
-                    freeProc: TTclFreeProc){.cdecl, dynlib: dllName, importc.}
-proc Tcl_FirstHashEntry*(hashTbl: pTcl_HashTable, searchInfo: var Tcl_HashSearch): pTcl_HashEntry{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_NextHashEntry*(searchInfo: var Tcl_HashSearch): pTcl_HashEntry{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_InitHashTable*(hashTbl: pTcl_HashTable, keyType: int){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_StringMatch*(str: cstring, pattern: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-
-proc Tcl_GetErrno*(): int{.cdecl, dynlib: dllName, importc.}
-proc Tcl_SetErrno*(val: int){.cdecl, dynlib: dllName, importc.}
-proc Tcl_SetPanicProc*(prc: TTclPanicProc){.cdecl, dynlib: dllName, importc.}
-proc Tcl_PkgProvide*(interp: pTcl_Interp, name: cstring, version: cstring): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_StaticPackage*(interp: pTcl_Interp, pkgName: cstring, 
-                        initProc: TTclPackageInitProc, 
-                        safeInitProc: TTclPackageInitProc){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_CreateEventSource*(setupProc: TTcl_EventSetupProc, 
-                            checkProc: TTcl_EventCheckProc, 
-                            clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_DeleteEventSource*(setupProc: TTcl_EventSetupProc, 
-                            checkProc: TTcl_EventCheckProc, 
-                            clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_QueueEvent*(evPtr: pTcl_Event, pos: int){.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_SetMaxBlockTime*(timePtr: pTcl_Time){.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_DeleteEvents*(prc: TTclEventDeleteProc, clientData: Tcl_ClientData){.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_DoOneEvent*(flags: int): int{.cdecl, dynlib: dllName, importc.}
-proc Tcl_DoWhenIdle*(prc: TTclIdleProc, clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_CancelIdleCall*(prc: TTclIdleProc, clientData: Tcl_ClientData){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_CreateTimerHandler*(milliseconds: int, prc: TTclTimerProc, 
-                             clientData: Tcl_ClientData): Tcl_TimerToken{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_DeleteTimerHandler*(token: Tcl_TimerToken){.cdecl, dynlib: dllName, 
-    importc.}
-  #    procedure Tcl_CreateModalTimeout(milliseconds: integer; prc: TTclTimerProc; clientData: Tcl_ClientData); cdecl; external dllName;
-  #    procedure Tcl_DeleteModalTimeout(prc: TTclTimerProc; clientData: Tcl_ClientData); cdecl; external dllName;
-proc Tcl_SplitList*(interp: pTcl_Interp, list: cstring, argcPtr: var int, 
-                    argvPtr: var Tcl_Argv): int{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_Merge*(argc: int, argv: Tcl_Argv): cstring{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_Free*(p: cstring){.cdecl, dynlib: dllName, importc.}
-proc Tcl_Init*(interp: pTcl_Interp): int{.cdecl, dynlib: dllName, importc.}
-  #    procedure Tcl_InterpDeleteProc(clientData: Tcl_ClientData; interp: pTcl_Interp); cdecl; external dllName;
-proc Tcl_GetAssocData*(interp: pTcl_Interp, key: cstring, 
-                       prc: var TTclInterpDeleteProc): Tcl_ClientData{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_DeleteAssocData*(interp: pTcl_Interp, key: cstring){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_SetAssocData*(interp: pTcl_Interp, key: cstring, 
-                       prc: TTclInterpDeleteProc, clientData: Tcl_ClientData){.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_IsSafe*(interp: pTcl_Interp): int{.cdecl, dynlib: dllName, importc.}
-proc Tcl_MakeSafe*(interp: pTcl_Interp): int{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_CreateSlave*(interp: pTcl_Interp, slaveName: cstring, isSafe: int): pTcl_Interp{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_GetSlave*(interp: pTcl_Interp, slaveName: cstring): pTcl_Interp{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_GetMaster*(interp: pTcl_Interp): pTcl_Interp{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_GetInterpPath*(askingInterp: pTcl_Interp, slaveInterp: pTcl_Interp): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_CreateAlias*(slaveInterp: pTcl_Interp, srcCmd: cstring, 
-                      targetInterp: pTcl_Interp, targetCmd: cstring, argc: int, 
-                      argv: Tcl_Argv): int{.cdecl, dynlib: dllName, importc.}
-proc Tcl_GetAlias*(interp: pTcl_Interp, srcCmd: cstring, 
-                   targetInterp: var pTcl_Interp, targetCmd: var cstring, 
-                   argc: var int, argv: var Tcl_Argv): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_ExposeCommand*(interp: pTcl_Interp, hiddenCmdName: cstring, 
-                        cmdName: cstring): int{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_HideCommand*(interp: pTcl_Interp, cmdName: cstring, 
-                      hiddenCmdName: cstring): int{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_EventuallyFree*(clientData: Tcl_ClientData, freeProc: TTclFreeProc){.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_Preserve*(clientData: Tcl_ClientData){.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_Release*(clientData: Tcl_ClientData){.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_InterpDeleted*(interp: pTcl_Interp): int{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_GetCommandInfo*(interp: pTcl_Interp, cmdName: cstring, 
-                         info: var Tcl_CmdInfo): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_SetCommandInfo*(interp: pTcl_Interp, cmdName: cstring, 
-                         info: var Tcl_CmdInfo): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_FindExecutable*(path: cstring){.cdecl, dynlib: dllName, importc.}
-proc Tcl_GetStringResult*(interp: pTcl_Interp): cstring{.cdecl, 
-    dynlib: dllName, importc.}
-  #v1.0
-proc Tcl_FindCommand*(interp: pTcl_Interp, cmdName: cstring, 
-                      contextNsPtr: pTcl_Namespace, flags: int): Tcl_Command{.
-    cdecl, dynlib: dllName, importc.}
-  #v1.0
-proc Tcl_DeleteCommandFromToken*(interp: pTcl_Interp, cmd: pTcl_Command): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_CreateNamespace*(interp: pTcl_Interp, name: cstring, 
-                          clientData: Tcl_ClientData, 
-                          deleteProc: TTclNamespaceDeleteProc): pTcl_Namespace{.
-    cdecl, dynlib: dllName, importc.}
-  #v1.0
-proc Tcl_DeleteNamespace*(namespacePtr: pTcl_Namespace){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_FindNamespace*(interp: pTcl_Interp, name: cstring, 
-                        contextNsPtr: pTcl_Namespace, flags: int): pTcl_Namespace{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_Export*(interp: pTcl_Interp, namespacePtr: pTcl_Namespace, 
-                 pattern: cstring, resetListFirst: int): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_Import*(interp: pTcl_Interp, namespacePtr: pTcl_Namespace, 
-                 pattern: cstring, allowOverwrite: int): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_GetCurrentNamespace*(interp: pTcl_Interp): pTcl_Namespace{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_GetGlobalNamespace*(interp: pTcl_Interp): pTcl_Namespace{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_PushCallFrame*(interp: pTcl_Interp, callFramePtr: var Tcl_CallFrame, 
-                        namespacePtr: pTcl_Namespace, isProcCallFrame: int): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_PopCallFrame*(interp: pTcl_Interp){.cdecl, dynlib: dllName, importc.}
-proc Tcl_VarEval*(interp: pTcl_Interp): int{.cdecl, varargs, 
-    dynlib: dllName, importc.}
-  # For TkConsole.c *
-proc Tcl_RecordAndEval*(interp: pTcl_Interp, cmd: cstring, flags: int): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_GlobalEval*(interp: pTcl_Interp, command: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_DStringFree*(dsPtr: pTcl_DString){.cdecl, dynlib: dllName, importc.}
-proc Tcl_DStringAppend*(dsPtr: pTcl_DString, str: cstring, length: int): cstring{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_DStringAppendElement*(dsPtr: pTcl_DString, str: cstring): cstring{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_DStringInit*(dsPtr: pTcl_DString){.cdecl, dynlib: dllName, importc.}
-proc Tcl_AppendResult*(interp: pTcl_Interp){.cdecl, varargs, 
-    dynlib: dllName, importc.}
-  # actually a "C" var array
-proc Tcl_SetStdChannel*(channel: pTcl_Channel, typ: int){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_SetChannelOption*(interp: pTcl_Interp, chan: pTcl_Channel, 
-                           optionName: cstring, newValue: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_GetChannelOption*(interp: pTcl_Interp, chan: pTcl_Channel, 
-                           optionName: cstring, dsPtr: pTcl_DString): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_CreateChannel*(typePtr: pTcl_ChannelType, chanName: cstring, 
-                        instanceData: Tcl_ClientData, mask: int): pTcl_Channel{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_RegisterChannel*(interp: pTcl_Interp, channel: pTcl_Channel){.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_UnregisterChannel*(interp: pTcl_Interp, channel: pTcl_Channel): int{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_CreateChannelHandler*(chan: pTcl_Channel, mask: int, 
-                               prc: TTclChannelProc, clientData: Tcl_ClientData){.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_GetChannel*(interp: pTcl_Interp, chanName: cstring, modePtr: pInteger): pTcl_Channel{.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_GetStdChannel*(typ: int): pTcl_Channel{.cdecl, dynlib: dllName, 
-    importc.}
-proc Tcl_Gets*(chan: pTcl_Channel, dsPtr: pTcl_DString): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_Write*(chan: pTcl_Channel, s: cstring, slen: int): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_Flush*(chan: pTcl_Channel): int{.cdecl, dynlib: dllName, importc.}
-  #    TclWinLoadLibrary      = function(name: PChar): HMODULE; cdecl; external dllName;
-proc Tcl_CreateExitHandler*(prc: TTclClientDataProc, clientData: Tcl_ClientData){.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_DeleteExitHandler*(prc: TTclClientDataProc, clientData: Tcl_ClientData){.
-    cdecl, dynlib: dllName, importc.}
-proc Tcl_GetStringFromObj*(pObj: pTcl_Obj, pLen: pInteger): cstring{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_CreateObjCommand*(interp: pTcl_Interp, name: cstring, 
-                           cmdProc: TTclObjCmdProc, clientData: Tcl_ClientData, 
-                           deleteProc: TTclCmdDeleteProc): pTcl_Command{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_NewStringObj*(bytes: cstring, length: int): pTcl_Obj{.cdecl, 
-    dynlib: dllName, importc.}
-  #    procedure TclFreeObj(pObj: pTcl_Obj); cdecl; external dllName;
-proc Tcl_EvalObj*(interp: pTcl_Interp, pObj: pTcl_Obj): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc Tcl_GlobalEvalObj*(interp: pTcl_Interp, pObj: pTcl_Obj): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc TclRegComp*(exp: cstring): pointer{.cdecl, dynlib: dllName, importc.}
-proc TclRegExec*(prog: pointer, str: cstring, start: cstring): int{.cdecl, 
-    dynlib: dllName, importc.}
-proc TclRegError*(msg: cstring){.cdecl, dynlib: dllName, importc.}
-proc TclGetRegError*(): cstring{.cdecl, dynlib: dllName, importc.}
-proc Tcl_RegExpRange*(prog: pointer, index: int, head: var cstring, 
-                      tail: var cstring){.cdecl, dynlib: dllName, importc.}
-
-proc Tcl_GetCommandTable*(interp: pTcl_Interp): pHashTable =
-  if interp != nil: 
-    result = cast[pHashTable](cast[int](interp) + sizeof(Tcl_Interp) + 
-      sizeof(pointer))
-
-proc Tcl_CreateHashEntry*(tablePtr: pTcl_HashTable, key: cstring, 
-                          newPtr: pInteger): pTcl_HashEntry =
-  result = cast[pHashTable](tablePtr).createProc(tablePtr, key, newPtr)
-                          
-proc Tcl_FindHashEntry*(tablePtr: pTcl_HashTable, 
-                        key: cstring): pTcl_HashEntry =
-  result = cast[pHashTable](tablePtr).findProc(tablePtr, key)
-
-proc Tcl_SetHashValue*(h: pTcl_HashEntry, clientData: Tcl_ClientData) =
-  h.clientData = clientData
-
-proc Tcl_GetHashValue*(h: pTcl_HashEntry): Tcl_ClientData =
-  result = h.clientData
-
-proc Tcl_IncrRefCount*(pObj: pTcl_Obj) =
-  inc(pObj.refCount)
-
-proc Tcl_DecrRefCount*(pObj: pTcl_Obj) =
-  dec(pObj.refCount)
-  if pObj.refCount <= 0: 
-    dealloc(pObj)
-
-proc Tcl_IsShared*(pObj: pTcl_Obj): bool = 
-  return pObj.refCount > 1
-
-proc Tcl_GetHashKey*(hashTbl: pTcl_HashTable, 
-                     hashEntry: pTcl_HashEntry): cstring = 
-  if hashTbl == nil or hashEntry == nil: 
-    result = nil
-  else: 
-    result = hashEntry.key
-  
diff --git a/lib/wrappers/tre/config.h b/lib/wrappers/tre/config.h
deleted file mode 100755
index 1a3a0bc3a..000000000
--- a/lib/wrappers/tre/config.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/* config.h.  Generated from config.h.in by configure.  */
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define to 1 if using `alloca.c'. */
-/* #undef C_ALLOCA */
-
-/* Define to 1 if translation of program messages to the user's native
-   language is requested. */
-#define ENABLE_NLS 1
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-/* #undef HAVE_ALLOCA */
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-/* #undef HAVE_ALLOCA_H */
-
-/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
-   CoreFoundation framework. */
-#define HAVE_CFLOCALECOPYCURRENT 1
-
-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
-   the CoreFoundation framework. */
-#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-#define HAVE_DCGETTEXT 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H 1
-
-/* Define to 1 if you have the `getopt_long' function. */
-#define HAVE_GETOPT_LONG 1
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#define HAVE_GETTEXT 1
-
-/* Define if you have the iconv() function and it works. */
-#define HAVE_ICONV 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-/* #undef HAVE_INTTYPES_H */
-
-/* Define to 1 if you have the `isascii' function. */
-#define HAVE_ISASCII 1
-
-/* Define to 1 if you have the `isblank' function. */
-#define HAVE_ISBLANK 1
-
-/* Define to 1 if you have the `iswascii' function or macro. */
-/* #undef HAVE_ISWASCII */
-
-/* Define to 1 if you have the `iswblank' function or macro. */
-/* #undef HAVE_ISWBLANK */
-
-/* Define to 1 if you have the `iswctype' function or macro. */
-/* #undef HAVE_ISWCTYPE */
-
-/* Define to 1 if you have the `iswlower' function or macro. */
-/* #undef HAVE_ISWLOWER */
-
-/* Define to 1 if you have the `iswupper' function or macro. */
-/* #undef HAVE_ISWUPPER */
-
-/* Define to 1 if you have the <libutf8.h> header file. */
-/* #undef HAVE_LIBUTF8_H */
-
-/* Define to 1 if you have the `mbrtowc' function or macro. */
-/* #undef HAVE_MBRTOWC */
-
-/* Define to 1 if the system has the type `mbstate_t'. */
-/* #undef HAVE_MBSTATE_T */
-
-/* Define to 1 if you have the `mbtowc' function or macro. */
-/* #undef HAVE_MBTOWC */
-
-/* Define to 1 if you have the <memory.h> header file. */
-/* #undef HAVE_MEMORY_H */
-
-/* Define to 1 if you have the <regex.h> header file. */
-/* #undef HAVE_REGEX_H */
-
-/* Define to 1 if the system has the type `reg_errcode_t'. */
-/* #undef HAVE_REG_ERRCODE_T */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-/* #undef HAVE_STDLIB_H */
-
-/* Define to 1 if you have the <strings.h> header file. */
-/* #undef HAVE_STRINGS_H */
-
-/* Define to 1 if you have the <string.h> header file. */
-/* #undef HAVE_STRING_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-/* #undef HAVE_SYS_STAT_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-/* #undef HAVE_SYS_TYPES_H */
-
-/* Define to 1 if you have the `towlower' function or macro. */
-/* #undef HAVE_TOWLOWER */
-
-/* Define to 1 if you have the `towupper' function or macro. */
-/* #undef HAVE_TOWUPPER */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-/* #undef HAVE_UNISTD_H */
-
-/* Define to 1 if you have the <wchar.h> header file. */
-/* #undef HAVE_WCHAR_H */
-
-/* Define to 1 if the system has the type `wchar_t'. */
-/* #undef HAVE_WCHAR_T */
-
-/* Define to 1 if you have the `wcschr' function or macro. */
-/* #undef HAVE_WCSCHR */
-
-/* Define to 1 if you have the `wcscpy' function or macro. */
-/* #undef HAVE_WCSCPY */
-
-/* Define to 1 if you have the `wcslen' function or macro. */
-/* #undef HAVE_WCSLEN */
-
-/* Define to 1 if you have the `wcsncpy' function or macro. */
-/* #undef HAVE_WCSNCPY */
-
-/* Define to 1 if you have the `wcsrtombs' function or macro. */
-/* #undef HAVE_WCSRTOMBS */
-
-/* Define to 1 if you have the `wcstombs' function or macro. */
-/* #undef HAVE_WCSTOMBS */
-
-/* Define to 1 if you have the `wctype' function or macro. */
-/* #undef HAVE_WCTYPE */
-
-/* Define to 1 if you have the <wctype.h> header file. */
-/* #undef HAVE_WCTYPE_H */
-
-/* Define to 1 if the system has the type `wint_t'. */
-/* #undef HAVE_WINT_T */
-
-/* Define if you want to disable debug assertions. */
-#define NDEBUG 1
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "tre"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "tre-general@lists.laurikari.net"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "TRE"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "TRE 0.7.6"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "tre"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.7.6"
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-/* #undef STACK_DIRECTION */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define if you want to enable approximate matching functionality. */
-/* #undef TRE_APPROX */
-
-/* Define if you want TRE to print debug messages to stdout. */
-/* #undef TRE_DEBUG */
-
-/* Define to enable multibyte character set support. */
-/* #undef TRE_MULTIBYTE */
-
-/* Define to a field in the regex_t struct where TRE should store a pointer to
-   the internal tre_tnfa_t structure */
-#define TRE_REGEX_T_FIELD value
-
-/* Define to the absolute path to the system regex.h */
-/* #undef TRE_SYSTEM_REGEX_H_PATH */
-
-/* Define if you want TRE to use alloca() instead of malloc() when allocating
-   memory needed for regexec operations. */
-/* #undef TRE_USE_ALLOCA */
-
-/* Define to include the system regex.h from TRE regex.h */
-/* #undef TRE_USE_SYSTEM_REGEX_H */
-
-/* TRE version string. */
-#define TRE_VERSION "0.7.6"
-
-/* TRE version level 1. */
-#define TRE_VERSION_1 0
-
-/* TRE version level 2. */
-#define TRE_VERSION_2 7
-
-/* TRE version level 3. */
-#define TRE_VERSION_3 6
-
-/* Define to enable wide character (wchar_t) support. */
-/* #undef TRE_WCHAR */
-
-/* Version number of package */
-#define VERSION "0.7.6"
-
-/* Define to the maximum value of wchar_t if not already defined elsewhere */
-/* #undef WCHAR_MAX */
-
-/* Define if wchar_t is signed */
-/* #undef WCHAR_T_SIGNED */
-
-/* Define if wchar_t is unsigned */
-/* #undef WCHAR_T_UNSIGNED */
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define to enable GNU extensions in glibc */
-#define _GNU_SOURCE 1
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define on IRIX */
-/* #undef _REGCOMP_INTERNAL */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
diff --git a/lib/wrappers/tre/tre_all.c b/lib/wrappers/tre/tre_all.c
deleted file mode 100755
index 8272657a3..000000000
--- a/lib/wrappers/tre/tre_all.c
+++ /dev/null
@@ -1,8873 +0,0 @@
-/*
-  regcomp.c - TRE POSIX compatible regex compilation functions.
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/* config.h.  Generated from config.h.in by configure.  */
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define to 1 if using `alloca.c'. */
-/* #undef C_ALLOCA */
-
-/* Define to 1 if translation of program messages to the user's native
-   language is requested. */
-#define ENABLE_NLS 1
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-/* #undef HAVE_ALLOCA */
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-/* #undef HAVE_ALLOCA_H */
-
-/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
-   CoreFoundation framework. */
-#define HAVE_CFLOCALECOPYCURRENT 1
-
-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
-   the CoreFoundation framework. */
-#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-#define HAVE_DCGETTEXT 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H 1
-
-/* Define to 1 if you have the `getopt_long' function. */
-#define HAVE_GETOPT_LONG 1
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#define HAVE_GETTEXT 1
-
-/* Define if you have the iconv() function and it works. */
-#define HAVE_ICONV 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-/* #undef HAVE_INTTYPES_H */
-
-/* Define to 1 if you have the `isascii' function. */
-#define HAVE_ISASCII 1
-
-/* Define to 1 if you have the `isblank' function. */
-#define HAVE_ISBLANK 1
-
-/* Define to 1 if you have the `iswascii' function or macro. */
-/* #undef HAVE_ISWASCII */
-
-/* Define to 1 if you have the `iswblank' function or macro. */
-/* #undef HAVE_ISWBLANK */
-
-/* Define to 1 if you have the `iswctype' function or macro. */
-/* #undef HAVE_ISWCTYPE */
-
-/* Define to 1 if you have the `iswlower' function or macro. */
-/* #undef HAVE_ISWLOWER */
-
-/* Define to 1 if you have the `iswupper' function or macro. */
-/* #undef HAVE_ISWUPPER */
-
-/* Define to 1 if you have the <libutf8.h> header file. */
-/* #undef HAVE_LIBUTF8_H */
-
-/* Define to 1 if you have the `mbrtowc' function or macro. */
-/* #undef HAVE_MBRTOWC */
-
-/* Define to 1 if the system has the type `mbstate_t'. */
-/* #undef HAVE_MBSTATE_T */
-
-/* Define to 1 if you have the `mbtowc' function or macro. */
-/* #undef HAVE_MBTOWC */
-
-/* Define to 1 if you have the <memory.h> header file. */
-/* #undef HAVE_MEMORY_H */
-
-/* Define to 1 if you have the <regex.h> header file. */
-/* #undef HAVE_REGEX_H */
-
-/* Define to 1 if the system has the type `reg_errcode_t'. */
-/* #undef HAVE_REG_ERRCODE_T */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-/* #undef HAVE_STDLIB_H */
-
-/* Define to 1 if you have the <strings.h> header file. */
-/* #undef HAVE_STRINGS_H */
-
-/* Define to 1 if you have the <string.h> header file. */
-/* #undef HAVE_STRING_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-/* #undef HAVE_SYS_STAT_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-/* #undef HAVE_SYS_TYPES_H */
-
-/* Define to 1 if you have the `towlower' function or macro. */
-/* #undef HAVE_TOWLOWER */
-
-/* Define to 1 if you have the `towupper' function or macro. */
-/* #undef HAVE_TOWUPPER */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-/* #undef HAVE_UNISTD_H */
-
-/* Define to 1 if you have the <wchar.h> header file. */
-/* #undef HAVE_WCHAR_H */
-
-/* Define to 1 if the system has the type `wchar_t'. */
-/* #undef HAVE_WCHAR_T */
-
-/* Define to 1 if you have the `wcschr' function or macro. */
-/* #undef HAVE_WCSCHR */
-
-/* Define to 1 if you have the `wcscpy' function or macro. */
-/* #undef HAVE_WCSCPY */
-
-/* Define to 1 if you have the `wcslen' function or macro. */
-/* #undef HAVE_WCSLEN */
-
-/* Define to 1 if you have the `wcsncpy' function or macro. */
-/* #undef HAVE_WCSNCPY */
-
-/* Define to 1 if you have the `wcsrtombs' function or macro. */
-/* #undef HAVE_WCSRTOMBS */
-
-/* Define to 1 if you have the `wcstombs' function or macro. */
-/* #undef HAVE_WCSTOMBS */
-
-/* Define to 1 if you have the `wctype' function or macro. */
-/* #undef HAVE_WCTYPE */
-
-/* Define to 1 if you have the <wctype.h> header file. */
-/* #undef HAVE_WCTYPE_H */
-
-/* Define to 1 if the system has the type `wint_t'. */
-/* #undef HAVE_WINT_T */
-
-/* Define if you want to disable debug assertions. */
-#define NDEBUG 1
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "tre"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "tre-general@lists.laurikari.net"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "TRE"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "TRE 0.7.6"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "tre"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.7.6"
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-/* #undef STACK_DIRECTION */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define if you want to enable approximate matching functionality. */
-/* #undef TRE_APPROX */
-
-/* Define if you want TRE to print debug messages to stdout. */
-/* #undef TRE_DEBUG */
-
-/* Define to enable multibyte character set support. */
-/* #undef TRE_MULTIBYTE */
-
-/* Define to a field in the regex_t struct where TRE should store a pointer to
-   the internal tre_tnfa_t structure */
-#define TRE_REGEX_T_FIELD value
-
-/* Define to the absolute path to the system regex.h */
-/* #undef TRE_SYSTEM_REGEX_H_PATH */
-
-/* Define if you want TRE to use alloca() instead of malloc() when allocating
-   memory needed for regexec operations. */
-/* #undef TRE_USE_ALLOCA */
-
-/* Define to include the system regex.h from TRE regex.h */
-/* #undef TRE_USE_SYSTEM_REGEX_H */
-
-/* TRE version string. */
-#define TRE_VERSION "0.7.6"
-
-/* TRE version level 1. */
-#define TRE_VERSION_1 0
-
-/* TRE version level 2. */
-#define TRE_VERSION_2 7
-
-/* TRE version level 3. */
-#define TRE_VERSION_3 6
-
-/* Define to enable wide character (wchar_t) support. */
-/* #undef TRE_WCHAR */
-
-/* Version number of package */
-#define VERSION "0.7.6"
-
-/* Define to the maximum value of wchar_t if not already defined elsewhere */
-/* #undef WCHAR_MAX */
-
-/* Define if wchar_t is signed */
-/* #undef WCHAR_T_SIGNED */
-
-/* Define if wchar_t is unsigned */
-/* #undef WCHAR_T_UNSIGNED */
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define to enable GNU extensions in glibc */
-#define _GNU_SOURCE 1
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define on IRIX */
-/* #undef _REGCOMP_INTERNAL */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-
-
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/*
-  regex.h - POSIX.2 compatible regexp interface and TRE extensions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifndef TRE_REGEX_H
-#define TRE_REGEX_H 1
-
-/* lib/tre-config.h.  Generated from tre-config.h.in by configure.  */
-/* tre-config.h.in.  This file has all definitions that are needed in
-   `regex.h'.  Note that this file must contain only the bare minimum
-   of definitions without the TRE_ prefix to avoid conflicts between
-   definitions here and definitions included from somewhere else. */
-
-/* Define to 1 if you have the <libutf8.h> header file. */
-/* #undef HAVE_LIBUTF8_H */
-
-/* Define to 1 if the system has the type `reg_errcode_t'. */
-/* #undef HAVE_REG_ERRCODE_T */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-/* #undef HAVE_SYS_TYPES_H */
-
-/* Define to 1 if you have the <wchar.h> header file. */
-/* #undef HAVE_WCHAR_H */
-
-/* Define if you want to enable approximate matching functionality. */
-/* #undef TRE_APPROX */
-
-/* Define to enable multibyte character set support. */
-/* #undef TRE_MULTIBYTE */
-
-/* Define to the absolute path to the system regex.h */
-/* #undef TRE_SYSTEM_REGEX_H_PATH */
-
-/* Define to include the system regex.h from TRE regex.h */
-/* #undef TRE_USE_SYSTEM_REGEX_H */
-
-/* Define to enable wide character (wchar_t) support. */
-/* #undef TRE_WCHAR */
-
-/* TRE version string. */
-#define TRE_VERSION "0.7.6"
-
-/* TRE version level 1. */
-#define TRE_VERSION_1 0
-
-/* TRE version level 2. */
-#define TRE_VERSION_2 7
-
-/* TRE version level 3. */
-#define TRE_VERSION_3 6
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-#ifdef HAVE_LIBUTF8_H
-#include <libutf8.h>
-#endif /* HAVE_LIBUTF8_H */
-
-#ifdef TRE_USE_SYSTEM_REGEX_H
-/* Include the system regex.h to make TRE ABI compatible with the
-   system regex. */
-#include TRE_SYSTEM_REGEX_H_PATH
-#endif /* TRE_USE_SYSTEM_REGEX_H */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef TRE_USE_SYSTEM_REGEX_H
-
-#ifndef REG_OK
-#define REG_OK 0
-#endif /* !REG_OK */
-
-#ifndef HAVE_REG_ERRCODE_T
-typedef int reg_errcode_t;
-#endif /* !HAVE_REG_ERRCODE_T */
-
-#if !defined(REG_NOSPEC) && !defined(REG_LITERAL)
-#define REG_LITERAL 0x1000
-#endif
-
-/* Extra regcomp() flags. */
-#ifndef REG_BASIC
-#define REG_BASIC	0
-#endif /* !REG_BASIC */
-#define REG_RIGHT_ASSOC (REG_LITERAL << 1)
-#define REG_UNGREEDY    (REG_RIGHT_ASSOC << 1)
-
-/* Extra regexec() flags. */
-#define REG_APPROX_MATCHER	 0x1000
-#define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
-
-#else /* !TRE_USE_SYSTEM_REGEX_H */
-
-/* If the we're not using system regex.h, we need to define the
-   structs and enums ourselves. */
-
-typedef int regoff_t;
-typedef struct {
-  size_t re_nsub;  /* Number of parenthesized subexpressions. */
-  void *value;	   /* For internal use only. */
-} regex_t;
-
-typedef struct {
-  regoff_t rm_so;
-  regoff_t rm_eo;
-} regmatch_t;
-
-
-typedef enum {
-  REG_OK = 0,		/* No error. */
-  /* POSIX regcomp() return error codes.  (In the order listed in the
-     standard.)	 */
-  REG_NOMATCH,		/* No match. */
-  REG_BADPAT,		/* Invalid regexp. */
-  REG_ECOLLATE,		/* Unknown collating element. */
-  REG_ECTYPE,		/* Unknown character class name. */
-  REG_EESCAPE,		/* Trailing backslash. */
-  REG_ESUBREG,		/* Invalid back reference. */
-  REG_EBRACK,		/* "[]" imbalance */
-  REG_EPAREN,		/* "\(\)" or "()" imbalance */
-  REG_EBRACE,		/* "\{\}" or "{}" imbalance */
-  REG_BADBR,		/* Invalid content of {} */
-  REG_ERANGE,		/* Invalid use of range operator */
-  REG_ESPACE,		/* Out of memory.  */
-  REG_BADRPT            /* Invalid use of repetition operators. */
-} reg_errcode_t;
-
-/* POSIX regcomp() flags. */
-#define REG_EXTENDED	1
-#define REG_ICASE	(REG_EXTENDED << 1)
-#define REG_NEWLINE	(REG_ICASE << 1)
-#define REG_NOSUB	(REG_NEWLINE << 1)
-
-/* Extra regcomp() flags. */
-#define REG_BASIC	0
-#define REG_LITERAL	(REG_NOSUB << 1)
-#define REG_RIGHT_ASSOC (REG_LITERAL << 1)
-#define REG_UNGREEDY    (REG_RIGHT_ASSOC << 1)
-
-/* POSIX regexec() flags. */
-#define REG_NOTBOL 1
-#define REG_NOTEOL (REG_NOTBOL << 1)
-
-/* Extra regexec() flags. */
-#define REG_APPROX_MATCHER	 (REG_NOTEOL << 1)
-#define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
-
-#endif /* !TRE_USE_SYSTEM_REGEX_H */
-
-/* REG_NOSPEC and REG_LITERAL mean the same thing. */
-#if defined(REG_LITERAL) && !defined(REG_NOSPEC)
-#define REG_NOSPEC	REG_LITERAL
-#elif defined(REG_NOSPEC) && !defined(REG_LITERAL)
-#define REG_LITERAL	REG_NOSPEC
-#endif /* defined(REG_NOSPEC) */
-
-/* The maximum number of iterations in a bound expression. */
-#undef RE_DUP_MAX
-#define RE_DUP_MAX 255
-
-/* The POSIX.2 regexp functions */
-extern int
-regcomp(regex_t *preg, const char *regex, int cflags);
-
-extern int
-regexec(const regex_t *preg, const char *string, size_t nmatch,
-	regmatch_t pmatch[], int eflags);
-
-extern size_t
-regerror(int errcode, const regex_t *preg, char *errbuf,
-	 size_t errbuf_size);
-
-extern void
-regfree(regex_t *preg);
-
-#ifdef TRE_WCHAR
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-
-/* Wide character versions (not in POSIX.2). */
-extern int
-regwcomp(regex_t *preg, const wchar_t *regex, int cflags);
-
-extern int
-regwexec(const regex_t *preg, const wchar_t *string,
-	 size_t nmatch, regmatch_t pmatch[], int eflags);
-#endif /* TRE_WCHAR */
-
-/* Versions with a maximum length argument and therefore the capability to
-   handle null characters in the middle of the strings (not in POSIX.2). */
-extern int
-regncomp(regex_t *preg, const char *regex, size_t len, int cflags);
-
-extern int
-regnexec(const regex_t *preg, const char *string, size_t len,
-	 size_t nmatch, regmatch_t pmatch[], int eflags);
-
-#ifdef TRE_WCHAR
-extern int
-regwncomp(regex_t *preg, const wchar_t *regex, size_t len, int cflags);
-
-extern int
-regwnexec(const regex_t *preg, const wchar_t *string, size_t len,
-	  size_t nmatch, regmatch_t pmatch[], int eflags);
-#endif /* TRE_WCHAR */
-
-
-/* Approximate matching parameter struct. */
-typedef struct {
-  int cost_ins;	       /* Default cost of an inserted character. */
-  int cost_del;	       /* Default cost of a deleted character. */
-  int cost_subst;      /* Default cost of a substituted character. */
-  int max_cost;	       /* Maximum allowed cost of a match. */
-
-  int max_ins;	       /* Maximum allowed number of inserts. */
-  int max_del;	       /* Maximum allowed number of deletes. */
-  int max_subst;       /* Maximum allowed number of substitutes. */
-  int max_err;	       /* Maximum allowed number of errors total. */
-} regaparams_t;
-
-/* Approximate matching result struct. */
-typedef struct {
-  size_t nmatch;       /* Length of pmatch[] array. */
-  regmatch_t *pmatch;  /* Submatch data. */
-  int cost;	       /* Cost of the match. */
-  int num_ins;	       /* Number of inserts in the match. */
-  int num_del;	       /* Number of deletes in the match. */
-  int num_subst;       /* Number of substitutes in the match. */
-} regamatch_t;
-
-#ifdef TRE_APPROX
-
-/* Approximate matching functions. */
-extern int
-regaexec(const regex_t *preg, const char *string,
-	 regamatch_t *match, regaparams_t params, int eflags);
-
-extern int
-reganexec(const regex_t *preg, const char *string, size_t len,
-	  regamatch_t *match, regaparams_t params, int eflags);
-#ifdef TRE_WCHAR
-/* Wide character approximate matching. */
-extern int
-regawexec(const regex_t *preg, const wchar_t *string,
-	  regamatch_t *match, regaparams_t params, int eflags);
-
-extern int
-regawnexec(const regex_t *preg, const wchar_t *string, size_t len,
-	   regamatch_t *match, regaparams_t params, int eflags);
-#endif /* TRE_WCHAR */
-
-/* Sets the parameters to default values. */
-extern void
-regaparams_default(regaparams_t *params);
-#endif /* TRE_APPROX */
-
-#ifdef TRE_WCHAR
-typedef wchar_t tre_char_t;
-#else /* !TRE_WCHAR */
-typedef unsigned char tre_char_t;
-#endif /* !TRE_WCHAR */
-
-typedef struct {
-  int (*get_next_char)(tre_char_t *c, unsigned int *pos_add, void *context);
-  void (*rewind)(size_t pos, void *context);
-  int (*compare)(size_t pos1, size_t pos2, size_t len, void *context);
-  void *context;
-} tre_str_source;
-
-extern int
-reguexec(const regex_t *preg, const tre_str_source *string,
-	 size_t nmatch, regmatch_t pmatch[], int eflags);
-
-/* Returns the version string.	The returned string is static. */
-extern char *
-tre_version(void);
-
-/* Returns the value for a config parameter.  The type to which `result'
-   must point to depends of the value of `query', see documentation for
-   more details. */
-extern int
-tre_config(int query, void *result);
-
-enum {
-  TRE_CONFIG_APPROX,
-  TRE_CONFIG_WCHAR,
-  TRE_CONFIG_MULTIBYTE,
-  TRE_CONFIG_SYSTEM_ABI,
-  TRE_CONFIG_VERSION
-};
-
-/* Returns 1 if the compiled pattern has back references, 0 if not. */
-extern int
-tre_have_backrefs(const regex_t *preg);
-
-/* Returns 1 if the compiled pattern uses approximate matching features,
-   0 if not. */
-extern int
-tre_have_approx(const regex_t *preg);
-
-#ifdef __cplusplus
-}
-#endif
-#endif				/* TRE_REGEX_H */
-
-/* EOF */
-/*
-  tre-internal.h - TRE internal definitions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifndef TRE_INTERNAL_H
-#define TRE_INTERNAL_H 1
-
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-
-#ifdef HAVE_WCTYPE_H
-#include <wctype.h>
-#endif /* !HAVE_WCTYPE_H */
-
-#include <ctype.h>
-
-#ifdef TRE_DEBUG
-#include <stdio.h>
-#define DPRINT(msg) do {printf msg; fflush(stdout);} while(/*CONSTCOND*/0)
-#else /* !TRE_DEBUG */
-#define DPRINT(msg) do { } while(/*CONSTCOND*/0)
-#endif /* !TRE_DEBUG */
-
-#define elementsof(x)	( sizeof(x) / sizeof(x[0]) )
-
-#ifdef HAVE_MBRTOWC
-#define tre_mbrtowc(pwc, s, n, ps) (mbrtowc((pwc), (s), (n), (ps)))
-#else /* !HAVE_MBRTOWC */
-#ifdef HAVE_MBTOWC
-#define tre_mbrtowc(pwc, s, n, ps) (mbtowc((pwc), (s), (n)))
-#endif /* HAVE_MBTOWC */
-#endif /* !HAVE_MBRTOWC */
-
-#ifdef TRE_MULTIBYTE
-#ifdef HAVE_MBSTATE_T
-#define TRE_MBSTATE
-#endif /* TRE_MULTIBYTE */
-#endif /* HAVE_MBSTATE_T */
-
-/* Define the character types and functions. */
-#ifdef TRE_WCHAR
-
-/* Wide characters. */
-typedef wint_t tre_cint_t;
-#define TRE_CHAR_MAX WCHAR_MAX
-
-#ifdef TRE_MULTIBYTE
-#define TRE_MB_CUR_MAX MB_CUR_MAX
-#else /* !TRE_MULTIBYTE */
-#define TRE_MB_CUR_MAX 1
-#endif /* !TRE_MULTIBYTE */
-
-#define tre_isalnum iswalnum
-#define tre_isalpha iswalpha
-#ifdef HAVE_ISWBLANK
-#define tre_isblank iswblank
-#endif /* HAVE_ISWBLANK */
-#define tre_iscntrl iswcntrl
-#define tre_isdigit iswdigit
-#define tre_isgraph iswgraph
-#define tre_islower iswlower
-#define tre_isprint iswprint
-#define tre_ispunct iswpunct
-#define tre_isspace iswspace
-#define tre_isupper iswupper
-#define tre_isxdigit iswxdigit
-
-#define tre_tolower towlower
-#define tre_toupper towupper
-#define tre_strlen  wcslen
-
-#else /* !TRE_WCHAR */
-
-/* 8 bit characters. */
-typedef short tre_cint_t;
-#define TRE_CHAR_MAX 255
-#define TRE_MB_CUR_MAX 1
-
-#define tre_isalnum isalnum
-#define tre_isalpha isalpha
-#ifdef HAVE_ISASCII
-#define tre_isascii isascii
-#endif /* HAVE_ISASCII */
-#ifdef HAVE_ISBLANK
-#define tre_isblank isblank
-#endif /* HAVE_ISBLANK */
-#define tre_iscntrl iscntrl
-#define tre_isdigit isdigit
-#define tre_isgraph isgraph
-#define tre_islower islower
-#define tre_isprint isprint
-#define tre_ispunct ispunct
-#define tre_isspace isspace
-#define tre_isupper isupper
-#define tre_isxdigit isxdigit
-
-#define tre_tolower(c) (tre_cint_t)(tolower(c))
-#define tre_toupper(c) (tre_cint_t)(toupper(c))
-#define tre_strlen(s)  (strlen((const char*)s))
-
-#endif /* !TRE_WCHAR */
-
-#if defined(TRE_WCHAR) && defined(HAVE_ISWCTYPE) && defined(HAVE_WCTYPE)
-#define TRE_USE_SYSTEM_WCTYPE 1
-#endif
-
-#ifdef TRE_USE_SYSTEM_WCTYPE
-/* Use system provided iswctype() and wctype(). */
-typedef wctype_t tre_ctype_t;
-#define tre_isctype iswctype
-#define tre_ctype   wctype
-#else /* !TRE_USE_SYSTEM_WCTYPE */
-/* Define our own versions of iswctype() and wctype(). */
-typedef int (*tre_ctype_t)(tre_cint_t);
-#define tre_isctype(c, type) ( (type)(c) )
-tre_ctype_t tre_ctype(const char *name);
-#endif /* !TRE_USE_SYSTEM_WCTYPE */
-
-typedef enum { STR_WIDE, STR_BYTE, STR_MBS, STR_USER } tre_str_type_t;
-
-/* Returns number of bytes to add to (char *)ptr to make it
-   properly aligned for the type. */
-#define ALIGN(ptr, type) \
-  ((((long)ptr) % sizeof(type)) \
-   ? (sizeof(type) - (((long)ptr) % sizeof(type))) \
-   : 0)
-
-#undef MAX
-#undef MIN
-#define MAX(a, b) (((a) >= (b)) ? (a) : (b))
-#define MIN(a, b) (((a) <= (b)) ? (a) : (b))
-
-/* Define STRF to the correct printf formatter for strings. */
-#ifdef TRE_WCHAR
-#define STRF "ls"
-#else /* !TRE_WCHAR */
-#define STRF "s"
-#endif /* !TRE_WCHAR */
-
-/* TNFA transition type. A TNFA state is an array of transitions,
-   the terminator is a transition with NULL `state'. */
-typedef struct tnfa_transition tre_tnfa_transition_t;
-
-struct tnfa_transition {
-  /* Range of accepted characters. */
-  tre_cint_t code_min;
-  tre_cint_t code_max;
-  /* Pointer to the destination state. */
-  tre_tnfa_transition_t *state;
-  /* ID number of the destination state. */
-  int state_id;
-  /* -1 terminated array of tags (or NULL). */
-  int *tags;
-  /* Matching parameters settings (or NULL). */
-  int *params;
-  /* Assertion bitmap. */
-  int assertions;
-  /* Assertion parameters. */
-  union {
-    /* Character class assertion. */
-    tre_ctype_t class;
-    /* Back reference assertion. */
-    int backref;
-  } u;
-  /* Negative character class assertions. */
-  tre_ctype_t *neg_classes;
-};
-
-
-/* Assertions. */
-#define ASSERT_AT_BOL		  1   /* Beginning of line. */
-#define ASSERT_AT_EOL		  2   /* End of line. */
-#define ASSERT_CHAR_CLASS	  4   /* Character class in `class'. */
-#define ASSERT_CHAR_CLASS_NEG	  8   /* Character classes in `neg_classes'. */
-#define ASSERT_AT_BOW		 16   /* Beginning of word. */
-#define ASSERT_AT_EOW		 32   /* End of word. */
-#define ASSERT_AT_WB		 64   /* Word boundary. */
-#define ASSERT_AT_WB_NEG	128   /* Not a word boundary. */
-#define ASSERT_BACKREF		256   /* A back reference in `backref'. */
-#define ASSERT_LAST		256
-
-/* Tag directions. */
-typedef enum {
-  TRE_TAG_MINIMIZE = 0,
-  TRE_TAG_MAXIMIZE = 1
-} tre_tag_direction_t;
-
-/* Parameters that can be changed dynamically while matching. */
-typedef enum {
-  TRE_PARAM_COST_INS	    = 0,
-  TRE_PARAM_COST_DEL	    = 1,
-  TRE_PARAM_COST_SUBST	    = 2,
-  TRE_PARAM_COST_MAX	    = 3,
-  TRE_PARAM_MAX_INS	    = 4,
-  TRE_PARAM_MAX_DEL	    = 5,
-  TRE_PARAM_MAX_SUBST	    = 6,
-  TRE_PARAM_MAX_ERR	    = 7,
-  TRE_PARAM_DEPTH	    = 8,
-  TRE_PARAM_LAST	    = 9
-} tre_param_t;
-
-/* Unset matching parameter */
-#define TRE_PARAM_UNSET -1
-
-/* Signifies the default matching parameter value. */
-#define TRE_PARAM_DEFAULT -2
-
-/* Instructions to compute submatch register values from tag values
-   after a successful match.  */
-struct tre_submatch_data {
-  /* Tag that gives the value for rm_so (submatch start offset). */
-  int so_tag;
-  /* Tag that gives the value for rm_eo (submatch end offset). */
-  int eo_tag;
-  /* List of submatches this submatch is contained in. */
-  int *parents;
-};
-
-typedef struct tre_submatch_data tre_submatch_data_t;
-
-
-/* TNFA definition. */
-typedef struct tnfa tre_tnfa_t;
-
-struct tnfa {
-  tre_tnfa_transition_t *transitions;
-  unsigned int num_transitions;
-  tre_tnfa_transition_t *initial;
-  tre_tnfa_transition_t *final;
-  tre_submatch_data_t *submatch_data;
-  char *firstpos_chars;
-  int first_char;
-  unsigned int num_submatches;
-  tre_tag_direction_t *tag_directions;
-  int *minimal_tags;
-  int num_tags;
-  int num_minimals;
-  int end_tag;
-  int num_states;
-  int cflags;
-  int have_backrefs;
-  int have_approx;
-  int params_depth;
-};
-
-int
-tre_compile(regex_t *preg, const tre_char_t *regex, size_t n, int cflags);
-
-void
-tre_free(regex_t *preg);
-
-void
-tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags,
-		const tre_tnfa_t *tnfa, int *tags, int match_eo);
-
-reg_errcode_t
-tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
-		      tre_str_type_t type, int *match_tags, int eflags,
-		      int *match_end_ofs);
-
-reg_errcode_t
-tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
-		      tre_str_type_t type, int *match_tags, int eflags,
-		      int *match_end_ofs);
-
-reg_errcode_t
-tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
-		       int len, tre_str_type_t type, int *match_tags,
-		       int eflags, int *match_end_ofs);
-
-#ifdef TRE_APPROX
-reg_errcode_t
-tre_tnfa_run_approx(const tre_tnfa_t *tnfa, const void *string, int len,
-		    tre_str_type_t type, int *match_tags,
-		    regamatch_t *match, regaparams_t params,
-		    int eflags, int *match_end_ofs);
-#endif /* TRE_APPROX */
-
-#endif /* TRE_INTERNAL_H */
-
-/* EOF */
-/*
-  xmalloc.h - Simple malloc debugging library API
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifndef _XMALLOC_H
-#define _XMALLOC_H 1
-
-void *xmalloc_impl(size_t size, const char *file, int line, const char *func);
-void *xcalloc_impl(size_t nmemb, size_t size, const char *file, int line,
-		   const char *func);
-void xfree_impl(void *ptr, const char *file, int line, const char *func);
-void *xrealloc_impl(void *ptr, size_t new_size, const char *file, int line,
-		    const char *func);
-int xmalloc_dump_leaks(void);
-void xmalloc_configure(int fail_after);
-
-
-#ifndef XMALLOC_INTERNAL
-#ifdef MALLOC_DEBUGGING
-
-/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
-   which contains the name of the function currently being defined.
-#  define __XMALLOC_FUNCTION	 __PRETTY_FUNCTION__
-   This is broken in G++ before version 2.6.
-   C9x has a similar variable called __func__, but prefer the GCC one since
-   it demangles C++ function names.  */
-# ifdef __GNUC__
-#  if __GNUC__ > 2 || (__GNUC__ == 2 \
-		       && __GNUC_MINOR__ >= (defined __cplusplus ? 6 : 4))
-#   define __XMALLOC_FUNCTION	 __PRETTY_FUNCTION__
-#  else
-#   define __XMALLOC_FUNCTION	 ((const char *) 0)
-#  endif
-# else
-#  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-#   define __XMALLOC_FUNCTION	 __func__
-#  else
-#   define __XMALLOC_FUNCTION	 ((const char *) 0)
-#  endif
-# endif
-
-#define xmalloc(size) xmalloc_impl(size, __FILE__, __LINE__, \
-				   __XMALLOC_FUNCTION)
-#define xcalloc(nmemb, size) xcalloc_impl(nmemb, size, __FILE__, __LINE__, \
-					  __XMALLOC_FUNCTION)
-#define xfree(ptr) xfree_impl(ptr, __FILE__, __LINE__, __XMALLOC_FUNCTION)
-#define xrealloc(ptr, new_size) xrealloc_impl(ptr, new_size, __FILE__, \
-					      __LINE__, __XMALLOC_FUNCTION)
-#undef malloc
-#undef calloc
-#undef free
-#undef realloc
-
-#define malloc	USE_XMALLOC_INSTEAD_OF_MALLOC
-#define calloc	USE_XCALLOC_INSTEAD_OF_CALLOC
-#define free	USE_XFREE_INSTEAD_OF_FREE
-#define realloc USE_XREALLOC_INSTEAD_OF_REALLOC
-
-#else /* !MALLOC_DEBUGGING */
-
-#include <stdlib.h>
-
-#define xmalloc(size) malloc(size)
-#define xcalloc(nmemb, size) calloc(nmemb, size)
-#define xfree(ptr) free(ptr)
-#define xrealloc(ptr, new_size) realloc(ptr, new_size)
-
-#endif /* !MALLOC_DEBUGGING */
-#endif /* !XMALLOC_INTERNAL */
-
-#endif /* _XMALLOC_H */
-
-/* EOF */
-
-int
-regncomp(regex_t *preg, const char *regex, size_t n, int cflags)
-{
-  int ret;
-#if TRE_WCHAR
-  tre_char_t *wregex;
-  int wlen;
-
-  wregex = xmalloc(sizeof(tre_char_t) * (n + 1));
-  if (wregex == NULL)
-    return REG_ESPACE;
-
-  /* If the current locale uses the standard single byte encoding of
-     characters, we don't do a multibyte string conversion.  If we did,
-     many applications which use the default locale would break since
-     the default "C" locale uses the 7-bit ASCII character set, and
-     all characters with the eighth bit set would be considered invalid. */
-#if TRE_MULTIBYTE
-  if (TRE_MB_CUR_MAX == 1)
-#endif /* TRE_MULTIBYTE */
-    {
-      unsigned int i;
-      const unsigned char *str = (const unsigned char *)regex;
-      tre_char_t *wstr = wregex;
-
-      for (i = 0; i < n; i++)
-	*(wstr++) = *(str++);
-      wlen = n;
-    }
-#if TRE_MULTIBYTE
-  else
-    {
-      int consumed;
-      tre_char_t *wcptr = wregex;
-#ifdef HAVE_MBSTATE_T
-      mbstate_t state;
-      memset(&state, '\0', sizeof(state));
-#endif /* HAVE_MBSTATE_T */
-      while (n > 0)
-	{
-	  consumed = tre_mbrtowc(wcptr, regex, n, &state);
-
-	  switch (consumed)
-	    {
-	    case 0:
-	      if (*regex == '\0')
-		consumed = 1;
-	      else
-		{
-		  xfree(wregex);
-		  return REG_BADPAT;
-		}
-	      break;
-	    case -1:
-	      DPRINT(("mbrtowc: error %d: %s.\n", errno, strerror(errno)));
-	      xfree(wregex);
-	      return REG_BADPAT;
-	    case -2:
-	      /* The last character wasn't complete.  Let's not call it a
-		 fatal error. */
-	      consumed = n;
-	      break;
-	    }
-	  regex += consumed;
-	  n -= consumed;
-	  wcptr++;
-	}
-      wlen = wcptr - wregex;
-    }
-#endif /* TRE_MULTIBYTE */
-
-  wregex[wlen] = L'\0';
-  ret = tre_compile(preg, wregex, (unsigned)wlen, cflags);
-  xfree(wregex);
-#else /* !TRE_WCHAR */
-  ret = tre_compile(preg, (const tre_char_t *)regex, n, cflags);
-#endif /* !TRE_WCHAR */
-
-  return ret;
-}
-
-int
-regcomp(regex_t *preg, const char *regex, int cflags)
-{
-  return regncomp(preg, regex, regex ? strlen(regex) : 0, cflags);
-}
-
-
-#ifdef TRE_WCHAR
-int
-regwncomp(regex_t *preg, const wchar_t *regex, size_t n, int cflags)
-{
-  return tre_compile(preg, regex, n, cflags);
-}
-
-int
-regwcomp(regex_t *preg, const wchar_t *regex, int cflags)
-{
-  return tre_compile(preg, regex, regex ? wcslen(regex) : 0, cflags);
-}
-#endif /* TRE_WCHAR */
-
-void
-regfree(regex_t *preg)
-{
-  tre_free(preg);
-}
-
-/* EOF */
-/*
-  regerror.c - POSIX regerror() implementation for TRE.
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <string.h>
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-#ifdef HAVE_WCTYPE_H
-#include <wctype.h>
-#endif /* HAVE_WCTYPE_H */
-
-#define dgettext(p, s) s
-#define gettext(s) s
-
-#define _(String) dgettext(PACKAGE, String)
-#define gettext_noop(String) String
-
-/* Error message strings for error codes listed in `regex.h'.  This list
-   needs to be in sync with the codes listed there, naturally. */
-static const char *tre_error_messages[] =
-  { gettext_noop("No error"),				 /* REG_OK */
-    gettext_noop("No match"),				 /* REG_NOMATCH */
-    gettext_noop("Invalid regexp"),			 /* REG_BADPAT */
-    gettext_noop("Unknown collating element"),		 /* REG_ECOLLATE */
-    gettext_noop("Unknown character class name"),	 /* REG_ECTYPE */
-    gettext_noop("Trailing backslash"),			 /* REG_EESCAPE */
-    gettext_noop("Invalid back reference"),		 /* REG_ESUBREG */
-    gettext_noop("Missing ']'"),			 /* REG_EBRACK */
-    gettext_noop("Missing ')'"),			 /* REG_EPAREN */
-    gettext_noop("Missing '}'"),			 /* REG_EBRACE */
-    gettext_noop("Invalid contents of {}"),		 /* REG_BADBR */
-    gettext_noop("Invalid character range"),		 /* REG_ERANGE */
-    gettext_noop("Out of memory"),			 /* REG_ESPACE */
-    gettext_noop("Invalid use of repetition operators")	 /* REG_BADRPT */
-  };
-
-size_t
-regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)
-{
-  const char *err;
-  size_t err_len;
-
-  /*LINTED*/(void)&preg;
-  if (errcode >= 0
-      && errcode < (int)(sizeof(tre_error_messages)
-			 / sizeof(*tre_error_messages)))
-    err = gettext(tre_error_messages[errcode]);
-  else
-    err = gettext("Unknown error");
-
-  err_len = strlen(err) + 1;
-  if (errbuf_size > 0 && errbuf != NULL)
-    {
-      if (err_len > errbuf_size)
-	{
-	  strncpy(errbuf, err, errbuf_size - 1);
-	  errbuf[errbuf_size - 1] = '\0';
-	}
-      else
-	{
-	  strcpy(errbuf, err);
-	}
-    }
-  return err_len;
-}
-
-/* EOF */
-/*
-  regexec.c - TRE POSIX compatible matching functions (and more).
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#ifdef TRE_USE_ALLOCA
-/* AIX requires this to be the first thing in the file.	 */
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-#  include <alloca.h>
-# else
-#  ifdef _AIX
- #pragma alloca
-#  else
-#   ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#   endif
-#  endif
-# endif
-#endif
-#endif /* TRE_USE_ALLOCA */
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-#ifdef HAVE_WCTYPE_H
-#include <wctype.h>
-#endif /* HAVE_WCTYPE_H */
-#ifndef TRE_WCHAR
-#include <ctype.h>
-#endif /* !TRE_WCHAR */
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif /* HAVE_MALLOC_H */
-#include <limits.h>
-
-
-
-/* Fills the POSIX.2 regmatch_t array according to the TNFA tag and match
-   endpoint values. */
-void
-tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags,
-		const tre_tnfa_t *tnfa, int *tags, int match_eo)
-{
-  tre_submatch_data_t *submatch_data;
-  unsigned int i, j;
-  int *parents;
-
-  i = 0;
-  if (match_eo >= 0 && !(cflags & REG_NOSUB))
-    {
-      /* Construct submatch offsets from the tags. */
-      DPRINT(("end tag = t%d = %d\n", tnfa->end_tag, match_eo));
-      submatch_data = tnfa->submatch_data;
-      while (i < tnfa->num_submatches && i < nmatch)
-	{
-	  if (submatch_data[i].so_tag == tnfa->end_tag)
-	    pmatch[i].rm_so = match_eo;
-	  else
-	    pmatch[i].rm_so = tags[submatch_data[i].so_tag];
-
-	  if (submatch_data[i].eo_tag == tnfa->end_tag)
-	    pmatch[i].rm_eo = match_eo;
-	  else
-	    pmatch[i].rm_eo = tags[submatch_data[i].eo_tag];
-
-	  /* If either of the endpoints were not used, this submatch
-	     was not part of the match. */
-	  if (pmatch[i].rm_so == -1 || pmatch[i].rm_eo == -1)
-	    pmatch[i].rm_so = pmatch[i].rm_eo = -1;
-
-	  DPRINT(("pmatch[%d] = {t%d = %d, t%d = %d}\n", i,
-		  submatch_data[i].so_tag, pmatch[i].rm_so,
-		  submatch_data[i].eo_tag, pmatch[i].rm_eo));
-	  i++;
-	}
-      /* Reset all submatches that are not within all of their parent
-	 submatches. */
-      i = 0;
-      while (i < tnfa->num_submatches && i < nmatch)
-	{
-	  if (pmatch[i].rm_eo == -1)
-	    assert(pmatch[i].rm_so == -1);
-	  assert(pmatch[i].rm_so <= pmatch[i].rm_eo);
-
-	  parents = submatch_data[i].parents;
-	  if (parents != NULL)
-	    for (j = 0; parents[j] >= 0; j++)
-	      {
-		DPRINT(("pmatch[%d] parent %d\n", i, parents[j]));
-		if (pmatch[i].rm_so < pmatch[parents[j]].rm_so
-		    || pmatch[i].rm_eo > pmatch[parents[j]].rm_eo)
-		  pmatch[i].rm_so = pmatch[i].rm_eo = -1;
-	      }
-	  i++;
-	}
-    }
-
-  while (i < nmatch)
-    {
-      pmatch[i].rm_so = -1;
-      pmatch[i].rm_eo = -1;
-      i++;
-    }
-}
-
-
-/*
-  Wrapper functions for POSIX compatible regexp matching.
-*/
-
-int
-tre_have_backrefs(const regex_t *preg)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  return tnfa->have_backrefs;
-}
-
-int
-tre_have_approx(const regex_t *preg)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  return tnfa->have_approx;
-}
-
-static int
-tre_match(const tre_tnfa_t *tnfa, const void *string, size_t len,
-	  tre_str_type_t type, size_t nmatch, regmatch_t pmatch[],
-	  int eflags)
-{
-  reg_errcode_t status;
-  int *tags = NULL, eo;
-  if (tnfa->num_tags > 0 && nmatch > 0)
-    {
-#ifdef TRE_USE_ALLOCA
-      tags = alloca(sizeof(*tags) * tnfa->num_tags);
-#else /* !TRE_USE_ALLOCA */
-      tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
-#endif /* !TRE_USE_ALLOCA */
-      if (tags == NULL)
-	return REG_ESPACE;
-    }
-
-  /* Dispatch to the appropriate matcher. */
-  if (tnfa->have_backrefs || eflags & REG_BACKTRACKING_MATCHER)
-    {
-      /* The regex has back references, use the backtracking matcher. */
-      if (type == STR_USER)
-	{
-	  const tre_str_source *source = string;
-	  if (source->rewind == NULL || source->compare == NULL)
-	    /* The backtracking matcher requires rewind and compare
-	       capabilities from the input stream. */
-	    return REG_BADPAT;
-	}
-      status = tre_tnfa_run_backtrack(tnfa, string, (int)len, type,
-				      tags, eflags, &eo);
-    }
-#ifdef TRE_APPROX
-  else if (tnfa->have_approx || eflags & REG_APPROX_MATCHER)
-    {
-      /* The regex uses approximate matching, use the approximate matcher. */
-      regamatch_t match;
-      regaparams_t params;
-      regaparams_default(&params);
-      params.max_err = 0;
-      params.max_cost = 0;
-      status = tre_tnfa_run_approx(tnfa, string, (int)len, type, tags,
-				   &match, params, eflags, &eo);
-    }
-#endif /* TRE_APPROX */
-  else
-    {
-      /* Exact matching, no back references, use the parallel matcher. */
-      status = tre_tnfa_run_parallel(tnfa, string, (int)len, type,
-				     tags, eflags, &eo);
-    }
-
-  if (status == REG_OK)
-    /* A match was found, so fill the submatch registers. */
-    tre_fill_pmatch(nmatch, pmatch, tnfa->cflags, tnfa, tags, eo);
-#ifndef TRE_USE_ALLOCA
-  if (tags)
-    xfree(tags);
-#endif /* !TRE_USE_ALLOCA */
-  return status;
-}
-
-int
-regnexec(const regex_t *preg, const char *str, size_t len,
-	 size_t nmatch, regmatch_t pmatch[], int eflags)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  tre_str_type_t type = (TRE_MB_CUR_MAX == 1) ? STR_BYTE : STR_MBS;
-
-  return tre_match(tnfa, str, len, type, nmatch, pmatch, eflags);
-}
-
-int
-regexec(const regex_t *preg, const char *str,
-	size_t nmatch, regmatch_t pmatch[], int eflags)
-{
-  return regnexec(preg, str, (unsigned)-1, nmatch, pmatch, eflags);
-}
-
-
-#ifdef TRE_WCHAR
-
-int
-regwnexec(const regex_t *preg, const wchar_t *str, size_t len,
-	  size_t nmatch, regmatch_t pmatch[], int eflags)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  return tre_match(tnfa, str, len, STR_WIDE, nmatch, pmatch, eflags);
-}
-
-int
-regwexec(const regex_t *preg, const wchar_t *str,
-	 size_t nmatch, regmatch_t pmatch[], int eflags)
-{
-  return regwnexec(preg, str, (unsigned)-1, nmatch, pmatch, eflags);
-}
-
-#endif /* TRE_WCHAR */
-
-int
-reguexec(const regex_t *preg, const tre_str_source *str,
-	 size_t nmatch, regmatch_t pmatch[], int eflags)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  return tre_match(tnfa, str, (unsigned)-1, STR_USER, nmatch, pmatch, eflags);
-}
-
-
-#ifdef TRE_APPROX
-
-/*
-  Wrapper functions for approximate regexp matching.
-*/
-
-static int
-tre_match_approx(const tre_tnfa_t *tnfa, const void *string, size_t len,
-		 tre_str_type_t type, regamatch_t *match, regaparams_t params,
-		 int eflags)
-{
-  reg_errcode_t status;
-  int *tags = NULL, eo;
-
-  /* If the regexp does not use approximate matching features, the
-     maximum cost is zero, and the approximate matcher isn't forced,
-     use the exact matcher instead. */
-  if (params.max_cost == 0 && !tnfa->have_approx
-      && !(eflags & REG_APPROX_MATCHER))
-    return tre_match(tnfa, string, len, type, match->nmatch, match->pmatch,
-		     eflags);
-
-  /* Back references are not supported by the approximate matcher. */
-  if (tnfa->have_backrefs)
-    return REG_BADPAT;
-
-  if (tnfa->num_tags > 0 && match->nmatch > 0)
-    {
-#if TRE_USE_ALLOCA
-      tags = alloca(sizeof(*tags) * tnfa->num_tags);
-#else /* !TRE_USE_ALLOCA */
-      tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
-#endif /* !TRE_USE_ALLOCA */
-      if (tags == NULL)
-	return REG_ESPACE;
-    }
-  status = tre_tnfa_run_approx(tnfa, string, (int)len, type, tags,
-			       match, params, eflags, &eo);
-  if (status == REG_OK)
-    tre_fill_pmatch(match->nmatch, match->pmatch, tnfa->cflags, tnfa, tags, eo);
-#ifndef TRE_USE_ALLOCA
-  if (tags)
-    xfree(tags);
-#endif /* !TRE_USE_ALLOCA */
-  return status;
-}
-
-int
-reganexec(const regex_t *preg, const char *str, size_t len,
-	  regamatch_t *match, regaparams_t params, int eflags)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  tre_str_type_t type = (TRE_MB_CUR_MAX == 1) ? STR_BYTE : STR_MBS;
-
-  return tre_match_approx(tnfa, str, len, type, match, params, eflags);
-}
-
-int
-regaexec(const regex_t *preg, const char *str,
-	 regamatch_t *match, regaparams_t params, int eflags)
-{
-  return reganexec(preg, str, (unsigned)-1, match, params, eflags);
-}
-
-#ifdef TRE_WCHAR
-
-int
-regawnexec(const regex_t *preg, const wchar_t *str, size_t len,
-	   regamatch_t *match, regaparams_t params, int eflags)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  return tre_match_approx(tnfa, str, len, STR_WIDE,
-			  match, params, eflags);
-}
-
-int
-regawexec(const regex_t *preg, const wchar_t *str,
-	  regamatch_t *match, regaparams_t params, int eflags)
-{
-  return regawnexec(preg, str, (unsigned)-1, match, params, eflags);
-}
-
-#endif /* TRE_WCHAR */
-
-void
-regaparams_default(regaparams_t *params)
-{
-  memset(params, 0, sizeof(*params));
-  params->cost_ins = 1;
-  params->cost_del = 1;
-  params->cost_subst = 1;
-  params->max_cost = INT_MAX;
-  params->max_ins = INT_MAX;
-  params->max_del = INT_MAX;
-  params->max_subst = INT_MAX;
-  params->max_err = INT_MAX;
-}
-
-#endif /* TRE_APPROX */
-
-/* EOF */
-/*
-  tre-ast.c - Abstract syntax tree (AST) routines
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <assert.h>
-
-/*
-  tre-ast.h - Abstract syntax tree (AST) definitions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-
-#ifndef TRE_AST_H
-#define TRE_AST_H 1
-
-/*
-  tre-mem.h - TRE memory allocator interface
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifndef TRE_MEM_H
-#define TRE_MEM_H 1
-
-#include <stdlib.h>
-
-#define TRE_MEM_BLOCK_SIZE 1024
-
-typedef struct tre_list {
-  void *data;
-  struct tre_list *next;
-} tre_list_t;
-
-typedef struct tre_mem_struct {
-  tre_list_t *blocks;
-  tre_list_t *current;
-  char *ptr;
-  size_t n;
-  int failed;
-  void **provided;
-} *tre_mem_t;
-
-
-tre_mem_t tre_mem_new_impl(int provided, void *provided_block);
-void *tre_mem_alloc_impl(tre_mem_t mem, int provided, void *provided_block,
-			 int zero, size_t size);
-
-/* Returns a new memory allocator or NULL if out of memory. */
-#define tre_mem_new()  tre_mem_new_impl(0, NULL)
-
-/* Allocates a block of `size' bytes from `mem'.  Returns a pointer to the
-   allocated block or NULL if an underlying malloc() failed. */
-#define tre_mem_alloc(mem, size) tre_mem_alloc_impl(mem, 0, NULL, 0, size)
-
-/* Allocates a block of `size' bytes from `mem'.  Returns a pointer to the
-   allocated block or NULL if an underlying malloc() failed.  The memory
-   is set to zero. */
-#define tre_mem_calloc(mem, size) tre_mem_alloc_impl(mem, 0, NULL, 1, size)
-
-#ifdef TRE_USE_ALLOCA
-/* alloca() versions.  Like above, but memory is allocated with alloca()
-   instead of malloc(). */
-
-#define tre_mem_newa() \
-  tre_mem_new_impl(1, alloca(sizeof(struct tre_mem_struct)))
-
-#define tre_mem_alloca(mem, size)					      \
-  ((mem)->n >= (size)							      \
-   ? tre_mem_alloc_impl((mem), 1, NULL, 0, (size))			      \
-   : tre_mem_alloc_impl((mem), 1, alloca(TRE_MEM_BLOCK_SIZE), 0, (size)))
-#endif /* TRE_USE_ALLOCA */
-
-
-/* Frees the memory allocator and all memory allocated with it. */
-void tre_mem_destroy(tre_mem_t mem);
-
-#endif /* TRE_MEM_H */
-
-/* EOF */
-/*
-  tre-compile.h: Regex compilation definitions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-
-#ifndef TRE_COMPILE_H
-#define TRE_COMPILE_H 1
-
-typedef struct {
-  int position;
-  int code_min;
-  int code_max;
-  int *tags;
-  int assertions;
-  tre_ctype_t class;
-  tre_ctype_t *neg_classes;
-  int backref;
-  int *params;
-} tre_pos_and_tags_t;
-
-#endif /* TRE_COMPILE_H */
-
-/* EOF */
-
-/* The different AST node types. */
-typedef enum {
-  LITERAL,
-  CATENATION,
-  ITERATION,
-  UNION
-} tre_ast_type_t;
-
-/* Special subtypes of TRE_LITERAL. */
-#define EMPTY	  -1   /* Empty leaf (denotes empty string). */
-#define ASSERTION -2   /* Assertion leaf. */
-#define TAG	  -3   /* Tag leaf. */
-#define BACKREF	  -4   /* Back reference leaf. */
-#define PARAMETER -5   /* Parameter. */
-
-#define IS_SPECIAL(x)	((x)->code_min < 0)
-#define IS_EMPTY(x)	((x)->code_min == EMPTY)
-#define IS_ASSERTION(x) ((x)->code_min == ASSERTION)
-#define IS_TAG(x)	((x)->code_min == TAG)
-#define IS_BACKREF(x)	((x)->code_min == BACKREF)
-#define IS_PARAMETER(x) ((x)->code_min == PARAMETER)
-
-
-/* A generic AST node.  All AST nodes consist of this node on the top
-   level with `obj' pointing to the actual content. */
-typedef struct {
-  tre_ast_type_t type;   /* Type of the node. */
-  void *obj;             /* Pointer to actual node. */
-  int nullable;
-  int submatch_id;
-  int num_submatches;
-  int num_tags;
-  tre_pos_and_tags_t *firstpos;
-  tre_pos_and_tags_t *lastpos;
-} tre_ast_node_t;
-
-
-/* A "literal" node.  These are created for assertions, back references,
-   tags, matching parameter settings, and all expressions that match one
-   character. */
-typedef struct {
-  long code_min;
-  long code_max;
-  int position;
-  union {
-    tre_ctype_t class;
-    int *params;
-  } u;
-  tre_ctype_t *neg_classes;
-} tre_literal_t;
-
-/* A "catenation" node.	 These are created when two regexps are concatenated.
-   If there are more than one subexpressions in sequence, the `left' part
-   holds all but the last, and `right' part holds the last subexpression
-   (catenation is left associative). */
-typedef struct {
-  tre_ast_node_t *left;
-  tre_ast_node_t *right;
-} tre_catenation_t;
-
-/* An "iteration" node.	 These are created for the "*", "+", "?", and "{m,n}"
-   operators. */
-typedef struct {
-  /* Subexpression to match. */
-  tre_ast_node_t *arg;
-  /* Minimum number of consecutive matches. */
-  int min;
-  /* Maximum number of consecutive matches. */
-  int max;
-  /* If 0, match as many characters as possible, if 1 match as few as
-     possible.	Note that this does not always mean the same thing as
-     matching as many/few repetitions as possible. */
-  unsigned int minimal:1;
-  /* Approximate matching parameters (or NULL). */
-  int *params;
-} tre_iteration_t;
-
-/* An "union" node.  These are created for the "|" operator. */
-typedef struct {
-  tre_ast_node_t *left;
-  tre_ast_node_t *right;
-} tre_union_t;
-
-tre_ast_node_t *
-tre_ast_new_node(tre_mem_t mem, tre_ast_type_t type, size_t size);
-
-tre_ast_node_t *
-tre_ast_new_literal(tre_mem_t mem, int code_min, int code_max, int position);
-
-tre_ast_node_t *
-tre_ast_new_iter(tre_mem_t mem, tre_ast_node_t *arg, int min, int max,
-		 int minimal);
-
-tre_ast_node_t *
-tre_ast_new_union(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right);
-
-tre_ast_node_t *
-tre_ast_new_catenation(tre_mem_t mem, tre_ast_node_t *left,
-		       tre_ast_node_t *right);
-
-#ifdef TRE_DEBUG
-void
-tre_ast_print(tre_ast_node_t *tree);
-
-/* XXX - rethink AST printing API */
-void
-tre_print_params(int *params);
-#endif /* TRE_DEBUG */
-
-#endif /* TRE_AST_H */
-
-/* EOF */
-
-tre_ast_node_t *
-tre_ast_new_node(tre_mem_t mem, tre_ast_type_t type, size_t size)
-{
-  tre_ast_node_t *node;
-
-  node = tre_mem_calloc(mem, sizeof(*node));
-  if (!node)
-    return NULL;
-  node->obj = tre_mem_calloc(mem, size);
-  if (!node->obj)
-    return NULL;
-  node->type = type;
-  node->nullable = -1;
-  node->submatch_id = -1;
-
-  return node;
-}
-
-tre_ast_node_t *
-tre_ast_new_literal(tre_mem_t mem, int code_min, int code_max, int position)
-{
-  tre_ast_node_t *node;
-  tre_literal_t *lit;
-
-  node = tre_ast_new_node(mem, LITERAL, sizeof(tre_literal_t));
-  if (!node)
-    return NULL;
-  lit = node->obj;
-  lit->code_min = code_min;
-  lit->code_max = code_max;
-  lit->position = position;
-
-  return node;
-}
-
-tre_ast_node_t *
-tre_ast_new_iter(tre_mem_t mem, tre_ast_node_t *arg, int min, int max,
-		 int minimal)
-{
-  tre_ast_node_t *node;
-  tre_iteration_t *iter;
-
-  node = tre_ast_new_node(mem, ITERATION, sizeof(tre_iteration_t));
-  if (!node)
-    return NULL;
-  iter = node->obj;
-  iter->arg = arg;
-  iter->min = min;
-  iter->max = max;
-  iter->minimal = minimal;
-  node->num_submatches = arg->num_submatches;
-
-  return node;
-}
-
-tre_ast_node_t *
-tre_ast_new_union(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right)
-{
-  tre_ast_node_t *node;
-
-  node = tre_ast_new_node(mem, UNION, sizeof(tre_union_t));
-  if (node == NULL)
-    return NULL;
-  ((tre_union_t *)node->obj)->left = left;
-  ((tre_union_t *)node->obj)->right = right;
-  node->num_submatches = left->num_submatches + right->num_submatches;
-
-  return node;
-}
-
-tre_ast_node_t *
-tre_ast_new_catenation(tre_mem_t mem, tre_ast_node_t *left,
-		       tre_ast_node_t *right)
-{
-  tre_ast_node_t *node;
-
-  node = tre_ast_new_node(mem, CATENATION, sizeof(tre_catenation_t));
-  if (node == NULL)
-    return NULL;
-  ((tre_catenation_t *)node->obj)->left = left;
-  ((tre_catenation_t *)node->obj)->right = right;
-  node->num_submatches = left->num_submatches + right->num_submatches;
-
-  return node;
-}
-
-#ifdef TRE_DEBUG
-
-static void
-tre_findent(FILE *stream, int i)
-{
-  while (i-- > 0)
-    fputc(' ', stream);
-}
-
-void
-tre_print_params(int *params)
-{
-  int i;
-  if (params)
-    {
-      DPRINT(("params ["));
-      for (i = 0; i < TRE_PARAM_LAST; i++)
-	{
-	  if (params[i] == TRE_PARAM_UNSET)
-	    DPRINT(("unset"));
-	  else if (params[i] == TRE_PARAM_DEFAULT)
-	    DPRINT(("default"));
-	  else
-	    DPRINT(("%d", params[i]));
-	  if (i < TRE_PARAM_LAST - 1)
-	    DPRINT((", "));
-	}
-      DPRINT(("]"));
-    }
-}
-
-static void
-tre_do_print(FILE *stream, tre_ast_node_t *ast, int indent)
-{
-  int code_min, code_max, pos;
-  int num_tags = ast->num_tags;
-  tre_literal_t *lit;
-  tre_iteration_t *iter;
-
-  tre_findent(stream, indent);
-  switch (ast->type)
-    {
-    case LITERAL:
-      lit = ast->obj;
-      code_min = lit->code_min;
-      code_max = lit->code_max;
-      pos = lit->position;
-      if (IS_EMPTY(lit))
-	{
-	  fprintf(stream, "literal empty\n");
-	}
-      else if (IS_ASSERTION(lit))
-	{
-	  int i;
-	  char *assertions[] = { "bol", "eol", "ctype", "!ctype",
-				 "bow", "eow", "wb", "!wb" };
-	  if (code_max >= ASSERT_LAST << 1)
-	    assert(0);
-	  fprintf(stream, "assertions: ");
-	  for (i = 0; (1 << i) <= ASSERT_LAST; i++)
-	    if (code_max & (1 << i))
-	      fprintf(stream, "%s ", assertions[i]);
-	  fprintf(stream, "\n");
-	}
-      else if (IS_TAG(lit))
-	{
-	  fprintf(stream, "tag %d\n", code_max);
-	}
-      else if (IS_BACKREF(lit))
-	{
-	  fprintf(stream, "backref %d, pos %d\n", code_max, pos);
-	}
-      else if (IS_PARAMETER(lit))
-	{
-	  tre_print_params(lit->u.params);
-	  fprintf(stream, "\n");
-	}
-      else
-	{
-	  fprintf(stream, "literal (%c, %c) (%d, %d), pos %d, sub %d, "
-		  "%d tags\n", code_min, code_max, code_min, code_max, pos,
-		  ast->submatch_id, num_tags);
-	}
-      break;
-    case ITERATION:
-      iter = ast->obj;
-      fprintf(stream, "iteration {%d, %d}, sub %d, %d tags, %s\n",
-	      iter->min, iter->max, ast->submatch_id, num_tags,
-	      iter->minimal ? "minimal" : "greedy");
-      tre_do_print(stream, iter->arg, indent + 2);
-      break;
-    case UNION:
-      fprintf(stream, "union, sub %d, %d tags\n", ast->submatch_id, num_tags);
-      tre_do_print(stream, ((tre_union_t *)ast->obj)->left, indent + 2);
-      tre_do_print(stream, ((tre_union_t *)ast->obj)->right, indent + 2);
-      break;
-    case CATENATION:
-      fprintf(stream, "catenation, sub %d, %d tags\n", ast->submatch_id,
-	      num_tags);
-      tre_do_print(stream, ((tre_catenation_t *)ast->obj)->left, indent + 2);
-      tre_do_print(stream, ((tre_catenation_t *)ast->obj)->right, indent + 2);
-      break;
-    default:
-      assert(0);
-      break;
-    }
-}
-
-static void
-tre_ast_fprint(FILE *stream, tre_ast_node_t *ast)
-{
-  tre_do_print(stream, ast, 0);
-}
-
-void
-tre_ast_print(tre_ast_node_t *tree)
-{
-  printf("AST:\n");
-  tre_ast_fprint(stdout, tree);
-}
-
-#endif /* TRE_DEBUG */
-
-/* EOF */
-/*
-  tre-compile.c - TRE regex compiler
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/*
-  TODO:
-   - Fix tre_ast_to_tnfa() to recurse using a stack instead of recursive
-     function calls.
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-
-/*
-  tre-stack.h: Stack definitions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-
-#ifndef TRE_STACK_H
-#define TRE_STACK_H 1
-
-
-typedef struct tre_stack_rec tre_stack_t;
-
-/* Creates a new stack object.	`size' is initial size in bytes, `max_size'
-   is maximum size, and `increment' specifies how much more space will be
-   allocated with realloc() if all space gets used up.	Returns the stack
-   object or NULL if out of memory. */
-tre_stack_t *
-tre_stack_new(int size, int max_size, int increment);
-
-/* Frees the stack object. */
-void
-tre_stack_destroy(tre_stack_t *s);
-
-/* Returns the current number of objects in the stack. */
-int
-tre_stack_num_objects(tre_stack_t *s);
-
-/* Each tre_stack_push_*(tre_stack_t *s, <type> value) function pushes
-   `value' on top of stack `s'.  Returns REG_ESPACE if out of memory.
-   This tries to realloc() more space before failing if maximum size
-   has not yet been reached.  Returns REG_OK if successful. */
-#define declare_pushf(typetag, type)					      \
-  reg_errcode_t tre_stack_push_ ## typetag(tre_stack_t *s, type value)
-
-declare_pushf(voidptr, void *);
-declare_pushf(int, int);
-
-/* Each tre_stack_pop_*(tre_stack_t *s) function pops the topmost
-   element off of stack `s' and returns it.  The stack must not be
-   empty. */
-#define declare_popf(typetag, type)		  \
-  type tre_stack_pop_ ## typetag(tre_stack_t *s)
-
-declare_popf(voidptr, void *);
-declare_popf(int, int);
-
-/* Just to save some typing. */
-#define STACK_PUSH(s, typetag, value)					      \
-  do									      \
-    {									      \
-      status = tre_stack_push_ ## typetag(s, value);			      \
-    }									      \
-  while (/*CONSTCOND*/0)
-
-#define STACK_PUSHX(s, typetag, value)					      \
-  {									      \
-    status = tre_stack_push_ ## typetag(s, value);			      \
-    if (status != REG_OK)						      \
-      break;								      \
-  }
-
-#define STACK_PUSHR(s, typetag, value)					      \
-  {									      \
-    reg_errcode_t _status;						      \
-    _status = tre_stack_push_ ## typetag(s, value);			      \
-    if (_status != REG_OK)						      \
-      return _status;							      \
-  }
-
-#endif /* TRE_STACK_H */
-
-/* EOF */
-/*
-  tre-parse.c - Regexp parser definitions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifndef TRE_PARSE_H
-#define TRE_PARSE_H 1
-
-/* Parse context. */
-typedef struct {
-  /* Memory allocator.	The AST is allocated using this. */
-  tre_mem_t mem;
-  /* Stack used for keeping track of regexp syntax. */
-  tre_stack_t *stack;
-  /* The parse result. */
-  tre_ast_node_t *result;
-  /* The regexp to parse and its length. */
-  const tre_char_t *re;
-  /* The first character of the entire regexp. */
-  const tre_char_t *re_start;
-  /* The first character after the end of the regexp. */
-  const tre_char_t *re_end;
-  int len;
-  /* Current submatch ID. */
-  int submatch_id;
-  /* Current position (number of literal). */
-  int position;
-  /* The highest back reference or -1 if none seen so far. */
-  int max_backref;
-  /* This flag is set if the regexp uses approximate matching. */
-  int have_approx;
-  /* Compilation flags. */
-  int cflags;
-  /* If this flag is set the top-level submatch is not captured. */
-  int nofirstsub;
-  /* The currently set approximate matching parameters. */
-  int params[TRE_PARAM_LAST];
-} tre_parse_ctx_t;
-
-/* Parses a wide character regexp pattern into a syntax tree.  This parser
-   handles both syntaxes (BRE and ERE), including the TRE extensions. */
-reg_errcode_t
-tre_parse(tre_parse_ctx_t *ctx);
-
-#endif /* TRE_PARSE_H */
-
-/* EOF */
-
-/*
-  Algorithms to setup tags so that submatch addressing can be done.
-*/
-
-
-/* Inserts a catenation node to the root of the tree given in `node'.
-   As the left child a new tag with number `tag_id' to `node' is added,
-   and the right child is the old root. */
-static reg_errcode_t
-tre_add_tag_left(tre_mem_t mem, tre_ast_node_t *node, int tag_id)
-{
-  tre_catenation_t *c;
-
-  DPRINT(("add_tag_left: tag %d\n", tag_id));
-
-  c = tre_mem_alloc(mem, sizeof(*c));
-  if (c == NULL)
-    return REG_ESPACE;
-  c->left = tre_ast_new_literal(mem, TAG, tag_id, -1);
-  if (c->left == NULL)
-    return REG_ESPACE;
-  c->right = tre_mem_alloc(mem, sizeof(tre_ast_node_t));
-  if (c->right == NULL)
-    return REG_ESPACE;
-
-  c->right->obj = node->obj;
-  c->right->type = node->type;
-  c->right->nullable = -1;
-  c->right->submatch_id = -1;
-  c->right->firstpos = NULL;
-  c->right->lastpos = NULL;
-  c->right->num_tags = 0;
-  node->obj = c;
-  node->type = CATENATION;
-  return REG_OK;
-}
-
-/* Inserts a catenation node to the root of the tree given in `node'.
-   As the right child a new tag with number `tag_id' to `node' is added,
-   and the left child is the old root. */
-static reg_errcode_t
-tre_add_tag_right(tre_mem_t mem, tre_ast_node_t *node, int tag_id)
-{
-  tre_catenation_t *c;
-
-  DPRINT(("tre_add_tag_right: tag %d\n", tag_id));
-
-  c = tre_mem_alloc(mem, sizeof(*c));
-  if (c == NULL)
-    return REG_ESPACE;
-  c->right = tre_ast_new_literal(mem, TAG, tag_id, -1);
-  if (c->right == NULL)
-    return REG_ESPACE;
-  c->left = tre_mem_alloc(mem, sizeof(tre_ast_node_t));
-  if (c->left == NULL)
-    return REG_ESPACE;
-
-  c->left->obj = node->obj;
-  c->left->type = node->type;
-  c->left->nullable = -1;
-  c->left->submatch_id = -1;
-  c->left->firstpos = NULL;
-  c->left->lastpos = NULL;
-  c->left->num_tags = 0;
-  node->obj = c;
-  node->type = CATENATION;
-  return REG_OK;
-}
-
-typedef enum {
-  ADDTAGS_RECURSE,
-  ADDTAGS_AFTER_ITERATION,
-  ADDTAGS_AFTER_UNION_LEFT,
-  ADDTAGS_AFTER_UNION_RIGHT,
-  ADDTAGS_AFTER_CAT_LEFT,
-  ADDTAGS_AFTER_CAT_RIGHT,
-  ADDTAGS_SET_SUBMATCH_END
-} tre_addtags_symbol_t;
-
-
-typedef struct {
-  int tag;
-  int next_tag;
-} tre_tag_states_t;
-
-
-/* Go through `regset' and set submatch data for submatches that are
-   using this tag. */
-static void
-tre_purge_regset(int *regset, tre_tnfa_t *tnfa, int tag)
-{
-  int i;
-
-  for (i = 0; regset[i] >= 0; i++)
-    {
-      int id = regset[i] / 2;
-      int start = !(regset[i] % 2);
-      DPRINT(("  Using tag %d for %s offset of "
-	      "submatch %d\n", tag,
-	      start ? "start" : "end", id));
-      if (start)
-	tnfa->submatch_data[id].so_tag = tag;
-      else
-	tnfa->submatch_data[id].eo_tag = tag;
-    }
-  regset[0] = -1;
-}
-
-
-/* Adds tags to appropriate locations in the parse tree in `tree', so that
-   subexpressions marked for submatch addressing can be traced. */
-static reg_errcode_t
-tre_add_tags(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree,
-	     tre_tnfa_t *tnfa)
-{
-  reg_errcode_t status = REG_OK;
-  tre_addtags_symbol_t symbol;
-  tre_ast_node_t *node = tree; /* Tree node we are currently looking at. */
-  int bottom = tre_stack_num_objects(stack);
-  /* True for first pass (counting number of needed tags) */
-  int first_pass = (mem == NULL || tnfa == NULL);
-  int *regset, *orig_regset;
-  int num_tags = 0; /* Total number of tags. */
-  int num_minimals = 0;	 /* Number of special minimal tags. */
-  int tag = 0;	    /* The tag that is to be added next. */
-  int next_tag = 1; /* Next tag to use after this one. */
-  int *parents;	    /* Stack of submatches the current submatch is
-		       contained in. */
-  int minimal_tag = -1; /* Tag that marks the beginning of a minimal match. */
-  tre_tag_states_t *saved_states;
-
-  tre_tag_direction_t direction = TRE_TAG_MINIMIZE;
-  if (!first_pass)
-    {
-      tnfa->end_tag = 0;
-      tnfa->minimal_tags[0] = -1;
-    }
-
-  regset = xmalloc(sizeof(*regset) * ((tnfa->num_submatches + 1) * 2));
-  if (regset == NULL)
-    return REG_ESPACE;
-  regset[0] = -1;
-  orig_regset = regset;
-
-  parents = xmalloc(sizeof(*parents) * (tnfa->num_submatches + 1));
-  if (parents == NULL)
-    {
-      xfree(regset);
-      return REG_ESPACE;
-    }
-  parents[0] = -1;
-
-  saved_states = xmalloc(sizeof(*saved_states) * (tnfa->num_submatches + 1));
-  if (saved_states == NULL)
-    {
-      xfree(regset);
-      xfree(parents);
-      return REG_ESPACE;
-    }
-  else
-    {
-      unsigned int i;
-      for (i = 0; i <= tnfa->num_submatches; i++)
-	saved_states[i].tag = -1;
-    }
-
-  STACK_PUSH(stack, voidptr, node);
-  STACK_PUSH(stack, int, ADDTAGS_RECURSE);
-
-  while (tre_stack_num_objects(stack) > bottom)
-    {
-      if (status != REG_OK)
-	break;
-
-      symbol = (tre_addtags_symbol_t)tre_stack_pop_int(stack);
-      switch (symbol)
-	{
-
-	case ADDTAGS_SET_SUBMATCH_END:
-	  {
-	    int id = tre_stack_pop_int(stack);
-	    int i;
-
-	    /* Add end of this submatch to regset. */
-	    for (i = 0; regset[i] >= 0; i++);
-	    regset[i] = id * 2 + 1;
-	    regset[i + 1] = -1;
-
-	    /* Pop this submatch from the parents stack. */
-	    for (i = 0; parents[i] >= 0; i++);
-	    parents[i - 1] = -1;
-	    break;
-	  }
-
-	case ADDTAGS_RECURSE:
-	  node = tre_stack_pop_voidptr(stack);
-
-	  if (node->submatch_id >= 0)
-	    {
-	      int id = node->submatch_id;
-	      int i;
-
-
-	      /* Add start of this submatch to regset. */
-	      for (i = 0; regset[i] >= 0; i++);
-	      regset[i] = id * 2;
-	      regset[i + 1] = -1;
-
-	      if (!first_pass)
-		{
-		  for (i = 0; parents[i] >= 0; i++);
-		  tnfa->submatch_data[id].parents = NULL;
-		  if (i > 0)
-		    {
-		      int *p = xmalloc(sizeof(*p) * (i + 1));
-		      if (p == NULL)
-			{
-			  status = REG_ESPACE;
-			  break;
-			}
-		      assert(tnfa->submatch_data[id].parents == NULL);
-		      tnfa->submatch_data[id].parents = p;
-		      for (i = 0; parents[i] >= 0; i++)
-			p[i] = parents[i];
-		      p[i] = -1;
-		    }
-		}
-
-	      /* Add end of this submatch to regset after processing this
-		 node. */
-	      STACK_PUSHX(stack, int, node->submatch_id);
-	      STACK_PUSHX(stack, int, ADDTAGS_SET_SUBMATCH_END);
-	    }
-
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit = node->obj;
-
-		if (!IS_SPECIAL(lit) || IS_BACKREF(lit))
-		  {
-		    int i;
-		    DPRINT(("Literal %d-%d\n",
-			    (int)lit->code_min, (int)lit->code_max));
-		    if (regset[0] >= 0)
-		      {
-			/* Regset is not empty, so add a tag before the
-			   literal or backref. */
-			if (!first_pass)
-			  {
-			    status = tre_add_tag_left(mem, node, tag);
-			    tnfa->tag_directions[tag] = direction;
-			    if (minimal_tag >= 0)
-			      {
-				DPRINT(("Minimal %d, %d\n", minimal_tag, tag));
-				for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-				tnfa->minimal_tags[i] = tag;
-				tnfa->minimal_tags[i + 1] = minimal_tag;
-				tnfa->minimal_tags[i + 2] = -1;
-				minimal_tag = -1;
-				num_minimals++;
-			      }
-			    tre_purge_regset(regset, tnfa, tag);
-			  }
-			else
-			  {
-			    DPRINT(("  num_tags = 1\n"));
-			    node->num_tags = 1;
-			  }
-
-			DPRINT(("  num_tags++\n"));
-			regset[0] = -1;
-			tag = next_tag;
-			num_tags++;
-			next_tag++;
-		      }
-		  }
-		else
-		  {
-		    assert(!IS_TAG(lit));
-		  }
-		break;
-	      }
-	    case CATENATION:
-	      {
-		tre_catenation_t *cat = node->obj;
-		tre_ast_node_t *left = cat->left;
-		tre_ast_node_t *right = cat->right;
-		int reserved_tag = -1;
-		DPRINT(("Catenation, next_tag = %d\n", next_tag));
-
-
-		/* After processing right child. */
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_RIGHT);
-
-		/* Process right child. */
-		STACK_PUSHX(stack, voidptr, right);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
-
-		/* After processing left child. */
-		STACK_PUSHX(stack, int, next_tag + left->num_tags);
-		DPRINT(("  Pushing %d for after left\n",
-			next_tag + left->num_tags));
-		if (left->num_tags > 0 && right->num_tags > 0)
-		  {
-		    /* Reserve the next tag to the right child. */
-		    DPRINT(("  Reserving next_tag %d to right child\n",
-			    next_tag));
-		    reserved_tag = next_tag;
-		    next_tag++;
-		  }
-		STACK_PUSHX(stack, int, reserved_tag);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_LEFT);
-
-		/* Process left child. */
-		STACK_PUSHX(stack, voidptr, left);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
-
-		}
-	      break;
-	    case ITERATION:
-	      {
-		tre_iteration_t *iter = node->obj;
-		DPRINT(("Iteration\n"));
-
-		if (first_pass)
-		  {
-		    STACK_PUSHX(stack, int, regset[0] >= 0 || iter->minimal);
-		  }
-		else
-		  {
-		    STACK_PUSHX(stack, int, tag);
-		    STACK_PUSHX(stack, int, iter->minimal);
-		  }
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_ITERATION);
-
-		STACK_PUSHX(stack, voidptr, iter->arg);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
-
-		/* Regset is not empty, so add a tag here. */
-		if (regset[0] >= 0 || iter->minimal)
-		  {
-		    if (!first_pass)
-		      {
-			int i;
-			status = tre_add_tag_left(mem, node, tag);
-			if (iter->minimal)
-			  tnfa->tag_directions[tag] = TRE_TAG_MAXIMIZE;
-			else
-			  tnfa->tag_directions[tag] = direction;
-			if (minimal_tag >= 0)
-			  {
-			    DPRINT(("Minimal %d, %d\n", minimal_tag, tag));
-			    for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-			    tnfa->minimal_tags[i] = tag;
-			    tnfa->minimal_tags[i + 1] = minimal_tag;
-			    tnfa->minimal_tags[i + 2] = -1;
-			    minimal_tag = -1;
-			    num_minimals++;
-			  }
-			tre_purge_regset(regset, tnfa, tag);
-		      }
-
-		    DPRINT(("  num_tags++\n"));
-		    regset[0] = -1;
-		    tag = next_tag;
-		    num_tags++;
-		    next_tag++;
-		  }
-		direction = TRE_TAG_MINIMIZE;
-	      }
-	      break;
-	    case UNION:
-	      {
-		tre_union_t *uni = node->obj;
-		tre_ast_node_t *left = uni->left;
-		tre_ast_node_t *right = uni->right;
-		int left_tag;
-		int right_tag;
-
-		if (regset[0] >= 0)
-		  {
-		    left_tag = next_tag;
-		    right_tag = next_tag + 1;
-		  }
-		else
-		  {
-		    left_tag = tag;
-		    right_tag = next_tag;
-		  }
-
-		DPRINT(("Union\n"));
-
-		/* After processing right child. */
-		STACK_PUSHX(stack, int, right_tag);
-		STACK_PUSHX(stack, int, left_tag);
-		STACK_PUSHX(stack, voidptr, regset);
-		STACK_PUSHX(stack, int, regset[0] >= 0);
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, voidptr, right);
-		STACK_PUSHX(stack, voidptr, left);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_RIGHT);
-
-		/* Process right child. */
-		STACK_PUSHX(stack, voidptr, right);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
-
-		/* After processing left child. */
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_LEFT);
-
-		/* Process left child. */
-		STACK_PUSHX(stack, voidptr, left);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
-
-		/* Regset is not empty, so add a tag here. */
-		if (regset[0] >= 0)
-		  {
-		    if (!first_pass)
-		      {
-			int i;
-			status = tre_add_tag_left(mem, node, tag);
-			tnfa->tag_directions[tag] = direction;
-			if (minimal_tag >= 0)
-			  {
-			    DPRINT(("Minimal %d, %d\n", minimal_tag, tag));
-			    for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-			    tnfa->minimal_tags[i] = tag;
-			    tnfa->minimal_tags[i + 1] = minimal_tag;
-			    tnfa->minimal_tags[i + 2] = -1;
-			    minimal_tag = -1;
-			    num_minimals++;
-			  }
-			tre_purge_regset(regset, tnfa, tag);
-		      }
-
-		    DPRINT(("  num_tags++\n"));
-		    regset[0] = -1;
-		    tag = next_tag;
-		    num_tags++;
-		    next_tag++;
-		  }
-
-		if (node->num_submatches > 0)
-		  {
-		    /* The next two tags are reserved for markers. */
-		    next_tag++;
-		    tag = next_tag;
-		    next_tag++;
-		  }
-
-		break;
-	      }
-	    }
-
-	  if (node->submatch_id >= 0)
-	    {
-	      int i;
-	      /* Push this submatch on the parents stack. */
-	      for (i = 0; parents[i] >= 0; i++);
-	      parents[i] = node->submatch_id;
-	      parents[i + 1] = -1;
-	    }
-
-	  break; /* end case: ADDTAGS_RECURSE */
-
-	case ADDTAGS_AFTER_ITERATION:
-	  {
-	    int minimal = 0;
-	    int enter_tag;
-	    node = tre_stack_pop_voidptr(stack);
-	    if (first_pass)
-	      {
-		node->num_tags = ((tre_iteration_t *)node->obj)->arg->num_tags
-		  + tre_stack_pop_int(stack);
-		minimal_tag = -1;
-	      }
-	    else
-	      {
-		minimal = tre_stack_pop_int(stack);
-		enter_tag = tre_stack_pop_int(stack);
-		if (minimal)
-		  minimal_tag = enter_tag;
-	      }
-
-	    DPRINT(("After iteration\n"));
-	    if (!first_pass)
-	      {
-		DPRINT(("  Setting direction to %s\n",
-			minimal ? "minimize" : "maximize"));
-		if (minimal)
-		  direction = TRE_TAG_MINIMIZE;
-		else
-		  direction = TRE_TAG_MAXIMIZE;
-	      }
-	    break;
-	  }
-
-	case ADDTAGS_AFTER_CAT_LEFT:
-	  {
-	    int new_tag = tre_stack_pop_int(stack);
-	    next_tag = tre_stack_pop_int(stack);
-	    DPRINT(("After cat left, tag = %d, next_tag = %d\n",
-		    tag, next_tag));
-	    if (new_tag >= 0)
-	      {
-		DPRINT(("  Setting tag to %d\n", new_tag));
-		tag = new_tag;
-	      }
-	    break;
-	  }
-
-	case ADDTAGS_AFTER_CAT_RIGHT:
-	  DPRINT(("After cat right\n"));
-	  node = tre_stack_pop_voidptr(stack);
-	  if (first_pass)
-	    node->num_tags = ((tre_catenation_t *)node->obj)->left->num_tags
-	      + ((tre_catenation_t *)node->obj)->right->num_tags;
-	  break;
-
-	case ADDTAGS_AFTER_UNION_LEFT:
-	  DPRINT(("After union left\n"));
-	  /* Lift the bottom of the `regset' array so that when processing
-	     the right operand the items currently in the array are
-	     invisible.	 The original bottom was saved at ADDTAGS_UNION and
-	     will be restored at ADDTAGS_AFTER_UNION_RIGHT below. */
-	  while (*regset >= 0)
-	    regset++;
-	  break;
-
-	case ADDTAGS_AFTER_UNION_RIGHT:
-	  {
-	    int added_tags, tag_left, tag_right;
-	    tre_ast_node_t *left = tre_stack_pop_voidptr(stack);
-	    tre_ast_node_t *right = tre_stack_pop_voidptr(stack);
-	    DPRINT(("After union right\n"));
-	    node = tre_stack_pop_voidptr(stack);
-	    added_tags = tre_stack_pop_int(stack);
-	    if (first_pass)
-	      {
-		node->num_tags = ((tre_union_t *)node->obj)->left->num_tags
-		  + ((tre_union_t *)node->obj)->right->num_tags + added_tags
-		  + ((node->num_submatches > 0) ? 2 : 0);
-	      }
-	    regset = tre_stack_pop_voidptr(stack);
-	    tag_left = tre_stack_pop_int(stack);
-	    tag_right = tre_stack_pop_int(stack);
-
-	    /* Add tags after both children, the left child gets a smaller
-	       tag than the right child.  This guarantees that we prefer
-	       the left child over the right child. */
-	    /* XXX - This is not always necessary (if the children have
-	       tags which must be seen for every match of that child). */
-	    /* XXX - Check if this is the only place where tre_add_tag_right
-	       is used.	 If so, use tre_add_tag_left (putting the tag before
-	       the child as opposed after the child) and throw away
-	       tre_add_tag_right. */
-	    if (node->num_submatches > 0)
-	      {
-		if (!first_pass)
-		  {
-		    status = tre_add_tag_right(mem, left, tag_left);
-		    tnfa->tag_directions[tag_left] = TRE_TAG_MAXIMIZE;
-		    status = tre_add_tag_right(mem, right, tag_right);
-		    tnfa->tag_directions[tag_right] = TRE_TAG_MAXIMIZE;
-		  }
-		DPRINT(("  num_tags += 2\n"));
-		num_tags += 2;
-	      }
-	    direction = TRE_TAG_MAXIMIZE;
-	    break;
-	  }
-
-	default:
-	  assert(0);
-	  break;
-
-	} /* end switch(symbol) */
-    } /* end while(tre_stack_num_objects(stack) > bottom) */
-
-  if (!first_pass)
-    tre_purge_regset(regset, tnfa, tag);
-
-  if (!first_pass && minimal_tag >= 0)
-    {
-      int i;
-      DPRINT(("Minimal %d, %d\n", minimal_tag, tag));
-      for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-      tnfa->minimal_tags[i] = tag;
-      tnfa->minimal_tags[i + 1] = minimal_tag;
-      tnfa->minimal_tags[i + 2] = -1;
-      minimal_tag = -1;
-      num_minimals++;
-    }
-
-  DPRINT(("tre_add_tags: %s complete.  Number of tags %d.\n",
-	  first_pass? "First pass" : "Second pass", num_tags));
-
-  assert(tree->num_tags == num_tags);
-  tnfa->end_tag = num_tags;
-  tnfa->num_tags = num_tags;
-  tnfa->num_minimals = num_minimals;
-  xfree(orig_regset);
-  xfree(parents);
-  xfree(saved_states);
-  return status;
-}
-
-
-
-/*
-  AST to TNFA compilation routines.
-*/
-
-typedef enum {
-  COPY_RECURSE,
-  COPY_SET_RESULT_PTR
-} tre_copyast_symbol_t;
-
-/* Flags for tre_copy_ast(). */
-#define COPY_REMOVE_TAGS	 1
-#define COPY_MAXIMIZE_FIRST_TAG	 2
-
-static reg_errcode_t
-tre_copy_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast,
-	     int flags, int *pos_add, tre_tag_direction_t *tag_directions,
-	     tre_ast_node_t **copy, int *max_pos)
-{
-  reg_errcode_t status = REG_OK;
-  int bottom = tre_stack_num_objects(stack);
-  int num_copied = 0;
-  int first_tag = 1;
-  tre_ast_node_t **result = copy;
-  tre_copyast_symbol_t symbol;
-
-  STACK_PUSH(stack, voidptr, ast);
-  STACK_PUSH(stack, int, COPY_RECURSE);
-
-  while (status == REG_OK && tre_stack_num_objects(stack) > bottom)
-    {
-      tre_ast_node_t *node;
-      if (status != REG_OK)
-	break;
-
-      symbol = (tre_copyast_symbol_t)tre_stack_pop_int(stack);
-      switch (symbol)
-	{
-	case COPY_SET_RESULT_PTR:
-	  result = tre_stack_pop_voidptr(stack);
-	  break;
-	case COPY_RECURSE:
-	  node = tre_stack_pop_voidptr(stack);
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit = node->obj;
-		int pos = lit->position;
-		int min = lit->code_min;
-		int max = lit->code_max;
-		if (!IS_SPECIAL(lit) || IS_BACKREF(lit))
-		  {
-		    /* XXX - e.g. [ab] has only one position but two
-		       nodes, so we are creating holes in the state space
-		       here.  Not fatal, just wastes memory. */
-		    pos += *pos_add;
-		    num_copied++;
-		  }
-		else if (IS_TAG(lit) && (flags & COPY_REMOVE_TAGS))
-		  {
-		    /* Change this tag to empty. */
-		    min = EMPTY;
-		    max = pos = -1;
-		  }
-		else if (IS_TAG(lit) && (flags & COPY_MAXIMIZE_FIRST_TAG)
-			 && first_tag)
-		  {
-		    /* Maximize the first tag. */
-		    tag_directions[max] = TRE_TAG_MAXIMIZE;
-		    first_tag = 0;
-		  }
-		*result = tre_ast_new_literal(mem, min, max, pos);
-		if (*result == NULL)
-		  status = REG_ESPACE;
-
-		if (pos > *max_pos)
-		  *max_pos = pos;
-		break;
-	      }
-	    case UNION:
-	      {
-		tre_union_t *uni = node->obj;
-		tre_union_t *tmp;
-		*result = tre_ast_new_union(mem, uni->left, uni->right);
-		if (*result == NULL)
-		  {
-		    status = REG_ESPACE;
-		    break;
-		  }
-		tmp = (*result)->obj;
-		result = &tmp->left;
-		STACK_PUSHX(stack, voidptr, uni->right);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		STACK_PUSHX(stack, voidptr, &tmp->right);
-		STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR);
-		STACK_PUSHX(stack, voidptr, uni->left);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		break;
-	      }
-	    case CATENATION:
-	      {
-		tre_catenation_t *cat = node->obj;
-		tre_catenation_t *tmp;
-		*result = tre_ast_new_catenation(mem, cat->left, cat->right);
-		if (*result == NULL)
-		  {
-		    status = REG_ESPACE;
-		    break;
-		  }
-		tmp = (*result)->obj;
-		tmp->left = NULL;
-		tmp->right = NULL;
-		result = &tmp->left;
-
-		STACK_PUSHX(stack, voidptr, cat->right);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		STACK_PUSHX(stack, voidptr, &tmp->right);
-		STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR);
-		STACK_PUSHX(stack, voidptr, cat->left);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		break;
-	      }
-	    case ITERATION:
-	      {
-		tre_iteration_t *iter = node->obj;
-		STACK_PUSHX(stack, voidptr, iter->arg);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		*result = tre_ast_new_iter(mem, iter->arg, iter->min,
-					   iter->max, iter->minimal);
-		if (*result == NULL)
-		  {
-		    status = REG_ESPACE;
-		    break;
-		  }
-		iter = (*result)->obj;
-		result = &iter->arg;
-		break;
-	      }
-	    default:
-	      assert(0);
-	      break;
-	    }
-	  break;
-	}
-    }
-  *pos_add += num_copied;
-  return status;
-}
-
-typedef enum {
-  EXPAND_RECURSE,
-  EXPAND_AFTER_ITER
-} tre_expand_ast_symbol_t;
-
-/* Expands each iteration node that has a finite nonzero minimum or maximum
-   iteration count to a catenated sequence of copies of the node. */
-static reg_errcode_t
-tre_expand_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast,
-	       int *position, tre_tag_direction_t *tag_directions,
-	       int *max_depth)
-{
-  reg_errcode_t status = REG_OK;
-  int bottom = tre_stack_num_objects(stack);
-  int pos_add = 0;
-  int pos_add_total = 0;
-  int max_pos = 0;
-  /* Current approximate matching parameters. */
-  int params[TRE_PARAM_LAST];
-  /* Approximate parameter nesting level. */
-  int params_depth = 0;
-  int iter_depth = 0;
-  int i;
-
-  for (i = 0; i < TRE_PARAM_LAST; i++)
-    params[i] = TRE_PARAM_DEFAULT;
-
-  STACK_PUSHR(stack, voidptr, ast);
-  STACK_PUSHR(stack, int, EXPAND_RECURSE);
-  while (status == REG_OK && tre_stack_num_objects(stack) > bottom)
-    {
-      tre_ast_node_t *node;
-      tre_expand_ast_symbol_t symbol;
-
-      if (status != REG_OK)
-	break;
-
-      DPRINT(("pos_add %d\n", pos_add));
-
-      symbol = (tre_expand_ast_symbol_t)tre_stack_pop_int(stack);
-      node = tre_stack_pop_voidptr(stack);
-      switch (symbol)
-	{
-	case EXPAND_RECURSE:
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit= node->obj;
-		if (!IS_SPECIAL(lit) || IS_BACKREF(lit))
-		  {
-		    lit->position += pos_add;
-		    if (lit->position > max_pos)
-		      max_pos = lit->position;
-		  }
-		break;
-	      }
-	    case UNION:
-	      {
-		tre_union_t *uni = node->obj;
-		STACK_PUSHX(stack, voidptr, uni->right);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		STACK_PUSHX(stack, voidptr, uni->left);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		break;
-	      }
-	    case CATENATION:
-	      {
-		tre_catenation_t *cat = node->obj;
-		STACK_PUSHX(stack, voidptr, cat->right);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		STACK_PUSHX(stack, voidptr, cat->left);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		break;
-	      }
-	    case ITERATION:
-	      {
-		tre_iteration_t *iter = node->obj;
-		STACK_PUSHX(stack, int, pos_add);
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, int, EXPAND_AFTER_ITER);
-		STACK_PUSHX(stack, voidptr, iter->arg);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		/* If we are going to expand this node at EXPAND_AFTER_ITER
-		   then don't increase the `pos' fields of the nodes now, it
-		   will get done when expanding. */
-		if (iter->min > 1 || iter->max > 1)
-		  pos_add = 0;
-		iter_depth++;
-		DPRINT(("iter\n"));
-		break;
-	      }
-	    default:
-	      assert(0);
-	      break;
-	    }
-	  break;
-	case EXPAND_AFTER_ITER:
-	  {
-	    tre_iteration_t *iter = node->obj;
-	    int pos_add_last;
-	    pos_add = tre_stack_pop_int(stack);
-	    pos_add_last = pos_add;
-	    if (iter->min > 1 || iter->max > 1)
-	      {
-		tre_ast_node_t *seq1 = NULL, *seq2 = NULL;
-		int j;
-		int pos_add_save = pos_add;
-
-		/* Create a catenated sequence of copies of the node. */
-		for (j = 0; j < iter->min; j++)
-		  {
-		    tre_ast_node_t *copy;
-		    /* Remove tags from all but the last copy. */
-		    int flags = ((j + 1 < iter->min)
-				 ? COPY_REMOVE_TAGS
-				 : COPY_MAXIMIZE_FIRST_TAG);
-		    DPRINT(("  pos_add %d\n", pos_add));
-		    pos_add_save = pos_add;
-		    status = tre_copy_ast(mem, stack, iter->arg, flags,
-					  &pos_add, tag_directions, &copy,
-					  &max_pos);
-		    if (status != REG_OK)
-		      return status;
-		    if (seq1 != NULL)
-		      seq1 = tre_ast_new_catenation(mem, seq1, copy);
-		    else
-		      seq1 = copy;
-		    if (seq1 == NULL)
-		      return REG_ESPACE;
-		  }
-
-		if (iter->max == -1)
-		  {
-		    /* No upper limit. */
-		    pos_add_save = pos_add;
-		    status = tre_copy_ast(mem, stack, iter->arg, 0,
-					  &pos_add, NULL, &seq2, &max_pos);
-		    if (status != REG_OK)
-		      return status;
-		    seq2 = tre_ast_new_iter(mem, seq2, 0, -1, 0);
-		    if (seq2 == NULL)
-		      return REG_ESPACE;
-		  }
-		else
-		  {
-		    for (j = iter->min; j < iter->max; j++)
-		      {
-			tre_ast_node_t *tmp, *copy;
-			pos_add_save = pos_add;
-			status = tre_copy_ast(mem, stack, iter->arg, 0,
-					      &pos_add, NULL, &copy, &max_pos);
-			if (status != REG_OK)
-			  return status;
-			if (seq2 != NULL)
-			  seq2 = tre_ast_new_catenation(mem, copy, seq2);
-			else
-			  seq2 = copy;
-			if (seq2 == NULL)
-			  return REG_ESPACE;
-			tmp = tre_ast_new_literal(mem, EMPTY, -1, -1);
-			if (tmp == NULL)
-			  return REG_ESPACE;
-			seq2 = tre_ast_new_union(mem, tmp, seq2);
-			if (seq2 == NULL)
-			  return REG_ESPACE;
-		      }
-		  }
-
-		pos_add = pos_add_save;
-		if (seq1 == NULL)
-		  seq1 = seq2;
-		else if (seq2 != NULL)
-		  seq1 = tre_ast_new_catenation(mem, seq1, seq2);
-		if (seq1 == NULL)
-		  return REG_ESPACE;
-		node->obj = seq1->obj;
-		node->type = seq1->type;
-	      }
-
-	    iter_depth--;
-	    pos_add_total += pos_add - pos_add_last;
-	    if (iter_depth == 0)
-	      pos_add = pos_add_total;
-
-	    /* If approximate parameters are specified, surround the result
-	       with two parameter setting nodes.  The one on the left sets
-	       the specified parameters, and the one on the right restores
-	       the old parameters. */
-	    if (iter->params)
-	      {
-		tre_ast_node_t *tmp_l, *tmp_r, *tmp_node, *node_copy;
-		int *old_params;
-
-		tmp_l = tre_ast_new_literal(mem, PARAMETER, 0, -1);
-		if (!tmp_l)
-		  return REG_ESPACE;
-		((tre_literal_t *)tmp_l->obj)->u.params = iter->params;
-		iter->params[TRE_PARAM_DEPTH] = params_depth + 1;
-		tmp_r = tre_ast_new_literal(mem, PARAMETER, 0, -1);
-		if (!tmp_r)
-		  return REG_ESPACE;
-		old_params = tre_mem_alloc(mem, sizeof(*old_params)
-					   * TRE_PARAM_LAST);
-		if (!old_params)
-		  return REG_ESPACE;
-		for (i = 0; i < TRE_PARAM_LAST; i++)
-		  old_params[i] = params[i];
-		((tre_literal_t *)tmp_r->obj)->u.params = old_params;
-		old_params[TRE_PARAM_DEPTH] = params_depth;
-		/* XXX - this is the only place where ast_new_node is
-		   needed -- should be moved inside AST module. */
-		node_copy = tre_ast_new_node(mem, ITERATION,
-					     sizeof(tre_iteration_t));
-		if (!node_copy)
-		  return REG_ESPACE;
-		node_copy->obj = node->obj;
-		tmp_node = tre_ast_new_catenation(mem, tmp_l, node_copy);
-		if (!tmp_node)
-		  return REG_ESPACE;
-		tmp_node = tre_ast_new_catenation(mem, tmp_node, tmp_r);
-		if (!tmp_node)
-		  return REG_ESPACE;
-		/* Replace the contents of `node' with `tmp_node'. */
-		memcpy(node, tmp_node, sizeof(*node));
-		node->obj = tmp_node->obj;
-		node->type = tmp_node->type;
-		params_depth++;
-		if (params_depth > *max_depth)
-		  *max_depth = params_depth;
-	      }
-	    break;
-	  }
-	default:
-	  assert(0);
-	  break;
-	}
-    }
-
-  *position += pos_add_total;
-
-  /* `max_pos' should never be larger than `*position' if the above
-     code works, but just an extra safeguard let's make sure
-     `*position' is set large enough so enough memory will be
-     allocated for the transition table. */
-  if (max_pos > *position)
-    *position = max_pos;
-
-#ifdef TRE_DEBUG
-  DPRINT(("Expanded AST:\n"));
-  tre_ast_print(ast);
-  DPRINT(("*position %d, max_pos %d\n", *position, max_pos));
-#endif
-
-  return status;
-}
-
-static tre_pos_and_tags_t *
-tre_set_empty(tre_mem_t mem)
-{
-  tre_pos_and_tags_t *new_set;
-
-  new_set = tre_mem_calloc(mem, sizeof(*new_set));
-  if (new_set == NULL)
-    return NULL;
-
-  new_set[0].position = -1;
-  new_set[0].code_min = -1;
-  new_set[0].code_max = -1;
-
-  return new_set;
-}
-
-static tre_pos_and_tags_t *
-tre_set_one(tre_mem_t mem, int position, int code_min, int code_max,
-	    tre_ctype_t class, tre_ctype_t *neg_classes, int backref)
-{
-  tre_pos_and_tags_t *new_set;
-
-  new_set = tre_mem_calloc(mem, sizeof(*new_set) * 2);
-  if (new_set == NULL)
-    return NULL;
-
-  new_set[0].position = position;
-  new_set[0].code_min = code_min;
-  new_set[0].code_max = code_max;
-  new_set[0].class = class;
-  new_set[0].neg_classes = neg_classes;
-  new_set[0].backref = backref;
-  new_set[1].position = -1;
-  new_set[1].code_min = -1;
-  new_set[1].code_max = -1;
-
-  return new_set;
-}
-
-static tre_pos_and_tags_t *
-tre_set_union(tre_mem_t mem, tre_pos_and_tags_t *set1, tre_pos_and_tags_t *set2,
-	      int *tags, int assertions, int *params)
-{
-  int s1, s2, i, j;
-  tre_pos_and_tags_t *new_set;
-  int *new_tags;
-  int num_tags;
-
-  for (num_tags = 0; tags != NULL && tags[num_tags] >= 0; num_tags++);
-  for (s1 = 0; set1[s1].position >= 0; s1++);
-  for (s2 = 0; set2[s2].position >= 0; s2++);
-  new_set = tre_mem_calloc(mem, sizeof(*new_set) * (s1 + s2 + 1));
-  if (!new_set )
-    return NULL;
-
-  for (s1 = 0; set1[s1].position >= 0; s1++)
-    {
-      new_set[s1].position = set1[s1].position;
-      new_set[s1].code_min = set1[s1].code_min;
-      new_set[s1].code_max = set1[s1].code_max;
-      new_set[s1].assertions = set1[s1].assertions | assertions;
-      new_set[s1].class = set1[s1].class;
-      new_set[s1].neg_classes = set1[s1].neg_classes;
-      new_set[s1].backref = set1[s1].backref;
-      if (set1[s1].tags == NULL && tags == NULL)
-	new_set[s1].tags = NULL;
-      else
-	{
-	  for (i = 0; set1[s1].tags != NULL && set1[s1].tags[i] >= 0; i++);
-	  new_tags = tre_mem_alloc(mem, (sizeof(*new_tags)
-					 * (i + num_tags + 1)));
-	  if (new_tags == NULL)
-	    return NULL;
-	  for (j = 0; j < i; j++)
-	    new_tags[j] = set1[s1].tags[j];
-	  for (i = 0; i < num_tags; i++)
-	    new_tags[j + i] = tags[i];
-	  new_tags[j + i] = -1;
-	  new_set[s1].tags = new_tags;
-	}
-      if (set1[s1].params)
-	new_set[s1].params = set1[s1].params;
-      if (params)
-	{
-	  if (!new_set[s1].params)
-	    new_set[s1].params = params;
-	  else
-	    {
-	      new_set[s1].params = tre_mem_alloc(mem, sizeof(*params) *
-						 TRE_PARAM_LAST);
-	      if (!new_set[s1].params)
-		return NULL;
-	      for (i = 0; i < TRE_PARAM_LAST; i++)
-		if (params[i] != TRE_PARAM_UNSET)
-		  new_set[s1].params[i] = params[i];
-	    }
-	}
-    }
-
-  for (s2 = 0; set2[s2].position >= 0; s2++)
-    {
-      new_set[s1 + s2].position = set2[s2].position;
-      new_set[s1 + s2].code_min = set2[s2].code_min;
-      new_set[s1 + s2].code_max = set2[s2].code_max;
-      /* XXX - why not | assertions here as well? */
-      new_set[s1 + s2].assertions = set2[s2].assertions;
-      new_set[s1 + s2].class = set2[s2].class;
-      new_set[s1 + s2].neg_classes = set2[s2].neg_classes;
-      new_set[s1 + s2].backref = set2[s2].backref;
-      if (set2[s2].tags == NULL)
-	new_set[s1 + s2].tags = NULL;
-      else
-	{
-	  for (i = 0; set2[s2].tags[i] >= 0; i++);
-	  new_tags = tre_mem_alloc(mem, sizeof(*new_tags) * (i + 1));
-	  if (new_tags == NULL)
-	    return NULL;
-	  for (j = 0; j < i; j++)
-	    new_tags[j] = set2[s2].tags[j];
-	  new_tags[j] = -1;
-	  new_set[s1 + s2].tags = new_tags;
-	}
-      if (set2[s2].params)
-	new_set[s1 + s2].params = set2[s2].params;
-      if (params)
-	{
-	  if (!new_set[s1 + s2].params)
-	    new_set[s1 + s2].params = params;
-	  else
-	    {
-	      new_set[s1 + s2].params = tre_mem_alloc(mem, sizeof(*params) *
-						      TRE_PARAM_LAST);
-	      if (!new_set[s1 + s2].params)
-		return NULL;
-	      for (i = 0; i < TRE_PARAM_LAST; i++)
-		if (params[i] != TRE_PARAM_UNSET)
-		  new_set[s1 + s2].params[i] = params[i];
-	    }
-	}
-    }
-  new_set[s1 + s2].position = -1;
-  return new_set;
-}
-
-/* Finds the empty path through `node' which is the one that should be
-   taken according to POSIX.2 rules, and adds the tags on that path to
-   `tags'.   `tags' may be NULL.  If `num_tags_seen' is not NULL, it is
-   set to the number of tags seen on the path. */
-static reg_errcode_t
-tre_match_empty(tre_stack_t *stack, tre_ast_node_t *node, int *tags,
-		int *assertions, int *params, int *num_tags_seen,
-		int *params_seen)
-{
-  tre_literal_t *lit;
-  tre_union_t *uni;
-  tre_catenation_t *cat;
-  tre_iteration_t *iter;
-  int i;
-  int bottom = tre_stack_num_objects(stack);
-  reg_errcode_t status = REG_OK;
-  if (num_tags_seen)
-    *num_tags_seen = 0;
-  if (params_seen)
-    *params_seen = 0;
-
-  status = tre_stack_push_voidptr(stack, node);
-
-  /* Walk through the tree recursively. */
-  while (status == REG_OK && tre_stack_num_objects(stack) > bottom)
-    {
-      node = tre_stack_pop_voidptr(stack);
-
-      switch (node->type)
-	{
-	case LITERAL:
-	  lit = (tre_literal_t *)node->obj;
-	  switch (lit->code_min)
-	    {
-	    case TAG:
-	      if (lit->code_max >= 0)
-		{
-		  if (tags != NULL)
-		    {
-		      /* Add the tag to `tags'. */
-		      for (i = 0; tags[i] >= 0; i++)
-			if (tags[i] == lit->code_max)
-			  break;
-		      if (tags[i] < 0)
-			{
-			  tags[i] = lit->code_max;
-			  tags[i + 1] = -1;
-			}
-		    }
-		  if (num_tags_seen)
-		    (*num_tags_seen)++;
-		}
-	      break;
-	    case ASSERTION:
-	      assert(lit->code_max >= 1
-		     || lit->code_max <= ASSERT_LAST);
-	      if (assertions != NULL)
-		*assertions |= lit->code_max;
-	      break;
-	    case PARAMETER:
-	      if (params != NULL)
-		for (i = 0; i < TRE_PARAM_LAST; i++)
-		  params[i] = lit->u.params[i];
-	      if (params_seen != NULL)
-		*params_seen = 1;
-	      break;
-	    case EMPTY:
-	      break;
-	    default:
-	      assert(0);
-	      break;
-	    }
-	  break;
-
-	case UNION:
-	  /* Subexpressions starting earlier take priority over ones
-	     starting later, so we prefer the left subexpression over the
-	     right subexpression. */
-	  uni = (tre_union_t *)node->obj;
-	  if (uni->left->nullable)
-	    STACK_PUSHX(stack, voidptr, uni->left)
-	  else if (uni->right->nullable)
-	    STACK_PUSHX(stack, voidptr, uni->right)
-	  else
-	    assert(0);
-	  break;
-
-	case CATENATION:
-	  /* The path must go through both children. */
-	  cat = (tre_catenation_t *)node->obj;
-	  assert(cat->left->nullable);
-	  assert(cat->right->nullable);
-	  STACK_PUSHX(stack, voidptr, cat->left);
-	  STACK_PUSHX(stack, voidptr, cat->right);
-	  break;
-
-	case ITERATION:
-	  /* A match with an empty string is preferred over no match at
-	     all, so we go through the argument if possible. */
-	  iter = (tre_iteration_t *)node->obj;
-	  if (iter->arg->nullable)
-	    STACK_PUSHX(stack, voidptr, iter->arg);
-	  break;
-
-	default:
-	  assert(0);
-	  break;
-	}
-    }
-
-  return status;
-}
-
-
-typedef enum {
-  NFL_RECURSE,
-  NFL_POST_UNION,
-  NFL_POST_CATENATION,
-  NFL_POST_ITERATION
-} tre_nfl_stack_symbol_t;
-
-
-/* Computes and fills in the fields `nullable', `firstpos', and `lastpos' for
-   the nodes of the AST `tree'. */
-static reg_errcode_t
-tre_compute_nfl(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree)
-{
-  int bottom = tre_stack_num_objects(stack);
-
-  STACK_PUSHR(stack, voidptr, tree);
-  STACK_PUSHR(stack, int, NFL_RECURSE);
-
-  while (tre_stack_num_objects(stack) > bottom)
-    {
-      tre_nfl_stack_symbol_t symbol;
-      tre_ast_node_t *node;
-
-      symbol = (tre_nfl_stack_symbol_t)tre_stack_pop_int(stack);
-      node = tre_stack_pop_voidptr(stack);
-      switch (symbol)
-	{
-	case NFL_RECURSE:
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit = (tre_literal_t *)node->obj;
-		if (IS_BACKREF(lit))
-		  {
-		    /* Back references: nullable = false, firstpos = {i},
-		       lastpos = {i}. */
-		    node->nullable = 0;
-		    node->firstpos = tre_set_one(mem, lit->position, 0,
-					     TRE_CHAR_MAX, 0, NULL, -1);
-		    if (!node->firstpos)
-		      return REG_ESPACE;
-		    node->lastpos = tre_set_one(mem, lit->position, 0,
-						TRE_CHAR_MAX, 0, NULL,
-						(int)lit->code_max);
-		    if (!node->lastpos)
-		      return REG_ESPACE;
-		  }
-		else if (lit->code_min < 0)
-		  {
-		    /* Tags, empty strings, params, and zero width assertions:
-		       nullable = true, firstpos = {}, and lastpos = {}. */
-		    node->nullable = 1;
-		    node->firstpos = tre_set_empty(mem);
-		    if (!node->firstpos)
-		      return REG_ESPACE;
-		    node->lastpos = tre_set_empty(mem);
-		    if (!node->lastpos)
-		      return REG_ESPACE;
-		  }
-		else
-		  {
-		    /* Literal at position i: nullable = false, firstpos = {i},
-		       lastpos = {i}. */
-		    node->nullable = 0;
-		    node->firstpos =
-		      tre_set_one(mem, lit->position, (int)lit->code_min,
-				  (int)lit->code_max, 0, NULL, -1);
-		    if (!node->firstpos)
-		      return REG_ESPACE;
-		    node->lastpos = tre_set_one(mem, lit->position,
-						(int)lit->code_min,
-						(int)lit->code_max,
-						lit->u.class, lit->neg_classes,
-						-1);
-		    if (!node->lastpos)
-		      return REG_ESPACE;
-		  }
-		break;
-	      }
-
-	    case UNION:
-	      /* Compute the attributes for the two subtrees, and after that
-		 for this node. */
-	      STACK_PUSHR(stack, voidptr, node);
-	      STACK_PUSHR(stack, int, NFL_POST_UNION);
-	      STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->right);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->left);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      break;
-
-	    case CATENATION:
-	      /* Compute the attributes for the two subtrees, and after that
-		 for this node. */
-	      STACK_PUSHR(stack, voidptr, node);
-	      STACK_PUSHR(stack, int, NFL_POST_CATENATION);
-	      STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->right);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->left);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      break;
-
-	    case ITERATION:
-	      /* Compute the attributes for the subtree, and after that for
-		 this node. */
-	      STACK_PUSHR(stack, voidptr, node);
-	      STACK_PUSHR(stack, int, NFL_POST_ITERATION);
-	      STACK_PUSHR(stack, voidptr, ((tre_iteration_t *)node->obj)->arg);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      break;
-	    }
-	  break; /* end case: NFL_RECURSE */
-
-	case NFL_POST_UNION:
-	  {
-	    tre_union_t *uni = (tre_union_t *)node->obj;
-	    node->nullable = uni->left->nullable || uni->right->nullable;
-	    node->firstpos = tre_set_union(mem, uni->left->firstpos,
-					   uni->right->firstpos, NULL, 0, NULL);
-	    if (!node->firstpos)
-	      return REG_ESPACE;
-	    node->lastpos = tre_set_union(mem, uni->left->lastpos,
-					  uni->right->lastpos, NULL, 0, NULL);
-	    if (!node->lastpos)
-	      return REG_ESPACE;
-	    break;
-	  }
-
-	case NFL_POST_ITERATION:
-	  {
-	    tre_iteration_t *iter = (tre_iteration_t *)node->obj;
-
-	    if (iter->min == 0 || iter->arg->nullable)
-	      node->nullable = 1;
-	    else
-	      node->nullable = 0;
-	    node->firstpos = iter->arg->firstpos;
-	    node->lastpos = iter->arg->lastpos;
-	    break;
-	  }
-
-	case NFL_POST_CATENATION:
-	  {
-	    int num_tags, *tags, assertions, params_seen;
-	    int *params;
-	    reg_errcode_t status;
-	    tre_catenation_t *cat = node->obj;
-	    node->nullable = cat->left->nullable && cat->right->nullable;
-
-	    /* Compute firstpos. */
-	    if (cat->left->nullable)
-	      {
-		/* The left side matches the empty string.  Make a first pass
-		   with tre_match_empty() to get the number of tags and
-		   parameters. */
-		status = tre_match_empty(stack, cat->left,
-					 NULL, NULL, NULL, &num_tags,
-					 &params_seen);
-		if (status != REG_OK)
-		  return status;
-		/* Allocate arrays for the tags and parameters. */
-		tags = xmalloc(sizeof(*tags) * (num_tags + 1));
-		if (!tags)
-		  return REG_ESPACE;
-		tags[0] = -1;
-		assertions = 0;
-		params = NULL;
-		if (params_seen)
-		  {
-		    params = tre_mem_alloc(mem, sizeof(*params)
-					   * TRE_PARAM_LAST);
-		    if (!params)
-		      {
-			xfree(tags);
-			return REG_ESPACE;
-		      }
-		  }
-		/* Second pass with tre_mach_empty() to get the list of
-		   tags and parameters. */
-		status = tre_match_empty(stack, cat->left, tags,
-					 &assertions, params, NULL, NULL);
-		if (status != REG_OK)
-		  {
-		    xfree(tags);
-		    return status;
-		  }
-		node->firstpos =
-		  tre_set_union(mem, cat->right->firstpos, cat->left->firstpos,
-				tags, assertions, params);
-		xfree(tags);
-		if (!node->firstpos)
-		  return REG_ESPACE;
-	      }
-	    else
-	      {
-		node->firstpos = cat->left->firstpos;
-	      }
-
-	    /* Compute lastpos. */
-	    if (cat->right->nullable)
-	      {
-		/* The right side matches the empty string.  Make a first pass
-		   with tre_match_empty() to get the number of tags and
-		   parameters. */
-		status = tre_match_empty(stack, cat->right,
-					 NULL, NULL, NULL, &num_tags,
-					 &params_seen);
-		if (status != REG_OK)
-		  return status;
-		/* Allocate arrays for the tags and parameters. */
-		tags = xmalloc(sizeof(int) * (num_tags + 1));
-		if (!tags)
-		  return REG_ESPACE;
-		tags[0] = -1;
-		assertions = 0;
-		params = NULL;
-		if (params_seen)
-		  {
-		    params = tre_mem_alloc(mem, sizeof(*params)
-					   * TRE_PARAM_LAST);
-		    if (!params)
-		      {
-			xfree(tags);
-			return REG_ESPACE;
-		      }
-		  }
-		/* Second pass with tre_mach_empty() to get the list of
-		   tags and parameters. */
-		status = tre_match_empty(stack, cat->right, tags,
-					 &assertions, params, NULL, NULL);
-		if (status != REG_OK)
-		  {
-		    xfree(tags);
-		    return status;
-		  }
-		node->lastpos =
-		  tre_set_union(mem, cat->left->lastpos, cat->right->lastpos,
-				tags, assertions, params);
-		xfree(tags);
-		if (!node->lastpos)
-		  return REG_ESPACE;
-	      }
-	    else
-	      {
-		node->lastpos = cat->right->lastpos;
-	      }
-	    break;
-	  }
-
-	default:
-	  assert(0);
-	  break;
-	}
-    }
-
-  return REG_OK;
-}
-
-
-/* Adds a transition from each position in `p1' to each position in `p2'. */
-static reg_errcode_t
-tre_make_trans(tre_pos_and_tags_t *p1, tre_pos_and_tags_t *p2,
-	       tre_tnfa_transition_t *transitions,
-	       int *counts, int *offs)
-{
-  tre_pos_and_tags_t *orig_p2 = p2;
-  tre_tnfa_transition_t *trans;
-  int i, j, k, l, dup, prev_p2_pos;
-
-  if (transitions != NULL)
-    while (p1->position >= 0)
-      {
-	p2 = orig_p2;
-	prev_p2_pos = -1;
-	while (p2->position >= 0)
-	  {
-	    /* Optimization: if this position was already handled, skip it. */
-	    if (p2->position == prev_p2_pos)
-	      {
-		p2++;
-		continue;
-	      }
-	    prev_p2_pos = p2->position;
-	    /* Set `trans' to point to the next unused transition from
-	       position `p1->position'. */
-	    trans = transitions + offs[p1->position];
-	    while (trans->state != NULL)
-	      {
-#if 0
-		/* If we find a previous transition from `p1->position' to
-		   `p2->position', it is overwritten.  This can happen only
-		   if there are nested loops in the regexp, like in "((a)*)*".
-		   In POSIX.2 repetition using the outer loop is always
-		   preferred over using the inner loop.	 Therefore the
-		   transition for the inner loop is useless and can be thrown
-		   away. */
-		/* XXX - The same position is used for all nodes in a bracket
-		   expression, so this optimization cannot be used (it will
-		   break bracket expressions) unless I figure out a way to
-		   detect it here. */
-		if (trans->state_id == p2->position)
-		  {
-		    DPRINT(("*"));
-		    break;
-		  }
-#endif
-		trans++;
-	      }
-
-	    if (trans->state == NULL)
-	      (trans + 1)->state = NULL;
-	    /* Use the character ranges, assertions, etc. from `p1' for
-	       the transition from `p1' to `p2'. */
-	    trans->code_min = p1->code_min;
-	    trans->code_max = p1->code_max;
-	    trans->state = transitions + offs[p2->position];
-	    trans->state_id = p2->position;
-	    trans->assertions = p1->assertions | p2->assertions
-	      | (p1->class ? ASSERT_CHAR_CLASS : 0)
-	      | (p1->neg_classes != NULL ? ASSERT_CHAR_CLASS_NEG : 0);
-	    if (p1->backref >= 0)
-	      {
-		assert((trans->assertions & ASSERT_CHAR_CLASS) == 0);
-		assert(p2->backref < 0);
-		trans->u.backref = p1->backref;
-		trans->assertions |= ASSERT_BACKREF;
-	      }
-	    else
-	      trans->u.class = p1->class;
-	    if (p1->neg_classes != NULL)
-	      {
-		for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++);
-		trans->neg_classes =
-		  xmalloc(sizeof(*trans->neg_classes) * (i + 1));
-		if (trans->neg_classes == NULL)
-		  return REG_ESPACE;
-		for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++)
-		  trans->neg_classes[i] = p1->neg_classes[i];
-		trans->neg_classes[i] = (tre_ctype_t)0;
-	      }
-	    else
-	      trans->neg_classes = NULL;
-
-	    /* Find out how many tags this transition has. */
-	    i = 0;
-	    if (p1->tags != NULL)
-	      while(p1->tags[i] >= 0)
-		i++;
-	    j = 0;
-	    if (p2->tags != NULL)
-	      while(p2->tags[j] >= 0)
-		j++;
-
-	    /* If we are overwriting a transition, free the old tag array. */
-	    if (trans->tags != NULL)
-	      xfree(trans->tags);
-	    trans->tags = NULL;
-
-	    /* If there were any tags, allocate an array and fill it. */
-	    if (i + j > 0)
-	      {
-		trans->tags = xmalloc(sizeof(*trans->tags) * (i + j + 1));
-		if (!trans->tags)
-		  return REG_ESPACE;
-		i = 0;
-		if (p1->tags != NULL)
-		  while(p1->tags[i] >= 0)
-		    {
-		      trans->tags[i] = p1->tags[i];
-		      i++;
-		    }
-		l = i;
-		j = 0;
-		if (p2->tags != NULL)
-		  while (p2->tags[j] >= 0)
-		    {
-		      /* Don't add duplicates. */
-		      dup = 0;
-		      for (k = 0; k < i; k++)
-			if (trans->tags[k] == p2->tags[j])
-			  {
-			    dup = 1;
-			    break;
-			  }
-		      if (!dup)
-			trans->tags[l++] = p2->tags[j];
-		      j++;
-		    }
-		trans->tags[l] = -1;
-	      }
-
-	    /* Set the parameter array.	 If both `p2' and `p1' have same
-	       parameters, the values in `p2' override those in `p1'. */
-	    if (p1->params || p2->params)
-	      {
-		if (!trans->params)
-		  trans->params = xmalloc(sizeof(*trans->params)
-					  * TRE_PARAM_LAST);
-		if (!trans->params)
-		  return REG_ESPACE;
-		for (i = 0; i < TRE_PARAM_LAST; i++)
-		  {
-		    trans->params[i] = TRE_PARAM_UNSET;
-		    if (p1->params && p1->params[i] != TRE_PARAM_UNSET)
-		      trans->params[i] = p1->params[i];
-		    if (p2->params && p2->params[i] != TRE_PARAM_UNSET)
-		      trans->params[i] = p2->params[i];
-		  }
-	      }
-	    else
-	      {
-		if (trans->params)
-		  xfree(trans->params);
-		trans->params = NULL;
-	      }
-
-
-#ifdef TRE_DEBUG
-	    {
-	      int *tags;
-
-	      DPRINT(("	 %2d -> %2d on %3d", p1->position, p2->position,
-		      p1->code_min));
-	      if (p1->code_max != p1->code_min)
-		DPRINT(("-%3d", p1->code_max));
-	      tags = trans->tags;
-	      if (tags)
-		{
-		  DPRINT((", tags ["));
-		  while (*tags >= 0)
-		    {
-		      DPRINT(("%d", *tags));
-		      tags++;
-		      if (*tags >= 0)
-			DPRINT((","));
-		    }
-		  DPRINT(("]"));
-		}
-	      if (trans->assertions)
-		DPRINT((", assert %d", trans->assertions));
-	      if (trans->assertions & ASSERT_BACKREF)
-		DPRINT((", backref %d", trans->u.backref));
-	      else if (trans->u.class)
-		DPRINT((", class %ld", (long)trans->u.class));
-	      if (trans->neg_classes)
-		DPRINT((", neg_classes %p", trans->neg_classes));
-	      if (trans->params)
-		{
-		  DPRINT((", "));
-		  tre_print_params(trans->params);
-		}
-	      DPRINT(("\n"));
-	    }
-#endif /* TRE_DEBUG */
-	    p2++;
-	  }
-	p1++;
-      }
-  else
-    /* Compute a maximum limit for the number of transitions leaving
-       from each state. */
-    while (p1->position >= 0)
-      {
-	p2 = orig_p2;
-	while (p2->position >= 0)
-	  {
-	    counts[p1->position]++;
-	    p2++;
-	  }
-	p1++;
-      }
-  return REG_OK;
-}
-
-/* Converts the syntax tree to a TNFA.	All the transitions in the TNFA are
-   labelled with one character range (there are no transitions on empty
-   strings).  The TNFA takes O(n^2) space in the worst case, `n' is size of
-   the regexp. */
-static reg_errcode_t
-tre_ast_to_tnfa(tre_ast_node_t *node, tre_tnfa_transition_t *transitions,
-		int *counts, int *offs)
-{
-  tre_union_t *uni;
-  tre_catenation_t *cat;
-  tre_iteration_t *iter;
-  reg_errcode_t errcode = REG_OK;
-
-  /* XXX - recurse using a stack!. */
-  switch (node->type)
-    {
-    case LITERAL:
-      break;
-    case UNION:
-      uni = (tre_union_t *)node->obj;
-      errcode = tre_ast_to_tnfa(uni->left, transitions, counts, offs);
-      if (errcode != REG_OK)
-	return errcode;
-      errcode = tre_ast_to_tnfa(uni->right, transitions, counts, offs);
-      break;
-
-    case CATENATION:
-      cat = (tre_catenation_t *)node->obj;
-      /* Add a transition from each position in cat->left->lastpos
-	 to each position in cat->right->firstpos. */
-      errcode = tre_make_trans(cat->left->lastpos, cat->right->firstpos,
-			       transitions, counts, offs);
-      if (errcode != REG_OK)
-	return errcode;
-      errcode = tre_ast_to_tnfa(cat->left, transitions, counts, offs);
-      if (errcode != REG_OK)
-	return errcode;
-      errcode = tre_ast_to_tnfa(cat->right, transitions, counts, offs);
-      break;
-
-    case ITERATION:
-      iter = (tre_iteration_t *)node->obj;
-      assert(iter->max == -1 || iter->max == 1);
-
-      if (iter->max == -1)
-	{
-	  assert(iter->min == 0 || iter->min == 1);
-	  /* Add a transition from each last position in the iterated
-	     expression to each first position. */
-	  errcode = tre_make_trans(iter->arg->lastpos, iter->arg->firstpos,
-				   transitions, counts, offs);
-	  if (errcode != REG_OK)
-	    return errcode;
-	}
-      errcode = tre_ast_to_tnfa(iter->arg, transitions, counts, offs);
-      break;
-    }
-  return errcode;
-}
-
-
-#define ERROR_EXIT(err)		  \
-  do				  \
-    {				  \
-      errcode = err;		  \
-      if (/*CONSTCOND*/1)	  \
-      	goto error_exit;	  \
-    }				  \
- while (/*CONSTCOND*/0)
-
-
-int
-tre_compile(regex_t *preg, const tre_char_t *regex, size_t n, int cflags)
-{
-  tre_stack_t *stack;
-  tre_ast_node_t *tree, *tmp_ast_l, *tmp_ast_r;
-  tre_pos_and_tags_t *p;
-  int *counts = NULL, *offs = NULL;
-  int i, add = 0;
-  tre_tnfa_transition_t *transitions, *initial;
-  tre_tnfa_t *tnfa = NULL;
-  tre_submatch_data_t *submatch_data;
-  tre_tag_direction_t *tag_directions = NULL;
-  reg_errcode_t errcode;
-  tre_mem_t mem;
-
-  /* Parse context. */
-  tre_parse_ctx_t parse_ctx;
-
-  /* Allocate a stack used throughout the compilation process for various
-     purposes. */
-  stack = tre_stack_new(512, 10240, 128);
-  if (!stack)
-    return REG_ESPACE;
-  /* Allocate a fast memory allocator. */
-  mem = tre_mem_new();
-  if (!mem)
-    {
-      tre_stack_destroy(stack);
-      return REG_ESPACE;
-    }
-
-  /* Parse the regexp. */
-  memset(&parse_ctx, 0, sizeof(parse_ctx));
-  parse_ctx.mem = mem;
-  parse_ctx.stack = stack;
-  parse_ctx.re = regex;
-  parse_ctx.len = n;
-  parse_ctx.cflags = cflags;
-  parse_ctx.max_backref = -1;
-  DPRINT(("tre_compile: parsing '%.*" STRF "'\n", (int)n, regex));
-  errcode = tre_parse(&parse_ctx);
-  if (errcode != REG_OK)
-    ERROR_EXIT(errcode);
-  preg->re_nsub = parse_ctx.submatch_id - 1;
-  tree = parse_ctx.result;
-
-  /* Back references and approximate matching cannot currently be used
-     in the same regexp. */
-  if (parse_ctx.max_backref >= 0 && parse_ctx.have_approx)
-    ERROR_EXIT(REG_BADPAT);
-
-#ifdef TRE_DEBUG
-  tre_ast_print(tree);
-#endif /* TRE_DEBUG */
-
-  /* Referring to nonexistent subexpressions is illegal. */
-  if (parse_ctx.max_backref > (int)preg->re_nsub)
-    ERROR_EXIT(REG_ESUBREG);
-
-  /* Allocate the TNFA struct. */
-  tnfa = xcalloc(1, sizeof(tre_tnfa_t));
-  if (tnfa == NULL)
-    ERROR_EXIT(REG_ESPACE);
-  tnfa->have_backrefs = parse_ctx.max_backref >= 0;
-  tnfa->have_approx = parse_ctx.have_approx;
-  tnfa->num_submatches = parse_ctx.submatch_id;
-
-  /* Set up tags for submatch addressing.  If REG_NOSUB is set and the
-     regexp does not have back references, this can be skipped. */
-  if (tnfa->have_backrefs || !(cflags & REG_NOSUB))
-    {
-      DPRINT(("tre_compile: setting up tags\n"));
-
-      /* Figure out how many tags we will need. */
-      errcode = tre_add_tags(NULL, stack, tree, tnfa);
-      if (errcode != REG_OK)
-	ERROR_EXIT(errcode);
-#ifdef TRE_DEBUG
-      tre_ast_print(tree);
-#endif /* TRE_DEBUG */
-
-      if (tnfa->num_tags > 0)
-	{
-	  tag_directions = xmalloc(sizeof(*tag_directions)
-				   * (tnfa->num_tags + 1));
-	  if (tag_directions == NULL)
-	    ERROR_EXIT(REG_ESPACE);
-	  tnfa->tag_directions = tag_directions;
-	  memset(tag_directions, -1,
-		 sizeof(*tag_directions) * (tnfa->num_tags + 1));
-	}
-      tnfa->minimal_tags = xcalloc((unsigned)tnfa->num_tags * 2 + 1,
-				   sizeof(tnfa->minimal_tags));
-      if (tnfa->minimal_tags == NULL)
-	ERROR_EXIT(REG_ESPACE);
-
-      submatch_data = xcalloc((unsigned)parse_ctx.submatch_id,
-			      sizeof(*submatch_data));
-      if (submatch_data == NULL)
-	ERROR_EXIT(REG_ESPACE);
-      tnfa->submatch_data = submatch_data;
-
-      errcode = tre_add_tags(mem, stack, tree, tnfa);
-      if (errcode != REG_OK)
-	ERROR_EXIT(errcode);
-
-#ifdef TRE_DEBUG
-      for (i = 0; i < parse_ctx.submatch_id; i++)
-	DPRINT(("pmatch[%d] = {t%d, t%d}\n",
-		i, submatch_data[i].so_tag, submatch_data[i].eo_tag));
-      for (i = 0; i < tnfa->num_tags; i++)
-	DPRINT(("t%d is %s\n", i,
-		tag_directions[i] == TRE_TAG_MINIMIZE ?
-		"minimized" : "maximized"));
-#endif /* TRE_DEBUG */
-    }
-
-  /* Expand iteration nodes. */
-  errcode = tre_expand_ast(mem, stack, tree, &parse_ctx.position,
-			   tag_directions, &tnfa->params_depth);
-  if (errcode != REG_OK)
-    ERROR_EXIT(errcode);
-
-  /* Add a dummy node for the final state.
-     XXX - For certain patterns this dummy node can be optimized away,
-	   for example "a*" or "ab*".	Figure out a simple way to detect
-	   this possibility. */
-  tmp_ast_l = tree;
-  tmp_ast_r = tre_ast_new_literal(mem, 0, 0, parse_ctx.position++);
-  if (tmp_ast_r == NULL)
-    ERROR_EXIT(REG_ESPACE);
-
-  tree = tre_ast_new_catenation(mem, tmp_ast_l, tmp_ast_r);
-  if (tree == NULL)
-    ERROR_EXIT(REG_ESPACE);
-
-#ifdef TRE_DEBUG
-  tre_ast_print(tree);
-  DPRINT(("Number of states: %d\n", parse_ctx.position));
-#endif /* TRE_DEBUG */
-
-  errcode = tre_compute_nfl(mem, stack, tree);
-  if (errcode != REG_OK)
-    ERROR_EXIT(errcode);
-
-  counts = xmalloc(sizeof(int) * parse_ctx.position);
-  if (counts == NULL)
-    ERROR_EXIT(REG_ESPACE);
-
-  offs = xmalloc(sizeof(int) * parse_ctx.position);
-  if (offs == NULL)
-    ERROR_EXIT(REG_ESPACE);
-
-  for (i = 0; i < parse_ctx.position; i++)
-    counts[i] = 0;
-  tre_ast_to_tnfa(tree, NULL, counts, NULL);
-
-  add = 0;
-  for (i = 0; i < parse_ctx.position; i++)
-    {
-      offs[i] = add;
-      add += counts[i] + 1;
-      counts[i] = 0;
-    }
-  transitions = xcalloc((unsigned)add + 1, sizeof(*transitions));
-  if (transitions == NULL)
-    ERROR_EXIT(REG_ESPACE);
-  tnfa->transitions = transitions;
-  tnfa->num_transitions = add;
-
-  DPRINT(("Converting to TNFA:\n"));
-  errcode = tre_ast_to_tnfa(tree, transitions, counts, offs);
-  if (errcode != REG_OK)
-    ERROR_EXIT(errcode);
-
-  /* If in eight bit mode, compute a table of characters that can be the
-     first character of a match. */
-  tnfa->first_char = -1;
-  if (TRE_MB_CUR_MAX == 1 && !tmp_ast_l->nullable)
-    {
-      int count = 0;
-      tre_cint_t k;
-      DPRINT(("Characters that can start a match:"));
-      tnfa->firstpos_chars = xcalloc(256, sizeof(char));
-      if (tnfa->firstpos_chars == NULL)
-	ERROR_EXIT(REG_ESPACE);
-      for (p = tree->firstpos; p->position >= 0; p++)
-	{
-	  tre_tnfa_transition_t *j = transitions + offs[p->position];
-	  while (j->state != NULL)
-	    {
-	      for (k = j->code_min; k <= j->code_max && k < 256; k++)
-		{
-		  DPRINT((" %d", k));
-		  tnfa->firstpos_chars[k] = 1;
-		  count++;
-		}
-	      j++;
-	    }
-	}
-      DPRINT(("\n"));
-#define TRE_OPTIMIZE_FIRST_CHAR 1
-#if TRE_OPTIMIZE_FIRST_CHAR
-      if (count == 1)
-	{
-	  for (k = 0; k < 256; k++)
-	    if (tnfa->firstpos_chars[k])
-	      {
-		DPRINT(("first char must be %d\n", k));
-		tnfa->first_char = k;
-		xfree(tnfa->firstpos_chars);
-		tnfa->firstpos_chars = NULL;
-		break;
-	      }
-	}
-#endif
-
-    }
-  else
-    tnfa->firstpos_chars = NULL;
-
-
-  p = tree->firstpos;
-  i = 0;
-  while (p->position >= 0)
-    {
-      i++;
-
-#ifdef TRE_DEBUG
-      {
-	int *tags;
-	DPRINT(("initial: %d", p->position));
-	tags = p->tags;
-	if (tags != NULL)
-	  {
-	    if (*tags >= 0)
-	      DPRINT(("/"));
-	    while (*tags >= 0)
-	      {
-		DPRINT(("%d", *tags));
-		tags++;
-		if (*tags >= 0)
-		  DPRINT((","));
-	      }
-	  }
-	DPRINT((", assert %d", p->assertions));
-	if (p->params)
-	  {
-	    DPRINT((", "));
-	    tre_print_params(p->params);
-	  }
-	DPRINT(("\n"));
-      }
-#endif /* TRE_DEBUG */
-
-      p++;
-    }
-
-  initial = xcalloc((unsigned)i + 1, sizeof(tre_tnfa_transition_t));
-  if (initial == NULL)
-    ERROR_EXIT(REG_ESPACE);
-  tnfa->initial = initial;
-
-  i = 0;
-  for (p = tree->firstpos; p->position >= 0; p++)
-    {
-      initial[i].state = transitions + offs[p->position];
-      initial[i].state_id = p->position;
-      initial[i].tags = NULL;
-      /* Copy the arrays p->tags, and p->params, they are allocated
-	 from a tre_mem object. */
-      if (p->tags)
-	{
-	  int j;
-	  for (j = 0; p->tags[j] >= 0; j++);
-	  initial[i].tags = xmalloc(sizeof(*p->tags) * (j + 1));
-	  if (!initial[i].tags)
-	    ERROR_EXIT(REG_ESPACE);
-	  memcpy(initial[i].tags, p->tags, sizeof(*p->tags) * (j + 1));
-	}
-      initial[i].params = NULL;
-      if (p->params)
-	{
-	  initial[i].params = xmalloc(sizeof(*p->params) * TRE_PARAM_LAST);
-	  if (!initial[i].params)
-	    ERROR_EXIT(REG_ESPACE);
-	  memcpy(initial[i].params, p->params,
-		 sizeof(*p->params) * TRE_PARAM_LAST);
-	}
-      initial[i].assertions = p->assertions;
-      i++;
-    }
-  initial[i].state = NULL;
-
-  tnfa->num_transitions = add;
-  tnfa->final = transitions + offs[tree->lastpos[0].position];
-  tnfa->num_states = parse_ctx.position;
-  tnfa->cflags = cflags;
-
-  DPRINT(("final state %p\n", (void *)tnfa->final));
-
-  tre_mem_destroy(mem);
-  tre_stack_destroy(stack);
-  xfree(counts);
-  xfree(offs);
-
-  preg->TRE_REGEX_T_FIELD = (void *)tnfa;
-  return REG_OK;
-
- error_exit:
-  /* Free everything that was allocated and return the error code. */
-  tre_mem_destroy(mem);
-  if (stack != NULL)
-    tre_stack_destroy(stack);
-  if (counts != NULL)
-    xfree(counts);
-  if (offs != NULL)
-    xfree(offs);
-  preg->TRE_REGEX_T_FIELD = (void *)tnfa;
-  tre_free(preg);
-  return errcode;
-}
-
-
-
-
-void
-tre_free(regex_t *preg)
-{
-  tre_tnfa_t *tnfa;
-  unsigned int i;
-  tre_tnfa_transition_t *trans;
-
-  tnfa = (void *)preg->TRE_REGEX_T_FIELD;
-  if (!tnfa)
-    return;
-
-  for (i = 0; i < tnfa->num_transitions; i++)
-    if (tnfa->transitions[i].state)
-      {
-	if (tnfa->transitions[i].tags)
-	  xfree(tnfa->transitions[i].tags);
-	if (tnfa->transitions[i].neg_classes)
-	  xfree(tnfa->transitions[i].neg_classes);
-	if (tnfa->transitions[i].params)
-	  xfree(tnfa->transitions[i].params);
-      }
-  if (tnfa->transitions)
-    xfree(tnfa->transitions);
-
-  if (tnfa->initial)
-    {
-      for (trans = tnfa->initial; trans->state; trans++)
-	{
-	  if (trans->tags)
-	    xfree(trans->tags);
-	  if (trans->params)
-	    xfree(trans->params);
-	}
-      xfree(tnfa->initial);
-    }
-
-  if (tnfa->submatch_data)
-    {
-      for (i = 0; i < tnfa->num_submatches; i++)
-	if (tnfa->submatch_data[i].parents)
-	  xfree(tnfa->submatch_data[i].parents);
-      xfree(tnfa->submatch_data);
-    }
-
-  if (tnfa->tag_directions)
-    xfree(tnfa->tag_directions);
-  if (tnfa->firstpos_chars)
-    xfree(tnfa->firstpos_chars);
-  if (tnfa->minimal_tags)
-    xfree(tnfa->minimal_tags);
-  xfree(tnfa);
-}
-
-char *
-tre_version(void)
-{
-  static char str[256];
-  char *version;
-
-  if (str[0] == 0)
-    {
-      (void) tre_config(TRE_CONFIG_VERSION, &version);
-      (void) snprintf(str, sizeof(str), "TRE %s (BSD)", version);
-    }
-  return str;
-}
-
-int
-tre_config(int query, void *result)
-{
-  int *int_result = result;
-  const char **string_result = result;
-
-  switch (query)
-    {
-    case TRE_CONFIG_APPROX:
-#ifdef TRE_APPROX
-      *int_result = 1;
-#else /* !TRE_APPROX */
-      *int_result = 0;
-#endif /* !TRE_APPROX */
-      return REG_OK;
-
-    case TRE_CONFIG_WCHAR:
-#ifdef TRE_WCHAR
-      *int_result = 1;
-#else /* !TRE_WCHAR */
-      *int_result = 0;
-#endif /* !TRE_WCHAR */
-      return REG_OK;
-
-    case TRE_CONFIG_MULTIBYTE:
-#ifdef TRE_MULTIBYTE
-      *int_result = 1;
-#else /* !TRE_MULTIBYTE */
-      *int_result = 0;
-#endif /* !TRE_MULTIBYTE */
-      return REG_OK;
-
-    case TRE_CONFIG_SYSTEM_ABI:
-#ifdef TRE_CONFIG_SYSTEM_ABI
-      *int_result = 1;
-#else /* !TRE_CONFIG_SYSTEM_ABI */
-      *int_result = 0;
-#endif /* !TRE_CONFIG_SYSTEM_ABI */
-      return REG_OK;
-
-    case TRE_CONFIG_VERSION:
-      *string_result = TRE_VERSION;
-      return REG_OK;
-    }
-
-  return REG_NOMATCH;
-}
-
-
-/* EOF */
-/*
-  tre-match-approx.c - TRE approximate regex matching engine
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-/* AIX requires this to be the first thing in the file.	 */
-#ifdef TRE_USE_ALLOCA
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-#  include <alloca.h>
-# else
-#  ifdef _AIX
- #pragma alloca
-#  else
-#   ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#   endif
-#  endif
-# endif
-#endif
-#endif /* TRE_USE_ALLOCA */
-
-#define __USE_STRING_INLINES
-#undef __NO_INLINE__
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-#ifdef HAVE_WCTYPE_H
-#include <wctype.h>
-#endif /* HAVE_WCTYPE_H */
-#ifndef TRE_WCHAR
-#include <ctype.h>
-#endif /* !TRE_WCHAR */
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif /* HAVE_MALLOC_H */
-
-/*
-  tre-match-utils.h - TRE matcher helper definitions
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#define str_source ((const tre_str_source*)string)
-
-#ifdef TRE_WCHAR
-
-#ifdef TRE_MULTIBYTE
-
-/* Wide character and multibyte support. */
-
-#define GET_NEXT_WCHAR()						      \
-  do {									      \
-    prev_c = next_c;							      \
-    if (type == STR_BYTE)						      \
-      {									      \
-	pos++;								      \
-	if (len >= 0 && pos >= len)					      \
-	  next_c = '\0';						      \
-	else								      \
-	  next_c = (unsigned char)(*str_byte++);			      \
-      }									      \
-    else if (type == STR_WIDE)						      \
-      {									      \
-	pos++;								      \
-	if (len >= 0 && pos >= len)					      \
-	  next_c = L'\0';						      \
-	else								      \
-	  next_c = *str_wide++;						      \
-      }									      \
-    else if (type == STR_MBS)						      \
-      {									      \
-        pos += pos_add_next;					      	      \
-	if (str_byte == NULL)						      \
-	  next_c = L'\0';						      \
-	else								      \
-	  {								      \
-	    size_t w;							      \
-	    int max;							      \
-	    if (len >= 0)						      \
-	      max = len - pos;						      \
-	    else							      \
-	      max = 32;							      \
-	    if (max <= 0)						      \
-	      {								      \
-		next_c = L'\0';						      \
-		pos_add_next = 1;					      \
-	      }								      \
-	    else							      \
-	      {								      \
-		w = tre_mbrtowc(&next_c, str_byte, (size_t)max, &mbstate);    \
-		if (w == (size_t)-1 || w == (size_t)-2)			      \
-		  return REG_NOMATCH;					      \
-		if (w == 0 && len >= 0)					      \
-		  {							      \
-		    pos_add_next = 1;					      \
-		    next_c = 0;						      \
-		    str_byte++;						      \
-		  }							      \
-		else							      \
-		  {							      \
-		    pos_add_next = w;					      \
-		    str_byte += w;					      \
-		  }							      \
-	      }								      \
-	  }								      \
-      }									      \
-    else if (type == STR_USER)						      \
-      {									      \
-        pos += pos_add_next;					      	      \
-	str_user_end = str_source->get_next_char(&next_c, &pos_add_next,      \
-                                                 str_source->context);	      \
-      }									      \
-  } while(/*CONSTCOND*/0)
-
-#else /* !TRE_MULTIBYTE */
-
-/* Wide character support, no multibyte support. */
-
-#define GET_NEXT_WCHAR()						      \
-  do {									      \
-    prev_c = next_c;							      \
-    if (type == STR_BYTE)						      \
-      {									      \
-	pos++;								      \
-	if (len >= 0 && pos >= len)					      \
-	  next_c = '\0';						      \
-	else								      \
-	  next_c = (unsigned char)(*str_byte++);			      \
-      }									      \
-    else if (type == STR_WIDE)						      \
-      {									      \
-	pos++;								      \
-	if (len >= 0 && pos >= len)					      \
-	  next_c = L'\0';						      \
-	else								      \
-	  next_c = *str_wide++;						      \
-      }									      \
-    else if (type == STR_USER)						      \
-      {									      \
-        pos += pos_add_next;					      	      \
-	str_user_end = str_source->get_next_char(&next_c, &pos_add_next,      \
-                                                 str_source->context);	      \
-      }									      \
-  } while(/*CONSTCOND*/0)
-
-#endif /* !TRE_MULTIBYTE */
-
-#else /* !TRE_WCHAR */
-
-/* No wide character or multibyte support. */
-
-#define GET_NEXT_WCHAR()						      \
-  do {									      \
-    prev_c = next_c;							      \
-    if (type == STR_BYTE)						      \
-      {									      \
-	pos++;								      \
-	if (len >= 0 && pos >= len)					      \
-	  next_c = '\0';						      \
-	else								      \
-	  next_c = (unsigned char)(*str_byte++);			      \
-      }									      \
-    else if (type == STR_USER)						      \
-      {									      \
-	pos += pos_add_next;						      \
-	str_user_end = str_source->get_next_char(&next_c, &pos_add_next,      \
-						 str_source->context);	      \
-      }									      \
-  } while(/*CONSTCOND*/0)
-
-#endif /* !TRE_WCHAR */
-
-
-
-#define IS_WORD_CHAR(c)	 ((c) == L'_' || tre_isalnum(c))
-
-#define CHECK_ASSERTIONS(assertions)					      \
-  (((assertions & ASSERT_AT_BOL)					      \
-    && (pos > 0 || reg_notbol)						      \
-    && (prev_c != L'\n' || !reg_newline))				      \
-   || ((assertions & ASSERT_AT_EOL)					      \
-       && (next_c != L'\0' || reg_noteol)				      \
-       && (next_c != L'\n' || !reg_newline))				      \
-   || ((assertions & ASSERT_AT_BOW)					      \
-       && (IS_WORD_CHAR(prev_c) || !IS_WORD_CHAR(next_c)))	              \
-   || ((assertions & ASSERT_AT_EOW)					      \
-       && (!IS_WORD_CHAR(prev_c) || IS_WORD_CHAR(next_c)))		      \
-   || ((assertions & ASSERT_AT_WB)					      \
-       && (pos != 0 && next_c != L'\0'					      \
-	   && IS_WORD_CHAR(prev_c) == IS_WORD_CHAR(next_c)))		      \
-   || ((assertions & ASSERT_AT_WB_NEG)					      \
-       && (pos == 0 || next_c == L'\0'					      \
-	   || IS_WORD_CHAR(prev_c) != IS_WORD_CHAR(next_c))))
-
-#define CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)                             \
-  (((trans_i->assertions & ASSERT_CHAR_CLASS)                                 \
-       && !(tnfa->cflags & REG_ICASE)                                         \
-       && !tre_isctype((tre_cint_t)prev_c, trans_i->u.class))                 \
-    || ((trans_i->assertions & ASSERT_CHAR_CLASS)                             \
-        && (tnfa->cflags & REG_ICASE)                                         \
-        && !tre_isctype(tre_tolower((tre_cint_t)prev_c),trans_i->u.class)     \
-	&& !tre_isctype(tre_toupper((tre_cint_t)prev_c),trans_i->u.class))    \
-    || ((trans_i->assertions & ASSERT_CHAR_CLASS_NEG)                         \
-        && tre_neg_char_classes_match(trans_i->neg_classes,(tre_cint_t)prev_c,\
-                                      tnfa->cflags & REG_ICASE)))
-
-
-
-
-/* Returns 1 if `t1' wins `t2', 0 otherwise. */
-inline static int
-tre_tag_order(int num_tags, tre_tag_direction_t *tag_directions,
-	      int *t1, int *t2)
-{
-  int i;
-  for (i = 0; i < num_tags; i++)
-    {
-      if (tag_directions[i] == TRE_TAG_MINIMIZE)
-	{
-	  if (t1[i] < t2[i])
-	    return 1;
-	  if (t1[i] > t2[i])
-	    return 0;
-	}
-      else
-	{
-	  if (t1[i] > t2[i])
-	    return 1;
-	  if (t1[i] < t2[i])
-	    return 0;
-	}
-    }
-  /*  assert(0);*/
-  return 0;
-}
-
-inline static int
-tre_neg_char_classes_match(tre_ctype_t *classes, tre_cint_t wc, int icase)
-{
-  DPRINT(("neg_char_classes_test: %p, %d, %d\n", classes, wc, icase));
-  while (*classes != (tre_ctype_t)0)
-    if ((!icase && tre_isctype(wc, *classes))
-	|| (icase && (tre_isctype(tre_toupper(wc), *classes)
-		      || tre_isctype(tre_tolower(wc), *classes))))
-      return 1; /* Match. */
-    else
-      classes++;
-  return 0; /* No match. */
-}
-
-#define TRE_M_COST	0
-#define TRE_M_NUM_INS	1
-#define TRE_M_NUM_DEL	2
-#define TRE_M_NUM_SUBST 3
-#define TRE_M_NUM_ERR	4
-#define TRE_M_LAST	5
-
-#define TRE_M_MAX_DEPTH 3
-
-typedef struct {
-  /* State in the TNFA transition table. */
-  tre_tnfa_transition_t *state;
-  /* Position in input string. */
-  int pos;
-  /* Tag values. */
-  int *tags;
-  /* Matching parameters. */
-  regaparams_t params;
-  /* Nesting depth of parameters.  This is used as an index in
-     the `costs' array. */
-  int depth;
-  /* Costs and counter values for different parameter nesting depths. */
-  int costs[TRE_M_MAX_DEPTH + 1][TRE_M_LAST];
-} tre_tnfa_approx_reach_t;
-
-
-#ifdef TRE_DEBUG
-/* Prints the `reach' array in a readable fashion with DPRINT. */
-static void
-tre_print_reach(const tre_tnfa_t *tnfa, tre_tnfa_approx_reach_t *reach,
-		int pos, int num_tags)
-{
-  int id;
-
-  /* Print each state on one line. */
-  DPRINT(("  reach:\n"));
-  for (id = 0; id < tnfa->num_states; id++)
-    {
-      int i, j;
-      if (reach[id].pos < pos)
-	continue;  /* Not reached. */
-      DPRINT(("	 %03d, costs ", id));
-      for (i = 0; i <= reach[id].depth; i++)
-	{
-	  DPRINT(("["));
-	  for (j = 0; j < TRE_M_LAST; j++)
-	    {
-	      DPRINT(("%2d", reach[id].costs[i][j]));
-	      if (j + 1 < TRE_M_LAST)
-		DPRINT((","));
-	    }
-	  DPRINT(("]"));
-	  if (i + 1 <= reach[id].depth)
-	    DPRINT((", "));
-	}
-      DPRINT(("\n	tags "));
-      for (i = 0; i < num_tags; i++)
-	{
-	  DPRINT(("%02d", reach[id].tags[i]));
-	  if (i + 1 < num_tags)
-	    DPRINT((","));
-	}
-      DPRINT(("\n"));
-    }
-  DPRINT(("\n"));
-}
-#endif /* TRE_DEBUG */
-
-
-/* Sets the matching parameters in `reach' to the ones defined in the `pa'
-   array.  If `pa' specifies default values, they are taken from
-   `default_params'. */
-inline static void
-tre_set_params(tre_tnfa_approx_reach_t *reach,
-	       int *pa, regaparams_t default_params)
-{
-  int value;
-
-  /* If depth is increased reset costs and counters to zero for the
-     new levels. */
-  value = pa[TRE_PARAM_DEPTH];
-  assert(value <= TRE_M_MAX_DEPTH);
-  if (value > reach->depth)
-    {
-      int i, j;
-      for (i = reach->depth + 1; i <= value; i++)
-	for (j = 0; j < TRE_M_LAST; j++)
-	  reach->costs[i][j] = 0;
-    }
-  reach->depth = value;
-
-  /* Set insert cost. */
-  value = pa[TRE_PARAM_COST_INS];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.cost_ins = default_params.cost_ins;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.cost_ins = value;
-
-  /* Set delete cost. */
-  value = pa[TRE_PARAM_COST_DEL];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.cost_del = default_params.cost_del;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.cost_del = value;
-
-  /* Set substitute cost. */
-  value = pa[TRE_PARAM_COST_SUBST];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.cost_subst = default_params.cost_subst;
-  else
-    reach->params.cost_subst = value;
-
-  /* Set maximum cost. */
-  value = pa[TRE_PARAM_COST_MAX];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.max_cost = default_params.max_cost;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.max_cost = value;
-
-  /* Set maximum inserts. */
-  value = pa[TRE_PARAM_MAX_INS];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.max_ins = default_params.max_ins;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.max_ins = value;
-
-  /* Set maximum deletes. */
-  value = pa[TRE_PARAM_MAX_DEL];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.max_del = default_params.max_del;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.max_del = value;
-
-  /* Set maximum substitutes. */
-  value = pa[TRE_PARAM_MAX_SUBST];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.max_subst = default_params.max_subst;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.max_subst = value;
-
-  /* Set maximum number of errors. */
-  value = pa[TRE_PARAM_MAX_ERR];
-  if (value == TRE_PARAM_DEFAULT)
-    reach->params.max_err = default_params.max_err;
-  else if (value != TRE_PARAM_UNSET)
-    reach->params.max_err = value;
-}
-
-reg_errcode_t
-tre_tnfa_run_approx(const tre_tnfa_t *tnfa, const void *string, int len,
-		    tre_str_type_t type, int *match_tags,
-		    regamatch_t *match, regaparams_t default_params,
-		    int eflags, int *match_end_ofs)
-{
-  /* State variables required by GET_NEXT_WCHAR. */
-  tre_char_t prev_c = 0, next_c = 0;
-  const char *str_byte = string;
-  int pos = -1;
-  unsigned int pos_add_next = 1;
-#ifdef TRE_WCHAR
-  const wchar_t *str_wide = string;
-#ifdef TRE_MBSTATE
-  mbstate_t mbstate;
-#endif /* !TRE_WCHAR */
-#endif /* TRE_WCHAR */
-  int reg_notbol = eflags & REG_NOTBOL;
-  int reg_noteol = eflags & REG_NOTEOL;
-  int reg_newline = tnfa->cflags & REG_NEWLINE;
-  int str_user_end = 0;
-
-  int prev_pos;
-
-  /* Number of tags. */
-  int num_tags;
-  /* The reach tables. */
-  tre_tnfa_approx_reach_t *reach, *reach_next;
-  /* Tag array for temporary use. */
-  int *tmp_tags;
-
-  /* End offset of best match so far, or -1 if no match found yet. */
-  int match_eo = -1;
-  /* Costs of the match. */
-  int match_costs[TRE_M_LAST];
-
-  /* Space for temporary data required for matching. */
-  unsigned char *buf;
-
-  int i, id;
-
-  if (!match_tags)
-    num_tags = 0;
-  else
-    num_tags = tnfa->num_tags;
-
-#ifdef TRE_MBSTATE
-  memset(&mbstate, '\0', sizeof(mbstate));
-#endif /* TRE_MBSTATE */
-
-  DPRINT(("tre_tnfa_run_approx, input type %d, len %d, eflags %d, "
-	  "match_tags %p\n",
-	  type, len, eflags,
-	  match_tags));
-  DPRINT(("max cost %d, ins %d, del %d, subst %d\n",
-	  default_params.max_cost,
-	  default_params.cost_ins,
-	  default_params.cost_del,
-	  default_params.cost_subst));
-
-  /* Allocate memory for temporary data required for matching.	This needs to
-     be done for every matching operation to be thread safe.  This allocates
-     everything in a single large block from the stack frame using alloca()
-     or with malloc() if alloca is unavailable. */
-  {
-    unsigned char *buf_cursor;
-    /* Space needed for one array of tags. */
-    int tag_bytes = sizeof(*tmp_tags) * num_tags;
-    /* Space needed for one reach table. */
-    int reach_bytes = sizeof(*reach_next) * tnfa->num_states;
-    /* Total space needed. */
-    int total_bytes = reach_bytes * 2 + (tnfa->num_states * 2 + 1 ) * tag_bytes;
-    /* Add some extra to make sure we can align the pointers.  The multiplier
-       used here must be equal to the number of ALIGN calls below. */
-    total_bytes += (sizeof(long) - 1) * 3;
-
-    /* Allocate the memory. */
-#ifdef TRE_USE_ALLOCA
-    buf = alloca(total_bytes);
-#else /* !TRE_USE_ALLOCA */
-    buf = xmalloc((unsigned)total_bytes);
-#endif /* !TRE_USE_ALLOCA */
-    if (!buf)
-      return REG_ESPACE;
-    memset(buf, 0, (size_t)total_bytes);
-
-    /* Allocate `tmp_tags' from `buf'. */
-    tmp_tags = (void *)buf;
-    buf_cursor = buf + tag_bytes;
-    buf_cursor += ALIGN(buf_cursor, long);
-
-    /* Allocate `reach' from `buf'. */
-    reach = (void *)buf_cursor;
-    buf_cursor += reach_bytes;
-    buf_cursor += ALIGN(buf_cursor, long);
-
-    /* Allocate `reach_next' from `buf'. */
-    reach_next = (void *)buf_cursor;
-    buf_cursor += reach_bytes;
-    buf_cursor += ALIGN(buf_cursor, long);
-
-    /* Allocate tag arrays for `reach' and `reach_next' from `buf'. */
-    for (i = 0; i < tnfa->num_states; i++)
-      {
-	reach[i].tags = (void *)buf_cursor;
-	buf_cursor += tag_bytes;
-	reach_next[i].tags = (void *)buf_cursor;
-	buf_cursor += tag_bytes;
-      }
-    assert(buf_cursor <= buf + total_bytes);
-  }
-
-  for (i = 0; i < TRE_M_LAST; i++)
-    match_costs[i] = INT_MAX;
-
-  /* Mark the reach arrays empty. */
-  for (i = 0; i < tnfa->num_states; i++)
-    reach[i].pos = reach_next[i].pos = -2;
-
-  prev_pos = pos;
-  GET_NEXT_WCHAR();
-  pos = 0;
-
-  while (/*CONSTCOND*/1)
-    {
-      DPRINT(("%03d:%2lc/%05d\n", pos, (tre_cint_t)next_c, (int)next_c));
-
-      /* Add initial states to `reach_next' if an exact match has not yet
-	 been found. */
-      if (match_costs[TRE_M_COST] > 0)
-	{
-	  tre_tnfa_transition_t *trans;
-	  DPRINT(("  init"));
-	  for (trans = tnfa->initial; trans->state; trans++)
-	    {
-	      int stateid = trans->state_id;
-
-	      /* If this state is not currently in `reach_next', add it
-		 there. */
-	      if (reach_next[stateid].pos < pos)
-		{
-		  if (trans->assertions && CHECK_ASSERTIONS(trans->assertions))
-		    {
-		      /* Assertions failed, don't add this state. */
-		      DPRINT((" !%d (assert)", stateid));
-		      continue;
-		    }
-		  DPRINT((" %d", stateid));
-		  reach_next[stateid].state = trans->state;
-		  reach_next[stateid].pos = pos;
-
-		  /* Compute tag values after this transition. */
-		  for (i = 0; i < num_tags; i++)
-		    reach_next[stateid].tags[i] = -1;
-
-		  if (trans->tags)
-		    for (i = 0; trans->tags[i] >= 0; i++)
-		      if (trans->tags[i] < num_tags)
-			reach_next[stateid].tags[trans->tags[i]] = pos;
-
-		  /* Set the parameters, depth, and costs. */
-		  reach_next[stateid].params = default_params;
-		  reach_next[stateid].depth = 0;
-		  for (i = 0; i < TRE_M_LAST; i++)
-		    reach_next[stateid].costs[0][i] = 0;
-		  if (trans->params)
-		    tre_set_params(&reach_next[stateid], trans->params,
-				   default_params);
-
-		  /* If this is the final state, mark the exact match. */
-		  if (trans->state == tnfa->final)
-		    {
-		      match_eo = pos;
-		      for (i = 0; i < num_tags; i++)
-			match_tags[i] = reach_next[stateid].tags[i];
-		      for (i = 0; i < TRE_M_LAST; i++)
-			match_costs[i] = 0;
-		    }
-		}
-	    }
-	    DPRINT(("\n"));
-	}
-
-
-      /* Handle inserts.  This is done by pretending there's an epsilon
-	 transition from each state in `reach' back to the same state.
-	 We don't need to worry about the final state here; this will never
-	 give a better match than what we already have. */
-      for (id = 0; id < tnfa->num_states; id++)
-	{
-	  int depth;
-	  int cost, cost0;
-
-	  if (reach[id].pos != prev_pos)
-	    {
-	      DPRINT(("	 insert: %d not reached\n", id));
-	      continue;	 /* Not reached. */
-	    }
-
-	  depth = reach[id].depth;
-
-	  /* Compute and check cost at current depth. */
-	  cost = reach[id].costs[depth][TRE_M_COST];
-	  if (reach[id].params.cost_ins != TRE_PARAM_UNSET)
-	    cost += reach[id].params.cost_ins;
-	  if (cost > reach[id].params.max_cost)
-	    continue;  /* Cost too large. */
-
-	  /* Check number of inserts at current depth. */
-	  if (reach[id].costs[depth][TRE_M_NUM_INS] + 1
-	      > reach[id].params.max_ins)
-	    continue;  /* Too many inserts. */
-
-	  /* Check total number of errors at current depth. */
-	  if (reach[id].costs[depth][TRE_M_NUM_ERR] + 1
-	      > reach[id].params.max_err)
-	    continue;  /* Too many errors. */
-
-	  /* Compute overall cost. */
-	  cost0 = cost;
-	  if (depth > 0)
-	    {
-	      cost0 = reach[id].costs[0][TRE_M_COST];
-	      if (reach[id].params.cost_ins != TRE_PARAM_UNSET)
-		cost0 += reach[id].params.cost_ins;
-	      else
-		cost0 += default_params.cost_ins;
-	    }
-
-	  DPRINT(("  insert: from %d to %d, cost %d: ", id, id,
-		  reach[id].costs[depth][TRE_M_COST]));
-	  if (reach_next[id].pos == pos
-	      && (cost0 >= reach_next[id].costs[0][TRE_M_COST]))
-	    {
-	      DPRINT(("lose\n"));
-	      continue;
-	    }
-	  DPRINT(("win\n"));
-
-	  /* Copy state, position, tags, parameters, and depth. */
-	  reach_next[id].state = reach[id].state;
-	  reach_next[id].pos = pos;
-	  for (i = 0; i < num_tags; i++)
-	    reach_next[id].tags[i] = reach[id].tags[i];
-	  reach_next[id].params = reach[id].params;
-	  reach_next[id].depth = reach[id].depth;
-
-	  /* Set the costs after this transition. */
-	  memcpy(reach_next[id].costs, reach[id].costs,
-		 sizeof(reach_next[id].costs[0][0])
-		 * TRE_M_LAST * (depth + 1));
-	  reach_next[id].costs[depth][TRE_M_COST] = cost;
-	  reach_next[id].costs[depth][TRE_M_NUM_INS]++;
-	  reach_next[id].costs[depth][TRE_M_NUM_ERR]++;
-	  if (depth > 0)
-	    {
-	      reach_next[id].costs[0][TRE_M_COST] = cost0;
-	      reach_next[id].costs[0][TRE_M_NUM_INS]++;
-	      reach_next[id].costs[0][TRE_M_NUM_ERR]++;
-	    }
-
-	}
-
-
-      /* Handle deletes.  This is done by traversing through the whole TNFA
-	 pretending that all transitions are epsilon transitions, until
-	 no more states can be reached with better costs. */
-      {
-	/* XXX - dynamic ringbuffer size */
-	tre_tnfa_approx_reach_t *ringbuffer[512];
-	tre_tnfa_approx_reach_t **deque_start, **deque_end;
-
-	deque_start = deque_end = ringbuffer;
-
-	/* Add all states in `reach_next' to the deque. */
-	for (id = 0; id < tnfa->num_states; id++)
-	  {
-	    if (reach_next[id].pos != pos)
-	      continue;
-	    *deque_end = &reach_next[id];
-	    deque_end++;
-	    assert(deque_end != deque_start);
-	  }
-
-	/* Repeat until the deque is empty. */
-	while (deque_end != deque_start)
-	  {
-	    tre_tnfa_approx_reach_t *reach_p;
-	    int depth;
-	    int cost, cost0;
-	    tre_tnfa_transition_t *trans;
-
-	    /* Pop the first item off the deque. */
-	    reach_p = *deque_start;
-	    id = reach_p - reach_next;
-	    depth = reach_p->depth;
-
-	    /* Compute cost at current depth. */
-	    cost = reach_p->costs[depth][TRE_M_COST];
-	    if (reach_p->params.cost_del != TRE_PARAM_UNSET)
-	      cost += reach_p->params.cost_del;
-
-	    /* Check cost, number of deletes, and total number of errors
-	       at current depth. */
-	    if (cost > reach_p->params.max_cost
-		|| (reach_p->costs[depth][TRE_M_NUM_DEL] + 1
-		    > reach_p->params.max_del)
-		|| (reach_p->costs[depth][TRE_M_NUM_ERR] + 1
-		    > reach_p->params.max_err))
-	      {
-		/* Too many errors or cost too large. */
-		DPRINT(("  delete: from %03d: cost too large\n", id));
-		deque_start++;
-		if (deque_start >= (ringbuffer + 512))
-		  deque_start = ringbuffer;
-		continue;
-	      }
-
-	    /* Compute overall cost. */
-	    cost0 = cost;
-	    if (depth > 0)
-	      {
-		cost0 = reach_p->costs[0][TRE_M_COST];
-		if (reach_p->params.cost_del != TRE_PARAM_UNSET)
-		  cost0 += reach_p->params.cost_del;
-		else
-		  cost0 += default_params.cost_del;
-	      }
-
-	    for (trans = reach_p->state; trans->state; trans++)
-	      {
-		int dest_id = trans->state_id;
-		DPRINT(("  delete: from %03d to %03d, cost %d (%d): ",
-			id, dest_id, cost0, reach_p->params.max_cost));
-
-		if (trans->assertions && CHECK_ASSERTIONS(trans->assertions))
-		  {
-		    DPRINT(("assertion failed\n"));
-		    continue;
-		  }
-
-		/* Compute tag values after this transition. */
-		for (i = 0; i < num_tags; i++)
-		  tmp_tags[i] = reach_p->tags[i];
-		if (trans->tags)
-		  for (i = 0; trans->tags[i] >= 0; i++)
-		    if (trans->tags[i] < num_tags)
-		      tmp_tags[trans->tags[i]] = pos;
-
-		/* If another path has also reached this state, choose the one
-		   with the smallest cost or best tags if costs are equal. */
-		if (reach_next[dest_id].pos == pos
-		    && (cost0 > reach_next[dest_id].costs[0][TRE_M_COST]
-			|| (cost0 == reach_next[dest_id].costs[0][TRE_M_COST]
-			    && (!match_tags
-				|| !tre_tag_order(num_tags,
-						  tnfa->tag_directions,
-						  tmp_tags,
-						  reach_next[dest_id].tags)))))
-		  {
-		    DPRINT(("lose, cost0 %d, have %d\n",
-			    cost0, reach_next[dest_id].costs[0][TRE_M_COST]));
-		    continue;
-		  }
-		DPRINT(("win\n"));
-
-		/* Set state, position, tags, parameters, depth, and costs. */
-		reach_next[dest_id].state = trans->state;
-		reach_next[dest_id].pos = pos;
-		for (i = 0; i < num_tags; i++)
-		  reach_next[dest_id].tags[i] = tmp_tags[i];
-
-		reach_next[dest_id].params = reach_p->params;
-		if (trans->params)
-		  tre_set_params(&reach_next[dest_id], trans->params,
-				 default_params);
-
-		reach_next[dest_id].depth = reach_p->depth;
-		memcpy(&reach_next[dest_id].costs,
-		       reach_p->costs,
-		       sizeof(reach_p->costs[0][0])
-		       * TRE_M_LAST * (depth + 1));
-		reach_next[dest_id].costs[depth][TRE_M_COST] = cost;
-		reach_next[dest_id].costs[depth][TRE_M_NUM_DEL]++;
-		reach_next[dest_id].costs[depth][TRE_M_NUM_ERR]++;
-		if (depth > 0)
-		  {
-		    reach_next[dest_id].costs[0][TRE_M_COST] = cost0;
-		    reach_next[dest_id].costs[0][TRE_M_NUM_DEL]++;
-		    reach_next[dest_id].costs[0][TRE_M_NUM_ERR]++;
-		  }
-
-		if (trans->state == tnfa->final
-		    && (match_eo < 0
-			|| match_costs[TRE_M_COST] > cost0
-			|| (match_costs[TRE_M_COST] == cost0
-			    && (num_tags > 0
-				&& tmp_tags[0] <= match_tags[0]))))
-		  {
-		    DPRINT(("	 setting new match at %d, cost %d\n",
-			    pos, cost0));
-		    match_eo = pos;
-		    memcpy(match_costs, reach_next[dest_id].costs[0],
-			   sizeof(match_costs[0]) * TRE_M_LAST);
-		    for (i = 0; i < num_tags; i++)
-		      match_tags[i] = tmp_tags[i];
-		  }
-
-		/* Add to the end of the deque. */
-		*deque_end = &reach_next[dest_id];
-		deque_end++;
-		if (deque_end >= (ringbuffer + 512))
-		  deque_end = ringbuffer;
-		assert(deque_end != deque_start);
-	      }
-	    deque_start++;
-	    if (deque_start >= (ringbuffer + 512))
-	      deque_start = ringbuffer;
-	  }
-
-      }
-
-#ifdef TRE_DEBUG
-      tre_print_reach(tnfa, reach_next, pos, num_tags);
-#endif /* TRE_DEBUG */
-
-      /* Check for end of string. */
-      if (len < 0)
-	{
-	  if (type == STR_USER)
-	    {
-	      if (str_user_end)
-		break;
-	    }
-	  else if (next_c == L'\0')
-	    break;
-	}
-      else
-	{
-	  if (pos >= len)
-	    break;
-	}
-
-      prev_pos = pos;
-      GET_NEXT_WCHAR();
-
-      /* Swap `reach' and `reach_next'. */
-      {
-	tre_tnfa_approx_reach_t *tmp;
-	tmp = reach;
-	reach = reach_next;
-	reach_next = tmp;
-      }
-
-      /* Handle exact matches and substitutions. */
-      for (id = 0; id < tnfa->num_states; id++)
-	{
-	  tre_tnfa_transition_t *trans;
-
-	  if (reach[id].pos < prev_pos)
-	    continue;  /* Not reached. */
-	  for (trans = reach[id].state; trans->state; trans++)
-	    {
-	      int dest_id;
-	      int depth;
-	      int cost, cost0, err;
-
-	      if (trans->assertions
-		  && (CHECK_ASSERTIONS(trans->assertions)
-		      || CHECK_CHAR_CLASSES(trans, tnfa, eflags)))
-		{
-		  DPRINT(("  exact,  from %d: assert failed\n", id));
-		  continue;
-		}
-
-	      depth = reach[id].depth;
-	      dest_id = trans->state_id;
-
-	      cost = reach[id].costs[depth][TRE_M_COST];
-	      cost0 = reach[id].costs[0][TRE_M_COST];
-	      err = 0;
-
-	      if (trans->code_min > (tre_cint_t)prev_c
-		  || trans->code_max < (tre_cint_t)prev_c)
-		{
-		  /* Handle substitutes.  The required character was not in
-		     the string, so match it in place of whatever was supposed
-		     to be there and increase costs accordingly. */
-		  err = 1;
-
-		  /* Compute and check cost at current depth. */
-		  cost = reach[id].costs[depth][TRE_M_COST];
-		  if (reach[id].params.cost_subst != TRE_PARAM_UNSET)
-		    cost += reach[id].params.cost_subst;
-		  if (cost > reach[id].params.max_cost)
-		    continue; /* Cost too large. */
-
-		  /* Check number of substitutes at current depth. */
-		  if (reach[id].costs[depth][TRE_M_NUM_SUBST] + 1
-		      > reach[id].params.max_subst)
-		    continue; /* Too many substitutes. */
-
-		  /* Check total number of errors at current depth. */
-		  if (reach[id].costs[depth][TRE_M_NUM_ERR] + 1
-		      > reach[id].params.max_err)
-		    continue; /* Too many errors. */
-
-		  /* Compute overall cost. */
-		  cost0 = cost;
-		  if (depth > 0)
-		    {
-		      cost0 = reach[id].costs[0][TRE_M_COST];
-		      if (reach[id].params.cost_subst != TRE_PARAM_UNSET)
-			cost0 += reach[id].params.cost_subst;
-		      else
-			cost0 += default_params.cost_subst;
-		    }
-		  DPRINT(("  subst,  from %03d to %03d, cost %d: ",
-			  id, dest_id, cost0));
-		}
-	      else
-		DPRINT(("  exact,  from %03d to %03d, cost %d: ",
-			id, dest_id, cost0));
-
-	      /* Compute tag values after this transition. */
-	      for (i = 0; i < num_tags; i++)
-		tmp_tags[i] = reach[id].tags[i];
-	      if (trans->tags)
-		for (i = 0; trans->tags[i] >= 0; i++)
-		  if (trans->tags[i] < num_tags)
-		    tmp_tags[trans->tags[i]] = pos;
-
-	      /* If another path has also reached this state, choose the
-		 one with the smallest cost or best tags if costs are equal. */
-	      if (reach_next[dest_id].pos == pos
-		  && (cost0 > reach_next[dest_id].costs[0][TRE_M_COST]
-		      || (cost0 == reach_next[dest_id].costs[0][TRE_M_COST]
-			  && !tre_tag_order(num_tags, tnfa->tag_directions,
-					    tmp_tags,
-					    reach_next[dest_id].tags))))
-		{
-		  DPRINT(("lose\n"));
-		  continue;
-		}
-	      DPRINT(("win %d %d\n",
-		      reach_next[dest_id].pos,
-		      reach_next[dest_id].costs[0][TRE_M_COST]));
-
-	      /* Set state, position, tags, and depth. */
-	      reach_next[dest_id].state = trans->state;
-	      reach_next[dest_id].pos = pos;
-	      for (i = 0; i < num_tags; i++)
-		reach_next[dest_id].tags[i] = tmp_tags[i];
-	      reach_next[dest_id].depth = reach[id].depth;
-
-	      /* Set parameters. */
-	      reach_next[dest_id].params = reach[id].params;
-	      if (trans->params)
-		tre_set_params(&reach_next[dest_id], trans->params,
-			       default_params);
-
-	      /* Set the costs after this transition. */
-		memcpy(&reach_next[dest_id].costs,
-		       reach[id].costs,
-		       sizeof(reach[id].costs[0][0])
-		       * TRE_M_LAST * (depth + 1));
-	      reach_next[dest_id].costs[depth][TRE_M_COST] = cost;
-	      reach_next[dest_id].costs[depth][TRE_M_NUM_SUBST] += err;
-	      reach_next[dest_id].costs[depth][TRE_M_NUM_ERR] += err;
-	      if (depth > 0)
-		{
-		  reach_next[dest_id].costs[0][TRE_M_COST] = cost0;
-		  reach_next[dest_id].costs[0][TRE_M_NUM_SUBST] += err;
-		  reach_next[dest_id].costs[0][TRE_M_NUM_ERR] += err;
-		}
-
-	      if (trans->state == tnfa->final
-		  && (match_eo < 0
-		      || cost0 < match_costs[TRE_M_COST]
-		      || (cost0 == match_costs[TRE_M_COST]
-			  && num_tags > 0 && tmp_tags[0] <= match_tags[0])))
-		{
-		  DPRINT(("    setting new match at %d, cost %d\n",
-			  pos, cost0));
-		  match_eo = pos;
-		  for (i = 0; i < TRE_M_LAST; i++)
-		    match_costs[i] = reach_next[dest_id].costs[0][i];
-		  for (i = 0; i < num_tags; i++)
-		    match_tags[i] = tmp_tags[i];
-		}
-	    }
-	}
-    }
-
-  DPRINT(("match end offset = %d, match cost = %d\n", match_eo,
-	  match_costs[TRE_M_COST]));
-
-#ifndef TRE_USE_ALLOCA
-  if (buf)
-    xfree(buf);
-#endif /* !TRE_USE_ALLOCA */
-
-  match->cost = match_costs[TRE_M_COST];
-  match->num_ins = match_costs[TRE_M_NUM_INS];
-  match->num_del = match_costs[TRE_M_NUM_DEL];
-  match->num_subst = match_costs[TRE_M_NUM_SUBST];
-  *match_end_ofs = match_eo;
-
-  return match_eo >= 0 ? REG_OK : REG_NOMATCH;
-}
-/*
-  tre-match-backtrack.c - TRE backtracking regex matching engine
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/*
-  This matcher is for regexps that use back referencing.  Regexp matching
-  with back referencing is an NP-complete problem on the number of back
-  references.  The easiest way to match them is to use a backtracking
-  routine which basically goes through all possible paths in the TNFA
-  and chooses the one which results in the best (leftmost and longest)
-  match.  This can be spectacularly expensive and may run out of stack
-  space, but there really is no better known generic algorithm.	 Quoting
-  Henry Spencer from comp.compilers:
-  <URL: http://compilers.iecc.com/comparch/article/93-03-102>
-
-    POSIX.2 REs require longest match, which is really exciting to
-    implement since the obsolete ("basic") variant also includes
-    \<digit>.  I haven't found a better way of tackling this than doing
-    a preliminary match using a DFA (or simulation) on a modified RE
-    that just replicates subREs for \<digit>, and then doing a
-    backtracking match to determine whether the subRE matches were
-    right.  This can be rather slow, but I console myself with the
-    thought that people who use \<digit> deserve very slow execution.
-    (Pun unintentional but very appropriate.)
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#ifdef TRE_USE_ALLOCA
-/* AIX requires this to be the first thing in the file.	 */
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-#  include <alloca.h>
-# else
-#  ifdef _AIX
- #pragma alloca
-#  else
-#   ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#   endif
-#  endif
-# endif
-#endif
-#endif /* TRE_USE_ALLOCA */
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-#ifdef HAVE_WCTYPE_H
-#include <wctype.h>
-#endif /* HAVE_WCTYPE_H */
-#ifndef TRE_WCHAR
-#include <ctype.h>
-#endif /* !TRE_WCHAR */
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif /* HAVE_MALLOC_H */
-
-
-typedef struct {
-  int pos;
-  const char *str_byte;
-#ifdef TRE_WCHAR
-  const wchar_t *str_wide;
-#endif /* TRE_WCHAR */
-  tre_tnfa_transition_t *state;
-  int state_id;
-  int next_c;
-  int *tags;
-#ifdef TRE_MBSTATE
-  mbstate_t mbstate;
-#endif /* TRE_MBSTATE */
-} tre_backtrack_item_t;
-
-typedef struct tre_backtrack_struct {
-  tre_backtrack_item_t item;
-  struct tre_backtrack_struct *prev;
-  struct tre_backtrack_struct *next;
-} *tre_backtrack_t;
-
-#ifdef TRE_WCHAR
-#define BT_STACK_WIDE_IN(_str_wide)	stack->item.str_wide = (_str_wide)
-#define BT_STACK_WIDE_OUT		(str_wide) = stack->item.str_wide
-#else /* !TRE_WCHAR */
-#define BT_STACK_WIDE_IN(_str_wide)
-#define BT_STACK_WIDE_OUT
-#endif /* !TRE_WCHAR */
-
-#ifdef TRE_MBSTATE
-#define BT_STACK_MBSTATE_IN  stack->item.mbstate = (mbstate)
-#define BT_STACK_MBSTATE_OUT (mbstate) = stack->item.mbstate
-#else /* !TRE_MBSTATE */
-#define BT_STACK_MBSTATE_IN
-#define BT_STACK_MBSTATE_OUT
-#endif /* !TRE_MBSTATE */
-
-
-#ifdef TRE_USE_ALLOCA
-#define tre_bt_mem_new		  tre_mem_newa
-#define tre_bt_mem_alloc	  tre_mem_alloca
-#define tre_bt_mem_destroy(obj)	  do { } while (0)
-#else /* !TRE_USE_ALLOCA */
-#define tre_bt_mem_new		  tre_mem_new
-#define tre_bt_mem_alloc	  tre_mem_alloc
-#define tre_bt_mem_destroy	  tre_mem_destroy
-#endif /* !TRE_USE_ALLOCA */
-
-
-#define BT_STACK_PUSH(_pos, _str_byte, _str_wide, _state, _state_id, _next_c, _tags, _mbstate) \
-  do									      \
-    {									      \
-      int i;								      \
-      if (!stack->next)							      \
-	{								      \
-	  tre_backtrack_t s;						      \
-	  s = tre_bt_mem_alloc(mem, sizeof(*s));			      \
-	  if (!s)							      \
-	    {								      \
-	      tre_bt_mem_destroy(mem);					      \
-	      if (tags)							      \
-		xfree(tags);						      \
-	      if (pmatch)						      \
-		xfree(pmatch);						      \
-	      if (states_seen)						      \
-		xfree(states_seen);					      \
-	      return REG_ESPACE;					      \
-	    }								      \
-	  s->prev = stack;						      \
-	  s->next = NULL;						      \
-	  s->item.tags = tre_bt_mem_alloc(mem,				      \
-					  sizeof(*tags) * tnfa->num_tags);    \
-	  if (!s->item.tags)						      \
-	    {								      \
-	      tre_bt_mem_destroy(mem);					      \
-	      if (tags)							      \
-		xfree(tags);						      \
-	      if (pmatch)						      \
-		xfree(pmatch);						      \
-	      if (states_seen)						      \
-		xfree(states_seen);					      \
-	      return REG_ESPACE;					      \
-	    }								      \
-	  stack->next = s;						      \
-	  stack = s;							      \
-	}								      \
-      else								      \
-	stack = stack->next;						      \
-      stack->item.pos = (_pos);						      \
-      stack->item.str_byte = (_str_byte);				      \
-      BT_STACK_WIDE_IN(_str_wide);					      \
-      stack->item.state = (_state);					      \
-      stack->item.state_id = (_state_id);				      \
-      stack->item.next_c = (_next_c);					      \
-      for (i = 0; i < tnfa->num_tags; i++)				      \
-	stack->item.tags[i] = (_tags)[i];				      \
-      BT_STACK_MBSTATE_IN;						      \
-    }									      \
-  while (/*CONSTCOND*/0)
-
-#define BT_STACK_POP()							      \
-  do									      \
-    {									      \
-      int i;								      \
-      assert(stack->prev);						      \
-      pos = stack->item.pos;						      \
-      if (type == STR_USER)                                                   \
-        str_source->rewind(pos + pos_add_next, str_source->context);          \
-      str_byte = stack->item.str_byte;					      \
-      BT_STACK_WIDE_OUT;						      \
-      state = stack->item.state;					      \
-      next_c = stack->item.next_c;					      \
-      for (i = 0; i < tnfa->num_tags; i++)				      \
-	tags[i] = stack->item.tags[i];					      \
-      BT_STACK_MBSTATE_OUT;						      \
-      stack = stack->prev;						      \
-    }									      \
-  while (/*CONSTCOND*/0)
-
-#undef MIN
-#define MIN(a, b) ((a) <= (b) ? (a) : (b))
-
-reg_errcode_t
-tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
-		       int len, tre_str_type_t type, int *match_tags,
-		       int eflags, int *match_end_ofs)
-{
-  /* State variables required by GET_NEXT_WCHAR. */
-  tre_char_t prev_c = 0, next_c = 0;
-  const char *str_byte = string;
-  int pos = 0;
-  unsigned int pos_add_next = 1;
-#ifdef TRE_WCHAR
-  const wchar_t *str_wide = string;
-#ifdef TRE_MBSTATE
-  mbstate_t mbstate;
-#endif /* TRE_MBSTATE */
-#endif /* TRE_WCHAR */
-  int reg_notbol = eflags & REG_NOTBOL;
-  int reg_noteol = eflags & REG_NOTEOL;
-  int reg_newline = tnfa->cflags & REG_NEWLINE;
-  int str_user_end = 0;
-
-  /* These are used to remember the necessary values of the above
-     variables to return to the position where the current search
-     started from. */
-  int next_c_start;
-  const char *str_byte_start;
-  int pos_start = -1;
-#ifdef TRE_WCHAR
-  const wchar_t *str_wide_start;
-#endif /* TRE_WCHAR */
-#ifdef TRE_MBSTATE
-  mbstate_t mbstate_start;
-#endif /* TRE_MBSTATE */
-
-  /* End offset of best match so far, or -1 if no match found yet. */
-  int match_eo = -1;
-  /* Tag arrays. */
-  int *next_tags, *tags = NULL;
-  /* Current TNFA state. */
-  tre_tnfa_transition_t *state;
-  int *states_seen = NULL;
-
-  /* Memory allocator to for allocating the backtracking stack. */
-  tre_mem_t mem = tre_bt_mem_new();
-
-  /* The backtracking stack. */
-  tre_backtrack_t stack;
-
-  tre_tnfa_transition_t *trans_i;
-  regmatch_t *pmatch = NULL;
-  int ret;
-
-#ifdef TRE_MBSTATE
-  memset(&mbstate, '\0', sizeof(mbstate));
-#endif /* TRE_MBSTATE */
-
-  if (!mem)
-    return REG_ESPACE;
-  stack = tre_bt_mem_alloc(mem, sizeof(*stack));
-  if (!stack)
-    {
-      ret = REG_ESPACE;
-      goto error_exit;
-    }
-  stack->prev = NULL;
-  stack->next = NULL;
-
-  DPRINT(("tnfa_execute_backtrack, input type %d\n", type));
-  DPRINT(("len = %d\n", len));
-
-#ifdef TRE_USE_ALLOCA
-  tags = alloca(sizeof(*tags) * tnfa->num_tags);
-  pmatch = alloca(sizeof(*pmatch) * tnfa->num_submatches);
-  states_seen = alloca(sizeof(*states_seen) * tnfa->num_states);
-#else /* !TRE_USE_ALLOCA */
-  if (tnfa->num_tags)
-    {
-      tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
-      if (!tags)
-	{
-	  ret = REG_ESPACE;
-	  goto error_exit;
-	}
-    }
-  if (tnfa->num_submatches)
-    {
-      pmatch = xmalloc(sizeof(*pmatch) * tnfa->num_submatches);
-      if (!pmatch)
-	{
-	  ret = REG_ESPACE;
-	  goto error_exit;
-	}
-    }
-  if (tnfa->num_states)
-    {
-      states_seen = xmalloc(sizeof(*states_seen) * tnfa->num_states);
-      if (!states_seen)
-	{
-	  ret = REG_ESPACE;
-	  goto error_exit;
-	}
-    }
-#endif /* !TRE_USE_ALLOCA */
-
- retry:
-  {
-    int i;
-    for (i = 0; i < tnfa->num_tags; i++)
-      {
-	tags[i] = -1;
-	if (match_tags)
-	  match_tags[i] = -1;
-      }
-    for (i = 0; i < tnfa->num_states; i++)
-      states_seen[i] = 0;
-  }
-
-  state = NULL;
-  pos = pos_start;
-  if (type == STR_USER)
-    str_source->rewind(pos + pos_add_next, str_source->context);
-  GET_NEXT_WCHAR();
-  pos_start = pos;
-  next_c_start = next_c;
-  str_byte_start = str_byte;
-#ifdef TRE_WCHAR
-  str_wide_start = str_wide;
-#endif /* TRE_WCHAR */
-#ifdef TRE_MBSTATE
-  mbstate_start = mbstate;
-#endif /* TRE_MBSTATE */
-
-  /* Handle initial states. */
-  next_tags = NULL;
-  for (trans_i = tnfa->initial; trans_i->state; trans_i++)
-    {
-      DPRINT(("> init %p, prev_c %lc\n", trans_i->state, (tre_cint_t)prev_c));
-      if (trans_i->assertions && CHECK_ASSERTIONS(trans_i->assertions))
-	{
-	  DPRINT(("assert failed\n"));
-	  continue;
-	}
-      if (state == NULL)
-	{
-	  /* Start from this state. */
-	  state = trans_i->state;
-	  next_tags = trans_i->tags;
-	}
-      else
-	{
-	  /* Backtrack to this state. */
-	  DPRINT(("saving state %d for backtracking\n", trans_i->state_id));
-	  BT_STACK_PUSH(pos, str_byte, str_wide, trans_i->state,
-			trans_i->state_id, next_c, tags, mbstate);
-	  {
-	    int *tmp = trans_i->tags;
-	    if (tmp)
-	      while (*tmp >= 0)
-		stack->item.tags[*tmp++] = pos;
-	  }
-	}
-    }
-
-  if (next_tags)
-    for (; *next_tags >= 0; next_tags++)
-      tags[*next_tags] = pos;
-
-
-  DPRINT(("entering match loop, pos %d, str_byte %p\n", pos, str_byte));
-  DPRINT(("pos:chr/code | state and tags\n"));
-  DPRINT(("-------------+------------------------------------------------\n"));
-
-  if (state == NULL)
-    goto backtrack;
-
-  while (/*CONSTCOND*/1)
-    {
-      tre_tnfa_transition_t *next_state;
-      int empty_br_match;
-
-      DPRINT(("start loop\n"));
-      if (state == tnfa->final)
-	{
-	  DPRINT(("  match found, %d %d\n", match_eo, pos));
-	  if (match_eo < pos
-	      || (match_eo == pos
-		  && match_tags
-		  && tre_tag_order(tnfa->num_tags, tnfa->tag_directions,
-				   tags, match_tags)))
-	    {
-	      int i;
-	      /* This match wins the previous match. */
-	      DPRINT(("	 win previous\n"));
-	      match_eo = pos;
-	      if (match_tags)
-		for (i = 0; i < tnfa->num_tags; i++)
-		  match_tags[i] = tags[i];
-	    }
-	  /* Our TNFAs never have transitions leaving from the final state,
-	     so we jump right to backtracking. */
-	  goto backtrack;
-	}
-
-#ifdef TRE_DEBUG
-      DPRINT(("%3d:%2lc/%05d | %p ", pos, (tre_cint_t)next_c, (int)next_c,
-	      state));
-      {
-	int i;
-	for (i = 0; i < tnfa->num_tags; i++)
-	  DPRINT(("%d%s", tags[i], i < tnfa->num_tags - 1 ? ", " : ""));
-	DPRINT(("\n"));
-      }
-#endif /* TRE_DEBUG */
-
-      /* Go to the next character in the input string. */
-      empty_br_match = 0;
-      trans_i = state;
-      if (trans_i->state && trans_i->assertions & ASSERT_BACKREF)
-	{
-	  /* This is a back reference state.  All transitions leaving from
-	     this state have the same back reference "assertion".  Instead
-	     of reading the next character, we match the back reference. */
-	  int so, eo, bt = trans_i->u.backref;
-	  int bt_len;
-	  int result;
-
-	  DPRINT(("  should match back reference %d\n", bt));
-	  /* Get the substring we need to match against.  Remember to
-	     turn off REG_NOSUB temporarily. */
-	  tre_fill_pmatch(bt + 1, pmatch, tnfa->cflags & /*LINTED*/!REG_NOSUB,
-			  tnfa, tags, pos);
-	  so = pmatch[bt].rm_so;
-	  eo = pmatch[bt].rm_eo;
-	  bt_len = eo - so;
-
-#ifdef TRE_DEBUG
-	  {
-	    int slen;
-	    if (len < 0)
-	      slen = bt_len;
-	    else
-	      slen = MIN(bt_len, len - pos);
-
-	    if (type == STR_BYTE)
-	      {
-		DPRINT(("  substring (len %d) is [%d, %d[: '%.*s'\n",
-			bt_len, so, eo, bt_len, (char*)string + so));
-		DPRINT(("  current string is '%.*s'\n", slen, str_byte - 1));
-	      }
-#ifdef TRE_WCHAR
-	    else if (type == STR_WIDE)
-	      {
-		DPRINT(("  substring (len %d) is [%d, %d[: '%.*" STRF "'\n",
-			bt_len, so, eo, bt_len, (wchar_t*)string + so));
-		DPRINT(("  current string is '%.*" STRF "'\n",
-			slen, str_wide - 1));
-	      }
-#endif /* TRE_WCHAR */
-	  }
-#endif
-
-	  if (len < 0)
-	    {
-	      if (type == STR_USER)
-		result = str_source->compare((unsigned)so, (unsigned)pos,
-					     (unsigned)bt_len,
-					     str_source->context);
-#ifdef TRE_WCHAR
-	      else if (type == STR_WIDE)
-		result = wcsncmp((const wchar_t*)string + so, str_wide - 1,
-				 (size_t)bt_len);
-#endif /* TRE_WCHAR */
-	      else
-		result = strncmp((const char*)string + so, str_byte - 1,
-				 (size_t)bt_len);
-	    }
-	  else if (len - pos < bt_len)
-	    result = 1;
-#ifdef TRE_WCHAR
-	  else if (type == STR_WIDE)
-	    result = wmemcmp((const wchar_t*)string + so, str_wide - 1,
-			     (size_t)bt_len);
-#endif /* TRE_WCHAR */
-	  else
-	    result = memcmp((const char*)string + so, str_byte - 1,
-			    (size_t)bt_len);
-
-	  if (result == 0)
-	    {
-	      /* Back reference matched.  Check for infinite loop. */
-	      if (bt_len == 0)
-		empty_br_match = 1;
-	      if (empty_br_match && states_seen[trans_i->state_id])
-		{
-		  DPRINT(("  avoid loop\n"));
-		  goto backtrack;
-		}
-
-	      states_seen[trans_i->state_id] = empty_br_match;
-
-	      /* Advance in input string and resync `prev_c', `next_c'
-		 and pos. */
-	      DPRINT(("	 back reference matched\n"));
-	      str_byte += bt_len - 1;
-#ifdef TRE_WCHAR
-	      str_wide += bt_len - 1;
-#endif /* TRE_WCHAR */
-	      pos += bt_len - 1;
-	      GET_NEXT_WCHAR();
-	      DPRINT(("	 pos now %d\n", pos));
-	    }
-	  else
-	    {
-	      DPRINT(("	 back reference did not match\n"));
-	      goto backtrack;
-	    }
-	}
-      else
-	{
-	  /* Check for end of string. */
-	  if (len < 0)
-	    {
-	      if (type == STR_USER)
-		{
-		  if (str_user_end)
-		    goto backtrack;
-		}
-	      else if (next_c == L'\0')
-		goto backtrack;
-	    }
-	  else
-	    {
-	      if (pos >= len)
-		goto backtrack;
-	    }
-
-	  /* Read the next character. */
-	  GET_NEXT_WCHAR();
-	}
-
-      next_state = NULL;
-      for (trans_i = state; trans_i->state; trans_i++)
-	{
-	  DPRINT(("  transition %d-%d (%c-%c) %d to %d\n",
-		  trans_i->code_min, trans_i->code_max,
-		  trans_i->code_min, trans_i->code_max,
-		  trans_i->assertions, trans_i->state_id));
-	  if (trans_i->code_min <= (tre_cint_t)prev_c
-	      && trans_i->code_max >= (tre_cint_t)prev_c)
-	    {
-	      if (trans_i->assertions
-		  && (CHECK_ASSERTIONS(trans_i->assertions)
-		      || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)))
-		{
-		  DPRINT(("  assertion failed\n"));
-		  continue;
-		}
-
-	      if (next_state == NULL)
-		{
-		  /* First matching transition. */
-		  DPRINT(("  Next state is %d\n", trans_i->state_id));
-		  next_state = trans_i->state;
-		  next_tags = trans_i->tags;
-		}
-	      else
-		{
-		  /* Second matching transition.  We may need to backtrack here
-		     to take this transition instead of the first one, so we
-		     push this transition in the backtracking stack so we can
-		     jump back here if needed. */
-		  DPRINT(("  saving state %d for backtracking\n",
-			  trans_i->state_id));
-		  BT_STACK_PUSH(pos, str_byte, str_wide, trans_i->state,
-				trans_i->state_id, next_c, tags, mbstate);
-		  {
-		    int *tmp;
-		    for (tmp = trans_i->tags; tmp && *tmp >= 0; tmp++)
-		      stack->item.tags[*tmp] = pos;
-		  }
-#if 0 /* XXX - it's important not to look at all transitions here to keep
-	 the stack small! */
-		  break;
-#endif
-		}
-	    }
-	}
-
-      if (next_state != NULL)
-	{
-	  /* Matching transitions were found.  Take the first one. */
-	  state = next_state;
-
-	  /* Update the tag values. */
-	  if (next_tags)
-	    while (*next_tags >= 0)
-	      tags[*next_tags++] = pos;
-	}
-      else
-	{
-	backtrack:
-	  /* A matching transition was not found.  Try to backtrack. */
-	  if (stack->prev)
-	    {
-	      DPRINT(("	 backtracking\n"));
-	      if (stack->item.state->assertions && ASSERT_BACKREF)
-		{
-		  DPRINT(("  states_seen[%d] = 0\n",
-			  stack->item.state_id));
-		  states_seen[stack->item.state_id] = 0;
-		}
-
-	      BT_STACK_POP();
-	    }
-	  else if (match_eo < 0)
-	    {
-	      /* Try starting from a later position in the input string. */
-	      /* Check for end of string. */
-	      if (len < 0)
-		{
-		  if (next_c == L'\0')
-		    {
-		      DPRINT(("end of string.\n"));
-		      break;
-		    }
-		}
-	      else
-		{
-		  if (pos >= len)
-		    {
-		      DPRINT(("end of string.\n"));
-		      break;
-		    }
-		}
-	      DPRINT(("restarting from next start position\n"));
-	      next_c = next_c_start;
-#ifdef TRE_MBSTATE
-	      mbstate = mbstate_start;
-#endif /* TRE_MBSTATE */
-	      str_byte = str_byte_start;
-#ifdef TRE_WCHAR
-	      str_wide = str_wide_start;
-#endif /* TRE_WCHAR */
-	      goto retry;
-	    }
-	  else
-	    {
-	      DPRINT(("finished\n"));
-	      break;
-	    }
-	}
-    }
-
-  ret = match_eo >= 0 ? REG_OK : REG_NOMATCH;
-  *match_end_ofs = match_eo;
-
- error_exit:
-  tre_bt_mem_destroy(mem);
-#ifndef TRE_USE_ALLOCA
-  if (tags)
-    xfree(tags);
-  if (pmatch)
-    xfree(pmatch);
-  if (states_seen)
-    xfree(states_seen);
-#endif /* !TRE_USE_ALLOCA */
-
-  return ret;
-}
-/*
-  tre-match-parallel.c - TRE parallel regex matching engine
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/*
-  This algorithm searches for matches basically by reading characters
-  in the searched string one by one, starting at the beginning.	 All
-  matching paths in the TNFA are traversed in parallel.	 When two or
-  more paths reach the same state, exactly one is chosen according to
-  tag ordering rules; if returning submatches is not required it does
-  not matter which path is chosen.
-
-  The worst case time required for finding the leftmost and longest
-  match, or determining that there is no match, is always linearly
-  dependent on the length of the text being searched.
-
-  This algorithm cannot handle TNFAs with back referencing nodes.
-  See `tre-match-backtrack.c'.
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#ifdef TRE_USE_ALLOCA
-/* AIX requires this to be the first thing in the file.	 */
-#ifndef __GNUC__
-# if HAVE_ALLOCA_H
-#  include <alloca.h>
-# else
-#  ifdef _AIX
- #pragma alloca
-#  else
-#   ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#   endif
-#  endif
-# endif
-#endif
-#endif /* TRE_USE_ALLOCA */
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_WCHAR_H
-#include <wchar.h>
-#endif /* HAVE_WCHAR_H */
-#ifdef HAVE_WCTYPE_H
-#include <wctype.h>
-#endif /* HAVE_WCTYPE_H */
-#ifndef TRE_WCHAR
-#include <ctype.h>
-#endif /* !TRE_WCHAR */
-#ifdef HAVE_MALLOC_H
-#include <malloc.h>
-#endif /* HAVE_MALLOC_H */
-
-
-
-
-typedef struct {
-  tre_tnfa_transition_t *state;
-  int *tags;
-} tre_tnfa_reach_t;
-
-typedef struct {
-  int pos;
-  int **tags;
-} tre_reach_pos_t;
-
-
-#ifdef TRE_DEBUG
-static void
-tre_print_reach(const tre_tnfa_t *tnfa, tre_tnfa_reach_t *reach, int num_tags)
-{
-  int i;
-
-  while (reach->state != NULL)
-    {
-      DPRINT((" %p", (void *)reach->state));
-      if (num_tags > 0)
-	{
-	  DPRINT(("/"));
-	  for (i = 0; i < num_tags; i++)
-	    {
-	      DPRINT(("%d:%d", i, reach->tags[i]));
-	      if (i < (num_tags-1))
-		DPRINT((","));
-	    }
-	}
-      reach++;
-    }
-  DPRINT(("\n"));
-
-}
-#endif /* TRE_DEBUG */
-
-reg_errcode_t
-tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string, int len,
-		      tre_str_type_t type, int *match_tags, int eflags,
-		      int *match_end_ofs)
-{
-  /* State variables required by GET_NEXT_WCHAR. */
-  tre_char_t prev_c = 0, next_c = 0;
-  const char *str_byte = string;
-  int pos = -1;
-  unsigned int pos_add_next = 1;
-#ifdef TRE_WCHAR
-  const wchar_t *str_wide = string;
-#ifdef TRE_MBSTATE
-  mbstate_t mbstate;
-#endif /* TRE_MBSTATE */
-#endif /* TRE_WCHAR */
-  int reg_notbol = eflags & REG_NOTBOL;
-  int reg_noteol = eflags & REG_NOTEOL;
-  int reg_newline = tnfa->cflags & REG_NEWLINE;
-  int str_user_end = 0;
-
-  char *buf;
-  tre_tnfa_transition_t *trans_i;
-  tre_tnfa_reach_t *reach, *reach_next, *reach_i, *reach_next_i;
-  tre_reach_pos_t *reach_pos;
-  int *tag_i;
-  int num_tags, i;
-
-  int match_eo = -1;	   /* end offset of match (-1 if no match found yet) */
-  int new_match = 0;
-  int *tmp_tags = NULL;
-  int *tmp_iptr;
-
-#ifdef TRE_MBSTATE
-  memset(&mbstate, '\0', sizeof(mbstate));
-#endif /* TRE_MBSTATE */
-
-  DPRINT(("tre_tnfa_run_parallel, input type %d\n", type));
-
-  if (!match_tags)
-    num_tags = 0;
-  else
-    num_tags = tnfa->num_tags;
-
-  /* Allocate memory for temporary data required for matching.	This needs to
-     be done for every matching operation to be thread safe.  This allocates
-     everything in a single large block from the stack frame using alloca()
-     or with malloc() if alloca is unavailable. */
-  {
-    int tbytes, rbytes, pbytes, xbytes, total_bytes;
-    char *tmp_buf;
-    /* Compute the length of the block we need. */
-    tbytes = sizeof(*tmp_tags) * num_tags;
-    rbytes = sizeof(*reach_next) * (tnfa->num_states + 1);
-    pbytes = sizeof(*reach_pos) * tnfa->num_states;
-    xbytes = sizeof(int) * num_tags;
-    total_bytes =
-      (sizeof(long) - 1) * 4 /* for alignment paddings */
-      + (rbytes + xbytes * tnfa->num_states) * 2 + tbytes + pbytes;
-
-    /* Allocate the memory. */
-#ifdef TRE_USE_ALLOCA
-    buf = alloca(total_bytes);
-#else /* !TRE_USE_ALLOCA */
-    buf = xmalloc((unsigned)total_bytes);
-#endif /* !TRE_USE_ALLOCA */
-    if (buf == NULL)
-      return REG_ESPACE;
-    memset(buf, 0, (size_t)total_bytes);
-
-    /* Get the various pointers within tmp_buf (properly aligned). */
-    tmp_tags = (void *)buf;
-    tmp_buf = buf + tbytes;
-    tmp_buf += ALIGN(tmp_buf, long);
-    reach_next = (void *)tmp_buf;
-    tmp_buf += rbytes;
-    tmp_buf += ALIGN(tmp_buf, long);
-    reach = (void *)tmp_buf;
-    tmp_buf += rbytes;
-    tmp_buf += ALIGN(tmp_buf, long);
-    reach_pos = (void *)tmp_buf;
-    tmp_buf += pbytes;
-    tmp_buf += ALIGN(tmp_buf, long);
-    for (i = 0; i < tnfa->num_states; i++)
-      {
-	reach[i].tags = (void *)tmp_buf;
-	tmp_buf += xbytes;
-	reach_next[i].tags = (void *)tmp_buf;
-	tmp_buf += xbytes;
-      }
-  }
-
-  for (i = 0; i < tnfa->num_states; i++)
-    reach_pos[i].pos = -1;
-
-  /* If only one character can start a match, find it first. */
-  if (tnfa->first_char >= 0 && type == STR_BYTE && str_byte)
-    {
-      const char *orig_str = str_byte;
-      int first = tnfa->first_char;
-
-      if (len >= 0)
-	str_byte = memchr(orig_str, first, (size_t)len);
-      else
-	str_byte = strchr(orig_str, first);
-      if (str_byte == NULL)
-	{
-#ifndef TRE_USE_ALLOCA
-	  if (buf)
-	    xfree(buf);
-#endif /* !TRE_USE_ALLOCA */
-	  return REG_NOMATCH;
-	}
-      DPRINT(("skipped %lu chars\n", (unsigned long)(str_byte - orig_str)));
-      if (str_byte >= orig_str + 1)
-	prev_c = (unsigned char)*(str_byte - 1);
-      next_c = (unsigned char)*str_byte;
-      pos = str_byte - orig_str;
-      if (len < 0 || pos < len)
-	str_byte++;
-    }
-  else
-    {
-      GET_NEXT_WCHAR();
-      pos = 0;
-    }
-
-#if 0
-  /* Skip over characters that cannot possibly be the first character
-     of a match. */
-  if (tnfa->firstpos_chars != NULL)
-    {
-      char *chars = tnfa->firstpos_chars;
-
-      if (len < 0)
-	{
-	  const char *orig_str = str_byte;
-	  /* XXX - use strpbrk() and wcspbrk() because they might be
-	     optimized for the target architecture.  Try also strcspn()
-	     and wcscspn() and compare the speeds. */
-	  while (next_c != L'\0' && !chars[next_c])
-	    {
-	      next_c = *str_byte++;
-	    }
-	  prev_c = *(str_byte - 2);
-	  pos += str_byte - orig_str;
-	  DPRINT(("skipped %d chars\n", str_byte - orig_str));
-	}
-      else
-	{
-	  while (pos <= len && !chars[next_c])
-	    {
-	      prev_c = next_c;
-	      next_c = (unsigned char)(*str_byte++);
-	      pos++;
-	    }
-	}
-    }
-#endif
-
-  DPRINT(("length: %d\n", len));
-  DPRINT(("pos:chr/code | states and tags\n"));
-  DPRINT(("-------------+------------------------------------------------\n"));
-
-  reach_next_i = reach_next;
-  while (/*CONSTCOND*/1)
-    {
-      /* If no match found yet, add the initial states to `reach_next'. */
-      if (match_eo < 0)
-	{
-	  DPRINT((" init >"));
-	  trans_i = tnfa->initial;
-	  while (trans_i->state != NULL)
-	    {
-	      if (reach_pos[trans_i->state_id].pos < pos)
-		{
-		  if (trans_i->assertions
-		      && CHECK_ASSERTIONS(trans_i->assertions))
-		    {
-		      DPRINT(("assertion failed\n"));
-		      trans_i++;
-		      continue;
-		    }
-
-		  DPRINT((" %p", (void *)trans_i->state));
-		  reach_next_i->state = trans_i->state;
-		  for (i = 0; i < num_tags; i++)
-		    reach_next_i->tags[i] = -1;
-		  tag_i = trans_i->tags;
-		  if (tag_i)
-		    while (*tag_i >= 0)
-		      {
-			if (*tag_i < num_tags)
-			  reach_next_i->tags[*tag_i] = pos;
-			tag_i++;
-		      }
-		  if (reach_next_i->state == tnfa->final)
-		    {
-		      DPRINT(("	 found empty match\n"));
-		      match_eo = pos;
-		      new_match = 1;
-		      for (i = 0; i < num_tags; i++)
-			match_tags[i] = reach_next_i->tags[i];
-		    }
-		  reach_pos[trans_i->state_id].pos = pos;
-		  reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
-		  reach_next_i++;
-		}
-	      trans_i++;
-	    }
-	  DPRINT(("\n"));
-	  reach_next_i->state = NULL;
-	}
-      else
-	{
-	  if (num_tags == 0 || reach_next_i == reach_next)
-	    /* We have found a match. */
-	    break;
-	}
-
-      /* Check for end of string. */
-      if (len < 0)
-	{
-	  if (type == STR_USER)
-	    {
-	      if (str_user_end)
-		break;
-	    }
-	  else if (next_c == L'\0')
-	    break;
-	}
-      else
-	{
-	  if (pos >= len)
-	    break;
-	}
-
-      GET_NEXT_WCHAR();
-
-#ifdef TRE_DEBUG
-      DPRINT(("%3d:%2lc/%05d |", pos - 1, (tre_cint_t)prev_c, (int)prev_c));
-      tre_print_reach(tnfa, reach_next, num_tags);
-      DPRINT(("%3d:%2lc/%05d |", pos, (tre_cint_t)next_c, (int)next_c));
-      tre_print_reach(tnfa, reach_next, num_tags);
-#endif /* TRE_DEBUG */
-
-      /* Swap `reach' and `reach_next'. */
-      reach_i = reach;
-      reach = reach_next;
-      reach_next = reach_i;
-
-      /* For each state in `reach', weed out states that don't fulfill the
-	 minimal matching conditions. */
-      if (tnfa->num_minimals && new_match)
-	{
-	  new_match = 0;
-	  reach_next_i = reach_next;
-	  for (reach_i = reach; reach_i->state; reach_i++)
-	    {
-	      int skip = 0;
-	      for (i = 0; tnfa->minimal_tags[i] >= 0; i += 2)
-		{
-		  int end = tnfa->minimal_tags[i];
-		  int start = tnfa->minimal_tags[i + 1];
-		  DPRINT(("  Minimal start %d, end %d\n", start, end));
-		  if (end >= num_tags)
-		    {
-		      DPRINT(("	 Throwing %p out.\n", reach_i->state));
-		      skip = 1;
-		      break;
-		    }
-		  else if (reach_i->tags[start] == match_tags[start]
-			   && reach_i->tags[end] < match_tags[end])
-		    {
-		      DPRINT(("	 Throwing %p out because t%d < %d\n",
-			      reach_i->state, end, match_tags[end]));
-		      skip = 1;
-		      break;
-		    }
-		}
-	      if (!skip)
-		{
-		  reach_next_i->state = reach_i->state;
-		  tmp_iptr = reach_next_i->tags;
-		  reach_next_i->tags = reach_i->tags;
-		  reach_i->tags = tmp_iptr;
-		  reach_next_i++;
-		}
-	    }
-	  reach_next_i->state = NULL;
-
-	  /* Swap `reach' and `reach_next'. */
-	  reach_i = reach;
-	  reach = reach_next;
-	  reach_next = reach_i;
-	}
-
-      /* For each state in `reach' see if there is a transition leaving with
-	 the current input symbol to a state not yet in `reach_next', and
-	 add the destination states to `reach_next'. */
-      reach_next_i = reach_next;
-      for (reach_i = reach; reach_i->state; reach_i++)
-	{
-	  for (trans_i = reach_i->state; trans_i->state; trans_i++)
-	    {
-	      /* Does this transition match the input symbol? */
-	      if (trans_i->code_min <= (tre_cint_t)prev_c &&
-		  trans_i->code_max >= (tre_cint_t)prev_c)
-		{
-		  if (trans_i->assertions
-		      && (CHECK_ASSERTIONS(trans_i->assertions)
-			  || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)))
-		    {
-		      DPRINT(("assertion failed\n"));
-		      continue;
-		    }
-
-		  /* Compute the tags after this transition. */
-		  for (i = 0; i < num_tags; i++)
-		    tmp_tags[i] = reach_i->tags[i];
-		  tag_i = trans_i->tags;
-		  if (tag_i != NULL)
-		    while (*tag_i >= 0)
-		      {
-			if (*tag_i < num_tags)
-			  tmp_tags[*tag_i] = pos;
-			tag_i++;
-		      }
-
-		  if (reach_pos[trans_i->state_id].pos < pos)
-		    {
-		      /* Found an unvisited node. */
-		      reach_next_i->state = trans_i->state;
-		      tmp_iptr = reach_next_i->tags;
-		      reach_next_i->tags = tmp_tags;
-		      tmp_tags = tmp_iptr;
-		      reach_pos[trans_i->state_id].pos = pos;
-		      reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
-
-		      if (reach_next_i->state == tnfa->final
-			  && (match_eo == -1
-			      || (num_tags > 0
-				  && reach_next_i->tags[0] <= match_tags[0])))
-			{
-			  DPRINT(("  found match %p\n", trans_i->state));
-			  match_eo = pos;
-			  new_match = 1;
-			  for (i = 0; i < num_tags; i++)
-			    match_tags[i] = reach_next_i->tags[i];
-			}
-		      reach_next_i++;
-
-		    }
-		  else
-		    {
-		      assert(reach_pos[trans_i->state_id].pos == pos);
-		      /* Another path has also reached this state.  We choose
-			 the winner by examining the tag values for both
-			 paths. */
-		      if (tre_tag_order(num_tags, tnfa->tag_directions,
-					tmp_tags,
-					*reach_pos[trans_i->state_id].tags))
-			{
-			  /* The new path wins. */
-			  tmp_iptr = *reach_pos[trans_i->state_id].tags;
-			  *reach_pos[trans_i->state_id].tags = tmp_tags;
-			  if (trans_i->state == tnfa->final)
-			    {
-			      DPRINT(("	 found better match\n"));
-			      match_eo = pos;
-			      new_match = 1;
-			      for (i = 0; i < num_tags; i++)
-				match_tags[i] = tmp_tags[i];
-			    }
-			  tmp_tags = tmp_iptr;
-			}
-		    }
-		}
-	    }
-	}
-      reach_next_i->state = NULL;
-    }
-
-  DPRINT(("match end offset = %d\n", match_eo));
-
-#ifndef TRE_USE_ALLOCA
-  if (buf)
-    xfree(buf);
-#endif /* !TRE_USE_ALLOCA */
-
-  *match_end_ofs = match_eo;
-  return match_eo >= 0 ? REG_OK : REG_NOMATCH;
-}
-
-/* EOF */
-/*
-  tre-mem.c - TRE memory allocator
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/*
-  This memory allocator is for allocating small memory blocks efficiently
-  in terms of memory overhead and execution speed.  The allocated blocks
-  cannot be freed individually, only all at once.  There can be multiple
-  allocators, though.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <stdlib.h>
-#include <string.h>
-
-
-
-/* Returns a new memory allocator or NULL if out of memory. */
-tre_mem_t
-tre_mem_new_impl(int provided, void *provided_block)
-{
-  tre_mem_t mem;
-  if (provided)
-    {
-      mem = provided_block;
-      memset(mem, 0, sizeof(*mem));
-    }
-  else
-    mem = xcalloc(1, sizeof(*mem));
-  if (mem == NULL)
-    return NULL;
-  return mem;
-}
-
-
-/* Frees the memory allocator and all memory allocated with it. */
-void
-tre_mem_destroy(tre_mem_t mem)
-{
-  tre_list_t *tmp, *l = mem->blocks;
-
-  while (l != NULL)
-    {
-      xfree(l->data);
-      tmp = l->next;
-      xfree(l);
-      l = tmp;
-    }
-  xfree(mem);
-}
-
-
-/* Allocates a block of `size' bytes from `mem'.  Returns a pointer to the
-   allocated block or NULL if an underlying malloc() failed. */
-void *
-tre_mem_alloc_impl(tre_mem_t mem, int provided, void *provided_block,
-		   int zero, size_t size)
-{
-  void *ptr;
-
-  if (mem->failed)
-    {
-      DPRINT(("tre_mem_alloc: oops, called after failure?!\n"));
-      return NULL;
-    }
-
-#ifdef MALLOC_DEBUGGING
-  if (!provided)
-    {
-      ptr = xmalloc(1);
-      if (ptr == NULL)
-	{
-	  DPRINT(("tre_mem_alloc: xmalloc forced failure\n"));
-	  mem->failed = 1;
-	  return NULL;
-	}
-      xfree(ptr);
-    }
-#endif /* MALLOC_DEBUGGING */
-
-  if (mem->n < size)
-    {
-      /* We need more memory than is available in the current block.
-	 Allocate a new block. */
-      tre_list_t *l;
-      if (provided)
-	{
-	  DPRINT(("tre_mem_alloc: using provided block\n"));
-	  if (provided_block == NULL)
-	    {
-	      DPRINT(("tre_mem_alloc: provided block was NULL\n"));
-	      mem->failed = 1;
-	      return NULL;
-	    }
-	  mem->ptr = provided_block;
-	  mem->n = TRE_MEM_BLOCK_SIZE;
-	}
-      else
-	{
-	  int block_size;
-	  if (size * 8 > TRE_MEM_BLOCK_SIZE)
-	    block_size = size * 8;
-	  else
-	    block_size = TRE_MEM_BLOCK_SIZE;
-	  DPRINT(("tre_mem_alloc: allocating new %d byte block\n",
-		  block_size));
-	  l = xmalloc(sizeof(*l));
-	  if (l == NULL)
-	    {
-	      mem->failed = 1;
-	      return NULL;
-	    }
-	  l->data = xmalloc(block_size);
-	  if (l->data == NULL)
-	    {
-	      xfree(l);
-	      mem->failed = 1;
-	      return NULL;
-	    }
-	  l->next = NULL;
-	  if (mem->current != NULL)
-	    mem->current->next = l;
-	  if (mem->blocks == NULL)
-	    mem->blocks = l;
-	  mem->current = l;
-	  mem->ptr = l->data;
-	  mem->n = block_size;
-	}
-    }
-
-  /* Make sure the next pointer will be aligned. */
-  size += ALIGN(mem->ptr + size, long);
-
-  /* Allocate from current block. */
-  ptr = mem->ptr;
-  mem->ptr += size;
-  mem->n -= size;
-
-  /* Set to zero if needed. */
-  if (zero)
-    memset(ptr, 0, size);
-
-  return ptr;
-}
-
-/* EOF */
-/*
-  tre-parse.c - Regexp parser
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/*
-  This parser is just a simple recursive descent parser for POSIX.2
-  regexps.  The parser supports both the obsolete default syntax and
-  the "extended" syntax, and some nonstandard extensions.
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <string.h>
-#include <assert.h>
-#include <limits.h>
-
-
-
-/* Characters with special meanings in regexp syntax. */
-#define CHAR_PIPE	   L'|'
-#define CHAR_LPAREN	   L'('
-#define CHAR_RPAREN	   L')'
-#define CHAR_LBRACE	   L'{'
-#define CHAR_RBRACE	   L'}'
-#define CHAR_LBRACKET	   L'['
-#define CHAR_RBRACKET	   L']'
-#define CHAR_MINUS	   L'-'
-#define CHAR_STAR	   L'*'
-#define CHAR_QUESTIONMARK  L'?'
-#define CHAR_PLUS	   L'+'
-#define CHAR_PERIOD	   L'.'
-#define CHAR_COLON	   L':'
-#define CHAR_EQUAL	   L'='
-#define CHAR_COMMA	   L','
-#define CHAR_CARET	   L'^'
-#define CHAR_DOLLAR	   L'$'
-#define CHAR_BACKSLASH	   L'\\'
-#define CHAR_HASH	   L'#'
-#define CHAR_TILDE	   L'~'
-
-
-/* Some macros for expanding \w, \s, etc. */
-static const struct tre_macro_struct {
-  const char c;
-  const char *expansion;
-} tre_macros[] =
-  { {'t', "\t"},	   {'n', "\n"},		   {'r', "\r"},
-    {'f', "\f"},	   {'a', "\a"},		   {'e', "\033"},
-    {'w', "[[:alnum:]_]"}, {'W', "[^[:alnum:]_]"}, {'s', "[[:space:]]"},
-    {'S', "[^[:space:]]"}, {'d', "[[:digit:]]"},   {'D', "[^[:digit:]]"},
-    { 0, NULL }
-  };
-
-
-/* Expands a macro delimited by `regex' and `regex_end' to `buf', which
-   must have at least `len' items.  Sets buf[0] to zero if the there
-   is no match in `tre_macros'. */
-static void
-tre_expand_macro(const tre_char_t *regex, const tre_char_t *regex_end,
-		 tre_char_t *buf, size_t buf_len)
-{
-  int i;
-
-  buf[0] = 0;
-  if (regex >= regex_end)
-    return;
-
-  for (i = 0; tre_macros[i].expansion; i++)
-    {
-      if (tre_macros[i].c == *regex)
-	{
-	  unsigned int j;
-	  DPRINT(("Expanding macro '%c' => '%s'\n",
-		  tre_macros[i].c, tre_macros[i].expansion));
-	  for (j = 0; tre_macros[i].expansion[j] && j < buf_len; j++)
-	    buf[j] = tre_macros[i].expansion[j];
-	  buf[j] = 0;
-	  break;
-	}
-    }
-}
-
-static reg_errcode_t
-tre_new_item(tre_mem_t mem, int min, int max, int *i, int *max_i,
-	 tre_ast_node_t ***items)
-{
-  reg_errcode_t status;
-  tre_ast_node_t **array = *items;
-  /* Allocate more space if necessary. */
-  if (*i >= *max_i)
-    {
-      tre_ast_node_t **new_items;
-      DPRINT(("out of array space, i = %d\n", *i));
-      /* If the array is already 1024 items large, give up -- there's
-	 probably an error in the regexp (e.g. not a '\0' terminated
-	 string and missing ']') */
-      if (*max_i > 1024)
-	return REG_ESPACE;
-      *max_i *= 2;
-      new_items = xrealloc(array, sizeof(*items) * *max_i);
-      if (new_items == NULL)
-	return REG_ESPACE;
-      *items = array = new_items;
-    }
-  array[*i] = tre_ast_new_literal(mem, min, max, -1);
-  status = array[*i] == NULL ? REG_ESPACE : REG_OK;
-  (*i)++;
-  return status;
-}
-
-
-/* Expands a character class to character ranges. */
-static reg_errcode_t
-tre_expand_ctype(tre_mem_t mem, tre_ctype_t class, tre_ast_node_t ***items,
-		 int *i, int *max_i, int cflags)
-{
-  reg_errcode_t status = REG_OK;
-  tre_cint_t c;
-  int j, min = -1, max = 0;
-  assert(TRE_MB_CUR_MAX == 1);
-
-  DPRINT(("  expanding class to character ranges\n"));
-  for (j = 0; (j < 256) && (status == REG_OK); j++)
-    {
-      c = j;
-      if (tre_isctype(c, class)
-	  || ((cflags & REG_ICASE)
-	      && (tre_isctype(tre_tolower(c), class)
-		  || tre_isctype(tre_toupper(c), class))))
-{
-	  if (min < 0)
-	    min = c;
-	  max = c;
-	}
-      else if (min >= 0)
-	{
-	  DPRINT(("  range %c (%d) to %c (%d)\n", min, min, max, max));
-	  status = tre_new_item(mem, min, max, i, max_i, items);
-	  min = -1;
-	}
-    }
-  if (min >= 0 && status == REG_OK)
-    status = tre_new_item(mem, min, max, i, max_i, items);
-  return status;
-}
-
-
-static int
-tre_compare_items(const void *a, const void *b)
-{
-  const tre_ast_node_t *node_a = *(tre_ast_node_t * const *)a;
-  const tre_ast_node_t *node_b = *(tre_ast_node_t * const *)b;
-  tre_literal_t *l_a = node_a->obj, *l_b = node_b->obj;
-  int a_min = l_a->code_min, b_min = l_b->code_min;
-
-  if (a_min < b_min)
-    return -1;
-  else if (a_min > b_min)
-    return 1;
-  else
-    return 0;
-}
-
-#ifndef TRE_USE_SYSTEM_WCTYPE
-
-/* isalnum() and the rest may be macros, so wrap them to functions. */
-int tre_isalnum_func(tre_cint_t c) { return tre_isalnum(c); }
-int tre_isalpha_func(tre_cint_t c) { return tre_isalpha(c); }
-
-#ifdef tre_isascii
-int tre_isascii_func(tre_cint_t c) { return tre_isascii(c); }
-#else /* !tre_isascii */
-int tre_isascii_func(tre_cint_t c) { return !(c >> 7); }
-#endif /* !tre_isascii */
-
-#ifdef tre_isblank
-int tre_isblank_func(tre_cint_t c) { return tre_isblank(c); }
-#else /* !tre_isblank */
-int tre_isblank_func(tre_cint_t c) { return ((c == ' ') || (c == '\t')); }
-#endif /* !tre_isblank */
-
-int tre_iscntrl_func(tre_cint_t c) { return tre_iscntrl(c); }
-int tre_isdigit_func(tre_cint_t c) { return tre_isdigit(c); }
-int tre_isgraph_func(tre_cint_t c) { return tre_isgraph(c); }
-int tre_islower_func(tre_cint_t c) { return tre_islower(c); }
-int tre_isprint_func(tre_cint_t c) { return tre_isprint(c); }
-int tre_ispunct_func(tre_cint_t c) { return tre_ispunct(c); }
-int tre_isspace_func(tre_cint_t c) { return tre_isspace(c); }
-int tre_isupper_func(tre_cint_t c) { return tre_isupper(c); }
-int tre_isxdigit_func(tre_cint_t c) { return tre_isxdigit(c); }
-
-struct {
-  char *name;
-  int (*func)(tre_cint_t);
-} tre_ctype_map[] = {
-  { "alnum", &tre_isalnum_func },
-  { "alpha", &tre_isalpha_func },
-#ifdef tre_isascii
-  { "ascii", &tre_isascii_func },
-#endif /* tre_isascii */
-#ifdef tre_isblank
-  { "blank", &tre_isblank_func },
-#endif /* tre_isblank */
-  { "cntrl", &tre_iscntrl_func },
-  { "digit", &tre_isdigit_func },
-  { "graph", &tre_isgraph_func },
-  { "lower", &tre_islower_func },
-  { "print", &tre_isprint_func },
-  { "punct", &tre_ispunct_func },
-  { "space", &tre_isspace_func },
-  { "upper", &tre_isupper_func },
-  { "xdigit", &tre_isxdigit_func },
-  { NULL, NULL}
-};
-
-tre_ctype_t tre_ctype(const char *name)
-{
-  int i;
-  for (i = 0; tre_ctype_map[i].name != NULL; i++)
-    {
-      if (strcmp(name, tre_ctype_map[i].name) == 0)
-	return tre_ctype_map[i].func;
-    }
-  return (tre_ctype_t)0;
-}
-#endif /* !TRE_USE_SYSTEM_WCTYPE */
-
-/* Maximum number of character classes that can occur in a negated bracket
-   expression.	*/
-#define MAX_NEG_CLASSES 64
-
-/* Maximum length of character class names. */
-#define MAX_CLASS_NAME
-
-#define REST(re) (int)(ctx->re_end - (re)), (re)
-
-static reg_errcode_t
-tre_parse_bracket_items(tre_parse_ctx_t *ctx, int negate,
-			tre_ctype_t neg_classes[], int *num_neg_classes,
-			tre_ast_node_t ***items, int *num_items,
-			int *items_size)
-{
-  const tre_char_t *re = ctx->re;
-  reg_errcode_t status = REG_OK;
-  tre_ctype_t class = (tre_ctype_t)0;
-  int i = *num_items;
-  int max_i = *items_size;
-  int skip;
-
-  /* Build an array of the items in the bracket expression. */
-  while (status == REG_OK)
-    {
-      skip = 0;
-      if (re == ctx->re_end)
-	{
-	  status = REG_EBRACK;
-	}
-      else if (*re == CHAR_RBRACKET && re > ctx->re)
-	{
-	  DPRINT(("tre_parse_bracket:	done: '%.*" STRF "'\n", REST(re)));
-	  re++;
-	  break;
-	}
-      else
-	{
-	  tre_cint_t min = 0, max = 0;
-
-	  class = (tre_ctype_t)0;
-	  if (re + 2 < ctx->re_end
-	      && *(re + 1) == CHAR_MINUS && *(re + 2) != CHAR_RBRACKET)
-	    {
-	      DPRINT(("tre_parse_bracket:  range: '%.*" STRF "'\n", REST(re)));
-	      min = *re;
-	      max = *(re + 2);
-	      re += 3;
-	      /* XXX - Should use collation order instead of encoding values
-		 in character ranges. */
-	      if (min > max)
-		status = REG_ERANGE;
-	    }
-	  else if (re + 1 < ctx->re_end
-		   && *re == CHAR_LBRACKET && *(re + 1) == CHAR_PERIOD)
-	    status = REG_ECOLLATE;
-	  else if (re + 1 < ctx->re_end
-		   && *re == CHAR_LBRACKET && *(re + 1) == CHAR_EQUAL)
-	    status = REG_ECOLLATE;
-	  else if (re + 1 < ctx->re_end
-		   && *re == CHAR_LBRACKET && *(re + 1) == CHAR_COLON)
-	    {
-	      char tmp_str[64];
-	      const tre_char_t *endptr = re + 2;
-	      int len;
-	      DPRINT(("tre_parse_bracket:  class: '%.*" STRF "'\n", REST(re)));
-	      while (endptr < ctx->re_end && *endptr != CHAR_COLON)
-		endptr++;
-	      if (endptr != ctx->re_end)
-		{
-		  len = MIN(endptr - re - 2, 63);
-#ifdef TRE_WCHAR
-		  {
-		    tre_char_t tmp_wcs[64];
-		    wcsncpy(tmp_wcs, re + 2, (size_t)len);
-		    tmp_wcs[len] = L'\0';
-#if defined HAVE_WCSRTOMBS
-		    {
-		      mbstate_t state;
-		      const tre_char_t *src = tmp_wcs;
-		      memset(&state, '\0', sizeof(state));
-		      len = wcsrtombs(tmp_str, &src, sizeof(tmp_str), &state);
-		    }
-#elif defined HAVE_WCSTOMBS
-		    len = wcstombs(tmp_str, tmp_wcs, 63);
-#endif /* defined HAVE_WCSTOMBS */
-		  }
-#else /* !TRE_WCHAR */
-		  strncpy(tmp_str, (const char*)re + 2, len);
-#endif /* !TRE_WCHAR */
-		  tmp_str[len] = '\0';
-		  DPRINT(("  class name: %s\n", tmp_str));
-		  class = tre_ctype(tmp_str);
-		  if (!class)
-		    status = REG_ECTYPE;
-		  /* Optimize character classes for 8 bit character sets. */
-		  if (status == REG_OK && TRE_MB_CUR_MAX == 1)
-		    {
-		      status = tre_expand_ctype(ctx->mem, class, items,
-						&i, &max_i, ctx->cflags);
-		      class = (tre_ctype_t)0;
-		      skip = 1;
-		    }
-		  re = endptr + 2;
-		}
-	      else
-		status = REG_ECTYPE;
-	      min = 0;
-	      max = TRE_CHAR_MAX;
-	    }
-	  else
-	    {
-	      DPRINT(("tre_parse_bracket:   char: '%.*" STRF "'\n", REST(re)));
-	      if (*re == CHAR_MINUS && *(re + 1) != CHAR_RBRACKET
-		  && ctx->re != re)
-		/* Two ranges are not allowed to share and endpoint. */
-		status = REG_ERANGE;
-	      min = max = *re++;
-	    }
-
-	  if (status != REG_OK)
-	    break;
-
-	  if (class && negate)
-	    if (*num_neg_classes >= MAX_NEG_CLASSES)
-	      status = REG_ESPACE;
-	    else
-	      neg_classes[(*num_neg_classes)++] = class;
-	  else if (!skip)
-	    {
-	      status = tre_new_item(ctx->mem, min, max, &i, &max_i, items);
-	      if (status != REG_OK)
-		break;
-	      ((tre_literal_t*)((*items)[i-1])->obj)->u.class = class;
-	    }
-
-	  /* Add opposite-case counterpoints if REG_ICASE is present.
-	     This is broken if there are more than two "same" characters. */
-	  if (ctx->cflags & REG_ICASE && !class && status == REG_OK && !skip)
-	    {
-	      tre_cint_t cmin, ccurr;
-
-	      DPRINT(("adding opposite-case counterpoints\n"));
-	      while (min <= max)
-		{
-		  if (tre_islower(min))
-		    {
-		      cmin = ccurr = tre_toupper(min++);
-		      while (tre_islower(min) && tre_toupper(min) == ccurr + 1
-			     && min <= max)
-			ccurr = tre_toupper(min++);
-		      status = tre_new_item(ctx->mem, cmin, ccurr,
-					    &i, &max_i, items);
-		    }
-		  else if (tre_isupper(min))
-		    {
-		      cmin = ccurr = tre_tolower(min++);
-		      while (tre_isupper(min) && tre_tolower(min) == ccurr + 1
-			     && min <= max)
-			ccurr = tre_tolower(min++);
-		      status = tre_new_item(ctx->mem, cmin, ccurr,
-					    &i, &max_i, items);
-		    }
-		  else min++;
-		  if (status != REG_OK)
-		    break;
-		}
-	      if (status != REG_OK)
-		break;
-	    }
-	}
-    }
-  *num_items = i;
-  *items_size = max_i;
-  ctx->re = re;
-  return status;
-}
-
-static reg_errcode_t
-tre_parse_bracket(tre_parse_ctx_t *ctx, tre_ast_node_t **result)
-{
-  tre_ast_node_t *node = NULL;
-  int negate = 0;
-  reg_errcode_t status = REG_OK;
-  tre_ast_node_t **items, *u, *n;
-  int i = 0, j, max_i = 32, curr_max, curr_min;
-  tre_ctype_t neg_classes[MAX_NEG_CLASSES];
-  int num_neg_classes = 0;
-
-  /* Start off with an array of `max_i' elements. */
-  items = xmalloc(sizeof(*items) * max_i);
-  if (items == NULL)
-    return REG_ESPACE;
-
-  if (*ctx->re == CHAR_CARET)
-    {
-      DPRINT(("tre_parse_bracket: negate: '%.*" STRF "'\n", REST(ctx->re)));
-      negate = 1;
-      ctx->re++;
-    }
-
-  status = tre_parse_bracket_items(ctx, negate, neg_classes, &num_neg_classes,
-				   &items, &i, &max_i);
-
-  if (status != REG_OK)
-    goto parse_bracket_done;
-
-  /* Sort the array if we need to negate it. */
-  if (negate)
-    qsort(items, (unsigned)i, sizeof(*items), tre_compare_items);
-
-  curr_max = curr_min = 0;
-  /* Build a union of the items in the array, negated if necessary. */
-  for (j = 0; j < i && status == REG_OK; j++)
-    {
-      int min, max;
-      tre_literal_t *l = items[j]->obj;
-      min = l->code_min;
-      max = l->code_max;
-
-      DPRINT(("item: %d - %d, class %ld, curr_max = %d\n",
-	      (int)l->code_min, (int)l->code_max, (long)l->u.class, curr_max));
-
-      if (negate)
-	{
-	  if (min < curr_max)
-	    {
-	      /* Overlap. */
-	      curr_max = MAX(max + 1, curr_max);
-	      DPRINT(("overlap, curr_max = %d\n", curr_max));
-	      l = NULL;
-	    }
-	  else
-	    {
-	      /* No overlap. */
-	      curr_max = min - 1;
-	      if (curr_max >= curr_min)
-		{
-		  DPRINT(("no overlap\n"));
-		  l->code_min = curr_min;
-		  l->code_max = curr_max;
-		}
-	      else
-		{
-		  DPRINT(("no overlap, zero room\n"));
-		  l = NULL;
-		}
-	      curr_min = curr_max = max + 1;
-	    }
-	}
-
-      if (l != NULL)
-	{
-	  int k;
-	  DPRINT(("creating %d - %d\n", (int)l->code_min, (int)l->code_max));
-	  l->position = ctx->position;
-	  if (num_neg_classes > 0)
-	    {
-	      l->neg_classes = tre_mem_alloc(ctx->mem,
-					     (sizeof(l->neg_classes)
-					      * (num_neg_classes + 1)));
-	      if (l->neg_classes == NULL)
-		{
-		  status = REG_ESPACE;
-		  break;
-		}
-	      for (k = 0; k < num_neg_classes; k++)
-		l->neg_classes[k] = neg_classes[k];
-	      l->neg_classes[k] = (tre_ctype_t)0;
-	    }
-	  else
-	    l->neg_classes = NULL;
-	  if (node == NULL)
-	    node = items[j];
-	  else
-	    {
-	      u = tre_ast_new_union(ctx->mem, node, items[j]);
-	      if (u == NULL)
-		status = REG_ESPACE;
-	      node = u;
-	    }
-	}
-    }
-
-  if (status != REG_OK)
-    goto parse_bracket_done;
-
-  if (negate)
-    {
-      int k;
-      DPRINT(("final: creating %d - %d\n", curr_min, (int)TRE_CHAR_MAX));
-      n = tre_ast_new_literal(ctx->mem, curr_min, TRE_CHAR_MAX, ctx->position);
-      if (n == NULL)
-	status = REG_ESPACE;
-      else
-	{
-	  tre_literal_t *l = n->obj;
-	  if (num_neg_classes > 0)
-	    {
-	      l->neg_classes = tre_mem_alloc(ctx->mem,
-					     (sizeof(l->neg_classes)
-					      * (num_neg_classes + 1)));
-	      if (l->neg_classes == NULL)
-		{
-		  status = REG_ESPACE;
-		  goto parse_bracket_done;
-		}
-	      for (k = 0; k < num_neg_classes; k++)
-		l->neg_classes[k] = neg_classes[k];
-	      l->neg_classes[k] = (tre_ctype_t)0;
-	    }
-	  else
-	    l->neg_classes = NULL;
-	  if (node == NULL)
-	    node = n;
-	  else
-	    {
-	      u = tre_ast_new_union(ctx->mem, node, n);
-	      if (u == NULL)
-		status = REG_ESPACE;
-	      node = u;
-	    }
-	}
-    }
-
-  if (status != REG_OK)
-    goto parse_bracket_done;
-
-#ifdef TRE_DEBUG
-  tre_ast_print(node);
-#endif /* TRE_DEBUG */
-
- parse_bracket_done:
-  xfree(items);
-  ctx->position++;
-  *result = node;
-  return status;
-}
-
-
-/* Parses a positive decimal integer.  Returns -1 if the string does not
-   contain a valid number. */
-static int
-tre_parse_int(const tre_char_t **regex, const tre_char_t *regex_end)
-{
-  int num = -1;
-  const tre_char_t *r = *regex;
-  while (r < regex_end && *r >= L'0' && *r <= L'9')
-    {
-      if (num < 0)
-	num = 0;
-      num = num * 10 + *r - L'0';
-      r++;
-    }
-  *regex = r;
-  return num;
-}
-
-
-static reg_errcode_t
-tre_parse_bound(tre_parse_ctx_t *ctx, tre_ast_node_t **result)
-{
-  int min, max, i;
-  int cost_ins, cost_del, cost_subst, cost_max;
-  int limit_ins, limit_del, limit_subst, limit_err;
-  const tre_char_t *r = ctx->re;
-  const tre_char_t *start;
-  int minimal = (ctx->cflags & REG_UNGREEDY) ? 1 : 0;
-  int approx = 0;
-  int costs_set = 0;
-  int counts_set = 0;
-
-  cost_ins = cost_del = cost_subst = cost_max = TRE_PARAM_UNSET;
-  limit_ins = limit_del = limit_subst = limit_err = TRE_PARAM_UNSET;
-
-  /* Parse number (minimum repetition count). */
-  min = -1;
-  if (r < ctx->re_end && *r >= L'0' && *r <= L'9') {
-    DPRINT(("tre_parse:	  min count: '%.*" STRF "'\n", REST(r)));
-    min = tre_parse_int(&r, ctx->re_end);
-  }
-
-  /* Parse comma and second number (maximum repetition count). */
-  max = min;
-  if (r < ctx->re_end && *r == CHAR_COMMA)
-    {
-      r++;
-      DPRINT(("tre_parse:   max count: '%.*" STRF "'\n", REST(r)));
-      max = tre_parse_int(&r, ctx->re_end);
-    }
-
-  /* Check that the repeat counts are sane. */
-  if ((max >= 0 && min > max) || max > RE_DUP_MAX)
-    return REG_BADBR;
-
-
-  /*
-   '{'
-     optionally followed immediately by a number == minimum repcount
-     optionally followed by , then a number == maximum repcount
-      + then a number == maximum insertion count
-      - then a number == maximum deletion count
-      # then a number == maximum substitution count
-      ~ then a number == maximum number of errors
-      Any of +, -, # or ~ without followed by a number means that
-      the maximum count/number of errors is infinite.
-
-      An equation of the form
-	Xi + Yd + Zs < C
-      can be specified to set costs and the cost limit to a value
-      different from the default value:
-	- X is the cost of an insertion
-	- Y is the cost of a deletion
-	- Z is the cost of a substitution
-	- C is the maximum cost
-
-      If no count limit or cost is set for an operation, the operation
-      is not allowed at all.
-  */
-
-
-  do {
-    int done;
-    start = r;
-
-    /* Parse count limit settings */
-    done = 0;
-    if (!counts_set)
-      while (r + 1 < ctx->re_end && !done)
-	{
-	  switch (*r)
-	    {
-	    case CHAR_PLUS:  /* Insert limit */
-	      DPRINT(("tre_parse:   ins limit: '%.*" STRF "'\n", REST(r)));
-	      r++;
-	      limit_ins = tre_parse_int(&r, ctx->re_end);
-	      if (limit_ins < 0)
-		limit_ins = INT_MAX;
-	      counts_set = 1;
-	      break;
-	    case CHAR_MINUS: /* Delete limit */
-	      DPRINT(("tre_parse:   del limit: '%.*" STRF "'\n", REST(r)));
-	      r++;
-	      limit_del = tre_parse_int(&r, ctx->re_end);
-	      if (limit_del < 0)
-		limit_del = INT_MAX;
-	      counts_set = 1;
-	      break;
-	    case CHAR_HASH:  /* Substitute limit */
-	      DPRINT(("tre_parse: subst limit: '%.*" STRF "'\n", REST(r)));
-	      r++;
-	      limit_subst = tre_parse_int(&r, ctx->re_end);
-	      if (limit_subst < 0)
-		limit_subst = INT_MAX;
-	      counts_set = 1;
-	      break;
-	    case CHAR_TILDE: /* Maximum number of changes */
-	      DPRINT(("tre_parse: count limit: '%.*" STRF "'\n", REST(r)));
-	      r++;
-	      limit_err = tre_parse_int(&r, ctx->re_end);
-	      if (limit_err < 0)
-		limit_err = INT_MAX;
-	      approx = 1;
-	      break;
-	    case CHAR_COMMA:
-	      r++;
-	      break;
-	    case L' ':
-	      r++;
-	      break;
-	    case L'}':
-	      done = 1;
-	      break;
-	    default:
-	      done = 1;
-	      break;
-	    }
-	}
-
-    /* Parse cost restriction equation. */
-    done = 0;
-    if (!costs_set)
-      while (r + 1 < ctx->re_end && !done)
-	{
-	  switch (*r)
-	    {
-	    case CHAR_PLUS:
-	    case L' ':
-	      r++;
-	      break;
-	    case L'<':
-	      DPRINT(("tre_parse:    max cost: '%.*" STRF "'\n", REST(r)));
-	      r++;
-	      while (*r == L' ')
-		r++;
-	      cost_max = tre_parse_int(&r, ctx->re_end);
-	      if (cost_max < 0)
-		cost_max = INT_MAX;
-	      else
-		cost_max--;
-	      approx = 1;
-	      break;
-	    case CHAR_COMMA:
-	      r++;
-	      done = 1;
-	      break;
-	    default:
-	      if (*r >= L'0' && *r <= L'9')
-		{
-#ifdef TRE_DEBUG
-		  const tre_char_t *sr = r;
-#endif /* TRE_DEBUG */
-		  int cost = tre_parse_int(&r, ctx->re_end);
-		  /* XXX - make sure r is not past end. */
-		  switch (*r)
-		    {
-		    case L'i':	/* Insert cost */
-		      DPRINT(("tre_parse:    ins cost: '%.*" STRF "'\n",
-			      REST(sr)));
-		      r++;
-		      cost_ins = cost;
-		      costs_set = 1;
-		      break;
-		    case L'd':	/* Delete cost */
-		      DPRINT(("tre_parse:    del cost: '%.*" STRF "'\n",
-			      REST(sr)));
-		      r++;
-		      cost_del = cost;
-		      costs_set = 1;
-		      break;
-		    case L's':	/* Substitute cost */
-		      DPRINT(("tre_parse:  subst cost: '%.*" STRF "'\n",
-			      REST(sr)));
-		      r++;
-		      cost_subst = cost;
-		      costs_set = 1;
-		      break;
-		    default:
-		      return REG_BADBR;
-		    }
-		}
-	      else
-		{
-		  done = 1;
-		  break;
-		}
-	    }
-	}
-  } while (start != r);
-
-  /* Missing }. */
-  if (r >= ctx->re_end)
-    return REG_EBRACE;
-
-  /* Empty contents of {}. */
-  if (r == ctx->re)
-    return REG_BADBR;
-
-  /* Parse the ending '}' or '\}'.*/
-  if (ctx->cflags & REG_EXTENDED)
-    {
-      if (r >= ctx->re_end || *r != CHAR_RBRACE)
-	return REG_BADBR;
-      r++;
-    }
-  else
-    {
-      if (r + 1 >= ctx->re_end
-	  || *r != CHAR_BACKSLASH
-	  || *(r + 1) != CHAR_RBRACE)
-	return REG_BADBR;
-      r += 2;
-    }
-
-
-  /* Parse trailing '?' marking minimal repetition. */
-  if (r < ctx->re_end)
-    {
-      if (*r == CHAR_QUESTIONMARK)
-	{
-	  minimal = !(ctx->cflags & REG_UNGREEDY);
-	  r++;
-	}
-      else if (*r == CHAR_STAR || *r == CHAR_PLUS)
-	{
-	  /* These are reserved for future extensions. */
-	  return REG_BADRPT;
-	}
-    }
-
-  /* Create the AST node(s). */
-  if (min == 0 && max == 0)
-    {
-      *result = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-      if (*result == NULL)
-	return REG_ESPACE;
-    }
-  else
-    {
-      if (min < 0 && max < 0)
-	/* Only approximate parameters set, no repetitions. */
-	min = max = 1;
-
-      *result = tre_ast_new_iter(ctx->mem, *result, min, max, minimal);
-      if (!*result)
-	return REG_ESPACE;
-
-      /* If approximate matching parameters are set, add them to the
-	 iteration node. */
-      if (approx || costs_set || counts_set)
-	{
-	  int *params;
-	  tre_iteration_t *iter = (*result)->obj;
-
-	  if (costs_set || counts_set)
-	    {
-	      if (limit_ins == TRE_PARAM_UNSET)
-		{
-		  if (cost_ins == TRE_PARAM_UNSET)
-		    limit_ins = 0;
-		  else
-		    limit_ins = INT_MAX;
-		}
-
-	      if (limit_del == TRE_PARAM_UNSET)
-		{
-		  if (cost_del == TRE_PARAM_UNSET)
-		    limit_del = 0;
-		  else
-		    limit_del = INT_MAX;
-		}
-
-	      if (limit_subst == TRE_PARAM_UNSET)
-		{
-		  if (cost_subst == TRE_PARAM_UNSET)
-		    limit_subst = 0;
-		  else
-		    limit_subst = INT_MAX;
-		}
-	    }
-
-	  if (cost_max == TRE_PARAM_UNSET)
-	    cost_max = INT_MAX;
-	  if (limit_err == TRE_PARAM_UNSET)
-	    limit_err = INT_MAX;
-
-	  ctx->have_approx = 1;
-	  params = tre_mem_alloc(ctx->mem, sizeof(*params) * TRE_PARAM_LAST);
-	  if (!params)
-	    return REG_ESPACE;
-	  for (i = 0; i < TRE_PARAM_LAST; i++)
-	    params[i] = TRE_PARAM_UNSET;
-	  params[TRE_PARAM_COST_INS] = cost_ins;
-	  params[TRE_PARAM_COST_DEL] = cost_del;
-	  params[TRE_PARAM_COST_SUBST] = cost_subst;
-	  params[TRE_PARAM_COST_MAX] = cost_max;
-	  params[TRE_PARAM_MAX_INS] = limit_ins;
-	  params[TRE_PARAM_MAX_DEL] = limit_del;
-	  params[TRE_PARAM_MAX_SUBST] = limit_subst;
-	  params[TRE_PARAM_MAX_ERR] = limit_err;
-	  iter->params = params;
-	}
-    }
-
-  DPRINT(("tre_parse_bound: min %d, max %d, costs [%d,%d,%d, total %d], "
-	  "limits [%d,%d,%d, total %d]\n",
-	  min, max, cost_ins, cost_del, cost_subst, cost_max,
-	  limit_ins, limit_del, limit_subst, limit_err));
-
-
-  ctx->re = r;
-  return REG_OK;
-}
-
-typedef enum {
-  PARSE_RE = 0,
-  PARSE_ATOM,
-  PARSE_MARK_FOR_SUBMATCH,
-  PARSE_BRANCH,
-  PARSE_PIECE,
-  PARSE_CATENATION,
-  PARSE_POST_CATENATION,
-  PARSE_UNION,
-  PARSE_POST_UNION,
-  PARSE_POSTFIX,
-  PARSE_RESTORE_CFLAGS
-} tre_parse_re_stack_symbol_t;
-
-
-reg_errcode_t
-tre_parse(tre_parse_ctx_t *ctx)
-{
-  tre_ast_node_t *result = NULL;
-  tre_parse_re_stack_symbol_t symbol;
-  reg_errcode_t status = REG_OK;
-  tre_stack_t *stack = ctx->stack;
-  int bottom = tre_stack_num_objects(stack);
-  int depth = 0;
-  int temporary_cflags = 0;
-
-  DPRINT(("tre_parse: parsing '%.*" STRF "', len = %d\n",
-	  ctx->len, ctx->re, ctx->len));
-
-  if (!ctx->nofirstsub)
-    {
-      STACK_PUSH(stack, int, ctx->submatch_id);
-      STACK_PUSH(stack, int, PARSE_MARK_FOR_SUBMATCH);
-      ctx->submatch_id++;
-    }
-  STACK_PUSH(stack, int, PARSE_RE);
-  ctx->re_start = ctx->re;
-  ctx->re_end = ctx->re + ctx->len;
-
-
-  /* The following is basically just a recursive descent parser.  I use
-     an explicit stack instead of recursive functions mostly because of
-     two reasons: compatibility with systems which have an overflowable
-     call stack, and efficiency (both in lines of code and speed).  */
-  while (tre_stack_num_objects(stack) > bottom && status == REG_OK)
-    {
-      if (status != REG_OK)
-	break;
-      symbol = tre_stack_pop_int(stack);
-      switch (symbol)
-	{
-	case PARSE_RE:
-	  /* Parse a full regexp.  A regexp is one or more branches,
-	     separated by the union operator `|'. */
-#ifdef REG_LITERAL
-	  if (!(ctx->cflags & REG_LITERAL)
-	      && ctx->cflags & REG_EXTENDED)
-#endif /* REG_LITERAL */
-	    STACK_PUSHX(stack, int, PARSE_UNION);
-	  STACK_PUSHX(stack, int, PARSE_BRANCH);
-	  break;
-
-	case PARSE_BRANCH:
-	  /* Parse a branch.  A branch is one or more pieces, concatenated.
-	     A piece is an atom possibly followed by a postfix operator. */
-	  STACK_PUSHX(stack, int, PARSE_CATENATION);
-	  STACK_PUSHX(stack, int, PARSE_PIECE);
-	  break;
-
-	case PARSE_PIECE:
-	  /* Parse a piece.  A piece is an atom possibly followed by one
-	     or more postfix operators. */
-#ifdef REG_LITERAL
-	  if (!(ctx->cflags & REG_LITERAL))
-#endif /* REG_LITERAL */
-	    STACK_PUSHX(stack, int, PARSE_POSTFIX);
-	  STACK_PUSHX(stack, int, PARSE_ATOM);
-	  break;
-
-	case PARSE_CATENATION:
-	  /* If the expression has not ended, parse another piece. */
-	  {
-	    tre_char_t c;
-	    if (ctx->re >= ctx->re_end)
-	      break;
-	    c = *ctx->re;
-#ifdef REG_LITERAL
-	    if (!(ctx->cflags & REG_LITERAL))
-	      {
-#endif /* REG_LITERAL */
-		if (ctx->cflags & REG_EXTENDED && c == CHAR_PIPE)
-		  break;
-		if ((ctx->cflags & REG_EXTENDED
-		     && c == CHAR_RPAREN && depth > 0)
-		    || (!(ctx->cflags & REG_EXTENDED)
-			&& (c == CHAR_BACKSLASH
-			    && *(ctx->re + 1) == CHAR_RPAREN)))
-		  {
-		    if (!(ctx->cflags & REG_EXTENDED) && depth == 0)
-		      status = REG_EPAREN;
-		    DPRINT(("tre_parse:	  group end: '%.*" STRF "'\n",
-			    REST(ctx->re)));
-		    depth--;
-		    if (!(ctx->cflags & REG_EXTENDED))
-		      ctx->re += 2;
-		    break;
-		  }
-#ifdef REG_LITERAL
-	      }
-#endif /* REG_LITERAL */
-
-#ifdef REG_RIGHT_ASSOC
-	    if (ctx->cflags & REG_RIGHT_ASSOC)
-	      {
-		/* Right associative concatenation. */
-		STACK_PUSHX(stack, voidptr, result);
-		STACK_PUSHX(stack, int, PARSE_POST_CATENATION);
-		STACK_PUSHX(stack, int, PARSE_CATENATION);
-		STACK_PUSHX(stack, int, PARSE_PIECE);
-	      }
-	    else
-#endif /* REG_RIGHT_ASSOC */
-	      {
-		/* Default case, left associative concatenation. */
-		STACK_PUSHX(stack, int, PARSE_CATENATION);
-		STACK_PUSHX(stack, voidptr, result);
-		STACK_PUSHX(stack, int, PARSE_POST_CATENATION);
-		STACK_PUSHX(stack, int, PARSE_PIECE);
-	      }
-	    break;
-	  }
-
-	case PARSE_POST_CATENATION:
-	  {
-	    tre_ast_node_t *tree = tre_stack_pop_voidptr(stack);
-	    tre_ast_node_t *tmp_node;
-	    tmp_node = tre_ast_new_catenation(ctx->mem, tree, result);
-	    if (!tmp_node)
-	      return REG_ESPACE;
-	    result = tmp_node;
-	    break;
-	  }
-
-	case PARSE_UNION:
-	  if (ctx->re >= ctx->re_end)
-	    break;
-#ifdef REG_LITERAL
-	  if (ctx->cflags & REG_LITERAL)
-	    break;
-#endif /* REG_LITERAL */
-	  switch (*ctx->re)
-	    {
-	    case CHAR_PIPE:
-	      DPRINT(("tre_parse:	union: '%.*" STRF "'\n",
-		      REST(ctx->re)));
-	      STACK_PUSHX(stack, int, PARSE_UNION);
-	      STACK_PUSHX(stack, voidptr, result);
-	      STACK_PUSHX(stack, int, PARSE_POST_UNION);
-	      STACK_PUSHX(stack, int, PARSE_BRANCH);
-	      ctx->re++;
-	      break;
-
-	    case CHAR_RPAREN:
-	      ctx->re++;
-	      break;
-
-	    default:
-	      break;
-	    }
-	  break;
-
-	case PARSE_POST_UNION:
-	  {
-	    tre_ast_node_t *tmp_node;
-	    tre_ast_node_t *tree = tre_stack_pop_voidptr(stack);
-	    tmp_node = tre_ast_new_union(ctx->mem, tree, result);
-	    if (!tmp_node)
-	      return REG_ESPACE;
-	    result = tmp_node;
-	    break;
-	  }
-
-	case PARSE_POSTFIX:
-	  /* Parse postfix operators. */
-	  if (ctx->re >= ctx->re_end)
-	    break;
-#ifdef REG_LITERAL
-	  if (ctx->cflags & REG_LITERAL)
-	    break;
-#endif /* REG_LITERAL */
-	  switch (*ctx->re)
-	    {
-	    case CHAR_PLUS:
-	    case CHAR_QUESTIONMARK:
-	      if (!(ctx->cflags & REG_EXTENDED))
-		break;
-		/*FALLTHROUGH*/
-	    case CHAR_STAR:
-	      {
-		tre_ast_node_t *tmp_node;
-		int minimal = (ctx->cflags & REG_UNGREEDY) ? 1 : 0;
-		int rep_min = 0;
-		int rep_max = -1;
-#ifdef TRE_DEBUG
-		const tre_char_t *tmp_re;
-#endif
-
-		if (*ctx->re == CHAR_PLUS)
-		  rep_min = 1;
-		if (*ctx->re == CHAR_QUESTIONMARK)
-		  rep_max = 1;
-#ifdef TRE_DEBUG
-		tmp_re = ctx->re;
-#endif
-
-		if (ctx->re + 1 < ctx->re_end)
-		  {
-		    if (*(ctx->re + 1) == CHAR_QUESTIONMARK)
-		      {
-			minimal = !(ctx->cflags & REG_UNGREEDY);
-			ctx->re++;
-		      }
-		    else if (*(ctx->re + 1) == CHAR_STAR
-			     || *(ctx->re + 1) == CHAR_PLUS)
-		      {
-			/* These are reserved for future extensions. */
-			return REG_BADRPT;
-		      }
-		  }
-
-		DPRINT(("tre_parse: %s star: '%.*" STRF "'\n",
-			minimal ? "  minimal" : "greedy", REST(tmp_re)));
-		ctx->re++;
-		tmp_node = tre_ast_new_iter(ctx->mem, result, rep_min, rep_max,
-					    minimal);
-		if (tmp_node == NULL)
-		  return REG_ESPACE;
-		result = tmp_node;
-		STACK_PUSHX(stack, int, PARSE_POSTFIX);
-	      }
-	      break;
-
-	    case CHAR_BACKSLASH:
-	      /* "\{" is special without REG_EXTENDED */
-	      if (!(ctx->cflags & REG_EXTENDED)
-		  && ctx->re + 1 < ctx->re_end
-		  && *(ctx->re + 1) == CHAR_LBRACE)
-		{
-		  ctx->re++;
-		  goto parse_brace;
-		}
-	      else
-		break;
-
-	    case CHAR_LBRACE:
-	      /* "{" is literal without REG_EXTENDED */
-	      if (!(ctx->cflags & REG_EXTENDED))
-		break;
-
-	    parse_brace:
-	      DPRINT(("tre_parse:	bound: '%.*" STRF "'\n",
-		      REST(ctx->re)));
-	      ctx->re++;
-
-	      status = tre_parse_bound(ctx, &result);
-	      if (status != REG_OK)
-		return status;
-	      STACK_PUSHX(stack, int, PARSE_POSTFIX);
-	      break;
-	    }
-	  break;
-
-	case PARSE_ATOM:
-	  /* Parse an atom.  An atom is a regular expression enclosed in `()',
-	     an empty set of `()', a bracket expression, `.', `^', `$',
-	     a `\' followed by a character, or a single character. */
-
-	  /* End of regexp? (empty string). */
-	  if (ctx->re >= ctx->re_end)
-	    goto parse_literal;
-
-#ifdef REG_LITERAL
-	  if (ctx->cflags & REG_LITERAL)
-	    goto parse_literal;
-#endif /* REG_LITERAL */
-
-	  switch (*ctx->re)
-	    {
-	    case CHAR_LPAREN:  /* parenthesized subexpression */
-
-	      /* Handle "(?...)" extensions.  They work in a way similar
-		 to Perls corresponding extensions. */
-	      if (ctx->cflags & REG_EXTENDED
-		  && *(ctx->re + 1) == CHAR_QUESTIONMARK)
-		{
-		  int new_cflags = ctx->cflags;
-		  int bit = 1;
-		  DPRINT(("tre_parse:	extension: '%.*" STRF "\n",
-			  REST(ctx->re)));
-		  ctx->re += 2;
-		  while (/*CONSTCOND*/1)
-		    {
-		      if (*ctx->re == L'i')
-			{
-			  DPRINT(("tre_parse:	    icase: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  if (bit)
-			    new_cflags |= REG_ICASE;
-			  else
-			    new_cflags &= ~REG_ICASE;
-			  ctx->re++;
-			}
-		      else if (*ctx->re == L'n')
-			{
-			  DPRINT(("tre_parse:	  newline: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  if (bit)
-			    new_cflags |= REG_NEWLINE;
-			  else
-			    new_cflags &= ~REG_NEWLINE;
-			  ctx->re++;
-			}
-#ifdef REG_RIGHT_ASSOC
-		      else if (*ctx->re == L'r')
-			{
-			  DPRINT(("tre_parse: right assoc: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  if (bit)
-			    new_cflags |= REG_RIGHT_ASSOC;
-			  else
-			    new_cflags &= ~REG_RIGHT_ASSOC;
-			  ctx->re++;
-			}
-#endif /* REG_RIGHT_ASSOC */
-#ifdef REG_UNGREEDY
-		      else if (*ctx->re == L'U')
-			{
-			  DPRINT(("tre_parse:    ungreedy: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  if (bit)
-			    new_cflags |= REG_UNGREEDY;
-			  else
-			    new_cflags &= ~REG_UNGREEDY;
-			  ctx->re++;
-			}
-#endif /* REG_UNGREEDY */
-		      else if (*ctx->re == CHAR_MINUS)
-			{
-			  DPRINT(("tre_parse:	 turn off: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  ctx->re++;
-			  bit = 0;
-			}
-		      else if (*ctx->re == CHAR_COLON)
-			{
-			  DPRINT(("tre_parse:	 no group: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  ctx->re++;
-			  depth++;
-			  break;
-			}
-		      else if (*ctx->re == CHAR_HASH)
-			{
-			  DPRINT(("tre_parse:    comment: '%.*" STRF "\n",
-				  REST(ctx->re)));
-			  /* A comment can contain any character except a
-			     right parenthesis */
-			  while (*ctx->re != CHAR_RPAREN
-				 && ctx->re < ctx->re_end)
-			    ctx->re++;
-			  if (*ctx->re == CHAR_RPAREN && ctx->re < ctx->re_end)
-			    {
-			      ctx->re++;
-			      break;
-			    }
-			  else
-			    return REG_BADPAT;
-			}
-		      else if (*ctx->re == CHAR_RPAREN)
-			{
-			  ctx->re++;
-			  break;
-			}
-		      else
-			return REG_BADPAT;
-		    }
-
-		  /* Turn on the cflags changes for the rest of the
-		     enclosing group. */
-		  STACK_PUSHX(stack, int, ctx->cflags);
-		  STACK_PUSHX(stack, int, PARSE_RESTORE_CFLAGS);
-		  STACK_PUSHX(stack, int, PARSE_RE);
-		  ctx->cflags = new_cflags;
-		  break;
-		}
-
-	      if (ctx->cflags & REG_EXTENDED
-		  || (ctx->re > ctx->re_start
-		      && *(ctx->re - 1) == CHAR_BACKSLASH))
-		{
-		  depth++;
-		  if (ctx->re + 2 < ctx->re_end
-		      && *(ctx->re + 1) == CHAR_QUESTIONMARK
-		      && *(ctx->re + 2) == CHAR_COLON)
-		    {
-		      DPRINT(("tre_parse: group begin: '%.*" STRF
-			      "', no submatch\n", REST(ctx->re)));
-		      /* Don't mark for submatching. */
-		      ctx->re += 3;
-		      STACK_PUSHX(stack, int, PARSE_RE);
-		    }
-		  else
-		    {
-		      DPRINT(("tre_parse: group begin: '%.*" STRF
-			      "', submatch %d\n", REST(ctx->re),
-			      ctx->submatch_id));
-		      ctx->re++;
-		      /* First parse a whole RE, then mark the resulting tree
-			 for submatching. */
-		      STACK_PUSHX(stack, int, ctx->submatch_id);
-		      STACK_PUSHX(stack, int, PARSE_MARK_FOR_SUBMATCH);
-		      STACK_PUSHX(stack, int, PARSE_RE);
-		      ctx->submatch_id++;
-		    }
-		}
-	      else
-		goto parse_literal;
-	      break;
-
-	    case CHAR_RPAREN:  /* end of current subexpression */
-	      if ((ctx->cflags & REG_EXTENDED && depth > 0)
-		  || (ctx->re > ctx->re_start
-		      && *(ctx->re - 1) == CHAR_BACKSLASH))
-		{
-		  DPRINT(("tre_parse:	    empty: '%.*" STRF "'\n",
-			  REST(ctx->re)));
-		  /* We were expecting an atom, but instead the current
-		     subexpression was closed.	POSIX leaves the meaning of
-		     this to be implementation-defined.	 We interpret this as
-		     an empty expression (which matches an empty string).  */
-		  result = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-		  if (result == NULL)
-		    return REG_ESPACE;
-		  if (!(ctx->cflags & REG_EXTENDED))
-		    ctx->re--;
-		}
-	      else
-		goto parse_literal;
-	      break;
-
-	    case CHAR_LBRACKET: /* bracket expression */
-	      DPRINT(("tre_parse:     bracket: '%.*" STRF "'\n",
-		      REST(ctx->re)));
-	      ctx->re++;
-	      status = tre_parse_bracket(ctx, &result);
-	      if (status != REG_OK)
-		return status;
-	      break;
-
-	    case CHAR_BACKSLASH:
-	      /* If this is "\(" or "\)" chew off the backslash and
-		 try again. */
-	      if (!(ctx->cflags & REG_EXTENDED)
-		  && ctx->re + 1 < ctx->re_end
-		  && (*(ctx->re + 1) == CHAR_LPAREN
-		      || *(ctx->re + 1) == CHAR_RPAREN))
-		{
-		  ctx->re++;
-		  STACK_PUSHX(stack, int, PARSE_ATOM);
-		  break;
-		}
-
-	      /* If a macro is used, parse the expanded macro recursively. */
-	      {
-		tre_char_t buf[64];
-		tre_expand_macro(ctx->re + 1, ctx->re_end,
-				 buf, elementsof(buf));
-		if (buf[0] != 0)
-		  {
-		    tre_parse_ctx_t subctx;
-		    memcpy(&subctx, ctx, sizeof(subctx));
-		    subctx.re = buf;
-		    subctx.len = tre_strlen(buf);
-		    subctx.nofirstsub = 1;
-		    status = tre_parse(&subctx);
-		    if (status != REG_OK)
-		      return status;
-		    ctx->re += 2;
-		    ctx->position = subctx.position;
-		    result = subctx.result;
-		    break;
-		  }
-	      }
-
-	      if (ctx->re + 1 >= ctx->re_end)
-		/* Trailing backslash. */
-		return REG_EESCAPE;
-
-#ifdef REG_LITERAL
-	      if (*(ctx->re + 1) == L'Q')
-		{
-		  DPRINT(("tre_parse: tmp literal: '%.*" STRF "'\n",
-			  REST(ctx->re)));
-		  ctx->cflags |= REG_LITERAL;
-		  temporary_cflags |= REG_LITERAL;
-		  ctx->re += 2;
-		  STACK_PUSHX(stack, int, PARSE_ATOM);
-		  break;
-		}
-#endif /* REG_LITERAL */
-
-	      DPRINT(("tre_parse:  bleep: '%.*" STRF "'\n", REST(ctx->re)));
-	      ctx->re++;
-	      switch (*ctx->re)
-		{
-		case L'b':
-		  result = tre_ast_new_literal(ctx->mem, ASSERTION,
-					       ASSERT_AT_WB, -1);
-		  ctx->re++;
-		  break;
-		case L'B':
-		  result = tre_ast_new_literal(ctx->mem, ASSERTION,
-					       ASSERT_AT_WB_NEG, -1);
-		  ctx->re++;
-		  break;
-		case L'<':
-		  result = tre_ast_new_literal(ctx->mem, ASSERTION,
-					       ASSERT_AT_BOW, -1);
-		  ctx->re++;
-		  break;
-		case L'>':
-		  result = tre_ast_new_literal(ctx->mem, ASSERTION,
-					       ASSERT_AT_EOW, -1);
-		  ctx->re++;
-		  break;
-		case L'x':
-		  ctx->re++;
-		  if (ctx->re[0] != CHAR_LBRACE && ctx->re < ctx->re_end)
-		    {
-		      /* 8 bit hex char. */
-		      char tmp[3] = {0, 0, 0};
-		      long val;
-		      DPRINT(("tre_parse:  8 bit hex: '%.*" STRF "'\n",
-			      REST(ctx->re - 2)));
-
-		      if (tre_isxdigit(ctx->re[0]) && ctx->re < ctx->re_end)
-			{
-			  tmp[0] = (char)ctx->re[0];
-			  ctx->re++;
-			}
-		      if (tre_isxdigit(ctx->re[0]) && ctx->re < ctx->re_end)
-			{
-			  tmp[1] = (char)ctx->re[0];
-			  ctx->re++;
-			}
-		      val = strtol(tmp, NULL, 16);
-		      result = tre_ast_new_literal(ctx->mem, (int)val,
-						   (int)val, ctx->position);
-		      ctx->position++;
-		      break;
-		    }
-		  else if (ctx->re < ctx->re_end)
-		    {
-		      /* Wide char. */
-		      char tmp[32];
-		      long val;
-		      int i = 0;
-		      ctx->re++;
-		      while (ctx->re_end - ctx->re >= 0)
-			{
-			  if (ctx->re[0] == CHAR_RBRACE)
-			    break;
-			  if (tre_isxdigit(ctx->re[0]))
-			    {
-			      tmp[i] = (char)ctx->re[0];
-			      i++;
-			      ctx->re++;
-			      continue;
-			    }
-			  return REG_EBRACE;
-			}
-		      ctx->re++;
-		      tmp[i] = 0;
-		      val = strtol(tmp, NULL, 16);
-		      result = tre_ast_new_literal(ctx->mem, (int)val, (int)val,
-						   ctx->position);
-		      ctx->position++;
-		      break;
-		    }
-		  /*FALLTHROUGH*/
-
-		default:
-		  if (tre_isdigit(*ctx->re))
-		    {
-		      /* Back reference. */
-		      int val = *ctx->re - L'0';
-		      DPRINT(("tre_parse:     backref: '%.*" STRF "'\n",
-			      REST(ctx->re - 1)));
-		      result = tre_ast_new_literal(ctx->mem, BACKREF, val,
-						   ctx->position);
-		      if (result == NULL)
-			return REG_ESPACE;
-		      ctx->position++;
-		      ctx->max_backref = MAX(val, ctx->max_backref);
-		      ctx->re++;
-		    }
-		  else
-		    {
-		      /* Escaped character. */
-		      DPRINT(("tre_parse:     escaped: '%.*" STRF "'\n",
-			      REST(ctx->re - 1)));
-		      result = tre_ast_new_literal(ctx->mem, *ctx->re, *ctx->re,
-						   ctx->position);
-		      ctx->position++;
-		      ctx->re++;
-		    }
-		  break;
-		}
-	      if (result == NULL)
-		return REG_ESPACE;
-	      break;
-
-	    case CHAR_PERIOD:	 /* the any-symbol */
-	      DPRINT(("tre_parse:	  any: '%.*" STRF "'\n",
-		      REST(ctx->re)));
-	      if (ctx->cflags & REG_NEWLINE)
-		{
-		  tre_ast_node_t *tmp1;
-		  tre_ast_node_t *tmp2;
-		  tmp1 = tre_ast_new_literal(ctx->mem, 0, L'\n' - 1,
-					     ctx->position);
-		  if (!tmp1)
-		    return REG_ESPACE;
-		  tmp2 = tre_ast_new_literal(ctx->mem, L'\n' + 1, TRE_CHAR_MAX,
-					     ctx->position + 1);
-		  if (!tmp2)
-		    return REG_ESPACE;
-		  result = tre_ast_new_union(ctx->mem, tmp1, tmp2);
-		  if (!result)
-		    return REG_ESPACE;
-		  ctx->position += 2;
-		}
-	      else
-		{
-		  result = tre_ast_new_literal(ctx->mem, 0, TRE_CHAR_MAX,
-					       ctx->position);
-		  if (!result)
-		    return REG_ESPACE;
-		  ctx->position++;
-		}
-	      ctx->re++;
-	      break;
-
-	    case CHAR_CARET:	 /* beginning of line assertion */
-	      /* '^' has a special meaning everywhere in EREs, and in the
-		 beginning of the RE and after \( is BREs. */
-	      if (ctx->cflags & REG_EXTENDED
-		  || (ctx->re - 2 >= ctx->re_start
-		      && *(ctx->re - 2) == CHAR_BACKSLASH
-		      && *(ctx->re - 1) == CHAR_LPAREN)
-		  || ctx->re == ctx->re_start)
-		{
-		  DPRINT(("tre_parse:	      BOL: '%.*" STRF "'\n",
-			  REST(ctx->re)));
-		  result = tre_ast_new_literal(ctx->mem, ASSERTION,
-					       ASSERT_AT_BOL, -1);
-		  if (result == NULL)
-		    return REG_ESPACE;
-		  ctx->re++;
-		}
-	      else
-		goto parse_literal;
-	      break;
-
-	    case CHAR_DOLLAR:	 /* end of line assertion. */
-	      /* '$' is special everywhere in EREs, and in the end of the
-		 string and before \) is BREs. */
-	      if (ctx->cflags & REG_EXTENDED
-		  || (ctx->re + 2 < ctx->re_end
-		      && *(ctx->re + 1) == CHAR_BACKSLASH
-		      && *(ctx->re + 2) == CHAR_RPAREN)
-		  || ctx->re + 1 == ctx->re_end)
-		{
-		  DPRINT(("tre_parse:	      EOL: '%.*" STRF "'\n",
-			  REST(ctx->re)));
-		  result = tre_ast_new_literal(ctx->mem, ASSERTION,
-					       ASSERT_AT_EOL, -1);
-		  if (result == NULL)
-		    return REG_ESPACE;
-		  ctx->re++;
-		}
-	      else
-		goto parse_literal;
-	      break;
-
-	    default:
-	    parse_literal:
-
-	      if (temporary_cflags && ctx->re + 1 < ctx->re_end
-		  && *ctx->re == CHAR_BACKSLASH && *(ctx->re + 1) == L'E')
-		{
-		  DPRINT(("tre_parse:	 end tmps: '%.*" STRF "'\n",
-			  REST(ctx->re)));
-		  ctx->cflags &= ~temporary_cflags;
-		  temporary_cflags = 0;
-		  ctx->re += 2;
-		  STACK_PUSHX(stack, int, PARSE_PIECE);
-		  break;
-		}
-
-
-	      /* We are expecting an atom.  If the subexpression (or the whole
-		 regexp ends here, we interpret it as an empty expression
-		 (which matches an empty string).  */
-	      if (
-#ifdef REG_LITERAL
-		  !(ctx->cflags & REG_LITERAL) &&
-#endif /* REG_LITERAL */
-		  (ctx->re >= ctx->re_end
-		   || *ctx->re == CHAR_STAR
-		   || (ctx->cflags & REG_EXTENDED
-		       && (*ctx->re == CHAR_PIPE
-			   || *ctx->re == CHAR_LBRACE
-			   || *ctx->re == CHAR_PLUS
-			   || *ctx->re == CHAR_QUESTIONMARK))
-		   /* Test for "\)" in BRE mode. */
-		   || (!(ctx->cflags & REG_EXTENDED)
-		       && ctx->re + 1 < ctx->re_end
-		       && *ctx->re == CHAR_BACKSLASH
-		       && *(ctx->re + 1) == CHAR_LBRACE)))
-		{
-		  DPRINT(("tre_parse:	    empty: '%.*" STRF "'\n",
-			  REST(ctx->re)));
-		  result = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-		  if (!result)
-		    return REG_ESPACE;
-		  break;
-		}
-
-	      DPRINT(("tre_parse:     literal: '%.*" STRF "'\n",
-		      REST(ctx->re)));
-	      /* Note that we can't use an tre_isalpha() test here, since there
-		 may be characters which are alphabetic but neither upper or
-		 lower case. */
-	      if (ctx->cflags & REG_ICASE
-		  && (tre_isupper(*ctx->re) || tre_islower(*ctx->re)))
-		{
-		  tre_ast_node_t *tmp1;
-		  tre_ast_node_t *tmp2;
-
-		  /* XXX - Can there be more than one opposite-case
-		     counterpoints for some character in some locale?  Or
-		     more than two characters which all should be regarded
-		     the same character if case is ignored?  If yes, there
-		     does not seem to be a portable way to detect it.  I guess
-		     that at least for multi-character collating elements there
-		     could be several opposite-case counterpoints, but they
-		     cannot be supported portably anyway. */
-		  tmp1 = tre_ast_new_literal(ctx->mem, tre_toupper(*ctx->re),
-					     tre_toupper(*ctx->re),
-					     ctx->position);
-		  if (!tmp1)
-		    return REG_ESPACE;
-		  tmp2 = tre_ast_new_literal(ctx->mem, tre_tolower(*ctx->re),
-					     tre_tolower(*ctx->re),
-					     ctx->position);
-		  if (!tmp2)
-		    return REG_ESPACE;
-		  result = tre_ast_new_union(ctx->mem, tmp1, tmp2);
-		  if (!result)
-		    return REG_ESPACE;
-		}
-	      else
-		{
-		  result = tre_ast_new_literal(ctx->mem, *ctx->re, *ctx->re,
-					       ctx->position);
-		  if (!result)
-		    return REG_ESPACE;
-		}
-	      ctx->position++;
-	      ctx->re++;
-	      break;
-	    }
-	  break;
-
-	case PARSE_MARK_FOR_SUBMATCH:
-	  {
-	    int submatch_id = tre_stack_pop_int(stack);
-
-	    if (result->submatch_id >= 0)
-	      {
-		tre_ast_node_t *n, *tmp_node;
-		n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-		if (n == NULL)
-		  return REG_ESPACE;
-		tmp_node = tre_ast_new_catenation(ctx->mem, n, result);
-		if (tmp_node == NULL)
-		  return REG_ESPACE;
-		tmp_node->num_submatches = result->num_submatches;
-		result = tmp_node;
-	      }
-	    result->submatch_id = submatch_id;
-	    result->num_submatches++;
-	    break;
-	  }
-
-	case PARSE_RESTORE_CFLAGS:
-	  ctx->cflags = tre_stack_pop_int(stack);
-	  break;
-
-	default:
-	  assert(0);
-	  break;
-	}
-    }
-
-  /* Check for missing closing parentheses. */
-  if (depth > 0)
-    return REG_EPAREN;
-
-  if (status == REG_OK)
-    ctx->result = result;
-
-  return status;
-}
-
-/* EOF */
-/*
-  tre-stack.c - Simple stack implementation
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <stdlib.h>
-#include <assert.h>
-
-
-union tre_stack_item {
-  void *voidptr_value;
-  int int_value;
-};
-
-struct tre_stack_rec {
-  int size;
-  int max_size;
-  int increment;
-  int ptr;
-  union tre_stack_item *stack;
-};
-
-
-tre_stack_t *
-tre_stack_new(int size, int max_size, int increment)
-{
-  tre_stack_t *s;
-
-  s = xmalloc(sizeof(*s));
-  if (s != NULL)
-    {
-      s->stack = xmalloc(sizeof(*s->stack) * size);
-      if (s->stack == NULL)
-	{
-	  xfree(s);
-	  return NULL;
-	}
-      s->size = size;
-      s->max_size = max_size;
-      s->increment = increment;
-      s->ptr = 0;
-    }
-  return s;
-}
-
-void
-tre_stack_destroy(tre_stack_t *s)
-{
-  xfree(s->stack);
-  xfree(s);
-}
-
-int
-tre_stack_num_objects(tre_stack_t *s)
-{
-  return s->ptr;
-}
-
-static reg_errcode_t
-tre_stack_push(tre_stack_t *s, union tre_stack_item value)
-{
-  if (s->ptr < s->size)
-    {
-      s->stack[s->ptr] = value;
-      s->ptr++;
-    }
-  else
-    {
-      if (s->size >= s->max_size)
-	{
-	  DPRINT(("tre_stack_push: stack full\n"));
-	  return REG_ESPACE;
-	}
-      else
-	{
-	  union tre_stack_item *new_buffer;
-	  int new_size;
-	  DPRINT(("tre_stack_push: trying to realloc more space\n"));
-	  new_size = s->size + s->increment;
-	  if (new_size > s->max_size)
-	    new_size = s->max_size;
-	  new_buffer = xrealloc(s->stack, sizeof(*new_buffer) * new_size);
-	  if (new_buffer == NULL)
-	    {
-	      DPRINT(("tre_stack_push: realloc failed.\n"));
-	      return REG_ESPACE;
-	    }
-	  DPRINT(("tre_stack_push: realloc succeeded.\n"));
-	  assert(new_size > s->size);
-	  s->size = new_size;
-	  s->stack = new_buffer;
-	  tre_stack_push(s, value);
-	}
-    }
-  return REG_OK;
-}
-
-#define define_pushf(typetag, type)  \
-  declare_pushf(typetag, type) {     \
-    union tre_stack_item item;	     \
-    item.typetag ## _value = value;  \
-    return tre_stack_push(s, item);  \
-}
-
-define_pushf(int, int)
-define_pushf(voidptr, void *)
-
-#define define_popf(typetag, type)		    \
-  declare_popf(typetag, type) {			    \
-    return s->stack[--s->ptr].typetag ## _value;    \
-  }
-
-define_popf(int, int)
-define_popf(voidptr, void *)
-
-/* EOF */
-/*
-  xmalloc.c - Simple malloc debugging library implementation
-
-  This software is released under a BSD-style license.
-  See the file LICENSE for details and copyright.
-
-*/
-
-/*
-  TODO:
-   - red zones
-   - group dumps by source location
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif /* HAVE_CONFIG_H */
-
-#include <stdlib.h>
-#include <assert.h>
-#include <stdio.h>
-#define XMALLOC_INTERNAL 1
-
-
-/*
-  Internal stuff.
-*/
-
-typedef struct hashTableItemRec {
-  void *ptr;
-  int bytes;
-  const char *file;
-  int line;
-  const char *func;
-  struct hashTableItemRec *next;
-} hashTableItem;
-
-typedef struct {
-  hashTableItem **table;
-} hashTable;
-
-static int xmalloc_peak;
-int xmalloc_current;
-static int xmalloc_peak_blocks;
-int xmalloc_current_blocks;
-static int xmalloc_fail_after;
-
-#define TABLE_BITS 8
-#define TABLE_MASK ((1 << TABLE_BITS) - 1)
-#define TABLE_SIZE (1 << TABLE_BITS)
-
-static hashTable *
-hash_table_new(void)
-{
-  hashTable *tbl;
-
-  tbl = malloc(sizeof(*tbl));
-
-  if (tbl != NULL)
-    {
-      tbl->table = calloc(TABLE_SIZE, sizeof(*tbl->table));
-
-      if (tbl->table == NULL)
-	{
-	  free(tbl);
-	  return NULL;
-	}
-    }
-
-  return tbl;
-}
-
-static int
-hash_void_ptr(void *ptr)
-{
-  int hash;
-  int i;
-
-  /* I took this hash function just off the top of my head, I have
-     no idea whether it is bad or very bad. */
-  hash = 0;
-  for (i = 0; i < (int)sizeof(ptr)*8 / TABLE_BITS; i++)
-    {
-      hash ^= (unsigned long)ptr >> i*8;
-      hash += i * 17;
-      hash &= TABLE_MASK;
-    }
-  return hash;
-}
-
-static void
-hash_table_add(hashTable *tbl, void *ptr, int bytes,
-	       const char *file, int line, const char *func)
-{
-  int i;
-  hashTableItem *item, *new;
-
-  i = hash_void_ptr(ptr);
-
-  item = tbl->table[i];
-  if (item != NULL)
-    while (item->next != NULL)
-      item = item->next;
-
-  new = malloc(sizeof(*new));
-  assert(new != NULL);
-  new->ptr = ptr;
-  new->bytes = bytes;
-  new->file = file;
-  new->line = line;
-  new->func = func;
-  new->next = NULL;
-  if (item != NULL)
-    item->next = new;
-  else
-    tbl->table[i] = new;
-
-  xmalloc_current += bytes;
-  if (xmalloc_current > xmalloc_peak)
-    xmalloc_peak = xmalloc_current;
-  xmalloc_current_blocks++;
-  if (xmalloc_current_blocks > xmalloc_peak_blocks)
-    xmalloc_peak_blocks = xmalloc_current_blocks;
-}
-
-static void
-hash_table_del(hashTable *tbl, void *ptr)
-{
-  int i;
-  hashTableItem *item, *prev;
-
-  i = hash_void_ptr(ptr);
-
-  item = tbl->table[i];
-  if (item == NULL)
-    {
-      printf("xfree: invalid ptr %p\n", ptr);
-      abort();
-    }
-  prev = NULL;
-  while (item->ptr != ptr)
-    {
-      prev = item;
-      item = item->next;
-    }
-  if (item->ptr != ptr)
-    {
-      printf("xfree: invalid ptr %p\n", ptr);
-      abort();
-    }
-
-  xmalloc_current -= item->bytes;
-  xmalloc_current_blocks--;
-
-  if (prev != NULL)
-    {
-      prev->next = item->next;
-      free(item);
-    }
-  else
-    {
-      tbl->table[i] = item->next;
-      free(item);
-    }
-}
-
-static hashTable *xmalloc_table = NULL;
-
-static void
-xmalloc_init(void)
-{
-  if (xmalloc_table == NULL)
-    {
-      xmalloc_table = hash_table_new();
-      xmalloc_peak = 0;
-      xmalloc_peak_blocks = 0;
-      xmalloc_current = 0;
-      xmalloc_current_blocks = 0;
-      xmalloc_fail_after = -1;
-    }
-  assert(xmalloc_table != NULL);
-  assert(xmalloc_table->table != NULL);
-}
-
-
-
-/*
-  Public API.
-*/
-
-void
-xmalloc_configure(int fail_after)
-{
-  xmalloc_init();
-  xmalloc_fail_after = fail_after;
-}
-
-int
-xmalloc_dump_leaks(void)
-{
-  int i;
-  int num_leaks = 0;
-  int leaked_bytes = 0;
-  hashTableItem *item;
-
-  xmalloc_init();
-
-  for (i = 0; i < TABLE_SIZE; i++)
-    {
-      item = xmalloc_table->table[i];
-      while (item != NULL)
-	{
-	  printf("%s:%d: %s: %d bytes at %p not freed\n",
-		 item->file, item->line, item->func, item->bytes, item->ptr);
-	  num_leaks++;
-	  leaked_bytes += item->bytes;
-	  item = item->next;
-	}
-    }
-  if (num_leaks == 0)
-    printf("No memory leaks.\n");
-  else
-    printf("%d unfreed memory chuncks, total %d unfreed bytes.\n",
-	   num_leaks, leaked_bytes);
-  printf("Peak memory consumption %d bytes (%.1f kB, %.1f MB) in %d blocks ",
-	 xmalloc_peak, (double)xmalloc_peak / 1024,
-	 (double)xmalloc_peak / (1024*1024), xmalloc_peak_blocks);
-  printf("(average ");
-  if (xmalloc_peak_blocks)
-    printf("%d", ((xmalloc_peak + xmalloc_peak_blocks / 2)
-		  / xmalloc_peak_blocks));
-  else
-    printf("N/A");
-  printf(" bytes per block).\n");
-
-  return num_leaks;
-}
-
-void *
-xmalloc_impl(size_t size, const char *file, int line, const char *func)
-{
-  void *ptr;
-
-  xmalloc_init();
-  assert(size > 0);
-
-  if (xmalloc_fail_after == 0)
-    {
-      xmalloc_fail_after = -2;
-#if 0
-      printf("xmalloc: forced failure %s:%d: %s\n", file, line, func);
-#endif
-      return NULL;
-    }
-  else if (xmalloc_fail_after == -2)
-    {
-      printf("xmalloc: called after failure from %s:%d: %s\n",
-	     file, line, func);
-      assert(0);
-    }
-  else if (xmalloc_fail_after > 0)
-    xmalloc_fail_after--;
-
-  ptr = malloc(size);
-  if (ptr != NULL)
-    hash_table_add(xmalloc_table, ptr, (int)size, file, line, func);
-  return ptr;
-}
-
-void *
-xcalloc_impl(size_t nmemb, size_t size, const char *file, int line,
-	     const char *func)
-{
-  void *ptr;
-
-  xmalloc_init();
-  assert(size > 0);
-
-  if (xmalloc_fail_after == 0)
-    {
-      xmalloc_fail_after = -2;
-#if 0
-      printf("xcalloc: forced failure %s:%d: %s\n", file, line, func);
-#endif
-      return NULL;
-    }
-  else if (xmalloc_fail_after == -2)
-    {
-      printf("xcalloc: called after failure from %s:%d: %s\n",
-	     file, line, func);
-      assert(0);
-    }
-  else if (xmalloc_fail_after > 0)
-    xmalloc_fail_after--;
-
-  ptr = calloc(nmemb, size);
-  if (ptr != NULL)
-    hash_table_add(xmalloc_table, ptr, (int)(nmemb * size), file, line, func);
-  return ptr;
-}
-
-void
-xfree_impl(void *ptr, const char *file, int line, const char *func)
-{
-  /*LINTED*/(void)&file;
-  /*LINTED*/(void)&line;
-  /*LINTED*/(void)&func;
-  xmalloc_init();
-
-  if (ptr != NULL)
-    hash_table_del(xmalloc_table, ptr);
-  free(ptr);
-}
-
-void *
-xrealloc_impl(void *ptr, size_t new_size, const char *file, int line,
-	      const char *func)
-{
-  void *new_ptr;
-
-  xmalloc_init();
-  assert(ptr != NULL);
-  assert(new_size > 0);
-
-  if (xmalloc_fail_after == 0)
-    {
-      xmalloc_fail_after = -2;
-      return NULL;
-    }
-  else if (xmalloc_fail_after == -2)
-    {
-      printf("xrealloc: called after failure from %s:%d: %s\n",
-	     file, line, func);
-      assert(0);
-    }
-  else if (xmalloc_fail_after > 0)
-    xmalloc_fail_after--;
-
-  new_ptr = realloc(ptr, new_size);
-  if (new_ptr != NULL)
-    {
-      hash_table_del(xmalloc_table, ptr);
-      hash_table_add(xmalloc_table, new_ptr, (int)new_size, file, line, func);
-    }
-  return new_ptr;
-}
-
-
-
-/* EOF */
diff --git a/lib/wrappers/tre/version.txt b/lib/wrappers/tre/version.txt
deleted file mode 100755
index 4d01880a7..000000000
--- a/lib/wrappers/tre/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-0.7.6
\ No newline at end of file
diff --git a/lib/wrappers/x11/cursorfont.nim b/lib/wrappers/x11/cursorfont.nim
deleted file mode 100755
index b262ad7c1..000000000
--- a/lib/wrappers/x11/cursorfont.nim
+++ /dev/null
@@ -1,110 +0,0 @@
-# $Xorg: cursorfont.h,v 1.4 2001/02/09 02:03:39 xorgcvs Exp $ 
-#
-#
-#Copyright 1987, 1998  The Open Group
-#
-#Permission to use, copy, modify, distribute, and sell this software and its
-#documentation for any purpose is hereby granted without fee, provided that
-#the above copyright notice appear in all copies and that both that
-#copyright notice and this permission notice appear in supporting
-#documentation.
-#
-#The above copyright notice and this permission notice shall be included
-#in all copies or substantial portions of the Software.
-#
-#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-#OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-#IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-#OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-#ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-#OTHER DEALINGS IN THE SOFTWARE.
-#
-#Except as contained in this notice, the name of The Open Group shall
-#not be used in advertising or otherwise to promote the sale, use or
-#other dealings in this Software without prior written authorization
-#from The Open Group.
-#
-#
-
-const 
-  XC_num_glyphs* = 154
-  XC_X_cursor* = 0
-  XC_arrow* = 2
-  XC_based_arrow_down* = 4
-  XC_based_arrow_up* = 6
-  XC_boat* = 8
-  XC_bogosity* = 10
-  XC_bottom_left_corner* = 12
-  XC_bottom_right_corner* = 14
-  XC_bottom_side* = 16
-  XC_bottom_tee* = 18
-  XC_box_spiral* = 20
-  XC_center_ptr* = 22
-  XC_circle* = 24
-  XC_clock* = 26
-  XC_coffee_mug* = 28
-  XC_cross* = 30
-  XC_cross_reverse* = 32
-  XC_crosshair* = 34
-  XC_diamond_cross* = 36
-  XC_dot* = 38
-  XC_dotbox* = 40
-  XC_double_arrow* = 42
-  XC_draft_large* = 44
-  XC_draft_small* = 46
-  XC_draped_box* = 48
-  XC_exchange* = 50
-  XC_fleur* = 52
-  XC_gobbler* = 54
-  XC_gumby* = 56
-  XC_hand1* = 58
-  XC_hand2* = 60
-  XC_heart* = 62
-  XC_icon* = 64
-  XC_iron_cross* = 66
-  XC_left_ptr* = 68
-  XC_left_side* = 70
-  XC_left_tee* = 72
-  XC_leftbutton* = 74
-  XC_ll_angle* = 76
-  XC_lr_angle* = 78
-  XC_man* = 80
-  XC_middlebutton* = 82
-  XC_mouse* = 84
-  XC_pencil* = 86
-  XC_pirate* = 88
-  XC_plus* = 90
-  XC_question_arrow* = 92
-  XC_right_ptr* = 94
-  XC_right_side* = 96
-  XC_right_tee* = 98
-  XC_rightbutton* = 100
-  XC_rtl_logo* = 102
-  XC_sailboat* = 104
-  XC_sb_down_arrow* = 106
-  XC_sb_h_double_arrow* = 108
-  XC_sb_left_arrow* = 110
-  XC_sb_right_arrow* = 112
-  XC_sb_up_arrow* = 114
-  XC_sb_v_double_arrow* = 116
-  XC_shuttle* = 118
-  XC_sizing* = 120
-  XC_spider* = 122
-  XC_spraycan* = 124
-  XC_star* = 126
-  XC_target* = 128
-  XC_tcross* = 130
-  XC_top_left_arrow* = 132
-  XC_top_left_corner* = 134
-  XC_top_right_corner* = 136
-  XC_top_side* = 138
-  XC_top_tee* = 140
-  XC_trek* = 142
-  XC_ul_angle* = 144
-  XC_umbrella* = 146
-  XC_ur_angle* = 148
-  XC_watch* = 150
-  XC_xterm* = 152
-
-# implementation
diff --git a/lib/wrappers/x11/keysym.nim b/lib/wrappers/x11/keysym.nim
deleted file mode 100755
index b1fe13b80..000000000
--- a/lib/wrappers/x11/keysym.nim
+++ /dev/null
@@ -1,1925 +0,0 @@
-#
-#Converted from X11/keysym.h and X11/keysymdef.h
-#
-#Capital letter consts renamed from XK_... to XKc_...
-# (since Pascal isn't case-sensitive)
-#
-#i.e.
-#C      Pascal
-#XK_a   XK_a
-#XK_A   XKc_A
-#
-
-#* default keysyms *
-
-const 
-  XK_VoidSymbol* = 0x00FFFFFF # void symbol 
-
-when defined(XK_MISCELLANY) or true: 
-  const
-    #*
-    # * TTY Functions, cleverly chosen to map to ascii, for convenience of
-    # * programming, but could have been arbitrary (at the cost of lookup
-    # * tables in client code.
-    # *
-    XK_BackSpace* = 0x0000FF08  # back space, back char 
-    XK_Tab* = 0x0000FF09
-    XK_Linefeed* = 0x0000FF0A   # Linefeed, LF 
-    XK_Clear* = 0x0000FF0B
-    XK_Return* = 0x0000FF0D     # Return, enter 
-    XK_Pause* = 0x0000FF13      # Pause, hold 
-    XK_Scroll_Lock* = 0x0000FF14
-    XK_Sys_Req* = 0x0000FF15
-    XK_Escape* = 0x0000FF1B
-    XK_Delete* = 0x0000FFFF     # Delete, rubout 
-                                # International & multi-key character composition 
-    XK_Multi_key* = 0x0000FF20  # Multi-key character compose 
-    XK_Codeinput* = 0x0000FF37
-    XK_SingleCandidate* = 0x0000FF3C
-    XK_MultipleCandidate* = 0x0000FF3D
-    XK_PreviousCandidate* = 0x0000FF3E # Japanese keyboard support 
-    XK_Kanji* = 0x0000FF21      # Kanji, Kanji convert 
-    XK_Muhenkan* = 0x0000FF22   # Cancel Conversion 
-    XK_Henkan_Mode* = 0x0000FF23 # Start/Stop Conversion 
-    XK_Henkan* = 0x0000FF23     # Alias for Henkan_Mode 
-    XK_Romaji* = 0x0000FF24     # to Romaji 
-    XK_Hiragana* = 0x0000FF25   # to Hiragana 
-    XK_Katakana* = 0x0000FF26   # to Katakana 
-    XK_Hiragana_Katakana* = 0x0000FF27 # Hiragana/Katakana toggle 
-    XK_Zenkaku* = 0x0000FF28    # to Zenkaku 
-    XK_Hankaku* = 0x0000FF29    # to Hankaku 
-    XK_Zenkaku_Hankaku* = 0x0000FF2A # Zenkaku/Hankaku toggle 
-    XK_Touroku* = 0x0000FF2B    # Add to Dictionary 
-    XK_Massyo* = 0x0000FF2C     # Delete from Dictionary 
-    XK_Kana_Lock* = 0x0000FF2D  # Kana Lock 
-    XK_Kana_Shift* = 0x0000FF2E # Kana Shift 
-    XK_Eisu_Shift* = 0x0000FF2F # Alphanumeric Shift 
-    XK_Eisu_toggle* = 0x0000FF30 # Alphanumeric toggle 
-    XK_Kanji_Bangou* = 0x0000FF37 # Codeinput 
-    XK_Zen_Koho* = 0x0000FF3D   # Multiple/All Candidate(s) 
-    XK_Mae_Koho* = 0x0000FF3E   # Previous Candidate 
-                                # = $FF31 thru = $FF3F are under XK_KOREAN 
-                                # Cursor control & motion 
-    XK_Home* = 0x0000FF50
-    XK_Left* = 0x0000FF51       # Move left, left arrow 
-    XK_Up* = 0x0000FF52         # Move up, up arrow 
-    XK_Right* = 0x0000FF53      # Move right, right arrow 
-    XK_Down* = 0x0000FF54       # Move down, down arrow 
-    XK_Prior* = 0x0000FF55      # Prior, previous 
-    XK_Page_Up* = 0x0000FF55
-    XK_Next* = 0x0000FF56       # Next 
-    XK_Page_Down* = 0x0000FF56
-    XK_End* = 0x0000FF57        # EOL 
-    XK_Begin* = 0x0000FF58      # BOL 
-                                # Misc Functions 
-    XK_Select* = 0x0000FF60     # Select, mark 
-    XK_Print* = 0x0000FF61
-    XK_Execute* = 0x0000FF62    # Execute, run, do 
-    XK_Insert* = 0x0000FF63     # Insert, insert here 
-    XK_Undo* = 0x0000FF65       # Undo, oops 
-    XK_Redo* = 0x0000FF66       # redo, again 
-    XK_Menu* = 0x0000FF67
-    XK_Find* = 0x0000FF68       # Find, search 
-    XK_Cancel* = 0x0000FF69     # Cancel, stop, abort, exit 
-    XK_Help* = 0x0000FF6A       # Help 
-    XK_Break* = 0x0000FF6B
-    XK_Mode_switch* = 0x0000FF7E # Character set switch 
-    XK_script_switch* = 0x0000FF7E # Alias for mode_switch 
-    XK_Num_Lock* = 0x0000FF7F   # Keypad Functions, keypad numbers cleverly chosen to map to ascii 
-    XK_KP_Space* = 0x0000FF80   # space 
-    XK_KP_Tab* = 0x0000FF89
-    XK_KP_Enter* = 0x0000FF8D   # enter 
-    XK_KP_F1* = 0x0000FF91      # PF1, KP_A, ... 
-    XK_KP_F2* = 0x0000FF92
-    XK_KP_F3* = 0x0000FF93
-    XK_KP_F4* = 0x0000FF94
-    XK_KP_Home* = 0x0000FF95
-    XK_KP_Left* = 0x0000FF96
-    XK_KP_Up* = 0x0000FF97
-    XK_KP_Right* = 0x0000FF98
-    XK_KP_Down* = 0x0000FF99
-    XK_KP_Prior* = 0x0000FF9A
-    XK_KP_Page_Up* = 0x0000FF9A
-    XK_KP_Next* = 0x0000FF9B
-    XK_KP_Page_Down* = 0x0000FF9B
-    XK_KP_End* = 0x0000FF9C
-    XK_KP_Begin* = 0x0000FF9D
-    XK_KP_Insert* = 0x0000FF9E
-    XK_KP_Delete* = 0x0000FF9F
-    XK_KP_Equal* = 0x0000FFBD   # equals 
-    XK_KP_Multiply* = 0x0000FFAA
-    XK_KP_Add* = 0x0000FFAB
-    XK_KP_Separator* = 0x0000FFAC # separator, often comma 
-    XK_KP_Subtract* = 0x0000FFAD
-    XK_KP_Decimal* = 0x0000FFAE
-    XK_KP_Divide* = 0x0000FFAF
-    XK_KP_0* = 0x0000FFB0
-    XK_KP_1* = 0x0000FFB1
-    XK_KP_2* = 0x0000FFB2
-    XK_KP_3* = 0x0000FFB3
-    XK_KP_4* = 0x0000FFB4
-    XK_KP_5* = 0x0000FFB5
-    XK_KP_6* = 0x0000FFB6
-    XK_KP_7* = 0x0000FFB7
-    XK_KP_8* = 0x0000FFB8
-    XK_KP_9* = 0x0000FFB9 #*
-                          # * Auxilliary Functions; note the duplicate definitions for left and right
-                          # * function keys;  Sun keyboards and a few other manufactures have such
-                          # * function key groups on the left and/or right sides of the keyboard.
-                          # * We've not found a keyboard with more than 35 function keys total.
-                          # *
-    XK_F1* = 0x0000FFBE
-    XK_F2* = 0x0000FFBF
-    XK_F3* = 0x0000FFC0
-    XK_F4* = 0x0000FFC1
-    XK_F5* = 0x0000FFC2
-    XK_F6* = 0x0000FFC3
-    XK_F7* = 0x0000FFC4
-    XK_F8* = 0x0000FFC5
-    XK_F9* = 0x0000FFC6
-    XK_F10* = 0x0000FFC7
-    XK_F11* = 0x0000FFC8
-    XK_L1* = 0x0000FFC8
-    XK_F12* = 0x0000FFC9
-    XK_L2* = 0x0000FFC9
-    XK_F13* = 0x0000FFCA
-    XK_L3* = 0x0000FFCA
-    XK_F14* = 0x0000FFCB
-    XK_L4* = 0x0000FFCB
-    XK_F15* = 0x0000FFCC
-    XK_L5* = 0x0000FFCC
-    XK_F16* = 0x0000FFCD
-    XK_L6* = 0x0000FFCD
-    XK_F17* = 0x0000FFCE
-    XK_L7* = 0x0000FFCE
-    XK_F18* = 0x0000FFCF
-    XK_L8* = 0x0000FFCF
-    XK_F19* = 0x0000FFD0
-    XK_L9* = 0x0000FFD0
-    XK_F20* = 0x0000FFD1
-    XK_L10* = 0x0000FFD1
-    XK_F21* = 0x0000FFD2
-    XK_R1* = 0x0000FFD2
-    XK_F22* = 0x0000FFD3
-    XK_R2* = 0x0000FFD3
-    XK_F23* = 0x0000FFD4
-    XK_R3* = 0x0000FFD4
-    XK_F24* = 0x0000FFD5
-    XK_R4* = 0x0000FFD5
-    XK_F25* = 0x0000FFD6
-    XK_R5* = 0x0000FFD6
-    XK_F26* = 0x0000FFD7
-    XK_R6* = 0x0000FFD7
-    XK_F27* = 0x0000FFD8
-    XK_R7* = 0x0000FFD8
-    XK_F28* = 0x0000FFD9
-    XK_R8* = 0x0000FFD9
-    XK_F29* = 0x0000FFDA
-    XK_R9* = 0x0000FFDA
-    XK_F30* = 0x0000FFDB
-    XK_R10* = 0x0000FFDB
-    XK_F31* = 0x0000FFDC
-    XK_R11* = 0x0000FFDC
-    XK_F32* = 0x0000FFDD
-    XK_R12* = 0x0000FFDD
-    XK_F33* = 0x0000FFDE
-    XK_R13* = 0x0000FFDE
-    XK_F34* = 0x0000FFDF
-    XK_R14* = 0x0000FFDF
-    XK_F35* = 0x0000FFE0
-    XK_R15* = 0x0000FFE0        # Modifiers 
-    XK_Shift_L* = 0x0000FFE1    # Left shift 
-    XK_Shift_R* = 0x0000FFE2    # Right shift 
-    XK_Control_L* = 0x0000FFE3  # Left control 
-    XK_Control_R* = 0x0000FFE4  # Right control 
-    XK_Caps_Lock* = 0x0000FFE5  # Caps lock 
-    XK_Shift_Lock* = 0x0000FFE6 # Shift lock 
-    XK_Meta_L* = 0x0000FFE7     # Left meta 
-    XK_Meta_R* = 0x0000FFE8     # Right meta 
-    XK_Alt_L* = 0x0000FFE9      # Left alt 
-    XK_Alt_R* = 0x0000FFEA      # Right alt 
-    XK_Super_L* = 0x0000FFEB    # Left super 
-    XK_Super_R* = 0x0000FFEC    # Right super 
-    XK_Hyper_L* = 0x0000FFED    # Left hyper 
-    XK_Hyper_R* = 0x0000FFEE    # Right hyper 
-# XK_MISCELLANY 
-#*
-# * ISO 9995 Function and Modifier Keys
-# * Byte 3 = = $FE
-# *
-
-when defined(XK_XKB_KEYS) or true: 
-  const
-    XK_ISO_Lock* = 0x0000FE01
-    XK_ISO_Level2_Latch* = 0x0000FE02
-    XK_ISO_Level3_Shift* = 0x0000FE03
-    XK_ISO_Level3_Latch* = 0x0000FE04
-    XK_ISO_Level3_Lock* = 0x0000FE05
-    XK_ISO_Group_Shift* = 0x0000FF7E # Alias for mode_switch 
-    XK_ISO_Group_Latch* = 0x0000FE06
-    XK_ISO_Group_Lock* = 0x0000FE07
-    XK_ISO_Next_Group* = 0x0000FE08
-    XK_ISO_Next_Group_Lock* = 0x0000FE09
-    XK_ISO_Prev_Group* = 0x0000FE0A
-    XK_ISO_Prev_Group_Lock* = 0x0000FE0B
-    XK_ISO_First_Group* = 0x0000FE0C
-    XK_ISO_First_Group_Lock* = 0x0000FE0D
-    XK_ISO_Last_Group* = 0x0000FE0E
-    XK_ISO_Last_Group_Lock* = 0x0000FE0F
-    XK_ISO_Left_Tab* = 0x0000FE20
-    XK_ISO_Move_Line_Up* = 0x0000FE21
-    XK_ISO_Move_Line_Down* = 0x0000FE22
-    XK_ISO_Partial_Line_Up* = 0x0000FE23
-    XK_ISO_Partial_Line_Down* = 0x0000FE24
-    XK_ISO_Partial_Space_Left* = 0x0000FE25
-    XK_ISO_Partial_Space_Right* = 0x0000FE26
-    XK_ISO_Set_Margin_Left* = 0x0000FE27
-    XK_ISO_Set_Margin_Right* = 0x0000FE28
-    XK_ISO_Release_Margin_Left* = 0x0000FE29
-    XK_ISO_Release_Margin_Right* = 0x0000FE2A
-    XK_ISO_Release_Both_Margins* = 0x0000FE2B
-    XK_ISO_Fast_Cursor_Left* = 0x0000FE2C
-    XK_ISO_Fast_Cursor_Right* = 0x0000FE2D
-    XK_ISO_Fast_Cursor_Up* = 0x0000FE2E
-    XK_ISO_Fast_Cursor_Down* = 0x0000FE2F
-    XK_ISO_Continuous_Underline* = 0x0000FE30
-    XK_ISO_Discontinuous_Underline* = 0x0000FE31
-    XK_ISO_Emphasize* = 0x0000FE32
-    XK_ISO_Center_Object* = 0x0000FE33
-    XK_ISO_Enter* = 0x0000FE34
-    XK_dead_grave* = 0x0000FE50
-    XK_dead_acute* = 0x0000FE51
-    XK_dead_circumflex* = 0x0000FE52
-    XK_dead_tilde* = 0x0000FE53
-    XK_dead_macron* = 0x0000FE54
-    XK_dead_breve* = 0x0000FE55
-    XK_dead_abovedot* = 0x0000FE56
-    XK_dead_diaeresis* = 0x0000FE57
-    XK_dead_abovering* = 0x0000FE58
-    XK_dead_doubleacute* = 0x0000FE59
-    XK_dead_caron* = 0x0000FE5A
-    XK_dead_cedilla* = 0x0000FE5B
-    XK_dead_ogonek* = 0x0000FE5C
-    XK_dead_iota* = 0x0000FE5D
-    XK_dead_voiced_sound* = 0x0000FE5E
-    XK_dead_semivoiced_sound* = 0x0000FE5F
-    XK_dead_belowdot* = 0x0000FE60
-    XK_dead_hook* = 0x0000FE61
-    XK_dead_horn* = 0x0000FE62
-    XK_First_Virtual_Screen* = 0x0000FED0
-    XK_Prev_Virtual_Screen* = 0x0000FED1
-    XK_Next_Virtual_Screen* = 0x0000FED2
-    XK_Last_Virtual_Screen* = 0x0000FED4
-    XK_Terminate_Server* = 0x0000FED5
-    XK_AccessX_Enable* = 0x0000FE70
-    XK_AccessX_Feedback_Enable* = 0x0000FE71
-    XK_RepeatKeys_Enable* = 0x0000FE72
-    XK_SlowKeys_Enable* = 0x0000FE73
-    XK_BounceKeys_Enable* = 0x0000FE74
-    XK_StickyKeys_Enable* = 0x0000FE75
-    XK_MouseKeys_Enable* = 0x0000FE76
-    XK_MouseKeys_Accel_Enable* = 0x0000FE77
-    XK_Overlay1_Enable* = 0x0000FE78
-    XK_Overlay2_Enable* = 0x0000FE79
-    XK_AudibleBell_Enable* = 0x0000FE7A
-    XK_Pointer_Left* = 0x0000FEE0
-    XK_Pointer_Right* = 0x0000FEE1
-    XK_Pointer_Up* = 0x0000FEE2
-    XK_Pointer_Down* = 0x0000FEE3
-    XK_Pointer_UpLeft* = 0x0000FEE4
-    XK_Pointer_UpRight* = 0x0000FEE5
-    XK_Pointer_DownLeft* = 0x0000FEE6
-    XK_Pointer_DownRight* = 0x0000FEE7
-    XK_Pointer_Button_Dflt* = 0x0000FEE8
-    XK_Pointer_Button1* = 0x0000FEE9
-    XK_Pointer_Button2* = 0x0000FEEA
-    XK_Pointer_Button3* = 0x0000FEEB
-    XK_Pointer_Button4* = 0x0000FEEC
-    XK_Pointer_Button5* = 0x0000FEED
-    XK_Pointer_DblClick_Dflt* = 0x0000FEEE
-    XK_Pointer_DblClick1* = 0x0000FEEF
-    XK_Pointer_DblClick2* = 0x0000FEF0
-    XK_Pointer_DblClick3* = 0x0000FEF1
-    XK_Pointer_DblClick4* = 0x0000FEF2
-    XK_Pointer_DblClick5* = 0x0000FEF3
-    XK_Pointer_Drag_Dflt* = 0x0000FEF4
-    XK_Pointer_Drag1* = 0x0000FEF5
-    XK_Pointer_Drag2* = 0x0000FEF6
-    XK_Pointer_Drag3* = 0x0000FEF7
-    XK_Pointer_Drag4* = 0x0000FEF8
-    XK_Pointer_Drag5* = 0x0000FEFD
-    XK_Pointer_EnableKeys* = 0x0000FEF9
-    XK_Pointer_Accelerate* = 0x0000FEFA
-    XK_Pointer_DfltBtnNext* = 0x0000FEFB
-    XK_Pointer_DfltBtnPrev* = 0x0000FEFC
-  #*
-  # * 3270 Terminal Keys
-  # * Byte 3 = = $FD
-  # *
-
-when defined(XK_3270) or true: 
-  const
-    XK_3270_Duplicate* = 0x0000FD01
-    XK_3270_FieldMark* = 0x0000FD02
-    XK_3270_Right2* = 0x0000FD03
-    XK_3270_Left2* = 0x0000FD04
-    XK_3270_BackTab* = 0x0000FD05
-    XK_3270_EraseEOF* = 0x0000FD06
-    XK_3270_EraseInput* = 0x0000FD07
-    XK_3270_Reset* = 0x0000FD08
-    XK_3270_Quit* = 0x0000FD09
-    XK_3270_PA1* = 0x0000FD0A
-    XK_3270_PA2* = 0x0000FD0B
-    XK_3270_PA3* = 0x0000FD0C
-    XK_3270_Test* = 0x0000FD0D
-    XK_3270_Attn* = 0x0000FD0E
-    XK_3270_CursorBlink* = 0x0000FD0F
-    XK_3270_AltCursor* = 0x0000FD10
-    XK_3270_KeyClick* = 0x0000FD11
-    XK_3270_Jump* = 0x0000FD12
-    XK_3270_Ident* = 0x0000FD13
-    XK_3270_Rule* = 0x0000FD14
-    XK_3270_Copy* = 0x0000FD15
-    XK_3270_Play* = 0x0000FD16
-    XK_3270_Setup* = 0x0000FD17
-    XK_3270_Record* = 0x0000FD18
-    XK_3270_ChangeScreen* = 0x0000FD19
-    XK_3270_DeleteWord* = 0x0000FD1A
-    XK_3270_ExSelect* = 0x0000FD1B
-    XK_3270_CursorSelect* = 0x0000FD1C
-    XK_3270_PrintScreen* = 0x0000FD1D
-    XK_3270_Enter* = 0x0000FD1E
-#*
-# *  Latin 1
-# *  Byte 3 = 0
-# *
-
-when defined(XK_LATIN1) or true: 
-  const
-    XK_space* = 0x00000020
-    XK_exclam* = 0x00000021
-    XK_quotedbl* = 0x00000022
-    XK_numbersign* = 0x00000023
-    XK_dollar* = 0x00000024
-    XK_percent* = 0x00000025
-    XK_ampersand* = 0x00000026
-    XK_apostrophe* = 0x00000027
-    XK_quoteright* = 0x00000027 # deprecated 
-    XK_parenleft* = 0x00000028
-    XK_parenright* = 0x00000029
-    XK_asterisk* = 0x0000002A
-    XK_plus* = 0x0000002B
-    XK_comma* = 0x0000002C
-    XK_minus* = 0x0000002D
-    XK_period* = 0x0000002E
-    XK_slash* = 0x0000002F
-    XK_0* = 0x00000030
-    XK_1* = 0x00000031
-    XK_2* = 0x00000032
-    XK_3* = 0x00000033
-    XK_4* = 0x00000034
-    XK_5* = 0x00000035
-    XK_6* = 0x00000036
-    XK_7* = 0x00000037
-    XK_8* = 0x00000038
-    XK_9* = 0x00000039
-    XK_colon* = 0x0000003A
-    XK_semicolon* = 0x0000003B
-    XK_less* = 0x0000003C
-    XK_equal* = 0x0000003D
-    XK_greater* = 0x0000003E
-    XK_question* = 0x0000003F
-    XK_at* = 0x00000040
-    XKc_A* = 0x00000041
-    XKc_B* = 0x00000042
-    XKc_C* = 0x00000043
-    XKc_D* = 0x00000044
-    XKc_E* = 0x00000045
-    XKc_F* = 0x00000046
-    XKc_G* = 0x00000047
-    XKc_H* = 0x00000048
-    XKc_I* = 0x00000049
-    XKc_J* = 0x0000004A
-    XKc_K* = 0x0000004B
-    XKc_L* = 0x0000004C
-    XKc_M* = 0x0000004D
-    XKc_N* = 0x0000004E
-    XKc_O* = 0x0000004F
-    XKc_P* = 0x00000050
-    XKc_Q* = 0x00000051
-    XKc_R* = 0x00000052
-    XKc_S* = 0x00000053
-    XKc_T* = 0x00000054
-    XKc_U* = 0x00000055
-    XKc_V* = 0x00000056
-    XKc_W* = 0x00000057
-    XKc_X* = 0x00000058
-    XKc_Y* = 0x00000059
-    XKc_Z* = 0x0000005A
-    XK_bracketleft* = 0x0000005B
-    XK_backslash* = 0x0000005C
-    XK_bracketright* = 0x0000005D
-    XK_asciicircum* = 0x0000005E
-    XK_underscore* = 0x0000005F
-    XK_grave* = 0x00000060
-    XK_quoteleft* = 0x00000060  # deprecated 
-    XK_a* = 0x00000061
-    XK_b* = 0x00000062
-    XK_c* = 0x00000063
-    XK_d* = 0x00000064
-    XK_e* = 0x00000065
-    XK_f* = 0x00000066
-    XK_g* = 0x00000067
-    XK_h* = 0x00000068
-    XK_i* = 0x00000069
-    XK_j* = 0x0000006A
-    XK_k* = 0x0000006B
-    XK_l* = 0x0000006C
-    XK_m* = 0x0000006D
-    XK_n* = 0x0000006E
-    XK_o* = 0x0000006F
-    XK_p* = 0x00000070
-    XK_q* = 0x00000071
-    XK_r* = 0x00000072
-    XK_s* = 0x00000073
-    XK_t* = 0x00000074
-    XK_u* = 0x00000075
-    XK_v* = 0x00000076
-    XK_w* = 0x00000077
-    XK_x* = 0x00000078
-    XK_y* = 0x00000079
-    XK_z* = 0x0000007A
-    XK_braceleft* = 0x0000007B
-    XK_bar* = 0x0000007C
-    XK_braceright* = 0x0000007D
-    XK_asciitilde* = 0x0000007E
-    XK_nobreakspace* = 0x000000A0
-    XK_exclamdown* = 0x000000A1
-    XK_cent* = 0x000000A2
-    XK_sterling* = 0x000000A3
-    XK_currency* = 0x000000A4
-    XK_yen* = 0x000000A5
-    XK_brokenbar* = 0x000000A6
-    XK_section* = 0x000000A7
-    XK_diaeresis* = 0x000000A8
-    XK_copyright* = 0x000000A9
-    XK_ordfeminine* = 0x000000AA
-    XK_guillemotleft* = 0x000000AB # left angle quotation mark 
-    XK_notsign* = 0x000000AC
-    XK_hyphen* = 0x000000AD
-    XK_registered* = 0x000000AE
-    XK_macron* = 0x000000AF
-    XK_degree* = 0x000000B0
-    XK_plusminus* = 0x000000B1
-    XK_twosuperior* = 0x000000B2
-    XK_threesuperior* = 0x000000B3
-    XK_acute* = 0x000000B4
-    XK_mu* = 0x000000B5
-    XK_paragraph* = 0x000000B6
-    XK_periodcentered* = 0x000000B7
-    XK_cedilla* = 0x000000B8
-    XK_onesuperior* = 0x000000B9
-    XK_masculine* = 0x000000BA
-    XK_guillemotright* = 0x000000BB # right angle quotation mark 
-    XK_onequarter* = 0x000000BC
-    XK_onehalf* = 0x000000BD
-    XK_threequarters* = 0x000000BE
-    XK_questiondown* = 0x000000BF
-    XKc_Agrave* = 0x000000C0
-    XKc_Aacute* = 0x000000C1
-    XKc_Acircumflex* = 0x000000C2
-    XKc_Atilde* = 0x000000C3
-    XKc_Adiaeresis* = 0x000000C4
-    XKc_Aring* = 0x000000C5
-    XKc_AE* = 0x000000C6
-    XKc_Ccedilla* = 0x000000C7
-    XKc_Egrave* = 0x000000C8
-    XKc_Eacute* = 0x000000C9
-    XKc_Ecircumflex* = 0x000000CA
-    XKc_Ediaeresis* = 0x000000CB
-    XKc_Igrave* = 0x000000CC
-    XKc_Iacute* = 0x000000CD
-    XKc_Icircumflex* = 0x000000CE
-    XKc_Idiaeresis* = 0x000000CF
-    XKc_ETH* = 0x000000D0
-    XKc_Ntilde* = 0x000000D1
-    XKc_Ograve* = 0x000000D2
-    XKc_Oacute* = 0x000000D3
-    XKc_Ocircumflex* = 0x000000D4
-    XKc_Otilde* = 0x000000D5
-    XKc_Odiaeresis* = 0x000000D6
-    XK_multiply* = 0x000000D7
-    XKc_Ooblique* = 0x000000D8
-    XKc_Oslash* = XKc_Ooblique
-    XKc_Ugrave* = 0x000000D9
-    XKc_Uacute* = 0x000000DA
-    XKc_Ucircumflex* = 0x000000DB
-    XKc_Udiaeresis* = 0x000000DC
-    XKc_Yacute* = 0x000000DD
-    XKc_THORN* = 0x000000DE
-    XK_ssharp* = 0x000000DF
-    XK_agrave* = 0x000000E0
-    XK_aacute* = 0x000000E1
-    XK_acircumflex* = 0x000000E2
-    XK_atilde* = 0x000000E3
-    XK_adiaeresis* = 0x000000E4
-    XK_aring* = 0x000000E5
-    XK_ae* = 0x000000E6
-    XK_ccedilla* = 0x000000E7
-    XK_egrave* = 0x000000E8
-    XK_eacute* = 0x000000E9
-    XK_ecircumflex* = 0x000000EA
-    XK_ediaeresis* = 0x000000EB
-    XK_igrave* = 0x000000EC
-    XK_iacute* = 0x000000ED
-    XK_icircumflex* = 0x000000EE
-    XK_idiaeresis* = 0x000000EF
-    XK_eth* = 0x000000F0
-    XK_ntilde* = 0x000000F1
-    XK_ograve* = 0x000000F2
-    XK_oacute* = 0x000000F3
-    XK_ocircumflex* = 0x000000F4
-    XK_otilde* = 0x000000F5
-    XK_odiaeresis* = 0x000000F6
-    XK_division* = 0x000000F7
-    XK_oslash* = 0x000000F8
-    XK_ooblique* = XK_oslash
-    XK_ugrave* = 0x000000F9
-    XK_uacute* = 0x000000FA
-    XK_ucircumflex* = 0x000000FB
-    XK_udiaeresis* = 0x000000FC
-    XK_yacute* = 0x000000FD
-    XK_thorn* = 0x000000FE
-    XK_ydiaeresis* = 0x000000FF
-# XK_LATIN1 
-#*
-# *   Latin 2
-# *   Byte 3 = 1
-# *
-
-when defined(XK_LATIN2) or true: 
-  const
-    XKc_Aogonek* = 0x000001A1
-    XK_breve* = 0x000001A2
-    XKc_Lstroke* = 0x000001A3
-    XKc_Lcaron* = 0x000001A5
-    XKc_Sacute* = 0x000001A6
-    XKc_Scaron* = 0x000001A9
-    XKc_Scedilla* = 0x000001AA
-    XKc_Tcaron* = 0x000001AB
-    XKc_Zacute* = 0x000001AC
-    XKc_Zcaron* = 0x000001AE
-    XKc_Zabovedot* = 0x000001AF
-    XK_aogonek* = 0x000001B1
-    XK_ogonek* = 0x000001B2
-    XK_lstroke* = 0x000001B3
-    XK_lcaron* = 0x000001B5
-    XK_sacute* = 0x000001B6
-    XK_caron* = 0x000001B7
-    XK_scaron* = 0x000001B9
-    XK_scedilla* = 0x000001BA
-    XK_tcaron* = 0x000001BB
-    XK_zacute* = 0x000001BC
-    XK_doubleacute* = 0x000001BD
-    XK_zcaron* = 0x000001BE
-    XK_zabovedot* = 0x000001BF
-    XKc_Racute* = 0x000001C0
-    XKc_Abreve* = 0x000001C3
-    XKc_Lacute* = 0x000001C5
-    XKc_Cacute* = 0x000001C6
-    XKc_Ccaron* = 0x000001C8
-    XKc_Eogonek* = 0x000001CA
-    XKc_Ecaron* = 0x000001CC
-    XKc_Dcaron* = 0x000001CF
-    XKc_Dstroke* = 0x000001D0
-    XKc_Nacute* = 0x000001D1
-    XKc_Ncaron* = 0x000001D2
-    XKc_Odoubleacute* = 0x000001D5
-    XKc_Rcaron* = 0x000001D8
-    XKc_Uring* = 0x000001D9
-    XKc_Udoubleacute* = 0x000001DB
-    XKc_Tcedilla* = 0x000001DE
-    XK_racute* = 0x000001E0
-    XK_abreve* = 0x000001E3
-    XK_lacute* = 0x000001E5
-    XK_cacute* = 0x000001E6
-    XK_ccaron* = 0x000001E8
-    XK_eogonek* = 0x000001EA
-    XK_ecaron* = 0x000001EC
-    XK_dcaron* = 0x000001EF
-    XK_dstroke* = 0x000001F0
-    XK_nacute* = 0x000001F1
-    XK_ncaron* = 0x000001F2
-    XK_odoubleacute* = 0x000001F5
-    XK_udoubleacute* = 0x000001FB
-    XK_rcaron* = 0x000001F8
-    XK_uring* = 0x000001F9
-    XK_tcedilla* = 0x000001FE
-    XK_abovedot* = 0x000001FF
-# XK_LATIN2 
-#*
-# *   Latin 3
-# *   Byte 3 = 2
-# *
-
-when defined(XK_LATIN3) or true: 
-  const
-    XKc_Hstroke* = 0x000002A1
-    XKc_Hcircumflex* = 0x000002A6
-    XKc_Iabovedot* = 0x000002A9
-    XKc_Gbreve* = 0x000002AB
-    XKc_Jcircumflex* = 0x000002AC
-    XK_hstroke* = 0x000002B1
-    XK_hcircumflex* = 0x000002B6
-    XK_idotless* = 0x000002B9
-    XK_gbreve* = 0x000002BB
-    XK_jcircumflex* = 0x000002BC
-    XKc_Cabovedot* = 0x000002C5
-    XKc_Ccircumflex* = 0x000002C6
-    XKc_Gabovedot* = 0x000002D5
-    XKc_Gcircumflex* = 0x000002D8
-    XKc_Ubreve* = 0x000002DD
-    XKc_Scircumflex* = 0x000002DE
-    XK_cabovedot* = 0x000002E5
-    XK_ccircumflex* = 0x000002E6
-    XK_gabovedot* = 0x000002F5
-    XK_gcircumflex* = 0x000002F8
-    XK_ubreve* = 0x000002FD
-    XK_scircumflex* = 0x000002FE
-# XK_LATIN3 
-#*
-# *   Latin 4
-# *   Byte 3 = 3
-# *
-
-when defined(XK_LATIN4) or true: 
-  const
-    XK_kra* = 0x000003A2
-    XK_kappa* = 0x000003A2      # deprecated 
-    XKc_Rcedilla* = 0x000003A3
-    XKc_Itilde* = 0x000003A5
-    XKc_Lcedilla* = 0x000003A6
-    XKc_Emacron* = 0x000003AA
-    XKc_Gcedilla* = 0x000003AB
-    XKc_Tslash* = 0x000003AC
-    XK_rcedilla* = 0x000003B3
-    XK_itilde* = 0x000003B5
-    XK_lcedilla* = 0x000003B6
-    XK_emacron* = 0x000003BA
-    XK_gcedilla* = 0x000003BB
-    XK_tslash* = 0x000003BC
-    XKc_ENG* = 0x000003BD
-    XK_eng* = 0x000003BF
-    XKc_Amacron* = 0x000003C0
-    XKc_Iogonek* = 0x000003C7
-    XKc_Eabovedot* = 0x000003CC
-    XKc_Imacron* = 0x000003CF
-    XKc_Ncedilla* = 0x000003D1
-    XKc_Omacron* = 0x000003D2
-    XKc_Kcedilla* = 0x000003D3
-    XKc_Uogonek* = 0x000003D9
-    XKc_Utilde* = 0x000003DD
-    XKc_Umacron* = 0x000003DE
-    XK_amacron* = 0x000003E0
-    XK_iogonek* = 0x000003E7
-    XK_eabovedot* = 0x000003EC
-    XK_imacron* = 0x000003EF
-    XK_ncedilla* = 0x000003F1
-    XK_omacron* = 0x000003F2
-    XK_kcedilla* = 0x000003F3
-    XK_uogonek* = 0x000003F9
-    XK_utilde* = 0x000003FD
-    XK_umacron* = 0x000003FE
-# XK_LATIN4 
-#*
-# * Latin-8
-# * Byte 3 = 18
-# *
-
-when defined(XK_LATIN8) or true: 
-  const
-    XKc_Babovedot* = 0x000012A1
-    XK_babovedot* = 0x000012A2
-    XKc_Dabovedot* = 0x000012A6
-    XKc_Wgrave* = 0x000012A8
-    XKc_Wacute* = 0x000012AA
-    XK_dabovedot* = 0x000012AB
-    XKc_Ygrave* = 0x000012AC
-    XKc_Fabovedot* = 0x000012B0
-    XK_fabovedot* = 0x000012B1
-    XKc_Mabovedot* = 0x000012B4
-    XK_mabovedot* = 0x000012B5
-    XKc_Pabovedot* = 0x000012B7
-    XK_wgrave* = 0x000012B8
-    XK_pabovedot* = 0x000012B9
-    XK_wacute* = 0x000012BA
-    XKc_Sabovedot* = 0x000012BB
-    XK_ygrave* = 0x000012BC
-    XKc_Wdiaeresis* = 0x000012BD
-    XK_wdiaeresis* = 0x000012BE
-    XK_sabovedot* = 0x000012BF
-    XKc_Wcircumflex* = 0x000012D0
-    XKc_Tabovedot* = 0x000012D7
-    XKc_Ycircumflex* = 0x000012DE
-    XK_wcircumflex* = 0x000012F0
-    XK_tabovedot* = 0x000012F7
-    XK_ycircumflex* = 0x000012FE
-# XK_LATIN8 
-#*
-# * Latin-9 (a.k.a. Latin-0)
-# * Byte 3 = 19
-# *
-
-when defined(XK_LATIN9) or true: 
-  const
-    XKc_OE* = 0x000013BC
-    XK_oe* = 0x000013BD
-    XKc_Ydiaeresis* = 0x000013BE
-# XK_LATIN9 
-#*
-# * Katakana
-# * Byte 3 = 4
-# *
-
-when defined(XK_KATAKANA) or true: 
-  const
-    XK_overline* = 0x0000047E
-    XK_kana_fullstop* = 0x000004A1
-    XK_kana_openingbracket* = 0x000004A2
-    XK_kana_closingbracket* = 0x000004A3
-    XK_kana_comma* = 0x000004A4
-    XK_kana_conjunctive* = 0x000004A5
-    XK_kana_middledot* = 0x000004A5 # deprecated 
-    XKc_kana_WO* = 0x000004A6
-    XK_kana_a* = 0x000004A7
-    XK_kana_i* = 0x000004A8
-    XK_kana_u* = 0x000004A9
-    XK_kana_e* = 0x000004AA
-    XK_kana_o* = 0x000004AB
-    XK_kana_ya* = 0x000004AC
-    XK_kana_yu* = 0x000004AD
-    XK_kana_yo* = 0x000004AE
-    XK_kana_tsu* = 0x000004AF
-    XK_kana_tu* = 0x000004AF    # deprecated 
-    XK_prolongedsound* = 0x000004B0
-    XKc_kana_A* = 0x000004B1
-    XKc_kana_I* = 0x000004B2
-    XKc_kana_U* = 0x000004B3
-    XKc_kana_E* = 0x000004B4
-    XKc_kana_O* = 0x000004B5
-    XKc_kana_KA* = 0x000004B6
-    XKc_kana_KI* = 0x000004B7
-    XKc_kana_KU* = 0x000004B8
-    XKc_kana_KE* = 0x000004B9
-    XKc_kana_KO* = 0x000004BA
-    XKc_kana_SA* = 0x000004BB
-    XKc_kana_SHI* = 0x000004BC
-    XKc_kana_SU* = 0x000004BD
-    XKc_kana_SE* = 0x000004BE
-    XKc_kana_SO* = 0x000004BF
-    XKc_kana_TA* = 0x000004C0
-    XKc_kana_CHI* = 0x000004C1
-    XKc_kana_TI* = 0x000004C1   # deprecated 
-    XKc_kana_TSU* = 0x000004C2
-    XKc_kana_TU* = 0x000004C2   # deprecated 
-    XKc_kana_TE* = 0x000004C3
-    XKc_kana_TO* = 0x000004C4
-    XKc_kana_NA* = 0x000004C5
-    XKc_kana_NI* = 0x000004C6
-    XKc_kana_NU* = 0x000004C7
-    XKc_kana_NE* = 0x000004C8
-    XKc_kana_NO* = 0x000004C9
-    XKc_kana_HA* = 0x000004CA
-    XKc_kana_HI* = 0x000004CB
-    XKc_kana_FU* = 0x000004CC
-    XKc_kana_HU* = 0x000004CC   # deprecated 
-    XKc_kana_HE* = 0x000004CD
-    XKc_kana_HO* = 0x000004CE
-    XKc_kana_MA* = 0x000004CF
-    XKc_kana_MI* = 0x000004D0
-    XKc_kana_MU* = 0x000004D1
-    XKc_kana_ME* = 0x000004D2
-    XKc_kana_MO* = 0x000004D3
-    XKc_kana_YA* = 0x000004D4
-    XKc_kana_YU* = 0x000004D5
-    XKc_kana_YO* = 0x000004D6
-    XKc_kana_RA* = 0x000004D7
-    XKc_kana_RI* = 0x000004D8
-    XKc_kana_RU* = 0x000004D9
-    XKc_kana_RE* = 0x000004DA
-    XKc_kana_RO* = 0x000004DB
-    XKc_kana_WA* = 0x000004DC
-    XKc_kana_N* = 0x000004DD
-    XK_voicedsound* = 0x000004DE
-    XK_semivoicedsound* = 0x000004DF
-    XK_kana_switch* = 0x0000FF7E # Alias for mode_switch 
-# XK_KATAKANA 
-#*
-# *  Arabic
-# *  Byte 3 = 5
-# *
-
-when defined(XK_ARABIC) or true: 
-  const
-    XK_Farsi_0* = 0x00000590
-    XK_Farsi_1* = 0x00000591
-    XK_Farsi_2* = 0x00000592
-    XK_Farsi_3* = 0x00000593
-    XK_Farsi_4* = 0x00000594
-    XK_Farsi_5* = 0x00000595
-    XK_Farsi_6* = 0x00000596
-    XK_Farsi_7* = 0x00000597
-    XK_Farsi_8* = 0x00000598
-    XK_Farsi_9* = 0x00000599
-    XK_Arabic_percent* = 0x000005A5
-    XK_Arabic_superscript_alef* = 0x000005A6
-    XK_Arabic_tteh* = 0x000005A7
-    XK_Arabic_peh* = 0x000005A8
-    XK_Arabic_tcheh* = 0x000005A9
-    XK_Arabic_ddal* = 0x000005AA
-    XK_Arabic_rreh* = 0x000005AB
-    XK_Arabic_comma* = 0x000005AC
-    XK_Arabic_fullstop* = 0x000005AE
-    XK_Arabic_0* = 0x000005B0
-    XK_Arabic_1* = 0x000005B1
-    XK_Arabic_2* = 0x000005B2
-    XK_Arabic_3* = 0x000005B3
-    XK_Arabic_4* = 0x000005B4
-    XK_Arabic_5* = 0x000005B5
-    XK_Arabic_6* = 0x000005B6
-    XK_Arabic_7* = 0x000005B7
-    XK_Arabic_8* = 0x000005B8
-    XK_Arabic_9* = 0x000005B9
-    XK_Arabic_semicolon* = 0x000005BB
-    XK_Arabic_question_mark* = 0x000005BF
-    XK_Arabic_hamza* = 0x000005C1
-    XK_Arabic_maddaonalef* = 0x000005C2
-    XK_Arabic_hamzaonalef* = 0x000005C3
-    XK_Arabic_hamzaonwaw* = 0x000005C4
-    XK_Arabic_hamzaunderalef* = 0x000005C5
-    XK_Arabic_hamzaonyeh* = 0x000005C6
-    XK_Arabic_alef* = 0x000005C7
-    XK_Arabic_beh* = 0x000005C8
-    XK_Arabic_tehmarbuta* = 0x000005C9
-    XK_Arabic_teh* = 0x000005CA
-    XK_Arabic_theh* = 0x000005CB
-    XK_Arabic_jeem* = 0x000005CC
-    XK_Arabic_hah* = 0x000005CD
-    XK_Arabic_khah* = 0x000005CE
-    XK_Arabic_dal* = 0x000005CF
-    XK_Arabic_thal* = 0x000005D0
-    XK_Arabic_ra* = 0x000005D1
-    XK_Arabic_zain* = 0x000005D2
-    XK_Arabic_seen* = 0x000005D3
-    XK_Arabic_sheen* = 0x000005D4
-    XK_Arabic_sad* = 0x000005D5
-    XK_Arabic_dad* = 0x000005D6
-    XK_Arabic_tah* = 0x000005D7
-    XK_Arabic_zah* = 0x000005D8
-    XK_Arabic_ain* = 0x000005D9
-    XK_Arabic_ghain* = 0x000005DA
-    XK_Arabic_tatweel* = 0x000005E0
-    XK_Arabic_feh* = 0x000005E1
-    XK_Arabic_qaf* = 0x000005E2
-    XK_Arabic_kaf* = 0x000005E3
-    XK_Arabic_lam* = 0x000005E4
-    XK_Arabic_meem* = 0x000005E5
-    XK_Arabic_noon* = 0x000005E6
-    XK_Arabic_ha* = 0x000005E7
-    XK_Arabic_heh* = 0x000005E7 # deprecated 
-    XK_Arabic_waw* = 0x000005E8
-    XK_Arabic_alefmaksura* = 0x000005E9
-    XK_Arabic_yeh* = 0x000005EA
-    XK_Arabic_fathatan* = 0x000005EB
-    XK_Arabic_dammatan* = 0x000005EC
-    XK_Arabic_kasratan* = 0x000005ED
-    XK_Arabic_fatha* = 0x000005EE
-    XK_Arabic_damma* = 0x000005EF
-    XK_Arabic_kasra* = 0x000005F0
-    XK_Arabic_shadda* = 0x000005F1
-    XK_Arabic_sukun* = 0x000005F2
-    XK_Arabic_madda_above* = 0x000005F3
-    XK_Arabic_hamza_above* = 0x000005F4
-    XK_Arabic_hamza_below* = 0x000005F5
-    XK_Arabic_jeh* = 0x000005F6
-    XK_Arabic_veh* = 0x000005F7
-    XK_Arabic_keheh* = 0x000005F8
-    XK_Arabic_gaf* = 0x000005F9
-    XK_Arabic_noon_ghunna* = 0x000005FA
-    XK_Arabic_heh_doachashmee* = 0x000005FB
-    XK_Farsi_yeh* = 0x000005FC
-    XK_Arabic_farsi_yeh* = XK_Farsi_yeh
-    XK_Arabic_yeh_baree* = 0x000005FD
-    XK_Arabic_heh_goal* = 0x000005FE
-    XK_Arabic_switch* = 0x0000FF7E # Alias for mode_switch 
-# XK_ARABIC 
-#*
-# * Cyrillic
-# * Byte 3 = 6
-# *
-
-when defined(XK_CYRILLIC) or true: 
-  const
-    XKc_Cyrillic_GHE_bar* = 0x00000680
-    XK_Cyrillic_ghe_bar* = 0x00000690
-    XKc_Cyrillic_ZHE_descender* = 0x00000681
-    XK_Cyrillic_zhe_descender* = 0x00000691
-    XKc_Cyrillic_KA_descender* = 0x00000682
-    XK_Cyrillic_ka_descender* = 0x00000692
-    XKc_Cyrillic_KA_vertstroke* = 0x00000683
-    XK_Cyrillic_ka_vertstroke* = 0x00000693
-    XKc_Cyrillic_EN_descender* = 0x00000684
-    XK_Cyrillic_en_descender* = 0x00000694
-    XKc_Cyrillic_U_straight* = 0x00000685
-    XK_Cyrillic_u_straight* = 0x00000695
-    XKc_Cyrillic_U_straight_bar* = 0x00000686
-    XK_Cyrillic_u_straight_bar* = 0x00000696
-    XKc_Cyrillic_HA_descender* = 0x00000687
-    XK_Cyrillic_ha_descender* = 0x00000697
-    XKc_Cyrillic_CHE_descender* = 0x00000688
-    XK_Cyrillic_che_descender* = 0x00000698
-    XKc_Cyrillic_CHE_vertstroke* = 0x00000689
-    XK_Cyrillic_che_vertstroke* = 0x00000699
-    XKc_Cyrillic_SHHA* = 0x0000068A
-    XK_Cyrillic_shha* = 0x0000069A
-    XKc_Cyrillic_SCHWA* = 0x0000068C
-    XK_Cyrillic_schwa* = 0x0000069C
-    XKc_Cyrillic_I_macron* = 0x0000068D
-    XK_Cyrillic_i_macron* = 0x0000069D
-    XKc_Cyrillic_O_bar* = 0x0000068E
-    XK_Cyrillic_o_bar* = 0x0000069E
-    XKc_Cyrillic_U_macron* = 0x0000068F
-    XK_Cyrillic_u_macron* = 0x0000069F
-    XK_Serbian_dje* = 0x000006A1
-    XK_Macedonia_gje* = 0x000006A2
-    XK_Cyrillic_io* = 0x000006A3
-    XK_Ukrainian_ie* = 0x000006A4
-    XK_Ukranian_je* = 0x000006A4 # deprecated 
-    XK_Macedonia_dse* = 0x000006A5
-    XK_Ukrainian_i* = 0x000006A6
-    XK_Ukranian_i* = 0x000006A6 # deprecated 
-    XK_Ukrainian_yi* = 0x000006A7
-    XK_Ukranian_yi* = 0x000006A7 # deprecated 
-    XK_Cyrillic_je* = 0x000006A8
-    XK_Serbian_je* = 0x000006A8 # deprecated 
-    XK_Cyrillic_lje* = 0x000006A9
-    XK_Serbian_lje* = 0x000006A9 # deprecated 
-    XK_Cyrillic_nje* = 0x000006AA
-    XK_Serbian_nje* = 0x000006AA # deprecated 
-    XK_Serbian_tshe* = 0x000006AB
-    XK_Macedonia_kje* = 0x000006AC
-    XK_Ukrainian_ghe_with_upturn* = 0x000006AD
-    XK_Byelorussian_shortu* = 0x000006AE
-    XK_Cyrillic_dzhe* = 0x000006AF
-    XK_Serbian_dze* = 0x000006AF # deprecated 
-    XK_numerosign* = 0x000006B0
-    XKc_Serbian_DJE* = 0x000006B1
-    XKc_Macedonia_GJE* = 0x000006B2
-    XKc_Cyrillic_IO* = 0x000006B3
-    XKc_Ukrainian_IE* = 0x000006B4
-    XKc_Ukranian_JE* = 0x000006B4 # deprecated 
-    XKc_Macedonia_DSE* = 0x000006B5
-    XKc_Ukrainian_I* = 0x000006B6
-    XKc_Ukranian_I* = 0x000006B6 # deprecated 
-    XKc_Ukrainian_YI* = 0x000006B7
-    XKc_Ukranian_YI* = 0x000006B7 # deprecated 
-    XKc_Cyrillic_JE* = 0x000006B8
-    XKc_Serbian_JE* = 0x000006B8 # deprecated 
-    XKc_Cyrillic_LJE* = 0x000006B9
-    XKc_Serbian_LJE* = 0x000006B9 # deprecated 
-    XKc_Cyrillic_NJE* = 0x000006BA
-    XKc_Serbian_NJE* = 0x000006BA # deprecated 
-    XKc_Serbian_TSHE* = 0x000006BB
-    XKc_Macedonia_KJE* = 0x000006BC
-    XKc_Ukrainian_GHE_WITH_UPTURN* = 0x000006BD
-    XKc_Byelorussian_SHORTU* = 0x000006BE
-    XKc_Cyrillic_DZHE* = 0x000006BF
-    XKc_Serbian_DZE* = 0x000006BF # deprecated 
-    XK_Cyrillic_yu* = 0x000006C0
-    XK_Cyrillic_a* = 0x000006C1
-    XK_Cyrillic_be* = 0x000006C2
-    XK_Cyrillic_tse* = 0x000006C3
-    XK_Cyrillic_de* = 0x000006C4
-    XK_Cyrillic_ie* = 0x000006C5
-    XK_Cyrillic_ef* = 0x000006C6
-    XK_Cyrillic_ghe* = 0x000006C7
-    XK_Cyrillic_ha* = 0x000006C8
-    XK_Cyrillic_i* = 0x000006C9
-    XK_Cyrillic_shorti* = 0x000006CA
-    XK_Cyrillic_ka* = 0x000006CB
-    XK_Cyrillic_el* = 0x000006CC
-    XK_Cyrillic_em* = 0x000006CD
-    XK_Cyrillic_en* = 0x000006CE
-    XK_Cyrillic_o* = 0x000006CF
-    XK_Cyrillic_pe* = 0x000006D0
-    XK_Cyrillic_ya* = 0x000006D1
-    XK_Cyrillic_er* = 0x000006D2
-    XK_Cyrillic_es* = 0x000006D3
-    XK_Cyrillic_te* = 0x000006D4
-    XK_Cyrillic_u* = 0x000006D5
-    XK_Cyrillic_zhe* = 0x000006D6
-    XK_Cyrillic_ve* = 0x000006D7
-    XK_Cyrillic_softsign* = 0x000006D8
-    XK_Cyrillic_yeru* = 0x000006D9
-    XK_Cyrillic_ze* = 0x000006DA
-    XK_Cyrillic_sha* = 0x000006DB
-    XK_Cyrillic_e* = 0x000006DC
-    XK_Cyrillic_shcha* = 0x000006DD
-    XK_Cyrillic_che* = 0x000006DE
-    XK_Cyrillic_hardsign* = 0x000006DF
-    XKc_Cyrillic_YU* = 0x000006E0
-    XKc_Cyrillic_A* = 0x000006E1
-    XKc_Cyrillic_BE* = 0x000006E2
-    XKc_Cyrillic_TSE* = 0x000006E3
-    XKc_Cyrillic_DE* = 0x000006E4
-    XKc_Cyrillic_IE* = 0x000006E5
-    XKc_Cyrillic_EF* = 0x000006E6
-    XKc_Cyrillic_GHE* = 0x000006E7
-    XKc_Cyrillic_HA* = 0x000006E8
-    XKc_Cyrillic_I* = 0x000006E9
-    XKc_Cyrillic_SHORTI* = 0x000006EA
-    XKc_Cyrillic_KA* = 0x000006EB
-    XKc_Cyrillic_EL* = 0x000006EC
-    XKc_Cyrillic_EM* = 0x000006ED
-    XKc_Cyrillic_EN* = 0x000006EE
-    XKc_Cyrillic_O* = 0x000006EF
-    XKc_Cyrillic_PE* = 0x000006F0
-    XKc_Cyrillic_YA* = 0x000006F1
-    XKc_Cyrillic_ER* = 0x000006F2
-    XKc_Cyrillic_ES* = 0x000006F3
-    XKc_Cyrillic_TE* = 0x000006F4
-    XKc_Cyrillic_U* = 0x000006F5
-    XKc_Cyrillic_ZHE* = 0x000006F6
-    XKc_Cyrillic_VE* = 0x000006F7
-    XKc_Cyrillic_SOFTSIGN* = 0x000006F8
-    XKc_Cyrillic_YERU* = 0x000006F9
-    XKc_Cyrillic_ZE* = 0x000006FA
-    XKc_Cyrillic_SHA* = 0x000006FB
-    XKc_Cyrillic_E* = 0x000006FC
-    XKc_Cyrillic_SHCHA* = 0x000006FD
-    XKc_Cyrillic_CHE* = 0x000006FE
-    XKc_Cyrillic_HARDSIGN* = 0x000006FF
-# XK_CYRILLIC 
-#*
-# * Greek
-# * Byte 3 = 7
-# *
-
-when defined(XK_GREEK) or true: 
-  const
-    XKc_Greek_ALPHAaccent* = 0x000007A1
-    XKc_Greek_EPSILONaccent* = 0x000007A2
-    XKc_Greek_ETAaccent* = 0x000007A3
-    XKc_Greek_IOTAaccent* = 0x000007A4
-    XKc_Greek_IOTAdieresis* = 0x000007A5
-    XKc_Greek_IOTAdiaeresis* = XKc_Greek_IOTAdieresis # old typo 
-    XKc_Greek_OMICRONaccent* = 0x000007A7
-    XKc_Greek_UPSILONaccent* = 0x000007A8
-    XKc_Greek_UPSILONdieresis* = 0x000007A9
-    XKc_Greek_OMEGAaccent* = 0x000007AB
-    XK_Greek_accentdieresis* = 0x000007AE
-    XK_Greek_horizbar* = 0x000007AF
-    XK_Greek_alphaaccent* = 0x000007B1
-    XK_Greek_epsilonaccent* = 0x000007B2
-    XK_Greek_etaaccent* = 0x000007B3
-    XK_Greek_iotaaccent* = 0x000007B4
-    XK_Greek_iotadieresis* = 0x000007B5
-    XK_Greek_iotaaccentdieresis* = 0x000007B6
-    XK_Greek_omicronaccent* = 0x000007B7
-    XK_Greek_upsilonaccent* = 0x000007B8
-    XK_Greek_upsilondieresis* = 0x000007B9
-    XK_Greek_upsilonaccentdieresis* = 0x000007BA
-    XK_Greek_omegaaccent* = 0x000007BB
-    XKc_Greek_ALPHA* = 0x000007C1
-    XKc_Greek_BETA* = 0x000007C2
-    XKc_Greek_GAMMA* = 0x000007C3
-    XKc_Greek_DELTA* = 0x000007C4
-    XKc_Greek_EPSILON* = 0x000007C5
-    XKc_Greek_ZETA* = 0x000007C6
-    XKc_Greek_ETA* = 0x000007C7
-    XKc_Greek_THETA* = 0x000007C8
-    XKc_Greek_IOTA* = 0x000007C9
-    XKc_Greek_KAPPA* = 0x000007CA
-    XKc_Greek_LAMDA* = 0x000007CB
-    XKc_Greek_LAMBDA* = 0x000007CB
-    XKc_Greek_MU* = 0x000007CC
-    XKc_Greek_NU* = 0x000007CD
-    XKc_Greek_XI* = 0x000007CE
-    XKc_Greek_OMICRON* = 0x000007CF
-    XKc_Greek_PI* = 0x000007D0
-    XKc_Greek_RHO* = 0x000007D1
-    XKc_Greek_SIGMA* = 0x000007D2
-    XKc_Greek_TAU* = 0x000007D4
-    XKc_Greek_UPSILON* = 0x000007D5
-    XKc_Greek_PHI* = 0x000007D6
-    XKc_Greek_CHI* = 0x000007D7
-    XKc_Greek_PSI* = 0x000007D8
-    XKc_Greek_OMEGA* = 0x000007D9
-    XK_Greek_alpha* = 0x000007E1
-    XK_Greek_beta* = 0x000007E2
-    XK_Greek_gamma* = 0x000007E3
-    XK_Greek_delta* = 0x000007E4
-    XK_Greek_epsilon* = 0x000007E5
-    XK_Greek_zeta* = 0x000007E6
-    XK_Greek_eta* = 0x000007E7
-    XK_Greek_theta* = 0x000007E8
-    XK_Greek_iota* = 0x000007E9
-    XK_Greek_kappa* = 0x000007EA
-    XK_Greek_lamda* = 0x000007EB
-    XK_Greek_lambda* = 0x000007EB
-    XK_Greek_mu* = 0x000007EC
-    XK_Greek_nu* = 0x000007ED
-    XK_Greek_xi* = 0x000007EE
-    XK_Greek_omicron* = 0x000007EF
-    XK_Greek_pi* = 0x000007F0
-    XK_Greek_rho* = 0x000007F1
-    XK_Greek_sigma* = 0x000007F2
-    XK_Greek_finalsmallsigma* = 0x000007F3
-    XK_Greek_tau* = 0x000007F4
-    XK_Greek_upsilon* = 0x000007F5
-    XK_Greek_phi* = 0x000007F6
-    XK_Greek_chi* = 0x000007F7
-    XK_Greek_psi* = 0x000007F8
-    XK_Greek_omega* = 0x000007F9
-    XK_Greek_switch* = 0x0000FF7E # Alias for mode_switch 
-# XK_GREEK 
-#*
-# * Technical
-# * Byte 3 = 8
-# *
-
-when defined(XK_TECHNICAL) or true: 
-  const
-    XK_leftradical* = 0x000008A1
-    XK_topleftradical* = 0x000008A2
-    XK_horizconnector* = 0x000008A3
-    XK_topintegral* = 0x000008A4
-    XK_botintegral* = 0x000008A5
-    XK_vertconnector* = 0x000008A6
-    XK_topleftsqbracket* = 0x000008A7
-    XK_botleftsqbracket* = 0x000008A8
-    XK_toprightsqbracket* = 0x000008A9
-    XK_botrightsqbracket* = 0x000008AA
-    XK_topleftparens* = 0x000008AB
-    XK_botleftparens* = 0x000008AC
-    XK_toprightparens* = 0x000008AD
-    XK_botrightparens* = 0x000008AE
-    XK_leftmiddlecurlybrace* = 0x000008AF
-    XK_rightmiddlecurlybrace* = 0x000008B0
-    XK_topleftsummation* = 0x000008B1
-    XK_botleftsummation* = 0x000008B2
-    XK_topvertsummationconnector* = 0x000008B3
-    XK_botvertsummationconnector* = 0x000008B4
-    XK_toprightsummation* = 0x000008B5
-    XK_botrightsummation* = 0x000008B6
-    XK_rightmiddlesummation* = 0x000008B7
-    XK_lessthanequal* = 0x000008BC
-    XK_notequal* = 0x000008BD
-    XK_greaterthanequal* = 0x000008BE
-    XK_integral* = 0x000008BF
-    XK_therefore* = 0x000008C0
-    XK_variation* = 0x000008C1
-    XK_infinity* = 0x000008C2
-    XK_nabla* = 0x000008C5
-    XK_approximate* = 0x000008C8
-    XK_similarequal* = 0x000008C9
-    XK_ifonlyif* = 0x000008CD
-    XK_implies* = 0x000008CE
-    XK_identical* = 0x000008CF
-    XK_radical* = 0x000008D6
-    XK_includedin* = 0x000008DA
-    XK_includes* = 0x000008DB
-    XK_intersection* = 0x000008DC
-    XK_union* = 0x000008DD
-    XK_logicaland* = 0x000008DE
-    XK_logicalor* = 0x000008DF
-    XK_partialderivative* = 0x000008EF
-    XK_function* = 0x000008F6
-    XK_leftarrow* = 0x000008FB
-    XK_uparrow* = 0x000008FC
-    XK_rightarrow* = 0x000008FD
-    XK_downarrow* = 0x000008FE
-# XK_TECHNICAL 
-#*
-# *  Special
-# *  Byte 3 = 9
-# *
-
-when defined(XK_SPECIAL): 
-  const
-    XK_blank* = 0x000009DF
-    XK_soliddiamond* = 0x000009E0
-    XK_checkerboard* = 0x000009E1
-    XK_ht* = 0x000009E2
-    XK_ff* = 0x000009E3
-    XK_cr* = 0x000009E4
-    XK_lf* = 0x000009E5
-    XK_nl* = 0x000009E8
-    XK_vt* = 0x000009E9
-    XK_lowrightcorner* = 0x000009EA
-    XK_uprightcorner* = 0x000009EB
-    XK_upleftcorner* = 0x000009EC
-    XK_lowleftcorner* = 0x000009ED
-    XK_crossinglines* = 0x000009EE
-    XK_horizlinescan1* = 0x000009EF
-    XK_horizlinescan3* = 0x000009F0
-    XK_horizlinescan5* = 0x000009F1
-    XK_horizlinescan7* = 0x000009F2
-    XK_horizlinescan9* = 0x000009F3
-    XK_leftt* = 0x000009F4
-    XK_rightt* = 0x000009F5
-    XK_bott* = 0x000009F6
-    XK_topt* = 0x000009F7
-    XK_vertbar* = 0x000009F8
-# XK_SPECIAL 
-#*
-# *  Publishing
-# *  Byte 3 = a
-# *
-
-when defined(XK_PUBLISHING) or true: 
-  const
-    XK_emspace* = 0x00000AA1
-    XK_enspace* = 0x00000AA2
-    XK_em3space* = 0x00000AA3
-    XK_em4space* = 0x00000AA4
-    XK_digitspace* = 0x00000AA5
-    XK_punctspace* = 0x00000AA6
-    XK_thinspace* = 0x00000AA7
-    XK_hairspace* = 0x00000AA8
-    XK_emdash* = 0x00000AA9
-    XK_endash* = 0x00000AAA
-    XK_signifblank* = 0x00000AAC
-    XK_ellipsis* = 0x00000AAE
-    XK_doubbaselinedot* = 0x00000AAF
-    XK_onethird* = 0x00000AB0
-    XK_twothirds* = 0x00000AB1
-    XK_onefifth* = 0x00000AB2
-    XK_twofifths* = 0x00000AB3
-    XK_threefifths* = 0x00000AB4
-    XK_fourfifths* = 0x00000AB5
-    XK_onesixth* = 0x00000AB6
-    XK_fivesixths* = 0x00000AB7
-    XK_careof* = 0x00000AB8
-    XK_figdash* = 0x00000ABB
-    XK_leftanglebracket* = 0x00000ABC
-    XK_decimalpoint* = 0x00000ABD
-    XK_rightanglebracket* = 0x00000ABE
-    XK_marker* = 0x00000ABF
-    XK_oneeighth* = 0x00000AC3
-    XK_threeeighths* = 0x00000AC4
-    XK_fiveeighths* = 0x00000AC5
-    XK_seveneighths* = 0x00000AC6
-    XK_trademark* = 0x00000AC9
-    XK_signaturemark* = 0x00000ACA
-    XK_trademarkincircle* = 0x00000ACB
-    XK_leftopentriangle* = 0x00000ACC
-    XK_rightopentriangle* = 0x00000ACD
-    XK_emopencircle* = 0x00000ACE
-    XK_emopenrectangle* = 0x00000ACF
-    XK_leftsinglequotemark* = 0x00000AD0
-    XK_rightsinglequotemark* = 0x00000AD1
-    XK_leftdoublequotemark* = 0x00000AD2
-    XK_rightdoublequotemark* = 0x00000AD3
-    XK_prescription* = 0x00000AD4
-    XK_minutes* = 0x00000AD6
-    XK_seconds* = 0x00000AD7
-    XK_latincross* = 0x00000AD9
-    XK_hexagram* = 0x00000ADA
-    XK_filledrectbullet* = 0x00000ADB
-    XK_filledlefttribullet* = 0x00000ADC
-    XK_filledrighttribullet* = 0x00000ADD
-    XK_emfilledcircle* = 0x00000ADE
-    XK_emfilledrect* = 0x00000ADF
-    XK_enopencircbullet* = 0x00000AE0
-    XK_enopensquarebullet* = 0x00000AE1
-    XK_openrectbullet* = 0x00000AE2
-    XK_opentribulletup* = 0x00000AE3
-    XK_opentribulletdown* = 0x00000AE4
-    XK_openstar* = 0x00000AE5
-    XK_enfilledcircbullet* = 0x00000AE6
-    XK_enfilledsqbullet* = 0x00000AE7
-    XK_filledtribulletup* = 0x00000AE8
-    XK_filledtribulletdown* = 0x00000AE9
-    XK_leftpointer* = 0x00000AEA
-    XK_rightpointer* = 0x00000AEB
-    XK_club* = 0x00000AEC
-    XK_diamond* = 0x00000AED
-    XK_heart* = 0x00000AEE
-    XK_maltesecross* = 0x00000AF0
-    XK_dagger* = 0x00000AF1
-    XK_doubledagger* = 0x00000AF2
-    XK_checkmark* = 0x00000AF3
-    XK_ballotcross* = 0x00000AF4
-    XK_musicalsharp* = 0x00000AF5
-    XK_musicalflat* = 0x00000AF6
-    XK_malesymbol* = 0x00000AF7
-    XK_femalesymbol* = 0x00000AF8
-    XK_telephone* = 0x00000AF9
-    XK_telephonerecorder* = 0x00000AFA
-    XK_phonographcopyright* = 0x00000AFB
-    XK_caret* = 0x00000AFC
-    XK_singlelowquotemark* = 0x00000AFD
-    XK_doublelowquotemark* = 0x00000AFE
-    XK_cursor* = 0x00000AFF
-# XK_PUBLISHING 
-#*
-# *  APL
-# *  Byte 3 = b
-# *
-
-when defined(XK_APL) or true: 
-  const
-    XK_leftcaret* = 0x00000BA3
-    XK_rightcaret* = 0x00000BA6
-    XK_downcaret* = 0x00000BA8
-    XK_upcaret* = 0x00000BA9
-    XK_overbar* = 0x00000BC0
-    XK_downtack* = 0x00000BC2
-    XK_upshoe* = 0x00000BC3
-    XK_downstile* = 0x00000BC4
-    XK_underbar* = 0x00000BC6
-    XK_jot* = 0x00000BCA
-    XK_quad* = 0x00000BCC
-    XK_uptack* = 0x00000BCE
-    XK_circle* = 0x00000BCF
-    XK_upstile* = 0x00000BD3
-    XK_downshoe* = 0x00000BD6
-    XK_rightshoe* = 0x00000BD8
-    XK_leftshoe* = 0x00000BDA
-    XK_lefttack* = 0x00000BDC
-    XK_righttack* = 0x00000BFC
-# XK_APL 
-#*
-# * Hebrew
-# * Byte 3 = c
-# *
-
-when defined(XK_HEBREW) or true: 
-  const
-    XK_hebrew_doublelowline* = 0x00000CDF
-    XK_hebrew_aleph* = 0x00000CE0
-    XK_hebrew_bet* = 0x00000CE1
-    XK_hebrew_beth* = 0x00000CE1 # deprecated 
-    XK_hebrew_gimel* = 0x00000CE2
-    XK_hebrew_gimmel* = 0x00000CE2 # deprecated 
-    XK_hebrew_dalet* = 0x00000CE3
-    XK_hebrew_daleth* = 0x00000CE3 # deprecated 
-    XK_hebrew_he* = 0x00000CE4
-    XK_hebrew_waw* = 0x00000CE5
-    XK_hebrew_zain* = 0x00000CE6
-    XK_hebrew_zayin* = 0x00000CE6 # deprecated 
-    XK_hebrew_chet* = 0x00000CE7
-    XK_hebrew_het* = 0x00000CE7 # deprecated 
-    XK_hebrew_tet* = 0x00000CE8
-    XK_hebrew_teth* = 0x00000CE8 # deprecated 
-    XK_hebrew_yod* = 0x00000CE9
-    XK_hebrew_finalkaph* = 0x00000CEA
-    XK_hebrew_kaph* = 0x00000CEB
-    XK_hebrew_lamed* = 0x00000CEC
-    XK_hebrew_finalmem* = 0x00000CED
-    XK_hebrew_mem* = 0x00000CEE
-    XK_hebrew_finalnun* = 0x00000CEF
-    XK_hebrew_nun* = 0x00000CF0
-    XK_hebrew_samech* = 0x00000CF1
-    XK_hebrew_samekh* = 0x00000CF1 # deprecated 
-    XK_hebrew_ayin* = 0x00000CF2
-    XK_hebrew_finalpe* = 0x00000CF3
-    XK_hebrew_pe* = 0x00000CF4
-    XK_hebrew_finalzade* = 0x00000CF5
-    XK_hebrew_finalzadi* = 0x00000CF5 # deprecated 
-    XK_hebrew_zade* = 0x00000CF6
-    XK_hebrew_zadi* = 0x00000CF6 # deprecated 
-    XK_hebrew_qoph* = 0x00000CF7
-    XK_hebrew_kuf* = 0x00000CF7 # deprecated 
-    XK_hebrew_resh* = 0x00000CF8
-    XK_hebrew_shin* = 0x00000CF9
-    XK_hebrew_taw* = 0x00000CFA
-    XK_hebrew_taf* = 0x00000CFA # deprecated 
-    XK_Hebrew_switch* = 0x0000FF7E # Alias for mode_switch 
-# XK_HEBREW 
-#*
-# * Thai
-# * Byte 3 = d
-# *
-
-when defined(XK_THAI) or true: 
-  const
-    XK_Thai_kokai* = 0x00000DA1
-    XK_Thai_khokhai* = 0x00000DA2
-    XK_Thai_khokhuat* = 0x00000DA3
-    XK_Thai_khokhwai* = 0x00000DA4
-    XK_Thai_khokhon* = 0x00000DA5
-    XK_Thai_khorakhang* = 0x00000DA6
-    XK_Thai_ngongu* = 0x00000DA7
-    XK_Thai_chochan* = 0x00000DA8
-    XK_Thai_choching* = 0x00000DA9
-    XK_Thai_chochang* = 0x00000DAA
-    XK_Thai_soso* = 0x00000DAB
-    XK_Thai_chochoe* = 0x00000DAC
-    XK_Thai_yoying* = 0x00000DAD
-    XK_Thai_dochada* = 0x00000DAE
-    XK_Thai_topatak* = 0x00000DAF
-    XK_Thai_thothan* = 0x00000DB0
-    XK_Thai_thonangmontho* = 0x00000DB1
-    XK_Thai_thophuthao* = 0x00000DB2
-    XK_Thai_nonen* = 0x00000DB3
-    XK_Thai_dodek* = 0x00000DB4
-    XK_Thai_totao* = 0x00000DB5
-    XK_Thai_thothung* = 0x00000DB6
-    XK_Thai_thothahan* = 0x00000DB7
-    XK_Thai_thothong* = 0x00000DB8
-    XK_Thai_nonu* = 0x00000DB9
-    XK_Thai_bobaimai* = 0x00000DBA
-    XK_Thai_popla* = 0x00000DBB
-    XK_Thai_phophung* = 0x00000DBC
-    XK_Thai_fofa* = 0x00000DBD
-    XK_Thai_phophan* = 0x00000DBE
-    XK_Thai_fofan* = 0x00000DBF
-    XK_Thai_phosamphao* = 0x00000DC0
-    XK_Thai_moma* = 0x00000DC1
-    XK_Thai_yoyak* = 0x00000DC2
-    XK_Thai_rorua* = 0x00000DC3
-    XK_Thai_ru* = 0x00000DC4
-    XK_Thai_loling* = 0x00000DC5
-    XK_Thai_lu* = 0x00000DC6
-    XK_Thai_wowaen* = 0x00000DC7
-    XK_Thai_sosala* = 0x00000DC8
-    XK_Thai_sorusi* = 0x00000DC9
-    XK_Thai_sosua* = 0x00000DCA
-    XK_Thai_hohip* = 0x00000DCB
-    XK_Thai_lochula* = 0x00000DCC
-    XK_Thai_oang* = 0x00000DCD
-    XK_Thai_honokhuk* = 0x00000DCE
-    XK_Thai_paiyannoi* = 0x00000DCF
-    XK_Thai_saraa* = 0x00000DD0
-    XK_Thai_maihanakat* = 0x00000DD1
-    XK_Thai_saraaa* = 0x00000DD2
-    XK_Thai_saraam* = 0x00000DD3
-    XK_Thai_sarai* = 0x00000DD4
-    XK_Thai_saraii* = 0x00000DD5
-    XK_Thai_saraue* = 0x00000DD6
-    XK_Thai_sarauee* = 0x00000DD7
-    XK_Thai_sarau* = 0x00000DD8
-    XK_Thai_sarauu* = 0x00000DD9
-    XK_Thai_phinthu* = 0x00000DDA
-    XK_Thai_maihanakat_maitho* = 0x00000DDE
-    XK_Thai_baht* = 0x00000DDF
-    XK_Thai_sarae* = 0x00000DE0
-    XK_Thai_saraae* = 0x00000DE1
-    XK_Thai_sarao* = 0x00000DE2
-    XK_Thai_saraaimaimuan* = 0x00000DE3
-    XK_Thai_saraaimaimalai* = 0x00000DE4
-    XK_Thai_lakkhangyao* = 0x00000DE5
-    XK_Thai_maiyamok* = 0x00000DE6
-    XK_Thai_maitaikhu* = 0x00000DE7
-    XK_Thai_maiek* = 0x00000DE8
-    XK_Thai_maitho* = 0x00000DE9
-    XK_Thai_maitri* = 0x00000DEA
-    XK_Thai_maichattawa* = 0x00000DEB
-    XK_Thai_thanthakhat* = 0x00000DEC
-    XK_Thai_nikhahit* = 0x00000DED
-    XK_Thai_leksun* = 0x00000DF0
-    XK_Thai_leknung* = 0x00000DF1
-    XK_Thai_leksong* = 0x00000DF2
-    XK_Thai_leksam* = 0x00000DF3
-    XK_Thai_leksi* = 0x00000DF4
-    XK_Thai_lekha* = 0x00000DF5
-    XK_Thai_lekhok* = 0x00000DF6
-    XK_Thai_lekchet* = 0x00000DF7
-    XK_Thai_lekpaet* = 0x00000DF8
-    XK_Thai_lekkao* = 0x00000DF9
-# XK_THAI 
-#*
-# *   Korean
-# *   Byte 3 = e
-# *
-
-when defined(XK_KOREAN) or true: 
-  const
-    XK_Hangul* = 0x0000FF31     # Hangul start/stop(toggle) 
-    XK_Hangul_Start* = 0x0000FF32 # Hangul start 
-    XK_Hangul_End* = 0x0000FF33 # Hangul end, English start 
-    XK_Hangul_Hanja* = 0x0000FF34 # Start Hangul->Hanja Conversion 
-    XK_Hangul_Jamo* = 0x0000FF35 # Hangul Jamo mode 
-    XK_Hangul_Romaja* = 0x0000FF36 # Hangul Romaja mode 
-    XK_Hangul_Codeinput* = 0x0000FF37 # Hangul code input mode 
-    XK_Hangul_Jeonja* = 0x0000FF38 # Jeonja mode 
-    XK_Hangul_Banja* = 0x0000FF39 # Banja mode 
-    XK_Hangul_PreHanja* = 0x0000FF3A # Pre Hanja conversion 
-    XK_Hangul_PostHanja* = 0x0000FF3B # Post Hanja conversion 
-    XK_Hangul_SingleCandidate* = 0x0000FF3C # Single candidate 
-    XK_Hangul_MultipleCandidate* = 0x0000FF3D # Multiple candidate 
-    XK_Hangul_PreviousCandidate* = 0x0000FF3E # Previous candidate 
-    XK_Hangul_Special* = 0x0000FF3F # Special symbols 
-    XK_Hangul_switch* = 0x0000FF7E # Alias for mode_switch 
-                                   # Hangul Consonant Characters 
-    XK_Hangul_Kiyeog* = 0x00000EA1
-    XK_Hangul_SsangKiyeog* = 0x00000EA2
-    XK_Hangul_KiyeogSios* = 0x00000EA3
-    XK_Hangul_Nieun* = 0x00000EA4
-    XK_Hangul_NieunJieuj* = 0x00000EA5
-    XK_Hangul_NieunHieuh* = 0x00000EA6
-    XK_Hangul_Dikeud* = 0x00000EA7
-    XK_Hangul_SsangDikeud* = 0x00000EA8
-    XK_Hangul_Rieul* = 0x00000EA9
-    XK_Hangul_RieulKiyeog* = 0x00000EAA
-    XK_Hangul_RieulMieum* = 0x00000EAB
-    XK_Hangul_RieulPieub* = 0x00000EAC
-    XK_Hangul_RieulSios* = 0x00000EAD
-    XK_Hangul_RieulTieut* = 0x00000EAE
-    XK_Hangul_RieulPhieuf* = 0x00000EAF
-    XK_Hangul_RieulHieuh* = 0x00000EB0
-    XK_Hangul_Mieum* = 0x00000EB1
-    XK_Hangul_Pieub* = 0x00000EB2
-    XK_Hangul_SsangPieub* = 0x00000EB3
-    XK_Hangul_PieubSios* = 0x00000EB4
-    XK_Hangul_Sios* = 0x00000EB5
-    XK_Hangul_SsangSios* = 0x00000EB6
-    XK_Hangul_Ieung* = 0x00000EB7
-    XK_Hangul_Jieuj* = 0x00000EB8
-    XK_Hangul_SsangJieuj* = 0x00000EB9
-    XK_Hangul_Cieuc* = 0x00000EBA
-    XK_Hangul_Khieuq* = 0x00000EBB
-    XK_Hangul_Tieut* = 0x00000EBC
-    XK_Hangul_Phieuf* = 0x00000EBD
-    XK_Hangul_Hieuh* = 0x00000EBE # Hangul Vowel Characters 
-    XK_Hangul_A* = 0x00000EBF
-    XK_Hangul_AE* = 0x00000EC0
-    XK_Hangul_YA* = 0x00000EC1
-    XK_Hangul_YAE* = 0x00000EC2
-    XK_Hangul_EO* = 0x00000EC3
-    XK_Hangul_E* = 0x00000EC4
-    XK_Hangul_YEO* = 0x00000EC5
-    XK_Hangul_YE* = 0x00000EC6
-    XK_Hangul_O* = 0x00000EC7
-    XK_Hangul_WA* = 0x00000EC8
-    XK_Hangul_WAE* = 0x00000EC9
-    XK_Hangul_OE* = 0x00000ECA
-    XK_Hangul_YO* = 0x00000ECB
-    XK_Hangul_U* = 0x00000ECC
-    XK_Hangul_WEO* = 0x00000ECD
-    XK_Hangul_WE* = 0x00000ECE
-    XK_Hangul_WI* = 0x00000ECF
-    XK_Hangul_YU* = 0x00000ED0
-    XK_Hangul_EU* = 0x00000ED1
-    XK_Hangul_YI* = 0x00000ED2
-    XK_Hangul_I* = 0x00000ED3   # Hangul syllable-final (JongSeong) Characters 
-    XK_Hangul_J_Kiyeog* = 0x00000ED4
-    XK_Hangul_J_SsangKiyeog* = 0x00000ED5
-    XK_Hangul_J_KiyeogSios* = 0x00000ED6
-    XK_Hangul_J_Nieun* = 0x00000ED7
-    XK_Hangul_J_NieunJieuj* = 0x00000ED8
-    XK_Hangul_J_NieunHieuh* = 0x00000ED9
-    XK_Hangul_J_Dikeud* = 0x00000EDA
-    XK_Hangul_J_Rieul* = 0x00000EDB
-    XK_Hangul_J_RieulKiyeog* = 0x00000EDC
-    XK_Hangul_J_RieulMieum* = 0x00000EDD
-    XK_Hangul_J_RieulPieub* = 0x00000EDE
-    XK_Hangul_J_RieulSios* = 0x00000EDF
-    XK_Hangul_J_RieulTieut* = 0x00000EE0
-    XK_Hangul_J_RieulPhieuf* = 0x00000EE1
-    XK_Hangul_J_RieulHieuh* = 0x00000EE2
-    XK_Hangul_J_Mieum* = 0x00000EE3
-    XK_Hangul_J_Pieub* = 0x00000EE4
-    XK_Hangul_J_PieubSios* = 0x00000EE5
-    XK_Hangul_J_Sios* = 0x00000EE6
-    XK_Hangul_J_SsangSios* = 0x00000EE7
-    XK_Hangul_J_Ieung* = 0x00000EE8
-    XK_Hangul_J_Jieuj* = 0x00000EE9
-    XK_Hangul_J_Cieuc* = 0x00000EEA
-    XK_Hangul_J_Khieuq* = 0x00000EEB
-    XK_Hangul_J_Tieut* = 0x00000EEC
-    XK_Hangul_J_Phieuf* = 0x00000EED
-    XK_Hangul_J_Hieuh* = 0x00000EEE # Ancient Hangul Consonant Characters 
-    XK_Hangul_RieulYeorinHieuh* = 0x00000EEF
-    XK_Hangul_SunkyeongeumMieum* = 0x00000EF0
-    XK_Hangul_SunkyeongeumPieub* = 0x00000EF1
-    XK_Hangul_PanSios* = 0x00000EF2
-    XK_Hangul_KkogjiDalrinIeung* = 0x00000EF3
-    XK_Hangul_SunkyeongeumPhieuf* = 0x00000EF4
-    XK_Hangul_YeorinHieuh* = 0x00000EF5 # Ancient Hangul Vowel Characters 
-    XK_Hangul_AraeA* = 0x00000EF6
-    XK_Hangul_AraeAE* = 0x00000EF7 # Ancient Hangul syllable-final (JongSeong) Characters 
-    XK_Hangul_J_PanSios* = 0x00000EF8
-    XK_Hangul_J_KkogjiDalrinIeung* = 0x00000EF9
-    XK_Hangul_J_YeorinHieuh* = 0x00000EFA # Korean currency symbol 
-    XK_Korean_Won* = 0x00000EFF
-# XK_KOREAN 
-#*
-# *   Armenian
-# *   Byte 3 = = $14
-# *
-
-when defined(XK_ARMENIAN) or true: 
-  const
-    XK_Armenian_eternity* = 0x000014A1
-    XK_Armenian_ligature_ew* = 0x000014A2
-    XK_Armenian_full_stop* = 0x000014A3
-    XK_Armenian_verjaket* = 0x000014A3
-    XK_Armenian_parenright* = 0x000014A4
-    XK_Armenian_parenleft* = 0x000014A5
-    XK_Armenian_guillemotright* = 0x000014A6
-    XK_Armenian_guillemotleft* = 0x000014A7
-    XK_Armenian_em_dash* = 0x000014A8
-    XK_Armenian_dot* = 0x000014A9
-    XK_Armenian_mijaket* = 0x000014A9
-    XK_Armenian_separation_mark* = 0x000014AA
-    XK_Armenian_but* = 0x000014AA
-    XK_Armenian_comma* = 0x000014AB
-    XK_Armenian_en_dash* = 0x000014AC
-    XK_Armenian_hyphen* = 0x000014AD
-    XK_Armenian_yentamna* = 0x000014AD
-    XK_Armenian_ellipsis* = 0x000014AE
-    XK_Armenian_exclam* = 0x000014AF
-    XK_Armenian_amanak* = 0x000014AF
-    XK_Armenian_accent* = 0x000014B0
-    XK_Armenian_shesht* = 0x000014B0
-    XK_Armenian_question* = 0x000014B1
-    XK_Armenian_paruyk* = 0x000014B1
-    XKc_Armenian_AYB* = 0x000014B2
-    XK_Armenian_ayb* = 0x000014B3
-    XKc_Armenian_BEN* = 0x000014B4
-    XK_Armenian_ben* = 0x000014B5
-    XKc_Armenian_GIM* = 0x000014B6
-    XK_Armenian_gim* = 0x000014B7
-    XKc_Armenian_DA* = 0x000014B8
-    XK_Armenian_da* = 0x000014B9
-    XKc_Armenian_YECH* = 0x000014BA
-    XK_Armenian_yech* = 0x000014BB
-    XKc_Armenian_ZA* = 0x000014BC
-    XK_Armenian_za* = 0x000014BD
-    XKc_Armenian_E* = 0x000014BE
-    XK_Armenian_e* = 0x000014BF
-    XKc_Armenian_AT* = 0x000014C0
-    XK_Armenian_at* = 0x000014C1
-    XKc_Armenian_TO* = 0x000014C2
-    XK_Armenian_to* = 0x000014C3
-    XKc_Armenian_ZHE* = 0x000014C4
-    XK_Armenian_zhe* = 0x000014C5
-    XKc_Armenian_INI* = 0x000014C6
-    XK_Armenian_ini* = 0x000014C7
-    XKc_Armenian_LYUN* = 0x000014C8
-    XK_Armenian_lyun* = 0x000014C9
-    XKc_Armenian_KHE* = 0x000014CA
-    XK_Armenian_khe* = 0x000014CB
-    XKc_Armenian_TSA* = 0x000014CC
-    XK_Armenian_tsa* = 0x000014CD
-    XKc_Armenian_KEN* = 0x000014CE
-    XK_Armenian_ken* = 0x000014CF
-    XKc_Armenian_HO* = 0x000014D0
-    XK_Armenian_ho* = 0x000014D1
-    XKc_Armenian_DZA* = 0x000014D2
-    XK_Armenian_dza* = 0x000014D3
-    XKc_Armenian_GHAT* = 0x000014D4
-    XK_Armenian_ghat* = 0x000014D5
-    XKc_Armenian_TCHE* = 0x000014D6
-    XK_Armenian_tche* = 0x000014D7
-    XKc_Armenian_MEN* = 0x000014D8
-    XK_Armenian_men* = 0x000014D9
-    XKc_Armenian_HI* = 0x000014DA
-    XK_Armenian_hi* = 0x000014DB
-    XKc_Armenian_NU* = 0x000014DC
-    XK_Armenian_nu* = 0x000014DD
-    XKc_Armenian_SHA* = 0x000014DE
-    XK_Armenian_sha* = 0x000014DF
-    XKc_Armenian_VO* = 0x000014E0
-    XK_Armenian_vo* = 0x000014E1
-    XKc_Armenian_CHA* = 0x000014E2
-    XK_Armenian_cha* = 0x000014E3
-    XKc_Armenian_PE* = 0x000014E4
-    XK_Armenian_pe* = 0x000014E5
-    XKc_Armenian_JE* = 0x000014E6
-    XK_Armenian_je* = 0x000014E7
-    XKc_Armenian_RA* = 0x000014E8
-    XK_Armenian_ra* = 0x000014E9
-    XKc_Armenian_SE* = 0x000014EA
-    XK_Armenian_se* = 0x000014EB
-    XKc_Armenian_VEV* = 0x000014EC
-    XK_Armenian_vev* = 0x000014ED
-    XKc_Armenian_TYUN* = 0x000014EE
-    XK_Armenian_tyun* = 0x000014EF
-    XKc_Armenian_RE* = 0x000014F0
-    XK_Armenian_re* = 0x000014F1
-    XKc_Armenian_TSO* = 0x000014F2
-    XK_Armenian_tso* = 0x000014F3
-    XKc_Armenian_VYUN* = 0x000014F4
-    XK_Armenian_vyun* = 0x000014F5
-    XKc_Armenian_PYUR* = 0x000014F6
-    XK_Armenian_pyur* = 0x000014F7
-    XKc_Armenian_KE* = 0x000014F8
-    XK_Armenian_ke* = 0x000014F9
-    XKc_Armenian_O* = 0x000014FA
-    XK_Armenian_o* = 0x000014FB
-    XKc_Armenian_FE* = 0x000014FC
-    XK_Armenian_fe* = 0x000014FD
-    XK_Armenian_apostrophe* = 0x000014FE
-    XK_Armenian_section_sign* = 0x000014FF
-# XK_ARMENIAN 
-#*
-# *   Georgian
-# *   Byte 3 = = $15
-# *
-
-when defined(XK_GEORGIAN) or true: 
-  const
-    XK_Georgian_an* = 0x000015D0
-    XK_Georgian_ban* = 0x000015D1
-    XK_Georgian_gan* = 0x000015D2
-    XK_Georgian_don* = 0x000015D3
-    XK_Georgian_en* = 0x000015D4
-    XK_Georgian_vin* = 0x000015D5
-    XK_Georgian_zen* = 0x000015D6
-    XK_Georgian_tan* = 0x000015D7
-    XK_Georgian_in* = 0x000015D8
-    XK_Georgian_kan* = 0x000015D9
-    XK_Georgian_las* = 0x000015DA
-    XK_Georgian_man* = 0x000015DB
-    XK_Georgian_nar* = 0x000015DC
-    XK_Georgian_on* = 0x000015DD
-    XK_Georgian_par* = 0x000015DE
-    XK_Georgian_zhar* = 0x000015DF
-    XK_Georgian_rae* = 0x000015E0
-    XK_Georgian_san* = 0x000015E1
-    XK_Georgian_tar* = 0x000015E2
-    XK_Georgian_un* = 0x000015E3
-    XK_Georgian_phar* = 0x000015E4
-    XK_Georgian_khar* = 0x000015E5
-    XK_Georgian_ghan* = 0x000015E6
-    XK_Georgian_qar* = 0x000015E7
-    XK_Georgian_shin* = 0x000015E8
-    XK_Georgian_chin* = 0x000015E9
-    XK_Georgian_can* = 0x000015EA
-    XK_Georgian_jil* = 0x000015EB
-    XK_Georgian_cil* = 0x000015EC
-    XK_Georgian_char* = 0x000015ED
-    XK_Georgian_xan* = 0x000015EE
-    XK_Georgian_jhan* = 0x000015EF
-    XK_Georgian_hae* = 0x000015F0
-    XK_Georgian_he* = 0x000015F1
-    XK_Georgian_hie* = 0x000015F2
-    XK_Georgian_we* = 0x000015F3
-    XK_Georgian_har* = 0x000015F4
-    XK_Georgian_hoe* = 0x000015F5
-    XK_Georgian_fi* = 0x000015F6
-# XK_GEORGIAN 
-#*
-# * Azeri (and other Turkic or Caucasian languages of ex-USSR)
-# * Byte 3 = = $16
-# *
-
-when defined(XK_CAUCASUS) or true: 
-  # latin 
-  const
-    XKc_Ccedillaabovedot* = 0x000016A2
-    XKc_Xabovedot* = 0x000016A3
-    XKc_Qabovedot* = 0x000016A5
-    XKc_Ibreve* = 0x000016A6
-    XKc_IE* = 0x000016A7
-    XKc_UO* = 0x000016A8
-    XKc_Zstroke* = 0x000016A9
-    XKc_Gcaron* = 0x000016AA
-    XKc_Obarred* = 0x000016AF
-    XK_ccedillaabovedot* = 0x000016B2
-    XK_xabovedot* = 0x000016B3
-    XKc_Ocaron* = 0x000016B4
-    XK_qabovedot* = 0x000016B5
-    XK_ibreve* = 0x000016B6
-    XK_ie* = 0x000016B7
-    XK_uo* = 0x000016B8
-    XK_zstroke* = 0x000016B9
-    XK_gcaron* = 0x000016BA
-    XK_ocaron* = 0x000016BD
-    XK_obarred* = 0x000016BF
-    XKc_SCHWA* = 0x000016C6
-    XK_schwa* = 0x000016F6 # those are not really Caucasus, but I put them here for now 
-                           # For Inupiak 
-    XKc_Lbelowdot* = 0x000016D1
-    XKc_Lstrokebelowdot* = 0x000016D2
-    XK_lbelowdot* = 0x000016E1
-    XK_lstrokebelowdot* = 0x000016E2 # For Guarani 
-    XKc_Gtilde* = 0x000016D3
-    XK_gtilde* = 0x000016E3
-# XK_CAUCASUS 
-#*
-# *   Vietnamese
-# *   Byte 3 = = $1e
-# *
-
-when defined(XK_VIETNAMESE) or true:
-  const 
-    XKc_Abelowdot* = 0x00001EA0
-    XK_abelowdot* = 0x00001EA1
-    XKc_Ahook* = 0x00001EA2
-    XK_ahook* = 0x00001EA3
-    XKc_Acircumflexacute* = 0x00001EA4
-    XK_acircumflexacute* = 0x00001EA5
-    XKc_Acircumflexgrave* = 0x00001EA6
-    XK_acircumflexgrave* = 0x00001EA7
-    XKc_Acircumflexhook* = 0x00001EA8
-    XK_acircumflexhook* = 0x00001EA9
-    XKc_Acircumflextilde* = 0x00001EAA
-    XK_acircumflextilde* = 0x00001EAB
-    XKc_Acircumflexbelowdot* = 0x00001EAC
-    XK_acircumflexbelowdot* = 0x00001EAD
-    XKc_Abreveacute* = 0x00001EAE
-    XK_abreveacute* = 0x00001EAF
-    XKc_Abrevegrave* = 0x00001EB0
-    XK_abrevegrave* = 0x00001EB1
-    XKc_Abrevehook* = 0x00001EB2
-    XK_abrevehook* = 0x00001EB3
-    XKc_Abrevetilde* = 0x00001EB4
-    XK_abrevetilde* = 0x00001EB5
-    XKc_Abrevebelowdot* = 0x00001EB6
-    XK_abrevebelowdot* = 0x00001EB7
-    XKc_Ebelowdot* = 0x00001EB8
-    XK_ebelowdot* = 0x00001EB9
-    XKc_Ehook* = 0x00001EBA
-    XK_ehook* = 0x00001EBB
-    XKc_Etilde* = 0x00001EBC
-    XK_etilde* = 0x00001EBD
-    XKc_Ecircumflexacute* = 0x00001EBE
-    XK_ecircumflexacute* = 0x00001EBF
-    XKc_Ecircumflexgrave* = 0x00001EC0
-    XK_ecircumflexgrave* = 0x00001EC1
-    XKc_Ecircumflexhook* = 0x00001EC2
-    XK_ecircumflexhook* = 0x00001EC3
-    XKc_Ecircumflextilde* = 0x00001EC4
-    XK_ecircumflextilde* = 0x00001EC5
-    XKc_Ecircumflexbelowdot* = 0x00001EC6
-    XK_ecircumflexbelowdot* = 0x00001EC7
-    XKc_Ihook* = 0x00001EC8
-    XK_ihook* = 0x00001EC9
-    XKc_Ibelowdot* = 0x00001ECA
-    XK_ibelowdot* = 0x00001ECB
-    XKc_Obelowdot* = 0x00001ECC
-    XK_obelowdot* = 0x00001ECD
-    XKc_Ohook* = 0x00001ECE
-    XK_ohook* = 0x00001ECF
-    XKc_Ocircumflexacute* = 0x00001ED0
-    XK_ocircumflexacute* = 0x00001ED1
-    XKc_Ocircumflexgrave* = 0x00001ED2
-    XK_ocircumflexgrave* = 0x00001ED3
-    XKc_Ocircumflexhook* = 0x00001ED4
-    XK_ocircumflexhook* = 0x00001ED5
-    XKc_Ocircumflextilde* = 0x00001ED6
-    XK_ocircumflextilde* = 0x00001ED7
-    XKc_Ocircumflexbelowdot* = 0x00001ED8
-    XK_ocircumflexbelowdot* = 0x00001ED9
-    XKc_Ohornacute* = 0x00001EDA
-    XK_ohornacute* = 0x00001EDB
-    XKc_Ohorngrave* = 0x00001EDC
-    XK_ohorngrave* = 0x00001EDD
-    XKc_Ohornhook* = 0x00001EDE
-    XK_ohornhook* = 0x00001EDF
-    XKc_Ohorntilde* = 0x00001EE0
-    XK_ohorntilde* = 0x00001EE1
-    XKc_Ohornbelowdot* = 0x00001EE2
-    XK_ohornbelowdot* = 0x00001EE3
-    XKc_Ubelowdot* = 0x00001EE4
-    XK_ubelowdot* = 0x00001EE5
-    XKc_Uhook* = 0x00001EE6
-    XK_uhook* = 0x00001EE7
-    XKc_Uhornacute* = 0x00001EE8
-    XK_uhornacute* = 0x00001EE9
-    XKc_Uhorngrave* = 0x00001EEA
-    XK_uhorngrave* = 0x00001EEB
-    XKc_Uhornhook* = 0x00001EEC
-    XK_uhornhook* = 0x00001EED
-    XKc_Uhorntilde* = 0x00001EEE
-    XK_uhorntilde* = 0x00001EEF
-    XKc_Uhornbelowdot* = 0x00001EF0
-    XK_uhornbelowdot* = 0x00001EF1
-    XKc_Ybelowdot* = 0x00001EF4
-    XK_ybelowdot* = 0x00001EF5
-    XKc_Yhook* = 0x00001EF6
-    XK_yhook* = 0x00001EF7
-    XKc_Ytilde* = 0x00001EF8
-    XK_ytilde* = 0x00001EF9
-    XKc_Ohorn* = 0x00001EFA     # U+01a0 
-    XK_ohorn* = 0x00001EFB      # U+01a1 
-    XKc_Uhorn* = 0x00001EFC     # U+01af 
-    XK_uhorn* = 0x00001EFD      # U+01b0 
-    XK_combining_tilde* = 0x00001E9F # U+0303 
-    XK_combining_grave* = 0x00001EF2 # U+0300 
-    XK_combining_acute* = 0x00001EF3 # U+0301 
-    XK_combining_hook* = 0x00001EFE # U+0309 
-    XK_combining_belowdot* = 0x00001EFF # U+0323 
-# XK_VIETNAMESE 
-
-when defined(XK_CURRENCY) or true: 
-  const
-    XK_EcuSign* = 0x000020A0
-    XK_ColonSign* = 0x000020A1
-    XK_CruzeiroSign* = 0x000020A2
-    XK_FFrancSign* = 0x000020A3
-    XK_LiraSign* = 0x000020A4
-    XK_MillSign* = 0x000020A5
-    XK_NairaSign* = 0x000020A6
-    XK_PesetaSign* = 0x000020A7
-    XK_RupeeSign* = 0x000020A8
-    XK_WonSign* = 0x000020A9
-    XK_NewSheqelSign* = 0x000020AA
-    XK_DongSign* = 0x000020AB
-    XK_EuroSign* = 0x000020AC
-# implementation
diff --git a/lib/wrappers/x11/x.nim b/lib/wrappers/x11/x.nim
deleted file mode 100755
index aa6e7f821..000000000
--- a/lib/wrappers/x11/x.nim
+++ /dev/null
@@ -1,399 +0,0 @@
-
-#
-#  Automatically converted by H2Pas 0.99.15 from x.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    x.h
-#
-# Pointers to basic pascal types, inserted by h2pas conversion program.
-
-const 
-  X_PROTOCOL* = 11
-  X_PROTOCOL_REVISION* = 0
-
-type
-  culong* = int
-  cuchar* = char
-  PXID* = ptr TXID
-  TXID* = culong
-  PMask* = ptr TMask
-  TMask* = culong
-  PPAtom* = ptr PAtom
-  PAtom* = ptr TAtom
-  TAtom* = culong
-  PVisualID* = ptr TVisualID
-  TVisualID* = culong
-  PTime* = ptr TTime
-  TTime* = culong
-  PPWindow* = ptr PWindow
-  PWindow* = ptr TWindow
-  TWindow* = TXID
-  PDrawable* = ptr TDrawable
-  TDrawable* = TXID
-  PFont* = ptr TFont
-  TFont* = TXID
-  PPixmap* = ptr TPixmap
-  TPixmap* = TXID
-  PCursor* = ptr TCursor
-  TCursor* = TXID
-  PColormap* = ptr TColormap
-  TColormap* = TXID
-  PGContext* = ptr TGContext
-  TGContext* = TXID
-  PKeySym* = ptr TKeySym
-  TKeySym* = TXID
-  PKeyCode* = ptr TKeyCode
-  TKeyCode* = cuchar
-
-const 
-  None* = 0
-  ParentRelative* = 1
-  CopyFromParent* = 0
-  PointerWindow* = 0
-  InputFocus* = 1
-  PointerRoot* = 1
-  AnyPropertyType* = 0
-  AnyKey* = 0
-  AnyButton* = 0
-  AllTemporary* = 0
-  CurrentTime* = 0
-  NoSymbol* = 0
-  NoEventMask* = 0
-  KeyPressMask* = 1 shl 0
-  KeyReleaseMask* = 1 shl 1
-  ButtonPressMask* = 1 shl 2
-  ButtonReleaseMask* = 1 shl 3
-  EnterWindowMask* = 1 shl 4
-  LeaveWindowMask* = 1 shl 5
-  PointerMotionMask* = 1 shl 6
-  PointerMotionHintMask* = 1 shl 7
-  Button1MotionMask* = 1 shl 8
-  Button2MotionMask* = 1 shl 9
-  Button3MotionMask* = 1 shl 10
-  Button4MotionMask* = 1 shl 11
-  Button5MotionMask* = 1 shl 12
-  ButtonMotionMask* = 1 shl 13
-  KeymapStateMask* = 1 shl 14
-  ExposureMask* = 1 shl 15
-  VisibilityChangeMask* = 1 shl 16
-  StructureNotifyMask* = 1 shl 17
-  ResizeRedirectMask* = 1 shl 18
-  SubstructureNotifyMask* = 1 shl 19
-  SubstructureRedirectMask* = 1 shl 20
-  FocusChangeMask* = 1 shl 21
-  PropertyChangeMask* = 1 shl 22
-  ColormapChangeMask* = 1 shl 23
-  OwnerGrabButtonMask* = 1 shl 24
-  KeyPress* = 2
-  KeyRelease* = 3
-  ButtonPress* = 4
-  ButtonRelease* = 5
-  MotionNotify* = 6
-  EnterNotify* = 7
-  LeaveNotify* = 8
-  FocusIn* = 9
-  FocusOut* = 10
-  KeymapNotify* = 11
-  Expose* = 12
-  GraphicsExpose* = 13
-  NoExpose* = 14
-  VisibilityNotify* = 15
-  CreateNotify* = 16
-  DestroyNotify* = 17
-  UnmapNotify* = 18
-  MapNotify* = 19
-  MapRequest* = 20
-  ReparentNotify* = 21
-  ConfigureNotify* = 22
-  ConfigureRequest* = 23
-  GravityNotify* = 24
-  ResizeRequest* = 25
-  CirculateNotify* = 26
-  CirculateRequest* = 27
-  PropertyNotify* = 28
-  SelectionClear* = 29
-  SelectionRequest* = 30
-  SelectionNotify* = 31
-  ColormapNotify* = 32
-  ClientMessage* = 33
-  MappingNotify* = 34
-  LASTEvent* = 35
-  ShiftMask* = 1 shl 0
-  LockMask* = 1 shl 1
-  ControlMask* = 1 shl 2
-  Mod1Mask* = 1 shl 3
-  Mod2Mask* = 1 shl 4
-  Mod3Mask* = 1 shl 5
-  Mod4Mask* = 1 shl 6
-  Mod5Mask* = 1 shl 7
-  ShiftMapIndex* = 0
-  LockMapIndex* = 1
-  ControlMapIndex* = 2
-  Mod1MapIndex* = 3
-  Mod2MapIndex* = 4
-  Mod3MapIndex* = 5
-  Mod4MapIndex* = 6
-  Mod5MapIndex* = 7
-  Button1Mask* = 1 shl 8
-  Button2Mask* = 1 shl 9
-  Button3Mask* = 1 shl 10
-  Button4Mask* = 1 shl 11
-  Button5Mask* = 1 shl 12
-  AnyModifier* = 1 shl 15
-  Button1* = 1
-  Button2* = 2
-  Button3* = 3
-  Button4* = 4
-  Button5* = 5
-  NotifyNormal* = 0
-  NotifyGrab* = 1
-  NotifyUngrab* = 2
-  NotifyWhileGrabbed* = 3
-  NotifyHint* = 1
-  NotifyAncestor* = 0
-  NotifyVirtual* = 1
-  NotifyInferior* = 2
-  NotifyNonlinear* = 3
-  NotifyNonlinearVirtual* = 4
-  NotifyPointer* = 5
-  NotifyPointerRoot* = 6
-  NotifyDetailNone* = 7
-  VisibilityUnobscured* = 0
-  VisibilityPartiallyObscured* = 1
-  VisibilityFullyObscured* = 2
-  PlaceOnTop* = 0
-  PlaceOnBottom* = 1
-  FamilyInternet* = 0
-  FamilyDECnet* = 1
-  FamilyChaos* = 2
-  FamilyInternet6* = 6
-  FamilyServerInterpreted* = 5
-  PropertyNewValue* = 0
-  PropertyDelete* = 1
-  ColormapUninstalled* = 0
-  ColormapInstalled* = 1
-  GrabModeSync* = 0
-  GrabModeAsync* = 1
-  GrabSuccess* = 0
-  AlreadyGrabbed* = 1
-  GrabInvalidTime* = 2
-  GrabNotViewable* = 3
-  GrabFrozen* = 4
-  AsyncPointer* = 0
-  SyncPointer* = 1
-  ReplayPointer* = 2
-  AsyncKeyboard* = 3
-  SyncKeyboard* = 4
-  ReplayKeyboard* = 5
-  AsyncBoth* = 6
-  SyncBoth* = 7
-  RevertToNone* = None
-  RevertToPointerRoot* = PointerRoot
-  RevertToParent* = 2
-  Success* = 0
-  BadRequest* = 1
-  BadValue* = 2
-  BadWindow* = 3
-  BadPixmap* = 4
-  BadAtom* = 5
-  BadCursor* = 6
-  BadFont* = 7
-  BadMatch* = 8
-  BadDrawable* = 9
-  BadAccess* = 10
-  BadAlloc* = 11
-  BadColor* = 12
-  BadGC* = 13
-  BadIDChoice* = 14
-  BadName* = 15
-  BadLength* = 16
-  BadImplementation* = 17
-  FirstExtensionError* = 128
-  LastExtensionError* = 255
-  InputOutput* = 1
-  InputOnly* = 2
-  CWBackPixmap* = 1 shl 0
-  CWBackPixel* = 1 shl 1
-  CWBorderPixmap* = 1 shl 2
-  CWBorderPixel* = 1 shl 3
-  CWBitGravity* = 1 shl 4
-  CWWinGravity* = 1 shl 5
-  CWBackingStore* = 1 shl 6
-  CWBackingPlanes* = 1 shl 7
-  CWBackingPixel* = 1 shl 8
-  CWOverrideRedirect* = 1 shl 9
-  CWSaveUnder* = 1 shl 10
-  CWEventMask* = 1 shl 11
-  CWDontPropagate* = 1 shl 12
-  CWColormap* = 1 shl 13
-  CWCursor* = 1 shl 14
-  CWX* = 1 shl 0
-  CWY* = 1 shl 1
-  CWWidth* = 1 shl 2
-  CWHeight* = 1 shl 3
-  CWBorderWidth* = 1 shl 4
-  CWSibling* = 1 shl 5
-  CWStackMode* = 1 shl 6
-  ForgetGravity* = 0
-  NorthWestGravity* = 1
-  NorthGravity* = 2
-  NorthEastGravity* = 3
-  WestGravity* = 4
-  CenterGravity* = 5
-  EastGravity* = 6
-  SouthWestGravity* = 7
-  SouthGravity* = 8
-  SouthEastGravity* = 9
-  StaticGravity* = 10
-  UnmapGravity* = 0
-  NotUseful* = 0
-  WhenMapped* = 1
-  Always* = 2
-  IsUnmapped* = 0
-  IsUnviewable* = 1
-  IsViewable* = 2
-  SetModeInsert* = 0
-  SetModeDelete* = 1
-  DestroyAll* = 0
-  RetainPermanent* = 1
-  RetainTemporary* = 2
-  Above* = 0
-  Below* = 1
-  TopIf* = 2
-  BottomIf* = 3
-  Opposite* = 4
-  RaiseLowest* = 0
-  LowerHighest* = 1
-  PropModeReplace* = 0
-  PropModePrepend* = 1
-  PropModeAppend* = 2
-  GXclear* = 0x00000000
-  GXand* = 0x00000001
-  GXandReverse* = 0x00000002
-  GXcopy* = 0x00000003
-  GXandInverted* = 0x00000004
-  GXnoop* = 0x00000005
-  GXxor* = 0x00000006
-  GXor* = 0x00000007
-  GXnor* = 0x00000008
-  GXequiv* = 0x00000009
-  GXinvert* = 0x0000000A
-  GXorReverse* = 0x0000000B
-  GXcopyInverted* = 0x0000000C
-  GXorInverted* = 0x0000000D
-  GXnand* = 0x0000000E
-  GXset* = 0x0000000F
-  LineSolid* = 0
-  LineOnOffDash* = 1
-  LineDoubleDash* = 2
-  CapNotLast* = 0
-  CapButt* = 1
-  CapRound* = 2
-  CapProjecting* = 3
-  JoinMiter* = 0
-  JoinRound* = 1
-  JoinBevel* = 2
-  FillSolid* = 0
-  FillTiled* = 1
-  FillStippled* = 2
-  FillOpaqueStippled* = 3
-  EvenOddRule* = 0
-  WindingRule* = 1
-  ClipByChildren* = 0
-  IncludeInferiors* = 1
-  Unsorted* = 0
-  YSorted* = 1
-  YXSorted* = 2
-  YXBanded* = 3
-  CoordModeOrigin* = 0
-  CoordModePrevious* = 1
-  Complex* = 0
-  Nonconvex* = 1
-  Convex* = 2
-  ArcChord* = 0
-  ArcPieSlice* = 1
-  GCFunction* = 1 shl 0
-  GCPlaneMask* = 1 shl 1
-  GCForeground* = 1 shl 2
-  GCBackground* = 1 shl 3
-  GCLineWidth* = 1 shl 4
-  GCLineStyle* = 1 shl 5
-  GCCapStyle* = 1 shl 6
-  GCJoinStyle* = 1 shl 7
-  GCFillStyle* = 1 shl 8
-  GCFillRule* = 1 shl 9
-  GCTile* = 1 shl 10
-  GCStipple* = 1 shl 11
-  GCTileStipXOrigin* = 1 shl 12
-  GCTileStipYOrigin* = 1 shl 13
-  GCFont* = 1 shl 14
-  GCSubwindowMode* = 1 shl 15
-  GCGraphicsExposures* = 1 shl 16
-  GCClipXOrigin* = 1 shl 17
-  GCClipYOrigin* = 1 shl 18
-  GCClipMask* = 1 shl 19
-  GCDashOffset* = 1 shl 20
-  GCDashList* = 1 shl 21
-  GCArcMode* = 1 shl 22
-  GCLastBit* = 22
-  FontLeftToRight* = 0
-  FontRightToLeft* = 1
-  FontChange* = 255
-  XYBitmap* = 0
-  XYPixmap* = 1
-  ZPixmap* = 2
-  AllocNone* = 0
-  AllocAll* = 1
-  DoRed* = 1 shl 0
-  DoGreen* = 1 shl 1
-  DoBlue* = 1 shl 2
-  CursorShape* = 0
-  TileShape* = 1
-  StippleShape* = 2
-  AutoRepeatModeOff* = 0
-  AutoRepeatModeOn* = 1
-  AutoRepeatModeDefault* = 2
-  LedModeOff* = 0
-  LedModeOn* = 1
-  KBKeyClickPercent* = 1 shl 0
-  KBBellPercent* = 1 shl 1
-  KBBellPitch* = 1 shl 2
-  KBBellDuration* = 1 shl 3
-  KBLed* = 1 shl 4
-  KBLedMode* = 1 shl 5
-  KBKey* = 1 shl 6
-  KBAutoRepeatMode* = 1 shl 7
-  MappingSuccess* = 0
-  MappingBusy* = 1
-  MappingFailed* = 2
-  MappingModifier* = 0
-  MappingKeyboard* = 1
-  MappingPointer* = 2
-  DontPreferBlanking* = 0
-  PreferBlanking* = 1
-  DefaultBlanking* = 2
-  DisableScreenSaver* = 0
-  DisableScreenInterval* = 0
-  DontAllowExposures* = 0
-  AllowExposures* = 1
-  DefaultExposures* = 2
-  ScreenSaverReset* = 0
-  ScreenSaverActive* = 1
-  HostInsert* = 0
-  HostDelete* = 1
-  EnableAccess* = 1
-  DisableAccess* = 0
-  StaticGray* = 0
-  GrayScale* = 1
-  StaticColor* = 2
-  PseudoColor* = 3
-  TrueColor* = 4
-  DirectColor* = 5
-  LSBFirst* = 0
-  MSBFirst* = 1
-
-# implementation
diff --git a/lib/wrappers/x11/xatom.nim b/lib/wrappers/x11/xatom.nim
deleted file mode 100755
index b2e1dca91..000000000
--- a/lib/wrappers/x11/xatom.nim
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# THIS IS A GENERATED FILE
-#
-# Do not change!  Changing this file implies a protocol change!
-#
-
-import  
-  X
-
-const 
-  XA_PRIMARY* = TAtom(1)
-  XA_SECONDARY* = TAtom(2)
-  XA_ARC* = TAtom(3)
-  XA_ATOM* = TAtom(4)
-  XA_BITMAP* = TAtom(5)
-  XA_CARDINAL* = TAtom(6)
-  XA_COLORMAP* = TAtom(7)
-  XA_CURSOR* = TAtom(8)
-  XA_CUT_BUFFER0* = TAtom(9)
-  XA_CUT_BUFFER1* = TAtom(10)
-  XA_CUT_BUFFER2* = TAtom(11)
-  XA_CUT_BUFFER3* = TAtom(12)
-  XA_CUT_BUFFER4* = TAtom(13)
-  XA_CUT_BUFFER5* = TAtom(14)
-  XA_CUT_BUFFER6* = TAtom(15)
-  XA_CUT_BUFFER7* = TAtom(16)
-  XA_DRAWABLE* = TAtom(17)
-  XA_FONT* = TAtom(18)
-  XA_INTEGER* = TAtom(19)
-  XA_PIXMAP* = TAtom(20)
-  XA_POINT* = TAtom(21)
-  XA_RECTANGLE* = TAtom(22)
-  XA_RESOURCE_MANAGER* = TAtom(23)
-  XA_RGB_COLOR_MAP* = TAtom(24)
-  XA_RGB_BEST_MAP* = TAtom(25)
-  XA_RGB_BLUE_MAP* = TAtom(26)
-  XA_RGB_DEFAULT_MAP* = TAtom(27)
-  XA_RGB_GRAY_MAP* = TAtom(28)
-  XA_RGB_GREEN_MAP* = TAtom(29)
-  XA_RGB_RED_MAP* = TAtom(30)
-  XA_STRING* = TAtom(31)
-  XA_VISUALID* = TAtom(32)
-  XA_WINDOW* = TAtom(33)
-  XA_WM_COMMAND* = TAtom(34)
-  XA_WM_HINTS* = TAtom(35)
-  XA_WM_CLIENT_MACHINE* = TAtom(36)
-  XA_WM_ICON_NAME* = TAtom(37)
-  XA_WM_ICON_SIZE* = TAtom(38)
-  XA_WM_NAME* = TAtom(39)
-  XA_WM_NORMAL_HINTS* = TAtom(40)
-  XA_WM_SIZE_HINTS* = TAtom(41)
-  XA_WM_ZOOM_HINTS* = TAtom(42)
-  XA_MIN_SPACE* = TAtom(43)
-  XA_NORM_SPACE* = TAtom(44)
-  XA_MAX_SPACE* = TAtom(45)
-  XA_END_SPACE* = TAtom(46)
-  XA_SUPERSCRIPT_X* = TAtom(47)
-  XA_SUPERSCRIPT_Y* = TAtom(48)
-  XA_SUBSCRIPT_X* = TAtom(49)
-  XA_SUBSCRIPT_Y* = TAtom(50)
-  XA_UNDERLINE_POSITION* = TAtom(51)
-  XA_UNDERLINE_THICKNESS* = TAtom(52)
-  XA_STRIKEOUT_ASCENT* = TAtom(53)
-  XA_STRIKEOUT_DESCENT* = TAtom(54)
-  XA_ITALIC_ANGLE* = TAtom(55)
-  XA_X_HEIGHT* = TAtom(56)
-  XA_QUAD_WIDTH* = TAtom(57)
-  XA_WEIGHT* = TAtom(58)
-  XA_POINT_SIZE* = TAtom(59)
-  XA_RESOLUTION* = TAtom(60)
-  XA_COPYRIGHT* = TAtom(61)
-  XA_NOTICE* = TAtom(62)
-  XA_FONT_NAME* = TAtom(63)
-  XA_FAMILY_NAME* = TAtom(64)
-  XA_FULL_NAME* = TAtom(65)
-  XA_CAP_HEIGHT* = TAtom(66)
-  XA_WM_CLASS* = TAtom(67)
-  XA_WM_TRANSIENT_FOR* = TAtom(68)
-  XA_LAST_PREDEFINED* = TAtom(68)
-
-# implementation
diff --git a/lib/wrappers/x11/xcms.nim b/lib/wrappers/x11/xcms.nim
deleted file mode 100755
index 57aad6ae0..000000000
--- a/lib/wrappers/x11/xcms.nim
+++ /dev/null
@@ -1,396 +0,0 @@
-
-import 
-  x, xlib
-
-#const 
-#  libX11* = "X11" 
-
-#
-#  Automatically converted by H2Pas 0.99.15 from xcms.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    xcms.h
-#
-
-const 
-  XcmsFailure* = 0
-  XcmsSuccess* = 1
-  XcmsSuccessWithCompression* = 2
-
-type 
-  PXcmsColorFormat* = ptr TXcmsColorFormat
-  TXcmsColorFormat* = int32
-
-proc XcmsUndefinedFormat*(): TXcmsColorFormat
-proc XcmsCIEXYZFormat*(): TXcmsColorFormat
-proc XcmsCIEuvYFormat*(): TXcmsColorFormat
-proc XcmsCIExyYFormat*(): TXcmsColorFormat
-proc XcmsCIELabFormat*(): TXcmsColorFormat
-proc XcmsCIELuvFormat*(): TXcmsColorFormat
-proc XcmsTekHVCFormat*(): TXcmsColorFormat
-proc XcmsRGBFormat*(): TXcmsColorFormat
-proc XcmsRGBiFormat*(): TXcmsColorFormat
-const 
-  XcmsInitNone* = 0x00000000
-  XcmsInitSuccess* = 0x00000001
-  XcmsInitFailure* = 0x000000FF
-
-when defined(MACROS): 
-  proc DisplayOfCCC*(ccc: int32): int32
-  proc ScreenNumberOfCCC*(ccc: int32): int32
-  proc VisualOfCCC*(ccc: int32): int32
-  proc ClientWhitePointOfCCC*(ccc: int32): int32
-  proc ScreenWhitePointOfCCC*(ccc: int32): int32
-  proc FunctionSetOfCCC*(ccc: int32): int32
-type 
-  PXcmsFloat* = ptr TXcmsFloat
-  TXcmsFloat* = float64
-  PXcmsRGB* = ptr TXcmsRGB
-  TXcmsRGB*{.final.} = object 
-    red*: int16
-    green*: int16
-    blue*: int16
-
-  PXcmsRGBi* = ptr TXcmsRGBi
-  TXcmsRGBi*{.final.} = object 
-    red*: TXcmsFloat
-    green*: TXcmsFloat
-    blue*: TXcmsFloat
-
-  PXcmsCIEXYZ* = ptr TXcmsCIEXYZ
-  TXcmsCIEXYZ*{.final.} = object 
-    X*: TXcmsFloat
-    Y*: TXcmsFloat
-    Z*: TXcmsFloat
-
-  PXcmsCIEuvY* = ptr TXcmsCIEuvY
-  TXcmsCIEuvY*{.final.} = object 
-    u_prime*: TXcmsFloat
-    v_prime*: TXcmsFloat
-    Y*: TXcmsFloat
-
-  PXcmsCIExyY* = ptr TXcmsCIExyY
-  TXcmsCIExyY*{.final.} = object 
-    x*: TXcmsFloat
-    y*: TXcmsFloat
-    theY*: TXcmsFloat
-
-  PXcmsCIELab* = ptr TXcmsCIELab
-  TXcmsCIELab*{.final.} = object 
-    L_star*: TXcmsFloat
-    a_star*: TXcmsFloat
-    b_star*: TXcmsFloat
-
-  PXcmsCIELuv* = ptr TXcmsCIELuv
-  TXcmsCIELuv*{.final.} = object 
-    L_star*: TXcmsFloat
-    u_star*: TXcmsFloat
-    v_star*: TXcmsFloat
-
-  PXcmsTekHVC* = ptr TXcmsTekHVC
-  TXcmsTekHVC*{.final.} = object 
-    H*: TXcmsFloat
-    V*: TXcmsFloat
-    C*: TXcmsFloat
-
-  PXcmsPad* = ptr TXcmsPad
-  TXcmsPad*{.final.} = object 
-    pad0*: TXcmsFloat
-    pad1*: TXcmsFloat
-    pad2*: TXcmsFloat
-    pad3*: TXcmsFloat
-
-  PXcmsColor* = ptr TXcmsColor
-  TXcmsColor*{.final.} = object  # spec : record
-                                 #            case longint of
-                                 #               0 : ( RGB : TXcmsRGB );
-                                 #               1 : ( RGBi : TXcmsRGBi );
-                                 #               2 : ( CIEXYZ : TXcmsCIEXYZ );
-                                 #               3 : ( CIEuvY : TXcmsCIEuvY );
-                                 #               4 : ( CIExyY : TXcmsCIExyY );
-                                 #               5 : ( CIELab : TXcmsCIELab );
-                                 #               6 : ( CIELuv : TXcmsCIELuv );
-                                 #               7 : ( TekHVC : TXcmsTekHVC );
-                                 #               8 : ( Pad : TXcmsPad ); 
-                                 #            end; 
-    pad*: TXcmsPad
-    pixel*: int32
-    format*: TXcmsColorFormat
-
-  PXcmsPerScrnInfo* = ptr TXcmsPerScrnInfo
-  TXcmsPerScrnInfo*{.final.} = object 
-    screenWhitePt*: TXcmsColor
-    functionSet*: TXPointer
-    screenData*: TXPointer
-    state*: int8
-    pad*: array[0..2, char]
-
-  PXcmsCCC* = ptr TXcmsCCC
-  TXcmsCompressionProc* = proc (para1: PXcmsCCC, para2: PXcmsColor, 
-                                para3: int32, para4: int32, para5: PBool): TStatus{.
-      cdecl.}
-  TXcmsWhiteAdjustProc* = proc (para1: PXcmsCCC, para2: PXcmsColor, 
-                                para3: PXcmsColor, para4: TXcmsColorFormat, 
-                                para5: PXcmsColor, para6: int32, para7: PBool): TStatus{.
-      cdecl.}
-  TXcmsCCC*{.final.} = object 
-    dpy*: PDisplay
-    screenNumber*: int32
-    visual*: PVisual
-    clientWhitePt*: TXcmsColor
-    gamutCompProc*: TXcmsCompressionProc
-    gamutCompClientData*: TXPointer
-    whitePtAdjProc*: TXcmsWhiteAdjustProc
-    whitePtAdjClientData*: TXPointer
-    pPerScrnInfo*: PXcmsPerScrnInfo
-
-  TXcmsCCCRec* = TXcmsCCC
-  PXcmsCCCRec* = ptr TXcmsCCCRec
-  TXcmsScreenInitProc* = proc (para1: PDisplay, para2: int32, 
-                               para3: PXcmsPerScrnInfo): TStatus{.cdecl.}
-  TXcmsScreenFreeProc* = proc (para1: TXPointer){.cdecl.}
-  TXcmsConversionProc* = proc (){.cdecl.}
-  PXcmsFuncListPtr* = ptr TXcmsFuncListPtr
-  TXcmsFuncListPtr* = TXcmsConversionProc
-  TXcmsParseStringProc* = proc (para1: cstring, para2: PXcmsColor): int32{.cdecl.}
-  PXcmsColorSpace* = ptr TXcmsColorSpace
-  TXcmsColorSpace*{.final.} = object 
-    prefix*: cstring
-    id*: TXcmsColorFormat
-    parseString*: TXcmsParseStringProc
-    to_CIEXYZ*: TXcmsFuncListPtr
-    from_CIEXYZ*: TXcmsFuncListPtr
-    inverse_flag*: int32
-
-  PXcmsFunctionSet* = ptr TXcmsFunctionSet
-  TXcmsFunctionSet*{.final.} = object  # error
-                                       #extern Status XcmsAddColorSpace (
-                                       #in declaration at line 323 
-    DDColorSpaces*: ptr PXcmsColorSpace
-    screenInitProc*: TXcmsScreenInitProc
-    screenFreeProc*: TXcmsScreenFreeProc
-
-
-proc XcmsAddFunctionSet*(para1: PXcmsFunctionSet): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsAllocColor*(para1: PDisplay, para2: TColormap, para3: PXcmsColor, 
-                     para4: TXcmsColorFormat): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsAllocNamedColor*(para1: PDisplay, para2: TColormap, para3: cstring, 
-                          para4: PXcmsColor, para5: PXcmsColor, 
-                          para6: TXcmsColorFormat): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCCCOfColormap*(para1: PDisplay, para2: TColormap): TXcmsCCC{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELabClipab*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                       para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELabClipL*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                      para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELabClipLab*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                        para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELabQueryMaxC*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsCIELabQueryMaxL*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsCIELabQueryMaxLC*(para1: TXcmsCCC, para2: TXcmsFloat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIELabQueryMinL*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsCIELabToCIEXYZ*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIELabWhiteShiftColors*(para1: TXcmsCCC, para2: PXcmsColor, 
-                                 para3: PXcmsColor, para4: TXcmsColorFormat, 
-                                 para5: PXcmsColor, para6: int32, para7: PBool): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIELuvClipL*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                      para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELuvClipLuv*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                        para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELuvClipuv*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                       para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCIELuvQueryMaxC*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsCIELuvQueryMaxL*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsCIELuvQueryMaxLC*(para1: TXcmsCCC, para2: TXcmsFloat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIELuvQueryMinL*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsCIELuvToCIEuvY*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIELuvWhiteShiftColors*(para1: TXcmsCCC, para2: PXcmsColor, 
-                                 para3: PXcmsColor, para4: TXcmsColorFormat, 
-                                 para5: PXcmsColor, para6: int32, para7: PBool): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToCIELab*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToCIEuvY*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToCIExyY*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEXYZToRGBi*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                       para4: PBool): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEuvYToCIELuv*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEuvYToCIEXYZ*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIEuvYToTekHVC*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsCIExyYToCIEXYZ*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsClientWhitePointOfCCC*(para1: TXcmsCCC): PXcmsColor{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsConvertColors*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                        para4: TXcmsColorFormat, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsCreateCCC*(para1: PDisplay, para2: int32, para3: PVisual, 
-                    para4: PXcmsColor, para5: TXcmsCompressionProc, 
-                    para6: TXPointer, para7: TXcmsWhiteAdjustProc, 
-                    para8: TXPointer): TXcmsCCC{.cdecl, dynlib: libX11, importc.}
-proc XcmsDefaultCCC*(para1: PDisplay, para2: int32): TXcmsCCC{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsDisplayOfCCC*(para1: TXcmsCCC): PDisplay{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsFormatOfPrefix*(para1: cstring): TXcmsColorFormat{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsFreeCCC*(para1: TXcmsCCC){.cdecl, dynlib: libX11, importc.}
-proc XcmsLookupColor*(para1: PDisplay, para2: TColormap, para3: cstring, 
-                      para4: PXcmsColor, para5: PXcmsColor, 
-                      para6: TXcmsColorFormat): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsPrefixOfFormat*(para1: TXcmsColorFormat): cstring{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsQueryBlack*(para1: TXcmsCCC, para2: TXcmsColorFormat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryBlue*(para1: TXcmsCCC, para2: TXcmsColorFormat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryColor*(para1: PDisplay, para2: TColormap, para3: PXcmsColor, 
-                     para4: TXcmsColorFormat): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsQueryColors*(para1: PDisplay, para2: TColormap, para3: PXcmsColor, 
-                      para4: int32, para5: TXcmsColorFormat): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsQueryGreen*(para1: TXcmsCCC, para2: TXcmsColorFormat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryRed*(para1: TXcmsCCC, para2: TXcmsColorFormat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsQueryWhite*(para1: TXcmsCCC, para2: TXcmsColorFormat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsRGBiToCIEXYZ*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                       para4: PBool): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsRGBiToRGB*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                    para4: PBool): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsRGBToRGBi*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                    para4: PBool): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsScreenNumberOfCCC*(para1: TXcmsCCC): int32{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsScreenWhitePointOfCCC*(para1: TXcmsCCC): PXcmsColor{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsSetCCCOfColormap*(para1: PDisplay, para2: TColormap, para3: TXcmsCCC): TXcmsCCC{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsSetCompressionProc*(para1: TXcmsCCC, para2: TXcmsCompressionProc, 
-                             para3: TXPointer): TXcmsCompressionProc{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsSetWhiteAdjustProc*(para1: TXcmsCCC, para2: TXcmsWhiteAdjustProc, 
-                             para3: TXPointer): TXcmsWhiteAdjustProc{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsSetWhitePoint*(para1: TXcmsCCC, para2: PXcmsColor): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsStoreColor*(para1: PDisplay, para2: TColormap, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsStoreColors*(para1: PDisplay, para2: TColormap, para3: PXcmsColor, 
-                      para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsTekHVCClipC*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                      para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsTekHVCClipV*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                      para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsTekHVCClipVC*(para1: TXcmsCCC, para2: PXcmsColor, para3: int32, 
-                       para4: int32, para5: PBool): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XcmsTekHVCQueryMaxC*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsTekHVCQueryMaxV*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsTekHVCQueryMaxVC*(para1: TXcmsCCC, para2: TXcmsFloat, para3: PXcmsColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsTekHVCQueryMaxVSamples*(para1: TXcmsCCC, para2: TXcmsFloat, 
-                                 para3: PXcmsColor, para4: int32): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsTekHVCQueryMinV*(para1: TXcmsCCC, para2: TXcmsFloat, para3: TXcmsFloat, 
-                          para4: PXcmsColor): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XcmsTekHVCToCIEuvY*(para1: TXcmsCCC, para2: PXcmsColor, para3: PXcmsColor, 
-                         para4: int32): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XcmsTekHVCWhiteShiftColors*(para1: TXcmsCCC, para2: PXcmsColor, 
-                                 para3: PXcmsColor, para4: TXcmsColorFormat, 
-                                 para5: PXcmsColor, para6: int32, para7: PBool): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XcmsVisualOfCCC*(para1: TXcmsCCC): PVisual{.cdecl, dynlib: libX11, importc.}
-# implementation
-
-proc XcmsUndefinedFormat(): TXcmsColorFormat = 
-  result = 0x00000000'i32
-
-proc XcmsCIEXYZFormat(): TXcmsColorFormat = 
-  result = 0x00000001'i32
-
-proc XcmsCIEuvYFormat(): TXcmsColorFormat = 
-  result = 0x00000002'i32
-
-proc XcmsCIExyYFormat(): TXcmsColorFormat = 
-  result = 0x00000003'i32
-
-proc XcmsCIELabFormat(): TXcmsColorFormat = 
-  result = 0x00000004'i32
-
-proc XcmsCIELuvFormat(): TXcmsColorFormat = 
-  result = 0x00000005'i32
-
-proc XcmsTekHVCFormat(): TXcmsColorFormat = 
-  result = 0x00000006'i32
-
-proc XcmsRGBFormat(): TXcmsColorFormat = 
-  result = 0x80000000'i32
-
-proc XcmsRGBiFormat(): TXcmsColorFormat = 
-  result = 0x80000001'i32
-
-when defined(MACROS): 
-  proc DisplayOfCCC(ccc: int32): int32 = 
-    result = ccc.dpy
-
-  proc ScreenNumberOfCCC(ccc: int32): int32 = 
-    result = ccc.screenNumber
-
-  proc VisualOfCCC(ccc: int32): int32 = 
-    result = ccc.visual
-
-  proc ClientWhitePointOfCCC(ccc: int32): int32 = 
-    result = addr(ccc.clientWhitePt)
-
-  proc ScreenWhitePointOfCCC(ccc: int32): int32 = 
-    result = addr(ccc.pPerScrnInfo.screenWhitePt)
-
-  proc FunctionSetOfCCC(ccc: int32): int32 = 
-    result = ccc.pPerScrnInfo.functionSet
diff --git a/lib/wrappers/x11/xf86dga.nim b/lib/wrappers/x11/xf86dga.nim
deleted file mode 100755
index 376f11861..000000000
--- a/lib/wrappers/x11/xf86dga.nim
+++ /dev/null
@@ -1,235 +0,0 @@
-#
-#   Copyright (c) 1999  XFree86 Inc
-#
-# $XFree86: xc/include/extensions/xf86dga.h,v 3.20 1999/10/13 04:20:48 dawes Exp $ 
-
-import 
-  x, xlib
-
-const 
-  libXxf86dga* = "libXxf86dga.so"
-
-#type 
-#  cfloat* = float32
-
-# $XFree86: xc/include/extensions/xf86dga1.h,v 1.2 1999/04/17 07:05:41 dawes Exp $ 
-#
-#
-#Copyright (c) 1995  Jon Tombs
-#Copyright (c) 1995  XFree86 Inc
-#
-#
-#************************************************************************
-#
-#   THIS IS THE OLD DGA API AND IS OBSOLETE.  PLEASE DO NOT USE IT ANYMORE
-#
-#************************************************************************
-
-type 
-  PPcchar* = ptr ptr cstring
-
-const 
-  X_XF86DGAQueryVersion* = 0
-  X_XF86DGAGetVideoLL* = 1
-  X_XF86DGADirectVideo* = 2
-  X_XF86DGAGetViewPortSize* = 3
-  X_XF86DGASetViewPort* = 4
-  X_XF86DGAGetVidPage* = 5
-  X_XF86DGASetVidPage* = 6
-  X_XF86DGAInstallColormap* = 7
-  X_XF86DGAQueryDirectVideo* = 8
-  X_XF86DGAViewPortChanged* = 9
-  XF86DGADirectPresent* = 0x00000001
-  XF86DGADirectGraphics* = 0x00000002
-  XF86DGADirectMouse* = 0x00000004
-  XF86DGADirectKeyb* = 0x00000008
-  XF86DGAHasColormap* = 0x00000100
-  XF86DGADirectColormap* = 0x00000200
-
-proc XF86DGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint, 
-                          minorVersion: Pcint): TBool{.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XF86DGAQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): TBool{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetVideoLL*(dpy: PDisplay, screen: cint, base_addr: Pcint, 
-                        width: Pcint, bank_size: Pcint, ram_size: Pcint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetVideo*(dpy: PDisplay, screen: cint, base_addr: PPcchar, 
-                      width: Pcint, bank_size: Pcint, ram_size: Pcint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGADirectVideo*(dpy: PDisplay, screen: cint, enable: cint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGADirectVideoLL*(dpy: PDisplay, screen: cint, enable: cint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetViewPortSize*(dpy: PDisplay, screen: cint, width: Pcint, 
-                             height: Pcint): TStatus{.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XF86DGASetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAGetVidPage*(dpy: PDisplay, screen: cint, vid_page: Pcint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGASetVidPage*(dpy: PDisplay, screen: cint, vid_page: cint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAInstallColormap*(dpy: PDisplay, screen: cint, Colormap: TColormap): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAForkApp*(screen: cint): cint{.CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAQueryDirectVideo*(dpy: PDisplay, screen: cint, flags: Pcint): TStatus{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XF86DGAViewPortChanged*(dpy: PDisplay, screen: cint, n: cint): TBool{.
-    CDecl, dynlib: libXxf86dga, importc.}
-const 
-  X_XDGAQueryVersion* = 0     # 1 through 9 are in xf86dga1.pp 
-                              # 10 and 11 are reserved to avoid conflicts with rogue DGA extensions 
-  X_XDGAQueryModes* = 12
-  X_XDGASetMode* = 13
-  X_XDGASetViewport* = 14
-  X_XDGAInstallColormap* = 15
-  X_XDGASelectInput* = 16
-  X_XDGAFillRectangle* = 17
-  X_XDGACopyArea* = 18
-  X_XDGACopyTransparentArea* = 19
-  X_XDGAGetViewportStatus* = 20
-  X_XDGASync* = 21
-  X_XDGAOpenFramebuffer* = 22
-  X_XDGACloseFramebuffer* = 23
-  X_XDGASetClientVersion* = 24
-  X_XDGAChangePixmapMode* = 25
-  X_XDGACreateColormap* = 26
-  XDGAConcurrentAccess* = 0x00000001
-  XDGASolidFillRect* = 0x00000002
-  XDGABlitRect* = 0x00000004
-  XDGABlitTransRect* = 0x00000008
-  XDGAPixmap* = 0x00000010
-  XDGAInterlaced* = 0x00010000
-  XDGADoublescan* = 0x00020000
-  XDGAFlipImmediate* = 0x00000001
-  XDGAFlipRetrace* = 0x00000002
-  XDGANeedRoot* = 0x00000001
-  XF86DGANumberEvents* = 7
-  XDGAPixmapModeLarge* = 0
-  XDGAPixmapModeSmall* = 1
-  XF86DGAClientNotLocal* = 0
-  XF86DGANoDirectVideoMode* = 1
-  XF86DGAScreenNotActive* = 2
-  XF86DGADirectNotActivated* = 3
-  XF86DGAOperationNotSupported* = 4
-  XF86DGANumberErrors* = (XF86DGAOperationNotSupported + 1)
-
-type 
-  PXDGAMode* = ptr TXDGAMode
-  TXDGAMode*{.final.} = object 
-    num*: cint                # A unique identifier for the mode (num > 0) 
-    name*: cstring            # name of mode given in the XF86Config 
-    verticalRefresh*: cfloat
-    flags*: cint              # DGA_CONCURRENT_ACCESS, etc... 
-    imageWidth*: cint         # linear accessible portion (pixels) 
-    imageHeight*: cint
-    pixmapWidth*: cint        # Xlib accessible portion (pixels) 
-    pixmapHeight*: cint       # both fields ignored if no concurrent access 
-    bytesPerScanline*: cint
-    byteOrder*: cint          # MSBFirst, LSBFirst 
-    depth*: cint
-    bitsPerPixel*: cint
-    redMask*: culong
-    greenMask*: culong
-    blueMask*: culong
-    visualClass*: cshort
-    viewportWidth*: cint
-    viewportHeight*: cint
-    xViewportStep*: cint      # viewport position granularity 
-    yViewportStep*: cint
-    maxViewportX*: cint       # max viewport origin 
-    maxViewportY*: cint
-    viewportFlags*: cint      # types of page flipping possible 
-    reserved1*: cint
-    reserved2*: cint
-
-  PXDGADevice* = ptr TXDGADevice
-  TXDGADevice*{.final.} = object 
-    mode*: TXDGAMode
-    data*: Pcuchar
-    pixmap*: TPixmap
-
-  PXDGAButtonEvent* = ptr TXDGAButtonEvent
-  TXDGAButtonEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    display*: PDisplay
-    screen*: cint
-    time*: TTime
-    state*: cuint
-    button*: cuint
-
-  PXDGAKeyEvent* = ptr TXDGAKeyEvent
-  TXDGAKeyEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    display*: PDisplay
-    screen*: cint
-    time*: TTime
-    state*: cuint
-    keycode*: cuint
-
-  PXDGAMotionEvent* = ptr TXDGAMotionEvent
-  TXDGAMotionEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    display*: PDisplay
-    screen*: cint
-    time*: TTime
-    state*: cuint
-    dx*: cint
-    dy*: cint
-
-  PXDGAEvent* = ptr TXDGAEvent
-  TXDGAEvent*{.final.} = object 
-    pad*: array[0..23, clong] # sorry you have to cast if you want access
-                              #Case LongInt Of
-                              #      0 : (_type : cint);
-                              #      1 : (xbutton : TXDGAButtonEvent);
-                              #      2 : (xkey : TXDGAKeyEvent);
-                              #      3 : (xmotion : TXDGAMotionEvent);
-                              #      4 : (pad : Array[0..23] Of clong);
-  
-
-proc XDGAQueryExtension*(dpy: PDisplay, eventBase: Pcint, erroBase: Pcint): TBool{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XDGAQueryVersion*(dpy: PDisplay, majorVersion: Pcint, minorVersion: Pcint): TBool{.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XDGAQueryModes*(dpy: PDisplay, screen: cint, num: Pcint): PXDGAMode{.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGASetMode*(dpy: PDisplay, screen: cint, mode: cint): PXDGADevice{.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGAOpenFramebuffer*(dpy: PDisplay, screen: cint): TBool{.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGACloseFramebuffer*(dpy: PDisplay, screen: cint){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGASetViewport*(dpy: PDisplay, screen: cint, x: cint, y: cint, flags: cint){.
-    CDecl, dynlib: libXxf86dga, importc.}
-proc XDGAInstallColormap*(dpy: PDisplay, screen: cint, cmap: TColormap){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGACreateColormap*(dpy: PDisplay, screen: cint, device: PXDGADevice, 
-                         alloc: cint): TColormap{.CDecl, dynlib: libXxf86dga, 
-    importc.}
-proc XDGASelectInput*(dpy: PDisplay, screen: cint, event_mask: clong){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGAFillRectangle*(dpy: PDisplay, screen: cint, x: cint, y: cint, 
-                        width: cuint, height: cuint, color: culong){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGACopyArea*(dpy: PDisplay, screen: cint, srcx: cint, srcy: cint, 
-                   width: cuint, height: cuint, dstx: cint, dsty: cint){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGACopyTransparentArea*(dpy: PDisplay, screen: cint, srcx: cint, 
-                              srcy: cint, width: cuint, height: cuint, 
-                              dstx: cint, dsty: cint, key: culong){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGAGetViewportStatus*(dpy: PDisplay, screen: cint): cint{.CDecl, 
-    dynlib: libXxf86dga, importc.}
-proc XDGASync*(dpy: PDisplay, screen: cint){.CDecl, dynlib: libXxf86dga, importc.}
-proc XDGASetClientVersion*(dpy: PDisplay): TBool{.CDecl, dynlib: libXxf86dga, 
-    importc.}
-proc XDGAChangePixmapMode*(dpy: PDisplay, screen: cint, x: Pcint, y: Pcint, 
-                           mode: cint){.CDecl, dynlib: libXxf86dga, importc.}
-proc XDGAKeyEventToXKeyEvent*(dk: PXDGAKeyEvent, xk: PXKeyEvent){.CDecl, 
-    dynlib: libXxf86dga, importc.}
-# implementation
diff --git a/lib/wrappers/x11/xf86vmode.nim b/lib/wrappers/x11/xf86vmode.nim
deleted file mode 100755
index 18a922cab..000000000
--- a/lib/wrappers/x11/xf86vmode.nim
+++ /dev/null
@@ -1,229 +0,0 @@
-# $XFree86: xc/include/extensions/xf86vmode.h,v 3.30 2001/05/07 20:09:50 mvojkovi Exp $ 
-#
-#
-#Copyright 1995  Kaleb S. KEITHLEY
-#
-#Permission is hereby granted, free of charge, to any person obtaining
-#a copy of this software and associated documentation files (the
-#"Software"), to deal in the Software without restriction, including
-#without limitation the rights to use, copy, modify, merge, publish,
-#distribute, sublicense, and/or sell copies of the Software, and to
-#permit persons to whom the Software is furnished to do so, subject to
-#the following conditions:
-#
-#The above copyright notice and this permission notice shall be
-#included in all copies or substantial portions of the Software.
-#
-#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-#IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES 
-#OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-#ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-#OTHER DEALINGS IN THE SOFTWARE.
-#
-#Except as contained in this notice, the name of Kaleb S. KEITHLEY 
-#shall not be used in advertising or otherwise to promote the sale, use 
-#or other dealings in this Software without prior written authorization
-#from Kaleb S. KEITHLEY
-#
-#
-# $Xorg: xf86vmode.h,v 1.3 2000/08/18 04:05:46 coskrey Exp $ 
-# THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION 
-
-import 
-  x, xlib
-
-const 
-  libXxf86vm* = "libXxf86vm.so"
-
-type 
-  PINT32* = ptr int32
-
-const 
-  X_XF86VidModeQueryVersion* = 0
-  X_XF86VidModeGetModeLine* = 1
-  X_XF86VidModeModModeLine* = 2
-  X_XF86VidModeSwitchMode* = 3
-  X_XF86VidModeGetMonitor* = 4
-  X_XF86VidModeLockModeSwitch* = 5
-  X_XF86VidModeGetAllModeLines* = 6
-  X_XF86VidModeAddModeLine* = 7
-  X_XF86VidModeDeleteModeLine* = 8
-  X_XF86VidModeValidateModeLine* = 9
-  X_XF86VidModeSwitchToMode* = 10
-  X_XF86VidModeGetViewPort* = 11
-  X_XF86VidModeSetViewPort* = 12 # new for version 2.x of this extension 
-  X_XF86VidModeGetDotClocks* = 13
-  X_XF86VidModeSetClientVersion* = 14
-  X_XF86VidModeSetGamma* = 15
-  X_XF86VidModeGetGamma* = 16
-  X_XF86VidModeGetGammaRamp* = 17
-  X_XF86VidModeSetGammaRamp* = 18
-  X_XF86VidModeGetGammaRampSize* = 19
-  X_XF86VidModeGetPermissions* = 20
-  CLKFLAG_PROGRAMABLE* = 1
-
-when defined(XF86VIDMODE_EVENTS): 
-  const 
-    XF86VidModeNotify* = 0
-    XF86VidModeNumberEvents* = (XF86VidModeNotify + 1)
-    XF86VidModeNotifyMask* = 0x00000001
-    XF86VidModeNonEvent* = 0
-    XF86VidModeModeChange* = 1
-else: 
-  const 
-    XF86VidModeNumberEvents* = 0
-const 
-  XF86VidModeBadClock* = 0
-  XF86VidModeBadHTimings* = 1
-  XF86VidModeBadVTimings* = 2
-  XF86VidModeModeUnsuitable* = 3
-  XF86VidModeExtensionDisabled* = 4
-  XF86VidModeClientNotLocal* = 5
-  XF86VidModeZoomLocked* = 6
-  XF86VidModeNumberErrors* = (XF86VidModeZoomLocked + 1)
-  XF86VM_READ_PERMISSION* = 1
-  XF86VM_WRITE_PERMISSION* = 2
-
-type 
-  PXF86VidModeModeLine* = ptr TXF86VidModeModeLine
-  TXF86VidModeModeLine*{.final.} = object 
-    hdisplay*: cushort
-    hsyncstart*: cushort
-    hsyncend*: cushort
-    htotal*: cushort
-    hskew*: cushort
-    vdisplay*: cushort
-    vsyncstart*: cushort
-    vsyncend*: cushort
-    vtotal*: cushort
-    flags*: cuint
-    privsize*: cint
-    c_private*: PINT32
-
-  PPPXF86VidModeModeInfo* = ptr PPXF86VidModeModeInfo
-  PPXF86VidModeModeInfo* = ptr PXF86VidModeModeInfo
-  PXF86VidModeModeInfo* = ptr TXF86VidModeModeInfo
-  TXF86VidModeModeInfo*{.final.} = object 
-    dotclock*: cuint
-    hdisplay*: cushort
-    hsyncstart*: cushort
-    hsyncend*: cushort
-    htotal*: cushort
-    hskew*: cushort
-    vdisplay*: cushort
-    vsyncstart*: cushort
-    vsyncend*: cushort
-    vtotal*: cushort
-    flags*: cuint
-    privsize*: cint
-    c_private*: PINT32
-
-  PXF86VidModeSyncRange* = ptr TXF86VidModeSyncRange
-  TXF86VidModeSyncRange*{.final.} = object 
-    hi*: cfloat
-    lo*: cfloat
-
-  PXF86VidModeMonitor* = ptr TXF86VidModeMonitor
-  TXF86VidModeMonitor*{.final.} = object 
-    vendor*: cstring
-    model*: cstring
-    EMPTY*: cfloat
-    nhsync*: cuchar
-    hsync*: PXF86VidModeSyncRange
-    nvsync*: cuchar
-    vsync*: PXF86VidModeSyncRange
-
-  PXF86VidModeNotifyEvent* = ptr TXF86VidModeNotifyEvent
-  TXF86VidModeNotifyEvent*{.final.} = object 
-    theType*: cint            # of event 
-    serial*: culong           # # of last request processed by server 
-    send_event*: TBool        # true if this came from a SendEvent req 
-    display*: PDisplay        # Display the event was read from 
-    root*: TWindow            # root window of event screen 
-    state*: cint              # What happened 
-    kind*: cint               # What happened 
-    forced*: TBool            # extents of new region 
-    time*: TTime              # event timestamp 
-  
-  PXF86VidModeGamma* = ptr TXF86VidModeGamma
-  TXF86VidModeGamma*{.final.} = object 
-    red*: cfloat              # Red Gamma value 
-    green*: cfloat            # Green Gamma value 
-    blue*: cfloat             # Blue Gamma value 
-  
-
-when defined(MACROS): 
-  proc XF86VidModeSelectNextMode*(disp: PDisplay, scr: cint): TBool
-  proc XF86VidModeSelectPrevMode*(disp: PDisplay, scr: cint): TBool
-proc XF86VidModeQueryVersion*(dpy: PDisplay, majorVersion: Pcint, 
-                              minorVersion: Pcint): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeQueryExtension*(dpy: PDisplay, event_base: Pcint, 
-                                error_base: Pcint): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeSetClientVersion*(dpy: PDisplay): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetModeLine*(dpy: PDisplay, screen: cint, dotclock: Pcint, 
-                             modeline: PXF86VidModeModeLine): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetAllModeLines*(dpy: PDisplay, screen: cint, modecount: Pcint, 
-                                 modelinesPtr: PPPXF86VidModeModeInfo): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeAddModeLine*(dpy: PDisplay, screen: cint, 
-                             new_modeline: PXF86VidModeModeInfo, 
-                             after_modeline: PXF86VidModeModeInfo): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeDeleteModeLine*(dpy: PDisplay, screen: cint, 
-                                modeline: PXF86VidModeModeInfo): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeModModeLine*(dpy: PDisplay, screen: cint, 
-                             modeline: PXF86VidModeModeLine): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeValidateModeLine*(dpy: PDisplay, screen: cint, 
-                                  modeline: PXF86VidModeModeInfo): TStatus{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSwitchMode*(dpy: PDisplay, screen: cint, zoom: cint): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSwitchToMode*(dpy: PDisplay, screen: cint, 
-                              modeline: PXF86VidModeModeInfo): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeLockModeSwitch*(dpy: PDisplay, screen: cint, lock: cint): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetMonitor*(dpy: PDisplay, screen: cint, 
-                            monitor: PXF86VidModeMonitor): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetViewPort*(dpy: PDisplay, screen: cint, x_return: Pcint, 
-                             y_return: Pcint): TBool{.CDecl, dynlib: libXxf86vm, 
-    importc.}
-proc XF86VidModeSetViewPort*(dpy: PDisplay, screen: cint, x: cint, y: cint): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetDotClocks*(dpy: PDisplay, screen: cint, flags_return: Pcint, 
-                              number_of_clocks_return: Pcint, 
-                              max_dot_clock_return: Pcint, clocks_return: PPcint): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetGamma*(dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSetGamma*(dpy: PDisplay, screen: cint, Gamma: PXF86VidModeGamma): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeSetGammaRamp*(dpy: PDisplay, screen: cint, size: cint, 
-                              red_array: Pcushort, green_array: Pcushort, 
-                              blue_array: Pcushort): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetGammaRamp*(dpy: PDisplay, screen: cint, size: cint, 
-                              red_array: Pcushort, green_array: Pcushort, 
-                              blue_array: Pcushort): TBool{.CDecl, 
-    dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetGammaRampSize*(dpy: PDisplay, screen: cint, size: Pcint): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-proc XF86VidModeGetPermissions*(dpy: PDisplay, screen: cint, permissions: Pcint): TBool{.
-    CDecl, dynlib: libXxf86vm, importc.}
-# implementation
-
-when defined(MACROS): 
-  proc XF86VidModeSelectNextMode(disp: PDisplay, scr: cint): TBool = 
-    XF86VidModeSelectNextMode = XF86VidModeSwitchMode(disp, scr, 1)
-
-  proc XF86VidModeSelectPrevMode(disp: PDisplay, scr: cint): TBool = 
-    XF86VidModeSelectPrevMode = XF86VidModeSwitchMode(disp, scr, - 1)
diff --git a/lib/wrappers/x11/xi.nim b/lib/wrappers/x11/xi.nim
deleted file mode 100755
index d1b9f7846..000000000
--- a/lib/wrappers/x11/xi.nim
+++ /dev/null
@@ -1,307 +0,0 @@
-#
-# $Xorg: XI.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $
-#
-#************************************************************
-#
-#Copyright 1989, 1998  The Open Group
-#
-#Permission to use, copy, modify, distribute, and sell this software and its
-#documentation for any purpose is hereby granted without fee, provided that
-#the above copyright notice appear in all copies and that both that
-#copyright notice and this permission notice appear in supporting
-#documentation.
-#
-#The above copyright notice and this permission notice shall be included in
-#all copies or substantial portions of the Software.
-#
-#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-#OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-#AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-#CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-#Except as contained in this notice, the name of The Open Group shall not be
-#used in advertising or otherwise to promote the sale, use or other dealings
-#in this Software without prior written authorization from The Open Group.
-#
-#Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
-#
-#                        All Rights Reserved
-#
-#Permission to use, copy, modify, and distribute this software and its
-#documentation for any purpose and without fee is hereby granted,
-#provided that the above copyright notice appear in all copies and that
-#both that copyright notice and this permission notice appear in
-#supporting documentation, and that the name of Hewlett-Packard not be
-#used in advertising or publicity pertaining to distribution of the
-#software without specific, written prior permission.
-#
-#HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-#HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-#SOFTWARE.
-#
-#********************************************************/
-# $XFree86: xc/include/extensions/XI.h,v 1.5 2001/12/14 19:53:28 dawes Exp $
-#
-# Definitions used by the server, library and client
-#
-#        Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
-#
-#Histroy:
-#        2004/10/15 - Fixed a bug of accessing second based records by removing "paced record" and chnaged it to
-#                     "reocrd" only.
-#        2004/10/07 - Removed the "uses X;" line. The unit does not need it.
-#        2004/10/03 - Conversion from C header to Pascal unit.
-#
-
-const 
-  sz_xGetExtensionVersionReq* = 8
-  sz_xGetExtensionVersionReply* = 32
-  sz_xListInputDevicesReq* = 4
-  sz_xListInputDevicesReply* = 32
-  sz_xOpenDeviceReq* = 8
-  sz_xOpenDeviceReply* = 32
-  sz_xCloseDeviceReq* = 8
-  sz_xSetDeviceModeReq* = 8
-  sz_xSetDeviceModeReply* = 32
-  sz_xSelectExtensionEventReq* = 12
-  sz_xGetSelectedExtensionEventsReq* = 8
-  sz_xGetSelectedExtensionEventsReply* = 32
-  sz_xChangeDeviceDontPropagateListReq* = 12
-  sz_xGetDeviceDontPropagateListReq* = 8
-  sz_xGetDeviceDontPropagateListReply* = 32
-  sz_xGetDeviceMotionEventsReq* = 16
-  sz_xGetDeviceMotionEventsReply* = 32
-  sz_xChangeKeyboardDeviceReq* = 8
-  sz_xChangeKeyboardDeviceReply* = 32
-  sz_xChangePointerDeviceReq* = 8
-  sz_xChangePointerDeviceReply* = 32
-  sz_xGrabDeviceReq* = 20
-  sz_xGrabDeviceReply* = 32
-  sz_xUngrabDeviceReq* = 12
-  sz_xGrabDeviceKeyReq* = 20
-  sz_xGrabDeviceKeyReply* = 32
-  sz_xUngrabDeviceKeyReq* = 16
-  sz_xGrabDeviceButtonReq* = 20
-  sz_xGrabDeviceButtonReply* = 32
-  sz_xUngrabDeviceButtonReq* = 16
-  sz_xAllowDeviceEventsReq* = 12
-  sz_xGetDeviceFocusReq* = 8
-  sz_xGetDeviceFocusReply* = 32
-  sz_xSetDeviceFocusReq* = 16
-  sz_xGetFeedbackControlReq* = 8
-  sz_xGetFeedbackControlReply* = 32
-  sz_xChangeFeedbackControlReq* = 12
-  sz_xGetDeviceKeyMappingReq* = 8
-  sz_xGetDeviceKeyMappingReply* = 32
-  sz_xChangeDeviceKeyMappingReq* = 8
-  sz_xGetDeviceModifierMappingReq* = 8
-  sz_xSetDeviceModifierMappingReq* = 8
-  sz_xSetDeviceModifierMappingReply* = 32
-  sz_xGetDeviceButtonMappingReq* = 8
-  sz_xGetDeviceButtonMappingReply* = 32
-  sz_xSetDeviceButtonMappingReq* = 8
-  sz_xSetDeviceButtonMappingReply* = 32
-  sz_xQueryDeviceStateReq* = 8
-  sz_xQueryDeviceStateReply* = 32
-  sz_xSendExtensionEventReq* = 16
-  sz_xDeviceBellReq* = 8
-  sz_xSetDeviceValuatorsReq* = 8
-  sz_xSetDeviceValuatorsReply* = 32
-  sz_xGetDeviceControlReq* = 8
-  sz_xGetDeviceControlReply* = 32
-  sz_xChangeDeviceControlReq* = 8
-  sz_xChangeDeviceControlReply* = 32
-
-const 
-  INAME* = "XInputExtension"
-
-const 
-  XI_KEYBOARD* = "KEYBOARD"
-  XI_MOUSE* = "MOUSE"
-  XI_TABLET* = "TABLET"
-  XI_TOUCHSCREEN* = "TOUCHSCREEN"
-  XI_TOUCHPAD* = "TOUCHPAD"
-  XI_BARCODE* = "BARCODE"
-  XI_BUTTONBOX* = "BUTTONBOX"
-  XI_KNOB_BOX* = "KNOB_BOX"
-  XI_ONE_KNOB* = "ONE_KNOB"
-  XI_NINE_KNOB* = "NINE_KNOB"
-  XI_TRACKBALL* = "TRACKBALL"
-  XI_QUADRATURE* = "QUADRATURE"
-  XI_ID_MODULE* = "ID_MODULE"
-  XI_SPACEBALL* = "SPACEBALL"
-  XI_DATAGLOVE* = "DATAGLOVE"
-  XI_EYETRACKER* = "EYETRACKER"
-  XI_CURSORKEYS* = "CURSORKEYS"
-  XI_FOOTMOUSE* = "FOOTMOUSE"
-
-const 
-  Dont_Check* = 0
-  XInput_Initial_Release* = 1
-  XInput_Add_XDeviceBell* = 2
-  XInput_Add_XSetDeviceValuators* = 3
-  XInput_Add_XChangeDeviceControl* = 4
-
-const 
-  XI_Absent* = 0
-  XI_Present* = 1
-
-const 
-  XI_Initial_Release_Major* = 1
-  XI_Initial_Release_Minor* = 0
-
-const 
-  XI_Add_XDeviceBell_Major* = 1
-  XI_Add_XDeviceBell_Minor* = 1
-
-const 
-  XI_Add_XSetDeviceValuators_Major* = 1
-  XI_Add_XSetDeviceValuators_Minor* = 2
-
-const 
-  XI_Add_XChangeDeviceControl_Major* = 1
-  XI_Add_XChangeDeviceControl_Minor* = 3
-
-const 
-  DEVICE_RESOLUTION* = 1
-
-const 
-  NoSuchExtension* = 1
-
-const 
-  COUNT* = 0
-  CREATE* = 1
-
-const 
-  NewPointer* = 0
-  NewKeyboard* = 1
-
-const 
-  XPOINTER* = 0
-  XKEYBOARD* = 1
-
-const 
-  UseXKeyboard* = 0x000000FF
-
-const 
-  IsXPointer* = 0
-  IsXKeyboard* = 1
-  IsXExtensionDevice* = 2
-
-const 
-  AsyncThisDevice* = 0
-  SyncThisDevice* = 1
-  ReplayThisDevice* = 2
-  AsyncOtherDevices* = 3
-  AsyncAll* = 4
-  SyncAll* = 5
-
-const 
-  FollowKeyboard* = 3
-  RevertToFollowKeyboard* = 3
-
-const 
-  DvAccelNum* = int(1) shl 0
-  DvAccelDenom* = int(1) shl 1
-  DvThreshold* = int(1) shl 2
-
-const 
-  DvKeyClickPercent* = int(1) shl 0
-  DvPercent* = int(1) shl 1
-  DvPitch* = int(1) shl 2
-  DvDuration* = int(1) shl 3
-  DvLed* = int(1) shl 4
-  DvLedMode* = int(1) shl 5
-  DvKey* = int(1) shl 6
-  DvAutoRepeatMode* = 1 shl 7
-
-const 
-  DvString* = int(1) shl 0
-
-const 
-  DvInteger* = int(1) shl 0
-
-const 
-  DeviceMode* = int(1) shl 0
-  Relative* = 0
-  Absolute* = 1               # Merged from Metrolink tree for XINPUT stuff 
-  TS_Raw* = 57
-  TS_Scaled* = 58
-  SendCoreEvents* = 59
-  DontSendCoreEvents* = 60    # End of merged section 
-
-const 
-  ProximityState* = int(1) shl 1
-  InProximity* = int(0) shl 1
-  OutOfProximity* = int(1) shl 1
-
-const 
-  AddToList* = 0
-  DeleteFromList* = 1
-
-const 
-  KeyClass* = 0
-  ButtonClass* = 1
-  ValuatorClass* = 2
-  FeedbackClass* = 3
-  ProximityClass* = 4
-  FocusClass* = 5
-  OtherClass* = 6
-
-const 
-  KbdFeedbackClass* = 0
-  PtrFeedbackClass* = 1
-  StringFeedbackClass* = 2
-  IntegerFeedbackClass* = 3
-  LedFeedbackClass* = 4
-  BellFeedbackClass* = 5
-
-const 
-  devicePointerMotionHint* = 0
-  deviceButton1Motion* = 1
-  deviceButton2Motion* = 2
-  deviceButton3Motion* = 3
-  deviceButton4Motion* = 4
-  deviceButton5Motion* = 5
-  deviceButtonMotion* = 6
-  deviceButtonGrab* = 7
-  deviceOwnerGrabButton* = 8
-  noExtensionEvent* = 9
-
-const 
-  XI_BadDevice* = 0
-  XI_BadEvent* = 1
-  XI_BadMode* = 2
-  XI_DeviceBusy* = 3
-  XI_BadClass* = 4 # Make XEventClass be a CARD32 for 64 bit servers.  Don't affect client
-                   #  definition of XEventClass since that would be a library interface change.
-                   #  See the top of X.h for more _XSERVER64 magic.
-                   #
-
-when defined(XSERVER64): 
-  type 
-    XEventClass* = CARD32
-else: 
-  type 
-    XEventClass* = int32
-#******************************************************************
-# *
-# * Extension version structure.
-# *
-# 
-
-type 
-  PXExtensionVersion* = ptr TXExtensionVersion
-  TXExtensionVersion*{.final.} = object 
-    present*: int16
-    major_version*: int16
-    minor_version*: int16
-
-
-# implementation
diff --git a/lib/wrappers/x11/xinerama.nim b/lib/wrappers/x11/xinerama.nim
deleted file mode 100755
index 96f5d7da3..000000000
--- a/lib/wrappers/x11/xinerama.nim
+++ /dev/null
@@ -1,25 +0,0 @@
-# Converted from X11/Xinerama.h 
-import                        
-  xlib
-
-const
-  xineramaLib = "libXinerama.so"
-
-type 
-  PXineramaScreenInfo* = ptr TXineramaScreenInfo
-  TXineramaScreenInfo*{.final.} = object 
-    screen_number*: cint
-    x_org*: int16
-    y_org*: int16
-    width*: int16
-    height*: int16
-
-
-proc XineramaQueryExtension*(dpy: PDisplay, event_base: Pcint, error_base: Pcint): TBool{.
-    cdecl, dynlib: xineramaLib, importc.}
-proc XineramaQueryVersion*(dpy: PDisplay, major: Pcint, minor: Pcint): TStatus{.
-    cdecl, dynlib: xineramaLib, importc.}
-proc XineramaIsActive*(dpy: PDisplay): TBool{.cdecl, dynlib: xineramaLib, importc.}
-proc XineramaQueryScreens*(dpy: PDisplay, number: Pcint): PXineramaScreenInfo{.
-    cdecl, dynlib: xineramaLib, importc.}
-
diff --git a/lib/wrappers/x11/xkb.nim b/lib/wrappers/x11/xkb.nim
deleted file mode 100755
index f1b0448a8..000000000
--- a/lib/wrappers/x11/xkb.nim
+++ /dev/null
@@ -1,2409 +0,0 @@
-#
-# $Xorg: XKB.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
-#************************************************************
-# $Xorg: XKBstr.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
-#************************************************************
-# $Xorg: XKBgeom.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
-#************************************************************
-#
-#Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-#
-#Permission to use, copy, modify, and distribute this
-#software and its documentation for any purpose and without
-#fee is hereby granted, provided that the above copyright
-#notice appear in all copies and that both that copyright
-#notice and this permission notice appear in supporting
-#documentation, and that the name of Silicon Graphics not be
-#used in advertising or publicity pertaining to distribution
-#of the software without specific prior written permission.
-#Silicon Graphics makes no representation about the suitability
-#of this software for any purpose. It is provided "as is"
-#without any express or implied warranty.
-#
-#SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-#SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-#AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-#GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-#DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-#DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-#OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
-#THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-#********************************************************
-# $XFree86: xc/include/extensions/XKB.h,v 1.5 2002/11/20 04:49:01 dawes Exp $
-# $XFree86: xc/include/extensions/XKBgeom.h,v 3.9 2002/09/18 17:11:40 tsi Exp $
-#
-# Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
-#
-#Thanks:
-#         I want to thanks to oliebol for putting up with all of the problems that was found
-#         while translating this code. ;)
-#
-#         I want to thanks #fpc channel in freenode irc, for helping me, and to put up with my
-#         wierd questions ;)
-#
-#         Thanks for mmc in #xlib on freenode irc And so for the channel itself for the helping me to
-#         understanding some of the problems I had converting this headers and pointing me to resources
-#         that helped translating this headers.
-#
-# Ido
-#
-#History:
-#        2004/10/15           - Fixed a bug of accessing second based records by removing "paced record" and
-#                               chnaged it to "reocrd" only.
-#        2004/10/04 - 06      - Convertion from the c header of XKBgeom.h.
-#        2004/10/03           - Removed the XKBstr_UNIT compiler decleration. Afther the joined files,
-#                                                                                     There is no need for it anymore.
-#                                                                             - There is a need to define (for now) XKBgeom (compiler define) in order
-#                                                                               to use the code of it. At this moment, I did not yet converted it to Pascal.
-#
-#        2004/09/17 - 10/04   - Convertion from the c header of XKBstr.
-#
-#        2004/10/03           - Joined xkbstr.pas into xkb.pas because of the circular calls problems.
-#                             - Added the history of xkbstr.pas above this addition.
-#
-#        2004/09/17           - Fixed a wrong convertion number of XkbPerKeyBitArraySize, insted
-#                               of float, it's now converted into integer (as it should have been).
-#
-#        2004/09/15 - 16      - Convertion from the c header of XKB.h.
-#
-
-import 
-  X, Xlib
-
-proc XkbCharToInt*(v: int8): int16
-proc XkbIntTo2Chars*(i: int16, h, L: var int8)
-proc Xkb2CharsToInt*(h, L: int8): int16
-  #
-  #          Common data structures and access macros
-  #        
-type
-  PWord* = ptr array[0..64_000, int16]
-  PByte* = ptr byte
-  PXkbStatePtr* = ptr TXkbStateRec
-  TXkbStateRec*{.final.} = object 
-    group*: int8
-    locked_group*: int8
-    base_group*: int16
-    latched_group*: int16
-    mods*: int8
-    base_mods*: int8
-    latched_mods*: int8
-    locked_mods*: int8
-    compat_state*: int8
-    grab_mods*: int8
-    compat_grab_mods*: int8
-    lookup_mods*: int8
-    compat_lookup_mods*: int8
-    ptr_buttons*: int16
-
-
-proc XkbModLocks*(s: PXkbStatePtr): int8
-proc XkbStateMods*(s: PXkbStatePtr): int16
-proc XkbGroupLock*(s: PXkbStatePtr): int8
-proc XkbStateGroup*(s: PXkbStatePtr): int16
-proc XkbStateFieldFromRec*(s: PXkbStatePtr): int
-proc XkbGrabStateFromRec*(s: PXkbStatePtr): int
-type 
-  PXkbModsPtr* = ptr TXkbModsRec
-  TXkbModsRec*{.final.} = object 
-    mask*: int8               # effective mods
-    real_mods*: int8
-    vmods*: int16
-
-
-type 
-  PXkbKTMapEntryPtr* = ptr TXkbKTMapEntryRec
-  TXkbKTMapEntryRec*{.final.} = object 
-    active*: bool
-    level*: int8
-    mods*: TXkbModsRec
-
-
-type 
-  PXkbKeyTypePtr* = ptr TXkbKeyTypeRec
-  TXkbKeyTypeRec*{.final.} = object 
-    mods*: TXkbModsRec
-    num_levels*: int8
-    map_count*: int8
-    map*: PXkbKTMapEntryPtr
-    preserve*: PXkbModsPtr
-    name*: TAtom
-    level_names*: TAtom
-
-
-proc XkbNumGroups*(g: int16): int16
-proc XkbOutOfRangeGroupInfo*(g: int16): int16
-proc XkbOutOfRangeGroupAction*(g: int16): int16
-proc XkbOutOfRangeGroupNumber*(g: int16): int16
-proc XkbSetGroupInfo*(g, w, n: int16): int16
-proc XkbSetNumGroups*(g, n: int16): int16
-  #
-  #          Structures and access macros used primarily by the server
-  #        
-type 
-  PXkbBehavior* = ptr TXkbBehavior
-  TXkbBehavior*{.final.} = object 
-    theType*: int8
-    data*: int8
-
-
-type 
-  PXkbModAction* = ptr TXkbModAction
-  TXkbModAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    mask*: int8
-    real_mods*: int8
-    vmods1*: int8
-    vmods2*: int8
-
-
-proc XkbModActionVMods*(a: PXkbModAction): int16
-proc XkbSetModActionVMods*(a: PXkbModAction, v: int8)
-type 
-  PXkbGroupAction* = ptr TXkbGroupAction
-  TXkbGroupAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    group_XXX*: int8
-
-
-proc XkbSAGroup*(a: PXkbGroupAction): int8
-proc XkbSASetGroupProc*(a: PXkbGroupAction, g: int8)
-type 
-  PXkbISOAction* = ptr TXkbISOAction
-  TXkbISOAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    mask*: int8
-    real_mods*: int8
-    group_XXX*: int8
-    affect*: int8
-    vmods1*: int8
-    vmods2*: int8
-
-
-type 
-  PXkbPtrAction* = ptr TXkbPtrAction
-  TXkbPtrAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    high_XXX*: int8
-    low_XXX*: int8
-    high_YYY*: int8
-    low_YYY*: int8
-
-
-proc XkbPtrActionX*(a: PXkbPtrAction): int16
-proc XkbPtrActionY*(a: PXkbPtrAction): int16
-proc XkbSetPtrActionX*(a: PXkbPtrAction, x: int8)
-proc XkbSetPtrActionY*(a: PXkbPtrAction, y: int8)
-type 
-  PXkbPtrBtnAction* = ptr TXkbPtrBtnAction
-  TXkbPtrBtnAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    count*: int8
-    button*: int8
-
-
-type 
-  PXkbPtrDfltAction* = ptr TXkbPtrDfltAction
-  TXkbPtrDfltAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    affect*: int8
-    valueXXX*: int8
-
-
-proc XkbSAPtrDfltValue*(a: PXkbPtrDfltAction): int8
-proc XkbSASetPtrDfltValue*(a: PXkbPtrDfltAction, c: pointer)
-type 
-  PXkbSwitchScreenAction* = ptr TXkbSwitchScreenAction
-  TXkbSwitchScreenAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    screenXXX*: int8
-
-
-proc XkbSAScreen*(a: PXkbSwitchScreenAction): int8
-proc XkbSASetScreen*(a: PXkbSwitchScreenAction, s: pointer)
-type 
-  PXkbCtrlsAction* = ptr TXkbCtrlsAction
-  TXkbCtrlsAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    ctrls3*: int8
-    ctrls2*: int8
-    ctrls1*: int8
-    ctrls0*: int8
-
-
-proc XkbActionSetCtrls*(a: PXkbCtrlsAction, c: int8)
-proc XkbActionCtrls*(a: PXkbCtrlsAction): int16
-type 
-  PXkbMessageAction* = ptr TXkbMessageAction
-  TXkbMessageAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    message*: array[0..5, char]
-
-
-type 
-  PXkbRedirectKeyAction* = ptr TXkbRedirectKeyAction
-  TXkbRedirectKeyAction*{.final.} = object 
-    theType*: int8
-    new_key*: int8
-    mods_mask*: int8
-    mods*: int8
-    vmods_mask0*: int8
-    vmods_mask1*: int8
-    vmods0*: int8
-    vmods1*: int8
-
-
-proc XkbSARedirectVMods*(a: PXkbRedirectKeyAction): int16
-proc XkbSARedirectSetVMods*(a: PXkbRedirectKeyAction, m: int8)
-proc XkbSARedirectVModsMask*(a: PXkbRedirectKeyAction): int16
-proc XkbSARedirectSetVModsMask*(a: PXkbRedirectKeyAction, m: int8)
-type 
-  PXkbDeviceBtnAction* = ptr TXkbDeviceBtnAction
-  TXkbDeviceBtnAction*{.final.} = object 
-    theType*: int8
-    flags*: int8
-    count*: int8
-    button*: int8
-    device*: int8
-
-
-type 
-  PXkbDeviceValuatorAction* = ptr TXkbDeviceValuatorAction
-  TXkbDeviceValuatorAction*{.final.} = object  #
-                                               #      Macros to classify key actions
-                                               #                
-    theType*: int8
-    device*: int8
-    v1_what*: int8
-    v1_ndx*: int8
-    v1_value*: int8
-    v2_what*: int8
-    v2_ndx*: int8
-    v2_value*: int8
-
-
-const 
-  XkbAnyActionDataSize* = 7
-
-type 
-  PXkbAnyAction* = ptr TXkbAnyAction
-  TXkbAnyAction*{.final.} = object 
-    theType*: int8
-    data*: array[0..XkbAnyActionDataSize - 1, int8]
-
-
-proc XkbIsModAction*(a: PXkbAnyAction): bool
-proc XkbIsGroupAction*(a: PXkbAnyAction): bool
-proc XkbIsPtrAction*(a: PXkbAnyAction): bool
-type 
-  PXkbAction* = ptr TXkbAction
-  TXkbAction*{.final.} = object  #
-                                 #      XKB request codes, used in:
-                                 #      -  xkbReqType field of all requests
-                                 #      -  requestMinor field of some events
-                                 #                
-    any*: TXkbAnyAction
-    mods*: TXkbModAction
-    group*: TXkbGroupAction
-    iso*: TXkbISOAction
-    thePtr*: TXkbPtrAction
-    btn*: TXkbPtrBtnAction
-    dflt*: TXkbPtrDfltAction
-    screen*: TXkbSwitchScreenAction
-    ctrls*: TXkbCtrlsAction
-    msg*: TXkbMessageAction
-    redirect*: TXkbRedirectKeyAction
-    devbtn*: TXkbDeviceBtnAction
-    devval*: TXkbDeviceValuatorAction
-    theType*: int8
-
-
-const 
-  X_kbUseExtension* = 0
-  X_kbSelectEvents* = 1
-  X_kbBell* = 3
-  X_kbGetState* = 4
-  X_kbLatchLockState* = 5
-  X_kbGetControls* = 6
-  X_kbSetControls* = 7
-  X_kbGetMap* = 8
-  X_kbSetMap* = 9
-  X_kbGetCompatMap* = 10
-  X_kbSetCompatMap* = 11
-  X_kbGetIndicatorState* = 12
-  X_kbGetIndicatorMap* = 13
-  X_kbSetIndicatorMap* = 14
-  X_kbGetNamedIndicator* = 15
-  X_kbSetNamedIndicator* = 16
-  X_kbGetNames* = 17
-  X_kbSetNames* = 18
-  X_kbGetGeometry* = 19
-  X_kbSetGeometry* = 20
-  X_kbPerClientFlags* = 21
-  X_kbListComponents* = 22
-  X_kbGetKbdByName* = 23
-  X_kbGetDeviceInfo* = 24
-  X_kbSetDeviceInfo* = 25
-  X_kbSetDebuggingFlags* = 101 #
-                               #      In the X sense, XKB reports only one event.
-                               #      The type field of all XKB events is XkbEventCode
-                               #                
-
-const 
-  XkbEventCode* = 0
-  XkbNumberEvents* = XkbEventCode + 1 #
-                                      #      XKB has a minor event code so it can use one X event code for
-                                      #      multiple purposes.
-                                      #       - reported in the xkbType field of all XKB events.
-                                      #       - XkbSelectEventDetails: Indicates the event for which event details
-                                      #         are being changed
-                                      #                
-
-const 
-  XkbNewKeyboardNotify* = 0
-  XkbMapNotify* = 1
-  XkbStateNotify* = 2
-  XkbControlsNotify* = 3
-  XkbIndicatorStateNotify* = 4
-  XkbIndicatorMapNotify* = 5
-  XkbNamesNotify* = 6
-  XkbCompatMapNotify* = 7
-  XkbBellNotify* = 8
-  XkbActionMessage* = 9
-  XkbAccessXNotify* = 10
-  XkbExtensionDeviceNotify* = 11 #
-                                 #      Event Mask:
-                                 #       - XkbSelectEvents:  Specifies event interest.
-                                 #    
-
-const 
-  XkbNewKeyboardNotifyMask* = int(1) shl 0
-  XkbMapNotifyMask* = int(1) shl 1
-  XkbStateNotifyMask* = int(1) shl 2
-  XkbControlsNotifyMask* = int(1) shl 3
-  XkbIndicatorStateNotifyMask* = int(1) shl 4
-  XkbIndicatorMapNotifyMask* = int(1) shl 5
-  XkbNamesNotifyMask* = int(1) shl 6
-  XkbCompatMapNotifyMask* = int(1) shl 7
-  XkbBellNotifyMask* = int(1) shl 8
-  XkbActionMessageMask* = int(1) shl 9
-  XkbAccessXNotifyMask* = int(1) shl 10
-  XkbExtensionDeviceNotifyMask* = int(1) shl 11
-  XkbAllEventsMask* = 0x00000FFF #
-                                 #      NewKeyboardNotify event details:
-                                 #    
-
-const 
-  XkbNKN_KeycodesMask* = int(1) shl 0
-  XkbNKN_GeometryMask* = int(1) shl 1
-  XkbNKN_DeviceIDMask* = int(1) shl 2
-  XkbAllNewKeyboardEventsMask* = 0x00000007 #
-                                            #      AccessXNotify event types:
-                                            #       - The 'what' field of AccessXNotify events reports the
-                                            #         reason that the event was generated.
-                                            #                
-
-const 
-  XkbAXN_SKPress* = 0
-  XkbAXN_SKAccept* = 1
-  XkbAXN_SKReject* = 2
-  XkbAXN_SKRelease* = 3
-  XkbAXN_BKAccept* = 4
-  XkbAXN_BKReject* = 5
-  XkbAXN_AXKWarning* = 6 #
-                         #      AccessXNotify details:
-                         #      - Used as an event detail mask to limit the conditions under which
-                         #        AccessXNotify events are reported
-                         #                
-
-const 
-  XkbAXN_SKPressMask* = int(1) shl 0
-  XkbAXN_SKAcceptMask* = int(1) shl 1
-  XkbAXN_SKRejectMask* = int(1) shl 2
-  XkbAXN_SKReleaseMask* = int(1) shl 3
-  XkbAXN_BKAcceptMask* = int(1) shl 4
-  XkbAXN_BKRejectMask* = int(1) shl 5
-  XkbAXN_AXKWarningMask* = int(1) shl 6
-  XkbAllAccessXEventsMask* = 0x0000000F #
-                                        #      State detail mask:
-                                        #       - The 'changed' field of StateNotify events reports which of
-                                        #         the keyboard state components have changed.
-                                        #       - Used as an event detail mask to limit the conditions under
-                                        #         which StateNotify events are reported.
-                                        #                
-
-const 
-  XkbModifierStateMask* = int(1) shl 0
-  XkbModifierBaseMask* = int(1) shl 1
-  XkbModifierLatchMask* = int(1) shl 2
-  XkbModifierLockMask* = int(1) shl 3
-  XkbGroupStateMask* = int(1) shl 4
-  XkbGroupBaseMask* = int(1) shl 5
-  XkbGroupLatchMask* = int(1) shl 6
-  XkbGroupLockMask* = int(1) shl 7
-  XkbCompatStateMask* = int(1) shl 8
-  XkbGrabModsMask* = int(1) shl 9
-  XkbCompatGrabModsMask* = int(1) shl 10
-  XkbLookupModsMask* = int(1) shl 11
-  XkbCompatLookupModsMask* = int(1) shl 12
-  XkbPointerButtonMask* = int(1) shl 13
-  XkbAllStateComponentsMask* = 0x00003FFF #
-                                          #      Controls detail masks:
-                                          #       The controls specified in XkbAllControlsMask:
-                                          #       - The 'changed' field of ControlsNotify events reports which of
-                                          #         the keyboard controls have changed.
-                                          #       - The 'changeControls' field of the SetControls request specifies
-                                          #         the controls for which values are to be changed.
-                                          #       - Used as an event detail mask to limit the conditions under
-                                          #         which ControlsNotify events are reported.
-                                          #
-                                          #       The controls specified in the XkbAllBooleanCtrlsMask:
-                                          #       - The 'enabledControls' field of ControlsNotify events reports the
-                                          #         current status of the boolean controls.
-                                          #       - The 'enabledControlsChanges' field of ControlsNotify events reports
-                                          #         any boolean controls that have been turned on or off.
-                                          #       - The 'affectEnabledControls' and 'enabledControls' fields of the
-                                          #         kbSetControls request change the set of enabled controls.
-                                          #       - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of
-                                          #         an XkbControlsRec specify the controls to be changed if the keyboard
-                                          #         times out and the values to which they should be changed.
-                                          #       - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags
-                                          #         request specifies the specify the controls to be reset when the
-                                          #         client exits and the values to which they should be reset.
-                                          #       - The 'ctrls' field of an indicator map specifies the controls
-                                          #         that drive the indicator.
-                                          #       - Specifies the boolean controls affected by the SetControls and
-                                          #         LockControls key actions.
-                                          #                
-
-const 
-  XkbRepeatKeysMask* = int(1) shl 0
-  XkbSlowKeysMask* = int(1) shl 1
-  XkbBounceKeysMask* = int(1) shl 2
-  XkbStickyKeysMask* = int(1) shl 3
-  XkbMouseKeysMask* = int(1) shl 4
-  XkbMouseKeysAccelMask* = int(1) shl 5
-  XkbAccessXKeysMask* = int(1) shl 6
-  XkbAccessXTimeoutMask* = int(1) shl 7
-  XkbAccessXFeedbackMask* = int(1) shl 8
-  XkbAudibleBellMask* = int(1) shl 9
-  XkbOverlay1Mask* = int(1) shl 10
-  XkbOverlay2Mask* = int(1) shl 11
-  XkbIgnoreGroupLockMask* = int(1) shl 12
-  XkbGroupsWrapMask* = int(1) shl 27
-  XkbInternalModsMask* = int(1) shl 28
-  XkbIgnoreLockModsMask* = int(1) shl 29
-  XkbPerKeyRepeatMask* = int(1) shl 30
-  XkbControlsEnabledMask* = int(1) shl 31
-  XkbAccessXOptionsMask* = XkbStickyKeysMask or XkbAccessXFeedbackMask
-  XkbAllBooleanCtrlsMask* = 0x00001FFF
-  XkbAllControlsMask* = 0xF8001FFF #
-                                   #      Compatibility Map Compontents:
-                                   #       - Specifies the components to be allocated in XkbAllocCompatMap.
-                                   #                
-
-const 
-  XkbSymInterpMask* = 1 shl 0
-  XkbGroupCompatMask* = 1 shl 1
-  XkbAllCompatMask* = 0x00000003 #
-                                 #      Assorted constants and limits.
-                                 #                
-
-const 
-  XkbAllIndicatorsMask* = 0xFFFFFFFF #
-                                     #      Map components masks:
-                                     #      Those in AllMapComponentsMask:
-                                     #       - Specifies the individual fields to be loaded or changed for the
-                                     #         GetMap and SetMap requests.
-                                     #      Those in ClientInfoMask:
-                                     #       - Specifies the components to be allocated by XkbAllocClientMap.
-                                     #      Those in ServerInfoMask:
-                                     #       - Specifies the components to be allocated by XkbAllocServerMap.
-                                     #                
-
-const 
-  XkbKeyTypesMask* = 1 shl 0
-  XkbKeySymsMask* = 1 shl 1
-  XkbModifierMapMask* = 1 shl 2
-  XkbExplicitComponentsMask* = 1 shl 3
-  XkbKeyActionsMask* = 1 shl 4
-  XkbKeyBehaviorsMask* = 1 shl 5
-  XkbVirtualModsMask* = 1 shl 6
-  XkbVirtualModMapMask* = 1 shl 7
-  XkbAllClientInfoMask* = XkbKeyTypesMask or XkbKeySymsMask or
-      XkbModifierMapMask
-  XkbAllServerInfoMask* = XkbExplicitComponentsMask or XkbKeyActionsMask or
-      XkbKeyBehaviorsMask or XkbVirtualModsMask or XkbVirtualModMapMask
-  XkbAllMapComponentsMask* = XkbAllClientInfoMask or XkbAllServerInfoMask #
-                                                                          #      Names component mask:
-                                                                          #       - Specifies the names to be loaded or changed for the GetNames and
-                                                                          #         SetNames requests.
-                                                                          #       - Specifies the names that have changed in a NamesNotify event.
-                                                                          #       - Specifies the names components to be allocated by XkbAllocNames.
-                                                                          #                
-
-const 
-  XkbKeycodesNameMask* = 1 shl 0
-  XkbGeometryNameMask* = 1 shl 1
-  XkbSymbolsNameMask* = 1 shl 2
-  XkbPhysSymbolsNameMask* = 1 shl 3
-  XkbTypesNameMask* = 1 shl 4
-  XkbCompatNameMask* = 1 shl 5
-  XkbKeyTypeNamesMask* = 1 shl 6
-  XkbKTLevelNamesMask* = 1 shl 7
-  XkbIndicatorNamesMask* = 1 shl 8
-  XkbKeyNamesMask* = 1 shl 9
-  XkbKeyAliasesMask* = 1 shl 10
-  XkbVirtualModNamesMask* = 1 shl 11
-  XkbGroupNamesMask* = 1 shl 12
-  XkbRGNamesMask* = 1 shl 13
-  XkbComponentNamesMask* = 0x0000003F
-  XkbAllNamesMask* = 0x00003FFF #
-                                #      Miscellaneous event details:
-                                #      - event detail masks for assorted events that don't reall
-                                #        have any details.
-                                #                
-
-const 
-  XkbAllStateEventsMask* = XkbAllStateComponentsMask
-  XkbAllMapEventsMask* = XkbAllMapComponentsMask
-  XkbAllControlEventsMask* = XkbAllControlsMask
-  XkbAllIndicatorEventsMask* = XkbAllIndicatorsMask
-  XkbAllNameEventsMask* = XkbAllNamesMask
-  XkbAllCompatMapEventsMask* = XkbAllCompatMask
-  XkbAllBellEventsMask* = int(1) shl 0
-  XkbAllActionMessagesMask* = int(1) shl 0 #
-                                           #      XKB reports one error:  BadKeyboard
-                                           #      A further reason for the error is encoded into to most significant
-                                           #      byte of the resourceID for the error:
-                                           #         XkbErr_BadDevice - the device in question was not found
-                                           #         XkbErr_BadClass  - the device was found but it doesn't belong to
-                                           #                            the appropriate class.
-                                           #         XkbErr_BadId     - the device was found and belongs to the right
-                                           #                            class, but not feedback with a matching id was
-                                           #                            found.
-                                           #      The low byte of the resourceID for this error contains the device
-                                           #      id, class specifier or feedback id that failed.
-                                           #                
-
-const 
-  XkbKeyboard* = 0
-  XkbNumberErrors* = 1
-  XkbErr_BadDevice* = 0x000000FF
-  XkbErr_BadClass* = 0x000000FE
-  XkbErr_BadId* = 0x000000FD #
-                             #      Keyboard Components Mask:
-                             #      - Specifies the components that follow a GetKeyboardByNameReply
-                             #                
-
-const 
-  XkbClientMapMask* = int(1) shl 0
-  XkbServerMapMask* = int(1) shl 1
-  XkbCompatMapMask* = int(1) shl 2
-  XkbIndicatorMapMask* = int(1) shl 3
-  XkbNamesMask* = int(1) shl 4
-  XkbGeometryMask* = int(1) shl 5
-  XkbControlsMask* = int(1) shl 6
-  XkbAllComponentsMask* = 0x0000007F #
-                                     #      AccessX Options Mask
-                                     #       - The 'accessXOptions' field of an XkbControlsRec specifies the
-                                     #         AccessX options that are currently in effect.
-                                     #       - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues'
-                                     #         fields of an XkbControlsRec specify the Access X options to be
-                                     #         changed if the keyboard times out and the values to which they
-                                     #         should be changed.
-                                     #                
-
-const 
-  XkbAX_SKPressFBMask* = int(1) shl 0
-  XkbAX_SKAcceptFBMask* = int(1) shl 1
-  XkbAX_FeatureFBMask* = int(1) shl 2
-  XkbAX_SlowWarnFBMask* = int(1) shl 3
-  XkbAX_IndicatorFBMask* = int(1) shl 4
-  XkbAX_StickyKeysFBMask* = int(1) shl 5
-  XkbAX_TwoKeysMask* = int(1) shl 6
-  XkbAX_LatchToLockMask* = int(1) shl 7
-  XkbAX_SKReleaseFBMask* = int(1) shl 8
-  XkbAX_SKRejectFBMask* = int(1) shl 9
-  XkbAX_BKRejectFBMask* = int(1) shl 10
-  XkbAX_DumbBellFBMask* = int(1) shl 11
-  XkbAX_FBOptionsMask* = 0x00000F3F
-  XkbAX_SKOptionsMask* = 0x000000C0
-  XkbAX_AllOptionsMask* = 0x00000FFF #
-                                     #      XkbUseCoreKbd is used to specify the core keyboard without having
-                                     #                        to look up its X input extension identifier.
-                                     #      XkbUseCorePtr is used to specify the core pointer without having
-                                     #                        to look up its X input extension identifier.
-                                     #      XkbDfltXIClass is used to specify "don't care" any place that the
-                                     #                        XKB protocol is looking for an X Input Extension
-                                     #                        device class.
-                                     #      XkbDfltXIId is used to specify "don't care" any place that the
-                                     #                        XKB protocol is looking for an X Input Extension
-                                     #                        feedback identifier.
-                                     #      XkbAllXIClasses is used to get information about all device indicators,
-                                     #                        whether they're part of the indicator feedback class
-                                     #                        or the keyboard feedback class.
-                                     #      XkbAllXIIds is used to get information about all device indicator
-                                     #                        feedbacks without having to list them.
-                                     #      XkbXINone is used to indicate that no class or id has been specified.
-                                     #      XkbLegalXILedClass(c)  True if 'c' specifies a legal class with LEDs
-                                     #      XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells
-                                     #      XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device
-                                     #      XkbExplicitXIClass(c)  True if 'c' explicitly specifies a device class
-                                     #      XkbExplicitXIId(c)     True if 'i' explicitly specifies a device id
-                                     #      XkbSingleXIClass(c)    True if 'c' specifies exactly one device class,
-                                     #                             including the default.
-                                     #      XkbSingleXIId(i)       True if 'i' specifies exactly one device
-                                     #                              identifier, including the default.
-                                     #                
-
-const 
-  XkbUseCoreKbd* = 0x00000100
-  XkbUseCorePtr* = 0x00000200
-  XkbDfltXIClass* = 0x00000300
-  XkbDfltXIId* = 0x00000400
-  XkbAllXIClasses* = 0x00000500
-  XkbAllXIIds* = 0x00000600
-  XkbXINone* = 0x0000FF00
-
-proc XkbLegalXILedClass*(c: int): bool
-proc XkbLegalXIBellClass*(c: int): bool
-proc XkbExplicitXIDevice*(c: int): bool
-proc XkbExplicitXIClass*(c: int): bool
-proc XkbExplicitXIId*(c: int): bool
-proc XkbSingleXIClass*(c: int): bool
-proc XkbSingleXIId*(c: int): bool
-const 
-  XkbNoModifier* = 0x000000FF
-  XkbNoShiftLevel* = 0x000000FF
-  XkbNoShape* = 0x000000FF
-  XkbNoIndicator* = 0x000000FF
-  XkbNoModifierMask* = 0
-  XkbAllModifiersMask* = 0x000000FF
-  XkbAllVirtualModsMask* = 0x0000FFFF
-  XkbNumKbdGroups* = 4
-  XkbMaxKbdGroup* = XkbNumKbdGroups - 1
-  XkbMaxMouseKeysBtn* = 4 #
-                          #      Group Index and Mask:
-                          #       - Indices into the kt_index array of a key type.
-                          #       - Mask specifies types to be changed for XkbChangeTypesOfKey
-                          #    
-
-const 
-  XkbGroup1Index* = 0
-  XkbGroup2Index* = 1
-  XkbGroup3Index* = 2
-  XkbGroup4Index* = 3
-  XkbAnyGroup* = 254
-  XkbAllGroups* = 255
-  XkbGroup1Mask* = 1 shl 0
-  XkbGroup2Mask* = 1 shl 1
-  XkbGroup3Mask* = 1 shl 2
-  XkbGroup4Mask* = 1 shl 3
-  XkbAnyGroupMask* = 1 shl 7
-  XkbAllGroupsMask* = 0x0000000F #
-                                 #      BuildCoreState: Given a keyboard group and a modifier state,
-                                 #                      construct the value to be reported an event.
-                                 #      GroupForCoreState:  Given the state reported in an event,
-                                 #                      determine the keyboard group.
-                                 #      IsLegalGroup:   Returns TRUE if 'g' is a valid group index.
-                                 #                
-
-proc XkbBuildCoreState*(m, g: int): int
-proc XkbGroupForCoreState*(s: int): int
-proc XkbIsLegalGroup*(g: int): bool
-  #
-  #      GroupsWrap values:
-  #       - The 'groupsWrap' field of an XkbControlsRec specifies the
-  #         treatment of out of range groups.
-  #       - Bits 6 and 7 of the group info field of a key symbol map
-  #         specify the interpretation of out of range groups for the
-  #         corresponding key.
-  #                
-const 
-  XkbWrapIntoRange* = 0x00000000
-  XkbClampIntoRange* = 0x00000040
-  XkbRedirectIntoRange* = 0x00000080 #
-                                     #      Action flags:  Reported in the 'flags' field of most key actions.
-                                     #      Interpretation depends on the type of the action; not all actions
-                                     #      accept all flags.
-                                     #
-                                     #      Option                    Used for Actions
-                                     #      ------                    ----------------
-                                     #      ClearLocks                SetMods, LatchMods, SetGroup, LatchGroup
-                                     #      LatchToLock               SetMods, LatchMods, SetGroup, LatchGroup
-                                     #      LockNoLock                LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
-                                     #      LockNoUnlock              LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
-                                     #      UseModMapMods             SetMods, LatchMods, LockMods, ISOLock
-                                     #      GroupAbsolute             SetGroup, LatchGroup, LockGroup, ISOLock
-                                     #      UseDfltButton             PtrBtn, LockPtrBtn
-                                     #      NoAcceleration            MovePtr
-                                     #      MoveAbsoluteX             MovePtr
-                                     #      MoveAbsoluteY             MovePtr
-                                     #      ISODfltIsGroup            ISOLock
-                                     #      ISONoAffectMods           ISOLock
-                                     #      ISONoAffectGroup          ISOLock
-                                     #      ISONoAffectPtr            ISOLock
-                                     #      ISONoAffectCtrls          ISOLock
-                                     #      MessageOnPress            ActionMessage
-                                     #      MessageOnRelease          ActionMessage
-                                     #      MessageGenKeyEvent        ActionMessage
-                                     #      AffectDfltBtn             SetPtrDflt
-                                     #      DfltBtnAbsolute           SetPtrDflt
-                                     #      SwitchApplication SwitchScreen
-                                     #      SwitchAbsolute            SwitchScreen
-                                     #                
-
-const 
-  XkbSA_ClearLocks* = int(1) shl 0
-  XkbSA_LatchToLock* = int(1) shl 1
-  XkbSA_LockNoLock* = int(1) shl 0
-  XkbSA_LockNoUnlock* = int(1) shl 1
-  XkbSA_UseModMapMods* = int(1) shl 2
-  XkbSA_GroupAbsolute* = int(1) shl 2
-  XkbSA_UseDfltButton* = 0
-  XkbSA_NoAcceleration* = int(1) shl 0
-  XkbSA_MoveAbsoluteX* = int(1) shl 1
-  XkbSA_MoveAbsoluteY* = int(1) shl 2
-  XkbSA_ISODfltIsGroup* = int(1) shl 7
-  XkbSA_ISONoAffectMods* = int(1) shl 6
-  XkbSA_ISONoAffectGroup* = int(1) shl 5
-  XkbSA_ISONoAffectPtr* = int(1) shl 4
-  XkbSA_ISONoAffectCtrls* = int(1) shl 3
-  XkbSA_ISOAffectMask* = 0x00000078
-  XkbSA_MessageOnPress* = int(1) shl 0
-  XkbSA_MessageOnRelease* = int(1) shl 1
-  XkbSA_MessageGenKeyEvent* = int(1) shl 2
-  XkbSA_AffectDfltBtn* = 1
-  XkbSA_DfltBtnAbsolute* = int(1) shl 2
-  XkbSA_SwitchApplication* = int(1) shl 0
-  XkbSA_SwitchAbsolute* = int(1) shl 2 #
-                                       #      The following values apply to the SA_DeviceValuator
-                                       #      action only.  Valuator operations specify the action
-                                       #      to be taken.   Values specified in the action are
-                                       #      multiplied by 2^scale before they are applied.
-                                       #                
-
-const 
-  XkbSA_IgnoreVal* = 0x00000000
-  XkbSA_SetValMin* = 0x00000010
-  XkbSA_SetValCenter* = 0x00000020
-  XkbSA_SetValMax* = 0x00000030
-  XkbSA_SetValRelative* = 0x00000040
-  XkbSA_SetValAbsolute* = 0x00000050
-  XkbSA_ValOpMask* = 0x00000070
-  XkbSA_ValScaleMask* = 0x00000007
-
-proc XkbSA_ValOp*(a: int): int
-proc XkbSA_ValScale*(a: int): int
-  #
-  #      Action types: specifies the type of a key action.  Reported in the
-  #      type field of all key actions.
-  #                
-const 
-  XkbSA_NoAction* = 0x00000000
-  XkbSA_SetMods* = 0x00000001
-  XkbSA_LatchMods* = 0x00000002
-  XkbSA_LockMods* = 0x00000003
-  XkbSA_SetGroup* = 0x00000004
-  XkbSA_LatchGroup* = 0x00000005
-  XkbSA_LockGroup* = 0x00000006
-  XkbSA_MovePtr* = 0x00000007
-  XkbSA_PtrBtn* = 0x00000008
-  XkbSA_LockPtrBtn* = 0x00000009
-  XkbSA_SetPtrDflt* = 0x0000000A
-  XkbSA_ISOLock* = 0x0000000B
-  XkbSA_Terminate* = 0x0000000C
-  XkbSA_SwitchScreen* = 0x0000000D
-  XkbSA_SetControls* = 0x0000000E
-  XkbSA_LockControls* = 0x0000000F
-  XkbSA_ActionMessage* = 0x00000010
-  XkbSA_RedirectKey* = 0x00000011
-  XkbSA_DeviceBtn* = 0x00000012
-  XkbSA_LockDeviceBtn* = 0x00000013
-  XkbSA_DeviceValuator* = 0x00000014
-  XkbSA_LastAction* = XkbSA_DeviceValuator
-  XkbSA_NumActions* = XkbSA_LastAction + 1
-
-const 
-  XkbSA_XFree86Private* = 0x00000086
-#
-#      Specifies the key actions that clear latched groups or modifiers.
-#                
-
-const  ##define        XkbSA_BreakLatch \
-       #        ((1<<XkbSA_NoAction)|(1<<XkbSA_PtrBtn)|(1<<XkbSA_LockPtrBtn)|\
-       #        (1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\
-       #        (1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\
-       #        (1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn))
-       #
-  XkbSA_BreakLatch* = (1 shl XkbSA_PtrBtn) or (1 shl XkbSA_LockPtrBtn) or
-      (1 shl XkbSA_Terminate) or (1 shl XkbSA_SwitchScreen) or
-      (1 shl XkbSA_SetControls) or (1 shl XkbSA_LockControls) or
-      (1 shl XkbSA_ActionMessage) or (1 shl XkbSA_RedirectKey) or
-      (1 shl XkbSA_DeviceBtn) or (1 shl XkbSA_LockDeviceBtn) #
-                                                             #      Key Behavior Qualifier:
-                                                             #         KB_Permanent indicates that the behavior describes an unalterable
-                                                             #         characteristic of the keyboard, not an XKB software-simulation of
-                                                             #         the listed behavior.
-                                                             #      Key Behavior Types:
-                                                             #         Specifies the behavior of the underlying key.
-                                                             #                
-
-const 
-  XkbKB_Permanent* = 0x00000080
-  XkbKB_OpMask* = 0x0000007F
-  XkbKB_Default* = 0x00000000
-  XkbKB_Lock* = 0x00000001
-  XkbKB_RadioGroup* = 0x00000002
-  XkbKB_Overlay1* = 0x00000003
-  XkbKB_Overlay2* = 0x00000004
-  XkbKB_RGAllowNone* = 0x00000080 #
-                                  #      Various macros which describe the range of legal keycodes.
-                                  #                
-
-const 
-  XkbMinLegalKeyCode* = 8
-  XkbMaxLegalKeyCode* = 255
-  XkbMaxKeyCount* = XkbMaxLegalKeyCode - XkbMinLegalKeyCode + 1
-  XkbPerKeyBitArraySize* = (XkbMaxLegalKeyCode + 1) div 8
-
-proc XkbIsLegalKeycode*(k: int): bool
-type 
-  PXkbControlsPtr* = ptr TXkbControlsRec
-  TXkbControlsRec*{.final.} = object 
-    mk_dflt_btn*: int8
-    num_groups*: int8
-    groups_wrap*: int8
-    internal*: TXkbModsRec
-    ignore_lock*: TXkbModsRec
-    enabled_ctrls*: int16
-    repeat_delay*: int16
-    repeat_interval*: int16
-    slow_keys_delay*: int16
-    debounce_delay*: int16
-    mk_delay*: int16
-    mk_interval*: int16
-    mk_time_to_max*: int16
-    mk_max_speed*: int16
-    mk_curve*: int16
-    ax_options*: int16
-    ax_timeout*: int16
-    axt_opts_mask*: int16
-    axt_opts_values*: int16
-    axt_ctrls_mask*: int16
-    axt_ctrls_values*: int16
-    per_key_repeat*: array[0..XkbPerKeyBitArraySize - 1, int8]
-
-
-proc XkbAX_AnyFeedback*(c: PXkbControlsPtr): int16
-proc XkbAX_NeedOption*(c: PXkbControlsPtr, w: int16): int16
-proc XkbAX_NeedFeedback*(c: PXkbControlsPtr, w: int16): bool
-  #
-  #      Assorted constants and limits.
-  #                
-const 
-  XkbNumModifiers* = 8
-  XkbNumVirtualMods* = 16
-  XkbNumIndicators* = 32
-  XkbMaxRadioGroups* = 32
-  XkbAllRadioGroupsMask* = 0xFFFFFFFF
-  XkbMaxShiftLevel* = 63
-  XkbMaxSymsPerKey* = XkbMaxShiftLevel * XkbNumKbdGroups
-  XkbRGMaxMembers* = 12
-  XkbActionMessageLength* = 6
-  XkbKeyNameLength* = 4
-  XkbMaxRedirectCount* = 8
-  XkbGeomPtsPerMM* = 10
-  XkbGeomMaxColors* = 32
-  XkbGeomMaxLabelColors* = 3
-  XkbGeomMaxPriority* = 255
-
-type 
-  PXkbServerMapPtr* = ptr TXkbServerMapRec
-  TXkbServerMapRec*{.final.} = object 
-    num_acts*: int16
-    size_acts*: int16
-    acts*: ptr array[0..0xfff, TXkbAction]
-    behaviors*: PXkbBehavior
-    key_acts*: PWord
-    explicit*: PByte
-    vmods*: array[0..XkbNumVirtualMods - 1, int8]
-    vmodmap*: PWord
-
-
-proc XkbSMKeyActionsPtr*(m: PXkbServerMapPtr, k: int16): PXkbAction
-  #
-  #          Structures and access macros used primarily by clients
-  #        
-type 
-  PXkbSymMapPtr* = ptr TXkbSymMapRec
-  TXkbSymMapRec*{.final.} = object 
-    kt_index*: array[0..XkbNumKbdGroups - 1, int8]
-    group_info*: int8
-    width*: int8
-    offset*: int8
-
-
-type 
-  PXkbClientMapPtr* = ptr TXkbClientMapRec
-  TXkbClientMapRec*{.final.} = object 
-    size_types*: int8
-    num_types*: int8
-    types*: ptr array[0..0xffff, TXkbKeyTypeRec]
-    size_syms*: int16
-    num_syms*: int16
-    syms*: ptr array[0..0xffff, TKeySym]
-    key_sym_map*: ptr array[0..0xffff, TXkbSymMapRec]
-    modmap*: PByte
-
-
-proc XkbCMKeyGroupInfo*(m: PXkbClientMapPtr, k: int16): int8
-proc XkbCMKeyNumGroups*(m: PXkbClientMapPtr, k: int16): int8
-proc XkbCMKeyGroupWidth*(m: PXkbClientMapPtr, k: int16, g: int8): int8
-proc XkbCMKeyGroupsWidth*(m: PXkbClientMapPtr, k: int16): int8
-proc XkbCMKeyTypeIndex*(m: PXkbClientMapPtr, k: int16, g: int8): int8
-proc XkbCMKeyType*(m: PXkbClientMapPtr, k: int16, g: int8): PXkbKeyTypePtr
-proc XkbCMKeyNumSyms*(m: PXkbClientMapPtr, k: int16): int16
-proc XkbCMKeySymsOffset*(m: PXkbClientMapPtr, k: int16): int8
-  #
-  #          Compatibility structures and access macros
-  #        
-type 
-  PXkbSymInterpretPtr* = ptr TXkbSymInterpretRec
-  TXkbSymInterpretRec*{.final.} = object 
-    sym*: TKeySym
-    flags*: int8
-    match*: int8
-    mods*: int8
-    virtual_mod*: int8
-    act*: TXkbAnyAction
-
-
-type 
-  PXkbCompatMapPtr* = ptr TXkbCompatMapRec
-  TXkbCompatMapRec*{.final.} = object 
-    sym_interpret*: PXkbSymInterpretPtr
-    groups*: array[0..XkbNumKbdGroups - 1, TXkbModsRec]
-    num_si*: int16
-    size_si*: int16
-
-
-type 
-  PXkbIndicatorMapPtr* = ptr TXkbIndicatorMapRec
-  TXkbIndicatorMapRec*{.final.} = object 
-    flags*: int8
-    which_groups*: int8
-    groups*: int8
-    which_mods*: int8
-    mods*: TXkbModsRec
-    ctrls*: int16
-
-
-proc XkbIM_IsAuto*(i: PXkbIndicatorMapPtr): bool
-proc XkbIM_InUse*(i: PXkbIndicatorMapPtr): bool
-type 
-  PXkbIndicatorPtr* = ptr TXkbIndicatorRec
-  TXkbIndicatorRec*{.final.} = object 
-    phys_indicators*: int32
-    maps*: array[0..XkbNumIndicators - 1, TXkbIndicatorMapRec]
-
-
-type 
-  PXkbKeyNamePtr* = ptr TXkbKeyNameRec
-  TXkbKeyNameRec*{.final.} = object 
-    name*: array[0..XkbKeyNameLength - 1, Char]
-
-
-type 
-  PXkbKeyAliasPtr* = ptr TXkbKeyAliasRec
-  TXkbKeyAliasRec*{.final.} = object  #
-                                      #          Names for everything
-                                      #        
-    float*: array[0..XkbKeyNameLength - 1, Char]
-    alias*: array[0..XkbKeyNameLength - 1, Char]
-
-
-type 
-  PXkbNamesPtr* = ptr TXkbNamesRec
-  TXkbNamesRec*{.final.} = object  #
-                                   #      Key Type index and mask for the four standard key types.
-                                   #                
-    keycodes*: TAtom
-    geometry*: TAtom
-    symbols*: TAtom
-    types*: TAtom
-    compat*: TAtom
-    vmods*: array[0..XkbNumVirtualMods - 1, TAtom]
-    indicators*: array[0..XkbNumIndicators - 1, TAtom]
-    groups*: array[0..XkbNumKbdGroups - 1, TAtom]
-    keys*: PXkbKeyNamePtr
-    key_aliases*: PXkbKeyAliasPtr
-    radio_groups*: PAtom
-    phys_symbols*: TAtom
-    num_keys*: int8
-    num_key_aliases*: int8
-    num_rg*: int16
-
-
-const 
-  XkbOneLevelIndex* = 0
-  XkbTwoLevelIndex* = 1
-  XkbAlphabeticIndex* = 2
-  XkbKeypadIndex* = 3
-  XkbLastRequiredType* = XkbKeypadIndex
-  XkbNumRequiredTypes* = XkbLastRequiredType + 1
-  XkbMaxKeyTypes* = 255
-  XkbOneLevelMask* = 1 shl 0
-  XkbTwoLevelMask* = 1 shl 1
-  XkbAlphabeticMask* = 1 shl 2
-  XkbKeypadMask* = 1 shl 3
-  XkbAllRequiredTypes* = 0x0000000F
-
-proc XkbShiftLevel*(n: int8): int8
-proc XkbShiftLevelMask*(n: int8): int8
-  #
-  #      Extension name and version information
-  #                
-const 
-  XkbName* = "XKEYBOARD"
-  XkbMajorVersion* = 1
-  XkbMinorVersion* = 0 #
-                       #      Explicit map components:
-                       #       - Used in the 'explicit' field of an XkbServerMap.  Specifies
-                       #         the keyboard components that should _not_ be updated automatically
-                       #         in response to core protocol keyboard mapping requests.
-                       #                
-
-const 
-  XkbExplicitKeyTypesMask* = 0x0000000F
-  XkbExplicitKeyType1Mask* = 1 shl 0
-  XkbExplicitKeyType2Mask* = 1 shl 1
-  XkbExplicitKeyType3Mask* = 1 shl 2
-  XkbExplicitKeyType4Mask* = 1 shl 3
-  XkbExplicitInterpretMask* = 1 shl 4
-  XkbExplicitAutoRepeatMask* = 1 shl 5
-  XkbExplicitBehaviorMask* = 1 shl 6
-  XkbExplicitVModMapMask* = 1 shl 7
-  XkbAllExplicitMask* = 0x000000FF #
-                                   #      Symbol interpretations flags:
-                                   #       - Used in the flags field of a symbol interpretation
-                                   #                
-
-const 
-  XkbSI_AutoRepeat* = 1 shl 0
-  XkbSI_LockingKey* = 1 shl 1 #
-                              #      Symbol interpretations match specification:
-                              #       - Used in the match field of a symbol interpretation to specify
-                              #         the conditions under which an interpretation is used.
-                              #                
-
-const 
-  XkbSI_LevelOneOnly* = 0x00000080
-  XkbSI_OpMask* = 0x0000007F
-  XkbSI_NoneOf* = 0
-  XkbSI_AnyOfOrNone* = 1
-  XkbSI_AnyOf* = 2
-  XkbSI_AllOf* = 3
-  XkbSI_Exactly* = 4 #
-                     #      Indicator map flags:
-                     #       - Used in the flags field of an indicator map to indicate the
-                     #         conditions under which and indicator can be changed and the
-                     #         effects of changing the indicator.
-                     #                
-
-const 
-  XkbIM_NoExplicit* = int(1) shl 7
-  XkbIM_NoAutomatic* = int(1) shl 6
-  XkbIM_LEDDrivesKB* = int(1) shl 5 #
-                                    #      Indicator map component specifications:
-                                    #       - Used by the 'which_groups' and 'which_mods' fields of an indicator
-                                    #         map to specify which keyboard components should be used to drive
-                                    #         the indicator.
-                                    #                
-
-const 
-  XkbIM_UseBase* = int(1) shl 0
-  XkbIM_UseLatched* = int(1) shl 1
-  XkbIM_UseLocked* = int(1) shl 2
-  XkbIM_UseEffective* = int(1) shl 3
-  XkbIM_UseCompat* = int(1) shl 4
-  XkbIM_UseNone* = 0
-  XkbIM_UseAnyGroup* = XkbIM_UseBase or XkbIM_UseLatched or XkbIM_UseLocked or
-      XkbIM_UseEffective
-  XkbIM_UseAnyMods* = XkbIM_UseAnyGroup or XkbIM_UseCompat #
-                                                           #      GetByName components:
-                                                           #       - Specifies desired or necessary components to GetKbdByName request.
-                                                           #       - Reports the components that were found in a GetKbdByNameReply
-                                                           #                
-
-const 
-  XkbGBN_TypesMask* = int(1) shl 0
-  XkbGBN_CompatMapMask* = int(1) shl 1
-  XkbGBN_ClientSymbolsMask* = int(1) shl 2
-  XkbGBN_ServerSymbolsMask* = int(1) shl 3
-  XkbGBN_SymbolsMask* = XkbGBN_ClientSymbolsMask or XkbGBN_ServerSymbolsMask
-  XkbGBN_IndicatorMapMask* = int(1) shl 4
-  XkbGBN_KeyNamesMask* = int(1) shl 5
-  XkbGBN_GeometryMask* = int(1) shl 6
-  XkbGBN_OtherNamesMask* = int(1) shl 7
-  XkbGBN_AllComponentsMask* = 0x000000FF #
-                                         #       ListComponents flags
-                                         #                        
-
-const 
-  XkbLC_Hidden* = int(1) shl 0
-  XkbLC_Default* = int(1) shl 1
-  XkbLC_Partial* = int(1) shl 2
-  XkbLC_AlphanumericKeys* = int(1) shl 8
-  XkbLC_ModifierKeys* = int(1) shl 9
-  XkbLC_KeypadKeys* = int(1) shl 10
-  XkbLC_FunctionKeys* = int(1) shl 11
-  XkbLC_AlternateGroup* = int(1) shl 12 #
-                                        #      X Input Extension Interactions
-                                        #      - Specifies the possible interactions between XKB and the X input
-                                        #        extension
-                                        #      - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo)
-                                        #        XKB information about an extension device.
-                                        #      - Reports the list of supported optional features in the reply to
-                                        #        XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event.
-                                        #      XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify
-                                        #      events to indicate an attempt to use an unsupported feature.
-                                        #                
-
-const 
-  XkbXI_KeyboardsMask* = int(1) shl 0
-  XkbXI_ButtonActionsMask* = int(1) shl 1
-  XkbXI_IndicatorNamesMask* = int(1) shl 2
-  XkbXI_IndicatorMapsMask* = int(1) shl 3
-  XkbXI_IndicatorStateMask* = int(1) shl 4
-  XkbXI_UnsupportedFeatureMask* = int(1) shl 15
-  XkbXI_AllFeaturesMask* = 0x0000001F
-  XkbXI_AllDeviceFeaturesMask* = 0x0000001E
-  XkbXI_IndicatorsMask* = 0x0000001C
-  XkbAllExtensionDeviceEventsMask* = 0x0000801F #
-                                                #      Per-Client Flags:
-                                                #       - Specifies flags to be changed by the PerClientFlags request.
-                                                #                
-
-const 
-  XkbPCF_DetectableAutoRepeatMask* = int(1) shl 0
-  XkbPCF_GrabsUseXKBStateMask* = int(1) shl 1
-  XkbPCF_AutoResetControlsMask* = int(1) shl 2
-  XkbPCF_LookupStateWhenGrabbed* = int(1) shl 3
-  XkbPCF_SendEventUsesXKBState* = int(1) shl 4
-  XkbPCF_AllFlagsMask* = 0x0000001F #
-                                    #      Debugging flags and controls
-                                    #                
-
-const 
-  XkbDF_DisableLocks* = 1 shl 0
-
-type 
-  PXkbPropertyPtr* = ptr TXkbPropertyRec
-  TXkbPropertyRec*{.final.} = object 
-    name*: cstring
-    value*: cstring
-
-
-type 
-  PXkbColorPtr* = ptr TXkbColorRec
-  TXkbColorRec*{.final.} = object 
-    pixel*: int16
-    spec*: cstring
-
-
-type 
-  PXkbPointPtr* = ptr TXkbPointRec
-  TXkbPointRec*{.final.} = object 
-    x*: int16
-    y*: int16
-
-
-type 
-  PXkbBoundsPtr* = ptr TXkbBoundsRec
-  TXkbBoundsRec*{.final.} = object 
-    x1*: int16
-    y1*: int16
-    x2*: int16
-    y2*: int16
-
-
-proc XkbBoundsWidth*(b: PXkbBoundsPtr): int16
-proc XkbBoundsHeight*(b: PXkbBoundsPtr): int16
-type 
-  PXkbOutlinePtr* = ptr TXkbOutlineRec
-  TXkbOutlineRec*{.final.} = object 
-    num_points*: int16
-    sz_points*: int16
-    corner_radius*: int16
-    points*: PXkbPointPtr
-
-
-type 
-  PXkbShapePtr* = ptr TXkbShapeRec
-  TXkbShapeRec*{.final.} = object 
-    name*: TAtom
-    num_outlines*: int16
-    sz_outlines*: int16
-    outlines*: ptr array [0..0xffff, TXkbOutlineRec]
-    approx*: ptr array[0..0xffff, TXkbOutlineRec]
-    primary*: ptr array[0..0xffff, TXkbOutlineRec]
-    bounds*: TXkbBoundsRec
-
-
-proc XkbOutlineIndex*(s: PXkbShapePtr, o: PXkbOutlinePtr): int32
-type 
-  PXkbShapeDoodadPtr* = ptr TXkbShapeDoodadRec
-  TXkbShapeDoodadRec*{.final.} = object 
-    name*: TAtom
-    theType*: int8
-    priority*: int8
-    top*: int16
-    left*: int16
-    angle*: int16
-    color_ndx*: int16
-    shape_ndx*: int16
-
-
-type 
-  PXkbTextDoodadPtr* = ptr TXkbTextDoodadRec
-  TXkbTextDoodadRec*{.final.} = object 
-    name*: TAtom
-    theType*: int8
-    priority*: int8
-    top*: int16
-    left*: int16
-    angle*: int16
-    width*: int16
-    height*: int16
-    color_ndx*: int16
-    text*: cstring
-    font*: cstring
-
-
-type 
-  PXkbIndicatorDoodadPtr* = ptr TXkbIndicatorDoodadRec
-  TXkbIndicatorDoodadRec*{.final.} = object 
-    name*: TAtom
-    theType*: int8
-    priority*: int8
-    top*: int16
-    left*: int16
-    angle*: int16
-    shape_ndx*: int16
-    on_color_ndx*: int16
-    off_color_ndx*: int16
-
-
-type 
-  PXkbLogoDoodadPtr* = ptr TXkbLogoDoodadRec
-  TXkbLogoDoodadRec*{.final.} = object 
-    name*: TAtom
-    theType*: int8
-    priority*: int8
-    top*: int16
-    left*: int16
-    angle*: int16
-    color_ndx*: int16
-    shape_ndx*: int16
-    logo_name*: cstring
-
-
-type 
-  PXkbAnyDoodadPtr* = ptr TXkbAnyDoodadRec
-  TXkbAnyDoodadRec*{.final.} = object 
-    name*: TAtom
-    theType*: int8
-    priority*: int8
-    top*: int16
-    left*: int16
-    angle*: int16
-
-
-type 
-  PXkbDoodadPtr* = ptr TXkbDoodadRec
-  TXkbDoodadRec*{.final.} = object 
-    any*: TXkbAnyDoodadRec
-    shape*: TXkbShapeDoodadRec
-    text*: TXkbTextDoodadRec
-    indicator*: TXkbIndicatorDoodadRec
-    logo*: TXkbLogoDoodadRec
-
-
-const 
-  XkbUnknownDoodad* = 0
-  XkbOutlineDoodad* = 1
-  XkbSolidDoodad* = 2
-  XkbTextDoodad* = 3
-  XkbIndicatorDoodad* = 4
-  XkbLogoDoodad* = 5
-
-type 
-  PXkbKeyPtr* = ptr TXkbKeyRec
-  TXkbKeyRec*{.final.} = object 
-    name*: TXkbKeyNameRec
-    gap*: int16
-    shape_ndx*: int8
-    color_ndx*: int8
-
-
-type 
-  PXkbRowPtr* = ptr TXkbRowRec
-  TXkbRowRec*{.final.} = object 
-    top*: int16
-    left*: int16
-    num_keys*: int16
-    sz_keys*: int16
-    vertical*: int16
-    Keys*: PXkbKeyPtr
-    bounds*: TXkbBoundsRec
-
-
-type 
-  PXkbOverlayPtr* = ptr TXkbOverlayRec #forward for TXkbSectionRec use.
-                                       #Do not add more "type"
-  PXkbSectionPtr* = ptr TXkbSectionRec
-  TXkbSectionRec*{.final.} = object  #Do not add more "type"
-    name*: TAtom
-    priority*: int8
-    top*: int16
-    left*: int16
-    width*: int16
-    height*: int16
-    angle*: int16
-    num_rows*: int16
-    num_doodads*: int16
-    num_overlays*: int16
-    rows*: PXkbRowPtr
-    doodads*: PXkbDoodadPtr
-    bounds*: TXkbBoundsRec
-    overlays*: PXkbOverlayPtr
-
-  PXkbOverlayKeyPtr* = ptr TXkbOverlayKeyRec
-  TXkbOverlayKeyRec*{.final.} = object  #Do not add more "type"
-    over*: TXkbKeyNameRec
-    under*: TXkbKeyNameRec
-
-  PXkbOverlayRowPtr* = ptr TXkbOverlayRowRec
-  TXkbOverlayRowRec*{.final.} = object  #Do not add more "type"
-    row_under*: int16
-    num_keys*: int16
-    sz_keys*: int16
-    keys*: PXkbOverlayKeyPtr
-
-  TXkbOverlayRec*{.final.} = object 
-    name*: TAtom
-    section_under*: PXkbSectionPtr
-    num_rows*: int16
-    sz_rows*: int16
-    rows*: PXkbOverlayRowPtr
-    bounds*: PXkbBoundsPtr
-
-
-type 
-  PXkbGeometryRec* = ptr TXkbGeometryRec
-  PXkbGeometryPtr* = PXkbGeometryRec
-  TXkbGeometryRec*{.final.} = object 
-    name*: TAtom
-    width_mm*: int16
-    height_mm*: int16
-    label_font*: cstring
-    label_color*: PXkbColorPtr
-    base_color*: PXkbColorPtr
-    sz_properties*: int16
-    sz_colors*: int16
-    sz_shapes*: int16
-    sz_sections*: int16
-    sz_doodads*: int16
-    sz_key_aliases*: int16
-    num_properties*: int16
-    num_colors*: int16
-    num_shapes*: int16
-    num_sections*: int16
-    num_doodads*: int16
-    num_key_aliases*: int16
-    properties*: ptr array[0..0xffff, TXkbPropertyRec]
-    colors*: ptr array[0..0xffff, TXkbColorRec]
-    shapes*: ptr array[0..0xffff, TXkbShapeRec]
-    sections*: ptr array[0..0xffff, TXkbSectionRec]
-    key_aliases*: ptr array[0..0xffff, TXkbKeyAliasRec]
-
-
-const 
-  XkbGeomPropertiesMask* = 1 shl 0
-  XkbGeomColorsMask* = 1 shl 1
-  XkbGeomShapesMask* = 1 shl 2
-  XkbGeomSectionsMask* = 1 shl 3
-  XkbGeomDoodadsMask* = 1 shl 4
-  XkbGeomKeyAliasesMask* = 1 shl 5
-  XkbGeomAllMask* = 0x0000003F
-
-type 
-  PXkbGeometrySizesPtr* = ptr TXkbGeometrySizesRec
-  TXkbGeometrySizesRec*{.final.} = object  #
-                                           #          Tie it all together into one big keyboard description
-                                           #        
-    which*: int16
-    num_properties*: int16
-    num_colors*: int16
-    num_shapes*: int16
-    num_sections*: int16
-    num_doodads*: int16
-    num_key_aliases*: int16
-
-
-type 
-  PXkbDescPtr* = ptr TXkbDescRec
-  TXkbDescRec*{.final.} = object 
-    dpy*: PDisplay
-    flags*: int16
-    device_spec*: int16
-    min_key_code*: TKeyCode
-    max_key_code*: TKeyCode
-    ctrls*: PXkbControlsPtr
-    server*: PXkbServerMapPtr
-    map*: PXkbClientMapPtr
-    indicators*: PXkbIndicatorPtr
-    names*: PXkbNamesPtr
-    compat*: PXkbCompatMapPtr
-    geom*: PXkbGeometryPtr
-
-
-proc XkbKeyKeyTypeIndex*(d: PXkbDescPtr, k: int16, g: int8): int8
-proc XkbKeyKeyType*(d: PXkbDescPtr, k: int16, g: int8): PXkbKeyTypePtr
-proc XkbKeyGroupWidth*(d: PXkbDescPtr, k: int16, g: int8): int8
-proc XkbKeyGroupsWidth*(d: PXkbDescPtr, k: int16): int8
-proc XkbKeyGroupInfo*(d: PXkbDescPtr, k: int16): int8
-proc XkbKeyNumGroups*(d: PXkbDescPtr, k: int16): int8
-proc XkbKeyNumSyms*(d: PXkbDescPtr, k: int16): int16
-proc XkbKeySym*(d: PXkbDescPtr, k: int16, n: int16): TKeySym
-proc XkbKeySymEntry*(d: PXkbDescPtr, k: int16, sl: int16, g: int8): TKeySym
-proc XkbKeyAction*(d: PXkbDescPtr, k: int16, n: int16): PXkbAction
-proc XkbKeyActionEntry*(d: PXkbDescPtr, k: int16, sl: int16, g: int8): int8
-proc XkbKeyHasActions*(d: PXkbDescPtr, k: int16): bool
-proc XkbKeyNumActions*(d: PXkbDescPtr, k: int16): int16
-proc XkbKeyActionsPtr*(d: PXkbDescPtr, k: int16): PXkbAction
-proc XkbKeycodeInRange*(d: PXkbDescPtr, k: int16): bool
-proc XkbNumKeys*(d: PXkbDescPtr): int8
-  #
-  #          The following structures can be used to track changes
-  #          to a keyboard device
-  #        
-type 
-  PXkbMapChangesPtr* = ptr TXkbMapChangesRec
-  TXkbMapChangesRec*{.final.} = object 
-    changed*: int16
-    min_key_code*: TKeyCode
-    max_key_code*: TKeyCode
-    first_type*: int8
-    num_types*: int8
-    first_key_sym*: TKeyCode
-    num_key_syms*: int8
-    first_key_act*: TKeyCode
-    num_key_acts*: int8
-    first_key_behavior*: TKeyCode
-    num_key_behaviors*: int8
-    first_key_explicit*: TKeyCode
-    num_key_explicit*: int8
-    first_modmap_key*: TKeyCode
-    num_modmap_keys*: int8
-    first_vmodmap_key*: TKeyCode
-    num_vmodmap_keys*: int8
-    pad*: int8
-    vmods*: int16
-
-
-type 
-  PXkbControlsChangesPtr* = ptr TXkbControlsChangesRec
-  TXkbControlsChangesRec*{.final.} = object 
-    changed_ctrls*: int16
-    enabled_ctrls_changes*: int16
-    num_groups_changed*: bool
-
-
-type 
-  PXkbIndicatorChangesPtr* = ptr TXkbIndicatorChangesRec
-  TXkbIndicatorChangesRec*{.final.} = object 
-    state_changes*: int16
-    map_changes*: int16
-
-
-type 
-  PXkbNameChangesPtr* = ptr TXkbNameChangesRec
-  TXkbNameChangesRec*{.final.} = object 
-    changed*: int16
-    first_type*: int8
-    num_types*: int8
-    first_lvl*: int8
-    num_lvls*: int8
-    num_aliases*: int8
-    num_rg*: int8
-    first_key*: int8
-    num_keys*: int8
-    changed_vmods*: int16
-    changed_indicators*: int32
-    changed_groups*: int8
-
-
-type 
-  PXkbCompatChangesPtr* = ptr TXkbCompatChangesRec
-  TXkbCompatChangesRec*{.final.} = object 
-    changed_groups*: int8
-    first_si*: int16
-    num_si*: int16
-
-
-type 
-  PXkbChangesPtr* = ptr TXkbChangesRec
-  TXkbChangesRec*{.final.} = object  #
-                                     #          These data structures are used to construct a keymap from
-                                     #          a set of components or to list components in the server
-                                     #          database.
-                                     #        
-    device_spec*: int16
-    state_changes*: int16
-    map*: TXkbMapChangesRec
-    ctrls*: TXkbControlsChangesRec
-    indicators*: TXkbIndicatorChangesRec
-    names*: TXkbNameChangesRec
-    compat*: TXkbCompatChangesRec
-
-
-type 
-  PXkbComponentNamesPtr* = ptr TXkbComponentNamesRec
-  TXkbComponentNamesRec*{.final.} = object 
-    keymap*: ptr int16
-    keycodes*: ptr int16
-    types*: ptr int16
-    compat*: ptr int16
-    symbols*: ptr int16
-    geometry*: ptr int16
-
-
-type 
-  PXkbComponentNamePtr* = ptr TXkbComponentNameRec
-  TXkbComponentNameRec*{.final.} = object 
-    flags*: int16
-    name*: cstring
-
-
-type 
-  PXkbComponentListPtr* = ptr TXkbComponentListRec
-  TXkbComponentListRec*{.final.} = object  #
-                                           #          The following data structures describe and track changes to a
-                                           #          non-keyboard extension device
-                                           #        
-    num_keymaps*: int16
-    num_keycodes*: int16
-    num_types*: int16
-    num_compat*: int16
-    num_symbols*: int16
-    num_geometry*: int16
-    keymaps*: PXkbComponentNamePtr
-    keycodes*: PXkbComponentNamePtr
-    types*: PXkbComponentNamePtr
-    compat*: PXkbComponentNamePtr
-    symbols*: PXkbComponentNamePtr
-    geometry*: PXkbComponentNamePtr
-
-
-type 
-  PXkbDeviceLedInfoPtr* = ptr TXkbDeviceLedInfoRec
-  TXkbDeviceLedInfoRec*{.final.} = object 
-    led_class*: int16
-    led_id*: int16
-    phys_indicators*: int16
-    maps_present*: int16
-    names_present*: int16
-    state*: int16
-    names*: array[0..XkbNumIndicators - 1, TAtom]
-    maps*: array[0..XkbNumIndicators - 1, TXkbIndicatorMapRec]
-
-
-type 
-  PXkbDeviceInfoPtr* = ptr TXkbDeviceInfoRec
-  TXkbDeviceInfoRec*{.final.} = object 
-    name*: cstring
-    theType*: TAtom
-    device_spec*: int16
-    has_own_state*: bool
-    supported*: int16
-    unsupported*: int16
-    num_btns*: int16
-    btn_acts*: PXkbAction
-    sz_leds*: int16
-    num_leds*: int16
-    dflt_kbd_fb*: int16
-    dflt_led_fb*: int16
-    leds*: PXkbDeviceLedInfoPtr
-
-
-proc XkbXI_DevHasBtnActs*(d: PXkbDeviceInfoPtr): bool
-proc XkbXI_LegalDevBtn*(d: PXkbDeviceInfoPtr, b: int16): bool
-proc XkbXI_DevHasLeds*(d: PXkbDeviceInfoPtr): bool
-type 
-  PXkbDeviceLedChangesPtr* = ptr TXkbDeviceLedChangesRec
-  TXkbDeviceLedChangesRec*{.final.} = object 
-    led_class*: int16
-    led_id*: int16
-    defined*: int16           #names or maps changed
-    next*: PXkbDeviceLedChangesPtr
-
-
-type 
-  PXkbDeviceChangesPtr* = ptr TXkbDeviceChangesRec
-  TXkbDeviceChangesRec*{.final.} = object 
-    changed*: int16
-    first_btn*: int16
-    num_btns*: int16
-    leds*: TXkbDeviceLedChangesRec
-
-
-proc XkbShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbColorPtr
-proc XkbShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbShapePtr
-proc XkbSetShapeDoodadColor*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, 
-                             c: PXkbColorPtr)
-proc XkbSetShapeDoodadShape*(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, 
-                             s: PXkbShapePtr)
-proc XkbTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr): PXkbColorPtr
-proc XkbSetTextDoodadColor*(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr, 
-                            c: PXkbColorPtr)
-proc XkbIndicatorDoodadShape*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbShapeDoodadPtr
-proc XkbIndicatorDoodadOnColor*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr
-proc XkbIndicatorDoodadOffColor*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr
-proc XkbSetIndicatorDoodadOnColor*(g: PXkbGeometryPtr, 
-                                   d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr)
-proc XkbSetIndicatorDoodadOffColor*(g: PXkbGeometryPtr, 
-                                    d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr)
-proc XkbSetIndicatorDoodadShape*(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, 
-                                 s: PXkbShapeDoodadPtr)
-proc XkbLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbColorPtr
-proc XkbLogoDoodadShape*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbShapeDoodadPtr
-proc XkbSetLogoDoodadColor*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, 
-                            c: PXkbColorPtr)
-proc XkbSetLogoDoodadShape*(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, 
-                            s: PXkbShapeDoodadPtr)
-proc XkbKeyShape*(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbShapeDoodadPtr
-proc XkbKeyColor*(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbColorPtr
-proc XkbSetKeyShape*(g: PXkbGeometryPtr, k: PXkbKeyPtr, s: PXkbShapeDoodadPtr)
-proc XkbSetKeyColor*(g: PXkbGeometryPtr, k: PXkbKeyPtr, c: PXkbColorPtr)
-proc XkbGeomColorIndex*(g: PXkbGeometryPtr, c: PXkbColorPtr): int32
-proc XkbAddGeomProperty*(geom: PXkbGeometryPtr, name: cstring, value: cstring): PXkbPropertyPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomProperty".}
-proc XkbAddGeomKeyAlias*(geom: PXkbGeometryPtr, alias: cstring, float: cstring): PXkbKeyAliasPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomKeyAlias".}
-proc XkbAddGeomColor*(geom: PXkbGeometryPtr, spec: cstring, pixel: int16): PXkbColorPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomColor".}
-proc XkbAddGeomOutline*(shape: PXkbShapePtr, sz_points: int16): PXkbOutlinePtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomOutline".}
-proc XkbAddGeomShape*(geom: PXkbGeometryPtr, name: TAtom, sz_outlines: int16): PXkbShapePtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomShape".}
-proc XkbAddGeomKey*(row: PXkbRowPtr): PXkbKeyPtr{.cdecl, dynlib: libX11, 
-    importc: "XkbAddGeomKey".}
-proc XkbAddGeomRow*(section: PXkbSectionPtr, sz_keys: int16): PXkbRowPtr{.cdecl, 
-    dynlib: libX11, importc: "XkbAddGeomRow".}
-proc XkbAddGeomSection*(geom: PXkbGeometryPtr, name: TAtom, sz_rows: int16, 
-                        sz_doodads: int16, sz_overlays: int16): PXkbSectionPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomSection".}
-proc XkbAddGeomOverlay*(section: PXkbSectionPtr, name: TAtom, sz_rows: int16): PXkbOverlayPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomOverlay".}
-proc XkbAddGeomOverlayRow*(overlay: PXkbOverlayPtr, row_under: int16, 
-                           sz_keys: int16): PXkbOverlayRowPtr{.cdecl, 
-    dynlib: libX11, importc: "XkbAddGeomOverlayRow".}
-proc XkbAddGeomOverlayKey*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr, 
-                           over: cstring, under: cstring): PXkbOverlayKeyPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddGeomOverlayKey".}
-proc XkbAddGeomDoodad*(geom: PXkbGeometryPtr, section: PXkbSectionPtr, 
-                       name: TAtom): PXkbDoodadPtr{.cdecl, dynlib: libX11, 
-    importc: "XkbAddGeomDoodad".}
-proc XkbFreeGeomKeyAliases*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                            freeAll: bool){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeGeomKeyAliases".}
-proc XkbFreeGeomColors*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                        freeAll: bool){.cdecl, dynlib: libX11, 
-                                        importc: "XkbFreeGeomColors".}
-proc XkbFreeGeomDoodads*(doodads: PXkbDoodadPtr, nDoodads: int16, freeAll: bool){.
-    cdecl, dynlib: libX11, importc: "XkbFreeGeomDoodads".}
-proc XkbFreeGeomProperties*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                            freeAll: bool){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeGeomProperties".}
-proc XkbFreeGeomOverlayKeys*(row: PXkbOverlayRowPtr, first: int16, count: int16, 
-                             freeAll: bool){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeGeomOverlayKeys".}
-proc XkbFreeGeomOverlayRows*(overlay: PXkbOverlayPtr, first: int16, 
-                             count: int16, freeAll: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeGeomOverlayRows".}
-proc XkbFreeGeomOverlays*(section: PXkbSectionPtr, first: int16, count: int16, 
-                          freeAll: bool){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeGeomOverlays".}
-proc XkbFreeGeomKeys*(row: PXkbRowPtr, first: int16, count: int16, freeAll: bool){.
-    cdecl, dynlib: libX11, importc: "XkbFreeGeomKeys".}
-proc XkbFreeGeomRows*(section: PXkbSectionPtr, first: int16, count: int16, 
-                      freeAll: bool){.cdecl, dynlib: libX11, 
-                                      importc: "XkbFreeGeomRows".}
-proc XkbFreeGeomSections*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                          freeAll: bool){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeGeomSections".}
-proc XkbFreeGeomPoints*(outline: PXkbOutlinePtr, first: int16, count: int16, 
-                        freeAll: bool){.cdecl, dynlib: libX11, 
-                                        importc: "XkbFreeGeomPoints".}
-proc XkbFreeGeomOutlines*(shape: PXkbShapePtr, first: int16, count: int16, 
-                          freeAll: bool){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeGeomOutlines".}
-proc XkbFreeGeomShapes*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                        freeAll: bool){.cdecl, dynlib: libX11, 
-                                        importc: "XkbFreeGeomShapes".}
-proc XkbFreeGeometry*(geom: PXkbGeometryPtr, which: int16, freeMap: bool){.
-    cdecl, dynlib: libX11, importc: "XkbFreeGeometry".}
-proc XkbAllocGeomProps*(geom: PXkbGeometryPtr, nProps: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomProps".}
-proc XkbAllocGeomKeyAliases*(geom: PXkbGeometryPtr, nAliases: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomKeyAliases".}
-proc XkbAllocGeomColors*(geom: PXkbGeometryPtr, nColors: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomColors".}
-proc XkbAllocGeomShapes*(geom: PXkbGeometryPtr, nShapes: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomShapes".}
-proc XkbAllocGeomSections*(geom: PXkbGeometryPtr, nSections: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomSections".}
-proc XkbAllocGeomOverlays*(section: PXkbSectionPtr, num_needed: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomOverlays".}
-proc XkbAllocGeomOverlayRows*(overlay: PXkbOverlayPtr, num_needed: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomOverlayRows".}
-proc XkbAllocGeomOverlayKeys*(row: PXkbOverlayRowPtr, num_needed: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomOverlayKeys".}
-proc XkbAllocGeomDoodads*(geom: PXkbGeometryPtr, nDoodads: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomDoodads".}
-proc XkbAllocGeomSectionDoodads*(section: PXkbSectionPtr, nDoodads: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeomSectionDoodads".}
-proc XkbAllocGeomOutlines*(shape: PXkbShapePtr, nOL: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomOutlines".}
-proc XkbAllocGeomRows*(section: PXkbSectionPtr, nRows: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomRows".}
-proc XkbAllocGeomPoints*(ol: PXkbOutlinePtr, nPts: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomPoints".}
-proc XkbAllocGeomKeys*(row: PXkbRowPtr, nKeys: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocGeomKeys".}
-proc XkbAllocGeometry*(xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocGeometry".}
-proc XkbSetGeometryProc*(dpy: PDisplay, deviceSpec: int16, geom: PXkbGeometryPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbSetGeometry".}
-proc XkbComputeShapeTop*(shape: PXkbShapePtr, bounds: PXkbBoundsPtr): bool{.
-    cdecl, dynlib: libX11, importc: "XkbComputeShapeTop".}
-proc XkbComputeShapeBounds*(shape: PXkbShapePtr): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbComputeShapeBounds".}
-proc XkbComputeRowBounds*(geom: PXkbGeometryPtr, section: PXkbSectionPtr, 
-                          row: PXkbRowPtr): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbComputeRowBounds".}
-proc XkbComputeSectionBounds*(geom: PXkbGeometryPtr, section: PXkbSectionPtr): bool{.
-    cdecl, dynlib: libX11, importc: "XkbComputeSectionBounds".}
-proc XkbFindOverlayForKey*(geom: PXkbGeometryPtr, wanted: PXkbSectionPtr, 
-                           under: cstring): cstring{.cdecl, dynlib: libX11, 
-    importc: "XkbFindOverlayForKey".}
-proc XkbGetGeometryProc*(dpy: PDisplay, xkb: PXkbDescPtr): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetGeometry".}
-proc XkbGetNamedGeometry*(dpy: PDisplay, xkb: PXkbDescPtr, name: TAtom): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetNamedGeometry".}
-when defined(XKB_IN_SERVER): 
-  proc SrvXkbAddGeomKeyAlias*(geom: PXkbGeometryPtr, alias: cstring, 
-                              float: cstring): PXkbKeyAliasPtr{.cdecl, 
-      dynlib: libX11, importc: "XkbAddGeomKeyAlias".}
-  proc SrvXkbAddGeomColor*(geom: PXkbGeometryPtr, spec: cstring, pixel: int16): PXkbColorPtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomColor".}
-  proc SrvXkbAddGeomDoodad*(geom: PXkbGeometryPtr, section: PXkbSectionPtr, 
-                            name: TAtom): PXkbDoodadPtr{.cdecl, dynlib: libX11, 
-      importc: "XkbAddGeomDoodad".}
-  proc SrvXkbAddGeomKey*(geom: PXkbGeometryPtr, alias: cstring, float: cstring): PXkbKeyAliasPtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomKeyAlias".}
-  proc SrvXkbAddGeomOutline*(shape: PXkbShapePtr, sz_points: int16): PXkbOutlinePtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomOutline".}
-  proc SrvXkbAddGeomOverlay*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr, 
-                             over: cstring, under: cstring): PXkbOverlayKeyPtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomOverlayKey".}
-  proc SrvXkbAddGeomOverlayRow*(overlay: PXkbOverlayPtr, row_under: int16, 
-                                sz_keys: int16): PXkbOverlayRowPtr{.cdecl, 
-      dynlib: libX11, importc: "XkbAddGeomOverlayRow".}
-  proc SrvXkbAddGeomOverlayKey*(overlay: PXkbOverlayPtr, row: PXkbOverlayRowPtr, 
-                                over: cstring, under: cstring): PXkbOverlayKeyPtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomOverlayKey".}
-  proc SrvXkbAddGeomProperty*(geom: PXkbGeometryPtr, name: cstring, 
-                              value: cstring): PXkbPropertyPtr{.cdecl, 
-      dynlib: libX11, importc: "XkbAddGeomProperty".}
-  proc SrvXkbAddGeomRow*(section: PXkbSectionPtr, sz_keys: int16): PXkbRowPtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomRow".}
-  proc SrvXkbAddGeomSection*(geom: PXkbGeometryPtr, name: TAtom, sz_rows: int16, 
-                             sz_doodads: int16, sz_overlays: int16): PXkbSectionPtr{.
-      cdecl, dynlib: libX11, importc: "XkbAddGeomSection".}
-  proc SrvXkbAddGeomShape*(geom: PXkbGeometryPtr, name: TAtom, 
-                           sz_outlines: int16): PXkbShapePtr{.cdecl, 
-      dynlib: libX11, importc: "XkbAddGeomShape".}
-  proc SrvXkbAllocGeomKeyAliases*(geom: PXkbGeometryPtr, nAliases: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomKeyAliases".}
-  proc SrvXkbAllocGeomColors*(geom: PXkbGeometryPtr, nColors: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomColors".}
-  proc SrvXkbAllocGeomDoodads*(geom: PXkbGeometryPtr, nDoodads: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomDoodads".}
-  proc SrvXkbAllocGeomKeys*(row: PXkbRowPtr, nKeys: int16): TStatus{.cdecl, 
-      dynlib: libX11, importc: "XkbAllocGeomKeys".}
-  proc SrvXkbAllocGeomOutlines*(shape: PXkbShapePtr, nOL: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomOutlines".}
-  proc SrvXkbAllocGeomPoints*(ol: PXkbOutlinePtr, nPts: int16): TStatus{.cdecl, 
-      dynlib: libX11, importc: "XkbAllocGeomPoints".}
-  proc SrvXkbAllocGeomProps*(geom: PXkbGeometryPtr, nProps: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomProps".}
-  proc SrvXkbAllocGeomRows*(section: PXkbSectionPtr, nRows: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomRows".}
-  proc SrvXkbAllocGeomSectionDoodads*(section: PXkbSectionPtr, nDoodads: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomSectionDoodads".}
-  proc SrvXkbAllocGeomSections*(geom: PXkbGeometryPtr, nSections: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomSections".}
-  proc SrvXkbAllocGeomOverlays*(section: PXkbSectionPtr, num_needed: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomOverlays".}
-  proc SrvXkbAllocGeomOverlayRows*(overlay: PXkbOverlayPtr, num_needed: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomOverlayRows".}
-  proc SrvXkbAllocGeomOverlayKeys*(row: PXkbOverlayRowPtr, num_needed: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomOverlayKeys".}
-  proc SrvXkbAllocGeomShapes*(geom: PXkbGeometryPtr, nShapes: int16): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeomShapes".}
-  proc SrvXkbAllocGeometry*(xkb: PXkbDescPtr, sizes: PXkbGeometrySizesPtr): TStatus{.
-      cdecl, dynlib: libX11, importc: "XkbAllocGeometry".}
-  proc SrvXkbFreeGeomKeyAliases*(geom: PXkbGeometryPtr, first: int16, 
-                                 count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomKeyAliases".}
-  proc SrvXkbFreeGeomColors*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                             freeAll: bool){.cdecl, dynlib: libX11, 
-      importc: "XkbFreeGeomColors".}
-  proc SrvXkbFreeGeomDoodads*(doodads: PXkbDoodadPtr, nDoodads: int16, 
-                              freeAll: bool){.cdecl, dynlib: libX11, 
-      importc: "XkbFreeGeomDoodads".}
-  proc SrvXkbFreeGeomProperties*(geom: PXkbGeometryPtr, first: int16, 
-                                 count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomProperties".}
-  proc SrvXkbFreeGeomOverlayKeys*(row: PXkbOverlayRowPtr, first: int16, 
-                                  count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomOverlayKeys".}
-  proc SrvXkbFreeGeomOverlayRows*(overlay: PXkbOverlayPtr, first: int16, 
-                                  count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomOverlayRows".}
-  proc SrvXkbFreeGeomOverlays*(section: PXkbSectionPtr, first: int16, 
-                               count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomOverlays".}
-  proc SrvXkbFreeGeomKeys*(row: PXkbRowPtr, first: int16, count: int16, 
-                           freeAll: bool){.cdecl, dynlib: libX11, 
-      importc: "XkbFreeGeomKeys".}
-  proc SrvXkbFreeGeomRows*(section: PXkbSectionPtr, first: int16, count: int16, 
-                           freeAll: bool){.cdecl, dynlib: libX11, 
-      importc: "XkbFreeGeomRows".}
-  proc SrvXkbFreeGeomSections*(geom: PXkbGeometryPtr, first: int16, 
-                               count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomSections".}
-  proc SrvXkbFreeGeomPoints*(outline: PXkbOutlinePtr, first: int16, 
-                             count: int16, freeAll: bool){.cdecl, 
-      dynlib: libX11, importc: "XkbFreeGeomPoints".}
-  proc SrvXkbFreeGeomOutlines*(shape: PXkbShapePtr, first: int16, count: int16, 
-                               freeAll: bool){.cdecl, dynlib: libX11, 
-      importc: "XkbFreeGeomOutlines".}
-  proc SrvXkbFreeGeomShapes*(geom: PXkbGeometryPtr, first: int16, count: int16, 
-                             freeAll: bool){.cdecl, dynlib: libX11, 
-      importc: "XkbFreeGeomShapes".}
-  proc SrvXkbFreeGeometry*(geom: PXkbGeometryPtr, which: int16, freeMap: bool){.
-      cdecl, dynlib: libX11, importc: "XkbFreeGeometry".}
-# implementation
-
-import                        #************************************ xkb ************************************
-  xi
-
-proc XkbLegalXILedClass(c: int): bool = 
-  ##define XkbLegalXILedClass(c) (((c)==KbdFeedbackClass)||((c)==LedFeedbackClass)||
-  #                                ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))
-  Result = (c == KbdFeedbackClass) or (c == LedFeedbackClass) or
-      (c == XkbDfltXIClass) or (c == XkbAllXIClasses)
-
-proc XkbLegalXIBellClass(c: int): bool = 
-  ##define XkbLegalXIBellClass(c) (((c)==KbdFeedbackClass)||((c)==BellFeedbackClass)||
-  #                                 ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))
-  Result = (c == KbdFeedbackClass) or (c == BellFeedbackClass) or
-      (c == XkbDfltXIClass) or (c == XkbAllXIClasses)
-
-proc XkbExplicitXIDevice(c: int): bool = 
-  ##define XkbExplicitXIDevice(c) (((c)&(~0xff))==0)
-  Result = (c and (not 0x000000FF)) == 0
-
-proc XkbExplicitXIClass(c: int): bool = 
-  ##define XkbExplicitXIClass(c) (((c)&(~0xff))==0)
-  Result = (c and (not 0x000000FF)) == 0
-
-proc XkbExplicitXIId(c: int): bool = 
-  ##define XkbExplicitXIId(c) (((c)&(~0xff))==0)
-  Result = (c and (not 0x000000FF)) == 0
-
-proc XkbSingleXIClass(c: int): bool = 
-  ##define XkbSingleXIClass(c) ((((c)&(~0xff))==0)||((c)==XkbDfltXIClass))
-  Result = ((c and (not 0x000000FF)) == 0) or (c == XkbDfltXIClass)
-
-proc XkbSingleXIId(c: int): bool = 
-  ##define XkbSingleXIId(c) ((((c)&(~0xff))==0)||((c)==XkbDfltXIId))
-  Result = ((c and (not 0x000000FF)) == 0) or (c == XkbDfltXIId)
-
-proc XkbBuildCoreState(m, g: int): int = 
-  ##define XkbBuildCoreState(m,g) ((((g)&0x3)<<13)|((m)&0xff))
-  Result = ((g and 0x00000003) shl 13) or (m and 0x000000FF)
-
-proc XkbGroupForCoreState(s: int): int = 
-  ##define XkbGroupForCoreState(s) (((s)>>13)&0x3)
-  Result = (s shr 13) and 0x00000003
-
-proc XkbIsLegalGroup(g: int): bool = 
-  ##define XkbIsLegalGroup(g) (((g)>=0)&&((g)<XkbNumKbdGroups))
-  Result = (g >= 0) and (g < XkbNumKbdGroups)
-
-proc XkbSA_ValOp(a: int): int = 
-  ##define XkbSA_ValOp(a) ((a)&XkbSA_ValOpMask)
-  Result = a and XkbSA_ValOpMask
-
-proc XkbSA_ValScale(a: int): int = 
-  ##define XkbSA_ValScale(a) ((a)&XkbSA_ValScaleMask)
-  Result = a and XkbSA_ValScaleMask
-
-proc XkbIsModAction(a: PXkbAnyAction): bool = 
-  ##define XkbIsModAction(a) (((a)->type>=Xkb_SASetMods)&&((a)->type<=XkbSA_LockMods))
-  Result = (ze(a.theType) >= XkbSA_SetMods) and (ze(a.theType) <= XkbSA_LockMods)
-
-proc XkbIsGroupAction(a: PXkbAnyAction): bool = 
-  ##define XkbIsGroupAction(a) (((a)->type>=XkbSA_SetGroup)&&((a)->type<=XkbSA_LockGroup))
-  Result = (ze(a.theType) >= XkbSA_SetGroup) or (ze(a.theType) <= XkbSA_LockGroup)
-
-proc XkbIsPtrAction(a: PXkbAnyAction): bool = 
-  ##define XkbIsPtrAction(a) (((a)->type>=XkbSA_MovePtr)&&((a)->type<=XkbSA_SetPtrDflt))
-  Result = (ze(a.theType) >= XkbSA_MovePtr) and
-      (ze(a.theType) <= XkbSA_SetPtrDflt)
-
-proc XkbIsLegalKeycode(k: int): bool = 
-  ##define        XkbIsLegalKeycode(k)    (((k)>=XkbMinLegalKeyCode)&&((k)<=XkbMaxLegalKeyCode))
-  Result = (k >= XkbMinLegalKeyCode) and (k <= XkbMaxLegalKeyCode)
-
-proc XkbShiftLevel(n: int8): int8 = 
-  ##define XkbShiftLevel(n) ((n)-1)
-  Result = n - 1'i8
-
-proc XkbShiftLevelMask(n: int8): int8 = 
-  ##define XkbShiftLevelMask(n) (1<<((n)-1))
-  Result = 1'i8 shl (n - 1'i8)
-
-proc XkbCharToInt(v: int8): int16 = 
-  ##define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
-  if ((v and 0x80'i8) != 0'i8): Result = v or (not 0xFF'i16)
-  else: Result = int16(v and 0x7F'i8)
-  
-proc XkbIntTo2Chars(i: int16, h, L: var int8) = 
-  ##define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
-  h = toU8((i shr 8'i16) and 0x00FF'i16)
-  L = toU8(i and 0xFF'i16)
-
-proc Xkb2CharsToInt(h, L: int8): int16 = 
-  when defined(cpu64): 
-    ##define Xkb2CharsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)): (int)(((h)<<8)|(l)&0x7fff))
-    if (h and 0x80'i8) != 0'i8: 
-      Result = toU16((ze(h) shl 8) or ze(L) or not 0x0000FFFF)
-    else: 
-      Result = toU16((ze(h) shl 8) or ze(L) and 0x00007FFF)
-  else: 
-    ##define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l)))
-    Result = toU16(ze(h) shl 8 or ze(L))
-
-proc XkbModLocks(s: PXkbStatePtr): int8 = 
-  ##define XkbModLocks(s) ((s)->locked_mods)
-  Result = s.locked_mods
-
-proc XkbStateMods(s: PXkbStatePtr): int16 = 
-  ##define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))
-  Result = s.base_mods or s.latched_mods or XkbModLocks(s)
-
-proc XkbGroupLock(s: PXkbStatePtr): int8 = 
-  ##define XkbGroupLock(s) ((s)->locked_group)
-  Result = s.locked_group
-
-proc XkbStateGroup(s: PXkbStatePtr): int16 = 
-  ##define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))
-  Result = S.base_group + (s.latched_group) + XkbGroupLock(s)
-
-proc XkbStateFieldFromRec(s: PXkbStatePtr): int = 
-  ##define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)
-  Result = XkbBuildCoreState(s.lookup_mods, s.group)
-
-proc XkbGrabStateFromRec(s: PXkbStatePtr): int = 
-  ##define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)
-  Result = XkbBuildCoreState(s.grab_mods, s.group)
-
-proc XkbNumGroups(g: int16): int16 = 
-  ##define XkbNumGroups(g) ((g)&0x0f)
-  Result = g and 0x0000000F'i16
-
-proc XkbOutOfRangeGroupInfo(g: int16): int16 = 
-  ##define XkbOutOfRangeGroupInfo(g) ((g)&0xf0)
-  Result = g and 0x000000F0'i16
-
-proc XkbOutOfRangeGroupAction(g: int16): int16 = 
-  ##define XkbOutOfRangeGroupAction(g) ((g)&0xc0)
-  Result = g and 0x000000C0'i16
-
-proc XkbOutOfRangeGroupNumber(g: int16): int16 = 
-  ##define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4)
-  Result = (g and 0x00000030'i16) shr 4'i16
-
-proc XkbSetGroupInfo(g, w, n: int16): int16 = 
-  ##define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
-  Result = (w and 0x000000C0'i16) or 
-    ((n and 3'i16) shl 4'i16) or (g and 0x0000000F'i16)
-
-proc XkbSetNumGroups(g, n: int16): int16 = 
-  ##define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))
-  Result = (g and 0x000000F0'i16) or (n and 0x0000000F'i16)
-
-proc XkbModActionVMods(a: PXkbModAction): int16 = 
-  ##define XkbModActionVMods(a) ((short)(((a)->vmods1<<8)|((a)->vmods2)))
-  Result = toU16((ze(a.vmods1) shl 8) or ze(a.vmods2))
-
-proc XkbSetModActionVMods(a: PXkbModAction, v: int8) = 
-  ##define XkbSetModActionVMods(a,v) (((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))
-  a.vmods1 = toU8((ze(v) shr 8) and 0x000000FF)
-  a.vmods2 = toU8(ze(v) and 0x000000FF)
-
-proc XkbSAGroup(a: PXkbGroupAction): int8 = 
-  ##define XkbSAGroup(a) (XkbCharToInt((a)->group_XXX))
-  Result = int8(XkbCharToInt(a.group_XXX))
-
-proc XkbSASetGroupProc(a: PXkbGroupAction, g: int8) = 
-  ##define XkbSASetGroup(a,g) ((a)->group_XXX=(g))
-  a.group_XXX = g
-
-proc XkbPtrActionX(a: PXkbPtrAction): int16 = 
-  ##define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))
-  Result = int16(Xkb2CharsToInt(a.high_XXX, a.low_XXX))
-
-proc XkbPtrActionY(a: PXkbPtrAction): int16 = 
-  ##define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))
-  Result = int16(Xkb2CharsToInt(a.high_YYY, a.low_YYY))
-
-proc XkbSetPtrActionX(a: PXkbPtrAction, x: int8) = 
-  ##define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))
-  XkbIntTo2Chars(x, a.high_XXX, a.low_XXX)
-
-proc XkbSetPtrActionY(a: PXkbPtrAction, y: int8) = 
-  ##define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))
-  XkbIntTo2Chars(y, a.high_YYY, a.low_YYY)
-
-proc XkbSAPtrDfltValue(a: PXkbPtrDfltAction): int8 = 
-  ##define XkbSAPtrDfltValue(a) (XkbCharToInt((a)->valueXXX))
-  Result = int8(XkbCharToInt(a.valueXXX))
-
-proc XkbSASetPtrDfltValue(a: PXkbPtrDfltAction, c: pointer) = 
-  ##define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff))
-  a.valueXXX = toU8(cast[int](c))
-
-proc XkbSAScreen(a: PXkbSwitchScreenAction): int8 = 
-  ##define XkbSAScreen(a) (XkbCharToInt((a)->screenXXX))
-  Result = toU8(XkbCharToInt(a.screenXXX))
-
-proc XkbSASetScreen(a: PXkbSwitchScreenAction, s: pointer) = 
-  ##define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff))
-  a.screenXXX = toU8(cast[int](s))
-
-proc XkbActionSetCtrls(a: PXkbCtrlsAction, c: int8) = 
-  ##define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),((a)->ctrls2=(((c)>>16)&0xff)),
-  #                                 ((a)->ctrls1=(((c)>>8)&0xff)),((a)->ctrls0=((c)&0xff)))        
-  a.ctrls3 = toU8((ze(c) shr 24) and 0x000000FF)
-  a.ctrls2 = toU8((ze(c) shr 16) and 0x000000FF)
-  a.ctrls1 = toU8((ze(c) shr 8) and 0x000000FF)
-  a.ctrls0 = toU8(ze(c) and 0x000000FF)
-
-proc XkbActionCtrls(a: PXkbCtrlsAction): int16 = 
-  ##define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|(((unsigned int)(a)->ctrls2)<<16)|
-  #                            (((unsigned int)(a)->ctrls1)<<8)|((unsigned int)((a)->ctrls0)))      
-  Result = toU16((ze(a.ctrls3) shl 24) or (ze(a.ctrls2) shl 16) or 
-     (ze(a.ctrls1) shl 8) or ze(a.ctrls0))
-
-proc XkbSARedirectVMods(a: PXkbRedirectKeyAction): int16 = 
-  ##define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|((unsigned int)(a)->vmods0))
-  Result = toU16((ze(a.vmods1) shl 8) or ze(a.vmods0))
-
-proc XkbSARedirectSetVMods(a: PXkbRedirectKeyAction, m: int8) = 
-  ##define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),((a)->vmods_mask0=((m)&0xff)))
-  a.vmods_mask1 = toU8((ze(m) shr 8) and 0x000000FF)
-  a.vmods_mask0 = toU8(ze(m) or 0x000000FF)
-
-proc XkbSARedirectVModsMask(a: PXkbRedirectKeyAction): int16 = 
-  ##define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|
-  #                                     ((unsigned int)(a)->vmods_mask0))
-  Result = toU16((ze(a.vmods_mask1) shl 8) or ze(a.vmods_mask0))
-
-proc XkbSARedirectSetVModsMask(a: PXkbRedirectKeyAction, m: int8) = 
-  ##define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),((a)->vmods_mask0=((m)&0xff)))
-  a.vmods_mask1 = toU8(ze(m) shr 8 and 0x000000FF)
-  a.vmods_mask0 = toU8(ze(m) and 0x000000FF)
-
-proc XkbAX_AnyFeedback(c: PXkbControlsPtr): int16 = 
-  ##define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask)
-  Result = toU16(ze(c.enabled_ctrls) and XkbAccessXFeedbackMask)
-
-proc XkbAX_NeedOption(c: PXkbControlsPtr, w: int16): int16 = 
-  ##define XkbAX_NeedOption(c,w) ((c)->ax_options&(w))
-  Result = toU16(ze(c.ax_options) and ze(w))
-
-proc XkbAX_NeedFeedback(c: PXkbControlsPtr, w: int16): bool = 
-  ##define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))
-  Result = (XkbAX_AnyFeedback(c) > 0'i16) and (XkbAX_NeedOption(c, w) > 0'i16)
-
-proc XkbSMKeyActionsPtr(m: PXkbServerMapPtr, k: int16): PXkbAction = 
-  ##define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])
-  Result = addr(m.acts[ze(m.key_acts[ze(k)])])
-
-proc XkbCMKeyGroupInfo(m: PXkbClientMapPtr, k: int16): int8 = 
-  ##define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info)
-  Result = m.key_sym_map[ze(k)].group_info
-
-proc XkbCMKeyNumGroups(m: PXkbClientMapPtr, k: int16): int8 = 
-  ##define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info))
-  Result = toU8(XkbNumGroups(m.key_sym_map[ze(k)].group_info))
-
-proc XkbCMKeyGroupWidth(m: PXkbClientMapPtr, k: int16, g: int8): int8 = 
-  ##define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)
-  Result = XkbCMKeyType(m, k, g).num_levels
-
-proc XkbCMKeyGroupsWidth(m: PXkbClientMapPtr, K: int16): int8 = 
-  ##define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)
-  Result = m.key_sym_map[ze(k)].width
-
-proc XkbCMKeyTypeIndex(m: PXkbClientMapPtr, k: int16, g: int8): int8 = 
-  ##define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])
-  Result = m.key_sym_map[ze(k)].kt_index[ze(g) and 0x00000003]
-
-proc XkbCMKeyType(m: PXkbClientMapPtr, k: int16, g: int8): PXkbKeyTypePtr = 
-  ##define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])
-  Result = addr(m.types[ze(XkbCMKeyTypeIndex(m, k, g))])
-
-proc XkbCMKeyNumSyms(m: PXkbClientMapPtr, k: int16): int16 = 
-  ##define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))
-  Result = toU16(ze(XkbCMKeyGroupsWidth(m, k)) or ze(XkbCMKeyNumGroups(m, k)))
-
-proc XkbCMKeySymsOffset(m: PXkbClientMapPtr, k: int16): int8 = 
-  ##define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset)
-  Result = m.key_sym_map[ze(k)].offset
-
-proc XkbCMKeySymsPtr*(m: PXkbClientMapPtr, k: int16): PKeySym = 
-  ##define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)])
-  Result = addr(m.syms[ze(XkbCMKeySymsOffset(m, k))])
-
-proc XkbIM_IsAuto(i: PXkbIndicatorMapPtr): bool = 
-  ##define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&(((i)->which_groups&&(i)->groups)||
-  #                           ((i)->which_mods&&(i)->mods.mask)||  ((i)->ctrls)))
-  Result = ((ze(i.flags) and XkbIM_NoAutomatic) == 0) and
-      (((i.which_groups > 0'i8) and (i.groups > 0'i8)) or
-      ((i.which_mods > 0'i8) and (i.mods.mask > 0'i8)) or (i.ctrls > 0'i8))
-
-proc XkbIM_InUse(i: PXkbIndicatorMapPtr): bool = 
-  ##define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||((i)->which_mods)||((i)->ctrls)) 
-  Result = (i.flags > 0'i8) or (i.which_groups > 0'i8) or (i.which_mods > 0'i8) or
-      (i.ctrls > 0'i8)
-
-proc XkbKeyKeyTypeIndex(d: PXkbDescPtr, k: int16, g: int8): int8 = 
-  ##define XkbKeyKeyTypeIndex(d,k,g)      (XkbCMKeyTypeIndex((d)->map,k,g))
-  Result = XkbCMKeyTypeIndex(d.map, k, g)
-
-proc XkbKeyKeyType(d: PXkbDescPtr, k: int16, g: int8): PXkbKeyTypePtr = 
-  ##define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g))
-  Result = XkbCMKeyType(d.map, k, g)
-
-proc XkbKeyGroupWidth(d: PXkbDescPtr, k: int16, g: int8): int8 = 
-  ##define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g))
-  Result = XkbCMKeyGroupWidth(d.map, k, g)
-
-proc XkbKeyGroupsWidth(d: PXkbDescPtr, k: int16): int8 = 
-  ##define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k))
-  Result = XkbCMKeyGroupsWidth(d.map, k)
-
-proc XkbKeyGroupInfo(d: PXkbDescPtr, k: int16): int8 = 
-  ##define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k)))
-  Result = XkbCMKeyGroupInfo(d.map, k)
-
-proc XkbKeyNumGroups(d: PXkbDescPtr, k: int16): int8 = 
-  ##define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k)))
-  Result = XkbCMKeyNumGroups(d.map, k)
-
-proc XkbKeyNumSyms(d: PXkbDescPtr, k: int16): int16 = 
-  ##define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k)))
-  Result = XkbCMKeyNumSyms(d.map, k)
-
-proc XkbKeySymsPtr*(d: PXkbDescPtr, k: int16): PKeySym = 
-  ##define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k)))
-  Result = XkbCMKeySymsPtr(d.map, k)
-
-proc XkbKeySym(d: PXkbDescPtr, k: int16, n: int16): TKeySym = 
-  ##define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])
-  Result = cast[ptr array[0..0xffff, TKeySym]](XkbKeySymsPtr(d, k))[ze(n)] # XXX: this seems strange!
-
-proc XkbKeySymEntry(d: PXkbDescPtr, k: int16, sl: int16, g: int8): TKeySym = 
-  ##define XkbKeySymEntry(d,k,sl,g) (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
-  Result = XkbKeySym(d, k, toU16(ze(XkbKeyGroupsWidth(d, k)) * ze(g) + ze(sl)))
-
-proc XkbKeyAction(d: PXkbDescPtr, k: int16, n: int16): PXkbAction = 
-  ##define XkbKeyAction(d,k,n) (XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)
-  #if (XkbKeyHasActions(d, k)): 
-  #  Result = XkbKeyActionsPtr(d, k)[ze(n)] #Buggy !!!
-  assert(false)
-  result = nil
-  
-proc XkbKeyActionEntry(d: PXkbDescPtr, k: int16, sl: int16, g: int8): int8 = 
-  ##define XkbKeyActionEntry(d,k,sl,g) (XkbKeyHasActions(d,k) ?
-  #                                      XkbKeyAction(d, k, ((XkbKeyGroupsWidth(d, k) * (g))+(sl))):NULL)
-  if XkbKeyHasActions(d, k): 
-    Result = XkbKeyGroupsWidth(d, k) *% g +% toU8(sl)
-  else: 
-    Result = 0'i8
-  
-proc XkbKeyHasActions(d: PXkbDescPtr, k: int16): bool = 
-  ##define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0)
-  Result = d.server.key_acts[ze(k)] != 0'i16
-
-proc XkbKeyNumActions(d: PXkbDescPtr, k: int16): int16 = 
-  ##define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
-  if (XkbKeyHasActions(d, k)): Result = XkbKeyNumSyms(d, k)
-  else: Result = 1'i16
-  
-proc XkbKeyActionsPtr(d: PXkbDescPtr, k: int16): PXkbAction = 
-  ##define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))
-  Result = XkbSMKeyActionsPtr(d.server, k)
-
-proc XkbKeycodeInRange(d: PXkbDescPtr, k: int16): bool = 
-  ##define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&& ((k)<=(d)->max_key_code))
-  Result = (char(toU8(k)) >= d.min_key_code) and (char(toU8(k)) <= d.max_key_code)
-
-proc XkbNumKeys(d: PXkbDescPtr): int8 = 
-  ##define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1)
-  Result = toU8(ord(d.max_key_code) - ord(d.min_key_code) + 1)
-
-proc XkbXI_DevHasBtnActs(d: PXkbDeviceInfoPtr): bool = 
-  ##define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL))
-  Result = (d.num_btns > 0'i16) and (not (d.btn_acts == nil))
-
-proc XkbXI_LegalDevBtn(d: PXkbDeviceInfoPtr, b: int16): bool = 
-  ##define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))
-  Result = XkbXI_DevHasBtnActs(d) and (b <% d.num_btns)
-
-proc XkbXI_DevHasLeds(d: PXkbDeviceInfoPtr): bool = 
-  ##define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL))
-  Result = (d.num_leds > 0'i16) and (not (d.leds == nil))
-
-proc XkbBoundsWidth(b: PXkbBoundsPtr): int16 = 
-  ##define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
-  Result = (b.x2) - b.x1
-
-proc XkbBoundsHeight(b: PXkbBoundsPtr): int16 = 
-  ##define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
-  Result = (b.y2) - b.y1
-
-proc XkbOutlineIndex(s: PXkbShapePtr, o: PXkbOutlinePtr): int32 = 
-  ##define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
-  Result = int32((cast[TAddress](o) - cast[TAddress](addr(s.outlines[0]))) div sizeof(PXkbOutlinePtr))
-
-proc XkbShapeDoodadColor(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbColorPtr = 
-  ##define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
-  Result = addr((g.colors[ze(d.color_ndx)]))
-
-proc XkbShapeDoodadShape(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr): PXkbShapePtr = 
-  ##define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
-  Result = addr(g.shapes[ze(d.shape_ndx)])
-
-proc XkbSetShapeDoodadColor(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, 
-                            c: PXkbColorPtr) = 
-  ##define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
-  d.color_ndx = toU16((cast[TAddress](c) - cast[TAddress](addr(g.colors[0]))) div sizeof(TXkbColorRec))
-
-proc XkbSetShapeDoodadShape(g: PXkbGeometryPtr, d: PXkbShapeDoodadPtr, 
-                            s: PXkbShapePtr) = 
-  ##define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
-  d.shape_ndx = toU16((cast[TAddress](s) - cast[TAddress](addr(g.shapes[0]))) div sizeof(TXkbShapeRec))
-
-proc XkbTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr): PXkbColorPtr = 
-  ##define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
-  Result = addr(g.colors[ze(d.color_ndx)])
-
-proc XkbSetTextDoodadColor(g: PXkbGeometryPtr, d: PXkbTextDoodadPtr, 
-                           c: PXkbColorPtr) = 
-  ##define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
-  d.color_ndx = toU16((cast[TAddress](c) - cast[TAddress](addr(g.colors[0]))) div sizeof(TXkbColorRec))
-
-proc XkbIndicatorDoodadShape(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbShapeDoodadPtr = 
-  ##define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
-  Result = cast[PXkbShapeDoodadPtr](addr(g.shapes[ze(d.shape_ndx)]))
-
-proc XkbIndicatorDoodadOnColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr = 
-  ##define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
-  Result = addr(g.colors[ze(d.on_color_ndx)])
-
-proc XkbIndicatorDoodadOffColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr): PXkbColorPtr = 
-  ##define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
-  Result = addr(g.colors[ze(d.off_color_ndx)])
-
-proc XkbSetIndicatorDoodadOnColor(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, 
-                                  c: PXkbColorPtr) = 
-  ##define XkbSetIndicatorDoodadOnColor(g,d,c) ((d)->on_color_ndx= (c)-&(g)->colors[0])
-  d.on_color_ndx = toU16((cast[TAddress](c) - cast[TAddress](addr(g.colors[0]))) div sizeof(TXkbColorRec))
-
-proc XkbSetIndicatorDoodadOffColor(g: PXkbGeometryPtr, 
-                                   d: PXkbIndicatorDoodadPtr, c: PXkbColorPtr) = 
-  ##define        XkbSetIndicatorDoodadOffColor(g,d,c) ((d)->off_color_ndx= (c)-&(g)->colors[0])
-  d.off_color_ndx = toU16((cast[TAddress](c) - cast[TAddress](addr(g.colors[0]))) div sizeof(TxkbColorRec))
-
-proc XkbSetIndicatorDoodadShape(g: PXkbGeometryPtr, d: PXkbIndicatorDoodadPtr, 
-                                s: PXkbShapeDoodadPtr) = 
-  ##define XkbSetIndicatorDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
-  d.shape_ndx = toU16((cast[TAddress](s) - (cast[TAddress](addr(g.shapes[0])))) div sizeof(TXkbShapeRec))
-
-proc XkbLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbColorPtr = 
-  ##define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
-  Result = addr(g.colors[ze(d.color_ndx)])
-
-proc XkbLogoDoodadShape(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr): PXkbShapeDoodadPtr = 
-  ##define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
-  Result = cast[PXkbShapeDoodadPtr](addr(g.shapes[ze(d.shape_ndx)]))
-
-proc XkbSetLogoDoodadColor(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, 
-                           c: PXkbColorPtr) = 
-  ##define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
-  d.color_ndx = toU16((cast[TAddress](c) - cast[TAddress](addr(g.colors[0]))) div sizeof(TXkbColorRec))
-
-proc XkbSetLogoDoodadShape(g: PXkbGeometryPtr, d: PXkbLogoDoodadPtr, 
-                           s: PXkbShapeDoodadPtr) = 
-  ##define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
-  d.shape_ndx = toU16((cast[TAddress](s) - cast[TAddress](addr(g.shapes[0]))) div sizeof(TXkbShapeRec))
-
-proc XkbKeyShape(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbShapeDoodadPtr = 
-  ##define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
-  Result = cast[PXkbShapeDoodadPtr](addr(g.shapes[ze(k.shape_ndx)]))
-
-proc XkbKeyColor(g: PXkbGeometryPtr, k: PXkbKeyPtr): PXkbColorPtr = 
-  ##define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
-  Result = addr(g.colors[ze(k.color_ndx)])
-
-proc XkbSetKeyShape(g: PXkbGeometryPtr, k: PXkbKeyPtr, s: PXkbShapeDoodadPtr) = 
-  ##define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
-  k.shape_ndx = toU8((cast[TAddress](s) - cast[TAddress](addr(g.shapes[0]))) div sizeof(TXkbShapeRec))
-
-proc XkbSetKeyColor(g: PXkbGeometryPtr, k: PXkbKeyPtr, c: PXkbColorPtr) = 
-  ##define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
-  k.color_ndx = toU8((cast[TAddress](c) - cast[TAddress](addr(g.colors[0]))) div sizeof(TxkbColorRec))
-
-proc XkbGeomColorIndex(g: PXkbGeometryPtr, c: PXkbColorPtr): int32 = 
-  ##define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
-  Result = toU16((cast[TAddress](c) - (cast[TAddress](addr(g.colors[0])))) div sizeof(TxkbColorRec))
diff --git a/lib/wrappers/x11/xkblib.nim b/lib/wrappers/x11/xkblib.nim
deleted file mode 100755
index 92d438a60..000000000
--- a/lib/wrappers/x11/xkblib.nim
+++ /dev/null
@@ -1,699 +0,0 @@
-# $Xorg: XKBlib.h,v 1.6 2000/08/17 19:45:03 cpqbld Exp $
-#************************************************************
-#Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-#
-#Permission to use, copy, modify, and distribute this
-#software and its documentation for any purpose and without
-#fee is hereby granted, provided that the above copyright
-#notice appear in all copies and that both that copyright
-#notice and this permission notice appear in supporting
-#documentation, and that the name of Silicon Graphics not be
-#used in advertising or publicity pertaining to distribution
-#of the software without specific prior written permission.
-#Silicon Graphics makes no representation about the suitability
-#of this software for any purpose. It is provided "as is"
-#without any express or implied warranty.
-#
-#SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-#SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-#AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-#GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-#DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING `from` LOSS OF USE,
-#DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-#OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
-#THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-#********************************************************/
-# $XFree86: xc/lib/X11/XKBlib.h,v 3.3 2001/08/01 00:44:38 tsi Exp $
-#
-# Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
-#
-#Thanks:
-#         I want to thanks to oliebol for putting up with all of the problems that was found
-#         while translating this code. ;)
-#
-#         I want to thanks #fpc channel in freenode irc, for helping me, and to put up with my
-#         wierd questions ;)
-#
-#         Thanks for mmc in #xlib on freenode irc And so for the channel itself for the helping me to
-#         understanding some of the problems I had converting this headers and pointing me to resources
-#         that helped translating this headers.
-#
-# Ido
-#
-#History:
-#        2004/10/15        - Fixed a bug of accessing second based records by removing "paced record" and
-#                            chnaged it to "reocrd" only.
-#        2004/10/10        - Added to TXkbGetAtomNameFunc and TXkbInternAtomFunc the cdecl call.
-#        2004/10/06 - 09   - Convertion `from` the c header of XKBlib.h
-#
-#
-
-import 
-  X, Xlib, XKB
-
-type 
-  PXkbAnyEvent* = ptr TXkbAnyEvent
-  TXkbAnyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds;
-    xkb_type*: int16          # XKB event minor code
-    device*: int16            # device ID
-  
-
-type 
-  PXkbNewKeyboardNotifyEvent* = ptr TXkbNewKeyboardNotifyEvent
-  TXkbNewKeyboardNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbNewKeyboardNotify
-    device*: int16            # device ID
-    old_device*: int16        # device ID of previous keyboard
-    min_key_code*: int16      # minimum key code
-    max_key_code*: int16      # maximum key code
-    old_min_key_code*: int16  # min key code of previous kbd
-    old_max_key_code*: int16  # max key code of previous kbd
-    changed*: int16           # changed aspects of the keyboard
-    req_major*: int8          # major and minor opcode of req
-    req_minor*: int8          # that caused change, if applicable
-  
-
-type 
-  PXkbMapNotifyEvent* = ptr TXkbMapNotifyEvent
-  TXkbMapNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbMapNotify
-    device*: int16            # device ID
-    changed*: int16           # fields which have been changed
-    flags*: int16             # reserved
-    first_type*: int16        # first changed key type
-    num_types*: int16         # number of changed key types
-    min_key_code*: TKeyCode
-    max_key_code*: TKeyCode
-    first_key_sym*: TKeyCode
-    first_key_act*: TKeyCode
-    first_key_behavior*: TKeyCode
-    first_key_explicit*: TKeyCode
-    first_modmap_key*: TKeyCode
-    first_vmodmap_key*: TKeyCode
-    num_key_syms*: int16
-    num_key_acts*: int16
-    num_key_behaviors*: int16
-    num_key_explicit*: int16
-    num_modmap_keys*: int16
-    num_vmodmap_keys*: int16
-    vmods*: int16             # mask of changed virtual mods
-  
-
-type 
-  PXkbStateNotifyEvent* = ptr TXkbStateNotifyEvent
-  TXkbStateNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbStateNotify
-    device*: int16            # device ID
-    changed*: int16           # mask of changed state components
-    group*: int16             # keyboard group
-    base_group*: int16        # base keyboard group
-    latched_group*: int16     # latched keyboard group
-    locked_group*: int16      # locked keyboard group
-    mods*: int16              # modifier state
-    base_mods*: int16         # base modifier state
-    latched_mods*: int16      # latched modifiers
-    locked_mods*: int16       # locked modifiers
-    compat_state*: int16      # compatibility state
-    grab_mods*: int8          # mods used for grabs
-    compat_grab_mods*: int8   # grab mods for non-XKB clients
-    lookup_mods*: int8        # mods sent to clients
-    compat_lookup_mods*: int8 # mods sent to non-XKB clients
-    ptr_buttons*: int16       # pointer button state
-    keycode*: TKeyCode        # keycode that caused the change
-    event_type*: int8         # KeyPress or KeyRelease
-    req_major*: int8          # Major opcode of request
-    req_minor*: int8          # Minor opcode of request
-  
-
-type 
-  PXkbControlsNotifyEvent* = ptr TXkbControlsNotifyEvent
-  TXkbControlsNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbControlsNotify
-    device*: int16            # device ID
-    changed_ctrls*: int16     # controls with changed sub-values
-    enabled_ctrls*: int16     # controls currently enabled
-    enabled_ctrl_changes*: int16 # controls just {en,dis}abled
-    num_groups*: int16        # total groups on keyboard
-    keycode*: TKeyCode        # key that caused change or 0
-    event_type*: int8         # type of event that caused change
-    req_major*: int8          # if keycode==0, major and minor
-    req_minor*: int8          # opcode of req that caused change
-  
-
-type 
-  PXkbIndicatorNotifyEvent* = ptr TXkbIndicatorNotifyEvent
-  TXkbIndicatorNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbIndicatorNotify
-    device*: int16            # device
-    changed*: int16           # indicators with new state or map
-    state*: int16             # current state of all indicators
-  
-
-type 
-  PXkbNamesNotifyEvent* = ptr TXkbNamesNotifyEvent
-  TXkbNamesNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbNamesNotify
-    device*: int16            # device ID
-    changed*: int32           # names that have changed
-    first_type*: int16        # first key type with new name
-    num_types*: int16         # number of key types with new names
-    first_lvl*: int16         # first key type new new level names
-    num_lvls*: int16          # # of key types w/new level names
-    num_aliases*: int16       # total number of key aliases
-    num_radio_groups*: int16  # total number of radio groups
-    changed_vmods*: int16     # virtual modifiers with new names
-    changed_groups*: int16    # groups with new names
-    changed_indicators*: int16 # indicators with new names
-    first_key*: int16         # first key with new name
-    num_keys*: int16          # number of keys with new names
-  
-
-type 
-  PXkbCompatMapNotifyEvent* = ptr TXkbCompatMapNotifyEvent
-  TXkbCompatMapNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbCompatMapNotify
-    device*: int16            # device ID
-    changed_groups*: int16    # groups with new compat maps
-    first_si*: int16          # first new symbol interp
-    num_si*: int16            # number of new symbol interps
-    num_total_si*: int16      # total # of symbol interps
-  
-
-type 
-  PXkbBellNotifyEvent* = ptr TXkbBellNotifyEvent
-  TXkbBellNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbBellNotify
-    device*: int16            # device ID
-    percent*: int16           # requested volume as a % of maximum
-    pitch*: int16             # requested pitch in Hz
-    duration*: int16          # requested duration in useconds
-    bell_class*: int16        # (input extension) feedback class
-    bell_id*: int16           # (input extension) ID of feedback
-    name*: TAtom              # "name" of requested bell
-    window*: TWindow          # window associated with event
-    event_only*: bool         # "event only" requested
-  
-
-type 
-  PXkbActionMessageEvent* = ptr TXkbActionMessageEvent
-  TXkbActionMessageEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbActionMessage
-    device*: int16            # device ID
-    keycode*: TKeyCode        # key that generated the event
-    press*: bool              # true if act caused by key press
-    key_event_follows*: bool  # true if key event also generated
-    group*: int16             # effective group
-    mods*: int16              # effective mods
-    message*: array[0..XkbActionMessageLength, Char] # message -- leave space for NUL
-  
-
-type 
-  PXkbAccessXNotifyEvent* = ptr TXkbAccessXNotifyEvent
-  TXkbAccessXNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbAccessXNotify
-    device*: int16            # device ID
-    detail*: int16            # XkbAXN_*
-    keycode*: int16           # key of event
-    sk_delay*: int16          # current slow keys delay
-    debounce_delay*: int16    # current debounce delay
-  
-
-type 
-  PXkbExtensionDeviceNotifyEvent* = ptr TXkbExtensionDeviceNotifyEvent
-  TXkbExtensionDeviceNotifyEvent*{.final.} = object 
-    theType*: int16           # XkbAnyEvent
-    serial*: int32            # of last req processed by server
-    send_event*: bool         # is this `from` a SendEvent request?
-    display*: PDisplay        # Display the event was read `from`
-    time*: TTime              # milliseconds
-    xkb_type*: int16          # XkbExtensionDeviceNotify
-    device*: int16            # device ID
-    reason*: int16            # reason for the event
-    supported*: int16         # mask of supported features
-    unsupported*: int16       # mask of unsupported features
-                              # that some app tried to use
-    first_btn*: int16         # first button that changed
-    num_btns*: int16          # range of buttons changed
-    leds_defined*: int16      # indicators with names or maps
-    led_state*: int16         # current state of the indicators
-    led_class*: int16         # feedback class for led changes
-    led_id*: int16            # feedback id for led changes
-  
-
-type 
-  PXkbEvent* = ptr TXkbEvent
-  TXkbEvent*{.final.} = object 
-    theType*: int16
-    any*: TXkbAnyEvent
-    new_kbd*: TXkbNewKeyboardNotifyEvent
-    map*: TXkbMapNotifyEvent
-    state*: TXkbStateNotifyEvent
-    ctrls*: TXkbControlsNotifyEvent
-    indicators*: TXkbIndicatorNotifyEvent
-    names*: TXkbNamesNotifyEvent
-    compat*: TXkbCompatMapNotifyEvent
-    bell*: TXkbBellNotifyEvent
-    message*: TXkbActionMessageEvent
-    accessx*: TXkbAccessXNotifyEvent
-    device*: TXkbExtensionDeviceNotifyEvent
-    core*: TXEvent
-
-
-type
-  PXkbKbdDpyStatePtr* = ptr TXkbKbdDpyStateRec
-  TXkbKbdDpyStateRec*{.final.} = object  # XkbOpenDisplay error codes 
-
-const 
-  XkbOD_Success* = 0
-  XkbOD_BadLibraryVersion* = 1
-  XkbOD_ConnectionRefused* = 2
-  XkbOD_NonXkbServer* = 3
-  XkbOD_BadServerVersion* = 4 # Values for XlibFlags 
-
-const 
-  XkbLC_ForceLatin1Lookup* = 1 shl 0
-  XkbLC_ConsumeLookupMods* = 1 shl 1
-  XkbLC_AlwaysConsumeShiftAndLock* = 1 shl 2
-  XkbLC_IgnoreNewKeyboards* = 1 shl 3
-  XkbLC_ControlFallback* = 1 shl 4
-  XkbLC_ConsumeKeysOnComposeFail* = 1 shl 29
-  XkbLC_ComposeLED* = 1 shl 30
-  XkbLC_BeepOnComposeFail* = 1 shl 31
-  XkbLC_AllComposeControls* = 0xC0000000
-  XkbLC_AllControls* = 0xC000001F
-
-proc XkbIgnoreExtension*(ignore: bool): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbIgnoreExtension".}
-proc XkbOpenDisplay*(name: cstring, ev_rtrn, err_rtrn, major_rtrn, minor_rtrn, 
-                                    reason: ptr int16): PDisplay{.cdecl, 
-    dynlib: libX11, importc: "XkbOpenDisplay".}
-proc XkbQueryExtension*(dpy: PDisplay, opcodeReturn, eventBaseReturn, 
-                                       errorBaseReturn, majorRtrn, minorRtrn: ptr int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbQueryExtension".}
-proc XkbUseExtension*(dpy: PDisplay, major_rtrn, minor_rtrn: ptr int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbUseExtension".}
-proc XkbLibraryVersion*(libMajorRtrn, libMinorRtrn: ptr int16): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbLibraryVersion".}
-proc XkbSetXlibControls*(dpy: PDisplay, affect, values: int16): int16{.cdecl, 
-    dynlib: libX11, importc: "XkbSetXlibControls".}
-proc XkbGetXlibControls*(dpy: PDisplay): int16{.cdecl, dynlib: libX11, 
-    importc: "XkbGetXlibControls".}
-type 
-  TXkbInternAtomFunc* = proc (dpy: PDisplay, name: cstring, only_if_exists: bool): TAtom{.
-      cdecl.}
-
-type 
-  TXkbGetAtomNameFunc* = proc (dpy: PDisplay, atom: TAtom): cstring{.cdecl.}
-
-proc XkbSetAtomFuncs*(getAtom: TXkbInternAtomFunc, getName: TXkbGetAtomNameFunc){.
-    cdecl, dynlib: libX11, importc: "XkbSetAtomFuncs".}
-proc XkbKeycodeToKeysym*(dpy: PDisplay, kc: TKeyCode, group, level: int16): TKeySym{.
-    cdecl, dynlib: libX11, importc: "XkbKeycodeToKeysym".}
-proc XkbKeysymToModifiers*(dpy: PDisplay, ks: TKeySym): int16{.cdecl, 
-    dynlib: libX11, importc: "XkbKeysymToModifiers".}
-proc XkbLookupKeySym*(dpy: PDisplay, keycode: TKeyCode, 
-                      modifiers, modifiers_return: int16, keysym_return: PKeySym): bool{.
-    cdecl, dynlib: libX11, importc: "XkbLookupKeySym".}
-proc XkbLookupKeyBinding*(dpy: PDisplay, sym_rtrn: TKeySym, mods: int16, 
-                          buffer: cstring, nbytes: int16, extra_rtrn: ptr int16): int16{.
-    cdecl, dynlib: libX11, importc: "XkbLookupKeyBinding".}
-proc XkbTranslateKeyCode*(xkb: PXkbDescPtr, keycode: TKeyCode, 
-                          modifiers, modifiers_return: int16, 
-                          keysym_return: PKeySym): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbTranslateKeyCode".}
-proc XkbTranslateKeySym*(dpy: PDisplay, sym_return: TKeySym, modifiers: int16, 
-                         buffer: cstring, nbytes: int16, extra_rtrn: ptr int16): int16{.
-    cdecl, dynlib: libX11, importc: "XkbTranslateKeySym".}
-proc XkbSetAutoRepeatRate*(dpy: PDisplay, deviceSpec, delay, interval: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSetAutoRepeatRate".}
-proc XkbGetAutoRepeatRate*(dpy: PDisplay, deviceSpec: int16, 
-                           delayRtrn, intervalRtrn: PWord): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbGetAutoRepeatRate".}
-proc XkbChangeEnabledControls*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbChangeEnabledControls".}
-proc XkbDeviceBell*(dpy: PDisplay, win: TWindow, 
-                    deviceSpec, bellClass, bellID, percent: int16, name: TAtom): bool{.
-    cdecl, dynlib: libX11, importc: "XkbDeviceBell".}
-proc XkbForceDeviceBell*(dpy: PDisplay, 
-                         deviceSpec, bellClass, bellID, percent: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbForceDeviceBell".}
-proc XkbDeviceBellEvent*(dpy: PDisplay, win: TWindow, 
-                         deviceSpec, bellClass, bellID, percent: int16, 
-                         name: TAtom): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbDeviceBellEvent".}
-proc XkbBell*(dpy: PDisplay, win: TWindow, percent: int16, name: TAtom): bool{.
-    cdecl, dynlib: libX11, importc: "XkbBell".}
-proc XkbForceBell*(dpy: PDisplay, percent: int16): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbForceBell".}
-proc XkbBellEvent*(dpy: PDisplay, win: TWindow, percent: int16, name: TAtom): bool{.
-    cdecl, dynlib: libX11, importc: "XkbBellEvent".}
-proc XkbSelectEvents*(dpy: PDisplay, deviceID, affect, values: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSelectEvents".}
-proc XkbSelectEventDetails*(dpy: PDisplay, deviceID, eventType: int16, 
-                            affect, details: int32): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSelectEventDetails".}
-proc XkbNoteMapChanges*(old: PXkbMapChangesPtr, new: PXkbMapNotifyEvent, 
-                        wanted: int16){.cdecl, dynlib: libX11, 
-                                        importc: "XkbNoteMapChanges".}
-proc XkbNoteNameChanges*(old: PXkbNameChangesPtr, new: PXkbNamesNotifyEvent, 
-                         wanted: int16){.cdecl, dynlib: libX11, 
-    importc: "XkbNoteNameChanges".}
-proc XkbGetIndicatorState*(dpy: PDisplay, deviceSpec: int16, pStateRtrn: PWord): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetIndicatorState".}
-proc XkbGetDeviceIndicatorState*(dpy: PDisplay, 
-                                 deviceSpec, ledClass, ledID: int16, 
-                                 pStateRtrn: PWord): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetDeviceIndicatorState".}
-proc XkbGetIndicatorMap*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetIndicatorMap".}
-proc XkbSetIndicatorMap*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSetIndicatorMap".}
-proc XkbNoteIndicatorMapChanges*(o, n: PXkbIndicatorChangesPtr, w: int16)
-proc XkbNoteIndicatorStateChanges*(o, n: PXkbIndicatorChangesPtr, w: int16)
-proc XkbGetIndicatorMapChanges*(d: PDisplay, x: PXkbDescPtr, 
-                                c: PXkbIndicatorChangesPtr): TStatus
-proc XkbChangeIndicatorMaps*(d: PDisplay, x: PXkbDescPtr, 
-                             c: PXkbIndicatorChangesPtr): bool
-proc XkbGetNamedIndicator*(dpy: PDisplay, name: TAtom, pNdxRtrn: ptr int16, 
-                           pStateRtrn: ptr bool, pMapRtrn: PXkbIndicatorMapPtr, 
-                           pRealRtrn: ptr bool): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbGetNamedIndicator".}
-proc XkbGetNamedDeviceIndicator*(dpy: PDisplay, 
-                                 deviceSpec, ledClass, ledID: int16, 
-                                 name: TAtom, pNdxRtrn: ptr int16, 
-                                 pStateRtrn: ptr bool, 
-                                 pMapRtrn: PXkbIndicatorMapPtr, 
-                                 pRealRtrn: ptr bool): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbGetNamedDeviceIndicator".}
-proc XkbSetNamedIndicator*(dpy: PDisplay, name: TAtom, 
-                           changeState, state, createNewMap: bool, 
-                           pMap: PXkbIndicatorMapPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetNamedIndicator".}
-proc XkbSetNamedDeviceIndicator*(dpy: PDisplay, 
-                                 deviceSpec, ledClass, ledID: int16, 
-                                 name: TAtom, 
-                                 changeState, state, createNewMap: bool, 
-                                 pMap: PXkbIndicatorMapPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetNamedDeviceIndicator".}
-proc XkbLockModifiers*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbLockModifiers".}
-proc XkbLatchModifiers*(dpy: PDisplay, deviceSpec, affect, values: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbLatchModifiers".}
-proc XkbLockGroup*(dpy: PDisplay, deviceSpec, group: int16): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbLockGroup".}
-proc XkbLatchGroup*(dpy: PDisplay, deviceSpec, group: int16): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbLatchGroup".}
-proc XkbSetServerInternalMods*(dpy: PDisplay, deviceSpec, affectReal, 
-    realValues, affectVirtual, virtualValues: int16): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetServerInternalMods".}
-proc XkbSetIgnoreLockMods*(dpy: PDisplay, deviceSpec, affectReal, realValues, 
-    affectVirtual, virtualValues: int16): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbSetIgnoreLockMods".}
-proc XkbVirtualModsToReal*(dpy: PDisplay, virtual_mask: int16, mask_rtrn: PWord): bool{.
-    cdecl, dynlib: libX11, importc: "XkbVirtualModsToReal".}
-proc XkbComputeEffectiveMap*(xkb: PXkbDescPtr, theType: PXkbKeyTypePtr, 
-                             map_rtrn: PByte): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbComputeEffectiveMap".}
-proc XkbInitCanonicalKeyTypes*(xkb: PXkbDescPtr, which: int16, keypadVMod: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbInitCanonicalKeyTypes".}
-proc XkbAllocKeyboard*(): PXkbDescPtr{.cdecl, dynlib: libX11, 
-                                       importc: "XkbAllocKeyboard".}
-proc XkbFreeKeyboard*(xkb: PXkbDescPtr, which: int16, freeDesc: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeKeyboard".}
-proc XkbAllocClientMap*(xkb: PXkbDescPtr, which, nTypes: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocClientMap".}
-proc XkbAllocServerMap*(xkb: PXkbDescPtr, which, nActions: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocServerMap".}
-proc XkbFreeClientMap*(xkb: PXkbDescPtr, what: int16, freeMap: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeClientMap".}
-proc XkbFreeServerMap*(xkb: PXkbDescPtr, what: int16, freeMap: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeServerMap".}
-proc XkbAddKeyType*(xkb: PXkbDescPtr, name: TAtom, map_count: int16, 
-                    want_preserve: bool, num_lvls: int16): PXkbKeyTypePtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddKeyType".}
-proc XkbAllocIndicatorMaps*(xkb: PXkbDescPtr): TStatus{.cdecl, dynlib: libX11, 
-    importc: "XkbAllocIndicatorMaps".}
-proc XkbFreeIndicatorMaps*(xkb: PXkbDescPtr){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeIndicatorMaps".}
-proc XkbGetMap*(dpy: PDisplay, which, deviceSpec: int16): PXkbDescPtr{.cdecl, 
-    dynlib: libX11, importc: "XkbGetMap".}
-proc XkbGetUpdatedMap*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetUpdatedMap".}
-proc XkbGetMapChanges*(dpy: PDisplay, xkb: PXkbDescPtr, 
-                       changes: PXkbMapChangesPtr): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetMapChanges".}
-proc XkbRefreshKeyboardMapping*(event: PXkbMapNotifyEvent): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbRefreshKeyboardMapping".}
-proc XkbGetKeyTypes*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetKeyTypes".}
-proc XkbGetKeySyms*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetKeySyms".}
-proc XkbGetKeyActions*(dpy: PDisplay, first, num: int16, xkb: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetKeyActions".}
-proc XkbGetKeyBehaviors*(dpy: PDisplay, firstKey, nKeys: int16, 
-                         desc: PXkbDescPtr): TStatus{.cdecl, dynlib: libX11, 
-    importc: "XkbGetKeyBehaviors".}
-proc XkbGetVirtualMods*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetVirtualMods".}
-proc XkbGetKeyExplicitComponents*(dpy: PDisplay, firstKey, nKeys: int16, 
-                                  desc: PXkbDescPtr): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetKeyExplicitComponents".}
-proc XkbGetKeyModifierMap*(dpy: PDisplay, firstKey, nKeys: int16, 
-                           desc: PXkbDescPtr): TStatus{.cdecl, dynlib: libX11, 
-    importc: "XkbGetKeyModifierMap".}
-proc XkbAllocControls*(xkb: PXkbDescPtr, which: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocControls".}
-proc XkbFreeControls*(xkb: PXkbDescPtr, which: int16, freeMap: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeControls".}
-proc XkbGetControls*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetControls".}
-proc XkbSetControls*(dpy: PDisplay, which: int32, desc: PXkbDescPtr): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSetControls".}
-proc XkbNoteControlsChanges*(old: PXkbControlsChangesPtr, 
-                             new: PXkbControlsNotifyEvent, wanted: int16){.
-    cdecl, dynlib: libX11, importc: "XkbNoteControlsChanges".}
-proc XkbGetControlsChanges*(d: PDisplay, x: PXkbDescPtr, 
-                            c: PXkbControlsChangesPtr): TStatus
-proc XkbChangeControls*(d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr): bool
-proc XkbAllocCompatMap*(xkb: PXkbDescPtr, which, nInterpret: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbAllocCompatMap".}
-proc XkbFreeCompatMap*(xkib: PXkbDescPtr, which: int16, freeMap: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeCompatMap".}
-proc XkbGetCompatMap*(dpy: PDisplay, which: int16, xkb: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetCompatMap".}
-proc XkbSetCompatMap*(dpy: PDisplay, which: int16, xkb: PXkbDescPtr, 
-                      updateActions: bool): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbSetCompatMap".}
-proc XkbAddSymInterpret*(xkb: PXkbDescPtr, si: PXkbSymInterpretPtr, 
-                         updateMap: bool, changes: PXkbChangesPtr): PXkbSymInterpretPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddSymInterpret".}
-proc XkbAllocNames*(xkb: PXkbDescPtr, which: int16, 
-                    nTotalRG, nTotalAliases: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbAllocNames".}
-proc XkbGetNames*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetNames".}
-proc XkbSetNames*(dpy: PDisplay, which, firstType, nTypes: int16, 
-                  desc: PXkbDescPtr): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbSetNames".}
-proc XkbChangeNames*(dpy: PDisplay, xkb: PXkbDescPtr, 
-                     changes: PXkbNameChangesPtr): bool{.cdecl, dynlib: libX11, 
-    importc: "XkbChangeNames".}
-proc XkbFreeNames*(xkb: PXkbDescPtr, which: int16, freeMap: bool){.cdecl, 
-    dynlib: libX11, importc: "XkbFreeNames".}
-proc XkbGetState*(dpy: PDisplay, deviceSpec: int16, rtrnState: PXkbStatePtr): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbGetState".}
-proc XkbSetMap*(dpy: PDisplay, which: int16, desc: PXkbDescPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetMap".}
-proc XkbChangeMap*(dpy: PDisplay, desc: PXkbDescPtr, changes: PXkbMapChangesPtr): bool{.
-    cdecl, dynlib: libX11, importc: "XkbChangeMap".}
-proc XkbSetDetectableAutoRepeat*(dpy: PDisplay, detectable: bool, 
-                                 supported: ptr bool): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetDetectableAutoRepeat".}
-proc XkbGetDetectableAutoRepeat*(dpy: PDisplay, supported: ptr bool): bool{.
-    cdecl, dynlib: libX11, importc: "XkbGetDetectableAutoRepeat".}
-proc XkbSetAutoResetControls*(dpy: PDisplay, changes: int16, 
-                              auto_ctrls, auto_values: PWord): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetAutoResetControls".}
-proc XkbGetAutoResetControls*(dpy: PDisplay, auto_ctrls, auto_ctrl_values: PWord): bool{.
-    cdecl, dynlib: libX11, importc: "XkbGetAutoResetControls".}
-proc XkbSetPerClientControls*(dpy: PDisplay, change: int16, values: PWord): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSetPerClientControls".}
-proc XkbGetPerClientControls*(dpy: PDisplay, ctrls: PWord): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbGetPerClientControls".}
-proc XkbCopyKeyType*(`from`, into: PXkbKeyTypePtr): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbCopyKeyType".}
-proc XkbCopyKeyTypes*(`from`, into: PXkbKeyTypePtr, num_types: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbCopyKeyTypes".}
-proc XkbResizeKeyType*(xkb: PXkbDescPtr, type_ndx, map_count: int16, 
-                       want_preserve: bool, new_num_lvls: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbResizeKeyType".}
-proc XkbResizeKeySyms*(desc: PXkbDescPtr, forKey, symsNeeded: int16): PKeySym{.
-    cdecl, dynlib: libX11, importc: "XkbResizeKeySyms".}
-proc XkbResizeKeyActions*(desc: PXkbDescPtr, forKey, actsNeeded: int16): PXkbAction{.
-    cdecl, dynlib: libX11, importc: "XkbResizeKeyActions".}
-proc XkbChangeTypesOfKey*(xkb: PXkbDescPtr, key, num_groups: int16, 
-                          groups: int16, newTypes: ptr int16, 
-                          pChanges: PXkbMapChangesPtr): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbChangeTypesOfKey".}
-    
-proc XkbListComponents*(dpy: PDisplay, deviceSpec: int16, 
-                        ptrns: PXkbComponentNamesPtr, max_inout: ptr int16): PXkbComponentListPtr{.
-    cdecl, dynlib: libX11, importc: "XkbListComponents".}
-proc XkbFreeComponentList*(list: PXkbComponentListPtr){.cdecl, dynlib: libX11, 
-    importc: "XkbFreeComponentList".}
-proc XkbGetKeyboard*(dpy: PDisplay, which, deviceSpec: int16): PXkbDescPtr{.
-    cdecl, dynlib: libX11, importc: "XkbGetKeyboard".}
-proc XkbGetKeyboardByName*(dpy: PDisplay, deviceSpec: int16, 
-                           names: PXkbComponentNamesPtr, want, need: int16, 
-                           load: bool): PXkbDescPtr{.cdecl, dynlib: libX11, 
-    importc: "XkbGetKeyboardByName".}
-    
-proc XkbKeyTypesForCoreSymbols*(xkb: PXkbDescPtr, 
-                                map_width: int16,  # keyboard device
-                                core_syms: PKeySym,  # always mapWidth symbols
-                                protected: int16,  # explicit key types
-                                types_inout: ptr int16,  # always four type indices
-                                xkb_syms_rtrn: PKeySym): int16{.cdecl, 
-    dynlib: libX11, importc: "XkbKeyTypesForCoreSymbols".}
-  # must have enough space
-proc XkbApplyCompatMapToKey*(xkb: PXkbDescPtr,  
-                             key: TKeyCode,  # key to be updated
-                             changes: PXkbChangesPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbApplyCompatMapToKey".}
-  # resulting changes to map
-proc XkbUpdateMapFromCore*(xkb: PXkbDescPtr,  
-                           first_key: TKeyCode,  # first changed key
-                           num_keys,
-                           map_width: int16, 
-                           core_keysyms: PKeySym,  # symbols `from` core keymap
-                           changes: PXkbChangesPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbUpdateMapFromCore".}
-
-proc XkbAddDeviceLedInfo*(devi: PXkbDeviceInfoPtr, ledClass, ledId: int16): PXkbDeviceLedInfoPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAddDeviceLedInfo".}
-proc XkbResizeDeviceButtonActions*(devi: PXkbDeviceInfoPtr, newTotal: int16): TStatus{.
-    cdecl, dynlib: libX11, importc: "XkbResizeDeviceButtonActions".}
-proc XkbAllocDeviceInfo*(deviceSpec, nButtons, szLeds: int16): PXkbDeviceInfoPtr{.
-    cdecl, dynlib: libX11, importc: "XkbAllocDeviceInfo".}
-proc XkbFreeDeviceInfo*(devi: PXkbDeviceInfoPtr, which: int16, freeDevI: bool){.
-    cdecl, dynlib: libX11, importc: "XkbFreeDeviceInfo".}
-proc XkbNoteDeviceChanges*(old: PXkbDeviceChangesPtr, 
-                           new: PXkbExtensionDeviceNotifyEvent, wanted: int16){.
-    cdecl, dynlib: libX11, importc: "XkbNoteDeviceChanges".}
-proc XkbGetDeviceInfo*(dpy: PDisplay, which, deviceSpec, ledClass, ledID: int16): PXkbDeviceInfoPtr{.
-    cdecl, dynlib: libX11, importc: "XkbGetDeviceInfo".}
-proc XkbGetDeviceInfoChanges*(dpy: PDisplay, devi: PXkbDeviceInfoPtr, 
-                              changes: PXkbDeviceChangesPtr): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetDeviceInfoChanges".}
-proc XkbGetDeviceButtonActions*(dpy: PDisplay, devi: PXkbDeviceInfoPtr, 
-                                all: bool, first, nBtns: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetDeviceButtonActions".}
-proc XkbGetDeviceLedInfo*(dpy: PDisplay, devi: PXkbDeviceInfoPtr, 
-                          ledClass, ledId, which: int16): TStatus{.cdecl, 
-    dynlib: libX11, importc: "XkbGetDeviceLedInfo".}
-proc XkbSetDeviceInfo*(dpy: PDisplay, which: int16, devi: PXkbDeviceInfoPtr): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSetDeviceInfo".}
-proc XkbChangeDeviceInfo*(dpy: PDisplay, desc: PXkbDeviceInfoPtr, 
-                          changes: PXkbDeviceChangesPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbChangeDeviceInfo".}
-proc XkbSetDeviceLedInfo*(dpy: PDisplay, devi: PXkbDeviceInfoPtr, 
-                          ledClass, ledID, which: int16): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetDeviceLedInfo".}
-proc XkbSetDeviceButtonActions*(dpy: PDisplay, devi: PXkbDeviceInfoPtr, 
-                                first, nBtns: int16): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbSetDeviceButtonActions".}
-
-proc XkbToControl*(c: int8): int8{.cdecl, dynlib: libX11, 
-                                   importc: "XkbToControl".}
-
-proc XkbSetDebuggingFlags*(dpy: PDisplay, mask, flags: int16, msg: cstring, 
-                           ctrls_mask, ctrls, rtrn_flags, rtrn_ctrls: int16): bool{.
-    cdecl, dynlib: libX11, importc: "XkbSetDebuggingFlags".}
-proc XkbApplyVirtualModChanges*(xkb: PXkbDescPtr, changed: int16, 
-                                changes: PXkbChangesPtr): bool{.cdecl, 
-    dynlib: libX11, importc: "XkbApplyVirtualModChanges".}
-
-# implementation
-
-proc XkbNoteIndicatorMapChanges(o, n: PXkbIndicatorChangesPtr, w: int16) = 
-  ##define XkbNoteIndicatorMapChanges(o,n,w) ((o)->map_changes|=((n)->map_changes&(w)))
-  o.map_changes = o.map_changes or (n.map_changes and w)
-
-proc XkbNoteIndicatorStateChanges(o, n: PXkbIndicatorChangesPtr, w: int16) = 
-  ##define XkbNoteIndicatorStateChanges(o,n,w) ((o)->state_changes|=((n)->state_changes&(w)))
-  o.state_changes = o.state_changes or (n.state_changes and (w))
-
-proc XkbGetIndicatorMapChanges(d: PDisplay, x: PXkbDescPtr, 
-                               c: PXkbIndicatorChangesPtr): TStatus = 
-  ##define XkbGetIndicatorMapChanges(d,x,c) (XkbGetIndicatorMap((d),(c)->map_changes,x)
-  Result = XkbGetIndicatorMap(d, c.map_changes, x)
-
-proc XkbChangeIndicatorMaps(d: PDisplay, x: PXkbDescPtr, 
-                            c: PXkbIndicatorChangesPtr): bool = 
-  ##define XkbChangeIndicatorMaps(d,x,c) (XkbSetIndicatorMap((d),(c)->map_changes,x))
-  Result = XkbSetIndicatorMap(d, c.map_changes, x)
-
-proc XkbGetControlsChanges(d: PDisplay, x: PXkbDescPtr, 
-                           c: PXkbControlsChangesPtr): TStatus = 
-  ##define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
-  Result = XkbGetControls(d, c.changed_ctrls, x)
-
-proc XkbChangeControls(d: PDisplay, x: PXkbDescPtr, c: PXkbControlsChangesPtr): bool = 
-  ##define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)
-  Result = XkbSetControls(d, c.changed_ctrls, x)
diff --git a/lib/wrappers/x11/xlib.nim b/lib/wrappers/x11/xlib.nim
deleted file mode 100755
index 19ebda9e0..000000000
--- a/lib/wrappers/x11/xlib.nim
+++ /dev/null
@@ -1,2218 +0,0 @@
-
-import 
-  x
-
-const 
-  libX11* = "libX11.so"
-
-type
-  cuint* = cint
-  cunsigned* = cint
-  cushort* = int16
-  Pcint* = ptr cint
-  PPcint* = ptr Pcint
-  PPcuchar* = ptr ptr cuchar
-  PWideChar* = ptr int16
-  PPChar* = ptr cstring
-  PPPChar* = ptr ptr cstring
-  Pculong* = ptr int
-  Pcuchar* = cstring
-  Pcuint* = ptr cint
-  Pcushort* = ptr int16
-#  Automatically converted by H2Pas 0.99.15 from xlib.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    xlib.h
-
-const 
-  XlibSpecificationRelease* = 6
-
-type 
-  PXPointer* = ptr TXPointer
-  TXPointer* = ptr char
-  PBool* = ptr TBool
-  TBool* = int           #cint?
-  PStatus* = ptr TStatus
-  TStatus* = cint
-
-const 
-  QueuedAlready* = 0
-  QueuedAfterReading* = 1
-  QueuedAfterFlush* = 2
-
-type 
-  PPXExtData* = ptr PXExtData
-  PXExtData* = ptr TXExtData
-  TXExtData*{.final.} = object 
-    number*: cint
-    next*: PXExtData
-    free_private*: proc (extension: PXExtData): cint{.cdecl.}
-    private_data*: TXPointer
-
-  PXExtCodes* = ptr TXExtCodes
-  TXExtCodes*{.final.} = object 
-    extension*: cint
-    major_opcode*: cint
-    first_event*: cint
-    first_error*: cint
-
-  PXPixmapFormatValues* = ptr TXPixmapFormatValues
-  TXPixmapFormatValues*{.final.} = object 
-    depth*: cint
-    bits_per_pixel*: cint
-    scanline_pad*: cint
-
-  PXGCValues* = ptr TXGCValues
-  TXGCValues*{.final.} = object 
-    function*: cint
-    plane_mask*: culong
-    foreground*: culong
-    background*: culong
-    line_width*: cint
-    line_style*: cint
-    cap_style*: cint
-    join_style*: cint
-    fill_style*: cint
-    fill_rule*: cint
-    arc_mode*: cint
-    tile*: TPixmap
-    stipple*: TPixmap
-    ts_x_origin*: cint
-    ts_y_origin*: cint
-    font*: TFont
-    subwindow_mode*: cint
-    graphics_exposures*: TBool
-    clip_x_origin*: cint
-    clip_y_origin*: cint
-    clip_mask*: TPixmap
-    dash_offset*: cint
-    dashes*: cchar
-
-  PXGC* = ptr TXGC
-  TXGC*{.final.} = object 
-  TGC* = PXGC
-  PGC* = ptr TGC
-  PVisual* = ptr TVisual
-  TVisual*{.final.} = object 
-    ext_data*: PXExtData
-    visualid*: TVisualID
-    c_class*: cint
-    red_mask*, green_mask*, blue_mask*: culong
-    bits_per_rgb*: cint
-    map_entries*: cint
-
-  PDepth* = ptr TDepth
-  TDepth*{.final.} = object 
-    depth*: cint
-    nvisuals*: cint
-    visuals*: PVisual
-
-  PXDisplay* = ptr TXDisplay
-  TXDisplay*{.final.} = object 
-  PScreen* = ptr TScreen
-  TScreen*{.final.} = object 
-    ext_data*: PXExtData
-    display*: PXDisplay
-    root*: TWindow
-    width*, height*: cint
-    mwidth*, mheight*: cint
-    ndepths*: cint
-    depths*: PDepth
-    root_depth*: cint
-    root_visual*: PVisual
-    default_gc*: TGC
-    cmap*: TColormap
-    white_pixel*: culong
-    black_pixel*: culong
-    max_maps*, min_maps*: cint
-    backing_store*: cint
-    save_unders*: TBool
-    root_input_mask*: clong
-
-  PScreenFormat* = ptr TScreenFormat
-  TScreenFormat*{.final.} = object 
-    ext_data*: PXExtData
-    depth*: cint
-    bits_per_pixel*: cint
-    scanline_pad*: cint
-
-  PXSetWindowAttributes* = ptr TXSetWindowAttributes
-  TXSetWindowAttributes*{.final.} = object 
-    background_pixmap*: TPixmap
-    background_pixel*: culong
-    border_pixmap*: TPixmap
-    border_pixel*: culong
-    bit_gravity*: cint
-    win_gravity*: cint
-    backing_store*: cint
-    backing_planes*: culong
-    backing_pixel*: culong
-    save_under*: TBool
-    event_mask*: clong
-    do_not_propagate_mask*: clong
-    override_redirect*: TBool
-    colormap*: TColormap
-    cursor*: TCursor
-
-  PXWindowAttributes* = ptr TXWindowAttributes
-  TXWindowAttributes*{.final.} = object 
-    x*, y*: cint
-    width*, height*: cint
-    border_width*: cint
-    depth*: cint
-    visual*: PVisual
-    root*: TWindow
-    c_class*: cint
-    bit_gravity*: cint
-    win_gravity*: cint
-    backing_store*: cint
-    backing_planes*: culong
-    backing_pixel*: culong
-    save_under*: TBool
-    colormap*: TColormap
-    map_installed*: TBool
-    map_state*: cint
-    all_event_masks*: clong
-    your_event_mask*: clong
-    do_not_propagate_mask*: clong
-    override_redirect*: TBool
-    screen*: PScreen
-
-  PXHostAddress* = ptr TXHostAddress
-  TXHostAddress*{.final.} = object 
-    family*: cint
-    len*: cint
-    address*: cstring
-
-  PXServerInterpretedAddress* = ptr TXServerInterpretedAddress
-  TXServerInterpretedAddress*{.final.} = object 
-    typelength*: cint
-    valuelength*: cint
-    theType*: cstring
-    value*: cstring
-
-  PXImage* = ptr TXImage
-  TF*{.final.} = object 
-    create_image*: proc (para1: PXDisplay, para2: PVisual, para3: cuint, 
-                         para4: cint, para5: cint, para6: cstring, para7: cuint, 
-                         para8: cuint, para9: cint, para10: cint): PXImage{.
-        cdecl.}
-    destroy_image*: proc (para1: PXImage): cint{.cdecl.}
-    get_pixel*: proc (para1: PXImage, para2: cint, para3: cint): culong{.cdecl.}
-    put_pixel*: proc (para1: PXImage, para2: cint, para3: cint, para4: culong): cint{.
-        cdecl.}
-    sub_image*: proc (para1: PXImage, para2: cint, para3: cint, para4: cuint, 
-                      para5: cuint): PXImage{.cdecl.}
-    add_pixel*: proc (para1: PXImage, para2: clong): cint{.cdecl.}
-
-  TXImage*{.final.} = object 
-    width*, height*: cint
-    xoffset*: cint
-    format*: cint
-    data*: cstring
-    byte_order*: cint
-    bitmap_unit*: cint
-    bitmap_bit_order*: cint
-    bitmap_pad*: cint
-    depth*: cint
-    bytes_per_line*: cint
-    bits_per_pixel*: cint
-    red_mask*: culong
-    green_mask*: culong
-    blue_mask*: culong
-    obdata*: TXPointer
-    f*: TF
-
-  PXWindowChanges* = ptr TXWindowChanges
-  TXWindowChanges*{.final.} = object 
-    x*, y*: cint
-    width*, height*: cint
-    border_width*: cint
-    sibling*: TWindow
-    stack_mode*: cint
-
-  PXColor* = ptr TXColor
-  TXColor*{.final.} = object 
-    pixel*: culong
-    red*, green*, blue*: cushort
-    flags*: cchar
-    pad*: cchar
-
-  PXSegment* = ptr TXSegment
-  TXSegment*{.final.} = object 
-    x1*, y1*, x2*, y2*: cshort
-
-  PXPoint* = ptr TXPoint
-  TXPoint*{.final.} = object 
-    x*, y*: cshort
-
-  PXRectangle* = ptr TXRectangle
-  TXRectangle*{.final.} = object 
-    x*, y*: cshort
-    width*, height*: cushort
-
-  PXArc* = ptr TXArc
-  TXArc*{.final.} = object 
-    x*, y*: cshort
-    width*, height*: cushort
-    angle1*, angle2*: cshort
-
-  PXKeyboardControl* = ptr TXKeyboardControl
-  TXKeyboardControl*{.final.} = object 
-    key_click_percent*: cint
-    bell_percent*: cint
-    bell_pitch*: cint
-    bell_duration*: cint
-    led*: cint
-    led_mode*: cint
-    key*: cint
-    auto_repeat_mode*: cint
-
-  PXKeyboardState* = ptr TXKeyboardState
-  TXKeyboardState*{.final.} = object 
-    key_click_percent*: cint
-    bell_percent*: cint
-    bell_pitch*, bell_duration*: cuint
-    led_mask*: culong
-    global_auto_repeat*: cint
-    auto_repeats*: array[0..31, cchar]
-
-  PXTimeCoord* = ptr TXTimeCoord
-  TXTimeCoord*{.final.} = object 
-    time*: TTime
-    x*, y*: cshort
-
-  PXModifierKeymap* = ptr TXModifierKeymap
-  TXModifierKeymap*{.final.} = object 
-    max_keypermod*: cint
-    modifiermap*: PKeyCode
-
-  PDisplay* = ptr TDisplay
-  TDisplay* = TXDisplay
-  PXPrivate* = ptr TXPrivate
-  TXPrivate*{.final.} = object 
-  PXrmHashBucketRec* = ptr TXrmHashBucketRec
-  TXrmHashBucketRec*{.final.} = object 
-  PXPrivDisplay* = ptr TXPrivDisplay
-  TXPrivDisplay*{.final.} = object 
-    ext_data*: PXExtData
-    private1*: PXPrivate
-    fd*: cint
-    private2*: cint
-    proto_major_version*: cint
-    proto_minor_version*: cint
-    vendor*: cstring
-    private3*: TXID
-    private4*: TXID
-    private5*: TXID
-    private6*: cint
-    resource_alloc*: proc (para1: PXDisplay): TXID{.cdecl.}
-    byte_order*: cint
-    bitmap_unit*: cint
-    bitmap_pad*: cint
-    bitmap_bit_order*: cint
-    nformats*: cint
-    pixmap_format*: PScreenFormat
-    private8*: cint
-    release*: cint
-    private9*, private10*: PXPrivate
-    qlen*: cint
-    last_request_read*: culong
-    request*: culong
-    private11*: TXPointer
-    private12*: TXPointer
-    private13*: TXPointer
-    private14*: TXPointer
-    max_request_size*: cunsigned
-    db*: PXrmHashBucketRec
-    private15*: proc (para1: PXDisplay): cint{.cdecl.}
-    display_name*: cstring
-    default_screen*: cint
-    nscreens*: cint
-    screens*: PScreen
-    motion_buffer*: culong
-    private16*: culong
-    min_keycode*: cint
-    max_keycode*: cint
-    private17*: TXPointer
-    private18*: TXPointer
-    private19*: cint
-    xdefaults*: cstring
-
-  PXKeyEvent* = ptr TXKeyEvent
-  TXKeyEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    root*: TWindow
-    subwindow*: TWindow
-    time*: TTime
-    x*, y*: cint
-    x_root*, y_root*: cint
-    state*: cuint
-    keycode*: cuint
-    same_screen*: TBool
-
-  PXKeyPressedEvent* = ptr TXKeyPressedEvent
-  TXKeyPressedEvent* = TXKeyEvent
-  PXKeyReleasedEvent* = ptr TXKeyReleasedEvent
-  TXKeyReleasedEvent* = TXKeyEvent
-  PXButtonEvent* = ptr TXButtonEvent
-  TXButtonEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    root*: TWindow
-    subwindow*: TWindow
-    time*: TTime
-    x*, y*: cint
-    x_root*, y_root*: cint
-    state*: cuint
-    button*: cuint
-    same_screen*: TBool
-
-  PXButtonPressedEvent* = ptr TXButtonPressedEvent
-  TXButtonPressedEvent* = TXButtonEvent
-  PXButtonReleasedEvent* = ptr TXButtonReleasedEvent
-  TXButtonReleasedEvent* = TXButtonEvent
-  PXMotionEvent* = ptr TXMotionEvent
-  TXMotionEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    root*: TWindow
-    subwindow*: TWindow
-    time*: TTime
-    x*, y*: cint
-    x_root*, y_root*: cint
-    state*: cuint
-    is_hint*: cchar
-    same_screen*: TBool
-
-  PXPointerMovedEvent* = ptr TXPointerMovedEvent
-  TXPointerMovedEvent* = TXMotionEvent
-  PXCrossingEvent* = ptr TXCrossingEvent
-  TXCrossingEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    root*: TWindow
-    subwindow*: TWindow
-    time*: TTime
-    x*, y*: cint
-    x_root*, y_root*: cint
-    mode*: cint
-    detail*: cint
-    same_screen*: TBool
-    focus*: TBool
-    state*: cuint
-
-  PXEnterWindowEvent* = ptr TXEnterWindowEvent
-  TXEnterWindowEvent* = TXCrossingEvent
-  PXLeaveWindowEvent* = ptr TXLeaveWindowEvent
-  TXLeaveWindowEvent* = TXCrossingEvent
-  PXFocusChangeEvent* = ptr TXFocusChangeEvent
-  TXFocusChangeEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    mode*: cint
-    detail*: cint
-
-  PXFocusInEvent* = ptr TXFocusInEvent
-  TXFocusInEvent* = TXFocusChangeEvent
-  PXFocusOutEvent* = ptr TXFocusOutEvent
-  TXFocusOutEvent* = TXFocusChangeEvent
-  PXKeymapEvent* = ptr TXKeymapEvent
-  TXKeymapEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    key_vector*: array[0..31, cchar]
-
-  PXExposeEvent* = ptr TXExposeEvent
-  TXExposeEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    x*, y*: cint
-    width*, height*: cint
-    count*: cint
-
-  PXGraphicsExposeEvent* = ptr TXGraphicsExposeEvent
-  TXGraphicsExposeEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    drawable*: TDrawable
-    x*, y*: cint
-    width*, height*: cint
-    count*: cint
-    major_code*: cint
-    minor_code*: cint
-
-  PXNoExposeEvent* = ptr TXNoExposeEvent
-  TXNoExposeEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    drawable*: TDrawable
-    major_code*: cint
-    minor_code*: cint
-
-  PXVisibilityEvent* = ptr TXVisibilityEvent
-  TXVisibilityEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    state*: cint
-
-  PXCreateWindowEvent* = ptr TXCreateWindowEvent
-  TXCreateWindowEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    parent*: TWindow
-    window*: TWindow
-    x*, y*: cint
-    width*, height*: cint
-    border_width*: cint
-    override_redirect*: TBool
-
-  PXDestroyWindowEvent* = ptr TXDestroyWindowEvent
-  TXDestroyWindowEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-
-  PXUnmapEvent* = ptr TXUnmapEvent
-  TXUnmapEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-    from_configure*: TBool
-
-  PXMapEvent* = ptr TXMapEvent
-  TXMapEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-    override_redirect*: TBool
-
-  PXMapRequestEvent* = ptr TXMapRequestEvent
-  TXMapRequestEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    parent*: TWindow
-    window*: TWindow
-
-  PXReparentEvent* = ptr TXReparentEvent
-  TXReparentEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-    parent*: TWindow
-    x*, y*: cint
-    override_redirect*: TBool
-
-  PXConfigureEvent* = ptr TXConfigureEvent
-  TXConfigureEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-    x*, y*: cint
-    width*, height*: cint
-    border_width*: cint
-    above*: TWindow
-    override_redirect*: TBool
-
-  PXGravityEvent* = ptr TXGravityEvent
-  TXGravityEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-    x*, y*: cint
-
-  PXResizeRequestEvent* = ptr TXResizeRequestEvent
-  TXResizeRequestEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    width*, height*: cint
-
-  PXConfigureRequestEvent* = ptr TXConfigureRequestEvent
-  TXConfigureRequestEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    parent*: TWindow
-    window*: TWindow
-    x*, y*: cint
-    width*, height*: cint
-    border_width*: cint
-    above*: TWindow
-    detail*: cint
-    value_mask*: culong
-
-  PXCirculateEvent* = ptr TXCirculateEvent
-  TXCirculateEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    event*: TWindow
-    window*: TWindow
-    place*: cint
-
-  PXCirculateRequestEvent* = ptr TXCirculateRequestEvent
-  TXCirculateRequestEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    parent*: TWindow
-    window*: TWindow
-    place*: cint
-
-  PXPropertyEvent* = ptr TXPropertyEvent
-  TXPropertyEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    atom*: TAtom
-    time*: TTime
-    state*: cint
-
-  PXSelectionClearEvent* = ptr TXSelectionClearEvent
-  TXSelectionClearEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    selection*: TAtom
-    time*: TTime
-
-  PXSelectionRequestEvent* = ptr TXSelectionRequestEvent
-  TXSelectionRequestEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    owner*: TWindow
-    requestor*: TWindow
-    selection*: TAtom
-    target*: TAtom
-    property*: TAtom
-    time*: TTime
-
-  PXSelectionEvent* = ptr TXSelectionEvent
-  TXSelectionEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    requestor*: TWindow
-    selection*: TAtom
-    target*: TAtom
-    property*: TAtom
-    time*: TTime
-
-  PXColormapEvent* = ptr TXColormapEvent
-  TXColormapEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    colormap*: TColormap
-    c_new*: TBool
-    state*: cint
-
-  PXClientMessageEvent* = ptr TXClientMessageEvent
-  TXClientMessageEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    message_type*: TAtom
-    format*: cint
-    data*: array[0..19, char]
-
-  PXMappingEvent* = ptr TXMappingEvent
-  TXMappingEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-    request*: cint
-    first_keycode*: cint
-    count*: cint
-
-  PXErrorEvent* = ptr TXErrorEvent
-  TXErrorEvent*{.final.} = object 
-    theType*: cint
-    display*: PDisplay
-    resourceid*: TXID
-    serial*: culong
-    error_code*: cuchar
-    request_code*: cuchar
-    minor_code*: cuchar
-
-  PXAnyEvent* = ptr TXAnyEvent
-  TXAnyEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    window*: TWindow
-
-  PXEvent* = ptr TXEvent
-  TXEvent*{.final.} = object 
-    theType*: cint
-    pad*: array[0..22, clong] #
-                              #       case longint of
-                              #          0 : ( theType : cint );
-                              #          1 : ( xany : TXAnyEvent );
-                              #          2 : ( xkey : TXKeyEvent );
-                              #          3 : ( xbutton : TXButtonEvent );
-                              #          4 : ( xmotion : TXMotionEvent );
-                              #          5 : ( xcrossing : TXCrossingEvent );
-                              #          6 : ( xfocus : TXFocusChangeEvent );
-                              #          7 : ( xexpose : TXExposeEvent );
-                              #          8 : ( xgraphicsexpose : TXGraphicsExposeEvent );
-                              #          9 : ( xnoexpose : TXNoExposeEvent );
-                              #          10 : ( xvisibility : TXVisibilityEvent );
-                              #          11 : ( xcreatewindow : TXCreateWindowEvent );
-                              #          12 : ( xdestroywindow : TXDestroyWindowEvent );
-                              #          13 : ( xunmap : TXUnmapEvent );
-                              #          14 : ( xmap : TXMapEvent );
-                              #          15 : ( xmaprequest : TXMapRequestEvent );
-                              #          16 : ( xreparent : TXReparentEvent );
-                              #          17 : ( xconfigure : TXConfigureEvent );
-                              #          18 : ( xgravity : TXGravityEvent );
-                              #          19 : ( xresizerequest : TXResizeRequestEvent );
-                              #          20 : ( xconfigurerequest : TXConfigureRequestEvent );
-                              #          21 : ( xcirculate : TXCirculateEvent );
-                              #          22 : ( xcirculaterequest : TXCirculateRequestEvent );
-                              #          23 : ( xproperty : TXPropertyEvent );
-                              #          24 : ( xselectionclear : TXSelectionClearEvent );
-                              #          25 : ( xselectionrequest : TXSelectionRequestEvent );
-                              #          26 : ( xselection : TXSelectionEvent );
-                              #          27 : ( xcolormap : TXColormapEvent );
-                              #          28 : ( xclient : TXClientMessageEvent );
-                              #          29 : ( xmapping : TXMappingEvent );
-                              #          30 : ( xerror : TXErrorEvent );
-                              #          31 : ( xkeymap : TXKeymapEvent );
-                              #          32 : ( pad : array[0..23] of clong );
-                              #          
-  
-
-type 
-  PXCharStruct* = ptr TXCharStruct
-  TXCharStruct*{.final.} = object 
-    lbearing*: cshort
-    rbearing*: cshort
-    width*: cshort
-    ascent*: cshort
-    descent*: cshort
-    attributes*: cushort
-
-  PXFontProp* = ptr TXFontProp
-  TXFontProp*{.final.} = object 
-    name*: TAtom
-    card32*: culong
-
-  PPPXFontStruct* = ptr PPXFontStruct
-  PPXFontStruct* = ptr PXFontStruct
-  PXFontStruct* = ptr TXFontStruct
-  TXFontStruct*{.final.} = object 
-    ext_data*: PXExtData
-    fid*: TFont
-    direction*: cunsigned
-    min_char_or_byte2*: cunsigned
-    max_char_or_byte2*: cunsigned
-    min_byte1*: cunsigned
-    max_byte1*: cunsigned
-    all_chars_exist*: TBool
-    default_char*: cunsigned
-    n_properties*: cint
-    properties*: PXFontProp
-    min_bounds*: TXCharStruct
-    max_bounds*: TXCharStruct
-    per_char*: PXCharStruct
-    ascent*: cint
-    descent*: cint
-
-  PXTextItem* = ptr TXTextItem
-  TXTextItem*{.final.} = object 
-    chars*: cstring
-    nchars*: cint
-    delta*: cint
-    font*: TFont
-
-  PXChar2b* = ptr TXChar2b
-  TXChar2b*{.final.} = object 
-    byte1*: cuchar
-    byte2*: cuchar
-
-  PXTextItem16* = ptr TXTextItem16
-  TXTextItem16*{.final.} = object 
-    chars*: PXChar2b
-    nchars*: cint
-    delta*: cint
-    font*: TFont
-
-  PXEDataObject* = ptr TXEDataObject
-  TXEDataObject*{.final.} = object 
-    display*: PDisplay        #case longint of
-                              #          0 : ( display : PDisplay );
-                              #          1 : ( gc : TGC );
-                              #          2 : ( visual : PVisual );
-                              #          3 : ( screen : PScreen );
-                              #          4 : ( pixmap_format : PScreenFormat );
-                              #          5 : ( font : PXFontStruct );
-  
-  PXFontSetExtents* = ptr TXFontSetExtents
-  TXFontSetExtents*{.final.} = object 
-    max_ink_extent*: TXRectangle
-    max_logical_extent*: TXRectangle
-
-  PXOM* = ptr TXOM
-  TXOM*{.final.} = object 
-  PXOC* = ptr TXOC
-  TXOC*{.final.} = object 
-  TXFontSet* = PXOC
-  PXFontSet* = ptr TXFontSet
-  PXmbTextItem* = ptr TXmbTextItem
-  TXmbTextItem*{.final.} = object 
-    chars*: cstring
-    nchars*: cint
-    delta*: cint
-    font_set*: TXFontSet
-
-  PXwcTextItem* = ptr TXwcTextItem
-  TXwcTextItem*{.final.} = object 
-    chars*: PWideChar         #wchar_t*
-    nchars*: cint
-    delta*: cint
-    font_set*: TXFontSet
-
-
-const 
-  XNRequiredCharSet* = "requiredCharSet"
-  XNQueryOrientation* = "queryOrientation"
-  XNBaseFontName* = "baseFontName"
-  XNOMAutomatic* = "omAutomatic"
-  XNMissingCharSet* = "missingCharSet"
-  XNDefaultString* = "defaultString"
-  XNOrientation* = "orientation"
-  XNDirectionalDependentDrawing* = "directionalDependentDrawing"
-  XNContextualDrawing* = "contextualDrawing"
-  XNFontInfo* = "fontInfo"
-
-type 
-  PXOMCharSetList* = ptr TXOMCharSetList
-  TXOMCharSetList*{.final.} = object 
-    charset_count*: cint
-    charset_list*: PPChar
-
-  PXOrientation* = ptr TXOrientation
-  TXOrientation* = enum 
-    XOMOrientation_LTR_TTB, XOMOrientation_RTL_TTB, XOMOrientation_TTB_LTR, 
-    XOMOrientation_TTB_RTL, XOMOrientation_Context
-  PXOMOrientation* = ptr TXOMOrientation
-  TXOMOrientation*{.final.} = object 
-    num_orientation*: cint
-    orientation*: PXOrientation
-
-  PXOMFontInfo* = ptr TXOMFontInfo
-  TXOMFontInfo*{.final.} = object 
-    num_font*: cint
-    font_struct_list*: ptr PXFontStruct
-    font_name_list*: PPChar
-
-  PXIM* = ptr TXIM
-  TXIM*{.final.} = object 
-  PXIC* = ptr TXIC
-  TXIC*{.final.} = object 
-  TXIMProc* = proc (para1: TXIM, para2: TXPointer, para3: TXPointer){.cdecl.}
-  TXICProc* = proc (para1: TXIC, para2: TXPointer, para3: TXPointer): TBool{.
-      cdecl.}
-  TXIDProc* = proc (para1: PDisplay, para2: TXPointer, para3: TXPointer){.cdecl.}
-  PXIMStyle* = ptr TXIMStyle
-  TXIMStyle* = culong
-  PXIMStyles* = ptr TXIMStyles
-  TXIMStyles*{.final.} = object 
-    count_styles*: cushort
-    supported_styles*: PXIMStyle
-
-
-const 
-  XIMPreeditArea* = 0x00000001
-  XIMPreeditCallbacks* = 0x00000002
-  XIMPreeditPosition* = 0x00000004
-  XIMPreeditNothing* = 0x00000008
-  XIMPreeditNone* = 0x00000010
-  XIMStatusArea* = 0x00000100
-  XIMStatusCallbacks* = 0x00000200
-  XIMStatusNothing* = 0x00000400
-  XIMStatusNone* = 0x00000800
-  XNVaNestedList* = "XNVaNestedList"
-  XNQueryInputStyle* = "queryInputStyle"
-  XNClientWindow* = "clientWindow"
-  XNInputStyle* = "inputStyle"
-  XNFocusWindow* = "focusWindow"
-  XNResourceName* = "resourceName"
-  XNResourceClass* = "resourceClass"
-  XNGeometryCallback* = "geometryCallback"
-  XNDestroyCallback* = "destroyCallback"
-  XNFilterEvents* = "filterEvents"
-  XNPreeditStartCallback* = "preeditStartCallback"
-  XNPreeditDoneCallback* = "preeditDoneCallback"
-  XNPreeditDrawCallback* = "preeditDrawCallback"
-  XNPreeditCaretCallback* = "preeditCaretCallback"
-  XNPreeditStateNotifyCallback* = "preeditStateNotifyCallback"
-  XNPreeditAttributes* = "preeditAttributes"
-  XNStatusStartCallback* = "statusStartCallback"
-  XNStatusDoneCallback* = "statusDoneCallback"
-  XNStatusDrawCallback* = "statusDrawCallback"
-  XNStatusAttributes* = "statusAttributes"
-  XNArea* = "area"
-  XNAreaNeeded* = "areaNeeded"
-  XNSpotLocation* = "spotLocation"
-  XNColormap* = "colorMap"
-  XNStdColormap* = "stdColorMap"
-  XNForeground* = "foreground"
-  XNBackground* = "background"
-  XNBackgroundPixmap* = "backgroundPixmap"
-  XNFontSet* = "fontSet"
-  XNLineSpace* = "lineSpace"
-  XNCursor* = "cursor"
-  XNQueryIMValuesList* = "queryIMValuesList"
-  XNQueryICValuesList* = "queryICValuesList"
-  XNVisiblePosition* = "visiblePosition"
-  XNR6PreeditCallback* = "r6PreeditCallback"
-  XNStringConversionCallback* = "stringConversionCallback"
-  XNStringConversion* = "stringConversion"
-  XNResetState* = "resetState"
-  XNHotKey* = "hotKey"
-  XNHotKeyState* = "hotKeyState"
-  XNPreeditState* = "preeditState"
-  XNSeparatorofNestedList* = "separatorofNestedList"
-  XBufferOverflow* = - (1)
-  XLookupNone* = 1
-  XLookupChars* = 2
-  XLookupKeySymVal* = 3
-  XLookupBoth* = 4
-
-type 
-  PXVaNestedList* = ptr TXVaNestedList
-  TXVaNestedList* = pointer
-  PXIMCallback* = ptr TXIMCallback
-  TXIMCallback*{.final.} = object 
-    client_data*: TXPointer
-    callback*: TXIMProc
-
-  PXICCallback* = ptr TXICCallback
-  TXICCallback*{.final.} = object 
-    client_data*: TXPointer
-    callback*: TXICProc
-
-  PXIMFeedback* = ptr TXIMFeedback
-  TXIMFeedback* = culong
-
-const 
-  XIMReverse* = 1
-  XIMUnderline* = 1 shl 1
-  XIMHighlight* = 1 shl 2
-  XIMPrimary* = 1 shl 5
-  XIMSecondary* = 1 shl 6
-  XIMTertiary* = 1 shl 7
-  XIMVisibleToForward* = 1 shl 8
-  XIMVisibleToBackword* = 1 shl 9
-  XIMVisibleToCenter* = 1 shl 10
-
-type 
-  PXIMText* = ptr TXIMText
-  TXIMText*{.final.} = object 
-    len*: cushort
-    feedback*: PXIMFeedback
-    encoding_is_wchar*: TBool
-    multi_byte*: cstring
-
-  PXIMPreeditState* = ptr TXIMPreeditState
-  TXIMPreeditState* = culong
-
-const 
-  XIMPreeditUnKnown* = 0
-  XIMPreeditEnable* = 1
-  XIMPreeditDisable* = 1 shl 1
-
-type 
-  PXIMPreeditStateNotifyCallbackStruct* = ptr TXIMPreeditStateNotifyCallbackStruct
-  TXIMPreeditStateNotifyCallbackStruct*{.final.} = object 
-    state*: TXIMPreeditState
-
-  PXIMResetState* = ptr TXIMResetState
-  TXIMResetState* = culong
-
-const 
-  XIMInitialState* = 1
-  XIMPreserveState* = 1 shl 1
-
-type 
-  PXIMStringConversionFeedback* = ptr TXIMStringConversionFeedback
-  TXIMStringConversionFeedback* = culong
-
-const 
-  XIMStringConversionLeftEdge* = 0x00000001
-  XIMStringConversionRightEdge* = 0x00000002
-  XIMStringConversionTopEdge* = 0x00000004
-  XIMStringConversionBottomEdge* = 0x00000008
-  XIMStringConversionConcealed* = 0x00000010
-  XIMStringConversionWrapped* = 0x00000020
-
-type 
-  PXIMStringConversionText* = ptr TXIMStringConversionText
-  TXIMStringConversionText*{.final.} = object 
-    len*: cushort
-    feedback*: PXIMStringConversionFeedback
-    encoding_is_wchar*: TBool
-    mbs*: cstring
-
-  PXIMStringConversionPosition* = ptr TXIMStringConversionPosition
-  TXIMStringConversionPosition* = cushort
-  PXIMStringConversionType* = ptr TXIMStringConversionType
-  TXIMStringConversionType* = cushort
-
-const 
-  XIMStringConversionBuffer* = 0x00000001
-  XIMStringConversionLine* = 0x00000002
-  XIMStringConversionWord* = 0x00000003
-  XIMStringConversionChar* = 0x00000004
-
-type 
-  PXIMStringConversionOperation* = ptr TXIMStringConversionOperation
-  TXIMStringConversionOperation* = cushort
-
-const 
-  XIMStringConversionSubstitution* = 0x00000001
-  XIMStringConversionRetrieval* = 0x00000002
-
-type 
-  PXIMCaretDirection* = ptr TXIMCaretDirection
-  TXIMCaretDirection* = enum 
-    XIMForwardChar, XIMBackwardChar, XIMForwardWord, XIMBackwardWord, 
-    XIMCaretUp, XIMCaretDown, XIMNextLine, XIMPreviousLine, XIMLineStart, 
-    XIMLineEnd, XIMAbsolutePosition, XIMDontChange
-  PXIMStringConversionCallbackStruct* = ptr TXIMStringConversionCallbackStruct
-  TXIMStringConversionCallbackStruct*{.final.} = object 
-    position*: TXIMStringConversionPosition
-    direction*: TXIMCaretDirection
-    operation*: TXIMStringConversionOperation
-    factor*: cushort
-    text*: PXIMStringConversionText
-
-  PXIMPreeditDrawCallbackStruct* = ptr TXIMPreeditDrawCallbackStruct
-  TXIMPreeditDrawCallbackStruct*{.final.} = object 
-    caret*: cint
-    chg_first*: cint
-    chg_length*: cint
-    text*: PXIMText
-
-  PXIMCaretStyle* = ptr TXIMCaretStyle
-  TXIMCaretStyle* = enum 
-    XIMIsInvisible, XIMIsPrimary, XIMIsSecondary
-  PXIMPreeditCaretCallbackStruct* = ptr TXIMPreeditCaretCallbackStruct
-  TXIMPreeditCaretCallbackStruct*{.final.} = object 
-    position*: cint
-    direction*: TXIMCaretDirection
-    style*: TXIMCaretStyle
-
-  PXIMStatusDataType* = ptr TXIMStatusDataType
-  TXIMStatusDataType* = enum 
-    XIMTextType, XIMBitmapType
-  PXIMStatusDrawCallbackStruct* = ptr TXIMStatusDrawCallbackStruct
-  TXIMStatusDrawCallbackStruct*{.final.} = object 
-    theType*: TXIMStatusDataType
-    bitmap*: TPixmap
-
-  PXIMHotKeyTrigger* = ptr TXIMHotKeyTrigger
-  TXIMHotKeyTrigger*{.final.} = object 
-    keysym*: TKeySym
-    modifier*: cint
-    modifier_mask*: cint
-
-  PXIMHotKeyTriggers* = ptr TXIMHotKeyTriggers
-  TXIMHotKeyTriggers*{.final.} = object 
-    num_hot_key*: cint
-    key*: PXIMHotKeyTrigger
-
-  PXIMHotKeyState* = ptr TXIMHotKeyState
-  TXIMHotKeyState* = culong
-
-const 
-  XIMHotKeyStateON* = 0x00000001
-  XIMHotKeyStateOFF* = 0x00000002
-
-type 
-  PXIMValuesList* = ptr TXIMValuesList
-  TXIMValuesList*{.final.} = object 
-    count_values*: cushort
-    supported_values*: PPChar
-
-
-type 
-  funcdisp* = proc (display: PDisplay): cint{.cdecl.}
-  funcifevent* = proc (display: PDisplay, event: PXEvent, p: TXPointer): TBool{.
-      cdecl.}
-  chararr32* = array[0..31, char]
-
-const 
-  AllPlanes*: culong = culong(not 0)
-
-proc XLoadQueryFont*(para1: PDisplay, para2: cstring): PXFontStruct{.cdecl, 
-    dynlib: libX11, importc.}
-proc XQueryFont*(para1: PDisplay, para2: TXID): PXFontStruct{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetMotionEvents*(para1: PDisplay, para2: TWindow, para3: TTime, 
-                       para4: TTime, para5: Pcint): PXTimeCoord{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDeleteModifiermapEntry*(para1: PXModifierKeymap, para2: TKeyCode, 
-                              para3: cint): PXModifierKeymap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetModifierMapping*(para1: PDisplay): PXModifierKeymap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XInsertModifiermapEntry*(para1: PXModifierKeymap, para2: TKeyCode, 
-                              para3: cint): PXModifierKeymap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XNewModifiermap*(para1: cint): PXModifierKeymap{.cdecl, dynlib: libX11, 
-    importc.}
-proc XCreateImage*(para1: PDisplay, para2: PVisual, para3: cuint, para4: cint, 
-                   para5: cint, para6: cstring, para7: cuint, para8: cuint, 
-                   para9: cint, para10: cint): PXImage{.cdecl, dynlib: libX11, 
-    importc.}
-proc XInitImage*(para1: PXImage): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XGetImage*(para1: PDisplay, para2: TDrawable, para3: cint, para4: cint, 
-                para5: cuint, para6: cuint, para7: culong, para8: cint): PXImage{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetSubImage*(para1: PDisplay, para2: TDrawable, para3: cint, para4: cint, 
-                   para5: cuint, para6: cuint, para7: culong, para8: cint, 
-                   para9: PXImage, para10: cint, para11: cint): PXImage{.cdecl, 
-    dynlib: libX11, importc.}
-proc XOpenDisplay*(para1: cstring): PDisplay{.cdecl, dynlib: libX11, importc.}
-proc XrmInitialize*(){.cdecl, dynlib: libX11, importc.}
-proc XFetchBytes*(para1: PDisplay, para2: Pcint): cstring{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFetchBuffer*(para1: PDisplay, para2: Pcint, para3: cint): cstring{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetAtomName*(para1: PDisplay, para2: TAtom): cstring{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetAtomNames*(para1: PDisplay, para2: PAtom, para3: cint, para4: PPchar): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetDefault*(para1: PDisplay, para2: cstring, para3: cstring): cstring{.
-    cdecl, dynlib: libX11, importc.}
-proc XDisplayName*(para1: cstring): cstring{.cdecl, dynlib: libX11, importc.}
-proc XKeysymToString*(para1: TKeySym): cstring{.cdecl, dynlib: libX11, importc.}
-proc XSynchronize*(para1: PDisplay, para2: TBool): funcdisp{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetAfterFunction*(para1: PDisplay, para2: funcdisp): funcdisp{.cdecl, 
-    dynlib: libX11, importc.}
-proc XInternAtom*(para1: PDisplay, para2: cstring, para3: TBool): TAtom{.cdecl, 
-    dynlib: libX11, importc.}
-proc XInternAtoms*(para1: PDisplay, para2: PPchar, para3: cint, para4: TBool, 
-                   para5: PAtom): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XCopyColormapAndFree*(para1: PDisplay, para2: TColormap): TColormap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XCreateColormap*(para1: PDisplay, para2: TWindow, para3: PVisual, 
-                      para4: cint): TColormap{.cdecl, dynlib: libX11, importc.}
-proc XCreatePixmapCursor*(para1: PDisplay, para2: TPixmap, para3: TPixmap, 
-                          para4: PXColor, para5: PXColor, para6: cuint, 
-                          para7: cuint): TCursor{.cdecl, dynlib: libX11, importc.}
-proc XCreateGlyphCursor*(para1: PDisplay, para2: TFont, para3: TFont, 
-                         para4: cuint, para5: cuint, para6: PXColor, 
-                         para7: PXColor): TCursor{.cdecl, dynlib: libX11, 
-    importc.}
-proc XCreateFontCursor*(para1: PDisplay, para2: cuint): TCursor{.cdecl, 
-    dynlib: libX11, importc.}
-proc XLoadFont*(para1: PDisplay, para2: cstring): TFont{.cdecl, dynlib: libX11, 
-    importc.}
-proc XCreateGC*(para1: PDisplay, para2: TDrawable, para3: culong, 
-                para4: PXGCValues): TGC{.cdecl, dynlib: libX11, importc.}
-proc XGContextFromGC*(para1: TGC): TGContext{.cdecl, dynlib: libX11, importc.}
-proc XFlushGC*(para1: PDisplay, para2: TGC){.cdecl, dynlib: libX11, importc.}
-proc XCreatePixmap*(para1: PDisplay, para2: TDrawable, para3: cuint, 
-                    para4: cuint, para5: cuint): TPixmap{.cdecl, dynlib: libX11, 
-    importc.}
-proc XCreateBitmapFromData*(para1: PDisplay, para2: TDrawable, para3: cstring, 
-                            para4: cuint, para5: cuint): TPixmap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XCreatePixmapFromBitmapData*(para1: PDisplay, para2: TDrawable, 
-                                  para3: cstring, para4: cuint, para5: cuint, 
-                                  para6: culong, para7: culong, para8: cuint): TPixmap{.
-    cdecl, dynlib: libX11, importc.}
-proc XCreateSimpleWindow*(para1: PDisplay, para2: TWindow, para3: cint, 
-                          para4: cint, para5: cuint, para6: cuint, para7: cuint, 
-                          para8: culong, para9: culong): TWindow{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetSelectionOwner*(para1: PDisplay, para2: TAtom): TWindow{.cdecl, 
-    dynlib: libX11, importc.}
-proc XCreateWindow*(para1: PDisplay, para2: TWindow, para3: cint, para4: cint, 
-                    para5: cuint, para6: cuint, para7: cuint, para8: cint, 
-                    para9: cuint, para10: PVisual, para11: culong, 
-                    para12: PXSetWindowAttributes): TWindow{.cdecl, 
-    dynlib: libX11, importc.}
-proc XListInstalledColormaps*(para1: PDisplay, para2: TWindow, para3: Pcint): PColormap{.
-    cdecl, dynlib: libX11, importc.}
-proc XListFonts*(para1: PDisplay, para2: cstring, para3: cint, para4: Pcint): PPChar{.
-    cdecl, dynlib: libX11, importc.}
-proc XListFontsWithInfo*(para1: PDisplay, para2: cstring, para3: cint, 
-                         para4: Pcint, para5: PPXFontStruct): PPChar{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetFontPath*(para1: PDisplay, para2: Pcint): PPChar{.cdecl, 
-    dynlib: libX11, importc.}
-proc XListExtensions*(para1: PDisplay, para2: Pcint): PPChar{.cdecl, 
-    dynlib: libX11, importc.}
-proc XListProperties*(para1: PDisplay, para2: TWindow, para3: Pcint): PAtom{.
-    cdecl, dynlib: libX11, importc.}
-proc XListHosts*(para1: PDisplay, para2: Pcint, para3: PBool): PXHostAddress{.
-    cdecl, dynlib: libX11, importc.}
-proc XKeycodeToKeysym*(para1: PDisplay, para2: TKeyCode, para3: cint): TKeySym{.
-    cdecl, dynlib: libX11, importc.}
-proc XLookupKeysym*(para1: PXKeyEvent, para2: cint): TKeySym{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetKeyboardMapping*(para1: PDisplay, para2: TKeyCode, para3: cint, 
-                          para4: Pcint): PKeySym{.cdecl, dynlib: libX11, importc.}
-proc XStringToKeysym*(para1: cstring): TKeySym{.cdecl, dynlib: libX11, importc.}
-proc XMaxRequestSize*(para1: PDisplay): clong{.cdecl, dynlib: libX11, importc.}
-proc XExtendedMaxRequestSize*(para1: PDisplay): clong{.cdecl, dynlib: libX11, 
-    importc.}
-proc XResourceManagerString*(para1: PDisplay): cstring{.cdecl, dynlib: libX11, 
-    importc.}
-proc XScreenResourceString*(para1: PScreen): cstring{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayMotionBufferSize*(para1: PDisplay): culong{.cdecl, dynlib: libX11, 
-    importc.}
-proc XVisualIDFromVisual*(para1: PVisual): TVisualID{.cdecl, dynlib: libX11, 
-    importc.}
-proc XInitThreads*(): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XLockDisplay*(para1: PDisplay){.cdecl, dynlib: libX11, importc.}
-proc XUnlockDisplay*(para1: PDisplay){.cdecl, dynlib: libX11, importc.}
-proc XInitExtension*(para1: PDisplay, para2: cstring): PXExtCodes{.cdecl, 
-    dynlib: libX11, importc.}
-proc XAddExtension*(para1: PDisplay): PXExtCodes{.cdecl, dynlib: libX11, importc.}
-proc XFindOnExtensionList*(para1: PPXExtData, para2: cint): PXExtData{.cdecl, 
-    dynlib: libX11, importc.}
-proc XEHeadOfExtensionList*(para1: TXEDataObject): PPXExtData{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRootWindow*(para1: PDisplay, para2: cint): TWindow{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDefaultRootWindow*(para1: PDisplay): TWindow{.cdecl, dynlib: libX11, 
-    importc.}
-proc XRootWindowOfScreen*(para1: PScreen): TWindow{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDefaultVisual*(para1: PDisplay, para2: cint): PVisual{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDefaultVisualOfScreen*(para1: PScreen): PVisual{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDefaultGC*(para1: PDisplay, para2: cint): TGC{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDefaultGCOfScreen*(para1: PScreen): TGC{.cdecl, dynlib: libX11, importc.}
-proc XBlackPixel*(para1: PDisplay, para2: cint): culong{.cdecl, dynlib: libX11, 
-    importc.}
-proc XWhitePixel*(para1: PDisplay, para2: cint): culong{.cdecl, dynlib: libX11, 
-    importc.}
-proc XAllPlanes*(): culong{.cdecl, dynlib: libX11, importc.}
-proc XBlackPixelOfScreen*(para1: PScreen): culong{.cdecl, dynlib: libX11, 
-    importc.}
-proc XWhitePixelOfScreen*(para1: PScreen): culong{.cdecl, dynlib: libX11, 
-    importc.}
-proc XNextRequest*(para1: PDisplay): culong{.cdecl, dynlib: libX11, importc.}
-proc XLastKnownRequestProcessed*(para1: PDisplay): culong{.cdecl, 
-    dynlib: libX11, importc.}
-proc XServerVendor*(para1: PDisplay): cstring{.cdecl, dynlib: libX11, importc.}
-proc XDisplayString*(para1: PDisplay): cstring{.cdecl, dynlib: libX11, importc.}
-proc XDefaultColormap*(para1: PDisplay, para2: cint): TColormap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDefaultColormapOfScreen*(para1: PScreen): TColormap{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDisplayOfScreen*(para1: PScreen): PDisplay{.cdecl, dynlib: libX11, importc.}
-proc XScreenOfDisplay*(para1: PDisplay, para2: cint): PScreen{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDefaultScreenOfDisplay*(para1: PDisplay): PScreen{.cdecl, dynlib: libX11, 
-    importc.}
-proc XEventMaskOfScreen*(para1: PScreen): clong{.cdecl, dynlib: libX11, importc.}
-proc XScreenNumberOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, 
-    importc.}
-type 
-  TXErrorHandler* = proc (para1: PDisplay, para2: PXErrorEvent): cint{.cdecl.}
-
-proc XSetErrorHandler*(para1: TXErrorHandler): TXErrorHandler{.cdecl, 
-    dynlib: libX11, importc.}
-type 
-  TXIOErrorHandler* = proc (para1: PDisplay): cint{.cdecl.}
-
-proc XSetIOErrorHandler*(para1: TXIOErrorHandler): TXIOErrorHandler{.cdecl, 
-    dynlib: libX11, importc.}
-proc XListPixmapFormats*(para1: PDisplay, para2: Pcint): PXPixmapFormatValues{.
-    cdecl, dynlib: libX11, importc.}
-proc XListDepths*(para1: PDisplay, para2: cint, para3: Pcint): Pcint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XReconfigureWMWindow*(para1: PDisplay, para2: TWindow, para3: cint, 
-                           para4: cuint, para5: PXWindowChanges): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMProtocols*(para1: PDisplay, para2: TWindow, para3: PPAtom, 
-                      para4: Pcint): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XSetWMProtocols*(para1: PDisplay, para2: TWindow, para3: PAtom, para4: cint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XIconifyWindow*(para1: PDisplay, para2: TWindow, para3: cint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XWithdrawWindow*(para1: PDisplay, para2: TWindow, para3: cint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetCommand*(para1: PDisplay, para2: TWindow, para3: PPPchar, para4: Pcint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMColormapWindows*(para1: PDisplay, para2: TWindow, para3: PPWindow, 
-                            para4: Pcint): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XSetWMColormapWindows*(para1: PDisplay, para2: TWindow, para3: PWindow, 
-                            para4: cint): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XFreeStringList*(para1: PPchar){.cdecl, dynlib: libX11, importc.}
-proc XSetTransientForHint*(para1: PDisplay, para2: TWindow, para3: TWindow): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XActivateScreenSaver*(para1: PDisplay): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XAddHost*(para1: PDisplay, para2: PXHostAddress): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XAddHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XAddToExtensionList*(para1: PPXExtData, para2: PXExtData): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XAddToSaveSet*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XAllocColor*(para1: PDisplay, para2: TColormap, para3: PXColor): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XAllocColorCells*(para1: PDisplay, para2: TColormap, para3: TBool, 
-                       para4: Pculong, para5: cuint, para6: Pculong, 
-                       para7: cuint): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XAllocColorPlanes*(para1: PDisplay, para2: TColormap, para3: TBool, 
-                        para4: Pculong, para5: cint, para6: cint, para7: cint, 
-                        para8: cint, para9: Pculong, para10: Pculong, 
-                        para11: Pculong): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XAllocNamedColor*(para1: PDisplay, para2: TColormap, para3: cstring, 
-                       para4: PXColor, para5: PXColor): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XAllowEvents*(para1: PDisplay, para2: cint, para3: TTime): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XAutoRepeatOff*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XAutoRepeatOn*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XBell*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XBitmapBitOrder*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XBitmapPad*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XBitmapUnit*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XCellsOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XChangeActivePointerGrab*(para1: PDisplay, para2: cuint, para3: TCursor, 
-                               para4: TTime): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XChangeGC*(para1: PDisplay, para2: TGC, para3: culong, para4: PXGCValues): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XChangeKeyboardControl*(para1: PDisplay, para2: culong, 
-                             para3: PXKeyboardControl): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XChangeKeyboardMapping*(para1: PDisplay, para2: cint, para3: cint, 
-                             para4: PKeySym, para5: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XChangePointerControl*(para1: PDisplay, para2: TBool, para3: TBool, 
-                            para4: cint, para5: cint, para6: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XChangeProperty*(para1: PDisplay, para2: TWindow, para3: TAtom, 
-                      para4: TAtom, para5: cint, para6: cint, para7: Pcuchar, 
-                      para8: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XChangeSaveSet*(para1: PDisplay, para2: TWindow, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XChangeWindowAttributes*(para1: PDisplay, para2: TWindow, para3: culong, 
-                              para4: PXSetWindowAttributes): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XCheckIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent, 
-                    para4: TXPointer): TBool{.cdecl, dynlib: libX11, importc.}
-proc XCheckMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): TBool{.
-    cdecl, dynlib: libX11, importc.}
-proc XCheckTypedEvent*(para1: PDisplay, para2: cint, para3: PXEvent): TBool{.
-    cdecl, dynlib: libX11, importc.}
-proc XCheckTypedWindowEvent*(para1: PDisplay, para2: TWindow, para3: cint, 
-                             para4: PXEvent): TBool{.cdecl, dynlib: libX11, 
-    importc.}
-proc XCheckWindowEvent*(para1: PDisplay, para2: TWindow, para3: clong, 
-                        para4: PXEvent): TBool{.cdecl, dynlib: libX11, importc.}
-proc XCirculateSubwindows*(para1: PDisplay, para2: TWindow, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XCirculateSubwindowsDown*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XCirculateSubwindowsUp*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XClearArea*(para1: PDisplay, para2: TWindow, para3: cint, para4: cint, 
-                 para5: cuint, para6: cuint, para7: TBool): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XClearWindow*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XCloseDisplay*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XConfigureWindow*(para1: PDisplay, para2: TWindow, para3: cuint, 
-                       para4: PXWindowChanges): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XConnectionNumber*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XConvertSelection*(para1: PDisplay, para2: TAtom, para3: TAtom, 
-                        para4: TAtom, para5: TWindow, para6: TTime): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XCopyArea*(para1: PDisplay, para2: TDrawable, para3: TDrawable, para4: TGC, 
-                para5: cint, para6: cint, para7: cuint, para8: cuint, 
-                para9: cint, para10: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XCopyGC*(para1: PDisplay, para2: TGC, para3: culong, para4: TGC): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XCopyPlane*(para1: PDisplay, para2: TDrawable, para3: TDrawable, 
-                 para4: TGC, para5: cint, para6: cint, para7: cuint, 
-                 para8: cuint, para9: cint, para10: cint, para11: culong): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDefaultDepth*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDefaultDepthOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDefaultScreen*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XDefineCursor*(para1: PDisplay, para2: TWindow, para3: TCursor): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDeleteProperty*(para1: PDisplay, para2: TWindow, para3: TAtom): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDestroyWindow*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDestroySubwindows*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDoesBackingStore*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XDoesSaveUnders*(para1: PScreen): TBool{.cdecl, dynlib: libX11, importc.}
-proc XDisableAccessControl*(para1: PDisplay): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayCells*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayHeight*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayHeightMM*(para1: PDisplay, para2: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDisplayKeycodes*(para1: PDisplay, para2: Pcint, para3: Pcint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDisplayPlanes*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayWidth*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayWidthMM*(para1: PDisplay, para2: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawArc*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-               para5: cint, para6: cuint, para7: cuint, para8: cint, para9: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDrawArcs*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: PXArc, 
-                para5: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XDrawImageString*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                       para4: cint, para5: cint, para6: cstring, para7: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDrawImageString16*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                         para4: cint, para5: cint, para6: PXChar2b, para7: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDrawLine*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                para5: cint, para6: cint, para7: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawLines*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: PXPoint, 
-                 para5: cint, para6: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XDrawPoint*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                 para5: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XDrawPoints*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: PXPoint, 
-                  para5: cint, para6: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDrawRectangle*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                     para5: cint, para6: cuint, para7: cuint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawRectangles*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                      para4: PXRectangle, para5: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawSegments*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                    para4: PXSegment, para5: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDrawString*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                  para5: cint, para6: cstring, para7: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawString16*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                    para5: cint, para6: PXChar2b, para7: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawText*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                para5: cint, para6: PXTextItem, para7: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XDrawText16*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                  para5: cint, para6: PXTextItem16, para7: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XEnableAccessControl*(para1: PDisplay): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XEventsQueued*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XFetchName*(para1: PDisplay, para2: TWindow, para3: PPchar): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XFillArc*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-               para5: cint, para6: cuint, para7: cuint, para8: cint, para9: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XFillArcs*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: PXArc, 
-                para5: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XFillPolygon*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                   para4: PXPoint, para5: cint, para6: cint, para7: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XFillRectangle*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                     para5: cint, para6: cuint, para7: cuint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFillRectangles*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                      para4: PXRectangle, para5: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFlush*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XForceScreenSaver*(para1: PDisplay, para2: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFree*(para1: pointer): cint{.cdecl, dynlib: libX11, importc.}
-proc XFreeColormap*(para1: PDisplay, para2: TColormap): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFreeColors*(para1: PDisplay, para2: TColormap, para3: Pculong, 
-                  para4: cint, para5: culong): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XFreeCursor*(para1: PDisplay, para2: TCursor): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XFreeExtensionList*(para1: PPchar): cint{.cdecl, dynlib: libX11, importc.}
-proc XFreeFont*(para1: PDisplay, para2: PXFontStruct): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFreeFontInfo*(para1: PPchar, para2: PXFontStruct, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XFreeFontNames*(para1: PPchar): cint{.cdecl, dynlib: libX11, importc.}
-proc XFreeFontPath*(para1: PPchar): cint{.cdecl, dynlib: libX11, importc.}
-proc XFreeGC*(para1: PDisplay, para2: TGC): cint{.cdecl, dynlib: libX11, importc.}
-proc XFreeModifiermap*(para1: PXModifierKeymap): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XFreePixmap*(para1: PDisplay, para2: TPixmap): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XGeometry*(para1: PDisplay, para2: cint, para3: cstring, para4: cstring, 
-                para5: cuint, para6: cuint, para7: cuint, para8: cint, 
-                para9: cint, para10: Pcint, para11: Pcint, para12: Pcint, 
-                para13: Pcint): cint{.cdecl, dynlib: libX11, importc.}
-proc XGetErrorDatabaseText*(para1: PDisplay, para2: cstring, para3: cstring, 
-                            para4: cstring, para5: cstring, para6: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetErrorText*(para1: PDisplay, para2: cint, para3: cstring, para4: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetFontProperty*(para1: PXFontStruct, para2: TAtom, para3: Pculong): TBool{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetGCValues*(para1: PDisplay, para2: TGC, para3: culong, para4: PXGCValues): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetGeometry*(para1: PDisplay, para2: TDrawable, para3: PWindow, 
-                   para4: Pcint, para5: Pcint, para6: Pcuint, para7: Pcuint, 
-                   para8: Pcuint, para9: Pcuint): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetIconName*(para1: PDisplay, para2: TWindow, para3: PPchar): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetInputFocus*(para1: PDisplay, para2: PWindow, para3: Pcint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetKeyboardControl*(para1: PDisplay, para2: PXKeyboardState): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetPointerControl*(para1: PDisplay, para2: Pcint, para3: Pcint, 
-                         para4: Pcint): cint{.cdecl, dynlib: libX11, importc.}
-proc XGetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetScreenSaver*(para1: PDisplay, para2: Pcint, para3: Pcint, para4: Pcint, 
-                      para5: Pcint): cint{.cdecl, dynlib: libX11, importc.}
-proc XGetTransientForHint*(para1: PDisplay, para2: TWindow, para3: PWindow): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWindowProperty*(para1: PDisplay, para2: TWindow, para3: TAtom, 
-                         para4: clong, para5: clong, para6: TBool, para7: TAtom, 
-                         para8: PAtom, para9: Pcint, para10: Pculong, 
-                         para11: Pculong, para12: PPcuchar): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetWindowAttributes*(para1: PDisplay, para2: TWindow, 
-                           para3: PXWindowAttributes): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGrabButton*(para1: PDisplay, para2: cuint, para3: cuint, para4: TWindow, 
-                  para5: TBool, para6: cuint, para7: cint, para8: cint, 
-                  para9: TWindow, para10: TCursor): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XGrabKey*(para1: PDisplay, para2: cint, para3: cuint, para4: TWindow, 
-               para5: TBool, para6: cint, para7: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGrabKeyboard*(para1: PDisplay, para2: TWindow, para3: TBool, para4: cint, 
-                    para5: cint, para6: TTime): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XGrabPointer*(para1: PDisplay, para2: TWindow, para3: TBool, para4: cuint, 
-                   para5: cint, para6: cint, para7: TWindow, para8: TCursor, 
-                   para9: TTime): cint{.cdecl, dynlib: libX11, importc.}
-proc XGrabServer*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XHeightMMOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XHeightOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent, 
-               para4: TXPointer): cint{.cdecl, dynlib: libX11, importc.}
-proc XImageByteOrder*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XInstallColormap*(para1: PDisplay, para2: TColormap): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XKeysymToKeycode*(para1: PDisplay, para2: TKeySym): TKeyCode{.cdecl, 
-    dynlib: libX11, importc.}
-proc XKillClient*(para1: PDisplay, para2: TXID): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XLookupColor*(para1: PDisplay, para2: TColormap, para3: cstring, 
-                   para4: PXColor, para5: PXColor): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XLowerWindow*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XMapRaised*(para1: PDisplay, para2: TWindow): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XMapSubwindows*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XMapWindow*(para1: PDisplay, para2: TWindow): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XMaskEvent*(para1: PDisplay, para2: clong, para3: PXEvent): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XMaxCmapsOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XMinCmapsOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XMoveResizeWindow*(para1: PDisplay, para2: TWindow, para3: cint, 
-                        para4: cint, para5: cuint, para6: cuint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XMoveWindow*(para1: PDisplay, para2: TWindow, para3: cint, para4: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XNextEvent*(para1: PDisplay, para2: PXEvent): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XNoOp*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XParseColor*(para1: PDisplay, para2: TColormap, para3: cstring, 
-                  para4: PXColor): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XParseGeometry*(para1: cstring, para2: Pcint, para3: Pcint, para4: Pcuint, 
-                     para5: Pcuint): cint{.cdecl, dynlib: libX11, importc.}
-proc XPeekEvent*(para1: PDisplay, para2: PXEvent): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XPeekIfEvent*(para1: PDisplay, para2: PXEvent, para3: funcifevent, 
-                   para4: TXPointer): cint{.cdecl, dynlib: libX11, importc.}
-proc XPending*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XPlanesOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XProtocolRevision*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XProtocolVersion*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XPutBackEvent*(para1: PDisplay, para2: PXEvent): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XPutImage*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: PXImage, 
-                para5: cint, para6: cint, para7: cint, para8: cint, 
-                para9: cuint, para10: cuint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XQLength*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XQueryBestCursor*(para1: PDisplay, para2: TDrawable, para3: cuint, 
-                       para4: cuint, para5: Pcuint, para6: Pcuint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XQueryBestSize*(para1: PDisplay, para2: cint, para3: TDrawable, 
-                     para4: cuint, para5: cuint, para6: Pcuint, para7: Pcuint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XQueryBestStipple*(para1: PDisplay, para2: TDrawable, para3: cuint, 
-                        para4: cuint, para5: Pcuint, para6: Pcuint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XQueryBestTile*(para1: PDisplay, para2: TDrawable, para3: cuint, 
-                     para4: cuint, para5: Pcuint, para6: Pcuint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XQueryColor*(para1: PDisplay, para2: TColormap, para3: PXColor): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XQueryColors*(para1: PDisplay, para2: TColormap, para3: PXColor, 
-                   para4: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XQueryExtension*(para1: PDisplay, para2: cstring, para3: Pcint, 
-                      para4: Pcint, para5: Pcint): TBool{.cdecl, dynlib: libX11, 
-    importc.}
-  #?
-proc XQueryKeymap*(para1: PDisplay, para2: chararr32): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XQueryPointer*(para1: PDisplay, para2: TWindow, para3: PWindow, 
-                    para4: PWindow, para5: Pcint, para6: Pcint, para7: Pcint, 
-                    para8: Pcint, para9: Pcuint): TBool{.cdecl, dynlib: libX11, 
-    importc.}
-proc XQueryTextExtents*(para1: PDisplay, para2: TXID, para3: cstring, 
-                        para4: cint, para5: Pcint, para6: Pcint, para7: Pcint, 
-                        para8: PXCharStruct): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XQueryTextExtents16*(para1: PDisplay, para2: TXID, para3: PXChar2b, 
-                          para4: cint, para5: Pcint, para6: Pcint, para7: Pcint, 
-                          para8: PXCharStruct): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XQueryTree*(para1: PDisplay, para2: TWindow, para3: PWindow, 
-                 para4: PWindow, para5: PPWindow, para6: Pcuint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XRaiseWindow*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XReadBitmapFile*(para1: PDisplay, para2: TDrawable, para3: cstring, 
-                      para4: Pcuint, para5: Pcuint, para6: PPixmap, 
-                      para7: Pcint, para8: Pcint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XReadBitmapFileData*(para1: cstring, para2: Pcuint, para3: Pcuint, 
-                          para4: PPcuchar, para5: Pcint, para6: Pcint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XRebindKeysym*(para1: PDisplay, para2: TKeySym, para3: PKeySym, 
-                    para4: cint, para5: Pcuchar, para6: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRecolorCursor*(para1: PDisplay, para2: TCursor, para3: PXColor, 
-                     para4: PXColor): cint{.cdecl, dynlib: libX11, importc.}
-proc XRefreshKeyboardMapping*(para1: PXMappingEvent): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRemoveFromSaveSet*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRemoveHost*(para1: PDisplay, para2: PXHostAddress): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRemoveHosts*(para1: PDisplay, para2: PXHostAddress, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XReparentWindow*(para1: PDisplay, para2: TWindow, para3: TWindow, 
-                      para4: cint, para5: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XResetScreenSaver*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XResizeWindow*(para1: PDisplay, para2: TWindow, para3: cuint, para4: cuint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XRestackWindows*(para1: PDisplay, para2: PWindow, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XRotateBuffers*(para1: PDisplay, para2: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XRotateWindowProperties*(para1: PDisplay, para2: TWindow, para3: PAtom, 
-                              para4: cint, para5: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XScreenCount*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XSelectInput*(para1: PDisplay, para2: TWindow, para3: clong): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSendEvent*(para1: PDisplay, para2: TWindow, para3: TBool, para4: clong, 
-                 para5: PXEvent): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XSetAccessControl*(para1: PDisplay, para2: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetArcMode*(para1: PDisplay, para2: TGC, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetBackground*(para1: PDisplay, para2: TGC, para3: culong): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetClipMask*(para1: PDisplay, para2: TGC, para3: TPixmap): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetClipOrigin*(para1: PDisplay, para2: TGC, para3: cint, para4: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetClipRectangles*(para1: PDisplay, para2: TGC, para3: cint, para4: cint, 
-                         para5: PXRectangle, para6: cint, para7: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetCloseDownMode*(para1: PDisplay, para2: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetCommand*(para1: PDisplay, para2: TWindow, para3: PPchar, para4: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetDashes*(para1: PDisplay, para2: TGC, para3: cint, para4: cstring, 
-                 para5: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetFillRule*(para1: PDisplay, para2: TGC, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetFillStyle*(para1: PDisplay, para2: TGC, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetFont*(para1: PDisplay, para2: TGC, para3: TFont): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetFontPath*(para1: PDisplay, para2: PPchar, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetForeground*(para1: PDisplay, para2: TGC, para3: culong): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetFunction*(para1: PDisplay, para2: TGC, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetGraphicsExposures*(para1: PDisplay, para2: TGC, para3: TBool): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetIconName*(para1: PDisplay, para2: TWindow, para3: cstring): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetInputFocus*(para1: PDisplay, para2: TWindow, para3: cint, para4: TTime): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetLineAttributes*(para1: PDisplay, para2: TGC, para3: cuint, para4: cint, 
-                         para5: cint, para6: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XSetModifierMapping*(para1: PDisplay, para2: PXModifierKeymap): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetPlaneMask*(para1: PDisplay, para2: TGC, para3: culong): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetPointerMapping*(para1: PDisplay, para2: Pcuchar, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetScreenSaver*(para1: PDisplay, para2: cint, para3: cint, para4: cint, 
-                      para5: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetSelectionOwner*(para1: PDisplay, para2: TAtom, para3: TWindow, 
-                         para4: TTime): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetState*(para1: PDisplay, para2: TGC, para3: culong, para4: culong, 
-                para5: cint, para6: culong): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XSetStipple*(para1: PDisplay, para2: TGC, para3: TPixmap): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetSubwindowMode*(para1: PDisplay, para2: TGC, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetTSOrigin*(para1: PDisplay, para2: TGC, para3: cint, para4: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetTile*(para1: PDisplay, para2: TGC, para3: TPixmap): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetWindowBackground*(para1: PDisplay, para2: TWindow, para3: culong): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWindowBackgroundPixmap*(para1: PDisplay, para2: TWindow, para3: TPixmap): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWindowBorder*(para1: PDisplay, para2: TWindow, para3: culong): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWindowBorderPixmap*(para1: PDisplay, para2: TWindow, para3: TPixmap): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWindowBorderWidth*(para1: PDisplay, para2: TWindow, para3: cuint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWindowColormap*(para1: PDisplay, para2: TWindow, para3: TColormap): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XStoreBuffer*(para1: PDisplay, para2: cstring, para3: cint, para4: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XStoreBytes*(para1: PDisplay, para2: cstring, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XStoreColor*(para1: PDisplay, para2: TColormap, para3: PXColor): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XStoreColors*(para1: PDisplay, para2: TColormap, para3: PXColor, 
-                   para4: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XStoreName*(para1: PDisplay, para2: TWindow, para3: cstring): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XStoreNamedColor*(para1: PDisplay, para2: TColormap, para3: cstring, 
-                       para4: culong, para5: cint): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XSync*(para1: PDisplay, para2: TBool): cint{.cdecl, dynlib: libX11, importc.}
-proc XTextExtents*(para1: PXFontStruct, para2: cstring, para3: cint, 
-                   para4: Pcint, para5: Pcint, para6: Pcint, para7: PXCharStruct): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XTextExtents16*(para1: PXFontStruct, para2: PXChar2b, para3: cint, 
-                     para4: Pcint, para5: Pcint, para6: Pcint, 
-                     para7: PXCharStruct): cint{.cdecl, dynlib: libX11, importc.}
-proc XTextWidth*(para1: PXFontStruct, para2: cstring, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XTextWidth16*(para1: PXFontStruct, para2: PXChar2b, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XTranslateCoordinates*(para1: PDisplay, para2: TWindow, para3: TWindow, 
-                            para4: cint, para5: cint, para6: Pcint, 
-                            para7: Pcint, para8: PWindow): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUndefineCursor*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUngrabButton*(para1: PDisplay, para2: cuint, para3: cuint, para4: TWindow): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XUngrabKey*(para1: PDisplay, para2: cint, para3: cuint, para4: TWindow): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XUngrabKeyboard*(para1: PDisplay, para2: TTime): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUngrabPointer*(para1: PDisplay, para2: TTime): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUngrabServer*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XUninstallColormap*(para1: PDisplay, para2: TColormap): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUnloadFont*(para1: PDisplay, para2: TFont): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XUnmapSubwindows*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUnmapWindow*(para1: PDisplay, para2: TWindow): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XVendorRelease*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XWarpPointer*(para1: PDisplay, para2: TWindow, para3: TWindow, para4: cint, 
-                   para5: cint, para6: cuint, para7: cuint, para8: cint, 
-                   para9: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XWidthMMOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XWidthOfScreen*(para1: PScreen): cint{.cdecl, dynlib: libX11, importc.}
-proc XWindowEvent*(para1: PDisplay, para2: TWindow, para3: clong, para4: PXEvent): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XWriteBitmapFile*(para1: PDisplay, para2: cstring, para3: TPixmap, 
-                       para4: cuint, para5: cuint, para6: cint, para7: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSupportsLocale*(): TBool{.cdecl, dynlib: libX11, importc.}
-proc XSetLocaleModifiers*(para1: cstring): cstring{.cdecl, dynlib: libX11, 
-    importc.}
-proc XOpenOM*(para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring, 
-              para4: cstring): TXOM{.cdecl, dynlib: libX11, importc.}
-proc XCloseOM*(para1: TXOM): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XSetOMValues*(para1: TXOM): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XGetOMValues*(para1: TXOM): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayOfOM*(para1: TXOM): PDisplay{.cdecl, dynlib: libX11, importc.}
-proc XLocaleOfOM*(para1: TXOM): cstring{.cdecl, dynlib: libX11, importc.}
-proc XCreateOC*(para1: TXOM): TXOC{.varargs, cdecl, dynlib: libX11, importc.}
-proc XDestroyOC*(para1: TXOC){.cdecl, dynlib: libX11, importc.}
-proc XOMOfOC*(para1: TXOC): TXOM{.cdecl, dynlib: libX11, importc.}
-proc XSetOCValues*(para1: TXOC): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XGetOCValues*(para1: TXOC): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XCreateFontSet*(para1: PDisplay, para2: cstring, para3: PPPchar, 
-                     para4: Pcint, para5: PPchar): TXFontSet{.cdecl, 
-    dynlib: libX11, importc.}
-proc XFreeFontSet*(para1: PDisplay, para2: TXFontSet){.cdecl, dynlib: libX11, 
-    importc.}
-proc XFontsOfFontSet*(para1: TXFontSet, para2: PPPXFontStruct, para3: PPPchar): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XBaseFontNameListOfFontSet*(para1: TXFontSet): cstring{.cdecl, 
-    dynlib: libX11, importc.}
-proc XLocaleOfFontSet*(para1: TXFontSet): cstring{.cdecl, dynlib: libX11, 
-    importc.}
-proc XContextDependentDrawing*(para1: TXFontSet): TBool{.cdecl, dynlib: libX11, 
-    importc.}
-proc XDirectionalDependentDrawing*(para1: TXFontSet): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-proc XContextualDrawing*(para1: TXFontSet): TBool{.cdecl, dynlib: libX11, 
-    importc.}
-proc XExtentsOfFontSet*(para1: TXFontSet): PXFontSetExtents{.cdecl, 
-    dynlib: libX11, importc.}
-proc XmbTextEscapement*(para1: TXFontSet, para2: cstring, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XwcTextEscapement*(para1: TXFontSet, para2: PWideChar, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc Xutf8TextEscapement*(para1: TXFontSet, para2: cstring, para3: cint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XmbTextExtents*(para1: TXFontSet, para2: cstring, para3: cint, 
-                     para4: PXRectangle, para5: PXRectangle): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XwcTextExtents*(para1: TXFontSet, para2: PWideChar, para3: cint, 
-                     para4: PXRectangle, para5: PXRectangle): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc Xutf8TextExtents*(para1: TXFontSet, para2: cstring, para3: cint, 
-                       para4: PXRectangle, para5: PXRectangle): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XmbTextPerCharExtents*(para1: TXFontSet, para2: cstring, para3: cint, 
-                            para4: PXRectangle, para5: PXRectangle, para6: cint, 
-                            para7: Pcint, para8: PXRectangle, para9: PXRectangle): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XwcTextPerCharExtents*(para1: TXFontSet, para2: PWideChar, para3: cint, 
-                            para4: PXRectangle, para5: PXRectangle, para6: cint, 
-                            para7: Pcint, para8: PXRectangle, para9: PXRectangle): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc Xutf8TextPerCharExtents*(para1: TXFontSet, para2: cstring, para3: cint, 
-                              para4: PXRectangle, para5: PXRectangle, 
-                              para6: cint, para7: Pcint, para8: PXRectangle, 
-                              para9: PXRectangle): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XmbDrawText*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                  para5: cint, para6: PXmbTextItem, para7: cint){.cdecl, 
-    dynlib: libX11, importc.}
-proc XwcDrawText*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                  para5: cint, para6: PXwcTextItem, para7: cint){.cdecl, 
-    dynlib: libX11, importc.}
-proc Xutf8DrawText*(para1: PDisplay, para2: TDrawable, para3: TGC, para4: cint, 
-                    para5: cint, para6: PXmbTextItem, para7: cint){.cdecl, 
-    dynlib: libX11, importc.}
-proc XmbDrawString*(para1: PDisplay, para2: TDrawable, para3: TXFontSet, 
-                    para4: TGC, para5: cint, para6: cint, para7: cstring, 
-                    para8: cint){.cdecl, dynlib: libX11, importc.}
-proc XwcDrawString*(para1: PDisplay, para2: TDrawable, para3: TXFontSet, 
-                    para4: TGC, para5: cint, para6: cint, para7: PWideChar, 
-                    para8: cint){.cdecl, dynlib: libX11, importc.}
-proc Xutf8DrawString*(para1: PDisplay, para2: TDrawable, para3: TXFontSet, 
-                      para4: TGC, para5: cint, para6: cint, para7: cstring, 
-                      para8: cint){.cdecl, dynlib: libX11, importc.}
-proc XmbDrawImageString*(para1: PDisplay, para2: TDrawable, para3: TXFontSet, 
-                         para4: TGC, para5: cint, para6: cint, para7: cstring, 
-                         para8: cint){.cdecl, dynlib: libX11, importc.}
-proc XwcDrawImageString*(para1: PDisplay, para2: TDrawable, para3: TXFontSet, 
-                         para4: TGC, para5: cint, para6: cint, para7: PWideChar, 
-                         para8: cint){.cdecl, dynlib: libX11, importc.}
-proc Xutf8DrawImageString*(para1: PDisplay, para2: TDrawable, para3: TXFontSet, 
-                           para4: TGC, para5: cint, para6: cint, para7: cstring, 
-                           para8: cint){.cdecl, dynlib: libX11, importc.}
-proc XOpenIM*(para1: PDisplay, para2: PXrmHashBucketRec, para3: cstring, 
-              para4: cstring): TXIM{.cdecl, dynlib: libX11, importc.}
-proc XCloseIM*(para1: TXIM): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XGetIMValues*(para1: TXIM): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XSetIMValues*(para1: TXIM): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XDisplayOfIM*(para1: TXIM): PDisplay{.cdecl, dynlib: libX11, importc.}
-proc XLocaleOfIM*(para1: TXIM): cstring{.cdecl, dynlib: libX11, importc.}
-proc XCreateIC*(para1: TXIM): TXIC{.varargs, cdecl, dynlib: libX11, importc.}
-proc XDestroyIC*(para1: TXIC){.cdecl, dynlib: libX11, importc.}
-proc XSetICFocus*(para1: TXIC){.cdecl, dynlib: libX11, importc.}
-proc XUnsetICFocus*(para1: TXIC){.cdecl, dynlib: libX11, importc.}
-proc XwcResetIC*(para1: TXIC): PWideChar{.cdecl, dynlib: libX11, importc.}
-proc XmbResetIC*(para1: TXIC): cstring{.cdecl, dynlib: libX11, importc.}
-proc Xutf8ResetIC*(para1: TXIC): cstring{.cdecl, dynlib: libX11, importc.}
-proc XSetICValues*(para1: TXIC): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XGetICValues*(para1: TXIC): cstring{.varargs, cdecl, dynlib: libX11, 
-    importc.}
-proc XIMOfIC*(para1: TXIC): TXIM{.cdecl, dynlib: libX11, importc.}
-proc XFilterEvent*(para1: PXEvent, para2: TWindow): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-proc XmbLookupString*(para1: TXIC, para2: PXKeyPressedEvent, para3: cstring, 
-                      para4: cint, para5: PKeySym, para6: PStatus): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XwcLookupString*(para1: TXIC, para2: PXKeyPressedEvent, para3: PWideChar, 
-                      para4: cint, para5: PKeySym, para6: PStatus): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc Xutf8LookupString*(para1: TXIC, para2: PXKeyPressedEvent, para3: cstring, 
-                        para4: cint, para5: PKeySym, para6: PStatus): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XVaCreateNestedList*(unused: cint): TXVaNestedList{.varargs, cdecl, 
-    dynlib: libX11, importc.}
-proc XRegisterIMInstantiateCallback*(para1: PDisplay, para2: PXrmHashBucketRec, 
-                                     para3: cstring, para4: cstring, 
-                                     para5: TXIDProc, para6: TXPointer): TBool{.
-    cdecl, dynlib: libX11, importc.}
-proc XUnregisterIMInstantiateCallback*(para1: PDisplay, 
-                                       para2: PXrmHashBucketRec, para3: cstring, 
-                                       para4: cstring, para5: TXIDProc, 
-                                       para6: TXPointer): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-type 
-  TXConnectionWatchProc* = proc (para1: PDisplay, para2: TXPointer, para3: cint, 
-                                 para4: TBool, para5: PXPointer){.cdecl.}
-
-proc XInternalConnectionNumbers*(para1: PDisplay, para2: PPcint, para3: Pcint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XProcessInternalConnection*(para1: PDisplay, para2: cint){.cdecl, 
-    dynlib: libX11, importc.}
-proc XAddConnectionWatch*(para1: PDisplay, para2: TXConnectionWatchProc, 
-                          para3: TXPointer): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XRemoveConnectionWatch*(para1: PDisplay, para2: TXConnectionWatchProc, 
-                             para3: TXPointer){.cdecl, dynlib: libX11, importc.}
-proc XSetAuthorization*(para1: cstring, para2: cint, para3: cstring, para4: cint){.
-    cdecl, dynlib: libX11, importc.}
-  #
-  #  _Xmbtowc?
-  #  _Xwctomb?
-  #
-when defined(MACROS): 
-  proc ConnectionNumber*(dpy: PDisplay): cint
-  proc RootWindow*(dpy: PDisplay, scr: cint): TWindow
-  proc DefaultScreen*(dpy: PDisplay): cint
-  proc DefaultRootWindow*(dpy: PDisplay): TWindow
-  proc DefaultVisual*(dpy: PDisplay, scr: cint): PVisual
-  proc DefaultGC*(dpy: PDisplay, scr: cint): TGC
-  proc BlackPixel*(dpy: PDisplay, scr: cint): culong
-  proc WhitePixel*(dpy: PDisplay, scr: cint): culong
-  proc QLength*(dpy: PDisplay): cint
-  proc DisplayWidth*(dpy: PDisplay, scr: cint): cint
-  proc DisplayHeight*(dpy: PDisplay, scr: cint): cint
-  proc DisplayWidthMM*(dpy: PDisplay, scr: cint): cint
-  proc DisplayHeightMM*(dpy: PDisplay, scr: cint): cint
-  proc DisplayPlanes*(dpy: PDisplay, scr: cint): cint
-  proc DisplayCells*(dpy: PDisplay, scr: cint): cint
-  proc ScreenCount*(dpy: PDisplay): cint
-  proc ServerVendor*(dpy: PDisplay): cstring
-  proc ProtocolVersion*(dpy: PDisplay): cint
-  proc ProtocolRevision*(dpy: PDisplay): cint
-  proc VendorRelease*(dpy: PDisplay): cint
-  proc DisplayString*(dpy: PDisplay): cstring
-  proc DefaultDepth*(dpy: PDisplay, scr: cint): cint
-  proc DefaultColormap*(dpy: PDisplay, scr: cint): TColormap
-  proc BitmapUnit*(dpy: PDisplay): cint
-  proc BitmapBitOrder*(dpy: PDisplay): cint
-  proc BitmapPad*(dpy: PDisplay): cint
-  proc ImageByteOrder*(dpy: PDisplay): cint
-  proc NextRequest*(dpy: PDisplay): culong
-  proc LastKnownRequestProcessed*(dpy: PDisplay): culong
-  proc ScreenOfDisplay*(dpy: PDisplay, scr: cint): PScreen
-  proc DefaultScreenOfDisplay*(dpy: PDisplay): PScreen
-  proc DisplayOfScreen*(s: PScreen): PDisplay
-  proc RootWindowOfScreen*(s: PScreen): TWindow
-  proc BlackPixelOfScreen*(s: PScreen): culong
-  proc WhitePixelOfScreen*(s: PScreen): culong
-  proc DefaultColormapOfScreen*(s: PScreen): TColormap
-  proc DefaultDepthOfScreen*(s: PScreen): cint
-  proc DefaultGCOfScreen*(s: PScreen): TGC
-  proc DefaultVisualOfScreen*(s: PScreen): PVisual
-  proc WidthOfScreen*(s: PScreen): cint
-  proc HeightOfScreen*(s: PScreen): cint
-  proc WidthMMOfScreen*(s: PScreen): cint
-  proc HeightMMOfScreen*(s: PScreen): cint
-  proc PlanesOfScreen*(s: PScreen): cint
-  proc CellsOfScreen*(s: PScreen): cint
-  proc MinCmapsOfScreen*(s: PScreen): cint
-  proc MaxCmapsOfScreen*(s: PScreen): cint
-  proc DoesSaveUnders*(s: PScreen): TBool
-  proc DoesBackingStore*(s: PScreen): cint
-  proc EventMaskOfScreen*(s: PScreen): clong
-  proc XAllocID*(dpy: PDisplay): TXID
-# implementation
-
-when defined(MACROS): 
-  proc ConnectionNumber(dpy: PDisplay): cint = 
-    ConnectionNumber = (PXPrivDisplay(dpy))^ .fd
-
-  proc RootWindow(dpy: PDisplay, scr: cint): TWindow = 
-    RootWindow = (ScreenOfDisplay(dpy, scr))^ .root
-
-  proc DefaultScreen(dpy: PDisplay): cint = 
-    DefaultScreen = (PXPrivDisplay(dpy))^ .default_screen
-
-  proc DefaultRootWindow(dpy: PDisplay): TWindow = 
-    DefaultRootWindow = (ScreenOfDisplay(dpy, DefaultScreen(dpy)))^ .root
-
-  proc DefaultVisual(dpy: PDisplay, scr: cint): PVisual = 
-    DefaultVisual = (ScreenOfDisplay(dpy, scr))^ .root_visual
-
-  proc DefaultGC(dpy: PDisplay, scr: cint): TGC = 
-    DefaultGC = (ScreenOfDisplay(dpy, scr))^ .default_gc
-
-  proc BlackPixel(dpy: PDisplay, scr: cint): culong = 
-    BlackPixel = (ScreenOfDisplay(dpy, scr))^ .black_pixel
-
-  proc WhitePixel(dpy: PDisplay, scr: cint): culong = 
-    WhitePixel = (ScreenOfDisplay(dpy, scr))^ .white_pixel
-
-  proc QLength(dpy: PDisplay): cint = 
-    QLength = (PXPrivDisplay(dpy))^ .qlen
-
-  proc DisplayWidth(dpy: PDisplay, scr: cint): cint = 
-    DisplayWidth = (ScreenOfDisplay(dpy, scr))^ .width
-
-  proc DisplayHeight(dpy: PDisplay, scr: cint): cint = 
-    DisplayHeight = (ScreenOfDisplay(dpy, scr))^ .height
-
-  proc DisplayWidthMM(dpy: PDisplay, scr: cint): cint = 
-    DisplayWidthMM = (ScreenOfDisplay(dpy, scr))^ .mwidth
-
-  proc DisplayHeightMM(dpy: PDisplay, scr: cint): cint = 
-    DisplayHeightMM = (ScreenOfDisplay(dpy, scr))^ .mheight
-
-  proc DisplayPlanes(dpy: PDisplay, scr: cint): cint = 
-    DisplayPlanes = (ScreenOfDisplay(dpy, scr))^ .root_depth
-
-  proc DisplayCells(dpy: PDisplay, scr: cint): cint = 
-    DisplayCells = (DefaultVisual(dpy, scr))^ .map_entries
-
-  proc ScreenCount(dpy: PDisplay): cint = 
-    ScreenCount = (PXPrivDisplay(dpy))^ .nscreens
-
-  proc ServerVendor(dpy: PDisplay): cstring = 
-    ServerVendor = (PXPrivDisplay(dpy))^ .vendor
-
-  proc ProtocolVersion(dpy: PDisplay): cint = 
-    ProtocolVersion = (PXPrivDisplay(dpy))^ .proto_major_version
-
-  proc ProtocolRevision(dpy: PDisplay): cint = 
-    ProtocolRevision = (PXPrivDisplay(dpy))^ .proto_minor_version
-
-  proc VendorRelease(dpy: PDisplay): cint = 
-    VendorRelease = (PXPrivDisplay(dpy))^ .release
-
-  proc DisplayString(dpy: PDisplay): cstring = 
-    DisplayString = (PXPrivDisplay(dpy))^ .display_name
-
-  proc DefaultDepth(dpy: PDisplay, scr: cint): cint = 
-    DefaultDepth = (ScreenOfDisplay(dpy, scr))^ .root_depth
-
-  proc DefaultColormap(dpy: PDisplay, scr: cint): TColormap = 
-    DefaultColormap = (ScreenOfDisplay(dpy, scr))^ .cmap
-
-  proc BitmapUnit(dpy: PDisplay): cint = 
-    BitmapUnit = (PXPrivDisplay(dpy))^ .bitmap_unit
-
-  proc BitmapBitOrder(dpy: PDisplay): cint = 
-    BitmapBitOrder = (PXPrivDisplay(dpy))^ .bitmap_bit_order
-
-  proc BitmapPad(dpy: PDisplay): cint = 
-    BitmapPad = (PXPrivDisplay(dpy))^ .bitmap_pad
-
-  proc ImageByteOrder(dpy: PDisplay): cint = 
-    ImageByteOrder = (PXPrivDisplay(dpy))^ .byte_order
-
-  proc NextRequest(dpy: PDisplay): culong = 
-    NextRequest = ((PXPrivDisplay(dpy))^ .request) + 1
-
-  proc LastKnownRequestProcessed(dpy: PDisplay): culong = 
-    LastKnownRequestProcessed = (PXPrivDisplay(dpy))^ .last_request_read
-
-  proc ScreenOfDisplay(dpy: PDisplay, scr: cint): PScreen = 
-    ScreenOfDisplay = addr((((PXPrivDisplay(dpy))^ .screens)[scr]))
-
-  proc DefaultScreenOfDisplay(dpy: PDisplay): PScreen = 
-    DefaultScreenOfDisplay = ScreenOfDisplay(dpy, DefaultScreen(dpy))
-
-  proc DisplayOfScreen(s: PScreen): PDisplay = 
-    DisplayOfScreen = s^ .display
-
-  proc RootWindowOfScreen(s: PScreen): TWindow = 
-    RootWindowOfScreen = s^ .root
-
-  proc BlackPixelOfScreen(s: PScreen): culong = 
-    BlackPixelOfScreen = s^ .black_pixel
-
-  proc WhitePixelOfScreen(s: PScreen): culong = 
-    WhitePixelOfScreen = s^ .white_pixel
-
-  proc DefaultColormapOfScreen(s: PScreen): TColormap = 
-    DefaultColormapOfScreen = s^ .cmap
-
-  proc DefaultDepthOfScreen(s: PScreen): cint = 
-    DefaultDepthOfScreen = s^ .root_depth
-
-  proc DefaultGCOfScreen(s: PScreen): TGC = 
-    DefaultGCOfScreen = s^ .default_gc
-
-  proc DefaultVisualOfScreen(s: PScreen): PVisual = 
-    DefaultVisualOfScreen = s^ .root_visual
-
-  proc WidthOfScreen(s: PScreen): cint = 
-    WidthOfScreen = s^ .width
-
-  proc HeightOfScreen(s: PScreen): cint = 
-    HeightOfScreen = s^ .height
-
-  proc WidthMMOfScreen(s: PScreen): cint = 
-    WidthMMOfScreen = s^ .mwidth
-
-  proc HeightMMOfScreen(s: PScreen): cint = 
-    HeightMMOfScreen = s^ .mheight
-
-  proc PlanesOfScreen(s: PScreen): cint = 
-    PlanesOfScreen = s^ .root_depth
-
-  proc CellsOfScreen(s: PScreen): cint = 
-    CellsOfScreen = (DefaultVisualOfScreen(s))^ .map_entries
-
-  proc MinCmapsOfScreen(s: PScreen): cint = 
-    MinCmapsOfScreen = s^ .min_maps
-
-  proc MaxCmapsOfScreen(s: PScreen): cint = 
-    MaxCmapsOfScreen = s^ .max_maps
-
-  proc DoesSaveUnders(s: PScreen): TBool = 
-    DoesSaveUnders = s^ .save_unders
-
-  proc DoesBackingStore(s: PScreen): cint = 
-    DoesBackingStore = s^ .backing_store
-
-  proc EventMaskOfScreen(s: PScreen): clong = 
-    EventMaskOfScreen = s^ .root_input_mask
-
-  proc XAllocID(dpy: PDisplay): TXID = 
-    XAllocID = (PXPrivDisplay(dpy))^ .resource_alloc(dpy)
diff --git a/lib/wrappers/x11/xrandr.nim b/lib/wrappers/x11/xrandr.nim
deleted file mode 100755
index ee6f1705b..000000000
--- a/lib/wrappers/x11/xrandr.nim
+++ /dev/null
@@ -1,194 +0,0 @@
-#
-#  $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $
-# 
-#  Copyright (C) 2000 Compaq Computer Corporation, Inc.
-#  Copyright (C) 2002 Hewlett-Packard Company, Inc.
-# 
-#  Permission to use, copy, modify, distribute, and sell this software and its
-#  documentation for any purpose is hereby granted without fee, provided that
-#  the above copyright notice appear in all copies and that both that
-#  copyright notice and this permission notice appear in supporting
-#  documentation, and that the name of Compaq not be used in advertising or
-#  publicity pertaining to distribution of the software without specific,
-#  written prior permission.  HP makes no representations about the
-#  suitability of this software for any purpose.  It is provided "as is"
-#  without express or implied warranty.
-# 
-#  HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
-#  BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-#  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
-#  OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
-#  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# 
-#  Author:  Jim Gettys, HP Labs, HP.
-#
-
-import 
-  x, xlib
-
-const 
-  libXrandr* = "libXrandr.so"
-  
-# * $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $
-# *
-# * Copyright (C) 2000, Compaq Computer Corporation, 
-# * Copyright (C) 2002, Hewlett Packard, Inc.
-# *
-# * Permission to use, copy, modify, distribute, and sell this software and its
-# * documentation for any purpose is hereby granted without fee, provided that
-# * the above copyright notice appear in all copies and that both that
-# * copyright notice and this permission notice appear in supporting
-# * documentation, and that the name of Compaq or HP not be used in advertising
-# * or publicity pertaining to distribution of the software without specific,
-# * written prior permission.  HP makes no representations about the
-# * suitability of this software for any purpose.  It is provided "as is"
-# * without express or implied warranty.
-# *
-# * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-# * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
-# * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
-# * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
-# * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-# *
-# * Author:  Jim Gettys, HP Labs, Hewlett-Packard, Inc.
-# *
-
-type 
-  PRotation* = ptr TRotation
-  TRotation* = cushort
-  PSizeID* = ptr TSizeID
-  TSizeID* = cushort
-  PSubpixelOrder* = ptr TSubpixelOrder
-  TSubpixelOrder* = cushort
-
-const 
-  RANDR_NAME* = "RANDR"
-  RANDR_MAJOR* = 1
-  RANDR_MINOR* = 1
-  RRNumberErrors* = 0
-  RRNumberEvents* = 1
-  constX_RRQueryVersion* = 0 # we skip 1 to make old clients fail pretty immediately 
-  X_RROldGetScreenInfo* = 1
-  X_RR1_0SetScreenConfig* = 2 # V1.0 apps share the same set screen config request id 
-  constX_RRSetScreenConfig* = 2
-  X_RROldScreenChangeSelectInput* = 3 # 3 used to be ScreenChangeSelectInput; deprecated 
-  constX_RRSelectInput* = 4
-  constX_RRGetScreenInfo* = 5      # used in XRRSelectInput 
-  RRScreenChangeNotifyMask* = 1 shl 0
-  RRScreenChangeNotify* = 0   # used in the rotation field; rotation and reflection in 0.1 proto. 
-  RR_Rotate_0* = 1
-  RR_Rotate_90* = 2
-  RR_Rotate_180* = 4
-  RR_Rotate_270* = 8          # new in 1.0 protocol, to allow reflection of screen 
-  RR_Reflect_X* = 16
-  RR_Reflect_Y* = 32
-  RRSetConfigSuccess* = 0
-  RRSetConfigInvalidConfigTime* = 1
-  RRSetConfigInvalidTime* = 2
-  RRSetConfigFailed* = 3
-
-type 
-  PXRRScreenSize* = ptr TXRRScreenSize
-  TXRRScreenSize*{.final.} = object  #
-                                     #   Events.
-                                     #
-    width*, height*: cint
-    mwidth*, mheight*: cint
-
-  TXRRScreenChangeNotifyEvent*{.final.} = object  # internal representation is private to the library 
-    typ*: cint                # event base 
-    serial*: culong           # # of last request processed by server 
-    send_event*: TBool        # true if this came from a SendEvent request 
-    display*: PDisplay        # Display the event was read from 
-    window*: TWindow          # window which selected for this event 
-    root*: TWindow            # Root window for changed screen 
-    timestamp*: TTime         # when the screen change occurred 
-    config_timestamp*: TTime  # when the last configuration change 
-    size_index*: TSizeID
-    subpixel_order*: TSubpixelOrder
-    rotation*: TRotation
-    width*: cint
-    height*: cint
-    mwidth*: cint
-    mheight*: cint
-
-  PXRRScreenConfiguration* = ptr TXRRScreenConfiguration
-  TXRRScreenConfiguration*{.final.} = object 
-
-proc XRRQueryExtension*(dpy: PDisplay, event_basep, error_basep: Pcint): TBool{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRQueryVersion*(dpy: PDisplay, major_versionp: Pcint, 
-                      minor_versionp: Pcint): TStatus{.cdecl, dynlib: libXrandr, 
-    importc.}
-proc XRRGetScreenInfo*(dpy: PDisplay, draw: TDrawable): PXRRScreenConfiguration{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRFreeScreenConfigInfo*(config: PXRRScreenConfiguration){.cdecl, 
-    dynlib: libXrandr, importc.}
-  #
-  #  Note that screen configuration changes are only permitted if the client can
-  #  prove it has up to date configuration information.  We are trying to
-  #  insist that it become possible for screens to change dynamically, so
-  #  we want to ensure the client knows what it is talking about when requesting
-  #  changes.
-  #
-proc XRRSetScreenConfig*(dpy: PDisplay, config: PXRRScreenConfiguration, 
-                         draw: TDrawable, size_index: cint, rotation: TRotation, 
-                         timestamp: TTime): TStatus{.cdecl, dynlib: libXrandr, 
-    importc.}
-  # added in v1.1, sorry for the lame name 
-proc XRRSetScreenConfigAndRate*(dpy: PDisplay, config: PXRRScreenConfiguration, 
-                                draw: TDrawable, size_index: cint, 
-                                rotation: TRotation, rate: cshort, 
-                                timestamp: TTime): TStatus{.cdecl, 
-    dynlib: libXrandr, importc.}
-proc XRRConfigRotations*(config: PXRRScreenConfiguration, 
-                         current_rotation: PRotation): TRotation{.cdecl, 
-    dynlib: libXrandr, importc.}
-proc XRRConfigTimes*(config: PXRRScreenConfiguration, config_timestamp: PTime): TTime{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRConfigSizes*(config: PXRRScreenConfiguration, nsizes: Pcint): PXRRScreenSize{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRConfigRates*(config: PXRRScreenConfiguration, sizeID: cint, 
-                     nrates: Pcint): ptr int16{.cdecl, dynlib: libXrandr, importc.}
-proc XRRConfigCurrentConfiguration*(config: PXRRScreenConfiguration, 
-                                    rotation: PRotation): TSizeID{.cdecl, 
-    dynlib: libXrandr, importc.}
-proc XRRConfigCurrentRate*(config: PXRRScreenConfiguration): cshort{.cdecl, 
-    dynlib: libXrandr, importc.}
-proc XRRRootToScreen*(dpy: PDisplay, root: TWindow): cint{.cdecl, 
-    dynlib: libXrandr, importc.}
-  #
-  #  returns the screen configuration for the specified screen; does a lazy
-  #  evalution to delay getting the information, and caches the result.
-  #  These routines should be used in preference to XRRGetScreenInfo
-  #  to avoid unneeded round trips to the X server.  These are new
-  #  in protocol version 0.1.
-  #
-proc XRRScreenConfig*(dpy: PDisplay, screen: cint): PXRRScreenConfiguration{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRConfig*(screen: PScreen): PXRRScreenConfiguration{.cdecl, 
-    dynlib: libXrandr, importc.}
-proc XRRSelectInput*(dpy: PDisplay, window: TWindow, mask: cint){.cdecl, 
-    dynlib: libXrandr, importc.}
-  #
-  #  the following are always safe to call, even if RandR is not implemented 
-  #  on a screen 
-  #
-proc XRRRotations*(dpy: PDisplay, screen: cint, current_rotation: PRotation): TRotation{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRSizes*(dpy: PDisplay, screen: cint, nsizes: Pcint): PXRRScreenSize{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRRates*(dpy: PDisplay, screen: cint, sizeID: cint, nrates: Pcint): ptr int16{.
-    cdecl, dynlib: libXrandr, importc.}
-proc XRRTimes*(dpy: PDisplay, screen: cint, config_timestamp: PTime): TTime{.
-    cdecl, dynlib: libXrandr, importc.}
-  #
-  #  intended to take RRScreenChangeNotify,  or 
-  #  ConfigureNotify (on the root window)
-  #  returns 1 if it is an event type it understands, 0 if not
-  #
-proc XRRUpdateConfiguration*(event: PXEvent): cint{.cdecl, dynlib: libXrandr, 
-    importc.}
-# implementation
diff --git a/lib/wrappers/x11/xrender.nim b/lib/wrappers/x11/xrender.nim
deleted file mode 100755
index 7b85fc9a7..000000000
--- a/lib/wrappers/x11/xrender.nim
+++ /dev/null
@@ -1,231 +0,0 @@
-
-import 
-  x, xlib
-
-#const 
-#  libX11* = "libX11.so"
-
-#
-#  Automatically converted by H2Pas 0.99.15 from xrender.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    xrender.h
-#
-
-type 
-  PGlyph* = ptr TGlyph
-  TGlyph* = int32
-  PGlyphSet* = ptr TGlyphSet
-  TGlyphSet* = int32
-  PPicture* = ptr TPicture
-  TPicture* = int32
-  PPictFormat* = ptr TPictFormat
-  TPictFormat* = int32
-
-const 
-  RENDER_NAME* = "RENDER"
-  RENDER_MAJOR* = 0
-  RENDER_MINOR* = 0
-  constX_RenderQueryVersion* = 0
-  X_RenderQueryPictFormats* = 1
-  X_RenderQueryPictIndexValues* = 2
-  X_RenderQueryDithers* = 3
-  constX_RenderCreatePicture* = 4
-  constX_RenderChangePicture* = 5
-  X_RenderSetPictureClipRectangles* = 6
-  constX_RenderFreePicture* = 7
-  constX_RenderComposite* = 8
-  X_RenderScale* = 9
-  X_RenderTrapezoids* = 10
-  X_RenderTriangles* = 11
-  X_RenderTriStrip* = 12
-  X_RenderTriFan* = 13
-  X_RenderColorTrapezoids* = 14
-  X_RenderColorTriangles* = 15
-  X_RenderTransform* = 16
-  constX_RenderCreateGlyphSet* = 17
-  constX_RenderReferenceGlyphSet* = 18
-  constX_RenderFreeGlyphSet* = 19
-  constX_RenderAddGlyphs* = 20
-  constX_RenderAddGlyphsFromPicture* = 21
-  constX_RenderFreeGlyphs* = 22
-  constX_RenderCompositeGlyphs8* = 23
-  constX_RenderCompositeGlyphs16* = 24
-  constX_RenderCompositeGlyphs32* = 25
-  BadPictFormat* = 0
-  BadPicture* = 1
-  BadPictOp* = 2
-  BadGlyphSet* = 3
-  BadGlyph* = 4
-  RenderNumberErrors* = BadGlyph + 1
-  PictTypeIndexed* = 0
-  PictTypeDirect* = 1
-  PictOpClear* = 0
-  PictOpSrc* = 1
-  PictOpDst* = 2
-  PictOpOver* = 3
-  PictOpOverReverse* = 4
-  PictOpIn* = 5
-  PictOpInReverse* = 6
-  PictOpOut* = 7
-  PictOpOutReverse* = 8
-  PictOpAtop* = 9
-  PictOpAtopReverse* = 10
-  PictOpXor* = 11
-  PictOpAdd* = 12
-  PictOpSaturate* = 13
-  PictOpMaximum* = 13
-  PolyEdgeSharp* = 0
-  PolyEdgeSmooth* = 1
-  PolyModePrecise* = 0
-  PolyModeImprecise* = 1
-  CPRepeat* = 1 shl 0
-  CPAlphaMap* = 1 shl 1
-  CPAlphaXOrigin* = 1 shl 2
-  CPAlphaYOrigin* = 1 shl 3
-  CPClipXOrigin* = 1 shl 4
-  CPClipYOrigin* = 1 shl 5
-  CPClipMask* = 1 shl 6
-  CPGraphicsExposure* = 1 shl 7
-  CPSubwindowMode* = 1 shl 8
-  CPPolyEdge* = 1 shl 9
-  CPPolyMode* = 1 shl 10
-  CPDither* = 1 shl 11
-  CPLastBit* = 11
-
-type 
-  PXRenderDirectFormat* = ptr TXRenderDirectFormat
-  TXRenderDirectFormat*{.final.} = object 
-    red*: int16
-    redMask*: int16
-    green*: int16
-    greenMask*: int16
-    blue*: int16
-    blueMask*: int16
-    alpha*: int16
-    alphaMask*: int16
-
-  PXRenderPictFormat* = ptr TXRenderPictFormat
-  TXRenderPictFormat*{.final.} = object 
-    id*: TPictFormat
-    thetype*: int32
-    depth*: int32
-    direct*: TXRenderDirectFormat
-    colormap*: TColormap
-
-
-const 
-  PictFormatID* = 1 shl 0
-  PictFormatType* = 1 shl 1
-  PictFormatDepth* = 1 shl 2
-  PictFormatRed* = 1 shl 3
-  PictFormatRedMask* = 1 shl 4
-  PictFormatGreen* = 1 shl 5
-  PictFormatGreenMask* = 1 shl 6
-  PictFormatBlue* = 1 shl 7
-  PictFormatBlueMask* = 1 shl 8
-  PictFormatAlpha* = 1 shl 9
-  PictFormatAlphaMask* = 1 shl 10
-  PictFormatColormap* = 1 shl 11
-
-type 
-  PXRenderVisual* = ptr TXRenderVisual
-  TXRenderVisual*{.final.} = object 
-    visual*: PVisual
-    format*: PXRenderPictFormat
-
-  PXRenderDepth* = ptr TXRenderDepth
-  TXRenderDepth*{.final.} = object 
-    depth*: int32
-    nvisuals*: int32
-    visuals*: PXRenderVisual
-
-  PXRenderScreen* = ptr TXRenderScreen
-  TXRenderScreen*{.final.} = object 
-    depths*: PXRenderDepth
-    ndepths*: int32
-    fallback*: PXRenderPictFormat
-
-  PXRenderInfo* = ptr TXRenderInfo
-  TXRenderInfo*{.final.} = object 
-    format*: PXRenderPictFormat
-    nformat*: int32
-    screen*: PXRenderScreen
-    nscreen*: int32
-    depth*: PXRenderDepth
-    ndepth*: int32
-    visual*: PXRenderVisual
-    nvisual*: int32
-
-  PXRenderPictureAttributes* = ptr TXRenderPictureAttributes
-  TXRenderPictureAttributes*{.final.} = object 
-    repeat*: TBool
-    alpha_map*: TPicture
-    alpha_x_origin*: int32
-    alpha_y_origin*: int32
-    clip_x_origin*: int32
-    clip_y_origin*: int32
-    clip_mask*: TPixmap
-    graphics_exposures*: TBool
-    subwindow_mode*: int32
-    poly_edge*: int32
-    poly_mode*: int32
-    dither*: TAtom
-
-  PXGlyphInfo* = ptr TXGlyphInfo
-  TXGlyphInfo*{.final.} = object 
-    width*: int16
-    height*: int16
-    x*: int16
-    y*: int16
-    xOff*: int16
-    yOff*: int16
-
-
-proc XRenderQueryExtension*(dpy: PDisplay, event_basep: ptr int32, 
-                            error_basep: ptr int32): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRenderQueryVersion*(dpy: PDisplay, major_versionp: ptr int32, 
-                          minor_versionp: ptr int32): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRenderQueryFormats*(dpy: PDisplay): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XRenderFindVisualFormat*(dpy: PDisplay, visual: PVisual): PXRenderPictFormat{.
-    cdecl, dynlib: libX11, importc.}
-proc XRenderFindFormat*(dpy: PDisplay, mask: int32, 
-                        `template`: PXRenderPictFormat, count: int32): PXRenderPictFormat{.
-    cdecl, dynlib: libX11, importc.}
-proc XRenderCreatePicture*(dpy: PDisplay, drawable: TDrawable, 
-                           format: PXRenderPictFormat, valuemask: int32, 
-                           attributes: PXRenderPictureAttributes): TPicture{.
-    cdecl, dynlib: libX11, importc.}
-proc XRenderChangePicture*(dpy: PDisplay, picture: TPicture, valuemask: int32, 
-                           attributes: PXRenderPictureAttributes){.cdecl, 
-    dynlib: libX11, importc.}
-proc XRenderFreePicture*(dpy: PDisplay, picture: TPicture){.cdecl, 
-    dynlib: libX11, importc.}
-proc XRenderComposite*(dpy: PDisplay, op: int32, src: TPicture, mask: TPicture, 
-                       dst: TPicture, src_x: int32, src_y: int32, mask_x: int32, 
-                       mask_y: int32, dst_x: int32, dst_y: int32, width: int32, 
-                       height: int32){.cdecl, dynlib: libX11, importc.}
-proc XRenderCreateGlyphSet*(dpy: PDisplay, format: PXRenderPictFormat): TGlyphSet{.
-    cdecl, dynlib: libX11, importc.}
-proc XRenderReferenceGlyphSet*(dpy: PDisplay, existing: TGlyphSet): TGlyphSet{.
-    cdecl, dynlib: libX11, importc.}
-proc XRenderFreeGlyphSet*(dpy: PDisplay, glyphset: TGlyphSet){.cdecl, 
-    dynlib: libX11, importc.}
-proc XRenderAddGlyphs*(dpy: PDisplay, glyphset: TGlyphSet, gids: PGlyph, 
-                       glyphs: PXGlyphInfo, nglyphs: int32, images: cstring, 
-                       nbyte_images: int32){.cdecl, dynlib: libX11, importc.}
-proc XRenderFreeGlyphs*(dpy: PDisplay, glyphset: TGlyphSet, gids: PGlyph, 
-                        nglyphs: int32){.cdecl, dynlib: libX11, importc.}
-proc XRenderCompositeString8*(dpy: PDisplay, op: int32, src: TPicture, 
-                              dst: TPicture, maskFormat: PXRenderPictFormat, 
-                              glyphset: TGlyphSet, xSrc: int32, ySrc: int32, 
-                              xDst: int32, yDst: int32, str: cstring, 
-                              nchar: int32){.cdecl, dynlib: libX11, importc.}
-# implementation
diff --git a/lib/wrappers/x11/xresource.nim b/lib/wrappers/x11/xresource.nim
deleted file mode 100755
index ddb2a89c2..000000000
--- a/lib/wrappers/x11/xresource.nim
+++ /dev/null
@@ -1,200 +0,0 @@
-
-import 
-  x, xlib
-
-#const 
-#  libX11* = "libX11.so"
-
-#
-#  Automatically converted by H2Pas 0.99.15 from xresource.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    xresource.h
-#
-
-proc Xpermalloc*(para1: int32): cstring{.cdecl, dynlib: libX11, importc.}
-type 
-  PXrmQuark* = ptr TXrmQuark
-  TXrmQuark* = int32
-  TXrmQuarkList* = PXrmQuark
-  PXrmQuarkList* = ptr TXrmQuarkList
-
-proc NULLQUARK*(): TXrmQuark
-type 
-  PXrmString* = ptr TXrmString
-  TXrmString* = ptr char
-
-proc NULLSTRING*(): TXrmString
-proc XrmStringToQuark*(para1: cstring): TXrmQuark{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmPermStringToQuark*(para1: cstring): TXrmQuark{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmQuarkToString*(para1: TXrmQuark): TXrmString{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmUniqueQuark*(): TXrmQuark{.cdecl, dynlib: libX11, importc.}
-when defined(MACROS): 
-  proc XrmStringsEqual*(a1, a2: cstring): bool
-type 
-  PXrmBinding* = ptr TXrmBinding
-  TXrmBinding* = enum 
-    XrmBindTightly, XrmBindLoosely
-  TXrmBindingList* = PXrmBinding
-  PXrmBindingList* = ptr TXrmBindingList
-
-proc XrmStringToQuarkList*(para1: cstring, para2: TXrmQuarkList){.cdecl, 
-    dynlib: libX11, importc.}
-proc XrmStringToBindingQuarkList*(para1: cstring, para2: TXrmBindingList, 
-                                  para3: TXrmQuarkList){.cdecl, dynlib: libX11, 
-    importc.}
-type 
-  PXrmName* = ptr TXrmName
-  TXrmName* = TXrmQuark
-  PXrmNameList* = ptr TXrmNameList
-  TXrmNameList* = TXrmQuarkList
-
-when defined(MACROS): 
-  proc XrmNameToString*(name: int32): TXrmString
-  proc XrmStringToName*(str: cstring): int32
-  proc XrmStringToNameList*(str: cstring, name: PXrmQuark)
-type 
-  PXrmClass* = ptr TXrmClass
-  TXrmClass* = TXrmQuark
-  PXrmClassList* = ptr TXrmClassList
-  TXrmClassList* = TXrmQuarkList
-
-when defined(MACROS): 
-  proc XrmClassToString*(c_class: int32): TXrmString
-  proc XrmStringToClass*(c_class: cstring): int32
-  proc XrmStringToClassList*(str: cstring, c_class: PXrmQuark)
-type 
-  PXrmRepresentation* = ptr TXrmRepresentation
-  TXrmRepresentation* = TXrmQuark
-
-when defined(MACROS): 
-  proc XrmStringToRepresentation*(str: cstring): int32
-  proc XrmRepresentationToString*(thetype: int32): TXrmString
-type 
-  PXrmValue* = ptr TXrmValue
-  TXrmValue*{.final.} = object 
-    size*: int32
-    address*: TXPointer
-
-  TXrmValuePtr* = PXrmValue
-  PXrmValuePtr* = ptr TXrmValuePtr
-  PXrmHashBucketRec* = ptr TXrmHashBucketRec
-  TXrmHashBucketRec*{.final.} = object 
-  TXrmHashBucket* = PXrmHashBucketRec
-  PXrmHashBucket* = ptr TXrmHashBucket
-  PXrmHashTable* = ptr TXrmHashTable
-  TXrmHashTable* = ptr TXrmHashBucket
-  TXrmDatabase* = PXrmHashBucketRec
-  PXrmDatabase* = ptr TXrmDatabase
-
-proc XrmDestroyDatabase*(para1: TXrmDatabase){.cdecl, dynlib: libX11, importc.}
-proc XrmQPutResource*(para1: PXrmDatabase, para2: TXrmBindingList, 
-                      para3: TXrmQuarkList, para4: TXrmRepresentation, 
-                      para5: PXrmValue){.cdecl, dynlib: libX11, importc.}
-proc XrmPutResource*(para1: PXrmDatabase, para2: cstring, para3: cstring, 
-                     para4: PXrmValue){.cdecl, dynlib: libX11, importc.}
-proc XrmQPutStringResource*(para1: PXrmDatabase, para2: TXrmBindingList, 
-                            para3: TXrmQuarkList, para4: cstring){.cdecl, 
-    dynlib: libX11, importc.}
-proc XrmPutStringResource*(para1: PXrmDatabase, para2: cstring, para3: cstring){.
-    cdecl, dynlib: libX11, importc.}
-proc XrmPutLineResource*(para1: PXrmDatabase, para2: cstring){.cdecl, 
-    dynlib: libX11, importc.}
-proc XrmQGetResource*(para1: TXrmDatabase, para2: TXrmNameList, 
-                      para3: TXrmClassList, para4: PXrmRepresentation, 
-                      para5: PXrmValue): TBool{.cdecl, dynlib: libX11, importc.}
-proc XrmGetResource*(para1: TXrmDatabase, para2: cstring, para3: cstring, 
-                     para4: PPchar, para5: PXrmValue): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-  # There is no definition of TXrmSearchList 
-  #function XrmQGetSearchList(para1:TXrmDatabase; para2:TXrmNameList; para3:TXrmClassList; para4:TXrmSearchList; para5:longint):TBool;cdecl;external libX11;
-  #function XrmQGetSearchResource(para1:TXrmSearchList; para2:TXrmName; para3:TXrmClass; para4:PXrmRepresentation; para5:PXrmValue):TBool;cdecl;external libX11;
-proc XrmSetDatabase*(para1: PDisplay, para2: TXrmDatabase){.cdecl, 
-    dynlib: libX11, importc.}
-proc XrmGetDatabase*(para1: PDisplay): TXrmDatabase{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmGetFileDatabase*(para1: cstring): TXrmDatabase{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmCombineFileDatabase*(para1: cstring, para2: PXrmDatabase, para3: TBool): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XrmGetStringDatabase*(para1: cstring): TXrmDatabase{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmPutFileDatabase*(para1: TXrmDatabase, para2: cstring){.cdecl, 
-    dynlib: libX11, importc.}
-proc XrmMergeDatabases*(para1: TXrmDatabase, para2: PXrmDatabase){.cdecl, 
-    dynlib: libX11, importc.}
-proc XrmCombineDatabase*(para1: TXrmDatabase, para2: PXrmDatabase, para3: TBool){.
-    cdecl, dynlib: libX11, importc.}
-const 
-  XrmEnumAllLevels* = 0
-  XrmEnumOneLevel* = 1
-
-type 
-  funcbool* = proc (): TBool
-
-proc XrmEnumerateDatabase*(para1: TXrmDatabase, para2: TXrmNameList, 
-                           para3: TXrmClassList, para4: int32, para5: funcbool, 
-                           para6: TXPointer): TBool{.cdecl, dynlib: libX11, 
-    importc.}
-proc XrmLocaleOfDatabase*(para1: TXrmDatabase): cstring{.cdecl, dynlib: libX11, 
-    importc.}
-type 
-  PXrmOptionKind* = ptr TXrmOptionKind
-  TXrmOptionKind* = enum 
-    XrmoptionNoArg, XrmoptionIsArg, XrmoptionStickyArg, XrmoptionSepArg, 
-    XrmoptionResArg, XrmoptionSkipArg, XrmoptionSkipLine, XrmoptionSkipNArgs
-  PXrmOptionDescRec* = ptr TXrmOptionDescRec
-  TXrmOptionDescRec*{.final.} = object 
-    option*: cstring
-    specifier*: cstring
-    argKind*: TXrmOptionKind
-    value*: TXPointer
-
-  TXrmOptionDescList* = PXrmOptionDescRec
-  PXrmOptionDescList* = ptr TXrmOptionDescList
-
-proc XrmParseCommand*(para1: PXrmDatabase, para2: TXrmOptionDescList, 
-                      para3: int32, para4: cstring, para5: ptr int32, 
-                      para6: PPchar){.cdecl, dynlib: libX11, importc.}
-# implementation
-
-proc NULLQUARK(): TXrmQuark = 
-  result = TXrmQuark(0)
-
-proc NULLSTRING(): TXrmString = 
-  result = nil
-
-when defined(MACROS): 
-  proc XrmStringsEqual(a1, a2: cstring): bool = 
-    result = (strcomp(a1, a2)) == 0
-
-  proc XrmNameToString(name: int32): TXrmString = 
-    result = XrmQuarkToString(name)
-
-  proc XrmStringToName(str: cstring): int32 = 
-    result = XrmStringToQuark(str)
-
-  proc XrmStringToNameList(str: cstring, name: PXrmQuark) = 
-    XrmStringToQuarkList(str, name)
-
-  proc XrmClassToString(c_class: int32): TXrmString = 
-    result = XrmQuarkToString(c_class)
-
-  proc XrmStringToClass(c_class: cstring): int32 = 
-    result = XrmStringToQuark(c_class)
-
-  proc XrmStringToClassList(str: cstring, c_class: PXrmQuark) = 
-    XrmStringToQuarkList(str, c_class)
-
-  proc XrmStringToRepresentation(str: cstring): int32 = 
-    result = XrmStringToQuark(str)
-
-  proc XrmRepresentationToString(thetype: int32): TXrmString = 
-    result = XrmQuarkToString(thetype)
diff --git a/lib/wrappers/x11/xshm.nim b/lib/wrappers/x11/xshm.nim
deleted file mode 100755
index e56bd87b1..000000000
--- a/lib/wrappers/x11/xshm.nim
+++ /dev/null
@@ -1,77 +0,0 @@
-
-import 
-  x, xlib
-
-#const 
-#  libX11* = "libX11.so"
-
-#
-#  Automatically converted by H2Pas 0.99.15 from xshm.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    xshm.h
-#
-
-const 
-  constX_ShmQueryVersion* = 0
-  constX_ShmAttach* = 1
-  constX_ShmDetach* = 2
-  constX_ShmPutImage* = 3
-  constX_ShmGetImage* = 4
-  constX_ShmCreatePixmap* = 5
-  ShmCompletion* = 0
-  ShmNumberEvents* = ShmCompletion + 1
-  BadShmSeg* = 0
-  ShmNumberErrors* = BadShmSeg + 1
-
-type 
-  PShmSeg* = ptr TShmSeg
-  TShmSeg* = culong
-  PXShmCompletionEvent* = ptr TXShmCompletionEvent
-  TXShmCompletionEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong
-    send_event*: TBool
-    display*: PDisplay
-    drawable*: TDrawable
-    major_code*: cint
-    minor_code*: cint
-    shmseg*: TShmSeg
-    offset*: culong
-
-  PXShmSegmentInfo* = ptr TXShmSegmentInfo
-  TXShmSegmentInfo*{.final.} = object 
-    shmseg*: TShmSeg
-    shmid*: cint
-    shmaddr*: cstring
-    readOnly*: TBool
-
-
-proc XShmQueryExtension*(para1: PDisplay): TBool{.cdecl, dynlib: libX11, importc.}
-proc XShmGetEventBase*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XShmQueryVersion*(para1: PDisplay, para2: Pcint, para3: Pcint, para4: PBool): TBool{.
-    cdecl, dynlib: libX11, importc.}
-proc XShmPixmapFormat*(para1: PDisplay): cint{.cdecl, dynlib: libX11, importc.}
-proc XShmAttach*(para1: PDisplay, para2: PXShmSegmentInfo): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XShmDetach*(para1: PDisplay, para2: PXShmSegmentInfo): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XShmPutImage*(para1: PDisplay, para2: TDrawable, para3: TGC, 
-                   para4: PXImage, para5: cint, para6: cint, para7: cint, 
-                   para8: cint, para9: cuint, para10: cuint, para11: TBool): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XShmGetImage*(para1: PDisplay, para2: TDrawable, para3: PXImage, 
-                   para4: cint, para5: cint, para6: culong): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XShmCreateImage*(para1: PDisplay, para2: PVisual, para3: cuint, 
-                      para4: cint, para5: cstring, para6: PXShmSegmentInfo, 
-                      para7: cuint, para8: cuint): PXImage{.cdecl, 
-    dynlib: libX11, importc.}
-proc XShmCreatePixmap*(para1: PDisplay, para2: TDrawable, para3: cstring, 
-                       para4: PXShmSegmentInfo, para5: cuint, para6: cuint, 
-                       para7: cuint): TPixmap{.cdecl, dynlib: libX11, importc.}
-# implementation
diff --git a/lib/wrappers/x11/xutil.nim b/lib/wrappers/x11/xutil.nim
deleted file mode 100755
index 563702123..000000000
--- a/lib/wrappers/x11/xutil.nim
+++ /dev/null
@@ -1,412 +0,0 @@
-
-import 
-  x, xlib, keysym
-
-#const 
-#  libX11* = "libX11.so"
-
-#
-#  Automatically converted by H2Pas 0.99.15 from xutil.h
-#  The following command line parameters were used:
-#    -p
-#    -T
-#    -S
-#    -d
-#    -c
-#    xutil.h
-#
-
-const 
-  NoValue* = 0x00000000
-  XValue* = 0x00000001
-  YValue* = 0x00000002
-  WidthValue* = 0x00000004
-  HeightValue* = 0x00000008
-  AllValues* = 0x0000000F
-  XNegative* = 0x00000010
-  YNegative* = 0x00000020
-
-type 
-  TCPoint*{.final.} = object 
-    x*: cint
-    y*: cint
-
-  PXSizeHints* = ptr TXSizeHints
-  TXSizeHints*{.final.} = object 
-    flags*: clong
-    x*, y*: cint
-    width*, height*: cint
-    min_width*, min_height*: cint
-    max_width*, max_height*: cint
-    width_inc*, height_inc*: cint
-    min_aspect*, max_aspect*: TCPoint
-    base_width*, base_height*: cint
-    win_gravity*: cint
-
-
-const 
-  USPosition* = 1 shl 0
-  USSize* = 1 shl 1
-  PPosition* = 1 shl 2
-  PSize* = 1 shl 3
-  PMinSize* = 1 shl 4
-  PMaxSize* = 1 shl 5
-  PResizeInc* = 1 shl 6
-  PAspect* = 1 shl 7
-  PBaseSize* = 1 shl 8
-  PWinGravity* = 1 shl 9
-  PAllHints* = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or
-      PAspect
-
-type 
-  PXWMHints* = ptr TXWMHints
-  TXWMHints*{.final.} = object 
-    flags*: clong
-    input*: TBool
-    initial_state*: cint
-    icon_pixmap*: TPixmap
-    icon_window*: TWindow
-    icon_x*, icon_y*: cint
-    icon_mask*: TPixmap
-    window_group*: TXID
-
-
-const 
-  InputHint* = 1 shl 0
-  StateHint* = 1 shl 1
-  IconPixmapHint* = 1 shl 2
-  IconWindowHint* = 1 shl 3
-  IconPositionHint* = 1 shl 4
-  IconMaskHint* = 1 shl 5
-  WindowGroupHint* = 1 shl 6
-  AllHints* = InputHint or StateHint or IconPixmapHint or IconWindowHint or
-      IconPositionHint or IconMaskHint or WindowGroupHint
-  XUrgencyHint* = 1 shl 8
-  WithdrawnState* = 0
-  NormalState* = 1
-  IconicState* = 3
-  DontCareState* = 0
-  ZoomState* = 2
-  InactiveState* = 4
-
-type 
-  PXTextProperty* = ptr TXTextProperty
-  TXTextProperty*{.final.} = object 
-    value*: pcuchar
-    encoding*: TAtom
-    format*: cint
-    nitems*: culong
-
-
-const 
-  XNoMemory* = - 1
-  XLocaleNotSupported* = - 2
-  XConverterNotFound* = - 3
-
-type 
-  PXICCEncodingStyle* = ptr TXICCEncodingStyle
-  TXICCEncodingStyle* = enum 
-    XStringStyle, XCompoundTextStyle, XTextStyle, XStdICCTextStyle, 
-    XUTF8StringStyle
-  PPXIconSize* = ptr PXIconSize
-  PXIconSize* = ptr TXIconSize
-  TXIconSize*{.final.} = object 
-    min_width*, min_height*: cint
-    max_width*, max_height*: cint
-    width_inc*, height_inc*: cint
-
-  PXClassHint* = ptr TXClassHint
-  TXClassHint*{.final.} = object 
-    res_name*: cstring
-    res_class*: cstring
-
-
-type 
-  PXComposeStatus* = ptr TXComposeStatus
-  TXComposeStatus*{.final.} = object 
-    compose_ptr*: TXPointer
-    chars_matched*: cint
-
-
-type 
-  PXRegion* = ptr TXRegion
-  TXRegion*{.final.} = object 
-  TRegion* = PXRegion
-  PRegion* = ptr TRegion
-
-const 
-  RectangleOut* = 0
-  RectangleIn* = 1
-  RectanglePart* = 2
-
-type 
-  PXVisualInfo* = ptr TXVisualInfo
-  TXVisualInfo*{.final.} = object 
-    visual*: PVisual
-    visualid*: TVisualID
-    screen*: cint
-    depth*: cint
-    class*: cint
-    red_mask*: culong
-    green_mask*: culong
-    blue_mask*: culong
-    colormap_size*: cint
-    bits_per_rgb*: cint
-
-
-const 
-  VisualNoMask* = 0x00000000
-  VisualIDMask* = 0x00000001
-  VisualScreenMask* = 0x00000002
-  VisualDepthMask* = 0x00000004
-  VisualClassMask* = 0x00000008
-  VisualRedMaskMask* = 0x00000010
-  VisualGreenMaskMask* = 0x00000020
-  VisualBlueMaskMask* = 0x00000040
-  VisualColormapSizeMask* = 0x00000080
-  VisualBitsPerRGBMask* = 0x00000100
-  VisualAllMask* = 0x000001FF
-
-type 
-  PPXStandardColormap* = ptr PXStandardColormap
-  PXStandardColormap* = ptr TXStandardColormap
-  TXStandardColormap*{.final.} = object 
-    colormap*: TColormap
-    red_max*: culong
-    red_mult*: culong
-    green_max*: culong
-    green_mult*: culong
-    blue_max*: culong
-    blue_mult*: culong
-    base_pixel*: culong
-    visualid*: TVisualID
-    killid*: TXID
-
-
-const 
-  BitmapSuccess* = 0
-  BitmapOpenFailed* = 1
-  BitmapFileInvalid* = 2
-  BitmapNoMemory* = 3
-  XCSUCCESS* = 0
-  XCNOMEM* = 1
-  XCNOENT* = 2
-  ReleaseByFreeingColormap*: TXID = TXID(1)
-
-type 
-  PXContext* = ptr TXContext
-  TXContext* = cint
-
-proc XAllocClassHint*(): PXClassHint{.cdecl, dynlib: libX11, importc.}
-proc XAllocIconSize*(): PXIconSize{.cdecl, dynlib: libX11, importc.}
-proc XAllocSizeHints*(): PXSizeHints{.cdecl, dynlib: libX11, importc.}
-proc XAllocStandardColormap*(): PXStandardColormap{.cdecl, dynlib: libX11, 
-    importc.}
-proc XAllocWMHints*(): PXWMHints{.cdecl, dynlib: libX11, importc.}
-proc XClipBox*(para1: TRegion, para2: PXRectangle): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XCreateRegion*(): TRegion{.cdecl, dynlib: libX11, importc.}
-proc XDefaultString*(): cstring{.cdecl, dynlib: libX11, importc.}
-proc XDeleteContext*(para1: PDisplay, para2: TXID, para3: TXContext): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XDestroyRegion*(para1: TRegion): cint{.cdecl, dynlib: libX11, importc.}
-proc XEmptyRegion*(para1: TRegion): cint{.cdecl, dynlib: libX11, importc.}
-proc XEqualRegion*(para1: TRegion, para2: TRegion): cint{.cdecl, dynlib: libX11, 
-    importc.}
-proc XFindContext*(para1: PDisplay, para2: TXID, para3: TXContext, 
-                   para4: PXPointer): cint{.cdecl, dynlib: libX11, importc.}
-proc XGetClassHint*(para1: PDisplay, para2: TWindow, para3: PXClassHint): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetIconSizes*(para1: PDisplay, para2: TWindow, para3: PPXIconSize, 
-                    para4: Pcint): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XGetNormalHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetRGBColormaps*(para1: PDisplay, para2: TWindow, 
-                       para3: PPXStandardColormap, para4: Pcint, para5: TAtom): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetSizeHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints, 
-                    para4: TAtom): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XGetStandardColormap*(para1: PDisplay, para2: TWindow, 
-                           para3: PXStandardColormap, para4: TAtom): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetTextProperty*(para1: PDisplay, para2: TWindow, para3: PXTextProperty, 
-                       para4: TAtom): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XGetVisualInfo*(para1: PDisplay, para2: clong, para3: PXVisualInfo, 
-                     para4: Pcint): PXVisualInfo{.cdecl, dynlib: libX11, importc.}
-proc XGetWMClientMachine*(para1: PDisplay, para2: TWindow, para3: PXTextProperty): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMHints*(para1: PDisplay, para2: TWindow): PXWMHints{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetWMIconName*(para1: PDisplay, para2: TWindow, para3: PXTextProperty): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMName*(para1: PDisplay, para2: TWindow, para3: PXTextProperty): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XGetWMNormalHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints, 
-                        para4: ptr int): TStatus{.cdecl, dynlib: libX11, importc.}
-proc XGetWMSizeHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints, 
-                      para4: ptr int, para5: TAtom): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XGetZoomHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints): TStatus{.
-    cdecl, dynlib: libX11, importc.}
-proc XIntersectRegion*(para1: TRegion, para2: TRegion, para3: TRegion): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XConvertCase*(para1: TKeySym, para2: PKeySym, para3: PKeySym){.cdecl, 
-    dynlib: libX11, importc.}
-proc XLookupString*(para1: PXKeyEvent, para2: cstring, para3: cint, 
-                    para4: PKeySym, para5: PXComposeStatus): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XMatchVisualInfo*(para1: PDisplay, para2: cint, para3: cint, para4: cint, 
-                       para5: PXVisualInfo): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XOffsetRegion*(para1: TRegion, para2: cint, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XPointInRegion*(para1: TRegion, para2: cint, para3: cint): TBool{.cdecl, 
-    dynlib: libX11, importc.}
-proc XPolygonRegion*(para1: PXPoint, para2: cint, para3: cint): TRegion{.cdecl, 
-    dynlib: libX11, importc.}
-proc XRectInRegion*(para1: TRegion, para2: cint, para3: cint, para4: cuint, 
-                    para5: cuint): cint{.cdecl, dynlib: libX11, importc.}
-proc XSaveContext*(para1: PDisplay, para2: TXID, para3: TXContext, 
-                   para4: cstring): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetClassHint*(para1: PDisplay, para2: TWindow, para3: PXClassHint): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetIconSizes*(para1: PDisplay, para2: TWindow, para3: PXIconSize, 
-                    para4: cint): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetNormalHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetRGBColormaps*(para1: PDisplay, para2: TWindow, 
-                       para3: PXStandardColormap, para4: cint, para5: TAtom){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetSizeHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints, 
-                    para4: TAtom): cint{.cdecl, dynlib: libX11, importc.}
-proc XSetStandardProperties*(para1: PDisplay, para2: TWindow, para3: cstring, 
-                             para4: cstring, para5: TPixmap, para6: PPchar, 
-                             para7: cint, para8: PXSizeHints): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetTextProperty*(para1: PDisplay, para2: TWindow, para3: PXTextProperty, 
-                       para4: TAtom){.cdecl, dynlib: libX11, importc.}
-proc XSetWMClientMachine*(para1: PDisplay, para2: TWindow, para3: PXTextProperty){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMHints*(para1: PDisplay, para2: TWindow, para3: PXWMHints): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMIconName*(para1: PDisplay, para2: TWindow, para3: PXTextProperty){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMName*(para1: PDisplay, para2: TWindow, para3: PXTextProperty){.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetWMNormalHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints){.
-    cdecl, dynlib: libX11, importc.}
-proc XSetWMProperties*(para1: PDisplay, para2: TWindow, para3: PXTextProperty, 
-                       para4: PXTextProperty, para5: PPchar, para6: cint, 
-                       para7: PXSizeHints, para8: PXWMHints, para9: PXClassHint){.
-    cdecl, dynlib: libX11, importc.}
-proc XmbSetWMProperties*(para1: PDisplay, para2: TWindow, para3: cstring, 
-                         para4: cstring, para5: PPchar, para6: cint, 
-                         para7: PXSizeHints, para8: PXWMHints, 
-                         para9: PXClassHint){.cdecl, dynlib: libX11, importc.}
-proc Xutf8SetWMProperties*(para1: PDisplay, para2: TWindow, para3: cstring, 
-                           para4: cstring, para5: PPchar, para6: cint, 
-                           para7: PXSizeHints, para8: PXWMHints, 
-                           para9: PXClassHint){.cdecl, dynlib: libX11, importc.}
-proc XSetWMSizeHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints, 
-                      para4: TAtom){.cdecl, dynlib: libX11, importc.}
-proc XSetRegion*(para1: PDisplay, para2: TGC, para3: TRegion): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetStandardColormap*(para1: PDisplay, para2: TWindow, 
-                           para3: PXStandardColormap, para4: TAtom){.cdecl, 
-    dynlib: libX11, importc.}
-proc XSetZoomHints*(para1: PDisplay, para2: TWindow, para3: PXSizeHints): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XShrinkRegion*(para1: TRegion, para2: cint, para3: cint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XStringListToTextProperty*(para1: PPchar, para2: cint, 
-                                para3: PXTextProperty): TStatus{.cdecl, 
-    dynlib: libX11, importc.}
-proc XSubtractRegion*(para1: TRegion, para2: TRegion, para3: TRegion): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XmbTextListToTextProperty*(para1: PDisplay, para2: PPchar, para3: cint, 
-                                para4: TXICCEncodingStyle, para5: PXTextProperty): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XwcTextListToTextProperty*(para1: PDisplay, para2: ptr ptr int16, para3: cint, 
-                                para4: TXICCEncodingStyle, para5: PXTextProperty): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc Xutf8TextListToTextProperty*(para1: PDisplay, para2: PPchar, para3: cint, 
-                                  para4: TXICCEncodingStyle, 
-                                  para5: PXTextProperty): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XwcFreeStringList*(para1: ptr ptr int16){.cdecl, dynlib: libX11, importc.}
-proc XTextPropertyToStringList*(para1: PXTextProperty, para2: PPPchar, 
-                                para3: Pcint): TStatus{.cdecl, dynlib: libX11, 
-    importc.}
-proc XmbTextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty, 
-                                para3: PPPchar, para4: Pcint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XwcTextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty, 
-                                para3: ptr ptr ptr int16, para4: Pcint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc Xutf8TextPropertyToTextList*(para1: PDisplay, para2: PXTextProperty, 
-                                  para3: PPPchar, para4: Pcint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XUnionRectWithRegion*(para1: PXRectangle, para2: TRegion, para3: TRegion): cint{.
-    cdecl, dynlib: libX11, importc.}
-proc XUnionRegion*(para1: TRegion, para2: TRegion, para3: TRegion): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XWMGeometry*(para1: PDisplay, para2: cint, para3: cstring, para4: cstring, 
-                  para5: cuint, para6: PXSizeHints, para7: Pcint, para8: Pcint, 
-                  para9: Pcint, para10: Pcint, para11: Pcint): cint{.cdecl, 
-    dynlib: libX11, importc.}
-proc XXorRegion*(para1: TRegion, para2: TRegion, para3: TRegion): cint{.cdecl, 
-    dynlib: libX11, importc.}
-when defined(MACROS): 
-  proc XDestroyImage*(ximage: PXImage): cint
-  proc XGetPixel*(ximage: PXImage, x, y: cint): culong
-  proc XPutPixel*(ximage: PXImage, x, y: cint, pixel: culong): cint
-  proc XSubImage*(ximage: PXImage, x, y: cint, width, height: cuint): PXImage
-  proc XAddPixel*(ximage: PXImage, value: clong): cint
-  proc IsKeypadKey*(keysym: TKeySym): bool
-  proc IsPrivateKeypadKey*(keysym: TKeySym): bool
-  proc IsCursorKey*(keysym: TKeySym): bool
-  proc IsPFKey*(keysym: TKeySym): bool
-  proc IsFunctionKey*(keysym: TKeySym): bool
-  proc IsMiscFunctionKey*(keysym: TKeySym): bool
-  proc IsModifierKey*(keysym: TKeySym): bool
-    #function XUniqueContext : TXContext;
-    #function XStringToContext(_string : Pchar) : TXContext;
-# implementation
-
-when defined(MACROS): 
-  proc XDestroyImage(ximage: PXImage): cint = 
-    XDestroyImage = ximage^ .f.destroy_image(ximage)
-
-  proc XGetPixel(ximage: PXImage, x, y: cint): culong = 
-    XGetPixel = ximage^ .f.get_pixel(ximage, x, y)
-
-  proc XPutPixel(ximage: PXImage, x, y: cint, pixel: culong): cint = 
-    XPutPixel = ximage^ .f.put_pixel(ximage, x, y, pixel)
-
-  proc XSubImage(ximage: PXImage, x, y: cint, width, height: cuint): PXImage = 
-    XSubImage = ximage^ .f.sub_image(ximage, x, y, width, height)
-
-  proc XAddPixel(ximage: PXImage, value: clong): cint = 
-    XAddPixel = ximage^ .f.add_pixel(ximage, value)
-
-  proc IsKeypadKey(keysym: TKeySym): bool = 
-    IsKeypadKey = (keysym >= XK_KP_Space) and (keysym <= XK_KP_Equal)
-
-  proc IsPrivateKeypadKey(keysym: TKeySym): bool = 
-    IsPrivateKeypadKey = (keysym >= 0x11000000) and (keysym <= 0x1100FFFF)
-
-  proc IsCursorKey(keysym: TKeySym): bool = 
-    IsCursorKey = (keysym >= XK_Home) and (keysym < XK_Select)
-
-  proc IsPFKey(keysym: TKeySym): bool = 
-    IsPFKey = (keysym >= XK_KP_F1) and (keysym <= XK_KP_F4)
-
-  proc IsFunctionKey(keysym: TKeySym): bool = 
-    IsFunctionKey = (keysym >= XK_F1) and (keysym <= XK_F35)
-
-  proc IsMiscFunctionKey(keysym: TKeySym): bool = 
-    IsMiscFunctionKey = (keysym >= XK_Select) and (keysym <= XK_Break)
-
-  proc IsModifierKey(keysym: TKeySym): bool = 
-    IsModifierKey = ((keysym >= XK_Shift_L) And (keysym <= XK_Hyper_R)) Or
-        (keysym == XK_Mode_switch) Or (keysym == XK_Num_Lock)
diff --git a/lib/wrappers/x11/xv.nim b/lib/wrappers/x11/xv.nim
deleted file mode 100755
index 45ab61418..000000000
--- a/lib/wrappers/x11/xv.nim
+++ /dev/null
@@ -1,84 +0,0 @@
-#***********************************************************
-#Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
-#and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-#
-#                        All Rights Reserved
-#
-#Permission to use, copy, modify, and distribute this software and its 
-#documentation for any purpose and without fee is hereby granted, 
-#provided that the above copyright notice appear in all copies and that
-#both that copyright notice and this permission notice appear in 
-#supporting documentation, and that the names of Digital or MIT not be
-#used in advertising or publicity pertaining to distribution of the
-#software without specific, written prior permission.  
-#
-#DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-#DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-#SOFTWARE.
-#
-#******************************************************************
-# $XFree86: xc/include/extensions/Xv.h,v 1.3 1999/05/23 06:33:22 dawes Exp $ 
-
-import 
-  x
-
-const 
-  XvName* = "libXVideo.so"
-  XvVersion* = 2
-  XvRevision* = 2             # Symbols 
-
-type 
-  TXvPortID* = TXID
-  TXvEncodingID* = TXID
-
-const 
-  XvNone* = 0
-  XvInput* = 0
-  XvOutput* = 1
-  XvInputMask* = 1 shl XvInput
-  XvOutputMask* = 1 shl XvOutput
-  XvVideoMask* = 0x00000004
-  XvStillMask* = 0x00000008
-  XvImageMask* = 0x00000010   # These two are not client viewable 
-  XvPixmapMask* = 0x00010000
-  XvWindowMask* = 0x00020000
-  XvGettable* = 0x00000001
-  XvSettable* = 0x00000002
-  XvRGB* = 0
-  XvYUV* = 1
-  XvPacked* = 0
-  XvPlanar* = 1
-  XvTopToBottom* = 0
-  XvBottomToTop* = 1          # Events 
-  XvVideoNotify* = 0
-  XvPortNotify* = 1
-  XvNumEvents* = 2            # Video Notify Reasons 
-  XvStarted* = 0
-  XvStopped* = 1
-  XvBusy* = 2
-  XvPreempted* = 3
-  XvHardError* = 4
-  XvLastReason* = 4
-  XvNumReasons* = XvLastReason + 1
-  XvStartedMask* = 1 shl XvStarted
-  XvStoppedMask* = 1 shl XvStopped
-  XvBusyMask* = 1 shl XvBusy
-  XvPreemptedMask* = 1 shl XvPreempted
-  XvHardErrorMask* = 1 shl XvHardError
-  XvAnyReasonMask* = (1 shl XvNumReasons) - 1
-  XvNoReasonMask* = 0         # Errors 
-  XvBadPort* = 0
-  XvBadEncoding* = 1
-  XvBadControl* = 2
-  XvNumErrors* = 3            # Status 
-  XvBadExtension* = 1
-  XvAlreadyGrabbed* = 2
-  XvInvalidTime* = 3
-  XvBadReply* = 4
-  XvBadAlloc* = 5
-
-# implementation
diff --git a/lib/wrappers/x11/xvlib.nim b/lib/wrappers/x11/xvlib.nim
deleted file mode 100755
index 19fd0d000..000000000
--- a/lib/wrappers/x11/xvlib.nim
+++ /dev/null
@@ -1,234 +0,0 @@
-#***********************************************************
-#Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
-#and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-#
-#                        All Rights Reserved
-#
-#Permission to use, copy, modify, and distribute this software and its 
-#documentation for any purpose and without fee is hereby granted, 
-#provided that the above copyright notice appear in all copies and that
-#both that copyright notice and this permission notice appear in 
-#supporting documentation, and that the names of Digital or MIT not be
-#used in advertising or publicity pertaining to distribution of the
-#software without specific, written prior permission.  
-#
-#DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-#DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-#SOFTWARE.
-#
-#******************************************************************
-# $XFree86: xc/include/extensions/Xvlib.h,v 1.3 1999/12/11 19:28:48 mvojkovi Exp $ 
-#*
-#** File: 
-#**
-#**   Xvlib.h --- Xv library public header file
-#**
-#** Author: 
-#**
-#**   David Carver (Digital Workstation Engineering/Project Athena)
-#**
-#** Revisions:
-#**
-#**   26.06.91 Carver
-#**     - changed XvFreeAdaptors to XvFreeAdaptorInfo
-#**     - changed XvFreeEncodings to XvFreeEncodingInfo
-#**
-#**   11.06.91 Carver
-#**     - changed SetPortControl to SetPortAttribute
-#**     - changed GetPortControl to GetPortAttribute
-#**     - changed QueryBestSize
-#**
-#**   05.15.91 Carver
-#**     - version 2.0 upgrade
-#**
-#**   01.24.91 Carver
-#**     - version 1.4 upgrade
-#**
-#*
-
-import 
-  x, xlib, xshm, xv
-
-const 
-  libXv* = "libXv.so"
-
-type 
-  PXvRational* = ptr TXvRational
-  TXvRational*{.final.} = object 
-    numerator*: cint
-    denominator*: cint
-
-  PXvAttribute* = ptr TXvAttribute
-  TXvAttribute*{.final.} = object 
-    flags*: cint              # XvGettable, XvSettable 
-    min_value*: cint
-    max_value*: cint
-    name*: cstring
-
-  PPXvEncodingInfo* = ptr PXvEncodingInfo
-  PXvEncodingInfo* = ptr TXvEncodingInfo
-  TXvEncodingInfo*{.final.} = object 
-    encoding_id*: TXvEncodingID
-    name*: cstring
-    width*: culong
-    height*: culong
-    rate*: TXvRational
-    num_encodings*: culong
-
-  PXvFormat* = ptr TXvFormat
-  TXvFormat*{.final.} = object 
-    depth*: cchar
-    visual_id*: culong
-
-  PPXvAdaptorInfo* = ptr PXvAdaptorInfo
-  PXvAdaptorInfo* = ptr TXvAdaptorInfo
-  TXvAdaptorInfo*{.final.} = object 
-    base_id*: TXvPortID
-    num_ports*: culong
-    thetype*: cchar
-    name*: cstring
-    num_formats*: culong
-    formats*: PXvFormat
-    num_adaptors*: culong
-
-  PXvVideoNotifyEvent* = ptr TXvVideoNotifyEvent
-  TXvVideoNotifyEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong           # # of last request processed by server 
-    send_event*: TBool        # true if this came from a SendEvent request 
-    display*: PDisplay        # Display the event was read from 
-    drawable*: TDrawable      # drawable 
-    reason*: culong           # what generated this event 
-    port_id*: TXvPortID       # what port 
-    time*: TTime              # milliseconds 
-  
-  PXvPortNotifyEvent* = ptr TXvPortNotifyEvent
-  TXvPortNotifyEvent*{.final.} = object 
-    theType*: cint
-    serial*: culong           # # of last request processed by server 
-    send_event*: TBool        # true if this came from a SendEvent request 
-    display*: PDisplay        # Display the event was read from 
-    port_id*: TXvPortID       # what port 
-    time*: TTime              # milliseconds 
-    attribute*: TAtom         # atom that identifies attribute 
-    value*: clong             # value of attribute 
-  
-  PXvEvent* = ptr TXvEvent
-  TXvEvent*{.final.} = object 
-    pad*: array[0..23, clong] #case longint of
-                              #      0 : (
-                              #            theType : cint;
-                              #	  );
-                              #      1 : (
-                              #            xvvideo : TXvVideoNotifyEvent;
-                              #          );
-                              #      2 : (
-                              #            xvport : TXvPortNotifyEvent;
-                              #          );
-                              #      3 : (
-                              #            
-                              #          );
-  
-  PXvImageFormatValues* = ptr TXvImageFormatValues
-  TXvImageFormatValues*{.final.} = object 
-    id*: cint                 # Unique descriptor for the format 
-    theType*: cint            # XvRGB, XvYUV 
-    byte_order*: cint         # LSBFirst, MSBFirst 
-    guid*: array[0..15, cchar] # Globally Unique IDentifier 
-    bits_per_pixel*: cint
-    format*: cint             # XvPacked, XvPlanar 
-    num_planes*: cint         # for RGB formats only 
-    depth*: cint
-    red_mask*: cuint
-    green_mask*: cuint
-    blue_mask*: cuint         # for YUV formats only 
-    y_sample_bits*: cuint
-    u_sample_bits*: cuint
-    v_sample_bits*: cuint
-    horz_y_period*: cuint
-    horz_u_period*: cuint
-    horz_v_period*: cuint
-    vert_y_period*: cuint
-    vert_u_period*: cuint
-    vert_v_period*: cuint
-    component_order*: array[0..31, char] # eg. UYVY 
-    scanline_order*: cint     # XvTopToBottom, XvBottomToTop 
-  
-  PXvImage* = ptr TXvImage
-  TXvImage*{.final.} = object 
-    id*: cint
-    width*, height*: cint
-    data_size*: cint          # bytes 
-    num_planes*: cint
-    pitches*: pcint           # bytes 
-    offsets*: pcint           # bytes 
-    data*: pointer
-    obdata*: TXPointer
-
-
-proc XvQueryExtension*(display: PDisplay, p_version, p_revision, p_requestBase, 
-    p_eventBase, p_errorBase: pcuint): cint{.cdecl, dynlib: libXv, importc.}
-proc XvQueryAdaptors*(display: PDisplay, window: TWindow, p_nAdaptors: pcuint, 
-                      p_pAdaptors: PPXvAdaptorInfo): cint{.cdecl, dynlib: libXv, 
-    importc.}
-proc XvQueryEncodings*(display: PDisplay, port: TXvPortID, p_nEncoding: pcuint, 
-                       p_pEncoding: PPXvEncodingInfo): cint{.cdecl, 
-    dynlib: libXv, importc.}
-proc XvPutVideo*(display: PDisplay, port: TXvPortID, d: TDrawable, gc: TGC, 
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvPutStill*(display: PDisplay, port: TXvPortID, d: TDrawable, gc: TGC, 
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvGetVideo*(display: PDisplay, port: TXvPortID, d: TDrawable, gc: TGC, 
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvGetStill*(display: PDisplay, port: TXvPortID, d: TDrawable, gc: TGC, 
-                 vx, vy: cint, vw, vh: cuint, dx, dy: cint, dw, dh: cuint): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvStopVideo*(display: PDisplay, port: TXvPortID, drawable: TDrawable): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvGrabPort*(display: PDisplay, port: TXvPortID, time: TTime): cint{.cdecl, 
-    dynlib: libXv, importc.}
-proc XvUngrabPort*(display: PDisplay, port: TXvPortID, time: TTime): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvSelectVideoNotify*(display: PDisplay, drawable: TDrawable, onoff: TBool): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvSelectPortNotify*(display: PDisplay, port: TXvPortID, onoff: TBool): cint{.
-    cdecl, dynlib: libXv, importc.}
-proc XvSetPortAttribute*(display: PDisplay, port: TXvPortID, attribute: TAtom, 
-                         value: cint): cint{.cdecl, dynlib: libXv, importc.}
-proc XvGetPortAttribute*(display: PDisplay, port: TXvPortID, attribute: TAtom, 
-                         p_value: pcint): cint{.cdecl, dynlib: libXv, importc.}
-proc XvQueryBestSize*(display: PDisplay, port: TXvPortID, motion: TBool, 
-                      vid_w, vid_h, drw_w, drw_h: cuint, 
-                      p_actual_width, p_actual_height: pcuint): cint{.cdecl, 
-    dynlib: libXv, importc.}
-proc XvQueryPortAttributes*(display: PDisplay, port: TXvPortID, number: pcint): PXvAttribute{.
-    cdecl, dynlib: libXv, importc.}
-proc XvFreeAdaptorInfo*(adaptors: PXvAdaptorInfo){.cdecl, dynlib: libXv, importc.}
-proc XvFreeEncodingInfo*(encodings: PXvEncodingInfo){.cdecl, dynlib: libXv, 
-    importc.}
-proc XvListImageFormats*(display: PDisplay, port_id: TXvPortID, 
-                         count_return: pcint): PXvImageFormatValues{.cdecl, 
-    dynlib: libXv, importc.}
-proc XvCreateImage*(display: PDisplay, port: TXvPortID, id: cint, data: pointer, 
-                    width, height: cint): PXvImage{.cdecl, dynlib: libXv, 
-    importc.}
-proc XvPutImage*(display: PDisplay, id: TXvPortID, d: TDrawable, gc: TGC, 
-                 image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint, 
-                 dest_x, dest_y: cint, dest_w, dest_h: cuint): cint{.cdecl, 
-    dynlib: libXv, importc.}
-proc XvShmPutImage*(display: PDisplay, id: TXvPortID, d: TDrawable, gc: TGC, 
-                    image: PXvImage, src_x, src_y: cint, src_w, src_h: cuint, 
-                    dest_x, dest_y: cint, dest_w, dest_h: cuint, 
-                    send_event: TBool): cint{.cdecl, dynlib: libXv, importc.}
-proc XvShmCreateImage*(display: PDisplay, port: TXvPortID, id: cint, 
-                       data: pointer, width, height: cint, 
-                       shminfo: PXShmSegmentInfo): PXvImage{.cdecl, 
-    dynlib: libXv, importc.}
-# implementation
diff --git a/lib/wrappers/zip/libzip.nim b/lib/wrappers/zip/libzip.nim
deleted file mode 100755
index 2f8abc46c..000000000
--- a/lib/wrappers/zip/libzip.nim
+++ /dev/null
@@ -1,241 +0,0 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2008 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-## Interface to the `libzip <http://www.nih.at/libzip/index.html>`_ library by
-## Dieter Baron and Thomas Klausner. However, this does not need any external
-## library (DLL, lib*.so), as the source for this library is included and
-## compiled with this interface.
-
-#
-#  zip.h -- exported declarations.
-#  Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner
-#
-#  This file is part of libzip, a library to manipulate ZIP archives.
-#  The authors can be contacted at <libzip@nih.at>
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#  1. Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-#  2. Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in
-#     the documentation and/or other materials provided with the
-#     distribution.
-#  3. The names of the authors may not be used to endorse or promote
-#     products derived from this software without specific prior
-#     written permission.
-# 
-#  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
-#  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-#  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-#  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-#  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-#  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-#  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-#  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-#  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-import times
-
-{.compile: "libzip_all.c".}
-when defined(unix):
-  {.passl: "-lz".}
-
-type 
-  Tzip_source_cmd* = int32
-
-  Tzip_source_callback* = proc (state: pointer, data: pointer, length: int, 
-                                cmd: Tzip_source_cmd): int {.cdecl.}
-  Pzip_stat* = ptr Tzip_stat
-  Tzip_stat* {.final, pure.} = object 
-    name*: cstring            ## name of the file  
-    index*: int32             ## index within archive  
-    crc*: int32               ## crc of file data  
-    mtime*: TTime             ## modification time  
-    size*: int                ## size of file (uncompressed)  
-    comp_size*: int           ## size of file (compressed)  
-    comp_method*: int16       ## compression method used  
-    encryption_method*: int16 ## encryption method used  
-  
-  Tzip {.final, pure.} = object
-  Tzip_source {.final, pure.} = object 
-  Tzip_file {.final, pure.} = object
-
-  Pzip* = ptr Tzip ## represents a zip archive
-  Pzip_file* = ptr Tzip_file ## represents a file within an archive
-  Pzip_source* = ptr Tzip_source ## represents a source for an archive
-
-
-# flags for zip_name_locate, zip_fopen, zip_stat, ...  
-const 
-  ZIP_CREATE* = 1'i32
-  ZIP_EXCL* = 2'i32
-  ZIP_CHECKCONS* = 4'i32 
-  ZIP_FL_NOCASE* = 1'i32        ## ignore case on name lookup  
-  ZIP_FL_NODIR* = 2'i32         ## ignore directory component  
-  ZIP_FL_COMPRESSED* = 4'i32    ## read compressed data  
-  ZIP_FL_UNCHANGED* = 8'i32     ## use original data, ignoring changes  
-  ZIP_FL_RECOMPRESS* = 16'i32   ## force recompression of data  
-
-const  # archive global flags flags  
-  ZIP_AFL_TORRENT* = 1'i32      ##  torrent zipped  
-
-const # libzip error codes  
-  ZIP_ER_OK* = 0'i32            ## N No error  
-  ZIP_ER_MULTIDISK* = 1'i32     ## N Multi-disk zip archives not supported  
-  ZIP_ER_RENAME* = 2'i32        ## S Renaming temporary file failed  
-  ZIP_ER_CLOSE* = 3'i32         ## S Closing zip archive failed  
-  ZIP_ER_SEEK* = 4'i32          ## S Seek error  
-  ZIP_ER_READ* = 5'i32          ## S Read error  
-  ZIP_ER_WRITE* = 6'i32         ## S Write error  
-  ZIP_ER_CRC* = 7'i32           ## N CRC error  
-  ZIP_ER_ZIPCLOSED* = 8'i32     ## N Containing zip archive was closed  
-  ZIP_ER_NOENT* = 9'i32         ## N No such file  
-  ZIP_ER_EXISTS* = 10'i32       ## N File already exists  
-  ZIP_ER_OPEN* = 11'i32         ## S Can't open file  
-  ZIP_ER_TMPOPEN* = 12'i32      ## S Failure to create temporary file  
-  ZIP_ER_ZLIB* = 13'i32         ## Z Zlib error  
-  ZIP_ER_MEMORY* = 14'i32       ## N Malloc failure  
-  ZIP_ER_CHANGED* = 15'i32      ## N Entry has been changed  
-  ZIP_ER_COMPNOTSUPP* = 16'i32  ## N Compression method not supported  
-  ZIP_ER_EOF* = 17'i32          ## N Premature EOF  
-  ZIP_ER_INVAL* = 18'i32        ## N Invalid argument  
-  ZIP_ER_NOZIP* = 19'i32        ## N Not a zip archive  
-  ZIP_ER_INTERNAL* = 20'i32     ## N Internal error  
-  ZIP_ER_INCONS* = 21'i32       ## N Zip archive inconsistent  
-  ZIP_ER_REMOVE* = 22'i32       ## S Can't remove file  
-  ZIP_ER_DELETED* = 23'i32      ## N Entry has been deleted  
-   
-const # type of system error value  
-  ZIP_ET_NONE* = 0'i32          ## sys_err unused  
-  ZIP_ET_SYS* = 1'i32           ## sys_err is errno  
-  ZIP_ET_ZLIB* = 2'i32          ## sys_err is zlib error code  
-
-const # compression methods  
-  ZIP_CM_DEFAULT* = -1'i32      ## better of deflate or store  
-  ZIP_CM_STORE* = 0'i32         ## stored (uncompressed)  
-  ZIP_CM_SHRINK* = 1'i32        ## shrunk  
-  ZIP_CM_REDUCE_1* = 2'i32      ## reduced with factor 1  
-  ZIP_CM_REDUCE_2* = 3'i32      ## reduced with factor 2  
-  ZIP_CM_REDUCE_3* = 4'i32      ## reduced with factor 3  
-  ZIP_CM_REDUCE_4* = 5'i32      ## reduced with factor 4  
-  ZIP_CM_IMPLODE* = 6'i32       ## imploded  
-                                ## 7 - Reserved for Tokenizing compression algorithm  
-  ZIP_CM_DEFLATE* = 8'i32       ## deflated  
-  ZIP_CM_DEFLATE64* = 9'i32     ## deflate64  
-  ZIP_CM_PKWARE_IMPLODE* = 10'i32 ## PKWARE imploding  
-                                  ## 11 - Reserved by PKWARE  
-  ZIP_CM_BZIP2* = 12'i32        ## compressed using BZIP2 algorithm  
-                                ## 13 - Reserved by PKWARE  
-  ZIP_CM_LZMA* = 14'i32         ## LZMA (EFS)  
-                                ## 15-17 - Reserved by PKWARE  
-  ZIP_CM_TERSE* = 18'i32        ## compressed using IBM TERSE (new)  
-  ZIP_CM_LZ77* = 19'i32         ## IBM LZ77 z Architecture (PFS)  
-  ZIP_CM_WAVPACK* = 97'i32      ## WavPack compressed data  
-  ZIP_CM_PPMD* = 98'i32         ## PPMd version I, Rev 1  
-
-const  # encryption methods                              
-  ZIP_EM_NONE* = 0'i32            ## not encrypted  
-  ZIP_EM_TRAD_PKWARE* = 1'i32     ## traditional PKWARE encryption 
-
-const 
-  ZIP_EM_UNKNOWN* = 0x0000FFFF'i32 ## unknown algorithm  
-
-const 
-  ZIP_SOURCE_OPEN* = 0'i32        ## prepare for reading  
-  ZIP_SOURCE_READ* = 1'i32        ## read data  
-  ZIP_SOURCE_CLOSE* = 2'i32       ## reading is done  
-  ZIP_SOURCE_STAT* = 3'i32        ## get meta information  
-  ZIP_SOURCE_ERROR* = 4'i32       ## get error information  
-  constZIP_SOURCE_FREE* = 5'i32   ## cleanup and free resources  
-
-proc zip_add*(para1: Pzip, para2: cstring, para3: Pzip_source): int32 {.cdecl, 
-    importc: "zip_add".}
-proc zip_add_dir*(para1: Pzip, para2: cstring): int32 {.cdecl,  
-    importc: "zip_add_dir".}
-proc zip_close*(para1: Pzip) {.cdecl, importc: "zip_close".}
-proc zip_delete*(para1: Pzip, para2: int32): int32 {.cdecl,
-    importc: "zip_delete".}
-proc zip_error_clear*(para1: Pzip) {.cdecl, importc: "zip_error_clear".}
-proc zip_error_get*(para1: Pzip, para2: ptr int32, para3: ptr int32) {.cdecl, 
-    importc: "zip_error_get".}
-proc zip_error_get_sys_type*(para1: int32): int32 {.cdecl,  
-    importc: "zip_error_get_sys_type".}
-proc zip_error_to_str*(para1: cstring, para2: int, para3: int32, 
-                       para4: int32): int32 {.cdecl,
-    importc: "zip_error_to_str".}
-proc zip_fclose*(para1: Pzip_file) {.cdecl,
-    importc: "zip_fclose".}
-proc zip_file_error_clear*(para1: Pzip_file) {.cdecl, 
-    importc: "zip_file_error_clear".}
-proc zip_file_error_get*(para1: Pzip_file, para2: ptr int32, para3: ptr int32) {.
-    cdecl, importc: "zip_file_error_get".}
-proc zip_file_strerror*(para1: Pzip_file): cstring {.cdecl,
-    importc: "zip_file_strerror".}
-proc zip_fopen*(para1: Pzip, para2: cstring, para3: int32): Pzip_file {.cdecl, 
-    importc: "zip_fopen".}
-proc zip_fopen_index*(para1: Pzip, para2: int32, para3: int32): Pzip_file {.
-    cdecl, importc: "zip_fopen_index".}
-proc zip_fread*(para1: Pzip_file, para2: pointer, para3: int): int {.
-    cdecl, importc: "zip_fread".}
-proc zip_get_archive_comment*(para1: Pzip, para2: ptr int32, para3: int32): cstring {.
-    cdecl, importc: "zip_get_archive_comment".}
-proc zip_get_archive_flag*(para1: Pzip, para2: int32, para3: int32): int32 {.
-    cdecl, importc: "zip_get_archive_flag".}
-proc zip_get_file_comment*(para1: Pzip, para2: int32, para3: ptr int32, 
-                           para4: int32): cstring {.cdecl, 
-    importc: "zip_get_file_comment".}
-proc zip_get_name*(para1: Pzip, para2: int32, para3: int32): cstring {.cdecl, 
-    importc: "zip_get_name".}
-proc zip_get_num_files*(para1: Pzip): int32 {.cdecl,
-    importc: "zip_get_num_files".}
-proc zip_name_locate*(para1: Pzip, para2: cstring, para3: int32): int32 {.cdecl, 
-    importc: "zip_name_locate".}
-proc zip_open*(para1: cstring, para2: int32, para3: ptr int32): Pzip {.cdecl, 
-    importc: "zip_open".}
-proc zip_rename*(para1: Pzip, para2: int32, para3: cstring): int32 {.cdecl, 
-    importc: "zip_rename".}
-proc zip_replace*(para1: Pzip, para2: int32, para3: Pzip_source): int32 {.cdecl, 
-    importc: "zip_replace".}
-proc zip_set_archive_comment*(para1: Pzip, para2: cstring, para3: int32): int32 {.
-    cdecl, importc: "zip_set_archive_comment".}
-proc zip_set_archive_flag*(para1: Pzip, para2: int32, para3: int32): int32 {.
-    cdecl, importc: "zip_set_archive_flag".}
-proc zip_set_file_comment*(para1: Pzip, para2: int32, para3: cstring, 
-                           para4: int32): int32 {.cdecl, 
-    importc: "zip_set_file_comment".}
-proc zip_source_buffer*(para1: Pzip, para2: pointer, para3: int, para4: int32): Pzip_source {.
-    cdecl, importc: "zip_source_buffer".}
-proc zip_source_file*(para1: Pzip, para2: cstring, para3: int, para4: int): Pzip_source {.
-    cdecl, importc: "zip_source_file".}
-proc zip_source_filep*(para1: Pzip, para2: TFile, para3: int, para4: int): Pzip_source {.
-    cdecl, importc: "zip_source_filep".}
-proc zip_source_free*(para1: Pzip_source) {.cdecl, 
-    importc: "zip_source_free".}
-proc zip_source_function*(para1: Pzip, para2: Tzip_source_callback, 
-                          para3: pointer): Pzip_source {.cdecl, 
-    importc: "zip_source_function".}
-proc zip_source_zip*(para1: Pzip, para2: Pzip, para3: int32, para4: int32, 
-                     para5: int, para6: int): Pzip_source {.cdecl, 
-    importc: "zip_source_zip".}
-proc zip_stat*(para1: Pzip, para2: cstring, para3: int32, para4: Pzip_stat): int32 {.
-    cdecl, importc: "zip_stat".}
-proc zip_stat_index*(para1: Pzip, para2: int32, para3: int32, para4: Pzip_stat): int32 {.
-    cdecl, importc: "zip_stat_index".}
-proc zip_stat_init*(para1: Pzip_stat) {.cdecl, importc: "zip_stat_init".}
-proc zip_strerror*(para1: Pzip): cstring {.cdecl, importc: "zip_strerror".}
-proc zip_unchange*(para1: Pzip, para2: int32): int32 {.cdecl,
-    importc: "zip_unchange".}
-proc zip_unchange_all*(para1: Pzip): int32 {.cdecl, importc: "zip_unchange_all".}
-proc zip_unchange_archive*(para1: Pzip): int32 {.cdecl, 
-    importc: "zip_unchange_archive".}
diff --git a/lib/wrappers/zip/libzip_all.c b/lib/wrappers/zip/libzip_all.c
deleted file mode 100755
index 797374b29..000000000
--- a/lib/wrappers/zip/libzip_all.c
+++ /dev/null
@@ -1,4189 +0,0 @@
-/*
-  zipint.h -- internal declarations.
-  Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner
-
-  This file is part of libzip, a library to manipulate ZIP archives.
-  The authors can be contacted at <libzip@nih.at>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in
-     the documentation and/or other materials provided with the
-     distribution.
-  3. The names of the authors may not be used to endorse or promote
-     products derived from this software without specific prior
-     written permission.
- 
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <zlib.h>
-
-/*
-#ifdef _MSC_VER
-#define ZIP_EXTERN __declspec(dllimport)
-#endif
-*/
-
-/*
-  zip.h -- exported declarations.
-  Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner
-
-  This file is part of libzip, a library to manipulate ZIP archives.
-  The authors can be contacted at <libzip@nih.at>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in
-     the documentation and/or other materials provided with the
-     distribution.
-  3. The names of the authors may not be used to endorse or promote
-     products derived from this software without specific prior
-     written permission.
- 
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-#ifndef ZIP_EXTERN
-#define ZIP_EXTERN
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <time.h>
-
-/* flags for zip_open */
-
-#define ZIP_CREATE           1
-#define ZIP_EXCL             2
-#define ZIP_CHECKCONS        4
-
-
-/* flags for zip_name_locate, zip_fopen, zip_stat, ... */
-
-#define ZIP_FL_NOCASE                1 /* ignore case on name lookup */
-#define ZIP_FL_NODIR                2 /* ignore directory component */
-#define ZIP_FL_COMPRESSED        4 /* read compressed data */
-#define ZIP_FL_UNCHANGED        8 /* use original data, ignoring changes */
-#define ZIP_FL_RECOMPRESS      16 /* force recompression of data */
-
-/* archive global flags flags */
-
-#define ZIP_AFL_TORRENT                1 /* torrent zipped */
-
-/* libzip error codes */
-
-#define ZIP_ER_OK             0  /* N No error */
-#define ZIP_ER_MULTIDISK      1  /* N Multi-disk zip archives not supported */
-#define ZIP_ER_RENAME         2  /* S Renaming temporary file failed */
-#define ZIP_ER_CLOSE          3  /* S Closing zip archive failed */
-#define ZIP_ER_SEEK           4  /* S Seek error */
-#define ZIP_ER_READ           5  /* S Read error */
-#define ZIP_ER_WRITE          6  /* S Write error */
-#define ZIP_ER_CRC            7  /* N CRC error */
-#define ZIP_ER_ZIPCLOSED      8  /* N Containing zip archive was closed */
-#define ZIP_ER_NOENT          9  /* N No such file */
-#define ZIP_ER_EXISTS        10  /* N File already exists */
-#define ZIP_ER_OPEN          11  /* S Can't open file */
-#define ZIP_ER_TMPOPEN       12  /* S Failure to create temporary file */
-#define ZIP_ER_ZLIB          13  /* Z Zlib error */
-#define ZIP_ER_MEMORY        14  /* N Malloc failure */
-#define ZIP_ER_CHANGED       15  /* N Entry has been changed */
-#define ZIP_ER_COMPNOTSUPP   16  /* N Compression method not supported */
-#define ZIP_ER_EOF           17  /* N Premature EOF */
-#define ZIP_ER_INVAL         18  /* N Invalid argument */
-#define ZIP_ER_NOZIP         19  /* N Not a zip archive */
-#define ZIP_ER_INTERNAL      20  /* N Internal error */
-#define ZIP_ER_INCONS        21  /* N Zip archive inconsistent */
-#define ZIP_ER_REMOVE        22  /* S Can't remove file */
-#define ZIP_ER_DELETED       23  /* N Entry has been deleted */
-
-
-/* type of system error value */
-
-#define ZIP_ET_NONE              0  /* sys_err unused */
-#define ZIP_ET_SYS              1  /* sys_err is errno */
-#define ZIP_ET_ZLIB              2  /* sys_err is zlib error code */
-
-/* compression methods */
-
-#define ZIP_CM_DEFAULT              -1  /* better of deflate or store */
-#define ZIP_CM_STORE               0  /* stored (uncompressed) */
-#define ZIP_CM_SHRINK               1  /* shrunk */
-#define ZIP_CM_REDUCE_1               2  /* reduced with factor 1 */
-#define ZIP_CM_REDUCE_2               3  /* reduced with factor 2 */
-#define ZIP_CM_REDUCE_3               4  /* reduced with factor 3 */
-#define ZIP_CM_REDUCE_4               5  /* reduced with factor 4 */
-#define ZIP_CM_IMPLODE               6  /* imploded */
-/* 7 - Reserved for Tokenizing compression algorithm */
-#define ZIP_CM_DEFLATE               8  /* deflated */
-#define ZIP_CM_DEFLATE64       9  /* deflate64 */
-#define ZIP_CM_PKWARE_IMPLODE 10  /* PKWARE imploding */
-/* 11 - Reserved by PKWARE */
-#define ZIP_CM_BZIP2          12  /* compressed using BZIP2 algorithm */
-/* 13 - Reserved by PKWARE */
-#define ZIP_CM_LZMA              14  /* LZMA (EFS) */
-/* 15-17 - Reserved by PKWARE */
-#define ZIP_CM_TERSE              18  /* compressed using IBM TERSE (new) */
-#define ZIP_CM_LZ77           19  /* IBM LZ77 z Architecture (PFS) */
-#define ZIP_CM_WAVPACK              97  /* WavPack compressed data */
-#define ZIP_CM_PPMD              98  /* PPMd version I, Rev 1 */
-
-/* encryption methods */
-
-#define ZIP_EM_NONE               0  /* not encrypted */
-#define ZIP_EM_TRAD_PKWARE     1  /* traditional PKWARE encryption */
-#if 0 /* Strong Encryption Header not parsed yet */
-#define ZIP_EM_DES        0x6601  /* strong encryption: DES */
-#define ZIP_EM_RC2_OLD    0x6602  /* strong encryption: RC2, version < 5.2 */
-#define ZIP_EM_3DES_168   0x6603
-#define ZIP_EM_3DES_112   0x6609
-#define ZIP_EM_AES_128    0x660e
-#define ZIP_EM_AES_192    0x660f
-#define ZIP_EM_AES_256    0x6610
-#define ZIP_EM_RC2        0x6702  /* strong encryption: RC2, version >= 5.2 */
-#define ZIP_EM_RC4        0x6801
-#endif
-#define ZIP_EM_UNKNOWN    0xffff  /* unknown algorithm */
-
-typedef long myoff_t; /* XXX: 64 bit support */
-
-enum zip_source_cmd {
-    ZIP_SOURCE_OPEN,        /* prepare for reading */
-    ZIP_SOURCE_READ,         /* read data */
-    ZIP_SOURCE_CLOSE,        /* reading is done */
-    ZIP_SOURCE_STAT,        /* get meta information */
-    ZIP_SOURCE_ERROR,        /* get error information */
-    ZIP_SOURCE_FREE        /* cleanup and free resources */
-};
-
-typedef ssize_t (*zip_source_callback)(void *state, void *data,
-                                       size_t len, enum zip_source_cmd cmd);
-
-struct zip_stat {
-    const char *name;                        /* name of the file */
-    int index;                                /* index within archive */
-    unsigned int crc;                        /* crc of file data */
-    time_t mtime;                        /* modification time */
-    myoff_t size;                                /* size of file (uncompressed) */
-    myoff_t comp_size;                        /* size of file (compressed) */
-    unsigned short comp_method;                /* compression method used */
-    unsigned short encryption_method;        /* encryption method used */
-};
-
-struct zip;
-struct zip_file;
-struct zip_source;
-
-
-ZIP_EXTERN int zip_add(struct zip *, const char *, struct zip_source *);
-ZIP_EXTERN int zip_add_dir(struct zip *, const char *);
-ZIP_EXTERN int zip_close(struct zip *);
-ZIP_EXTERN int zip_delete(struct zip *, int);
-ZIP_EXTERN void zip_error_clear(struct zip *);
-ZIP_EXTERN void zip_error_get(struct zip *, int *, int *);
-ZIP_EXTERN int zip_error_get_sys_type(int);
-ZIP_EXTERN int zip_error_to_str(char *, size_t, int, int);
-ZIP_EXTERN int zip_fclose(struct zip_file *);
-ZIP_EXTERN void zip_file_error_clear(struct zip_file *);
-ZIP_EXTERN void zip_file_error_get(struct zip_file *, int *, int *);
-ZIP_EXTERN const char *zip_file_strerror(struct zip_file *);
-ZIP_EXTERN struct zip_file *zip_fopen(struct zip *, const char *, int);
-ZIP_EXTERN struct zip_file *zip_fopen_index(struct zip *, int, int);
-ZIP_EXTERN ssize_t zip_fread(struct zip_file *, void *, size_t);
-ZIP_EXTERN const char *zip_get_archive_comment(struct zip *, int *, int);
-ZIP_EXTERN int zip_get_archive_flag(struct zip *, int, int);
-ZIP_EXTERN const char *zip_get_file_comment(struct zip *, int, int *, int);
-ZIP_EXTERN const char *zip_get_name(struct zip *, int, int);
-ZIP_EXTERN int zip_get_num_files(struct zip *);
-ZIP_EXTERN int zip_name_locate(struct zip *, const char *, int);
-ZIP_EXTERN struct zip *zip_open(const char *, int, int *);
-ZIP_EXTERN int zip_rename(struct zip *, int, const char *);
-ZIP_EXTERN int zip_replace(struct zip *, int, struct zip_source *);
-ZIP_EXTERN int zip_set_archive_comment(struct zip *, const char *, int);
-ZIP_EXTERN int zip_set_archive_flag(struct zip *, int, int);
-ZIP_EXTERN int zip_set_file_comment(struct zip *, int, const char *, int);
-ZIP_EXTERN struct zip_source *zip_source_buffer(struct zip *, const void *,
-                                                myoff_t, int);
-ZIP_EXTERN struct zip_source *zip_source_file(struct zip *, const char *,
-                                              myoff_t, myoff_t);
-ZIP_EXTERN struct zip_source *zip_source_filep(struct zip *, FILE *,
-                                               myoff_t, myoff_t);
-ZIP_EXTERN void zip_source_free(struct zip_source *);
-ZIP_EXTERN struct zip_source *zip_source_function(struct zip *,
-                                                  zip_source_callback, void *);
-ZIP_EXTERN struct zip_source *zip_source_zip(struct zip *, struct zip *,
-                                             int, int, myoff_t, myoff_t);
-ZIP_EXTERN int zip_stat(struct zip *, const char *, int, struct zip_stat *);
-ZIP_EXTERN int zip_stat_index(struct zip *, int, int, struct zip_stat *);
-ZIP_EXTERN void zip_stat_init(struct zip_stat *);
-ZIP_EXTERN const char *zip_strerror(struct zip *);
-ZIP_EXTERN int zip_unchange(struct zip *, int);
-ZIP_EXTERN int zip_unchange_all(struct zip *);
-ZIP_EXTERN int zip_unchange_archive(struct zip *);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-/* config.h.  Generated from config.h.in by configure.  */
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
-   */
-/* #undef HAVE_DECL_TZNAME */
-
-#define HAVE_CONFIG_H 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the `fseeko' function. */
-#define HAVE_FSEEKO 1
-
-/* Define to 1 if you have the `ftello' function. */
-#define HAVE_FTELLO 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `z' library (-lz). */
-#define HAVE_LIBZ 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mkstemp' function. */
-#define HAVE_MKSTEMP 1
-
-/* Define to 1 if you have the `MoveFileExA' function. */
-/* #undef HAVE_MOVEFILEEXA */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if `tm_zone' is member of `struct tm'. */
-#define HAVE_STRUCT_TM_TM_ZONE 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
-   `HAVE_STRUCT_TM_TM_ZONE' instead. */
-#define HAVE_TM_ZONE 1
-
-/* Define to 1 if you don't have `tm_zone' but do have the external array
-   `tzname'. */
-/* #undef HAVE_TZNAME */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "libzip"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "libzip@nih.at"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "libzip"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libzip 0.9"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "libzip"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.9"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-/* #undef TM_IN_SYS_TIME */
-
-/* Version number of package */
-#define VERSION "0.9"
-
-
-#ifndef HAVE_MKSTEMP
-int _zip_mkstemp(char *);
-#define mkstemp _zip_mkstemp
-#endif
-
-#ifdef HAVE_MOVEFILEEXA
-#include <windows.h>
-#define _zip_rename(s, t)                                                \
-        (!MoveFileExA((s), (t),                                                \
-                     MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING))
-#else
-#define _zip_rename        rename
-#endif
-
-#ifndef HAVE_FSEEKO
-#define fseeko(s, o, w)        (fseek((s), (long int)(o), (w)))
-#endif
-#ifndef HAVE_FTELLO
-#define ftello(s)        ((long)ftell((s)))
-#endif
-
-
-#define CENTRAL_MAGIC "PK\1\2"
-#define LOCAL_MAGIC   "PK\3\4"
-#define EOCD_MAGIC    "PK\5\6"
-#define DATADES_MAGIC "PK\7\8"
-#define TORRENT_SIG        "TORRENTZIPPED-"
-#define TORRENT_SIG_LEN        14
-#define TORRENT_CRC_LEN 8
-#define TORRENT_MEM_LEVEL        8
-#define CDENTRYSIZE         46u
-#define LENTRYSIZE          30
-#define MAXCOMLEN        65536
-#define EOCDLEN             22
-#define CDBUFSIZE       (MAXCOMLEN+EOCDLEN)
-#define BUFSIZE                8192
-
-
-/* state of change of a file in zip archive */
-
-enum zip_state { ZIP_ST_UNCHANGED, ZIP_ST_DELETED, ZIP_ST_REPLACED,
-                 ZIP_ST_ADDED, ZIP_ST_RENAMED };
-
-/* constants for struct zip_file's member flags */
-
-#define ZIP_ZF_EOF        1 /* EOF reached */
-#define ZIP_ZF_DECOMP        2 /* decompress data */
-#define ZIP_ZF_CRC        4 /* compute and compare CRC */
-
-/* directory entry: general purpose bit flags */
-
-#define ZIP_GPBF_ENCRYPTED                0x0001        /* is encrypted */
-#define ZIP_GPBF_DATA_DESCRIPTOR        0x0008        /* crc/size after file data */
-#define ZIP_GPBF_STRONG_ENCRYPTION        0x0040  /* uses strong encryption */
-
-/* error information */
-
-struct zip_error {
-    int zip_err;        /* libzip error code (ZIP_ER_*) */
-    int sys_err;        /* copy of errno (E*) or zlib error code */
-    char *str;                /* string representation or NULL */
-};
-
-/* zip archive, part of API */
-
-struct zip {
-    char *zn;                        /* file name */
-    FILE *zp;                        /* file */
-    struct zip_error error;        /* error information */
-
-    unsigned int flags;                /* archive global flags */
-    unsigned int ch_flags;        /* changed archive global flags */
-
-    struct zip_cdir *cdir;        /* central directory */
-    char *ch_comment;                /* changed archive comment */
-    int ch_comment_len;                /* length of changed zip archive
-                                 * comment, -1 if unchanged */
-    int nentry;                        /* number of entries */
-    int nentry_alloc;                /* number of entries allocated */
-    struct zip_entry *entry;        /* entries */
-    int nfile;                        /* number of opened files within archive */
-    int nfile_alloc;                /* number of files allocated */
-    struct zip_file **file;        /* opened files within archive */
-};
-
-/* file in zip archive, part of API */
-
-struct zip_file {
-    struct zip *za;                /* zip archive containing this file */
-    struct zip_error error;        /* error information */
-    int flags;                        /* -1: eof, >0: error */
-
-    int method;                        /* compression method */
-    myoff_t fpos;                        /* position within zip file (fread/fwrite) */
-    unsigned long bytes_left;        /* number of bytes left to read */
-    unsigned long cbytes_left;  /* number of bytes of compressed data left */
-    
-    unsigned long crc;                /* CRC so far */
-    unsigned long crc_orig;        /* CRC recorded in archive */
-    
-    char *buffer;
-    z_stream *zstr;
-};
-
-/* zip archive directory entry (central or local) */
-
-struct zip_dirent {
-    unsigned short version_madeby;        /* (c)  version of creator */
-    unsigned short version_needed;        /* (cl) version needed to extract */
-    unsigned short bitflags;                /* (cl) general purpose bit flag */
-    unsigned short comp_method;                /* (cl) compression method used */
-    time_t last_mod;                        /* (cl) time of last modification */
-    unsigned int crc;                        /* (cl) CRC-32 of uncompressed data */
-    unsigned int comp_size;                /* (cl) size of commpressed data */
-    unsigned int uncomp_size;                /* (cl) size of uncommpressed data */
-    char *filename;                        /* (cl) file name (NUL-terminated) */
-    unsigned short filename_len;        /* (cl) length of filename (w/o NUL) */
-    char *extrafield;                        /* (cl) extra field */
-    unsigned short extrafield_len;        /* (cl) length of extra field */
-    char *comment;                        /* (c)  file comment */
-    unsigned short comment_len;                /* (c)  length of file comment */
-    unsigned short disk_number;                /* (c)  disk number start */
-    unsigned short int_attrib;                /* (c)  internal file attributes */
-    unsigned int ext_attrib;                /* (c)  external file attributes */
-    unsigned int offset;                /* (c)  offset of local header  */
-};
-
-/* zip archive central directory */
-
-struct zip_cdir {
-    struct zip_dirent *entry;        /* directory entries */
-    int nentry;                        /* number of entries */
-
-    unsigned int size;                /* size of central direcotry */
-    unsigned int offset;        /* offset of central directory in file */
-    char *comment;                /* zip archive comment */
-    unsigned short comment_len;        /* length of zip archive comment */
-};
-
-
-
-struct zip_source {
-    zip_source_callback f;
-    void *ud;
-};
-
-/* entry in zip archive directory */
-
-struct zip_entry {
-    enum zip_state state;
-    struct zip_source *source;
-    char *ch_filename;
-    char *ch_comment;
-    int ch_comment_len;
-};
-
-
-
-extern const char * const _zip_err_str[];
-extern const int _zip_nerr_str;
-extern const int _zip_err_type[];
-
-
-
-#define ZIP_ENTRY_DATA_CHANGED(x)        \
-                        ((x)->state == ZIP_ST_REPLACED  \
-                         || (x)->state == ZIP_ST_ADDED)
-
-
-
-int _zip_cdir_compute_crc(struct zip *, uLong *);
-void _zip_cdir_free(struct zip_cdir *);
-struct zip_cdir *_zip_cdir_new(int, struct zip_error *);
-int _zip_cdir_write(struct zip_cdir *, FILE *, struct zip_error *);
-
-void _zip_dirent_finalize(struct zip_dirent *);
-void _zip_dirent_init(struct zip_dirent *);
-int _zip_dirent_read(struct zip_dirent *, FILE *,
-                     unsigned char **, unsigned int, int, struct zip_error *);
-void _zip_dirent_torrent_normalize(struct zip_dirent *);
-int _zip_dirent_write(struct zip_dirent *, FILE *, int, struct zip_error *);
-
-void _zip_entry_free(struct zip_entry *);
-void _zip_entry_init(struct zip *, int);
-struct zip_entry *_zip_entry_new(struct zip *);
-
-void _zip_error_clear(struct zip_error *);
-void _zip_error_copy(struct zip_error *, struct zip_error *);
-void _zip_error_fini(struct zip_error *);
-void _zip_error_get(struct zip_error *, int *, int *);
-void _zip_error_init(struct zip_error *);
-void _zip_error_set(struct zip_error *, int, int);
-const char *_zip_error_strerror(struct zip_error *);
-
-int _zip_file_fillbuf(void *, size_t, struct zip_file *);
-unsigned int _zip_file_get_offset(struct zip *, int);
-
-int _zip_filerange_crc(FILE *, myoff_t, myoff_t, uLong *, struct zip_error *);
-
-struct zip_source *_zip_source_file_or_p(struct zip *, const char *, FILE *,
-                                         myoff_t, myoff_t);
-
-void _zip_free(struct zip *);
-const char *_zip_get_name(struct zip *, int, int, struct zip_error *);
-int _zip_local_header_read(struct zip *, int);
-void *_zip_memdup(const void *, size_t, struct zip_error *);
-int _zip_name_locate(struct zip *, const char *, int, struct zip_error *);
-struct zip *_zip_new(struct zip_error *);
-unsigned short _zip_read2(unsigned char **);
-unsigned int _zip_read4(unsigned char **);
-int _zip_replace(struct zip *, int, const char *, struct zip_source *);
-int _zip_set_name(struct zip *, int, const char *);
-int _zip_unchange(struct zip *, int, int);
-void _zip_unchange_data(struct zip_entry *);
-
-         
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-const char *
-_zip_error_strerror(struct zip_error *err)
-{
-    const char *zs, *ss;
-    char buf[128], *s;
-
-    _zip_error_fini(err);
-
-    if (err->zip_err < 0 || err->zip_err >= _zip_nerr_str) {
-        sprintf(buf, "Unknown error %d", err->zip_err);
-        zs = NULL;
-        ss = buf;
-    }
-    else {
-        zs = _zip_err_str[err->zip_err];
-        
-        switch (_zip_err_type[err->zip_err]) {
-        case ZIP_ET_SYS:
-            ss = strerror(err->sys_err);
-            break;
-
-        case ZIP_ET_ZLIB:
-            ss = zError(err->sys_err);
-            break;
-
-        default:
-            ss = NULL;
-        }
-    }
-
-    if (ss == NULL)
-        return zs;
-    else {
-        if ((s=(char *)malloc(strlen(ss)
-                              + (zs ? strlen(zs)+2 : 0) + 1)) == NULL)
-            return _zip_err_str[ZIP_ER_MEMORY];
-        
-        sprintf(s, "%s%s%s",
-                (zs ? zs : ""),
-                (zs ? ": " : ""),
-                ss);
-        err->str = s;
-
-        return s;
-    }
-}
-
-#include <stdlib.h>
-
-
-
-void
-_zip_error_clear(struct zip_error *err)
-{
-    err->zip_err = ZIP_ER_OK;
-    err->sys_err = 0;
-}
-
-
-
-void
-_zip_error_copy(struct zip_error *dst, struct zip_error *src)
-{
-    dst->zip_err = src->zip_err;
-    dst->sys_err = src->sys_err;
-}
-
-
-
-void
-_zip_error_fini(struct zip_error *err)
-{
-    free(err->str);
-    err->str = NULL;
-}
-
-
-
-void
-_zip_error_get(struct zip_error *err, int *zep, int *sep)
-{
-    if (zep)
-        *zep = err->zip_err;
-    if (sep) {
-        if (zip_error_get_sys_type(err->zip_err) != ZIP_ET_NONE)
-            *sep = err->sys_err;
-        else
-            *sep = 0;
-    }
-}
-
-
-
-void
-_zip_error_init(struct zip_error *err)
-{
-    err->zip_err = ZIP_ER_OK;
-    err->sys_err = 0;
-    err->str = NULL;
-}
-
-
-
-void
-_zip_error_set(struct zip_error *err, int ze, int se)
-{
-    if (err) {
-        err->zip_err = ze;
-        err->sys_err = se;
-    }
-}
-
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-
-
-int
-_zip_mkstemp(char *path)
-{
-        int fd;   
-        char *start, *trv;
-        struct stat sbuf;
-        pid_t pid;
-
-        /* To guarantee multiple calls generate unique names even if
-           the file is not created. 676 different possibilities with 7
-           or more X's, 26 with 6 or less. */
-        static char xtra[2] = "aa";
-        int xcnt = 0;
-
-        pid = getpid();
-
-        /* Move to end of path and count trailing X's. */
-        for (trv = path; *trv; ++trv)
-                if (*trv == 'X')
-                        xcnt++;
-                else
-                        xcnt = 0;        
-
-        /* Use at least one from xtra.  Use 2 if more than 6 X's. */
-        if (*(trv - 1) == 'X')
-                *--trv = xtra[0];
-        if (xcnt > 6 && *(trv - 1) == 'X')
-                *--trv = xtra[1];
-
-        /* Set remaining X's to pid digits with 0's to the left. */
-        while (*--trv == 'X') {
-                *trv = (pid % 10) + '0';
-                pid /= 10;
-        }
-
-        /* update xtra for next call. */
-        if (xtra[0] != 'z')
-                xtra[0]++;
-        else {
-                xtra[0] = 'a';
-                if (xtra[1] != 'z')
-                        xtra[1]++;
-                else
-                        xtra[1] = 'a';
-        }
-
-        /*
-         * check the target directory; if you have six X's and it
-         * doesn't exist this runs for a *very* long time.
-         */
-        for (start = trv + 1;; --trv) {
-                if (trv <= path)
-                        break;
-                if (*trv == '/') {
-                        *trv = '\0';
-                        if (stat(path, &sbuf))
-                                return (0);
-                        if (!S_ISDIR(sbuf.st_mode)) {
-                                errno = ENOTDIR;
-                                return (0);
-                        }
-                        *trv = '/';
-                        break;
-                }
-        }
-
-        for (;;) {
-                if ((fd=open(path, O_CREAT|O_EXCL|O_RDWR|O_BINARY, 0600)) >= 0)
-                        return (fd);
-                if (errno != EEXIST)
-                        return (0);
-
-                /* tricky little algorithm for backward compatibility */
-                for (trv = start;;) {
-                        if (!*trv)
-                                return (0);
-                        if (*trv == 'z')
-                                *trv++ = 'a';
-                        else {
-                                if (isdigit((unsigned char)*trv))
-                                        *trv = 'a';
-                                else
-                                        ++*trv;
-                                break;
-                        }
-                }
-        }
-        /*NOTREACHED*/
-}
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-static time_t _zip_d2u_time(int, int);
-static char *_zip_readfpstr(FILE *, unsigned int, int, struct zip_error *);
-static char *_zip_readstr(unsigned char **, int, int, struct zip_error *);
-static void _zip_u2d_time(time_t, unsigned short *, unsigned short *);
-static void _zip_write2(unsigned short, FILE *);
-static void _zip_write4(unsigned int, FILE *);
-
-
-
-void
-_zip_cdir_free(struct zip_cdir *cd)
-{
-    int i;
-
-    if (!cd)
-        return;
-
-    for (i=0; i<cd->nentry; i++)
-        _zip_dirent_finalize(cd->entry+i);
-    free(cd->comment);
-    free(cd->entry);
-    free(cd);
-}
-
-
-
-struct zip_cdir *
-_zip_cdir_new(int nentry, struct zip_error *error)
-{
-    struct zip_cdir *cd;
-    
-    if ((cd=(struct zip_cdir *)malloc(sizeof(*cd))) == NULL) {
-        _zip_error_set(error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    if ((cd->entry=(struct zip_dirent *)malloc(sizeof(*(cd->entry))*nentry))
-        == NULL) {
-        _zip_error_set(error, ZIP_ER_MEMORY, 0);
-        free(cd);
-        return NULL;
-    }
-
-    /* entries must be initialized by caller */
-
-    cd->nentry = nentry;
-    cd->size = cd->offset = 0;
-    cd->comment = NULL;
-    cd->comment_len = 0;
-
-    return cd;
-}
-
-
-
-int
-_zip_cdir_write(struct zip_cdir *cd, FILE *fp, struct zip_error *error)
-{
-    int i;
-
-    cd->offset = ftello(fp);
-
-    for (i=0; i<cd->nentry; i++) {
-        if (_zip_dirent_write(cd->entry+i, fp, 0, error) != 0)
-            return -1;
-    }
-
-    cd->size = ftello(fp) - cd->offset;
-    
-    /* clearerr(fp); */
-    fwrite(EOCD_MAGIC, 1, 4, fp);
-    _zip_write4(0, fp);
-    _zip_write2((unsigned short)cd->nentry, fp);
-    _zip_write2((unsigned short)cd->nentry, fp);
-    _zip_write4(cd->size, fp);
-    _zip_write4(cd->offset, fp);
-    _zip_write2(cd->comment_len, fp);
-    fwrite(cd->comment, 1, cd->comment_len, fp);
-
-    if (ferror(fp)) {
-        _zip_error_set(error, ZIP_ER_WRITE, errno);
-        return -1;
-    }
-
-    return 0;
-}
-
-
-
-void
-_zip_dirent_finalize(struct zip_dirent *zde)
-{
-    free(zde->filename);
-    zde->filename = NULL;
-    free(zde->extrafield);
-    zde->extrafield = NULL;
-    free(zde->comment);
-    zde->comment = NULL;
-}
-
-
-
-void
-_zip_dirent_init(struct zip_dirent *de)
-{
-    de->version_madeby = 0;
-    de->version_needed = 20; /* 2.0 */
-    de->bitflags = 0;
-    de->comp_method = 0;
-    de->last_mod = 0;
-    de->crc = 0;
-    de->comp_size = 0;
-    de->uncomp_size = 0;
-    de->filename = NULL;
-    de->filename_len = 0;
-    de->extrafield = NULL;
-    de->extrafield_len = 0;
-    de->comment = NULL;
-    de->comment_len = 0;
-    de->disk_number = 0;
-    de->int_attrib = 0;
-    de->ext_attrib = 0;
-    de->offset = 0;
-}
-
-
-
-/* _zip_dirent_read(zde, fp, bufp, left, localp, error):
-   Fills the zip directory entry zde.
-
-   If bufp is non-NULL, data is taken from there and bufp is advanced
-   by the amount of data used; no more than left bytes are used.
-   Otherwise data is read from fp as needed.
-
-   If localp != 0, it reads a local header instead of a central
-   directory entry.
-
-   Returns 0 if successful. On error, error is filled in and -1 is
-   returned.
-*/
-
-int
-_zip_dirent_read(struct zip_dirent *zde, FILE *fp,
-                 unsigned char **bufp, unsigned int left, int localp,
-                 struct zip_error *error)
-{
-    unsigned char buf[CDENTRYSIZE];
-    unsigned char *cur;
-    unsigned short dostime, dosdate;
-    unsigned int size;
-
-    if (localp)
-        size = LENTRYSIZE;
-    else
-        size = CDENTRYSIZE;
-    
-    if (bufp) {
-        /* use data from buffer */
-        cur = *bufp;
-        if (left < size) {
-            _zip_error_set(error, ZIP_ER_NOZIP, 0);
-            return -1;
-        }
-    }
-    else {
-        /* read entry from disk */
-        if ((fread(buf, 1, size, fp)<size)) {
-            _zip_error_set(error, ZIP_ER_READ, errno);
-            return -1;
-        }
-        left = size;
-        cur = buf;
-    }
-
-    if (memcmp(cur, (localp ? LOCAL_MAGIC : CENTRAL_MAGIC), 4) != 0) {
-        _zip_error_set(error, ZIP_ER_NOZIP, 0);
-        return -1;
-    }
-    cur += 4;
-
-    
-    /* convert buffercontents to zip_dirent */
-    
-    if (!localp)
-        zde->version_madeby = _zip_read2(&cur);
-    else
-        zde->version_madeby = 0;
-    zde->version_needed = _zip_read2(&cur);
-    zde->bitflags = _zip_read2(&cur);
-    zde->comp_method = _zip_read2(&cur);
-    
-    /* convert to time_t */
-    dostime = _zip_read2(&cur);
-    dosdate = _zip_read2(&cur);
-    zde->last_mod = _zip_d2u_time(dostime, dosdate);
-    
-    zde->crc = _zip_read4(&cur);
-    zde->comp_size = _zip_read4(&cur);
-    zde->uncomp_size = _zip_read4(&cur);
-    
-    zde->filename_len = _zip_read2(&cur);
-    zde->extrafield_len = _zip_read2(&cur);
-    
-    if (localp) {
-        zde->comment_len = 0;
-        zde->disk_number = 0;
-        zde->int_attrib = 0;
-        zde->ext_attrib = 0;
-        zde->offset = 0;
-    } else {
-        zde->comment_len = _zip_read2(&cur);
-        zde->disk_number = _zip_read2(&cur);
-        zde->int_attrib = _zip_read2(&cur);
-        zde->ext_attrib = _zip_read4(&cur);
-        zde->offset = _zip_read4(&cur);
-    }
-
-    zde->filename = NULL;
-    zde->extrafield = NULL;
-    zde->comment = NULL;
-
-    if (bufp) {
-        if (left < CDENTRYSIZE + (zde->filename_len+zde->extrafield_len
-                                  +zde->comment_len)) {
-            _zip_error_set(error, ZIP_ER_NOZIP, 0);
-            return -1;
-        }
-
-        if (zde->filename_len) {
-            zde->filename = _zip_readstr(&cur, zde->filename_len, 1, error);
-            if (!zde->filename)
-                    return -1;
-        }
-
-        if (zde->extrafield_len) {
-            zde->extrafield = _zip_readstr(&cur, zde->extrafield_len, 0,
-                                           error);
-            if (!zde->extrafield)
-                return -1;
-        }
-
-        if (zde->comment_len) {
-            zde->comment = _zip_readstr(&cur, zde->comment_len, 0, error);
-            if (!zde->comment)
-                return -1;
-        }
-    }
-    else {
-        if (zde->filename_len) {
-            zde->filename = _zip_readfpstr(fp, zde->filename_len, 1, error);
-            if (!zde->filename)
-                    return -1;
-        }
-
-        if (zde->extrafield_len) {
-            zde->extrafield = _zip_readfpstr(fp, zde->extrafield_len, 0,
-                                             error);
-            if (!zde->extrafield)
-                return -1;
-        }
-
-        if (zde->comment_len) {
-            zde->comment = _zip_readfpstr(fp, zde->comment_len, 0, error);
-            if (!zde->comment)
-                return -1;
-        }
-    }
-
-    if (bufp)
-      *bufp = cur;
-
-    return 0;
-}
-
-
-
-/* _zip_dirent_torrent_normalize(de);
-   Set values suitable for torrentzip.
-*/
-
-void
-_zip_dirent_torrent_normalize(struct zip_dirent *de)
-{
-    static struct tm torrenttime;
-    static time_t last_mod = 0;
-
-    if (last_mod == 0) {
-#ifdef HAVE_STRUCT_TM_TM_ZONE
-        time_t now;
-        struct tm *l;
-#endif
-
-        torrenttime.tm_sec = 0;
-        torrenttime.tm_min = 32;
-        torrenttime.tm_hour = 23;
-        torrenttime.tm_mday = 24;
-        torrenttime.tm_mon = 11;
-        torrenttime.tm_year = 96;
-        torrenttime.tm_wday = 0;
-        torrenttime.tm_yday = 0;
-        torrenttime.tm_isdst = 0;
-
-#ifdef HAVE_STRUCT_TM_TM_ZONE
-        time(&now);
-        l = localtime(&now);
-        torrenttime.tm_gmtoff = l->tm_gmtoff;
-        torrenttime.tm_zone = l->tm_zone;
-#endif
-
-        last_mod = mktime(&torrenttime);
-    }
-    
-    de->version_madeby = 0;
-    de->version_needed = 20; /* 2.0 */
-    de->bitflags = 2; /* maximum compression */
-    de->comp_method = ZIP_CM_DEFLATE;
-    de->last_mod = last_mod;
-
-    de->disk_number = 0;
-    de->int_attrib = 0;
-    de->ext_attrib = 0;
-    de->offset = 0;
-
-    free(de->extrafield);
-    de->extrafield = NULL;
-    de->extrafield_len = 0;
-    free(de->comment);
-    de->comment = NULL;
-    de->comment_len = 0;
-}
-
-
-
-/* _zip_dirent_write(zde, fp, localp, error):
-   Writes zip directory entry zde to file fp.
-
-   If localp != 0, it writes a local header instead of a central
-   directory entry.
-
-   Returns 0 if successful. On error, error is filled in and -1 is
-   returned.
-*/
-
-int
-_zip_dirent_write(struct zip_dirent *zde, FILE *fp, int localp,
-                  struct zip_error *error)
-{
-    unsigned short dostime, dosdate;
-
-    fwrite(localp ? LOCAL_MAGIC : CENTRAL_MAGIC, 1, 4, fp);
-
-    if (!localp)
-        _zip_write2(zde->version_madeby, fp);
-    _zip_write2(zde->version_needed, fp);
-    _zip_write2(zde->bitflags, fp);
-    _zip_write2(zde->comp_method, fp);
-
-    _zip_u2d_time(zde->last_mod, &dostime, &dosdate);
-    _zip_write2(dostime, fp);
-    _zip_write2(dosdate, fp);
-    
-    _zip_write4(zde->crc, fp);
-    _zip_write4(zde->comp_size, fp);
-    _zip_write4(zde->uncomp_size, fp);
-    
-    _zip_write2(zde->filename_len, fp);
-    _zip_write2(zde->extrafield_len, fp);
-    
-    if (!localp) {
-        _zip_write2(zde->comment_len, fp);
-        _zip_write2(zde->disk_number, fp);
-        _zip_write2(zde->int_attrib, fp);
-        _zip_write4(zde->ext_attrib, fp);
-        _zip_write4(zde->offset, fp);
-    }
-
-    if (zde->filename_len)
-        fwrite(zde->filename, 1, zde->filename_len, fp);
-
-    if (zde->extrafield_len)
-        fwrite(zde->extrafield, 1, zde->extrafield_len, fp);
-
-    if (!localp) {
-        if (zde->comment_len)
-            fwrite(zde->comment, 1, zde->comment_len, fp);
-    }
-
-    if (ferror(fp)) {
-        _zip_error_set(error, ZIP_ER_WRITE, errno);
-        return -1;
-    }
-
-    return 0;
-}
-
-
-
-static time_t
-_zip_d2u_time(int dtime, int ddate)
-{
-    struct tm *tm;
-    time_t now;
-
-    now = time(NULL);
-    tm = localtime(&now);
-    /* let mktime decide if DST is in effect */
-    tm->tm_isdst = -1;
-    
-    tm->tm_year = ((ddate>>9)&127) + 1980 - 1900;
-    tm->tm_mon = ((ddate>>5)&15) - 1;
-    tm->tm_mday = ddate&31;
-
-    tm->tm_hour = (dtime>>11)&31;
-    tm->tm_min = (dtime>>5)&63;
-    tm->tm_sec = (dtime<<1)&62;
-
-    return mktime(tm);
-}
-
-
-
-unsigned short
-_zip_read2(unsigned char **a)
-{
-    unsigned short ret;
-
-    ret = (*a)[0]+((*a)[1]<<8);
-    *a += 2;
-
-    return ret;
-}
-
-
-
-unsigned int
-_zip_read4(unsigned char **a)
-{
-    unsigned int ret;
-
-    ret = ((((((*a)[3]<<8)+(*a)[2])<<8)+(*a)[1])<<8)+(*a)[0];
-    *a += 4;
-
-    return ret;
-}
-
-
-
-static char *
-_zip_readfpstr(FILE *fp, unsigned int len, int nulp, struct zip_error *error)
-{
-    char *r, *o;
-
-    r = (char *)malloc(nulp ? len+1 : len);
-    if (!r) {
-        _zip_error_set(error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    if (fread(r, 1, len, fp)<len) {
-        free(r);
-        _zip_error_set(error, ZIP_ER_READ, errno);
-        return NULL;
-    }
-
-    if (nulp) {
-        /* replace any in-string NUL characters with spaces */
-        r[len] = 0;
-        for (o=r; o<r+len; o++)
-            if (*o == '\0')
-                *o = ' ';
-    }
-    
-    return r;
-}
-
-
-
-static char *
-_zip_readstr(unsigned char **buf, int len, int nulp, struct zip_error *error)
-{
-    char *r, *o;
-
-    r = (char *)malloc(nulp ? len+1 : len);
-    if (!r) {
-        _zip_error_set(error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-    
-    memcpy(r, *buf, len);
-    *buf += len;
-
-    if (nulp) {
-        /* replace any in-string NUL characters with spaces */
-        r[len] = 0;
-        for (o=r; o<r+len; o++)
-            if (*o == '\0')
-                *o = ' ';
-    }
-
-    return r;
-}
-
-
-
-static void
-_zip_write2(unsigned short i, FILE *fp)
-{
-    putc(i&0xff, fp);
-    putc((i>>8)&0xff, fp);
-
-    return;
-}
-
-
-
-static void
-_zip_write4(unsigned int i, FILE *fp)
-{
-    putc(i&0xff, fp);
-    putc((i>>8)&0xff, fp);
-    putc((i>>16)&0xff, fp);
-    putc((i>>24)&0xff, fp);
-    
-    return;
-}
-
-
-
-static void
-_zip_u2d_time(time_t time, unsigned short *dtime, unsigned short *ddate)
-{
-    struct tm *tm;
-
-    tm = localtime(&time);
-    *ddate = ((tm->tm_year+1900-1980)<<9) + ((tm->tm_mon+1)<<5)
-        + tm->tm_mday;
-    *dtime = ((tm->tm_hour)<<11) + ((tm->tm_min)<<5)
-        + ((tm->tm_sec)>>1);
-
-    return;
-}
-
-
-
-ZIP_EXTERN int
-zip_delete(struct zip *za, int idx)
-{
-    if (idx < 0 || idx >= za->nentry) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    /* allow duplicate file names, because the file will
-     * be removed directly afterwards */
-    if (_zip_unchange(za, idx, 1) != 0)
-        return -1;
-
-    za->entry[idx].state = ZIP_ST_DELETED;
-
-    return 0;
-}
-
-
-
-ZIP_EXTERN void
-zip_error_clear(struct zip *za)
-{
-    _zip_error_clear(&za->error);
-}
-
-
-ZIP_EXTERN int
-zip_add(struct zip *za, const char *name, struct zip_source *source)
-{
-    if (name == NULL || source == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-        
-    return _zip_replace(za, -1, name, source);
-}
-
-
-ZIP_EXTERN int
-zip_error_get_sys_type(int ze)
-{
-    if (ze < 0 || ze >= _zip_nerr_str)
-        return 0;
-
-    return _zip_err_type[ze];
-}
-
-
-ZIP_EXTERN void
-zip_error_get(struct zip *za, int *zep, int *sep)
-{
-    _zip_error_get(&za->error, zep, sep);
-}
-
-
-const char * const _zip_err_str[] = {
-    "No error",
-    "Multi-disk zip archives not supported",
-    "Renaming temporary file failed",
-    "Closing zip archive failed",
-    "Seek error",
-    "Read error",
-    "Write error",
-    "CRC error",
-    "Containing zip archive was closed",
-    "No such file",
-    "File already exists",
-    "Can't open file",
-    "Failure to create temporary file",
-    "Zlib error",
-    "Malloc failure",
-    "Entry has been changed",
-    "Compression method not supported",
-    "Premature EOF",
-    "Invalid argument",
-    "Not a zip archive",
-    "Internal error",
-    "Zip archive inconsistent",
-    "Can't remove file",
-    "Entry has been deleted",
-};
-
-const int _zip_nerr_str = sizeof(_zip_err_str)/sizeof(_zip_err_str[0]);
-
-#define N ZIP_ET_NONE
-#define S ZIP_ET_SYS
-#define Z ZIP_ET_ZLIB
-
-const int _zip_err_type[] = {
-    N,
-    N,
-    S,
-    S,
-    S,
-    S,
-    S,
-    N,
-    N,
-    N,
-    N,
-    S,
-    S,
-    Z,
-    N,
-    N,
-    N,
-    N,
-    N,
-    N,
-    N,
-    N,
-    S,
-    N,
-};
-
-
-struct zip_entry *
-_zip_entry_new(struct zip *za)
-{
-    struct zip_entry *ze;
-    if (!za) {
-        ze = (struct zip_entry *)malloc(sizeof(struct zip_entry));
-        if (!ze) {
-            _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-            return NULL;
-        }
-    }
-    else {
-        if (za->nentry >= za->nentry_alloc-1) {
-            za->nentry_alloc += 16;
-            za->entry = (struct zip_entry *)realloc(za->entry,
-                                                    sizeof(struct zip_entry)
-                                                    * za->nentry_alloc);
-            if (!za->entry) {
-                _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-                return NULL;
-            }
-        }
-        ze = za->entry+za->nentry;
-    }
-
-    ze->state = ZIP_ST_UNCHANGED;
-
-    ze->ch_filename = NULL;
-    ze->ch_comment = NULL;
-    ze->ch_comment_len = -1;
-    ze->source = NULL;
-
-    if (za)
-        za->nentry++;
-
-    return ze;
-}
-
-
-void
-_zip_entry_free(struct zip_entry *ze)
-{
-    free(ze->ch_filename);
-    ze->ch_filename = NULL;
-    free(ze->ch_comment);
-    ze->ch_comment = NULL;
-    ze->ch_comment_len = -1;
-
-    _zip_unchange_data(ze);
-}
-
-
-static int add_data(struct zip *, struct zip_source *, struct zip_dirent *,
-                    FILE *);
-static int add_data_comp(zip_source_callback, void *, struct zip_stat *,
-                         FILE *, struct zip_error *);
-static int add_data_uncomp(struct zip *, zip_source_callback, void *,
-                           struct zip_stat *, FILE *);
-static void ch_set_error(struct zip_error *, zip_source_callback, void *);
-static int copy_data(FILE *, myoff_t, FILE *, struct zip_error *);
-static int write_cdir(struct zip *, struct zip_cdir *, FILE *);
-static int _zip_cdir_set_comment(struct zip_cdir *, struct zip *);
-static int _zip_changed(struct zip *, int *);
-static char *_zip_create_temp_output(struct zip *, FILE **);
-static int _zip_torrentzip_cmp(const void *, const void *);
-
-
-
-struct filelist {
-    int idx;
-    const char *name;
-};
-
-
-
-ZIP_EXTERN int
-zip_close(struct zip *za)
-{
-    int survivors;
-    int i, j, error;
-    char *temp;
-    FILE *out;
-    mode_t mask;
-    struct zip_cdir *cd;
-    struct zip_dirent de;
-    struct filelist *filelist;
-    int reopen_on_error;
-    int new_torrentzip;
-
-    reopen_on_error = 0;
-
-    if (za == NULL)
-        return -1;
-
-    if (!_zip_changed(za, &survivors)) {
-        _zip_free(za);
-        return 0;
-    }
-
-    /* don't create zip files with no entries */
-    if (survivors == 0) {
-        if (za->zn && za->zp) {
-            if (remove(za->zn) != 0) {
-                _zip_error_set(&za->error, ZIP_ER_REMOVE, errno);
-                return -1;
-            }
-        }
-        _zip_free(za);
-        return 0;
-    }               
-
-    if ((filelist=(struct filelist *)malloc(sizeof(filelist[0])*survivors))
-        == NULL)
-        return -1;
-
-    if ((cd=_zip_cdir_new(survivors, &za->error)) == NULL) {
-        free(filelist);
-        return -1;
-    }
-
-    for (i=0; i<survivors; i++)
-        _zip_dirent_init(&cd->entry[i]);
-
-    /* archive comment is special for torrentzip */
-    if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0)) {
-        cd->comment = _zip_memdup(TORRENT_SIG "XXXXXXXX",
-                                  TORRENT_SIG_LEN + TORRENT_CRC_LEN,
-                                  &za->error);
-        if (cd->comment == NULL) {
-            _zip_cdir_free(cd);
-            free(filelist);
-            return -1;
-        }
-        cd->comment_len = TORRENT_SIG_LEN + TORRENT_CRC_LEN;
-    }
-    else if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, ZIP_FL_UNCHANGED) == 0) {
-        if (_zip_cdir_set_comment(cd, za) == -1) {
-            _zip_cdir_free(cd);
-            free(filelist);
-            return -1;
-        }
-    }
-
-    if ((temp=_zip_create_temp_output(za, &out)) == NULL) {
-        _zip_cdir_free(cd);
-        return -1;
-    }
-
-
-    /* create list of files with index into original archive  */
-    for (i=j=0; i<za->nentry; i++) {
-        if (za->entry[i].state == ZIP_ST_DELETED)
-            continue;
-
-        filelist[j].idx = i;
-        filelist[j].name = zip_get_name(za, i, 0);
-        j++;
-    }
-    if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
-        qsort(filelist, survivors, sizeof(filelist[0]),
-              _zip_torrentzip_cmp);
-
-    new_torrentzip = (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 1
-                      && zip_get_archive_flag(za, ZIP_AFL_TORRENT,
-                                              ZIP_FL_UNCHANGED) == 0);
-    error = 0;
-    for (j=0; j<survivors; j++) {
-        i = filelist[j].idx;
-
-        /* create new local directory entry */
-        if (ZIP_ENTRY_DATA_CHANGED(za->entry+i) || new_torrentzip) {
-            _zip_dirent_init(&de);
-
-            if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
-                _zip_dirent_torrent_normalize(&de);
-                
-            /* use it as central directory entry */
-            memcpy(cd->entry+j, &de, sizeof(cd->entry[j]));
-
-            /* set/update file name */
-            if (za->entry[i].ch_filename == NULL) {
-                if (za->entry[i].state == ZIP_ST_ADDED) {
-                    de.filename = strdup("-");
-                    de.filename_len = 1;
-                    cd->entry[j].filename = "-";
-                }
-                else {
-                    de.filename = strdup(za->cdir->entry[i].filename);
-                    de.filename_len = strlen(de.filename);
-                    cd->entry[j].filename = za->cdir->entry[i].filename;
-                    cd->entry[j].filename_len = de.filename_len;
-                }
-            }
-        }
-        else {
-            /* copy existing directory entries */
-            if (fseeko(za->zp, za->cdir->entry[i].offset, SEEK_SET) != 0) {
-                _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
-                error = 1;
-                break;
-            }
-            if (_zip_dirent_read(&de, za->zp, NULL, 0, 1, &za->error) != 0) {
-                error = 1;
-                break;
-            }
-            if (de.bitflags & ZIP_GPBF_DATA_DESCRIPTOR) {
-                de.crc = za->cdir->entry[i].crc;
-                de.comp_size = za->cdir->entry[i].comp_size;
-                de.uncomp_size = za->cdir->entry[i].uncomp_size;
-                de.bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR;
-            }
-            memcpy(cd->entry+j, za->cdir->entry+i, sizeof(cd->entry[j]));
-        }
-
-        if (za->entry[i].ch_filename) {
-            free(de.filename);
-            if ((de.filename=strdup(za->entry[i].ch_filename)) == NULL) {
-                error = 1;
-                break;
-            }
-            de.filename_len = strlen(de.filename);
-            cd->entry[j].filename = za->entry[i].ch_filename;
-            cd->entry[j].filename_len = de.filename_len;
-        }
-
-        if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 0
-            && za->entry[i].ch_comment_len != -1) {
-            /* as the rest of cd entries, its malloc/free is done by za */
-            cd->entry[j].comment = za->entry[i].ch_comment;
-            cd->entry[j].comment_len = za->entry[i].ch_comment_len;
-        }
-
-        cd->entry[j].offset = ftello(out);
-
-        if (ZIP_ENTRY_DATA_CHANGED(za->entry+i) || new_torrentzip) {
-            struct zip_source *zs;
-
-            zs = NULL;
-            if (!ZIP_ENTRY_DATA_CHANGED(za->entry+i)) {
-                if ((zs=zip_source_zip(za, za, i, ZIP_FL_RECOMPRESS, 0, -1))
-                    == NULL) {
-                    error = 1;
-                    break;
-                }
-            }
-
-            if (add_data(za, zs ? zs : za->entry[i].source, &de, out) < 0) {
-                error = 1;
-                break;
-            }
-            cd->entry[j].last_mod = de.last_mod;
-            cd->entry[j].comp_method = de.comp_method;
-            cd->entry[j].comp_size = de.comp_size;
-            cd->entry[j].uncomp_size = de.uncomp_size;
-            cd->entry[j].crc = de.crc;
-        }
-        else {
-            if (_zip_dirent_write(&de, out, 1, &za->error) < 0) {
-                error = 1;
-                break;
-            }
-            /* we just read the local dirent, file is at correct position */
-            if (copy_data(za->zp, cd->entry[j].comp_size, out,
-                          &za->error) < 0) {
-                error = 1;
-                break;
-            }
-        }
-
-        _zip_dirent_finalize(&de);
-    }
-
-    if (!error) {
-        if (write_cdir(za, cd, out) < 0)
-            error = 1;
-    }
-   
-    /* pointers in cd entries are owned by za */
-    cd->nentry = 0;
-    _zip_cdir_free(cd);
-
-    if (error) {
-        _zip_dirent_finalize(&de);
-        fclose(out);
-        remove(temp);
-        free(temp);
-        return -1;
-    }
-
-    if (fclose(out) != 0) {
-        _zip_error_set(&za->error, ZIP_ER_CLOSE, errno);
-        remove(temp);
-        free(temp);
-        return -1;
-    }
-    
-    if (za->zp) {
-        fclose(za->zp);
-        za->zp = NULL;
-        reopen_on_error = 1;
-    }
-    if (_zip_rename(temp, za->zn) != 0) {
-        _zip_error_set(&za->error, ZIP_ER_RENAME, errno);
-        remove(temp);
-        free(temp);
-        if (reopen_on_error) {
-            /* ignore errors, since we're already in an error case */
-            za->zp = fopen(za->zn, "rb");
-        }
-        return -1;
-    }
-    mask = umask(0);
-    umask(mask);
-    chmod(za->zn, 0666&~mask);
-
-    _zip_free(za);
-    free(temp);
-    
-    return 0;
-}
-
-
-
-static int
-add_data(struct zip *za, struct zip_source *zs, struct zip_dirent *de, FILE *ft)
-{
-    myoff_t offstart, offend;
-    zip_source_callback cb;
-    void *ud;
-    struct zip_stat st;
-    
-    cb = zs->f;
-    ud = zs->ud;
-
-    if (cb(ud, &st, sizeof(st), ZIP_SOURCE_STAT) < (ssize_t)sizeof(st)) {
-        ch_set_error(&za->error, cb, ud);
-        return -1;
-    }
-
-    if (cb(ud, NULL, 0, ZIP_SOURCE_OPEN) < 0) {
-        ch_set_error(&za->error, cb, ud);
-        return -1;
-    }
-
-    offstart = ftello(ft);
-
-    if (_zip_dirent_write(de, ft, 1, &za->error) < 0)
-        return -1;
-
-    if (st.comp_method != ZIP_CM_STORE) {
-        if (add_data_comp(cb, ud, &st, ft, &za->error) < 0)
-            return -1;
-    }
-    else {
-        if (add_data_uncomp(za, cb, ud, &st, ft) < 0)
-            return -1;
-    }
-
-    if (cb(ud, NULL, 0, ZIP_SOURCE_CLOSE) < 0) {
-        ch_set_error(&za->error, cb, ud);
-        return -1;
-    }
-
-    offend = ftello(ft);
-
-    if (fseeko(ft, offstart, SEEK_SET) < 0) {
-        _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
-        return -1;
-    }
-
-    
-    de->last_mod = st.mtime;
-    de->comp_method = st.comp_method;
-    de->crc = st.crc;
-    de->uncomp_size = st.size;
-    de->comp_size = st.comp_size;
-
-    if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
-        _zip_dirent_torrent_normalize(de);
-
-    if (_zip_dirent_write(de, ft, 1, &za->error) < 0)
-        return -1;
-    
-    if (fseeko(ft, offend, SEEK_SET) < 0) {
-        _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
-        return -1;
-    }
-
-    return 0;
-}
-
-
-
-static int
-add_data_comp(zip_source_callback cb, void *ud, struct zip_stat *st,FILE *ft,
-              struct zip_error *error)
-{
-    char buf[BUFSIZE];
-    ssize_t n;
-
-    st->comp_size = 0;
-    while ((n=cb(ud, buf, sizeof(buf), ZIP_SOURCE_READ)) > 0) {
-        if (fwrite(buf, 1, n, ft) != (size_t)n) {
-            _zip_error_set(error, ZIP_ER_WRITE, errno);
-            return -1;
-        }
-        
-        st->comp_size += n;
-    }
-    if (n < 0) {
-        ch_set_error(error, cb, ud);
-        return -1;
-    }        
-
-    return 0;
-}
-
-
-
-static int
-add_data_uncomp(struct zip *za, zip_source_callback cb, void *ud,
-                struct zip_stat *st, FILE *ft)
-{
-    char b1[BUFSIZE], b2[BUFSIZE];
-    int end, flush, ret;
-    ssize_t n;
-    size_t n2;
-    z_stream zstr;
-    int mem_level;
-
-    st->comp_method = ZIP_CM_DEFLATE;
-    st->comp_size = st->size = 0;
-    st->crc = crc32(0, NULL, 0);
-
-    zstr.zalloc = Z_NULL;
-    zstr.zfree = Z_NULL;
-    zstr.opaque = NULL;
-    zstr.avail_in = 0;
-    zstr.avail_out = 0;
-
-    if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0))
-        mem_level = TORRENT_MEM_LEVEL;
-    else
-        mem_level = MAX_MEM_LEVEL;
-
-    /* -MAX_WBITS: undocumented feature of zlib to _not_ write a zlib header */
-    deflateInit2(&zstr, Z_BEST_COMPRESSION, Z_DEFLATED, -MAX_WBITS, mem_level,
-                 Z_DEFAULT_STRATEGY);
-
-    zstr.next_out = (Bytef *)b2;
-    zstr.avail_out = sizeof(b2);
-    zstr.avail_in = 0;
-
-    flush = 0;
-    end = 0;
-    while (!end) {
-        if (zstr.avail_in == 0 && !flush) {
-            if ((n=cb(ud, b1, sizeof(b1), ZIP_SOURCE_READ)) < 0) {
-                ch_set_error(&za->error, cb, ud);
-                deflateEnd(&zstr);
-                return -1;
-            }
-            if (n > 0) {
-                zstr.avail_in = n;
-                zstr.next_in = (Bytef *)b1;
-                st->size += n;
-                st->crc = crc32(st->crc, (Bytef *)b1, n);
-            }
-            else
-                flush = Z_FINISH;
-        }
-
-        ret = deflate(&zstr, flush);
-        if (ret != Z_OK && ret != Z_STREAM_END) {
-            _zip_error_set(&za->error, ZIP_ER_ZLIB, ret);
-            return -1;
-        }
-        
-        if (zstr.avail_out != sizeof(b2)) {
-            n2 = sizeof(b2) - zstr.avail_out;
-            
-            if (fwrite(b2, 1, n2, ft) != n2) {
-                _zip_error_set(&za->error, ZIP_ER_WRITE, errno);
-                return -1;
-            }
-        
-            zstr.next_out = (Bytef *)b2;
-            zstr.avail_out = sizeof(b2);
-            st->comp_size += n2;
-        }
-
-        if (ret == Z_STREAM_END) {
-            deflateEnd(&zstr);
-            end = 1;
-        }
-    }
-
-    return 0;
-}
-
-
-
-static void
-ch_set_error(struct zip_error *error, zip_source_callback cb, void *ud)
-{
-    int e[2];
-
-    if ((cb(ud, e, sizeof(e), ZIP_SOURCE_ERROR)) < (ssize_t)sizeof(e)) {
-        error->zip_err = ZIP_ER_INTERNAL;
-        error->sys_err = 0;
-    }
-    else {
-        error->zip_err = e[0];
-        error->sys_err = e[1];
-    }
-}
-
-
-
-static int
-copy_data(FILE *fs, myoff_t len, FILE *ft, struct zip_error *error)
-{
-    char buf[BUFSIZE];
-    int n, nn;
-
-    if (len == 0)
-        return 0;
-
-    while (len > 0) {
-        nn = len > sizeof(buf) ? sizeof(buf) : len;
-        if ((n=fread(buf, 1, nn, fs)) < 0) {
-            _zip_error_set(error, ZIP_ER_READ, errno);
-            return -1;
-        }
-        else if (n == 0) {
-            _zip_error_set(error, ZIP_ER_EOF, 0);
-            return -1;
-        }
-
-        if (fwrite(buf, 1, n, ft) != (size_t)n) {
-            _zip_error_set(error, ZIP_ER_WRITE, errno);
-            return -1;
-        }
-        
-        len -= n;
-    }
-
-    return 0;
-}
-
-
-
-static int
-write_cdir(struct zip *za, struct zip_cdir *cd, FILE *out)
-{
-    myoff_t offset;
-    uLong crc;
-    char buf[TORRENT_CRC_LEN+1];
-    
-    if (_zip_cdir_write(cd, out, &za->error) < 0)
-        return -1;
-    
-    if (zip_get_archive_flag(za, ZIP_AFL_TORRENT, 0) == 0)
-        return 0;
-
-
-    /* fix up torrentzip comment */
-
-    offset = ftello(out);
-
-    if (_zip_filerange_crc(out, cd->offset, cd->size, &crc, &za->error) < 0)
-        return -1;
-
-    snprintf(buf, sizeof(buf), "%08lX", (long)crc);
-
-    if (fseeko(out, offset-TORRENT_CRC_LEN, SEEK_SET) < 0) {
-        _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
-        return -1;
-    }
-
-    if (fwrite(buf, TORRENT_CRC_LEN, 1, out) != 1) {
-        _zip_error_set(&za->error, ZIP_ER_WRITE, errno);
-        return -1;
-    }
-
-    return 0;
-}
-
-
-
-static int
-_zip_cdir_set_comment(struct zip_cdir *dest, struct zip *src)
-{
-    if (src->ch_comment_len != -1) {
-        dest->comment = _zip_memdup(src->ch_comment,
-                                    src->ch_comment_len, &src->error);
-        if (dest->comment == NULL)
-            return -1;
-        dest->comment_len = src->ch_comment_len;
-    } else {
-        if (src->cdir && src->cdir->comment) {
-            dest->comment = _zip_memdup(src->cdir->comment,
-                                        src->cdir->comment_len, &src->error);
-            if (dest->comment == NULL)
-                return -1;
-            dest->comment_len = src->cdir->comment_len;
-        }
-    }
-
-    return 0;
-}
-
-
-
-static int
-_zip_changed(struct zip *za, int *survivorsp)
-{
-    int changed, i, survivors;
-
-    changed = survivors = 0;
-
-    if (za->ch_comment_len != -1
-        || za->ch_flags != za->flags)
-        changed = 1;
-
-    for (i=0; i<za->nentry; i++) {
-        if ((za->entry[i].state != ZIP_ST_UNCHANGED)
-            || (za->entry[i].ch_comment_len != -1))
-            changed = 1;
-        if (za->entry[i].state != ZIP_ST_DELETED)
-            survivors++;
-    }
-
-    *survivorsp = survivors;
-
-    return changed;
-}
-
-
-
-static char *
-_zip_create_temp_output(struct zip *za, FILE **outp)
-{
-    char *temp;
-    int tfd;
-    FILE *tfp;
-    
-    if ((temp=(char *)malloc(strlen(za->zn)+8)) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    sprintf(temp, "%s.XXXXXX", za->zn);
-
-    if ((tfd=mkstemp(temp)) == -1) {
-        _zip_error_set(&za->error, ZIP_ER_TMPOPEN, errno);
-        free(temp);
-        return NULL;
-    }
-    
-    if ((tfp=fdopen(tfd, "r+b")) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_TMPOPEN, errno);
-        close(tfd);
-        remove(temp);
-        free(temp);
-        return NULL;
-    }
-
-    *outp = tfp;
-    return temp;
-}
-
-
-
-static int
-_zip_torrentzip_cmp(const void *a, const void *b)
-{
-    return strcasecmp(((const struct filelist *)a)->name,
-                      ((const struct filelist *)b)->name);
-}
-
-
-
-ZIP_EXTERN int
-zip_add_dir(struct zip *za, const char *name)
-{
-    int len, ret;
-    char *s;
-    struct zip_source *source;
-
-    if (name == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    s = NULL;
-    len = strlen(name);
-
-    if (name[len-1] != '/') {
-        if ((s=(char *)malloc(len+2)) == NULL) {
-            _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-            return -1;
-        }
-        strcpy(s, name);
-        s[len] = '/';
-        s[len+1] = '\0';
-    }
-
-    if ((source=zip_source_buffer(za, NULL, 0, 0)) == NULL) {
-        free(s);
-        return -1;
-    }
-        
-    ret = _zip_replace(za, -1, s ? s : name, source);
-
-    free(s);
-    if (ret < 0)
-        zip_source_free(source);
-
-    return ret;
-}
-
-
-ZIP_EXTERN int
-zip_error_to_str(char *buf, size_t len, int ze, int se)
-{
-    const char *zs, *ss;
-
-    if (ze < 0 || ze >= _zip_nerr_str)
-        return snprintf(buf, len, "Unknown error %d", ze);
-
-    zs = _zip_err_str[ze];
-        
-    switch (_zip_err_type[ze]) {
-    case ZIP_ET_SYS:
-        ss = strerror(se);
-        break;
-        
-    case ZIP_ET_ZLIB:
-        ss = zError(se);
-        break;
-        
-    default:
-        ss = NULL;
-    }
-
-    return snprintf(buf, len, "%s%s%s",
-                    zs, (ss ? ": " : ""), (ss ? ss : ""));
-}
-
-
-ZIP_EXTERN void
-zip_file_error_clear(struct zip_file *zf)
-{
-    _zip_error_clear(&zf->error);
-}
-
-
-ZIP_EXTERN int
-zip_fclose(struct zip_file *zf)
-{
-    int i, ret;
-    
-    if (zf->zstr)
-        inflateEnd(zf->zstr);
-    free(zf->buffer);
-    free(zf->zstr);
-
-    for (i=0; i<zf->za->nfile; i++) {
-        if (zf->za->file[i] == zf) {
-            zf->za->file[i] = zf->za->file[zf->za->nfile-1];
-            zf->za->nfile--;
-            break;
-        }
-    }
-
-    ret = 0;
-    if (zf->error.zip_err)
-        ret = zf->error.zip_err;
-    else if ((zf->flags & ZIP_ZF_CRC) && (zf->flags & ZIP_ZF_EOF)) {
-        /* if EOF, compare CRC */
-        if (zf->crc_orig != zf->crc)
-            ret = ZIP_ER_CRC;
-    }
-
-    free(zf);
-    return ret;
-}
-
-
-int
-_zip_filerange_crc(FILE *fp, myoff_t start, myoff_t len, uLong *crcp,
-                   struct zip_error *errp)
-{
-    Bytef buf[BUFSIZE];
-    size_t n;
-
-    *crcp = crc32(0L, Z_NULL, 0);
-
-    if (fseeko(fp, start, SEEK_SET) != 0) {
-        _zip_error_set(errp, ZIP_ER_SEEK, errno);
-        return -1;
-    }
-    
-    while (len > 0) {
-        n = len > BUFSIZE ? BUFSIZE : len;
-        if ((n=fread(buf, 1, n, fp)) <= 0) {
-            _zip_error_set(errp, ZIP_ER_READ, errno);
-            return -1;
-        }
-
-        *crcp = crc32(*crcp, buf, n);
-
-        len-= n;
-    }
-
-    return 0;
-}
-
-
-ZIP_EXTERN const char *
-zip_file_strerror(struct zip_file *zf)
-{
-    return _zip_error_strerror(&zf->error);
-}
-
-
-/* _zip_file_get_offset(za, ze):
-   Returns the offset of the file data for entry ze.
-
-   On error, fills in za->error and returns 0.
-*/
-
-unsigned int
-_zip_file_get_offset(struct zip *za, int idx)
-{
-    struct zip_dirent de;
-    unsigned int offset;
-
-    offset = za->cdir->entry[idx].offset;
-
-    if (fseeko(za->zp, offset, SEEK_SET) != 0) {
-        _zip_error_set(&za->error, ZIP_ER_SEEK, errno);
-        return 0;
-    }
-
-    if (_zip_dirent_read(&de, za->zp, NULL, 0, 1, &za->error) != 0)
-        return 0;
-
-    offset += LENTRYSIZE + de.filename_len + de.extrafield_len;
-
-    _zip_dirent_finalize(&de);
-
-    return offset;
-}
-
-
-ZIP_EXTERN void
-zip_file_error_get(struct zip_file *zf, int *zep, int *sep)
-{
-    _zip_error_get(&zf->error, zep, sep);
-}
-
-
-static struct zip_file *_zip_file_new(struct zip *za);
-
-
-
-ZIP_EXTERN struct zip_file *
-zip_fopen_index(struct zip *za, int fileno, int flags)
-{
-    int len, ret;
-    int zfflags;
-    struct zip_file *zf;
-
-    if ((fileno < 0) || (fileno >= za->nentry)) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    if ((flags & ZIP_FL_UNCHANGED) == 0
-        && ZIP_ENTRY_DATA_CHANGED(za->entry+fileno)) {
-        _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
-        return NULL;
-    }
-
-    if (fileno >= za->cdir->nentry) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    zfflags = 0;
-    switch (za->cdir->entry[fileno].comp_method) {
-    case ZIP_CM_STORE:
-        zfflags |= ZIP_ZF_CRC;
-        break;
-
-    case ZIP_CM_DEFLATE:
-        if ((flags & ZIP_FL_COMPRESSED) == 0)
-            zfflags |= ZIP_ZF_CRC | ZIP_ZF_DECOMP;
-        break;
-    default:
-        if ((flags & ZIP_FL_COMPRESSED) == 0) {
-            _zip_error_set(&za->error, ZIP_ER_COMPNOTSUPP, 0);
-            return NULL;
-        }
-        break;
-    }
-
-    zf = _zip_file_new(za);
-
-    zf->flags = zfflags;
-    /* zf->name = za->cdir->entry[fileno].filename; */
-    zf->method = za->cdir->entry[fileno].comp_method;
-    zf->bytes_left = za->cdir->entry[fileno].uncomp_size;
-    zf->cbytes_left = za->cdir->entry[fileno].comp_size;
-    zf->crc_orig = za->cdir->entry[fileno].crc;
-
-    if ((zf->fpos=_zip_file_get_offset(za, fileno)) == 0) {
-        zip_fclose(zf);
-        return NULL;
-    }
-    
-    if ((zf->flags & ZIP_ZF_DECOMP) == 0)
-        zf->bytes_left = zf->cbytes_left;
-    else {
-        if ((zf->buffer=(char *)malloc(BUFSIZE)) == NULL) {
-            _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-            zip_fclose(zf);
-            return NULL;
-        }
-
-        len = _zip_file_fillbuf(zf->buffer, BUFSIZE, zf);
-        if (len <= 0) {
-            _zip_error_copy(&za->error, &zf->error);
-            zip_fclose(zf);
-        return NULL;
-        }
-
-        if ((zf->zstr = (z_stream *)malloc(sizeof(z_stream))) == NULL) {
-            _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-            zip_fclose(zf);
-            return NULL;
-        }
-        zf->zstr->zalloc = Z_NULL;
-        zf->zstr->zfree = Z_NULL;
-        zf->zstr->opaque = NULL;
-        zf->zstr->next_in = (Bytef *)zf->buffer;
-        zf->zstr->avail_in = len;
-        
-        /* negative value to tell zlib that there is no header */
-        if ((ret=inflateInit2(zf->zstr, -MAX_WBITS)) != Z_OK) {
-            _zip_error_set(&za->error, ZIP_ER_ZLIB, ret);
-            zip_fclose(zf);
-            return NULL;
-        }
-    }
-    
-    return zf;
-}
-
-
-
-int
-_zip_file_fillbuf(void *buf, size_t buflen, struct zip_file *zf)
-{
-    int i, j;
-
-    if (zf->error.zip_err != ZIP_ER_OK)
-        return -1;
-
-    if ((zf->flags & ZIP_ZF_EOF) || zf->cbytes_left <= 0 || buflen <= 0)
-        return 0;
-    
-    if (fseeko(zf->za->zp, zf->fpos, SEEK_SET) < 0) {
-        _zip_error_set(&zf->error, ZIP_ER_SEEK, errno);
-        return -1;
-    }
-    if (buflen < zf->cbytes_left)
-        i = buflen;
-    else
-        i = zf->cbytes_left;
-
-    j = fread(buf, 1, i, zf->za->zp);
-    if (j == 0) {
-        _zip_error_set(&zf->error, ZIP_ER_EOF, 0);
-        j = -1;
-    }
-    else if (j < 0)
-        _zip_error_set(&zf->error, ZIP_ER_READ, errno);
-    else {
-        zf->fpos += j;
-        zf->cbytes_left -= j;
-    }
-
-    return j;        
-}
-
-
-
-static struct zip_file *
-_zip_file_new(struct zip *za)
-{
-    struct zip_file *zf, **file;
-    int n;
-
-    if ((zf=(struct zip_file *)malloc(sizeof(struct zip_file))) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-    
-    if (za->nfile >= za->nfile_alloc-1) {
-        n = za->nfile_alloc + 10;
-        file = (struct zip_file **)realloc(za->file,
-                                           n*sizeof(struct zip_file *));
-        if (file == NULL) {
-            _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-            free(zf);
-            return NULL;
-        }
-        za->nfile_alloc = n;
-        za->file = file;
-    }
-
-    za->file[za->nfile++] = zf;
-
-    zf->za = za;
-    _zip_error_init(&zf->error);
-    zf->flags = 0;
-    zf->crc = crc32(0L, Z_NULL, 0);
-    zf->crc_orig = 0;
-    zf->method = -1;
-    zf->bytes_left = zf->cbytes_left = 0;
-    zf->fpos = 0;
-    zf->buffer = NULL;
-    zf->zstr = NULL;
-
-    return zf;
-}
-
-
-ZIP_EXTERN struct zip_file *
-zip_fopen(struct zip *za, const char *fname, int flags)
-{
-    int idx;
-
-    if ((idx=zip_name_locate(za, fname, flags)) < 0)
-        return NULL;
-
-    return zip_fopen_index(za, idx, flags);
-}
-
-
-ZIP_EXTERN int
-zip_set_file_comment(struct zip *za, int idx, const char *comment, int len)
-{
-    char *tmpcom;
-
-    if (idx < 0 || idx >= za->nentry
-        || len < 0 || len > MAXCOMLEN
-        || (len > 0 && comment == NULL)) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if (len > 0) {
-        if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL)
-            return -1;
-    }
-    else
-        tmpcom = NULL;
-
-    free(za->entry[idx].ch_comment);
-    za->entry[idx].ch_comment = tmpcom;
-    za->entry[idx].ch_comment_len = len;
-    
-    return 0;
-}
-
-
-ZIP_EXTERN struct zip_source *
-zip_source_file(struct zip *za, const char *fname, myoff_t start, myoff_t len)
-{
-    if (za == NULL)
-        return NULL;
-
-    if (fname == NULL || start < 0 || len < -1) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    return _zip_source_file_or_p(za, fname, NULL, start, len);
-}
-
-
-struct read_data {
-    const char *buf, *data, *end;
-    time_t mtime;
-    int freep;
-};
-
-static ssize_t read_data(void *state, void *data, size_t len,
-                         enum zip_source_cmd cmd);
-
-
-
-ZIP_EXTERN struct zip_source *
-zip_source_buffer(struct zip *za, const void *data, myoff_t len, int freep)
-{
-    struct read_data *f;
-    struct zip_source *zs;
-
-    if (za == NULL)
-        return NULL;
-
-    if (len < 0 || (data == NULL && len > 0)) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    if ((f=(struct read_data *)malloc(sizeof(*f))) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    f->data = (const char *)data;
-    f->end = ((const char *)data)+len;
-    f->freep = freep;
-    f->mtime = time(NULL);
-    
-    if ((zs=zip_source_function(za, read_data, f)) == NULL) {
-        free(f);
-        return NULL;
-    }
-
-    return zs;
-}
-
-
-
-static ssize_t
-read_data(void *state, void *data, size_t len, enum zip_source_cmd cmd)
-{
-    struct read_data *z;
-    char *buf;
-    size_t n;
-
-    z = (struct read_data *)state;
-    buf = (char *)data;
-
-    switch (cmd) {
-    case ZIP_SOURCE_OPEN:
-        z->buf = z->data;
-        return 0;
-        
-    case ZIP_SOURCE_READ:
-        n = z->end - z->buf;
-        if (n > len)
-            n = len;
-
-        if (n) {
-            memcpy(buf, z->buf, n);
-            z->buf += n;
-        }
-
-        return n;
-        
-    case ZIP_SOURCE_CLOSE:
-        return 0;
-
-    case ZIP_SOURCE_STAT:
-        {
-            struct zip_stat *st;
-            
-            if (len < sizeof(*st))
-                return -1;
-
-            st = (struct zip_stat *)data;
-
-            zip_stat_init(st);
-            st->mtime = z->mtime;
-            st->size = z->end - z->data;
-            
-            return sizeof(*st);
-        }
-
-    case ZIP_SOURCE_ERROR:
-        {
-            int *e;
-
-            if (len < sizeof(int)*2)
-                return -1;
-
-            e = (int *)data;
-            e[0] = e[1] = 0;
-        }
-        return sizeof(int)*2;
-
-    case ZIP_SOURCE_FREE:
-        if (z->freep) {
-            free((void *)z->data);
-            z->data = NULL;
-        }
-        free(z);
-        return 0;
-
-    default:
-        ;
-    }
-
-    return -1;
-}
-
-
-int
-_zip_set_name(struct zip *za, int idx, const char *name)
-{
-    char *s;
-    int i;
-    
-    if (idx < 0 || idx >= za->nentry || name == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if ((i=_zip_name_locate(za, name, 0, NULL)) != -1 && i != idx) {
-        _zip_error_set(&za->error, ZIP_ER_EXISTS, 0);
-        return -1;
-    }
-
-    /* no effective name change */
-    if (i == idx)
-        return 0;
-    
-    if ((s=strdup(name)) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return -1;
-    }
-    
-    if (za->entry[idx].state == ZIP_ST_UNCHANGED) 
-        za->entry[idx].state = ZIP_ST_RENAMED;
-
-    free(za->entry[idx].ch_filename);
-    za->entry[idx].ch_filename = s;
-
-    return 0;
-}
-
-
-ZIP_EXTERN int
-zip_set_archive_flag(struct zip *za, int flag, int value)
-{
-    if (value)
-        za->ch_flags |= flag;
-    else
-        za->ch_flags &= ~flag;
-
-    return 0;
-}
-
-
-void
-_zip_unchange_data(struct zip_entry *ze)
-{
-    if (ze->source) {
-        (void)ze->source->f(ze->source->ud, NULL, 0, ZIP_SOURCE_FREE);
-        free(ze->source);
-        ze->source = NULL;
-    }
-    
-    ze->state = ze->ch_filename ? ZIP_ST_RENAMED : ZIP_ST_UNCHANGED;
-}
-
-
-ZIP_EXTERN int
-zip_unchange_archive(struct zip *za)
-{
-    free(za->ch_comment);
-    za->ch_comment = NULL;
-    za->ch_comment_len = -1;
-
-    za->ch_flags = za->flags;
-
-    return 0;
-}
-
-ZIP_EXTERN int
-zip_unchange(struct zip *za, int idx)
-{
-    return _zip_unchange(za, idx, 0);
-}
-
-
-
-int
-_zip_unchange(struct zip *za, int idx, int allow_duplicates)
-{
-    int i;
-    
-    if (idx < 0 || idx >= za->nentry) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if (za->entry[idx].ch_filename) {
-        if (!allow_duplicates) {
-            i = _zip_name_locate(za,
-                         _zip_get_name(za, idx, ZIP_FL_UNCHANGED, NULL),
-                                 0, NULL);
-            if (i != -1 && i != idx) {
-                _zip_error_set(&za->error, ZIP_ER_EXISTS, 0);
-                return -1;
-            }
-        }
-
-        free(za->entry[idx].ch_filename);
-        za->entry[idx].ch_filename = NULL;
-    }
-
-    free(za->entry[idx].ch_comment);
-    za->entry[idx].ch_comment = NULL;
-    za->entry[idx].ch_comment_len = -1;
-
-    _zip_unchange_data(za->entry+idx);
-
-    return 0;
-}
-
-ZIP_EXTERN int
-zip_unchange_all(struct zip *za)
-{
-    int ret, i;
-
-    ret = 0;
-    for (i=0; i<za->nentry; i++)
-        ret |= _zip_unchange(za, i, 1);
-
-    ret |= zip_unchange_archive(za);
-
-    return ret;
-}
-
-
-ZIP_EXTERN int
-zip_set_archive_comment(struct zip *za, const char *comment, int len)
-{
-    char *tmpcom;
-
-    if (len < 0 || len > MAXCOMLEN
-        || (len > 0 && comment == NULL)) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if (len > 0) {
-        if ((tmpcom=(char *)_zip_memdup(comment, len, &za->error)) == NULL)
-            return -1;
-    }
-    else
-        tmpcom = NULL;
-
-    free(za->ch_comment);
-    za->ch_comment = tmpcom;
-    za->ch_comment_len = len;
-    
-    return 0;
-}
-
-
-ZIP_EXTERN int
-zip_replace(struct zip *za, int idx, struct zip_source *source)
-{
-    if (idx < 0 || idx >= za->nentry || source == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if (_zip_replace(za, idx, NULL, source) == -1)
-        return -1;
-
-    return 0;
-}
-
-
-
-
-int
-_zip_replace(struct zip *za, int idx, const char *name,
-             struct zip_source *source)
-{
-    if (idx == -1) {
-        if (_zip_entry_new(za) == NULL)
-            return -1;
-
-        idx = za->nentry - 1;
-    }
-    
-    _zip_unchange_data(za->entry+idx);
-
-    if (name && _zip_set_name(za, idx, name) != 0)
-        return -1;
-    
-    za->entry[idx].state = ((za->cdir == NULL || idx >= za->cdir->nentry)
-                            ? ZIP_ST_ADDED : ZIP_ST_REPLACED);
-    za->entry[idx].source = source;
-
-    return idx;
-}
-
-
-ZIP_EXTERN int
-zip_rename(struct zip *za, int idx, const char *name)
-{
-    const char *old_name;
-    int old_is_dir, new_is_dir;
-    
-    if (idx >= za->nentry || idx < 0 || name[0] == '\0') {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if ((old_name=zip_get_name(za, idx, 0)) == NULL)
-        return -1;
-                                                                    
-    new_is_dir = (name[strlen(name)-1] == '/');
-    old_is_dir = (old_name[strlen(old_name)-1] == '/');
-
-    if (new_is_dir != old_is_dir) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    return _zip_set_name(za, idx, name);
-}
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static void set_error(int *, struct zip_error *, int);
-static struct zip *_zip_allocate_new(const char *, int *);
-static int _zip_checkcons(FILE *, struct zip_cdir *, struct zip_error *);
-static void _zip_check_torrentzip(struct zip *);
-static struct zip_cdir *_zip_find_central_dir(FILE *, int, int *, myoff_t);
-static int _zip_file_exists(const char *, int, int *);
-static int _zip_headercomp(struct zip_dirent *, int,
-                           struct zip_dirent *, int);
-static unsigned char *_zip_memmem(const unsigned char *, int,
-                                  const unsigned char *, int);
-static struct zip_cdir *_zip_readcdir(FILE *, unsigned char *, unsigned char *,
-                                 int, int, struct zip_error *);
-
-
-
-ZIP_EXTERN struct zip *
-zip_open(const char *fn, int flags, int *zep)
-{
-    FILE *fp;
-    struct zip *za;
-    struct zip_cdir *cdir;
-    int i;
-    myoff_t len;
-    
-    switch (_zip_file_exists(fn, flags, zep)) {
-    case -1:
-        return NULL;
-    case 0:
-        return _zip_allocate_new(fn, zep);
-    default:
-        break;
-    }
-
-    if ((fp=fopen(fn, "rb")) == NULL) {
-        set_error(zep, NULL, ZIP_ER_OPEN);
-        return NULL;
-    }
-
-    fseeko(fp, 0, SEEK_END);
-    len = ftello(fp);
-
-    /* treat empty files as empty archives */
-    if (len == 0) {
-        if ((za=_zip_allocate_new(fn, zep)) == NULL)
-            fclose(fp);
-        else
-            za->zp = fp;
-        return za;
-    }
-
-    cdir = _zip_find_central_dir(fp, flags, zep, len);
-    if (cdir == NULL) {
-        fclose(fp);
-        return NULL;
-    }
-
-    if ((za=_zip_allocate_new(fn, zep)) == NULL) {
-        _zip_cdir_free(cdir);
-        fclose(fp);
-        return NULL;
-    }
-
-    za->cdir = cdir;
-    za->zp = fp;
-
-    if ((za->entry=(struct zip_entry *)malloc(sizeof(*(za->entry))
-                                              * cdir->nentry)) == NULL) {
-        set_error(zep, NULL, ZIP_ER_MEMORY);
-        _zip_free(za);
-        return NULL;
-    }
-    for (i=0; i<cdir->nentry; i++)
-        _zip_entry_new(za);
-
-    _zip_check_torrentzip(za);
-    za->ch_flags = za->flags;
-
-    return za;
-}
-
-
-
-static void
-set_error(int *zep, struct zip_error *err, int ze)
-{
-    int se;
-
-    if (err) {
-        _zip_error_get(err, &ze, &se);
-        if (zip_error_get_sys_type(ze) == ZIP_ET_SYS)
-            errno = se;
-    }
-
-    if (zep)
-        *zep = ze;
-}
-
-
-
-/* _zip_readcdir:
-   tries to find a valid end-of-central-directory at the beginning of
-   buf, and then the corresponding central directory entries.
-   Returns a struct zip_cdir which contains the central directory 
-   entries, or NULL if unsuccessful. */
-
-static struct zip_cdir *
-_zip_readcdir(FILE *fp, unsigned char *buf, unsigned char *eocd, int buflen,
-              int flags, struct zip_error *error)
-{
-    struct zip_cdir *cd;
-    unsigned char *cdp, **bufp;
-    int i, comlen, nentry;
-
-    comlen = buf + buflen - eocd - EOCDLEN;
-    if (comlen < 0) {
-        /* not enough bytes left for comment */
-        _zip_error_set(error, ZIP_ER_NOZIP, 0);
-        return NULL;
-    }
-
-    /* check for end-of-central-dir magic */
-    if (memcmp(eocd, EOCD_MAGIC, 4) != 0) {
-        _zip_error_set(error, ZIP_ER_NOZIP, 0);
-        return NULL;
-    }
-
-    if (memcmp(eocd+4, "\0\0\0\0", 4) != 0) {
-        _zip_error_set(error, ZIP_ER_MULTIDISK, 0);
-        return NULL;
-    }
-
-    cdp = eocd + 8;
-    /* number of cdir-entries on this disk */
-    i = _zip_read2(&cdp);
-    /* number of cdir-entries */
-    nentry = _zip_read2(&cdp);
-
-    if ((cd=_zip_cdir_new(nentry, error)) == NULL)
-        return NULL;
-
-    cd->size = _zip_read4(&cdp);
-    cd->offset = _zip_read4(&cdp);
-    cd->comment = NULL;
-    cd->comment_len = _zip_read2(&cdp);
-
-    if ((comlen < cd->comment_len) || (cd->nentry != i)) {
-        _zip_error_set(error, ZIP_ER_NOZIP, 0);
-        free(cd);
-        return NULL;
-    }
-    if ((flags & ZIP_CHECKCONS) && comlen != cd->comment_len) {
-        _zip_error_set(error, ZIP_ER_INCONS, 0);
-        free(cd);
-        return NULL;
-    }
-
-    if (cd->comment_len) {
-        if ((cd->comment=(char *)_zip_memdup(eocd+EOCDLEN,
-                                             cd->comment_len, error))
-            == NULL) {
-            free(cd);
-            return NULL;
-        }
-    }
-
-    cdp = eocd;
-    if (cd->size < (unsigned int)(eocd-buf)) {
-        /* if buffer already read in, use it */
-        cdp = eocd - cd->size;
-        bufp = &cdp;
-    }
-    else {
-        /* go to start of cdir and read it entry by entry */
-        bufp = NULL;
-        clearerr(fp);
-        fseeko(fp, cd->offset, SEEK_SET);
-        /* possible consistency check: cd->offset =
-           len-(cd->size+cd->comment_len+EOCDLEN) ? */
-        if (ferror(fp) || ((unsigned long)ftello(fp) != cd->offset)) {
-            /* seek error or offset of cdir wrong */
-            if (ferror(fp))
-                _zip_error_set(error, ZIP_ER_SEEK, errno);
-            else
-                _zip_error_set(error, ZIP_ER_NOZIP, 0);
-            free(cd);
-            return NULL;
-        }
-    }
-
-    for (i=0; i<cd->nentry; i++) {
-        if ((_zip_dirent_read(cd->entry+i, fp, bufp, eocd-cdp, 0,
-                              error)) < 0) {
-            cd->nentry = i;
-            _zip_cdir_free(cd);
-            return NULL;
-        }
-    }
-    
-    return cd;
-}
-
-
-
-/* _zip_checkcons:
-   Checks the consistency of the central directory by comparing central
-   directory entries with local headers and checking for plausible
-   file and header offsets. Returns -1 if not plausible, else the
-   difference between the lowest and the highest fileposition reached */
-
-static int
-_zip_checkcons(FILE *fp, struct zip_cdir *cd, struct zip_error *error)
-{
-    int i;
-    unsigned int min, max, j;
-    struct zip_dirent temp;
-
-    if (cd->nentry) {
-        max = cd->entry[0].offset;
-        min = cd->entry[0].offset;
-    }
-    else
-        min = max = 0;
-
-    for (i=0; i<cd->nentry; i++) {
-        if (cd->entry[i].offset < min)
-            min = cd->entry[i].offset;
-        if (min > cd->offset) {
-            _zip_error_set(error, ZIP_ER_NOZIP, 0);
-            return -1;
-        }
-        
-        j = cd->entry[i].offset + cd->entry[i].comp_size
-            + cd->entry[i].filename_len + LENTRYSIZE;
-        if (j > max)
-            max = j;
-        if (max > cd->offset) {
-            _zip_error_set(error, ZIP_ER_NOZIP, 0);
-            return -1;
-        }
-        
-        if (fseeko(fp, cd->entry[i].offset, SEEK_SET) != 0) {
-            _zip_error_set(error, ZIP_ER_SEEK, 0);
-            return -1;
-        }
-        
-        if (_zip_dirent_read(&temp, fp, NULL, 0, 1, error) == -1)
-            return -1;
-        
-        if (_zip_headercomp(cd->entry+i, 0, &temp, 1) != 0) {
-            _zip_error_set(error, ZIP_ER_INCONS, 0);
-            _zip_dirent_finalize(&temp);
-            return -1;
-        }
-        _zip_dirent_finalize(&temp);
-    }
-
-    return max - min;
-}
-
-
-
-/* _zip_check_torrentzip:
-   check wether ZA has a valid TORRENTZIP comment, i.e. is torrentzipped */
-
-static void
-_zip_check_torrentzip(struct zip *za)
-{
-    uLong crc_got, crc_should;
-    char buf[8+1];
-    char *end;
-
-    if (za->zp == NULL || za->cdir == NULL)
-        return;
-
-    if (za->cdir->comment_len != TORRENT_SIG_LEN+8
-        || strncmp(za->cdir->comment, TORRENT_SIG, TORRENT_SIG_LEN) != 0)
-        return;
-
-    memcpy(buf, za->cdir->comment+TORRENT_SIG_LEN, 8);
-    buf[8] = '\0';
-    errno = 0;
-    crc_should = strtoul(buf, &end, 16);
-    if ((crc_should == UINT_MAX && errno != 0) || (end && *end))
-        return;
-
-    if (_zip_filerange_crc(za->zp, za->cdir->offset, za->cdir->size,
-                           &crc_got, NULL) < 0)
-        return;
-
-    if (crc_got == crc_should)
-        za->flags |= ZIP_AFL_TORRENT;
-}
-
-
-
-
-/* _zip_headercomp:
-   compares two headers h1 and h2; if they are local headers, set
-   local1p or local2p respectively to 1, else 0. Return 0 if they
-   are identical, -1 if not. */
-
-static int
-_zip_headercomp(struct zip_dirent *h1, int local1p, struct zip_dirent *h2,
-           int local2p)
-{
-    if ((h1->version_needed != h2->version_needed)
-#if 0
-        /* some zip-files have different values in local
-           and global headers for the bitflags */
-        || (h1->bitflags != h2->bitflags)
-#endif
-        || (h1->comp_method != h2->comp_method)
-        || (h1->last_mod != h2->last_mod)
-        || (h1->filename_len != h2->filename_len)
-        || !h1->filename || !h2->filename
-        || strcmp(h1->filename, h2->filename))
-        return -1;
-
-    /* check that CRC and sizes are zero if data descriptor is used */
-    if ((h1->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) && local1p
-        && (h1->crc != 0
-            || h1->comp_size != 0
-            || h1->uncomp_size != 0))
-        return -1;
-    if ((h2->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) && local2p
-        && (h2->crc != 0
-            || h2->comp_size != 0
-            || h2->uncomp_size != 0))
-        return -1;
-    
-    /* check that CRC and sizes are equal if no data descriptor is used */
-    if (((h1->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) == 0 || local1p == 0)
-        && ((h2->bitflags & ZIP_GPBF_DATA_DESCRIPTOR) == 0 || local2p == 0)) {
-        if ((h1->crc != h2->crc)
-            || (h1->comp_size != h2->comp_size)
-            || (h1->uncomp_size != h2->uncomp_size))
-            return -1;
-    }
-    
-    if ((local1p == local2p)
-        && ((h1->extrafield_len != h2->extrafield_len)
-            || (h1->extrafield_len && h2->extrafield
-                && memcmp(h1->extrafield, h2->extrafield,
-                          h1->extrafield_len))))
-        return -1;
-
-    /* if either is local, nothing more to check */
-    if (local1p || local2p)
-        return 0;
-
-    if ((h1->version_madeby != h2->version_madeby)
-        || (h1->disk_number != h2->disk_number)
-        || (h1->int_attrib != h2->int_attrib)
-        || (h1->ext_attrib != h2->ext_attrib)
-        || (h1->offset != h2->offset)
-        || (h1->comment_len != h2->comment_len)
-        || (h1->comment_len && h2->comment
-            && memcmp(h1->comment, h2->comment, h1->comment_len)))
-        return -1;
-
-    return 0;
-}
-
-
-
-static struct zip *
-_zip_allocate_new(const char *fn, int *zep)
-{
-    struct zip *za;
-    struct zip_error error;
-
-    if ((za=_zip_new(&error)) == NULL) {
-        set_error(zep, &error, 0);
-        return NULL;
-    }
-        
-    za->zn = strdup(fn);
-    if (!za->zn) {
-        _zip_free(za);
-        set_error(zep, NULL, ZIP_ER_MEMORY);
-        return NULL;
-    }
-    return za;
-}
-
-
-
-static int
-_zip_file_exists(const char *fn, int flags, int *zep)
-{
-    struct stat st;
-
-    if (fn == NULL) {
-        set_error(zep, NULL, ZIP_ER_INVAL);
-        return -1;
-    }
-    
-    if (stat(fn, &st) != 0) {
-        if (flags & ZIP_CREATE)
-            return 0;
-        else {
-            set_error(zep, NULL, ZIP_ER_OPEN);
-            return -1;
-        }
-    }
-    else if ((flags & ZIP_EXCL)) {
-        set_error(zep, NULL, ZIP_ER_EXISTS);
-        return -1;
-    }
-    /* ZIP_CREATE gets ignored if file exists and not ZIP_EXCL,
-       just like open() */
-
-    return 1;
-}
-
-
-
-static struct zip_cdir *
-_zip_find_central_dir(FILE *fp, int flags, int *zep, myoff_t len)
-{
-    struct zip_cdir *cdir, *cdirnew;
-    unsigned char *buf, *match;
-    int a, best, buflen, i;
-    struct zip_error zerr;
-
-    i = fseeko(fp, -(len < CDBUFSIZE ? len : CDBUFSIZE), SEEK_END);
-    if (i == -1 && errno != EFBIG) {
-        /* seek before start of file on my machine */
-        set_error(zep, NULL, ZIP_ER_SEEK);
-        return NULL;
-    }
-
-    /* 64k is too much for stack */
-    if ((buf=(unsigned char *)malloc(CDBUFSIZE)) == NULL) {
-        set_error(zep, NULL, ZIP_ER_MEMORY);
-        return NULL;
-    }
-
-    clearerr(fp);
-    buflen = fread(buf, 1, CDBUFSIZE, fp);
-
-    if (ferror(fp)) {
-        set_error(zep, NULL, ZIP_ER_READ);
-        free(buf);
-        return NULL;
-    }
-    
-    best = -1;
-    cdir = NULL;
-    match = buf;
-    _zip_error_set(&zerr, ZIP_ER_NOZIP, 0);
-
-    while ((match=_zip_memmem(match, buflen-(match-buf)-18,
-                              (const unsigned char *)EOCD_MAGIC, 4))!=NULL) {
-        /* found match -- check, if good */
-        /* to avoid finding the same match all over again */
-        match++;
-        if ((cdirnew=_zip_readcdir(fp, buf, match-1, buflen, flags,
-                                   &zerr)) == NULL)
-            continue;
-
-        if (cdir) {
-            if (best <= 0)
-                best = _zip_checkcons(fp, cdir, &zerr);
-            a = _zip_checkcons(fp, cdirnew, &zerr);
-            if (best < a) {
-                _zip_cdir_free(cdir);
-                cdir = cdirnew;
-                best = a;
-            }
-            else
-                _zip_cdir_free(cdirnew);
-        }
-        else {
-            cdir = cdirnew;
-            if (flags & ZIP_CHECKCONS)
-                best = _zip_checkcons(fp, cdir, &zerr);
-            else
-                best = 0;
-        }
-        cdirnew = NULL;
-    }
-
-    free(buf);
-    
-    if (best < 0) {
-        set_error(zep, &zerr, 0);
-        _zip_cdir_free(cdir);
-        return NULL;
-    }
-
-    return cdir;
-}
-
-
-
-static unsigned char *
-_zip_memmem(const unsigned char *big, int biglen, const unsigned char *little, 
-       int littlelen)
-{
-    const unsigned char *p;
-    
-    if ((biglen < littlelen) || (littlelen == 0))
-        return NULL;
-    p = big-1;
-    while ((p=(const unsigned char *)
-                memchr(p+1, little[0], (size_t)(big-(p+1)+biglen-littlelen+1)))
-           != NULL) {
-        if (memcmp(p+1, little+1, littlelen-1)==0)
-            return (unsigned char *)p;
-    }
-
-    return NULL;
-}
-
-
-/* _zip_new:
-   creates a new zipfile struct, and sets the contents to zero; returns
-   the new struct. */
-
-struct zip *
-_zip_new(struct zip_error *error)
-{
-    struct zip *za;
-
-    za = (struct zip *)malloc(sizeof(struct zip));
-    if (!za) {
-        _zip_error_set(error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    za->zn = NULL;
-    za->zp = NULL;
-    _zip_error_init(&za->error);
-    za->cdir = NULL;
-    za->ch_comment = NULL;
-    za->ch_comment_len = -1;
-    za->nentry = za->nentry_alloc = 0;
-    za->entry = NULL;
-    za->nfile = za->nfile_alloc = 0;
-    za->file = NULL;
-    za->flags = za->ch_flags = 0;
-    
-    return za;
-}
-
-
-void *
-_zip_memdup(const void *mem, size_t len, struct zip_error *error)
-{
-    void *ret;
-
-    ret = malloc(len);
-    if (!ret) {
-        _zip_error_set(error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    memcpy(ret, mem, len);
-
-    return ret;
-}
-
-
-ZIP_EXTERN int
-zip_get_num_files(struct zip *za)
-{
-    if (za == NULL)
-        return -1;
-
-    return za->nentry;
-}
-
-ZIP_EXTERN const char *
-zip_get_name(struct zip *za, int idx, int flags)
-{
-    return _zip_get_name(za, idx, flags, &za->error);
-}
-
-
-
-const char *
-_zip_get_name(struct zip *za, int idx, int flags, struct zip_error *error)
-{
-    if (idx < 0 || idx >= za->nentry) {
-        _zip_error_set(error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    if ((flags & ZIP_FL_UNCHANGED) == 0) {
-        if (za->entry[idx].state == ZIP_ST_DELETED) {
-            _zip_error_set(error, ZIP_ER_DELETED, 0);
-            return NULL;
-        }
-        if (za->entry[idx].ch_filename)
-            return za->entry[idx].ch_filename;
-    }
-
-    if (za->cdir == NULL || idx >= za->cdir->nentry) {
-        _zip_error_set(error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-    
-    return za->cdir->entry[idx].filename;
-}
-
-
-ZIP_EXTERN const char *
-zip_get_file_comment(struct zip *za, int idx, int *lenp, int flags)
-{
-    if (idx < 0 || idx >= za->nentry) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    if ((flags & ZIP_FL_UNCHANGED)
-        || (za->entry[idx].ch_comment_len == -1)) {
-        if (lenp != NULL)
-            *lenp = za->cdir->entry[idx].comment_len;
-        return za->cdir->entry[idx].comment;
-    }
-    
-    if (lenp != NULL)
-        *lenp = za->entry[idx].ch_comment_len;
-    return za->entry[idx].ch_comment;
-}
-
-
-ZIP_EXTERN int
-zip_get_archive_flag(struct zip *za, int flag, int flags)
-{
-    int fl;
-
-    fl = (flags & ZIP_FL_UNCHANGED) ? za->flags : za->ch_flags;
-
-    return (fl & flag) ? 1 : 0;
-}
-
-
-ZIP_EXTERN const char *
-zip_get_archive_comment(struct zip *za, int *lenp, int flags)
-{
-    if ((flags & ZIP_FL_UNCHANGED)
-        || (za->ch_comment_len == -1)) {
-        if (za->cdir) {
-            if (lenp != NULL)
-                *lenp = za->cdir->comment_len;
-            return za->cdir->comment;
-        }
-        else {
-            if (lenp != NULL)
-                *lenp = -1;
-            return NULL;
-        }
-    }
-    
-    if (lenp != NULL)
-        *lenp = za->ch_comment_len;
-    return za->ch_comment;
-}
-
-
-/* _zip_free:
-   frees the space allocated to a zipfile struct, and closes the
-   corresponding file. */
-
-void
-_zip_free(struct zip *za)
-{
-    int i;
-
-    if (za == NULL)
-        return;
-
-    if (za->zn)
-        free(za->zn);
-
-    if (za->zp)
-        fclose(za->zp);
-
-    _zip_cdir_free(za->cdir);
-
-    if (za->entry) {
-        for (i=0; i<za->nentry; i++) {
-            _zip_entry_free(za->entry+i);
-        }
-        free(za->entry);
-    }
-
-    for (i=0; i<za->nfile; i++) {
-        if (za->file[i]->error.zip_err == ZIP_ER_OK) {
-            _zip_error_set(&za->file[i]->error, ZIP_ER_ZIPCLOSED, 0);
-            za->file[i]->za = NULL;
-        }
-    }
-
-    free(za->file);
-    
-    free(za);
-
-    return;
-}
-
-
-ZIP_EXTERN ssize_t
-zip_fread(struct zip_file *zf, void *outbuf, size_t toread)
-{
-    int ret;
-    size_t out_before, len;
-    int i;
-
-    if (!zf)
-        return -1;
-
-    if (zf->error.zip_err != 0)
-        return -1;
-
-    if ((zf->flags & ZIP_ZF_EOF) || (toread == 0))
-        return 0;
-
-    if (zf->bytes_left == 0) {
-        zf->flags |= ZIP_ZF_EOF;
-        if (zf->flags & ZIP_ZF_CRC) {
-            if (zf->crc != zf->crc_orig) {
-                _zip_error_set(&zf->error, ZIP_ER_CRC, 0);
-                return -1;
-            }
-        }
-        return 0;
-    }
-    
-    if ((zf->flags & ZIP_ZF_DECOMP) == 0) {
-        ret = _zip_file_fillbuf(outbuf, toread, zf);
-        if (ret > 0) {
-            if (zf->flags & ZIP_ZF_CRC)
-                zf->crc = crc32(zf->crc, (Bytef *)outbuf, ret);
-            zf->bytes_left -= ret;
-        }
-        return ret;
-    }
-    
-    zf->zstr->next_out = (Bytef *)outbuf;
-    zf->zstr->avail_out = toread;
-    out_before = zf->zstr->total_out;
-    
-    /* endless loop until something has been accomplished */
-    for (;;) {
-        ret = inflate(zf->zstr, Z_SYNC_FLUSH);
-
-        switch (ret) {
-        case Z_OK:
-        case Z_STREAM_END:
-            /* all ok */
-            /* Z_STREAM_END probably won't happen, since we didn't
-               have a header */
-            len = zf->zstr->total_out - out_before;
-            if (len >= zf->bytes_left || len >= toread) {
-                if (zf->flags & ZIP_ZF_CRC)
-                    zf->crc = crc32(zf->crc, (Bytef *)outbuf, len);
-                zf->bytes_left -= len;
-                return len;
-            }
-            break;
-
-        case Z_BUF_ERROR:
-            if (zf->zstr->avail_in == 0) {
-                i = _zip_file_fillbuf(zf->buffer, BUFSIZE, zf);
-                if (i == 0) {
-                    _zip_error_set(&zf->error, ZIP_ER_INCONS, 0);
-                    return -1;
-                }
-                else if (i < 0)
-                    return -1;
-                zf->zstr->next_in = (Bytef *)zf->buffer;
-                zf->zstr->avail_in = i;
-                continue;
-            }
-            /* fallthrough */
-        case Z_NEED_DICT:
-        case Z_DATA_ERROR:
-        case Z_STREAM_ERROR:
-        case Z_MEM_ERROR:
-            _zip_error_set(&zf->error, ZIP_ER_ZLIB, ret);
-            return -1;
-        }
-    }
-}
-
-
-ZIP_EXTERN const char *
-zip_strerror(struct zip *za)
-{
-    return _zip_error_strerror(&za->error);
-}
-
-
-ZIP_EXTERN void
-zip_stat_init(struct zip_stat *st)
-{
-    st->name = NULL;
-    st->index = -1;
-    st->crc = 0;
-    st->mtime = (time_t)-1;
-    st->size = -1;
-    st->comp_size = -1;
-    st->comp_method = ZIP_CM_STORE;
-    st->encryption_method = ZIP_EM_NONE;
-}
-
-
-ZIP_EXTERN int
-zip_stat_index(struct zip *za, int index, int flags, struct zip_stat *st)
-{
-    const char *name;
-    
-    if (index < 0 || index >= za->nentry) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-
-    if ((name=zip_get_name(za, index, flags)) == NULL)
-        return -1;
-    
-
-    if ((flags & ZIP_FL_UNCHANGED) == 0
-        && ZIP_ENTRY_DATA_CHANGED(za->entry+index)) {
-        if (za->entry[index].source->f(za->entry[index].source->ud,
-                                     st, sizeof(*st), ZIP_SOURCE_STAT) < 0) {
-            _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
-            return -1;
-        }
-    }
-    else {
-        if (za->cdir == NULL || index >= za->cdir->nentry) {
-            _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-            return -1;
-        }
-        
-        st->crc = za->cdir->entry[index].crc;
-        st->size = za->cdir->entry[index].uncomp_size;
-        st->mtime = za->cdir->entry[index].last_mod;
-        st->comp_size = za->cdir->entry[index].comp_size;
-        st->comp_method = za->cdir->entry[index].comp_method;
-        if (za->cdir->entry[index].bitflags & ZIP_GPBF_ENCRYPTED) {
-            if (za->cdir->entry[index].bitflags & ZIP_GPBF_STRONG_ENCRYPTION) {
-                /* XXX */
-                st->encryption_method = ZIP_EM_UNKNOWN;
-            }
-            else
-                st->encryption_method = ZIP_EM_TRAD_PKWARE;
-        }
-        else
-            st->encryption_method = ZIP_EM_NONE;
-        /* st->bitflags = za->cdir->entry[index].bitflags; */
-    }
-
-    st->index = index;
-    st->name = name;
-    
-    return 0;
-}
-
-
-ZIP_EXTERN int
-zip_stat(struct zip *za, const char *fname, int flags, struct zip_stat *st)
-{
-    int idx;
-
-    if ((idx=zip_name_locate(za, fname, flags)) < 0)
-        return -1;
-
-    return zip_stat_index(za, idx, flags, st);
-}
-
-
-struct read_zip {
-    struct zip_file *zf;
-    struct zip_stat st;
-    myoff_t off, len;
-};
-
-static ssize_t read_zip(void *st, void *data, size_t len,
-                        enum zip_source_cmd cmd);
-
-
-
-ZIP_EXTERN struct zip_source *
-zip_source_zip(struct zip *za, struct zip *srcza, int srcidx, int flags,
-               myoff_t start, myoff_t len)
-{
-    struct zip_error error;
-    struct zip_source *zs;
-    struct read_zip *p;
-
-    /* XXX: ZIP_FL_RECOMPRESS */
-
-    if (za == NULL)
-        return NULL;
-
-    if (srcza == NULL || start < 0 || len < -1 || srcidx < 0 || srcidx >= srcza->nentry) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    if ((flags & ZIP_FL_UNCHANGED) == 0
-        && ZIP_ENTRY_DATA_CHANGED(srcza->entry+srcidx)) {
-        _zip_error_set(&za->error, ZIP_ER_CHANGED, 0);
-        return NULL;
-    }
-
-    if (len == 0)
-        len = -1;
-
-    if (start == 0 && len == -1 && (flags & ZIP_FL_RECOMPRESS) == 0)
-        flags |= ZIP_FL_COMPRESSED;
-    else
-        flags &= ~ZIP_FL_COMPRESSED;
-
-    if ((p=(struct read_zip *)malloc(sizeof(*p))) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-        
-    _zip_error_copy(&error, &srcza->error);
-        
-    if (zip_stat_index(srcza, srcidx, flags, &p->st) < 0
-        || (p->zf=zip_fopen_index(srcza, srcidx, flags)) == NULL) {
-        free(p);
-        _zip_error_copy(&za->error, &srcza->error);
-        _zip_error_copy(&srcza->error, &error);
-        
-        return NULL;
-    }
-    p->off = start;
-    p->len = len;
-
-    if ((flags & ZIP_FL_COMPRESSED) == 0) {
-        p->st.size = p->st.comp_size = len;
-        p->st.comp_method = ZIP_CM_STORE;
-        p->st.crc = 0;
-    }
-    
-    if ((zs=zip_source_function(za, read_zip, p)) == NULL) {
-        free(p);
-        return NULL;
-    }
-
-    return zs;
-}
-
-
-
-static ssize_t
-read_zip(void *state, void *data, size_t len, enum zip_source_cmd cmd)
-{
-    struct read_zip *z;
-    char b[8192], *buf;
-    int i, n;
-
-    z = (struct read_zip *)state;
-    buf = (char *)data;
-
-    switch (cmd) {
-    case ZIP_SOURCE_OPEN:
-        for (n=0; n<z->off; n+= i) {
-            i = (z->off-n > sizeof(b) ? sizeof(b) : z->off-n);
-            if ((i=zip_fread(z->zf, b, i)) < 0) {
-                zip_fclose(z->zf);
-                z->zf = NULL;
-                return -1;
-            }
-        }
-        return 0;
-        
-    case ZIP_SOURCE_READ:
-        if (z->len != -1)
-            n = len > z->len ? z->len : len;
-        else
-            n = len;
-        
-
-        if ((i=zip_fread(z->zf, buf, n)) < 0)
-            return -1;
-
-        if (z->len != -1)
-            z->len -= i;
-
-        return i;
-        
-    case ZIP_SOURCE_CLOSE:
-        return 0;
-
-    case ZIP_SOURCE_STAT:
-        if (len < sizeof(z->st))
-            return -1;
-        len = sizeof(z->st);
-
-        memcpy(data, &z->st, len);
-        return len;
-
-    case ZIP_SOURCE_ERROR:
-        {
-            int *e;
-
-            if (len < sizeof(int)*2)
-                return -1;
-
-            e = (int *)data;
-            zip_file_error_get(z->zf, e, e+1);
-        }
-        return sizeof(int)*2;
-
-    case ZIP_SOURCE_FREE:
-        zip_fclose(z->zf);
-        free(z);
-        return 0;
-
-    default:
-        ;
-    }
-
-    return -1;
-}
-
-
-ZIP_EXTERN struct zip_source *
-zip_source_function(struct zip *za, zip_source_callback zcb, void *ud)
-{
-    struct zip_source *zs;
-
-    if (za == NULL)
-        return NULL;
-
-    if ((zs=(struct zip_source *)malloc(sizeof(*zs))) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    zs->f = zcb;
-    zs->ud = ud;
-    
-    return zs;
-}
-
-
-ZIP_EXTERN void
-zip_source_free(struct zip_source *source)
-{
-    if (source == NULL)
-        return;
-
-    (void)source->f(source->ud, NULL, 0, ZIP_SOURCE_FREE);
-
-    free(source);
-}
-
-
-struct read_file {
-    char *fname;        /* name of file to copy from */
-    FILE *f;                /* file to copy from */
-    myoff_t off;                /* start offset of */
-    myoff_t len;                /* lengt of data to copy */
-    myoff_t remain;        /* bytes remaining to be copied */
-    int e[2];                /* error codes */
-};
-
-static ssize_t read_file(void *state, void *data, size_t len,
-                     enum zip_source_cmd cmd);
-
-
-
-ZIP_EXTERN struct zip_source *
-zip_source_filep(struct zip *za, FILE *file, myoff_t start, myoff_t len)
-{
-    if (za == NULL)
-        return NULL;
-
-    if (file == NULL || start < 0 || len < -1) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    return _zip_source_file_or_p(za, NULL, file, start, len);
-}
-
-
-
-struct zip_source *
-_zip_source_file_or_p(struct zip *za, const char *fname, FILE *file,
-                      myoff_t start, myoff_t len)
-{
-    struct read_file *f;
-    struct zip_source *zs;
-
-    if (file == NULL && fname == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_INVAL, 0);
-        return NULL;
-    }
-
-    if ((f=(struct read_file *)malloc(sizeof(struct read_file))) == NULL) {
-        _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-        return NULL;
-    }
-
-    f->fname = NULL;
-    if (fname) {
-        if ((f->fname=strdup(fname)) == NULL) {
-            _zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
-            free(f);
-            return NULL;
-        }
-    }
-    f->f = file;
-    f->off = start;
-    f->len = (len ? len : -1);
-    
-    if ((zs=zip_source_function(za, read_file, f)) == NULL) {
-        free(f);
-        return NULL;
-    }
-
-    return zs;
-}
-
-
-
-static ssize_t
-read_file(void *state, void *data, size_t len, enum zip_source_cmd cmd)
-{
-    struct read_file *z;
-    char *buf;
-    int i, n;
-
-    z = (struct read_file *)state;
-    buf = (char *)data;
-
-    switch (cmd) {
-    case ZIP_SOURCE_OPEN:
-        if (z->fname) {
-            if ((z->f=fopen(z->fname, "rb")) == NULL) {
-                z->e[0] = ZIP_ER_OPEN;
-                z->e[1] = errno;
-                return -1;
-            }
-        }
-
-        if (fseeko(z->f, z->off, SEEK_SET) < 0) {
-            z->e[0] = ZIP_ER_SEEK;
-            z->e[1] = errno;
-            return -1;
-        }
-        z->remain = z->len;
-        return 0;
-        
-    case ZIP_SOURCE_READ:
-        if (z->remain != -1)
-            n = len > z->remain ? z->remain : len;
-        else
-            n = len;
-        
-        if ((i=fread(buf, 1, n, z->f)) < 0) {
-            z->e[0] = ZIP_ER_READ;
-            z->e[1] = errno;
-            return -1;
-        }
-
-        if (z->remain != -1)
-            z->remain -= i;
-
-        return i;
-        
-    case ZIP_SOURCE_CLOSE:
-        if (z->fname) {
-            fclose(z->f);
-            z->f = NULL;
-        }
-        return 0;
-
-    case ZIP_SOURCE_STAT:
-        {
-            struct zip_stat *st;
-            struct stat fst;
-            int err;
-            
-            if (len < sizeof(*st))
-                return -1;
-
-            if (z->f)
-                err = fstat(fileno(z->f), &fst);
-            else
-                err = stat(z->fname, &fst);
-
-            if (err != 0) {
-                z->e[0] = ZIP_ER_READ; /* best match */
-                z->e[1] = errno;
-                return -1;
-            }
-
-            st = (struct zip_stat *)data;
-
-            zip_stat_init(st);
-            st->mtime = fst.st_mtime;
-            if (z->len != -1)
-                st->size = z->len;
-            else if ((fst.st_mode&S_IFMT) == S_IFREG)
-                st->size = fst.st_size;
-
-            return sizeof(*st);
-        }
-
-    case ZIP_SOURCE_ERROR:
-        if (len < sizeof(int)*2)
-            return -1;
-
-        memcpy(data, z->e, sizeof(int)*2);
-        return sizeof(int)*2;
-
-    case ZIP_SOURCE_FREE:
-        free(z->fname);
-        if (z->f)
-            fclose(z->f);
-        free(z);
-        return 0;
-
-    default:
-        ;
-    }
-
-    return -1;
-}
-
-
-ZIP_EXTERN int
-zip_name_locate(struct zip *za, const char *fname, int flags)
-{
-    return _zip_name_locate(za, fname, flags, &za->error);
-}
-
-
-
-int
-_zip_name_locate(struct zip *za, const char *fname, int flags,
-                 struct zip_error *error)
-{
-    int (*cmp)(const char *, const char *);
-    const char *fn, *p;
-    int i, n;
-
-    if (fname == NULL) {
-        _zip_error_set(error, ZIP_ER_INVAL, 0);
-        return -1;
-    }
-    
-    cmp = (flags & ZIP_FL_NOCASE) ? strcasecmp : strcmp;
-
-    n = (flags & ZIP_FL_UNCHANGED) ? za->cdir->nentry : za->nentry;
-    for (i=0; i<n; i++) {
-        if (flags & ZIP_FL_UNCHANGED)
-            fn = za->cdir->entry[i].filename;
-        else
-            fn = _zip_get_name(za, i, flags, error);
-
-        /* newly added (partially filled) entry */
-        if (fn == NULL)
-            continue;
-        
-        if (flags & ZIP_FL_NODIR) {
-            p = strrchr(fn, '/');
-            if (p)
-                fn = p+1;
-        }
-
-        if (cmp(fname, fn) == 0)
-            return i;
-    }
-
-    _zip_error_set(error, ZIP_ER_NOENT, 0);
-    return -1;
-}
-
diff --git a/lib/wrappers/zip/zlib.nim b/lib/wrappers/zip/zlib.nim
deleted file mode 100755
index 9b49b9663..000000000
--- a/lib/wrappers/zip/zlib.nim
+++ /dev/null
@@ -1,181 +0,0 @@
-# Converted from Pascal
-
-## Interface to the zlib http://www.zlib.net/ compression library.
-
-when defined(windows):
-  const libz = "zlib1.dll"
-elif defined(macosx):
-  const libz = "libz.dylib"
-else:
-  const libz = "libz.so"
-
-type
-  Uint* = int32
-  Ulong* = int
-  Ulongf* = int
-  Pulongf* = ptr Ulongf
-  z_off_t* = int32
-  pbyte* = cstring
-  pbytef* = cstring
-  TAllocfunc* = proc (p: pointer, items: uInt, size: uInt): pointer{.cdecl.}
-  TFreeFunc* = proc (p: pointer, address: pointer){.cdecl.}
-  TInternalState*{.final, pure.} = object 
-  PInternalState* = ptr TInternalstate
-  TZStream*{.final, pure.} = object 
-    next_in*: pbytef
-    avail_in*: uInt
-    total_in*: uLong
-    next_out*: pbytef
-    avail_out*: uInt
-    total_out*: uLong
-    msg*: pbytef
-    state*: PInternalState
-    zalloc*: TAllocFunc
-    zfree*: TFreeFunc
-    opaque*: pointer
-    data_type*: int32
-    adler*: uLong
-    reserved*: uLong
-
-  TZStreamRec* = TZStream
-  PZstream* = ptr TZStream
-  gzFile* = pointer
-
-const 
-  Z_NO_FLUSH* = 0
-  Z_PARTIAL_FLUSH* = 1
-  Z_SYNC_FLUSH* = 2
-  Z_FULL_FLUSH* = 3
-  Z_FINISH* = 4
-  Z_OK* = 0
-  Z_STREAM_END* = 1
-  Z_NEED_DICT* = 2
-  Z_ERRNO* = -1
-  Z_STREAM_ERROR* = -2
-  Z_DATA_ERROR* = -3
-  Z_MEM_ERROR* = -4
-  Z_BUF_ERROR* = -5
-  Z_VERSION_ERROR* = -6
-  Z_NO_COMPRESSION* = 0
-  Z_BEST_SPEED* = 1
-  Z_BEST_COMPRESSION* = 9
-  Z_DEFAULT_COMPRESSION* = -1
-  Z_FILTERED* = 1
-  Z_HUFFMAN_ONLY* = 2
-  Z_DEFAULT_STRATEGY* = 0
-  Z_BINARY* = 0
-  Z_ASCII* = 1
-  Z_UNKNOWN* = 2
-  Z_DEFLATED* = 8
-  Z_NULL* = 0
-
-proc zlibVersion*(): cstring{.cdecl, dynlib: libz, importc: "zlibVersion".}
-proc deflate*(strm: var TZStream, flush: int32): int32{.cdecl, dynlib: libz, 
-    importc: "deflate".}
-proc deflateEnd*(strm: var TZStream): int32{.cdecl, dynlib: libz, 
-    importc: "deflateEnd".}
-proc inflate*(strm: var TZStream, flush: int32): int32{.cdecl, dynlib: libz, 
-    importc: "inflate".}
-proc inflateEnd*(strm: var TZStream): int32{.cdecl, dynlib: libz, 
-    importc: "inflateEnd".}
-proc deflateSetDictionary*(strm: var TZStream, dictionary: pbytef, 
-                           dictLength: uInt): int32{.cdecl, dynlib: libz, 
-    importc: "deflateSetDictionary".}
-proc deflateCopy*(dest, source: var TZstream): int32{.cdecl, dynlib: libz, 
-    importc: "deflateCopy".}
-proc deflateReset*(strm: var TZStream): int32{.cdecl, dynlib: libz, 
-    importc: "deflateReset".}
-proc deflateParams*(strm: var TZStream, level: int32, strategy: int32): int32{.
-    cdecl, dynlib: libz, importc: "deflateParams".}
-proc inflateSetDictionary*(strm: var TZStream, dictionary: pbytef, 
-                           dictLength: uInt): int32{.cdecl, dynlib: libz, 
-    importc: "inflateSetDictionary".}
-proc inflateSync*(strm: var TZStream): int32{.cdecl, dynlib: libz, 
-    importc: "inflateSync".}
-proc inflateReset*(strm: var TZStream): int32{.cdecl, dynlib: libz, 
-    importc: "inflateReset".}
-proc compress*(dest: pbytef, destLen: puLongf, source: pbytef, sourceLen: uLong): cint{.
-    cdecl, dynlib: libz, importc: "compress".}
-proc compress2*(dest: pbytef, destLen: puLongf, source: pbytef, 
-                sourceLen: uLong, level: cint): cint{.cdecl, dynlib: libz, 
-    importc: "compress2".}
-proc uncompress*(dest: pbytef, destLen: puLongf, source: pbytef, 
-                 sourceLen: uLong): cint{.cdecl, dynlib: libz, 
-    importc: "uncompress".}
-proc gzopen*(path: cstring, mode: cstring): gzFile{.cdecl, dynlib: libz, 
-    importc: "gzopen".}
-proc gzdopen*(fd: int32, mode: cstring): gzFile{.cdecl, dynlib: libz, 
-    importc: "gzdopen".}
-proc gzsetparams*(thefile: gzFile, level: int32, strategy: int32): int32{.cdecl, 
-    dynlib: libz, importc: "gzsetparams".}
-proc gzread*(thefile: gzFile, buf: pointer, length: int): int32{.cdecl, 
-    dynlib: libz, importc: "gzread".}
-proc gzwrite*(thefile: gzFile, buf: pointer, length: int): int32{.cdecl, 
-    dynlib: libz, importc: "gzwrite".}
-proc gzprintf*(thefile: gzFile, format: pbytef): int32{.varargs, cdecl, 
-    dynlib: libz, importc: "gzprintf".}
-proc gzputs*(thefile: gzFile, s: pbytef): int32{.cdecl, dynlib: libz, 
-    importc: "gzputs".}
-proc gzgets*(thefile: gzFile, buf: pbytef, length: int32): pbytef{.cdecl, 
-    dynlib: libz, importc: "gzgets".}
-proc gzputc*(thefile: gzFile, c: char): char{.cdecl, dynlib: libz, 
-    importc: "gzputc".}
-proc gzgetc*(thefile: gzFile): char{.cdecl, dynlib: libz, importc: "gzgetc".}
-proc gzflush*(thefile: gzFile, flush: int32): int32{.cdecl, dynlib: libz, 
-    importc: "gzflush".}
-proc gzseek*(thefile: gzFile, offset: z_off_t, whence: int32): z_off_t{.cdecl, 
-    dynlib: libz, importc: "gzseek".}
-proc gzrewind*(thefile: gzFile): int32{.cdecl, dynlib: libz, importc: "gzrewind".}
-proc gztell*(thefile: gzFile): z_off_t{.cdecl, dynlib: libz, importc: "gztell".}
-proc gzeof*(thefile: gzFile): int {.cdecl, dynlib: libz, importc: "gzeof".}
-proc gzclose*(thefile: gzFile): int32{.cdecl, dynlib: libz, importc: "gzclose".}
-proc gzerror*(thefile: gzFile, errnum: var int32): pbytef{.cdecl, dynlib: libz, 
-    importc: "gzerror".}
-proc adler32*(adler: uLong, buf: pbytef, length: uInt): uLong{.cdecl, 
-    dynlib: libz, importc: "adler32".}
-proc crc32*(crc: uLong, buf: pbytef, length: uInt): uLong{.cdecl, dynlib: libz, 
-    importc: "crc32".}
-proc deflateInitu*(strm: var TZStream, level: int32, version: cstring, 
-                   stream_size: int32): int32{.cdecl, dynlib: libz, 
-    importc: "deflateInit_".}
-proc inflateInitu*(strm: var TZStream, version: cstring,
-                   stream_size: int32): int32 {.
-    cdecl, dynlib: libz, importc: "inflateInit_".}
-proc deflateInit*(strm: var TZStream, level: int32): int32
-proc inflateInit*(strm: var TZStream): int32
-proc deflateInit2u*(strm: var TZStream, level: int32, `method`: int32, 
-                    windowBits: int32, memLevel: int32, strategy: int32, 
-                    version: cstring, stream_size: int32): int32 {.cdecl, 
-                    dynlib: libz, importc: "deflateInit2_".}
-proc inflateInit2u*(strm: var TZStream, windowBits: int32, version: cstring, 
-                    stream_size: int32): int32{.cdecl, dynlib: libz, 
-    importc: "inflateInit2_".}
-proc deflateInit2*(strm: var TZStream, 
-                   level, `method`, windowBits, memLevel,
-                   strategy: int32): int32
-proc inflateInit2*(strm: var TZStream, windowBits: int32): int32
-proc zError*(err: int32): cstring{.cdecl, dynlib: libz, importc: "zError".}
-proc inflateSyncPoint*(z: PZstream): int32{.cdecl, dynlib: libz, 
-    importc: "inflateSyncPoint".}
-proc get_crc_table*(): pointer{.cdecl, dynlib: libz, importc: "get_crc_table".}
-
-proc deflateInit(strm: var TZStream, level: int32): int32 = 
-  result = deflateInitu(strm, level, ZLIB_VERSION(), sizeof(TZStream))
-
-proc inflateInit(strm: var TZStream): int32 = 
-  result = inflateInitu(strm, ZLIB_VERSION(), sizeof(TZStream))
-
-proc deflateInit2(strm: var TZStream, 
-                  level, `method`, windowBits, memLevel,
-                  strategy: int32): int32 = 
-  result = deflateInit2u(strm, level, `method`, windowBits, memLevel, 
-                         strategy, ZLIB_VERSION(), sizeof(TZStream))
-
-proc inflateInit2(strm: var TZStream, windowBits: int32): int32 = 
-  result = inflateInit2u(strm, windowBits, ZLIB_VERSION(), sizeof(TZStream))
-
-proc zlibAllocMem*(AppData: Pointer, Items, Size: int): Pointer {.cdecl.} = 
-  result = Alloc(Items * Size)
-
-proc zlibFreeMem*(AppData, `Block`: Pointer) {.cdecl.} = 
-  dealloc(`Block`)
diff --git a/lib/wrappers/zip/zzip.nim b/lib/wrappers/zip/zzip.nim
deleted file mode 100755
index a656322ee..000000000
--- a/lib/wrappers/zip/zzip.nim
+++ /dev/null
@@ -1,172 +0,0 @@
-#
-#
-#            Nimrod's Runtime Library
-#        (c) Copyright 2008 Andreas Rumpf
-#
-#    See the file "copying.txt", included in this
-#    distribution, for details about the copyright.
-#
-
-## This module is an interface to the zzip library. 
-
-#   Author: 
-#   Guido Draheim <guidod@gmx.de>
-#   Tomi Ollila <Tomi.Ollila@iki.fi>
-#   Copyright (c) 1999,2000,2001,2002,2003,2004 Guido Draheim
-#          All rights reserved, 
-#             usage allowed under the restrictions of the
-#         Lesser GNU General Public License 
-#             or alternatively the restrictions 
-#             of the Mozilla Public License 1.1
-
-when defined(windows):
-  const
-    dllname = "zzip.dll"
-else:
-  const 
-    dllname = "libzzip.so"
-
-type 
-  TZZipError* = int32
-const
-  ZZIP_ERROR* = -4096'i32
-  ZZIP_NO_ERROR* = 0'i32            # no error, may be used if user sets it.
-  ZZIP_OUTOFMEM* = ZZIP_ERROR - 20'i32  # out of memory  
-  ZZIP_DIR_OPEN* = ZZIP_ERROR - 21'i32  # failed to open zipfile, see errno for details 
-  ZZIP_DIR_STAT* = ZZIP_ERROR - 22'i32  # failed to fstat zipfile, see errno for details
-  ZZIP_DIR_SEEK* = ZZIP_ERROR - 23'i32  # failed to lseek zipfile, see errno for details
-  ZZIP_DIR_READ* = ZZIP_ERROR - 24'i32  # failed to read zipfile, see errno for details  
-  ZZIP_DIR_TOO_SHORT* = ZZIP_ERROR - 25'i32
-  ZZIP_DIR_EDH_MISSING* = ZZIP_ERROR - 26'i32
-  ZZIP_DIRSIZE* = ZZIP_ERROR - 27'i32
-  ZZIP_ENOENT* = ZZIP_ERROR - 28'i32
-  ZZIP_UNSUPP_COMPR* = ZZIP_ERROR - 29'i32
-  ZZIP_CORRUPTED* = ZZIP_ERROR - 31'i32
-  ZZIP_UNDEF* = ZZIP_ERROR - 32'i32
-  ZZIP_DIR_LARGEFILE* = ZZIP_ERROR - 33'i32
-
-  ZZIP_CASELESS* = 1'i32 shl 12'i32
-  ZZIP_NOPATHS* = 1'i32 shl 13'i32
-  ZZIP_PREFERZIP* = 1'i32 shl 14'i32
-  ZZIP_ONLYZIP* = 1'i32 shl 16'i32
-  ZZIP_FACTORY* = 1'i32 shl 17'i32
-  ZZIP_ALLOWREAL* = 1'i32 shl 18'i32
-  ZZIP_THREADED* = 1'i32 shl 19'i32
-  
-type
-  TZZipDir* {.final, pure.} = object
-  TZZipFile* {.final, pure.} = object
-  TZZipPluginIO* {.final, pure.} = object
-
-  TZZipDirent* {.final, pure.} = object  
-    d_compr*: int32  ## compression method
-    d_csize*: int32  ## compressed size  
-    st_size*: int32  ## file size / decompressed size
-    d_name*: cstring ## file name / strdupped name
-
-  TZZipStat* = TZZipDirent    
-
-proc zzip_strerror*(errcode: int32): cstring  {.cdecl, dynlib: dllname, 
-    importc: "zzip_strerror".}
-proc zzip_strerror_of*(dir: ptr TZZipDir): cstring  {.cdecl, dynlib: dllname, 
-    importc: "zzip_strerror_of".}
-proc zzip_errno*(errcode: int32): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_errno".}
-
-proc zzip_geterror*(dir: ptr TZZipDir): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_error".}
-proc zzip_seterror*(dir: ptr TZZipDir, errcode: int32) {.cdecl, dynlib: dllname, 
-    importc: "zzip_seterror".}
-proc zzip_compr_str*(compr: int32): cstring {.cdecl, dynlib: dllname, 
-    importc: "zzip_compr_str".}
-proc zzip_dirhandle*(fp: ptr TZZipFile): ptr TZZipDir {.cdecl, dynlib: dllname, 
-    importc: "zzip_dirhandle".}
-proc zzip_dirfd*(dir: ptr TZZipDir): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_dirfd".}
-proc zzip_dir_real*(dir: ptr TZZipDir): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_dir_real".}
-proc zzip_file_real*(fp: ptr TZZipFile): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_file_real".}
-proc zzip_realdir*(dir: ptr TZZipDir): pointer {.cdecl, dynlib: dllname, 
-    importc: "zzip_realdir".}
-proc zzip_realfd*(fp: ptr TZZipFile): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_realfd".}
-
-proc zzip_dir_alloc*(fileext: cstringArray): ptr TZZipDir {.cdecl, 
-    dynlib: dllname, importc: "zzip_dir_alloc".}
-proc zzip_dir_free*(para1: ptr TZZipDir): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_dir_free".}
-
-proc zzip_dir_fdopen*(fd: int32, errcode_p: ptr TZZipError): ptr TZZipDir {.cdecl, 
-    dynlib: dllname, importc: "zzip_dir_fdopen".}
-proc zzip_dir_open*(filename: cstring, errcode_p: ptr TZZipError): ptr TZZipDir {.
-    cdecl, dynlib: dllname, importc: "zzip_dir_open".}
-proc zzip_dir_close*(dir: ptr TZZipDir) {.cdecl, dynlib: dllname, 
-    importc: "zzip_dir_close".}
-proc zzip_dir_read*(dir: ptr TZZipDir, dirent: ptr TZZipDirent): int32 {.cdecl, 
-    dynlib: dllname, importc: "zzip_dir_read".}
-
-proc zzip_opendir*(filename: cstring): ptr TZZipDir {.cdecl, dynlib: dllname, 
-    importc: "zzip_opendir".}
-proc zzip_closedir*(dir: ptr TZZipDir) {.cdecl, dynlib: dllname, 
-    importc: "zzip_closedir".}
-proc zzip_readdir*(dir: ptr TZZipDir): ptr TZZipDirent {.cdecl, dynlib: dllname, 
-    importc: "zzip_readdir".}
-proc zzip_rewinddir*(dir: ptr TZZipDir) {.cdecl, dynlib: dllname, 
-                                      importc: "zzip_rewinddir".}
-proc zzip_telldir*(dir: ptr TZZipDir): int {.cdecl, dynlib: dllname, 
-    importc: "zzip_telldir".}
-proc zzip_seekdir*(dir: ptr TZZipDir, offset: int) {.cdecl, dynlib: dllname, 
-    importc: "zzip_seekdir".}
-
-proc zzip_file_open*(dir: ptr TZZipDir, name: cstring, flags: int32): ptr TZZipFile {.
-    cdecl, dynlib: dllname, importc: "zzip_file_open".}
-proc zzip_file_close*(fp: ptr TZZipFile) {.cdecl, dynlib: dllname, 
-    importc: "zzip_file_close".}
-proc zzip_file_read*(fp: ptr TZZipFile, buf: pointer, length: int): int {.
-    cdecl, dynlib: dllname, importc: "zzip_file_read".}
-proc zzip_open*(name: cstring, flags: int32): ptr TZZipFile {.cdecl, 
-    dynlib: dllname, importc: "zzip_open".}
-proc zzip_close*(fp: ptr TZZipFile) {.cdecl, dynlib: dllname, 
-    importc: "zzip_close".}
-proc zzip_read*(fp: ptr TZZipFile, buf: pointer, length: int): int {.
-    cdecl, dynlib: dllname, importc: "zzip_read".}
-
-proc zzip_freopen*(name: cstring, mode: cstring, para3: ptr TZZipFile): ptr TZZipFile {.
-    cdecl, dynlib: dllname, importc: "zzip_freopen".}
-proc zzip_fopen*(name: cstring, mode: cstring): ptr TZZipFile {.cdecl, 
-    dynlib: dllname, importc: "zzip_fopen".}
-proc zzip_fread*(p: pointer, size: int, nmemb: int, 
-                 file: ptr TZZipFile): int {.cdecl, dynlib: dllname, 
-    importc: "zzip_fread".}
-proc zzip_fclose*(fp: ptr TZZipFile) {.cdecl, dynlib: dllname, 
-    importc: "zzip_fclose".}
-
-proc zzip_rewind*(fp: ptr TZZipFile): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_rewind".}
-proc zzip_seek*(fp: ptr TZZipFile, offset: int, whence: int32): int {.
-    cdecl, dynlib: dllname, importc: "zzip_seek".}
-proc zzip_tell*(fp: ptr TZZipFile): int {.cdecl, dynlib: dllname, 
-    importc: "zzip_tell".}
-
-proc zzip_dir_stat*(dir: ptr TZZipDir, name: cstring, zs: ptr TZZipStat, 
-                    flags: int32): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_dir_stat".}
-proc zzip_file_stat*(fp: ptr TZZipFile, zs: ptr TZZipStat): int32 {.cdecl, 
-    dynlib: dllname, importc: "zzip_file_stat".}
-proc zzip_fstat*(fp: ptr TZZipFile, zs: ptr TZZipStat): int32 {.cdecl, dynlib: dllname, 
-    importc: "zzip_fstat".}
-
-proc zzip_open_shared_io*(stream: ptr TZZipFile, name: cstring, 
-                          o_flags: int32, o_modes: int32, ext: cstringArray, 
-                          io: ptr TZZipPluginIO): ptr TZZipFile {.cdecl, 
-    dynlib: dllname, importc: "zzip_open_shared_io".}
-proc zzip_open_ext_io*(name: cstring, o_flags: int32, o_modes: int32, 
-                       ext: cstringArray, io: ptr TZZipPluginIO): ptr TZZipFile {.
-    cdecl, dynlib: dllname, importc: "zzip_open_ext_io".}
-proc zzip_opendir_ext_io*(name: cstring, o_modes: int32, 
-                          ext: cstringArray, io: ptr TZZipPluginIO): ptr TZZipDir {.
-    cdecl, dynlib: dllname, importc: "zzip_opendir_ext_io".}
-proc zzip_dir_open_ext_io*(filename: cstring, errcode_p: ptr TZZipError, 
-                           ext: cstringArray, io: ptr TZZipPluginIO): ptr TZZipDir {.
-    cdecl, dynlib: dllname, importc: "zzip_dir_open_ext_io".}