phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] phpgwapi/inc/geshi geshi.php contrib/aliased.ph...


From: Dave Hall
Subject: [Phpgroupware-cvs] phpgwapi/inc/geshi geshi.php contrib/aliased.ph...
Date: Mon, 25 Sep 2006 08:46:29 +0000

CVSROOT:        /cvsroot/phpgwapi
Module name:    phpgwapi
Changes by:     Dave Hall <skwashd>     06/09/25 08:46:28

Added files:
        inc/geshi      : geshi.php 
        inc/geshi/contrib: aliased.php cssgen.php example.php 
        inc/geshi/docs : BUGS CHANGES COPYING README THANKS TODO 
                         geshi-doc.html geshi-doc.txt 
        inc/geshi/geshi: actionscript.php ada.php apache.php 
                         applescript.php asm.php asp.php autoit.php 
                         bash.php blitzbasic.php c.php c_mac.php 
                         caddcl.php cadlisp.php cfdg.php cfm.php cpp.php 
                         csharp.php css-gen.cfg css.php d.php delphi.php 
                         diff.php div.php dos.php eiffel.php fortran.php 
                         freebasic.php gml.php groovy.php 
                         html4strict.php idl.php ini.php inno.php 
                         java.php java5.php javascript.php latex.php 
                         lisp.php lua.php matlab.php mpasm.php mysql.php 
                         nsis.php objc.php ocaml-brief.php ocaml.php 
                         oobas.php oracle8.php pascal.php perl.php 
                         php-brief.php php.php python.php qbasic.php 
                         reg.php robots.php ruby.php sas.php scheme.php 
                         sdlbasic.php smalltalk.php smarty.php sql.php 
                         tcl.php text.php thinbasic.php tsql.php vb.php 
                         vbnet.php vhdl.php visualfoxpro.php 
                         winbatch.php xml.php 

Log message:
        add new syntax highlighting code.  This will change a little.  It will 
be wrapped by the soon to be added class.syntax_highlighter.inc.php

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/contrib/aliased.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/contrib/cssgen.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/contrib/example.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/BUGS?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/CHANGES?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/COPYING?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/README?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/THANKS?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/TODO?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/geshi-doc.html?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/docs/geshi-doc.txt?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/actionscript.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/ada.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/apache.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/applescript.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/asm.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/asp.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/autoit.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/bash.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/blitzbasic.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/c.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/c_mac.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/caddcl.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/cadlisp.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/cfdg.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/cfm.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/cpp.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/csharp.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/css-gen.cfg?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/css.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/d.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/delphi.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/diff.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/div.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/dos.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/eiffel.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/fortran.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/freebasic.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/gml.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/groovy.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/html4strict.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/idl.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/ini.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/inno.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/java.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/java5.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/javascript.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/latex.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/lisp.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/lua.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/matlab.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/mpasm.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/mysql.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/nsis.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/objc.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/ocaml-brief.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/ocaml.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/oobas.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/oracle8.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/pascal.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/perl.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/php-brief.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/php.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/python.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/qbasic.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/reg.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/robots.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/ruby.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/sas.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/scheme.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/sdlbasic.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/smalltalk.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/smarty.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/sql.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/tcl.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/text.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/thinbasic.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/tsql.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/vb.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/vbnet.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/vhdl.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/visualfoxpro.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/winbatch.php?cvsroot=phpgwapi&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/geshi/geshi/xml.php?cvsroot=phpgwapi&rev=1.1

Patches:
Index: geshi.php
===================================================================
RCS file: geshi.php
diff -N geshi.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi.php   25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,2738 @@
+<?php
+/**
+ * GeSHi - Generic Syntax Highlighter
+ * 
+ * The GeSHi class for Generic Syntax Highlighting. Please refer to the
+ * documentation at http://qbnz.com/highlighter/documentation.php for more
+ * information about how to use this class.
+ *
+ * For changes, release notes, TODOs etc, see the relevant files in the docs/
+ * directory.
+ *
+ *   This file is part of GeSHi.
+ *
+ *  GeSHi 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.
+ *
+ *  GeSHi 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 GeSHi; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ * @package   core
+ * @author    Nigel McNie <address@hidden>
+ * @copyright Copyright &copy; 2004, 2005, Nigel McNie
+ * @license   http://gnu.org/copyleft/gpl.html GNU GPL
+ * @version   $Id: geshi.php,v 1.1 2006/09/25 08:46:28 skwashd Exp $
+ *
+ */
+
+//
+// GeSHi Constants
+// You should use these constant names in your programs instead of
+// their values - you never know when a value may change in a future
+// version
+//
+
+/** The version of this GeSHi file */
+define('GESHI_VERSION', '1.0.7.14');
+
+/** Set the correct directory separator */
+define('GESHI_DIR_SEPARATOR', ('WIN' != substr(PHP_OS, 0, 3)) ? '/' : '\\');
+
+// Define the root directory for the GeSHi code tree
+if (!defined('GESHI_ROOT')) {
+    /** The root directory for GeSHi */
+    define('GESHI_ROOT', dirname(__FILE__) . GESHI_DIR_SEPARATOR);
+}
+/** The language file directory for GeSHi
+    @access private */
+define('GESHI_LANG_ROOT', GESHI_ROOT . 'geshi' . GESHI_DIR_SEPARATOR);
+
+
+// Line numbers - use with enable_line_numbers()
+/** Use no line numbers when building the result */
+define('GESHI_NO_LINE_NUMBERS', 0);
+/** Use normal line numbers when building the result */
+define('GESHI_NORMAL_LINE_NUMBERS', 1);
+/** Use fancy line numbers when building the result */
+define('GESHI_FANCY_LINE_NUMBERS', 2);
+
+// Container HTML type
+/** Use nothing to surround the source */
+define('GESHI_HEADER_NONE', 0);
+/** Use a "div" to surround the source */
+define('GESHI_HEADER_DIV', 1);
+/** Use a "pre" to surround the source */
+define('GESHI_HEADER_PRE', 2);
+
+// Capatalisation constants
+/** Lowercase keywords found */
+define('GESHI_CAPS_NO_CHANGE', 0);
+/** Uppercase keywords found */
+define('GESHI_CAPS_UPPER', 1);
+/** Leave keywords found as the case that they are */
+define('GESHI_CAPS_LOWER', 2);
+
+// Link style constants
+/** Links in the source in the :link state */
+define('GESHI_LINK', 0);
+/** Links in the source in the :hover state */
+define('GESHI_HOVER', 1);
+/** Links in the source in the :active state */
+define('GESHI_ACTIVE', 2);
+/** Links in the source in the :visited state */
+define('GESHI_VISITED', 3);
+
+// Important string starter/finisher
+// Note that if you change these, they should be as-is: i.e., don't
+// write them as if they had been run through htmlentities()
+/** The starter for important parts of the source */
+define('GESHI_START_IMPORTANT', '<BEGIN GeSHi>');
+/** The ender for important parts of the source */
+define('GESHI_END_IMPORTANT', '<END GeSHi>');
+
+/address@hidden
+ *  @access private
+ */
+// When strict mode applies for a language
+/** Strict mode never applies (this is the most common) */
+define('GESHI_NEVER', 0);
+/** Strict mode *might* apply, and can be enabled or
+    disabled by address@hidden GeSHi::enable_strict_mode()} */
+define('GESHI_MAYBE', 1);
+/** Strict mode always applies */
+define('GESHI_ALWAYS', 2);
+
+// Advanced regexp handling constants, used in language files
+/** The key of the regex array defining what to search for */
+define('GESHI_SEARCH', 0);
+/** The key of the regex array defining what bracket group in a
+    matched search to use as a replacement */
+define('GESHI_REPLACE', 1);
+/** The key of the regex array defining any modifiers to the regular 
expression */
+define('GESHI_MODIFIERS', 2);
+/** The key of the regex array defining what bracket group in a
+    matched search to put before the replacement */ 
+define('GESHI_BEFORE', 3);
+/** The key of the regex array defining what bracket group in a
+    matched search to put after the replacement */ 
+define('GESHI_AFTER', 4);
+/** The key of the regex array defining a custom keyword to use
+    for this regexp's html tag class */
+define('GESHI_CLASS', 5);
+
+/** Used in language files to mark comments */
+define('GESHI_COMMENTS', 0);
+
+// Error detection - use these to analyse faults
+/** No sourcecode to highlight was specified
+ * @deprecated
+ */
+define('GESHI_ERROR_NO_INPUT', 1);
+/** The language specified does not exist */
+define('GESHI_ERROR_NO_SUCH_LANG', 2);
+/** GeSHi could not open a file for reading (generally a language file) */
+define('GESHI_ERROR_FILE_NOT_READABLE', 3);
+/** The header type passed to address@hidden GeSHi::set_header_type()} was 
invalid */
+define('GESHI_ERROR_INVALID_HEADER_TYPE', 4);
+/** The line number type passed to address@hidden 
GeSHi::enable_line_numbers()} was invalid */
+define('GESHI_ERROR_INVALID_LINE_NUMBER_TYPE', 5);
+/address@hidden/
+
+
+/**
+ * The GeSHi Class.
+ *
+ * Please refer to the documentation for GeSHi 1.0.X that is available
+ * at http://qbnz.com/highlighter/documentation.php for more information
+ * about how to use this class.
+ * 
+ * @package   core
+ * @author    Nigel McNie <address@hidden>
+ * @copyright Copyright &copy; 2004, 2005 Nigel McNie
+ */
+class GeSHi
+{
+    /address@hidden
+     * @access private
+     */
+    /**
+     * The source code to highlight
+     * @var string
+     */
+       var $source = '';
+    
+    /**
+     * The language to use when highlighting
+     * @var string
+     */
+       var $language = '';
+    
+    /**
+     * The data for the language used
+     * @var array
+     */
+       var $language_data = array();
+    
+    /**
+     * The path to the language files
+     * @var string
+     */
+       var $language_path = GESHI_LANG_ROOT;
+    
+    /**
+     * The error message associated with an error
+     * @var string
+     * @todo check err reporting works
+     */
+       var $error = false;
+    
+    /**
+     * Possible error messages
+     * @var array
+     */
+    var $error_messages = array(
+        //GESHI_ERROR_NO_INPUT => 'No source code inputted',
+        GESHI_ERROR_NO_SUCH_LANG => 'GeSHi could not find the language 
{LANGUAGE} (using path {PATH})',
+        GESHI_ERROR_FILE_NOT_READABLE => 'The file specified for 
load_from_file was not readable',
+        GESHI_ERROR_INVALID_HEADER_TYPE => 'The header type specified is 
invalid',
+        GESHI_ERROR_INVALID_LINE_NUMBER_TYPE => 'The line number type 
specified is invalid'
+    );
+    
+    /**
+     * Whether highlighting is strict or not
+     * @var boolean
+     */
+       var $strict_mode = false;
+    
+    /**
+     * Whether to use CSS classes in output
+     * @var boolean
+     */
+       var $use_classes = false;
+    
+    /**
+     * The type of header to use. Can be one of the following
+     * values:
+     * 
+     * <ul>
+     *   <li><b>GESHI_HEADER_PRE</b>: Source is outputted in
+     *   a &lt;pre&gt; HTML element.</li>
+     *   <li><b>GESHI_HEADER_DIV</b>: Source is outputted in
+     *   a &lt;div&gt; HTML element.</li>
+     *   <li><b>GESHI_HEADER_NONE</b>: No header is outputted.</li>
+     * </ul>
+     * 
+     * @var int
+     */
+       var $header_type = GESHI_HEADER_PRE;
+    
+    /**
+     * Array of permissions for which lexics should be highlighted
+     * @var array
+     */
+       var $lexic_permissions = array(
+        'KEYWORDS' =>    array(),
+        'COMMENTS' =>    array('MULTI' => true),
+        'REGEXPS' =>     array(),
+        'ESCAPE_CHAR' => true,
+        'BRACKETS' =>    true,
+        'SYMBOLS' =>     true,
+        'STRINGS' =>     true,
+        'NUMBERS' =>     true,
+        'METHODS' =>     true,
+        'SCRIPT' =>      true
+    );
+
+    /**
+     * The time it took to parse the code
+     * @var double
+     */
+    var $time = 0;
+    
+    /**
+     * The content of the header block
+     * @var string
+     */
+       var $header_content = '';
+    
+    /**
+     * The content of the footer block
+     * @var string
+     */
+       var $footer_content = '';
+    
+    /**
+     * The style of the header block
+     * @var string
+     */
+       var $header_content_style = '';
+    
+    /**
+     * The style of the footer block
+     * @var string
+     */
+       var $footer_content_style = '';
+    
+    /**
+     * The styles for hyperlinks in the code
+     * @var array
+     */
+       var $link_styles = array();
+    
+    /**
+     * Whether important blocks should be recognised or not
+     * @var boolean
+     * @deprecated
+     * @todo REMOVE THIS FUNCTIONALITY!
+     */
+       var $enable_important_blocks = false;
+    
+    /**
+     * Styles for important parts of the code
+     * @var string
+     * @deprecated
+     * @todo As above - rethink the whole idea of important blocks as it is 
buggy and
+     * will be hard to implement in 1.2
+     */
+       var $important_styles = 'font-weight: bold; color: red;'; // Styles for 
important parts of the code
+    
+    /**
+     * Whether CSS IDs should be added to the code
+     * @var boolean
+     */
+       var $add_ids = false;
+    
+    /**
+     * Lines that should be highlighted extra
+     * @var array
+     */
+       var $highlight_extra_lines = array();
+    
+    /**
+     * Styles of extra-highlighted lines
+     * @var string
+     */
+       var $highlight_extra_lines_style = 'color: #cc0; background-color: 
#ffc;';
+    
+    /**
+     * Number at which line numbers should start at
+     * @var int
+     * @todo Warning documentation about XHTML compliance
+     */
+       var $line_numbers_start = 1;
+
+       /**
+     * The overall style for this code block
+     * @var string
+        */
+       var $overall_style = '';
+    
+    /**
+     *  The style for the actual code
+     * @var string
+     */
+       var $code_style = 'font-family: \'Courier New\', Courier, monospace; 
font-weight: normal;';
+    
+    /**
+     * The overall class for this code block
+     * @var string
+     */
+       var $overall_class = '';
+    
+    /**
+     * The overall ID for this code block
+     * @var string
+     */
+       var $overall_id = '';
+    
+       /**
+     * Line number styles
+     * @var string
+     */
+       var $line_style1 = 'font-family: \'Courier New\', Courier, monospace; 
color: black; font-weight: normal; font-style: normal;';
+    
+    /**
+     * Line number styles for fancy lines
+     * @var string
+     */
+       var $line_style2 = 'font-weight: bold;';
+    
+    /**
+     * Flag for how line nubmers are displayed
+     * @var boolean
+     */
+       var $line_numbers = GESHI_NO_LINE_NUMBERS;
+    
+    /**
+     * The "nth" value for fancy line highlighting
+     * @var int
+     */
+       var $line_nth_row = 0;
+
+       /**
+     * The size of tab stops
+     * @var int
+        */
+       var $tab_width = 8;
+        
+    /**
+     * Default target for keyword links
+     * @var string
+     */
+       var $link_target = '';
+    
+    /**
+     * The encoding to use for entity encoding
+     * @var string
+     */
+       var $encoding = 'ISO-8859-1';
+
+    /address@hidden/
+
+       /**
+        * Creates a new GeSHi object, with source and language
+     * 
+     * @param string The source code to highlight
+     * @param string The language to highlight the source with
+     * @param string The path to the language file directory. <b>This
+     *               is deprecated!</b> I've backported the auto path
+     *               detection from the 1.1.X dev branch, so now it
+     *               should be automatically set correctly. If you have
+     *               renamed the language directory however, you will
+     *               still need to set the path using this parameter or
+     *               address@hidden GeSHi::set_language_path()}
+     * @since 1.0.0
+        */
+       function GeSHi ($source, $language, $path = '')
+       {
+        $this->set_source($source);
+        $this->set_language_path($path);
+        $this->set_language($language);
+       }
+
+       /**
+        * Returns an error message associated with the last GeSHi operation,
+        * or false if no error has occured
+     * 
+     * @return string|false An error message if there has been an error, else 
false
+     * @since  1.0.0
+        */
+       function error ()
+       {
+               if ($this->error) {
+                       $msg = $this->error_messages[$this->error];
+                       $debug_tpl_vars = array(
+                               '{LANGUAGE}' => $this->language,
+                               '{PATH}' => $this->language_path
+                       );
+                       foreach ($debug_tpl_vars as $tpl => $var) {
+                               $msg = str_replace($tpl, $var, $msg);
+                       }
+                       return "<br /><strong>GeSHi Error:</strong> $msg (code 
$this->error)<br />";
+               }
+               return false;
+       }
+
+       /**
+        * Gets a human-readable language name (thanks to Simon Patterson
+        * for the idea :))
+     * 
+     * @return string The name for the current language
+     * @since  1.0.2
+        */
+       function get_language_name ()
+       {
+               if (GESHI_ERROR_NO_SUCH_LANG == $this->_error) {
+                       return $this->language_data['LANG_NAME'] . ' (Unknown 
Language)';
+               }
+               return $this->language_data['LANG_NAME'];
+       }
+
+       /**
+        * Sets the source code for this object
+     * 
+     * @param string The source code to highlight
+     * @since 1.0.0
+        */
+       function set_source ($source)
+       {
+               $this->source = $source;
+        $this->highlight_extra_lines = array();
+       }
+
+       /**
+        * Sets the language for this object
+     * 
+     * @param string The name of the language to use
+     * @since 1.0.0
+        */
+       function set_language ($language)
+       {
+        $this->error = false;
+        $this->strict_mode = GESHI_NEVER;
+        
+               $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language);
+               $this->language = strtolower($language);
+        
+        $file_name = $this->language_path . $this->language . '.php';
+        if (!is_readable($file_name)) {
+            $this->error = GESHI_ERROR_NO_SUCH_LANG;
+            return;
+        }
+               // Load the language for parsing
+               $this->load_language($file_name);
+       }
+
+       /**
+        * Sets the path to the directory containing the language files. Note
+        * that this path is relative to the directory of the script that 
included
+        * geshi.php, NOT geshi.php itself.
+     * 
+     * @param string The path to the language directory
+     * @since 1.0.0
+     * @deprecated The path to the language files should now be automatically
+     *             detected, so this method should no longer be needed. The
+     *             1.1.X branch handles manual setting of the path differently
+     *             so this method will disappear in 1.2.0.
+        */
+       function set_language_path ($path)
+       {
+        if ($path) {
+                       $this->language_path = ('/' == substr($path, 
strlen($path) - 1, 1)) ? $path : $path . '/';
+                       $this->set_language($this->language);       // 
otherwise set_language_path has no effect
+        }
+       }
+
+       /**
+        * Sets the type of header to be used.
+     * 
+     * If GESHI_HEADER_DIV is used, the code is surrounded in a "div".This
+     * means more source code but more control over tab width and 
line-wrapping.
+     * GESHI_HEADER_PRE means that a "pre" is used - less source, but less
+     * control. Default is GESHI_HEADER_PRE.
+     * 
+     * From 1.0.7.2, you can use GESHI_HEADER_NONE to specify that no header 
code
+     * should be outputted.
+     * 
+     * @param int The type of header to be used
+     * @since 1.0.0
+        */
+       function set_header_type ($type)
+       {
+        if (GESHI_HEADER_DIV != $type && GESHI_HEADER_PRE != $type && 
GESHI_HEADER_NONE != $type) {
+            $this->error = GESHI_ERROR_INVALID_HEADER_TYPE;
+            return;
+        }
+               $this->header_type = $type;
+        // Set a default overall style if the header is a <div>
+        if (GESHI_HEADER_DIV == $type && !$this->overall_style) {
+            $this->overall_style = 'font-family: monospace;';
+        }
+       }
+
+       /**
+        * Sets the styles for the code that will be outputted
+        * when this object is parsed. The style should be a
+        * string of valid stylesheet declarations
+     * 
+     * @param string  The overall style for the outputted code block
+     * @param boolean Whether to merge the styles with the current styles or 
not
+     * @since 1.0.0
+        */
+       function set_overall_style ($style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->overall_style = $style;
+               } else {
+                       $this->overall_style .= $style;
+               }
+       }
+
+       /**
+        * Sets the overall classname for this block of code. This
+        * class can then be used in a stylesheet to style this object's
+        * output
+     * 
+     * @param string The class name to use for this block of code
+     * @since 1.0.0
+        */
+       function set_overall_class ($class)
+       {
+               $this->overall_class = $class;
+       }
+
+       /**
+        * Sets the overall id for this block of code. This id can then
+        * be used in a stylesheet to style this object's output
+     * 
+     * @param string The ID to use for this block of code
+     * @since 1.0.0
+        */
+       function set_overall_id ($id)
+       {
+        $this->overall_id = $id;
+       }
+
+       /**
+     * Sets whether CSS classes should be used to highlight the source. Default
+     * is off, calling this method with no arguments will turn it on
+     * 
+     * @param boolean Whether to turn classes on or not
+     * @since 1.0.0
+     */
+       function enable_classes ($flag = true)
+       {
+               $this->use_classes = ($flag) ? true : false;
+       }
+
+       /**
+        * Sets the style for the actual code. This should be a string
+        * containing valid stylesheet declarations. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+        *
+        * Note: Use this method to override any style changes you made to
+        * the line numbers if you are using line numbers, else the line of
+        * code will have the same style as the line number! Consult the
+        * GeSHi documentation for more information about this.
+     * 
+     * @param string  The style to use for actual code
+     * @param boolean Whether to merge the current styles with the new styles
+        */
+       function set_code_style ($style, $preserve_defaults = false)
+       {
+        if (!$preserve_defaults) {
+            $this->code_style = $style;
+        } else {
+            $this->code_style .= $style;
+        }
+    }
+
+       /**
+        * Sets the styles for the line numbers.
+     * 
+     * @param string The style for the line numbers that are "normal"
+     * @param string|boolean If a string, this is the style of the line
+     *        numbers that are "fancy", otherwise if boolean then this
+     *        defines whether the normal styles should be merged with the
+     *        new normal styles or not
+     * @param boolean If set, is the flag for whether to merge the "fancy"
+     *        styles with the current styles or not
+     * @since 1.0.2
+        */
+       function set_line_style ($style1, $style2 = '', $preserve_defaults = 
false)
+       {
+               if (is_bool($style2)) {
+                       $preserve_defaults = $style2;
+                       $style2 = '';
+               }
+               if (!$preserve_defaults) {
+                       $this->line_style1 = $style1;
+                       $this->line_style2 = $style2;
+               } else {
+                       $this->line_style1 .= $style1;
+                       $this->line_style2 .= $style2;
+               }
+       }
+
+       /**
+        * Sets whether line numbers should be displayed.
+     * 
+     * Valid values for the first parameter are:
+     * 
+     * <ul>
+     *   <li><b>GESHI_NO_LINE_NUMBERS</b>: Line numbers will not be 
displayed</li>
+        *   <li><b>GESHI_NORMAL_LINE_NUMBERS</b>: Line numbers will be 
displayed</li>
+     *   <li><b>GESHI_FANCY_LINE_NUMBERS</b>: Fancy line numbers will be 
displayed</li>
+     * </ul>
+     * 
+     * For fancy line numbers, the second parameter is used to signal which 
lines
+     * are to be fancy. For example, if the value of this parameter is 5 then 
every
+     * 5th line will be fancy.
+     * 
+     * @param int How line numbers should be displayed
+     * @param int Defines which lines are fancy
+     * @since 1.0.0
+        */
+       function enable_line_numbers ($flag, $nth_row = 5)
+       {
+        if (GESHI_NO_LINE_NUMBERS != $flag && GESHI_NORMAL_LINE_NUMBERS != 
$flag
+            && GESHI_FANCY_LINE_NUMBERS != $flag) {
+            $this->error = GESHI_ERROR_INVALID_LINE_NUMBER_TYPE;
+        }
+               $this->line_numbers = $flag;
+               $this->line_nth_row = $nth_row;
+       }
+
+       /**
+        * Sets the style for a keyword group. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param int     The key of the keyword group to change the styles of
+     * @param string  The style to make the keywords
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_keyword_group_style ($key, $style, $preserve_defaults = 
false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['KEYWORDS'][$key] = 
$style;
+               } else {
+                       $this->language_data['STYLES']['KEYWORDS'][$key] .= 
$style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for a keyword group
+     * 
+     * @param int     The key of the keyword group to turn on or off
+     * @param boolean Whether to turn highlighting for that group on or off
+     * @since 1.0.0
+        */
+       function set_keyword_group_highlighting ( $key, $flag = true )
+       {
+               $this->lexic_permissions['KEYWORDS'][$key] = ($flag) ? true : 
false;
+       }
+
+       /**
+        * Sets the styles for comment groups.  If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param int     The key of the comment group to change the styles of
+     * @param string  The style to make the comments
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_comments_style ($key, $style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['COMMENTS'][$key] = 
$style;
+               } else {
+                       $this->language_data['STYLES']['COMMENTS'][$key] .= 
$style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for comment groups
+     * 
+     * @param int     The key of the comment group to turn on or off
+     * @param boolean Whether to turn highlighting for that group on or off
+     * @since 1.0.0
+        */
+       function set_comments_highlighting ($key, $flag = true)
+       {
+               $this->lexic_permissions['COMMENTS'][$key] = ($flag) ? true : 
false;
+       }
+
+       /**
+        * Sets the styles for escaped characters. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param string  The style to make the escape characters
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_escape_characters_style ($style, $preserve_defaults = 
false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['ESCAPE_CHAR'][0] = 
$style;
+               } else {
+                       $this->language_data['STYLES']['ESCAPE_CHAR'][0] .= 
$style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for escaped characters
+     * 
+     * @param boolean Whether to turn highlighting for escape characters on or 
off
+     * @since 1.0.0
+        */
+       function set_escape_characters_highlighting ($flag = true)
+       {
+               $this->lexic_permissions['ESCAPE_CHAR'] = ($flag) ? true : 
false;
+       }
+
+       /**
+        * Sets the styles for brackets. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+        *
+        * This method is DEPRECATED: use set_symbols_style instead.
+        * This method will be removed in 1.2.X
+     * 
+     * @param string  The style to make the brackets
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+     * @deprecated In favour of set_symbols_style
+        */
+       function set_brackets_style ($style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['BRACKETS'][0] = $style;
+               } else {
+                       $this->language_data['STYLES']['BRACKETS'][0] .= $style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for brackets
+        *
+        * This method is DEPRECATED: use set_symbols_highlighting instead.
+        * This method will be remove in 1.2.X
+     * 
+     * @param boolean Whether to turn highlighting for brackets on or off
+     * @since 1.0.0
+     * @deprecated In favour of set_symbols_highlighting
+        */
+       function set_brackets_highlighting ($flag)
+       {
+               $this->lexic_permissions['BRACKETS'] = ($flag) ? true : false;
+       }
+
+       /**
+        * Sets the styles for symbols. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param string  The style to make the symbols
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.1
+        */
+       function set_symbols_style ($style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['SYMBOLS'][0] = $style;
+               } else {
+                       $this->language_data['STYLES']['SYMBOLS'][0] .= $style;
+               }
+               // For backward compatibility
+               $this->set_brackets_style ($style, $preserve_defaults);
+       }
+
+       /**
+        * Turns highlighting on/off for symbols
+     * 
+     * @param boolean Whether to turn highlighting for symbols on or off
+     * @since 1.0.0
+        */
+       function set_symbols_highlighting ($flag)
+       {
+               $this->lexic_permissions['SYMBOLS'] = ($flag) ? true : false;
+               // For backward compatibility
+               $this->set_brackets_highlighting ($flag);
+       }
+
+       /**
+        * Sets the styles for strings. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param string  The style to make the escape characters
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_strings_style ($style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['STRINGS'][0] = $style;
+               } else {
+                       $this->language_data['STYLES']['STRINGS'][0] .= $style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for strings
+     * 
+     * @param boolean Whether to turn highlighting for strings on or off
+     * @since 1.0.0
+        */
+       function set_strings_highlighting ($flag)
+       {
+               $this->lexic_permissions['STRINGS'] = ($flag) ? true : false;
+       }
+
+       /**
+        * Sets the styles for numbers. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param string  The style to make the numbers
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_numbers_style ($style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['NUMBERS'][0] = $style;
+               } else {
+                       $this->language_data['STYLES']['NUMBERS'][0] .= $style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for numbers
+     * 
+     * @param boolean Whether to turn highlighting for numbers on or off
+     * @since 1.0.0
+        */
+       function set_numbers_highlighting ($flag)
+       {
+               $this->lexic_permissions['NUMBERS'] = ($flag) ? true : false;
+       }
+
+       /**
+        * Sets the styles for methods. $key is a number that references the
+        * appropriate "object splitter" - see the language file for the 
language
+        * you are highlighting to get this number. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param int     The key of the object splitter to change the styles of
+     * @param string  The style to make the methods
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_methods_style ($key, $style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['METHODS'][$key] = 
$style;
+               } else {
+                       $this->language_data['STYLES']['METHODS'][$key] .= 
$style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for methods
+     * 
+     * @param boolean Whether to turn highlighting for methods on or off
+     * @since 1.0.0
+        */
+       function set_methods_highlighting ($flag)
+       {
+               $this->lexic_permissions['METHODS'] = ($flag) ? true : false;
+       }
+
+       /**
+        * Sets the styles for regexps. If $preserve_defaults is
+        * true, then styles are merged with the default styles, with the
+        * user defined styles having priority
+     * 
+     * @param string  The style to make the regular expression matches
+     * @param boolean Whether to merge the new styles with the old or just
+     *                to overwrite them
+     * @since 1.0.0
+        */
+       function set_regexps_style ($key, $style, $preserve_defaults = false)
+       {
+               if (!$preserve_defaults) {
+                       $this->language_data['STYLES']['REGEXPS'][$key] = 
$style;
+               } else {
+                       $this->language_data['STYLES']['REGEXPS'][$key] .= 
$style;
+               }
+       }
+
+       /**
+        * Turns highlighting on/off for regexps
+     * 
+     * @param int     The key of the regular expression group to turn on or off
+     * @param boolean Whether to turn highlighting for the regular expression 
group on or off
+     * @since 1.0.0
+        */
+       function set_regexps_highlighting ($key, $flag)
+       {
+               $this->lexic_permissions['REGEXPS'][$key] = ($flag) ? true : 
false;
+       }
+
+       /**
+        * Sets whether a set of keywords are checked for in a case sensitive 
manner
+     * 
+     * @param int The key of the keyword group to change the case sensitivity 
of
+     * @param boolean Whether to check in a case sensitive manner or not
+     * @since 1.0.0
+        */
+       function set_case_sensitivity ($key, $case)
+       {
+               $this->language_data['CASE_SENSITIVE'][$key] = ($case) ? true : 
false;
+       }
+
+       /**
+        * Sets the case that keywords should use when found. Use the constants:
+     * 
+     * <ul>
+        *   <li><b>GESHI_CAPS_NO_CHANGE</b>: leave keywords as-is</li>
+        *   <li><b>GESHI_CAPS_UPPER</b>: convert all keywords to uppercase 
where found</li>
+        *   <li><b>GESHI_CAPS_LOWER</b>: convert all keywords to lowercase 
where found</li>
+     * </ul>
+     * 
+     * @param int A constant specifying what to do with matched keywords
+     * @since 1.0.1
+     * @todo  Error check the passed value
+        */
+       function set_case_keywords ($case)
+       {
+               $this->language_data['CASE_KEYWORDS'] = $case;
+       }
+
+       /**
+        * Sets how many spaces a tab is substituted for
+     * 
+     * Widths below zero are ignored
+     * 
+     * @param int The tab width
+     * @since 1.0.0
+        */
+       function set_tab_width ($width)
+       {
+               $this->tab_width = intval($width);
+       }
+
+       /**
+        * Enables/disables strict highlighting. Default is off, calling this
+        * method without parameters will turn it on. See documentation
+        * for more details on strict mode and where to use it.
+     * 
+     * @param boolean Whether to enable strict mode or not
+     * @since 1.0.0
+        */
+       function enable_strict_mode ($mode = true)
+       {
+        if (GESHI_MAYBE == $this->language_data['STRICT_MODE_APPLIES']) {
+                 $this->strict_mode = ($mode) ? true : false;
+        }
+       }
+
+       /**
+        * Disables all highlighting
+     * 
+     * @since 1.0.0
+     * @todo Rewrite with an array traversal
+        */
+       function disable_highlighting ()
+       {
+        foreach ($this->lexic_permissions as $key => $value) {
+            if (is_array($value)) {
+                foreach ($value as $k => $v) {
+                    $this->lexic_permissions[$key][$k] = false;
+                }
+            } else {
+                $this->lexic_permissions[$key] = false;
+            }
+        }
+               // Context blocks
+               $this->enable_important_blocks = false;
+       }
+
+       /**
+        * Enables all highlighting
+     * 
+     * @since 1.0.0
+     * @todo  Rewrite with array traversal
+        */
+       function enable_highlighting ()
+       {
+        foreach ($this->lexic_permissions as $key => $value) {
+            if (is_array($value)) {
+                foreach ($value as $k => $v) {
+                    $this->lexic_permissions[$key][$k] = true;
+                }
+            } else {
+                $this->lexic_permissions[$key] = true;
+            }
+        }
+               // Context blocks
+               $this->enable_important_blocks = true;
+       }
+
+       /**
+        * Given a file extension, this method returns either a valid geshi 
language
+        * name, or the empty string if it couldn't be found
+     * 
+     * @param string The extension to get a language name for
+     * @param array  A lookup array to use instead of the default
+     * @since 1.0.5
+     * @todo Re-think about how this method works (maybe make it private 
and/or make it
+     *       a extension->lang lookup?)
+     * @todo static?
+        */
+       function get_language_name_from_extension ( $extension, $lookup = 
array() )
+       {
+               if ( !$lookup )
+               {
+                       $lookup = array(
+                               'actionscript' => array('as'),
+                               'ada' => array('a', 'ada', 'adb', 'ads'),
+                               'apache' => array('conf'),
+                               'asm' => array('ash', 'asm'),
+                               'asp' => array('asp'),
+                               'bash' => array('sh'),
+                               'c' => array('c'),
+                               'c_mac' => array('c'),
+                               'caddcl' => array(),
+                               'cadlisp' => array(),
+                'cdfg' => array('cdfg'),
+                               'cpp' => array('cpp'),
+                               'csharp' => array(),
+                               'css' => array('css'),
+                               'delphi' => array('dpk', 'dpr'),
+                               'html4strict' => array('html', 'htm'),
+                               'java' => array('java'),
+                               'javascript' => array('js'),
+                               'lisp' => array('lisp'),
+                               'lua' => array('lua'),
+                               'mpasm' => array(),
+                               'nsis' => array(),
+                               'objc' => array(),
+                               'oobas' => array(),
+                               'oracle8' => array(),
+                               'pascal' => array('pas'),
+                               'perl' => array('pl', 'pm'),
+                               'php' => array('php', 'php5', 'phtml', 'phps'),
+                               'python' => array('py'),
+                               'qbasic' => array('bi'),
+                'sas' => array('sas'),
+                               'smarty' => array(),
+                               'vb' => array('bas'),
+                               'vbnet' => array(),
+                               'visualfoxpro' => array(),
+                               'xml' => array('xml')
+                       );
+               }
+
+               foreach ($lookup as $lang => $extensions) {
+                       foreach ($extensions as $ext) {
+                               if ($ext == $extension) {
+                                       return $lang;
+                               }
+                       }
+               }
+               return '';
+       }
+
+       /**
+        * Given a file name, this method loads its contents in, and attempts
+        * to set the language automatically. An optional lookup table can be
+        * passed for looking up the language name. If not specified a default
+     * table is used
+        *
+        * The language table is in the form
+        * <pre>array(
+        *   'lang_name' => array('extension', 'extension', ...),
+        *   'lang_name' ...
+        * );</pre>
+     * 
+     * @todo Complete rethink of this and above method
+     * @since 1.0.5
+        */
+       function load_from_file ($file_name, $lookup = array())
+       {
+               if (is_readable($file_name)) {
+                       $this->set_source(implode('', file($file_name)));
+                       
$this->set_language($this->get_language_name_from_extension(substr(strrchr($file_name,
 '.'), 1), $lookup));
+               } else {
+                       $this->error = GESHI_ERROR_FILE_NOT_READABLE;
+               }
+       }
+
+       /**
+        * Adds a keyword to a keyword group for highlighting
+     * 
+     * @param int    The key of the keyword group to add the keyword to
+     * @param string The word to add to the keyword group
+     * @since 1.0.0 
+        */
+       function add_keyword ($key, $word)
+       {
+               $this->language_data['KEYWORDS'][$key][] = $word;
+       }
+
+       /**
+        * Removes a keyword from a keyword group
+     * 
+     * @param int    The key of the keyword group to remove the keyword from
+     * @param string The word to remove from the keyword group
+     * @since 1.0.0 
+        */
+       function remove_keyword ($key, $word)
+       {
+               $this->language_data['KEYWORDS'][$key] =
+            array_diff($this->language_data['KEYWORDS'][$key], array($word));
+       }
+
+       /**
+        * Creates a new keyword group
+     * 
+     * @param int    The key of the keyword group to create
+     * @param string The styles for the keyword group
+     * @param boolean Whether the keyword group is case sensitive ornot
+     * @param array  The words to use for the keyword group
+     * @since 1.0.0 
+        */
+       function add_keyword_group ( $key, $styles, $case_sensitive = true, 
$words = array() )
+       {
+        $words = (array) $words;
+               $this->language_data['KEYWORDS'][$key] = $words;
+               $this->lexic_permissions['KEYWORDS'][$key] = true;
+               $this->language_data['CASE_SENSITIVE'][$key] = $case_sensitive;
+               $this->language_data['STYLES']['KEYWORDS'][$key] = $styles;
+       }
+
+       /**
+        * Removes a keyword group
+     * 
+     * @param int    The key of the keyword group to remove
+     * @since 1.0.0 
+        */
+       function remove_keyword_group ($key)
+       {
+               unset($this->language_data['KEYWORDS'][$key]);
+               unset($this->lexic_permissions['KEYWORDS'][$key]);
+               unset($this->language_data['CASE_SENSITIVE'][$key]);
+               unset($this->language_data['STYLES']['KEYWORDS'][$key]);
+       }
+
+       /**
+        * Sets the content of the header block
+     * 
+     * @param string The content of the header block
+     * @since 1.0.2
+        */
+       function set_header_content ($content)
+       {
+               $this->header_content = $content;
+       }
+
+       /**
+        * Sets the content of the footer block
+     * 
+     * @param string The content of the footer block
+     * @since 1.0.2
+        */
+       function set_footer_content ($content)
+       {
+               $this->footer_content = $content;
+       }
+
+       /**
+        * Sets the style for the header content
+     * 
+     * @param string The style for the header content
+     * @since 1.0.2
+        */
+       function set_header_content_style ($style)
+       {
+               $this->header_content_style = $style;
+       }
+
+       /**
+        * Sets the style for the footer content
+     * 
+     * @param string The style for the footer content
+     * @since 1.0.2
+        */
+       function set_footer_content_style ($style)
+       {
+               $this->footer_content_style = $style;
+       }
+
+       /**
+        * Sets the base URL to be used for keywords
+     * 
+     * @param int The key of the keyword group to set the URL for
+     * @param string The URL to set for the group. If {FNAME} is in
+     *               the url somewhere, it is replaced by the keyword
+     *               that the URL is being made for
+     * @since 1.0.2
+        */
+       function set_url_for_keyword_group ($group, $url)
+       {
+               $this->language_data['URLS'][$group] = $url;
+       }
+
+       /**
+        * Sets styles for links in code
+     * 
+     * @param int A constant that specifies what state the style is being
+     *            set for - e.g. :hover or :visited
+     * @param string The styles to use for that state
+     * @since 1.0.2
+        */
+       function set_link_styles ($type, $styles)
+       {
+               $this->link_styles[$type] = $styles;
+       }
+
+       /**
+     * Sets the target for links in code
+     * 
+     * @param string The target for links in the code, e.g. _blank
+     * @since 1.0.3
+     */
+       function set_link_target ( $target )
+       {
+               if (!$target) {
+                       $this->link_target = '';
+               } else {
+                       $this->link_target = ' target="' . $target . '" ';
+               }
+       }
+
+       /**
+        * Sets styles for important parts of the code
+     * 
+     * @param string The styles to use on important parts of the code
+     * @since 1.0.2
+        */
+       function set_important_styles ($styles)
+       {
+               $this->important_styles = $styles;
+       }
+
+       /**
+        * Sets whether context-important blocks are highlighted
+     * 
+     * @todo REMOVE THIS SHIZ FROM GESHI!
+     * @deprecated
+        */
+       function enable_important_blocks ( $flag )
+       {
+               $this->enable_important_blocks = ( $flag ) ? true : false;
+       }
+
+       /**
+        * Whether CSS IDs should be added to each line
+     * 
+     * @param boolean If true, IDs will be added to each line.
+     * @since 1.0.2
+        */
+       function enable_ids ($flag = true)
+       {
+               $this->add_ids = ($flag) ? true : false;
+       }
+
+       /**
+        * Specifies which lines to highlight extra
+     * 
+     * @param mixed An array of line numbers to highlight, or just a line
+     *              number on its own.
+     * @since 1.0.2
+     * @todo  Some data replication here that could be cut down on
+        */
+       function highlight_lines_extra ($lines)
+       {
+               if (is_array($lines)) {
+                       foreach ($lines as $line) {
+                               $this->highlight_extra_lines[intval($line)] = 
intval($line);
+                       }
+               } else {
+                       $this->highlight_extra_lines[intval($lines)] = 
intval($lines);
+               }
+       }
+
+       /**
+        * Sets the style for extra-highlighted lines
+     * 
+     * @param string The style for extra-highlighted lines
+     * @since 1.0.2
+        */
+       function set_highlight_lines_extra_style ($styles)
+       {
+               $this->highlight_extra_lines_style = $styles;
+       }
+
+       /**
+        * Sets what number line numbers should start at. Should
+        * be a positive integer, and will be converted to one.
+     * 
+     * <b>Warning:</b> Using this method will add the "start"
+     * attribute to the &lt;ol&gt; that is used for line numbering.
+     * This is <b>not</b> valid XHTML strict, so if that's what you
+     * care about then don't use this method. Firefox is getting
+     * support for the CSS method of doing this in 1.1 and Opera
+     * has support for the CSS method, but (of course) IE doesn't
+     * so it's not worth doing it the CSS way yet.
+     * 
+     * @param int The number to start line numbers at
+     * @since 1.0.2
+        */
+       function start_line_numbers_at ($number)
+       {
+               $this->line_numbers_start = abs(intval($number));
+       }
+
+       /**
+        * Sets the encoding used for htmlspecialchars(), for international
+        * support.
+     * 
+     * @param string The encoding to use for the source
+     * @since 1.0.3
+        */
+       function set_encoding ($encoding)
+       {
+        if ($encoding) {
+                 $this->encoding = $encoding;
+        }
+       }
+
+       /**
+        * Returns the code in $this->source, highlighted and surrounded by the
+        * nessecary HTML.
+     * 
+     * This should only be called ONCE, cos it's SLOW! If you want to highlight
+     * the same source multiple times, you're better off doing a whole lot of
+     * str_replaces to replace the &lt;span&gt;s
+     * 
+     * @since 1.0.0
+        */
+       function parse_code ()
+       {
+               // Start the timer
+               $start_time = microtime();
+
+               // Firstly, if there is an error, we won't highlight
+               if ($this->error) {
+            $result = @htmlspecialchars($this->source, ENT_COMPAT, 
$this->encoding);
+                       // Timing is irrelevant
+                       $this->set_time($start_time, $start_time);
+                       return $this->finalise($result);
+               }
+
+               // Replace all newlines to a common form.
+               $code = str_replace("\r\n", "\n", $this->source);
+               $code = str_replace("\r", "\n", $code);
+        // Add spaces for regular expression matching and line numbers
+        $code = "\n" . $code . "\n";
+
+               // Initialise various stuff
+               $length           = strlen($code);
+               $STRING_OPEN      = '';
+               $CLOSE_STRING     = false;
+               $ESCAPE_CHAR_OPEN = false;
+               $COMMENT_MATCHED  = false;
+               // Turn highlighting on if strict mode doesn't apply to this 
language
+               $HIGHLIGHTING_ON  = ( !$this->strict_mode ) ? true : '';
+               // Whether to highlight inside a block of code
+               $HIGHLIGHT_INSIDE_STRICT = false;
+               $HARDQUOTE_OPEN = false;
+               $stuff_to_parse   = '';
+               $result           = '';
+
+               // "Important" selections are handled like multiline comments
+        // @todo GET RID OF THIS SHIZ
+               if ($this->enable_important_blocks) {
+                       
$this->language_data['COMMENT_MULTI'][GESHI_START_IMPORTANT] = 
GESHI_END_IMPORTANT;
+               }
+
+               if ($this->strict_mode) {
+                       // Break the source into bits. Each bit will be a 
portion of the code
+                       // within script delimiters - for example, HTML between 
< and >
+                       $parts = array(0 => array(0 => ''));
+                       $k = 0;
+                       for ($i = 0; $i < $length; $i++) {
+                               $char = substr($code, $i, 1);
+                               if (!$HIGHLIGHTING_ON) {
+                                       foreach 
($this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters) {
+                                               foreach ($delimiters as $open 
=> $close) {
+                                                       // Get the next little 
bit for this opening string
+                                                       $check = substr($code, 
$i, strlen($open));
+                                                       // If it matches...
+                                                       if ($check == $open) {
+                                                               // We start a 
new block with the highlightable
+                                                               // code in it
+                                                               
$HIGHLIGHTING_ON = $open;
+                                                               $i += 
strlen($open) - 1;
+                                                               $char = $open;
+                                                               $parts[++$k][0] 
= $char;
+
+                                                               // No point 
going around again...
+                                                               break(2);
+                                                       }
+                                               }
+                                       }
+                               } else {
+                                       foreach 
($this->language_data['SCRIPT_DELIMITERS'] as $key => $delimiters) {
+                                               foreach ($delimiters as $open 
=> $close) {
+                                                       if ($open == 
$HIGHLIGHTING_ON) {
+                                                               // Found the 
closing tag
+                                                               break(2);
+                                                       }
+                                               }
+                                       }
+                                       // We check code from our current 
position BACKWARDS. This is so
+                                       // the ending string for highlighting 
can be included in the block
+                                       $check = substr($code, $i - 
strlen($close) + 1, strlen($close));
+                                       if ($check == $close) {
+                                               $HIGHLIGHTING_ON = '';
+                                               // Add the string to the rest 
of the string for this part
+                                               $parts[$k][1] = ( 
isset($parts[$k][1]) ) ? $parts[$k][1] . $char : $char;
+                                               $parts[++$k][0] = '';
+                                               $char = '';
+                                       }
+                               }
+                               $parts[$k][1] = ( isset($parts[$k][1]) ) ? 
$parts[$k][1] . $char : $char;
+                       }
+                       $HIGHLIGHTING_ON = '';
+               } else {
+                       // Not strict mode - simply dump the source into
+                       // the array at index 1 (the first highlightable block)
+                       $parts = array(
+                               1 => array(
+                                       0 => '',
+                                       1 => $code
+                               )
+                       );
+               }
+
+               // Now we go through each part. We know that even-indexed parts 
are
+               // code that shouldn't be highlighted, and odd-indexed parts 
should
+               // be highlighted
+               foreach ($parts as $key => $data) {
+                       $part = $data[1];
+                       // If this block should be highlighted...
+                       if ($key % 2) {
+                               if ($this->strict_mode) {
+                                       // Find the class key for this block of 
code
+                                       foreach 
($this->language_data['SCRIPT_DELIMITERS'] as $script_key => $script_data) {
+                                               foreach ($script_data as $open 
=> $close) {
+                                                       if ($data[0] == $open) {
+                                                               break(2);
+                                                       }
+                                               }
+                                       }
+
+                                       if 
($this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&
+                        $this->lexic_permissions['SCRIPT']) {
+                                               // Add a span element around 
the source to
+                                               // highlight the overall source 
block
+                                               if (!$this->use_classes &&
+                            
$this->language_data['STYLES']['SCRIPT'][$script_key] != '') {
+                                                       $attributes = ' 
style="' . $this->language_data['STYLES']['SCRIPT'][$script_key] . '"';
+                                               } else {
+                                                       $attributes = ' 
class="sc' . $script_key . '"';
+                                               }
+                                               $result .= "<span$attributes>";
+                                       }
+                               }
+
+                               if (!$this->strict_mode || 
$this->language_data['HIGHLIGHT_STRICT_BLOCK'][$script_key]) {
+                                       // Now, highlight the code in this 
block. This code
+                                       // is really the engine of GeSHi (along 
with the method
+                                       // parse_non_string_part).
+                                       $length = strlen($part);
+                                       for ($i = 0; $i < $length; $i++) {
+                                               // Get the next char
+                                               $char = substr($part, $i, 1);
+                                       $hq = 
isset($this->language_data['HARDQUOTE']) ? $this->language_data['HARDQUOTE'][0] 
: false;
+                                               // Is this char the newline and 
line numbers being used?
+                                               if (($this->line_numbers != 
GESHI_NO_LINE_NUMBERS
+                            || count($this->highlight_extra_lines) > 0)
+                            && $char == "\n") {
+                                                       // If so, is there a 
string open? If there is, we should end it before
+                                                       // the newline and 
begin it again (so when <li>s are put in the source
+                                                       // remains XHTML 
compliant)
+                                                       // note to self: This 
opens up possibility of config files specifying
+                                                       // that languages 
can/cannot have multiline strings???
+                                                       if ($STRING_OPEN) {
+                                                               if 
(!$this->use_classes) {
+                                                                       
$attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+                                                               } else {
+                                                                       
$attributes = ' class="st0"';
+                                                               }
+                                                               $char = 
'</span>' . $char . "<span$attributes>";
+                                                       }
+                                               } elseif ($char == 
$STRING_OPEN) {
+                            // A match of a string delimiter
+                                                       if 
(($this->lexic_permissions['ESCAPE_CHAR'] && $ESCAPE_CHAR_OPEN) ||
+                                ($this->lexic_permissions['STRINGS'] && 
!$ESCAPE_CHAR_OPEN)) {
+                                                               $char = 
htmlspecialchars($char, ENT_COMPAT, $this->encoding) . '</span>';
+                                                       }
+                                                   $escape_me = false;
+                                               if ($HARDQUOTE_OPEN)
+                                               {
+                                                       if ($ESCAPE_CHAR_OPEN)
+                                                               $escape_me = 
true;
+                                                       else {
+                                                               foreach 
($this->language_data['HARDESCAPE'] as $hardesc)
+                                                               if 
(substr($part, $i, strlen($hardesc)) == $hardesc)
+                                                               {
+                                                                       
$escape_me = true;
+                                                                       break;
+                                                               }
+                                                           }
+                                                   }
+                                                       if (!$ESCAPE_CHAR_OPEN) 
{
+                                                               $STRING_OPEN = 
'';
+                                                               $CLOSE_STRING = 
true;
+                                                       }
+                                                   if (!$escape_me) {
+                                                       $HARDQUOTE_OPEN = false;
+                                                   }
+                                                       $ESCAPE_CHAR_OPEN = 
false;
+                                               } elseif (in_array($char, 
$this->language_data['QUOTEMARKS']) &&
+                            ($STRING_OPEN == '') && 
$this->lexic_permissions['STRINGS']) {
+                            // The start of a new string
+                                                       $STRING_OPEN = $char;
+                                                       if 
(!$this->use_classes) {
+                                                               $attributes = ' 
style="' . $this->language_data['STYLES']['STRINGS'][0] . '"';
+                                                       } else {
+                                                               $attributes = ' 
class="st0"';
+                                                       }
+                                                       $char = 
"<span$attributes>" . htmlspecialchars($char, ENT_COMPAT, $this->encoding);
+
+                                                       $result .= 
$this->parse_non_string_part( $stuff_to_parse );
+                                                       $stuff_to_parse = '';
+                                   } elseif (
+                                       $hq &&
+                                       substr($part, $i, strlen($hq)) == $hq &&
+                                       ($STRING_OPEN == '') && 
$this->lexic_permissions['STRINGS']
+                                   )
+                                   {
+                                       // The start of a hard quoted string
+                                       $STRING_OPEN = 
$this->language_data['HARDQUOTE'][1];
+                                       if (!$this->use_classes) {
+                                           $attributes = ' style="' . 
$this->language_data['STYLES']['STRINGS'][0] . '"';
+                                       } else {
+                                           $attributes = ' class="st0"';
+                                       }
+                                       $char = "<span$attributes>" . $hq;
+                                       $i += strlen($hq) - 1;
+                                       $HARDQUOTE_OPEN = true;
+                                       $result .= 
$this->parse_non_string_part( $stuff_to_parse );
+                                       $stuff_to_parse = '';
+                                   } elseif ($char == 
$this->language_data['ESCAPE_CHAR'] && $STRING_OPEN != '')
+                                   {
+                            // An escape character
+                                                       if (!$ESCAPE_CHAR_OPEN) 
{
+                                                       $ESCAPE_CHAR_OPEN = 
!$HARDQUOTE_OPEN;  // true unless $HARDQUOTE_OPEN
+                                                       if ($HARDQUOTE_OPEN)
+                                                               foreach 
($this->language_data['HARDESCAPE'] as $hard)
+                                                               {
+                                                                       if 
(substr($part, $i, strlen($hard)) == $hard)
+                                                                       {
+                                                               
$ESCAPE_CHAR_OPEN = true;
+                                                                               
break;
+                                                                       }
+                                                               }
+                                                       if ($ESCAPE_CHAR_OPEN 
&& $this->lexic_permissions['ESCAPE_CHAR']) {
+                                                                       if 
(!$this->use_classes) {
+                                                                               
$attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR'][0] . 
'"';
+                                                                       } else {
+                                                                               
$attributes = ' class="es0"';
+                                                                       }
+                                                                       $char = 
"<span$attributes>" . $char;
+                                    if (substr($code, $i + 1, 1) == "\n") {
+                                        // escaping a newline, what's the 
point in putting the span around
+                                        // the newline? It only causes hassles 
when inserting line numbers
+                                        $char .= '</span>';
+                                        $ESCAPE_CHAR_OPEN = false;
+                                    }
+                                                               }
+                                                       } else {
+                                                               
$ESCAPE_CHAR_OPEN = false;
+                                                               if 
($this->lexic_permissions['ESCAPE_CHAR']) {
+                                                                       $char 
.= '</span>';
+                                                               }
+                                                       }
+                                               } elseif ($ESCAPE_CHAR_OPEN) {
+                                                       if 
($this->lexic_permissions['ESCAPE_CHAR']) {
+                                                               $char .= 
'</span>';
+                                                       }
+                                                       $ESCAPE_CHAR_OPEN = 
false;
+                                                       $test_str = $char;
+                                               } elseif ($STRING_OPEN == '') {
+                                                       // Is this a multiline 
comment?
+                                                       foreach 
($this->language_data['COMMENT_MULTI'] as $open => $close) {
+                                                               $com_len = 
strlen($open);
+                                                               $test_str = 
substr( $part, $i, $com_len );
+                                                               $test_str_match 
= $test_str;
+                                                               if ($open == 
$test_str) {
+                                                                       
$COMMENT_MATCHED = true;
+                                    //@todo If remove important do remove here
+                                                                       if 
($this->lexic_permissions['COMMENTS']['MULTI'] ||
+                                        $test_str == GESHI_START_IMPORTANT) {
+                                                                               
if ($test_str != GESHI_START_IMPORTANT) {
+                                                                               
        if (!$this->use_classes) {
+                                                                               
                $attributes = ' style="' . 
$this->language_data['STYLES']['COMMENTS']['MULTI'] . '"';
+                                                                               
        } else {
+                                                                               
                $attributes = ' class="coMULTI"';
+                                                                               
        }
+                                                                               
        $test_str = "<span$attributes>" . @htmlspecialchars($test_str, 
ENT_COMPAT, $this->encoding);
+                                                                               
} else {
+                                                                               
        if (!$this->use_classes) {
+                                                                               
                $attributes = ' style="' . $this->important_styles . '"';
+                                                                               
        } else {
+                                                                               
                $attributes = ' class="imp"';
+                                                                               
        }
+                                                                               
        // We don't include the start of the comment if it's an
+                                                                               
        // "important" part
+                                                                               
        $test_str = "<span$attributes>";
+                                                                               
}
+                                                                       } else {
+                                                                               
$test_str = @htmlspecialchars($test_str, ENT_COMPAT, $this->encoding);
+                                                                       }
+
+                                                                       
$close_pos = strpos( $part, $close, $i + strlen($close) );
+
+                                                                       if 
($close_pos === false) {
+                                                                               
$close_pos = strlen($part);
+                                                                       }
+
+                                                                       // 
Short-cut through all the multiline code
+                                                                       
$rest_of_comment = @htmlspecialchars(substr($part, $i + $com_len, $close_pos - 
$i), ENT_COMPAT, $this->encoding);
+                                                                       if 
(($this->lexic_permissions['COMMENTS']['MULTI'] ||
+                                        $test_str_match == 
GESHI_START_IMPORTANT) &&
+                                        ($this->line_numbers != 
GESHI_NO_LINE_NUMBERS ||
+                                        count($this->highlight_extra_lines) > 
0)) {
+                                                                               
// strreplace to put close span and open span around multiline newlines
+                                                                               
$test_str .= str_replace("\n", "</span>\n<span$attributes>", $rest_of_comment);
+                                                                       } else {
+                                                                               
$test_str .= $rest_of_comment;
+                                                                       }
+
+                                                                       if 
($this->lexic_permissions['COMMENTS']['MULTI'] ||
+                                        $test_str_match == 
GESHI_START_IMPORTANT) {
+                                                                               
$test_str .= '</span>';
+                                                                       }
+                                                                       $i = 
$close_pos + $com_len - 1;
+                                                                       // 
parse the rest
+                                                                       $result 
.= $this->parse_non_string_part($stuff_to_parse);
+                                                                       
$stuff_to_parse = '';
+                                                                       break;
+                                                               }
+                                                       }
+                                                       // If we haven't 
matched a multiline comment, try single-line comments
+                                                       if (!$COMMENT_MATCHED) {
+                                                               foreach 
($this->language_data['COMMENT_SINGLE'] as $comment_key => $comment_mark) {
+                                                                       
$com_len = strlen($comment_mark);
+                                                                       
$test_str = substr($part, $i, $com_len);
+                                                                       if 
($this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS]) {
+                                                                               
$match = ($comment_mark == $test_str);
+                                                                       } else {
+                                                                               
$match = (strtolower($comment_mark) == strtolower($test_str));
+                                                                       }
+                                                                       if 
($match) {
+                                                                               
$COMMENT_MATCHED = true;
+                                                                               
if ($this->lexic_permissions['COMMENTS'][$comment_key]) {
+                                                                               
        if (!$this->use_classes) {
+                                                                               
                $attributes = ' style="' . 
$this->language_data['STYLES']['COMMENTS'][$comment_key] . '"';
+                                                                               
        } else {
+                                                                               
                $attributes = ' class="co' . $comment_key . '"';
+                                                                               
        }
+                                                                               
        $test_str = "<span$attributes>" . 
@htmlspecialchars($this->change_case($test_str), ENT_COMPAT, $this->encoding);
+                                                                               
} else {
+                                                                               
        $test_str = @htmlspecialchars($test_str, ENT_COMPAT, $this->encoding);
+                                                                               
}
+                                                                               
$close_pos = strpos($part, "\n", $i);
+                                        $oops = false;
+                                                                               
if ($close_pos === false) {
+                                                                               
        $close_pos = strlen($part);
+                                            $oops = true;
+                                                                               
}
+                                                                               
$test_str .= @htmlspecialchars(substr($part, $i + $com_len, $close_pos - $i - 
$com_len), ENT_COMPAT, $this->encoding);
+                                                                               
if ($this->lexic_permissions['COMMENTS'][$comment_key]) {
+                                                                               
        $test_str .= "</span>";
+                                                                               
}
+                                        // Take into account that the comment 
might be the last in the source
+                                        if (!$oops) { 
+                                                                               
  $test_str .= "\n";
+                                        }
+                                                                               
$i = $close_pos;
+                                                                               
// parse the rest
+                                                                               
$result .= $this->parse_non_string_part($stuff_to_parse);
+                                                                               
$stuff_to_parse = '';
+                                                                               
break;
+                                                                       }
+                                                               }
+                                                       }
+                                               } elseif ($STRING_OPEN != '') {
+                            // Otherwise, convert it to HTML form
+                                                       if 
(strtolower($this->encoding) == 'utf-8') {
+                                                               //only escape 
<128 (we don't want to break multibyte chars)
+                                                               if (ord($char) 
< 128) {
+                                                                       $char = 
@htmlspecialchars($char, ENT_COMPAT, $this->encoding);
+                                                               }
+                                                       } else {
+                                                               //encode 
everthing
+                                                               $char = 
@htmlspecialchars($char, ENT_COMPAT, $this->encoding);
+                                                       }
+                                               }
+                                               // Where are we adding this 
char?
+                                               if (!$COMMENT_MATCHED) {
+                                                       if (($STRING_OPEN == 
'') && !$CLOSE_STRING) {
+                                                               $stuff_to_parse 
.= $char;
+                                                       } else {
+                                                               $result .= 
$char;
+                                                               $CLOSE_STRING = 
false;
+                                                       }
+                                               } else {
+                                                       $result .= $test_str;
+                                                       $COMMENT_MATCHED = 
false;
+                                               }
+                                       }
+                                       // Parse the last bit
+                                       $result .= 
$this->parse_non_string_part($stuff_to_parse);
+                                       $stuff_to_parse = '';
+                               } else {
+                                       $result .= @htmlspecialchars($part, 
ENT_COMPAT, $this->encoding);
+                               }
+                               // Close the <span> that surrounds the block
+                               if ($this->strict_mode && 
$this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&
+                    $this->lexic_permissions['SCRIPT']) {
+                                       $result .= '</span>';
+                               }
+                       } else {
+                // Else not a block to highlight
+                               $result .= @htmlspecialchars($part, ENT_COMPAT, 
$this->encoding);
+                       }
+               }
+
+               // Parse the last stuff (redundant?)
+               $result .= $this->parse_non_string_part($stuff_to_parse);
+
+               // Lop off the very first and last spaces
+               $result = substr($result, 1, -1);
+
+               // Are we still in a string?
+               if ($STRING_OPEN) {
+                       $result .= '</span>';
+               }
+
+               // We're finished: stop timing
+               $this->set_time($start_time, microtime());
+
+               return $this->finalise($result);
+       }
+
+       /**
+        * Swaps out spaces and tabs for HTML indentation. Not needed if
+        * the code is in a pre block...
+     * 
+     * @param  string The source to indent
+     * @return string The source with HTML indenting applied
+     * @since  1.0.0
+     * @access private
+        */
+       function indent ($result)
+       {
+            /// Replace tabs with the correct number of spaces
+            if (false !== strpos($result, "\t")) {
+                $lines = explode("\n", $result);
+                foreach ($lines as $key => $line) {
+                    if (false === strpos($line, "\t")) {
+                        $lines[$key] = $line;
+                        continue;
+                    }
+                    
+                    $pos = 0;
+                    $tab_width = $this->tab_width;
+                    $length = strlen($line);
+                    $result_line = '';
+
+                    $IN_TAG = false;
+                    for ($i = 0; $i < $length; $i++) {
+                        $char = substr($line, $i, 1);
+                        // Simple engine to work out whether we're in a tag.
+                        // If we are we modify $pos. This is so we ignore HTML
+                        // in the line and only workout the tab replacement
+                        // via the actual content of the string
+                        // This test could be improved to include strings in 
the
+                        // html so that < or > would be allowed in user's 
styles
+                        // (e.g. quotes: '<' '>'; or similar)
+                        if ($IN_TAG && '>' == $char) {
+                            $IN_TAG = false;
+                            $result_line .= '>';
+                            ++$pos;
+                        } elseif (!$IN_TAG && '<' == $char) {
+                            $IN_TAG = true;
+                            $result_line .= '<';
+                            ++$pos;
+                        } elseif (!$IN_TAG && '&' == $char) {                  
          $substr = substr($line, $i + 3, 4);
+                            //$substr_5 = substr($line, 5, 1);
+                            $posi = strpos($substr, ';');
+                            if (false !== $posi) {
+                                $pos += $posi + 3;
+                            }
+                            $result_line .= '&';
+                        } elseif (!$IN_TAG && "\t" == $char) {
+                            $str = '';
+                            // OPTIMISE - move $strs out. Make an array:
+                            // $tabs = array(
+                            //  1 => '&nbsp;',
+                            //  2 => '&nbsp; ',
+                            //  3 => '&nbsp; &nbsp;' etc etc
+                            // to use instead of building a string every time
+                            $strs = array(0 => '&nbsp;', 1 => ' ');
+                            for ($k = 0; $k < ($tab_width - (($i - $pos) % 
$tab_width)); $k++) $str .= $strs[$k % 2];
+                            $result_line .= $str;
+                            //$pos--;
+                            $pos++;
+                            //$pos -= $tab_width-1;
+
+                            if (false === strpos($line, "\t", $i + 1)) {
+                                //$lines[$key] = $result_line;
+                                $result_line .= substr($line, $i + 1);
+                                break;
+                            }
+                        } elseif ( $IN_TAG ) {
+                            ++$pos;
+                            $result_line .= $char;
+                        } else {
+                            $result_line .= $char;
+                            //++$pos;
+                        }
+                    }
+                    $lines[$key] = $result_line;
+                }
+                $result = implode("\n", $lines);
+            }
+               // Other whitespace
+               $result = str_replace('  ', '&nbsp; ', $result);
+               $result = str_replace('  ', ' &nbsp;', $result);
+               $result = str_replace("\n ", "\n&nbsp;", $result);
+
+               if ($this->line_numbers == GESHI_NO_LINE_NUMBERS) {
+                       $result = nl2br($result);
+               }
+               return $result;
+       }
+
+       /**
+        * Changes the case of a keyword for those languages where a change is 
asked for
+     * 
+     * @param  string The keyword to change the case of
+     * @return string The keyword with its case changed
+     * @since  1.0.0
+     * @access private
+        */
+       function change_case ($instr)
+       {
+               if ($this->language_data['CASE_KEYWORDS'] == GESHI_CAPS_UPPER) {
+                       return strtoupper($instr);
+               } elseif ($this->language_data['CASE_KEYWORDS'] == 
GESHI_CAPS_LOWER) {
+                       return strtolower($instr);
+               }
+               return $instr;
+       }
+
+       /**
+        * Adds a url to a keyword where needed.
+        * 
+     * @param  string The keyword to add the URL HTML to
+     * @param  int What group the keyword is from
+     * @param  boolean Whether to get the HTML for the start or end
+     * @return The HTML for either the start or end of the HTML &lt;a&gt; tag
+     * @since  1.0.2
+     * @access private
+     * @todo   Get rid of ender
+        */
+       function add_url_to_keyword ($keyword, $group, $start_or_end)
+       {
+        if (isset($this->language_data['URLS'][$group]) &&
+            $this->language_data['URLS'][$group] != '' &&
+            substr($keyword, 0, 5) != '&lt;/') {
+                       // There is a base group for this keyword
+                       if ($start_or_end == 'BEGIN') {
+                               // HTML workaround... not good form (tm) but 
should work for 1.0.X
+                               if ($keyword != '') {
+                    // Old system: strtolower
+                                       //$keyword = ( 
$this->language_data['CASE_SENSITIVE'][$group] ) ? $keyword : 
strtolower($keyword);
+                    // New system: get keyword from language file to get 
correct case
+                    foreach ($this->language_data['KEYWORDS'][$group] as 
$word) {
+                        if (strtolower($word) == strtolower($keyword)) {
+                            break;
+                        }
+                    }
+                    $word = ( substr($word, 0, 4) == '&lt;' ) ? substr($word, 
4) : $word;
+                    $word = ( substr($word, -4) == '&gt;' ) ? substr($word, 0, 
strlen($word) - 4) : $word;
+                    if (!$word) return '';
+                    
+                                       return '<|UR1|"' .
+                        str_replace(
+                            array('{FNAME}', '.'),
+                            array(@htmlspecialchars($word, ENT_COMPAT, 
$this->encoding), '<DOT>'),
+                            $this->language_data['URLS'][$group]
+                        ) . '">';
+                               }
+                               return '';
+            // HTML fix. Again, dirty hackage...
+                       } elseif (!($this->language == 'html4strict' && '&gt;' 
== $keyword)) {
+                               return '</a>';
+                       }
+               }
+       }
+
+       /**
+        * Takes a string that has no strings or comments in it, and highlights
+        * stuff like keywords, numbers and methods.
+     * 
+     * @param string The string to parse for keyword, numbers etc.
+     * @since 1.0.0
+     * @access private
+     * @todo BUGGY! Why? Why not build string and return?
+        */
+       function parse_non_string_part (&$stuff_to_parse)
+       {
+               $stuff_to_parse = ' ' . @htmlspecialchars($stuff_to_parse, 
ENT_COMPAT, $this->encoding);
+        $stuff_to_parse_pregquote = preg_quote($stuff_to_parse, '/');
+               $func = '$this->change_case';
+               $func2 = '$this->add_url_to_keyword';
+
+               //
+               // Regular expressions
+               //
+               foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
+                       if ($this->lexic_permissions['REGEXPS'][$key]) {
+                               if (is_array($regexp)) {
+                                       $stuff_to_parse = preg_replace(
+                        "/" .
+                        str_replace('/', '\/', $regexp[GESHI_SEARCH]) .
+                        "/{$regexp[GESHI_MODIFIERS]}",
+                        
"{$regexp[GESHI_BEFORE]}<|!REG3XP$key!>{$regexp[GESHI_REPLACE]}|>{$regexp[GESHI_AFTER]}",
+                        $stuff_to_parse
+                    );
+                               } else {
+                                       $stuff_to_parse = preg_replace( "/(" . 
str_replace('/', '\/', $regexp) . ")/", "<|!REG3XP$key!>\\1|>", 
$stuff_to_parse);
+                               }
+                       }
+               }
+
+               //
+               // Highlight numbers. This regexp sucks... anyone with a regexp 
that WORKS
+               // here wins a cookie if they send it to me. At the moment 
there's two doing
+               // almost exactly the same thing, except the second one 
prevents a number
+               // being highlighted twice (eg 
<span...><span...>5</span></span>)
+               // Put /NUM!/ in for the styles, which gets replaced at the end.
+        //
+        // NEW ONE: Brice Bernard
+        // $stuff_to_parse = preg_replace('/([^(\\w|#|\\\|"|\')])(\\d+)/', 
'\\1<|/NUM!/>\\2|>', $stuff_to_parse);
+        //$stuff_to_parse = 
preg_replace('/([-+]?\\b(?:[0-9]*\\.)?[0-9]+\\b)/', '<|/NUM!/>\\1|>', 
$stuff_to_parse);
+               //
+               if ($this->lexic_permissions['NUMBERS'] && 
preg_match('#[0-9]#', $stuff_to_parse )) {
+                       //$stuff_to_parse = 
preg_replace('#([^a-zA-Z0-9_\#])([0-9]+)([^a-zA-Z0-9])#', 
"\\1<|/NUM!/>\\2|>\\3", $stuff_to_parse);
+                       //$stuff_to_parse = 
preg_replace('#([^a-zA-Z0-9_\#>])([0-9]+)([^a-zA-Z0-9])#', 
"\\1<|/NUM!/>\\2|>\\3", $stuff_to_parse);
+            $stuff_to_parse = 
preg_replace('/([-+]?\\b(?:[0-9]*\\.)?[0-9]+\\b)/', '<|/NUM!/>\\1|>', 
$stuff_to_parse);
+               }
+
+               // Highlight keywords
+               // if there is a couple of alpha symbols there *might* be a 
keyword
+               if (preg_match('#[a-zA-Z]{2,}#', $stuff_to_parse)) {
+                       foreach ($this->language_data['KEYWORDS'] as $k => 
$keywordset) {
+                               if ($this->lexic_permissions['KEYWORDS'][$k]) {
+                                       foreach ($keywordset as $keyword) {
+                                               $keyword = preg_quote($keyword, 
'/');
+                                               //
+                                               // This replacement checks the 
word is on it's own (except if brackets etc
+                                               // are next to it), then 
highlights it. We don't put the color=" for the span
+                                               // in just yet - otherwise 
languages with the keywords "color" or "or" have
+                                               // a fit.
+                                               //
+                                               if (false !== 
stristr($stuff_to_parse_pregquote, $keyword )) {
+                                                       $stuff_to_parse .= ' ';
+                                                       // Might make a more 
unique string for putting the number in soon
+                                                       // Basically, we don't 
put the styles in yet because then the styles themselves will
+                                                       // get highlighted if 
the language has a CSS keyword in it (like CSS, for example ;))
+                                                       $styles = "/$k/";
+                                                       if 
($this->language_data['CASE_SENSITIVE'][$k]) {
+                                                               $stuff_to_parse 
= preg_replace(
+                                    
"/([^a-zA-Z0-9\$_\|\#;>|^])($keyword)(?=[^a-zA-Z0-9_<\|%\-&])/e",
+                                    "'\\1' . $func2('\\2', '$k', 'BEGIN') . 
'<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END')",
+                                    $stuff_to_parse
+                                );
+                                                       } else {
+                                                               // Change the 
case of the word.
+                                // hackage again... must... release... 1.2...
+                                if ('smarty' == $this->language) { $hackage = 
'\/'; } else { $hackage = ''; }
+                                                               $stuff_to_parse 
= preg_replace(
+                                    
"/([^a-zA-Z0-9\$_\|\#;>$hackage|^])($keyword)(?=[^a-zA-Z0-9_<\|%\-&])/ie",
+                                    "'\\1' . $func2('\\2', '$k', 'BEGIN') . 
'<|$styles>' . $func('\\2') . '|>' . $func2('\\2', '$k', 'END')",
+                                    $stuff_to_parse
+                                );
+                                                       }
+                                                       $stuff_to_parse = 
substr($stuff_to_parse, 0, strlen($stuff_to_parse) - 1);
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               //
+               // Now that's all done, replace /[number]/ with the correct 
styles
+               //
+               foreach ($this->language_data['KEYWORDS'] as $k => $kws) {
+                       if (!$this->use_classes) {
+                               $attributes = ' style="' . 
$this->language_data['STYLES']['KEYWORDS'][$k] . '"';
+                       } else {
+                               $attributes = ' class="kw' . $k . '"';
+                       }
+                       $stuff_to_parse = str_replace("/$k/", $attributes, 
$stuff_to_parse);
+               }
+
+               // Put number styles in
+               if (!$this->use_classes && $this->lexic_permissions['NUMBERS']) 
{
+                       $attributes = ' style="' . 
$this->language_data['STYLES']['NUMBERS'][0] . '"';
+               } else {
+                       $attributes = ' class="nu0"';
+               }
+               $stuff_to_parse = str_replace('/NUM!/', $attributes, 
$stuff_to_parse);
+
+               //
+               // Highlight methods and fields in objects
+               //
+               if ($this->lexic_permissions['METHODS'] && 
$this->language_data['OOLANG']) {
+                       foreach ($this->language_data['OBJECT_SPLITTERS'] as 
$key => $splitter) {
+                               if (false !== stristr($stuff_to_parse, 
$splitter)) {
+                                       if (!$this->use_classes) {
+                                               $attributes = ' style="' . 
$this->language_data['STYLES']['METHODS'][$key] . '"';
+                                       } else {
+                                               $attributes = ' class="me' . 
$key . '"';
+                                       }
+                                       $stuff_to_parse = preg_replace("/(" . 
preg_quote($this->language_data['OBJECT_SPLITTERS'][$key], 1) . 
"[\s]*)([a-zA-Z\*\(][a-zA-Z0-9_\*]*)/", "\\1<|$attributes>\\2|>", 
$stuff_to_parse);
+                               }
+                       }
+               }
+
+               //
+               // Highlight brackets. Yes, I've tried adding a semi-colon to 
this list.
+               // You try it, and see what happens ;)
+               // TODO: Fix lexic permissions not converting entities if 
shouldn't
+               // be highlighting regardless
+               //
+               if ($this->lexic_permissions['BRACKETS']) {
+                       $code_entities_match = array('[', ']', '(', ')', '{', 
'}');
+                       if (!$this->use_classes) {
+                               $code_entities_replace = array(
+                                       '<| style="' . 
$this->language_data['STYLES']['BRACKETS'][0] . '">&#91;|>',
+                                       '<| style="' . 
$this->language_data['STYLES']['BRACKETS'][0] . '">&#93;|>',
+                                       '<| style="' . 
$this->language_data['STYLES']['BRACKETS'][0] . '">&#40;|>',
+                                       '<| style="' . 
$this->language_data['STYLES']['BRACKETS'][0] . '">&#41;|>',
+                                       '<| style="' . 
$this->language_data['STYLES']['BRACKETS'][0] . '">&#123;|>',
+                                       '<| style="' . 
$this->language_data['STYLES']['BRACKETS'][0] . '">&#125;|>',
+                               );
+                       } else {
+                               $code_entities_replace = array(
+                                       '<| class="br0">&#91;|>',
+                                       '<| class="br0">&#93;|>',
+                                       '<| class="br0">&#40;|>',
+                                       '<| class="br0">&#41;|>',
+                                       '<| class="br0">&#123;|>',
+                                       '<| class="br0">&#125;|>',
+                               );
+                       }
+                       $stuff_to_parse = str_replace( $code_entities_match,  
$code_entities_replace, $stuff_to_parse );
+               }
+
+               //
+               // Add class/style for regexps
+               //
+               foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
+                       if ($this->lexic_permissions['REGEXPS'][$key]) {
+                               if (!$this->use_classes) {
+                                       $attributes = ' style="' . 
$this->language_data['STYLES']['REGEXPS'][$key] . '"';
+                               } else {
+                   if(is_array($this->language_data['REGEXPS'][$key]) &&
+                            array_key_exists(GESHI_CLASS, 
$this->language_data['REGEXPS'][$key])) {
+                        $attributes = ' class="'
+                            . 
$this->language_data['REGEXPS'][$key][GESHI_CLASS] . '"';
+                    } else {
+                                          $attributes = ' class="re' . $key . 
'"';
+                    }
+                               }
+                               $stuff_to_parse = str_replace("!REG3XP$key!", 
"$attributes", $stuff_to_parse);
+                       }
+               }
+
+               // Replace <DOT> with . for urls
+               $stuff_to_parse = str_replace('<DOT>', '.', $stuff_to_parse);
+               // Replace <|UR1| with <a href= for urls also
+               if (isset($this->link_styles[GESHI_LINK])) {
+                       if ($this->use_classes) {
+                               $stuff_to_parse = str_replace('<|UR1|', '<a' . 
$this->link_target . ' href=', $stuff_to_parse);
+                       } else {
+                               $stuff_to_parse = str_replace('<|UR1|', '<a' . 
$this->link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', 
$stuff_to_parse);
+                       }
+               } else {
+                       $stuff_to_parse = str_replace('<|UR1|', '<a' . 
$this->link_target . ' href=', $stuff_to_parse);
+               }
+
+               //
+               // NOW we add the span thingy ;)
+               //
+
+               $stuff_to_parse = str_replace('<|', '<span', $stuff_to_parse);
+               $stuff_to_parse = str_replace ( '|>', '</span>', 
$stuff_to_parse );
+
+               return substr($stuff_to_parse, 1);
+       }
+
+       /**
+        * Sets the time taken to parse the code
+     * 
+     * @param microtime The time when parsing started
+     * @param microtime The time when parsing ended
+     * @since 1.0.2
+     * @access private
+        */
+       function set_time ($start_time, $end_time)
+       {
+               $start = explode(' ', $start_time);
+               $end = explode(' ', $end_time);
+               $this->time = $end[0] + $end[1] - $start[0] - $start[1];
+       }
+
+       /**
+        * Gets the time taken to parse the code
+     * 
+     * @return double The time taken to parse the code
+     * @since  1.0.2
+        */
+       function get_time ()
+       {
+               return $this->time;
+       }
+
+       /**
+        * Gets language information and stores it for later use
+     * 
+     * @access private
+     * @todo Needs to load keys for lexic permissions for keywords, regexps etc
+        */
+       function load_language ($file_name)
+       {
+        $this->enable_highlighting();
+        $language_data = array();
+               require $file_name;
+               // Perhaps some checking might be added here later to check that
+               // $language data is a valid thing but maybe not
+               $this->language_data = $language_data;
+               // Set strict mode if should be set
+               if ($this->language_data['STRICT_MODE_APPLIES'] == 
GESHI_ALWAYS) {
+                       $this->strict_mode = true;
+               }
+               // Set permissions for all lexics to true
+               // so they'll be highlighted by default
+        foreach ($this->language_data['KEYWORDS'] as $key => $words) {
+            $this->lexic_permissions['KEYWORDS'][$key] = true;
+        }
+        foreach ($this->language_data['COMMENT_SINGLE'] as $key => $comment) {
+            $this->lexic_permissions['COMMENTS'][$key] = true;
+        }
+        foreach ($this->language_data['REGEXPS'] as $key => $regexp) {
+            $this->lexic_permissions['REGEXPS'][$key] = true;
+        }
+               // Set default class for CSS
+               $this->overall_class = $this->language;
+       }
+
+       /**
+        * Takes the parsed code and various options, and creates the HTML
+        * surrounding it to make it look nice.
+     * 
+     * @param  string The code already parsed
+     * @return string The code nicely finalised
+     * @since  1.0.0
+     * @access private
+        */
+       function finalise ($parsed_code)
+       {
+        // Remove end parts of important declarations
+        // This is BUGGY!! My fault for bad code: fix coming in 1.2
+        // @todo Remove this crap
+        if ($this->enable_important_blocks &&
+            (strstr($parsed_code, @htmlspecialchars(GESHI_START_IMPORTANT, 
ENT_COMPAT, $this->encoding)) === false)) {
+               $parsed_code = 
str_replace(@htmlspecialchars(GESHI_END_IMPORTANT, ENT_COMPAT, 
$this->encoding), '', $parsed_code);
+        }
+        
+        // Add HTML whitespace stuff if we're using the <div> header
+        if ($this->header_type != GESHI_HEADER_PRE) {
+            $parsed_code = $this->indent($parsed_code);
+        }
+        
+        // purge some unnecessary stuff
+        $parsed_code = preg_replace('#<span[^>]+>(\s*)</span>#', '\\1', 
$parsed_code);
+        $parsed_code = preg_replace('#<div[^>]+>(\s*)</div>#', '\\1', 
$parsed_code);
+
+        // If we are using IDs for line numbers, there needs to be an overall
+        // ID set to prevent collisions.
+        if ($this->add_ids && !$this->overall_id) {
+            $this->overall_id = 'geshi-' . substr(md5(microtime()), 0, 4);
+        }
+        
+        // If we're using line numbers, we insert <li>s and appropriate
+        // markup to style them (otherwise we don't need to do anything)
+        if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+               // If we're using the <pre> header, we shouldn't add newlines 
because
+            // the <pre> will line-break them (and the <li>s already do this 
for us)
+            $ls = ($this->header_type != GESHI_HEADER_PRE) ? "\n" : '';
+            // Get code into lines
+            $code = explode("\n", $parsed_code);
+            // Set vars to defaults for following loop
+            $parsed_code = '';
+            $i = 0;
+            $attrs = array();
+                        
+            // Foreach line...
+            foreach ($code as $line) {//echo 
"LINE:|".htmlspecialchars($line)."| ".strlen($line)."<br />\n";
+                if ('' == $line || ' ' == $line) {
+                    $line = '&nbsp;';
+                }
+                // If this is a "special line"...
+                   if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS &&
+                    $i % $this->line_nth_row == ($this->line_nth_row - 1)) {
+                       // Set the attributes to style the line
+                    if ($this->use_classes) {
+                               //$attr = ' class="li2"';
+                        $attrs['class'][] = 'li2';
+                               $def_attr = ' class="de2"';
+                    } else {
+                               //$attr = ' style="' . $this->line_style2 . '"';
+                        $attrs['style'][] = $this->line_style2;
+                               // This style "covers up" the special styles 
set for special lines
+                               // so that styles applied to special lines 
don't apply to the actual
+                               // code on that line
+                               $def_attr = ' style="' . $this->code_style . 
'"';
+                    }
+                       // Span or div?
+                       $start = "<div$def_attr>";
+                       $end = '</div>';
+               } else {
+                       if ($this->use_classes) {
+                        //$attr = ' class="li1"';
+                        $attrs['class'][] = 'li1';
+                               $def_attr = ' class="de1"';
+                       } else {
+                        //$attr = ' style="' . $this->line_style1 . '"';
+                        $attrs['style'][] = $this->line_style1;
+                               $def_attr = ' style="' . $this->code_style . 
'"';
+                       }
+                       $start = "<div$def_attr>";
+                       $end = '</div>';
+               }
+        
+               ++$i;
+               // Are we supposed to use ids? If so, add them
+               if ($this->add_ids) {
+                    $attrs['id'][] = "$this->overall_id-$i";
+               }
+               if ($this->use_classes && in_array($i, 
$this->highlight_extra_lines)) {
+                    $attrs['class'][] = 'ln-xtra';
+               }
+               if (!$this->use_classes && in_array($i, 
$this->highlight_extra_lines)) {
+                    $attrs['style'][] = $this->highlight_extra_lines_style;
+               }
+
+               // Add in the line surrounded by appropriate list HTML
+                $attr_string = ' ';
+                foreach ($attrs as $key => $attr) {
+                    $attr_string .= $key . '="' . implode(' ', $attr) . '" ';
+                }
+                $attr_string = substr($attr_string, 0, -1);
+               $parsed_code .= "<li$attr_string>$start$line$end</li>$ls";
+                $attrs = array();
+               }
+        } else {
+            // No line numbers, but still need to handle highlighting lines 
extra.
+            // Have to use divs so the full width of the code is highlighted
+            $code = explode("\n", $parsed_code);
+            $parsed_code = '';
+            $i = 0;
+            foreach ($code as $line) {
+               // Make lines have at least one space in them if they're empty
+                if ('' == $line || ' ' == $line) {
+                    $line = '&nbsp;';
+                }
+               if (in_array(++$i, $this->highlight_extra_lines)) {
+                       if ($this->use_classes) {
+                               $parsed_code .= '<div class="ln-xtra">';
+                       } else {
+                               $parsed_code .= "<div 
style=\"{$this->highlight_extra_lines_style}\">";
+                       }
+                    // Remove \n because it stuffs up <pre> header
+                       $parsed_code .= $line . "</div>";
+               } else {
+                       $parsed_code .= $line . "\n";
+               }
+               }
+        }
+                
+        if ($this->header_type == GESHI_HEADER_PRE) {
+               // enforce line numbers when using pre
+            $parsed_code = str_replace('<li></li>', '<li>&nbsp;</li>', 
$parsed_code);
+        }
+        
+        return $this->header() . chop($parsed_code) . $this->footer();
+    }
+
+       /**
+        * Creates the header for the code block (with correct attributes)
+     * 
+     * @return string The header for the code block
+     * @since  1.0.0
+     * @access private
+        */
+       function header ()
+       {
+               // Get attributes needed
+               $attributes = $this->get_attributes();
+
+               $ol_attributes = '';
+
+               if ($this->line_numbers_start != 1) {
+                       $ol_attributes .= ' start="' . 
$this->line_numbers_start . '"';
+               }
+
+               // Get the header HTML
+               $header = $this->format_header_content();
+
+        if (GESHI_HEADER_NONE == $this->header_type) {
+            if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+                return "$header<ol$ol_attributes>";
+            }
+            return $header;
+        }
+        
+               // Work out what to return and do it
+               if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+                       if ($this->header_type == GESHI_HEADER_PRE) {
+                               return 
"<pre$attributes>$header<ol$ol_attributes>";
+                       } elseif ($this->header_type == GESHI_HEADER_DIV) {
+                               return 
"<div$attributes>$header<ol$ol_attributes>";
+                       }
+               } else {
+                       if ($this->header_type == GESHI_HEADER_PRE) {
+                               return "<pre$attributes>$header";
+                       } elseif ($this->header_type == GESHI_HEADER_DIV) {
+                               return "<div$attributes>$header";
+                       }
+               }
+       }
+
+       /**
+        * Returns the header content, formatted for output
+     * 
+     * @return string The header content, formatted for output
+     * @since  1.0.2
+     * @access private
+        */
+       function format_header_content ()
+       {
+               $header = $this->header_content;
+               if ($header) {
+                       if ($this->header_type == GESHI_HEADER_PRE) {
+                               $header = str_replace("\n", '', $header);
+                       }
+                       $header = $this->replace_keywords($header);
+
+                       if ($this->use_classes) {
+                               $attr = ' class="head"';
+                       } else {
+                               $attr = " 
style=\"{$this->header_content_style}\"";
+                       }
+                       return "<div$attr>$header</div>";
+               }
+       }
+
+       /**
+        * Returns the footer for the code block.
+     * 
+     * @return string The footer for the code block
+     * @since  1.0.0
+     * @access private
+        */
+       function footer ()
+       {
+               $footer_content = $this->format_footer_content();
+
+        if (GESHI_HEADER_NONE == $this->header_type) {
+            return ($this->line_numbers != GESHI_NO_LINE_NUMBERS) ? '</ol>' . 
$footer_content
+                : $footer_content;
+        }
+        
+               if ($this->header_type == GESHI_HEADER_DIV) {
+                       if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+                               return "</ol>$footer_content</div>";
+                       }
+                       return "$footer_content</div>";
+               } else {
+                       if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {
+                               return "</ol>$footer_content</pre>";
+                       }
+                       return "$footer_content</pre>";
+               }
+       }
+
+       /**
+        * Returns the footer content, formatted for output
+     * 
+     * @return string The footer content, formatted for output
+     * @since  1.0.2
+     * @access private
+        */
+       function format_footer_content ()
+       {
+               $footer = $this->footer_content;
+               if ($footer) {
+                       if ($this->header_type == GESHI_HEADER_PRE) {
+                               $footer = str_replace("\n", '', $footer);;
+                       }
+                       $footer = $this->replace_keywords($footer);
+
+                       if ($this->use_classes) {
+                               $attr = ' class="foot"';
+                       } else {
+                               $attr = " 
style=\"{$this->footer_content_style}\"";
+                       }
+                       return "<div$attr>$footer</div>";
+               }
+       }
+
+       /**
+        * Replaces certain keywords in the header and footer with
+        * certain configuration values
+     * 
+     * @param  string The header or footer content to do replacement on
+     * @return string The header or footer with replaced keywords
+     * @since  1.0.2
+     * @access private
+        */
+       function replace_keywords ($instr)
+       {
+               $keywords = $replacements = array();
+
+               $keywords[] = '<TIME>';
+               $replacements[] = number_format($this->get_time(), 3);
+
+               $keywords[] = '<LANGUAGE>';
+               $replacements[] = $this->language;
+
+               $keywords[] = '<VERSION>';
+               $replacements[] = GESHI_VERSION;
+
+               return str_replace($keywords, $replacements, $instr);
+       }
+
+       /**
+        * Gets the CSS attributes for this code
+     * 
+     * @return The CSS attributes for this code
+     * @since  1.0.0
+     * @access private
+     * @todo   Document behaviour change - class is outputted regardless of 
whether we're using classes or not.
+     *         Same with style
+        */
+       function get_attributes ()
+       {
+               $attributes = '';
+
+               if ($this->overall_class != '') {
+                       $attributes .= " class=\"{$this->overall_class}\"";
+               }
+               if ($this->overall_id != '') {
+                       $attributes .= " id=\"{$this->overall_id}\"";
+               }
+               if ($this->overall_style != '') {
+                       $attributes .= ' style="' . $this->overall_style . '"';
+               }
+               return $attributes;
+       }
+
+       /**
+        * Returns a stylesheet for the highlighted code. If $economy mode
+        * is true, we only return the stylesheet declarations that matter for
+        * this code block instead of the whole thing
+     *
+     * @param  boolean Whether to use economy mode or not 
+     * @return string A stylesheet built on the data for the current language
+     * @since  1.0.0
+        */
+       function get_stylesheet ($economy_mode = true)
+       {
+               // If there's an error, chances are that the language file
+               // won't have populated the language data file, so we can't
+               // risk getting a stylesheet...
+               if ($this->error) {
+                       return '';
+               }
+               // First, work out what the selector should be. If there's an 
ID,
+               // that should be used, the same for a class. Otherwise, a 
selector
+               // of '' means that these styles will be applied anywhere
+               $selector = ($this->overall_id != '') ? "#{$this->overall_id} " 
: '';
+               $selector = ($selector == '' && $this->overall_class != '') ? 
".{$this->overall_class} " : $selector;
+
+               // Header of the stylesheet
+               if (!$economy_mode) {
+                       $stylesheet = "/**\n * GeSHi Dynamically Generated 
Stylesheet\n * --------------------------------------\n * Dynamically generated 
stylesheet for {$this->language}\n * CSS class: {$this->overall_class}, CSS id: 
{$this->overall_id}\n * GeSHi (c) Nigel McNie 2004 
(http://qbnz.com/highlighter)\n */\n";
+               } else {
+                       $stylesheet = '/* GeSHi (c) Nigel McNie 2004 
(http://qbnz.com/highlighter) */' . "\n";
+               }
+
+               // Set the <ol> to have no effect at all if there are line 
numbers
+               // (<ol>s have margins that should be destroyed so all layout is
+               // controlled by the set_overall_style method, which works on 
the
+               // <pre> or <div> container). Additionally, set default styles 
for lines
+               if (!$economy_mode || $this->line_numbers != 
GESHI_NO_LINE_NUMBERS) {
+                       //$stylesheet .= "$selector, {$selector}ol, 
{$selector}ol li {margin: 0;}\n";
+                       $stylesheet .= "$selector.de1, $selector.de2 
{{$this->code_style}}\n";
+               }
+
+               // Add overall styles
+               if (!$economy_mode || $this->overall_style != '') {
+                       $stylesheet .= "$selector {{$this->overall_style}}\n";
+               }
+
+               // Add styles for links
+               foreach ($this->link_styles as $key => $style) {
+                       if (!$economy_mode || $key == GESHI_LINK && $style != 
'') {
+                               $stylesheet .= "{$selector}a:link {{$style}}\n";
+                       }
+                       if (!$economy_mode || $key == GESHI_HOVER && $style != 
'') {
+                               $stylesheet .= "{$selector}a:hover 
{{$style}}\n";
+                       }
+                       if (!$economy_mode || $key == GESHI_ACTIVE && $style != 
'') {
+                               $stylesheet .= "{$selector}a:active 
{{$style}}\n";
+                       }
+                       if (!$economy_mode || $key == GESHI_VISITED && $style 
!= '') {
+                               $stylesheet .= "{$selector}a:visited 
{{$style}}\n";
+                       }
+               }
+
+               // Header and footer
+               if (!$economy_mode || $this->header_content_style != '') {
+                       $stylesheet .= "$selector.head 
{{$this->header_content_style}}\n";
+               }
+               if (!$economy_mode || $this->footer_content_style != '') {
+                       $stylesheet .= "$selector.foot 
{{$this->footer_content_style}}\n";
+               }
+
+               // Styles for important stuff
+               if (!$economy_mode || $this->important_styles != '') {
+                       $stylesheet .= "$selector.imp 
{{$this->important_styles}}\n";
+               }
+
+               // Styles for lines being highlighted extra
+               if (!$economy_mode || count($this->highlight_extra_lines)) {
+                       $stylesheet .= "$selector.ln-xtra 
{{$this->highlight_extra_lines_style}}\n";
+               }
+
+               // Simple line number styles
+               if (!$economy_mode || ($this->line_numbers != 
GESHI_NO_LINE_NUMBERS && $this->line_style1 != '')) {
+                       $stylesheet .= "{$selector}li {{$this->line_style1}}\n";
+               }
+
+               // If there is a style set for fancy line numbers, echo it out
+               if (!$economy_mode || ($this->line_numbers == 
GESHI_FANCY_LINE_NUMBERS && $this->line_style2 != '')) {
+                       $stylesheet .= "{$selector}li.li2 
{{$this->line_style2}}\n";
+               }
+
+               foreach ($this->language_data['STYLES']['KEYWORDS'] as $group 
=> $styles) {
+                       if (!$economy_mode || !($economy_mode && 
(!$this->lexic_permissions['KEYWORDS'][$group] || $styles == ''))) {
+                               $stylesheet .= "$selector.kw$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['COMMENTS'] as $group 
=> $styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&&
+                !($economy_mode && 
!$this->lexic_permissions['COMMENTS'][$group])) {
+                               $stylesheet .= "$selector.co$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['ESCAPE_CHAR'] as 
$group => $styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&& !($economy_mode &&
+                !$this->lexic_permissions['ESCAPE_CHAR'])) {
+                               $stylesheet .= "$selector.es$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['SYMBOLS'] as $group => 
$styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&& !($economy_mode &&
+                !$this->lexic_permissions['BRACKETS'])) {
+                               $stylesheet .= "$selector.br$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['STRINGS'] as $group => 
$styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&& !($economy_mode &&
+                !$this->lexic_permissions['STRINGS'])) {
+                               $stylesheet .= "$selector.st$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['NUMBERS'] as $group => 
$styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&& !($economy_mode &&
+                !$this->lexic_permissions['NUMBERS'])) {
+                               $stylesheet .= "$selector.nu$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['METHODS'] as $group => 
$styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&& !($economy_mode &&
+                !$this->lexic_permissions['METHODS'])) {
+                               $stylesheet .= "$selector.me$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['SCRIPT'] as $group => 
$styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == 
'')) {
+                               $stylesheet .= "$selector.sc$group 
{{$styles}}\n";
+                       }
+               }
+               foreach ($this->language_data['STYLES']['REGEXPS'] as $group => 
$styles) {
+                       if (!$economy_mode || !($economy_mode && $styles == '') 
&& !($economy_mode &&
+                !$this->lexic_permissions['REGEXPS'][$group])) {
+                if (is_array($this->language_data['REGEXPS'][$group]) &&
+                         array_key_exists(GESHI_CLASS,
+                                    $this->language_data['REGEXPS'][$group])) {
+                    $stylesheet .= "$selector.";
+                    $stylesheet .= 
$this->language_data['REGEXPS'][$group][GESHI_CLASS];
+                    $stylesheet .= " {{$styles}}\n";
+                } else {
+                                   $stylesheet .= "$selector.re$group 
{{$styles}}\n";
+                }
+                       }
+               }
+
+               return $stylesheet;
+       }
+
+} // End Class GeSHi
+
+
+if (!function_exists('geshi_highlight')) {
+       /**
+     * Easy way to highlight stuff. Behaves just like highlight_string
+     * 
+     * @param string The code to highlight
+     * @param string The language to highlight the code in
+     * @param string The path to the language files. You can leave this blank 
if you need
+     *               as from version 1.0.7 the path should be automatically 
detected
+     * @param boolean Whether to return the result or to echo
+     * @return string The code highlighted (if $return is true)
+     * @since 1.0.2
+     */
+       function geshi_highlight ($string, $language, $path, $return = false)
+       {
+               $geshi = new GeSHi($string, $language, $path);
+               $geshi->set_header_type(GESHI_HEADER_NONE);
+               if ($return) {
+                       return '<code>' . $geshi->parse_code() . '</code>';
+               }
+               echo '<code>' . $geshi->parse_code() . '</code>';
+               if ($geshi->error()) {
+                       return false;
+               }
+               return true;
+       }
+}
+
+?>

Index: contrib/aliased.php
===================================================================
RCS file: contrib/aliased.php
diff -N contrib/aliased.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contrib/aliased.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * Another GeSHi example script
+ *
+ * Configure your Apache server with 'AcceptPathInfo true' and something like
+ * 'Alias /viewmysource /var/www/geshi/contrib/aliased.php'. Don't forget
+ * to protect this alias as necessary.
+ *
+ * Usage - visit /viewmysource/file.name.ext to see that file with syntax
+ * highlighting, where "viewmysource" is the name of the alias you set up.
+ * You can use this without an alias too, just by visiting
+ * aliased.php/file.name.ext.
+ *
+ * @author  Ross Golder <address@hidden>
+ * @version $Id: aliased.php,v 1.1 2006/09/25 08:46:28 skwashd Exp $
+ */
+
+// Your config here
+define("SOURCE_ROOT", "/var/www/your/source/root/");
+
+// Assume you've put geshi in the include_path already
+require_once("geshi.php");
+
+// Get path info
+$path = SOURCE_ROOT.$_SERVER['PATH_INFO'];
+
+// Check for dickheads trying to use '../' to get to sensitive areas
+$base_path_len = strlen(SOURCE_ROOT);
+$real_path = realpath($path);
+if(strncmp($real_path, SOURCE_ROOT, $base_path_len)) {
+       exit("Stop that.");
+}
+
+// Check file exists
+if(!file_exists($path)) {
+       exit("File not found ($path).");
+}
+
+// Gather contents
+$contents = file_get_contents($path);
+
+// Prepare GeSHi instance
+$geshi =& new GeSHi($contents, "PHP");
+$geshi->set_header_type(GESHI_HEADER_PRE);
+$geshi->enable_classes();
+$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 10);
+$geshi->set_overall_style('color: #000066; border: 1px solid #d0d0d0; 
background-color: #f0f0f0;', true);
+$geshi->set_line_style('font: normal normal 95% \'Courier New\', Courier, 
monospace; color: #003030;', 'font-weight: bold; color: #006060;', true);
+$geshi->set_code_style('color: #000020;', 'color: #000020;');
+$geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
+$geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
+$geshi->set_header_content('Source code viewer');
+$geshi->set_header_content_style('font-family: Verdana, Arial, sans-serif; 
color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; 
border-bottom: 1px solid #d0d0d0; padding: 2px;');
+$geshi->set_footer_content('Parsed in <TIME> seconds,  using GeSHi <VERSION>');
+$geshi->set_footer_content_style('font-family: Verdana, Arial, sans-serif; 
color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; 
border-top: 1px solid #d0d0d0; padding: 2px;');
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+       <title>Source code viewer - <?php echo $path; ?></title>
+       <style type="text/css">
+       <!--
+       <?php
+        // Output the stylesheet. Note it doesn't output the <style> tag
+       echo $geshi->get_stylesheet();
+       ?>
+       html {
+               background-color: #f0f0f0;
+       }
+       body {
+               font-family: Verdana, Arial, sans-serif;
+               margin: 10px;
+               border: 2px solid #e0e0e0;
+               background-color: #fcfcfc;
+               padding: 5px;
+       }
+       h2 {
+               margin: .1em 0 .2em .5em;
+               border-bottom: 1px solid #b0b0b0;
+               color: #b0b0b0;
+               font-weight: normal;
+               font-size: 150%;
+       }
+       h3 {
+               margin: .1em 0 .2em .5em;
+               color: #b0b0b0;
+               font-weight: normal;
+               font-size: 120%;
+       }
+       #footer {
+               text-align: center;
+               font-size: 80%;
+               color: #a9a9a9;
+       }
+       #footer a {
+               color: #9999ff;
+       }
+       textarea {
+               border: 1px solid #b0b0b0;
+               font-size: 90%;
+               color: #333;
+               margin-left: 20px;
+       }
+       select, input {
+               margin-left: 20px;
+       }
+       p {
+               font-size: 90%;
+               margin-left: .5em;
+       }
+       -->
+       </style>
+</head>
+<body>
+<?php
+// The fun part :)
+echo $geshi->parse_code();
+?>
+<hr/>
+</body>
+</html>

Index: contrib/cssgen.php
===================================================================
RCS file: contrib/cssgen.php
diff -N contrib/cssgen.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contrib/cssgen.php  25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,460 @@
+<?php
+/*************************************************************************************
+ * cssgen.php
+ * ----------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie
+ * Release Version: 1.0.7.3
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/05/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Application to generate custom CSS files for GeSHi (based on an idea by 
Andreas
+ * Gohr)
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+set_magic_quotes_runtime(0);
+//
+// Functions
+//
+
+function make_header ( $title )
+{
+       echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+       <title>GeSHi CSS Generator :: ' . $title . ' </title>
+       <style type="text/css" media="screen">
+       <!--
+               html {
+                       font-family: Verdana, Arial, sans-serif;
+                       font-size: 80%;
+                       background-color: #d0d0d0;
+               }
+               body {
+                       margin: 10px;
+                       padding: 5px;
+                       border: 1px solid #f0f0f0;
+                       background-color: #f6f6f6;
+               }
+               h1 {
+                       border-bottom: 2px solid #e0e0e0;
+                       font-weight: normal;
+                       font-size: 150%;
+                       color: #c0c0c0;
+               }
+               input, textarea {
+                       border: 1px solid #d0d0d0;
+               }
+               th {
+                       text-align: right;
+                       font-weight: normal;
+               }
+               pre {
+                       font-size: 110%;
+                       color: #202020;
+               }
+               #footer {
+                       color: #b0b0b0;
+                       text-align: center;
+                       font-size: 90%;
+                       margin: 0 auto;
+                       border-top: 1px solid #e0e0e0;
+               }
+               #footer a {
+                       color: #c0c0c0;
+               }
+       -->
+       </style>
+    <script type="text/javascript">
+    function select (state)
+    {
+        var cboxes = document.getElementsByTagName(\'input\');
+        for (var i = 0; i < cboxes.length; i++) {
+            if (cboxes[i].type == "checkbox") {
+                if (state == "true") {
+                    cboxes[i].checked = true;
+                } else if (state == "false") {
+                    cboxes[i].checked = false;
+                } else if (state == "invert") {
+                    cboxes[i].checked = !cboxes[i].checked;
+                }
+            }
+        }
+    }
+    </script>
+</head>
+<body>
+<h1>' . $title . '</h1>
+';
+}
+
+function make_footer ()
+{
+       echo '<div id="footer"><a href="http://qbnz.com/highlighter/";>GeSHi</a> 
&copy; Nigel McNie, 2004, released under the GPL</div></body>
+</html>';
+}
+
+
+function get_var ( $var_name )
+{
+       if ( isset($_GET[$var_name]) )
+       {
+               return str_replace("\'", "'", $_GET[$var_name]);
+       }
+       elseif ( isset($_POST[$var_name]) )
+       {
+               return str_replace("\'", "'", $_POST[$var_name]);
+       }
+       return null;
+}
+
+
+
+//
+// Unset everything
+//
+foreach ( $_REQUEST as $var )
+{
+       unset($$var);
+}
+foreach ( array(
+       '_POST' => 'HTTP_POST_VARS',
+       '_GET' => 'HTTP_GET_VARS',
+       '_COOKIE' => 'HTTP_COOKIE_VARS',
+       '_SERVER' => 'HTTP_SERVER_VARS',
+       '_ENV' => 'HTTP_ENV_VARS',
+       '_FILES' => 'HTTP_POST_FILES')  as $array => $other )
+{
+       if ( !isset($$array) )
+       {
+               $$array = $$other;
+       }
+       unset($$other);
+}
+
+
+// Get what step we're up to
+$step = get_var('step');
+
+if ( !$step || $step == 1 )
+{
+       $errors = 0;
+       make_header('Step 1');
+       echo "Welcome to the GeSHi CSS generator.<br /><pre>Searching for 
GeSHi...          ";
+
+       // Find GeSHi
+       $geshi_path = get_var('geshi-path');
+       $geshi_lang_path = get_var('geshi-lang-path');
+
+       if ( !$geshi_path )
+       {
+               $geshi_path = '../geshi.php';
+       }
+       if ( !$geshi_lang_path )
+       {
+               $geshi_lang_path = '../geshi/';
+       }
+
+
+       if ( is_file($geshi_path) && is_readable($geshi_path) )
+       {
+               // Get file contents and see if GeSHi is in here
+               $file = @file($geshi_path);
+               $contents = '';
+               foreach ( $file as $line )
+               {
+                       $contents .= $line;
+               }
+               if ( strpos($contents, '<?php
+/**
+ * GeSHi - Generic Syntax Highlighter
+ * 
+ * The GeSHi class for Generic Syntax Highlighting. Please refer to the 
documentation
+ * at http://qbnz.com/highlighter/documentation.php for more information about 
how to
+ * use this class.') !== false )
+               {
+                       echo '<span style="color: green;">Found at ' . 
realpath($geshi_path) . '</span>';
+               }
+               else
+               {
+                       ++$errors;
+                       $no_geshi_dot_php_error = true;
+                       echo '<span style="color: red;">Not found</span>';
+               }
+       }
+       else
+       {
+               ++$errors;
+               $no_geshi_dot_php_error = true;
+               echo '<span style="color: red;">Not found</span>';
+       }
+
+       // Find language files
+       echo "\nSearching for language files... ";
+       if ( is_readable($geshi_lang_path . 'css-gen.cfg') )
+       {
+
+               echo '<span style="color: green;">Found at ' . 
realpath($geshi_lang_path) . '</span>';
+       }
+       else
+       {
+               ++$errors;
+               $no_lang_dir_error = true;
+               echo '<span style="color: red;">Not found</span>';
+       }
+       echo "</pre>\n";
+
+       if ( $errors > 0 )
+       {
+               // We're gonna have to ask for the paths...
+               echo 'Unfortunately CSSGen could not detect the following 
paths. Please input them and press &quot;submit&quot; to try again.';
+               echo "
+<form action=\"cssgen.php\" method=\"post\">";
+               if ( $no_geshi_dot_php_error )
+               {
+                       echo "
+<br />geshi.php: <input type=\"text\" name=\"geshi-path\" value=\"" . 
realpath('../geshi.php') . "\" size=\"50\" />";
+               }
+        else
+        {
+            echo '<input type="hidden" name="geshi-path" value="' . 
htmlspecialchars($geshi_path) . '" />';
+        }
+               if ( $no_lang_dir_error )
+               {
+                       echo "
+<br />language files directory: <input type=\"text\" name=\"geshi-lang-path\" 
value=\"" . realpath('../geshi/') . "/\" size=\"50\" /> (should have a trailing 
slash)";
+               }
+        else
+        {
+            echo '<input type="hidden" name="geshi-lang-path" value="' . 
$geshi_lang_path . '" />';
+        }
+
+               echo "
+<br /><input type=\"submit\" value=\"Search\" /></form>";
+       }
+       else
+       {
+               // no errors - echo continue form
+               echo 'Everything seems to be detected successfully. Use the 
button to continue.
+<br /><br /><form action="cssgen.php?step=2" method="post">
+<input type="hidden" name="geshi-path" value="' . realpath($geshi_path) . '" 
/><input type="hidden" name="geshi-lang-path" value="' . 
realpath($geshi_lang_path) . '" />
+<input type="submit" value="Step 2" />';
+       }
+
+       make_footer();
+}
+// Step 2
+elseif ( $step == 2 )
+{
+       make_header('Step 2');
+
+       $geshi_path = get_var('geshi-path');
+       $geshi_lang_path = get_var('geshi-lang-path');
+
+       $dh = opendir($geshi_lang_path);
+       $lang_files = array();
+       $file = readdir($dh);
+       while ( $file !== false )
+       {
+               if ( $file == '.' || $file == '..' || $file == 'CVS' || $file 
== 'css-gen.cfg' )
+               {
+                       $file = readdir($dh);
+                       continue;
+               }
+               $lang_files[] = $file;
+               $file = readdir($dh);
+       }
+       closedir($dh);
+    sort($lang_files);
+
+       // Now installed languages are in $lang_files
+
+       echo '<form action="cssgen.php?step=3" method="post" id="step2">
+What languages are you wanting to make this stylesheet for?<br /><br />
+Detected languages:<br />';
+
+       foreach ( $lang_files as $lang )
+       {
+               $lang = substr($lang, 0, strpos($lang, '.'));
+               echo "<input type=\"checkbox\" name=\"langs[$lang]\" 
checked=\"checked\" />&nbsp;$lang<br />\n";
+       }
+
+    echo "Select: <a href=\"javascript:select('true')\">All</a>, <a 
href=\"javascript:select('false')\">None</a>, <a 
href=\"javascript:select('invert')\">Invert</a><br />\n"; 
+
+       echo 'If you\'d like any other languages not detected here to be 
supported, please enter
+them here, one per line:<br /><textarea rows="4" cols="20" 
name="extra-langs"></textarea><br />
+';
+
+       echo '<br />Styles:
+<table>
+       <tr><th>Style for the overall code block:</th><td><input type="text" 
name="overall" value="border: 1px dotted #a0a0a0; font-family: \'Courier New\', 
Courier, monospace; background-color: #f0f0f0; color: #0000bb;" /></td></tr>
+       <tr><th>Default Styles</th><td><input type="text" name="default-styles" 
value="font-weight:normal;background:transparent;color:#000; padding-left: 
5px;" /></td></tr>
+       <tr><th>Keywords I (if, do, while etc)</th><td><input type="text" 
name="keywords-1" value="color: #a1a100;" /></td></tr>
+       <tr><th>Keywords II (null, true, false etc)</th><td><input type="text" 
name="keywords-2" value="color: #000; font-weight: bold;" /></td></tr>
+       <tr><th>Inbuilt Functions (echo, print etc)</th><td><input type="text" 
name="keywords-3" value="color: #000066;" /></td></tr>
+       <tr><th>Data Types (int, boolean etc)</th><td><input type="text" 
name="keywords-4" value="color: #f63333;" /></td></tr>
+
+       <tr><th>Comments (//, <!--  --> etc)</th><td><input type="text" 
name="comments" value="color: #808080;" /></td></tr>
+       <tr><th>Escaped Characters (\n, \t etc)</th><td><input type="text" 
name="escaped-chars" value="color: #000033; font-weight: bold;" /></td></tr>
+       <tr><th>Brackets ( ([{}]) etc)</th><td><input type="text" 
name="brackets" value="color: #66cc66;" /></td></tr>
+       <tr><th>Strings ("foo" etc)</th><td><input type="text" name="strings" 
value="color: #ff0000;" /></td></tr>
+       <tr><th>Numbers (1, -54, 2.5 etc)</th><td><input type="text" 
name="numbers" value="color: #ff33ff;" /></td></tr>
+       <tr><th>Methods (Foo.bar() etc)</th><td><input type="text" 
name="methods" value="color: #006600;" /></td></tr>
+</table>';
+
+       echo '<input type="hidden" name="geshi-path" value="' . 
realpath($geshi_path) . '" /><input type="hidden" name="geshi-lang-path" 
value="' . realpath($geshi_lang_path) . '" />
+<input type="submit" value="Step 3" /></form>';
+
+       make_footer();
+}
+// Step 3
+elseif ( $step == 3 )
+{
+       make_header('Step 3');
+       echo '<p>Here is your completed stylesheet. Note that it may not be 
perfect - no regular expression styles are included for one thing,
+you\'ll have to add those yourself (php and xml are just two languages that 
use them), and line numbers are not included, however
+it includes most of the basic information.</p>';
+
+       // Make the stylesheet
+       $part_selector_1 = '';
+       $part_selector_2 = '';
+       $part_selector_3 = '';
+
+       $langs = get_var('langs');
+       $extra_langs = trim(get_var('extra-langs'));
+       if ( $extra_langs != '' )
+       {
+               $l = explode("\r\n", $extra_langs);
+               foreach ( $l as $lng )
+               {
+                       $langs[$lng] = true;
+               }
+       }
+
+
+       foreach ( $langs as $lang => $dummy )
+       {
+               $part_selector_1 .= ".$lang {PART}, ";
+               $part_selector_2 .= ".$lang {PART1}, .$lang {PART2}, ";
+               $part_selector_3 .= ".$lang {PART1}, .$lang {PART2}, .$lang 
{PART3}, ";
+       }
+       $part_selector_1 = substr($part_selector_1, 0, -2);
+       $part_selector_2 = substr($part_selector_2, 0, -2);
+    $part_selector_3 = substr($part_selector_3, 0, -2);
+
+
+       $default_styles = get_var('default-styles');
+       $ol_selector = str_replace('{PART}', 'ol', $part_selector_1);
+       $overall_styles = get_var('overall');
+       $overall_selector = str_replace('{PART}', '', $part_selector_1);
+
+       $stylesheet = "/* GeSHi (c) Nigel McNie 2004 
(http://qbnz.com/highlighter) */";
+
+       if ( $overall != '' )
+       {
+               $stylesheet .= "\n$overall_selector {{$overall_styles}}";
+       }
+       if ( $default_styles != '' )
+       {
+               $default_selector = str_replace(array('{PART1}', '{PART2}'), 
array('.de1', '.de2'), $part_selector_2);
+               $stylesheet .= "\n$default_selector {{$default_styles}}";
+       }
+
+       // Do keywords
+       $keywords_1 = get_var('keywords-1');
+       $keyword_selector_1 = str_replace('{PART}', '.kw1', $part_selector_1);
+       if ( $keywords_1 != '' )
+       {
+               $stylesheet .= "\n$keyword_selector_1 {{$keywords_1}}";
+       }
+
+       $keywords_2 = get_var('keywords-2');
+       $keyword_selector_2 = str_replace('{PART}', '.kw2', $part_selector_1);
+       if ( $keywords_2 != '' )
+       {
+               $stylesheet .= "\n$keyword_selector_2 {{$keywords_2}}";
+       }
+
+       $keywords_3 = get_var('keywords-3');
+       $keyword_selector_3 = str_replace('{PART}', '.kw3', $part_selector_1);
+       if ( $keywords_3 != '' )
+       {
+               $stylesheet .= "\n$keyword_selector_3 {{$keywords_3}}";
+       }
+
+       $keywords_4 = get_var('keywords-4');
+       $keyword_selector_4 = str_replace('{PART}', '.kw4', $part_selector_1);
+       if ( $keywords_4 != '' )
+       {
+               $stylesheet .= "\n$keyword_selector_4 {{$keywords_4}}";
+       }
+
+       // Do other lexics
+       $comments = get_var('comments');
+       $comment_selector = str_replace(array('{PART1}', '{PART2}', '{PART3}'), 
array('.co1', '.co2', '.coMULTI'), $part_selector_3);
+       if ( $comments != '' )
+       {
+               $stylesheet .= "\n$comment_selector {{$comments}}";
+       }
+
+       $esc = get_var('escaped-chars');
+       $esc_selector = str_replace('{PART}', '.es0', $part_selector_1);
+       if ( $esc != '' )
+       {
+               $stylesheet .= "\n$esc_selector {{$esc}}";
+       }
+
+       $brackets = get_var('brackets');
+       $brk_selector = str_replace('{PART}', '.br0', $part_selector_1);
+       if ( $brackets != '' )
+       {
+               $stylesheet .= "\n$brk_selector {{$brackets}}";
+       }
+
+       $strings = get_var('strings');
+       $string_selector = str_replace('{PART}', '.st0', $part_selector_1);
+       if ( $strings != '' )
+       {
+               $stylesheet .= "\n$string_selector {{$strings}}";
+       }
+
+       $numbers = get_var('numbers');
+       $num_selector = str_replace('{PART}', '.nu0', $part_selector_1);
+       if ( $numbers != '' )
+       {
+               $stylesheet .= "\n$num_selector {{$numbers}}";
+       }
+
+       $methods = get_var('methods');
+       $method_selector = str_replace('{PART}', '.me0', $part_selector_1);
+       if ( $methods != '' )
+       {
+               $stylesheet .= "\n$method_selector {{$methods}}";
+       }
+
+       echo "<pre>$stylesheet</pre>";
+
+       make_footer();
+}
+
+?>
\ No newline at end of file

Index: contrib/example.php
===================================================================
RCS file: contrib/example.php
diff -N contrib/example.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ contrib/example.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,193 @@
+<?php
+/**
+ * GeSHi example script
+ *
+ * Just point your browser at this script (with geshi.php in the parent 
directory,
+ * and the language files in subdirectory "../geshi/")
+ * 
+ * @author  Nigel McNie
+ * @version $Id: example.php,v 1.1 2006/09/25 08:46:28 skwashd Exp $
+ */
+
+// Rudimentary checking of where GeSHi is. In a default install it will be in 
../, but
+// it could be in the current directory if the include_path is set. There's 
nowhere else
+// we can reasonably guess.
+if (address@hidden '../geshi.php') {
+    if (address@hidden 'geshi.php') {
+        die('Could not find geshi.php - make sure it is in your include 
path!');
+    } else {
+        $path = './';
+    }
+} else {
+    $path = '../';
+}
+
+if ( isset($_POST['submit']) )
+{
+       if ( get_magic_quotes_gpc() ) $_POST['source'] = 
stripslashes($_POST['source']);
+       if ( !strlen(trim($_POST['source'])) )
+       {
+        $_POST['language'] = preg_replace('#[^a-zA-Z0-9\-_]#', '', 
$_POST['language']);
+               $_POST['source'] = implode('', @file($path . 'geshi/' . 
$_POST['language'] . '.php'));
+               $_POST['language'] = 'php';
+       }
+    
+    // Here's a free demo of how GeSHi works.
+    
+    // First the initialisation: source code to highlight and the language to 
use. Make sure
+    // you sanitise correctly if you use $_POST of course - this very script 
has had a security
+    // advisory against it in the past because of this. Please try not to use 
this script on a
+    // live site.
+       $geshi =& new GeSHi($_POST['source'], $_POST['language']);
+    
+    // Use the PRE header. This means less output source since we don't have 
to output &nbsp;
+    // everywhere. Of course it also means you can't set the tab width.
+       $geshi->set_header_type(GESHI_HEADER_PRE);
+    
+    // Enable CSS classes. You can use get_stylesheet() to output a stylesheet 
for your code. Using
+    // CSS classes results in much less output source.
+       $geshi->enable_classes();
+    
+    // Enable line numbers. We want fancy line numbers, and we want every 5th 
line number to be fancy
+       $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
+    
+    // Set the style for the PRE around the code. The line numbers are 
contained within this box (not
+    // XHTML compliant btw, but if you are liberally minded about these things 
then you'll appreciate
+    // the reduced source output).
+       $geshi->set_overall_style('color: #000066; border: 1px solid #d0d0d0; 
background-color: #f0f0f0;', true);
+    
+       // Set the style for line numbers. In order to get style for line 
numbers working, the <li> element
+    // is being styled. This means that the code on the line will also be 
styled, and most of the time
+    // you don't want this. So the set_code_style reverts styles for the line 
(by using a <div> on the line).
+    // So the source output looks like this:
+    //
+    // <pre style="[set_overall_style styles]"><ol>
+    // <li style="[set_line_style styles]"><div style="[set_code_style 
styles]>...</div></li>
+    // ...
+    // </ol></pre>
+       $geshi->set_line_style('font: normal normal 95% \'Courier New\', 
Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', 
true);
+       $geshi->set_code_style('color: #000020;', 'color: #000020;');
+
+    // Styles for hyperlinks in the code. GESHI_LINK for default styles, 
GESHI_HOVER for hover style etc...
+    // note that classes must be enabled for this to work.
+       $geshi->set_link_styles(GESHI_LINK, 'color: #000060;');
+       $geshi->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
+
+    // Use the header/footer functionality. This puts a div with content 
within the PRE element, so it is
+    // affected by the styles set by set_overall_style. So if the PRE has a 
border then the header/footer will
+    // appear inside it.
+       $geshi->set_header_content('GeSHi &copy; 2004, Nigel McNie. View source 
of example.php for example of using GeSHi');
+       $geshi->set_header_content_style('font-family: Verdana, Arial, 
sans-serif; color: #808080; font-size: 70%; font-weight: bold; 
background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;');
+
+    // You can use <TIME> and <VERSION> as placeholders
+       $geshi->set_footer_content('Parsed in <TIME> seconds,  using GeSHi 
<VERSION>');
+       $geshi->set_footer_content_style('font-family: Verdana, Arial, 
sans-serif; color: #808080; font-size: 70%; font-weight: bold; 
background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;');
+}
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
+<head>
+       <title>GeSHi examples</title>
+       <style type="text/css">
+       <!--
+       <?php
+       if ( isset($_POST['submit']) )
+       {
+        // Output the stylesheet. Note it doesn't output the <style> tag
+               echo $geshi->get_stylesheet();
+       }
+       ?>
+       html {
+               background-color: #f0f0f0;
+       }
+       body {
+               font-family: Verdana, Arial, sans-serif;
+               margin: 10px;
+               border: 2px solid #e0e0e0;
+               background-color: #fcfcfc;
+               padding: 5px;
+       }
+       h2 {
+               margin: .1em 0 .2em .5em;
+               border-bottom: 1px solid #b0b0b0;
+               color: #b0b0b0;
+               font-weight: normal;
+               font-size: 150%;
+       }
+       h3 {
+               margin: .1em 0 .2em .5em;
+               color: #b0b0b0;
+               font-weight: normal;
+               font-size: 120%;
+       }
+       #footer {
+               text-align: center;
+               font-size: 80%;
+               color: #a9a9a9;
+       }
+       #footer a {
+               color: #9999ff;
+       }
+       textarea {
+               border: 1px solid #b0b0b0;
+               font-size: 90%;
+               color: #333;
+               margin-left: 20px;
+       }
+       select, input {
+               margin-left: 20px;
+       }
+       p {
+               font-size: 90%;
+               margin-left: .5em;
+       }
+       -->
+       </style>
+</head>
+<body>
+<h2>GeSHi Example Script</h2>
+<p>To use this script, make sure that <strong>geshi.php</strong> is in the 
parent directory or in your
+include_path, and that the language files are in a subdirectory of GeSHi's 
directory called <strong>geshi/</strong>.</p>
+<p>Enter your source and a language to highlight the source in and submit, or 
just choose a language to
+have that language file highlighted in PHP.</p>
+<?php
+if ( isset($_POST['submit']) )
+{
+    // The fun part :)
+       echo $geshi->parse_code();
+       echo '<hr />';
+}
+?>
+<form action="example.php" method="post">
+<h3>Source to highlight</h3>
+<textarea rows="10" cols="60" name="source"></textarea>
+<h3>Choose a language</h3>
+<select name="language">
+<?php
+if (!($dir = @opendir(dirname(__FILE__) . '/geshi'))) {
+    if (!($dir = @opendir(dirname(__FILE__) . '/../geshi'))) {
+        echo '<option>No languages available!</option>';
+    }
+}
+$languages = array();
+while ( $file = readdir($dir) )
+{
+       if ( $file == '..' || $file == '.' || !stristr($file, '.') || $file == 
'css-gen.cfg' ) continue;
+       $lang = substr($file, 0,  strpos($file, '.'));
+    $languages[] = $lang;
+}
+closedir($dir);
+sort($languages);
+foreach ($languages as $lang) {
+    echo '<option value="' . $lang . '">' . $lang . "</option>\n";
+}
+
+?>
+</select><br />
+<input type="submit" name="submit" value="Highlight Source">
+</form>
+<div id="footer">GeSHi &copy; Nigel McNie, 2004, released under the GNU GPL<br 
/>
+For a better demonstration, check out the <a 
href="http://qbnz.com/highlighter/demo.php";>online demo</a>
+</body>
+</html>
\ No newline at end of file

Index: docs/BUGS
===================================================================
RCS file: docs/BUGS
diff -N docs/BUGS
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/BUGS   25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,32 @@
+
+                      BUGS - list of known bugs in GeSHi
+                               Version 1.0.7.14
+
+- Putting a > inside an HTML comment will close the comment abruptly. There's 
nothing that
+  can be done about this (at least in the 1.0.X series of GeSHi), but version 
1.2 will fix
+  this bug. Likewise for putting ?> inside a PHP string when in strict mode.
+- Number highlighting is quite poor [possibly better now]
+- I'm not happy with URLS - there still could be extra bugs, and it's rather 
unflexible
+  (see TODO for a possible fix)
+- "Important" sections for some reason seem to have their spans added after 
every
+  newline up until the next lexic, instead of stopping at the <END GeSHi> 
part. In fact,
+  context sensitiveness is quite poor...
+- Using the extra line number highlighting feature without actually using line 
numbers
+  will result in malformed XHTML (not sure about this one though...)
+- Slow!!! Especially for source with lots of strings in it. GeSHi will work 
acceptably
+  for sourcecode under 5K (for simple language files like SQL, a 100K file can 
be
+  highlighted in just 6 seconds), but above about 25K things get a little 
slow... If
+  you're using this as part of some larger software, you may want to think 
about
+  making some sort of "cache" effect to speed things up and reduce server load.
+- Using encoding other than ISO-8859-1 is a problem, however it hasn't quite 
been pinpointed yet
+- The result is built by string replacement instead of by building another 
string based
+  on the source, that would be much safer. The focus of releases beyond 1.0.7 
will be on
+  changing this behaviour, which may well fix some of the other bugs mentioned 
above.
+- As of 1.0.7.1, dots (.) are allowed before keywords. This may change 
highlighting of some
+  things slightly, if you notice anything odd about the highlighting then 
please report
+  it to me.
+- Perl/Javascript /.../ regex syntax isn't supported.
+Send any bug reports to address@hidden, or submit them via the bug tracker at
+sourceforge (http://sourceforge.net/tracker/?group_id=114997&atid=670231)
+
+                  $Id: BUGS,v 1.1 2006/09/25 08:46:28 skwashd Exp $

Index: docs/CHANGES
===================================================================
RCS file: docs/CHANGES
diff -N docs/CHANGES
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/CHANGES        25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,293 @@
+
+              CHANGES - Changelog for GeSHi (geshi.php only)
+
+Changes to the code are listed under the version they occured in, with who 
suggested
+it by each one (if there's nobody listed as suggesting it I dreamed it up :)). 
Users
+who suggested an idea often also provided the code that was used as a basis 
for the
+changes - thanks to all who suggested these ideas and gave me the code to show 
me how!
+
+Language files listed under each version were made by the author beside them, 
and then
+modified by me for consistency/bug fixing.
+
+Please send any bug reports to address@hidden, or use the bug report tracker
+at sourceforge (http://sourceforge.net/tracker/?group_id=114997&atid=670231)
+
+Version 1.0.7.14
+  -  Added language files
+     * thinBasic (Eros Olmi)
+     * LaTeX (Matthais Pospiech)
+  -  Removed extra newlines at the end of some files
+  -  Fixed SF bug 1556404 - check before using $this in language files
+     (Clemens Weiß)
+Version 1.0.7.13
+  -  Added language files
+     * Uno IDL (Cedric Bosdonnat)
+  -  Fixed add_ids causing odd XHTML (RyanJ)
+  -  Fixed extra newline being added to end of result (Andreas Gohr)
+Version 1.0.7.12
+  -  Fixed lines being collapsed when they contain just a space (artlover)
+  -  Allowed matching for regexes using start/end matchers at the start/end
+     of the code (Sheri)
+  -  Added (dubious) fix for google "I'm feeling lucky" search for java 
keywords
+     (dubious in that it doesn't work for me)
+  -  mysql - Made the symbols into their own keyword group as the symbol group
+     isn't used. Added a style for multiline comments.
+  -  Added a couple of php5 keywords to the php language files.
+  -  Allow XML tags to have dashes.
+  -  Changed LANG_NAME for many languages to be more sensible/correct case
+     (Matthias Mohr)
+  -  Added case-sensitivity indices to python
+Version 1.0.7.11
+  -  Added language files
+     * Smalltalk (Bananeweizen)
+  -  Minor style improvements to matlab
+  -  Moved a couple of functions to the correct group in smarty (arwan)
+Version 1.0.7.10
+  -  Added language files
+     * TCL (Reid van Melle)
+     * Winbatch (Craig Storey)
+     * Groovy (Ivan F. Villanueva B.)
+     * Text (SmokingRope)
+     * Reg (SmokingRope)
+  -  Removed \ as an escape character in T-SQL (Dave Jackson)
+  -  Reset extra lines to highlight if source is changed (Diogo Resende)
+  -  Allow setting of lexic permissions in language files (SmokingRope)
+  -  Allow regexes to set a CSS class name (SmokingRope)
+  -  Added URL support to DOS language (mastrboy)
+Version 1.0.7.9
+  -  Added language files
+     * Fortran (Cedric Arrabie)
+     * SAS (Galen Johnson)
+     * CFDG (John Horigan)
+  -  Fixed & in URL in java5 (ClemensWeiß)
+  -  Added MD5 and SHA1 to mysql keywords (polarina)
+  -  Fixes for highlight_lines_extra with line numbers (ithcy)
+  -  Fixed backslash characters being removed (ArTourter)
+Version 1.0.7.8
+  -  Fixed blank at start of MySQL file (W. Tasin)
+  -  Fixed smarty functions being broken (ultrabob)
+  -  Changed keyword and regexp detection and parsing
+     slightly to allow more "meta characters" (like #) in
+     keywords
+  -  Minor fixes for XML and GML
+Version 1.0.7.7
+  -  Added language files
+     * T-SQL (Duncan Lock)
+     * Robots.txt (Christian Lescuyer)
+     * AutoIT (mastrboy)
+     * Java 5 (Clemens Bruckmann)
+     * ColdFusion (Diego)
+  -  A few keyword changes in java, removed :: object splitter (amphi)
+  -  Now using a simpler regular expression for numbers (Brice Bernard)
+  -  Fixed ah, bh etc. regs being highlighted as numbers (Unknown)
+Version 1.0.7.6
+  -  Fix backtick-string highlighting in ruby (Juan J. Mart�nez)
+  -  Add =begin multiline comments in ruby (Juan J. Mart�nez)
+  -  Added support for :keywords and ::access in lisp (Denis Mashkevich)
+  -  Prevented number highlighting if they are just after underscores (Joce)
+  -  Removed escape characters for strings in XML and HTML (floele)
+  -  Added instanceof keyword to java (jgottschling)
+  -  Fixed comments in ASP (SBD)
+  -  Removed unnecessary keyword style index from ini
+  -  Added support for " strings in ini
+  -  Removed unnecessary regex style index from blitzbasic
+  -  Keyword case of URL-ed keywords should be defined by language file (Benny 
Baumann)
+  -  Added "Hardquote" feature, provides more accurate string highlighting 
(Cliff Stanford)
+  -  Used hardquote support for @"..." strings in C# (Cliff Stanford)
+  -  Used hardquote support for ' strings in perl (Cliff Stanford)
+  -  Fixed setting of language path (Cliff Stanford)
+  -  Display source correctly formatted with line numbers (if requested) if an 
error
+     has occured (several people)
+  -  Having no source to highlight is not an error condition anymore
+  -  Delphi language updated to include more keywords and types (BenBE)
+  -  Updated NSIS to version 2.11 (deguix)
+Version 1.0.7.5
+  -  Fix for using escape characters to escape newlines breaking XHTML 
compliance (Yves Goergen)
+  -  Fixed method highlighting in VB (Matt Beale)
+  -  Fixed multiline comment highlighting in SQL (MrBaseball34)
+  -  Fixed two ">" symbols being outputted when using a footer but not CSS 
classes (MrBaseball34)
+  -  Marked important block stuff as deprecated
+  -  Some documentation tidyup
+  -  Updated GML language file (Jos� Jorge Enr�quez Rodr�guez)
+  -  THANKS file tidied up
+  -  Fixed double </a> for elements in HTML (Yves Goergen)
+  -  Added some keywords for ASM (Dreuzzo)
+Version 1.0.7.4
+  -  Added language files
+     * MySQL (Carl F�rstenberg)
+     * BlitzBasic (P�draig O`Connel)
+  -  Fixed up geshi_highlight function: it now correctly uses <code> instead 
of <div> (Remi Faure)
+  -  When using GESHI_HEADER_NONE, remove the <ol> if line numbering is not 
enabled
+  -  Commented example.php so people can use it as a guide better
+  -  Fixed extra newline being generated if a comment is at the end
+     of the source (many people, including Yves Goergen)
+  -  Fixed up some documentation issues
+  -  Some minor language file fixes (C++, Lua) (Lua fixes by chromix)
+  -  Fixed up no </span> in XML and other strict languages (regression from 
1.0.7.3 fix: removed
+        unnecessary </span> when using strict mode) (Daniel Ecer, drskrud),
+Version 1.0.7.3
+  -  Added language files
+     * Scheme (Jon Raphaelson)
+     * Ocaml and Ocaml-brief (Flaie)
+     * Ruby (Amit Gupta)
+  -  Make urls generated for java highlighting XHTML compliant (Tim Van 
Wassenhove)
+  -  Removed unnecessary </span> when using strict mode (Tim Van Wassenhove)
+  -  Fixed warning in dos.php about undefined constant (Tim Van Wassenhove)
+  -  Fixed security hole in contrib/example.php - able to view any file if 
source
+     not set and language is set to wierd value (Maksymilian Arciemowicz)
+Version 1.0.7.2
+  -  Added language files
+     * Inno (Thomas Klinger)
+     * Ini (Deguix)
+     * DOS (Batchfile) (Alessandro Staltali)
+     * Applescript (Stephan Klimek)
+     * Freebasic (Roberto Rossi)
+     * SDLBasic (Roberto Rossi)
+     * ActionScript (links to French documentation) (NikO)
+  -  NSIS language file updated (deguix)
+  -  Lua language file updated (Roberto Rossi)
+  -  Bugfix: Styles incorrectly overriding default styles instead of being 
merged
+     in set_*_styles methods (Stebastian Werner)
+  -  Added GESHI_HEADER_NONE as valid header type. This still allows header 
content.
+Version 1.0.7.1
+  -  Added language files:
+     * Div (Gabriel Lorenzo)
+     * GML (Jos� Jorge Enr�quez Rodr�guez)
+     * Eiffel (Zoran Simic)
+  -  Minor change to rules regarding when keywords can appear - now dots (.) 
are
+     allowed before keywords. (NikO)
+  -  Bugfix: the line style for non-fancy lines when fancy highlighting is 
enabled
+     is now applied (Amit Gupta)
+Version 1.0.7
+  -  Added language files:
+     * Diff (Conny Brunnkvist)
+     * VHDL (Alexander Krause)
+     * D (Thomas Kuehne)
+     * Matlab (Florian Knorn)
+  -  Python highlighting improved (thither, Federico Quagliata)
+  -  Changed file comments to use phpdoc syntax, and changed code style to be 
more
+        like PEAR
+  -  Fixed bug in set_code_style: Second parameter is now optional
+  -  The $_GESHI_ERRORS array is gone, error messages are internal to the 
GeSHi class
+  -  Changed name of XML language to XML from HTML
+  -  Removed min and max tab width checks
+  -  Backported GeSHi 1.1.X's automatic language file path detection so you no 
longer
+     need to use the third parameter of the constructor or set_language_path 
except for
+     special circumstances.
+  -  Source is checked to make sure it is not empty else an error occurs
+  -  Removed excess characters after ?> in ada.php, apache.php and cpp.php 
that caused
+     http headers to be sent (psichron)
+  -  Removed second "foreach" keyword for smarty language file that was causing
+     duplication (Iss)
+  -  Added underscore to allowed characters in match for XML tags (anonymous)
+  -  Added some missing java keywords like "abstract" and "transient"
+  -  Added "list" and "continue" PHP keywords
+  -  set_language resets error status and strict mode (Andrew Black)
+  -  Removed margin:0 declaration from cssgen.php (Andrzej Kubaszek)
+  -  Fixed multiline comment selector in cssgen.php (Andrzej Kubaszek)
+Version 1.0.6
+  -  Added support for smart tabs - tabs that behave just like normal tabs 
when in
+     GESHI_HEADER_DIV mode.
+  -  Partial patch for UTF-8 encoding applied (doesn't quite work however...)
+Version 1.0.5
+  -  Added language files:
+     * MPASM (Bakalex)
+     * Oracle 8 (Guy Wicks)
+  -  Fixed bug where not using an encoding type would sometime result in 
warnings (although
+     there still seems to be issues with encoding in general that I'm trying 
to gather more
+     data on) (Alexander Spennemann)
+  -  Removed "margin: 0" from <ol> in an attempt to make line numbers visible 
in IE again
+     by default (untested, but I don't really care if it works... get firefox! 
;))
+  -  Added note on php5 support (Karim Scheik)
+  -  Added two new methods: load_from_file and 
get_language_name_from_extension, that can
+     help automate file highlighting (though the extension array at this time 
is quite bare)
+     (David Gartner, Brian Cheesman)
+Version 1.0.4
+  -  Fixed many version-reporting bugs (Jack Lloyd)
+  -  Fixed bug where methods were not having the correct CSS generated for them
+     by get_stylesheet() (Jack Lloyd)
+  -  Added new keywords to C and C++ files (Jack Lloyd)
+  -  Added section on case sensitivity to documentation that wasn't in the 
other versions
+Version 1.0.3
+  -  Added language files:
+     * Smarty (Alan Juden)
+     * C# (Alan Juden)
+     * VB.NET (Alan Juden)
+     * C for Macs (M. Uli Kusterer)
+     * Objective C (M. Uli Kusterer)
+  -  Links can have a target attribute (Andreas Gohr)
+  -  Fixed multiline string bug if not using classes
+  -  Added method set_encoding that allows you to set the character
+     set used by calls to htmlentities() in GeSHi
+  -  You can now specify an array of object splitters, and each
+     type of method separated by each object splitter can be highlighted
+     differently
+  -  If a language uses a case sensitive keyword group and that group
+     has a URL associated with it, the keyword will not be lowercased
+     in the URL (M. Uli Kusterer)
+Version 1.0.2
+  -  Added language files:
+     * Actionscript (Steffen Krause)
+     * ASP (Amit Gupta)
+     * Bash (Andreas Gohr)
+     * CADDCL (Roberto Rossi)
+     * CadLisp (Roberto Rossi)
+     * C++ (Dennis Bayer)
+     * Delphi (J�rja Norbert)
+     * Javascript (Ben Keen)
+     * Lisp (Roberto Rossi)
+     * OpenOffice.org BASIC (Roberto Rossi)
+     * Perl (Andreas Gohr and Ben Keen)
+     * Python (Roberto Rossi)
+     * VisualFoxPro (Roberto Armellin)
+     * XML (Nigel McNie, from an idea/file by Christian Weiske)
+  -  Added contrib/ directory with script to create one external stylesheet
+     from many languages(base script by Andreas Gohr, modified by Nigel McNie),
+     and an example script (needs lotsa work...)
+  -  Code lines can have their own unique ID (for use with javascript)
+     (suggested by Andreas von Oettingen)
+  -  Certain rows can be specified to be highlighted differently (suggested by
+     Andreas von Oettingen)
+  -  Getter available for human-readable language name (suggested by Simon 
Patterson)
+  -  Line numbers aren't highlighted when a user selects the code
+  -  Contextual highlighting with <BEGIN GeSHi> ... <END GeSHi> in the code 
(which
+     can be disabled)
+  -  Functions can be made into URLs to appropriate documentation (suggested
+     by cybot_tm). Also thanks to Marcin Gryszkalis for the links for C, Java
+     and Perl.
+  -  Code can have a header and footer
+  -  Time taken to parse the code is recorded and made available with the 
get_time()
+     method
+  -  error() now returns a human-readable error message
+  -  Function geshi_highlight added to make it even easier to highlight on the 
fly
+  -  Advanced regular expression handling
+  -  Bug fixes to lexic_permission handling
+
+Version 1.0.1
+  -  Added methods set_symbols_style() and set_symbols_highlighting(). These 
should be used
+     instead of set_brackets_style and set_brackets_highlighting respectively.
+  -  Added a new field - language_path - that can be set either when the 
constructor is
+     called, or by the new method set_language_path(), that specifies a path 
to the directory
+     containing the language files (bug reported by bbspliff)
+  -  Added a new method set_case_keywords(), that allows the auto-casing 
feature to be
+     changed on the fly instead of simply being specified in the language file
+  -  If there is an error the source that is outputted is now handled much 
better
+  -  Lines are broken in the source only by \n now, not by \r\n (to save on 
output source)
+  -  Indentation moved into its own method
+  -  Method header() modified to allow the user to choose whether the code is 
surrounded in
+     a <div> or a <pre> (see documentation for benefits of both). Method 
footer() likewise
+     modified.
+  -  Method get_stylesheet() modified so that a smaller comment is outputted 
in economy mode,
+     and bugs with when line number classes are outputted in economy mode have 
been fixed
+  -  Bug where spans had two quotes at the end of the attributes fixed (ie. 
<span style=".."">)
+  -  Added language files:
+     * Ada (Tux)
+     * Apache log file (Tux)
+     * ASM (Tux)
+     * NSIS (Tux)
+     * Pascal (Tux)
+
+Version 1.0.0
+  -  Initial Release
+
+                    $Id: CHANGES,v 1.1 2006/09/25 08:46:28 skwashd Exp $

Index: docs/COPYING
===================================================================
RCS file: docs/COPYING
diff -N docs/COPYING
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/COPYING        25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Index: docs/README
===================================================================
RCS file: docs/README
diff -N docs/README
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/README 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,35 @@
+
+        GeSHi - GEneric Syntax HIlighter
+        --------------------------------
+                Version 1.0.7.14
+
+Author:          Nigel McNie
+Email:           address@hidden
+GeSHi Website:   http://qbnz.com/highlighter
+
+GeSHi is a generic syntax highlighter, written in PHP. You simply
+input the source code you wish to highlight with the language you
+wish to use, and the output will be a file syntax highlighted to
+XHTML standards.
+
+For more information on how to use GeSHi, please consult the
+documentation. If you got this readme from a GeSHi package, then
+the documentation is available in the docs/ directory. Documentation
+is also available at http://qbnz.com/highlighter/documentation.php
+
+If you think you've found a bug in GeSHi, contact me with a bug
+report at address@hidden, or submit it to the bug tracker at
+http://sourceforge.net/tracker/?group_id=114997&atid=670231. Be
+aware that minor highlighting errors may well just be incorrect
+language files, but if you do find something major please contact me.
+
+And if you're using GeSHi as a plugin/mod for some other software,
+please tell me about it! It's worth a link to you, and I can give
+you specialist help if you need it.
+
+GeSHi is free software, released under the GNU GPL. Please see the
+COPYING file for more information. If you do modify this program,
+please tell me about it! Perhaps you've made a good improvement that
+I can learn from :)
+
+     $Id: README,v 1.1 2006/09/25 08:46:28 skwashd Exp $

Index: docs/THANKS
===================================================================
RCS file: docs/THANKS
diff -N docs/THANKS
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/THANKS 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,108 @@
+
+             THANKS - List of credits for GeSHi
+
+I owe these people/groups my thanks for help with GeSHi. Thanks, guys!
+
+- Amit Gupta            - Thanks for all that constructive criticism - it's
+                          a great help for making GeSHi even better. And
+                          thanks for the Wordpress plugin! (Anyone who is
+                          interested in the plugin can visit:
+                          
http://blog.igeek.info/still-fresh/category/wp-plugins/igsyntax-hiliter/)
+- Andreas Gohr          - Thanks for language files and for using GeSHi for 
DokuWiki
+                          (http://www.splitbrain.org/dokuwiki/wiki:dokuwiki). 
And thanks
+                          for all your criticisms and for that 
stylesheet-maker code :).
+                          Also, thanks for the UTF-8 patch.
+- Andreas von Oettingen - Thanks for those great ideas! :)
+- bbspliff              - Thanks for pointing out that bug (pity I already
+                          found it though ;))
+- Benny Baumann         - Thanks for your innumerable suggestions for 
improvements, and your
+                          work on Delphi support :)
+- Ben Keen              - Thanks for the language files and pointing out some
+                          ideas for future releases. Lookin' forward to seeing 
that
+                          software soon! ;)
+- Brian Cheesman        - Thanks for using GeSHi in phpCvsView, and for the 
suggestion about
+                          extension => language lookup
+- Christian Weiske      - Thanks for the inspiration for creating advanced 
regexp
+                          highlighting :D
+- Cliff Stanford        - Thanks for the hardquote support for C# and Perl 
(can be used elsewhere
+                          I'm sure)
+- David Gartner         - Thanks for using GeSHi in net2ftp, and for the idea 
about a load_from_file
+                          method
+- forum.qbasicnews.com  - Thanks for putting up with the crappy versions
+                          that I "forced" on you guys before ;)
+- Jack Lloyd            - Thanks for pointing out the versioning and method 
CSS bugs, and giving
+                          me the extra C/C++ keywords
+- Karim Scheik          - Thanks for the php5 support report
+- Marcin Gryszkalis     - Thanks for those links for C, Java, Perl
+- M. Uli Kusterer       - Thanks for the idea about URL case conversion
+- Roberto Armellin      - Thanks for pointing out some flaws in GeSHi (that 
will be solved
+                          in 1.2 guaranteed)
+- Sterling Christensen  - Thanks for those links to language specs
+- Tux                   - Thanks for making all those language files :D
+- zbw                   - Thanks for proving a phpBB port was possible
+
+PEOPE WHO MADE LANGUAGE FILES
+
+- Actionscript Steffen Krause (french translation by NikO)
+- Ada                  Tux
+- Apache               Tux
+- Applescript  Stephan Klimek
+- ASM                  Tux
+- ASP                  Amit Gupta
+- AutoIT               mastrboy
+- Bash                 Andreas Gohr
+- BlitzBasic   P�draig O`Connel
+- C++                  Dennis Bayer, M. Uli Kusterer
+- C#                   Alan Juden
+- C for Macs   M. Uli Kusterer
+- CADDCL               Roberto Rossi
+- CadLisp              Roberto Rossi
+- CDFG                 John Horigan
+- ColdFusion   Diego
+- Delphi               J�rja Norbert
+- Div                  Gabriel Lorenzo
+- DOS                  Alessandro Staltari
+- Eiffel               Zoran Simic
+- FreeBasic            Roberto Rossi
+- Fortran              Cedric Arrabie
+- GML                  Jos� Jorge Enr�quez Rodr�guez
+- Groovy                       Ivan F. Villanueva B.
+- Ini                  Deguix
+- Inno                 Thomas Klinger
+- Java 5               Clemens Bruckmann
+- Javascript   Ben Keen
+- LaTeX         Matthais Pospiech
+- Lisp                 Roberto Rossi
+- Lua                  Roberto Rossi
+- MPASM                        Bakalex
+- MySQL                        Carl F�rstenberg
+- NSIS                 Tux (updated by Deguix)
+- Objective C  M. Uli Kusterer
+- Ocaml                        Flaie
+- Ocaml-brief  Flaie
+- OpenOffice.org BASIC Roberto Rossi
+- Oracle 8             Guy Wicks
+- Pascal               Tux
+- Perl                 Andreas Gohr, Ben Keen
+- Python               Roberto Rossi
+- Reg                  SmokingRope
+- Robots               Christian Lescuyer
+- Ruby                 Amit Gupta
+- SAS                  Galen Johnson
+- SDLBasic             Roberto Rossi
+- Scheme                       Jon Raphaelson
+- Smalltalk                    Bananeweizen
+- Smarty                       Alan Juden
+- T-SQL                        Duncan Lock
+- Text                 SmokingRope
+- TCL                  Reid van Melle
+- thinBasic     Eros Olmi
+- Uno IDL              Cedric Bosdonnat
+- VB.NET               Alan Juden
+- VisualFoxPro Roberto Armellin
+- Winbatch                     Craig Storey
+
+Do you want your name in here? Help me out! Make a language file, or suggest a 
new
+feature, or make a plugin for GeSHi for some other software, then tell me 
about it!
+
+              $Id: THANKS,v 1.1 2006/09/25 08:46:28 skwashd Exp $

Index: docs/TODO
===================================================================
RCS file: docs/TODO
diff -N docs/TODO
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/TODO   25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,66 @@
+
+       TODO - List of things to do as of 2005/01/29
+
+Suggestions for things to add are welcome, if you have a feature request you
+can either post it to the forums:
+
+http://qbnz.com/highlighter/forum.php
+
+Or to the feature request tracker:
+
+http://sourceforge.net/tracker/?group_id=114997&atid=670234
+
+
+  TODO for version 1.0.8
+
+- Rewrite parse_code method and parse_non_string_part method to use build
+  rather than replace method of highlighting. This should speed things up
+  while making highlighting much "safer"
+- Rework the load_from_file method and the one for getting a file extension,
+  as documented in the source.
+- Add option for "standards compliant" or "default" modes, where standards
+  compliance generates the <pre> tags within the <li>s and non compliant mode
+  does what happens currently.
+
+
+  TODO for version 1.2.0
+
+- Rewrite engine to use remove/replace method (will hopefully almost
+  eliminate the need for regular expressions except for numbers/methods
+  etc). This will also assist for making different output formats [DONE]
+- "Intelligent" output format - eg if the user doesn't want lines to
+  wrap and wants line numbers don't use <ol>, use the <table> method
+  instead. (This saves on output)
+- Clear split between "public" and "private" methods [DONE]
+- PHP5 version
+- "Themes" for styles - basically pre-made stylesheets that can be used
+  to highlight code of any language in a similar manner [DONE]
+- "Dialects" for languages - eg php4, php5. One master language definition
+  file, and a bunch of "specialised" dialect files for each language
+  Ability to specify a "specialised" dialect as default? [DONE]
+- Look at load/memory usage and try to reduce
+- Make tabs into tab-stops like a normal editor [DONE]
+- Ability to add more than one multiline comment or string [DONE]
+- Ability to specify that strings cannot be multiline [DONE]
+- Create a "wrapper" class for ultra-easy use
+- Code written in a style that conforms to a phpdoc utility [DONE, PEAR]
+- Dig functions/methods out of code and where they are called make an internal
+  link back to their definition
+
+
+  TODO for version 2.0.0
+
+- Support for multiple output formats (XHTML, XML, PDF, RTF etc) [DONE IN 1.2]
+- Support for auto-indent/code "beautifing"
+- Option for "Lite" highlighting - aims for speed and low server load
+- "Intelligent" highlighting inside comments, and ability to highlight
+  source in multiple languages at once (eg PHP+HTML) [DONE IN 1.2]
+- Perhaps a script on the GeSHi site that would map urls to appropriate
+  definitions and relocate the user? (eg, java documentation is
+  structured in such a way that urls are not able to be used with GeSHi.
+  Instead the URL could become:
+  http://qbnz.com/highlighter/redirect.php?lang=java&kw=KeyWord
+  and that script would redirect to the correct location.
+  [BETTER FIX IN 1.2]
+
+              $Id: TODO,v 1.1 2006/09/25 08:46:28 skwashd Exp $

Index: docs/geshi-doc.html
===================================================================
RCS file: docs/geshi-doc.html
diff -N docs/geshi-doc.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/geshi-doc.html 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,2560 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
+<html lang="en" xml:lang="en">
+<head>
+       <title>GeSHi Documentation</title>
+       <style type="text/css">
+       <!--
+               html {
+                       background-color: #e6e6e6;
+               }
+               body {
+                       font-family: Verdana, Arial, sans-serif;
+                       margin: 10px;
+                       border: 2px solid #d0d0d0;
+                       background-color: #f6f6f6;
+                       padding: 10px;
+               }
+               p, ul, ol, div, blockquote {
+                       font-size: 80%;
+                       line-height: 140%;
+                       letter-spacing: 1px;
+                       color: #002;
+               }
+               acronym {
+                       border-bottom: 1px dotted #303030;
+                       cursor: help;
+               }
+               blockquote {
+                       font-weight: bold;
+               }
+               pre {
+                       border: 1px solid #c0e6ff;
+                       background-color: #e0e8ef;
+                       color: #002;
+               }
+               hr {
+                       height: 0;
+                       border: none;
+                       border-top: 1px dotted #404040;
+                       width: 75%;
+               }
+               var {
+                       color: blue; font-style: normal; font-family: monospace;
+               }
+               li {
+                       padding-bottom: 2px;
+               }
+               ul li {
+                       font-size: 12px;
+               }
+               ul ul li {
+                       font-size: 12px;
+               }
+               ul ul ul li {
+                       font-size: 12px;
+               }
+               .note {
+                       border: 1px solid yellow;
+                       background-color: #ffc;
+                       color: #220;
+                       padding: 5px;
+                       margin: 1em 0 0 .75em;
+               }
+               .caution {
+                       border: 6px double red;
+                       background-color: #fcc;
+                       color: #200;
+                       padding: 5px;
+                       margin: 1em 0 0 .75em;
+               }
+               .caution p:first-child, .note p:first-child {
+                       margin-top: 0;
+               }
+               .caution-header {
+                       border: 1px solid red;
+                       border-width: 1px 2px 2px 1px;
+                       margin-top: -1.6em;
+                       background-color: #fcc;
+                       width: 10%;
+                       font-weight: bold;
+                       text-align: center;
+                       color: #600;
+               }
+               .note-header {
+                       border: 1px solid #ff0;
+                       border-width: 1px 2px 2px 1px;
+                       margin-top: -1.2em;
+                       background-color: #ffc;
+                       width: 10%;
+                       font-weight: bold;
+                       text-align: center;
+                       color: #660;
+               }
+               .nav {
+                       font-size: 70%;
+               }
+               .nav a {
+                       color: #707070;
+                       border: 1px solid #a0a0a0;
+                       border-width: 0 1px 1px 1px;
+                       border-top: 1px dotted #c0c0c0;
+                       text-decoration: none;
+                       padding: 1px 2px;
+                       background-color: #e0e0e0;
+                       -moz-border-radius-bottomleft: 3px;
+                       -moz-border-radius-bottomright: 3px;
+               }
+               h1, h2 {
+                       margin-top: 0;
+                       margin-bottom: 0;
+                       text-align: center;
+                       color: #404060;
+               }
+               h2 {
+                       text-align: left;
+               }
+               h3 {
+                       border-bottom: 1px dotted #b0b0b0;
+                       margin-top: 2em;
+                       border-top: 1px dotted #b0b0b0;
+                       background-color: #ddd;
+                       margin-bottom: 0;
+               }
+               h4 {
+                       margin-top: 1.6em;
+                       border-bottom: 1px dotted #c0c0c0;
+                       margin-bottom: 0;
+               }
+               h5 {
+                       border-bottom: 1px dotted #d0d0d0;
+                       margin-top: 1.2em;
+                       margin-bottom: 0;
+               }
+               h3, h4, h5 {
+                       color: #707070;
+                       font-weight: normal;
+               }
+               a {
+                       color: #7777ff;
+               }
+       -->
+       </style>
+</head>
+<body>
+<h1 id="top">GeSHi Documentation</h1>
+<h5 style="text-align: center;">Version 1.0.7.14</h5>
+<pre>Author:          Nigel McNie
+Copyright:       &copy; Nigel McNie, 2004
+Email:           <a href="mailto:address@hidden";>address@hidden</a>
+GeSHi Website:   <a 
href="http://qbnz.com/highlighter";>http://qbnz.com/highlighter</a></pre>
+
+<p>This is the documentation for <acronym>GeSHi</acronym> - Generic Syntax 
Highlighter.
+The most modern version of this document is available on the web -
+go to <a 
href="http://qbnz.com/highlighter/documentation.php";>http://qbnz.com/highlighter/documentation.php</a>
 to view it.</p>
+
+<p>Any comments, questions, confusing points? Please <a 
href="mailto:address@hidden";>contact me!</a> I
+need all the information I can get to make the use of GeSHi and
+everything related to it (including this documentation) a breeze.</p>
+
+<h2 id="contents">Contents</h2>
+
+<ul>
+       <li><a href="#introduction">1. Introduction</a></li>
+       <ul>
+               <li><a href="#features">1.1 Features</a></li>
+               <li><a href="#about-geshi">1.2 About GeSHi</a></li>
+               <li><a href="#credits">1.3 Credits</a></li>
+               <li><a href="#feedback">1.4 Feedback</a></li>
+       </ul>
+
+       <li><a href="#the-basics">2. The Basics</a></li>
+       <ul>
+               <li><a href="#getting-geshi">2.1 Getting GeSHi</a></li>
+               <li><a href="#installing-geshi">2.2 Installing GeSHi</a></li>
+               <ul>
+                       <li><a href="#requirements">2.2.1 Requirements</a></li>
+                       <li><a href="#extracting-geshi">2.2.2 Extracting 
GeSHi</a></li>
+                       <li><a href="#installation">2.2.3 Installation</a></li>
+               </ul>
+               <li><a href="#basic-usage">2.3 Basic Usage</a></li>
+       </ul>
+
+       <li><a href="#advanced-features">3. Advanced Features</a></li>
+       <ul>
+               <li><a href="#the-code-container">3.1 The Code 
Container</a></li>
+               <li><a href="#line-numbers">3.2 Line Numbers</a></li>
+               <ul>
+                       <li><a href="#enabling-line-numbers">3.2.1 Enabling 
Line Numbers</a></li>
+                       <li><a href="#styling-line-numbers">3.2.2 Styling Line 
Numbers</a></li>
+                       <li><a href="#starting-line-numbers">3.2.3 Choosing a 
Start Number</a></li>
+               </ul>
+               <li><a href="#using-css-classes">3.3 Using 
<acronym>CSS</acronym> Classes</a></li>
+               <ul>
+                       <li><a href="#enabling-css-classes">3.3.1 Enabling CSS 
Classes</a></li>
+                       <li><a href="#setting-css-class-id">3.3.2 Setting the 
CSS Class/ID</a></li>
+                       <li><a href="#getting-stylesheet">3.3.3 Getting the 
Stylesheet</a></li>
+                       <li><a href="#using-an-external-stylesheet">3.3.4 Using 
an External Stylesheet</a></li>
+               </ul>
+               <li><a href="#changing-styles">3.4 Changing Styles</a></li>
+               <ul>
+                       <li><a href="#the-overall-styles">3.4.1 The Overall 
Styles</a></li>
+                       <li><a href="#line-number-styles">3.4.2 Line Number 
Styles</a></li>
+                       <li><a href="#setting-keyword-styles">3.4.3 Setting 
Keyword Styles</a></li>
+                       <li><a href="#setting-comment-styles">3.4.4 Setting 
Comment Styles</a></li>
+                       <li><a href="#setting-other-styles">3.4.5 Setting Other 
Styles</a></li>
+               </ul>
+               <li><a href="#case-caps">3.5 Case Sensitivity and Auto 
Casing</a></li>
+               <ul>
+                       <li><a href="#auto-caps-nocaps">3.5.1 Auto 
Caps/Nocaps</a></li>
+                       <li><a href="#setting-case-sensitivity">3.5.2 Setting 
Case Sensitivity</a></li>
+               </ul>
+               <li><a href="#changing-config">3.6 Changing the 
Source/Language/Path/Charset</a></li>
+               <ul>
+                       <li><a href="#changing-the-source">3.6.1 Changing the 
Source Code</a></li>
+                       <li><a href="#changing-the-language">3.6.2 Changing the 
Language</a></li>
+                       <li><a href="#changing-the-path">3.6.3 Changing the 
Path</a></li>
+                       <li><a href="#changing-the-charset">3.6.4 Changing the 
Character Set</a></li>
+                       <li><a href="#changing-using-load-from-file">3.6.5 
Using <tt>load_from_file</tt> to change the language and source code</a></li>
+               </ul>
+               <li><a href="#error-handling">3.7 Error Handling</a></li>
+               <li><a href="#disabling-lexics">3.8 Disabling Styling of Some 
Lexics</a></li>
+               <li><a href="#setting-tab-width">3.9 Setting the Tab 
Width</a></li>
+               <li><a href="#using-strict-mode">3.10 Using Strict Mode</a></li>
+               <li><a href="#adding-removing-keywords">3.11 Adding/Removing 
Keywords</a></li>
+               <ul>
+                       <li><a href="#adding-a-keyword">3.11.1 Adding a 
Keyword</a></li>
+                       <li><a href="#removing-a-keyword">3.11.2 Removing a 
Keyword</a></li>
+                       <li><a href="#adding-a-keyword-group">3.11.3 Adding a 
Keyword Group</a></li>
+                       <li><a href="#removing-a-keyword-group">3.11.4 Removing 
a Keyword Group</a></li>
+               </ul>
+               <li><a href="#headers-and-footers">3.12 Headers and Footers for 
your code</a></li>
+               <ul>
+                       <li><a href="#keyword-substitution">3.12.1 Keyword 
Substitution</a></li>
+                       <li><a href="#setting-header-content">3.12.2 Setting 
Header Content</a></li>
+                       <li><a href="#setting-footer-content">3.12.3 Setting 
Footer Content</a></li>
+                       <li><a href="#styling-header-content">3.12.4 Styling 
Header Content</a></li>
+                       <li><a href="#styling-footer-content">3.12.5 Styling 
Footer Content</a></li>
+               </ul>
+               <li><a href="#keyword-urls">3.13 Keyword URLs</a></li>
+               <ul>
+                       <li><a href="#setting-a-url">3.13.1 Setting a URL for a 
Keyword Group</a></li>
+                       <li><a href="#disabling-urls">3.13.2 Disabling URLs for 
a Keyword Group</a></li>
+                       <li><a href="#styling-links">3.13.3 Styling 
Links</a></li>
+                       <li><a href="#using-targets">3.13.4 Setting the Link 
Target</a></li>
+               </ul>
+               <li><a href="#using-contextual-importance">3.14 Using 
Contextual Importance</a></li>
+               <li><a href="#highlighting-special-lines-extra">3.15 
Highlighting Special Lines &quot;Extra&quot;</a></li>
+               <ul>
+                       <li><a 
href="#specifying-lines-to-highlight-extra">Specifying the Lines to Highlight 
Extra</a></li>
+                       <li><a href="#styles-for-highlighted-lines">Styles for 
the Highlighted Lines</a></li>
+               </ul>
+               <li><a href="#adding-ids-to-each-line">3.16 Adding IDs to Each 
Line</a></li>
+               <li><a href="#getting-the-time-of-styling">3.17 Getting the 
Time of Styling</a></li>
+       </ul>
+
+       <li><a href="#language-files">4 Language Files</a></li>
+       <ul>
+               <li><a href="#language-file-example">4.1 An Example Language 
File</a></li>
+               <li><a href="#language-file-conventions">4.2 Language File 
Conventions</a></li>
+               <li><a href="#language-file-sections">4.3 Language File 
Sections</a></li>
+               <ul>
+                       <li><a href="#language-file-header">4.3.1 The 
Header</a></li>
+                       <li><a href="#language-file-start-indices">4.3.2 The 
First Indices</a></li>
+                       <li><a href="#language-file-keywords">4.3.3 
Keywords</a></li>
+                       <li><a href="#language-file-symbols-case">4.3.4 Symbols 
and Case Sensitivity</a></li>
+                       <li><a href="#language-file-styles">4.3.5 Styles for 
your Language Files</a></li>
+                       <li><a href="#language-file-urls">4.3.6 URLs for 
Functions</a></li>
+                       <li><a href="#language-file-oo-support">4.3.7 Object 
Orientation Support</a></li>
+                       <li><a href="#language-file-regexps">4.3.8 Using 
Regular Expressions</a></li>
+                       <li><a href="#language-file-strict-mode">4.3.9 
Contextual Highlighting and Strict Mode</a></li>
+                       <li><a href="#language-file-tidying-up">4.3.10 Tidying 
Up</a></li>
+               </ul>
+       </ul>
+
+       <li><a href="#method-constant-reference">5 Method/Constant 
Reference</a></li>
+</ul>
+
+<h3 id="introduction">1: Introduction</h3>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#features">Next</a> | <a href="#contents">Previous</a></div>
+
+<p>GeSHi is exactly what the acronym stands for: a <strong>Generic Syntax 
Highlighter</strong>. As long
+as you have a language file for almost any computer language - whether it be a
+scripting language, object orientated, markup or anything in between - GeSHi 
can
+highlight it! GeSHi is extremely customisable - the same source can be 
highlighted
+multiple times in multiple ways - the same source even with a different 
language.
+GeSHi outputs <acronym>XHTML</acronym> strict compliant code<sup><a 
href="#xhtml-strict-note">*</a></sup>, and can
+make use of <acronym>CSS</acronym> to save on the amount of output. And what 
is the cost for all of this? You need
+<a href="http://www.php.net/";>PHP</a>. That's all!
+
+<p style="font-size: x-small;"><a name="xhtml-strict-note" 
id="xhtml-strict-note">*</a>Most of the time.
+Some languages do not output XHTML strict code, and using line numbers with 
the PRE header is not legal either.
+These problems will be fixed in 1.2.</p>
+
+<h4 id="features">1.1: Features</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#about-geshi">Next</a> | <a href="#introduction">Previous</a></div>
+
+<p>Here are some of the standout features of GeSHi:</p>
+
+<ul>
+       <li><strong>Programmed in PHP:</strong> GeSHi is coded entirely in PHP. 
This means that where ever you have PHP, you
+    can have GeSHi! Almost any free webhost supports PHP, and GeSHi works fine 
with PHP > 4.1.0.</li>
+       <li><strong>Support for many languages:</strong> GeSHi comes with over 
<em>50</em> languages, including <acronym>PHP</acronym>,
+       <acronym>HTML</acronym>, <acronym>CSS</acronym>, Java, C, Lisp, 
<acronym>XML</acronym>, Perl, Python, <acronym>ASM</acronym> and many more!</li>
+       <li><strong><acronym>XHTML</acronym> compliant output:</strong> GeSHi 
produces XHTML compliant output, using stylesheets, so you need not worry about
+       GeSHi ruining your claims to perfection in the standards department 
;)</li>
+       <li><strong>Highly customisable:</strong> GeSHi allows you to change 
the style of the output on the fly, use CSS classes or not, use an external
+       stylesheet or not, use line numbering, change the case of output 
keywords... the list goes on and on!</li>
+       <li><strong>Flexible:</strong> Unfortunately, GeSHi is quite load/time 
intensive for large blocks of code. However, you want speed?
+       Turn off any features you don't like, pre-make a stylesheet and use CSS 
classes to reduce the amount of output and more - it's easy
+       to strike a balance that suits you.</li>
+</ul>
+
+<p>This is just a taste of what you get with GeSHi - the best syntax 
highlighter for the web in the world!</p>
+
+<h4 id="about-geshi">1.2: About GeSHi</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#credits">Next</a> | <a href="#features">Previous</a></div>
+
+<p>GeSHi started as a mod for the <a 
href="http://www.phpbb.com/";><acronym>phpBB</acronym> forum system</a>, to 
enable highlighting of more
+languages than the available (which was 0 ;)). However, it quickly spawned 
into an
+entire project on its own. But now it has been released, work continues on a 
mod
+for phpBB<sup><a href="#phpbb-note">*</a></sup> - and hopefully for many forum 
systems, blogs and other web-based systems.</p>
+
+<p style="font-size: x-small;"><a name="phpbb-note" id="phpbb-note">*</a>I am 
no longer working on this MOD, however if someone else wants to they
+can contact me for more information.</p>
+
+<p>Several systems are using GeSHi now, including:</p>
+
+<ul>
+       <li><a href="http://www.splitbrain.org/docuwiki/";>Dokuwiki</a> - An 
advanced wiki engine</li>
+       <li><a href="http://gtk.php.net/";>gtk.php.net</a> - Their manual uses 
GeSHi for syntax highlighting</li>
+       <li><a href="http://www.wordpress.org/";>WordPress</a> - A powerful 
blogging system<sup><a href="#plugin-only">*</a></sup></li>
+       <li><a href="http://www.php-fusion.co.uk/";>PHP-Fusion</a> - A 
constantly evovling CMS</li>
+       <li><a href="http://cypreess.dione.cc/sqlm";>SQL Manager</a> - A 
Postgres DBAL</li>
+       <li><a href="http://www.mamboserver.com/";>Mambo</a> - A popular open 
source CMS</li>
+       <li><a href="http://www.mediawiki.org/";>MediaWiki</a> - A leader in 
Wikis<sup><a href="#plugin-only">*</a></sup></li>
+       <li><a href="http://www.tikiwiki.org/";>TikiWiki</a> - A megapowerful 
Wiki/CMS</li>
+    <li><a href="http://www.tikipro.org/";>TikiPro</a> - Another powerful Wiki 
based on Tikiwiki</li>
+       <li><a href="http://robloach.net/projects/phpscripts/rweb/";>RWeb</a> - 
A site-building tool</li>
+</ul>
+
+<p style="font-size: x-small;"><a name="plugin-only" id="plugin-only">*</a> 
Available as plugin only. In addition, some of the other entries mentioned
+here may only have GeSHi available as a plugin.</p>
+
+<p>GeSHi is the work of me, <a href="mailto:address@hidden";>Nigel McNie</a>.  
Others have helped with aspects of GeSHi
+also, they're mentioned in the <a href="THANKS">THANKS</a> file.</p>
+
+<h4 id="credits">1.3: Credits</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#feedback">Next</a> | <a href="#about-geshi">Previous</a></div>
+
+<p>Many people have helped out with GeSHi, whether by creating language files, 
submitting bug
+reports, suggesting new ideas or simply pointing out a new idea or something 
I'd missed. All
+of these people have helped to build a better GeSHi, you can see them in the 
<a href="THANKS">THANKS</a>
+file.</p>
+
+<p> Do you want your name on this
+list? Why not make a language file, or submit a valid bug? Or perhaps help me 
with an
+added feature I can't get my head around, or suggest a new feature, or even 
port
+GeSHi to anothe language? There's lots you can do to help out, and I need it 
all :)</p>
+
+<h4 id="feedback">1.4: Feedback</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#the-basics">Next</a> | <a href="#credits">Previous</a></div>
+
+<p>I need your feedback! ANYthing you have to say is fine, whether it be a 
query,
+congratulations, a bug report or complaint, I don't care! I want to make this 
software
+the best it can be, and I need your help! You can contact me in the following 
ways:</p>
+
+<ul>
+       <li><strong>E-mail:</strong>  <a 
href="mailto:address@hidden";>address@hidden</a></li>
+       <li><strong>Forums:</strong>  <a 
href="http://sourceforge.net/forum?group_id=114997";>Sourceforge.net Forums</a> 
or
+       <a href="http://qbnz.com/highlighter/";>GeSHi home forums</a></li>
+</ul>
+
+<p>Remember, any help I am grateful for :)</p>
+
+<h3 id="the-basics">2: The Basics</h3>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#getting-geshi">Next</a> | <a href="#feedback">Previous</a></div>
+
+<p>In this section, you'll learn a bit about GeSHi, how it works and what it 
uses, how
+to install it and how to use it to perform basic highlighting.</p>
+
+<h4 id="getting-geshi">2.1: Getting GeSHi</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#installing-geshi">Next</a> | <a href="#the-basics">Previous</a></div>
+
+<p>If you're reading this and don't have GeSHi, that's a problem ;). So, how 
do you get
+your hands on it? Visit <a 
href="http://qbnz.com/highlighter/downloads.php";>http://qbnz.com/highlighter/downloads.php</a>
 to obtain the latest
+version.</p>
+
+<h4 id="installing-geshi">2.2: Installing GeSHi</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#requirements">Next</a> | <a href="#getting-geshi">Previous</a></div>
+
+<p>Installing GeSHi is a snap, even for those most new to PHP. There's no 
tricks involved. Honest!</p>
+
+<h5 id="requirements">2.2.1: Requirements</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#extracting-geshi">Next</a> | <a 
href="#installing-geshi">Previous</a></div>
+
+<p>GeSHi requires the following to be installable:</p>
+
+<ul>
+       <li><strong><a href="http://www.php.net/";>PHP</a></strong>. It's 
untested with anything other than 4.3.X. I hope to extend this range soon.
+       I see no reason why it won't work with any version of PHP above 
4.1.0.</li>
+       <li><strong>Approximately 700 kilobytes of space</strong>. The actual 
script is small - around 85K - but most
+       of the size comes from the large number of language files (over 50!). 
If you're pushed for space, make sure
+       you don't upload to your server the <tt>docs/</tt> or <tt>contrib/</tt> 
directory, and you may want to leave
+       out any language files that don't take your fancy either.</li>
+</ul>
+
+<p>As you can see, the requirements are very small. If GeSHi does NOT work for 
you in a
+particular version of PHP, let me know why and I'll fix it.</p>
+
+<p>Packages come in <tt>.zip</tt>, <tt>.tar.gz</tt> and <tt>.tar.bz2</tt> 
format, so there's no complaining about whether
+it's available for you. *nix users probably want <tt>.tar.gz</tt> or 
<tt>.tar.bz2</tt> and windows users
+probably want <tt>.zip</tt>.</p>
+
+<h5 id="extracting-geshi">2.2.2: Extracting GeSHi</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#installation">Next</a> | <a href="#requirements">Previous</a></div>
+
+<p>To extract GeSHi in Linux (<tt>.tar.gz</tt>):</p>
+
+<ol>
+       <li>Open a shell</li>
+       <li><kbd>cd</kbd> to the directory where the archive lies</li>
+       <li>Type <kbd>tar -xzvf [filename]</kbd>  where <tt>[filename]</tt> is 
the name of the archive (typically <tt>GeSHi-1.X.X.tar.gz</tt>)</li>
+       <li>GeSHi will be extracted to its own directory</tt>
+</ol>
+
+<p>To extract GeSHi in Windows (<tt>.zip</tt>):</p>
+
+<ol>
+       <li>Open Explorer</li>
+       <li>Navigate to the directory where the archive lies</li>
+       <li>Extract the archive. The method you use will depend on your 
configuration.
+       Some people can right-click upon the archive and select "Extract" from 
there,
+       others may have to drag the archive and drop it upon an extraction 
program.</li>
+</ol>
+
+<p>To extract from <tt>.zip</tt> you'll need an unzipping program - unzip in 
Linux, or Winzip,
+Winrar or similar for Windows.</p>
+
+<h5 id="installation">2.2.3: Installation</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#basic-usage">Next</a> | <a href="#extracting-geshi">Previous</a></div>
+
+<p>GeSHi is nothing more than a PHP class with related language support files.
+Those of you familiar with PHP can then guess how easy the installation will
+be: simply copy it into your include path somewhere. You can put it wherever
+you like in this include path. I recommend that you put the language files
+in a subdirectory of your include path too - perhaps the same subdirectory
+that geshi.php is in. <strong>Remember this path</strong> for later.</p>
+
+<p>If you don't know what an include path is, don't worry. Simply copy GeSHi to
+your webserver. So for example, say your site is at 
<tt>http://mysite.com/myfolder</tt>,
+you can copy GeSHi to your site so the directory structure is like this:</p>
+
+<pre>http://mysite.com/myfolder/geshi/[language files]
+http://mysite.com/myfolder/geshi.php</pre>
+
+<p>Or you can put it in any subdirectory you like:</p>
+
+<pre>http://mysite.com/myfolder/includes/geshi/[language files]
+http://mysite.com/myfolder/includes/geshi.php</pre>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>When using 
GeSHi on a live site, the only directory
+required is the <tt>geshi/</tt> subdirectory. Both <tt>contrib/</tt> and 
<tt>docs/</tt> are worthless, and furthermore,
+as some people discovered, one of the files in contrib had a security hole 
(fixed as of 1.0.7.3). I suggest you delete
+these directories from any live site they are on.</p></div>
+
+<h4 id="basic-usage">2.3: Basic Usage</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#advanced-features">Next</a> | <a 
href="#installation">Previous</a></div>
+
+<p>Use of GeSHi is very easy. Here's a simple example:</p>
+
+<code><span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #808080; font-style: italic;">// Include the GeSHi 
library</span><br />
+
+<span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #b1b100;">include_once</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'geshi.php'</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #808080; font-style: italic;">// Define some source to 
highlight, a language to use</span><br />
+<span style="color: #808080; font-style: italic;">// and the path to the 
language files</span><br />
+
+<span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #0000ff;">$source</span> = <span style="color: 
#ff0000;">'$foo = 45;<br />
+for ( $i = 1; $i &lt; $foo; $i++ )<br />
+{<br />
+
+&nbsp; echo &quot;$foo&lt;br /&gt;<span style="color: #000099; font-weight: 
bold;">\n</span>&quot;;<br />
+&nbsp; --$foo;<br />
+}'</span>;<br />
+<span style="color: #0000ff;">$language</span> = <span style="color: 
#ff0000;">'php'</span>;<br />
+
+<span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #808080; font-style: italic;">// Create a GeSHi 
object</span><br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+
+<span style="color: #0000ff;">$geshi</span> =&amp; <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #0000ff;">$language</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+
+<span style="color: #808080; font-style: italic;">// And echo the 
result!</span><br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #0000ff;">$geshi</span>-&gt;<span 
style="color: #006600;">parse_code</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
+</code>
+
+<p>As you can see, there's only three really important lines:</p>
+
+<code><span style="color: #b1b100;">include_once</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'geshi.php'</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>This line includes the GeSHi class for use</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #0000ff;">$language</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>This line creates a new GeSHi object, holding the source and the language
+you want to use for highlighting.</p>
+
+<code><a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #0000ff;">$geshi</span>-&gt;<span 
style="color: #006600;">parse_code</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>This line spits out the result :)</p>
+
+<p>So as you can see, simple usage of GeSHi is really easy. Just create a new
+GeSHi object and get the code!</p>
+
+<p>Since version 1.0.2, there is a function included with GeSHi called 
<code>geshi_highlight</code>.
+This behaves exactly as the php function <code>highlight_string</code> behaves 
- all you do is pass
+it the language you want to use to highlight and the path to the language 
files as well as the source.
+Here are some examples:</p>
+
+<code><span style="color: #808080; font-style: italic;">// Simply echo the 
highlighted code</span><br />
+geshi_highlight<span style="color: #66cc66;">&#40;</span><span style="color: 
#0000ff;">$source</span>, <span style="color: #ff0000;">'php'</span>, <span 
style="color: #0000ff;">$path</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #808080; font-style: italic;">// Get the code back, for 
use later</span><br />
+<span style="color: #0000ff;">$code</span> = geshi_highlight<span 
style="color: #66cc66;">&#40;</span><span style="color: 
#0000ff;">$source</span>, <span style="color: #ff0000;">'java'</span>, <span 
style="color: #0000ff;">$path</span>, <span style="color: #000000; font-weight: 
bold;">true</span><span style="color: #66cc66;">&#41;</span><br />
+<br />
+<span style="color: #808080; font-style: italic;">// Check if there is an 
error with parsing this code</span><br />
+
+<a href="http://www.php.net/ob_start";><span style="color: 
#000066;">ob_start</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$result</span> = geshi_highlight<span 
style="color: #66cc66;">&#40;</span><span style="color: 
#0000ff;">$source</span>, <span style="color: #ff0000;">'perl'</span>, <span 
style="color: #0000ff;">$path</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$code</span> = <a 
href="http://www.php.net/ob_get_contents";><span style="color: 
#000066;">ob_get_contents</span></a><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
+
+<a href="http://www.php.net/ob_end_clean";><span style="color: 
#000066;">ob_end_clean</span></a><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #b1b100;">if</span> <span style="color: 
#66cc66;">&#40;</span> !<span style="color: #0000ff;">$result</span> <span 
style="color: #66cc66;">&#41;</span><br />
+<span style="color: #66cc66;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: 
italic;">// There was an error with highlighting...</span><br />
+
+<span style="color: #66cc66;">&#125;</span><br />
+<span style="color: #b1b100;">else</span><br />
+<span style="color: #66cc66;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #808080; font-style: 
italic;">// All OK :)</span><br />
+<span style="color: #66cc66;">&#125;</span>
+</code>
+
+<p>However, these are really simple examples and doesn't even begin to cover 
all
+the advanced features of GeSHi. If you want to learn more, continue on to
+section 3: Advanced Features.</p>
+
+
+<h3 id="advanced-features">3: Advanced Features</h3>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#the-code-container">Next</a> | <a 
href="#basic-usage">Previous</a></div>
+
+<p>This section documents the advanced features of GeSHi - strict mode, using
+CSS classes, changing styles on the fly, disabling highlighting of some things
+and more.</p>
+
+<p>In this section there are many code snippets. For all of these, you should 
assume
+that the GeSHi library has been included, and a GeSHi object has been created
+and is referenced by the variable <var>$geshi</var>. Normally, the source, 
language and path
+used are arbitary.</p>
+
+<h4 id="the-code-container">3.1  The Code Container</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#line-numbers">Next</a> | <a 
href="#advanced-features">Previous</a></div>
+
+<p>The <strong>Code Container</strong> has a fundamental effect on the layout 
of your code before you
+even begin to style. What is the Code Container? It's the bit of markup that 
goes
+around your code to contain it. By default your code is surrounded by a 
<tt>&lt;pre&gt;</tt>, but
+you can also specify a <tt>&lt;div&gt;</tt>.</p>
+
+<p>The <tt>&lt;pre&gt;</tt> header is the default. If you're familiar with 
HTML you'll know that
+whitespace is rendered &quot;as is&quot; by a <tt>&lt;pre&gt;</tt> element. 
The advantage for you is that
+if you use <tt>&lt;pre&gt;</tt> the whitespace you use will appear pretty much 
exactly how it is
+in the source, and what's more GeSHi won't have to add a whole lot of 
<tt>&lt;br /&gt;</tt>'s and
+non-breaking spaces (<tt>&amp;nbsp;</tt>) to your code to indent it. This 
saves you source code
+(and your valuable visitors waiting time and your bandwidth).</p>
+
+<p>But if you don't like <tt>&lt;pre&gt;</tt> or it looks stupid in your 
browser no matter what styles
+you try to apply to it or something similar, you might want to use a 
<tt>&lt;div&gt;</tt> instead.
+A <tt>&lt;div&gt;</tt> will result in more source - GeSHi will have to insert 
whitespace markup -
+but in return you can wrap long lines of code that would otherwise have your 
browser's
+horizontal scrollbar appear. Of course with <tt>&lt;div&gt;</tt> you can *not* 
wrap lines if you please.
+The highlighter demo at the <a 
href="http://qbnz.com/highlighter/demo.php";>GeSHi home page</a> uses the
+<tt>&lt;div&gt;</tt> approach for this reason.</p>
+
+<p>At this stage there isn't an option to wrap the code in 
<tt>&lt;code&gt;</tt> tags (unless you use the
+function <tt>geshi_highlight</tt>), partly because of the inconsistent and 
unexpected ways stuff in <tt>&lt;code&gt;</tt>
+tags is highlighted. Besides, <tt>&lt;code&gt;</tt> is an inline element. But 
this may become an option in future versions.</p>
+
+<p>As of GeSHi 1.0.7.2 there is a new header type, that specifies that the 
code should not be wrapped in
+anything at all.</p>
+
+<p>To change/set the header to use, you call the 
<strong><tt>set_header_type()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_header_type</span><span style="color: 
#66cc66;">&#40;</span>GESHI_HEADER_DIV<span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #808080; font-style: italic;">// or...</span><br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_header_type</span><span style="color: 
#66cc66;">&#40;</span>GESHI_HEADER_PRE<span style="color: 
#66cc66;">&#41;</span>;
+<span style="color: #808080; font-style: italic;">// or...</span><br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_header_type</span><span style="color: 
#66cc66;">&#40;</span>GESHI_HEADER_NONE<span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Those are the only three arguments you should pass to set_header_type. 
Passing anything
+else may cause inconsistencies in what is used as the Code Container (although 
it
+*should* simply use a <tt>&lt;pre&gt;</tt>). Better not to risk it.</p>
+
+<div class="note"><div class="note-header">Note:</div><p>GESHI_HEADER_DIV, 
GESHI_HEADER_PRE and GESHI_HEADER_NONE are <em>constants</em>, so don't put them
+in strings!</p></div>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>The default 
styles for the <tt>&lt;pre&gt;</tt> and <tt>&lt;div&gt;</tt> <em>will
+be different, especially if you use line numbers!</em>. I have found that a 
<tt>&lt;pre&gt;</tt> results
+in code that is smaller than for that of a <tt>&lt;div&gt;</tt>, you should 
rectify this difference
+by using <strong><tt>set_overall_style()</tt></strong> if you need to. But be 
aware of this
+difference for if you are changing the header type!</p></div>
+
+<h4 id="line-numbers">3.2: Line Numbers</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#enabling-line-numbers">Next</a> | <a 
href="#the-code-container">Previous</a></div>
+
+<p>GeSHi has the ability to add line numbers to your code (see the demo 
available at
+<a 
href="http://qbnz.com/highlighter/demo.php";>http://qbnz.com/highlighter/demo.php</a>
 to see what can be achieved). Line numbers are
+a great way to make your code look professional, especially if you use the 
fancy
+line numbers feature.</p>
+
+<h5 id="enabling-line-numbers">3.2.1: Enabling Line Numbers</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#styling-line-numbers">Next</a> | <a 
href="#line-numbers">Previous</a></div>
+
+<p>To highlight a source with line numbers, you call the 
<strong><tt>enable_line_numbers()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_line_numbers</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$flag</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where $flag is one of the following:</p>
+
+<ul>
+       <li><tt>GESHI_NORMAL_LINE_NUMBERS</tt> -  Use normal line numbering</li>
+       <li><tt>GESHI_FANCY_LINE_NUMBERS</tt> -  Use fancy line numbering</li>
+       <li><tt>GESHI_NO_LINE_NUMBERS</tt> -  Disable line numbers 
(default)</li>
+</ul>
+
+<p>Normal line numbers means you specify a style for them, and that style gets 
applied
+to all of them. Fancy line numbers means that you can specify a different style
+for each n<sup>th</sup> line number. You change the value of n (default 5):</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_line_numbers</span><span style="color: 
#66cc66;">&#40;</span>GESHI_FANCY_LINE_NUMBERS, <span style="color: 
#cc66cc;">37</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>The second parameter is not used in any other mode. Setting it to 0 is the 
same as
+simply using normal line numbers. Setting it to 1 applies the fancy style to 
every
+line number.</p>
+
+<div class="note"><div class="note-header">Note:</div><p>The values above are 
CONSTANTS - so don't put them in strings!</p></div>
+
+<h5 id="styling-line-numbers">3.2.2  Styling Line Numbers</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#starting-line-numbers">Next</a> | <a 
href="#enabling-line-numbers">Previous</a></div>
+
+<p>As of GeSHi 1.0.2, line numbers are added by the use of ordered lists. This 
solves
+the old issues of line number styles inheriting from styles meant for the 
code. Also,
+this solves an important issue about selecting code. For example, line numbers 
look
+nice, but when you go to select the code in your browser to copy it? You got 
the line
+numbers too! Not such a good thing, but thankfully this issue is now solved. 
What is
+the price? Unfortunately the whole way that styles are inherited/used has 
changed for
+those of you who were familiar with 1.0.1, and there is quite a bit more 
<acronym>HTML</acronym>
+involved. So think carefully about these things before you enable line 
numbers.</p>
+
+<p>Now, onto how to style line numbers:</p>
+
+<p>Styles are set for line numbers using the 
<strong><tt>set_line_style()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'background: #fcfcfc;'</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>If you're using Fancy Line Numbers mode, you pass a second string for the 
style
+of the n<sup>th</sup> line number:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'background: #fcfcfc;'</span>, <span style="color: 
#ff0000;">'background: #f0f0f0;'</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>The second style will have no effect if you're not using Fancy Line Numbers 
mode.</p>
+
+<p>By default, the styles you pass overwrite the current styles. Add a boolean 
"true"
+after the styles you specify to combine them with the current styles:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'background: red;'</span>, <span style="color: #000000; 
font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;<br />
+
+<span style="color: #808080; font-style: italic;">// or, for fancy line 
numbers</span><br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'background: red;'</span>, <span style="color: 
#ff0000;">'background: blue;'</span>, <span style="color: #000000; font-weight: 
bold;">true</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>When you set 
line number styles, the code will inherit those styles! This
+is the main issue to come out of the 1.0.2 release. If you want your code to 
be styled in a predictable
+manner, you'll have to call the <strong><tt>set_code_style()</tt></strong> 
method to rectify this problem.</p>
+
+<p>Note also that you cannot apply background colours to line numbers unless 
you use <strong><tt>set_overall_style()</tt></strong>.
+Here's how you'd style:</p>
+
+<ol>
+       <li>Use <strong><tt>set_overall_style()</tt></strong> to style the 
overall code block.
+       For example, you can set the border style/colour, any margins and 
padding etc. using this
+       method. <strong>In addition:</strong> set the background colour for all 
the line numbers
+       using this method.</li>
+       <li>Use <strong><tt>set_line_style()</tt></strong> to style the 
foreground of the line
+       numbers. For example, you can set the colour, weight, font, padding 
etc. of the line
+       numbers using this method.</li>
+       <li>Use <strong><tt>set_code_style()</tt></strong> to explicitly 
override the styles
+       you set for line numbers using 
<strong><tt>set_line_style</tt></strong>. For example,
+       if you'd set the line numbers to be bold (or even if you'd only set the 
fancy line number
+       style to be bold), and you didn't actually want your code to be bold, 
you'd make sure
+       that <tt>font-weight: normal;</tt> was in the stylesheet rule you 
passed to <strong><tt>set_code_style</tt></strong></li>
+</ol>
+
+<p>This is the one major change from GeSHi 1.0.1 - make sure you become 
familiar with this, and make
+sure that you check any code you have already styled with 1.0.1 when you 
upgrade to make sure nothing
+bad happens to it.</p></div>
+
+<h5 id="starting-line-numbers">3.2.3: Choosing a Start Number</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#using-css-classes">Next</a> | <a 
href="#styling-line-numbers">Previous</a></div>
+
+<p>As of GeSHi 1.0.2, you can now make the line numbers start at any number, 
rather than just 1. This feature
+is useful if you're highlighting code from a file from around a certain line 
number in that file, as an additional
+guide to those who will view the code. You set the line numbers by calling the 
<strong><tt>start_line_numbers_at()</tt></strong>
+method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">start_line_numbers_at</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$number</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p><var>$number</var> must be a positive integer (or zero). If it is not, 
GeSHi will convert it anyway.</p>
+
+<p>If you have not enabled line numbers, this will have no effect.</p>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>Although I'd 
like GeSHi to have XHTML strict compliance, this feature will break
+compliancy (however transitional compliancy remains). This is because the only 
widely supported way to
+change the start value for line numbers is by using the 
<strong>start="number"</strong> attribute of the
+<tt>&lt;ol&gt;</tt> tag. Although CSS does provide a mechanism for doing this, 
it is only supported in
+Opera versions 7.5 and above (not even Firefox supports this).</p></div>
+
+<h4 id="using-css-classes">3.3: Using CSS Classes</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#enabling-css-classes">Next</a> | <a 
href="#starting-line-numbers">Previous</a></div>
+
+<p>Using CSS to highlight your code instead of in-lining the styles is a 
definate
+bonus. Not only is it more compliant (the w3c is deprecating the style 
attribute
+in XHTML 2.0) but it results in far less outputted code - up to a whopping 50%
+saving - which makes a *huge* difference to those of us on modems!</p>
+
+<h5 id="enabling-css-classes">3.3.1: Enabling CSS Classes</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-css-class-id">Next</a> | <a 
href="#using-css-classes">Previous</a></div>
+
+<p>By default, GeSHi doesn't use the classes, so it's easy just to whack out 
some
+highlighted code if you need without worrying about stylesheets. However, if 
you're
+a bit more organised about it, you should use the classes ;). To turn the use 
of
+classes on, you call the <strong><tt>enable_classes()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>If you want to turn classes OFF for some reason later:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="font-weight: bold;">false</span><span style="color: 
#66cc66;">&#41;</span>;
+
+<p>If classes are enabled when <strong><tt>parse_code()</tt></strong> is 
called, then the resultant source will
+use CSS classes in the output, otherwise it will in-line the styles. The 
advantages
+of using classes are great - the reduction in source will be very noticeable, 
and
+what's more you can use one stylesheet for several different highlights on the 
same
+page. In fact, you can even use an external stylesheet and link to that, 
saving even
+more time and source (because stylesheets are cached by browsers).</p>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>This should 
be the very first method you call after creating a new
+GeSHi object! That way, various other methods can act upon your choice to use 
classes
+correctly. In theory, you could call this method just before parsing the code, 
but this
+may result in unexpected behaviour.</p></div>
+
+<h5 id="setting-css-class-id">3.3.2: Setting the CSS class and ID</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#getting-stylesheet">Next</a> | <a 
href="#enabling-css-classes">Previous</a></div>
+
+<p>You can set an overall CSS class and id for the code. This is a good feature
+that allows you to use the same stylesheet for many different snippets of code.
+You call <strong><tt>set_overall_class()</tt></strong> and 
<strong><tt>set_overall_id</tt></strong> to accomplish this:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_overall_class</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'mycode'</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_overall_id</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'dk48ck'</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>The default classname is the name of the language being used. This means 
you can use
+just the one stylesheet for all sources that use the same language, and 
incidentally
+means that you probably won't have to call these methods too often.</p>
+
+<p>CSS IDs are supposed to be unique, and you should use them as such. 
Basically, you can
+specify an ID for your code and then use that ID to highlight that code in a 
unique way.
+You'd do this for a block of code that you expressly wanted to be highlighted 
in a
+different way (see the section below on gettting the stylesheet for your code 
for an example).</p>
+
+<h5 id="getting-stylesheet">3.3.3: Getting the stylesheet for your code</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#using-an-external-stylesheet">Next</a> | <a 
href="#setting-css-class-id">Previous</a></div>
+
+<p>The other half of using CSS classes is getting the stylesheet for use with 
the classes.
+GeSHi makes it very easy to get a stylesheet for your code, with one easy 
method call:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #808080; font-style: italic;">// Here we have code that 
will spit out a header for</span><br />
+<span style="color: #808080; font-style: italic;">// a stylesheet. For 
example:</span><br />
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'&lt;html&gt;<br />
+&lt;head&gt;&lt;title&gt;Code&lt;/title&gt;<br />
+&lt;style type=&quot;text/css&quot;&gt;<br />
+
+&lt;!--'</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">// Echo out the stylesheet 
for this code block</span><br />
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #0000ff;">$geshi</span>-&gt;<span 
style="color: #006600;">get_stylesheet</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">// And continue echoing the 
page</span><br />
+
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'--&gt;<br />
+&lt;/style&gt;&lt;/head&gt;<br />
+&lt;body&gt;'</span>; </code>
+
+<p>The <strong><tt>get_stylesheet()</tt></strong> method gets the stylesheet 
for your code in one easy call. All you
+need to do is output it in the correct place. As you can also see, you don't 
even have
+to enable class usage to get the stylesheet nessecary either - however not 
enabling
+classes but using the stylesheet may result in problems later.</p>
+
+<p>By default, <strong><tt>get_stylesheet()</tt></strong> tries to echo the 
least amount of code possible. Although
+currently it doesn't check to see if a certain lexic is even in the source, 
you can
+expect this feature in the future. At least for the present however, if you 
explicitly
+disable the highlighting of a certain lexic, or disable line numbers, the 
related CSS
+will not be outputted. This may be a bad thing for you perhaps you're going to 
use
+the stylesheet for many blocks of code, some with line numbers, others with 
some lexic
+enabled where this source has it disabled. Or perhaps you're building an 
external stylesheet
+and want all lexics included. So to get around this problem, you do this:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">get_stylesheet</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #000000; font-weight: bold;">false</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>This turns economy mode off, and all of the stylesheet will be outputted 
regardless.</p>
+
+<p>Now lets say you have several snippets of code, using the same language. In 
most of them
+you don't mind if they're highlighted the same way (in fact, that's exactly 
what you want)
+but in one of them you'd like the source to be highlighted differently. Here's 
how you
+can do that:</p>
+
+<code><span style="color: #808080; font-style: italic;">// assume path is the 
default &quot;geshi/&quot; relative to the current directory</span><br />
+
+<span style="color: #0000ff;">$geshi1</span> = <span style="color: #000000; 
font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source1</span>, <span 
style="color: #0000ff;">$lang</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi2</span> = <span style="color: #000000; 
font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source2</span>, <span 
style="color: #0000ff;">$lang</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<span style="color: #0000ff;">$geshi3</span> = <span style="color: #000000; 
font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source3</span>, <span 
style="color: #0000ff;">$lang</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">// Turn classes on for all 
sources</span><br />
+<span style="color: #0000ff;">$geshi1</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+
+<span style="color: #0000ff;">$geshi2</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi3</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">// Make $geshi3 
unique</span><br />
+<span style="color: #0000ff;">$geshi3</span>-&gt;<span style="color: 
#006600;">set_overall_id</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'different'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #808080; font-style: italic;">// Methods are called on 
$geshi3 to change styles...</span><br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'&lt;html&gt;<br />
+&lt;head&gt;&lt;title&gt;Code&lt;/title&gt;<br />
+
+&lt;style type=&quot;text/css&quot;&gt;<br />
+&lt;!--<br />
+'</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">// Get the nessecary 
stylesheets</span><br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: 
#0000ff;">$geshi1</span>-&gt;<span style="color: 
#006600;">get_stylesheet</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: 
#0000ff;">$geshi3</span>-&gt;<span style="color: 
#006600;">get_stylesheet</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'--&gt;<br />
+&lt;/style&gt;&lt;/head&gt;<br />
+&lt;body&gt;'</span>;<br />
+
+<br />
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'Code snippet 
1:'</span>;<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: 
#0000ff;">$geshi1</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'Code snippet 2 (same 
highlighting as 1):'</span>;<br />
+
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: 
#0000ff;">$geshi2</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #ff0000;">'Code snippet 3 
(DIFFERENT highlighting):'</span>;<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: 
#0000ff;">$geshi3</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: 
#ff0000;">'&lt;/body&gt;&lt;/html&gt;'</span>;</code>
+
+<p>Before version 1.0.2, you needed to set the class of the code you wanted to 
be
+unique to the empty string. This limitation has been removed in version 1.0.2 
- if
+you set the ID of a block of code, all styling will be done based on that ID 
alone.</p>
+
+<h5 id="using-an-external-stylesheet">3.3.4: Using an External Stylesheet</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#changing-styles">Next</a> | <a 
href="#getting-stylesheet">Previous</a></div>
+
+<p>An external stylesheet can reduce even more the amount of code needed to 
highlight
+some source. However there are some drawbacks with this. To use an external 
stylesheet,
+it's up to you to link it in to your document, normally with the following 
HTML:</p>
+
+<code><span style="color: #009900;"><span style="color: #000000; font-weight: 
bold;">&lt;html&gt;</span></span><br />
+<span style="color: #009900;"><span style="color: #000000; font-weight: 
bold;">&lt;head&gt;</span></span><br />
+<span style="color: #009900;"><span style="color: #000000; font-weight: 
bold;">&lt;link</span> <span style="color: #000066;">rel</span>=<span 
style="color: #ff0000;">"stylesheet"</span> <span style="color: 
#000066;">type</span>=<span style="color: #ff0000;">"text/css"</span> <span 
style="color: #000066;">href</span>=<span style="color: 
#ff0000;">"url_to_stylesheet.css"</span> /<span style="color: #000000; 
font-weight: bold;">&gt;</span></span></code>
+
+<p>In your external stylesheet you put CSS declarations for your code. Then 
just make sure
+you're using the correct class (use 
<strong><tt>set_overall_class()</tt></strong> to ensure this) and this should
+work fine.</p>
+
+<p>This method is great if you don't mind the source always being highlighted 
the same (in particular,
+if you're making a plugin for a forum/wiki/other system, using an external 
stylesheet is a good idea!).
+It saves a small amount of code and your bandwidth, and it's relatively easy 
to just change
+the stylesheet should you need to. However, using this will render the methods 
that
+change the styles of the code useless, because of course the stylesheet is no 
longer being
+dynamically generated. You can still disable highlighting of certain lexics 
dynamically,
+however.</p>
+
+<div class="note"><div class="note-header">Note:</div><p>As of version 1.0.2, 
GeSHi comes with a <tt>contrib/</tt> directory, which in it contains
+a "wizard" script for creating a stylesheet. Although this script is by no 
means a complete solution,
+it will create the necessary rules for the basic lexics - comments, strings 
for example. Things
+not included in the wizard include regular expressions for any language that 
uses them (PHP and XML
+are two languages that use them), and keyword-link styles. However, this 
script should take some of
+the tedium out of the job of making an external stylesheet. Expect a much 
better version of this
+script in version 1.2!</p></div>
+
+<h4 id="changing-styles">3.4: Changing Styles</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#the-overall-styles">Next</a> | <a 
href="#using-an-external-stylesheet">Previous</a></div>
+
+<p>One of the more powerful features of GeSHi is the ability to change the 
style of the
+output dynamically. Why be chained to the boring styles the language authors 
make up?
+You can change almost every single aspect of highlighted code - and can even 
say whether
+something is to be highlighted at all.</p>
+
+<p>If you're confused about &quot;styles&quot;, you probably want to have a 
quick tutorial in them
+so you know what you can do with them. Checkout the homepage of CSS at <a 
href="http://www.w3.org/Style/CSS";>http://www.w3.org/Style/CSS</a>.</p>
+
+<h5 id="the-overall-styles">3.4.1: The Overall Styles</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#line-number-styles">Next</a> | <a 
href="#changing-styles">Previous</a></div>
+
+<p>The code outputted by GeSHi is either in a <tt>&lt;div&gt;</tt> or a 
<tt>&lt;pre&gt;</tt> (see the section entitled
+&quot;The Code Container&quot;), and this can be styled.</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_overall_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'... styles 
...'</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where styles is a string containing valid CSS declarations. By default, 
these styles
+overwrite the current styles, but you can change this by adding a second 
parameter:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_overall_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'color: blue;'</span>, 
<span style="font-weight: bold; color: #000;">true</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>The default styles &quot;shine through&quot; wherever anything isn't 
highlighted. Also, you can
+apply more advanced styles, like position: (fixed|relative) etc, because a 
<tt>&lt;div&gt;</tt>/<tt>&lt;pre&gt;</tt>
+is a block level element.</p>
+
+<div class="note"><div class="note-header">Note:</div><p>Remember that a 
<tt>&lt;div&gt;</tt> will by default have a larger font size than a 
<tt>&lt;pre&gt;</tt>,
+as discussed in the section &quot;<a href="#the-code-container">The Code 
Container</a>&quot;.</p></div>
+
+<h5 id="line-number-styles">3.4.2: Line Number Styles</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-keyword-styles">Next</a> | <a 
href="#the-overall-styles">Previous</a></div>
+
+<p>You may wish to refer to the section <a 
href="#styling-line-numbers">Styling Line Numbers</a> before
+reading this section.</p>
+
+<p>As of version 1.0.2, the way line numbers are generated is different, so 
therefore the way
+that they are styled is different. In particular, now you cannot set the 
background style of
+the fancy line numbers to be different from that of the normal line 
numbers.</p>
+
+<p>Line number styles are set by using the method 
<strong><tt>set_line_style</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$style1</span>, <span style="color: 
#0000ff;">$style2</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p><var>$style1</var> is the style of the line numbers by default, and 
<var>$style2</var> is the style of the
+fancy line numbers.</p>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>Things have 
changed since 1.0.1! This note is <strong>very</strong> important -
+please make sure you check this twice before complaining about line 
numbers!</p>
+
+<p>Because of the way that ordered lists are done in HTML, there really isn't 
normally a way
+to style the actual <em>numbers</em> in the list. I've cheated somewhat with 
GeSHi - I've made it
+possible to use CSS to style the <em>foreground</em> of the line numbers. So 
therefore, you
+can change the color, font size and type, and padding on them. If you want to 
have a pretty
+background, you <strong>must</strong> use 
<strong><tt>set_overall_style()</tt></strong> to do
+this, and use <strong><tt>set_code_style()</tt></strong> to style the actual 
code! This is
+explained in the section above: <a href="#styling-line-numbers">Styling Line 
Numbers</a>.</p>
+
+<p>In addition, the styles for fancy line numbers <em>is now the difference 
between the normal
+styles and the styles you want to achieve</em>. For example, in GeSHi prior to 
1.0.2 you may
+have done this to style line numbers:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'color: red; font-weight: bold;'</span>, <span 
style="color: #ff0000;">'color: green; font-weight: bold'</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Now you instead can do this:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_line_style</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'color: red; font-weight: bold;'</span>, <span 
style="color: #ff0000;">'color: green;'</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>The <tt>font-weight: bold;</tt> will automatically carry through to the 
fancy styles. This is
+actually a small saving in code - but the difference may be confusing for 
anyone using 1.0.1 at first.</p></div>
+
+<h5 id="setting-keyword-styles">3.4.3: Setting Keyword Styles</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-comment-styles">Next</a> | <a 
href="#line-number-styles">Previous</a></div>
+
+<p>Perhaps the most regular change you will make will be to the styles of a 
keyword set. In
+order to change the styles for a particular set, you'll have to know what the 
set is
+called first. Sets are numbered from 1 up. Typically, set 1 contains keywords 
like if,
+while, do, for, switch etc, set 2 contains null, false, true etc, set 3 
contains
+function inbuilt into the language (<tt>echo</tt>, <tt>htmlspecialchars</tt> 
etc. in PHP) and set 4 contains
+data types and similar variable modifiers: int, double, real, static etc. 
However
+these things are not fixed, and you should check the language file to see what 
key
+you want. Having a familiarity with a language file is definately a plus for 
using it.</p>
+
+<p>To change the styles for a keyword set, call the set_keyword_group_style() 
method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_keyword_group_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$group</span>, <span 
style="color: #0000ff;">$styles</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$group</var> is the group to change the styles for and 
<var>$styles</var> is a string containing
+the styles to apply to that group.</p>
+
+<p>By default, the styles you pass overwrite the current styles. Add a boolean 
"true"
+after the styles you specify to combine them with the current styles:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_keyword_group_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>, <span 
style="color: #ff0000;">'color: white;'</span>, <span style="color: #000000; 
font-weight: bold;">true</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<h5 id="setting-comment-styles">3.4.4: Setting Comment Styles</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-other-styles">Next</a> | <a 
href="#setting-keyword-styles">Previous</a></div>
+
+<p>To change the styles for a comment group, call the 
<strong><tt>set_comments_style()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_comments_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$group</span>, <span 
style="color: #0000ff;">$styles</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$group</var> is either a number corresponding to a single-line 
comment, or the string
+<span style="color: #f00;"><tt>'MULTI'</tt></span> to specify multiline 
comments:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_comments_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span 
style="color: #ff0000;">'font-style: italic;'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_comments_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'MULTI'</span>, <span 
style="color: #ff0000;">'display: hidden;'</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>By default, the styles you pass overwrite the current styles. Add a boolean 
"true"
+after the styles you specify to combine them with the current styles:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_comments_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span 
style="color: #ff0000;">'font-weight: 100;'</span>, <span style="color: 
#000000; font-weight: bold;">true</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<h5 id="setting-other-styles">3.4.5: Setting Other Styles</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#auto-caps-nocaps">Next</a> | <a 
href="#setting-comment-styles">Previous</a></div>
+
+<p>GeSHi can highlight many other aspects of your source other than just 
keywords and
+comments. Strings, Numbers, Methods and Brackets among other things can all 
also be
+highlighted. Here are the related methods:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_escape_characters_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#91;</span>, <span style="color: 
#0000ff;">$preserve_defaults</span><span style="color: 
#66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_symbols_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#91;</span>, <span style="color: 
#0000ff;">$preserve_defaults</span><span style="color: 
#66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;<br />
+
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_strings_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#91;</span>, <span style="color: 
#0000ff;">$preserve_defaults</span><span style="color: 
#66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_numbers_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#91;</span>, <span style="color: 
#0000ff;">$preserve_defaults</span><span style="color: 
#66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_methods_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$key</span>, <span 
style="color: #0000ff;">$styles</span>, <span style="color: 
#66cc66;">&#91;</span>, <span style="color: 
#0000ff;">$preserve_defaults</span><span style="color: 
#66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p><var>$styles</var> is a string containing valid stylesheet declarations, 
while <var>$preserve_defaults</var>
+should be set to true if you want your styles to be merged with the previous 
styles. In the case of <strong><tt>set_methods_style</tt></strong>,
+you should select a group to set the styles of, check the language files for 
the number used for each &quot;object splitter&quot;.</p>
+
+<h4 id="case-caps">3.5: Case Sensitivity and Auto Casing</h3>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#auto-caps-nocaps">Next</a> | <a 
href="#setting-other-styles">Previous</a></div>
+
+<p>Controlling the case of the outputted source is an easy job with GeSHi. You 
can control which keywords are converted in case, and also control whether
+keywords are checked in a case sensitive manner.</p>
+
+<h5 id="auto-caps-nocaps">3.5.1: Auto-Caps/Nocaps</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-case-sensitivity">Next</a> | <a 
href="#case-caps">Previous</a></div>
+
+<p>Auto-Caps/Nocaps is a nifty little feature that capitalises or lowercases 
automatically
+certain lexics when they are styled. I dabble in QuickBASIC, a dialect of 
BASIC which is well
+known for it's capatalisation, and SQL is another language well known for 
using caps
+for readability.</p>
+
+<p>To change what case lexics are rendered in, you call the 
<strong><tt>set_case_keywords()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_case_keywords</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$caps_modifier</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>The valid values to pass to this method are:</p>
+
+<ul>
+       <li><tt>GESHI_CAPS_NO_CHANGE</tt> - Don't change the case of any 
lexics, leave as they are found</li>
+       <li><tt>GESHI_CAPS_UPPER</tt> - Uppercase all lexics found</li>
+       <li><tt>GESHI_CAPS_LOWER</tt> - Lowercase all lexics found</li>
+</ul>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>When I say 
&quot;lexic&quot;, I mean &quot;keywords&quot;. <strong>Any</strong> keyword in 
<strong>any</strong> keyword
+array will be modified using this option! This is one small area of 
inflexibility I hope to fix in 1.2.X.</p></div>
+
+<p>I suspect this will only be used to specify <tt>GESHI_CAPS_NO_CHANGE</tt> 
to turn off autocaps
+for languages like SQL and BASIC variants, like so:</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #ff0000;">'sql'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_case_keywords</span><span style="color: 
#66cc66;">&#40;</span>GESHI_CAPS_NO_CHANGE<span style="color: 
#66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// 
don't want keywords capatalised </span></code>
+
+<p>All the same, it can be used for some interesting effects:</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #ff0000;">'java'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #808080; font-style: italic;">// Anyone who's used java 
knows how picky it is about CapitalLetters...</span><br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_case_keywords</span><span style="color: 
#66cc66;">&#40;</span>GESHI_CAPS_LOWER<span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #808080; font-style: italic;">// No *way* the source will 
look right now ;) </span></code>
+
+<h5 id="setting-case-sensitivity">3.5.2: Setting Case Sensitivity</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#changing-config">Next</a> | <a 
href="#auto-caps-nocaps">Previous</a></div>
+
+<p>Some languages, like PHP, don't mind what case function names and keywords 
are in, while others, like Java, depend
+on such pickiness to maintain their bad reputations ;). In any event, you can 
use the <strong><tt>set_case_sensitivity</tt></strong>
+to change the case sensitiveness of a particular keyword group from the 
default:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_case_sensitivity</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$key</span>, <span 
style="color: #0000ff;">$sensitivity</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$key</var> is the key of the group for which you wish to change 
case sensitivness for (see the language file for that language), and
+<var>$sensitivity</var> is a boolean value - <strong>true</strong> if the 
keyword is case sensitive, and <strong>false</strong> if not.</p>
+
+<h4 id="changing-config">3.6: Changing the Source, Language, Config 
Options</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#changing-the-source">Next</a> | <a 
href="#setting-case-sensitivity">Previous</a></div>
+
+<p>What happens if you want to change the source to be highlighted on the fly, 
or the
+language. Or if you want to specify any of those basic fields after you've 
created
+a GeSHi object? Well, that's where these methods come in.</p>
+
+<h5 id="changing-the-source">3.6.1: Changing the Source Code</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#changing-the-language">Next</a> | <a 
href="#changing-config">Previous</a></div>
+
+<p>To change the source code, you call the 
<strong><tt>set_source()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_source</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$newsource</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Example:</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source1</span>, <span 
style="color: #ff0000;">'php'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #808080; font-style: italic;">// Method calls to specify 
various options...</span><br />
+<br />
+<span style="color: #0000ff;">$code1</span> = <span style="color: 
#0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_source</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$source2</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<span style="color: #0000ff;">$code2</span> = <span style="color: 
#0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<h5 id="changing-the-language">3.6.2: Changing the Language</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#changing-the-path">Next</a> | <a 
href="#changing-the-source">Previous</a></div>
+
+<p>What happens if you want to change the language used for highlighting? Just 
call
+<strong><tt>set_language()</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_language</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'newlanguage'</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Example:</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #ff0000;">'php'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #0000ff;">$code</span> = <span style="color: 
#0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span>;<br />
+<br />
+<span style="color: #808080; font-style: italic;">// Highlight GeSHi's 
output</span><br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_source</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$code</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_language</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'html4strict'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_classes</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #000000; font-weight: bold;">false</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #0000ff;">$geshi</span>-&gt;<span 
style="color: #006600;">parse_code</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<div class="note"><div class="note-header">Note:</div><p>Names are 
case-insensitive - they will be converted to lower case to match a language
+file however. So if you're making a language file, remember it should have a 
name in lower case.</p></div>
+
+<div class="note"><div class="note-header">Note:</div><p>What you pass to this 
method is the name of a language file, minus the .php extension. If you're
+writing a plugin for a particular application, it's up to you to somehow 
convert user input into a valid language
+name.</p></div>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>GeSHi 
<strong><tt>include()</tt></strong>s the language file, so be careful to make 
sure
+that users can't pass some wierd language name to include any old script! 
GeSHi tries to strip non-valid characters
+out of a language name, but you should always do this your self anyway. In 
particular, language files are always
+lower-case, with either alphanumeric characters, dashes or underscores in 
their name.</p>
+
+<p>At the very least, strip &quot;/&quot; characters out of a language 
name.</p></div>
+
+<h5 id="changing-the-path">3.6.3: Changing the Language Path</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#changing-the-charset">Next</a> | <a 
href="#changing-the-language">Previous</a></div>
+
+<p>What happens if all of a sudden you want to use language files from a 
different
+directory from the current language file location? You call the 
<strong><tt>set_language_path()</tt></strong>
+method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_language_path</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$newpath</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>It doesn't matter whether the path has a trailing slash after it or not - 
only that
+it points to a valid folder. If it doesn't, that's your tough luck ;)</p>
+
+<h5 id="changing-the-charset">3.6.4: Changing the Character Set</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#error-handling">Next</a> | <a 
href="#changing-using-load-from-file">Previous</a></div>
+
+<p>As of version 1.0.3, you can use the method 
<strong><tt>set_encoding</tt></strong> to specify the character set that your
+source is in. Valid names are those names that are valid for the PHP function 
<tt><a href="http://www.php.net/htmlentities";>htmlentities()</a></tt>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_encoding</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$encoding</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>There is a table of valid strings for <var>$encoding</var> at the php.net 
manual linked to above. If you do not specify an encoding, or specify an
+invalid encoding, the character set used is ISO-8859-1.</p>
+
+<h5 id="changing-using-load-from-file">Using <tt>load_from_file</tt> to Change 
the Language and Source Code</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#error-handling">Next</a> | <a 
href="#changing-the-charset">Previous</a></div>
+
+<p>As of GeSHi 1.0.5, you can use the method 
<strong><tt>load_from_file</tt></strong> to load the source code and language 
from a file. Simply pass
+this method a file name and it will attempt to load the source and set the 
language.</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">load_from_file</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$file_name</span>, <span style="color: 
#0000ff;">$lookup</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p><var>$file_name</var> is the file name to use, and <var>$lookup</var> is an 
optional parameter that contains a lookup array to use for
+deciding which language to choose. You can use this to override GeSHi's 
default lookup array, which may not contain the extension of the file
+you're after, or perhaps does have your extension but under a different 
language. The lookup array is of the form:</p>
+
+<pre>array(
+        *   'lang_name' => array('extension', 'extension', ...),
+        *   'lang_name' ...
+        * );</pre>
+
+<p>Also, you can use the method 
<strong><tt>get_language_name_from_extension</tt></strong> if you need to 
convert a file extension to a valid language name.
+This method will return the empty string if it could not find a match in the 
lookup, and like <strong><tt>load_from_file</tt></strong> it accepts an
+optional second parameter that contains a lookup array.</p>
+
+<h4 id="error-handling">3.7: Error Handling</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#disabling-lexics">Next</a> | <a 
href="#changing-using-load-from-file">Previous</a></div>
+
+<p>What happens if you try to highlight using a language that doesn't exist? 
Or if GeSHi can't read a required file? The results
+you get may be confusing. You may check your code over and over, and never 
find anything wrong. GeSHi provides ways of finding
+out if GeSHi itself found anything wrong with what you tried to do. After 
highlighting, you can call the <strong><tt>error()</tt></strong>
+method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'hi'</span>, <span 
style="color: #ff0000;">'thisLangIsNotSupported'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #0000ff;">$geshi</span>-&gt;<span 
style="color: #006600;">error</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;&nbsp; <span 
style="color: #808080; font-style: italic;">// echoes error message</span><br />
+
+<p>The error message you will get will look like this:</p>
+
+<blockquote>GeSHi Error: GeSHi could not find the language 
thisLangIsNotSupported (using path geshi/) (code 2)</blockquote>
+
+<p>The error outputted will be the last error GeSHi came across, just like how 
<tt>mysql_error()</tt> works.</p>
+
+<h4 id="disabling-lexics">3.8: Disabling styling of some Lexics</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-tab-width">Next</a> | <a 
href="#error-handling">Previous</a></div>
+
+<p>One disadvantage of GeSHi is that for large source files using complex 
languages, it can be quite slow with every option
+turned on. Although future releases will concentrate on the speed/resource 
side of highlighting, for now you can gain
+speed increases by disabling some of the highlighting options. This is done by 
using a series of set_*_highlighting methods:</p>
+
+<ul>
+       <li><strong><tt>set_keyword_group_highlighting(<var>$group</var>, 
<var>$flag</var>):</tt></strong> Sets whether a particular
+       <var>$group</var> of keywords is to be highlighted or not. Consult the 
necessary language file(s) to see what <var>$group</var>
+       should be for each group (typically a positive integer). 
<var>$flag</var> is <strong>false</strong> if you want to disable highlighting
+       of this group, and <strong>true</strong> if you want to re-enable 
higlighting of this group. If you disable a keyword group then
+       even if the keyword group has a related URL one will not be generated 
for that keyword.</li>
+       <li><strong><tt>set_comments_highlighting(<var>$group</var>, 
<var>$flag</var>):</tt></strong> Sets whether a particular
+       <var>$group</var> of comments is to be highlighted or not. Consult the 
necessary language file(s) to see what <var>$group</var>
+       should be for each group (typically a positive integer, or the string 
'MULTI' for multiline comments. <var>$flag</var> is
+       <strong>false</strong> if you want to disable highlighting of this 
group, and <strong>true</strong> if you want to re-enable
+       highlighting of this group.</li>
+       <li><strong><tt>set_regexps_highlighting(<var>$regexp</var>, 
<var>$flag</var>):</tt></strong> Sets whether a particular
+       <var>$regexp</var> is to be highlighted or not. Consult the necessary 
language file(s) to see what <var>$regexp</var>
+       should be for each regexp (typically a positive integer, or the string 
'MULTI' for multiline comments. <var>$flag</var> is
+       <strong>false</strong> if you want to disable highlighting of this 
group, and <Strong>true</strong> if you want to re-enable
+       highlighting of this group.</li>
+       <li>The following methods:
+       <ul>
+               
<li><strong><tt>set_escape_characters_highlighting(<var>$flag</var>)</tt></strong></li>
+               
<li><strong><tt>set_symbols_highlighting(<var>$flag</var>)</tt></strong></li>
+               
<li><strong><tt>set_strings_highlighting(<var>$flag</var>)</tt></strong></li>
+               
<li><strong><tt>set_numbers_highlighting(<var>$flag</var>)</tt></strong></li>
+               
<li><strong><tt>set_methods_highlighting(<var>$flag</var>)</tt></strong></li>
+       </ul>
+       Work on their respective lexics (e.g. set_methods_highlighting will 
disable/enable highlighting of methods). For each
+       method, if <var>$flag</var> is <strong>false</strong> then the related 
lexics will not be highlighted at all (this
+       means no HTML will surround the lexic like usual, saving on time and 
bandwidth.</li>
+</ul>
+
+<h4 id="setting-tab-width">3.9: Setting the Tab Width</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#using-strict-mode">Next</a> | <a 
href="#disabling-lexics">Previous</a></div>
+
+<p>If you're using the <tt>&lt;pre&gt;</tt> header, tabs are handled 
automatically by your browser, and in general you can count on good results. 
However,
+if you're using the <tt>&lt;div&gt;</tt> header, you may want to specify a tab 
width explicitly.</p>
+
+<p>Note that tabs created in this fashion won't be like normal tabs - there 
won't be &quot;tab-stops&quot; as such, instead
+tabs will be replaced with the specified number of spaces.</p>
+
+<p>To change the tab width, you call the 
<strong><tt>set_tab_width()</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_tab_width</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$width</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$width</var> is the width in spaces that you'd like tabs to 
be.</p>
+
+<h4 id="using-strict-mode">3.10: Using Strict Mode</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#adding-removing-keywords">Next</a> | <a 
href="#setting-tab-width">Previous</a></div>
+
+<p>Some languages like to get tricky, and jump in and out of the file that 
they're in. For example, the vast majority of you reading
+this will have used a PHP file. And you know that PHP code is only executed if 
it's within delimiters like &lt;?php and ?&gt; (there
+are others of course...). So what happens if you do the following in a php 
file?</p>
+
+<code>&lt;img src=&quot;&lt;?php echo rand(1, 100) ?&gt;&quot; /&gt;</code>
+
+<p>Well normally using GeSHi with PHP, or using a bad highlighter, you'll end 
up with this:</p>
+
+<code>&lt;img src=<span style="color: #ff0000;">"&lt;?php echo rand(1, 100) 
?&gt;"</span> /&gt;</code>
+
+<p>What a mess! Especially if you're being slack about where you're putting 
your quotes, you could end up with the rest of your
+file as bright red. Fortunately, you can tell GeSHi to be &quot;strict&quot; 
about just when it highlights and when it does not,
+using the <strong><tt>enable_strict_mode</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_strict_mode</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$mode</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$mode</var> is <strong>true</strong> or not specified to enable 
strict mode, or <strong>false</strong> to disable strict mode
+if you've already turned it and don't want it now.</p>
+
+<p>Here's the result: much better!</p>
+
+<code>&lt;img src=&quot;<span style="color: #000000; font-weight: 
bold;">&lt;?php</span> <a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <a href="http://www.php.net/rand";><span style="color: 
#000066;">rand</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">100</span><span 
style="color: #66cc66;">&#41;</span> <span style="color: #000000; font-weight: 
bold;">?&gt;</span>&quot; /&gt;</code>
+
+<h4 id="adding-removing-keywords">3.11: Adding/Removing Keywords</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#adding-a-keyword">Next</a> | <a 
href="#using-strict-mode">Previous</a></div>
+
+<p>Lets say that you're working on a large project, with many files, many 
classes and many functions. Perhaps also you have the source code
+on the web and highlighted by GeSHi, perhaps as a front end to CVS, as a 
learning tool, something to refer to, whatever. Well, why not highlight
+the names of the functions and classes *your* project uses, as well as the 
standard functions and classes? Or perhaps you're not interested in
+highlighting certain functions, and would like to remove them? Or maybe you 
don't mind if an entire function group goes west in the interest
+of speed? GeSHi can handle all of this!</p>
+
+<h5 id="adding-a-keyword">3.11.1: Adding a Keyword</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#removing-a-keyword">Next</a> | <a 
href="#adding-removing-keywords">Previous</a></div>
+
+<p>If you want to add a keyword to an existing keyword group, you use the 
<strong><tt>add_keyword</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">add_keyword</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$key</span>, <span style="color: 
#0000ff;">$word</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$key</var> is the index of the group of keywords you want to add 
this keyword to, and <var>$word</var> is the word to add.</p>
+
+<p>This implies knowledge of the language file to know the correct index.</p>
+
+<div class="note"><div class="note-header">Note:</div><p>Keywords should 
contain at least two alphabetical characters (lower or upper case letters
+only). This is to enable GeSHi to work much faster by not bothering to try to 
detect keywords in parts of your source where there is no alphabetical
+characters.</div>
+
+<h5 id="removing-a-keyword">3.11.2: Removing a Keyword</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#adding-a-keyword-group">Next</a> | <a 
href="#adding-a-keyword">Previous</a></div>
+
+<p>Perhaps you want to remove a keyword from an existing group. Maybe you 
don't use it and want to save yourself some time. Whatever the
+reason, you can remove it using the <strong><tt>remove_keyword</tt></strong> 
method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">remove_keyword</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$key</span>, <span style="color: 
#0000ff;">$word</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$key</var> is the index of the gropu of keywords that you want 
to remove this keyword from, and <var>$word</var> is the word to remove.</p>
+
+<p>This implies knowledge of the language file to know the correct index - 
most of the time the keywords you'll want to remove will be in
+group 3, but this is not guaranteed and you should check the language file 
first.</p>
+
+<p>This function is silent - if the keyword is not in the group you specified, 
nothing awful will happen ;)</p>
+
+<h5 id="adding-a-keyword-group">3.11.3: Adding a Keyword Group</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#removing-a-keyword-group">Next</a> | <a 
href="#removing-a-keyword">Previous</a></div>
+
+<p>Lets say for your big project you have several main functions and classes 
that you'd like highlighted. Why not add them as their own group
+instead of having them highlighted the same way as other keywords? Then you 
can make them stand out, and people can instantly see which functions
+and classes are user defined or inbuilt. Furthermore, you could set the URL 
for this group to point at the API documentation of your project.</p>
+
+<p>You add a keyword group by using the 
<strong><tt>add_keyword_group</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">add_keyword_group</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$key</span>, <span 
style="color: #0000ff;">$styles</span>, <span style="color: 
#0000ff;">$case_sensitive</span>, <span style="color: 
#0000ff;">$words</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$key</var> is the key that you want to use to refer to this 
group, <var>$styles</var> is the styles that you want to
+use to style this group, <var>$case_sensitive</var> is <strong>true</strong> 
or <strong>false</strong> depending on whether you want
+this group of keywords to be case sensitive or not and <var>$words</var> is an 
array of words (or a string) of which words to add
+to this group. For example:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">add_keyword_group</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #cc66cc;">10</span>, <span 
style="color: #ff0000;">'color: #600000;'</span>, <span style="color: #000000; 
font-weight: bold;">false</span>, <a href="http://www.php.net/array";><span 
style="color: #000066;">array</span></a><span style="color: 
#66cc66;">&#40;</span><span style="color: #ff0000;">'myfunc_1'</span>, <span 
style="color: #ff0000;">'myfunc_2'</span>, <span style="color: 
#ff0000;">'myfunc_3'</span><span style="color: #66cc66;">&#41;</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Adds a keyword group referenced by index 10, of which all keywords in the 
group will be <span style="color: #600000;">dark red</span>,
+each keyword can be in any case and which contains the keywords 
&quot;myfunc_1&quot;, &quot;myfunc_2&quot; and &quot;myfunc_3&quot;.</p>
+
+<p>After creating such a keyword group, you may call other GeSHi methods on 
it, just as you would for any other keyword group.</p>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>If you 
specify a <var>$key</var> for which there is already a keyword
+group, the old keyword group will be overwritten! Most language files don't 
use numbers larger than 5, so I recommend you play it
+safe and use a number like 10 or 42.</div>
+
+<h5 id="removing-a-keyword-group">3.11.4: Removing a Keyword Group</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#headers-and-footers">Next</a> | <a 
href="#adding-a-keyword-group">Previous</a></div>
+
+<p>Perhaps you *really* need speed? Why not just remove an entire keyword 
group? GeSHi won't have to loop through each
+keyword checking for its existance, saving much time. You removing a keyword 
group by using the <strong><tt>remove_keyword_group</tt></strong>
+method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">remove_keyword_group</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$key</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$key</var> is the key of the group you wish to remove. This 
implies knowleged of the language file.</p>
+
+<h4 id="headers-and-footers">3.12: Headers and Footers for Your Code</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#keyword-substitution">Next</a> | <a 
href="#removing-a-keyword-group">Previous</a></div>
+
+<p>So you want to add some special information to the highlighted source? 
GeSHi can do that too! You can specify headers
+and footers for your code, style them, and insert information from the 
highlighted source into your header or footer.</p>
+
+<h5 id="keyword-substitution">3.12.1: Keyword Substitution</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-header-content">Next</a> | <a 
href="#headers-and-footers">Previous</a></div>
+
+<p>In your header and footer, you can put special keywords that will be 
replaced with actual configuration values for
+this GeSHi object. The keywords you can use are:</p>
+
+<ul>
+       <li><strong>&lt;TIME&gt;:</strong> Is replaced by the time it took for 
the <tt>parse_code</tt> method - i.e., how
+       long it took for your code to be highlighted. The time is returned to 
three decimal places.</li>
+       <li><strong>&lt;LANGUAGE&gt;:</strong> Is replaced by a nice, friendly 
version of the language name used to
+       highlight this code.</li>
+       <li><strong>&lt;VERSION&gt;:</strong> The GeSHi version used to 
highlight the code.</li>
+</ul>
+
+<h5 id="setting-header-content">3.12.2: Setting Header Content</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-footer-content">Next</a> | <a 
href="#keyword-substitution">Previous</a></div>
+
+<p>The header for your code is a &lt;div&gt;, which is inside the containing 
block. Therefore, it is affected by
+the method <strong><tt>set_overall_style</tt></strong>, and should contain the 
sort of HTML that belongs in a &lt;div&gt;.
+You may use any HTML you like, and format it as an HTML document. You should 
use valid HTML - convert to entities
+any quotemarks or angle brackets you want displayed. You set the header 
content using the method <strong><tt>set_header_content</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_header_content</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$content</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$content</var> is the HTML you want to use for the header.</p>
+
+<h5 id="setting-footer-content">3.12.3: Setting Footer Content</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#styling-header-content">Next</a> | <a 
href="#setting-header-content">Previous</a></div>
+
+<p>The footer for your code is a &lt;div&gt;, which is inside the containing 
block. Therefore, it is affected by
+the method <strong><tt>set_overall_style</tt></strong>, and should contain the 
sort of HTML that belongs in a &lt;div&gt;.
+You may use any HTML you like, and format it as an HTML document. You should 
use valid HTML - convert to entities
+any quotemarks or angle brackets you want displayed. You set the footer 
content using the method <strong><tt>set_footer_content</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_footer_content</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$content</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$content</var> is the HTML you want to use for the footer.</p>
+
+<h5 id="styling-header-content">3.12.4: Styling Header Content</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#styling-footer-content">Next</a> | <a 
href="#setting-footer-content">Previous</a></div>
+
+<p>You can apply styles to the header content you have set with the 
<strong><tt>set_header_content_style</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_header_content_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$styles</var> is the stylesheet declarations you want to use to 
style the header content.</p>
+
+<h5 id="styling-footer-content">3.12.5: Styling Footer Content</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#keyword-urls">Next</a> | <a 
href="#styling-header-content">Previous</a></div>
+
+<p>You can apply styles to the footer content you have set with the 
<strong><tt>set_footer_content_style</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_footer_content_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$styles</var> is the stylesheet declarations you want to use to 
style the footer content.</p>
+
+<h4 id="keyword-urls">3.13: Keyword URLs</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#setting-a-url">Next</a> | <a 
href="#styling-footer-content">Previous</a></div>
+
+<p>As of version 1.0.2, GeSHi allows you to specify a URL for keyword groups. 
This URL is used by GeSHi to convert the
+keywords in that group into URLs to appropriate documentation. And using 
<strong><tt>add_keyword_group</tt></strong> you
+can add functions and classes from your own projects and use the URL 
functionality to provide a link to your own API
+documentation.</p>
+
+<h5 id="setting-a-url">3.13.1: Setting a URL for a Keyword Group</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#disabling-urls">Next</a> | <a href="#keyword-urls">Previous</a></div>
+
+<p>To set the URL to be used for a keyword group, you use the 
<strong><tt>set_url_for_keyword_group</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_url_for_keyword_group</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$group</span>, <span 
style="color: #0000ff;">$url</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$group</var> is the keyword group you want to assign the URL 
for, and <var>$url</var> is the URL for this
+group of keywords.</p>
+
+<p>You may be wondering how to make each keyword in the group point to the 
correct URL. You do this by putting <tt>{FNAME}</tt>
+in the URL at the correct place. For example, PHP makes it easy by linking 
www.php.net/function-name to the documentation for
+that function, so the URL used is <tt>http://www.php.net/{FNAME}</tt>.</p>
+
+<p>Of course, when you get to a language like Java, that puts its class 
documentation in related folders, it gets a little trickier
+to work out an appropriate URL (see the Java language file!). I hope to 
provide some kind of redirection service at
+the GeSHi website in the future.</p>
+
+<h5 id="disabling-urls">3.13.2: Disabling a URL for a Keyword Group</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#styling-links">Next</a> | <a href="#setting-a-url">Previous</a></div>
+
+<p>It's easy to disable a URL for a keyword group: Simply use the method 
<strong><tt>set_url_for_keyword_group</tt></strong> to pass an empty string
+as the URL:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_url_for_keyword_group</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$group</span>, <span 
style="color: #ff0000;">''</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<h5 id="styling-links">3.13.3: Styling Links</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#using-targets">Next</a> | <a href="#disabling-urls">Previous</a></div>
+
+<p>You can also style the function links. You can style their default status, 
hovered, active and visited status.
+All of this is controlled by one method, 
<strong><tt>set_link_styles</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_link_styles</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$mode</span>, <span style="color: 
#0000ff;">$styles</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$mode</var> is one of four values:</p>
+
+<ul>
+       <li><strong><tt>GESHI_LINK</tt>:</strong> The default style of the 
links.</li>
+       <li><strong><tt>GESHI_HOVER</tt>:</strong> The style of the links when 
they have focus (the mouse is hovering
+       over them).</li>
+       <li><strong><tt>GESHI_ACTIVE</tt>:</strong> The style of the links when 
they are being clicked.</li>
+       <li><strong><tt>GESHI_VISITED</tt>:</strong> The style of links that 
the user has already visited.</li>
+</ul>
+
+<p>And <var>$styles</var> is the stylesheet declarations to apply to the 
links.</p>
+
+<h5 id="using-targets">3.13.4: Setting the Link Target</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#using-contextual-importance">Next</a> | <a 
href="#styling-links">Previous</a></div>
+
+<p>Perhaps you want to set the target of link attributes, so the manual pages 
open in a new window? Use the <strong><tt>set_link_target</tt></strong> 
method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_link_target</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$target</span>, <span style="color: 
#0000ff;">$styles</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$target</var> is any valid (X)HTML target value - 
<tt>_blank</tt> or <tt>_top</tt> for example.</p>
+
+<h4 id="using-contextual-importance">3.14: Using Contextual Importance</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#context-important-markers">Next</a> | <a 
href="#styling-links">Previous</a></div>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>This 
functionality is not only buggy, but is proving
+very hard to implement in 1.1.X. Therefore, this functionality may well be 
<strong>removed</strong> in 1.2.0. You are
+hereby warned!</div>
+
+<h4 id="highlighting-special-lines-extra">3.15: Highlighting Special Lines 
&quot;Extra&quot;</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#specifying-lines-to-highlight-extra">Next</a> | <a 
href="#disabling-contextual-importance">Previous</a></div>
+
+<p>An alternative (and more stable) method of highlighting code that is 
important is to use extra highlighting by line.
+Although you may not know what line numbers contain the important lines, if 
you do this method is a much more flexible
+way of making important lines stand out.</p>
+
+<h5 id="specifying-lines-to-highlight-extra">3.15.1: Specifying the Lines to 
Highlight Extra</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#styles-for-highlighted-lines">Next</a> | <a 
href="#highlighting-special-lines-extra">Previous</a></div>
+
+<p>To specify which lines to highlight extra, you past an array containing the 
line numbers to <strong><tt>highlight_lines_extra</tt></strong>:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">highlight_lines_extra</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$array</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>The array could be in the form <tt>array(2, 3, 4, 7, 12, 344, 4242)</tt>, 
made from a DB query, generated from looking
+through the source for certain important things and working out what line 
those things are... however you get the line numbers,
+the array should simply be an array of integers.</p>
+
+<p>Here's an example, using the same source as before:</p>
+
+<code><span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #808080; font-style: italic;">// Here we go again! This 
time we'll simply highlight the 8th line</span><br />
+<span style="color: #808080; font-style: italic;">//</span><br />
+<span style="color: #0000ff;">$source</span> = <span style="color: 
#ff0000;">'public int[][] product ( n, m )<br />
+{<br />
+&nbsp; int [][] ans = new int[n][m];<br />
+&nbsp; for ( int i = 0; i &lt; n; i++ )<br />
+&nbsp; {<br />
+&nbsp; &nbsp; for ( int j = 0; i &lt; m; j++ )<br />
+
+&nbsp; &nbsp; {<br />
+&nbsp; &nbsp; &nbsp; ans[i][j] = i * j;<br />
+&nbsp; &nbsp; }<br />
+&nbsp; }<br />
+
+&nbsp; return ans;<br />
+}'</span>;<br />
+<br />
+
+<span style="color: #0000ff;">$geshi</span> = <span style="color: #000000; 
font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #ff0000;">'java'</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">highlight_lines_extra</span><span style="color: 
#66cc66;">&#40;</span><a href="http://www.php.net/array";><span style="color: 
#000060;">array</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #8866ff;">8<span style="color: #66cc66;">&#41;</span></span><span 
style="color: #66cc66;">&#41;</span>;
+
+<br />
+<a href="http://www.php.net/echo";><span style="color: 
#000066;">echo</span></a> <span style="color: #0000ff;">$geshi</span>-&gt;<span 
style="color: #006600;">parse_code</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Which produces:</p>
+
+<code><span style="color: #000000; font-weight: bold;">public</span> <span 
style="color: #993333;">int</span><span style="color: 
#66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span><span 
style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> 
product <span style="color: #66cc66;">&#40;</span> n, m <span style="color: 
#66cc66;">&#41;</span><br />
+<span style="color: #66cc66;">&#123;</span><br />
+
+&nbsp; <span style="color: #993333;">int</span> <span style="color: 
#66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span><span 
style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span> 
ans = <span style="color: #000000; font-weight: bold;">new</span> <span 
style="color: #993333;">int</span><span style="color: 
#66cc66;">&#91;</span>n<span style="color: #66cc66;">&#93;</span><span 
style="color: #66cc66;">&#91;</span>m<span style="color: 
#66cc66;">&#93;</span>;<br />
+&nbsp; <span style="color: #b1b100;">for</span> <span style="color: 
#66cc66;">&#40;</span> <span style="color: #993333;">int</span> i = <span 
style="color: #cc66cc;">0</span>; i &lt; n; i++ <span style="color: 
#66cc66;">&#41;</span><br />
+
+&nbsp; <span style="color: #66cc66;">&#123;</span><br />
+&nbsp; &nbsp; <span style="color: #b1b100;">for</span> <span style="color: 
#66cc66;">&#40;</span> <span style="color: #993333;">int</span> j = <span 
style="color: #cc66cc;">0</span>; i &lt; m; j++ <span style="color: 
#66cc66;">&#41;</span><br />
+&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
+</code>
+<div style="color: #cc0; background-color: #ffc;"><code>&nbsp; &nbsp; &nbsp; 
ans<span style="color: #66cc66;">&#91;</span>i<span style="color: 
#66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>j<span 
style="color: #66cc66;">&#93;</span> = i * j;<br /></code></div>
+<code>&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
+&nbsp; <span style="color: #66cc66;">&#125;</span><br />
+&nbsp; <span style="color: #000000; font-weight: bold;">return</span> ans;<br 
/>
+
+<span style="color: #66cc66;">&#125;</span></code>
+
+<p>What's more, as you can see the code on a highlighted line is still 
actually highlighted itself. </p>
+
+<div class="note"><div class="note-header">Note:</div><p>As you can see, this 
is a little buggy, but that is because of HTML laws
+(code elements should not contain div elements). This works just fine if you 
use line numbers.</div>
+
+<h5 id="styles-for-highlighted-lines">3.15.2: Styles for the Highlighted 
Lines</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#adding-ids-to-each-line">Next</a> | <a 
href="#specifying-lines-to-highlight-extra">Previous</a></div>
+
+<p>Again as with contextual importance, you're not chained to the yellow theme 
that is the default. You can use the
+<strong><tt>set_highlight_lines_extra_style</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">set_highlight_lines_extra_style</span><span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$styles</span><span 
style="color: #66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$styles</var> is the stylesheet declarations that you want to 
apply to highlighted lines.</p>
+
+<h4 id="adding-ids-to-each-line">3.16: Adding IDs to Each Line</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#getting-the-time-of-styling">Next</a> | <a 
href="#styles-for-highlighted-lines">Previous</a></div>
+
+<p>Perhaps you're a javascript junkie? GeSHi provides a way to give each line 
an ID so you can access that line with
+javascript, or perhaps just by plain CSS (though if you want to access lines 
by CSS you should use the method in the
+previous section). To enable IDs you call the 
<strong><tt>enable_ids</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">enable_ids</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$flag</span><span style="color: 
#66cc66;">&#41;</span>;</code>
+
+<p>Where <var>$flag</var> is <strong>true</strong> or not present to enable 
IDs, and <strong>false</strong> to disable them
+again if you need.</p>
+
+<p>The ID generated is in the form <tt>{overall-css-id}-{line-number}</tt>. So 
for example, if you set the overall
+CSS id to be &quot;mycode&quot;, then the IDs for each line would by 
&quot;mycode-1&quot;, &quot;mycode-2&quot; etc.
+If there is no CSS ID set, then one is made up in the form <tt>geshi-[4 random 
characters]</tt>, but this is not
+so useful for if you want to do javascript manipulation.</p>
+
+<h4 id="getting-the-time-of-styling">3.17: Getting the Time of Styling</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-files">Next</a> | <a 
href="#adding-ids-to-each-line">Previous</a></div>
+
+<p>Once you've called <tt>parse_code</tt>, you can get the time it took to run 
the highlighting by calling the
+<strong><tt>get_time</tt></strong> method:</p>
+
+<code><span style="color: #0000ff;">$geshi</span> = <span style="color: 
#000000; font-weight: bold;">new</span> GeSHi<span style="color: 
#66cc66;">&#40;</span><span style="color: #0000ff;">$source</span>, <span 
style="color: #0000ff;">$language</span>, <span style="color: 
#0000ff;">$path</span><span style="color: #66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #0000ff;">$code</span> = <a 
href="http://www.php.net/addslashes";><span style="color: 
#000066;">addslashes</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #0000ff;">$geshi</span>-&gt;<span style="color: 
#006600;">parse_code</span><span style="color: #66cc66;">&#40;</span><span 
style="color: #66cc66;">&#41;</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+<span style="color: #0000ff;">$time</span> = <span style="color: 
#0000ff;">$geshi</span>-&gt;<span style="color: #006600;">get_time</span><span 
style="color: #66cc66;">&#40;</span><span style="color: 
#66cc66;">&#41;</span>;<br />
+
+<br />
+<span style="color: #808080; font-style: italic;">// do something with 
it</span><br />
+<a href="http://www.php.net/mysql_query";><span style="color: 
#000066;">mysql_query</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">"INSERT INTO code VALUES ('$code', 
'$time')"</span><span style="color: #66cc66;">&#41;</span>;</code>
+
+
+<h3 id="language-files">4: Language Files</a></h3>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-example">Next</a> | <a href="#">Previous</a></div>
+
+<p>So now you know what features GeSHi offers, and perhaps you've even meddled 
with the source. Or perhaps
+you'd like a language file for language X but it doesn't seem to be supported? 
Rubbish! GeSHi will highlight
+anything, what do you think I coded this for? ^_^ You'll just have to learn 
how to make a language file
+yourself. And I promise it's not too hard - and if you're here you're in the 
right place!</p>
+
+<h4 id="language-file-example">4.1: An Example Language File</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-conventions">Next</a> | <a 
href="#language-files">Previous</a></div>
+
+<p>Let's begin by looking at an example language file - the language file for 
the first language ever supported,
+PHP.</p>
+
+<pre><span style="color: #000000; font-weight: bold;">&lt;?php</span>
+<span style="color: #808080; font-style: 
italic;">/*************************************************************************************
+ * php.php
+ * --------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.2
+ * CVS Revision Version: $<!---->Revision$
+ * Date Started: 2004/06/20
+ * Last Modified: $<!---->Date$
+ *
+ * PHP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.2)
+ *  -  Added URL support
+ *  -  Added extra constants
+ * 2004/08/05 (1.0.1)
+ *  -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Make sure the last few function I may have missed
+ *   (like eval()) are included for highlighting
+ * * Split to several files - php4, php5 etc
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/</span>
+&nbsp;
+<span style="color: #0000ff;">$language_data</span> = <a 
href="http://www.php.net/array";><span style="color: #000066;">array</span></a> 
<span style="color: #66cc66;">&#40;</span>
+       <span style="color: #ff0000;">'LANG_NAME'</span> =&gt; <span 
style="color: #ff0000;">'PHP'</span>,
+       <span style="color: #ff0000;">'COMMENT_SINGLE'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #cc66cc;">1</span> =&gt; <span style="color: 
#ff0000;">'//'</span>, <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #ff0000;">'#'</span><span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'COMMENT_MULTI'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">'/*'</span> =&gt; <span style="color: 
#ff0000;">'*/'</span><span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'CASE_KEYWORDS'</span> =&gt; 
GESHI_CAPS_NO_CHANGE,
+       <span style="color: #ff0000;">'QUOTEMARKS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span 
style="color: #ff0000;">"'"</span>, <span style="color: 
#ff0000;">'&quot;'</span><span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'ESCAPE_CHAR'</span> =&gt; <span 
style="color: #ff0000;">'<span style="color: #000099; font-weight: 
bold;">\\</span>'</span>,
+       <span style="color: #ff0000;">'KEYWORDS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #cc66cc;">1</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #ff0000;">'include'</span>, <span 
style="color: #ff0000;">'require'</span>, <span style="color: 
#ff0000;">'include_once'</span>, <span style="color: 
#ff0000;">'require_once'</span>,
+                       <span style="color: #ff0000;">'for'</span>, <span 
style="color: #ff0000;">'foreach'</span>, <span style="color: 
#ff0000;">'as'</span>, <span style="color: #ff0000;">'if'</span>, <span 
style="color: #ff0000;">'elseif'</span>, <span style="color: 
#ff0000;">'else'</span>, <span style="color: #ff0000;">'while'</span>, <span 
style="color: #ff0000;">'do'</span>, <span style="color: 
#ff0000;">'endwhile'</span>, <span style="color: #ff0000;">'endif'</span>, 
<span style="color: #ff0000;">'switch'</span>, <span style="color: 
#ff0000;">'case'</span>, <span style="color: #ff0000;">'endswitch'</span>,
+                       <span style="color: #ff0000;">'return'</span>, <span 
style="color: #ff0000;">'break'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #cc66cc;">2</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #ff0000;">'null'</span>, <span 
style="color: #ff0000;">'__LINE__'</span>, <span style="color: 
#ff0000;">'__FILE__'</span>,
+                       <span style="color: #ff0000;">'false'</span>, <span 
style="color: #ff0000;">'&amp;lt;?php'</span>, <span style="color: 
#ff0000;">'?&amp;gt;'</span>, <span style="color: #ff0000;">'&amp;lt;?'</span>,
+                       <span style="color: #ff0000;">'&amp;lt;script 
language='</span>, <span style="color: 
#ff0000;">'&amp;lt;/script&amp;gt;'</span>,
+                       <span style="color: #ff0000;">'true'</span>, <span 
style="color: #ff0000;">'var'</span>, <span style="color: 
#ff0000;">'default'</span>,
+                       <span style="color: #ff0000;">'function'</span>, <span 
style="color: #ff0000;">'class'</span>, <span style="color: 
#ff0000;">'new'</span>,
+                       <span style="color: #ff0000;">'__FUNCTION__'</span>, 
<span style="color: #ff0000;">'__CLASS__'</span>, <span style="color: 
#ff0000;">'__METHOD__'</span>, <span style="color: 
#ff0000;">'PHP_VERSION'</span>,
+                       <span style="color: #ff0000;">'PHP_OS'</span>, <span 
style="color: #ff0000;">'DEFAULT_INCLUDE_PATH'</span>, <span style="color: 
#ff0000;">'PEAR_INSTALL_DIR'</span>, <span style="color: 
#ff0000;">'PEAR_EXTENSION_DIR'</span>,
+                       <span style="color: 
#ff0000;">'PHP_EXTENSION_DIR'</span>, <span style="color: 
#ff0000;">'PHP_BINDIR'</span>, <span style="color: 
#ff0000;">'PHP_LIBDIR'</span>, <span style="color: 
#ff0000;">'PHP_DATADIR'</span>, <span style="color: 
#ff0000;">'PHP_SYSCONFDIR'</span>,
+                       <span style="color: 
#ff0000;">'PHP_LOCALSTATEDIR'</span>, <span style="color: 
#ff0000;">'PHP_CONFIG_FILE_PATH'</span>, <span style="color: 
#ff0000;">'PHP_OUTPUT_HANDLER_START'</span>, <span style="color: 
#ff0000;">'PHP_OUTPUT_HANDLER_CONT'</span>,
+                       <span style="color: 
#ff0000;">'PHP_OUTPUT_HANDLER_END'</span>, <span style="color: 
#ff0000;">'E_ERROR'</span>, <span style="color: #ff0000;">'E_WARNING'</span>, 
<span style="color: #ff0000;">'E_PARSE'</span>, <span style="color: 
#ff0000;">'E_NOTICE'</span>,
+                       <span style="color: #ff0000;">'E_CORE_ERROR'</span>, 
<span style="color: #ff0000;">'E_CORE_WARNING'</span>, <span style="color: 
#ff0000;">'E_COMPILE_ERROR'</span>, <span style="color: 
#ff0000;">'E_COMPILE_WARNING'</span>, <span style="color: 
#ff0000;">'E_USER_ERROR'</span>,
+                       <span style="color: #ff0000;">'E_USER_WARNING'</span>, 
<span style="color: #ff0000;">'E_USER_NOTICE'</span>, <span style="color: 
#ff0000;">'E_ALL'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #cc66cc;">3</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: 
#ff0000;">'zlib_get_coding_type'</span>,<span style="color: 
#ff0000;">'zend_version'</span>,<span style="color: 
#ff0000;">'zend_logo_guid'</span>,<span style="color: 
#ff0000;">'yp_order'</span>,<span style="color: #ff0000;">'yp_next'</span>,
+                       <span style="color: #ff0000;">'yp_match'</span>,<span 
style="color: #ff0000;">'yp_master'</span>,<span style="color: 
#ff0000;">'yp_get_default_domain'</span>,<span style="color: 
#ff0000;">'yp_first'</span>,<span style="color: 
#ff0000;">'yp_errno'</span>,<span style="color: 
#ff0000;">'yp_err_string'</span>,
+                       <span style="color: #ff0000;">'yp_cat'</span>,<span 
style="color: #ff0000;">'yp_all'</span>,<span style="color: 
#ff0000;">'xml_set_unparsed_entity_decl_handler'</span>,<span style="color: 
#ff0000;">'xml_set_start_namespace_decl_handler'</span>,<span style="color: 
#ff0000;">'xml_set_processing_instruction_handler'</span>,<span style="color: 
#ff0000;">'xml_set_object'</span>,
+                       <span style="color: 
#ff0000;">'xml_set_notation_decl_handler'</span>,<span style="color: 
#ff0000;">'xml_set_external_entity_ref_handler'</span>,<span style="color: 
#ff0000;">'xml_set_end_namespace_decl_handler'</span>,<span style="color: 
#ff0000;">'xml_set_element_handler'</span>,<span style="color: 
#ff0000;">'xml_set_default_handler'</span>,<span style="color: 
#ff0000;">'xml_set_character_data_handler'</span>,
+                       <span style="color: 
#ff0000;">'xml_parser_set_option'</span>,<span style="color: 
#ff0000;">'xml_parser_get_option'</span>,<span style="color: 
#ff0000;">'xml_parser_free'</span>,<span style="color: 
#ff0000;">'xml_parser_create_ns'</span>,<span style="color: 
#ff0000;">'xml_parser_create'</span>,<span style="color: 
#ff0000;">'xml_parse_into_struct'</span>,
+                       <span style="color: #ff0000;">'xml_parse'</span>,<span 
style="color: #ff0000;">'xml_get_error_code'</span>,<span style="color: 
#ff0000;">'xml_get_current_line_number'</span>,<span style="color: 
#ff0000;">'xml_get_current_column_number'</span>,<span style="color: 
#ff0000;">'xml_get_current_byte_index'</span>,<span style="color: 
#ff0000;">'xml_error_string'</span>,
+                       <span style="color: #ff0000;">'wordwrap'</span>,<span 
style="color: #ff0000;">'wddx_serialize_vars'</span>,<span style="color: 
#ff0000;">'wddx_serialize_value'</span>,<span style="color: 
#ff0000;">'wddx_packet_start'</span>,<span style="color: 
#ff0000;">'wddx_packet_end'</span>,<span style="color: 
#ff0000;">'wddx_deserialize'</span>,
+                       <span style="color: 
#ff0000;">'wddx_add_vars'</span>,<span style="color: 
#ff0000;">'vsprintf'</span>,<span style="color: 
#ff0000;">'vprintf'</span>,<span style="color: #ff0000;">'virtual'</span>,<span 
style="color: #ff0000;">'version_compare'</span>,<span style="color: 
#ff0000;">'var_export'</span>,
+                       <span style="color: #ff0000;">'var_dump'</span>,<span 
style="color: #ff0000;">'utf8_encode'</span>,<span style="color: 
#ff0000;">'utf8_decode'</span>,<span style="color: 
#ff0000;">'usort'</span>,<span style="color: #ff0000;">'usleep'</span>,<span 
style="color: #ff0000;">'user_error'</span>,
+                       <span style="color: #ff0000;">'urlencode'</span>,<span 
style="color: #ff0000;">'urldecode'</span>,<span style="color: 
#ff0000;">'unserialize'</span>,<span style="color: 
#ff0000;">'unregister_tick_function'</span>,<span style="color: 
#ff0000;">'unpack'</span>,<span style="color: #ff0000;">'unlink'</span>,
+                       <span style="color: #ff0000;">'unixtojd'</span>,<span 
style="color: #ff0000;">'uniqid'</span>,<span style="color: 
#ff0000;">'umask'</span>,<span style="color: #ff0000;">'uksort'</span>,<span 
style="color: #ff0000;">'ucwords'</span>,<span style="color: 
#ff0000;">'ucfirst'</span>,
+                       <span style="color: #ff0000;">'uasort'</span>,<span 
style="color: #ff0000;">'trim'</span>,<span style="color: 
#ff0000;">'trigger_error'</span>,<span style="color: 
#ff0000;">'touch'</span>,<span style="color: 
#ff0000;">'token_name'</span>,<span style="color: 
#ff0000;">'token_get_all'</span>,
+                       <span style="color: #ff0000;">'tmpfile'</span>,<span 
style="color: #ff0000;">'time'</span>,<span style="color: 
#ff0000;">'textdomain'</span>,<span style="color: 
#ff0000;">'tempnam'</span>,<span style="color: #ff0000;">'tanh'</span>,<span 
style="color: #ff0000;">'tan'</span>,
+                       <span style="color: #ff0000;">'system'</span>,<span 
style="color: #ff0000;">'syslog'</span>,<span style="color: 
#ff0000;">'symlink'</span>,<span style="color: 
#ff0000;">'substr_replace'</span>,<span style="color: 
#ff0000;">'substr_count'</span>,<span style="color: #ff0000;">'substr'</span>,
+                       <span style="color: #ff0000;">'strval'</span>,<span 
style="color: #ff0000;">'strtr'</span>,<span style="color: 
#ff0000;">'strtoupper'</span>,<span style="color: 
#ff0000;">'strtotime'</span>,<span style="color: 
#ff0000;">'strtolower'</span>,<span style="color: #ff0000;">'strtok'</span>,
+                       <span style="color: #ff0000;">'strstr'</span>,<span 
style="color: #ff0000;">'strspn'</span>,<span style="color: 
#ff0000;">'strrpos'</span>,<span style="color: #ff0000;">'strrev'</span>,<span 
style="color: #ff0000;">'strrchr'</span>,<span style="color: 
#ff0000;">'strpos'</span>,
+                       <span style="color: #ff0000;">'strncmp'</span>,<span 
style="color: #ff0000;">'strncasecmp'</span>,<span style="color: 
#ff0000;">'strnatcmp'</span>,<span style="color: 
#ff0000;">'strnatcasecmp'</span>,<span style="color: 
#ff0000;">'strlen'</span>,<span style="color: #ff0000;">'stristr'</span>,
+                       <span style="color: 
#ff0000;">'stripslashes'</span>,<span style="color: 
#ff0000;">'stripcslashes'</span>,<span style="color: 
#ff0000;">'strip_tags'</span>,<span style="color: 
#ff0000;">'strftime'</span>,<span style="color: 
#ff0000;">'stream_wrapper_register'</span>,<span style="color: 
#ff0000;">'stream_set_write_buffer'</span>,
+                       <span style="color: 
#ff0000;">'stream_set_timeout'</span>,<span style="color: 
#ff0000;">'stream_set_blocking'</span>,<span style="color: 
#ff0000;">'stream_select'</span>,<span style="color: 
#ff0000;">'stream_register_wrapper'</span>,<span style="color: 
#ff0000;">'stream_get_meta_data'</span>,<span style="color: 
#ff0000;">'stream_filter_prepend'</span>,
+                       <span style="color: 
#ff0000;">'stream_filter_append'</span>,<span style="color: 
#ff0000;">'stream_context_set_params'</span>,<span style="color: 
#ff0000;">'stream_context_set_option'</span>,<span style="color: 
#ff0000;">'stream_context_get_options'</span>,<span style="color: 
#ff0000;">'stream_context_create'</span>,<span style="color: 
#ff0000;">'strcspn'</span>,
+                       <span style="color: #ff0000;">'strcoll'</span>,<span 
style="color: #ff0000;">'strcmp'</span>,<span style="color: 
#ff0000;">'strchr'</span>,<span style="color: 
#ff0000;">'strcasecmp'</span>,<span style="color: 
#ff0000;">'str_word_count'</span>,<span style="color: 
#ff0000;">'str_shuffle'</span>,
+                       <span style="color: #ff0000;">'str_rot13'</span>,<span 
style="color: #ff0000;">'str_replace'</span>,<span style="color: 
#ff0000;">'str_repeat'</span>,<span style="color: 
#ff0000;">'str_pad'</span>,<span style="color: #ff0000;">'stat'</span>,<span 
style="color: #ff0000;">'sscanf'</span>,
+                       <span style="color: #ff0000;">'srand'</span>,<span 
style="color: #ff0000;">'sqrt'</span>,<span style="color: 
#ff0000;">'sql_regcase'</span>,<span style="color: 
#ff0000;">'sprintf'</span>,<span style="color: #ff0000;">'spliti'</span>,<span 
style="color: #ff0000;">'split'</span>,
+                       <span style="color: #ff0000;">'soundex'</span>,<span 
style="color: #ff0000;">'sort'</span>,<span style="color: 
#ff0000;">'socket_writev'</span>,<span style="color: 
#ff0000;">'socket_write'</span>,<span style="color: 
#ff0000;">'socket_strerror'</span>,<span style="color: 
#ff0000;">'socket_shutdown'</span>,
+                       <span style="color: 
#ff0000;">'socket_setopt'</span>,<span style="color: 
#ff0000;">'socket_set_timeout'</span>,<span style="color: 
#ff0000;">'socket_set_option'</span>,<span style="color: 
#ff0000;">'socket_set_nonblock'</span>,<span style="color: 
#ff0000;">'socket_set_blocking'</span>,<span style="color: 
#ff0000;">'socket_set_block'</span>,
+                       <span style="color: 
#ff0000;">'socket_sendto'</span>,<span style="color: 
#ff0000;">'socket_sendmsg'</span>,<span style="color: 
#ff0000;">'socket_send'</span>,<span style="color: 
#ff0000;">'socket_select'</span>,<span style="color: 
#ff0000;">'socket_recvmsg'</span>,<span style="color: 
#ff0000;">'socket_recvfrom'</span>,
+                       <span style="color: 
#ff0000;">'socket_recv'</span>,<span style="color: 
#ff0000;">'socket_readv'</span>,<span style="color: 
#ff0000;">'socket_read'</span>,<span style="color: 
#ff0000;">'socket_listen'</span>,<span style="color: 
#ff0000;">'socket_last_error'</span>,<span style="color: 
#ff0000;">'socket_iovec_set'</span>,
+                       <span style="color: 
#ff0000;">'socket_iovec_free'</span>,<span style="color: 
#ff0000;">'socket_iovec_fetch'</span>,<span style="color: 
#ff0000;">'socket_iovec_delete'</span>,<span style="color: 
#ff0000;">'socket_iovec_alloc'</span>,<span style="color: 
#ff0000;">'socket_iovec_add'</span>,<span style="color: 
#ff0000;">'socket_getsockname'</span>,
+                       <span style="color: 
#ff0000;">'socket_getpeername'</span>,<span style="color: 
#ff0000;">'socket_getopt'</span>,<span style="color: 
#ff0000;">'socket_get_status'</span>,<span style="color: 
#ff0000;">'socket_get_option'</span>,<span style="color: 
#ff0000;">'socket_create_pair'</span>,<span style="color: 
#ff0000;">'socket_create_listen'</span>,
+                       <span style="color: 
#ff0000;">'socket_create'</span>,<span style="color: 
#ff0000;">'socket_connect'</span>,<span style="color: 
#ff0000;">'socket_close'</span>,<span style="color: 
#ff0000;">'socket_clear_error'</span>,<span style="color: 
#ff0000;">'socket_bind'</span>,<span style="color: 
#ff0000;">'socket_accept'</span>,
+                       <span style="color: #ff0000;">'sleep'</span>,<span 
style="color: #ff0000;">'sizeof'</span>,<span style="color: 
#ff0000;">'sinh'</span>,<span style="color: #ff0000;">'sin'</span>,<span 
style="color: #ff0000;">'similar_text'</span>,<span style="color: 
#ff0000;">'shuffle'</span>,
+                       <span style="color: 
#ff0000;">'show_source'</span>,<span style="color: 
#ff0000;">'shmop_write'</span>,<span style="color: 
#ff0000;">'shmop_size'</span>,<span style="color: 
#ff0000;">'shmop_read'</span>,<span style="color: 
#ff0000;">'shmop_open'</span>,<span style="color: 
#ff0000;">'shmop_delete'</span>,
+                       <span style="color: 
#ff0000;">'shmop_close'</span>,<span style="color: 
#ff0000;">'shm_remove_var'</span>,<span style="color: 
#ff0000;">'shm_remove'</span>,<span style="color: 
#ff0000;">'shm_put_var'</span>,<span style="color: 
#ff0000;">'shm_get_var'</span>,<span style="color: 
#ff0000;">'shm_detach'</span>,
+                       <span style="color: #ff0000;">'shm_attach'</span>,<span 
style="color: #ff0000;">'shell_exec'</span>,<span style="color: 
#ff0000;">'sha1_file'</span>,<span style="color: #ff0000;">'sha1'</span>,<span 
style="color: #ff0000;">'settype'</span>,<span style="color: 
#ff0000;">'setlocale'</span>,
+                       <span style="color: #ff0000;">'setcookie'</span>,<span 
style="color: #ff0000;">'set_time_limit'</span>,<span style="color: 
#ff0000;">'set_socket_blocking'</span>,<span style="color: 
#ff0000;">'set_magic_quotes_runtime'</span>,<span style="color: 
#ff0000;">'set_include_path'</span>,<span style="color: 
#ff0000;">'set_file_buffer'</span>,
+                       <span style="color: 
#ff0000;">'set_error_handler'</span>,<span style="color: 
#ff0000;">'session_write_close'</span>,<span style="color: 
#ff0000;">'session_unset'</span>,<span style="color: 
#ff0000;">'session_unregister'</span>,<span style="color: 
#ff0000;">'session_start'</span>,<span style="color: 
#ff0000;">'session_set_save_handler'</span>,
+                       <span style="color: 
#ff0000;">'session_set_cookie_params'</span>,<span style="color: 
#ff0000;">'session_save_path'</span>,<span style="color: 
#ff0000;">'session_register'</span>,<span style="color: 
#ff0000;">'session_regenerate_id'</span>,<span style="color: 
#ff0000;">'session_name'</span>,<span style="color: 
#ff0000;">'session_module_name'</span>,
+                       <span style="color: 
#ff0000;">'session_is_registered'</span>,<span style="color: 
#ff0000;">'session_id'</span>,<span style="color: 
#ff0000;">'session_get_cookie_params'</span>,<span style="color: 
#ff0000;">'session_encode'</span>,<span style="color: 
#ff0000;">'session_destroy'</span>,<span style="color: 
#ff0000;">'session_decode'</span>,
+                       <span style="color: 
#ff0000;">'session_cache_limiter'</span>,<span style="color: 
#ff0000;">'session_cache_expire'</span>,<span style="color: 
#ff0000;">'serialize'</span>,<span style="color: 
#ff0000;">'sem_remove'</span>,<span style="color: 
#ff0000;">'sem_release'</span>,<span style="color: #ff0000;">'sem_get'</span>,
+                       <span style="color: 
#ff0000;">'sem_acquire'</span>,<span style="color: 
#ff0000;">'rtrim'</span>,<span style="color: #ff0000;">'rsort'</span>,<span 
style="color: #ff0000;">'round'</span>,<span style="color: 
#ff0000;">'rmdir'</span>,<span style="color: #ff0000;">'rewinddir'</span>,
+                       <span style="color: #ff0000;">'rewind'</span>,<span 
style="color: #ff0000;">'restore_include_path'</span>,<span style="color: 
#ff0000;">'restore_error_handler'</span>,<span style="color: 
#ff0000;">'reset'</span>,<span style="color: #ff0000;">'rename'</span>,<span 
style="color: #ff0000;">'register_tick_function'</span>,
+                       <span style="color: 
#ff0000;">'register_shutdown_function'</span>,<span style="color: 
#ff0000;">'realpath'</span>,<span style="color: 
#ff0000;">'readlink'</span>,<span style="color: 
#ff0000;">'readgzfile'</span>,<span style="color: 
#ff0000;">'readfile'</span>,<span style="color: #ff0000;">'readdir'</span>,
+                       <span style="color: 
#ff0000;">'read_exif_data'</span>,<span style="color: 
#ff0000;">'rawurlencode'</span>,<span style="color: 
#ff0000;">'rawurldecode'</span>,<span style="color: 
#ff0000;">'range'</span>,<span style="color: #ff0000;">'rand'</span>,<span 
style="color: #ff0000;">'rad2deg'</span>,
+                       <span style="color: #ff0000;">'quotemeta'</span>,<span 
style="color: #ff0000;">'quoted_printable_decode'</span>,<span style="color: 
#ff0000;">'putenv'</span>,<span style="color: 
#ff0000;">'proc_open'</span>,<span style="color: 
#ff0000;">'proc_close'</span>,<span style="color: #ff0000;">'printf'</span>,
+                       <span style="color: #ff0000;">'print_r'</span>,<span 
style="color: #ff0000;">'prev'</span>,<span style="color: 
#ff0000;">'preg_split'</span>,<span style="color: 
#ff0000;">'preg_replace_callback'</span>,<span style="color: 
#ff0000;">'preg_replace'</span>,<span style="color: 
#ff0000;">'preg_quote'</span>,
+                       <span style="color: 
#ff0000;">'preg_match_all'</span>,<span style="color: 
#ff0000;">'preg_match'</span>,<span style="color: 
#ff0000;">'preg_grep'</span>,<span style="color: #ff0000;">'pow'</span>,<span 
style="color: #ff0000;">'posix_uname'</span>,<span style="color: 
#ff0000;">'posix_ttyname'</span>,
+                       <span style="color: 
#ff0000;">'posix_times'</span>,<span style="color: 
#ff0000;">'posix_strerror'</span>,<span style="color: 
#ff0000;">'posix_setuid'</span>,<span style="color: 
#ff0000;">'posix_setsid'</span>,<span style="color: 
#ff0000;">'posix_setpgid'</span>,<span style="color: 
#ff0000;">'posix_setgid'</span>,
+                       <span style="color: 
#ff0000;">'posix_seteuid'</span>,<span style="color: 
#ff0000;">'posix_setegid'</span>,<span style="color: 
#ff0000;">'posix_mkfifo'</span>,<span style="color: 
#ff0000;">'posix_kill'</span>,<span style="color: 
#ff0000;">'posix_isatty'</span>,<span style="color: 
#ff0000;">'posix_getuid'</span>,
+                       <span style="color: 
#ff0000;">'posix_getsid'</span>,<span style="color: 
#ff0000;">'posix_getrlimit'</span>,<span style="color: 
#ff0000;">'posix_getpwuid'</span>,<span style="color: 
#ff0000;">'posix_getpwnam'</span>,<span style="color: 
#ff0000;">'posix_getppid'</span>,<span style="color: 
#ff0000;">'posix_getpid'</span>,
+                       <span style="color: 
#ff0000;">'posix_getpgrp'</span>,<span style="color: 
#ff0000;">'posix_getpgid'</span>,<span style="color: 
#ff0000;">'posix_getlogin'</span>,<span style="color: 
#ff0000;">'posix_getgroups'</span>,<span style="color: 
#ff0000;">'posix_getgrnam'</span>,<span style="color: 
#ff0000;">'posix_getgrgid'</span>,
+                       <span style="color: 
#ff0000;">'posix_getgid'</span>,<span style="color: 
#ff0000;">'posix_geteuid'</span>,<span style="color: 
#ff0000;">'posix_getegid'</span>,<span style="color: 
#ff0000;">'posix_getcwd'</span>,<span style="color: 
#ff0000;">'posix_get_last_error'</span>,<span style="color: 
#ff0000;">'posix_errno'</span>,
+                       <span style="color: 
#ff0000;">'posix_ctermid'</span>,<span style="color: 
#ff0000;">'pos'</span>,<span style="color: #ff0000;">'popen'</span>,<span 
style="color: #ff0000;">'pi'</span>,<span style="color: 
#ff0000;">'phpversion'</span>,<span style="color: #ff0000;">'phpinfo'</span>,
+                       <span style="color: #ff0000;">'phpcredits'</span>,<span 
style="color: #ff0000;">'php_uname'</span>,<span style="color: 
#ff0000;">'php_sapi_name'</span>,<span style="color: 
#ff0000;">'php_logo_guid'</span>,<span style="color: 
#ff0000;">'php_ini_scanned_files'</span>,<span style="color: 
#ff0000;">'pg_update'</span>,
+                       <span style="color: #ff0000;">'pg_untrace'</span>,<span 
style="color: #ff0000;">'pg_unescape_bytea'</span>,<span style="color: 
#ff0000;">'pg_tty'</span>,<span style="color: #ff0000;">'pg_trace'</span>,<span 
style="color: #ff0000;">'pg_setclientencoding'</span>,<span style="color: 
#ff0000;">'pg_set_client_encoding'</span>,
+                       <span style="color: 
#ff0000;">'pg_send_query'</span>,<span style="color: 
#ff0000;">'pg_select'</span>,<span style="color: 
#ff0000;">'pg_result_status'</span>,<span style="color: 
#ff0000;">'pg_result_seek'</span>,<span style="color: 
#ff0000;">'pg_result_error'</span>,<span style="color: 
#ff0000;">'pg_result'</span>,
+                       <span style="color: #ff0000;">'pg_query'</span>,<span 
style="color: #ff0000;">'pg_put_line'</span>,<span style="color: 
#ff0000;">'pg_port'</span>,<span style="color: #ff0000;">'pg_ping'</span>,<span 
style="color: #ff0000;">'pg_pconnect'</span>,<span style="color: 
#ff0000;">'pg_options'</span>,
+                       <span style="color: #ff0000;">'pg_numrows'</span>,<span 
style="color: #ff0000;">'pg_numfields'</span>,<span style="color: 
#ff0000;">'pg_num_rows'</span>,<span style="color: 
#ff0000;">'pg_num_fields'</span>,<span style="color: 
#ff0000;">'pg_meta_data'</span>,<span style="color: 
#ff0000;">'pg_lowrite'</span>,
+                       <span style="color: 
#ff0000;">'pg_lounlink'</span>,<span style="color: 
#ff0000;">'pg_loreadall'</span>,<span style="color: 
#ff0000;">'pg_loread'</span>,<span style="color: 
#ff0000;">'pg_loopen'</span>,<span style="color: 
#ff0000;">'pg_loimport'</span>,<span style="color: 
#ff0000;">'pg_loexport'</span>,
+                       <span style="color: 
#ff0000;">'pg_locreate'</span>,<span style="color: 
#ff0000;">'pg_loclose'</span>,<span style="color: 
#ff0000;">'pg_lo_write'</span>,<span style="color: 
#ff0000;">'pg_lo_unlink'</span>,<span style="color: 
#ff0000;">'pg_lo_tell'</span>,<span style="color: #ff0000;">'pg_lo_seek'</span>,
+                       <span style="color: 
#ff0000;">'pg_lo_read_all'</span>,<span style="color: 
#ff0000;">'pg_lo_read'</span>,<span style="color: 
#ff0000;">'pg_lo_open'</span>,<span style="color: 
#ff0000;">'pg_lo_import'</span>,<span style="color: 
#ff0000;">'pg_lo_export'</span>,<span style="color: 
#ff0000;">'pg_lo_create'</span>,
+                       <span style="color: 
#ff0000;">'pg_lo_close'</span>,<span style="color: 
#ff0000;">'pg_last_oid'</span>,<span style="color: 
#ff0000;">'pg_last_notice'</span>,<span style="color: 
#ff0000;">'pg_last_error'</span>,<span style="color: 
#ff0000;">'pg_insert'</span>,<span style="color: #ff0000;">'pg_host'</span>,
+                       <span style="color: 
#ff0000;">'pg_getlastoid'</span>,<span style="color: 
#ff0000;">'pg_get_result'</span>,<span style="color: 
#ff0000;">'pg_get_pid'</span>,<span style="color: 
#ff0000;">'pg_get_notify'</span>,<span style="color: 
#ff0000;">'pg_freeresult'</span>,<span style="color: 
#ff0000;">'pg_free_result'</span>,
+                       <span style="color: 
#ff0000;">'pg_fieldtype'</span>,<span style="color: 
#ff0000;">'pg_fieldsize'</span>,<span style="color: 
#ff0000;">'pg_fieldprtlen'</span>,<span style="color: 
#ff0000;">'pg_fieldnum'</span>,<span style="color: 
#ff0000;">'pg_fieldname'</span>,<span style="color: 
#ff0000;">'pg_fieldisnull'</span>,
+                       <span style="color: 
#ff0000;">'pg_field_type'</span>,<span style="color: 
#ff0000;">'pg_field_size'</span>,<span style="color: 
#ff0000;">'pg_field_prtlen'</span>,<span style="color: 
#ff0000;">'pg_field_num'</span>,<span style="color: 
#ff0000;">'pg_field_name'</span>,<span style="color: 
#ff0000;">'pg_field_is_null'</span>,
+                       <span style="color: 
#ff0000;">'pg_fetch_row'</span>,<span style="color: 
#ff0000;">'pg_fetch_result'</span>,<span style="color: 
#ff0000;">'pg_fetch_object'</span>,<span style="color: 
#ff0000;">'pg_fetch_assoc'</span>,<span style="color: 
#ff0000;">'pg_fetch_array'</span>,<span style="color: 
#ff0000;">'pg_fetch_all'</span>,
+                       <span style="color: #ff0000;">'pg_exec'</span>,<span 
style="color: #ff0000;">'pg_escape_string'</span>,<span style="color: 
#ff0000;">'pg_escape_bytea'</span>,<span style="color: 
#ff0000;">'pg_errormessage'</span>,<span style="color: 
#ff0000;">'pg_end_copy'</span>,<span style="color: #ff0000;">'pg_delete'</span>,
+                       <span style="color: #ff0000;">'pg_dbname'</span>,<span 
style="color: #ff0000;">'pg_copy_to'</span>,<span style="color: 
#ff0000;">'pg_copy_from'</span>,<span style="color: 
#ff0000;">'pg_convert'</span>,<span style="color: 
#ff0000;">'pg_connection_status'</span>,<span style="color: 
#ff0000;">'pg_connection_reset'</span>,
+                       <span style="color: 
#ff0000;">'pg_connection_busy'</span>,<span style="color: 
#ff0000;">'pg_connect'</span>,<span style="color: 
#ff0000;">'pg_cmdtuples'</span>,<span style="color: 
#ff0000;">'pg_close'</span>,<span style="color: 
#ff0000;">'pg_clientencoding'</span>,<span style="color: 
#ff0000;">'pg_client_encoding'</span>,
+                       <span style="color: 
#ff0000;">'pg_cancel_query'</span>,<span style="color: 
#ff0000;">'pg_affected_rows'</span>,<span style="color: 
#ff0000;">'pfsockopen'</span>,<span style="color: 
#ff0000;">'pclose'</span>,<span style="color: #ff0000;">'pathinfo'</span>,<span 
style="color: #ff0000;">'passthru'</span>,
+                       <span style="color: #ff0000;">'parse_url'</span>,<span 
style="color: #ff0000;">'parse_str'</span>,<span style="color: 
#ff0000;">'parse_ini_file'</span>,<span style="color: 
#ff0000;">'pack'</span>,<span style="color: #ff0000;">'overload'</span>,<span 
style="color: #ff0000;">'output_reset_rewrite_vars'</span>,
+                       <span style="color: 
#ff0000;">'output_add_rewrite_var'</span>,<span style="color: 
#ff0000;">'ord'</span>,<span style="color: 
#ff0000;">'openssl_x509_read'</span>,<span style="color: 
#ff0000;">'openssl_x509_parse'</span>,<span style="color: 
#ff0000;">'openssl_x509_free'</span>,<span style="color: 
#ff0000;">'openssl_x509_export_to_file'</span>,
+                       <span style="color: 
#ff0000;">'openssl_x509_export'</span>,<span style="color: 
#ff0000;">'openssl_x509_checkpurpose'</span>,<span style="color: 
#ff0000;">'openssl_x509_check_private_key'</span>,<span style="color: 
#ff0000;">'openssl_verify'</span>,<span style="color: 
#ff0000;">'openssl_sign'</span>,<span style="color: 
#ff0000;">'openssl_seal'</span>,
+                       <span style="color: 
#ff0000;">'openssl_public_encrypt'</span>,<span style="color: 
#ff0000;">'openssl_public_decrypt'</span>,<span style="color: 
#ff0000;">'openssl_private_encrypt'</span>,<span style="color: 
#ff0000;">'openssl_private_decrypt'</span>,<span style="color: 
#ff0000;">'openssl_pkey_new'</span>,<span style="color: 
#ff0000;">'openssl_pkey_get_public'</span>,
+                       <span style="color: 
#ff0000;">'openssl_pkey_get_private'</span>,<span style="color: 
#ff0000;">'openssl_pkey_free'</span>,<span style="color: 
#ff0000;">'openssl_pkey_export_to_file'</span>,<span style="color: 
#ff0000;">'openssl_pkey_export'</span>,<span style="color: 
#ff0000;">'openssl_pkcs7_verify'</span>,<span style="color: 
#ff0000;">'openssl_pkcs7_sign'</span>,
+                       <span style="color: 
#ff0000;">'openssl_pkcs7_encrypt'</span>,<span style="color: 
#ff0000;">'openssl_pkcs7_decrypt'</span>,<span style="color: 
#ff0000;">'openssl_open'</span>,<span style="color: 
#ff0000;">'openssl_get_publickey'</span>,<span style="color: 
#ff0000;">'openssl_get_privatekey'</span>,<span style="color: 
#ff0000;">'openssl_free_key'</span>,
+                       <span style="color: 
#ff0000;">'openssl_error_string'</span>,<span style="color: 
#ff0000;">'openssl_csr_sign'</span>,<span style="color: 
#ff0000;">'openssl_csr_new'</span>,<span style="color: 
#ff0000;">'openssl_csr_export_to_file'</span>,<span style="color: 
#ff0000;">'openssl_csr_export'</span>,<span style="color: 
#ff0000;">'openlog'</span>,
+                       <span style="color: #ff0000;">'opendir'</span>,<span 
style="color: #ff0000;">'octdec'</span>,<span style="color: 
#ff0000;">'ob_start'</span>,<span style="color: 
#ff0000;">'ob_list_handlers'</span>,<span style="color: 
#ff0000;">'ob_implicit_flush'</span>,<span style="color: 
#ff0000;">'ob_iconv_handler'</span>,
+                       <span style="color: 
#ff0000;">'ob_gzhandler'</span>,<span style="color: 
#ff0000;">'ob_get_status'</span>,<span style="color: 
#ff0000;">'ob_get_level'</span>,<span style="color: 
#ff0000;">'ob_get_length'</span>,<span style="color: 
#ff0000;">'ob_get_flush'</span>,<span style="color: 
#ff0000;">'ob_get_contents'</span>,
+                       <span style="color: 
#ff0000;">'ob_get_clean'</span>,<span style="color: 
#ff0000;">'ob_flush'</span>,<span style="color: 
#ff0000;">'ob_end_flush'</span>,<span style="color: 
#ff0000;">'ob_end_clean'</span>,<span style="color: 
#ff0000;">'ob_clean'</span>,<span style="color: 
#ff0000;">'number_format'</span>,
+                       <span style="color: 
#ff0000;">'nl_langinfo'</span>,<span style="color: 
#ff0000;">'nl2br'</span>,<span style="color: #ff0000;">'ngettext'</span>,<span 
style="color: #ff0000;">'next'</span>,<span style="color: 
#ff0000;">'natsort'</span>,<span style="color: #ff0000;">'natcasesort'</span>,
+                       <span style="color: 
#ff0000;">'mysql_unbuffered_query'</span>,<span style="color: 
#ff0000;">'mysql_thread_id'</span>,<span style="color: 
#ff0000;">'mysql_tablename'</span>,<span style="color: 
#ff0000;">'mysql_table_name'</span>,<span style="color: 
#ff0000;">'mysql_stat'</span>,<span style="color: 
#ff0000;">'mysql_selectdb'</span>,
+                       <span style="color: 
#ff0000;">'mysql_select_db'</span>,<span style="color: 
#ff0000;">'mysql_result'</span>,<span style="color: 
#ff0000;">'mysql_real_escape_string'</span>,<span style="color: 
#ff0000;">'mysql_query'</span>,<span style="color: 
#ff0000;">'mysql_ping'</span>,<span style="color: 
#ff0000;">'mysql_pconnect'</span>,
+                       <span style="color: 
#ff0000;">'mysql_numrows'</span>,<span style="color: 
#ff0000;">'mysql_numfields'</span>,<span style="color: 
#ff0000;">'mysql_num_rows'</span>,<span style="color: 
#ff0000;">'mysql_num_fields'</span>,<span style="color: 
#ff0000;">'mysql_listtables'</span>,<span style="color: 
#ff0000;">'mysql_listfields'</span>,
+                       <span style="color: 
#ff0000;">'mysql_listdbs'</span>,<span style="color: 
#ff0000;">'mysql_list_tables'</span>,<span style="color: 
#ff0000;">'mysql_list_processes'</span>,<span style="color: 
#ff0000;">'mysql_list_fields'</span>,<span style="color: 
#ff0000;">'mysql_list_dbs'</span>,<span style="color: 
#ff0000;">'mysql_insert_id'</span>,
+                       <span style="color: #ff0000;">'mysql_info'</span>,<span 
style="color: #ff0000;">'mysql_get_server_info'</span>,<span style="color: 
#ff0000;">'mysql_get_proto_info'</span>,<span style="color: 
#ff0000;">'mysql_get_host_info'</span>,<span style="color: 
#ff0000;">'mysql_get_client_info'</span>,<span style="color: 
#ff0000;">'mysql_freeresult'</span>,
+                       <span style="color: 
#ff0000;">'mysql_free_result'</span>,<span style="color: 
#ff0000;">'mysql_fieldtype'</span>,<span style="color: 
#ff0000;">'mysql_fieldtable'</span>,<span style="color: 
#ff0000;">'mysql_fieldname'</span>,<span style="color: 
#ff0000;">'mysql_fieldlen'</span>,<span style="color: 
#ff0000;">'mysql_fieldflags'</span>,
+                       <span style="color: 
#ff0000;">'mysql_field_type'</span>,<span style="color: 
#ff0000;">'mysql_field_table'</span>,<span style="color: 
#ff0000;">'mysql_field_seek'</span>,<span style="color: 
#ff0000;">'mysql_field_name'</span>,<span style="color: 
#ff0000;">'mysql_field_len'</span>,<span style="color: 
#ff0000;">'mysql_field_flags'</span>,
+                       <span style="color: 
#ff0000;">'mysql_fetch_row'</span>,<span style="color: 
#ff0000;">'mysql_fetch_object'</span>,<span style="color: 
#ff0000;">'mysql_fetch_lengths'</span>,<span style="color: 
#ff0000;">'mysql_fetch_field'</span>,<span style="color: 
#ff0000;">'mysql_fetch_assoc'</span>,<span style="color: 
#ff0000;">'mysql_fetch_array'</span>,
+                       <span style="color: 
#ff0000;">'mysql_escape_string'</span>,<span style="color: 
#ff0000;">'mysql_error'</span>,<span style="color: 
#ff0000;">'mysql_errno'</span>,<span style="color: 
#ff0000;">'mysql_dropdb'</span>,<span style="color: 
#ff0000;">'mysql_drop_db'</span>,<span style="color: 
#ff0000;">'mysql_dbname'</span>,
+                       <span style="color: 
#ff0000;">'mysql_db_query'</span>,<span style="color: 
#ff0000;">'mysql_db_name'</span>,<span style="color: 
#ff0000;">'mysql_data_seek'</span>,<span style="color: 
#ff0000;">'mysql_createdb'</span>,<span style="color: 
#ff0000;">'mysql_create_db'</span>,<span style="color: 
#ff0000;">'mysql_connect'</span>,
+                       <span style="color: 
#ff0000;">'mysql_close'</span>,<span style="color: 
#ff0000;">'mysql_client_encoding'</span>,<span style="color: 
#ff0000;">'mysql_affected_rows'</span>,<span style="color: 
#ff0000;">'mysql'</span>,<span style="color: #ff0000;">'mt_srand'</span>,<span 
style="color: #ff0000;">'mt_rand'</span>,
+                       <span style="color: 
#ff0000;">'mt_getrandmax'</span>,<span style="color: 
#ff0000;">'move_uploaded_file'</span>,<span style="color: 
#ff0000;">'money_format'</span>,<span style="color: 
#ff0000;">'mktime'</span>,<span style="color: #ff0000;">'mkdir'</span>,<span 
style="color: #ff0000;">'min'</span>,
+                       <span style="color: #ff0000;">'microtime'</span>,<span 
style="color: #ff0000;">'method_exists'</span>,<span style="color: 
#ff0000;">'metaphone'</span>,<span style="color: 
#ff0000;">'memory_get_usage'</span>,<span style="color: 
#ff0000;">'md5_file'</span>,<span style="color: #ff0000;">'md5'</span>,
+                       <span style="color: #ff0000;">'mbsubstr'</span>,<span 
style="color: #ff0000;">'mbstrrpos'</span>,<span style="color: 
#ff0000;">'mbstrpos'</span>,<span style="color: 
#ff0000;">'mbstrlen'</span>,<span style="color: 
#ff0000;">'mbstrcut'</span>,<span style="color: #ff0000;">'mbsplit'</span>,
+                       <span style="color: 
#ff0000;">'mbregex_encoding'</span>,<span style="color: 
#ff0000;">'mberegi_replace'</span>,<span style="color: 
#ff0000;">'mberegi'</span>,<span style="color: 
#ff0000;">'mbereg_search_setpos'</span>,<span style="color: 
#ff0000;">'mbereg_search_regs'</span>,<span style="color: 
#ff0000;">'mbereg_search_pos'</span>,
+                       <span style="color: 
#ff0000;">'mbereg_search_init'</span>,<span style="color: 
#ff0000;">'mbereg_search_getregs'</span>,<span style="color: 
#ff0000;">'mbereg_search_getpos'</span>,<span style="color: 
#ff0000;">'mbereg_search'</span>,<span style="color: 
#ff0000;">'mbereg_replace'</span>,<span style="color: 
#ff0000;">'mbereg_match'</span>,
+                       <span style="color: #ff0000;">'mbereg'</span>,<span 
style="color: #ff0000;">'mb_substr_count'</span>,<span style="color: 
#ff0000;">'mb_substr'</span>,<span style="color: 
#ff0000;">'mb_substitute_character'</span>,<span style="color: 
#ff0000;">'mb_strwidth'</span>,<span style="color: 
#ff0000;">'mb_strtoupper'</span>,
+                       <span style="color: 
#ff0000;">'mb_strtolower'</span>,<span style="color: 
#ff0000;">'mb_strrpos'</span>,<span style="color: 
#ff0000;">'mb_strpos'</span>,<span style="color: 
#ff0000;">'mb_strlen'</span>,<span style="color: 
#ff0000;">'mb_strimwidth'</span>,<span style="color: 
#ff0000;">'mb_strcut'</span>,
+                       <span style="color: #ff0000;">'mb_split'</span>,<span 
style="color: #ff0000;">'mb_send_mail'</span>,<span style="color: 
#ff0000;">'mb_regex_set_options'</span>,<span style="color: 
#ff0000;">'mb_regex_encoding'</span>,<span style="color: 
#ff0000;">'mb_preferred_mime_name'</span>,<span style="color: 
#ff0000;">'mb_parse_str'</span>,
+                       <span style="color: 
#ff0000;">'mb_output_handler'</span>,<span style="color: 
#ff0000;">'mb_language'</span>,<span style="color: 
#ff0000;">'mb_internal_encoding'</span>,<span style="color: 
#ff0000;">'mb_http_output'</span>,<span style="color: 
#ff0000;">'mb_http_input'</span>,<span style="color: 
#ff0000;">'mb_get_info'</span>,
+                       <span style="color: 
#ff0000;">'mb_eregi_replace'</span>,<span style="color: 
#ff0000;">'mb_eregi'</span>,<span style="color: 
#ff0000;">'mb_ereg_search_setpos'</span>,<span style="color: 
#ff0000;">'mb_ereg_search_regs'</span>,<span style="color: 
#ff0000;">'mb_ereg_search_pos'</span>,<span style="color: 
#ff0000;">'mb_ereg_search_init'</span>,
+                       <span style="color: 
#ff0000;">'mb_ereg_search_getregs'</span>,<span style="color: 
#ff0000;">'mb_ereg_search_getpos'</span>,<span style="color: 
#ff0000;">'mb_ereg_search'</span>,<span style="color: 
#ff0000;">'mb_ereg_replace'</span>,<span style="color: 
#ff0000;">'mb_ereg_match'</span>,<span style="color: #ff0000;">'mb_ereg'</span>,
+                       <span style="color: 
#ff0000;">'mb_encode_numericentity'</span>,<span style="color: 
#ff0000;">'mb_encode_mimeheader'</span>,<span style="color: 
#ff0000;">'mb_detect_order'</span>,<span style="color: 
#ff0000;">'mb_detect_encoding'</span>,<span style="color: 
#ff0000;">'mb_decode_numericentity'</span>,<span style="color: 
#ff0000;">'mb_decode_mimeheader'</span>,
+                       <span style="color: 
#ff0000;">'mb_convert_variables'</span>,<span style="color: 
#ff0000;">'mb_convert_kana'</span>,<span style="color: 
#ff0000;">'mb_convert_encoding'</span>,<span style="color: 
#ff0000;">'mb_convert_case'</span>,<span style="color: 
#ff0000;">'max'</span>,<span style="color: #ff0000;">'mail'</span>,
+                       <span style="color: 
#ff0000;">'magic_quotes_runtime'</span>,<span style="color: 
#ff0000;">'ltrim'</span>,<span style="color: #ff0000;">'lstat'</span>,<span 
style="color: #ff0000;">'long2ip'</span>,<span style="color: 
#ff0000;">'log1p'</span>,<span style="color: #ff0000;">'log10'</span>,
+                       <span style="color: #ff0000;">'log'</span>,<span 
style="color: #ff0000;">'localtime'</span>,<span style="color: 
#ff0000;">'localeconv'</span>,<span style="color: 
#ff0000;">'linkinfo'</span>,<span style="color: #ff0000;">'link'</span>,<span 
style="color: #ff0000;">'levenshtein'</span>,
+                       <span style="color: #ff0000;">'lcg_value'</span>,<span 
style="color: #ff0000;">'ksort'</span>,<span style="color: 
#ff0000;">'krsort'</span>,<span style="color: 
#ff0000;">'key_exists'</span>,<span style="color: #ff0000;">'key'</span>,<span 
style="color: #ff0000;">'juliantojd'</span>,
+                       <span style="color: #ff0000;">'join'</span>,<span 
style="color: #ff0000;">'jewishtojd'</span>,<span style="color: 
#ff0000;">'jdtounix'</span>,<span style="color: 
#ff0000;">'jdtojulian'</span>,<span style="color: 
#ff0000;">'jdtojewish'</span>,<span style="color: 
#ff0000;">'jdtogregorian'</span>,
+                       <span style="color: #ff0000;">'jdtofrench'</span>,<span 
style="color: #ff0000;">'jdmonthname'</span>,<span style="color: 
#ff0000;">'jddayofweek'</span>,<span style="color: 
#ff0000;">'is_writeable'</span>,<span style="color: 
#ff0000;">'is_writable'</span>,<span style="color: 
#ff0000;">'is_uploaded_file'</span>,
+                       <span style="color: 
#ff0000;">'is_subclass_of'</span>,<span style="color: 
#ff0000;">'is_string'</span>,<span style="color: 
#ff0000;">'is_scalar'</span>,<span style="color: 
#ff0000;">'is_resource'</span>,<span style="color: 
#ff0000;">'is_real'</span>,<span style="color: #ff0000;">'is_readable'</span>,
+                       <span style="color: #ff0000;">'is_object'</span>,<span 
style="color: #ff0000;">'is_numeric'</span>,<span style="color: 
#ff0000;">'is_null'</span>,<span style="color: #ff0000;">'is_nan'</span>,<span 
style="color: #ff0000;">'is_long'</span>,<span style="color: 
#ff0000;">'is_link'</span>,
+                       <span style="color: #ff0000;">'is_integer'</span>,<span 
style="color: #ff0000;">'is_int'</span>,<span style="color: 
#ff0000;">'is_infinite'</span>,<span style="color: 
#ff0000;">'is_float'</span>,<span style="color: 
#ff0000;">'is_finite'</span>,<span style="color: #ff0000;">'is_file'</span>,
+                       <span style="color: 
#ff0000;">'is_executable'</span>,<span style="color: 
#ff0000;">'is_double'</span>,<span style="color: 
#ff0000;">'is_dir'</span>,<span style="color: 
#ff0000;">'is_callable'</span>,<span style="color: 
#ff0000;">'is_bool'</span>,<span style="color: #ff0000;">'is_array'</span>,
+                       <span style="color: #ff0000;">'is_a'</span>,<span 
style="color: #ff0000;">'iptcparse'</span>,<span style="color: 
#ff0000;">'iptcembed'</span>,<span style="color: 
#ff0000;">'ip2long'</span>,<span style="color: #ff0000;">'intval'</span>,<span 
style="color: #ff0000;">'ini_set'</span>,
+                       <span style="color: 
#ff0000;">'ini_restore'</span>,<span style="color: 
#ff0000;">'ini_get_all'</span>,<span style="color: 
#ff0000;">'ini_get'</span>,<span style="color: 
#ff0000;">'ini_alter'</span>,<span style="color: 
#ff0000;">'in_array'</span>,<span style="color: 
#ff0000;">'import_request_variables'</span>,
+                       <span style="color: #ff0000;">'implode'</span>,<span 
style="color: #ff0000;">'image_type_to_mime_type'</span>,<span style="color: 
#ff0000;">'ignore_user_abort'</span>,<span style="color: 
#ff0000;">'iconv_set_encoding'</span>,<span style="color: 
#ff0000;">'iconv_get_encoding'</span>,<span style="color: 
#ff0000;">'iconv'</span>,
+                       <span style="color: 
#ff0000;">'i18n_mime_header_encode'</span>,<span style="color: 
#ff0000;">'i18n_mime_header_decode'</span>,<span style="color: 
#ff0000;">'i18n_ja_jp_hantozen'</span>,<span style="color: 
#ff0000;">'i18n_internal_encoding'</span>,<span style="color: 
#ff0000;">'i18n_http_output'</span>,<span style="color: 
#ff0000;">'i18n_http_input'</span>,
+                       <span style="color: 
#ff0000;">'i18n_discover_encoding'</span>,<span style="color: 
#ff0000;">'i18n_convert'</span>,<span style="color: 
#ff0000;">'hypot'</span>,<span style="color: 
#ff0000;">'htmlspecialchars'</span>,<span style="color: 
#ff0000;">'htmlentities'</span>,<span style="color: 
#ff0000;">'html_entity_decode'</span>,
+                       <span style="color: 
#ff0000;">'highlight_string'</span>,<span style="color: 
#ff0000;">'highlight_file'</span>,<span style="color: 
#ff0000;">'hexdec'</span>,<span style="color: #ff0000;">'hebrevc'</span>,<span 
style="color: #ff0000;">'hebrev'</span>,<span style="color: 
#ff0000;">'headers_sent'</span>,
+                       <span style="color: #ff0000;">'header'</span>,<span 
style="color: #ff0000;">'gzwrite'</span>,<span style="color: 
#ff0000;">'gzuncompress'</span>,<span style="color: 
#ff0000;">'gztell'</span>,<span style="color: #ff0000;">'gzseek'</span>,<span 
style="color: #ff0000;">'gzrewind'</span>,
+                       <span style="color: #ff0000;">'gzread'</span>,<span 
style="color: #ff0000;">'gzputs'</span>,<span style="color: 
#ff0000;">'gzpassthru'</span>,<span style="color: 
#ff0000;">'gzopen'</span>,<span style="color: 
#ff0000;">'gzinflate'</span>,<span style="color: #ff0000;">'gzgetss'</span>,
+                       <span style="color: #ff0000;">'gzgets'</span>,<span 
style="color: #ff0000;">'gzgetc'</span>,<span style="color: 
#ff0000;">'gzfile'</span>,<span style="color: #ff0000;">'gzeof'</span>,<span 
style="color: #ff0000;">'gzencode'</span>,<span style="color: 
#ff0000;">'gzdeflate'</span>,
+                       <span style="color: #ff0000;">'gzcompress'</span>,<span 
style="color: #ff0000;">'gzclose'</span>,<span style="color: 
#ff0000;">'gregoriantojd'</span>,<span style="color: 
#ff0000;">'gmstrftime'</span>,<span style="color: 
#ff0000;">'gmmktime'</span>,<span style="color: #ff0000;">'gmdate'</span>,
+                       <span style="color: #ff0000;">'glob'</span>,<span 
style="color: #ff0000;">'gettype'</span>,<span style="color: 
#ff0000;">'gettimeofday'</span>,<span style="color: 
#ff0000;">'gettext'</span>,<span style="color: 
#ff0000;">'getservbyport'</span>,<span style="color: 
#ff0000;">'getservbyname'</span>,
+                       <span style="color: #ff0000;">'getrusage'</span>,<span 
style="color: #ff0000;">'getrandmax'</span>,<span style="color: 
#ff0000;">'getprotobynumber'</span>,<span style="color: 
#ff0000;">'getprotobyname'</span>,<span style="color: 
#ff0000;">'getopt'</span>,<span style="color: #ff0000;">'getmyuid'</span>,
+                       <span style="color: #ff0000;">'getmypid'</span>,<span 
style="color: #ff0000;">'getmyinode'</span>,<span style="color: 
#ff0000;">'getmygid'</span>,<span style="color: 
#ff0000;">'getmxrr'</span>,<span style="color: 
#ff0000;">'getlastmod'</span>,<span style="color: 
#ff0000;">'getimagesize'</span>,
+                       <span style="color: 
#ff0000;">'gethostbynamel'</span>,<span style="color: 
#ff0000;">'gethostbyname'</span>,<span style="color: 
#ff0000;">'gethostbyaddr'</span>,<span style="color: 
#ff0000;">'getenv'</span>,<span style="color: #ff0000;">'getdate'</span>,<span 
style="color: #ff0000;">'getcwd'</span>,
+                       <span style="color: 
#ff0000;">'getallheaders'</span>,<span style="color: 
#ff0000;">'get_resource_type'</span>,<span style="color: 
#ff0000;">'get_required_files'</span>,<span style="color: 
#ff0000;">'get_parent_class'</span>,<span style="color: 
#ff0000;">'get_object_vars'</span>,<span style="color: 
#ff0000;">'get_meta_tags'</span>,
+                       <span style="color: 
#ff0000;">'get_magic_quotes_runtime'</span>,<span style="color: 
#ff0000;">'get_magic_quotes_gpc'</span>,<span style="color: 
#ff0000;">'get_loaded_extensions'</span>,<span style="color: 
#ff0000;">'get_included_files'</span>,<span style="color: 
#ff0000;">'get_include_path'</span>,<span style="color: 
#ff0000;">'get_html_translation_table'</span>,
+                       <span style="color: 
#ff0000;">'get_extension_funcs'</span>,<span style="color: 
#ff0000;">'get_defined_vars'</span>,<span style="color: 
#ff0000;">'get_defined_functions'</span>,<span style="color: 
#ff0000;">'get_defined_constants'</span>,<span style="color: 
#ff0000;">'get_declared_classes'</span>,<span style="color: 
#ff0000;">'get_current_user'</span>,
+                       <span style="color: 
#ff0000;">'get_class_vars'</span>,<span style="color: 
#ff0000;">'get_class_methods'</span>,<span style="color: 
#ff0000;">'get_class'</span>,<span style="color: 
#ff0000;">'get_cfg_var'</span>,<span style="color: 
#ff0000;">'get_browser'</span>,<span style="color: #ff0000;">'fwrite'</span>,
+                       <span style="color: 
#ff0000;">'function_exists'</span>,<span style="color: 
#ff0000;">'func_num_args'</span>,<span style="color: 
#ff0000;">'func_get_args'</span>,<span style="color: 
#ff0000;">'func_get_arg'</span>,<span style="color: 
#ff0000;">'ftruncate'</span>,<span style="color: #ff0000;">'ftp_systype'</span>,
+                       <span style="color: 
#ff0000;">'ftp_ssl_connect'</span>,<span style="color: 
#ff0000;">'ftp_size'</span>,<span style="color: 
#ff0000;">'ftp_site'</span>,<span style="color: 
#ff0000;">'ftp_set_option'</span>,<span style="color: 
#ff0000;">'ftp_rmdir'</span>,<span style="color: #ff0000;">'ftp_rename'</span>,
+                       <span style="color: 
#ff0000;">'ftp_rawlist'</span>,<span style="color: 
#ff0000;">'ftp_quit'</span>,<span style="color: 
#ff0000;">'ftp_pwd'</span>,<span style="color: #ff0000;">'ftp_put'</span>,<span 
style="color: #ff0000;">'ftp_pasv'</span>,<span style="color: 
#ff0000;">'ftp_nlist'</span>,
+                       <span style="color: #ff0000;">'ftp_nb_put'</span>,<span 
style="color: #ff0000;">'ftp_nb_get'</span>,<span style="color: 
#ff0000;">'ftp_nb_fput'</span>,<span style="color: 
#ff0000;">'ftp_nb_fget'</span>,<span style="color: 
#ff0000;">'ftp_nb_continue'</span>,<span style="color: 
#ff0000;">'ftp_mkdir'</span>,
+                       <span style="color: #ff0000;">'ftp_mdtm'</span>,<span 
style="color: #ff0000;">'ftp_login'</span>,<span style="color: 
#ff0000;">'ftp_get_option'</span>,<span style="color: 
#ff0000;">'ftp_get'</span>,<span style="color: 
#ff0000;">'ftp_fput'</span>,<span style="color: #ff0000;">'ftp_fget'</span>,
+                       <span style="color: #ff0000;">'ftp_exec'</span>,<span 
style="color: #ff0000;">'ftp_delete'</span>,<span style="color: 
#ff0000;">'ftp_connect'</span>,<span style="color: 
#ff0000;">'ftp_close'</span>,<span style="color: 
#ff0000;">'ftp_chdir'</span>,<span style="color: #ff0000;">'ftp_cdup'</span>,
+                       <span style="color: #ff0000;">'ftok'</span>,<span 
style="color: #ff0000;">'ftell'</span>,<span style="color: 
#ff0000;">'fstat'</span>,<span style="color: #ff0000;">'fsockopen'</span>,<span 
style="color: #ff0000;">'fseek'</span>,<span style="color: 
#ff0000;">'fscanf'</span>,
+                       <span style="color: #ff0000;">'frenchtojd'</span>,<span 
style="color: #ff0000;">'fread'</span>,<span style="color: 
#ff0000;">'fputs'</span>,<span style="color: #ff0000;">'fpassthru'</span>,<span 
style="color: #ff0000;">'fopen'</span>,<span style="color: 
#ff0000;">'fnmatch'</span>,
+                       <span style="color: #ff0000;">'fmod'</span>,<span 
style="color: #ff0000;">'flush'</span>,<span style="color: 
#ff0000;">'floor'</span>,<span style="color: #ff0000;">'flock'</span>,<span 
style="color: #ff0000;">'floatval'</span>,<span style="color: 
#ff0000;">'filetype'</span>,
+                       <span style="color: #ff0000;">'filesize'</span>,<span 
style="color: #ff0000;">'filepro_rowcount'</span>,<span style="color: 
#ff0000;">'filepro_retrieve'</span>,<span style="color: 
#ff0000;">'filepro_fieldwidth'</span>,<span style="color: 
#ff0000;">'filepro_fieldtype'</span>,<span style="color: 
#ff0000;">'filepro_fieldname'</span>,
+                       <span style="color: 
#ff0000;">'filepro_fieldcount'</span>,<span style="color: 
#ff0000;">'filepro'</span>,<span style="color: 
#ff0000;">'fileperms'</span>,<span style="color: 
#ff0000;">'fileowner'</span>,<span style="color: 
#ff0000;">'filemtime'</span>,<span style="color: #ff0000;">'fileinode'</span>,
+                       <span style="color: #ff0000;">'filegroup'</span>,<span 
style="color: #ff0000;">'filectime'</span>,<span style="color: 
#ff0000;">'fileatime'</span>,<span style="color: 
#ff0000;">'file_get_contents'</span>,<span style="color: 
#ff0000;">'file_exists'</span>,<span style="color: #ff0000;">'file'</span>,
+                       <span style="color: #ff0000;">'fgetss'</span>,<span 
style="color: #ff0000;">'fgets'</span>,<span style="color: 
#ff0000;">'fgetcsv'</span>,<span style="color: #ff0000;">'fgetc'</span>,<span 
style="color: #ff0000;">'fflush'</span>,<span style="color: 
#ff0000;">'feof'</span>,
+                       <span style="color: #ff0000;">'fclose'</span>,<span 
style="color: #ff0000;">'ezmlm_hash'</span>,<span style="color: 
#ff0000;">'extract'</span>,<span style="color: 
#ff0000;">'extension_loaded'</span>,<span style="color: 
#ff0000;">'expm1'</span>,<span style="color: #ff0000;">'explode'</span>,
+                       <span style="color: #ff0000;">'exp'</span>,<span 
style="color: #ff0000;">'exif_thumbnail'</span>,<span style="color: 
#ff0000;">'exif_tagname'</span>,<span style="color: 
#ff0000;">'exif_read_data'</span>,<span style="color: 
#ff0000;">'exif_imagetype'</span>,<span style="color: #ff0000;">'exec'</span>,
+                       <span style="color: 
#ff0000;">'escapeshellcmd'</span>,<span style="color: 
#ff0000;">'escapeshellarg'</span>,<span style="color: 
#ff0000;">'error_reporting'</span>,<span style="color: 
#ff0000;">'error_log'</span>,<span style="color: 
#ff0000;">'eregi_replace'</span>,<span style="color: #ff0000;">'eregi'</span>,
+                       <span style="color: 
#ff0000;">'ereg_replace'</span>,<span style="color: 
#ff0000;">'ereg'</span>,<span style="color: #ff0000;">'end'</span>,<span 
style="color: #ff0000;">'easter_days'</span>,<span style="color: 
#ff0000;">'easter_date'</span>,<span style="color: #ff0000;">'each'</span>,
+                       <span style="color: #ff0000;">'doubleval'</span>,<span 
style="color: #ff0000;">'dngettext'</span>,<span style="color: 
#ff0000;">'dl'</span>,<span style="color: 
#ff0000;">'diskfreespace'</span>,<span style="color: 
#ff0000;">'disk_total_space'</span>,<span style="color: 
#ff0000;">'disk_free_space'</span>,
+                       <span style="color: #ff0000;">'dirname'</span>,<span 
style="color: #ff0000;">'dir'</span>,<span style="color: 
#ff0000;">'dgettext'</span>,<span style="color: 
#ff0000;">'deg2rad'</span>,<span style="color: #ff0000;">'defined'</span>,<span 
style="color: #ff0000;">'define_syslog_variables'</span>,
+                       <span style="color: #ff0000;">'define'</span>,<span 
style="color: #ff0000;">'decoct'</span>,<span style="color: 
#ff0000;">'dechex'</span>,<span style="color: #ff0000;">'decbin'</span>,<span 
style="color: #ff0000;">'debug_zval_dump'</span>,<span style="color: 
#ff0000;">'debug_backtrace'</span>,
+                       <span style="color: 
#ff0000;">'deaggregate'</span>,<span style="color: 
#ff0000;">'dcngettext'</span>,<span style="color: 
#ff0000;">'dcgettext'</span>,<span style="color: 
#ff0000;">'dba_sync'</span>,<span style="color: 
#ff0000;">'dba_replace'</span>,<span style="color: #ff0000;">'dba_popen'</span>,
+                       <span style="color: 
#ff0000;">'dba_optimize'</span>,<span style="color: 
#ff0000;">'dba_open'</span>,<span style="color: 
#ff0000;">'dba_nextkey'</span>,<span style="color: 
#ff0000;">'dba_list'</span>,<span style="color: 
#ff0000;">'dba_insert'</span>,<span style="color: 
#ff0000;">'dba_handlers'</span>,
+                       <span style="color: 
#ff0000;">'dba_firstkey'</span>,<span style="color: 
#ff0000;">'dba_fetch'</span>,<span style="color: 
#ff0000;">'dba_exists'</span>,<span style="color: 
#ff0000;">'dba_delete'</span>,<span style="color: 
#ff0000;">'dba_close'</span>,<span style="color: #ff0000;">'date'</span>,
+                       <span style="color: #ff0000;">'current'</span>,<span 
style="color: #ff0000;">'ctype_xdigit'</span>,<span style="color: 
#ff0000;">'ctype_upper'</span>,<span style="color: 
#ff0000;">'ctype_space'</span>,<span style="color: 
#ff0000;">'ctype_punct'</span>,<span style="color: 
#ff0000;">'ctype_print'</span>,
+                       <span style="color: 
#ff0000;">'ctype_lower'</span>,<span style="color: 
#ff0000;">'ctype_graph'</span>,<span style="color: 
#ff0000;">'ctype_digit'</span>,<span style="color: 
#ff0000;">'ctype_cntrl'</span>,<span style="color: 
#ff0000;">'ctype_alpha'</span>,<span style="color: 
#ff0000;">'ctype_alnum'</span>,
+                       <span style="color: #ff0000;">'crypt'</span>,<span 
style="color: #ff0000;">'create_function'</span>,<span style="color: 
#ff0000;">'crc32'</span>,<span style="color: 
#ff0000;">'count_chars'</span>,<span style="color: 
#ff0000;">'count'</span>,<span style="color: #ff0000;">'cosh'</span>,
+                       <span style="color: #ff0000;">'cos'</span>,<span 
style="color: #ff0000;">'copy'</span>,<span style="color: 
#ff0000;">'convert_cyr_string'</span>,<span style="color: 
#ff0000;">'constant'</span>,<span style="color: 
#ff0000;">'connection_status'</span>,<span style="color: 
#ff0000;">'connection_aborted'</span>,
+                       <span style="color: #ff0000;">'compact'</span>,<span 
style="color: #ff0000;">'closelog'</span>,<span style="color: 
#ff0000;">'closedir'</span>,<span style="color: 
#ff0000;">'clearstatcache'</span>,<span style="color: 
#ff0000;">'class_exists'</span>,<span style="color: 
#ff0000;">'chunk_split'</span>,
+                       <span style="color: #ff0000;">'chr'</span>,<span 
style="color: #ff0000;">'chown'</span>,<span style="color: 
#ff0000;">'chop'</span>,<span style="color: #ff0000;">'chmod'</span>,<span 
style="color: #ff0000;">'chgrp'</span>,<span style="color: 
#ff0000;">'checkdnsrr'</span>,
+                       <span style="color: #ff0000;">'checkdate'</span>,<span 
style="color: #ff0000;">'chdir'</span>,<span style="color: 
#ff0000;">'ceil'</span>,<span style="color: 
#ff0000;">'call_user_method_array'</span>,<span style="color: 
#ff0000;">'call_user_method'</span>,<span style="color: 
#ff0000;">'call_user_func_array'</span>,
+                       <span style="color: 
#ff0000;">'call_user_func'</span>,<span style="color: 
#ff0000;">'cal_to_jd'</span>,<span style="color: 
#ff0000;">'cal_info'</span>,<span style="color: 
#ff0000;">'cal_from_jd'</span>,<span style="color: 
#ff0000;">'cal_days_in_month'</span>,<span style="color: 
#ff0000;">'bzwrite'</span>,
+                       <span style="color: #ff0000;">'bzread'</span>,<span 
style="color: #ff0000;">'bzopen'</span>,<span style="color: 
#ff0000;">'bzflush'</span>,<span style="color: 
#ff0000;">'bzerrstr'</span>,<span style="color: 
#ff0000;">'bzerror'</span>,<span style="color: #ff0000;">'bzerrno'</span>,
+                       <span style="color: 
#ff0000;">'bzdecompress'</span>,<span style="color: 
#ff0000;">'bzcompress'</span>,<span style="color: 
#ff0000;">'bzclose'</span>,<span style="color: 
#ff0000;">'bindtextdomain'</span>,<span style="color: 
#ff0000;">'bindec'</span>,<span style="color: 
#ff0000;">'bind_textdomain_codeset'</span>,
+                       <span style="color: #ff0000;">'bin2hex'</span>,<span 
style="color: #ff0000;">'bcsub'</span>,<span style="color: 
#ff0000;">'bcsqrt'</span>,<span style="color: #ff0000;">'bcscale'</span>,<span 
style="color: #ff0000;">'bcpow'</span>,<span style="color: 
#ff0000;">'bcmul'</span>,
+                       <span style="color: #ff0000;">'bcmod'</span>,<span 
style="color: #ff0000;">'bcdiv'</span>,<span style="color: 
#ff0000;">'bccomp'</span>,<span style="color: #ff0000;">'bcadd'</span>,<span 
style="color: #ff0000;">'basename'</span>,<span style="color: 
#ff0000;">'base_convert'</span>,
+                       <span style="color: 
#ff0000;">'base64_encode'</span>,<span style="color: 
#ff0000;">'base64_decode'</span>,<span style="color: 
#ff0000;">'atanh'</span>,<span style="color: #ff0000;">'atan2'</span>,<span 
style="color: #ff0000;">'atan'</span>,<span style="color: 
#ff0000;">'assert_options'</span>,
+                       <span style="color: #ff0000;">'assert'</span>,<span 
style="color: #ff0000;">'asort'</span>,<span style="color: 
#ff0000;">'asinh'</span>,<span style="color: #ff0000;">'asin'</span>,<span 
style="color: #ff0000;">'arsort'</span>,<span style="color: 
#ff0000;">'array_walk'</span>,
+                       <span style="color: 
#ff0000;">'array_values'</span>,<span style="color: 
#ff0000;">'array_unshift'</span>,<span style="color: 
#ff0000;">'array_unique'</span>,<span style="color: 
#ff0000;">'array_sum'</span>,<span style="color: 
#ff0000;">'array_splice'</span>,<span style="color: 
#ff0000;">'array_slice'</span>,
+                       <span style="color: 
#ff0000;">'array_shift'</span>,<span style="color: 
#ff0000;">'array_search'</span>,<span style="color: 
#ff0000;">'array_reverse'</span>,<span style="color: 
#ff0000;">'array_reduce'</span>,<span style="color: 
#ff0000;">'array_rand'</span>,<span style="color: #ff0000;">'array_push'</span>,
+                       <span style="color: #ff0000;">'array_pop'</span>,<span 
style="color: #ff0000;">'array_pad'</span>,<span style="color: 
#ff0000;">'array_multisort'</span>,<span style="color: 
#ff0000;">'array_merge_recursive'</span>,<span style="color: 
#ff0000;">'array_merge'</span>,<span style="color: #ff0000;">'array_map'</span>,
+                       <span style="color: #ff0000;">'array_keys'</span>,<span 
style="color: #ff0000;">'array_key_exists'</span>,<span style="color: 
#ff0000;">'array_intersect_assoc'</span>,<span style="color: 
#ff0000;">'array_intersect'</span>,<span style="color: 
#ff0000;">'array_flip'</span>,<span style="color: 
#ff0000;">'array_filter'</span>,
+                       <span style="color: #ff0000;">'array_fill'</span>,<span 
style="color: #ff0000;">'array_diff_assoc'</span>,<span style="color: 
#ff0000;">'array_diff'</span>,<span style="color: 
#ff0000;">'array_count_values'</span>,<span style="color: 
#ff0000;">'array_chunk'</span>,<span style="color: 
#ff0000;">'array_change_key_case'</span>,
+                       <span style="color: 
#ff0000;">'apache_setenv'</span>,<span style="color: 
#ff0000;">'apache_response_headers'</span>,<span style="color: 
#ff0000;">'apache_request_headers'</span>,<span style="color: 
#ff0000;">'apache_note'</span>,<span style="color: 
#ff0000;">'apache_lookup_uri'</span>,<span style="color: 
#ff0000;">'apache_get_version'</span>,
+                       <span style="color: 
#ff0000;">'apache_child_terminate'</span>,<span style="color: 
#ff0000;">'aggregation_info'</span>,<span style="color: 
#ff0000;">'aggregate_properties_by_regexp'</span>,<span style="color: 
#ff0000;">'aggregate_properties_by_list'</span>,<span style="color: 
#ff0000;">'aggregate_properties'</span>,<span style="color: 
#ff0000;">'aggregate_methods_by_regexp'</span>,
+                       <span style="color: 
#ff0000;">'aggregate_methods_by_list'</span>,<span style="color: 
#ff0000;">'aggregate_methods'</span>,<span style="color: 
#ff0000;">'aggregate'</span>,<span style="color: 
#ff0000;">'addslashes'</span>,<span style="color: 
#ff0000;">'addcslashes'</span>,<span style="color: #ff0000;">'acosh'</span>,
+                       <span style="color: #ff0000;">'acos'</span>,<span 
style="color: #ff0000;">'abs'</span>,<span style="color: 
#ff0000;">'_'</span>,<span style="color: #ff0000;">'echo'</span>, <span 
style="color: #ff0000;">'print'</span>, <span style="color: 
#ff0000;">'global'</span>, <span style="color: #ff0000;">'static'</span>, <span 
style="color: #ff0000;">'exit'</span>, <span style="color: 
#ff0000;">'array'</span>, <span style="color: #ff0000;">'empty'</span>, <span 
style="color: #ff0000;">'eval'</span>, <span style="color: 
#ff0000;">'isset'</span>, <span style="color: #ff0000;">'unset'</span>, <span 
style="color: #ff0000;">'die'</span>
+                       <span style="color: #66cc66;">&#41;</span>
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'SYMBOLS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #ff0000;">'('</span>, <span style="color: 
#ff0000;">')'</span>, <span style="color: #ff0000;">'['</span>, <span 
style="color: #ff0000;">']'</span>, <span style="color: #ff0000;">'{'</span>, 
<span style="color: #ff0000;">'}'</span>, <span style="color: 
#ff0000;">'!'</span>, <span style="color: #ff0000;">'@'</span>, <span 
style="color: #ff0000;">'%'</span>, <span style="color: 
#ff0000;">'&amp;'</span>, <span style="color: #ff0000;">'*'</span>, <span 
style="color: #ff0000;">'|'</span>, <span style="color: #ff0000;">'/'</span>, 
<span style="color: #ff0000;">'&lt;'</span>, <span style="color: 
#ff0000;">'&gt;'</span>
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'CASE_SENSITIVE'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               GESHI_COMMENTS =&gt; <span style="color: #000000; font-weight: 
bold;">false</span>,
+               <span style="color: #cc66cc;">1</span> =&gt; <span 
style="color: #000000; font-weight: bold;">false</span>,
+               <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #000000; font-weight: bold;">false</span>,
+               <span style="color: #cc66cc;">3</span> =&gt; <span 
style="color: #000000; font-weight: bold;">false</span>,
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'STYLES'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #ff0000;">'KEYWORDS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">1</span> =&gt; <span 
style="color: #ff0000;">'color: #b1b100;'</span>,
+                       <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #ff0000;">'color: #000000; font-weight: bold;'</span>,
+                       <span style="color: #cc66cc;">3</span> =&gt; <span 
style="color: #ff0000;">'color: #000066;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'COMMENTS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">1</span> =&gt; <span 
style="color: #ff0000;">'color: #808080; font-style: italic;'</span>,
+                       <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #ff0000;">'color: #808080; font-style: italic;'</span>,
+                       <span style="color: #ff0000;">'MULTI'</span> =&gt; 
<span style="color: #ff0000;">'color: #808080; font-style: italic;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'ESCAPE_CHAR'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #000099; font-weight: bold;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'BRACKETS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #66cc66;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'STRINGS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #ff0000;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'NUMBERS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #cc66cc;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'METHODS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #006600;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'SYMBOLS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #66cc66;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'REGEXPS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">'color: #0000ff;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #ff0000;">'SCRIPT'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">''</span>,
+                       <span style="color: #cc66cc;">1</span> =&gt; <span 
style="color: #ff0000;">''</span>,
+                       <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #ff0000;">''</span>,
+                       <span style="color: #cc66cc;">3</span> =&gt; <span 
style="color: #ff0000;">''</span>
+                       <span style="color: #66cc66;">&#41;</span>
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'URLS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #cc66cc;">1</span> =&gt; <span 
style="color: #ff0000;">''</span>,
+               <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #ff0000;">''</span>,
+               <span style="color: #cc66cc;">3</span> =&gt; <span 
style="color: #ff0000;">'http://www.php.net/{FNAME}'</span>,
+               <span style="color: #cc66cc;">4</span> =&gt; <span 
style="color: #ff0000;">''</span>
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'OOLANG'</span> =&gt; <span style="color: 
#000000; font-weight: bold;">true</span>,
+       <span style="color: #ff0000;">'OBJECT_SPLITTER'</span> =&gt; <span 
style="color: #ff0000;">'-&amp;gt;'</span>,
+       <span style="color: #ff0000;">'REGEXPS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #ff0000;">"[<span style="color: #000099; font-weight: 
bold;">\\</span>$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"</span>
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'STRICT_MODE_APPLIES'</span> =&gt; 
GESHI_MAYBE,
+       <span style="color: #ff0000;">'SCRIPT_DELIMITERS'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #cc66cc;">0</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #ff0000;">'&lt;?php'</span> =&gt; 
<span style="color: #ff0000;">'?&gt;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #cc66cc;">1</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #ff0000;">'&lt;?'</span> =&gt; 
<span style="color: #ff0000;">'?&gt;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #cc66cc;">2</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #ff0000;">'&lt;%'</span> =&gt; 
<span style="color: #ff0000;">'%&gt;'</span>
+                       <span style="color: #66cc66;">&#41;</span>,
+               <span style="color: #cc66cc;">3</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+                       <span style="color: #ff0000;">'&lt;script 
language=&quot;php&quot;&gt;'</span> =&gt; <span style="color: 
#ff0000;">'&lt;/script&gt;'</span>
+                       <span style="color: #66cc66;">&#41;</span>
+               <span style="color: #66cc66;">&#41;</span>,
+       <span style="color: #ff0000;">'HIGHLIGHT_STRICT_BLOCK'</span> =&gt; <a 
href="http://www.php.net/array";><span style="color: 
#000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
+               <span style="color: #cc66cc;">0</span> =&gt; <span 
style="color: #000000; font-weight: bold;">true</span>,
+               <span style="color: #cc66cc;">1</span> =&gt; <span 
style="color: #000000; font-weight: bold;">true</span>,
+               <span style="color: #cc66cc;">2</span> =&gt; <span 
style="color: #000000; font-weight: bold;">true</span>,
+               <span style="color: #cc66cc;">3</span> =&gt; <span 
style="color: #000000; font-weight: bold;">true</span>
+               <span style="color: #66cc66;">&#41;</span>
+<span style="color: #66cc66;">&#41;</span>;
+&nbsp;
+<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
+
+<p>If you're remotely familiar with PHP (or even if you're not), you can see 
that all that a language file
+consists of is a glorified variable assignment. Easy! All a language file does 
is assign a variable <var>$language_data</var>.
+Though still, there's a lot of indices to that array... but this section is 
here to break each index down
+and explain it to you.</p>
+
+<h4 id="language-file-conventions">4.2: Language File Conventions</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-sections">Next</a> | <a 
href="#language-file-example">Previous</a></div>
+
+<p>There are several conventions that are used in language files. For ease of 
use and readability, your language
+files should obey the following rules:</p>
+
+<ul>
+       <li><strong>Indentation is in <em>tabs</em>, not spaces:</strong> Use 
tabs! There's no excuse for using
+       spaces in this day and age, where almost every good editor allows you 
to change the tab width. Tabs also
+       take up less space, and ensure proper alignment. When you indent, use 
tabs, and if your editor converts
+       tabs to spaces, tell it not to.</li>
+       <li><strong>Strings are in single quotes:</strong> Every string in a 
language file should be in single quotes ('),
+       unless you are specifying a single quote as a quotemark or escape 
character, in which case they can be in double
+       quotes for readability; or if you are specifying a REGEXP (see 
below)</li>
+       <li><strong>Large arrays are multi-lined:</strong> An array with more 
than three or four values should be broken
+       into multiple lines. In any case, lines should not be wider than a 
full-screen window (about 100 chars per line max).</li>
+       <li><strong>Ending brackets for multi-lined arrays on a new 
line:</strong> Also with a comma after them, unless the
+       array is the last one in a parent array. See the PHP language file for 
examples of where to use commas.</li>
+       <li><strong>Use GeSHi's constants:</strong> For capatalisation, regular 
expressions etc. use the GeSHi constants, <em>not</em>
+       their actual values.</li>
+</ul>
+
+<p>There are more notes on each convention where it may appear in the language 
file sections below.</p>
+
+<h4 id="language-file-sections">4.3: Language File Sections</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-header">Next</a> | <a 
href="#language-file-conventions">Previous</a></div>
+
+<p>This section will look at all the sections of a language file, and how they 
relate to the final highlighting
+result.</p>
+
+<h5 id="language-file-header">4.3.1: The Header</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-start-indices">Next</a> | <a 
href="#language-file-sections">Previous</a></div>
+
+<p>The <em>header</em> of a language file is the first lines with the big 
comment and the start of the variable
+<var>$language_data</var>:</p>
+
+<pre>&lt;?php
+/*************************************************************************************
+ * &lt;name-of-language-file.php&gt;
+ * ---------------------------------
+ * Author: &lt;name&gt; (&lt;e-mail address&gt;)
+ * Copyright: (c) 2004 &lt;name&gt; (&lt;website URL&gt;)
+ * Release Version: 1.0.0
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: &lt;date started&gt;
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * &lt;name-of-language&gt; language file for GeSHi.
+ *
+ * &lt;any-comments...&gt;
+ *
+ * CHANGES
+ * -------
+ * &lt;date-of-release&gt; (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated &lt;date-of-release&gt;)
+ * -------------------------
+ * &lt;things-to-do&gt;
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+</pre>
+
+<p>The parts in angle brackets are the parts that you change for your language 
file. <strong>Everything
+else *must* remain the same!</strong></p>
+
+<p>Here are the parts you should change:</p>
+
+<ul>
+       <li><tt>&lt;name-of-language-file.php&gt;</tt> - This should become the 
name of your language file.
+       Language file names are in lower case and contain only alphanumeric 
characters, dashes and underscores.
+       Language files end with .php (which you should put with the name of 
your language file, eg language.php)</li>
+       <li><tt>&lt;name&gt;</tt> - Your name, or alias.</li>
+       <li><tt>&lt;e-mail address&gt;</tt> - Your e-mail address. If you want 
your language file included with
+       GeSHi you <em>must</em> include an e-mail address that refers to an 
inbox controlled by you.</li>
+       <li><tt>&lt;website&gt;</tt> - A URL of a website of yours (perhaps to 
a page that deals with your
+       contribution to GeSHi, or your home page/blog)</li>
+       <li><tt>&lt;date-started&gt;</tt> - The date you started working on the 
language file. If you can't
+       remember, guestimate.</li>
+       <li><tt>&lt;name-of-language&gt;</tt> - The name of the language you 
made this language file for
+       (probably similar to the language file name).</li>
+       <li><tt>&lt;any-comments&gt;</tt> - Any comments you have to make about 
this language file, perhaps
+       on where you got the keywords for, what dialect of the language this 
language file is for etc etc.
+       If you don't have any comments, remove the space for them.</li>
+       <li><tt>&lt;date-of-release</tt> - The date you released the language 
file to the public. If you simply
+       send it to me for inclusion in a new GeSHi and don't release it, leave 
this blank, and I'll replace
+       it with the date of the GeSHi release that it is first added to.</li>
+</ul>
+
+<p>Everything should remain the same, including <tt>$Revision: 1.1 $</tt> and 
<tt>$Date: 2006/09/25 08:46:28 $</tt> (I know these may
+look funny but they have their purpose for those of you who don't know about 
CVS).</p>
+
+<p><strong>Also:</strong> I'm not sure about the copyright on a new language 
file. I'm not a lawyer, could
+someone contact me about whether the copyright for a new language file should 
be exclusivly the authors,
+or joint with me (if included in a GeSHi release)?</p>
+
+<h5 id="language-file-start-indices">4.3.2: The First Indices</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-keywords">Next</a> | <a 
href="#language-file-header">Previous</a></div>
+
+<p>Here is an example from the php language file of the first indices:</p>
+
+<pre>  'LANG_NAME' => 'PHP',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',</pre>
+
+<p>The first indices are the first few lines of a language file before the 
KEYWORDS index. These indices specify:</p>
+
+<ul>
+       <li><strong>'LANG_NAME'</strong>: The name of the language. This name 
should be a human-readable version of the
+       name (e.g. HTML 4 (transitional) instead of html4trans)</li>
+       <li><strong>'COMMENT_SINGLE':</strong> An array of single-line comments 
in your language, indexed by integers
+       starting from 1. A single line comment is a comment that starts at the 
marker and goes until the end of the line.
+       These comments may be any length > 0, and since they can be styled 
individually, can be used for other things than
+       comments (for example the Java language file defines "import" as a 
single line comment). If you are making
+       a language that uses a ' (apostrophe) as a comment (or in the comment 
marker somewhere), use double quotes. e.g.:
+       "'"</li>
+       <li><strong>'COMMENT_MULTI':</strong> Used to specify multiline 
comments, an array in the form 'OPEN' => 'CLOSE'.
+       Unfortunately, all of these comments you add here will be styled the 
same way (an area of improvement for GeSHi 1.2.X).
+       These comment markers may be any length > 0.</li>
+       <li><strong>'CASE_KEYWORDS':</strong> Used to set whether the case of 
keywords should be changed automatically
+       as they are found. For example, in an SQL or BASIC dialect you may want 
all keywords to be upper case. The accepted
+       values for this are:
+       <ul>
+               <li><tt>GESHI_CAPS_UPPER</tt>: Convert the case of all keywords 
to upper case.</li>
+               <li><tt>GESHI_CAPS_LOWER</tt>: Convert the case of all keywords 
to lower case.</li>
+               <li><tt>GESHI_CAPS_NO_CHANGE</tt>: Don't change the case of any 
keyword.</li>
+       </ul>
+       <li><strong>'QUOTEMARKS':</strong> Specifies the characters that mark 
the beginning and end of a string. This is
+       another example where if your language includes the ' string delimiter 
you should use double quotes around it.</li>
+       <li><strong>'ESCAPE_CHAR':</strong> Specifies the escape character used 
in all strings. If your language does not
+       have an escape character then make this the empty string (<tt>''</tt>). 
This is not an array! If found, any character
+       after an escape character and the escape character itself will be 
highlighted differently, and the character after
+       the escape character cannot end a string.</li>
+</ul>
+
+<h5 id="language-file-keywords">4.3.3: Keywords</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-symbols-case">Next</a> | <a 
href="#language-file-start-indices">Previous</a></div>
+
+<p>Keywords will make up the bulk of a language file. In this part you add 
keywords for your language, including
+inbuilt functions, data types, predefined constants etc etc.</p>
+
+<p>Here's a (shortened) example from the php language file:</p>
+
+<pre>  'KEYWORDS' => array(
+               1 => array(
+                       'include', 'require', 'include_once', 'require_once',
+                       'for', 'foreach', 'as', 'if', 'elseif', 'else', 
'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+                       'return', 'break'
+                       ),
+               2 => array(
+                       'null', '__LINE__', '__FILE__',
+                       'false', '&lt;?php', '?&gt;', '&lt;?',
+                       '&lt;script language=', '&lt;/script&gt;',
+                       'true', 'var', 'default',
+                       'function', 'class', 'new',
+                       '__FUNCTION__', '__CLASS__', '__METHOD__', 
'PHP_VERSION',
+                       'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 
'PEAR_EXTENSION_DIR',
+                       'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 
'PHP_DATADIR', 'PHP_SYSCONFDIR',
+                       'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 
'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+                       'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 
'E_PARSE', 'E_NOTICE',
+                       'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 
'E_COMPILE_WARNING', 'E_USER_ERROR',
+                       'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+                       ),
+               3 => array(
+                       
'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
+                       
'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
+                       
'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
+                       
'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
+                       
'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct'
+                       )
+               ),</pre>
+
+<p>You can see that the index 'KEYWORDS' refers to an array of arrays, indexed 
by positive integers. In each array, there
+are some keywords (in the actual php language file there is in fact many more 
keywords in the array indexed by 3). Here
+are some points to note about these keywords:</p>
+
+<ul>
+       <li><strong>Indexed by positive integers:</strong> Use nothing else! I 
may change this in 1.2.X, but for the 1.0.X
+       series, use positive integers only.</li>
+       <li><strong>Keywords sorted in reverse:</strong> Keywords *should* be 
sorted in <em>reverse order</em>. I know that
+       many of the language files I've made do not follow this rule, but 
that's because I made the files before I discovered
+       the following issue with GeSHi: If you have two keywords, 
<strong>as</strong> and <strong>asc</strong>for example,
+       then when GeSHi encounters the &quot;as&quot; keyword it will be 
highlighted <strong>even if the &quot;as&quot; is
+       part of &quot;asc&quot;</strong>. I would get GeSHi to reverse-sort 
keyword arrays, but there's no harm in you
+       doing this yourself and saving some processing time. At the least (and 
in fact this is sufficient) you should
+       swap any keywords you come across that would be caught by this 
issue.</li>
+       <li><strong>Keywords are case sensitive (sometimes):</strong> If your 
language is case-sensitive, the correct
+       casing of the keywords is defined as the case of the keywords in these 
keyword arrays. If you check the java
+       language file you will see that everything is in exact casing. So if 
any of these keyword arrays are case
+       sensitive, put the keywords in as their correct case! (note that which 
groups are case sensitive and which are
+       not is configurable, see later on)</li>
+       <li><strong>Keywords must be in <tt>htmlentities()</tt> form:</strong> 
All keywords should be written as if they
+       had been run through the php function <tt>htmlentities()</tt>. E.g, the 
keyword is <tt>&amp;lt;foo&amp;gt;</tt>, not
+       <tt>&lt;foo&gt;</tt></li>
+       <li><strong>Don't use keywords to highlight symbols:</strong> Just 
don't. It doesn't work, and there will be seperate
+       support for symbols later.</li>
+       <li><strong>Markup Languages are special cases:</strong> Check the 
html4strict language file for an example: keywords
+       have to be specified twice for opening tags and twice for each closing 
tag.</li>
+</ul>
+
+<h5 id="language-file-symbols-case">4.3.4: Symbols and Case Sensitivity</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-styles">Next</a> | <a 
href="#language-file-keywords">Previous</a></div>
+
+<p>So you've put all the keywords for your language in? Now for a breather 
before we style them :). Symbols define
+what symbols your language uses, these are things like colons, 
brackets/braces, and other such general punctuation (it's
+important to note that in the 1.0.X series these will <em>not</em> be used), 
and case sensitivity alludes to the previous
+section: here you can set which keyword groups are case sensitive.</p>
+
+<p>Here's an example:</p>
+
+<pre>  'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', 
'/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),</pre>
+
+<ul>
+       <li><strong>'SYMBOLS':</strong> An array of the symbols used in your 
language. <em>Please note that in 1.0.X these
+       are not used.</em> Hopefully they will be used in 1.2.X.</li>
+       <li><strong>'CASE_SENSITIVE':</strong> Note the 
<tt>GESHI_COMMENTS</tt>! This is used to set whether comments
+       are case sensitive or not (for example, BASIC has the REM statement 
which while not being case sensitive is still
+       alphanumeric, and as in the example given before about the Java 
language file using &quot;import&quot; as a single line comment,
+       this can be useful sometimes. <tt>true</tt> if comments are case 
sensitive, <tt>false</tt> otherwise. All of the other
+       indices correspond to indices in the <tt>'KEYWORDS'</tt> section (see 
above).</li>
+</ul>
+
+<h5 id="language-file-styles">4.3.5: Styles for your Language File</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-urls">Next</a> | <a 
href="#language-file-symbols-case">Previous</a></div>
+
+<p>This is the fun part! Here you get to choose the colours, fonts, 
backgrounds and anything else you'd like for your
+language file.</p>
+
+<p>Here's an example:</p>
+
+<pre>  'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),</pre>
+
+<p>Note that all style rules should end with a semi-colon! This is important: 
GeSHi may add extra rules to the rules
+you specify (and will do so if a user tries to change your styles on the fly), 
so the last semi-colon in any stylesheet
+rule is important.</p>
+
+<p>All strings here should contain valid stylesheet declarations (it's also 
find to have the empty string).</p>
+
+<ul>
+       <li><strong>'KEYWORDS':</strong> This is an array, from keyword index 
to style. The index you use is the index
+       you used in the keywords section to specify the keywords belonging to 
that group.</li>
+       <li><strong>'COMMENTS':</strong> This is an array, from single-line 
comment index to style for that index. The
+       index 'MULTI' is used for multiline comments (and cannot be an 
array)</li>
+       <li><strong>'ESCAPE_CHAR' down to 'REGEXPS':</strong> These are arrays 
with only one index: 0. You cannot add other indices to
+       these arrays.</li>
+       <li><strong>'SCRIPT':</strong> For languages that use script 
delimiters, this is where you can style each block
+       of script. For example, HTML and XML have blocks that begin with &lt; 
and end with &gt; (i.e. tags) and blocks
+       that begin with &amp; and end with ; (i.e. character entities), and you 
can set a style to apply to each whole
+       block. You specify the delimiters for the blocks below. Note that many 
languages will not need this feature.</li>
+</ul>
+
+<h5 id="language-file-urls">4.3.6: URLs for Functions</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-oo-support">Next</a> | <a 
href="#language-file-styles">Previous</a></div>
+
+<p>This section lets you specify a url to visit for each keyword group. Useful 
for pointing functions at their
+online manual entries.</p>
+
+<p>Here is an example:</p>
+
+<pre>  'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 'http://www.php.net/{FNAME}',
+               4 => ''
+               ),</pre>
+
+<p>The indices of this array correspond to the keyword groups you specified in 
the keywords section. The string <tt>{FNAME}</tt>
+marks where the name of the function is substituted in. So for the example 
above, if the keyword being highlighted is &quot;echo&quot;,
+then the keyword will be a URL pointing to <tt>http://www.php.net/echo</tt>. 
Because some languages (Java!) don't keep a
+uniform URL for functions/classes, you may have trouble in creating a URL for 
that language (though look in the java language
+file for a novel solution to it's problem)</p>
+
+<h5 id="language-file-oo-support">4.3.7: Object Orientation Support</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-regexps">Next</a> | <a 
href="#language-file-urls">Previous</a></div>
+
+<p>Now we're reaching the most little-used section of a language file, which 
includes such goodies as object orientation
+support and context support. GeSHi can highlight methods and data fields of 
objects easily, all you need to do is to
+tell it to do so and what the &quot;splitter&quot; is between object/method 
etc.</p>
+
+<p>Here's an example:</p>
+
+<pre>  'OOLANG' => true,
+       'OBJECT_SPLITTER' => '-&gt;',</pre>
+
+<p>If your language has object orientation, the value of <tt>'OOLANG'</tt> is 
true, otherwise it is false. If it is
+object orientated, in the <tt>'OBJECT_SPLITTER'</tt> value you put the 
<tt>htmlentities()</tt> version of the &quot;splitter&quot;
+between objects and methods/fields. If it is not, then make this the empty 
string.</p>
+
+<h5 id="language-file-regexps">4.3.8: Using Regular Expressions</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-strict-mode">Next</a> | <a 
href="#language-file-oo-support">Previous</a></div>
+
+<p>Regular expressions are a good way to catch any other lexic that fits 
certain rules but can't be listed as a keyword.
+A good example is variables in PHP: variables always start with either one or 
two &quot;$&quot; signs, then alphanumeric
+characters (a simplification). This is easy to catch with regular 
expressions.</p>
+
+<p>And new to version 1.0.2, there is an advanced way of using regular 
expressions to catch certain things but highlight
+only part of those things. This is particularly useful for languages like 
XML.</p>
+
+<div class="caution"><div class="caution-header">Caution:</div><p>Regular 
expressions use the PCRE syntax (perl-style), <em>not</em> the ereg() 
style!</p></div>
+
+<p>Here is an example (this time the PHP file merged with the XML file):</p>
+
+<pre>          0 => array(
+                       GESHI_SEARCH => '(((xml:)?[a-z\-]+))(=)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '\\4'
+                       ),
+               1 => array(
+                       GESHI_SEARCH => '(&lt;/?[a-z0-9]*(&gt;)?)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+               2 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"</pre>
+
+<p>As you can see there are two formats. One is the &quot;simple&quot; format 
used in GeSHi &lt; 1.0.2, and the other
+is a more advanced syntax. Firstly, the simple syntax:</p>
+
+<ul>
+       <li><strong>May be in double quotes:</strong> To make it easier for 
those who always place their regular expressions
+       in double quotes, you may place any regular expression here in double 
quotes if you wish.</li>
+       <li><strong>Don't use curly brackets where possible:</strong> If you 
want to use curly brackets (<tt>()</tt>) then
+       by all means give it a try, but I'm not sure whether under some 
circumstances GeSHi may throw a wobbly. You have
+       been warned! If you want to use brackets, it would be better to use the 
advanced syntax.</li>
+       <li><strong>Don't use the &quot;everything&quot; regex:</strong> 
(That's the <tt>.*?</tt> regex). Use advanced
+       syntax instead.</li>
+</ul>
+
+<p>And now for advanced syntax, which gives you much more control over exactly 
what is highlighted:</p>
+
+<ul>
+       <li><strong>GESHI_SEARCH:</strong> This element specifies the regular 
expression to search for. If you plan
+       to capture the output, use brackets (<tt>()</tt>). See how in the first 
example above, most of the regular
+       expression is in one set of brackets (with the equals sign in other 
brackets). You should make sure that the
+       part of the regular expression that is supposed to match what is 
highlighted is in brackets.</li>
+       <li><strong>GESHI_REPLACE:</strong> This is what the stuff matched by 
the regular expression will be replaced
+       with. If you've grouped the stuff you want highlighted into brackets in 
the GESHI_SEARCH element, then you can
+       use <tt>\\number</tt> to match that group, where <tt>number</tt> is a 
number corresponding to how many open brackets
+       are between the open bracket of the group you want highlighted and the 
start of the GESHI_SEARCH string + 1. This
+       may sound confusing, and it probably is, but if you're familiar with 
how PHP's regular expressions work you
+       should understand. In the example above, the opening bracket for the 
stuff we want highlighted is the very first
+       bracket in the string, so the number of brackets before that bracket 
and the start of the string is 0. So we add
+       1 and get our replacement string of <tt>\\1</tt> <span 
style="font-size: 80%">(whew!)</span>.<br />&nbsp;<br />If you
+       didn't understand a word of that, make sure that there are brackets 
around the string in GESHI_SEARCH and use
+       \\1 for GESHI_REPLACE ;)</li>
+       <li><strong>GESHI_MODIFIERS:</strong> Specify modifiers for your 
regular expression. If your regular expression includes
+       the everything matcher (<tt>.*?</tt>), then your modifiers should 
include &quot;s&quot; and &quot;i&quot; (e.g. use
+       'si' for this).</li>
+       <li><strong>GESHI_BEFORE:</strong>Specifies a bracket group that should 
appear before the highlighted match (this
+       bracketed group will not be highlighted). Use this if you had to match 
what you wanted by matching part of your
+       regexp string to something before what you wanted to highlight, and you 
don't want that part to disappear in
+       the highlighted result.</li>
+       <li><strong>GESHI_AFTER:</strong>Specifies a bracket group that should 
appear after the highlighted match (this
+       bracketed group will not be highlighted). Use this if you had to match 
what you wanted by matching part of your
+       regexp string to something after what you wanted to highlight, and you 
don't want that part to disappear in
+       the highlighted result.</li>
+</ul>
+
+<p>Is that totally confusing? Here's the test for if you're an android or not: 
If you found that perfectly understandable
+then you're an android ;). Here's a better example:</p>
+
+<p>Let's say that I'm making a language, and variables in this language always 
start with a dollar sign ($), are always
+written in lowercase letters and always end with an ampersand (&amp;). eg:</p>
+
+<code>$foo& = 'bar'</code>
+
+<p>I want to highlight <em>only the text between the $ and the &amp;</em>. How 
do I do that? With simple regular
+expressions I can't, but with advanced, it's relatively easy:</p>
+
+<pre>          1 => array(
+                       GESHI_SEARCH => '(\$)([a-z]+)(&amp;)',   // search for 
a dollar sign, then one or more of the characters a-z, then an ampersand
+                       GESHI_REPLACE => '\\2',                  // we wanna 
highlight the characters, which are in the second bracketed group
+                       GESHI_MODIFIERS => '',                   // no 
modifiers, since we're not matching the &quot;anything&quot; regex
+                       GESHI_BEFORE => '\\1',                   // before the 
highlighted characters should be the first bracketed group (always a dollar 
sign in this example)
+                       GESHI_AFTER => '\\3'                     // after the 
highlighted characters should be the third bracketed group (always an ampersand 
in this example)
+                       ),</pre>
+
+<p>So if someone tried to highlight using my language, all cases of $foo& 
would turn into:</p>
+
+<code>$&lt;span style=&quot;color: blue;&quot;&gt;foo&lt;/span&gt;&amp;</code>
+
+<p>(which would of course be viewed in a browser to get something like 
<tt>$<span style="color: blue;">foo</span>&amp;</tt>)</p>
+
+<h5 id="language-file-strict-mode">4.3.9: Contextual Highlighting and Strict 
Mode</h5>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#language-file-tidying-up">Next</a> | <a 
href="#language-file-regexps">Previous</a></div>
+
+<p>For languages like HTML, it's good if we can highlight a tag (like 
&lt;a&gt; for example). But how do we stop
+every single &quot;a&quot; in the source getting highlighted? What about for 
attributes? If I've got the word
+&quot;colspan&quot; in my text I don't want that highlighted! So how do you 
tell GeSHi not to highlight in that
+case? You do it with &quot;Strict Blocks&quot;.</p>
+
+<p>Here is an example:</p>
+
+<pre>  'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '&lt;?php' =&gt; '?&gt;'
+                       ),
+               1 => array(
+                       '&lt;?' =&gt; '?&gt;'
+                       ),
+               2 => array(
+                       '&lt;%' =&gt; '%&gt;'
+                       ),
+               3 => array(
+                       '&lt;script language="php"&gt;' =&gt; '&lt;/script&gt;'
+                       )
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               3 => true
+               )</pre>
+
+<p>What is strict mode? Strict mode says that highlighting only occurs inside 
the blocks you specify. You can see from
+the example above that highlighting will only occur if the source is inside 
&lt;?php ... ?&gt; (though note the <tt>GESHI_MAYBE</tt>!).
+Here are some points about strict highlighting:</p>
+<ul>
+       <li><strong>'STRICT_MODE_APPLIES':</strong> This takes three values 
(all constants):
+       <ul>
+               <li><tt>GESHI_ALWAYS</tt>: Strict mode always applies for all 
of the blocks you specify. Users of
+               your language file cannot turn strict mode off. This should be 
used for markup languages.</li>
+               <li><tt>GESHI_NEVER</tt>: Strict mode is never used. Users of 
your language file cannot turn strict mode
+               on. Use this value if there is no such thing as a block of code 
that would not be highlighted in
+               your language (most languages, like C, Java etc. use this 
because anything in a C file should be highlighted).</li>
+               <li><tt>GESHI_MAYBE</tt>: Strict mode *sometimes* applies. It 
defaults to &quot;off&quot;. Users can turn
+               strict mode on if they please. If strict mode is off then 
everything in the source will be highlighted, even
+               things outside the strict block markers. If strict mode is on 
the nothing outside strict block markers will
+               be highlighted.</li>
+       </ul>
+       <li><strong>SCRIPT_DELIMITERS:</strong> This is an array of script 
delimiters, in the format of the above. The indices are
+       use in the 'SCRIPT' part of the styles section for highlighting 
everything in a strict block in a certain way. For example,
+       you could set up your language file to make the background yellow of 
any code inside a strict block this way. The delimiters
+       are in the form 'OPEN' => 'CLOSE'. Delimiters can be of any length > 0. 
Delimiters are <em>not</em> formatted as if they
+       were run through <tt>htmlentities()</tt>!</li>
+       <li><strong>'HIGHLIGHT_STRICT_BLOCK':</strong> specifies whether any 
highlighting should go on inside each block. Most
+       of the time this should be true, but for example, in the XML language 
file highlighting is turned off for blocks beginning
+       with &lt;!DOCTYPE and ending with &gt;. However, you can still style 
the overall block using the method described above,
+       and the XML language file does just that.</li>
+</ul>
+
+<div class="note"><div class="note-header">Note:</div><p>The delimiters should 
be in <em>reverse alphabetical order</em>. Note that in the above example,
+<strong>&lt;?php</strong> comes before <strong>&lt;?</strong>.</p></div>
+
+<h4 id="language-file-tidying-up">4.3.10: Tidying Up</h4>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a href="#method-constant-reference">Next</a> | <a 
href="#language-file-strict-mode">Previous</a></div>
+
+<p>All language files should end with:</p>
+
+<pre>);
+
+?></pre>
+
+
+<h3 id="method-constant-reference">5: Method/Constant Reference</a></h3>
+<div class="nav"><a href="#top">Top</a> | <a href="#contents">Contents</a> | 
<a>Next</a> | <a href="#language-file-tidying-up">Previous</a></div>
+
+<p>I'm afraid I have been lying for a little while about this now! Since 1.0.7 
I have been including a phpdoc API for
+the sourcecode in the <a href="api/index.html">api</a> directory, but have 
forgot to update the documentation! However, it is
+available, and may assist you in coding, especially for plugin coders.</p>
+
+<hr />
+
+<p>That's all, folks!</p>
+
+<p>I've improved the documentation greatly from version 1.0.1, but there may 
still be
+problems with it, or it may still be confusing for you. Or perhaps I was just 
plain
+wrong about one point! If so, contact me and I'll do my best to sort it 
out.</p>
+
+<p>In case you were wondering, I've finished development of the 1.0.X thread of
+GeSHi. The only releases I'll make in this thread will be of the bug-fix/add 
language files
+type. In particular, version 1.0.2 was a &quot;concept&quot; release - testing 
how
+far I could take the highlighting idea (as well as ideas from others).</p>
+
+<p>I'm planning a code rewrite for 1.2.X, which will be based on a new engine 
- a
+&quot;psuedo-tokenizer&quot; engine. Hopefully it will massively reduce the 
server
+load and time taken (by almost eliminating regexps), while providing superior
+highlighting. But fear not! The interface and method names should all remain 
the
+same ^_^ (though I can't say the same for language files!)</p>
+
+<p>And finally, a couple of people have been asking me: how did you generate 
that documentation?
+The amazing answer is: my brain. And yes, it took a long time, and I don't 
reccommend doing it this
+way. And yes, you can borrow the styles if you like, though flick me an e-mail 
if you do.</p>
+
+<p>Anyway, enough blather from me. Get GeSHi working for you already! :D</p>
+
+<pre>Nigel McNie
+<a href="mailto:address@hidden";>address@hidden</a>
+<a href="http://qbnz.com/highlighter/";>http://qbnz.com/highlighter/</a></pre>
+
+</body>
+</html>

Index: docs/geshi-doc.txt
===================================================================
RCS file: docs/geshi-doc.txt
diff -N docs/geshi-doc.txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ docs/geshi-doc.txt  25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,1688 @@
+[NOTE: This documentation has simply been copy-pasted from the HTML form and 
is NOT up to date, I recommend you
+read that instead]
+
+GeSHi Documentation
+Version 1.0.7.14
+
+Author:          Nigel McNie
+Copyright:       � Nigel McNie, 2004
+Email:           address@hidden
+GeSHi Website:   http://qbnz.com/highlighter
+
+This is the documentation for GeSHi - Generic Syntax Highlighter. The most 
modern version of this document is available on the web - go to 
http://qbnz.com/highlighter/documentation.php to view it.
+
+Any comments, questions, confusing points? Please contact me! I need all the 
information I can get to make the use of GeSHi and everything related to it 
(including this documentation) a breeze.
+Contents
+
+    * 1. Introduction
+          o 1.1 Features
+          o 1.2 About GeSHi
+          o 1.3 Credits
+          o 1.4 Feedback
+    * 2. The Basics
+          o 2.1 Getting GeSHi
+          o 2.2 Installing GeSHi
+                + 2.2.1 Requirements
+                + 2.2.2 Extracting GeSHi
+                + 2.2.3 Installation
+          o 2.3 Basic Usage
+    * 3. Advanced Features
+          o 3.1 The Code Container
+          o 3.2 Line Numbers
+                + 3.2.1 Enabling Line Numbers
+                + 3.2.2 Styling Line Numbers
+                + 3.2.3 Choosing a Start Number
+          o 3.3 Using CSS Classes
+                + 3.3.1 Enabling CSS Classes
+                + 3.3.2 Setting the CSS Class/ID
+                + 3.3.3 Getting the Stylesheet
+                + 3.3.4 Using an External Stylesheet
+          o 3.4 Changing Styles
+                + 3.4.1 The Overall Styles
+                + 3.4.2 Line Number Styles
+                + 3.4.3 Setting Keyword Styles
+                + 3.4.4 Setting Comment Styles
+                + 3.4.5 Setting Other Styles
+          o 3.5 Case Sensitivity and Auto Casing
+                + 3.5.1 Auto Caps/Nocaps
+                + 3.5.2 Setting Case Sensitivity
+          o 3.6 Changing the Source/Language/Path/Charset
+                + 3.6.1 Changing the Source Code
+                + 3.6.2 Changing the Language
+                + 3.6.3 Changing the Path
+                + 3.6.4 Changing the Character Set
+                + 3.6.5 Using load_from_file to change the language and source 
code
+          o 3.7 Error Handling
+          o 3.8 Disabling Styling of Some Lexics
+          o 3.9 Setting the Tab Width
+          o 3.10 Using Strict Mode
+          o 3.11 Adding/Removing Keywords
+                + 3.11.1 Adding a Keyword
+                + 3.11.2 Removing a Keyword
+                + 3.11.3 Adding a Keyword Group
+                + 3.11.4 Removing a Keyword Group
+          o 3.12 Headers and Footers for your code
+                + 3.12.1 Keyword Substitution
+                + 3.12.2 Setting Header Content
+                + 3.12.3 Setting Footer Content
+                + 3.12.4 Styling Header Content
+                + 3.12.5 Styling Footer Content
+          o 3.13 Keyword URLs
+                + 3.13.1 Setting a URL for a Keyword Group
+                + 3.13.2 Disabling URLs for a Keyword Group
+                + 3.13.3 Styling Links
+                + 3.13.4 Setting the Link Target
+          o 3.14 Using Contextual Importance
+          o 3.15 Highlighting Special Lines "Extra"
+                + Specifying the Lines to Highlight Extra
+                + Styles for the Highlighted Lines
+          o 3.16 Adding IDs to Each Line
+          o 3.17 Getting the Time of Styling
+    * 4 Language Files
+          o 4.1 An Example Language File
+          o 4.2 Language File Conventions
+          o 4.3 Language File Sections
+                + 4.3.1 The Header
+                + 4.3.2 The First Indices
+                + 4.3.3 Keywords
+                + 4.3.4 Symbols and Case Sensitivity
+                + 4.3.5 Styles for your Language Files
+                + 4.3.6 URLs for Functions
+                + 4.3.7 Object Orientation Support
+                + 4.3.8 Using Regular Expressions
+                + 4.3.9 Contextual Highlighting and Strict Mode
+                + 4.3.10 Tidying Up
+    * 5 Method/Constant Reference
+
+1: Introduction
+Top | Contents | Next | Previous
+
+GeSHi is exactly what the acronym stands for: a Generic Syntax Highlighter. As 
long as you have a language file for almost any computer language - whether it 
be a scripting language, object orientated, markup or anything in between - 
GeSHi can highlight it! GeSHi is extremely customisable - the same source can 
be highlighted multiple times in multiple ways - the same source even with a 
different language. GeSHi outputs XHTML strict compliant code*, and can make 
use of CSS to save on the amount of output. And what is the cost for all of 
this? You need PHP. That's all!
+
+*Most of the time. Some languages do not output XHTML strict code, and using 
line numbers with the PRE header is not legal either. These problems will be 
fixed in 1.2.
+1.1: Features
+Top | Contents | Next | Previous
+
+Here are some of the standout features of GeSHi:
+
+    * Programmed in PHP: GeSHi is coded entirely in PHP. This means that where 
ever you have PHP, you can have GeSHi! Almost any free webhost supports PHP, 
and GeSHi works fine with PHP > 4.1.0.
+    * Support for many languages: GeSHi comes with over 50 languages, 
including PHP, HTML, CSS, Java, C, Lisp, XML, Perl, Python, ASM and many more!
+    * XHTML compliant output: GeSHi produces XHTML compliant output, using 
stylesheets, so you need not worry about GeSHi ruining your claims to 
perfection in the standards department ;)
+    * Highly customisable: GeSHi allows you to change the style of the output 
on the fly, use CSS classes or not, use an external stylesheet or not, use line 
numbering, change the case of output keywords... the list goes on and on!
+    * Flexible: Unfortunately, GeSHi is quite load/time intensive for large 
blocks of code. However, you want speed? Turn off any features you don't like, 
pre-make a stylesheet and use CSS classes to reduce the amount of output and 
more - it's easy to strike a balance that suits you.
+
+This is just a taste of what you get with GeSHi - the best syntax highlighter 
for the web in the world!
+1.2: About GeSHi
+Top | Contents | Next | Previous
+
+GeSHi started as a mod for the phpBB forum system, to enable highlighting of 
more languages than the available (which was 0 ;)). However, it quickly spawned 
into an entire project on its own. But now it has been released, work continues 
on a mod for phpBB* - and hopefully for many forum systems, blogs and other 
web-based systems.
+
+*I am no longer working on this MOD, however if someone else wants to they can 
contact me for more information.
+
+Several systems are using GeSHi now, including:
+
+    * Dokuwiki - An advanced wiki engine
+    * gtk.php.net - Their manual uses GeSHi for syntax highlighting
+    * WordPress - A powerful blogging system*
+    * PHP-Fusion - A constantly evovling CMS
+    * SQL Manager - A Postgres DBAL
+    * Mambo - A popular open source CMS
+    * MediaWiki - A leader in Wikis*
+    * TikiWiki - A megapowerful Wiki/CMS
+    * TikiPro - Another powerful Wiki based on Tikiwiki
+    * RWeb - A site-building tool
+
+* Available as plugin only. In addition, some of the other entries mentioned 
here may only have GeSHi available as a plugin.
+
+GeSHi is the work of me, Nigel McNie. Others have helped with aspects of GeSHi 
also, they're mentioned in the THANKS file.
+1.3: Credits
+Top | Contents | Next | Previous
+
+Many people have helped out with GeSHi, whether by creating language files, 
submitting bug reports, suggesting new ideas or simply pointing out a new idea 
or something I'd missed. All of these people have helped to build a better 
GeSHi, you can see them in the THANKS file.
+
+Do you want your name on this list? Why not make a language file, or submit a 
valid bug? Or perhaps help me with an added feature I can't get my head around, 
or suggest a new feature, or even port GeSHi to anothe language? There's lots 
you can do to help out, and I need it all :)
+1.4: Feedback
+Top | Contents | Next | Previous
+
+I need your feedback! ANYthing you have to say is fine, whether it be a query, 
congratulations, a bug report or complaint, I don't care! I want to make this 
software the best it can be, and I need your help! You can contact me in the 
following ways:
+
+    * E-mail: address@hidden
+    * Forums: Sourceforge.net Forums or GeSHi home forums
+
+Remember, any help I am grateful for :)
+2: The Basics
+Top | Contents | Next | Previous
+
+In this section, you'll learn a bit about GeSHi, how it works and what it 
uses, how to install it and how to use it to perform basic highlighting.
+2.1: Getting GeSHi
+Top | Contents | Next | Previous
+
+If you're reading this and don't have GeSHi, that's a problem ;). So, how do 
you get your hands on it? Visit http://qbnz.com/highlighter/downloads.php to 
obtain the latest version.
+2.2: Installing GeSHi
+Top | Contents | Next | Previous
+
+Installing GeSHi is a snap, even for those most new to PHP. There's no tricks 
involved. Honest!
+2.2.1: Requirements
+Top | Contents | Next | Previous
+
+GeSHi requires the following to be installable:
+
+    * PHP. It's untested with anything other than 4.3.X. I hope to extend this 
range soon. I see no reason why it won't work with any version of PHP above 
4.1.0.
+    * Approximately 700 kilobytes of space. The actual script is small - 
around 85K - but most of the size comes from the large number of language files 
(over 50!). If you're pushed for space, make sure you don't upload to your 
server the docs/ or contrib/ directory, and you may want to leave out any 
language files that don't take your fancy either.
+
+As you can see, the requirements are very small. If GeSHi does NOT work for 
you in a particular version of PHP, let me know why and I'll fix it.
+
+Packages come in .zip, .tar.gz and .tar.bz2 format, so there's no complaining 
about whether it's available for you. *nix users probably want .tar.gz or 
.tar.bz2 and windows users probably want .zip.
+2.2.2: Extracting GeSHi
+Top | Contents | Next | Previous
+
+To extract GeSHi in Linux (.tar.gz):
+
+   1. Open a shell
+   2. cd to the directory where the archive lies
+   3. Type tar -xzvf [filename] where [filename] is the name of the archive 
(typically GeSHi-1.X.X.tar.gz)
+   4. GeSHi will be extracted to its own directory 
+
+To extract GeSHi in Windows (.zip):
+
+   1. Open Explorer
+   2. Navigate to the directory where the archive lies
+   3. Extract the archive. The method you use will depend on your 
configuration. Some people can right-click upon the archive and select 
"Extract" from there, others may have to drag the archive and drop it upon an 
extraction program.
+
+To extract from .zip you'll need an unzipping program - unzip in Linux, or 
Winzip, Winrar or similar for Windows.
+2.2.3: Installation
+Top | Contents | Next | Previous
+
+GeSHi is nothing more than a PHP class with related language support files. 
Those of you familiar with PHP can then guess how easy the installation will 
be: simply copy it into your include path somewhere. You can put it wherever 
you like in this include path. I recommend that you put the language files in a 
subdirectory of your include path too - perhaps the same subdirectory that 
geshi.php is in. Remember this path for later.
+
+If you don't know what an include path is, don't worry. Simply copy GeSHi to 
your webserver. So for example, say your site is at http://mysite.com/myfolder, 
you can copy GeSHi to your site so the directory structure is like this:
+
+http://mysite.com/myfolder/geshi/[language files]
+http://mysite.com/myfolder/geshi.php
+
+Or you can put it in any subdirectory you like:
+
+http://mysite.com/myfolder/includes/geshi/[language files]
+http://mysite.com/myfolder/includes/geshi.php
+
+Caution:
+
+When using GeSHi on a live site, the only directory required is the geshi/ 
subdirectory. Both contrib/ and docs/ are worthless, and furthermore, as some 
people discovered, one of the files in contrib had a security hole (fixed as of 
1.0.7.3). I suggest you delete these directories from any live site they are on.
+2.3: Basic Usage
+Top | Contents | Next | Previous
+
+Use of GeSHi is very easy. Here's a simple example:
+//
+// Include the GeSHi library
+//
+include_once('geshi.php');
+
+//
+// Define some source to highlight, a language to use
+// and the path to the language files
+//
+$source = '$foo = 45;
+for ( $i = 1; $i < $foo; $i++ )
+{
+  echo "$foo<br />\n";
+  --$foo;
+}';
+$language = 'php';
+//
+// Create a GeSHi object
+//
+$geshi =& new GeSHi($source, $language);
+
+//
+// And echo the result!
+//
+echo $geshi->parse_code();
+
+As you can see, there's only three really important lines:
+include_once('geshi.php');
+
+This line includes the GeSHi class for use
+$geshi = new GeSHi($source, $language);
+
+This line creates a new GeSHi object, holding the source and the language you 
want to use for highlighting.
+echo $geshi->parse_code();
+
+This line spits out the result :)
+
+So as you can see, simple usage of GeSHi is really easy. Just create a new 
GeSHi object and get the code!
+
+Since version 1.0.2, there is a function included with GeSHi called 
geshi_highlight. This behaves exactly as the php function highlight_string 
behaves - all you do is pass it the language you want to use to highlight and 
the path to the language files as well as the source. Here are some examples:
+// Simply echo the highlighted code
+geshi_highlight($source, 'php', $path);
+
+// Get the code back, for use later
+$code = geshi_highlight($source, 'java', $path, true)
+
+// Check if there is an error with parsing this code
+ob_start();
+$result = geshi_highlight($source, 'perl', $path);
+$code = ob_get_contents();
+ob_end_clean();
+if ( !$result )
+{
+        // There was an error with highlighting...
+}
+else
+{
+        // All OK :)
+}
+
+However, these are really simple examples and doesn't even begin to cover all 
the advanced features of GeSHi. If you want to learn more, continue on to 
section 3: Advanced Features.
+3: Advanced Features
+Top | Contents | Next | Previous
+
+This section documents the advanced features of GeSHi - strict mode, using CSS 
classes, changing styles on the fly, disabling highlighting of some things and 
more.
+
+In this section there are many code snippets. For all of these, you should 
assume that the GeSHi library has been included, and a GeSHi object has been 
created and is referenced by the variable $geshi. Normally, the source, 
language and path used are arbitary.
+3.1 The Code Container
+Top | Contents | Next | Previous
+
+The Code Container has a fundamental effect on the layout of your code before 
you even begin to style. What is the Code Container? It's the bit of markup 
that goes around your code to contain it. By default your code is surrounded by 
a <pre>, but you can also specify a <div>.
+
+The <pre> header is the default. If you're familiar with HTML you'll know that 
whitespace is rendered "as is" by a <pre> element. The advantage for you is 
that if you use <pre> the whitespace you use will appear pretty much exactly 
how it is in the source, and what's more GeSHi won't have to add a whole lot of 
<br />'s and non-breaking spaces (&nbsp;) to your code to indent it. This saves 
you source code (and your valuable visitors waiting time and your bandwidth).
+
+But if you don't like <pre> or it looks stupid in your browser no matter what 
styles you try to apply to it or something similar, you might want to use a 
<div> instead. A <div> will result in more source - GeSHi will have to insert 
whitespace markup - but in return you can wrap long lines of code that would 
otherwise have your browser's horizontal scrollbar appear. Of course with <div> 
you can *not* wrap lines if you please. The highlighter demo at the GeSHi home 
page uses the <div> approach for this reason.
+
+At this stage there isn't an option to wrap the code in <code> tags (unless 
you use the function geshi_highlight), partly because of the inconsistent and 
unexpected ways stuff in <code> tags is highlighted. Besides, <code> is an 
inline element. But this may become an option in future versions.
+
+As of GeSHi 1.0.7.2 there is a new header type, that specifies that the code 
should not be wrapped in anything at all.
+
+To change/set the header to use, you call the set_header_type() method:
+$geshi->set_header_type(GESHI_HEADER_DIV);
+// or...
+$geshi->set_header_type(GESHI_HEADER_PRE); // or...
+$geshi->set_header_type(GESHI_HEADER_NONE);
+
+Those are the only three arguments you should pass to set_header_type. Passing 
anything else may cause inconsistencies in what is used as the Code Container 
(although it *should* simply use a <pre>). Better not to risk it.
+Note:
+
+GESHI_HEADER_DIV, GESHI_HEADER_PRE and GESHI_HEADER_NONE are constants, so 
don't put them in strings!
+Caution:
+
+The default styles for the <pre> and <div> will be different, especially if 
you use line numbers!. I have found that a <pre> results in code that is 
smaller than for that of a <div>, you should rectify this difference by using 
set_overall_style() if you need to. But be aware of this difference for if you 
are changing the header type!
+3.2: Line Numbers
+Top | Contents | Next | Previous
+
+GeSHi has the ability to add line numbers to your code (see the demo available 
at http://qbnz.com/highlighter/demo.php to see what can be achieved). Line 
numbers are a great way to make your code look professional, especially if you 
use the fancy line numbers feature.
+3.2.1: Enabling Line Numbers
+Top | Contents | Next | Previous
+
+To highlight a source with line numbers, you call the enable_line_numbers() 
method:
+$geshi->enable_line_numbers($flag);
+
+Where $flag is one of the following:
+
+    * GESHI_NORMAL_LINE_NUMBERS - Use normal line numbering
+    * GESHI_FANCY_LINE_NUMBERS - Use fancy line numbering
+    * GESHI_NO_LINE_NUMBERS - Disable line numbers (default)
+
+Normal line numbers means you specify a style for them, and that style gets 
applied to all of them. Fancy line numbers means that you can specify a 
different style for each nth line number. You change the value of n (default 5):
+$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 37);
+
+The second parameter is not used in any other mode. Setting it to 0 is the 
same as simply using normal line numbers. Setting it to 1 applies the fancy 
style to every line number.
+Note:
+
+The values above are CONSTANTS - so don't put them in strings!
+3.2.2 Styling Line Numbers
+Top | Contents | Next | Previous
+
+As of GeSHi 1.0.2, line numbers are added by the use of ordered lists. This 
solves the old issues of line number styles inheriting from styles meant for 
the code. Also, this solves an important issue about selecting code. For 
example, line numbers look nice, but when you go to select the code in your 
browser to copy it? You got the line numbers too! Not such a good thing, but 
thankfully this issue is now solved. What is the price? Unfortunately the whole 
way that styles are inherited/used has changed for those of you who were 
familiar with 1.0.1, and there is quite a bit more HTML involved. So think 
carefully about these things before you enable line numbers.
+
+Now, onto how to style line numbers:
+
+Styles are set for line numbers using the set_line_style() method:
+$geshi->set_line_style('background: #fcfcfc;');
+
+If you're using Fancy Line Numbers mode, you pass a second string for the 
style of the nth line number:
+$geshi->set_line_style('background: #fcfcfc;', 'background: #f0f0f0;');
+
+The second style will have no effect if you're not using Fancy Line Numbers 
mode.
+
+By default, the styles you pass overwrite the current styles. Add a boolean 
"true" after the styles you specify to combine them with the current styles:
+$geshi->set_line_style('background: red;', true);
+// or, for fancy line numbers
+$geshi->set_line_style('background: red;', 'background: blue;', true);
+Caution:
+
+When you set line number styles, the code will inherit those styles! This is 
the main issue to come out of the 1.0.2 release. If you want your code to be 
styled in a predictable manner, you'll have to call the set_code_style() method 
to rectify this problem.
+
+Note also that you cannot apply background colours to line numbers unless you 
use set_overall_style(). Here's how you'd style:
+
+   1. Use set_overall_style() to style the overall code block. For example, 
you can set the border style/colour, any margins and padding etc. using this 
method. In addition: set the background colour for all the line numbers using 
this method.
+   2. Use set_line_style() to style the foreground of the line numbers. For 
example, you can set the colour, weight, font, padding etc. of the line numbers 
using this method.
+   3. Use set_code_style() to explicitly override the styles you set for line 
numbers using set_line_style. For example, if you'd set the line numbers to be 
bold (or even if you'd only set the fancy line number style to be bold), and 
you didn't actually want your code to be bold, you'd make sure that 
font-weight: normal; was in the stylesheet rule you passed to set_code_style
+
+This is the one major change from GeSHi 1.0.1 - make sure you become familiar 
with this, and make sure that you check any code you have already styled with 
1.0.1 when you upgrade to make sure nothing bad happens to it.
+3.2.3: Choosing a Start Number
+Top | Contents | Next | Previous
+
+As of GeSHi 1.0.2, you can now make the line numbers start at any number, 
rather than just 1. This feature is useful if you're highlighting code from a 
file from around a certain line number in that file, as an additional guide to 
those who will view the code. You set the line numbers by calling the 
start_line_numbers_at() method:
+$geshi->start_line_numbers_at($number);
+
+$number must be a positive integer (or zero). If it is not, GeSHi will convert 
it anyway.
+
+If you have not enabled line numbers, this will have no effect.
+Caution:
+
+Although I'd like GeSHi to have XHTML strict compliance, this feature will 
break compliancy (however transitional compliancy remains). This is because the 
only widely supported way to change the start value for line numbers is by 
using the start="number" attribute of the <ol> tag. Although CSS does provide a 
mechanism for doing this, it is only supported in Opera versions 7.5 and above 
(not even Firefox supports this).
+3.3: Using CSS Classes
+Top | Contents | Next | Previous
+
+Using CSS to highlight your code instead of in-lining the styles is a definate 
bonus. Not only is it more compliant (the w3c is deprecating the style 
attribute in XHTML 2.0) but it results in far less outputted code - up to a 
whopping 50% saving - which makes a *huge* difference to those of us on modems!
+3.3.1: Enabling CSS Classes
+Top | Contents | Next | Previous
+
+By default, GeSHi doesn't use the classes, so it's easy just to whack out some 
highlighted code if you need without worrying about stylesheets. However, if 
you're a bit more organised about it, you should use the classes ;). To turn 
the use of classes on, you call the enable_classes() method:
+$geshi->enable_classes();
+
+If you want to turn classes OFF for some reason later:
+$geshi->enable_classes(false);
+
+If classes are enabled when parse_code() is called, then the resultant source 
will use CSS classes in the output, otherwise it will in-line the styles. The 
advantages of using classes are great - the reduction in source will be very 
noticeable, and what's more you can use one stylesheet for several different 
highlights on the same page. In fact, you can even use an external stylesheet 
and link to that, saving even more time and source (because stylesheets are 
cached by browsers).
+Caution:
+
+This should be the very first method you call after creating a new GeSHi 
object! That way, various other methods can act upon your choice to use classes 
correctly. In theory, you could call this method just before parsing the code, 
but this may result in unexpected behaviour.
+3.3.2: Setting the CSS class and ID
+Top | Contents | Next | Previous
+
+You can set an overall CSS class and id for the code. This is a good feature 
that allows you to use the same stylesheet for many different snippets of code. 
You call set_overall_class() and set_overall_id to accomplish this:
+$geshi->set_overall_class('mycode');
+$geshi->set_overall_id('dk48ck');
+
+The default classname is the name of the language being used. This means you 
can use just the one stylesheet for all sources that use the same language, and 
incidentally means that you probably won't have to call these methods too often.
+
+CSS IDs are supposed to be unique, and you should use them as such. Basically, 
you can specify an ID for your code and then use that ID to highlight that code 
in a unique way. You'd do this for a block of code that you expressly wanted to 
be highlighted in a different way (see the section below on gettting the 
stylesheet for your code for an example).
+3.3.3: Getting the stylesheet for your code
+Top | Contents | Next | Previous
+
+The other half of using CSS classes is getting the stylesheet for use with the 
classes. GeSHi makes it very easy to get a stylesheet for your code, with one 
easy method call:
+$geshi->enable_classes();
+
+// Here we have code that will spit out a header for
+// a stylesheet. For example:
+
+echo '<html>
+<head><title>Code</title>
+<style type="text/css">
+<!--';
+
+// Echo out the stylesheet for this code block
+
+echo $geshi->get_stylesheet();
+
+// And continue echoing the page
+
+echo '-->
+</style></head>
+<body>';
+
+The get_stylesheet() method gets the stylesheet for your code in one easy 
call. All you need to do is output it in the correct place. As you can also 
see, you don't even have to enable class usage to get the stylesheet nessecary 
either - however not enabling classes but using the stylesheet may result in 
problems later.
+
+By default, get_stylesheet() tries to echo the least amount of code possible. 
Although currently it doesn't check to see if a certain lexic is even in the 
source, you can expect this feature in the future. At least for the present 
however, if you explicitly disable the highlighting of a certain lexic, or 
disable line numbers, the related CSS will not be outputted. This may be a bad 
thing for you perhaps you're going to use the stylesheet for many blocks of 
code, some with line numbers, others with some lexic enabled where this source 
has it disabled. Or perhaps you're building an external stylesheet and want all 
lexics included. So to get around this problem, you do this:
+$geshi->get_stylesheet(false);
+
+This turns economy mode off, and all of the stylesheet will be outputted 
regardless.
+
+Now lets say you have several snippets of code, using the same language. In 
most of them you don't mind if they're highlighted the same way (in fact, 
that's exactly what you want) but in one of them you'd like the source to be 
highlighted differently. Here's how you can do that:
+// assume path is the default "geshi/" relative to the current directory
+$geshi1 = new GeSHi($source1, $lang);
+$geshi2 = new GeSHi($source2, $lang);
+$geshi3 = new GeSHi($source3, $lang);
+
+// Turn classes on for all sources
+$geshi1->enable_classes();
+$geshi2->enable_classes();
+$geshi3->enable_classes();
+
+// Make $geshi3 unique
+$geshi3->set_overall_id('different');
+
+//
+// Methods are called on $geshi3 to change styles...
+//
+
+echo '<html>
+<head><title>Code</title>
+<style type="text/css">
+<!--
+';
+
+// Get the nessecary stylesheets
+echo $geshi1->get_stylesheet();
+echo $geshi3->get_stylesheet();
+
+echo '-->
+</style></head>
+<body>';
+
+
+echo 'Code snippet 1:';
+echo $geshi1->parse_code();
+echo 'Code snippet 2 (same highlighting as 1):';
+echo $geshi2->parse_code();
+echo 'Code snippet 3 (DIFFERENT highlighting):';
+echo $geshi3->parse_code();
+
+echo '</body></html>';
+
+Before version 1.0.2, you needed to set the class of the code you wanted to be 
unique to the empty string. This limitation has been removed in version 1.0.2 - 
if you set the ID of a block of code, all styling will be done based on that ID 
alone.
+3.3.4: Using an External Stylesheet
+Top | Contents | Next | Previous
+
+An external stylesheet can reduce even more the amount of code needed to 
highlight some source. However there are some drawbacks with this. To use an 
external stylesheet, it's up to you to link it in to your document, normally 
with the following HTML:
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="url_to_stylesheet.css" />
+
+In your external stylesheet you put CSS declarations for your code. Then just 
make sure you're using the correct class (use set_overall_class() to ensure 
this) and this should work fine.
+
+This method is great if you don't mind the source always being highlighted the 
same (in particular, if you're making a plugin for a forum/wiki/other system, 
using an external stylesheet is a good idea!). It saves a small amount of code 
and your bandwidth, and it's relatively easy to just change the stylesheet 
should you need to. However, using this will render the methods that change the 
styles of the code useless, because of course the stylesheet is no longer being 
dynamically generated. You can still disable highlighting of certain lexics 
dynamically, however.
+Note:
+
+As of version 1.0.2, GeSHi comes with a contrib/ directory, which in it 
contains a "wizard" script for creating a stylesheet. Although this script is 
by no means a complete solution, it will create the necessary rules for the 
basic lexics - comments, strings for example. Things not included in the wizard 
include regular expressions for any language that uses them (PHP and XML are 
two languages that use them), and keyword-link styles. However, this script 
should take some of the tedium out of the job of making an external stylesheet. 
Expect a much better version of this script in version 1.2!
+3.4: Changing Styles
+Top | Contents | Next | Previous
+
+One of the more powerful features of GeSHi is the ability to change the style 
of the output dynamically. Why be chained to the boring styles the language 
authors make up? You can change almost every single aspect of highlighted code 
- and can even say whether something is to be highlighted at all.
+
+If you're confused about "styles", you probably want to have a quick tutorial 
in them so you know what you can do with them. Checkout the homepage of CSS at 
http://www.w3.org/Style/CSS.
+3.4.1: The Overall Styles
+Top | Contents | Next | Previous
+
+The code outputted by GeSHi is either in a <div> or a <pre> (see the section 
entitled "The Code Container"), and this can be styled.
+$geshi->set_overall_style('... styles ...');
+
+Where styles is a string containing valid CSS declarations. By default, these 
styles overwrite the current styles, but you can change this by adding a second 
parameter:
+$geshi->set_overall_style('color: blue;', true);
+
+The default styles "shine through" wherever anything isn't highlighted. Also, 
you can apply more advanced styles, like position: (fixed|relative) etc, 
because a <div>/<pre> is a block level element.
+Note:
+
+Remember that a <div> will by default have a larger font size than a <pre>, as 
discussed in the section "The Code Container".
+3.4.2: Line Number Styles
+Top | Contents | Next | Previous
+
+You may wish to refer to the section Styling Line Numbers before reading this 
section.
+
+As of version 1.0.2, the way line numbers are generated is different, so 
therefore the way that they are styled is different. In particular, now you 
cannot set the background style of the fancy line numbers to be different from 
that of the normal line numbers.
+
+Line number styles are set by using the method set_line_style:
+$geshi->set_line_style($style1, $style2);
+
+$style1 is the style of the line numbers by default, and $style2 is the style 
of the fancy line numbers.
+Caution:
+
+Things have changed since 1.0.1! This note is very important - please make 
sure you check this twice before complaining about line numbers!
+
+Because of the way that ordered lists are done in HTML, there really isn't 
normally a way to style the actual numbers in the list. I've cheated somewhat 
with GeSHi - I've made it possible to use CSS to style the foreground of the 
line numbers. So therefore, you can change the color, font size and type, and 
padding on them. If you want to have a pretty background, you must use 
set_overall_style() to do this, and use set_code_style() to style the actual 
code! This is explained in the section above: Styling Line Numbers.
+
+In addition, the styles for fancy line numbers is now the difference between 
the normal styles and the styles you want to achieve. For example, in GeSHi 
prior to 1.0.2 you may have done this to style line numbers:
+$geshi->set_line_style('color: red; font-weight: bold;', 'color: green; 
font-weight: bold');
+
+Now you instead can do this:
+$geshi->set_line_style('color: red; font-weight: bold;', 'color: green;');
+
+The font-weight: bold; will automatically carry through to the fancy styles. 
This is actually a small saving in code - but the difference may be confusing 
for anyone using 1.0.1 at first.
+3.4.3: Setting Keyword Styles
+Top | Contents | Next | Previous
+
+Perhaps the most regular change you will make will be to the styles of a 
keyword set. In order to change the styles for a particular set, you'll have to 
know what the set is called first. Sets are numbered from 1 up. Typically, set 
1 contains keywords like if, while, do, for, switch etc, set 2 contains null, 
false, true etc, set 3 contains function inbuilt into the language (echo, 
htmlspecialchars etc. in PHP) and set 4 contains data types and similar 
variable modifiers: int, double, real, static etc. However these things are not 
fixed, and you should check the language file to see what key you want. Having 
a familiarity with a language file is definately a plus for using it.
+
+To change the styles for a keyword set, call the set_keyword_group_style() 
method:
+$geshi->set_keyword_group_style($group, $styles);
+
+Where $group is the group to change the styles for and $styles is a string 
containing the styles to apply to that group.
+
+By default, the styles you pass overwrite the current styles. Add a boolean 
"true" after the styles you specify to combine them with the current styles:
+$geshi->set_keyword_group_style(3, 'color: white;', true);
+3.4.4: Setting Comment Styles
+Top | Contents | Next | Previous
+
+To change the styles for a comment group, call the set_comments_style() method:
+$geshi->set_comments_style($group, $styles);
+
+Where $group is either a number corresponding to a single-line comment, or the 
string 'MULTI' to specify multiline comments:
+$geshi->set_comments_style(1, 'font-style: italic;');
+$geshi->set_comments_style('MULTI', 'display: hidden;');
+
+By default, the styles you pass overwrite the current styles. Add a boolean 
"true" after the styles you specify to combine them with the current styles:
+$geshi->set_comments_style(1, 'font-weight: 100;', true);
+3.4.5: Setting Other Styles
+Top | Contents | Next | Previous
+
+GeSHi can highlight many other aspects of your source other than just keywords 
and comments. Strings, Numbers, Methods and Brackets among other things can all 
also be highlighted. Here are the related methods:
+$geshi->set_escape_characters_style($styles[, $preserve_defaults]);
+$geshi->set_symbols_style($styles[, $preserve_defaults]);
+$geshi->set_strings_style($styles[, $preserve_defaults]);
+$geshi->set_numbers_style($styles[, $preserve_defaults]);
+$geshi->set_methods_style($key, $styles, [, $preserve_defaults]);
+
+$styles is a string containing valid stylesheet declarations, while 
$preserve_defaults should be set to true if you want your styles to be merged 
with the previous styles. In the case of set_methods_style, you should select a 
group to set the styles of, check the language files for the number used for 
each "object splitter".
+3.5: Case Sensitivity and Auto Casing
+Top | Contents | Next | Previous
+
+Controlling the case of the outputted source is an easy job with GeSHi. You 
can control which keywords are converted in case, and also control whether 
keywords are checked in a case sensitive manner.
+3.5.1: Auto-Caps/Nocaps
+Top | Contents | Next | Previous
+
+Auto-Caps/Nocaps is a nifty little feature that capitalises or lowercases 
automatically certain lexics when they are styled. I dabble in QuickBASIC, a 
dialect of BASIC which is well known for it's capatalisation, and SQL is 
another language well known for using caps for readability.
+
+To change what case lexics are rendered in, you call the set_case_keywords() 
method:
+$geshi->set_case_keywords($caps_modifier);
+
+The valid values to pass to this method are:
+
+    * GESHI_CAPS_NO_CHANGE - Don't change the case of any lexics, leave as 
they are found
+    * GESHI_CAPS_UPPER - Uppercase all lexics found
+    * GESHI_CAPS_LOWER - Lowercase all lexics found
+
+Caution:
+
+When I say "lexic", I mean "keywords". Any keyword in any keyword array will 
be modified using this option! This is one small area of inflexibility I hope 
to fix in 1.2.X.
+
+I suspect this will only be used to specify GESHI_CAPS_NO_CHANGE to turn off 
autocaps for languages like SQL and BASIC variants, like so:
+$geshi = new GeSHi($source, 'sql');
+$geshi->set_case_keywords(GESHI_CAPS_NO_CHANGE); // don't want keywords 
capatalised
+
+All the same, it can be used for some interesting effects:
+$geshi = new GeSHi($source, 'java');
+// Anyone who's used java knows how picky it is about CapitalLetters...
+$geshi->set_case_keywords(GESHI_CAPS_LOWER);
+// No *way* the source will look right now ;)
+3.5.2: Setting Case Sensitivity
+Top | Contents | Next | Previous
+
+Some languages, like PHP, don't mind what case function names and keywords are 
in, while others, like Java, depend on such pickiness to maintain their bad 
reputations ;). In any event, you can use the set_case_sensitivity to change 
the case sensitiveness of a particular keyword group from the default:
+$geshi->set_case_sensitivity($key, $sensitivity);
+
+Where $key is the key of the group for which you wish to change case 
sensitivness for (see the language file for that language), and $sensitivity is 
a boolean value - true if the keyword is case sensitive, and false if not.
+3.6: Changing the Source, Language, Config Options
+Top | Contents | Next | Previous
+
+What happens if you want to change the source to be highlighted on the fly, or 
the language. Or if you want to specify any of those basic fields after you've 
created a GeSHi object? Well, that's where these methods come in.
+3.6.1: Changing the Source Code
+Top | Contents | Next | Previous
+
+To change the source code, you call the set_source() method:
+$geshi->set_source($newsource);
+
+Example:
+$geshi = new GeSHi($source1, 'php');
+
+// Method calls to specify various options...
+
+$code1 = $geshi->parse_code();
+
+$geshi->set_source($source2);
+$code2 = $geshi->parse_code();
+3.6.2: Changing the Language
+Top | Contents | Next | Previous
+
+What happens if you want to change the language used for highlighting? Just 
call set_language():
+$geshi->set_language('newlanguage');
+
+Example:
+$geshi = new GeSHi($source, 'php');
+
+$code = $geshi->parse_code();
+
+// Highlight GeSHi's output
+$geshi->set_source($code);
+$geshi->set_language('html4strict');
+$geshi->enable_classes(false);
+echo $geshi->parse_code();
+Note:
+
+Names are case-insensitive - they will be converted to lower case to match a 
language file however. So if you're making a language file, remember it should 
have a name in lower case.
+Note:
+
+What you pass to this method is the name of a language file, minus the .php 
extension. If you're writing a plugin for a particular application, it's up to 
you to somehow convert user input into a valid language name.
+Caution:
+
+GeSHi include()s the language file, so be careful to make sure that users 
can't pass some wierd language name to include any old script! GeSHi tries to 
strip non-valid characters out of a language name, but you should always do 
this your self anyway. In particular, language files are always lower-case, 
with either alphanumeric characters, dashes or underscores in their name.
+
+At the very least, strip "/" characters out of a language name.
+3.6.3: Changing the Language Path
+Top | Contents | Next | Previous
+
+What happens if all of a sudden you want to use language files from a 
different directory from the current language file location? You call the 
set_language_path() method:
+$geshi->set_language_path($newpath);
+
+It doesn't matter whether the path has a trailing slash after it or not - only 
that it points to a valid folder. If it doesn't, that's your tough luck ;)
+3.6.4: Changing the Character Set
+Top | Contents | Next | Previous
+
+As of version 1.0.3, you can use the method set_encoding to specify the 
character set that your source is in. Valid names are those names that are 
valid for the PHP function htmlentities():
+$geshi->set_encoding($encoding);
+
+There is a table of valid strings for $encoding at the php.net manual linked 
to above. If you do not specify an encoding, or specify an invalid encoding, 
the character set used is ISO-8859-1.
+Using load_from_file to Change the Language and Source Code
+Top | Contents | Next | Previous
+
+As of GeSHi 1.0.5, you can use the method load_from_file to load the source 
code and language from a file. Simply pass this method a file name and it will 
attempt to load the source and set the language.
+$geshi->load_from_file($file_name, $lookup);
+
+$file_name is the file name to use, and $lookup is an optional parameter that 
contains a lookup array to use for deciding which language to choose. You can 
use this to override GeSHi's default lookup array, which may not contain the 
extension of the file you're after, or perhaps does have your extension but 
under a different language. The lookup array is of the form:
+
+array(
+        *   'lang_name' => array('extension', 'extension', ...),
+        *   'lang_name' ...
+        * );
+
+Also, you can use the method get_language_name_from_extension if you need to 
convert a file extension to a valid language name. This method will return the 
empty string if it could not find a match in the lookup, and like 
load_from_file it accepts an optional second parameter that contains a lookup 
array.
+3.7: Error Handling
+Top | Contents | Next | Previous
+
+What happens if you try to highlight using a language that doesn't exist? Or 
if GeSHi can't read a required file? The results you get may be confusing. You 
may check your code over and over, and never find anything wrong. GeSHi 
provides ways of finding out if GeSHi itself found anything wrong with what you 
tried to do. After highlighting, you can call the error() method:
+$geshi = new GeSHi('hi', 'thisLangIsNotSupported');
+
+echo $geshi->error();  // echoes error message
+
+The error message you will get will look like this:
+
+    GeSHi Error: GeSHi could not find the language thisLangIsNotSupported 
(using path geshi/) (code 2)
+
+The error outputted will be the last error GeSHi came across, just like how 
mysql_error() works.
+3.8: Disabling styling of some Lexics
+Top | Contents | Next | Previous
+
+One disadvantage of GeSHi is that for large source files using complex 
languages, it can be quite slow with every option turned on. Although future 
releases will concentrate on the speed/resource side of highlighting, for now 
you can gain speed increases by disabling some of the highlighting options. 
This is done by using a series of set_*_highlighting methods:
+
+    * set_keyword_group_highlighting($group, $flag): Sets whether a particular 
$group of keywords is to be highlighted or not. Consult the necessary language 
file(s) to see what $group should be for each group (typically a positive 
integer). $flag is false if you want to disable highlighting of this group, and 
true if you want to re-enable higlighting of this group. If you disable a 
keyword group then even if the keyword group has a related URL one will not be 
generated for that keyword.
+    * set_comments_highlighting($group, $flag): Sets whether a particular 
$group of comments is to be highlighted or not. Consult the necessary language 
file(s) to see what $group should be for each group (typically a positive 
integer, or the string 'MULTI' for multiline comments. $flag is false if you 
want to disable highlighting of this group, and true if you want to re-enable 
highlighting of this group.
+    * set_regexps_highlighting($regexp, $flag): Sets whether a particular 
$regexp is to be highlighted or not. Consult the necessary language file(s) to 
see what $regexp should be for each regexp (typically a positive integer, or 
the string 'MULTI' for multiline comments. $flag is false if you want to 
disable highlighting of this group, and true if you want to re-enable 
highlighting of this group.
+    * The following methods:
+          o set_escape_characters_highlighting($flag)
+          o set_symbols_highlighting($flag)
+          o set_strings_highlighting($flag)
+          o set_numbers_highlighting($flag)
+          o set_methods_highlighting($flag)
+      Work on their respective lexics (e.g. set_methods_highlighting will 
disable/enable highlighting of methods). For each method, if $flag is false 
then the related lexics will not be highlighted at all (this means no HTML will 
surround the lexic like usual, saving on time and bandwidth.
+
+3.9: Setting the Tab Width
+Top | Contents | Next | Previous
+
+If you're using the <pre> header, tabs are handled automatically by your 
browser, and in general you can count on good results. However, if you're using 
the <div> header, you may want to specify a tab width explicitly.
+
+Note that tabs created in this fashion won't be like normal tabs - there won't 
be "tab-stops" as such, instead tabs will be replaced with the specified number 
of spaces.
+
+To change the tab width, you call the set_tab_width() method:
+$geshi->set_tab_width($width);
+
+Where $width is the width in spaces that you'd like tabs to be.
+3.10: Using Strict Mode
+Top | Contents | Next | Previous
+
+Some languages like to get tricky, and jump in and out of the file that 
they're in. For example, the vast majority of you reading this will have used a 
PHP file. And you know that PHP code is only executed if it's within delimiters 
like <?php and ?> (there are others of course...). So what happens if you do 
the following in a php file?
+<img src="<?php echo rand(1, 100) ?>" />
+
+Well normally using GeSHi with PHP, or using a bad highlighter, you'll end up 
with this:
+<img src="<?php echo rand(1, 100) ?>" />
+
+What a mess! Especially if you're being slack about where you're putting your 
quotes, you could end up with the rest of your file as bright red. Fortunately, 
you can tell GeSHi to be "strict" about just when it highlights and when it 
does not, using the enable_strict_mode method:
+$geshi->enable_strict_mode($mode);
+
+Where $mode is true or not specified to enable strict mode, or false to 
disable strict mode if you've already turned it and don't want it now.
+
+Here's the result: much better!
+<img src="<?php echo rand(1, 100) ?>" />
+3.11: Adding/Removing Keywords
+Top | Contents | Next | Previous
+
+Lets say that you're working on a large project, with many files, many classes 
and many functions. Perhaps also you have the source code on the web and 
highlighted by GeSHi, perhaps as a front end to CVS, as a learning tool, 
something to refer to, whatever. Well, why not highlight the names of the 
functions and classes *your* project uses, as well as the standard functions 
and classes? Or perhaps you're not interested in highlighting certain 
functions, and would like to remove them? Or maybe you don't mind if an entire 
function group goes west in the interest of speed? GeSHi can handle all of this!
+3.11.1: Adding a Keyword
+Top | Contents | Next | Previous
+
+If you want to add a keyword to an existing keyword group, you use the 
add_keyword method:
+$geshi->add_keyword($key, $word);
+
+Where $key is the index of the group of keywords you want to add this keyword 
to, and $word is the word to add.
+
+This implies knowledge of the language file to know the correct index.
+Note:
+
+Keywords should contain at least two alphabetical characters (lower or upper 
case letters only). This is to enable GeSHi to work much faster by not 
bothering to try to detect keywords in parts of your source where there is no 
alphabetical characters.
+3.11.2: Removing a Keyword
+Top | Contents | Next | Previous
+
+Perhaps you want to remove a keyword from an existing group. Maybe you don't 
use it and want to save yourself some time. Whatever the reason, you can remove 
it using the remove_keyword method:
+$geshi->remove_keyword($key, $word);
+
+Where $key is the index of the gropu of keywords that you want to remove this 
keyword from, and $word is the word to remove.
+
+This implies knowledge of the language file to know the correct index - most 
of the time the keywords you'll want to remove will be in group 3, but this is 
not guaranteed and you should check the language file first.
+
+This function is silent - if the keyword is not in the group you specified, 
nothing awful will happen ;)
+3.11.3: Adding a Keyword Group
+Top | Contents | Next | Previous
+
+Lets say for your big project you have several main functions and classes that 
you'd like highlighted. Why not add them as their own group instead of having 
them highlighted the same way as other keywords? Then you can make them stand 
out, and people can instantly see which functions and classes are user defined 
or inbuilt. Furthermore, you could set the URL for this group to point at the 
API documentation of your project.
+
+You add a keyword group by using the add_keyword_group method:
+$geshi->add_keyword_group($key, $styles, $case_sensitive, $words);
+
+Where $key is the key that you want to use to refer to this group, $styles is 
the styles that you want to use to style this group, $case_sensitive is true or 
false depending on whether you want this group of keywords to be case sensitive 
or not and $words is an array of words (or a string) of which words to add to 
this group. For example:
+$geshi->add_keyword_group(10, 'color: #600000;', false, array('myfunc_1', 
'myfunc_2', 'myfunc_3'));
+
+Adds a keyword group referenced by index 10, of which all keywords in the 
group will be dark red, each keyword can be in any case and which contains the 
keywords "myfunc_1", "myfunc_2" and "myfunc_3".
+
+After creating such a keyword group, you may call other GeSHi methods on it, 
just as you would for any other keyword group.
+Caution:
+
+If you specify a $key for which there is already a keyword group, the old 
keyword group will be overwritten! Most language files don't use numbers larger 
than 5, so I recommend you play it safe and use a number like 10 or 42.
+3.11.4: Removing a Keyword Group
+Top | Contents | Next | Previous
+
+Perhaps you *really* need speed? Why not just remove an entire keyword group? 
GeSHi won't have to loop through each keyword checking for its existance, 
saving much time. You removing a keyword group by using the 
remove_keyword_group method:
+$geshi->remove_keyword_group($key);
+
+Where $key is the key of the group you wish to remove. This implies knowleged 
of the language file.
+3.12: Headers and Footers for Your Code
+Top | Contents | Next | Previous
+
+So you want to add some special information to the highlighted source? GeSHi 
can do that too! You can specify headers and footers for your code, style them, 
and insert information from the highlighted source into your header or footer.
+3.12.1: Keyword Substitution
+Top | Contents | Next | Previous
+
+In your header and footer, you can put special keywords that will be replaced 
with actual configuration values for this GeSHi object. The keywords you can 
use are:
+
+    * <TIME>: Is replaced by the time it took for the parse_code method - 
i.e., how long it took for your code to be highlighted. The time is returned to 
three decimal places.
+    * <LANGUAGE>: Is replaced by a nice, friendly version of the language name 
used to highlight this code.
+    * <VERSION>: The GeSHi version used to highlight the code.
+
+3.12.2: Setting Header Content
+Top | Contents | Next | Previous
+
+The header for your code is a <div>, which is inside the containing block. 
Therefore, it is affected by the method set_overall_style, and should contain 
the sort of HTML that belongs in a <div>. You may use any HTML you like, and 
format it as an HTML document. You should use valid HTML - convert to entities 
any quotemarks or angle brackets you want displayed. You set the header content 
using the method set_header_content:
+$geshi->set_header_content($content);
+
+Where $content is the HTML you want to use for the header.
+3.12.3: Setting Footer Content
+Top | Contents | Next | Previous
+
+The footer for your code is a <div>, which is inside the containing block. 
Therefore, it is affected by the method set_overall_style, and should contain 
the sort of HTML that belongs in a <div>. You may use any HTML you like, and 
format it as an HTML document. You should use valid HTML - convert to entities 
any quotemarks or angle brackets you want displayed. You set the footer content 
using the method set_footer_content:
+$geshi->set_footer_content($content);
+
+Where $content is the HTML you want to use for the footer.
+3.12.4: Styling Header Content
+Top | Contents | Next | Previous
+
+You can apply styles to the header content you have set with the 
set_header_content_style:
+$geshi->set_header_content_style($styles);
+
+Where $styles is the stylesheet declarations you want to use to style the 
header content.
+3.12.5: Styling Footer Content
+Top | Contents | Next | Previous
+
+You can apply styles to the footer content you have set with the 
set_footer_content_style:
+$geshi->set_footer_content_style($styles);
+
+Where $styles is the stylesheet declarations you want to use to style the 
footer content.
+3.13: Keyword URLs
+Top | Contents | Next | Previous
+
+As of version 1.0.2, GeSHi allows you to specify a URL for keyword groups. 
This URL is used by GeSHi to convert the keywords in that group into URLs to 
appropriate documentation. And using add_keyword_group you can add functions 
and classes from your own projects and use the URL functionality to provide a 
link to your own API documentation.
+3.13.1: Setting a URL for a Keyword Group
+Top | Contents | Next | Previous
+
+To set the URL to be used for a keyword group, you use the 
set_url_for_keyword_group method:
+$geshi->set_url_for_keyword_group($group, $url);
+
+Where $group is the keyword group you want to assign the URL for, and $url is 
the URL for this group of keywords.
+
+You may be wondering how to make each keyword in the group point to the 
correct URL. You do this by putting {FNAME} in the URL at the correct place. 
For example, PHP makes it easy by linking www.php.net/function-name to the 
documentation for that function, so the URL used is http://www.php.net/{FNAME}.
+
+Of course, when you get to a language like Java, that puts its class 
documentation in related folders, it gets a little trickier to work out an 
appropriate URL (see the Java language file!). I hope to provide some kind of 
redirection service at the GeSHi website in the future.
+3.13.2: Disabling a URL for a Keyword Group
+Top | Contents | Next | Previous
+
+It's easy to disable a URL for a keyword group: Simply use the method 
set_url_for_keyword_group to pass an empty string as the URL:
+$geshi->set_url_for_keyword_group($group, '');
+3.13.3: Styling Links
+Top | Contents | Next | Previous
+
+You can also style the function links. You can style their default status, 
hovered, active and visited status. All of this is controlled by one method, 
set_link_styles:
+$geshi->set_link_styles($mode, $styles);
+
+Where $mode is one of four values:
+
+    * GESHI_LINK: The default style of the links.
+    * GESHI_HOVER: The style of the links when they have focus (the mouse is 
hovering over them).
+    * GESHI_ACTIVE: The style of the links when they are being clicked.
+    * GESHI_VISITED: The style of links that the user has already visited.
+
+And $styles is the stylesheet declarations to apply to the links.
+3.13.4: Setting the Link Target
+Top | Contents | Next | Previous
+
+Perhaps you want to set the target of link attributes, so the manual pages 
open in a new window? Use the set_link_target method:
+$geshi->set_link_target($target, $styles);
+
+Where $target is any valid (X)HTML target value - _blank or _top for example.
+3.14: Using Contextual Importance
+Top | Contents | Next | Previous
+Caution:
+
+This functionality is not only buggy, but is proving very hard to implement in 
1.1.X. Therefore, this functionality may well be removed in 1.2.0. You are 
hereby warned!
+3.15: Highlighting Special Lines "Extra"
+Top | Contents | Next | Previous
+
+An alternative (and more stable) method of highlighting code that is important 
is to use extra highlighting by line. Although you may not know what line 
numbers contain the important lines, if you do this method is a much more 
flexible way of making important lines stand out.
+3.15.1: Specifying the Lines to Highlight Extra
+Top | Contents | Next | Previous
+
+To specify which lines to highlight extra, you past an array containing the 
line numbers to highlight_lines_extra:
+$geshi->highlight_lines_extra($array);
+
+The array could be in the form array(2, 3, 4, 7, 12, 344, 4242), made from a 
DB query, generated from looking through the source for certain important 
things and working out what line those things are... however you get the line 
numbers, the array should simply be an array of integers.
+
+Here's an example, using the same source as before:
+//
+// Here we go again! This time we'll simply highlight the 8th line
+//
+$source = 'public int[][] product ( n, m )
+{
+  int [][] ans = new int[n][m];
+  for ( int i = 0; i < n; i++ )
+  {
+    for ( int j = 0; i < m; j++ )
+    {
+      ans[i][j] = i * j;
+    }
+  }
+  return ans;
+}';
+
+$geshi = new GeSHi($source, 'java');
+
+$geshi->highlight_lines_extra(array(8));
+echo $geshi->parse_code();
+
+Which produces:
+public int[][] product ( n, m )
+{
+  int [][] ans = new int[n][m];
+  for ( int i = 0; i < n; i++ )
+  {
+    for ( int j = 0; i < m; j++ )
+    {
+      ans[i][j] = i * j;
+    }
+  }
+  return ans;
+}
+
+What's more, as you can see the code on a highlighted line is still actually 
highlighted itself.
+Note:
+
+As you can see, this is a little buggy, but that is because of HTML laws (code 
elements should not contain div elements). This works just fine if you use line 
numbers.
+3.15.2: Styles for the Highlighted Lines
+Top | Contents | Next | Previous
+
+Again as with contextual importance, you're not chained to the yellow theme 
that is the default. You can use the set_highlight_lines_extra_style method:
+$geshi->set_highlight_lines_extra_style($styles);
+
+Where $styles is the stylesheet declarations that you want to apply to 
highlighted lines.
+3.16: Adding IDs to Each Line
+Top | Contents | Next | Previous
+
+Perhaps you're a javascript junkie? GeSHi provides a way to give each line an 
ID so you can access that line with javascript, or perhaps just by plain CSS 
(though if you want to access lines by CSS you should use the method in the 
previous section). To enable IDs you call the enable_ids method:
+$geshi->enable_ids($flag);
+
+Where $flag is true or not present to enable IDs, and false to disable them 
again if you need.
+
+The ID generated is in the form {overall-css-id}-{line-number}. So for 
example, if you set the overall CSS id to be "mycode", then the IDs for each 
line would by "mycode-1", "mycode-2" etc. If there is no CSS ID set, then one 
is made up in the form <tt>geshi-[4 random characters]</tt>, but this is not so 
useful for if you want to do javascript manipulation.
+3.17: Getting the Time of Styling
+Top | Contents | Next | Previous
+
+Once you've called parse_code, you can get the time it took to run the 
highlighting by calling the get_time method:
+$geshi = new GeSHi($source, $language, $path);
+
+$code = addslashes($geshi->parse_code());
+$time = $geshi->get_time();
+
+// do something with it
+mysql_query("INSERT INTO code VALUES ('$code', '$time')");
+4: Language Files
+Top | Contents | Next | Previous
+
+So now you know what features GeSHi offers, and perhaps you've even meddled 
with the source. Or perhaps you'd like a language file for language X but it 
doesn't seem to be supported? Rubbish! GeSHi will highlight anything, what do 
you think I coded this for? ^_^ You'll just have to learn how to make a 
language file yourself. And I promise it's not too hard - and if you're here 
you're in the right place!
+4.1: An Example Language File
+Top | Contents | Next | Previous
+
+Let's begin by looking at an example language file - the language file for the 
first language ever supported, PHP.
+
+<?php
+/*************************************************************************************
+ * php.php
+ * --------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.2
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * PHP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.2)
+ *  -  Added URL support
+ *  -  Added extra constants
+ * 2004/08/05 (1.0.1)
+ *  -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Make sure the last few function I may have missed
+ *   (like eval()) are included for highlighting
+ * * Split to several files - php4, php5 etc
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ 
+$language_data = array (
+       'LANG_NAME' => 'PHP',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'include', 'require', 'include_once', 'require_once',
+                       'for', 'foreach', 'as', 'if', 'elseif', 'else', 
'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+                       'return', 'break'
+                       ),
+               2 => array(
+                       'null', '__LINE__', '__FILE__',
+                       'false', '&lt;?php', '?&gt;', '&lt;?',
+                       '&lt;script language=', '&lt;/script&gt;',
+                       'true', 'var', 'default',
+                       'function', 'class', 'new',
+                       '__FUNCTION__', '__CLASS__', '__METHOD__', 
'PHP_VERSION',
+                       'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 
'PEAR_EXTENSION_DIR',
+                       'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 
'PHP_DATADIR', 'PHP_SYSCONFDIR',
+                       'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 
'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+                       'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 
'E_PARSE', 'E_NOTICE',
+                       'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 
'E_COMPILE_WARNING', 'E_USER_ERROR',
+                       'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+                       ),
+               3 => array(
+                       
'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
+                       
'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
+                       
'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
+                       
'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
+                       
'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct',
+                       
'xml_parse','xml_get_error_code','xml_get_current_line_number','xml_get_current_column_number','xml_get_current_byte_index','xml_error_string',
+                       
'wordwrap','wddx_serialize_vars','wddx_serialize_value','wddx_packet_start','wddx_packet_end','wddx_deserialize',
+                       
'wddx_add_vars','vsprintf','vprintf','virtual','version_compare','var_export',
+                       
'var_dump','utf8_encode','utf8_decode','usort','usleep','user_error',
+                       
'urlencode','urldecode','unserialize','unregister_tick_function','unpack','unlink',
+                       
'unixtojd','uniqid','umask','uksort','ucwords','ucfirst',
+                       
'uasort','trim','trigger_error','touch','token_name','token_get_all',
+                       'tmpfile','time','textdomain','tempnam','tanh','tan',
+                       
'system','syslog','symlink','substr_replace','substr_count','substr',
+                       
'strval','strtr','strtoupper','strtotime','strtolower','strtok',
+                       'strstr','strspn','strrpos','strrev','strrchr','strpos',
+                       
'strncmp','strncasecmp','strnatcmp','strnatcasecmp','strlen','stristr',
+                       
'stripslashes','stripcslashes','strip_tags','strftime','stream_wrapper_register','stream_set_write_buffer',
+                       
'stream_set_timeout','stream_set_blocking','stream_select','stream_register_wrapper','stream_get_meta_data','stream_filter_prepend',
+                       
'stream_filter_append','stream_context_set_params','stream_context_set_option','stream_context_get_options','stream_context_create','strcspn',
+                       
'strcoll','strcmp','strchr','strcasecmp','str_word_count','str_shuffle',
+                       
'str_rot13','str_replace','str_repeat','str_pad','stat','sscanf',
+                       'srand','sqrt','sql_regcase','sprintf','spliti','split',
+                       
'soundex','sort','socket_writev','socket_write','socket_strerror','socket_shutdown',
+                       
'socket_setopt','socket_set_timeout','socket_set_option','socket_set_nonblock','socket_set_blocking','socket_set_block',
+                       
'socket_sendto','socket_sendmsg','socket_send','socket_select','socket_recvmsg','socket_recvfrom',
+                       
'socket_recv','socket_readv','socket_read','socket_listen','socket_last_error','socket_iovec_set',
+                       
'socket_iovec_free','socket_iovec_fetch','socket_iovec_delete','socket_iovec_alloc','socket_iovec_add','socket_getsockname',
+                       
'socket_getpeername','socket_getopt','socket_get_status','socket_get_option','socket_create_pair','socket_create_listen',
+                       
'socket_create','socket_connect','socket_close','socket_clear_error','socket_bind','socket_accept',
+                       'sleep','sizeof','sinh','sin','similar_text','shuffle',
+                       
'show_source','shmop_write','shmop_size','shmop_read','shmop_open','shmop_delete',
+                       
'shmop_close','shm_remove_var','shm_remove','shm_put_var','shm_get_var','shm_detach',
+                       
'shm_attach','shell_exec','sha1_file','sha1','settype','setlocale',
+                       
'setcookie','set_time_limit','set_socket_blocking','set_magic_quotes_runtime','set_include_path','set_file_buffer',
+                       
'set_error_handler','session_write_close','session_unset','session_unregister','session_start','session_set_save_handler',
+                       
'session_set_cookie_params','session_save_path','session_register','session_regenerate_id','session_name','session_module_name',
+                       
'session_is_registered','session_id','session_get_cookie_params','session_encode','session_destroy','session_decode',
+                       
'session_cache_limiter','session_cache_expire','serialize','sem_remove','sem_release','sem_get',
+                       
'sem_acquire','rtrim','rsort','round','rmdir','rewinddir',
+                       
'rewind','restore_include_path','restore_error_handler','reset','rename','register_tick_function',
+                       
'register_shutdown_function','realpath','readlink','readgzfile','readfile','readdir',
+                       
'read_exif_data','rawurlencode','rawurldecode','range','rand','rad2deg',
+                       
'quotemeta','quoted_printable_decode','putenv','proc_open','proc_close','printf',
+                       
'print_r','prev','preg_split','preg_replace_callback','preg_replace','preg_quote',
+                       
'preg_match_all','preg_match','preg_grep','pow','posix_uname','posix_ttyname',
+                       
'posix_times','posix_strerror','posix_setuid','posix_setsid','posix_setpgid','posix_setgid',
+                       
'posix_seteuid','posix_setegid','posix_mkfifo','posix_kill','posix_isatty','posix_getuid',
+                       
'posix_getsid','posix_getrlimit','posix_getpwuid','posix_getpwnam','posix_getppid','posix_getpid',
+                       
'posix_getpgrp','posix_getpgid','posix_getlogin','posix_getgroups','posix_getgrnam','posix_getgrgid',
+                       
'posix_getgid','posix_geteuid','posix_getegid','posix_getcwd','posix_get_last_error','posix_errno',
+                       
'posix_ctermid','pos','popen','pi','phpversion','phpinfo',
+                       
'phpcredits','php_uname','php_sapi_name','php_logo_guid','php_ini_scanned_files','pg_update',
+                       
'pg_untrace','pg_unescape_bytea','pg_tty','pg_trace','pg_setclientencoding','pg_set_client_encoding',
+                       
'pg_send_query','pg_select','pg_result_status','pg_result_seek','pg_result_error','pg_result',
+                       
'pg_query','pg_put_line','pg_port','pg_ping','pg_pconnect','pg_options',
+                       
'pg_numrows','pg_numfields','pg_num_rows','pg_num_fields','pg_meta_data','pg_lowrite',
+                       
'pg_lounlink','pg_loreadall','pg_loread','pg_loopen','pg_loimport','pg_loexport',
+                       
'pg_locreate','pg_loclose','pg_lo_write','pg_lo_unlink','pg_lo_tell','pg_lo_seek',
+                       
'pg_lo_read_all','pg_lo_read','pg_lo_open','pg_lo_import','pg_lo_export','pg_lo_create',
+                       
'pg_lo_close','pg_last_oid','pg_last_notice','pg_last_error','pg_insert','pg_host',
+                       
'pg_getlastoid','pg_get_result','pg_get_pid','pg_get_notify','pg_freeresult','pg_free_result',
+                       
'pg_fieldtype','pg_fieldsize','pg_fieldprtlen','pg_fieldnum','pg_fieldname','pg_fieldisnull',
+                       
'pg_field_type','pg_field_size','pg_field_prtlen','pg_field_num','pg_field_name','pg_field_is_null',
+                       
'pg_fetch_row','pg_fetch_result','pg_fetch_object','pg_fetch_assoc','pg_fetch_array','pg_fetch_all',
+                       
'pg_exec','pg_escape_string','pg_escape_bytea','pg_errormessage','pg_end_copy','pg_delete',
+                       
'pg_dbname','pg_copy_to','pg_copy_from','pg_convert','pg_connection_status','pg_connection_reset',
+                       
'pg_connection_busy','pg_connect','pg_cmdtuples','pg_close','pg_clientencoding','pg_client_encoding',
+                       
'pg_cancel_query','pg_affected_rows','pfsockopen','pclose','pathinfo','passthru',
+                       
'parse_url','parse_str','parse_ini_file','pack','overload','output_reset_rewrite_vars',
+                       
'output_add_rewrite_var','ord','openssl_x509_read','openssl_x509_parse','openssl_x509_free','openssl_x509_export_to_file',
+                       
'openssl_x509_export','openssl_x509_checkpurpose','openssl_x509_check_private_key','openssl_verify','openssl_sign','openssl_seal',
+                       
'openssl_public_encrypt','openssl_public_decrypt','openssl_private_encrypt','openssl_private_decrypt','openssl_pkey_new','openssl_pkey_get_public',
+                       
'openssl_pkey_get_private','openssl_pkey_free','openssl_pkey_export_to_file','openssl_pkey_export','openssl_pkcs7_verify','openssl_pkcs7_sign',
+                       
'openssl_pkcs7_encrypt','openssl_pkcs7_decrypt','openssl_open','openssl_get_publickey','openssl_get_privatekey','openssl_free_key',
+                       
'openssl_error_string','openssl_csr_sign','openssl_csr_new','openssl_csr_export_to_file','openssl_csr_export','openlog',
+                       
'opendir','octdec','ob_start','ob_list_handlers','ob_implicit_flush','ob_iconv_handler',
+                       
'ob_gzhandler','ob_get_status','ob_get_level','ob_get_length','ob_get_flush','ob_get_contents',
+                       
'ob_get_clean','ob_flush','ob_end_flush','ob_end_clean','ob_clean','number_format',
+                       
'nl_langinfo','nl2br','ngettext','next','natsort','natcasesort',
+                       
'mysql_unbuffered_query','mysql_thread_id','mysql_tablename','mysql_table_name','mysql_stat','mysql_selectdb',
+                       
'mysql_select_db','mysql_result','mysql_real_escape_string','mysql_query','mysql_ping','mysql_pconnect',
+                       
'mysql_numrows','mysql_numfields','mysql_num_rows','mysql_num_fields','mysql_listtables','mysql_listfields',
+                       
'mysql_listdbs','mysql_list_tables','mysql_list_processes','mysql_list_fields','mysql_list_dbs','mysql_insert_id',
+                       
'mysql_info','mysql_get_server_info','mysql_get_proto_info','mysql_get_host_info','mysql_get_client_info','mysql_freeresult',
+                       
'mysql_free_result','mysql_fieldtype','mysql_fieldtable','mysql_fieldname','mysql_fieldlen','mysql_fieldflags',
+                       
'mysql_field_type','mysql_field_table','mysql_field_seek','mysql_field_name','mysql_field_len','mysql_field_flags',
+                       
'mysql_fetch_row','mysql_fetch_object','mysql_fetch_lengths','mysql_fetch_field','mysql_fetch_assoc','mysql_fetch_array',
+                       
'mysql_escape_string','mysql_error','mysql_errno','mysql_dropdb','mysql_drop_db','mysql_dbname',
+                       
'mysql_db_query','mysql_db_name','mysql_data_seek','mysql_createdb','mysql_create_db','mysql_connect',
+                       
'mysql_close','mysql_client_encoding','mysql_affected_rows','mysql','mt_srand','mt_rand',
+                       
'mt_getrandmax','move_uploaded_file','money_format','mktime','mkdir','min',
+                       
'microtime','method_exists','metaphone','memory_get_usage','md5_file','md5',
+                       
'mbsubstr','mbstrrpos','mbstrpos','mbstrlen','mbstrcut','mbsplit',
+                       
'mbregex_encoding','mberegi_replace','mberegi','mbereg_search_setpos','mbereg_search_regs','mbereg_search_pos',
+                       
'mbereg_search_init','mbereg_search_getregs','mbereg_search_getpos','mbereg_search','mbereg_replace','mbereg_match',
+                       
'mbereg','mb_substr_count','mb_substr','mb_substitute_character','mb_strwidth','mb_strtoupper',
+                       
'mb_strtolower','mb_strrpos','mb_strpos','mb_strlen','mb_strimwidth','mb_strcut',
+                       
'mb_split','mb_send_mail','mb_regex_set_options','mb_regex_encoding','mb_preferred_mime_name','mb_parse_str',
+                       
'mb_output_handler','mb_language','mb_internal_encoding','mb_http_output','mb_http_input','mb_get_info',
+                       
'mb_eregi_replace','mb_eregi','mb_ereg_search_setpos','mb_ereg_search_regs','mb_ereg_search_pos','mb_ereg_search_init',
+                       
'mb_ereg_search_getregs','mb_ereg_search_getpos','mb_ereg_search','mb_ereg_replace','mb_ereg_match','mb_ereg',
+                       
'mb_encode_numericentity','mb_encode_mimeheader','mb_detect_order','mb_detect_encoding','mb_decode_numericentity','mb_decode_mimeheader',
+                       
'mb_convert_variables','mb_convert_kana','mb_convert_encoding','mb_convert_case','max','mail',
+                       
'magic_quotes_runtime','ltrim','lstat','long2ip','log1p','log10',
+                       
'log','localtime','localeconv','linkinfo','link','levenshtein',
+                       
'lcg_value','ksort','krsort','key_exists','key','juliantojd',
+                       
'join','jewishtojd','jdtounix','jdtojulian','jdtojewish','jdtogregorian',
+                       
'jdtofrench','jdmonthname','jddayofweek','is_writeable','is_writable','is_uploaded_file',
+                       
'is_subclass_of','is_string','is_scalar','is_resource','is_real','is_readable',
+                       
'is_object','is_numeric','is_null','is_nan','is_long','is_link',
+                       
'is_integer','is_int','is_infinite','is_float','is_finite','is_file',
+                       
'is_executable','is_double','is_dir','is_callable','is_bool','is_array',
+                       
'is_a','iptcparse','iptcembed','ip2long','intval','ini_set',
+                       
'ini_restore','ini_get_all','ini_get','ini_alter','in_array','import_request_variables',
+                       
'implode','image_type_to_mime_type','ignore_user_abort','iconv_set_encoding','iconv_get_encoding','iconv',
+                       
'i18n_mime_header_encode','i18n_mime_header_decode','i18n_ja_jp_hantozen','i18n_internal_encoding','i18n_http_output','i18n_http_input',
+                       
'i18n_discover_encoding','i18n_convert','hypot','htmlspecialchars','htmlentities','html_entity_decode',
+                       
'highlight_string','highlight_file','hexdec','hebrevc','hebrev','headers_sent',
+                       
'header','gzwrite','gzuncompress','gztell','gzseek','gzrewind',
+                       
'gzread','gzputs','gzpassthru','gzopen','gzinflate','gzgetss',
+                       
'gzgets','gzgetc','gzfile','gzeof','gzencode','gzdeflate',
+                       
'gzcompress','gzclose','gregoriantojd','gmstrftime','gmmktime','gmdate',
+                       
'glob','gettype','gettimeofday','gettext','getservbyport','getservbyname',
+                       
'getrusage','getrandmax','getprotobynumber','getprotobyname','getopt','getmyuid',
+                       
'getmypid','getmyinode','getmygid','getmxrr','getlastmod','getimagesize',
+                       
'gethostbynamel','gethostbyname','gethostbyaddr','getenv','getdate','getcwd',
+                       
'getallheaders','get_resource_type','get_required_files','get_parent_class','get_object_vars','get_meta_tags',
+                       
'get_magic_quotes_runtime','get_magic_quotes_gpc','get_loaded_extensions','get_included_files','get_include_path','get_html_translation_table',
+                       
'get_extension_funcs','get_defined_vars','get_defined_functions','get_defined_constants','get_declared_classes','get_current_user',
+                       
'get_class_vars','get_class_methods','get_class','get_cfg_var','get_browser','fwrite',
+                       
'function_exists','func_num_args','func_get_args','func_get_arg','ftruncate','ftp_systype',
+                       
'ftp_ssl_connect','ftp_size','ftp_site','ftp_set_option','ftp_rmdir','ftp_rename',
+                       
'ftp_rawlist','ftp_quit','ftp_pwd','ftp_put','ftp_pasv','ftp_nlist',
+                       
'ftp_nb_put','ftp_nb_get','ftp_nb_fput','ftp_nb_fget','ftp_nb_continue','ftp_mkdir',
+                       
'ftp_mdtm','ftp_login','ftp_get_option','ftp_get','ftp_fput','ftp_fget',
+                       
'ftp_exec','ftp_delete','ftp_connect','ftp_close','ftp_chdir','ftp_cdup',
+                       'ftok','ftell','fstat','fsockopen','fseek','fscanf',
+                       
'frenchtojd','fread','fputs','fpassthru','fopen','fnmatch',
+                       'fmod','flush','floor','flock','floatval','filetype',
+                       
'filesize','filepro_rowcount','filepro_retrieve','filepro_fieldwidth','filepro_fieldtype','filepro_fieldname',
+                       
'filepro_fieldcount','filepro','fileperms','fileowner','filemtime','fileinode',
+                       
'filegroup','filectime','fileatime','file_get_contents','file_exists','file',
+                       'fgetss','fgets','fgetcsv','fgetc','fflush','feof',
+                       
'fclose','ezmlm_hash','extract','extension_loaded','expm1','explode',
+                       
'exp','exif_thumbnail','exif_tagname','exif_read_data','exif_imagetype','exec',
+                       
'escapeshellcmd','escapeshellarg','error_reporting','error_log','eregi_replace','eregi',
+                       
'ereg_replace','ereg','end','easter_days','easter_date','each',
+                       
'doubleval','dngettext','dl','diskfreespace','disk_total_space','disk_free_space',
+                       
'dirname','dir','dgettext','deg2rad','defined','define_syslog_variables',
+                       
'define','decoct','dechex','decbin','debug_zval_dump','debug_backtrace',
+                       
'deaggregate','dcngettext','dcgettext','dba_sync','dba_replace','dba_popen',
+                       
'dba_optimize','dba_open','dba_nextkey','dba_list','dba_insert','dba_handlers',
+                       
'dba_firstkey','dba_fetch','dba_exists','dba_delete','dba_close','date',
+                       
'current','ctype_xdigit','ctype_upper','ctype_space','ctype_punct','ctype_print',
+                       
'ctype_lower','ctype_graph','ctype_digit','ctype_cntrl','ctype_alpha','ctype_alnum',
+                       
'crypt','create_function','crc32','count_chars','count','cosh',
+                       
'cos','copy','convert_cyr_string','constant','connection_status','connection_aborted',
+                       
'compact','closelog','closedir','clearstatcache','class_exists','chunk_split',
+                       'chr','chown','chop','chmod','chgrp','checkdnsrr',
+                       
'checkdate','chdir','ceil','call_user_method_array','call_user_method','call_user_func_array',
+                       
'call_user_func','cal_to_jd','cal_info','cal_from_jd','cal_days_in_month','bzwrite',
+                       
'bzread','bzopen','bzflush','bzerrstr','bzerror','bzerrno',
+                       
'bzdecompress','bzcompress','bzclose','bindtextdomain','bindec','bind_textdomain_codeset',
+                       'bin2hex','bcsub','bcsqrt','bcscale','bcpow','bcmul',
+                       
'bcmod','bcdiv','bccomp','bcadd','basename','base_convert',
+                       
'base64_encode','base64_decode','atanh','atan2','atan','assert_options',
+                       'assert','asort','asinh','asin','arsort','array_walk',
+                       
'array_values','array_unshift','array_unique','array_sum','array_splice','array_slice',
+                       
'array_shift','array_search','array_reverse','array_reduce','array_rand','array_push',
+                       
'array_pop','array_pad','array_multisort','array_merge_recursive','array_merge','array_map',
+                       
'array_keys','array_key_exists','array_intersect_assoc','array_intersect','array_flip','array_filter',
+                       
'array_fill','array_diff_assoc','array_diff','array_count_values','array_chunk','array_change_key_case',
+                       
'apache_setenv','apache_response_headers','apache_request_headers','apache_note','apache_lookup_uri','apache_get_version',
+                       
'apache_child_terminate','aggregation_info','aggregate_properties_by_regexp','aggregate_properties_by_list','aggregate_properties','aggregate_methods_by_regexp',
+                       
'aggregate_methods_by_list','aggregate_methods','aggregate','addslashes','addcslashes','acosh',
+                       'acos','abs','_','echo', 'print', 'global', 'static', 
'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', 
'/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 'http://www.php.net/{FNAME}',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTER' => '-&gt;',
+       'REGEXPS' => array(
+               0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<?php' => '?>'
+                       ),
+               1 => array(
+                       '<?' => '?>'
+                       ),
+               2 => array(
+                       '<%' => '%>'
+                       ),
+               3 => array(
+                       '<script language="php">' => '</script>'
+                       )
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               3 => true
+               )
+);
+ 
+?>
+
+If you're remotely familiar with PHP (or even if you're not), you can see that 
all that a language file consists of is a glorified variable assignment. Easy! 
All a language file does is assign a variable $language_data. Though still, 
there's a lot of indices to that array... but this section is here to break 
each index down and explain it to you.
+4.2: Language File Conventions
+Top | Contents | Next | Previous
+
+There are several conventions that are used in language files. For ease of use 
and readability, your language files should obey the following rules:
+
+    * Indentation is in tabs, not spaces: Use tabs! There's no excuse for 
using spaces in this day and age, where almost every good editor allows you to 
change the tab width. Tabs also take up less space, and ensure proper 
alignment. When you indent, use tabs, and if your editor converts tabs to 
spaces, tell it not to.
+    * Strings are in single quotes: Every string in a language file should be 
in single quotes ('), unless you are specifying a single quote as a quotemark 
or escape character, in which case they can be in double quotes for 
readability; or if you are specifying a REGEXP (see below)
+    * Large arrays are multi-lined: An array with more than three or four 
values should be broken into multiple lines. In any case, lines should not be 
wider than a full-screen window (about 100 chars per line max).
+    * Ending brackets for multi-lined arrays on a new line: Also with a comma 
after them, unless the array is the last one in a parent array. See the PHP 
language file for examples of where to use commas.
+    * Use GeSHi's constants: For capatalisation, regular expressions etc. use 
the GeSHi constants, not their actual values.
+
+There are more notes on each convention where it may appear in the language 
file sections below.
+4.3: Language File Sections
+Top | Contents | Next | Previous
+
+This section will look at all the sections of a language file, and how they 
relate to the final highlighting result.
+4.3.1: The Header
+Top | Contents | Next | Previous
+
+The header of a language file is the first lines with the big comment and the 
start of the variable $language_data:
+
+<?php
+/*************************************************************************************
+ * <name-of-language-file.php>
+ * ---------------------------------
+ * Author: <name> (<e-mail address>)
+ * Copyright: (c) 2004 <name> (<website URL>)
+ * Release Version: 1.0.0
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: <date started>
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * <name-of-language> language file for GeSHi.
+ *
+ * <any-comments...>
+ *
+ * CHANGES
+ * -------
+ * <date-of-release> (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated <date-of-release>)
+ * -------------------------
+ * <things-to-do>
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+
+The parts in angle brackets are the parts that you change for your language 
file. Everything else *must* remain the same!
+
+Here are the parts you should change:
+
+    * <name-of-language-file.php> - This should become the name of your 
language file. Language file names are in lower case and contain only 
alphanumeric characters, dashes and underscores. Language files end with .php 
(which you should put with the name of your language file, eg language.php)
+    * <name> - Your name, or alias.
+    * <e-mail address> - Your e-mail address. If you want your language file 
included with GeSHi you must include an e-mail address that refers to an inbox 
controlled by you.
+    * <website> - A URL of a website of yours (perhaps to a page that deals 
with your contribution to GeSHi, or your home page/blog)
+    * <date-started> - The date you started working on the language file. If 
you can't remember, guestimate.
+    * <name-of-language> - The name of the language you made this language 
file for (probably similar to the language file name).
+    * <any-comments> - Any comments you have to make about this language file, 
perhaps on where you got the keywords for, what dialect of the language this 
language file is for etc etc. If you don't have any comments, remove the space 
for them.
+    * <date-of-release - The date you released the language file to the 
public. If you simply send it to me for inclusion in a new GeSHi and don't 
release it, leave this blank, and I'll replace it with the date of the GeSHi 
release that it is first added to.
+
+Everything should remain the same, including $Revision: 1.1 $ and $Date: 
2006/09/25 08:46:28 $ (I know these may look funny but they have their purpose 
for those of you who don't know about CVS).
+
+Also: I'm not sure about the copyright on a new language file. I'm not a 
lawyer, could someone contact me about whether the copyright for a new language 
file should be exclusivly the authors, or joint with me (if included in a GeSHi 
release)?
+4.3.2: The First Indices
+Top | Contents | Next | Previous
+
+Here is an example from the php language file of the first indices:
+
+       'LANG_NAME' => 'PHP',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+
+The first indices are the first few lines of a language file before the 
KEYWORDS index. These indices specify:
+
+    * 'LANG_NAME': The name of the language. This name should be a 
human-readable version of the name (e.g. HTML 4 (transitional) instead of 
html4trans)
+    * 'COMMENT_SINGLE': An array of single-line comments in your language, 
indexed by integers starting from 1. A single line comment is a comment that 
starts at the marker and goes until the end of the line. These comments may be 
any length > 0, and since they can be styled individually, can be used for 
other things than comments (for example the Java language file defines "import" 
as a single line comment). If you are making a language that uses a ' 
(apostrophe) as a comment (or in the comment marker somewhere), use double 
quotes. e.g.: "'"
+    * 'COMMENT_MULTI': Used to specify multiline comments, an array in the 
form 'OPEN' => 'CLOSE'. Unfortunately, all of these comments you add here will 
be styled the same way (an area of improvement for GeSHi 1.2.X). These comment 
markers may be any length > 0.
+    * 'CASE_KEYWORDS': Used to set whether the case of keywords should be 
changed automatically as they are found. For example, in an SQL or BASIC 
dialect you may want all keywords to be upper case. The accepted values for 
this are:
+          o GESHI_CAPS_UPPER: Convert the case of all keywords to upper case.
+          o GESHI_CAPS_LOWER: Convert the case of all keywords to lower case.
+          o GESHI_CAPS_NO_CHANGE: Don't change the case of any keyword.
+    * 'QUOTEMARKS': Specifies the characters that mark the beginning and end 
of a string. This is another example where if your language includes the ' 
string delimiter you should use double quotes around it.
+    * 'ESCAPE_CHAR': Specifies the escape character used in all strings. If 
your language does not have an escape character then make this the empty string 
(''). This is not an array! If found, any character after an escape character 
and the escape character itself will be highlighted differently, and the 
character after the escape character cannot end a string.
+
+4.3.3: Keywords
+Top | Contents | Next | Previous
+
+Keywords will make up the bulk of a language file. In this part you add 
keywords for your language, including inbuilt functions, data types, predefined 
constants etc etc.
+
+Here's a (shortened) example from the php language file:
+
+       'KEYWORDS' => array(
+               1 => array(
+                       'include', 'require', 'include_once', 'require_once',
+                       'for', 'foreach', 'as', 'if', 'elseif', 'else', 
'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+                       'return', 'break'
+                       ),
+               2 => array(
+                       'null', '__LINE__', '__FILE__',
+                       'false', '<?php', '?>', '<?',
+                       '<script language=', '</script>',
+                       'true', 'var', 'default',
+                       'function', 'class', 'new',
+                       '__FUNCTION__', '__CLASS__', '__METHOD__', 
'PHP_VERSION',
+                       'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 
'PEAR_EXTENSION_DIR',
+                       'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 
'PHP_DATADIR', 'PHP_SYSCONFDIR',
+                       'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 
'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+                       'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 
'E_PARSE', 'E_NOTICE',
+                       'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 
'E_COMPILE_WARNING', 'E_USER_ERROR',
+                       'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+                       ),
+               3 => array(
+                       
'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
+                       
'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
+                       
'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
+                       
'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
+                       
'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct'
+                       )
+               ),
+
+You can see that the index 'KEYWORDS' refers to an array of arrays, indexed by 
positive integers. In each array, there are some keywords (in the actual php 
language file there is in fact many more keywords in the array indexed by 3). 
Here are some points to note about these keywords:
+
+    * Indexed by positive integers: Use nothing else! I may change this in 
1.2.X, but for the 1.0.X series, use positive integers only.
+    * Keywords sorted in reverse: Keywords *should* be sorted in reverse 
order. I know that many of the language files I've made do not follow this 
rule, but that's because I made the files before I discovered the following 
issue with GeSHi: If you have two keywords, as and ascfor example, then when 
GeSHi encounters the "as" keyword it will be highlighted even if the "as" is 
part of "asc". I would get GeSHi to reverse-sort keyword arrays, but there's no 
harm in you doing this yourself and saving some processing time. At the least 
(and in fact this is sufficient) you should swap any keywords you come across 
that would be caught by this issue.
+    * Keywords are case sensitive (sometimes): If your language is 
case-sensitive, the correct casing of the keywords is defined as the case of 
the keywords in these keyword arrays. If you check the java language file you 
will see that everything is in exact casing. So if any of these keyword arrays 
are case sensitive, put the keywords in as their correct case! (note that which 
groups are case sensitive and which are not is configurable, see later on)
+    * Keywords must be in htmlentities() form: All keywords should be written 
as if they had been run through the php function htmlentities(). E.g, the 
keyword is &lt;foo&gt;, not <foo>
+    * Don't use keywords to highlight symbols: Just don't. It doesn't work, 
and there will be seperate support for symbols later.
+    * Markup Languages are special cases: Check the html4strict language file 
for an example: keywords have to be specified twice for opening tags and twice 
for each closing tag.
+
+4.3.4: Symbols and Case Sensitivity
+Top | Contents | Next | Previous
+
+So you've put all the keywords for your language in? Now for a breather before 
we style them :). Symbols define what symbols your language uses, these are 
things like colons, brackets/braces, and other such general punctuation (it's 
important to note that in the 1.0.X series these will not be used), and case 
sensitivity alludes to the previous section: here you can set which keyword 
groups are case sensitive.
+
+Here's an example:
+
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', 
'/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+
+    * 'SYMBOLS': An array of the symbols used in your language. Please note 
that in 1.0.X these are not used. Hopefully they will be used in 1.2.X.
+    * 'CASE_SENSITIVE': Note the GESHI_COMMENTS! This is used to set whether 
comments are case sensitive or not (for example, BASIC has the REM statement 
which while not being case sensitive is still alphanumeric, and as in the 
example given before about the Java language file using "import" as a single 
line comment, this can be useful sometimes. true if comments are case 
sensitive, false otherwise. All of the other indices correspond to indices in 
the 'KEYWORDS' section (see above).
+
+4.3.5: Styles for your Language File
+Top | Contents | Next | Previous
+
+This is the fun part! Here you get to choose the colours, fonts, backgrounds 
and anything else you'd like for your language file.
+
+Here's an example:
+
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),
+
+Note that all style rules should end with a semi-colon! This is important: 
GeSHi may add extra rules to the rules you specify (and will do so if a user 
tries to change your styles on the fly), so the last semi-colon in any 
stylesheet rule is important.
+
+All strings here should contain valid stylesheet declarations (it's also find 
to have the empty string).
+
+    * 'KEYWORDS': This is an array, from keyword index to style. The index you 
use is the index you used in the keywords section to specify the keywords 
belonging to that group.
+    * 'COMMENTS': This is an array, from single-line comment index to style 
for that index. The index 'MULTI' is used for multiline comments (and cannot be 
an array)
+    * 'ESCAPE_CHAR' down to 'REGEXPS': These are arrays with only one index: 
0. You cannot add other indices to these arrays.
+    * 'SCRIPT': For languages that use script delimiters, this is where you 
can style each block of script. For example, HTML and XML have blocks that 
begin with < and end with > (i.e. tags) and blocks that begin with & and end 
with ; (i.e. character entities), and you can set a style to apply to each 
whole block. You specify the delimiters for the blocks below. Note that many 
languages will not need this feature.
+
+4.3.6: URLs for Functions
+Top | Contents | Next | Previous
+
+This section lets you specify a url to visit for each keyword group. Useful 
for pointing functions at their online manual entries.
+
+Here is an example:
+
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 'http://www.php.net/{FNAME}',
+               4 => ''
+               ),
+
+The indices of this array correspond to the keyword groups you specified in 
the keywords section. The string {FNAME} marks where the name of the function 
is substituted in. So for the example above, if the keyword being highlighted 
is "echo", then the keyword will be a URL pointing to http://www.php.net/echo. 
Because some languages (Java!) don't keep a uniform URL for functions/classes, 
you may have trouble in creating a URL for that language (though look in the 
java language file for a novel solution to it's problem)
+4.3.7: Object Orientation Support
+Top | Contents | Next | Previous
+
+Now we're reaching the most little-used section of a language file, which 
includes such goodies as object orientation support and context support. GeSHi 
can highlight methods and data fields of objects easily, all you need to do is 
to tell it to do so and what the "splitter" is between object/method etc.
+
+Here's an example:
+
+       'OOLANG' => true,
+       'OBJECT_SPLITTER' => '->',
+
+If your language has object orientation, the value of 'OOLANG' is true, 
otherwise it is false. If it is object orientated, in the 'OBJECT_SPLITTER' 
value you put the htmlentities() version of the "splitter" between objects and 
methods/fields. If it is not, then make this the empty string.
+4.3.8: Using Regular Expressions
+Top | Contents | Next | Previous
+
+Regular expressions are a good way to catch any other lexic that fits certain 
rules but can't be listed as a keyword. A good example is variables in PHP: 
variables always start with either one or two "$" signs, then alphanumeric 
characters (a simplification). This is easy to catch with regular expressions.
+
+And new to version 1.0.2, there is an advanced way of using regular 
expressions to catch certain things but highlight only part of those things. 
This is particularly useful for languages like XML.
+Caution:
+
+Regular expressions use the PCRE syntax (perl-style), not the ereg() style!
+
+Here is an example (this time the PHP file merged with the XML file):
+
+               0 => array(
+                       GESHI_SEARCH => '(((xml:)?[a-z\-]+))(=)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '\\4'
+                       ),
+               1 => array(
+                       GESHI_SEARCH => '(</?[a-z0-9]*(>)?)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+               2 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+
+As you can see there are two formats. One is the "simple" format used in GeSHi 
< 1.0.2, and the other is a more advanced syntax. Firstly, the simple syntax:
+
+    * May be in double quotes: To make it easier for those who always place 
their regular expressions in double quotes, you may place any regular 
expression here in double quotes if you wish.
+    * Don't use curly brackets where possible: If you want to use curly 
brackets (()) then by all means give it a try, but I'm not sure whether under 
some circumstances GeSHi may throw a wobbly. You have been warned! If you want 
to use brackets, it would be better to use the advanced syntax.
+    * Don't use the "everything" regex: (That's the .*? regex). Use advanced 
syntax instead.
+
+And now for advanced syntax, which gives you much more control over exactly 
what is highlighted:
+
+    * GESHI_SEARCH: This element specifies the regular expression to search 
for. If you plan to capture the output, use brackets (()). See how in the first 
example above, most of the regular expression is in one set of brackets (with 
the equals sign in other brackets). You should make sure that the part of the 
regular expression that is supposed to match what is highlighted is in brackets.
+    * GESHI_REPLACE: This is what the stuff matched by the regular expression 
will be replaced with. If you've grouped the stuff you want highlighted into 
brackets in the GESHI_SEARCH element, then you can use \\number to match that 
group, where number is a number corresponding to how many open brackets are 
between the open bracket of the group you want highlighted and the start of the 
GESHI_SEARCH string + 1. This may sound confusing, and it probably is, but if 
you're familiar with how PHP's regular expressions work you should understand. 
In the example above, the opening bracket for the stuff we want highlighted is 
the very first bracket in the string, so the number of brackets before that 
bracket and the start of the string is 0. So we add 1 and get our replacement 
string of \\1 (whew!).
+       
+      If you didn't understand a word of that, make sure that there are 
brackets around the string in GESHI_SEARCH and use \\1 for GESHI_REPLACE ;)
+    * GESHI_MODIFIERS: Specify modifiers for your regular expression. If your 
regular expression includes the everything matcher (.*?), then your modifiers 
should include "s" and "i" (e.g. use 'si' for this).
+    * GESHI_BEFORE:Specifies a bracket group that should appear before the 
highlighted match (this bracketed group will not be highlighted). Use this if 
you had to match what you wanted by matching part of your regexp string to 
something before what you wanted to highlight, and you don't want that part to 
disappear in the highlighted result.
+    * GESHI_AFTER:Specifies a bracket group that should appear after the 
highlighted match (this bracketed group will not be highlighted). Use this if 
you had to match what you wanted by matching part of your regexp string to 
something after what you wanted to highlight, and you don't want that part to 
disappear in the highlighted result.
+
+Is that totally confusing? Here's the test for if you're an android or not: If 
you found that perfectly understandable then you're an android ;). Here's a 
better example:
+
+Let's say that I'm making a language, and variables in this language always 
start with a dollar sign ($), are always written in lowercase letters and 
always end with an ampersand (&). eg:
+$foo& = 'bar'
+
+I want to highlight only the text between the $ and the &. How do I do that? 
With simple regular expressions I can't, but with advanced, it's relatively 
easy:
+
+               1 => array(
+                       GESHI_SEARCH => '(\$)([a-z]+)(&)',   // search for a 
dollar sign, then one or more of the characters a-z, then an ampersand
+                       GESHI_REPLACE => '\\2',                  // we wanna 
highlight the characters, which are in the second bracketed group
+                       GESHI_MODIFIERS => '',                   // no 
modifiers, since we're not matching the "anything" regex
+                       GESHI_BEFORE => '\\1',                   // before the 
highlighted characters should be the first bracketed group (always a dollar 
sign in this example)
+                       GESHI_AFTER => '\\3'                     // after the 
highlighted characters should be the third bracketed group (always an ampersand 
in this example)
+                       ),
+
+So if someone tried to highlight using my language, all cases of $foo& would 
turn into:
+$<span style="color: blue;">foo</span>&
+
+(which would of course be viewed in a browser to get something like $foo&)
+4.3.9: Contextual Highlighting and Strict Mode
+Top | Contents | Next | Previous
+
+For languages like HTML, it's good if we can highlight a tag (like <a> for 
example). But how do we stop every single "a" in the source getting 
highlighted? What about for attributes? If I've got the word "colspan" in my 
text I don't want that highlighted! So how do you tell GeSHi not to highlight 
in that case? You do it with "Strict Blocks".
+
+Here is an example:
+
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<?php' => '?>'
+                       ),
+               1 => array(
+                       '<?' => '?>'
+                       ),
+               2 => array(
+                       '<%' => '%>'
+                       ),
+               3 => array(
+                       '<script language="php">' => '</script>'
+                       )
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               3 => true
+               )
+
+What is strict mode? Strict mode says that highlighting only occurs inside the 
blocks you specify. You can see from the example above that highlighting will 
only occur if the source is inside <?php ... ?> (though note the GESHI_MAYBE!). 
Here are some points about strict highlighting:
+
+    * 'STRICT_MODE_APPLIES': This takes three values (all constants):
+          o GESHI_ALWAYS: Strict mode always applies for all of the blocks you 
specify. Users of your language file cannot turn strict mode off. This should 
be used for markup languages.
+          o GESHI_NEVER: Strict mode is never used. Users of your language 
file cannot turn strict mode on. Use this value if there is no such thing as a 
block of code that would not be highlighted in your language (most languages, 
like C, Java etc. use this because anything in a C file should be highlighted).
+          o GESHI_MAYBE: Strict mode *sometimes* applies. It defaults to 
"off". Users can turn strict mode on if they please. If strict mode is off then 
everything in the source will be highlighted, even things outside the strict 
block markers. If strict mode is on the nothing outside strict block markers 
will be highlighted.
+    * SCRIPT_DELIMITERS: This is an array of script delimiters, in the format 
of the above. The indices are use in the 'SCRIPT' part of the styles section 
for highlighting everything in a strict block in a certain way. For example, 
you could set up your language file to make the background yellow of any code 
inside a strict block this way. The delimiters are in the form 'OPEN' => 
'CLOSE'. Delimiters can be of any length > 0. Delimiters are not formatted as 
if they were run through htmlentities()!
+    * 'HIGHLIGHT_STRICT_BLOCK': specifies whether any highlighting should go 
on inside each block. Most of the time this should be true, but for example, in 
the XML language file highlighting is turned off for blocks beginning with 
<!DOCTYPE and ending with >. However, you can still style the overall block 
using the method described above, and the XML language file does just that.
+
+Note:
+
+The delimiters should be in reverse alphabetical order. Note that in the above 
example, <?php comes before <?.
+4.3.10: Tidying Up
+Top | Contents | Next | Previous
+
+All language files should end with:
+
+);
+
+?>
+
+5: Method/Constant Reference
+Top | Contents | Next | Previous
+
+I'm afraid I have been lying for a little while about this now! Since 1.0.7 I 
have been including a phpdoc API for the sourcecode in the api directory, but 
have forgot to update the documentation! However, it is available, and may 
assist you in coding, especially for plugin coders.
+
+That's all, folks!
+
+I've improved the documentation greatly from version 1.0.1, but there may 
still be problems with it, or it may still be confusing for you. Or perhaps I 
was just plain wrong about one point! If so, contact me and I'll do my best to 
sort it out.
+
+In case you were wondering, I've finished development of the 1.0.X thread of 
GeSHi. The only releases I'll make in this thread will be of the bug-fix/add 
language files type. In particular, version 1.0.2 was a "concept" release - 
testing how far I could take the highlighting idea (as well as ideas from 
others).
+
+I'm planning a code rewrite for 1.2.X, which will be based on a new engine - a 
"psuedo-tokenizer" engine. Hopefully it will massively reduce the server load 
and time taken (by almost eliminating regexps), while providing superior 
highlighting. But fear not! The interface and method names should all remain 
the same ^_^ (though I can't say the same for language files!)
+
+And finally, a couple of people have been asking me: how did you generate that 
documentation? The amazing answer is: my brain. And yes, it took a long time, 
and I don't reccommend doing it this way. And yes, you can borrow the styles if 
you like, though flick me an e-mail if you do.
+
+Anyway, enough blather from me. Get GeSHi working for you already! :D
+
+Nigel McNie
address@hidden
+http://qbnz.com/highlighter/
+

Index: geshi/actionscript.php
===================================================================
RCS file: geshi/actionscript.php
diff -N geshi/actionscript.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/actionscript.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,199 @@
+<?php
+/*************************************************************************************
+ * actionscript.php
+ * ----------------
+ * Author: Steffen Krause (address@hidden)
+ * Copyright: (c) 2004 Steffen Krause, Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Actionscript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'ActionScript',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       '#include', 'for', 'foreach', 'if', 'elseif', 'else', 
'while', 'do', 'dowhile',
+                       'endwhile', 'endif', 'switch', 'case', 'endswitch', 
'return', 'break', 'continue', 'in'
+                       ),
+               2 => array(
+                       'null', 'false', 'true', 'var',
+                       'default',      'function', 'class',
+                       'new', '_global'
+                       ),
+               3 => array(
+                       '#endinitclip', '#initclip', '__proto__', '_accProps', 
'_alpha', '_currentframe',
+                       '_droptarget', '_focusrect', '_framesloaded', 
'_height', '_highquality', '_lockroot',
+                       '_name', '_parent', '_quality', '_root', '_rotation', 
'_soundbuftime', '_target', '_totalframes',
+                       '_url', '_visible', '_width', '_x', '_xmouse', 
'_xscale', '_y', '_ymouse', '_yscale', 'abs',
+                       'Accessibility', 'acos', 'activityLevel', 'add', 
'addListener', 'addPage', 'addProperty',
+                       'addRequestHeader', 'align', 'allowDomain', 
'allowInsecureDomain', 'and', 'appendChild',
+                       'apply', 'Arguments', 'Array', 'asfunction', 'asin', 
'atan', 'atan2', 'attachAudio', 'attachMovie',
+                       'attachSound', 'attachVideo', 'attributes', 'autosize', 
'avHardwareDisable', 'background',
+                       'backgroundColor', 'BACKSPACE', 'bandwidth', 
'beginFill', 'beginGradientFill', 'blockIndent',
+                       'bold', 'Boolean', 'border', 'borderColor', 
'bottomScroll', 'bufferLength', 'bufferTime',
+                       'builtInItems', 'bullet', 'Button', 'bytesLoaded', 
'bytesTotal', 'call', 'callee', 'caller',
+                       'Camera', 'capabilities', 'CAPSLOCK', 'caption', 
'catch', 'ceil', 'charAt', 'charCodeAt',
+                       'childNodes', 'chr', 'clear', 'clearInterval', 
'cloneNode', 'close', 'Color', 'concat',
+                       'connect', 'condenseWhite', 'constructor', 
'contentType', 'ContextMenu', 'ContextMenuItem',
+                       'CONTROL', 'copy', 'cos', 'createElement', 
'createEmptyMovieClip', 'createTextField',
+                       'createTextNode', 'currentFps', 'curveTo', 
'CustomActions', 'customItems', 'data', 'Date',
+                       'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 
'domain', 'DOWN',
+                       'duplicateMovieClip', 'duration', 'dynamic', 'E', 
'embedFonts', 'enabled',
+                       'END', 'endFill', 'ENTER', 'eq', 'Error', 
'ESCAPE(Konstante)', 'escape(Funktion)', 'eval',
+                       'exactSettings', 'exp', 'extends', 'finally', 
'findText', 'firstChild', 'floor',
+                       'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 
'fscommand',
+                       'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 
'getBounds', 'getBytesLoaded', 'getBytesTotal',
+                       'getCaretIndex', 'getCode', 'getCount', 'getDate', 
'getDay', 'getDepth', 'getEndIndex', 'getFocus',
+                       'getFontList', 'getFullYear', 'getHours', 
'getInstanceAtDepth', 'getLocal', 'getMilliseconds',
+                       'getMinutes', 'getMonth', 'getNewTextFormat', 
'getNextHighestDepth', 'getPan', 'getProgress',
+                       'getProperty', 'getRGB', 'getSeconds', 'getSelected', 
'getSelectedText', 'getSize', 'getStyle',
+                       'getStyleNames', 'getSWFVersion', 'getText', 
'getTextExtent', 'getTextFormat', 'getTextSnapshot',
+                       'getTime', 'getTimer', 'getTimezoneOffset', 
'getTransform', 'getURL', 'getUTCDate', 'getUTCDay',
+                       'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 
'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',
+                       'getVersion', 'getVolume', 'getYear', 'globalToLocal', 
'goto', 'gotoAndPlay', 'gotoAndStop',
+                       'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 
'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3',
+                       'hasPrinting', 'hasScreenBroadcast', 
'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo',
+                       'hasVideoEncoder', 'height', 'hide', 
'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos',
+                       'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 
'ifFrameLoaded', 'ignoreWhite', 'implements',
+                       'import', 'indent', 'index', 'indexOf', 'Infinity', 
'-Infinity', 'INSERT', 'insertBefore', 'install',
+                       'instanceof', 'int', 'interface', 'isActive', 
'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled',
+                       'italic', 'join', 'Key', 'language', 'lastChild', 
'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin',
+                       'length', 'level', 'lineStyle', 'lineTo', 'list', 
'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie',
+                       'loadMovieNum', 'loadSound', 'loadVariables', 
'loadVariablesNum', 'LoadVars', 'LocalConnection',
+                       'localFileReadDisable', 'localToGlobal', 'log', 
'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max',
+                       'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 
'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu',
+                       'message', 'Microphone', 'min', 'MIN_VALUE', 
'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse',
+                       'mouseWheelEnabled', 'moveTo', 'Movieclip', 
'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN',
+                       'ne', 'NEGATIVE_INFINITY', 'NetConnection', 
'NetStream', 'newline', 'nextFrame',
+                       'nextScene', 'nextSibling', 'nodeName', 'nodeType', 
'nodeValue', 'not', 'Number', 'Object',
+                       'on', 'onActivity', 'onChanged', 'onClipEvent', 
'onClose', 'onConnect', 'onData', 'onDragOut',
+                       'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 
'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete',
+                       'onLoadError', 'onLoadInit', 'onLoadProgress', 
'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp',
+                       'onMouseWheel', 'onPress', 'onRelease', 
'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver',
+                       'onScroller', 'onSelect', 'onSetFocus', 
'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML',
+                       'or(logischesOR)', 'ord', 'os', 'parentNode', 
'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password',
+                       'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 
'play', 'playerType', 'pop', 'position',
+                       'POSITIVE_INFINITY', 'pow', 'prevFrame', 
'previousSibling', 'prevScene', 'print', 'printAsBitmap',
+                       'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 
'prototype', 'public', 'push', 'quality',
+                       'random', 'rate', 'registerClass', 'removeListener', 
'removeMovieClip', 'removeNode', 'removeTextField',
+                       'replaceSel', 'replaceText', 'resolutionX', 
'resolutionY', 'restrict', 'reverse', 'RIGHT',
+                       'rightMargin', 'round', 'scaleMode', 'screenColor', 
'screenDPI', 'screenResolutionX', 'screenResolutionY',
+                       'scroll', 'seek', 'selectable', 'Selection', 'send', 
'sendAndLoad', 'separatorBefore', 'serverString',
+                       'set', 'setvariable', 'setBufferTime', 'setClipboard', 
'setDate', 'setFocus', 'setFullYear', 'setGain',
+                       'setHours', 'setInterval', 'setMask', 
'setMilliseconds', 'setMinutes', 'setMode', 'setMonth',
+                       'setMotionLevel', 'setNewTextFormat', 'setPan', 
'setProperty', 'setQuality', 'setRate', 'setRGB',
+                       'setSeconds', 'setSelectColor', 'setSelected', 
'setSelection', 'setSilenceLevel', 'setStyle',
+                       'setTextFormat', 'setTime', 'setTransform', 
'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear',
+                       'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 
'setUTCMonth', 'setUTCSeconds', 'setVolume',
+                       'setYear', 'SharedObject', 'SHIFT(Konstante)', 
'shift(Methode)', 'show', 'showMenu', 'showSettings',
+                       'silenceLevel', 'silenceTimeout', 'sin', 'size', 
'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE',
+                       'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 
'start', 'startDrag', 'static', 'status', 'stop',
+                       'stopAllSounds', 'stopDrag', 'String', 
'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr',
+                       'substring', 'super', 'swapDepths', 'System', 'TAB', 
'tabChildren', 'tabEnabled', 'tabIndex',
+                       'tabStops', 'tan', 'target', 'targetPath', 
'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat',
+                       'textHeight', 'TextSnapshot', 'textWidth', 'this', 
'throw', 'time', 'toggleHighQuality', 'toLowerCase',
+                       'toString', 'toUpperCase', 'trace', 'trackAsMenu', 
'try', 'type', 'typeof', 'undefined',
+                       'underline', 'unescape', 'uninstall', 'unloadClip', 
'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch',
+                       'UP', 'updateAfterEvent', 'updateProperties', 'url', 
'useCodePage', 'useEchoSuppression', 'useHandCursor',
+                       'UTC', 'valueOf', 'variable', 'version', 'Video', 
'visible', 'void', 'watch', 'width',
+                       'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 
'XMLSocket'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', 
'/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #0066CC;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(),
+       'HIGHLIGHT_STRICT_BLOCK' => array()
+);
+
+?>

Index: geshi/ada.php
===================================================================
RCS file: geshi/ada.php
diff -N geshi/ada.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/ada.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,135 @@
+<?php
+/*************************************************************************************
+ * ada.php
+ * -------
+ * Author: Tux (address@hidden)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/29
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Ada language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Removed apostrophe as string delimiter
+ *   -  Added URL support
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Ada',
+       'COMMENT_SINGLE' => array(1 => '--'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'begin', 'declare', 'do', 'else', 'elsif', 'exception', 
'for', 'if',
+                       'is', 'loop', 'while', 'then', 'is', 'end', 'select', 
'case', 'while',  'until',
+                       'goto', 'return'
+                       ),
+               2 => array(
+                       'abs', 'and', 'mod', 'not', 'or', 'rem', 'xor'
+                       ),
+               3 => array(
+                       'abort', 'abstract', 'accept', 'access', 'aliased', 
'all', 'array', 'at', 'body',
+                       'constant', 'delay', 'delta', 'digits', 'entry', 'exit',
+                       'function', 'generic', 'in', 'limited', 'new', 'null', 
'of', 'others', 'out', 'package', 'pragma',
+                       'private', 'procedure', 'protected', 'raise', 'range', 
'record', 'renames', 'requeue', 'reverse',
+                       'separate', 'subtype', 'tagged', 'task', 'terminate', 
'type', 'use', 'when', 'with'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #00007f;',
+                       2 => 'color: #0000ff;',
+                       3 => 'color: #46aa03; font-weight:bold;',
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #adadad; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #7f007f;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #202020;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/apache.php
===================================================================
RCS file: geshi/apache.php
diff -N geshi/apache.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/apache.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,173 @@
+<?php
+/*************************************************************************************
+ * apache.php
+ * ----------
+ * Author: Tux (address@hidden)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/29/07
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Apache language file for GeSHi.
+ * Words are from SciTe configuration file
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/07/29)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Apache Log',
+       'COMMENT_SINGLE' => array(1 => '#'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               /*keywords*/
+               1 => array(
+                       'accessconfig','accessfilename','action','addalt',
+                       'addaltbyencoding','addaltbytype','addcharset',
+                       'adddefaultcharset','adddescription',
+                       
'addencoding','addhandler','addicon','addiconbyencoding',
+                       
'addiconbytype','addlanguage','addmodule','addmoduleinfo',
+                       'addtype','agentlog','alias','aliasmatch',
+                       'allow','allowconnect','allowoverride','anonymous',
+                       
'anonymous_authoritative','anonymous_logemail','anonymous_mustgiveemail',
+                       
'anonymous_nouserid','anonymous_verifyemail','authauthoritative',
+                       
'authdbauthoritative','authdbgroupfile','authdbmauthoritative',
+                       
'authdbmgroupfile','authdbmgroupfile','authdbuserfile','authdbmuserfile',
+                       'authdigestfile','authgroupfile','authname','authtype',
+                       
'authuserfile','bindaddress','browsermatch','browsermatchnocase',
+                       
'bs2000account','cachedefaultexpire','cachedirlength','cachedirlevels',
+                       
'cacheforcecompletion','cachegcinterval','cachelastmodifiedfactor','cachemaxexpire',
+                       
'cachenegotiateddocs','cacheroot','cachesize','checkspelling',
+                       
'clearmodulelist','contentdigest','cookieexpires','cookielog',
+                       
'cookielog','cookietracking','coredumpdirectory','customlog',
+                       'defaulticon','defaultlanguage','defaulttype','define',
+                       'deny','directory','directorymatch','directoryindex',
+                       'documentroot','errordocument','errorlog','example',
+                       
'expiresactive','expiresbytype','expiresdefault','extendedstatus',
+                       'fancyindexing','files','filesmatch','forcetype',
+                       'group','header','headername','hostnamelookups',
+                       'identitycheck','ifdefine','ifmodule','imapbase',
+                       'imapdefault','imapmenu','include','indexignore',
+                       
'indexoptions','keepalive','keepalivetimeout','languagepriority',
+                       
'limit','limitexcept','limitrequestbody','limitrequestfields',
+                       
'limitrequestfieldsize','limitrequestline','listen','listenbacklog',
+                       'loadfile','loadmodule','location','locationmatch',
+                       'lockfile','logformat','loglevel','maxclients',
+                       
'maxkeepaliverequests','maxrequestsperchild','maxspareservers','metadir',
+                       
'metafiles','metasuffix','mimemagicfile','minspareservers',
+                       
'mmapfile','namevirtualhost','nocache','options','order',
+                       'passenv','pidfile','port','proxyblock','proxydomain',
+                       
'proxypass','proxypassreverse','proxyreceivebuffersize','proxyremote',
+                       'proxyrequests','proxyvia','qsc','readmename',
+                       
'redirect','redirectmatch','redirectpermanent','redirecttemp',
+                       'refererignore','refererlog','removehandler','require',
+                       
'resourceconfig','rewritebase','rewritecond','rewriteengine',
+                       
'rewritelock','rewritelog','rewriteloglevel','rewritemap',
+                       'rewriteoptions','rewriterule','rlimitcpu','rlimitmem',
+                       'rlimitnproc','satisfy','scoreboardfile','script',
+                       
'scriptalias','scriptaliasmatch','scriptinterpretersource','scriptlog',
+                       'scriptlogbuffer','scriptloglength','sendbuffersize',
+                       'serveradmin','serveralias','servername','serverpath',
+                       
'serverroot','serversignature','servertokens','servertype',
+                       'setenv','setenvif','setenvifnocase','sethandler',
+                       
'singlelisten','startservers','threadsperchild','timeout',
+                       
'transferlog','typesconfig','unsetenv','usecanonicalname',
+                       'user','userdir','virtualhost','virtualdocumentroot',
+                       
'virtualdocumentrootip','virtualscriptalias','virtualscriptaliasip',
+                       'xbithack','from','all'
+                 ),
+               /*keyords 2*/
+               2 => array(
+                       'on','off','standalone','inetd',
+                       'force-response-1.0','downgrade-1.0','nokeepalive',
+                       'ndexes','includes','followsymlinks','none',
+                       'x-compress','x-gzip'
+               )
+       ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #00007f;',
+                       2 => 'color: #0000ff;',
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #adadad; font-style: italic;',
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #7f007f;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/applescript.php
===================================================================
RCS file: geshi/applescript.php
diff -N geshi/applescript.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/applescript.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,136 @@
+<?php
+/*************************************************************************************
+ * applescript.php
+ * --------
+ * Author: Stephan Klimek (http://www.initware.org)
+ * Copyright: Stephan Klimek (http://www.initware.org)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/07/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * AppleScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ *
+ * TODO 
+ * -------------------------
+ * URL settings to references
+ *
+ 
**************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'AppleScript',
+       'COMMENT_SINGLE' => array(1 => '--'),
+       'COMMENT_MULTI' => array( '(*' => '*)'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"',"'"),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+            
'script','property','prop','end','copy','to','set','global','local','on','to','of',
+            
'in','given','with','without','return','continue','tell','if','then','else','repeat',
+            
'times','while','until','from','exit','try','error','considering','ignoring','timeout',
+            'transaction','my','get','put','into','is'
+                       ),
+               2 => array(
+            
'each','some','every','whose','where','id','index','first','second','third','fourth',
+            
'fifth','sixth','seventh','eighth','ninth','tenth','last','front','back','st','nd',
+            
'rd','th','middle','named','through','thru','before','after','beginning','the'
+                       ),
+               3 => array(
+            
'close','copy','count','delete','duplicate','exists','launch','make','move','open',
+            'print','quit','reopen','run','save','saving',
+            
'it','me','version','pi','result','space','tab','anything','case','diacriticals','expansion',
+            
'hyphens','punctuation','bold','condensed','expanded','hidden','italic','outline','plain',
+            
'shadow','strikethrough','subscript','superscript','underline','ask','no','yes','false',
+            
'true','weekday','monday','mon','tuesday','tue','wednesday','wed','thursday','thu','friday',
+            
'fri','saturday','sat','sunday','sun','month','january','jan','february','feb','march',
+            
'mar','april','apr','may','june','jun','july','jul','august','aug','september',
+            
'sep','october','oct','november','nov','december','dec','minutes','hours',
+            
'days','weeks','div','mod','and','not','or','as','contains','equal','equals','isnt'
+                       )
+               ),
+       'SYMBOLS' => array(
+        ')','+','-','^','*','/','&','<','>=','<','<=','=','�'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;',
+                       4 => 'color: #009999;',
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               3 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => ',+-=&lt;&gt;/?^&amp;*'
+               ),
+       'REGEXPS' => array(
+               0 => 'address@hidden',
+               4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/asm.php
===================================================================
RCS file: geshi/asm.php
diff -N geshi/asm.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/asm.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,200 @@
+<?php
+/*************************************************************************************
+ * asm.php
+ * -------
+ * Author: Tux (address@hidden)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * x86 Assembler language file for GeSHi.
+ * Words are from SciTe configuration file (based on NASM syntax)
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ *   -  Added binary and hexadecimal regexps
+ * 2004/08/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'ASM',
+       'COMMENT_SINGLE' => array(1 => ';'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               /*CPU*/
+               1 => array(
+                      
'aaa','aad','aam','aas','adc','add','and','call','cbw','clc','cld','cli','cmc','cmp',
+                       
'cmps','cmpsb','cmpsw','cwd','daa','das','dec','div','esc','hlt','idiv','imul','in','inc',
+                       
'int','into','iret','ja','jae','jb','jbe','jc','jcxz','je','jg','jge','jl','jle','jmp',
+                       
'jna','jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',
+                       
'jo','jp','jpe','jpo','js','jz','lahf','lds','lea','les','lods','lodsb','lodsw','loop',
+                       
'loope','loopew','loopne','loopnew','loopnz','loopnzw','loopw','loopz','loopzw','mov',
+                       
'movs','movsb','movsw','mul','neg','nop','not','or','out','pop','popf','push','pushf',
+                       
'rcl','rcr','ret','retf','retn','rol','ror','sahf','sal','sar','sbb','scas','scasb','scasw',
+                       
'shl','shr','stc','std','sti','stos','stosb','stosw','sub','test','wait','xchg','xlat',
+                       
'xlatb','xor','bound','enter','ins','insb','insw','leave','outs','outsb','outsw','popa','pusha','pushw',
+                       
'arpl','lar','lsl','sgdt','sidt','sldt','smsw','str','verr','verw','clts','lgdt','lidt','lldt','lmsw','ltr',
+                       
'bsf','bsr','bt','btc','btr','bts','cdq','cmpsd','cwde','insd','iretd','iretdf','iretf',
+                       
'jecxz','lfs','lgs','lodsd','loopd','looped','loopned','loopnzd','loopzd','lss','movsd',
+                       
'movsx','movzx','outsd','popad','popfd','pushad','pushd','pushfd','scasd','seta','setae',
+                       
'setb','setbe','setc','sete','setg','setge','setl','setle','setna','setnae','setnb','setnbe',
+                       
'setnc','setne','setng','setnge','setnl','setnle','setno','setnp','setns','setnz','seto','setp',
+                       
'setpe','setpo','sets','setz','shld','shrd','stosd','bswap','cmpxchg','invd','invlpg','wbinvd','xadd','lock',
+                       'rep','repe','repne','repnz','repz'
+                 ),
+               /*FPU*/
+               2 => array(
+                         
'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',
+                        
'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',
+                        
'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',
+                        
'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',
+                        
'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',
+                        
'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',
+                        
'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',
+                        
'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',
+                        
'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',
+                        'fstenvd','fucom','fucomp','fucompp'
+                   ),
+               /*registers*/
+               3 => array(
+                       
'ah','al','ax','bh','bl','bp','bx','ch','cl','cr0','cr2','cr3','cs','cx','dh','di','dl',
+                       
'dr0','dr1','dr2','dr3','dr6','dr7','ds','dx','eax','ebp','ebx','ecx','edi','edx',
+                        
'es','esi','esp','fs','gs','si','sp','ss','st','tr3','tr4','tr5','tr6','tr7', 
'ah', 'bh', 'ch', 'dh'
+                       ),
+               /*Directive*/
+               4 => array(
+                         
'186','286','286c','286p','287','386','386c','386p','387','486','486p',
+                        
'8086','8087','alpha','break','code','const','continue','cref','data','data?',
+                       
'dosseg','else','elseif','endif','endw','err','err1','err2','errb',
+                        
'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef',
+                        
'errnz','exit','fardata','fardata?','if','lall','lfcond','list','listall',
+                        'listif','listmacro','listmacroall',' 
model','no87','nocref','nolist',
+                        
'nolistif','nolistmacro','radix','repeat','sall','seq','sfcond','stack',
+                         
'startup','tfcond','type','until','untilcxz','while','xall','xcref',
+                         
'xlist','alias','align','assume','catstr','comm','comment','db','dd','df','dosseg','dq',
+                         
'dt','dup','dw','echo','else','elseif','elseif1','elseif2','elseifb','elseifdef','elseifdif',
+                         
'elseifdifi','elseife','elseifidn','elseifidni','elseifnb','elseifndef','end',
+                         'endif','endm','endp','ends','eq',' 
equ','even','exitm','extern','externdef','extrn','for',
+                         
'forc','ge','goto','group','high','highword','if','if1','if2','ifb','ifdef','ifdif',
+                         'ifdifi','ife',' 
ifidn','ifidni','ifnb','ifndef','include','includelib','instr','invoke',
+                         
'irp','irpc','label','le','length','lengthof','local','low','lowword','lroffset',
+                         
'macro','mask','mod','msfloat','name','ne','offset','opattr','option','org','%out',
+                         
'page','popcontext','proc','proto','ptr','public','purge','pushcontext','record',
+                         
'repeat','rept','seg','segment','short','size','sizeof','sizestr','struc','struct',
+                         
'substr','subtitle','subttl','textequ','this','title','type','typedef','union','while','width',
+                         '.model', '.stack', '.code', '.data'
+
+                   ),
+
+               /*Operands*/
+               5 => array(
+                        '@b','@f','addr','basic','byte','c','carry?','dword',
+                        
'far','far16','fortran','fword','near','near16','overflow?','parity?','pascal','qword',
+                        'real4',' 
real8','real10','sbyte','sdword','sign?','stdcall','sword','syscall','tbyte',
+                        'vararg','word','zero?','flat','near32','far32',
+                        
'abs','all','assumes','at','casemap','common','compact',
+                        
'cpu','dotname','emulator','epilogue','error','export','expr16','expr32','farstack','flat',
+                        
'forceframe','huge','language','large','listing','ljmp','loadds','m510','medium','memory',
+                        
'nearstack','nodotname','noemulator','nokeyword','noljmp','nom510','none','nonunique',
+                        
'nooldmacros','nooldstructs','noreadonly','noscoped','nosignextend','nothing',
+                        
'notpublic','oldmacros','oldstructs','os_dos','para','private','prologue','radix',
+                        
'readonly','req','scoped','setif2','smallstack','tiny','use16','use32','uses'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '[', ']', '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #00007f;',
+                       2 => 'color: #0000ff;',
+                       3 => 'color: #46aa03; font-weight:bold;',
+                       4 => 'color: #0000ff;',
+                       5 => 'color: #0000ff;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #adadad; font-style: italic;',
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #7f007f;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #ff0000;',
+                       1 => 'color: #ff0000;'
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => '0[0-9a-fA-F][0-9a-fA-F]*[hH]',
+               1 => '[01][01]*[bB]'
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/asp.php
===================================================================
RCS file: geshi/asp.php
diff -N geshi/asp.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/asp.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,155 @@
+<?php
+/*************************************************************************************
+ * asp.php
+ * --------
+ * Author: Amit Gupta (http://blog.igeek.info/)
+ * Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/13
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * ASP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/30 (1.0.3)
+ *   -  Strings only delimited by ", comments by '
+ * 2004/11/27 (1.0.2)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/13 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Include all the functions, keywords etc that I have missed
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'ASP',
+       'COMMENT_SINGLE' => array(1 => "'", 2 => '//'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => 0,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'include', 'file', 'Dim', 'Option', 'Explicit', 
'Implicit', 'Set', 'Select', 'ReDim', 'Preserve',
+                       'ByVal', 'ByRef', 'End', 'Private', 'Public', 'If', 
'Then', 'Else', 'ElseIf', 'Case', 'With', 'NOT',
+                       'While', 'Wend', 'For', 'Loop', 'Do', 'Request', 
'Response', 'Server', 'ADODB', 'Session', 'Application',
+                       'Each', 'In', 'Get', 'Next', 'INT', 'CINT', 'CBOOL', 
'CDATE', 'CBYTE', 'CCUR', 'CDBL', 'CLNG', 'CSNG',
+                       'CSTR', 'Fix', 'Is', 'Sgn', 'String', 'Boolean', 
'Currency', 'Me', 'Single', 'Long', 'Integer', 'Byte',
+                       'Variant', 'Double', 'To', 'Let', 'Xor', 'Resume', 
'On', 'Error', 'Imp', 'GoTo', 'Call', 'Global'
+                       ),
+               2 => array(
+                       'Null', 'Nothing', 'And',
+                       'False', '&lt;%', '%&gt;',
+                       '&lt;script language=', '&lt;/script&gt;',
+                       'True', 'var', 'Or', 'BOF', 'EOF',
+                       'Function', 'Class', 'New', 'Sub'
+                       ),
+               3 => array(
+                       'CreateObject', 'Write', 'Redirect', 'Cookies', 
'BinaryRead', 'ClientCertificate', 'Form', 'QueryString',
+                       'ServerVariables', 'TotalBytes', 'AddHeader', 
'AppendToLog', 'BinaryWrite', 'Buffer', 'CacheControl',
+                       'Charset', 'Clear', 'ContentType', 'End()', 'Expires', 
'ExpiresAbsolute', 'Flush()', 'IsClientConnected',
+                       'PICS', 'Status', 'Connection', 'Recordset', 'Execute', 
'Abandon', 'Lock', 'UnLock', 'Command', 'Fields',
+                       'Properties', 'Property', 'Send', 'Replace', 'InStr', 
'TRIM', 'NOW', 'Day', 'Month', 'Hour', 'Minute', 'Second',
+                       'Year', 'MonthName', 'LCase', 'UCase', 'Abs', 'Array', 
'As', 'LEN', 'MoveFirst', 'MoveLast', 'MovePrevious',
+                       'MoveNext', 'LBound', 'UBound', 'Transfer', 'Open', 
'Close', 'MapPath', 'FileExists', 'OpenTextFile', 'ReadAll'
+                       )
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #990099; font-weight: bold;',
+                       2 => 'color: #0000ff; font-weight: bold;',
+                       3 => 'color: #330066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #008000;',
+                       2 => 'color: #ff6600;',
+                       'MULTI' => 'color: #008000;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #006600; font-weight:bold'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #cc0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #800000;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #9900cc;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #006600; font-weight: bold'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<%' => '%>'
+                       ),
+               1 => array(
+                       '<script language="vbscript" runat="server">' => 
'</script>'
+                       ),
+               2 => array(
+                       '<script language="javascript" runat="server">' => 
'</script>'
+                       )
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/autoit.php
===================================================================
RCS file: geshi/autoit.php
diff -N geshi/autoit.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/autoit.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,196 @@
+<?php
+/*************************************************************************************
+ * autoit.php
+ * --------
+ * Author: mastrboy
+ * Copyright: (c) 2006 and to GESHi ;)
+ * Release Version: 1.0.7.14
+ * Date Started: 26.01.2006
+ *
+ * Current bugs & todo:
+ * ----------
+ * - can't get #cs and #ce to work as multiple comments while still 
#comments-start/end working
+ * - dosn't highlight symbols (Please note that in 1.0.X these are not used. 
Hopefully they will be used in 1.2.X.)
+ * - not sure how to get sendkeys to work " {!}, {SPACE} etc... "
+ * - jut copyied the regexp for variable from php so this HAVE to be checked 
and fixed to a better one ;)
+ *
+ * Reference: http://www.autoitscript.com/autoit3/docs/
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'AutoIT',
+       'COMMENT_SINGLE' => array(';'),
+       'COMMENT_MULTI' => array('#comments-start' => '#comments-end'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+            'continueloop', 'and', 'byref', 'case', 'const', 'dim', 'do', 
'else',
+            'elseif', 'endfunc', 'endif', 'endselect', 'exit', 'exitloop', 
'for',
+            'func', 'global', 'if', 'local', 'next', 'not', 'or', 'redim', 
'return',
+            'select', 'step', 'then', 'to', 'until', 'wend', 'while'
+                       ),
+               2 => array(
+            
'@appdatacommondir','@appdatadir','@autoitexe','@autoitversion','@commonfilesdir',
+            
'@compiled','@computername','@comspec','@cr','@crlf','@desktopcommondir','@desktopdepth','@desktopdir',
+            
'@desktopheight','@desktoprefresh','@desktopwidth','@documentscommondir','@error','@extended',
+            
'@favoritescommondir','@favoritesdir','@gui_ctrlhandle','@gui_ctrlid','@gui_winhandle','@homedrive',
+            
'@homepath','@homeshare','@hour','@inetgetactive','@inetgetbytesread','@ipaddress1','@ipaddress2',
+            
'@ipaddress3','@ipaddress4','@lf','@logondnsdomain','@logondomain','@logonserver','@mday','@min',
+            
'@mon','@mydocumentsdir','@numparams','@osbuild','@oslang','@osservicepack','@ostype','@osversion',
+            
'@programfilesdir','@programscommondir','@programsdir','@scriptdir','@scriptfullpath','@scriptname',
+            
'@sec','@startmenucommondir','@startmenudir','@startupcommondir','@startupdir','@sw_disable',
+            
'@sw_enable','@sw_hide','@sw_maximize','@sw_minimize','@sw_restore','@sw_show','@sw_showdefault',
+            
'@sw_showmaximized','@sw_showminimized','@sw_showminnoactive','@sw_showna','@sw_shownoactivate',
+            
'@sw_shownormal','@systemdir','@tab','@tempdir','@username','@userprofiledir','@wday','@windowsdir',
+            '@workingdir','@yday','@year'
+                       ),
+               3 => array(
+            
'abs','acos','adlibdisable','adlibenable','asc','asin','assign','atan','autoitsetoption',
+            
'autoitwingettitle','autoitwinsettitle','bitand','bitnot','bitor','bitshift','bitxor','blockinput',
+            
'break','call','cdtray','chr','clipget','clipput','consolewrite','controlclick','controlcommand','controldisable',
+            
'controlenable','controlfocus','controlgetfocus','controlgethandle','controlgetpos','controlgettext',
+            
'controlhide','controllistview','controlmove','controlsend','controlsettext','controlshow','cos',
+            
'dec','dircopy','dircreate','dirgetsize','dirmove','dirremove','dllcall','dllclose','dllopen','drivegetdrive',
+            
'drivegetfilesystem','drivegetlabel','drivegetserial','drivegettype','drivemapadd','drivemapdel',
+            
'drivemapget','drivesetlabel','drivespacefree','drivespacetotal','drivestatus','envget','envset',
+            
'envupdate','eval','exp','filechangedir','fileclose','filecopy','filecreateshortcut','filedelete',
+            
'fileexists','filefindfirstfile','filefindnextfile','filegetattrib','filegetlongname','filegetshortcut',
+            
'filegetshortname','filegetsize','filegettime','filegetversion','fileinstall','filemove','fileopen',
+            
'fileopendialog','fileread','filereadline','filerecycle','filerecycleempty','filesavedialog',
+            
'fileselectfolder','filesetattrib','filesettime','filewrite','filewriteline','ftpsetproxy','guicreate',
+            
'guictrlcreateavi','guictrlcreatebutton','guictrlcreatecheckbox','guictrlcreatecombo','guictrlcreatecontextmenu',
+            
'guictrlcreatedate','guictrlcreatedummy','guictrlcreateedit','guictrlcreategroup','guictrlcreateicon',
+            
'guictrlcreateinput','guictrlcreatelabel','guictrlcreatelist','guictrlcreatelistview','guictrlcreatelistviewitem',
+            
'guictrlcreatemenu','guictrlcreatemenuitem','guictrlcreatepic','guictrlcreateprogress','guictrlcreateradio',
+            
'guictrlcreateslider','guictrlcreatetab','guictrlcreatetabitem','guictrlcreatetreeview','guictrlcreatetreeviewitem',
+            
'guictrlcreateupdown','guictrldelete','guictrlgetstate','guictrlread','guictrlrecvmsg','guictrlsendmsg',
+            
'guictrlsendtodummy','guictrlsetbkcolor','guictrlsetcolor','guictrlsetcursor','guictrlsetdata',
+            
'guictrlsetfont','guictrlsetimage','guictrlsetlimit','guictrlsetonevent','guictrlsetpos','guictrlsetresizing',
+            
'guictrlsetstate','guictrlsetstyle','guictrlsettip','guidelete','guigetcursorinfo','guigetmsg',
+            
'guisetbkcolor','guisetcoord','guisetcursor','guisetfont','guisethelp','guiseticon','guisetonevent',
+            
'guisetstate','guistartgroup','guiswitch','hex','hotkeyset','httpsetproxy','inetget','inetgetsize',
+            
'inidelete','iniread','inireadsection','inireadsectionnames','iniwrite','inputbox','int','isadmin',
+            
'isarray','isdeclared','isfloat','isint','isnumber','isstring','log','memgetstats','mod','mouseclick',
+            
'mouseclickdrag','mousedown','mousegetcursor','mousegetpos','mousemove','mouseup','mousewheel',
+            
'msgbox','number','opt','ping','pixelchecksum','pixelgetcolor','pixelsearch','processclose','processexists',
+            
'processlist','processsetpriority','processwait','processwaitclose','progressoff','progresson',
+            
'progressset','random','regdelete','regenumkey','regenumval','regread','regwrite','round','run','runasset',
+            
'runwait','send','seterror','setextended','shutdown','sin','sleep','soundplay','soundsetwavevolume',
+            
'splashimageon','splashoff','splashtexton','sqrt','statusbargettext','string','stringaddcr','stringformat',
+            
'stringinstr','stringisalnum','stringisalpha','stringisascii','stringisdigit','stringisfloat',
+            
'stringisint','stringislower','stringisspace','stringisupper','stringisxdigit','stringleft','stringlen',
+            
'stringlower','stringmid','stringregexp','stringregexpreplace','stringreplace','stringright',
+            
'stringsplit','stringstripcr','stringstripws','stringtrimleft','stringtrimright','stringupper',
+            
'tan','timerdiff','timerinit','timerstart','timerstop','tooltip','traytip','ubound','winactivate','winactive',
+            
'winclose','winexists','wingetcaretpos','wingetclasslist','wingetclientsize','wingethandle','wingetpos',
+            
'wingetprocess','wingetstate','wingettext','wingettitle','winkill','winlist','winmenuselectitem',
+            
'winminimizeall','winminimizeallundo','winmove','winsetontop','winsetstate','winsettitle','winsettrans',
+            
'winshow','winwait','winwaitactive','winwaitclose','winwaitnotactive'
+                       )
+        ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '&', '*', '/', '<', '>', '+', '-', '^', '='
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0000FF; font-weight: bold;',
+                       2 => 'color: #FF33FF; font-weight: bold;',
+                       3 => 'color: #000090; font-style: italic; font-weight: 
bold;',
+                       ),
+               'COMMENTS' => array(
+                       0 => 'font-style: italic; color: #669900;', 'MULTI' => 
'font-style: italic; color: #669900;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => ''
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #FF0000; font-weight: bold;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'font-weight: bold; color: #9999CC;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'font-style: italic; font-weight: bold; color: 
#AC00A9;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #FF0000; font-weight: bold;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'font-weight: bold; color: #AA0000;'
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),
+       'URLS' => array(
+               1 => 'http://www.autoitscript.com/autoit3/docs/keywords.htm',
+               2 => 'http://www.autoitscript.com/autoit3/docs/macros.htm',
+               3 => 
'http://www.autoitscript.com/autoit3/docs/functions/{FNAME}.htm',
+               4 => ''
+               ),
+
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*",
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+/*     'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<?php' => '?>'
+                       ),
+               1 => array(
+                       '<?' => '?>'
+                       ),
+               2 => array(
+                       '<%' => '%>'
+                       ),
+               3 => array(
+                       '<script language="php">' => '</script>'
+                       )
+               ),*/
+
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               3 => true
+               )
+);
+
+?>
+

Index: geshi/bash.php
===================================================================
RCS file: geshi/bash.php
diff -N geshi/bash.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/bash.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,130 @@
+<?php
+/*************************************************************************************
+ * bash.php
+ * --------
+ * Author: Andreas Gohr (address@hidden)
+ * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * BASH language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/20 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Get symbols working
+ * * Highlight builtin vars
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Bash',
+       'COMMENT_SINGLE' => array(1 => '#'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 
'for', 'function',
+                       'if', 'in', 'select', 'then', 'until', 'while', 'time'
+                       ),
+               3 => array(
+                       'source', 'alias', 'bg', 'bind', 'break', 'builtin', 
'cd', 'command',
+                       'compgen', 'complete', 'continue', 'declare', 
'typeset', 'dirs',
+                       'disown', 'echo', 'enable', 'eval', 'exec', 'exit', 
'export', 'fc',
+                       'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 
'kill', 'let',
+                       'local', 'logout', 'popd', 'printf', 'pushd', 'pwd', 
'read', 'readonly',
+                       'return', 'set', 'shift', 'shopt', 'suspend', 'test', 
'times', 'trap',
+                       'type', 'ulimit', 'umask', 'unalias', 'unset', 'wait'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => true,
+               3 => true,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;',
+                       1 => 'color: #0000ff;',
+                       2 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               3 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}",
+               1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*",
+               2 => "([a-zA-Z_][a-zA-Z0-9_]*)="
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/blitzbasic.php
===================================================================
RCS file: geshi/blitzbasic.php
diff -N geshi/blitzbasic.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/blitzbasic.php        25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,187 @@
+<?php
+/*************************************************************************************
+ * blitzbasic.php
+ * --------------
+ * Author: P�draig O`Connel (address@hidden)
+ * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 16.10.2005
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * BlitzBasic language file for GeSHi.
+ *
+ * It is a simple Basic dialect. Released for Games and Network Connections.
+ * In this Language File are all functions included (2D BB and 3D BB)
+ *
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.1)
+ *   -  Remove unnecessary style index for regexps
+ * 2005/10/22 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2005/10/22)
+ * -------------------------
+ * * Sort out the Basic commands for splitting up.
+ * * To set up the right colors.
+ *      (the colors are ok, but not the correct ones)
+ * * Split to BlitzBasic 2D and BlitzBasic 3D.
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+ $language_data = array (
+  'LANG_NAME' => 'BlitzBasic',
+  'COMMENT_SINGLE' => array(1 => ';'),
+  'COMMENT_MULTI' => array(),
+  'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+  'QUOTEMARKS' => array('"'),
+  'ESCAPE_CHAR' => '',
+  'KEYWORDS' => array(
+    1 => array(
+       'If','EndIf','ElseIf','Else 
If','Else','While','Wend','Return','Next','Include','End Type','End 
Select','End If','End Function','End','Select',
+       
'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float',
+       'String','Before','Not'
+    ),
+    2 => array(
+
+      // All Functions - 2D BB and 3D BB
+               
'Xor','WriteString','WriteShort','WritePixelFast','WritePixel','WriteLine','WriteInt','WriteFloat','WriteFile','WriteBytes',
+               
'WriteByte','Write','WaitTimer','WaitMouse','WaitKey','WaitJoy','VWait','Viewport',
+               
'Upper','UpdateGamma','UnlockBuffer','UDPTimeouts','UDPStreamPort','UDPStreamIP','UDPMsgPort','UDPMsgIP',
+               
'Trim','TotalVidMem','TileImage','TileBlock','TFormImage','TFormFilter','Text',
+               
'TCPTimeouts','TCPStreamPort','TCPStreamIP','Tan','SystemProperty','StringWidth','StringHeight','Str','StopNetGame',
+               
'StopChannel','StartNetGame','Sqr','SoundVolume','SoundPitch','SoundPan','Sin','Shr',
+               
'ShowPointer','Shl','Sgn','SetGfxDriver','SetGamma','SetFont','SetEnv','SetBuffer','SendUDPMsg','SendNetMsg',
+               
'SeekFile','SeedRnd','ScanLine','ScaleImage','SaveImage','SaveBuffer','Sar','RuntimeError','RSet',
+               
'RotateImage','RndSeed','Rnd','Right','ResumeChannel','Restore','ResizeImage','ResizeBank','Replace',
+               
'Repeat','RecvUDPMsg','RecvNetMsg','RectsOverlap','Rect','ReadString','ReadShort','ReadPixelFast','ReadPixel','ReadLine',
+               
'ReadInt','ReadFloat','ReadFile','ReadDir','ReadBytes','ReadByte','ReadAvail','Read','Rand','Print',
+               
'PokeShort','PokeInt','PokeFloat','PokeByte','Plot','PlaySound','PlayMusic','PlayCDTrack','Pi','PeekShort',
+               
'PeekInt','PeekFloat','PeekByte','PauseChannel','Oval','Origin','OpenTCPStream','OpenMovie','OpenFile',
+               
'Null','NextFile','New','NetPlayerName','NetPlayerLocal','NetMsgType','NetMsgTo','NetMsgFrom',
+               
'NetMsgData','MovieWidth','MoviePlaying','MovieHeight','MoveMouse','MouseZSpeed','MouseZ','MouseYSpeed','MouseY','MouseXSpeed',
+               
'MouseX','MouseHit','MouseDown','Mod','Millisecs','MidHandle','Mid','MaskImage','LSet','Lower',
+               
'LoopSound','Log10','Log','LockBuffer','Locate','Local','LoadSound','LoadImage','LoadFont','LoadBuffer',
+               
'LoadAnimImage','Line','Len','Left','KeyHit','KeyDown','JoyZDir','JoyZ','JoyYDir',
+               
'JoyYaw','JoyY','JoyXDir','JoyX','JoyVDir','JoyV','JoyUDir','JoyU','JoyType','JoyRoll',
+               
'JoyPitch','JoyHit','JoyHat','JoyDown','JoinNetGame','Instr','Insert','Input',
+               
'ImageYHandle','ImageXHandle','ImageWidth','ImagesOverlap','ImagesCollide','ImageRectOverlap','ImageRectCollide','ImageHeight','ImageBuffer','If',
+               
'HostNetGame','HostIP','HidePointer','Hex','HandleImage','GraphicsWidth','GraphicsHeight','GraphicsDepth','GraphicsBuffer','Graphics',
+               
'GrabImage','Global','GFXModeWidth','GFXModeHeight','GfxModeExists','GFXModeDepth','GfxDriverName','GetMouse',
+               
'GetKey','GetJoy','GetEnv','GetColor','GammaRed','GammaGreen','GammaBlue','Function','FrontBuffer','FreeTimer',
+               
'FreeSound','FreeImage','FreeFont','FreeBank','FontWidth','FontHeight','FlushMouse','FlushKeys',
+               
'FlushJoy','Floor','Flip','First','FileType','FileSize','FilePos','Field',
+               
'Exp','Exit','ExecFile','Eof','EndGraphics','Each','DrawMovie','DrawImageRect','DrawImage','DrawBlockRect','DrawBlock',
+               
'DottedIP','Dim','DeleteNetPlayer','DeleteFile','DeleteDir','Delete','Delay','Default','DebugLog','Data',
+               
'CurrentTime','CurrentDir','CurrentDate','CreateUDPStream','CreateTimer','CreateTCPServer','CreateNetPlayer','CreateImage','CreateDir','CreateBank',
+               
'CountHostIPs','CountGFXModes','CountGfxDrivers','Cos','CopyStream','CopyRect','CopyPixelFast','CopyPixel','CopyImage','CopyFile',
+               
'CopyBank','Const','CommandLine','ColorRed','ColorGreen','ColorBlue','Color','ClsColor','Cls','CloseUDPStream',
+               
'CloseTCPStream','CloseTCPServer','CloseMovie','CloseFile','CloseDir','Chr','ChannelVolume','ChannelPlaying','ChannelPitch','ChannelPan',
+               
'ChangeDir','Ceil','CallDLL','Bin','BankSize','BackBuffer','AvailVidMem','AutoMidHandle',
+               
'ATan2','ATan','ASin','Asc','After','ACos','AcceptTCPStream','Abs',
+               // 3D Commands
+               'Wireframe','Windowed3D','WBuffer','VertexZ','VertexY',
+               
'VertexX','VertexW','VertexV','VertexU','VertexTexCoords','VertexRed','VertexNZ','VertexNY','VertexNX','VertexNormal',
+               
'VertexGreen','VertexCoords','VertexColor','VertexBlue','VertexAlpha','VectorYaw','VectorPitch','UpdateWorld','UpdateNormals','TurnEntity',
+               
'TrisRendered','TriangleVertex','TranslateEntity','TFormVector','TFormPoint','TFormNormal','TFormedZ','TFormedY','TFormedX','TextureWidth',
+               
'TextureName','TextureHeight','TextureFilter','TextureCoords','TextureBuffer','TextureBlend','TerrainZ','TerrainY','TerrainX','TerrainSize',
+               
'TerrainShading','TerrainHeight','TerrainDetail','SpriteViewMode','ShowEntity','SetCubeFace','SetAnimTime','SetAnimKey','ScaleTexture','ScaleSprite',
+               
'ScaleMesh','ScaleEntity','RotateTexture','RotateSprite','RotateMesh','RotateEntity','ResetEntity','RenderWorld','ProjectedZ','ProjectedY',
+               
'ProjectedX','PositionTexture','PositionMesh','PositionEntity','PointEntity','PickedZ','PickedY','PickedX','PickedTriangle','PickedTime',
+               
'PickedSurface','PickedNZ','PickedNY','PickedNX','PickedEntity','PaintSurface','PaintMesh','PaintEntity','NameEntity','MoveEntity',
+               
'ModifyTerrain','MeshWidth','MeshHeight','MeshesIntersect','MeshDepth','MD2AnimTime','MD2AnimLength','MD2Animating','LoadTexture','LoadTerrain',
+               
'LoadSprite','LoadMesh','LoadMD2','LoaderMatrix','LoadBSP','LoadBrush','LoadAnimTexture','LoadAnimSeq','LoadAnimMesh','Load3DSound',
+               
'LinePick','LightRange','LightMesh','LightConeAngles','LightColor','HWMultiTex','HideEntity','HandleSprite','Graphics3D','GfxMode3DExists',
+               
'GfxMode3D','GfxDriverCaps3D','GfxDriver3D','GetSurfaceBrush','GetSurface','GetParent','GetMatElement','GetEntityType','GetEntityBrush','GetChild',
+               
'GetBrushTexture','FreeTexture','FreeEntity','FreeBrush','FlipMesh','FitMesh','FindSurface','FindChild','ExtractAnimSeq','EntityZ',
+               
'EntityYaw','EntityY','EntityX','EntityVisible','EntityType','EntityTexture','EntityShininess','EntityRoll','EntityRadius','EntityPitch',
+               
'EntityPickMode','EntityPick','EntityParent','EntityOrder','EntityName','EntityInView','EntityFX','EntityDistance','EntityColor','EntityCollided',
+               
'EntityBox','EntityBlend','EntityAutoFade','EntityAlpha','EmitSound','Dither','DeltaYaw','DeltaPitch','CreateTexture','CreateTerrain',
+               
'CreateSurface','CreateSprite','CreateSphere','CreatePlane','CreatePivot','CreateMirror','CreateMesh','CreateListener','CreateLight','CreateCylinder',
+               
'CreateCube','CreateCone','CreateCamera','CreateBrush','CountVertices','CountTriangles','CountSurfaces','CountGfxModes3D','CountCollisions','CountChildren',
+               
'CopyMesh','CopyEntity','CollisionZ','CollisionY','CollisionX','CollisionTriangle','CollisionTime','CollisionSurface','Collisions','CollisionNZ',
+               
'CollisionNY','CollisionNX','CollisionEntity','ClearWorld','ClearTextureFilters','ClearSurface','ClearCollisions','CaptureWorld','CameraZoom','CameraViewport',
+               
'CameraRange','CameraProjMode','CameraProject','CameraPick','CameraFogRange','CameraFogMode','CameraFogColor','CameraClsMode','CameraClsColor','BSPLighting',
+               
'BSPAmbientLight','BrushTexture','BrushShininess','BrushFX','BrushColor','BrushBlend','BrushAlpha','AntiAlias','AnimTime','AnimSeq',
+               
'AnimLength','Animating','AnimateMD2','Animate','AmbientLight','AlignToVector','AddVertex','AddTriangle','AddMesh','AddAnimSeq',
+      )
+    ),
+  'SYMBOLS' => array(
+       '(',')'
+       ),
+  'CASE_SENSITIVE' => array(
+    GESHI_COMMENTS => false,
+    1 => false,
+    2 => false,
+    ),
+  'STYLES' => array(
+    'KEYWORDS' => array(
+      1 => 'color: #000066; font-weight: bold;',
+       2 => 'color: #0000ff;'
+      ),
+    'COMMENTS' => array(
+      1 => 'color: #D9D100; font-style: italic;',
+      ),
+    'ESCAPE_CHAR' => array(
+      0 => 'color: #000099; font-weight: bold;'
+      ),
+    'BRACKETS' => array(
+      0 => 'color: #000066;'
+      ),
+    'STRINGS' => array(
+      0 => 'color: #009900;'
+      ),
+    'NUMBERS' => array(
+      0 => 'color: #CC0000;'
+      ),
+    'METHODS' => array(
+      1 => 'color: #006600;'
+      ),
+    'SYMBOLS' => array(
+      0 => 'color: #000066;'
+      ),
+    'REGEXPS' => array(
+      ),
+    'SCRIPT' => array(
+      0 => '',
+      1 => '',
+      )
+    ),
+  'URLS' => array(
+               1 => ''
+       ),
+  'OOLANG' => false,
+  'OBJECT_SPLITTERS' => array(
+       1 => '\\'
+       ),
+  'REGEXPS' => array(
+  ),
+  'STRICT_MODE_APPLIES' => GESHI_NEVER,
+  'SCRIPT_DELIMITERS' => array(),
+  'HIGHLIGHT_STRICT_BLOCK' => array(
+    0 => false,
+    1 => false
+  )
+);
+
+?>
\ No newline at end of file

Index: geshi/c.php
===================================================================
RCS file: geshi/c.php
diff -N geshi/c.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/c.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,144 @@
+<?php
+/*************************************************************************************
+ * c.php
+ * -----
+ * Author: Nigel McNie (address@hidden)
+ * Contributors:
+ *  - Jack Lloyd (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * C language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.4)
+ *   -  Added a couple of new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.3)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *  -  Get a list of inbuilt functions to add (and explore C more
+ *     to complete this rather bare language file
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'C',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'if', 'return', 'while', 'case', 'continue', 'default',
+                       'do', 'else', 'for', 'switch', 'goto'
+                       ),
+               2 => array(
+                       'null', 'false', 'break', 'true', 'function', 'enum', 
'extern', 'inline'
+                       ),
+               3 => array(
+                       'printf', 'cout'
+                       ),
+               4 => array(
+                       'auto', 'char', 'const', 'double',  'float', 'int', 
'long',
+                       'register', 'short', 'signed', 'sizeof', 'static', 
'string', 'struct',
+                       'typedef', 'union', 'unsigned', 'void', 'volatile', 
'wchar_t'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', 
'%', '^', '&', ':'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;',
+                       4 => 'color: #993333;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #339933;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #202020;',
+                       2 => 'color: #202020;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 
'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/c_mac.php
===================================================================
RCS file: geshi/c_mac.php
diff -N geshi/c_mac.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/c_mac.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,176 @@
+<?php
+/*************************************************************************************
+ * c_mac.php
+ * ---------
+ * Author: M. Uli Kusterer (address@hidden)
+ * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie 
(http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * C for Macs language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'C (Mac)',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'if', 'return', 'while', 'case', 'continue', 'default',
+                       'do', 'else', 'for', 'switch', 'goto'
+                       ),
+               2 => array(
+                       'NULL', 'false', 'break', 'true', 'enum', 'errno', 
'EDOM',
+                       'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 
'DBL_DIG', 'LDBL_DIG',
+                       'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 
'FLT_MANT_DIG', 'DBL_MANT_DIG',
+                       'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 
'FLT_MAX_EXP', 'DBL_MAX_EXP',
+                       'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 
'FLT_MIN_EXP', 'DBL_MIN_EXP',
+                       'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 
'SCHAR_MAX', 'SCHAR_MIN',
+                       'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 
'INT_MAX', 'INT_MIN',
+                       'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 
'HUGE_VAL', 'SIGABRT',
+                       'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 
'SIG_DFL', 'SIG_ERR',
+                       'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 
'FOPEN_MAX', 'L_tmpnam', 'NULL',
+                       'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 
'stdout', 'stderr',
+                       'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 
'CLOCKS_PER_SEC',
+                       // Mac-specific constants:
+                       'kCFAllocatorDefault'
+                       ),
+               3 => array(
+                       'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+                       'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 
'islower', 'isprint',
+                       'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 
'tolower', 'toupper',
+                       'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 
'fabs', 'ldexp',
+                       'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 
'acos', 'atan', 'atan2',
+                       'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 
'acos', 'atan', 'atan2',
+                       'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 
'fopen', 'freopen',
+                       'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 
'tmpname', 'setvbuf',
+                       'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 
'scanf', 'sscanf',
+                       'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 
'gets', 'putc',
+                       'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 
'fseek', 'ftell', 'rewind',
+                       'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 
'perror', 'abs', 'labs',
+                       'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 
'strtol', 'strtoul', 'calloc',
+                       'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 
'system', 'getenv',
+                       'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 
'strncpy', 'strcat', 'strncat',
+                       'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 
'strspn', 'strcspn',
+                       'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 
'strxfrm', 'memcpy',
+                       'memmove', 'memcmp', 'memchr', 'memset', 'clock', 
'time', 'difftime', 'mktime',
+                       'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+                       ),
+               4 => array(
+                       'auto', 'char', 'const', 'double',  'float', 'int', 
'long',
+                       'register', 'short', 'signed', 'sizeof', 'static', 
'string', 'struct',
+                       'typedef', 'union', 'unsigned', 'void', 'volatile', 
'extern', 'jmp_buf',
+                       'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 
'FILE', 'fpos_t',
+                       'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+                       // Mac-specific types:
+                       'CFArrayRef', 'CFDictionaryRef', 
'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef',
+                       'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 
'CFNumberFormatterRef', 'CFPropertyListRef',
+                       'CFTreeRef', 'CFWriteStreamRef', 'CFCharacterSetRef', 
'CFMutableStringRef', 'CFNotificationRef',
+                       'CFNotificationRef', 'CFReadStreamRef', 'CFNull', 
'CFAllocatorRef', 'CFBagRef', 'CFBinaryHeapRef',
+                       'CFBitVectorRef', 'CFBooleanRef', 'CFDataRef', 
'CFDateRef', 'CFMachPortRef', 'CFMessagePortRef',
+                       'CFMutableArrayRef', 'CFMutableBagRef', 
'CFMutableBitVectorRef', 'CFMutableCharacterSetRef',
+                       'CFMutableDataRef', 'CFMutableSetRef', 'CFNumberRef', 
'CFPlugInRef', 'CFPlugInInstanceRef',
+                       'CFRunLoopRef', 'CFRunLoopObserverRef', 
'CFRunLoopSourceRef', 'CFRunLoopTimerRef', 'CFSocketRef',
+                       'CFTimeZoneRef', 'CFTypeRef', 'CFUserNotificationRef', 
'CFUUIDRef', 'CFXMLNodeRef', 'CFXMLParserRef',
+                       'CFXMLTreeRef'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', 
'%', '^', '&', ':'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0000ff;',
+                       2 => 'color: #0000ff;',
+                       3 => 'color: #0000dd;',
+                       4 => 'color: #0000ff;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #ff0000;',
+                       2 => 'color: #339900;',
+                       'MULTI' => 'color: #ff0000; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #666666; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #000000;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #666666;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #0000dd;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #00eeff;',
+                       2 => 'color: #00eeff;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #000000;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 
'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/caddcl.php
===================================================================
RCS file: geshi/caddcl.php
diff -N geshi/caddcl.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/caddcl.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,127 @@
+<?php
+/*************************************************************************************
+ * caddcl.php
+ * ----------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * CAD DCL (Dialog Control Language) file for GeSHi.
+ *
+ * DCL for AutoCAD 12 or later and IntelliCAD all versions.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/1!/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'CAD DCL',
+       'COMMENT_SINGLE' => array(1 => '//'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       
'boxed_column','boxed_radio_column','boxed_radio_row','boxed_row',
+                       
'column','concatenation','button','dialog','edit_box','image','image_button',
+                       
'errtile','list_box','ok_cancel','ok_cancel_help','ok_cancel_help_errtile',
+                       
'ok_cancel_help_info','ok_only','paragraph','popup_list','radio_button',
+                       
'radio_column','radio_row','row','slider','spacer','spacer_0','spacer_1','text',
+                       'text_part','toggle',
+                       
'action','alignment','allow_accept','aspect_ratio','big_increment',
+                       'children_alignment','children_fixed_height',
+                       'children_fixed_width','color',
+                       'edit_limit','edit_width','fixed_height','fixed_width',
+                       'height','initial_focus','is_cancel','is_default',
+                       
'is_enabled','is_tab_stop','is-bold','key','label','layout','list',
+                       
'max_value','min_value','mnemonic','multiple_select','password_char',
+                       'small_increment','tabs','tab_truncate','value','width',
+                       'false','true','left','right','centered','top','bottom',
+                       'dialog_line','dialog_foreground','dialog_background',
+                       
'graphics_background','black','red','yellow','green','cyan',
+                       'blue','magenta','whitegraphics_foreground',
+                       'horizontal','vertical'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', 
'%', '^', '&', ':'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/cadlisp.php
===================================================================
RCS file: geshi/cadlisp.php
diff -N geshi/cadlisp.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/cadlisp.php   25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,187 @@
+<?php
+/*************************************************************************************
+ * cadlisp.php
+ * -----------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/blog)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * AutoCAD/IntelliCAD Lisp language file for GeSHi.
+ *
+ * For AutoCAD V.12..2005 and IntelliCAD all versions.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'CAD Lisp',
+       'COMMENT_SINGLE' => array(1 => ";"),
+       'COMMENT_MULTI' => array(";|" => "|;"),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       
'abs','acad_colordlg','acad_helpdlg','acad_strlsort','action_tile',
+                       
'add_list','alert','alloc','and','angle','angtof','angtos','append','apply',
+                       
'arx','arxload','arxunload','ascii','assoc','atan','atof','atoi','atom',
+                       
'atoms-family','autoarxload','autoload','Boole','boundp','caddr',
+                       
'cadr','car','cdr','chr','client_data_tile','close','command','cond',
+                       
'cons','cos','cvunit','defun','defun-q','defun-q-list-ref',
+                       
'defun-q-list-set','dictadd','dictnext','dictremove','dictrename',
+                       
'dictsearch','dimx_tile','dimy_tile','distance','distof','done_dialog',
+                       
'end_image','end_list','entdel','entget','entlast','entmake',
+                       
'entmakex','entmod','entnext','entsel','entupd','eq','equal','eval','exit',
+                       
'exp','expand','expt','fill_image','findfile','fix','float','foreach','function',
+                       
'gc','gcd','get_attr','get_tile','getangle','getcfg','getcname','getcorner',
+                       
'getdist','getenv','getfiled','getint','getkword','getorient','getpoint',
+                       
'getreal','getstring','getvar','graphscr','grclear','grdraw','grread','grtext',
+                       
'grvecs','handent','help','if','initdia','initget','inters','itoa','lambda','last',
+                       
'layoutlist','length','list','listp','load','load_dialog','log','logand','logior',
+                       
'lsh','mapcar','max','mem','member','menucmd','menugroup','min','minusp','mode_tile',
+                       
'namedobjdict','nentsel','nentselp','new_dialog','nil','not','nth','null',
+                       
'numberp','open','or','osnap','polar','prin1','princ','print','progn','prompt',
+                       
'quit','quote','read','read-char','read-line','redraw','regapp','rem','repeat',
+                       
'reverse','rtos','set','set_tile','setcfg','setenv','setfunhelp','setq','setvar',
+                       
'setview','sin','slide_image','snvalid','sqrt','ssadd','ssdel','ssget','ssgetfirst',
+                       
'sslength','ssmemb','ssname','ssnamex','sssetfirst','start_dialog','start_image',
+                       
'start_list','startapp','strcase','strcat','strlen','subst','substr','t','tablet',
+                       
'tblnext','tblobjname','tblsearch','term_dialog','terpri','textbox','textpage',
+                       
'textscr','trace','trans','type','unload_dialog','untrace','vector_image','ver',
+                       
'vports','wcmatch','while','write-char','write-line','xdroom','xdsize','zerop',
+                       
'vl-acad-defun','vl-acad-undefun','vl-arx-import','vlax-3D-point',
+                       
'vlax-add-cmd','vlax-create-object','vlax-curve-getArea',
+                       
'vlax-curve-getClosestPointTo','vlax-curve-getClosestPointToProjection',
+                       'vlax-curve-getDistAtParam','vlax-curve-getDistAtPoint',
+                       'vlax-curve-getEndParam','vlax-curve-getEndPoint',
+                       'vlax-curve-getFirstDeriv','vlax-curve-getParamAtDist',
+                       
'vlax-curve-getParamAtPoint','vlax-curve-getPointAtDist',
+                       
'vlax-curve-getPointAtParam','vlax-curve-getSecondDeriv',
+                       'vlax-curve-getStartParam','vlax-curve-getStartPoint',
+                       
'vlax-curve-isClosed','vlax-curve-isPeriodic','vlax-curve-isPlanar',
+                       
'vlax-dump-object','vlax-erased-p','vlax-for','vlax-get-acad-object',
+                       
'vlax-get-object','vlax-get-or-create-object','vlax-get-property',
+                       
'vlax-import-type-library','vlax-invoke-method','vlax-ldata-delete',
+                       
'vlax-ldata-get','vlax-ldata-list','vlax-ldata-put','vlax-ldata-test',
+                       
'vlax-make-safearray','vlax-make-variant','vlax-map-collection',
+                       
'vlax-method-applicable-p','vlax-object-released-p','vlax-product-key',
+                       
'vlax-property-available-p','vlax-put-property','vlax-read-enabled-p',
+                       
'vlax-release-object','vlax-remove-cmd','vlax-safearray-fill',
+                       'vlax-safearray-get-dim','vlax-safearray-get-element',
+                       
'vlax-safearray-get-l-bound','vlax-safearray-get-u-bound',
+                       
'vlax-safearray-put-element','vlax-safearray-type','vlax-tmatrix',
+                       'vlax-typeinfo-available-p','vlax-variant-change-type',
+                       
'vlax-variant-type','vlax-variant-value','vlax-write-enabled-p',
+                       
'vl-bb-ref','vl-bb-set','vl-catch-all-apply','vl-catch-all-error-message',
+                       
'vl-catch-all-error-p','vl-cmdf','vl-consp','vl-directory-files','vl-doc-export',
+                       
'vl-doc-import','vl-doc-ref','vl-doc-set','vl-every','vl-exit-with-error',
+                       
'vl-exit-with-value','vl-file-copy','vl-file-delete','vl-file-directory-p',
+                       
'vl-filename-base','vl-filename-directory','vl-filename-extension',
+                       
'vl-filename-mktemp','vl-file-rename','vl-file-size','vl-file-systime',
+                       
'vl-get-resource','vlisp-compile','vl-list-exported-functions',
+                       
'vl-list-length','vl-list-loaded-vlx','vl-load-all','vl-load-com',
+                       
'vl-load-reactors','vl-member-if','vl-member-if-not','vl-position',
+                       
'vl-prin1-to-string','vl-princ-to-string','vl-propagate','vlr-acdb-reactor',
+                       
'vlr-add','vlr-added-p','vlr-beep-reaction','vlr-command-reactor',
+                       'vlr-current-reaction-name','vlr-data','vlr-data-set',
+                       
'vlr-deepclone-reactor','vlr-docmanager-reactor','vlr-dwg-reactor',
+                       
'vlr-dxf-reactor','vlr-editor-reactor','vl-registry-delete',
+                       
'vl-registry-descendents','vl-registry-read','vl-registry-write',
+                       
'vl-remove','vl-remove-if','vl-remove-if-not','vlr-insert-reactor',
+                       
'vlr-linker-reactor','vlr-lisp-reactor','vlr-miscellaneous-reactor',
+                       
'vlr-mouse-reactor','vlr-notification','vlr-object-reactor',
+                       
'vlr-owner-add','vlr-owner-remove','vlr-owners','vlr-pers','vlr-pers-list',
+                       
'vlr-pers-p','vlr-pers-release','vlr-reaction-names','vlr-reactions',
+                       
'vlr-reaction-set','vlr-reactors','vlr-remove','vlr-remove-all',
+                       
'vlr-set-notification','vlr-sysvar-reactor','vlr-toolbar-reactor',
+                       
'vlr-trace-reaction','vlr-type','vlr-types','vlr-undo-reactor',
+                       
'vlr-wblock-reactor','vlr-window-reactor','vlr-xref-reactor',
+                       
'vl-some','vl-sort','vl-sort-i','vl-string-elt','vl-string-left-trim',
+                       
'vl-string-mismatch','vl-string-position','vl-string-right-trim',
+                       
'vl-string-search','vl-string-subst','vl-string-translate','vl-string-trim',
+                       
'vl-symbol-name','vl-symbolp','vl-symbol-value','vl-unload-vlx','vl-vbaload',
+                       'vl-vbarun','vl-vlx-loaded-p'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', 
'/','+','-','*','=','<','>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/cfdg.php
===================================================================
RCS file: geshi/cfdg.php
diff -N geshi/cfdg.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/cfdg.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,128 @@
+<?php
+/*************************************************************************************
+ * cfdg.php
+ * --------
+ * Author: John Horigan <address@hidden>
+ * Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/03/11
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * CFDG language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/03/11 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2006/03/11)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'CFDG',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       'include', 'startshape', 'rule', 'background'
+                       ),
+               2 => array(
+                       'SQUARE', 'CIRCLE', 'TRIANGLE',
+                       ),
+               3 => array(
+                       'b','brightness','h','hue','sat','saturation',
+                       'a','alpha','x','y','z','s','size',
+                       'r','rotate','f','flip','skew','xml_set_object'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '[', ']', '{', '}', '*', '|'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #717100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #006666;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => '',
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
+

Index: geshi/cfm.php
===================================================================
RCS file: geshi/cfm.php
diff -N geshi/cfm.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/cfm.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,327 @@
+<?php
+/*************************************************************************************
+ * cfm.php
+ * -------
+ * Author: Diego ()
+ * Copyright: (c) 2006 Diego
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/02/25
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * ColdFusion language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/02/25 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2006/02/25)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'ColdFusion',
+       'COMMENT_SINGLE' => array(1 => '//'),
+       'COMMENT_MULTI' => array('<!--' => '-->','&lt;!---' => '---&gt;'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               /* CFM Tags */
+               1 => array(
+                       '&lt;cfabort', '&lt;cfapplet', '&lt;cfapplication', 
'&lt;cfargument', '&lt;cfassociate', '&lt;&lt;cfbreak&gt;', 
+                       '&lt;cfcache', '&lt;cfcase', '&lt;cfcatch', 
'&lt;/cfcatch&gt;', '&lt;cfchart', '&lt;/cfchart&gt;', '&lt;cfchartdata', 
+                       '&lt;cfchartseries', '&lt;/cfchartseries&gt;', 
'&lt;cfcol', '&lt;cfcollection', '&lt;cfcomponent', '&lt;/cfcomponent&gt;', 
+                       '&lt;cfcontent', '&lt;cfcookie', 
'&lt;/cfdefaultcase&gt;', '&lt;cfdirectory', '&lt;cfdocument', 
'&lt;/cfdocument&gt;', 
+                       '&lt;cfdocumentitem', '&lt;/cfdocumentitem&gt;', 
'&lt;cfdocumentsection', '&lt;/cfdocumentsection&gt;', '&lt;cfdump', 
+                       '&lt;cfelse', '&lt;cfelseif', '&lt;cferror', 
'&lt;cfexecute', '&lt;/cfexecute&gt;', '&lt;cfexit', '&lt;cffile', 
+                       '&lt;cfflush', '&lt;cfform', '&lt;/cfform&gt;', 
'&lt;cfformgroup', '&lt;/cfformgroup', '&lt;cfformitem', 
+                       '&lt;/cfformitem&gt;', '&lt;cfftp', '&lt;cffunction', 
'&lt;/cffunction&gt;', '&lt;cfgrid', '&lt;/cfgrid&gt;', 
+                       '&lt;cfgridcolumn', '&lt;cfgridrow', 
'&lt;cfgridupdate', '&lt;cfheader', '&lt;cfhtmlhead', '&lt;cfhttp', 
+                       '&lt;/cfhttp&gt;', '&lt;cfhttpparam', '&lt;cfif', 
'&lt;/cfif&gt;', '&lt;cfimport', '&lt;cfinclude', '&lt;cfindex', 
+                       '&lt;cfinput', '&lt;cfinsert', '&lt;cfinvoke', 
'&lt;cfinvokeargument', '&lt;cfldap', '&lt;cflocation', '&lt;cflock', 
+                       '&lt;/cflock&gt;', '&lt;cflog', '&lt;cflogin', 
'&lt;/cflogin&gt;', '&lt;cfloginuser', '&lt;cflogout', '&lt;cfloop', 
+                       '&lt;/cfloop&gt;', '&lt;cfmail', '&lt;/cfmail&gt;', 
'&lt;cfmailparam', '&lt;cfmailpart', '&lt;/cfmailpart&gt;', 
+                       '&lt;cfmodule', '&lt;cfNTauthenticate', '&lt;cfobject', 
'&lt;cfobjectcache', '&lt;cfoutput&gt;', '&lt;cfoutput', '&lt;/cfoutput&gt;', 
+                       '&lt;cfparam', '&lt;cfpop', 
'&lt;cfprocessingdirective', '&lt;/cfprocessingdirective&gt;', 
'&lt;cfprocparam', 
+                       '&lt;cfprocresult', '&lt;cfproperty', '&lt;cfquery', 
'&lt;/cfquery&gt;', '&lt;cfqueryparam', '&lt;cfregistry', 
+                       '&lt;/cfregistry&gt;', '&lt;cfreport', 
'&lt;/cfreport&gt;', '&lt;cfreportparam', '&lt;/cfreportparam&gt;', 
+                       '&lt;cfrethrow', '&lt;cfreturn', '&lt;cfsavecontent', 
'&lt;/cfsavecontent&gt;', '&lt;cfschedule', '&lt;cfscript', '&lt;cfscript&gt;',
+                       '&lt;/cfscript&gt;', '&lt;cfsearch', '&lt;cfselect', 
'&lt;/cfselect&gt;', '&lt;cfset', '&lt;cfsetting', '&lt;cfsilent', 
+                       '&lt;/cfsilent&gt;', '&lt;cfstoredproc', 
'&lt;/cfstoredproc&gt;', '&lt;cfswitch', '&lt;/cfswitch&gt;', '&lt;cftable', 
+                       '&lt;/cftable&gt;', '&lt;cftextarea', 
'&lt;/cftextarea&gt;', '&lt;cfthrow', '&lt;cftimer', '&lt;/cftimer&gt;', 
+                       '&lt;cftrace', '&lt;/cftrace&gt;', '&lt;cftransaction', 
'&lt;/cftransaction&gt;', '&lt;cftree', '&lt;/cftree&gt;', 
+                       '&lt;cftreeitem', '&lt;cftry', '&lt;/cftry&gt;', 
'&lt;cfupdate', '&lt;cfwddx','&lt;','&gt;'
+                       ),
+               /* HTML Tags */
+               2 => array(
+                       '&lt;a&gt;', '&lt;abbr&gt;', '&lt;acronym&gt;', 
'&lt;address&gt;', '&lt;applet&gt;',
+                       '&lt;a', '&lt;abbr', '&lt;acronym', '&lt;address', 
'&lt;applet',
+                       '&lt;/a&gt;', '&lt;/abbr&gt;', '&lt;/acronym&gt;', 
'&lt;/address&gt;', '&lt;/applet&gt;',
+                       '&lt;/a', '&lt;/abbr', '&lt;/acronym', '&lt;/address', 
'&lt;/applet',
+
+                       '&lt;base&gt;', '&lt;basefont&gt;', '&lt;bdo&gt;', 
'&lt;big&gt;', '&lt;blockquote&gt;', '&lt;body&gt;', '&lt;br&gt;', 
'&lt;button&gt;', '&lt;b&gt;',
+                       '&lt;base', '&lt;basefont', '&lt;bdo', '&lt;big', 
'&lt;blockquote', '&lt;body', '&lt;br', '&lt;button', '&lt;b',
+                       '&lt;/base&gt;', '&lt;/basefont&gt;', '&lt;/bdo&gt;', 
'&lt;/big&gt;', '&lt;/blockquote&gt;', '&lt;/body&gt;', '&lt;/br&gt;', 
'&lt;/button&gt;', '&lt;/b&gt;',
+                       '&lt;/base', '&lt;/basefont', '&lt;/bdo', '&lt;/big', 
'&lt;/blockquote', '&lt;/body', '&lt;/br','&lt;br /&gt;', '&lt;/button', 
'&lt;/b',
+
+                       '&lt;caption&gt;', '&lt;center&gt;', '&lt;cite&gt;', 
'&lt;code&gt;', '&lt;colgroup&gt;', '&lt;col&gt;',
+                       '&lt;caption', '&lt;center', '&lt;cite', '&lt;code', 
'&lt;colgroup', '&lt;col',
+                       '&lt;/caption&gt;', '&lt;/center&gt;', '&lt;/cite&gt;', 
'&lt;/code&gt;', '&lt;/colgroup&gt;', '&lt;/col&gt;',
+                       '&lt;/caption', '&lt;/center', '&lt;/cite', 
'&lt;/code', '&lt;/colgroup', '&lt;/col',
+
+                       '&lt;dd&gt;', '&lt;del&gt;', '&lt;dfn&gt;', 
'&lt;dir&gt;', '&lt;div&gt;', '&lt;dl&gt;', '&lt;dt&gt;',
+                       '&lt;dd', '&lt;del', '&lt;dfn', '&lt;dir', '&lt;div', 
'&lt;dl', '&lt;dt',
+                       '&lt;/dd&gt;', '&lt;/del&gt;', '&lt;/dfn&gt;', 
'&lt;/dir&gt;', '&lt;/div&gt;', '&lt;/dl&gt;', '&lt;/dt&gt;',
+                       '&lt;/dd', '&lt;/del', '&lt;/dfn', '&lt;/dir', 
'&lt;/div', '&lt;/dl', '&lt;/dt',
+
+                       '&lt;em&gt;',
+                       '&lt;em',
+                       '&lt;/em&gt;',
+                       '&lt;/em',
+
+                       '&lt;fieldset&gt;', '&lt;font&gt;', '&lt;form&gt;', 
'&lt;frame&gt;', '&lt;frameset&gt;',
+                       '&lt;fieldset', '&lt;font', '&lt;form', '&lt;frame', 
'&lt;frameset',
+                       '&lt;/fieldset&gt;', '&lt;/font&gt;', '&lt;/form&gt;', 
'&lt;/frame&gt;', '&lt;/frameset&gt;',
+                       '&lt;/fieldset', '&lt;/font', '&lt;/form', 
'&lt;/frame', '&lt;/frameset',
+
+                       '&lt;h1&gt;', '&lt;h2&gt;', '&lt;h3&gt;', '&lt;h4&gt;', 
'&lt;h5&gt;', '&lt;h6&gt;', '&lt;head&gt;', '&lt;hr&gt;', '&lt;html&gt;',
+                       '&lt;h1', '&lt;h2', '&lt;h3', '&lt;h4', '&lt;h5', 
'&lt;h6', '&lt;head', '&lt;hr', '&lt;html',
+                       '&lt;/h1&gt;', '&lt;/h2&gt;', '&lt;/h3&gt;', 
'&lt;/h4&gt;', '&lt;/h5&gt;', '&lt;/h6&gt;', '&lt;/head&gt;', '&lt;/hr&gt;', 
'&lt;/html&gt;',
+                       '&lt;/h1', '&lt;/h2', '&lt;/h3', '&lt;/h4', '&lt;/h5', 
'&lt;/h6', '&lt;/head', '&lt;/hr', '&lt;/html',
+
+                       '&lt;iframe&gt;', '&lt;ilayer&gt;', '&lt;img&gt;', 
'&lt;input&gt;', '&lt;ins&gt;', '&lt;isindex&gt;', '&lt;i&gt;',
+                       '&lt;iframe', '&lt;ilayer', '&lt;img', '&lt;input', 
'&lt;ins', '&lt;isindex', '&lt;i',
+                       '&lt;/iframe&gt;', '&lt;/ilayer&gt;', '&lt;/img&gt;', 
'&lt;/input&gt;', '&lt;/ins&gt;', '&lt;/isindex&gt;', '&lt;/i&gt;',
+                       '&lt;/iframe', '&lt;/ilayer', '&lt;/img', '&lt;/input', 
'&lt;/ins', '&lt;/isindex', '&lt;/i',
+
+                       '&lt;kbd&gt;',
+                       '&lt;kbd',
+                       '&t;/kbd&gt;',
+                       '&lt;/kbd',
+
+                       '&lt;label&gt;', '&lt;legend&gt;', '&lt;link&gt;', 
'&lt;li&gt;',
+                       '&lt;label', '&lt;legend', '&lt;link', '&lt;li',
+                       '&lt;/label&gt;', '&lt;/legend&gt;', '&lt;/link&gt;', 
'&lt;/li&gt;',
+                       '&lt;/label', '&lt;/legend', '&lt;/link', '&lt;/li',
+
+                       '&lt;map&gt;', '&lt;meta&gt;',
+                       '&lt;map', '&lt;meta',
+                       '&lt;/map&gt;', '&lt;/meta&gt;',
+                       '&lt;/map', '&lt;/meta',
+
+                       '&lt;noframes&gt;', '&lt;noscript&gt;',
+                       '&lt;noframes', '&lt;noscript',
+                       '&lt;/noframes&gt;', '&lt;/noscript&gt;',
+                       '&lt;/noframes', '&lt;/noscript',
+
+                       '&lt;object&gt;', '&lt;ol&gt;', '&lt;optgroup&gt;', 
'&lt;option&gt;',
+                       '&lt;object', '&lt;ol', '&lt;optgroup', '&lt;option',
+                       '&lt;/object&gt;', '&lt;/ol&gt;', '&lt;/optgroup&gt;', 
'&lt;/option&gt;',
+                       '&lt;/object', '&lt;/ol', '&lt;/optgroup', 
'&lt;/option',
+
+                       '&lt;param&gt;', '&lt;pre&gt;', '&lt;p&gt;',
+                       '&lt;param', '&lt;pre', '&lt;p',
+                       '&lt;/param&gt;', '&lt;/pre&gt;', '&lt;/p&gt;',
+                       '&lt;/param', '&lt;/pre', '&lt;/p',
+
+                       '&lt;q&gt;',
+                       '&lt;q',
+                       '&lt;/q&gt;',
+                       '&lt;/q',
+
+                       '&lt;samp&gt;', '&lt;script&gt;', '&lt;select&gt;', 
'&lt;small&gt;', '&lt;span&gt;', '&lt;strike&gt;', '&lt;strong&gt;', 
'&lt;style&gt;', '&lt;sub&gt;', '&lt;sup&gt;', '&lt;s&gt;',
+                       '&lt;samp', '&lt;script', '&lt;select', '&lt;small', 
'&lt;span', '&lt;strike', '&lt;strong', '&lt;style', '&lt;sub', '&lt;sup', 
'&lt;s',
+                       '&lt;/samp&gt;', '&lt;/script&gt;', '&lt;/select&gt;', 
'&lt;/small&gt;', '&lt;/span&gt;', '&lt;/strike&gt;', '&lt;/strong&gt;', 
'&lt;/style&gt;', '&lt;/sub&gt;', '&lt;/sup&gt;', '&lt;/s&gt;',
+                       '&lt;/samp', '&lt;/script', '&lt;/select', 
'&lt;/small', '&lt;/span', '&lt;/strike', '&lt;/strong', '&lt;/style', 
'&lt;/sub', '&lt;/sup', '&lt;/s',
+
+                       '&lt;table&gt;', '&lt;tbody&gt;', '&lt;td&gt;', 
'&lt;textarea&gt;', '&lt;text&gt;', '&lt;tfoot&gt;', '&lt;thead&gt;', 
'&lt;th&gt;', '&lt;title&gt;', '&lt;tr&gt;', '&lt;tt&gt;',
+                       '&lt;table', '&lt;tbody', '&lt;td', '&lt;textarea', 
'&lt;text', '&lt;tfoot', '&lt;tfoot', '&lt;thead', '&lt;th', '&lt;title', 
'&lt;tr', '&lt;tt',
+                       '&lt;/table&gt;', '&lt;/tbody&gt;', '&lt;/td&gt;', 
'&lt;/textarea&gt;', '&lt;/text&gt;', '&lt;/tfoot&gt;', '&lt;/thead', 
'&lt;/tfoot', '&lt;/th&gt;', '&lt;/title&gt;', '&lt;/tr&gt;', '&lt;/tt&gt;',
+                       '&lt;/table', '&lt;/tbody', '&lt;/td', '&lt;/textarea', 
'&lt;/text', '&lt;/tfoot', '&lt;/tfoot', '&lt;/thead', '&lt;/th', '&lt;/title', 
'&lt;/tr', '&lt;/tt',
+
+                       '&lt;ul&gt;', '&lt;u&gt;',
+                       '&lt;ul', '&lt;u',
+                       '&lt;/ul&gt;', '&lt;/ul&gt;',
+                       '&lt;/ul', '&lt;/u',
+
+                       '&lt;var&gt;',
+                       '&lt;var',
+                       '&lt;/var&gt;',
+                       '&lt;/var',
+
+                       '&gt;', '&lt;'
+                       ),
+               /* HTML attributes */
+               3 => array(
+                       'abbr', 'accept-charset', 'accept', 'accesskey', 
'action', 'align', 'alink', 'alt', 'archive', 'axis',
+                       'background', 'bgcolor', 'border',
+                       'cellpadding', 'cellspacing', 'char', 'char', 
'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 
'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 
'coords',
+                       'data', 'datetime', 'declare', 'defer', 'dir', 
'disabled',
+                       'enctype',
+                       'face', 'for', 'frame', 'frameborder',
+                       'headers', 'height', 'href', 'hreflang', 'hspace', 
'http-equiv',
+                       'id', 'ismap',
+                       'label', 'lang', 'language', 'link', 'longdesc',
+                       'marginheight', 'marginwidth', 'maxlength', 'media', 
'method', 'multiple',
+                       'name', 'nohref', 'noresize', 'noshade', 'nowrap',
+                       'object', 'onblur', 'onchange', 'onclick', 
'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 
'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 
'onreset', 'onselect', 'onsubmit', 'onunload',
+                       'profile', 'prompt',
+                       'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
+                       'scheme', 'scope', 'scrolling', 'selected', 'shape', 
'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
+                       'tabindex', 'target', 'text', 'title', 'type',
+                       'usemap',
+                       'valign', 'value', 'valuetype', 'version', 'vlink', 
'vspace',
+                       'width'
+                       ),
+                       /* CFM Script delimeters */
+               4 => array(
+                       'var', 'function', 'while', 'if','else'
+                       ),
+                       /* CFM Functions */
+               5 => array(
+                       'Abs', 'GetFunctionList', 
'LSTimeFormat','ACos','GetGatewayHelper','LTrim','AddSOAPRequestHeader','GetHttpRequestData',
+                       
'Max','AddSOAPResponseHeader','GetHttpTimeString','Mid','ArrayAppend','GetLocale','Min','ArrayAvg','GetLocaleDisplayName',
+                       
'Minute','ArrayClear','GetMetaData','Month','ArrayDeleteAt','GetMetricData','MonthAsString','ArrayInsertAt','GetPageContext',
+                       
'Now','ArrayIsEmpty','GetProfileSections','NumberFormat','ArrayLen','GetProfileString','ParagraphFormat','ArrayMax',
+                       
'GetLocalHostIP','ParseDateTime','ArrayMin','GetSOAPRequest','Pi','ArrayNew','GetSOAPRequestHeader','PreserveSingleQuotes',
+                       
'ArrayPrepend','GetSOAPResponse','Quarter','ArrayResize','GetSOAPResponseHeader','QueryAddColumn','ArraySet',
+                       
'GetTempDirectory','QueryAddRow','ArraySort','GetTempDirectory','QueryNew','ArraySum','GetTempFile','QuerySetCell',
+                       
'ArraySwap','GetTickCount','QuotedValueList','ArrayToList','GetTimeZoneInfo','Rand','Asc','GetToken','Randomize',
+                       
'ASin','Hash','RandRange','Atn','Hour','REFind','BinaryDecode','HTMLCodeFormat','REFindNoCase','BinaryEncode',
+                       
'HTMLEditFormat','ReleaseComObject','BitAnd','IIf','RemoveChars','BitMaskClear','IncrementValue','RepeatString',
+                       
'BitMaskRead','InputBaseN','Replace','BitMaskSet','Insert','ReplaceList','BitNot','Int','ReplaceNoCase','BitOr',
+                       
'IsArray','REReplace','BitSHLN','IsBinary','REReplaceNoCase','BitSHRN','IsBoolean','Reverse','BitXor','IsCustomFunction',
+                       
'Right','Ceiling','IsDate','RJustify','CharsetDecode','IsDebugMode','Round','CharsetEncode','IsDefined','RTrim',
+                       
'Chr','IsLeapYear','Second','CJustify','IsLocalHost','SendGatewayMessage','Compare','IsNumeric','SetEncoding',
+                       
'CompareNoCase','IsNumericDate','SetLocale','Cos','IsObject','SetProfileString','CreateDate','IsQuery','SetVariable',
+                       
'CreateDateTime','IsSimpleValue','Sgn','CreateObject','IsSOAPRequest','Sin','CreateODBCDate','IsStruct','SpanExcluding',
+                       
'CreateODBCDateTime','IsUserInRole','SpanIncluding','CreateODBCTime','IsValid','Sqr','CreateTime','IsWDDX','StripCR',
+                       
'CreateTimeSpan','IsXML','StructAppend','CreateUUID','IsXmlAttribute','StructClear','DateAdd','IsXmlDoc','StructCopy',
+                       
'DateCompare','IsXmlElem','StructCount','DateConvert','IsXmlNode','StructDelete','DateDiff','IsXmlRoot','StructFind',
+                       
'DateFormat','JavaCast','StructFindKey','DatePart','JSStringFormat','StructFindValue','Day','LCase','StructGet',
+                       
'DayOfWeek','Left','StructInsert','DayOfWeekAsString','Len','StructIsEmpty','DayOfYear','ListAppend','StructKeyArray',
+                       
'DaysInMonth','ListChangeDelims','StructKeyExists','DaysInYear','ListContains','StructKeyList','DE','ListContainsNoCase',
+                       
'StructNew','DecimalFormat','ListDeleteAt','StructSort','DecrementValue','ListFind','StructUpdate','Decrypt','ListFindNoCase',
+                       
'Tan','DecryptBinary','ListFirst','TimeFormat','DeleteClientVariable','ListGetAt','ToBase64','DirectoryExists',
+                       
'ListInsertAt','ToBinary','DollarFormat','ListLast','ToScript','Duplicate','ListLen','ToString','Encrypt','ListPrepend',
+                       
'Trim','EncryptBinary','ListQualify','UCase','Evaluate','ListRest','URLDecode','Exp','ListSetAt','URLEncodedFormat',
+                       
'ExpandPath','ListSort','URLSessionFormat','FileExists','ListToArray','Val','Find','ListValueCount','ValueList',
+                       
'FindNoCase','ListValueCountNoCase','Week','FindOneOf','LJustify','Wrap','FirstDayOfMonth','Log','WriteOutput',
+                       
'Fix','Log10','XmlChildPos','FormatBaseN','LSCurrencyFormat','XmlElemNew','GetAuthUser','LSDateFormat','XmlFormat',
+                       
'GetBaseTagData','LSEuroCurrencyFormat','XmlGetNodeType','GetBaseTagList','LSIsCurrency','XmlNew','GetBaseTemplatePath',
+                       
'LSIsDate','XmlParse','GetClientVariablesList','LSIsNumeric','XmlSearch','GetCurrentTemplatePath','LSNumberFormat',
+                       
'XmlTransform','GetDirectoryFromPath','LSParseCurrency','XmlValidate','GetEncoding','LSParseDateTime','Year',
+                       
'GetException','LSParseEuroCurrency','YesNoFormat','GetFileFromPath','LSParseNumber'
+                       ),
+               /* CFM Attributes */
+               6 => array(
+                       
'=','&amp;','name','dbtype','connectstring','datasource','username','password','query','delimeter','description','required','hint','default','access','from','to','list','index'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '/', '=', 'EQ', 'GT', 'LT', 'GTE', 'LTE', 'IS', 'LIKE', '&', 
'{', '}', '(', ')', '[', ']','gt','lt'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+        5 => false,
+        6 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #990000;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #0000FF;',
+                       4 => 'color: #000000; font-weight: bold;',
+                       5 => 'color: #0000FF;',
+                       6 => 'color: #0000FF'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic; 
background-color:#FFFF99;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #0000FF;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #009900;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #FF0000;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #0000FF;'
+                       ),
+               'SCRIPT' => array(
+                       0 => 'color: #00bbdd;',
+                       1 => 'color: #0000FF;',
+                       2 => 'color: #000099;',
+                       3 => 'color: #333333;'
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<!DOCTYPE' => '>'
+                       ),
+               1 => array(
+                        '#' => '#'
+                       ),
+               2 => array(
+                       '<cfscript>' => '</cfscript>;'
+                       ),
+               3 => array(
+                       '<' => '>'
+                       )
+       ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => false,
+               1 => true,
+               2 => true,
+               3 => true
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/cpp.php
===================================================================
RCS file: geshi/cpp.php
diff -N geshi/cpp.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/cpp.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,172 @@
+<?php
+/*************************************************************************************
+ * cpp.php
+ * -------
+ * Author: Dennis Bayer (address@hidden)
+ * Contributors:
+ *  - M. Uli Kusterer (address@hidden)
+ *  - Jack Lloyd (address@hidden)
+ * Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/09/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * C++ language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/XX/XX (1.0.2)
+ *  -  Added several new keywords (Jack Lloyd)
+ * 2004/11/27 (1.0.1)
+ *  -  Added StdCLib function and constant names, changed color scheme to
+ *     a cleaner one. (M. Uli Kusterer)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'C++',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'case', 'continue', 'default', 'do', 'else', 'for', 
'goto', 'if', 'return',
+                       'switch', 'while'
+                       ),
+               2 => array(
+                       'NULL', 'false', 'break', 'true', 'enum', 'errno', 
'EDOM',
+                       'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 
'DBL_DIG', 'LDBL_DIG',
+                       'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 
'FLT_MANT_DIG', 'DBL_MANT_DIG',
+                       'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 
'FLT_MAX_EXP', 'DBL_MAX_EXP',
+                       'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 
'FLT_MIN_EXP', 'DBL_MIN_EXP',
+                       'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 
'SCHAR_MAX', 'SCHAR_MIN',
+                       'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 
'INT_MAX', 'INT_MIN',
+                       'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 
'HUGE_VAL', 'SIGABRT',
+                       'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 
'SIG_DFL', 'SIG_ERR',
+                       'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 
'FOPEN_MAX', 'L_tmpnam', 'NULL',
+                       'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 
'stdout', 'stderr',
+                       'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 
'CLOCKS_PER_SEC',
+                       'virtual', 'public', 'private', 'protected', 
'template', 'using', 'namespace',
+                       'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 
'reinterpret_cast',
+                       'static_cast', 'explicit', 'friend', 'wchar_t', 
'typename', 'typeid', 'class'
+                       ),
+               3 => array(
+                       'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
+                       'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+                       'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 
'islower', 'isprint',
+                       'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 
'tolower', 'toupper',
+                       'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 
'fabs', 'ldexp',
+                       'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 
'acos', 'atan', 'atan2',
+                       'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 
'acos', 'atan', 'atan2',
+                       'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 
'fopen', 'freopen',
+                       'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 
'tmpname', 'setvbuf',
+                       'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 
'scanf', 'sscanf',
+                       'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 
'gets', 'putc',
+                       'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 
'fseek', 'ftell', 'rewind',
+                       'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 
'perror', 'abs', 'labs',
+                       'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 
'strtol', 'strtoul', 'calloc',
+                       'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 
'system', 'getenv',
+                       'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 
'strncpy', 'strcat', 'strncat',
+                       'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 
'strspn', 'strcspn',
+                       'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 
'strxfrm', 'memcpy',
+                       'memmove', 'memcmp', 'memchr', 'memset', 'clock', 
'time', 'difftime', 'mktime',
+                       'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+                       ),
+               4 => array(
+                       'auto', 'bool', 'char', 'const', 'double', 'float', 
'int', 'long', 'longint',
+                       'register', 'short', 'shortint', 'signed', 'static', 
'struct',
+                       'typedef', 'union', 'unsigned', 'void', 'volatile', 
'extern', 'jmp_buf',
+                       'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 
'FILE', 'fpos_t',
+                       'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', 
'%', '^', '&', ':'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0000ff;',
+                       2 => 'color: #0000ff;',
+                       3 => 'color: #0000dd;',
+                       4 => 'color: #0000ff;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #ff0000;',
+                       2 => 'color: #339900;',
+                       'MULTI' => 'color: #ff0000; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #666666; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #000000;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #666666;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #0000dd;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #00eeff;',
+                       2 => 'color: #00eeff;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #000000;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/csharp.php
===================================================================
RCS file: geshi/csharp.php
diff -N geshi/csharp.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/csharp.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,233 @@
+<?php
+/*************************************************************************************
+ * csharp.php
+ * ----------
+ * Author: Alan Juden (address@hidden)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * C# language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/01/05 (1.0.1)
+ *  -  Used hardquote support for @"..." strings (Cliff Stanford)
+ * 2004/11/27 (1.0.0)
+ *  -  Initial release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+ $language_data = array (
+       'LANG_NAME' => 'C#',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+    'HARDQUOTE' => array('@"', '"'),
+    'HARDESCAPE' => array('""'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'as', 'auto', 'base', 'break', 'case', 'catch', 
'const', 'continue',
+                       'default', 'do', 'else', 'event', 'explicit', 'extern', 
'false',
+                       'finally', 'fixed', 'for', 'foreach', 'goto', 'if', 
'implicit',
+                       'in', 'internal', 'lock', 'namespace', 'null', 
'operator', 'out',
+                       'override', 'params', 'private', 'protected', 'public', 
'readonly',
+                       'ref', 'return', 'sealed', 'stackalloc', 'static', 
'switch', 'this',
+                       'throw', 'true', 'try', 'unsafe', 'using', 'virtual', 
'void', 'while'
+                       ),
+               2 => array(
+                       '#elif', '#endif', '#endregion', '#else', '#error', 
'#define', '#if',
+                       '#line', '#region', '#undef', '#warning'
+                       ),
+               3 => array(
+                       'checked', 'is', 'new', 'sizeof', 'typeof', 'unchecked'
+                       ),
+               4 => array(
+                       'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 
'double',
+                       'enum', 'float', 'int', 'interface', 'long', 'object', 
'sbyte',
+                       'short', 'string', 'struct', 'uint', 'ulong', 'ushort'
+                       ),
+               5 => array(
+                       'Microsoft.Win32',
+                       'System',
+                       'System.CodeDOM',
+                       'System.CodeDOM.Compiler',
+                       'System.Collections',
+                       'System.Collections.Bases',
+                       'System.ComponentModel',
+                       'System.ComponentModel.Design',
+                       'System.ComponentModel.Design.CodeModel',
+                       'System.Configuration',
+                       'System.Configuration.Assemblies',
+                       'System.Configuration.Core',
+                       'System.Configuration.Install',
+                       'System.Configuration.Interceptors',
+                       'System.Configuration.Schema',
+                       'System.Configuration.Web',
+                       'System.Core',
+                       'System.Data',
+                       'System.Data.ADO',
+                       'System.Data.Design',
+                       'System.Data.Internal',
+                       'System.Data.SQL',
+                       'System.Data.SQLTypes',
+                       'System.Data.XML',
+                       'System.Data.XML.DOM',
+                       'System.Data.XML.XPath',
+                       'System.Data.XML.XSLT',
+                       'System.Diagnostics',
+                       'System.Diagnostics.SymbolStore',
+                       'System.DirectoryServices',
+                       'System.Drawing',
+                       'System.Drawing.Design',
+                       'System.Drawing.Drawing2D',
+                       'System.Drawing.Imaging',
+                       'System.Drawing.Printing',
+                       'System.Drawing.Text',
+                       'System.Globalization',
+                       'System.IO',
+                       'System.IO.IsolatedStorage',
+                       'System.Messaging',
+                       'System.Net',
+                       'System.Net.Sockets',
+                       'System.NewXml',
+                       'System.NewXml.XPath',
+                       'System.NewXml.Xsl',
+                       'System.Reflection',
+                       'System.Reflection.Emit',
+                       'System.Resources',
+                       'System.Runtime.InteropServices',
+                       'System.Runtime.InteropServices.Expando',
+                       'System.Runtime.Remoting',
+                       'System.Runtime.Serialization',
+                       'System.Runtime.Serialization.Formatters',
+                       'System.Runtime.Serialization.Formatters.Binary',
+                       'System.Security',
+                       'System.Security.Cryptography',
+                       'System.Security.Cryptography.X509Certificates',
+                       'System.Security.Permissions',
+                       'System.Security.Policy',
+                       'System.Security.Principal',
+                       'System.ServiceProcess',
+                       'System.Text',
+                       'System.Text.RegularExpressions',
+                       'System.Threading',
+                       'System.Timers',
+                       'System.Web',
+                       'System.Web.Caching',
+                       'System.Web.Configuration',
+                       'System.Web.Security',
+                       'System.Web.Services',
+                       'System.Web.Services.Description',
+                       'System.Web.Services.Discovery',
+                       'System.Web.Services.Protocols',
+                       'System.Web.UI',
+                       'System.Web.UI.Design',
+                       'System.Web.UI.Design.WebControls',
+                       'System.Web.UI.Design.WebControls.ListControls',
+                       'System.Web.UI.HtmlControls',
+                       'System.Web.UI.WebControls',
+                       'System.WinForms',
+                       'System.WinForms.ComponentModel',
+                       'System.WinForms.Design',
+                       'System.Xml',
+                       'System.Xml.Serialization',
+                       'System.Xml.Serialization.Code',
+                       'System.Xml.Serialization.Schema'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', 
'|', ':',
+               '(', ')', '{', '}', '[', ']'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0600FF;',
+                       2 => 'color: #FF8000; font-weight: bold;',
+                       3 => 'color: #008000;',
+                       4 => 'color: #FF0000;',
+                       5 => 'color: #000000;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #008080; font-style: italic;',
+                       2 => 'color: #008080;',
+                       'MULTI' => 'color: #008080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #008080; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #000000;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #808080;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #FF0000;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #0000FF;',
+                       2 => 'color: #0000FF;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #008000;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 
'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/css-gen.cfg
===================================================================
RCS file: geshi/css-gen.cfg
diff -N geshi/css-gen.cfg

Index: geshi/css.php
===================================================================
RCS file: geshi/css.php
diff -N geshi/css.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/css.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,178 @@
+<?php
+/*************************************************************************************
+ * css.php
+ * -------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/18
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * CSS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Changed regexps to catch "-" symbols
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Improve or drop regexps for class/id/psuedoclass highlighting
+ * * Re-look at keywords - possibly to make several CSS language
+ *   files, all with different versions of CSS in them
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+
+$language_data = array (
+       'LANG_NAME' => 'CSS',
+       'COMMENT_SINGLE' => array(1 => '@'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"', "'"),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'aqua', 'azimuth', 'background-attachment', 
'background-color',
+                       'background-image', 'background-position', 
'background-repeat',
+                       'background', 'black', 'blue', 'border-bottom-color', 
'border-bottom-style',
+                       'border-bottom-width', 'border-left-color', 
'border-left-style',
+                       'border-left-width', 'border-right', 
'border-right-color',
+                       'border-right-style', 'border-right-width', 
'border-top-color',
+                       'border-top-style', 'border-top-width','border-bottom', 
'border-collapse',
+                       'border-left', 'border-width', 'border-color', 
'border-spacing',
+                       'border-style', 'border-top', 'border',  'caption-side',
+                       'clear', 'clip', 'color', 'content', 
'counter-increment', 'counter-reset',
+                       'cue-after', 'cue-before', 'cue', 'cursor', 
'direction', 'display',
+                       'elevation', 'empty-cells', 'float', 'font-family', 
'font-size',
+                       'font-size-adjust', 'font-stretch', 'font-style', 
'font-variant',
+                       'font-weight', 'font', 'height', 'letter-spacing', 
'line-height',
+                       'list-style', 'list-style-image', 
'list-style-position', 'list-style-type',
+                       'margin-bottom', 'margin-left', 'margin-right', 
'margin-top', 'margin',
+                       'marker-offset', 'marks', 'max-height', 'max-width', 
'min-height',
+                       'min-width', 'orphans', 'outline', 'outline-color', 
'outline-style',
+                       'outline-width', 'overflow', 'padding-bottom', 
'padding-left',
+                       'padding-right', 'padding-top', 'padding', 'page', 
'page-break-after',
+                       'page-break-before', 'page-break-inside', 
'pause-after', 'pause-before',
+                       'pause', 'pitch', 'pitch-range',  'play-during', 
'position', 'quotes',
+                       'richness', 'right', 'size', 'speak-header', 
'speak-numeral', 'speak-punctuation',
+                       'speak', 'speech-rate', 'stress', 'table-layout', 
'text-align', 'text-decoration',
+                       'text-indent', 'text-shadow', 'text-transform', 'top', 
'unicode-bidi',
+                       'vertical-align', 'visibility', 'voice-family', 
'volume', 'white-space', 'widows',
+                       'width', 'word-spacing', 'z-index', 'bottom', 'left'
+                       ),
+               2 => array(
+                       'above', 'absolute', 'always', 'armenian', 'aural', 
'auto', 'avoid',
+                       'baseline', 'behind', 'below', 'bidi-override', 
'blink', 'block', 'bold', 'bolder', 'both',
+                       'capitalize', 'center-left', 'center-right', 'center', 
'circle', 'cjk-ideographic', 
+            'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 
'crosshair', 'cross', 'cursive',
+                       'dashed', 'decimal-leading-zero', 'decimal', 'default', 
'digits', 'disc', 'dotted', 'double',
+                       'e-resize', 'embed', 'extra-condensed', 
'extra-expanded', 'expanded',
+                       'fantasy', 'far-left', 'far-right', 'faster', 'fast', 
'fixed', 'fuchsia',
+                       'georgian', 'gray', 'green', 'groove', 'hebrew', 
'help', 'hidden', 'hide', 'higher',
+                       'high', 'hiragana-iroha', 'hiragana', 'icon', 
'inherit', 'inline-table', 'inline',
+                       'inset', 'inside', 'invert', 'italic', 'justify', 
'katakana-iroha', 'katakana',
+                       'landscape', 'larger', 'large', 'left-side', 
'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 
'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low',
+                       'maroon', 'medium', 'message-box', 'middle', 'mix', 
'monospace',
+                       'n-resize', 'narrower', 'navy', 'ne-resize', 
'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 
'nw-resize',
+                       'oblique', 'olive', 'once', 'open-quote', 'outset', 
'outside', 'overline',
+                       'pointer', 'portrait', 'purple', 'px',
+                       'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 
'rgb', 'ridge', 'right-side', 'rightwards',
+                       's-resize', 'sans-serif', 'scroll', 'se-resize', 
'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 
'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 
'solid', 'spell-out', 'square',
+                       'static', 'status-bar', 'super', 'sw-resize',
+                       'table-caption', 'table-cell', 'table-column', 
'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 
'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 
'transparent',
+                       'ultra-condensed', 'ultra-expanded', 'underline', 
'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url',
+                       'visible',
+                       'w-resize', 'wait', 'white', 'wider',
+                       'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 
'x-small', 'x-soft', 'xx-large', 'xx-small',
+                       'yellow', 'yes'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', ':', ';'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => true,
+               2 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #000000; font-weight: bold;',
+                       2 => 'color: #993333;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #a1a100;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #cc00cc;',
+                       1 => 'color: #6666ff;',
+                       2 => 'color: #3333ff;',
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => '\#[a-zA-Z0-9\-]+\s+\{',
+               1 => '\.[a-zA-Z0-9\-]+\s',
+               2 => ':[a-zA-Z0-9\-]+\s'
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/d.php
===================================================================
RCS file: geshi/d.php
diff -N geshi/d.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/d.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,287 @@
+<?php
+/*************************************************************************************
+ * d.php
+ * -----
+ * Author: Thomas Kuehne (address@hidden)
+ * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/04/22
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * D language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/04/22 (0.0.2)
+ *  -  added _d_* and sizeof/ptrdiff_t
+ * 2005/04/20 (0.0.1)
+ *  -  First release
+ *
+ * TODO (updated 2005/04/22)
+ * -------------------------
+ * * nested comments
+ * * correct handling of r"" and ``
+ * * correct handling of ... and ..
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'D',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"', "'", '`'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+                'while',
+                'switch',
+                'if',
+                'foreach',
+                'for',
+                'goto',
+                'return',
+                'else',
+                'do',
+                'case',
+                'continue',
+                'break'
+            ),
+        2 => array(
+                'with',
+                'union',
+                'typeof',
+                'typeid',
+                'typedef',
+                'try',
+                'true',
+                'throw',
+                'this',
+                'super',
+                'pragma',
+                'out',
+                'null',
+                'new',
+                'module',
+                'mixin',
+                'is',
+                'invariant',
+                'interface',
+                'inout',
+                'in',
+                'import',
+                'function',
+                'finally',
+                'false',
+                'extern',
+                'delete',
+                'delegate',
+                'default',
+                'catch',
+                'cast',
+                'body',
+                'assert',
+                'asm',
+                'alias'
+            ),
+        3 => array(
+                'TypeInfo',
+                'SwitchError',
+                'OutOfMemoryException',
+                'Object',
+                'ModuleInfo',
+                'Interface',
+                'Exception',
+                'Error',
+                'ClassInfo',
+                'ArrayBoundsError',
+                'AssertError',
+                '_d_throw',
+                '_d_switch_ustring',
+                '_d_switch_string',
+                '_d_switch_dstring',
+                '_d_OutOfMemory',
+                '_d_obj_eq',
+                '_d_obj_cmp',
+                '_d_newclass',
+                '_d_newbitarray',
+                '_d_newarrayi',
+                '_d_new',
+                '_d_monitorrelease',
+                '_d_monitor_prolog',
+                '_d_monitor_handler',
+                '_d_monitorexit',
+                '_d_monitor_epilog',
+                '_d_monitorenter',
+                '_d_local_unwind',
+                '_d_isbaseof2',
+                '_d_isbaseof',
+                '_d_invariant',
+                '_d_interface_vtbl',
+                '_d_interface_cast',
+                '_d_framehandler',
+                '_d_exception_filter',
+                '_d_exception',
+                '_d_dynamic_cast',
+                '_d_delmemory',
+                '_d_delinterface',
+                '_d_delclass',
+                '_d_delarray',
+                '_d_criticalexit',
+                '_d_criticalenter',
+                '_d_create_exception_object',
+                '_d_callfinalizer',
+                '_d_arraysetlengthb',
+                '_d_arraysetlength',
+                '_d_arraysetbit2',
+                '_d_arraysetbit',
+                '_d_arraycopybit',
+                '_d_arraycopy',
+                '_d_arraycatn',
+                '_d_arraycatb',
+                '_d_arraycat',
+                '_d_arraycast_frombit',
+                '_d_arraycast',
+                '_d_arrayappendcb',
+                '_d_arrayappendc',
+                '_d_arrayappendb',
+                '_d_arrayappend',
+            ),
+        4 => array(
+                'wchar',
+                'volatile',
+                'void',
+                'version',
+                'ushort',
+                'unittest',
+                'ulong',
+                'uint',
+                'ucent',
+                'ubyte',
+                'template',
+                'struct',
+                'static',
+                'synchronized',
+                'size_t',
+                'short',
+                'real',
+                'public',
+                'protected',
+                'private',
+                'ptrdiff_t',
+                'package',
+                'override',
+                'long',
+                'int',
+                'ireal',
+                'ifloat',
+                'idouble',
+                'float',
+                'final',
+                'export',
+                'enum',
+                'double',
+                'deprecated',
+                'debug',
+                'dchar',
+                'creal',
+                'const',
+                'class',
+                'char',
+                'cfloat',
+                'cent',
+                'cdouble',
+                'byte',
+                'bool',
+                'bit',
+                'auto',
+                'align',
+                'abstract'
+            )
+        ),
+    'SYMBOLS' => array(
+        '(', ')', '[', ']', '{', '}', '?', '!', ';', ':', ',', '...', '..',
+        '+', '-', '*', '/', '%', '&', '|', '^', '<', '>', '=', '~',
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => true,
+        1 => true,
+        2 => true,
+        3 => true,
+        4 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #b1b100;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #aaaadd; font-weight: bold;',
+            4 => 'color: #993333;'
+            ),
+        'COMMENTS' => array(
+            1=> 'color: #808080; font-style: italic;',
+            2=> 'color: #a1a100;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #006600;',
+            2 => 'color: #006600;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'SCRIPT' => array(
+            ),
+        'REGEXPS' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.',
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>

Index: geshi/delphi.php
===================================================================
RCS file: geshi/delphi.php
diff -N geshi/delphi.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/delphi.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,272 @@
+<?php
+/*************************************************************************************
+ * delphi.php
+ * ----------
+ * Author: Járja Norbert (address@hidden)
+ * Copyright: (c) 2004 Járja Norbert, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/26
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Delphi (Object Pascal) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/11/19 (1.0.3)
+ *   -  Updated the very incomplete keyword and type lists
+ * 2005/09/03 (1.0.2)
+ *   -  Added support for hex numbers and string entities
+ * 2004/11/27 (1.0.1)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'Delphi',
+    'COMMENT_SINGLE' => array(1 => '//'),
+    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
+    'CASE_KEYWORDS' => 0,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case', 
'Class',
+            'Const', 'Constructor', 'Contains', 'Destructor', 'DispInterface', 
'Div',
+            'Do', 'DownTo', 'Else', 'End', 'Except', 'File', 'Finalization',
+            'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In',
+            'Inherited', 'Initialization', 'Inline', 'Interface', 'Is', 
'Label',
+            'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',
+            'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property',
+            'Protected', 'Public', 'Published', 'Raise', 'Record', 'Repeat',
+            'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Then', 
'ThreadVar',
+            'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var', 'Virtual', 
'While',
+            'With', 'Xor', 'assembler', 'cdecl', 'far', 'near', 'pascal', 
'register',
+            'safecall', 'stdcall', 'varargs'
+            ),
+        2 => array(
+            'nil', 'false', 'self', 'true', 'var', 'type', 'const'
+            ),
+        3 => array(
+            'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 
'ArcTan',
+            'Assert', 'AssignFile', 'Assigned', 'BeginThread', 'BlockRead',
+            'BlockWrite', 'Break', 'ChDir', 'Chr', 'Close', 'CloseFile',
+            'CompToCurrency', 'CompToDouble', 'Concat', 'Continue', 'Copy', 
'Cos',
+            'Dec', 'Delete', 'Dispose', 'DoubleToComp', 'EndThread', 
'EnumModules',
+            'EnumResourceModules', 'Eof', 'Eoln', 'Erase', 'ExceptAddr',
+            'ExceptObject', 'Exclude', 'Exit', 'Exp', 'FilePos', 'FileSize',
+            'FillChar', 'Finalize', 'FindClassHInstance', 'FindHInstance',
+            'FindResourceHInstance', 'Flush', 'Frac', 'FreeMem', 'Get8087CW',
+            'GetDir', 'GetLastError', 'GetMem', 'GetMemoryManager',
+            'GetModuleFileName', 'GetVariantManager', 'Halt', 'Hi', 'High',
+            'IOResult', 'Inc', 'Include', 'Initialize', 'Insert', 'Int',
+            'IsMemoryManagerSet', 'IsVariantManagerSet', 'Length', 'Ln', 'Lo', 
'Low',
+            'MkDir', 'Move', 'New', 'Odd', 'OleStrToStrVar', 'OleStrToString', 
'Ord',
+            'PUCS4Chars', 'ParamCount', 'ParamStr', 'Pi', 'Pos', 'Pred', 'Ptr',
+            'Random', 'Randomize', 'Read', 'ReadLn', 'ReallocMem',
+            'ReleaseExceptionObject', 'Rename', 'Reset', 'Rewrite', 'RmDir', 
'Round',
+            'RunError', 'Seek', 'SeekEof', 'SeekEoln', 'Set8087CW', 
'SetLength',
+            'SetLineBreakStyle', 'SetMemoryManager', 'SetString', 'SetTextBuf',
+            'SetVariantManager', 'Sin', 'SizeOf', 'Slice', 'Sqr', 'Sqrt', 
'Str',
+            'StringOfChar', 'StringToOleStr', 'StringToWideChar', 'Succ', 
'Swap',
+            'Trunc', 'Truncate', 'TypeInfo', 'UCS4StringToWideString', 
'UTF8Decode',
+            'UTF8Encode', 'UnicodeToUtf8', 'UniqueString', 'UpCase', 
'Utf8ToAnsi',
+            'Utf8ToUnicode', 'Val', 'VarArrayRedim', 'VarClear',
+            'WideCharLenToStrVar', 'WideCharLenToString', 'WideCharToStrVar',
+            'WideCharToString', 'WideStringToUCS4String', 'Write', 'WriteLn',
+
+            'Abort', 'AddExitProc', 'AddTerminateProc', 'AdjustLineBreaks', 
'AllocMem',
+            'AnsiCompareFileName', 'AnsiCompareStr', 'AnsiCompareText',
+            'AnsiDequotedStr', 'AnsiExtractQuotedStr', 'AnsiLastChar',
+            'AnsiLowerCase', 'AnsiLowerCaseFileName', 'AnsiPos', 
'AnsiQuotedStr',
+            'AnsiSameStr', 'AnsiSameText', 'AnsiStrComp', 'AnsiStrIComp',
+            'AnsiStrLComp', 'AnsiStrLIComp', 'AnsiStrLastChar', 'AnsiStrLower',
+            'AnsiStrPos', 'AnsiStrRScan', 'AnsiStrScan', 'AnsiStrUpper',
+            'AnsiUpperCase', 'AnsiUpperCaseFileName', 'AppendStr', 'AssignStr',
+            'Beep', 'BoolToStr', 'ByteToCharIndex', 'ByteToCharLen', 
'ByteType',
+            'CallTerminateProcs', 'ChangeFileExt', 'CharLength', 
'CharToByteIndex',
+            'CharToByteLen', 'CompareMem', 'CompareStr', 'CompareText', 
'CreateDir',
+            'CreateGUID', 'CurrToStr', 'CurrToStrF', 'CurrentYear', 'Date',
+            'DateTimeToFileDate', 'DateTimeToStr', 'DateTimeToString',
+            'DateTimeToSystemTime', 'DateTimeToTimeStamp', 'DateToStr', 
'DayOfWeek',
+            'DecodeDate', 'DecodeDateFully', 'DecodeTime', 'DeleteFile',
+            'DirectoryExists', 'DiskFree', 'DiskSize', 'DisposeStr', 
'EncodeDate',
+            'EncodeTime', 'ExceptionErrorMessage', 'ExcludeTrailingBackslash',
+            'ExcludeTrailingPathDelimiter', 'ExpandFileName', 
'ExpandFileNameCase',
+            'ExpandUNCFileName', 'ExtractFileDir', 'ExtractFileDrive',
+            'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath',
+            'ExtractRelativePath', 'ExtractShortPathName', 'FileAge', 
'FileClose',
+            'FileCreate', 'FileDateToDateTime', 'FileExists', 'FileGetAttr',
+            'FileGetDate', 'FileIsReadOnly', 'FileOpen', 'FileRead', 
'FileSearch',
+            'FileSeek', 'FileSetAttr', 'FileSetDate', 'FileSetReadOnly', 
'FileWrite',
+            'FinalizePackage', 'FindClose', 'FindCmdLineSwitch', 'FindFirst',
+            'FindNext', 'FloatToCurr', 'FloatToDateTime', 'FloatToDecimal',
+            'FloatToStr', 'FloatToStrF', 'FloatToText', 'FloatToTextFmt',
+            'FmtLoadStr', 'FmtStr', 'ForceDirectories', 'Format', 'FormatBuf',
+            'FormatCurr', 'FormatDateTime', 'FormatFloat', 'FreeAndNil',
+            'GUIDToString', 'GetCurrentDir', 'GetEnvironmentVariable',
+            'GetFileVersion', 'GetFormatSettings', 'GetLocaleFormatSettings',
+            'GetModuleName', 'GetPackageDescription', 'GetPackageInfo', 
'GetTime',
+            'IncAMonth', 'IncMonth', 'IncludeTrailingBackslash',
+            'IncludeTrailingPathDelimiter', 'InitializePackage', 'IntToHex',
+            'IntToStr', 'InterlockedDecrement', 'InterlockedExchange',
+            'InterlockedExchangeAdd', 'InterlockedIncrement', 'IsDelimiter',
+            'IsEqualGUID', 'IsLeapYear', 'IsPathDelimiter', 'IsValidIdent',
+            'Languages', 'LastDelimiter', 'LoadPackage', 'LoadStr', 
'LowerCase',
+            'MSecsToTimeStamp', 'NewStr', 'NextCharIndex', 'Now', 
'OutOfMemoryError',
+            'QuotedStr', 'RaiseLastOSError', 'RaiseLastWin32Error', 
'RemoveDir',
+            'RenameFile', 'ReplaceDate', 'ReplaceTime', 'SafeLoadLibrary',
+            'SameFileName', 'SameText', 'SetCurrentDir', 'ShowException', 
'Sleep',
+            'StrAlloc', 'StrBufSize', 'StrByteType', 'StrCat', 'StrCharLength',
+            'StrComp', 'StrCopy', 'StrDispose', 'StrECopy', 'StrEnd', 'StrFmt',
+            'StrIComp', 'StrLCat', 'StrLComp', 'StrLCopy', 'StrLFmt', 
'StrLIComp',
+            'StrLen', 'StrLower', 'StrMove', 'StrNew', 'StrNextChar', 
'StrPCopy',
+            'StrPLCopy', 'StrPas', 'StrPos', 'StrRScan', 'StrScan', 
'StrToBool',
+            'StrToBoolDef', 'StrToCurr', 'StrToCurrDef', 'StrToDate', 
'StrToDateDef',
+            'StrToDateTime', 'StrToDateTimeDef', 'StrToFloat', 'StrToFloatDef',
+            'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 
'StrToTime',
+            'StrToTimeDef', 'StrUpper', 'StringReplace', 'StringToGUID', 
'Supports',
+            'SysErrorMessage', 'SystemTimeToDateTime', 'TextToFloat', 'Time',
+            'TimeStampToDateTime', 'TimeStampToMSecs', 'TimeToStr', 'Trim',
+            'TrimLeft', 'TrimRight', 'TryEncodeDate', 'TryEncodeTime',
+            'TryFloatToCurr', 'TryFloatToDateTime', 'TryStrToBool', 
'TryStrToCurr',
+            'TryStrToDate', 'TryStrToDateTime', 'TryStrToFloat', 'TryStrToInt',
+            'TryStrToInt64', 'TryStrToTime', 'UnloadPackage', 'UpperCase',
+            'WideCompareStr', 'WideCompareText', 'WideFmtStr', 'WideFormat',
+            'WideFormatBuf', 'WideLowerCase', 'WideSameStr', 'WideSameText',
+            'WideUpperCase', 'Win32Check', 'WrapText',
+
+            'ActivateClassGroup', 'AllocateHwnd', 'BinToHex', 
'CheckSynchronize',
+            'CollectionsEqual', 'CountGenerations', 'DeallocateHwnd', 
'EqualRect',
+            'ExtractStrings', 'FindClass', 'FindGlobalComponent', 'GetClass',
+            'GroupDescendantsWith', 'HexToBin', 'IdentToInt',
+            'InitInheritedComponent', 'IntToIdent', 'InvalidPoint',
+            'IsUniqueGlobalComponentName', 'LineStart', 'ObjectBinaryToText',
+            'ObjectResourceToText', 'ObjectTextToBinary', 
'ObjectTextToResource',
+            'PointsEqual', 'ReadComponentRes', 'ReadComponentResEx',
+            'ReadComponentResFile', 'Rect', 'RegisterClass', 
'RegisterClassAlias',
+            'RegisterClasses', 'RegisterComponents', 'RegisterIntegerConsts',
+            'RegisterNoIcon', 'RegisterNonActiveX', 'SmallPoint', 
'StartClassGroup',
+            'TestStreamFormat', 'UnregisterClass', 'UnregisterClasses',
+            'UnregisterIntegerConsts', 'UnregisterModuleClasses',
+            'WriteComponentResFile',
+
+            'ArcCos', 'ArcCosh', 'ArcCot', 'ArcCotH', 'ArcCsc', 'ArcCscH', 
'ArcSec',
+            'ArcSecH', 'ArcSin', 'ArcSinh', 'ArcTan2', 'ArcTanh', 'Ceil',
+            'CompareValue', 'Cosecant', 'Cosh', 'Cot', 'CotH', 'Cotan', 'Csc', 
'CscH',
+            'CycleToDeg', 'CycleToGrad', 'CycleToRad', 'DegToCycle', 
'DegToGrad',
+            'DegToRad', 'DivMod', 'DoubleDecliningBalance', 'EnsureRange', 
'Floor',
+            'Frexp', 'FutureValue', 'GetExceptionMask', 'GetPrecisionMode',
+            'GetRoundMode', 'GradToCycle', 'GradToDeg', 'GradToRad', 'Hypot',
+            'InRange', 'IntPower', 'InterestPayment', 'InterestRate',
+            'InternalRateOfReturn', 'IsInfinite', 'IsNan', 'IsZero', 'Ldexp', 
'LnXP1',
+            'Log10', 'Log2', 'LogN', 'Max', 'MaxIntValue', 'MaxValue', 'Mean',
+            'MeanAndStdDev', 'Min', 'MinIntValue', 'MinValue', 
'MomentSkewKurtosis',
+            'NetPresentValue', 'Norm', 'NumberOfPeriods', 'Payment', 
'PeriodPayment',
+            'Poly', 'PopnStdDev', 'PopnVariance', 'Power', 'PresentValue',
+            'RadToCycle', 'RadToDeg', 'RadToGrad', 'RandG', 'RandomRange', 
'RoundTo',
+            'SLNDepreciation', 'SYDDepreciation', 'SameValue', 'Sec', 'SecH',
+            'Secant', 'SetExceptionMask', 'SetPrecisionMode', 'SetRoundMode', 
'Sign',
+            'SimpleRoundTo', 'SinCos', 'Sinh', 'StdDev', 'Sum', 'SumInt',
+            'SumOfSquares', 'SumsAndSquares', 'Tan', 'Tanh', 'TotalVariance',
+            'Variance'
+            ),
+        4 => array(
+            'AnsiChar', 'AnsiString', 'Bool', 'Boolean', 'Byte', 'ByteBool', 
'Cardinal', 'Char',
+            'Comp', 'Currency', 'DWORD', 'Double', 'Extended', 'Int64', 
'Integer', 'IUnknown',
+            'LongBool', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 
'PBool', 'PBoolean', 'PByte',
+            'PByteArray', 'PCardinal', 'PChar', 'PComp', 'PCurrency', 
'PDWORD', 'PDate', 'PDateTime',
+            'PDouble', 'PExtended', 'PInt64', 'PInteger', 'PLongInt', 
'PLongWord', 'Pointer', 'PPointer',
+            'PShortInt', 'PShortString', 'PSingle', 'PSmallInt', 'PString', 
'PHandle', 'PVariant', 'PWord',
+            'PWordArray', 'PWordBool', 'PWideChar', 'PWideString', 'Real', 
'Real48', 'ShortInt', 'ShortString',
+            'Single', 'SmallInt', 'String', 'TClass', 'TDate', 'TDateTime', 
'TextFile', 'THandle',
+            'TObject', 'TTime', 'Variant', 'WideChar', 'WideString', 'Word', 
'WordBool'
+            ),
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => true,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #000000; font-weight: bold;',
+            2 => 'color: #000000; font-weight: bold;',
+            3 => 'color: #000066;',
+            4 => 'color: #993333;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            1 => 'color: #006600;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #9ac;',
+            1 => 'color: #ff0000;'
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+        3 => '',
+        4 => ''
+        ),
+    'OOLANG' => true,
+    'OBJECT_SPLITTERS' => array(
+        1 => '.'
+        ),
+    'REGEXPS' => array(
+        0 => '\$[0-9a-fA-F]+',
+        1 => '\#\$?[0-9]{1,3}'
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>

Index: geshi/diff.php
===================================================================
RCS file: geshi/diff.php
diff -N geshi/diff.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/diff.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,186 @@
+<?php
+/*************************************************************************************
+ * diff.php
+ * --------
+ * Author: Conny Brunnkvist (address@hidden), W. Tasin (address@hidden)
+ * Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/12/29
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Diff-output language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/02/27
+ *  -  changing language file to use matching of start (^) and end ($) (wt)
+ * 
+ * 2004/12/29 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2006/02/27)
+ * -------------------------
+ *    
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+
+$language_data = array (
+       'LANG_NAME' => 'Diff',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array(),
+       'ESCAPE_CHAR' => ' ',
+       'KEYWORDS' => array(
+                       1 => array(
+                               '\ No newline at end of file'
+                       ),
+                       2 => array(
+                               '***************' /* This only seems to works 
in some cases? */
+                       ),
+               ),
+       'SYMBOLS' => array(
+               ),
+       'CASE_SENSITIVE' => array(
+        1 => false,
+        2 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #aaaaaa; font-style: italic;',
+                       2 => 'color: #dd6611;',
+                       ),
+               'COMMENTS' => array(
+            ),
+               'ESCAPE_CHAR' => array(
+            0 => ''
+                       ),
+               'BRACKETS' => array(
+            0 => ''
+                       ),
+               'STRINGS' => array(
+            0 => ''
+                       ),
+               'NUMBERS' => array(
+            0 => ''
+                       ),
+               'METHODS' => array(
+            0 => ''
+                       ),
+               'SYMBOLS' => array(
+            0 => ''
+                       ),
+               'SCRIPT' => array(
+            0 => ''
+                       ),
+        'REGEXPS' => array(
+                       0 => 'color: #440088;',
+                       1 => 'color: #991111;',
+                       2 => 'color: #00b000;',
+            3 => 'color: #888822;', 
+            4 => 'color: #888822;', 
+            5 => 'color: #0011dd;', 
+            6 => 'color: #440088;', 
+                       7 => 'color: #991111;',
+            8 => 'color: #00b000;', 
+                       9 => 'color: #888822;',
+                        ),
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTER' => '',
+       'REGEXPS' => array(
+                       0 => "[0-9,]+[acd][0-9,]+",
+                       1 => array(
+                       GESHI_SEARCH => '^\\&lt;.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       2 => array(
+                       GESHI_SEARCH => '^\\&gt;.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       3 => array(
+                       GESHI_SEARCH => '^[\\-]{3}\\s.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       4 => array(
+                       GESHI_SEARCH => '^(\\+){3}\\s.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       5 => array(
+                       GESHI_SEARCH => '^\\!.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       6 => array(
+                       GESHI_SEARCH => 'address@hidden',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       7 => array(
+                       GESHI_SEARCH => '^\\-.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       8 => array(
+                       GESHI_SEARCH => '^\\+.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+                       9 => array(
+                       GESHI_SEARCH => '^(\\*){3}\\s.*$',
+                       GESHI_REPLACE => '\\0',
+                       GESHI_MODIFIERS => 'm',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+       ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/div.php
===================================================================
RCS file: geshi/div.php
diff -N geshi/div.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/div.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,128 @@
+<?php
+/*************************************************************************************
+ * div.php
+ * ---------------------------------
+ * Author: Gabriel Lorenzo (address@hidden)
+ * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/06/19
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * DIV language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/06/22 (1.0.0)
+ *  -  First Release, includes "2nd gen" ELSEIF statement
+ *
+ * TODO (updated 2005/06/22)
+ * -------------------------
+ *  -  I'm pretty satisfied with this, so nothing for now... :P
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'DIV',
+       'COMMENT_SINGLE' => array(1 => '//'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       
'while','until','to','switch','step','return','repeat','loop','if','from','frame','for','end','elseif',
+                       
'else','default','debug','continue','clone','case','break','begin'
+                       ),
+               2 => array(
+                       
'xor','whoami','type','sizeof','pointer','or','offset','not','neg','mod','id','dup','and','_ne','_lt',
+                       '_le','_gt','_ge','_eq'
+                       ),
+               3 => array(
+                       
'setup_program','program','process','private','local','import','global','function','const',
+                       'compiler_options'
+                       ),
+               4 => array(
+                       'word','struct','string','int','byte'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               
'(',')','[',']','=','+','-','*','/','!','%','^','&',':',';',',','<','>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0040b1;',
+                       2 => 'color: #000000;',
+                       3 => 'color: #000066; font-weight: bold;',
+                       4 => 'color: #993333;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => ''
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #44aa44;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #202020;',
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #44aa44;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTER' => '',
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/dos.php
===================================================================
RCS file: geshi/dos.php
diff -N geshi/dos.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/dos.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,185 @@
+<?php
+/*************************************************************************************
+ * dos.php
+ * -------
+ * Author: Alessandro Staltari (address@hidden)
+ * Copyright: (c) 2005 Alessandro Staltari 
(http://www.geocities.com/SiliconValley/Vista/8155/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/07/05
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * DOS language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/07/05 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2005/07/05)
+ * -------------------------
+ *
+ * - Find a way to higlight %*
+ * - Highlight pipes and redirection (do we really need this?)
+ * - Add missing keywords.
+ * - Find a good hyperlink for keywords.
+ * - Improve styles.
+ *
+ * KNOWN ISSUES (updated 2005/07/07)
+ * ---------------------------------
+ *
+ * - Doesn't even try to handle spaces in variables name or labels (I can't
+ *   find a reliable way to establish if a sting is a name or not, in some
+ *   cases it depends on the contex or enviroment status).
+ * - Doesn't handle %%[letter] pseudo variable used inside FOR constructs
+ *   (it should be done only into its scope: how to handle variable it?).
+ * - Doesn't handle %~[something] pseudo arguments.
+ * - If the same keyword is placed at the end of the line and the
+ *   beginning of the next, the second occourrence is not highlighted
+ *   (this should be a GeSHi bug, not related to the language definition).
+ * - I can't avoid to have keyword highlighted even when they are not used
+ *   as keywords but, for example, as arguments to the echo command.
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'DOS',
+       'COMMENT_SINGLE' => array(1 =>'REM', 2 => '@REM'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array(),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+           /* Flow control keywords */
+               1 => array(
+                       'if', 'else', 'goto',
+                       'for', 'in', 'do',
+                       'call', 'exit'
+                       ),
+           /* IF statement keywords */
+               2 => array(
+                       'not', 'exist', 'errorlevel',
+                       'defined',
+                       'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'
+                       ),
+           /* Internal commands */
+               3 => array(
+                       'shift',
+                       'cd', 'dir', 'echo',
+                       'setlocal', 'endlocal', 'set',
+                       'pause'
+                       ),
+           /* Special files */
+
+               4 => array(
+                       'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',
+                       'com4', 'com3', 'com2', 'com1', 'aux'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #00b100; font-weight: bold;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #b1b100; font-weight: bold;',
+                       4 => 'color: #0000ff; font-weight: bold;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+/*                     0 => 'color: #cc66cc;' */
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #33cc33;',
+                       1 => 'color: #33cc33;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #b100b1; font-weight: bold;',
+                       1 => 'color: #448844;',
+                       2 => 'color: #448888;'
+                       )
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+    'URLS' => array(
+         1 => 'http://www.ss64.com/nt/{FNAME}.html',
+         2 => 'http://www.ss64.com/nt/{FNAME}.html',
+         3 => 'http://www.ss64.com/nt/{FNAME}.html',
+         4 => 'http://www.ss64.com/nt/{FNAME}.html'
+         ),
+       'REGEXPS' => array(
+       /* Label */
+           0 => array(
+/*             GESHI_SEARCH => 
'((?si:address@hidden|\s+:)[\s]*)((?<!\n)[^\s\n]*)',*/
+               GESHI_SEARCH => 
'((?si:address@hidden|\s+:)[\s]*)((?<!\n)[^\n]*)',
+               GESHI_REPLACE => '\\2',
+               GESHI_MODIFIERS => 'si',
+               GESHI_BEFORE => '\\1',
+               GESHI_AFTER => ''
+               ),
+       /* Variable assignement */
+           1 => array(
+/*             GESHI_SEARCH => 
'(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\s\n]+)([\s]*=)',*/
+               GESHI_SEARCH => 
'(SET[\s]+(?si:/A[\s]+|/P[\s]+|))([^=\n]+)([\s]*=)',
+               GESHI_REPLACE => '\\2',
+               GESHI_MODIFIERS => 'si',
+               GESHI_BEFORE => '\\1',
+               GESHI_AFTER => '\\3'
+               ),
+       /* Arguments or variable evaluation */
+           2 => array(
+/*             GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/
+               GESHI_SEARCH => '(%)([\d*]|[^%]*(?=%))((?<!%\d)%|)',
+               GESHI_REPLACE => '\\2',
+               GESHI_MODIFIERS => 'si',
+               GESHI_BEFORE => '\\1',
+               GESHI_AFTER => '\\3'
+               )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/eiffel.php
===================================================================
RCS file: geshi/eiffel.php
diff -N geshi/eiffel.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/eiffel.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,397 @@
+<?php
+/*************************************************************************************
+ * eiffel.php
+ * ----------
+ * Author: Zoran Simic (address@hidden)
+ * Copyright: (c) 2005 Zoran Simic
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/06/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Eiffel language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/06/30 (1.0.7)
+ *  -  Initial release
+ *
+ * TODO (updated 2005/06/30)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+ $language_data = array (
+       'LANG_NAME' => 'Eiffel',
+       'COMMENT_SINGLE' => array(1 => '--'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '%',
+       'KEYWORDS' => array(
+               1 => array(
+                       'separate',
+                       'invariant',
+                       'inherit',
+                       'indexing',
+                       'feature',
+                       'expanded',
+                       'deferred',
+                       'class'
+                       ),
+               2 => array(
+                       'xor',
+                       'when',
+                       'variant',
+                       'until',
+                       'unique',
+                       'undefine',
+                       'then',
+                       'strip',
+                       'select',
+                       'retry',
+                       'rescue',
+                       'require',
+                       'rename',
+                       'reference',
+                       'redefine',
+                       'prefix',
+                       'or',
+                       'once',
+                       'old',
+                       'obsolete',
+                       'not',
+                       'loop',
+                       'local',
+                       'like',
+                       'is',
+                       'inspect',
+                       'infix',
+                       'include',
+                       'implies',
+                       'if',
+                       'frozen',
+                       'from',
+                       'external',
+                       'export',
+                       'ensure',
+                       'end',
+                       'elseif',
+                       'else',
+                       'do',
+                       'creation',
+                       'create',
+                       'check',
+                       'as',
+                       'and',
+                       'alias',
+                       'agent'
+                       ),
+               3 => array(
+                       'Void',
+                       'True',
+                       'Result',
+                       'Precursor',
+                       'False',
+                       'Current'
+                       ),
+               4 => array(
+                       'UNIX_SIGNALS',
+                       'UNIX_FILE_INFO',
+                       'UNBOUNDED',
+                       'TWO_WAY_TREE_CURSOR',
+                       'TWO_WAY_TREE',
+                       'TWO_WAY_SORTED_SET',
+                       'TWO_WAY_LIST',
+                       'TWO_WAY_CURSOR_TREE',
+                       'TWO_WAY_CIRCULAR',
+                       'TWO_WAY_CHAIN_ITERATOR',
+                       'TUPLE',
+                       'TREE',
+                       'TRAVERSABLE',
+                       'TO_SPECIAL',
+                       'THREAD_CONTROL',
+                       'THREAD_ATTRIBUTES',
+                       'THREAD',
+                       'TABLE',
+                       'SUBSET',
+                       'STRING_HANDLER',
+                       'STRING',
+                       'STREAM',
+                       'STORABLE',
+                       'STD_FILES',
+                       'STACK',
+                       'SPECIAL',
+                       'SORTED_TWO_WAY_LIST',
+                       'SORTED_STRUCT',
+                       'SORTED_LIST',
+                       'SINGLE_MATH',
+                       'SET',
+                       'SEQUENCE',
+                       'SEQ_STRING',
+                       'SEMAPHORE',
+                       'ROUTINE',
+                       'RESIZABLE',
+                       'RECURSIVE_TREE_CURSOR',
+                       'RECURSIVE_CURSOR_TREE',
+                       'REAL_REF',
+                       'REAL',
+                       'RAW_FILE',
+                       'RANDOM',
+                       'QUEUE',
+                       'PROXY',
+                       'PROFILING_SETTING',
+                       'PROCEDURE',
+                       'PRIORITY_QUEUE',
+                       'PRIMES',
+                       'PRECOMP',
+                       'POINTER_REF',
+                       'POINTER',
+                       'PLATFORM',
+                       'PLAIN_TEXT_FILE',
+                       'PATH_NAME',
+                       'PART_SORTED_TWO_WAY_LIST',
+                       'PART_SORTED_SET',
+                       'PART_SORTED_LIST',
+                       'PART_COMPARABLE',
+                       'OPERATING_ENVIRONMENT',
+                       'ONCE_CONTROL',
+                       'OBJECT_OWNER',
+                       'OBJECT_CONTROL',
+                       'NUMERIC',
+                       'NONE',
+                       'MUTEX',
+                       'MULTI_ARRAY_LIST',
+                       'MULTAR_LIST_CURSOR',
+                       'MEMORY',
+                       'MEM_INFO',
+                       'MEM_CONST',
+                       'MATH_CONST',
+                       'LIST',
+                       'LINKED_TREE_CURSOR',
+                       'LINKED_TREE',
+                       'LINKED_STACK',
+                       'LINKED_SET',
+                       'LINKED_QUEUE',
+                       'LINKED_PRIORITY_QUEUE',
+                       'LINKED_LIST_CURSOR',
+                       'LINKED_LIST',
+                       'LINKED_CURSOR_TREE',
+                       'LINKED_CIRCULAR',
+                       'LINKABLE',
+                       'LINEAR_ITERATOR',
+                       'LINEAR',
+                       'ITERATOR',
+                       'IO_MEDIUM',
+                       'INTERNAL',
+                       'INTEGER_REF',
+                       'INTEGER_INTERVAL',
+                       'INTEGER',
+                       'INFINITE',
+                       'INDEXABLE',
+                       'IDENTIFIED_CONTROLLER',
+                       'IDENTIFIED',
+                       'HIERARCHICAL',
+                       'HEAP_PRIORITY_QUEUE',
+                       'HASHABLE',
+                       'HASH_TABLE_CURSOR',
+                       'HASH_TABLE',
+                       'GENERAL',
+                       'GC_INFO',
+                       'FUNCTION',
+                       'FORMAT_INTEGER',
+                       'FORMAT_DOUBLE',
+                       'FIXED_TREE',
+                       'FIXED_LIST',
+                       'FIXED',
+                       'FINITE',
+                       'FILE_NAME',
+                       'FILE',
+                       'FIBONACCI',
+                       'EXECUTION_ENVIRONMENT',
+                       'EXCEPTIONS',
+                       'EXCEP_CONST',
+                       'DYNAMIC_TREE',
+                       'DYNAMIC_LIST',
+                       'DYNAMIC_CIRCULAR',
+                       'DYNAMIC_CHAIN',
+                       'DOUBLE_REF',
+                       'DOUBLE_MATH',
+                       'DOUBLE',
+                       'DISPENSER',
+                       'DIRECTORY_NAME',
+                       'DIRECTORY',
+                       'DECLARATOR',
+                       'DEBUG_OUTPUT',
+                       'CURSOR_TREE_ITERATOR',
+                       'CURSOR_TREE',
+                       'CURSOR_STRUCTURE',
+                       'CURSOR',
+                       'COUNTABLE_SEQUENCE',
+                       'COUNTABLE',
+                       'CONTAINER',
+                       'CONSOLE',
+                       'CONDITION_VARIABLE',
+                       'COMPARABLE_STRUCT',
+                       'COMPARABLE_SET',
+                       'COMPARABLE',
+                       'COMPACT_TREE_CURSOR',
+                       'COMPACT_CURSOR_TREE',
+                       'COLLECTION',
+                       'CIRCULAR_CURSOR',
+                       'CIRCULAR',
+                       'CHARACTER_REF',
+                       'CHARACTER',
+                       'CHAIN',
+                       'CELL',
+                       'BOX',
+                       'BOUNDED_STACK',
+                       'BOUNDED_QUEUE',
+                       'BOUNDED',
+                       'BOOLEAN_REF',
+                       'BOOLEAN',
+                       'BOOL_STRING',
+                       'BIT_REF',
+                       'BINARY_TREE',
+                       'BINARY_SEARCH_TREE_SET',
+                       'BINARY_SEARCH_TREE',
+                       'BILINEAR',
+                       'BI_LINKABLE',
+                       'BASIC_ROUTINES',
+                       'BAG',
+                       'ASCII',
+                       'ARRAYED_TREE',
+                       'ARRAYED_STACK',
+                       'ARRAYED_QUEUE',
+                       'ARRAYED_LIST_CURSOR',
+                       'ARRAYED_LIST',
+                       'ARRAYED_CIRCULAR',
+                       'ARRAY2',
+                       'ARRAY',
+                       'ARGUMENTS',
+                       'ANY',
+                       'ACTIVE'
+                       ),
+               5 => array(
+                       'yes',
+                       'visible',
+                       'trace',
+                       'system',
+                       'root',
+                       'profile',
+                       'override_cluster',
+                       'object',
+                       'no',
+                       'multithreaded',
+                       'msil_generation_type',
+                       'line_generation',
+                       'library',
+                       'inlining_size',
+                       'inlining',
+                       'include_path',
+                       'il_verifiable',
+                       'exclude',
+                       'exception_trace',
+                       'dynamic_runtime',
+                       'dotnet_naming_convention',
+                       'disabled_debug',
+                       'default',
+                       'debug',
+                       'dead_code_removal',
+                       'console_application',
+                       'cluster',
+                       'cls_compliant',
+                       'check_vape',
+                       'assertion',
+                       'array_optimization',
+                       'all',
+                       'address_expression'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', 
'|', ':',
+               '(', ')', '{', '}', '[', ']', '#'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => true,
+               5 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0600FF; background-color: #FFF0E0; 
font-weight: bold;',
+                       2 => 'color: #0600FF; font-weight: bold;',
+                       3 => 'color: #800080;',
+                       4 => 'color: #800000',
+                       5 => 'color: #603000;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #008000; font-style: italic;',
+                       'MULTI' => ''
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #005070; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #FF0000;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #0080A0;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #FF0000;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #000060;',
+                       2 => 'color: #000050;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #600000;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => 
'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAME}&btnI=I%27m+Feeling+Lucky'
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
+

Index: geshi/fortran.php
===================================================================
RCS file: geshi/fortran.php
diff -N geshi/fortran.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/fortran.php   25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,158 @@
+<?php
+/*************************************************************************************
+ * fortran.php
+ * -----------
+ * Author: Cedric Arrabie (address@hidden)
+ * Copyright: (C) 2006 Cetric Arrabie
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/04/22
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ * 
+ * Fortran language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/04/20 (1.0.0)
+ *   -  First Release
+ *
+ * TODO 
+ * -------------------------
+ *  -  Get a list of inbuilt functions to add (and explore fortran more
+ *     to complete this rather bare language file)
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME'=>'Fortran',
+       'COMMENT_SINGLE'=> array(1 =>'!',2=>'Cf2py'),
+       'COMMENT_MULTI'=> array(),
+       'CASE_KEYWORDS'=> GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS'=> array("'",'"'),
+       'ESCAPE_CHAR'=>'\\',
+       'KEYWORDS'=> array(
+               1 => array(
+                       
'allocate','block','call','case','contains','continue','cycle','deallocate',
+                       
'default','do','else','elseif','elsewhere','end','enddo','endif','endwhere',
+                       
'entry','exit','function','go','goto','if','interface','module','nullify','only',
 
+                       
'operator','procedure','program','recursive','return','select','stop', 
+                       'subroutine','then','to','where','while',
+            'access','action','advance','blank','blocksize','carriagecontrol',
+                       
'delim','direct','eor','err','exist','file','flen','fmt','form','formatted',
+                       
'iostat','name','named','nextrec','nml','number','opened','pad','position',
+                       
'readwrite','recl','sequential','status','unformatted','unit'
+                       ),
+               2 => array(
+                       
'.AND.','.EQ.','.EQV.','.GE.','.GT.','.LE.','.LT.','.NE.','.NEQV.','.NOT.',
+                       '.OR.','.TRUE.','.FALSE.'
+                       ),
+               3 => array(
+                       
'allocatable','character','common','complex','data','dimension','double',
+                       
'equivalence','external','implicit','in','inout','integer','intent','intrinsic',
+                       
'kind','logical','namelist','none','optional','out','parameter','pointer',
+                       
'private','public','real','result','save','sequence','target','type','use'
+                       ),
+               4 => array(
+                       
'abs','achar','acos','adjustl','adjustr','aimag','aint','all','allocated',
+                       
'anint','any','asin','atan','atan2','bit_size','break','btest','carg',
+                       
'ceiling','char','cmplx','conjg','cos','cosh','cpu_time','count','cshift',
+                       
'date_and_time','dble','digits','dim','dot_product','dprod dvchk',
+                       
'eoshift','epsilon','error','exp','exponent','floor','flush','fraction',
+                       
'getcl','huge','iachar','iand','ibclr','ibits','ibset','ichar','ieor','index',
+                       
'int','intrup','invalop','ior','iostat_msg','ishft','ishftc','lbound',
+                       
'len','len_trim','lge','lgt','lle','llt','log','log10','matmul','max','maxexponent',
+                       
'maxloc','maxval','merge','min','minexponent','minloc','minval','mod','modulo',
+                       
'mvbits','nbreak','ndperr','ndpexc','nearest','nint','not','offset','ovefl',
+                       
'pack','precfill','precision','present','product','prompt','radix',
+                       
'random_number','random_seed','range','repeat','reshape','rrspacing',
+                       
'scale','scan','segment','selected_int_kind','selected_real_kind',
+                       
'set_exponent','shape','sign','sin','sinh','size','spacing','spread','sqrt',
+                       'sum 
system','system_clock','tan','tanh','timer','tiny','transfer','transpose',
+                       'trim','ubound','undfl','unpack','val','verify'
+                       ),
+               ),
+       'SYMBOLS'=> array(
+               '(',')','{','}','[',']','=','+','-','*','/','!','%','^','&',':'
+               ),
+       'CASE_SENSITIVE'=> array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES'=> array(
+               'KEYWORDS'=> array(
+                       1 =>'color: #b1b100;',
+                       2 =>'color: #000000; font-weight: bold;',
+                       3 =>'color: #000066;',
+                       4 =>'color: #993333;'
+                       ),
+               'COMMENTS'=> array(
+                       1 =>'color: #808080; font-style: italic;',
+                       2 =>'color: #339933;',
+                       'MULTI'=>'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR'=> array(
+                       0 =>'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS'=> array(
+                       0 =>'color: #66cc66;'
+                       ),
+               'STRINGS'=> array(
+                       0 =>'color: #ff0000;'
+                       ),
+               'NUMBERS'=> array(
+                       0 =>'color: #cc66cc;'
+                       ),
+               'METHODS'=> array(
+                       1 =>'color: #202020;',
+                       2 =>'color: #202020;'
+                       ),
+               'SYMBOLS'=> array(
+                       0 =>'color: #66cc66;'
+                       ),
+               'REGEXPS'=> array(
+                       ),
+               'SCRIPT'=> array(
+                       )
+               ),
+       'URLS'=> array(
+               1 =>'',
+               2 =>'',
+               3 =>'',
+               4 =>''
+               ),
+       'OOLANG'=> true,
+       'OBJECT_SPLITTERS'=> array(
+               1 =>'.',
+               2 =>'::'
+               ),
+       'REGEXPS'=> array(
+               ),
+       'STRICT_MODE_APPLIES'=> GESHI_NEVER,
+       'SCRIPT_DELIMITERS'=> array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK'=> array(
+               )
+);
+
+?>

Index: geshi/freebasic.php
===================================================================
RCS file: geshi/freebasic.php
diff -N geshi/freebasic.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/freebasic.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,137 @@
+<?php
+/*************************************************************************************
+ * freebasic.php
+ * -------------
+ * Author: Roberto Rossi 
+ * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)
+ * Release Version: 1.0.7.14
+ * Date Started: 2005/08/19
+ *
+ * FreeBasic (http://www.freebasic.net/) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/19 (1.0.0)
+ *  -  First Release
+ *
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ $language_data = array (
+       'LANG_NAME' => 'FreeBasic',
+       'COMMENT_SINGLE' => array(1 => "'", 2 => '#'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+    "append", "as", "asc", "asin", "asm", "atan2", "atn", "beep", "bin", 
"binary", "bit",
+    "bitreset", "bitset", "bload", "bsave", "byref", "byte", "byval", "call",
+    "callocate", "case", "cbyte", "cdbl", "cdecl", "chain", "chdir", "chr", 
"cint",
+    "circle", "clear", "clng", "clngint", "close", "cls", "color", "command",
+    "common", "cons", "const", "continue", "cos", "cshort", "csign", "csng",
+    "csrlin", "cubyte", "cuint", "culngint", "cunsg", "curdir", "cushort", 
"custom",
+    "cvd", "cvi", "cvl", "cvlongint", "cvs", "cvshort", "data", "date",
+    "deallocate", "declare", "defbyte", "defdbl", "defined", "defint", 
"deflng",
+    "deflngint", "defshort", "defsng", "defstr", "defubyte", "defuint",
+    "defulngint", "defushort", "dim", "dir", "do", "double", "draw", 
"dylibload",
+    "dylibsymbol", "else", "elseif", "end", "enum", "environ", 'environ$', 
"eof",
+    "eqv", "erase", "err", "error", "exec", "exepath", "exit", "exp", "export",
+    "extern", "field", "fix", "flip", "for", "fre", "freefile", "function", 
"get",
+    "getjoystick", "getkey", "getmouse", "gosub", "goto", "hex", "hibyte", 
"hiword",
+    "if", "iif", "imagecreate", "imagedestroy", "imp", "inkey", "inp", "input",
+    "instr", "int", "integer", "is", "kill", "lbound", "lcase", "left", "len",
+    "let", "lib", "line", "lobyte", "loc", "local", "locate", "lock", "lof", 
"log",
+    "long", "longint", "loop", "loword", "lset", "ltrim", "mid", "mkd", 
"mkdir",
+    "mki", "mkl", "mklongint", "mks", "mkshort", "mod", "multikey", 
"mutexcreate",
+    "mutexdestroy", "mutexlock", "mutexunlock", "name", "next", "not", "oct", 
"on",
+    "once", "open", "option", "or", "out", "output", "overload", "paint", 
"palette",
+    "pascal", "pcopy", "peek", "peeki", "peeks", "pipe", "pmap", "point", 
"pointer",
+    "poke", "pokei", "pokes", "pos", "preserve", "preset", "print", "private",
+    "procptr", "pset", "ptr", "public", "put", "random", "randomize", "read",
+    "reallocate", "redim", "rem", "reset", "restore", "resume", "resume", 
"next",
+    "return", "rgb", "rgba", "right", "rmdir", "rnd", "rset", "rtrim", "run",
+    "sadd", "screen", "screencopy", "screeninfo", "screenlock", "screenptr",
+    "screenres", "screenset", "screensync", "screenunlock", "seek", 
"statement",
+    "seek", "function", "selectcase", "setdate", "setenviron", "setmouse",
+    "settime", "sgn", "shared", "shell", "shl", "short", "shr", "sin", 
"single",
+    "sizeof", "sleep", "space", "spc", "sqr", "static", "stdcall", "step", 
"stop",
+    "str", "string", "string", "strptr", "sub", "swap", "system", "tab", "tan",
+    "then", "threadcreate", "threadwait", "time", "time", "timer", "to", 
"trans",
+    "trim", "type", "ubound", "ubyte", "ucase", "uinteger", "ulongint", 
"union",
+    "unlock", "unsigned", "until", "ushort", "using", "va_arg", "va_first",
+    "va_next", "val", "val64", "valint", "varptr", "view", "viewprint", "wait",
+    "wend", "while", "width", "window", "windowtitle", "with", "write", "xor",
+    "zstring", "explicit", "escape", "true", "false"
+      )
+               ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080;',
+      2 => 'color: #339933;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/gml.php
===================================================================
RCS file: geshi/gml.php
diff -N geshi/gml.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/gml.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,504 @@
+<?php
+/*************************************************************************************
+ * gml.php
+ * --------
+ * Author: José Jorge Enríquez (address@hidden)
+ * Copyright: (c) 2005 José Jorge Enríquez Rodríguez 
(http://www.zonamakers.com)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/06/21
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * GML language file for GeSHi.
+ *
+ * GML (Game Maker Language) is a script language that is built-in into Game 
Maker,
+ * a game creation program, more info about Game Maker can be found at
+ * http://www.gamemaker.nl/
+ * All GML keywords were extracted from the Game Maker HTML Help file using a 
PHP
+ * script (one section at a time). I love PHP for saving me that bunch of work 
:P!.
+ * I think all GML functions have been indexed here, but I'm not sure about 
it, so
+ * please let me know of any issue you may find.
+ *
+ * CHANGES
+ * -------
+ * 2005/11/11
+ *  -  Changed 'CASE_KEYWORDS' fom 'GESHI_CAPS_LOWER' to 
'GESHI_CAPS_NO_CHANGE',
+ *     so that MCI_command appears correctly (the only GML function using 
capitals).
+ *  -  Changed 'CASE_SENSITIVE' options, 'GESHI_COMMENTS' from true to false 
and all
+ *     of the others from false to true.
+ *  -  Deleted repeated entries.
+ *  -  div and mod are language keywords, moved (from symbols) to the 
appropiate section (1).
+ *  -  Moved self, other, all, noone and global identifiers to language 
keywords section 1.
+ *  -  Edited this file lines to a maximum width of 100 characters (as stated 
in
+ *     the GeSHi docs). Well, not strictly to 100 but around it.
+ *  -  Corrected some minor issues (the vk_f1...vk_f12 keys and similar).
+ *  -  Deleted the KEYWORDS=>5 and KEYWORDS=>6 sections (actually, they were 
empty).
+ *     I was planning of using those for the GML functions available only in 
the
+ *     registered version of the program, but not anymore.
+ *
+ * 2005/06/26 (1.0.3)
+ *  -  First Release.
+ *
+ * TODO (updated 2005/11/11)
+ * -------------------------
+ *  -  Test it for a while and make the appropiate corrections.
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'GML',
+       'COMMENT_SINGLE' => array(1 => '//'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'"),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               // language keywords
+               1 => array(
+                       'break', 'continue', 'do', 'until', 'if', 'else',
+                       'exit', 'for', 'for', 'repeat', 'return', 'switch',
+                       'case', 'default', 'var', 'while', 'with', 'div', 
'mod', 
+                       // GML Language overview
+                       'self', 'other', 'all', 'noone', 'global',
+                       ),
+               // modifiers and built-in variables
+               2 => array(
+                       // Game play
+                       
'x','y','xprevious','yprevious','xstart','ystart','hspeed','vspeed','direction','speed',
+                       'friction','gravity','gravity_direction',
+                       
'path_index','path_position','path_positionprevious','path_speed','path_orientation',
+                       'path_scale','path_endaction',
+                       
'object_index','id','mask_index','solid','persistent','instance_count','instance_id',
+                       
'room_speed','fps','current_time','current_year','current_month','current_day','current_weekday',
+                       
'current_hour','current_minute','current_second','alarm','timeline_index','timeline_position',
+                       'timeline_speed',
+                       
'room','room_first','room_last','room_width','room_height','room_caption','room_persistent',
+                       
'score','lives','health','show_score','show_lives','show_health','caption_score','caption_lives',
+                       'caption_health',
+                       
'event_type','event_number','event_object','event_action',
+                       'error_occurred','error_last',
+                       // User interaction
+                       
'keyboard_lastkey','keyboard_key','keyboard_lastchar','keyboard_string',
+                       'mouse_x','mouse_y','mouse_button','mouse_lastbutton',
+                       // Game Graphics
+                       
'visible','sprite_index','sprite_width','sprite_height','sprite_xoffset','sprite_yoffset',
+                       
'image_number','image_index','image_speed','depth','image_xscale','image_yscale','image_angle',
+                       
'image_alpha','image_blend','bbox_left','bbox_right','bbox_top','bbox_bottom',
+                       
'background_color','background_showcolor','background_visible','background_foreground',
+                       
'background_index','background_x','background_y','background_width','background_height',
+                       
'background_htiled','background_vtiled','background_xscale','background_yscale',
+                       
'background_hspeed','background_vspeed','background_blend','background_alpha',
+                       'background','left, top, width, 
height','x,y','depth','visible','xscale, yscale','blend','alpha',
+                       
'view_enabled','view_current','view_visible','view_yview','view_wview','view_hview','view_xport',
+                       
'view_yport','view_wport','view_hport','view_angle','view_hborder','view_vborder','view_hspeed',
+                       'view_vspeed','view_object',
+                       'transition_kind',
+                       // Files, registry and executing programs
+                       'game_id','working_directory','temp_directory',
+                       'secure_mode',
+                       // Creating particles
+                       'xmin', 'xmax', 'ymin', 
'ymax','shape','distribution','particle type','number',
+                       'x', 'y', 'force','dist','kind','additive', 'friction', 
'parttype1', 'parttype2'
+                       ),
+               // functions
+               3 => array(
+                       // Computing things
+                       
'random','choose','abs','sign','round','floor','ceil','frac','sqrt','sqr','power','exp','ln',
+                       
'log2','log10','logn','sin','cos','tan','arcsin','arccos','arctan','arctan2','degtorad',
+                       
'radtodeg','min','max','mean','median','point_distance','point_direction','lengthdir_x',
+                       'lengthdir_y','is_real','is_string',
+                       
'chr','ord','real','string','string_format','string_length','string_pos','string_copy',
+                       
'string_char_at','string_delete','string_insert','string_replace','string_replace_all',
+                       
'string_count','string_lower','string_upper','string_repeat','string_letters','string_digits',
+                       
'string_lettersdigits','clipboard_has_text','clipboard_get_text','clipboard_set_text',
+                       
'date_current_datetime','date_current_date','date_current_time','date_create_datetime',
+                       
'date_create_date','date_create_time','date_valid_datetime','date_valid_date','date_valid_time',
+                       
'date_inc_year','date_inc_month','date_inc_week','date_inc_day','date_inc_hour',
+                       
'date_inc_minute','date_inc_second','date_get_year','date_get_month','date_get_week',
+                       'date_get_day','date_get_hour', 
'date_get_minute','date_get_second','date_get_weekday',
+                       
'date_get_day_of_year','date_get_hour_of_year','date_get_minute_of_year',
+                       
'date_get_second_of_year','date_year_span','date_month_span','date_week_span','date_day_span',
+                       
'date_hour_span','date_minute_span','date_second_span','date_compare_datetime',
+                       
'date_compare_date','date_compare_time','date_date_of','date_time_of','date_datetime_string',
+                       
'date_date_string','date_time_string','date_days_in_month','date_days_in_year','date_leap_year',
+                       'date_is_today',
+                       // Game play
+                       
'motion_set','motion_add','place_free','place_empty','place_meeting','place_snapped',
+                       
'move_random','move_snap','move_wrap','move_towards_point','move_bounce_solid','move_bounce_all',
+                       
'move_contact_solid','move_contact_all','move_outside_solid','move_outside_all',
+                       
'distance_to_point','distance_to_object','position_empty','position_meeting',
+                       'path_start','path_end',
+                       
'mp_linear_step','mp_linear_step_object','mp_potential_step','mp_potential_step_object',
+                       
'mp_potential_settings','mp_linear_path','mp_linear_path_object', 
'mp_potential_path',
+                       
'mp_potential_path_object','mp_grid_create','mp_grid_destroy','mp_grid_clear_all',
+                       
'mp_grid_clear_cell','mp_grid_clear_rectangle','mp_grid_add_cell','mp_grid_add_rectangle',
+                       'mp_grid_add_instances','mp_grid_path','mp_grid_draw',
+                       
'collision_point','collision_rectangle','collision_circle','collision_ellipse','collision_line',
+                       
'instance_find','instance_exists','instance_number','instance_position','instance_nearest',
+                       
'instance_furthest','instance_place','instance_create','instance_copy','instance_destroy',
+                       'instance_change','position_destroy','position_change',
+                       
'instance_deactivate_all','instance_deactivate_object','instance_deactivate_region',
+                       
'instance_activate_all','instance_activate_object','instance_activate_region',
+                       'sleep',
+                       
'room_goto','room_goto_previous','room_goto_next','room_restart','room_previous','room_next',
+                       'game_end','game_restart','game_save','game_load',
+                       'event_perform', 
'event_perform_object','event_user','event_inherited',
+                       
'show_debug_message','variable_global_exists','variable_local_exists','variable_global_get',
+                       
'variable_global_array_get','variable_global_array2_get','variable_local_get',
+                       
'variable_local_array_get','variable_local_array2_get','variable_global_set',
+                       
'variable_global_array_set','variable_global_array2_set','variable_local_set',
+                       
'variable_local_array_set','variable_local_array2_set','set_program_priority',
+                       // User interaction
+                       
'keyboard_set_map','keyboard_get_map','keyboard_unset_map','keyboard_check',
+                       
'keyboard_check_pressed','keyboard_check_released','keyboard_check_direct',
+                       
'keyboard_get_numlock','keyboard_set_numlock','keyboard_key_press','keyboard_key_release',
+                       'keyboard_clear','io_clear','io_handle','keyboard_wait',
+                       
'mouse_check_button','mouse_check_button_pressed','mouse_check_button_released','mouse_clear',
+                       'io_clear','io_handle','mouse_wait',
+                       
'joystick_exists','joystick_name','joystick_axes','joystick_buttons','joystick_has_pov',
+                       
'joystick_direction','joystick_check_button','joystick_xpos','joystick_ypos','joystick_zpos',
+                       
'joystick_rpos','joystick_upos','joystick_vpos','joystick_pov',
+                       // Game Graphics
+                       
'draw_sprite','draw_sprite_stretched','draw_sprite_tiled','draw_sprite_part','draw_background',
+                       
'draw_background_stretched','draw_background_tiled','draw_background_part','draw_sprite_ext',
+                       
'draw_sprite_stretched_ext','draw_sprite_tiled_ext','draw_sprite_part_ext','draw_sprite_general',
+                       
'draw_background_ext','draw_background_stretched_ext','draw_background_tiled_ext',
+                       'draw_background_part_ext','draw_background_general',
+                       
'draw_clear','draw_clear_alpha','draw_point','draw_line','draw_rectangle','draw_roundrect',
+                       
'draw_triangle','draw_circle','draw_ellipse','draw_arrow','draw_button','draw_path',
+                       
'draw_healthbar','draw_set_color','draw_set_alpha','draw_get_color','draw_get_alpha',
+                       
'make_color_rgb','make_color_hsv','color_get_red','color_get_green','color_get_blue',
+                       
'color_get_hue','color_get_saturation','color_get_value','merge_color','draw_getpixel',
+                       'screen_save','screen_save_part',
+                       
'draw_set_font','draw_set_halign','draw_set_valign','draw_text','draw_text_ext','string_width',
+                       
'string_height','string_width_ext','string_height_ext','draw_text_transformed',
+                       
'draw_text_ext_transformed','draw_text_color','draw_text_ext_color',
+                       
'draw_text_transformed_color','draw_text_ext_transformed_color',
+                       
'draw_point_color','draw_line_color','draw_rectangle_color','draw_roundrect_color',
+                       
'draw_triangle_color','draw_circle_color','draw_ellipse_color','draw_primitive_begin',
+                       
'draw_vertex','draw_vertex_color','draw_primitive_end','sprite_get_texture',
+                       
'background_get_texture','texture_preload','texture_set_priority',
+                       
'texture_get_width','texture_get_height','draw_primitive_begin_texture','draw_vertex_texture',
+                       
'draw_vertex_texture_color','draw_primitive_end','texture_set_interpolation',
+                       
'texture_set_blending','texture_set_repeat','draw_set_blend_mode','draw_set_blend_mode_ext',
+                       
'surface_create','surface_free','surface_exists','surface_get_width','surface_get_height',
+                       
'surface_get_texture','surface_set_target','surface_reset_target','surface_getpixel',
+                       
'surface_save','surface_save_part','draw_surface','draw_surface_stretched','draw_surface_tiled',
+                       
'draw_surface_part','draw_surface_ext','draw_surface_stretched_ext','draw_surface_tiled_ext',
+                       
'draw_surface_part_ext','draw_surface_general','surface_copy','surface_copy_part',
+                       
'tile_add','tile_delete','tile_exists','tile_get_x','tile_get_y','tile_get_left','tile_get_top',
+                       
'tile_get_width','tile_get_height','tile_get_depth','tile_get_visible','tile_get_xscale',
+                       
'tile_get_yscale','tile_get_background','tile_get_blend','tile_get_alpha','tile_set_position',
+                       
'tile_set_region','tile_set_background','tile_set_visible','tile_set_depth','tile_set_scale',
+                       
'tile_set_blend','tile_set_alpha','tile_layer_hide','tile_layer_show','tile_layer_delete',
+                       
'tile_layer_shift','tile_layer_find','tile_layer_delete_at','tile_layer_depth',
+                       
'display_get_width','display_get_height','display_get_colordepth','display_get_frequency',
+                       
'display_set_size','display_set_colordepth','display_set_frequency','display_set_all',
+                       
'display_test_all','display_reset','display_mouse_get_x','display_mouse_get_y','display_mouse_set',
+                       
'window_set_visible','window_get_visible','window_set_fullscreen','window_get_fullscreen',
+                       
'window_set_showborder','window_get_showborder','window_set_showicons','window_get_showicons',
+                       
'window_set_stayontop','window_get_stayontop','window_set_sizeable','window_get_sizeable',
+                       
'window_set_caption','window_get_caption','window_set_cursor', 
'window_get_cursor',
+                       
'window_set_color','window_get_color','window_set_region_scale','window_get_region_scale',
+                       
'window_set_position','window_set_size','window_set_rectangle','window_center','window_default',
+                       
'window_get_x','window_get_y','window_get_width','window_get_height','window_mouse_get_x',
+                       'window_mouse_get_y','window_mouse_set',
+                       
'window_set_region_size','window_get_region_width','window_get_region_height',
+                       
'window_view_mouse_get_x','window_view_mouse_get_y','window_view_mouse_set',
+                       
'window_views_mouse_get_x','window_views_mouse_get_y','window_views_mouse_set',
+                       
'screen_redraw','screen_refresh','set_automatic_draw','set_synchronization','screen_wait_vsync',
+                       // Sound and music)
+                       
'sound_play','sound_loop','sound_stop','sound_stop_all','sound_isplaying','sound_volume',
+                       
'sound_global_volume','sound_fade','sound_pan','sound_background_tempo','sound_set_search_directory',
+                       
'sound_effect_set','sound_effect_chorus','sound_effect_echo',   
'sound_effect_flanger',
+                       
'sound_effect_gargle','sound_effect_reverb','sound_effect_compressor','sound_effect_equalizer',
+                       
'sound_3d_set_sound_position','sound_3d_set_sound_velocity','sound_3d_set_sound_distance',
+                       'sound_3d_set_sound_cone',
+                       
'cd_init','cd_present','cd_number','cd_playing','cd_paused','cd_track','cd_length',
+                       
'cd_track_length','cd_position','cd_track_position','cd_play','cd_stop','cd_pause','cd_resume',
+                       
'cd_set_position','cd_set_track_position','cd_open_door','cd_close_door','MCI_command',
+                       // Splash screens, highscores, and other pop-ups
+                       
'show_text','show_image','show_video','show_info','load_info',
+                       
'show_message','show_message_ext','show_question','get_integer','get_string',
+                       
'message_background','message_alpha','message_button','message_text_font','message_button_font',
+                       
'message_input_font','message_mouse_color','message_input_color','message_caption',
+                       
'message_position','message_size','show_menu','show_menu_pos','get_color','get_open_filename',
+                       
'get_save_filename','get_directory','get_directory_alt','show_error',
+                       
'highscore_show','highscore_set_background','highscore_set_border','highscore_set_font',
+                       
'highscore_set_colors','highscore_set_strings','highscore_show_ext','highscore_clear',
+                       
'highscore_add','highscore_add_current','highscore_value','highscore_name','draw_highscore',
+                       // Resources
+                       
'sprite_exists','sprite_get_name','sprite_get_number','sprite_get_width','sprite_get_height',
+                       
'sprite_get_transparent','sprite_get_smooth','sprite_get_preload','sprite_get_xoffset',
+                       
'sprite_get_yoffset','sprite_get_bbox_left','sprite_get_bbox_right','sprite_get_bbox_top',
+                       
'sprite_get_bbox_bottom','sprite_get_bbox_mode','sprite_get_precise',
+                       
'sound_exists','sound_get_name','sound_get_kind','sound_get_preload','sound_discard',
+                       'sound_restore',
+                       
'background_exists','background_get_name','background_get_width','background_get_height',
+                       
'background_get_transparent','background_get_smooth','background_get_preload',
+                       
'font_exists','font_get_name','font_get_fontname','font_get_bold','font_get_italic',
+                       'font_get_first','font_get_last',
+                       
'path_exists','path_get_name','path_get_length','path_get_kind','path_get_closed',
+                       
'path_get_precision','path_get_number','path_get_point_x','path_get_point_y',
+                       
'path_get_point_speed','path_get_x','path_get_y','path_get_speed',
+                       'script_exists','script_get_name','script_get_text',
+                       'timeline_exists','timeline_get_name',
+                       
'object_exists','object_get_name','object_get_sprite','object_get_solid','object_get_visible',
+                       
'object_get_depth','object_get_persistent','object_get_mask','object_get_parent',
+                       'object_is_ancestor',
+                       'room_exists','room_get_name',
+                       // Changing resources
+                       
'sprite_set_offset','sprite_set_bbox_mode','sprite_set_bbox','sprite_set_precise',
+                       
'sprite_duplicate','sprite_assign','sprite_merge','sprite_add','sprite_replace',
+                       
'sprite_create_from_screen','sprite_add_from_screen','sprite_create_from_surface',
+                       
'sprite_add_from_surface','sprite_delete','sprite_set_alpha_from_sprite',
+                       'sound_add','sound_replace','sound_delete',
+                       
'background_duplicate','background_assign','background_add','background_replace',
+                       
'background_create_color','background_create_gradient','background_create_from_screen',
+                       
'background_create_from_surface','background_delete','background_set_alpha_from_background',
+                       
'font_add','font_add_sprite','font_replace_sprite','font_delete',
+                       
'path_set_kind','path_set_closed','path_set_precision','path_add','path_delete','path_duplicate',
+                       
'path_assign','path_append','path_add_point','path_insert_point','path_change_point',
+                       
'path_delete_point','path_clear_points','path_reverse','path_mirror','path_flip','path_rotate',
+                       'path_scale','path_shift',
+                       'execute_string','execute_file','script_execute',
+                       
'timeline_add','timeline_delete','timeline_moment_add','timeline_moment_clear',
+                       
'object_set_sprite','object_set_solid','object_set_visible','object_set_depth',
+                       
'object_set_persistent','object_set_mask','object_set_parent','object_add','object_delete',
+                       'object_event_add','object_event_clear',
+                       
'room_set_width','room_set_height','room_set_caption','room_set_persistent','room_set_code',
+                       
'room_set_background_color','room_set_background','room_set_view','room_set_view_enabled',
+                       
'room_add','room_duplicate','room_assign','room_instance_add','room_instance_clear',
+                       'room_tile_add','room_tile_add_ext','room_tile_clear',
+                       // Files, registry and executing programs
+                       
'file_text_open_read','file_text_open_write','file_text_open_append','file_text_close',
+                       
'file_text_write_string','file_text_write_real','file_text_writeln','file_text_read_string',
+                       
'file_text_read_real','file_text_readln','file_text_eof','file_exists','file_delete',
+                       
'file_rename','file_copy','directory_exists','directory_create','file_find_first',
+                       'file_find_next','file_find_close','file_attributes', 
'filename_name','filename_path',
+                       
'filename_dir','filename_drive','filename_ext','filename_change_ext','file_bin_open',
+                       
'file_bin_rewrite','file_bin_close','file_bin_size','file_bin_position','file_bin_seek',
+                       
'file_bin_write_byte','file_bin_read_byte','parameter_count','parameter_string',
+                       'environment_get_variable',
+                       
'registry_write_string','registry_write_real','registry_read_string','registry_read_real',
+                       
'registry_exists','registry_write_string_ext','registry_write_real_ext',
+                       
'registry_read_string_ext','registry_read_real_ext','registry_exists_ext','registry_set_root',
+                       
'ini_open','ini_close','ini_read_string','ini_read_real','ini_write_string','ini_write_real',
+                       
'ini_key_exists','ini_section_exists','ini_key_delete','ini_section_delete',
+                       'execute_program','execute_shell',
+                       // Data structures
+                       
'ds_stack_create','ds_stack_destroy','ds_stack_clear','ds_stack_size','ds_stack_empty',
+                       'ds_stack_push','ds_stack_pop','ds_stack_top',
+                       
'ds_queue_create','ds_queue_destroy','ds_queue_clear','ds_queue_size','ds_queue_empty',
+                       
'ds_queue_enqueue','ds_queue_dequeue','ds_queue_head','ds_queue_tail',
+                       
'ds_list_create','ds_list_destroy','ds_list_clear','ds_list_size','ds_list_empty','ds_list_add',
+                       
'ds_list_insert','ds_list_replace','ds_list_delete','ds_list_find_index','ds_list_find_value',
+                       'ds_list_sort',
+                       
'ds_map_create','ds_map_destroy','ds_map_clear','ds_map_size','ds_map_empty','ds_map_add',
+                       
'ds_map_replace','ds_map_delete','ds_map_exists','ds_map_find_value','ds_map_find_previous',
+                       
'ds_map_find_next','ds_map_find_first','ds_map_find_last',
+                       
'ds_priority_create','ds_priority_destroy','ds_priority_clear','ds_priority_size',
+                       
'ds_priority_empty','ds_priority_add','ds_priority_change_priority','ds_priority_find_priority',
+                       
'ds_priority_delete_value','ds_priority_delete_min','ds_priority_find_min',
+                       'ds_priority_delete_max','ds_priority_find_max',
+                       
'ds_grid_create','ds_grid_destroy','ds_grid_resize','ds_grid_width','ds_grid_height',
+                       
'ds_grid_clear','ds_grid_set','ds_grid_add','ds_grid_multiply','ds_grid_set_region',
+                       
'ds_grid_add_region','ds_grid_multiply_region','ds_grid_set_disk','ds_grid_add_disk',
+                       
'ds_grid_multiply_disk','ds_grid_get','ds_grid_get_sum','ds_grid_get_max','ds_grid_get_min',
+                       
'ds_grid_get_mean','ds_grid_get_disk_sum','ds_grid_get_disk_min','ds_grid_get_disk_max',
+                       
'ds_grid_get_disk_mean','ds_grid_value_exists','ds_grid_value_x','ds_grid_value_y',
+                       
'ds_grid_value_disk_exists','ds_grid_value_disk_x','ds_grid_value_disk_y',
+                       // Creating particles
+                       
'effect_create_below','effect_create_above','effect_clear',
+                       
'part_type_create','part_type_destroy','part_type_exists','part_type_clear','part_type_shape',
+                       'part_type_sprite','part_type_size','part_type_scale',
+                       
'part_type_orientation','part_type_color1','part_type_color2','part_type_color3',
+                       
'part_type_color_mix','part_type_color_rgb','part_type_color_hsv',
+                       
'part_type_alpha1','part_type_alpha2','part_type_alpha3','part_type_blend','part_type_life',
+                       
'part_type_step','part_type_death','part_type_speed','part_type_direction','part_type_gravity',
+                       
'part_system_create','part_system_destroy','part_system_exists','part_system_clear',
+                       
'part_system_draw_order','part_system_depth','part_system_position',
+                       
'part_system_automatic_update','part_system_automatic_draw','part_system_update',
+                       
'part_system_drawit','part_particles_create','part_particles_create_color',
+                       'part_particles_clear','part_particles_count',
+                       
'part_emitter_create','part_emitter_destroy','part_emitter_destroy_all','part_emitter_exists',
+                       
'part_emitter_clear','part_emitter_region','part_emitter_burst','part_emitter_stream',
+                       
'part_attractor_create','part_attractor_destroy','part_attractor_destroy_all',
+                       
'part_attractor_exists','part_attractor_clear','part_attractor_position','part_attractor_force',
+                       
'part_destroyer_create','part_destroyer_destroy','part_destroyer_destroy_all',
+                       
'part_destroyer_exists','part_destroyer_clear','part_destroyer_region',
+                       
'part_deflector_create','part_deflector_destroy','part_deflector_destroy_all',
+                       
'part_deflector_exists','part_deflector_clear','part_deflector_region','part_deflector_kind',
+                       'part_deflector_friction',
+                       
'part_changer_create','part_changer_destroy','part_changer_destroy_all','part_changer_exists',
+                       
'part_changer_clear','part_changer_region','part_changer_types','part_changer_kind',
+                       // Multiplayer games
+                       
'mplay_init_ipx','mplay_init_tcpip','mplay_init_modem','mplay_init_serial',
+                       'mplay_connect_status','mplay_end','mplay_ipaddress',
+                       
'mplay_session_create','mplay_session_find','mplay_session_name','mplay_session_join',
+                       
'mplay_session_mode','mplay_session_status','mplay_session_end',
+                       
'mplay_player_find','mplay_player_name','mplay_player_id',
+                       'mplay_data_write','mplay_data_read','mplay_data_mode',
+                       
'mplay_message_send','mplay_message_send_guaranteed','mplay_message_receive','mplay_message_id',
+                       
'mplay_message_value','mplay_message_player','mplay_message_name','mplay_message_count',
+                       'mplay_message_clear',
+                       // Using DLL's
+                       
'external_define','external_call','external_free','execute_string','execute_file','window_handle',
+                       // 3D Graphics
+                       
'd3d_start','d3d_end','d3d_set_hidden','d3d_set_perspective',
+                       'd3d_set_depth',
+                       
'd3d_primitive_begin','d3d_vertex','d3d_vertex_color','d3d_primitive_end',
+                       
'd3d_primitive_begin_texture','d3d_vertex_texture','d3d_vertex_texture_color','d3d_set_culling',
+                       
'd3d_draw_block','d3d_draw_cylinder','d3d_draw_cone','d3d_draw_ellipsoid','d3d_draw_wall',
+                       'd3d_draw_floor',
+                       
'd3d_set_projection','d3d_set_projection_ext','d3d_set_projection_ortho',
+                       'd3d_set_projection_perspective',
+                       
'd3d_transform_set_identity','d3d_transform_set_translation','d3d_transform_set_scaling',
+                       
'd3d_transform_set_rotation_x','d3d_transform_set_rotation_y','d3d_transform_set_rotation_z',
+                       
'd3d_transform_set_rotation_axis','d3d_transform_add_translation','d3d_transform_add_scaling',
+                       
'd3d_transform_add_rotation_x','d3d_transform_add_rotation_y','d3d_transform_add_rotation_z',
+                       
'd3d_transform_add_rotation_axis','d3d_transform_stack_clear','d3d_transform_stack_empty',
+                       
'd3d_transform_stack_push','d3d_transform_stack_pop','d3d_transform_stack_top',
+                       'd3d_transform_stack_discard',
+                       'd3d_set_fog',
+                       
'd3d_set_lighting','d3d_set_shading','d3d_light_define_direction','d3d_light_define_point',
+                       
'd3d_light_enable','d3d_vertex_normal','d3d_vertex_normal_color','d3d_vertex_normal_texture',
+                       'd3d_vertex_normal_texture_color',
+                       
'd3d_model_create','d3d_model_destroy','d3d_model_clear','d3d_model_save','d3d_model_load',
+                       
'd3d_model_draw','d3d_model_primitive_begin','d3d_model_vertex','d3d_model_vertex_color',
+                       
'd3d_model_vertex_texture','d3d_model_vertex_texture_color','d3d_model_vertex_normal',
+                       
'd3d_model_vertex_normal_color','d3d_model_vertex_normal_texture',
+                       
'd3d_model_vertex_normal_texture_color','d3d_model_primitive_end','d3d_model_block',
+                       
'd3d_model_cylinder','d3d_model_cone','d3d_model_ellipsoid','d3d_model_wall','d3d_model_floor'
+                       ),
+               // constants
+               4 => array(
+                       'true', 'false', 'pi',
+                       
'ev_destroy','ev_step','ev_alarm','ev_keyboard','ev_mouse','ev_collision','ev_other','ev_draw',
+                       
'ev_keypress','ev_keyrelease','ev_left_button','ev_right_button','ev_middle_button',
+                       
'ev_no_button','ev_left_press','ev_right_press','ev_middle_press','ev_left_release',
+                       
'ev_right_release','ev_middle_release','ev_mouse_enter','ev_mouse_leave','ev_mouse_wheel_up',
+                       
'ev_mouse_wheel_down','ev_global_left_button','ev_global_right_button','ev_global_middle_button',
+                       
'ev_global_left_press','ev_global_right_press','ev_global_middle_press','ev_global_left_release',
+                       
'ev_global_right_release','ev_global_middle_release','ev_joystick1_left','ev_joystick1_right',
+                       
'ev_joystick1_up','ev_joystick1_down','ev_joystick1_button1','ev_joystick1_button2',
+                       
'ev_joystick1_button3','ev_joystick1_button4','ev_joystick1_button5','ev_joystick1_button6',
+                       
'ev_joystick1_button7','ev_joystick1_button8','ev_joystick2_left','ev_joystick2_right',
+                       
'ev_joystick2_up','ev_joystick2_down','ev_joystick2_button1','ev_joystick2_button2',
+                       
'ev_joystick2_button3','ev_joystick2_button4','ev_joystick2_button5','ev_joystick2_button6',
+                       'ev_joystick2_button7','ev_joystick2_button8',
+                       
'ev_outside','ev_boundary','ev_game_start','ev_game_end','ev_room_start','ev_room_end',
+                       
'ev_no_more_lives','ev_no_more_health','ev_animation_end','ev_end_of_path','ev_user0','ev_user1',
+                       
'ev_user2','ev_user3','ev_user4','ev_user5','ev_user6','ev_user7','ev_user8','ev_user9',
+                       
'ev_user10','ev_user11','ev_user12','ev_user13','ev_user14','ev_user15','ev_step_normal',
+                       'ev_step_begin','ev_step_end',
+                       
'vk_nokey','vk_anykey','vk_left','vk_right','vk_up','vk_down','vk_enter','vk_escape','vk_space',
+                       
'vk_shift','vk_control','vk_alt','vk_backspace','vk_tab','vk_home','vk_end','vk_delete',
+                       
'vk_insert','vk_pageup','vk_pagedown','vk_pause','vk_printscreen',
+                       
'vk_f1','vk_f2','vk_f3','vk_f4','vk_f5','vk_f6','vk_f7','vk_f8','vk_f9','vk_f10','vk_f11','vk_f12',
+                       
'vk_numpad0','vk_numpad1','vk_numpad2','vk_numpad3','vk_numpad4','vk_numpad5','vk_numpad6',
+                       'vk_numpad7','vk_numpad8','vk_numpad9', 
'vk_multiply','vk_divide','vk_add','vk_subtract',
+                       
'vk_decimal','vk_lshift','vk_lcontrol','vk_lalt','vk_rshift','vk_rcontrol','vk_ralt',
+                       
'c_aqua','c_black','c_blue','c_dkgray','c_fuchsia','c_gray','c_green','c_lime','c_ltgray',
+                       
'c_maroon','c_navy','c_olive','c_purple','c_red','c_silver','c_teal','c_white','c_yellow',
+                       'fa_left', 
'fa_center','fa_right','fa_top','fa_middle','fa_bottom',
+                       
'pr_pointlist','pr_linelist','pr_linestrip','pr_trianglelist','pr_trianglestrip',
+                       'pr_trianglefan',
+                       
'cr_none','cr_arrow','cr_cross','cr_beam','cr_size_nesw','cr_size_ns','cr_size_nwse',
+                       
'cr_size_we','cr_uparrow','cr_hourglass','cr_drag','cr_nodrop','cr_hsplit','cr_vsplit',
+                       
'cr_multidrag','cr_sqlwait','cr_no','cr_appstart','cr_help','cr_handpoint','cr_size_all',
+                       
'se_chorus','se_echo','se_flanger','se_gargle','se_reverb','se_compressor','se_equalizer',
+                       
'fa_readonly','fa_hidden','fa_sysfile','fa_volumeid','fa_directory','fa_archive',
+                       
'pt_shape_pixel','pt_shape_disk','pt_shape_square','pt_shape_line','pt_shape_star',
+                       
'pt_shape_circle','pt_shape_ring','pt_shape_sphere','pt_shape_flare','pt_shape_spark',
+                       
'pt_shape_explosion','pt_shape_cloud','pt_shape_smoke','pt_shape_snow',
+                       'ps_shape_rectangle','ps_shape_ellipse 
','ps_shape_diamond','ps_shape_line',
+                       
'ps_distr_linear','ps_distr_gaussian','ps_force_constant','ps_force_linear','ps_force_quadratic',
+                       'ps_deflect_horizontal', 'ps_deflect_vertical',
+                       'ps_change_motion','ps_change_shape','ps_change_all'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '&&', '||', '^^', '<', '<=', 
'==', '!=', '>', '>=',
+               '|', '&', '^', '<<', '>>', '+', '-', '*', '/', '!', '-', '~'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => true,
+               2 => true,
+               3 => true,
+               4 => true,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'font-weight: bold; color: #000000;',
+                       2 => 'font-weight: bold; color: #000000;',
+                       3 => 'color: navy;',
+                       4 => 'color: brown',
+                       ),
+               'COMMENTS' => array(
+                       1 => 'font-style: italic; color: green;',
+                       'MULTI' => 'font-style: italic; color: green;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #000000;' //'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #202020;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66; font-weight: bold;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               // All GML functions have been indexed, but need some 
corrections.
+               3 => 'http://www.zonamakers.com/gmlreference/{FNAME}.html', // 
(provisional, could change soon!)
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/groovy.php
===================================================================
RCS file: geshi/groovy.php
diff -N geshi/groovy.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/groovy.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,2119 @@
+<?php
+/*************************************************************************************
+ * groovy.php
+ * ----------
+ * Author: Ivan F. Villanueva B. (address@hidden)
+ * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/04/29
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Groovy language file for GeSHi.
+ *
+ * Keywords from http: 
http://docs.codehaus.org/download/attachments/2715/groovy-reference-card.pdf?version=1
+ *
+ * CHANGES
+ * -------
+ * 2006/04/29 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2006/04/29)
+ * -------------------------
+ * Testing
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Groovy',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => 'import', 3 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'''", '"""', "'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       '||',
+                       'while',
+                       'switch',
+                       'in',
+                       'if',
+                       'foreach',
+                       'for',
+                       'else',
+                       'do',
+                       'case',
+                       '=&gt;',
+                       '--',
+                       '++',
+                       '&lt;&lt;',
+                       '&lt;&lt;&lt;',
+                       '&&'
+                       ),
+               2 => array(
+                       'volatile',
+                       'try',
+                       'true',
+                       'transient',
+                       'throws',
+                       'throw',
+                       'this',
+                       'synchronized',
+                       'super',
+                       'strictfp',
+                       'static',
+                       'return',
+                       'public',
+                       'protected',
+                       'property',
+                       'private',
+                       'package',
+                       'null',
+                       'new',
+                       'native',
+                       'interface',
+                       'instanceof',
+                       'implements',
+                       'goto',
+                       'finally',
+                       'final',
+                       'false',
+                       'extends',
+                       'enum',
+                       'default',
+                       'def',
+                       'continue',
+                       'const',
+                       'class',
+                       'catch',
+                       'break',
+                       'assert',
+                       'abstract',
+                       'as'
+                       ),
+               3 => array(
+                       '_Remote_Stub',
+                       '_PolicyStub',
+                       '_NamingContextStub',
+                       '_NamingContextImplBase',
+                       '_IDLTypeStub',
+                       '_BindingIteratorStub',
+                       '_BindingIteratorImplBase',
+                       'ZoneView',
+                       'ZipOutputStream',
+                       'ZipInputStream',
+                       'ZipFile',
+                       'ZipException',
+                       'ZipEntry',
+                       'X509Extension',
+                       'X509EncodedKeySpec',
+                       'X509Certificate',
+                       'X509CRLEntry',
+                       'X509CRL',
+                       'WrongTransaction',
+                       'Writer',
+                       'WriteAbortedException',
+                       'WritableRenderedImage',
+                       'WritableRaster',
+                       'WrappedPlainView',
+                       'WindowListener',
+                       'WindowEvent',
+                       'WindowConstants',
+                       'WindowAdapter',
+                       'Window',
+                       'WeakReference',
+                       'WeakHashMap',
+                       'WStringValueHelper',
+                       'WCharSeqHolder',
+                       'WCharSeqHelper',
+                       'Void',
+                       'VoiceStatus',
+                       'VisibilityHelper',
+                       'Visibility',
+                       'VirtualMachineError',
+                       'ViewportUI',
+                       'ViewportLayout',
+                       'ViewFactory',
+                       'View',
+                       'VetoableChangeSupport',
+                       'VetoableChangeListener',
+                       'VersionSpecHelper',
+                       'VerifyError',
+                       'Vector',
+                       'VariableHeightLayoutCache',
+                       'ValueMemberHelper',
+                       'ValueMember',
+                       'ValueHandler',
+                       'ValueFactory',
+                       'ValueBaseHolder',
+                       'ValueBaseHelper',
+                       'ValueBase',
+                       'VM_TRUNCATABLE',
+                       'VM_NONE',
+                       'VM_CUSTOM',
+                       'VM_ABSTRACT',
+                       'VMID',
+                       'Utilities',
+                       'UtilDelegate',
+                       'Util',
+                       'UserException',
+                       'UnsupportedOperationException',
+                       'UnsupportedLookAndFeelException',
+                       'UnsupportedFlavorException',
+                       'UnsupportedEncodingException',
+                       'UnsupportedClassVersionError',
+                       'UnsupportedAudioFileException',
+                       'UnsolicitedNotificationListener',
+                       'UnsolicitedNotificationEvent',
+                       'UnsolicitedNotification',
+                       'UnsatisfiedLinkError',
+                       'UnresolvedPermission',
+                       'Unreferenced',
+                       'UnrecoverableKeyException',
+                       'UnmarshalException',
+                       'UnknownUserException',
+                       'UnknownServiceException',
+                       'UnknownObjectException',
+                       'UnknownHostException',
+                       'UnknownHostException',
+                       'UnknownGroupException',
+                       'UnknownException',
+                       'UnknownError',
+                       'UnionMemberHelper',
+                       'UnionMember',
+                       'UnicastRemoteObject',
+                       'UnexpectedException',
+                       'UndoableEditSupport',
+                       'UndoableEditListener',
+                       'UndoableEditEvent',
+                       'UndoableEdit',
+                       'UndoManager',
+                       'UndeclaredThrowableException',
+                       'UTFDataFormatException',
+                       'UShortSeqHolder',
+                       'UShortSeqHelper',
+                       'URLStreamHandlerFactory',
+                       'URLStreamHandler',
+                       'URLEncoder',
+                       'URLDecoder',
+                       'URLConnection',
+                       'URLClassLoader',
+                       'URL',
+                       'UNSUPPORTED_POLICY_VALUE',
+                       'UNSUPPORTED_POLICY',
+                       'UNKNOWN',
+                       'ULongSeqHolder',
+                       'ULongSeqHelper',
+                       'ULongLongSeqHolder',
+                       'ULongLongSeqHelper',
+                       'UIResource',
+                       'UIManager.LookAndFeelInfo',
+                       'UIManager',
+                       'UIDefaults.ProxyLazyValue',
+                       'UIDefaults.LazyValue',
+                       'UIDefaults.LazyInputMap',
+                       'UIDefaults.ActiveValue',
+                       'UIDefaults',
+                       'UID',
+                       'Types',
+                       'TypeMismatch',
+                       'TypeCodeHolder',
+                       'TypeCode',
+                       'TreeWillExpandListener',
+                       'TreeUI',
+                       'TreeSet',
+                       'TreeSelectionModel',
+                       'TreeSelectionListener',
+                       'TreeSelectionEvent',
+                       'TreePath',
+                       'TreeNode',
+                       'TreeModelListener',
+                       'TreeModelEvent',
+                       'TreeModel',
+                       'TreeMap',
+                       'TreeExpansionListener',
+                       'TreeExpansionEvent',
+                       'TreeCellRenderer',
+                       'TreeCellEditor',
+                       'Transparency',
+                       'Transmitter',
+                       'TransformAttribute',
+                       'Transferable',
+                       'TransactionRolledbackException',
+                       'TransactionRequiredException',
+                       'Track',
+                       'Toolkit',
+                       'ToolTipUI',
+                       'ToolTipManager',
+                       'ToolBarUI',
+                       'TooManyListenersException',
+                       'TitledBorder',
+                       'Timestamp',
+                       'TimerTask',
+                       'Timer',
+                       'Timer',
+                       'TimeZone',
+                       'TimeLimitExceededException',
+                       'Time',
+                       'TileObserver',
+                       'Tie',
+                       'Throwable',
+                       'ThreadLocal',
+                       'ThreadGroup',
+                       'ThreadDeath',
+                       'Thread',
+                       'TexturePaint',
+                       'TextUI',
+                       'TextMeasurer',
+                       'TextListener',
+                       'TextLayout.CaretPolicy',
+                       'TextLayout',
+                       'TextHitInfo',
+                       'TextField',
+                       'TextEvent',
+                       'TextComponent',
+                       'TextAttribute',
+                       'TextArea',
+                       'TextAction',
+                       'TargetDataLine',
+                       'TagElement',
+                       'TableView',
+                       'TableUI',
+                       'TableModelListener',
+                       'TableModelEvent',
+                       'TableModel',
+                       'TableHeaderUI',
+                       'TableColumnModelListener',
+                       'TableColumnModelEvent',
+                       'TableColumnModel',
+                       'TableColumn',
+                       'TableCellRenderer',
+                       'TableCellEditor',
+                       'TabbedPaneUI',
+                       'TabableView',
+                       'TabStop',
+                       'TabSet',
+                       'TabExpander',
+                       'TRANSIENT',
+                       'TRANSACTION_ROLLEDBACK',
+                       'TRANSACTION_REQUIRED',
+                       'TCKind',
+                       'SystemFlavorMap',
+                       'SystemException',
+                       'SystemColor',
+                       'System',
+                       'SysexMessage',
+                       'Synthesizer',
+                       'SyncFailedException',
+                       'SwingUtilities',
+                       'SwingPropertyChangeSupport',
+                       'SwingConstants',
+                       'StyledEditorKit.UnderlineAction',
+                       'StyledEditorKit.StyledTextAction',
+                       'StyledEditorKit.ItalicAction',
+                       'StyledEditorKit.ForegroundAction',
+                       'StyledEditorKit.FontSizeAction',
+                       'StyledEditorKit.FontFamilyAction',
+                       'StyledEditorKit.BoldAction',
+                       'StyledEditorKit.AlignmentAction',
+                       'StyledEditorKit',
+                       'StyledDocument',
+                       'StyleSheet.ListPainter',
+                       'StyleSheet.BoxPainter',
+                       'StyleSheet',
+                       'StyleContext',
+                       'StyleConstants.ParagraphConstants',
+                       'StyleConstants.FontConstants',
+                       'StyleConstants.ColorConstants',
+                       'StyleConstants.CharacterConstants',
+                       'StyleConstants',
+                       'Style',
+                       'StubNotFoundException',
+                       'StubDelegate',
+                       'Stub',
+                       'StructMemberHelper',
+                       'StructMember',
+                       'Struct',
+                       'Stroke',
+                       'StringWriter',
+                       'StringValueHelper',
+                       'StringTokenizer',
+                       'StringSelection',
+                       'StringRefAddr',
+                       'StringReader',
+                       'StringIndexOutOfBoundsException',
+                       'StringHolder',
+                       'StringContent',
+                       'StringCharacterIterator',
+                       'StringBufferInputStream',
+                       'StringBuffer',
+                       'String',
+                       'StrictMath',
+                       'StreamableValue',
+                       'Streamable',
+                       'StreamTokenizer',
+                       'StreamCorruptedException',
+                       'Statement',
+                       'StateFactory',
+                       'StateEditable',
+                       'StateEdit',
+                       'StackOverflowError',
+                       'Stack',
+                       'SplitPaneUI',
+                       'SourceDataLine',
+                       'SoundbankResource',
+                       'SoundbankReader',
+                       'Soundbank',
+                       'SortedSet',
+                       'SortedMap',
+                       'SoftReference',
+                       'SoftBevelBorder',
+                       'SocketSecurityException',
+                       'SocketPermission',
+                       'SocketOptions',
+                       'SocketImplFactory',
+                       'SocketImpl',
+                       'SocketException',
+                       'Socket',
+                       'SliderUI',
+                       'SkeletonNotFoundException',
+                       'SkeletonMismatchException',
+                       'Skeleton',
+                       'SizeSequence',
+                       'SizeRequirements',
+                       'SizeLimitExceededException',
+                       'SingleSelectionModel',
+                       'SinglePixelPackedSampleModel',
+                       'SimpleTimeZone',
+                       'SimpleDateFormat',
+                       'SimpleBeanInfo',
+                       'SimpleAttributeSet',
+                       'Signer',
+                       'SignedObject',
+                       'SignatureSpi',
+                       'SignatureException',
+                       'Signature',
+                       'ShortSeqHolder',
+                       'ShortSeqHelper',
+                       'ShortMessage',
+                       'ShortLookupTable',
+                       'ShortHolder',
+                       'Short',
+                       'ShapeGraphicAttribute',
+                       'Shape',
+                       'SetOverrideTypeHelper',
+                       'SetOverrideType',
+                       'Set',
+                       'ServiceUnavailableException',
+                       'ServiceInformationHolder',
+                       'ServiceInformationHelper',
+                       'ServiceInformation',
+                       'ServiceDetailHelper',
+                       'ServiceDetail',
+                       'ServerSocket',
+                       'ServerRuntimeException',
+                       'ServerRequest',
+                       'ServerRef',
+                       'ServerNotActiveException',
+                       'ServerException',
+                       'ServerError',
+                       'ServerCloneException',
+                       'ServantObject',
+                       'SerializablePermission',
+                       'Serializable',
+                       'Sequencer.SyncMode',
+                       'Sequencer',
+                       'SequenceInputStream',
+                       'Sequence',
+                       'SeparatorUI',
+                       'Segment',
+                       'SecurityPermission',
+                       'SecurityManager',
+                       'SecurityException',
+                       'Security',
+                       'SecureRandomSpi',
+                       'SecureRandom',
+                       'SecureClassLoader',
+                       'SearchResult',
+                       'SearchControls',
+                       'Scrollbar',
+                       'Scrollable',
+                       'ScrollPaneUI',
+                       'ScrollPaneLayout.UIResource',
+                       'ScrollPaneLayout',
+                       'ScrollPaneConstants',
+                       'ScrollPane',
+                       'ScrollBarUI',
+                       'SchemaViolationException',
+                       'SampleModel',
+                       'SQLWarning',
+                       'SQLPermission',
+                       'SQLOutput',
+                       'SQLInput',
+                       'SQLException',
+                       'SQLData',
+                       'RuntimePermission',
+                       'RuntimeException',
+                       'Runtime',
+                       'Runnable',
+                       'RunTimeOperations',
+                       'RunTime',
+                       'RuleBasedCollator',
+                       'RowMapper',
+                       'RoundRectangle2D.Float',
+                       'RoundRectangle2D.Double',
+                       'RoundRectangle2D',
+                       'RootPaneUI',
+                       'RootPaneContainer',
+                       'Robot',
+                       'ReverbType',
+                       'ResultSetMetaData',
+                       'ResultSet',
+                       'ResponseHandler',
+                       'ResourceBundle',
+                       'Resolver',
+                       'ResolveResult',
+                       'RescaleOp',
+                       'Request',
+                       'RepositoryIdHelper',
+                       'Repository',
+                       'ReplicateScaleFilter',
+                       'RepaintManager',
+                       'RenderingHints.Key',
+                       'RenderingHints',
+                       'Renderer',
+                       'RenderedImageFactory',
+                       'RenderedImage',
+                       'RenderableImageProducer',
+                       'RenderableImageOp',
+                       'RenderableImage',
+                       'RenderContext',
+                       'RemoteStub',
+                       'RemoteServer',
+                       'RemoteRef',
+                       'RemoteObject',
+                       'RemoteException',
+                       'RemoteCall',
+                       'Remote',
+                       'RemarshalException',
+                       'RegistryHandler',
+                       'Registry',
+                       'ReflectPermission',
+                       'ReferralException',
+                       'Referenceable',
+                       'ReferenceQueue',
+                       'Reference',
+                       'RefAddr',
+                       'Ref',
+                       'RectangularShape',
+                       'Rectangle2D.Float',
+                       'Rectangle2D.Double',
+                       'Rectangle2D',
+                       'Rectangle',
+                       'Receiver',
+                       'Reader',
+                       'RasterOp',
+                       'RasterFormatException',
+                       'Raster',
+                       'RandomAccessFile',
+                       'Random',
+                       'RTFEditorKit',
+                       'RSAPublicKeySpec',
+                       'RSAPublicKey',
+                       'RSAPrivateKeySpec',
+                       'RSAPrivateKey',
+                       'RSAPrivateCrtKeySpec',
+                       'RSAPrivateCrtKey',
+                       'RSAKeyGenParameterSpec',
+                       'RSAKey',
+                       'RMISocketFactory',
+                       'RMIServerSocketFactory',
+                       'RMISecurityManager',
+                       'RMISecurityException',
+                       'RMIFailureHandler',
+                       'RMIClientSocketFactory',
+                       'RMIClassLoader',
+                       'RGBImageFilter',
+                       'QuadCurve2D.Float',
+                       'QuadCurve2D.Double',
+                       'QuadCurve2D',
+                       'PushbackReader',
+                       'PushbackInputStream',
+                       'PublicKey',
+                       'Proxy',
+                       'ProviderException',
+                       'Provider',
+                       'ProtocolException',
+                       'ProtectionDomain',
+                       'PropertyVetoException',
+                       'PropertyResourceBundle',
+                       'PropertyPermission',
+                       'PropertyEditorSupport',
+                       'PropertyEditorManager',
+                       'PropertyEditor',
+                       'PropertyDescriptor',
+                       'PropertyChangeSupport',
+                       'PropertyChangeListener',
+                       'PropertyChangeEvent',
+                       'Properties',
+                       'ProgressMonitorInputStream',
+                       'ProgressMonitor',
+                       'ProgressBarUI',
+                       'ProfileDataException',
+                       'Process',
+                       'PrivilegedExceptionAction',
+                       'PrivilegedActionException',
+                       'PrivilegedAction',
+                       'PrivateKey',
+                       'PrinterJob',
+                       'PrinterIOException',
+                       'PrinterGraphics',
+                       'PrinterException',
+                       'PrinterAbortException',
+                       'Printable',
+                       'PrintWriter',
+                       'PrintStream',
+                       'PrintJob',
+                       'PrintGraphics',
+                       'PrincipalHolder',
+                       'Principal',
+                       'Principal',
+                       'PreparedStatement',
+                       'Position.Bias',
+                       'Position',
+                       'PortableRemoteObjectDelegate',
+                       'PortableRemoteObject',
+                       'Port.Info',
+                       'Port',
+                       'PopupMenuUI',
+                       'PopupMenuListener',
+                       'PopupMenuEvent',
+                       'PopupMenu',
+                       'Polygon',
+                       'PolicyTypeHelper',
+                       'PolicyOperations',
+                       'PolicyListHolder',
+                       'PolicyListHelper',
+                       'PolicyHolder',
+                       'PolicyHelper',
+                       'PolicyError',
+                       'Policy',
+                       'Policy',
+                       'Point2D.Float',
+                       'Point2D.Double',
+                       'Point2D',
+                       'Point',
+                       'PlainView',
+                       'PlainDocument',
+                       'PixelInterleavedSampleModel',
+                       'PixelGrabber',
+                       'PipedWriter',
+                       'PipedReader',
+                       'PipedOutputStream',
+                       'PipedInputStream',
+                       'PhantomReference',
+                       'Permissions',
+                       'PermissionCollection',
+                       'Permission',
+                       'Permission',
+                       'PathIterator',
+                       'Patch',
+                       'PasswordView',
+                       'PasswordAuthentication',
+                       'PartialResultException',
+                       'ParserDelegator',
+                       'Parser',
+                       'ParsePosition',
+                       'ParseException',
+                       'ParameterDescriptor',
+                       'ParameterBlock',
+                       'ParagraphView',
+                       'ParagraphView',
+                       'Paper',
+                       'PanelUI',
+                       'Panel',
+                       'PaintEvent',
+                       'PaintContext',
+                       'Paint',
+                       'Pageable',
+                       'PageFormat',
+                       'PageAttributes.PrintQualityType',
+                       'PageAttributes.OriginType',
+                       'PageAttributes.OrientationRequestedType',
+                       'PageAttributes.MediaType',
+                       'PageAttributes.ColorType',
+                       'PageAttributes',
+                       'PackedColorModel',
+                       'Package',
+                       'PUBLIC_MEMBER',
+                       'PRIVATE_MEMBER',
+                       'PKCS8EncodedKeySpec',
+                       'PERSIST_STORE',
+                       'Owner',
+                       'OverlayLayout',
+                       'OutputStreamWriter',
+                       'OutputStream',
+                       'OutOfMemoryError',
+                       'OptionalDataException',
+                       'OptionPaneUI',
+                       'Option',
+                       'OperationNotSupportedException',
+                       'Operation',
+                       'OpenType',
+                       'OctetSeqHolder',
+                       'OctetSeqHelper',
+                       'Observer',
+                       'Observable',
+                       'ObjectView',
+                       'ObjectStreamField',
+                       'ObjectStreamException',
+                       'ObjectStreamConstants',
+                       'ObjectStreamClass',
+                       'ObjectOutputStream.PutField',
+                       'ObjectOutputStream',
+                       'ObjectOutput',
+                       'ObjectInputValidation',
+                       'ObjectInputStream.GetField',
+                       'ObjectInputStream',
+                       'ObjectInput',
+                       'ObjectImpl',
+                       'ObjectImpl',
+                       'ObjectHolder',
+                       'ObjectHelper',
+                       'ObjectFactoryBuilder',
+                       'ObjectFactory',
+                       'ObjectChangeListener',
+                       'Object',
+                       'ObjID',
+                       'ORB',
+                       'OMGVMCID',
+                       'OBJ_ADAPTER',
+                       'OBJECT_NOT_EXIST',
+                       'NumberFormatException',
+                       'NumberFormat',
+                       'Number',
+                       'NullPointerException',
+                       'NotSerializableException',
+                       'NotOwnerException',
+                       'NotFoundReasonHolder',
+                       'NotFoundReasonHelper',
+                       'NotFoundReason',
+                       'NotFoundHolder',
+                       'NotFoundHelper',
+                       'NotFound',
+                       'NotEmptyHolder',
+                       'NotEmptyHelper',
+                       'NotEmpty',
+                       'NotContextException',
+                       'NotBoundException',
+                       'NotActiveException',
+                       'NoninvertibleTransformException',
+                       'NoSuchProviderException',
+                       'NoSuchObjectException',
+                       'NoSuchMethodException',
+                       'NoSuchMethodError',
+                       'NoSuchFieldException',
+                       'NoSuchFieldError',
+                       'NoSuchElementException',
+                       'NoSuchAttributeException',
+                       'NoSuchAlgorithmException',
+                       'NoRouteToHostException',
+                       'NoPermissionException',
+                       'NoInitialContextException',
+                       'NoClassDefFoundError',
+                       'NetPermission',
+                       'NegativeArraySizeException',
+                       'NamingSecurityException',
+                       'NamingManager',
+                       'NamingListener',
+                       'NamingExceptionEvent',
+                       'NamingException',
+                       'NamingEvent',
+                       'NamingEnumeration',
+                       'NamingContextOperations',
+                       'NamingContextHolder',
+                       'NamingContextHelper',
+                       'NamingContext',
+                       'Naming',
+                       'NamespaceChangeListener',
+                       'NamedValue',
+                       'NameValuePairHelper',
+                       'NameValuePair',
+                       'NameParser',
+                       'NameNotFoundException',
+                       'NameHolder',
+                       'NameHelper',
+                       'NameComponentHolder',
+                       'NameComponentHelper',
+                       'NameComponent',
+                       'NameClassPair',
+                       'NameAlreadyBoundException',
+                       'Name',
+                       'NVList',
+                       'NO_RESPONSE',
+                       'NO_RESOURCES',
+                       'NO_PERMISSION',
+                       'NO_MEMORY',
+                       'NO_IMPLEMENT',
+                       'MutableTreeNode',
+                       'MutableComboBoxModel',
+                       'MutableAttributeSet',
+                       'MultipleMaster',
+                       'MulticastSocket',
+                       'MultiViewportUI',
+                       'MultiTreeUI',
+                       'MultiToolTipUI',
+                       'MultiToolBarUI',
+                       'MultiTextUI',
+                       'MultiTableUI',
+                       'MultiTableHeaderUI',
+                       'MultiTabbedPaneUI',
+                       'MultiSplitPaneUI',
+                       'MultiSliderUI',
+                       'MultiSeparatorUI',
+                       'MultiScrollPaneUI',
+                       'MultiScrollBarUI',
+                       'MultiProgressBarUI',
+                       'MultiPopupMenuUI',
+                       'MultiPixelPackedSampleModel',
+                       'MultiPanelUI',
+                       'MultiOptionPaneUI',
+                       'MultiMenuItemUI',
+                       'MultiMenuBarUI',
+                       'MultiLookAndFeel',
+                       'MultiListUI',
+                       'MultiLabelUI',
+                       'MultiInternalFrameUI',
+                       'MultiFileChooserUI',
+                       'MultiDesktopPaneUI',
+                       'MultiDesktopIconUI',
+                       'MultiComboBoxUI',
+                       'MultiColorChooserUI',
+                       'MultiButtonUI',
+                       'MouseMotionListener',
+                       'MouseMotionAdapter',
+                       'MouseListener',
+                       'MouseInputListener',
+                       'MouseInputAdapter',
+                       'MouseEvent',
+                       'MouseDragGestureRecognizer',
+                       'MouseAdapter',
+                       'Modifier',
+                       'ModificationItem',
+                       'MixerProvider',
+                       'Mixer.Info',
+                       'Mixer',
+                       'MissingResourceException',
+                       'MinimalHTMLWriter',
+                       'MimeTypeParseException',
+                       'MidiUnavailableException',
+                       'MidiSystem',
+                       'MidiMessage',
+                       'MidiFileWriter',
+                       'MidiFileReader',
+                       'MidiFileFormat',
+                       'MidiEvent',
+                       'MidiDeviceProvider',
+                       'MidiDevice.Info',
+                       'MidiDevice',
+                       'MidiChannel',
+                       'MethodDescriptor',
+                       'Method',
+                       'MetalTreeUI',
+                       'MetalToolTipUI',
+                       'MetalToolBarUI',
+                       'MetalToggleButtonUI',
+                       'MetalTheme',
+                       'MetalTextFieldUI',
+                       'MetalTabbedPaneUI',
+                       'MetalSplitPaneUI',
+                       'MetalSliderUI',
+                       'MetalSeparatorUI',
+                       'MetalScrollPaneUI',
+                       'MetalScrollButton',
+                       'MetalScrollBarUI',
+                       'MetalRadioButtonUI',
+                       'MetalProgressBarUI',
+                       'MetalPopupMenuSeparatorUI',
+                       'MetalLookAndFeel',
+                       'MetalLabelUI',
+                       'MetalInternalFrameUI',
+                       'MetalInternalFrameTitlePane',
+                       'MetalIconFactory.TreeLeafIcon',
+                       'MetalIconFactory.TreeFolderIcon',
+                       'MetalIconFactory.TreeControlIcon',
+                       'MetalIconFactory.PaletteCloseIcon',
+                       'MetalIconFactory.FolderIcon16',
+                       'MetalIconFactory.FileIcon16',
+                       'MetalIconFactory',
+                       'MetalFileChooserUI',
+                       'MetalDesktopIconUI',
+                       'MetalComboBoxUI',
+                       'MetalComboBoxIcon',
+                       'MetalComboBoxEditor.UIResource',
+                       'MetalComboBoxEditor',
+                       'MetalComboBoxButton',
+                       'MetalCheckBoxUI',
+                       'MetalCheckBoxIcon',
+                       'MetalButtonUI',
+                       'MetalBorders.ToolBarBorder',
+                       'MetalBorders.ToggleButtonBorder',
+                       'MetalBorders.TextFieldBorder',
+                       'MetalBorders.TableHeaderBorder',
+                       'MetalBorders.ScrollPaneBorder',
+                       'MetalBorders.RolloverButtonBorder',
+                       'MetalBorders.PopupMenuBorder',
+                       'MetalBorders.PaletteBorder',
+                       'MetalBorders.OptionDialogBorder',
+                       'MetalBorders.MenuItemBorder',
+                       'MetalBorders.MenuBarBorder',
+                       'MetalBorders.InternalFrameBorder',
+                       'MetalBorders.Flush3DBorder',
+                       'MetalBorders.ButtonBorder',
+                       'MetalBorders',
+                       'MetaMessage',
+                       'MetaEventListener',
+                       'MessageFormat',
+                       'MessageDigestSpi',
+                       'MessageDigest',
+                       'MenuShortcut',
+                       'MenuSelectionManager',
+                       'MenuListener',
+                       'MenuKeyListener',
+                       'MenuKeyEvent',
+                       'MenuItemUI',
+                       'MenuItem',
+                       'MenuEvent',
+                       'MenuElement',
+                       'MenuDragMouseListener',
+                       'MenuDragMouseEvent',
+                       'MenuContainer',
+                       'MenuComponent',
+                       'MenuBarUI',
+                       'MenuBar',
+                       'Menu',
+                       'MemoryImageSource',
+                       'Member',
+                       'MediaTracker',
+                       'MatteBorder',
+                       'Math',
+                       'MarshalledObject',
+                       'MarshalException',
+                       'Map.Entry',
+                       'Map',
+                       'Manifest',
+                       'MalformedURLException',
+                       'MalformedLinkException',
+                       'MARSHAL',
+                       'LookupTable',
+                       'LookupOp',
+                       'LookAndFeel',
+                       'LongSeqHolder',
+                       'LongSeqHelper',
+                       'LongLongSeqHolder',
+                       'LongLongSeqHelper',
+                       'LongHolder',
+                       'Long',
+                       'LogStream',
+                       'LocateRegistry',
+                       'Locale',
+                       'LoaderHandler',
+                       'ListView',
+                       'ListUI',
+                       'ListSelectionModel',
+                       'ListSelectionListener',
+                       'ListSelectionEvent',
+                       'ListResourceBundle',
+                       'ListModel',
+                       'ListIterator',
+                       'ListDataListener',
+                       'ListDataEvent',
+                       'ListCellRenderer',
+                       'List',
+                       'List',
+                       'LinkedList',
+                       'LinkageError',
+                       'LinkRef',
+                       'LinkLoopException',
+                       'LinkException',
+                       'LineUnavailableException',
+                       'LineNumberReader',
+                       'LineNumberInputStream',
+                       'LineMetrics',
+                       'LineListener',
+                       'LineEvent.Type',
+                       'LineEvent',
+                       'LineBreakMeasurer',
+                       'LineBorder',
+                       'Line2D.Float',
+                       'Line2D.Double',
+                       'Line2D',
+                       'Line.Info',
+                       'Line',
+                       'LimitExceededException',
+                       'Lease',
+                       'LdapReferralException',
+                       'LdapContext',
+                       'LayoutQueue',
+                       'LayoutManager2',
+                       'LayoutManager',
+                       'LayeredHighlighter.LayerPainter',
+                       'LayeredHighlighter',
+                       'LastOwnerException',
+                       'LabelView',
+                       'LabelUI',
+                       'Label',
+                       'Keymap',
+                       'KeyStroke',
+                       'KeyStoreSpi',
+                       'KeyStoreException',
+                       'KeyStore',
+                       'KeySpec',
+                       'KeyPairGeneratorSpi',
+                       'KeyPairGenerator',
+                       'KeyPair',
+                       'KeyManagementException',
+                       'KeyListener',
+                       'KeyFactorySpi',
+                       'KeyFactory',
+                       'KeyException',
+                       'KeyEvent',
+                       'KeyAdapter',
+                       'Key',
+                       'Kernel',
+                       'JobAttributes.SidesType',
+                       'JobAttributes.MultipleDocumentHandlingType',
+                       'JobAttributes.DialogType',
+                       'JobAttributes.DestinationType',
+                       'JobAttributes.DefaultSelectionType',
+                       'JobAttributes',
+                       'JarURLConnection',
+                       'JarOutputStream',
+                       'JarInputStream',
+                       'JarFile',
+                       'JarException',
+                       'JarEntry',
+                       'JWindow',
+                       'JViewport',
+                       'JTree.EmptySelectionModel',
+                       'JTree.DynamicUtilTreeNode',
+                       'JTree',
+                       'JToolTip',
+                       'JToolBar.Separator',
+                       'JToolBar',
+                       'JToggleButton.ToggleButtonModel',
+                       'JToggleButton',
+                       'JTextPane',
+                       'JTextField',
+                       'JTextComponent.KeyBinding',
+                       'JTextComponent',
+                       'JTextArea',
+                       'JTableHeader',
+                       'JTable',
+                       'JTabbedPane',
+                       'JSplitPane',
+                       'JSlider',
+                       'JSeparator',
+                       'JScrollPane',
+                       'JScrollBar',
+                       'JRootPane',
+                       'JRadioButtonMenuItem',
+                       'JRadioButton',
+                       'JProgressBar',
+                       'JPopupMenu.Separator',
+                       'JPopupMenu',
+                       'JPasswordField',
+                       'JPanel',
+                       'JOptionPane',
+                       'JMenuItem',
+                       'JMenuBar',
+                       'JMenu',
+                       'JList',
+                       'JLayeredPane',
+                       'JLabel',
+                       'JInternalFrame.JDesktopIcon',
+                       'JInternalFrame',
+                       'JFrame',
+                       'JFileChooser',
+                       'JEditorPane',
+                       'JDialog',
+                       'JDesktopPane',
+                       'JComponent',
+                       'JComboBox.KeySelectionManager',
+                       'JComboBox',
+                       'JColorChooser',
+                       'JCheckBoxMenuItem',
+                       'JCheckBox',
+                       'JButton',
+                       'JApplet',
+                       'Iterator',
+                       'ItemSelectable',
+                       'ItemListener',
+                       'ItemEvent',
+                       'IstringHelper',
+                       'InvokeHandler',
+                       'InvocationTargetException',
+                       'InvocationHandler',
+                       'InvocationEvent',
+                       'InvalidValue',
+                       'InvalidTransactionException',
+                       'InvalidSeq',
+                       'InvalidSearchFilterException',
+                       'InvalidSearchControlsException',
+                       'InvalidParameterSpecException',
+                       'InvalidParameterException',
+                       'InvalidObjectException',
+                       'InvalidNameHolder',
+                       'InvalidNameHelper',
+                       'InvalidNameException',
+                       'InvalidName',
+                       'InvalidName',
+                       'InvalidMidiDataException',
+                       'InvalidKeySpecException',
+                       'InvalidKeyException',
+                       'InvalidDnDOperationException',
+                       'InvalidClassException',
+                       'InvalidAttributesException',
+                       'InvalidAttributeValueException',
+                       'InvalidAttributeIdentifierException',
+                       'InvalidAlgorithmParameterException',
+                       'Invalid',
+                       'Introspector',
+                       'IntrospectionException',
+                       'InterruptedNamingException',
+                       'InterruptedIOException',
+                       'InterruptedException',
+                       'InternalFrameUI',
+                       'InternalFrameListener',
+                       'InternalFrameEvent',
+                       'InternalFrameAdapter',
+                       'InternalError',
+                       'Integer',
+                       'IntHolder',
+                       'InsufficientResourcesException',
+                       'Instrument',
+                       'InstantiationException',
+                       'InstantiationError',
+                       'InsetsUIResource',
+                       'Insets',
+                       'InputVerifier',
+                       'InputSubset',
+                       'InputStreamReader',
+                       'InputStream',
+                       'InputStream',
+                       'InputStream',
+                       'InputMethodRequests',
+                       'InputMethodListener',
+                       'InputMethodHighlight',
+                       'InputMethodEvent',
+                       'InputMethodDescriptor',
+                       'InputMethodContext',
+                       'InputMethod',
+                       'InputMapUIResource',
+                       'InputMap',
+                       'InputEvent',
+                       'InputContext',
+                       'InlineView',
+                       'Initializer',
+                       'InitialLdapContext',
+                       'InitialDirContext',
+                       'InitialContextFactoryBuilder',
+                       'InitialContextFactory',
+                       'InitialContext',
+                       'InheritableThreadLocal',
+                       'InflaterInputStream',
+                       'Inflater',
+                       'InetAddress',
+                       'IndirectionException',
+                       'IndexedPropertyDescriptor',
+                       'IndexOutOfBoundsException',
+                       'IndexColorModel',
+                       'InconsistentTypeCode',
+                       'IncompatibleClassChangeError',
+                       'ImagingOpException',
+                       'ImageProducer',
+                       'ImageObserver',
+                       'ImageIcon',
+                       'ImageGraphicAttribute',
+                       'ImageFilter',
+                       'ImageConsumer',
+                       'Image',
+                       'IllegalThreadStateException',
+                       'IllegalStateException',
+                       'IllegalPathStateException',
+                       'IllegalMonitorStateException',
+                       'IllegalComponentStateException',
+                       'IllegalArgumentException',
+                       'IllegalAccessException',
+                       'IllegalAccessError',
+                       'IdentityScope',
+                       'Identity',
+                       'IdentifierHelper',
+                       'IconView',
+                       'IconUIResource',
+                       'Icon',
+                       'IRObjectOperations',
+                       'IRObject',
+                       'IOException',
+                       'INV_POLICY',
+                       'INV_OBJREF',
+                       'INV_IDENT',
+                       'INV_FLAG',
+                       'INVALID_TRANSACTION',
+                       'INTF_REPOS',
+                       'INTERNAL',
+                       'INITIALIZE',
+                       'IMP_LIMIT',
+                       'IDLTypeOperations',
+                       'IDLTypeHelper',
+                       'IDLType',
+                       'IDLEntity',
+                       'ICC_ProfileRGB',
+                       'ICC_ProfileGray',
+                       'ICC_Profile',
+                       'ICC_ColorSpace',
+                       'HyperlinkListener',
+                       'HyperlinkEvent.EventType',
+                       'HyperlinkEvent',
+                       'HttpURLConnection',
+                       'Highlighter.HighlightPainter',
+                       'Highlighter.Highlight',
+                       'Highlighter',
+                       'HierarchyListener',
+                       'HierarchyEvent',
+                       'HierarchyBoundsListener',
+                       'HierarchyBoundsAdapter',
+                       'Hashtable',
+                       'HashSet',
+                       'HashMap',
+                       'HasControls',
+                       'HTMLWriter',
+                       'HTMLFrameHyperlinkEvent',
+                       'HTMLEditorKit.ParserCallback',
+                       'HTMLEditorKit.Parser',
+                       'HTMLEditorKit.LinkController',
+                       'HTMLEditorKit.InsertHTMLTextAction',
+                       'HTMLEditorKit.HTMLTextAction',
+                       'HTMLEditorKit.HTMLFactory',
+                       'HTMLEditorKit',
+                       'HTMLDocument.Iterator',
+                       'HTMLDocument',
+                       'HTML.UnknownTag',
+                       'HTML.Tag',
+                       'HTML.Attribute',
+                       'HTML',
+                       'GuardedObject',
+                       'Guard',
+                       'Group',
+                       'GridLayout',
+                       'GridBagLayout',
+                       'GridBagConstraints',
+                       'GregorianCalendar',
+                       'GrayFilter',
+                       'GraphicsEnvironment',
+                       'GraphicsDevice',
+                       'GraphicsConfiguration',
+                       'GraphicsConfigTemplate',
+                       'Graphics2D',
+                       'Graphics',
+                       'GraphicAttribute',
+                       'GradientPaint',
+                       'GlyphView.GlyphPainter',
+                       'GlyphView',
+                       'GlyphVector',
+                       'GlyphMetrics',
+                       'GlyphJustificationInfo',
+                       'GeneralSecurityException',
+                       'GeneralPath',
+                       'GapContent',
+                       'GZIPOutputStream',
+                       'GZIPInputStream',
+                       'Frame',
+                       'FormatConversionProvider',
+                       'Format',
+                       'FormView',
+                       'FontUIResource',
+                       'FontRenderContext',
+                       'FontMetrics',
+                       'FontFormatException',
+                       'Font',
+                       'FocusManager',
+                       'FocusListener',
+                       'FocusEvent',
+                       'FocusAdapter',
+                       'FlowView.FlowStrategy',
+                       'FlowView',
+                       'FlowLayout',
+                       'FloatSeqHolder',
+                       'FloatSeqHelper',
+                       'FloatHolder',
+                       'FloatControl.Type',
+                       'FloatControl',
+                       'Float',
+                       'FlavorMap',
+                       'FlatteningPathIterator',
+                       'FixedHolder',
+                       'FixedHeightLayoutCache',
+                       'FilteredImageSource',
+                       'FilterWriter',
+                       'FilterReader',
+                       'FilterOutputStream',
+                       'FilterInputStream',
+                       'FilenameFilter',
+                       'FileWriter',
+                       'FileView',
+                       'FileSystemView',
+                       'FileReader',
+                       'FilePermission',
+                       'FileOutputStream',
+                       'FileNotFoundException',
+                       'FileNameMap',
+                       'FileInputStream',
+                       'FileFilter',
+                       'FileFilter',
+                       'FileDialog',
+                       'FileDescriptor',
+                       'FileChooserUI',
+                       'File',
+                       'FieldView',
+                       'FieldPosition',
+                       'FieldNameHelper',
+                       'Field',
+                       'FeatureDescriptor',
+                       'FREE_MEM',
+                       'Externalizable',
+                       'ExtendedResponse',
+                       'ExtendedRequest',
+                       'ExportException',
+                       'ExpandVetoException',
+                       'ExceptionList',
+                       'ExceptionInInitializerError',
+                       'Exception',
+                       'EventSetDescriptor',
+                       'EventQueue',
+                       'EventObject',
+                       'EventListenerList',
+                       'EventListener',
+                       'EventDirContext',
+                       'EventContext',
+                       'Event',
+                       'EtchedBorder',
+                       'Error',
+                       'Environment',
+                       'Enumeration',
+                       'EnumControl.Type',
+                       'EnumControl',
+                       'Entity',
+                       'EncodedKeySpec',
+                       'EmptyStackException',
+                       'EmptyBorder',
+                       'Ellipse2D.Float',
+                       'Ellipse2D.Double',
+                       'Ellipse2D',
+                       'ElementIterator',
+                       'Element',
+                       'EditorKit',
+                       'EOFException',
+                       'DynamicImplementation',
+                       'DynValue',
+                       'DynUnion',
+                       'DynStruct',
+                       'DynSequence',
+                       'DynFixed',
+                       'DynEnum',
+                       'DynArray',
+                       'DynAny',
+                       'DropTargetListener',
+                       'DropTargetEvent',
+                       'DropTargetDropEvent',
+                       'DropTargetDragEvent',
+                       'DropTargetContext',
+                       'DropTarget.DropTargetAutoScroller',
+                       'DropTarget',
+                       'DriverPropertyInfo',
+                       'DriverManager',
+                       'Driver',
+                       'DragSourceListener',
+                       'DragSourceEvent',
+                       'DragSourceDropEvent',
+                       'DragSourceDragEvent',
+                       'DragSourceContext',
+                       'DragSource',
+                       'DragGestureRecognizer',
+                       'DragGestureListener',
+                       'DragGestureEvent',
+                       'DoubleSeqHolder',
+                       'DoubleSeqHelper',
+                       'DoubleHolder',
+                       'Double',
+                       'DomainManagerOperations',
+                       'DomainManager',
+                       'DomainCombiner',
+                       'DocumentParser',
+                       'DocumentListener',
+                       'DocumentEvent.EventType',
+                       'DocumentEvent.ElementChange',
+                       'DocumentEvent',
+                       'Document',
+                       'DnDConstants',
+                       'DirectoryManager',
+                       'DirectColorModel',
+                       'DirStateFactory.Result',
+                       'DirStateFactory',
+                       'DirObjectFactory',
+                       'DirContext',
+                       'DimensionUIResource',
+                       'Dimension2D',
+                       'Dimension',
+                       'DigestOutputStream',
+                       'DigestInputStream',
+                       'DigestException',
+                       'Dictionary',
+                       'Dialog',
+                       'DesktopPaneUI',
+                       'DesktopManager',
+                       'DesktopIconUI',
+                       'DesignMode',
+                       'Delegate',
+                       'DeflaterOutputStream',
+                       'Deflater',
+                       'DefinitionKindHelper',
+                       'DefinitionKind',
+                       'DefaultTreeSelectionModel',
+                       'DefaultTreeModel',
+                       'DefaultTreeCellRenderer',
+                       'DefaultTreeCellEditor',
+                       'DefaultTextUI',
+                       'DefaultTableModel',
+                       'DefaultTableColumnModel',
+                       'DefaultTableCellRenderer.UIResource',
+                       'DefaultTableCellRenderer',
+                       'DefaultStyledDocument.ElementSpec',
+                       'DefaultStyledDocument.AttributeUndoableEdit',
+                       'DefaultStyledDocument',
+                       'DefaultSingleSelectionModel',
+                       'DefaultMutableTreeNode',
+                       'DefaultMetalTheme',
+                       'DefaultMenuLayout',
+                       'DefaultListSelectionModel',
+                       'DefaultListModel',
+                       'DefaultListCellRenderer.UIResource',
+                       'DefaultListCellRenderer',
+                       'DefaultHighlighter.DefaultHighlightPainter',
+                       'DefaultHighlighter',
+                       'DefaultFocusManager',
+                       'DefaultEditorKit.PasteAction,',
+                       'DefaultEditorKit.InsertTabAction',
+                       'DefaultEditorKit.InsertContentAction',
+                       'DefaultEditorKit.InsertBreakAction',
+                       'DefaultEditorKit.DefaultKeyTypedAction',
+                       'DefaultEditorKit.CutAction',
+                       'DefaultEditorKit.CopyAction',
+                       'DefaultEditorKit.BeepAction',
+                       'DefaultEditorKit',
+                       'DefaultDesktopManager',
+                       'DefaultComboBoxModel',
+                       'DefaultColorSelectionModel',
+                       'DefaultCellEditor',
+                       'DefaultCaret',
+                       'DefaultButtonModel',
+                       'DefaultBoundedRangeModel',
+                       'DecimalFormatSymbols',
+                       'DecimalFormat',
+                       'DebugGraphics',
+                       'DateFormatSymbols',
+                       'DateFormat',
+                       'Date',
+                       'DatagramSocketImplFactory',
+                       'DatagramSocketImpl',
+                       'DatagramSocket',
+                       'DatagramPacket',
+                       'DatabaseMetaData',
+                       'DataTruncation',
+                       'DataOutputStream',
+                       'DataOutputStream',
+                       'DataOutput',
+                       'DataLine.Info',
+                       'DataLine',
+                       'DataInputStream',
+                       'DataInput',
+                       'DataFormatException',
+                       'DataFlavor',
+                       'DataBufferUShort',
+                       'DataBufferShort',
+                       'DataBufferInt',
+                       'DataBufferByte',
+                       'DataBuffer',
+                       'DTDConstants',
+                       'DTD',
+                       'DSAPublicKeySpec',
+                       'DSAPublicKey',
+                       'DSAPrivateKeySpec',
+                       'DSAPrivateKey',
+                       'DSAParams',
+                       'DSAParameterSpec',
+                       'DSAKeyPairGenerator',
+                       'DSAKey',
+                       'DGC',
+                       'DATA_CONVERSION',
+                       'Customizer',
+                       'CustomValue',
+                       'CustomMarshal',
+                       'Cursor',
+                       'CurrentOperations',
+                       'CurrentHolder',
+                       'CurrentHelper',
+                       'Current',
+                       'CubicCurve2D.Float',
+                       'CubicCurve2D.Double',
+                       'CubicCurve2D',
+                       'CropImageFilter',
+                       'ConvolveOp',
+                       'ControllerEventListener',
+                       'ControlFactory',
+                       'Control.Type',
+                       'Control',
+                       'ContextualRenderedImageFactory',
+                       'ContextNotEmptyException',
+                       'ContextList',
+                       'Context',
+                       'ContentModel',
+                       'ContentHandlerFactory',
+                       'ContentHandler',
+                       'ContainerListener',
+                       'ContainerEvent',
+                       'ContainerAdapter',
+                       'Container',
+                       'Constructor',
+                       'Connection',
+                       'ConnectIOException',
+                       'ConnectException',
+                       'ConnectException',
+                       'ConfigurationException',
+                       'ConcurrentModificationException',
+                       'CompoundName',
+                       'CompoundEdit',
+                       'CompoundControl.Type',
+                       'CompoundControl',
+                       'CompoundBorder',
+                       'CompositeView',
+                       'CompositeName',
+                       'CompositeContext',
+                       'Composite',
+                       'ComponentView',
+                       'ComponentUI',
+                       'ComponentSampleModel',
+                       'ComponentOrientation',
+                       'ComponentListener',
+                       'ComponentInputMapUIResource',
+                       'ComponentInputMap',
+                       'ComponentEvent',
+                       'ComponentColorModel',
+                       'ComponentAdapter',
+                       'Component',
+                       'CompletionStatusHelper',
+                       'CompletionStatus',
+                       'Compiler',
+                       'Comparator',
+                       'Comparable',
+                       'CommunicationException',
+                       'ComboPopup',
+                       'ComboBoxUI',
+                       'ComboBoxModel',
+                       'ComboBoxEditor',
+                       'ColorUIResource',
+                       'ColorSpace',
+                       'ColorSelectionModel',
+                       'ColorModel',
+                       'ColorConvertOp',
+                       'ColorChooserUI',
+                       'ColorChooserComponentFactory',
+                       'Color',
+                       'Collections',
+                       'Collection',
+                       'Collator',
+                       'CollationKey',
+                       'CollationElementIterator',
+                       'CodeSource',
+                       'Cloneable',
+                       'CloneNotSupportedException',
+                       'Clob',
+                       'ClipboardOwner',
+                       'Clipboard',
+                       'Clip',
+                       'ClassNotFoundException',
+                       'ClassLoader',
+                       'ClassFormatError',
+                       'ClassDesc',
+                       'ClassCircularityError',
+                       'ClassCastException',
+                       'Class',
+                       'ChoiceFormat',
+                       'Choice',
+                       'Checksum',
+                       'CheckedOutputStream',
+                       'CheckedInputStream',
+                       'CheckboxMenuItem',
+                       'CheckboxGroup',
+                       'Checkbox',
+                       'CharacterIterator',
+                       'Character.UnicodeBlock',
+                       'Character.Subset',
+                       'Character',
+                       'CharSeqHolder',
+                       'CharSeqHelper',
+                       'CharHolder',
+                       'CharConversionException',
+                       'CharArrayWriter',
+                       'CharArrayReader',
+                       'ChangedCharSetException',
+                       'ChangeListener',
+                       'ChangeEvent',
+                       'CertificateParsingException',
+                       'CertificateNotYetValidException',
+                       'CertificateFactorySpi',
+                       'CertificateFactory',
+                       'CertificateExpiredException',
+                       'CertificateException',
+                       'CertificateEncodingException',
+                       'Certificate.CertificateRep',
+                       'Certificate',
+                       'CellRendererPane',
+                       'CellEditorListener',
+                       'CellEditor',
+                       'CaretListener',
+                       'CaretEvent',
+                       'Caret',
+                       'CardLayout',
+                       'Canvas',
+                       'CannotUndoException',
+                       'CannotRedoException',
+                       'CannotProceedHolder',
+                       'CannotProceedHelper',
+                       'CannotProceedException',
+                       'CannotProceed',
+                       'CallableStatement',
+                       'Calendar',
+                       'CTX_RESTRICT_SCOPE',
+                       'CSS.Attribute',
+                       'CSS',
+                       'CRLException',
+                       'CRL',
+                       'CRC32',
+                       'COMM_FAILURE',
+                       'CMMException',
+                       'ByteLookupTable',
+                       'ByteHolder',
+                       'ByteArrayOutputStream',
+                       'ByteArrayInputStream',
+                       'Byte',
+                       'ButtonUI',
+                       'ButtonModel',
+                       'ButtonGroup',
+                       'Button',
+                       'BufferedWriter',
+                       'BufferedReader',
+                       'BufferedOutputStream',
+                       'BufferedInputStream',
+                       'BufferedImageOp',
+                       'BufferedImageFilter',
+                       'BufferedImage',
+                       'BreakIterator',
+                       'BoxedValueHelper',
+                       'BoxView',
+                       'BoxLayout',
+                       'Box.Filler',
+                       'Box',
+                       'Bounds',
+                       'BoundedRangeModel',
+                       'BorderUIResource.TitledBorderUIResource',
+                       'BorderUIResource.MatteBorderUIResource',
+                       'BorderUIResource.LineBorderUIResource',
+                       'BorderUIResource.EtchedBorderUIResource',
+                       'BorderUIResource.EmptyBorderUIResource',
+                       'BorderUIResource.CompoundBorderUIResource',
+                       'BorderUIResource.BevelBorderUIResource',
+                       'BorderUIResource',
+                       'BorderLayout',
+                       'BorderFactory',
+                       'Border',
+                       'BooleanSeqHolder',
+                       'BooleanSeqHelper',
+                       'BooleanHolder',
+                       'BooleanControl.Type',
+                       'BooleanControl',
+                       'Boolean',
+                       'Book',
+                       'BlockView',
+                       'Blob',
+                       'BitSet',
+                       'BindingTypeHolder',
+                       'BindingTypeHelper',
+                       'BindingType',
+                       'BindingListHolder',
+                       'BindingListHelper',
+                       'BindingIteratorOperations',
+                       'BindingIteratorHolder',
+                       'BindingIteratorHelper',
+                       'BindingIterator',
+                       'BindingHolder',
+                       'BindingHelper',
+                       'Binding',
+                       'BindException',
+                       'BinaryRefAddr',
+                       'BigInteger',
+                       'BigDecimal',
+                       'BevelBorder',
+                       'Beans',
+                       'BeanInfo',
+                       'BeanDescriptor',
+                       'BeanContextSupport.BCSIterator',
+                       'BeanContextSupport',
+                       'BeanContextServicesSupport.BCSSServiceProvider',
+                       'BeanContextServicesSupport',
+                       'BeanContextServicesListener',
+                       'BeanContextServices',
+                       'BeanContextServiceRevokedListener',
+                       'BeanContextServiceRevokedEvent',
+                       'BeanContextServiceProviderBeanInfo',
+                       'BeanContextServiceProvider',
+                       'BeanContextServiceAvailableEvent',
+                       'BeanContextProxy',
+                       'BeanContextMembershipListener',
+                       'BeanContextMembershipEvent',
+                       'BeanContextEvent',
+                       'BeanContextContainerProxy',
+                       'BeanContextChildSupport',
+                       'BeanContextChildComponentProxy',
+                       'BeanContextChild',
+                       'BeanContext',
+                       'BatchUpdateException',
+                       'BasicViewportUI',
+                       'BasicTreeUI',
+                       'BasicToolTipUI',
+                       'BasicToolBarUI',
+                       'BasicToolBarSeparatorUI',
+                       'BasicToggleButtonUI',
+                       'BasicTextUI.BasicHighlighter',
+                       'BasicTextUI.BasicCaret',
+                       'BasicTextUI',
+                       'BasicTextPaneUI',
+                       'BasicTextFieldUI',
+                       'BasicTextAreaUI',
+                       'BasicTableUI',
+                       'BasicTableHeaderUI',
+                       'BasicTabbedPaneUI',
+                       'BasicStroke',
+                       'BasicSplitPaneUI',
+                       'BasicSplitPaneDivider',
+                       'BasicSliderUI',
+                       'BasicSeparatorUI',
+                       'BasicScrollPaneUI',
+                       'BasicScrollBarUI',
+                       'BasicRootPaneUI',
+                       'BasicRadioButtonUI',
+                       'BasicRadioButtonMenuItemUI',
+                       'BasicProgressBarUI',
+                       'BasicPopupMenuUI',
+                       'BasicPopupMenuSeparatorUI',
+                       'BasicPermission',
+                       'BasicPasswordFieldUI',
+                       'BasicPanelUI',
+                       'BasicOptionPaneUI.ButtonAreaLayout',
+                       'BasicOptionPaneUI',
+                       'BasicMenuUI',
+                       'BasicMenuItemUI',
+                       'BasicMenuBarUI',
+                       'BasicLookAndFeel',
+                       'BasicListUI',
+                       'BasicLabelUI',
+                       'BasicInternalFrameUI',
+                       'BasicInternalFrameTitlePane',
+                       'BasicIconFactory',
+                       'BasicHTML',
+                       'BasicGraphicsUtils',
+                       'BasicFileChooserUI',
+                       'BasicEditorPaneUI',
+                       'BasicDirectoryModel',
+                       'BasicDesktopPaneUI',
+                       'BasicDesktopIconUI',
+                       'BasicComboPopup',
+                       'BasicComboBoxUI',
+                       'BasicComboBoxRenderer.UIResource',
+                       'BasicComboBoxRenderer',
+                       'BasicComboBoxEditor.UIResource',
+                       'BasicComboBoxEditor',
+                       'BasicColorChooserUI',
+                       'BasicCheckBoxUI',
+                       'BasicCheckBoxMenuItemUI',
+                       'BasicButtonUI',
+                       'BasicButtonListener',
+                       'BasicBorders.ToggleButtonBorder',
+                       'BasicBorders.SplitPaneBorder',
+                       'BasicBorders.RadioButtonBorder',
+                       'BasicBorders.MenuBarBorder',
+                       'BasicBorders.MarginBorder',
+                       'BasicBorders.FieldBorder',
+                       'BasicBorders.ButtonBorder',
+                       'BasicBorders',
+                       'BasicAttributes',
+                       'BasicAttribute',
+                       'BasicArrowButton',
+                       'BandedSampleModel',
+                       'BandCombineOp',
+                       'BadLocationException',
+                       'BadKind',
+                       'BAD_TYPECODE',
+                       'BAD_POLICY_VALUE',
+                       'BAD_POLICY_TYPE',
+                       'BAD_POLICY',
+                       'BAD_PARAM',
+                       'BAD_OPERATION',
+                       'BAD_INV_ORDER',
+                       'BAD_CONTEXT',
+                       'Autoscroll',
+                       'Authenticator',
+                       'AuthenticationNotSupportedException',
+                       'AuthenticationException',
+                       'AudioSystem',
+                       'AudioPermission',
+                       'AudioInputStream',
+                       'AudioFormat.Encoding',
+                       'AudioFormat',
+                       'AudioFileWriter',
+                       'AudioFileReader',
+                       'AudioFileFormat.Type',
+                       'AudioFileFormat',
+                       'AudioClip',
+                       'Attributes.Name',
+                       'Attributes',
+                       'AttributedString',
+                       'AttributedCharacterIterator.Attribute',
+                       'AttributedCharacterIterator',
+                       'AttributeSet.ParagraphAttribute',
+                       'AttributeSet.FontAttribute',
+                       'AttributeSet.ColorAttribute',
+                       'AttributeSet.CharacterAttribute',
+                       'AttributeSet',
+                       'AttributeModificationException',
+                       'AttributeList',
+                       'AttributeInUseException',
+                       'Attribute',
+                       'AsyncBoxView',
+                       'Arrays',
+                       'ArrayStoreException',
+                       'ArrayList',
+                       'ArrayIndexOutOfBoundsException',
+                       'Array',
+                       'ArithmeticException',
+                       'AreaAveragingScaleFilter',
+                       'Area',
+                       'Arc2D.Float',
+                       'Arc2D.Double',
+                       'Arc2D',
+                       'ApplicationException',
+                       'AppletStub',
+                       'AppletInitializer',
+                       'AppletContext',
+                       'Applet',
+                       'AnySeqHolder',
+                       'AnySeqHelper',
+                       'AnyHolder',
+                       'Any',
+                       'Annotation',
+                       'AncestorListener',
+                       'AncestorEvent',
+                       'AlreadyBoundHolder',
+                       'AlreadyBoundHelper',
+                       'AlreadyBoundException',
+                       'AlreadyBound',
+                       'AlphaComposite',
+                       'AllPermission',
+                       'AlgorithmParametersSpi',
+                       'AlgorithmParameters',
+                       'AlgorithmParameterSpec',
+                       'AlgorithmParameterGeneratorSpi',
+                       'AlgorithmParameterGenerator',
+                       'AffineTransformOp',
+                       'AffineTransform',
+                       'Adler32',
+                       'AdjustmentListener',
+                       'AdjustmentEvent',
+                       'Adjustable',
+                       'ActiveEvent',
+                       'Activator',
+                       'ActivationSystem',
+                       'ActivationMonitor',
+                       'ActivationInstantiator',
+                       'ActivationID',
+                       'ActivationGroupID',
+                       'ActivationGroupDesc.CommandEnvironment',
+                       'ActivationGroupDesc',
+                       'ActivationGroup',
+                       'ActivationException',
+                       'ActivationDesc',
+                       'ActivateFailedException',
+                       'Activatable',
+                       'ActionMapUIResource',
+                       'ActionMap',
+                       'ActionListener',
+                       'ActionEvent',
+                       'Action',
+                       'AclNotFoundException',
+                       'AclEntry',
+                       'Acl',
+                       'AccessibleValue',
+                       'AccessibleText',
+                       'AccessibleTableModelChange',
+                       'AccessibleTable',
+                       'AccessibleStateSet',
+                       'AccessibleState',
+                       'AccessibleSelection',
+                       'AccessibleRole',
+                       'AccessibleResourceBundle',
+                       'AccessibleRelationSet',
+                       'AccessibleRelation',
+                       'AccessibleObject',
+                       'AccessibleIcon',
+                       'AccessibleHypertext',
+                       'AccessibleHyperlink',
+                       'AccessibleContext',
+                       'AccessibleComponent',
+                       'AccessibleBundle',
+                       'AccessibleAction',
+                       'Accessible',
+                       'AccessException',
+                       'AccessController',
+                       'AccessControlException',
+                       'AccessControlContext',
+                       'AbstractWriter',
+                       'AbstractUndoableEdit',
+                       'AbstractTableModel',
+                       'AbstractSet',
+                       'AbstractSequentialList',
+                       'AbstractMethodError',
+                       'AbstractMap',
+                       'AbstractListModel',
+                       'AbstractList',
+                       'AbstractLayoutCache.NodeDimensions',
+                       'AbstractLayoutCache',
+                       'AbstractDocument.ElementEdit',
+                       'AbstractDocument.Content',
+                       'AbstractDocument.AttributeContext',
+                       'AbstractDocument',
+                       'AbstractColorChooserPanel',
+                       'AbstractCollection',
+                       'AbstractCellEditor',
+                       'AbstractButton',
+                       'AbstractBorder',
+                       'AbstractAction',
+                       'AWTPermission',
+                       'AWTException',
+                       'AWTEventMulticaster',
+                       'AWTEventListener',
+                       'AWTEvent',
+                       'AWTError',
+                       'ARG_OUT',
+                       'ARG_INOUT',
+                       'ARG_IN'
+                       ),
+               4 => array(
+                       'void',
+                       'short',
+                       'long',
+                       'int',
+                       'double',
+                       'char',
+                       'byte',
+                       'boolean',
+                       'float'
+                       ),
+               5 => array(
+                       'toList',
+                       'subMap',
+                       'sort',
+                       'size',
+                       'reverseEach',
+                       'reverse',
+                       'pop',
+                       'min',
+                       'max',
+                       'join',
+                       'intersect',
+                       'inject',
+                       'grep',
+                       'get',
+                       'flatten',
+                       'findIndexOf',
+                       'findAll',
+                       'find',
+                       'eachWithIndex',
+                       'eachPropertyName',
+                       'eachProperty',
+                       'each',
+                       'count',
+                       'collect',
+                       'asSynchronized',
+                       'asImmutable',
+                       'allProperties'
+                       ),
+               6 => array(
+                       'tokenize',
+                       'toURL',
+                       'toLong',
+                       'toList',
+                       'toCharacter',
+                       'padRight',
+                       'padLeft',
+                       'eachMatch',
+                       'contains',
+                       'center'
+                       ),
+               7 => array(
+                       'writeLine',
+                       'write',
+                       'withWriterAppend',
+                       'withWriter',
+                       'withStreams',
+                       'withStream',
+                       'withReader',
+                       'withPrintWriter',
+                       'withOutputStream',
+                       'transformLine',
+                       'transformChar',
+                       'splitEachLine',
+                       'getText',
+                       'filterLine',
+                       'encodeBase64',
+                       'eachLines',
+                       'eachLine',
+                       'eachFileRecurse',
+                       'eachFile',
+                       'eachByte',
+                       'append'
+                       ),
+               8 => array(
+                       'dump',
+                       'inspect',
+                       'invokeMethod',
+                       'print',
+                       'println',
+                       'step',
+                       'times',
+                       'upto',
+                       'use',
+                       'getText',
+                       'start',
+                       'startDaemon',
+                       'getLastMatcher'
+                       ),
+               9 => array(
+                       'Sql',
+                       'call',
+                       'eachRow',
+                       'execute',
+                       'executeUpdate',
+                       'close'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', 
'>', '?', '|', '='
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => true,
+               4 => true,
+               5 => true,
+               6 => true,
+               7 => true,
+               8 => true,
+               9 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #aaaadd; font-weight: bold;',
+                       4 => 'color: #993333;',
+                       5 => 'color: #663399;',
+                       6 => 'color: #CC0099;',
+                       7 => 'color: #FFCC33;',
+                       8 => 'color: #993399;',
+                       9 => 'color: #993399; font-weight: bold;'
+                       ),
+               'COMMENTS' => array(
+                       1=> 'color: #808080; font-style: italic;',
+                       2=> 'color: #a1a100;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       )
+               ),
+       'URLS' => array(
+               1 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               2 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               3 => 
'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1.5.0%2Fdocs%2Fapi%2F',
+               4 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               5 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               6 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               7 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               8 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}',
+               9 => 
'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}'
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               0 => '\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}'
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/html4strict.php
===================================================================
RCS file: geshi/html4strict.php
diff -N geshi/html4strict.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/html4strict.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,256 @@
+<?php
+/*************************************************************************************
+ * html4strict.php
+ * ---------------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * HTML 4.01 strict language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.4)
+ *   -  Removed escape character for strings
+ * 2004/11/27 (1.0.3)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added INS and DEL
+ *   -  Removed the background colour from tags' styles
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Check that only HTML4 strict attributes are highlighted
+ * * Eliminate empty tags that aren't allowed in HTML4 strict
+ * * Split to several files - html4trans, xhtml1 etc
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'HTML',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array('<!--' => '-->'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       ),
+               2 => array(
+                       '&lt;a&gt;', '&lt;abbr&gt;', '&lt;acronym&gt;', 
'&lt;address&gt;', '&lt;applet&gt;',
+                       '&lt;a', '&lt;abbr', '&lt;acronym', '&lt;address', 
'&lt;applet',
+                       '&lt;/a&gt;', '&lt;/abbr&gt;', '&lt;/acronym&gt;', 
'&lt;/address&gt;', '&lt;/applet&gt;',
+                       '&lt;/a', '&lt;/abbr', '&lt;/acronym', '&lt;/address', 
'&lt;/applet',
+
+                       '&lt;base&gt;', '&lt;basefont&gt;', '&lt;bdo&gt;', 
'&lt;big&gt;', '&lt;blockquote&gt;', '&lt;body&gt;', '&lt;br&gt;', 
'&lt;button&gt;', '&lt;b&gt;',
+                       '&lt;base', '&lt;basefont', '&lt;bdo', '&lt;big', 
'&lt;blockquote', '&lt;body', '&lt;br', '&lt;button', '&lt;b',
+                       '&lt;/base&gt;', '&lt;/basefont&gt;', '&lt;/bdo&gt;', 
'&lt;/big&gt;', '&lt;/blockquote&gt;', '&lt;/body&gt;', '&lt;/br&gt;', 
'&lt;/button&gt;', '&lt;/b&gt;',
+                       '&lt;/base', '&lt;/basefont', '&lt;/bdo', '&lt;/big', 
'&lt;/blockquote', '&lt;/body', '&lt;/br', '&lt;/button', '&lt;/b',
+
+                       '&lt;caption&gt;', '&lt;center&gt;', '&lt;cite&gt;', 
'&lt;code&gt;', '&lt;colgroup&gt;', '&lt;col&gt;',
+                       '&lt;caption', '&lt;center', '&lt;cite', '&lt;code', 
'&lt;colgroup', '&lt;col',
+                       '&lt;/caption&gt;', '&lt;/center&gt;', '&lt;/cite&gt;', 
'&lt;/code&gt;', '&lt;/colgroup&gt;', '&lt;/col&gt;',
+                       '&lt;/caption', '&lt;/center', '&lt;/cite', 
'&lt;/code', '&lt;/colgroup', '&lt;/col',
+
+                       '&lt;dd&gt;', '&lt;del&gt;', '&lt;dfn&gt;', 
'&lt;dir&gt;', '&lt;div&gt;', '&lt;dl&gt;', '&lt;dt&gt;',
+                       '&lt;dd', '&lt;del', '&lt;dfn', '&lt;dir', '&lt;div', 
'&lt;dl', '&lt;dt',
+                       '&lt;/dd&gt;', '&lt;/del&gt;', '&lt;/dfn&gt;', 
'&lt;/dir&gt;', '&lt;/div&gt;', '&lt;/dl&gt;', '&lt;/dt&gt;',
+                       '&lt;/dd', '&lt;/del', '&lt;/dfn', '&lt;/dir', 
'&lt;/div', '&lt;/dl', '&lt;/dt',
+
+                       '&lt;em&gt;',
+                       '&lt;em',
+                       '&lt;/em&gt;',
+                       '&lt;/em',
+
+                       '&lt;fieldset&gt;', '&lt;font&gt;', '&lt;form&gt;', 
'&lt;frame&gt;', '&lt;frameset&gt;',
+                       '&lt;fieldset', '&lt;font', '&lt;form', '&lt;frame', 
'&lt;frameset',
+                       '&lt;/fieldset&gt;', '&lt;/font&gt;', '&lt;/form&gt;', 
'&lt;/frame&gt;', '&lt;/frameset&gt;',
+                       '&lt;/fieldset', '&lt;/font', '&lt;/form', 
'&lt;/frame', '&lt;/frameset',
+
+                       '&lt;h1&gt;', '&lt;h2&gt;', '&lt;h3&gt;', '&lt;h4&gt;', 
'&lt;h5&gt;', '&lt;h6&gt;', '&lt;head&gt;', '&lt;hr&gt;', '&lt;html&gt;',
+                       '&lt;h1', '&lt;h2', '&lt;h3', '&lt;h4', '&lt;h5', 
'&lt;h6', '&lt;head', '&lt;hr', '&lt;html',
+                       '&lt;/h1&gt;', '&lt;/h2&gt;', '&lt;/h3&gt;', 
'&lt;/h4&gt;', '&lt;/h5&gt;', '&lt;/h6&gt;', '&lt;/head&gt;', '&lt;/hr&gt;', 
'&lt;/html&gt;',
+                       '&lt;/h1', '&lt;/h2', '&lt;/h3', '&lt;/h4', '&lt;/h5', 
'&lt;/h6', '&lt;/head', '&lt;/hr', '&lt;/html',
+
+                       '&lt;iframe&gt;', '&lt;ilayer&gt;', '&lt;img&gt;', 
'&lt;input&gt;', '&lt;ins&gt;', '&lt;isindex&gt;', '&lt;i&gt;',
+                       '&lt;iframe', '&lt;ilayer', '&lt;img', '&lt;input', 
'&lt;ins', '&lt;isindex', '&lt;i',
+                       '&lt;/iframe&gt;', '&lt;/ilayer&gt;', '&lt;/img&gt;', 
'&lt;/input&gt;', '&lt;/ins&gt;', '&lt;/isindex&gt;', '&lt;/i&gt;',
+                       '&lt;/iframe', '&lt;/ilayer', '&lt;/img', '&lt;/input', 
'&lt;/ins', '&lt;/isindex', '&lt;/i',
+
+                       '&lt;kbd&gt;',
+                       '&lt;kbd',
+                       '&t;/kbd&gt;',
+                       '&lt;/kbd',
+
+                       '&lt;label&gt;', '&lt;legend&gt;', '&lt;link&gt;', 
'&lt;li&gt;',
+                       '&lt;label', '&lt;legend', '&lt;link', '&lt;li',
+                       '&lt;/label&gt;', '&lt;/legend&gt;', '&lt;/link&gt;', 
'&lt;/li&gt;',
+                       '&lt;/label', '&lt;/legend', '&lt;/link', '&lt;/li',
+
+                       '&lt;map&gt;', '&lt;meta&gt;',
+                       '&lt;map', '&lt;meta',
+                       '&lt;/map&gt;', '&lt;/meta&gt;',
+                       '&lt;/map', '&lt;/meta',
+
+                       '&lt;noframes&gt;', '&lt;noscript&gt;',
+                       '&lt;noframes', '&lt;noscript',
+                       '&lt;/noframes&gt;', '&lt;/noscript&gt;',
+                       '&lt;/noframes', '&lt;/noscript',
+
+                       '&lt;object&gt;', '&lt;ol&gt;', '&lt;optgroup&gt;', 
'&lt;option&gt;',
+                       '&lt;object', '&lt;ol', '&lt;optgroup', '&lt;option',
+                       '&lt;/object&gt;', '&lt;/ol&gt;', '&lt;/optgroup&gt;', 
'&lt;/option&gt;',
+                       '&lt;/object', '&lt;/ol', '&lt;/optgroup', 
'&lt;/option',
+
+                       '&lt;param&gt;', '&lt;pre&gt;', '&lt;p&gt;',
+                       '&lt;param', '&lt;pre', '&lt;p',
+                       '&lt;/param&gt;', '&lt;/pre&gt;', '&lt;/p&gt;',
+                       '&lt;/param', '&lt;/pre', '&lt;/p',
+
+                       '&lt;q&gt;',
+                       '&lt;q',
+                       '&lt;/q&gt;',
+                       '&lt;/q',
+
+                       '&lt;samp&gt;', '&lt;script&gt;', '&lt;select&gt;', 
'&lt;small&gt;', '&lt;span&gt;', '&lt;strike&gt;', '&lt;strong&gt;', 
'&lt;style&gt;', '&lt;sub&gt;', '&lt;sup&gt;', '&lt;s&gt;',
+                       '&lt;samp', '&lt;script', '&lt;select', '&lt;small', 
'&lt;span', '&lt;strike', '&lt;strong', '&lt;style', '&lt;sub', '&lt;sup', 
'&lt;s',
+                       '&lt;/samp&gt;', '&lt;/script&gt;', '&lt;/select&gt;', 
'&lt;/small&gt;', '&lt;/span&gt;', '&lt;/strike&gt;', '&lt;/strong&gt;', 
'&lt;/style&gt;', '&lt;/sub&gt;', '&lt;/sup&gt;', '&lt;/s&gt;',
+                       '&lt;/samp', '&lt;/script', '&lt;/select', 
'&lt;/small', '&lt;/span', '&lt;/strike', '&lt;/strong', '&lt;/style', 
'&lt;/sub', '&lt;/sup', '&lt;/s',
+
+                       '&lt;table&gt;', '&lt;tbody&gt;', '&lt;td&gt;', 
'&lt;textarea&gt;', '&lt;text&gt;', '&lt;tfoot&gt;', '&lt;thead&gt;', 
'&lt;th&gt;', '&lt;title&gt;', '&lt;tr&gt;', '&lt;tt&gt;',
+                       '&lt;table', '&lt;tbody', '&lt;td', '&lt;textarea', 
'&lt;text', '&lt;tfoot', '&lt;tfoot', '&lt;thead', '&lt;th', '&lt;title', 
'&lt;tr', '&lt;tt',
+                       '&lt;/table&gt;', '&lt;/tbody&gt;', '&lt;/td&gt;', 
'&lt;/textarea&gt;', '&lt;/text&gt;', '&lt;/tfoot&gt;', '&lt;/thead', 
'&lt;/tfoot', '&lt;/th&gt;', '&lt;/title&gt;', '&lt;/tr&gt;', '&lt;/tt&gt;',
+                       '&lt;/table', '&lt;/tbody', '&lt;/td', '&lt;/textarea', 
'&lt;/text', '&lt;/tfoot', '&lt;/tfoot', '&lt;/thead', '&lt;/th', '&lt;/title', 
'&lt;/tr', '&lt;/tt',
+
+                       '&lt;ul&gt;', '&lt;u&gt;',
+                       '&lt;ul', '&lt;u',
+                       '&lt;/ul&gt;', '&lt;/ul&gt;',
+                       '&lt;/ul', '&lt;/u',
+
+                       '&lt;var&gt;',
+                       '&lt;var',
+                       '&lt;/var&gt;',
+                       '&lt;/var',
+
+                       '&gt;', '&lt;'
+                       ),
+               3 => array(
+                       'abbr', 'accept-charset', 'accept', 'accesskey', 
'action', 'align', 'alink', 'alt', 'archive', 'axis',
+                       'background', 'bgcolor', 'border',
+                       'cellpadding', 'cellspacing', 'char', 'char', 
'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 
'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 
'coords',
+                       'data', 'datetime', 'declare', 'defer', 'dir', 
'disabled',
+                       'enctype',
+                       'face', 'for', 'frame', 'frameborder',
+                       'headers', 'height', 'href', 'hreflang', 'hspace', 
'http-equiv',
+                       'id', 'ismap',
+                       'label', 'lang', 'language', 'link', 'longdesc',
+                       'marginheight', 'marginwidth', 'maxlength', 'media', 
'method', 'multiple',
+                       'name', 'nohref', 'noresize', 'noshade', 'nowrap',
+                       'object', 'onblur', 'onchange', 'onclick', 
'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 
'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 
'onreset', 'onselect', 'onsubmit', 'onunload',
+                       'profile', 'prompt',
+                       'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
+                       'scheme', 'scope', 'scrolling', 'selected', 'shape', 
'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
+                       'tabindex', 'target', 'text', 'title', 'type',
+                       'usemap',
+                       'valign', 'value', 'valuetype', 'version', 'vlink', 
'vspace',
+                       'width'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '/', '='
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       0 => 'color: #00bbdd;',
+                       1 => 'color: #ddbb00;',
+                       2 => 'color: #009900;'
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => 'http://december.com/html/4/element/{FNAME}.html',
+               3 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<!DOCTYPE' => '>'
+                       ),
+               1 => array(
+                       '&' => ';'
+                       ),
+               2 => array(
+                       '<' => '>'
+                       )
+       ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => false,
+               1 => false,
+               2 => true
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/idl.php
===================================================================
RCS file: geshi/idl.php
diff -N geshi/idl.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/idl.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,121 @@
+<?php
+/*************************************************************************************
+ * idl.php
+ * -------
+ * Author: Cedric Bosdonnat (address@hidden)
+ * Copyright: (c) 2006 Cedric Bosdonnat
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/08/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Unoidl language file for GeSHi.
+ *
+ * 2006/08/20 (1.0.0)
+ *  -  First Release
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+
+$language_data = array (
+       'LANG_NAME' => 'Uno Idl',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'published', 'get', 'set', 'service', 'singleton', 
'type', 'module', 'interface', 'struct',
+                       'const', 'constants', 'exception', 'enum', 'raises', 
'typedef'
+                       ),
+               2 => array(
+            'bound', 'maybeambiguous', 'maybedefault', 'maybevoid', 'oneway', 
'optional',
+            'readonly', 'in', 'out', 'inout', 'attribute', 'transient', 
'removable'
+               ),
+               3 => array(
+                       'True', 'False', 'TRUE', 'FALSE'
+            ),
+               4 => array(
+                   'string', 'long', 'byte', 'hyper', 'boolean', 'any', 
'char', 'double', 'long', 
+            'void', 'sequence', 'unsigned', '...'
+            ),
+               ),
+       'SYMBOLS' => array(
+        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', 
'&', ':', ';'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => true,
+               2 => true,
+               3 => true,
+               4 => true,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #990078; font-weight: bold',
+                       2 => 'color: #36dd1c;',
+                       3 => 'color: #990078; font-weight: bold',
+                       4 => 'color: #0000ec;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #3f7f5f;',
+                       2 => 'color: #808080;',
+                       'MULTI' => 'color: #4080ff; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #666666; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #808080;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #0000dd;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               1 => '::'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/ini.php
===================================================================
RCS file: geshi/ini.php
diff -N geshi/ini.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/ini.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,125 @@
+<?php
+/*************************************************************************************
+ * ini.php
+ * --------
+ * Author: deguix (address@hidden)
+ * Copyright: (c) 2005 deguix
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/03/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * INI language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.1)
+ *   -  Removed unnecessary keyword style index
+ *   -  Added support for " strings
+ * 2005/04/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2005/03/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'INI',
+       'COMMENT_SINGLE' => array(0 => ';'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               ),
+       'SYMBOLS' => array(
+               '[', ']', '='
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       ),
+               'COMMENTS' => array(
+                       0 => 'color: #666666; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                   0 => ''
+                       ),
+               'BRACKETS' => array(
+                   0 => ''
+                       ),
+               'STRINGS' => array(
+                   0 => 'color: #933;'
+                       ),
+               'NUMBERS' => array(
+                   0 => ''
+                       ),
+               'METHODS' => array(
+                   0 => ''
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #000066; font-weight:bold;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #000066; font-weight:bold;',
+                       1 => 'color: #000099;',
+                       2 => 'color: #660066;'
+                       ),
+               'SCRIPT' => array(
+                   0 => ''
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => '\[.+\]',
+               1 => array(
+                       GESHI_SEARCH => '([a-zA-Z0-9_]+\s*)=(.+)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '=\\2'
+                       ),
+               2 => array(
+            // Evil hackery to get around GeSHi bug: <>" and ; are added so 
<span>s can be matched
+            // Explicit match on variable names because if a comment is before 
the first < of the span
+            // gets chewed up...
+                       GESHI_SEARCH => '([<>";a-zA-Z0-9_]+\s*)=(.+)',
+                       GESHI_REPLACE => '\\2',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1=',
+                       GESHI_AFTER => ''
+                       )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/inno.php
===================================================================
RCS file: geshi/inno.php
diff -N geshi/inno.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/inno.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,215 @@
+<?php
+/*************************************************************************************
+ * Inno.php
+ * ----------
+ * Author: Thomas Klingler (address@hidden) based on delphi.php from Járja 
Norbert (address@hidden)
+ * Copyright: (c) 2004 Járja Norbert, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/07/29
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/09/03
+ *   -  First Release
+ *
+ * TODO (updated 2005/07/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Inno',
+       'COMMENT_SINGLE' => array(1 => '//'),
+       'COMMENT_MULTI' => array('(*' => '*)'),
+       'CASE_KEYWORDS' => 0,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => 
array('Setup','Types','Components','Tasks','Dirs','Files','Icons','INI','InstallDelete','Languages','Messages',
+                                       
'CustomMessage','LangOptions','Registry','RUN','UninstallDelete','UninstallRun'
+                                       
,'app','win','sys','syswow64','src','sd','pf','pf32','pf64','cf','cf32','cf64','tmp','fonts','dao',
+                                       
'group','localappdata','sendto','userappdata','commonappdata','userdesktop','commondesktop','userdocs',
+                                       
'commondocs','userfavorites','commonfavorites','userprograms','commonprograms','userstartmenu',
+                                       
'commonstartmenu','userstartup','commonstartup','usertemplates','commontemplates'
+                       ),
+               2 => array(
+                       'nil', 'false', 'true', 'var', 'type', 'const','And', 
'Array', 'As', 'Begin', 'Case', 'Class', 'Constructor', 'Destructor', 'Div', 
'Do', 'DownTo', 'Else',
+                       'End', 'Except', 'File', 'Finally', 'For', 'Function', 
'Goto', 'If', 'Implementation', 'In', 'Inherited', 'Interface',
+                       'Is', 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 
'Packed', 'Procedure', 'Property', 'Raise', 'Record',
+                       'Repeat', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 
'To', 'Try', 'Unit', 'Until', 'Uses', 'While', 'With', 'Xor',
+                       
+                       
'HKCC','HKCR','HKCU','HKLM','HKU','alwaysoverwrite','alwaysskipifsameorolder','append',
+                       
'binary','classic','closeonexit','comparetimestamp','confirmoverwrite',
+                       
'createkeyifdoesntexist','createonlyiffileexists','createvalueifdoesntexist',
+                       
'deleteafterinstall','deletekey','deletevalue','dirifempty','dontcloseonexit',
+                       
'dontcopy','dontcreatekey','disablenouninstallwarning','dword','exclusive','expandsz',
+                       
'external','files','filesandordirs','fixed','fontisnttruetype','ignoreversion','iscustom','isreadme',
+                       
'modern','multisz','new','noerror','none','normal','nowait','onlyifdestfileexists',
+                       
'onlyifdoesntexist','onlyifnewer','overwrite','overwritereadonly','postinstall',
+                       
'preservestringtype','promptifolder','regserver','regtypelib','restart','restartreplace',
+                       
'runhidden','runmaximized','runminimized','sharedfile','shellexec','showcheckbox',
+                       
'skipifnotsilent','skipifsilent','silent','skipifdoesntexist',
+                       
'skipifsourcedoesntexist','sortfilesbyextension','unchecked','uninsalwaysuninstall',
+                       
'uninsclearvalue','uninsdeleteentry','uninsdeletekey','uninsdeletekeyifempty',
+                       
'uninsdeletesection','uninsdeletesectionifempty','uninsdeletevalue',
+                       
'uninsneveruninstall','useapppaths','verysilent','waituntilidle'
+
+                       
+                       ),
+               3 => array(
+                       'Abs', 'Addr', 'AnsiCompareStr', 'AnsiCompareText', 
'AnsiContainsStr', 'AnsiEndsStr', 'AnsiIndexStr', 'AnsiLeftStr',
+                       'AnsiLowerCase', 'AnsiMatchStr', 'AnsiMidStr', 
'AnsiPos', 'AnsiReplaceStr', 'AnsiReverseString', 'AnsiRightStr',
+                       'AnsiStartsStr', 'AnsiUpperCase', 'ArcCos', 'ArcSin', 
'ArcTan', 'Assigned', 'BeginThread', 'Bounds', 'CelsiusToFahrenheit',
+                       'ChangeFileExt', 'Chr', 'CompareStr', 'CompareText', 
'Concat', 'Convert', 'Copy', 'Cos', 'CreateDir', 'CurrToStr',
+                       'CurrToStrF', 'Date', 'DateTimeToFileDate', 
'DateTimeToStr', 'DateToStr', 'DayOfTheMonth', 'DayOfTheWeek', 'DayOfTheYear',
+                       'DayOfWeek', 'DaysBetween', 'DaysInAMonth', 
'DaysInAYear', 'DaySpan', 'DegToRad', 'DeleteFile', 'DiskFree', 'DiskSize',
+                       'DupeString', 'EncodeDate', 'EncodeDateTime', 
'EncodeTime', 'EndOfADay', 'EndOfAMonth', 'Eof', 'Eoln', 'Exp', 
'ExtractFileDir',
+                       'ExtractFileDrive', 'ExtractFileExt', 
'ExtractFileName', 'ExtractFilePath', 'FahrenheitToCelsius', 'FileAge',
+                       'FileDateToDateTime', 'FileExists', 'FilePos', 
'FileSearch', 'FileSetDate', 'FileSize', 'FindClose', 'FindCmdLineSwitch',
+                       'FindFirst', 'FindNext', 'FloatToStr', 'FloatToStrF', 
'Format', 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'Frac',
+                       'GetCurrentDir', 'GetLastError', 'GetMem', 'High', 
'IncDay', 'IncMinute', 'IncMonth', 'IncYear', 'InputBox',
+                       'InputQuery', 'Int', 'IntToHex', 'IntToStr', 
'IOResult', 'IsInfinite', 'IsLeapYear', 'IsMultiThread', 'IsNaN',
+                       'LastDelimiter', 'Length', 'Ln', 'Lo', 'Log10', 'Low', 
'LowerCase', 'Max', 'Mean', 'MessageDlg', 'MessageDlgPos',
+                       'MonthOfTheYear', 'Now', 'Odd', 'Ord', 'ParamCount', 
'ParamStr', 'Pi', 'Point', 'PointsEqual', 'Pos', 'Pred',
+                       'Printer', 'PromptForFileName', 'PtInRect', 'RadToDeg', 
'Random', 'RandomRange', 'RecodeDate', 'RecodeTime', 'Rect',
+                       'RemoveDir', 'RenameFile', 'Round', 'SeekEof', 
'SeekEoln', 'SelectDirectory', 'SetCurrentDir', 'Sin', 'SizeOf',
+                       'Slice', 'Sqr', 'Sqrt', 'StringOfChar', 
'StringReplace', 'StringToWideChar', 'StrToCurr', 'StrToDate', 'StrToDateTime',
+                       'StrToFloat', 'StrToInt', 'StrToInt64', 
'StrToInt64Def', 'StrToIntDef', 'StrToTime', 'StuffString', 'Succ', 'Sum', 
'Tan',
+                       'Time', 'TimeToStr', 'Tomorrow', 'Trunc', 'UpCase', 
'UpperCase', 'VarType', 'WideCharToString', 'WrapText', 'Yesterday',
+                       'Append', 'AppendStr', 'Assign', 'AssignFile', 
'AssignPrn', 'Beep', 'BlockRead', 'BlockWrite', 'Break',
+                       'ChDir', 'Close', 'CloseFile', 'Continue', 
'DateTimeToString', 'Dec', 'DecodeDate', 'DecodeDateTime',
+                       'DecodeTime', 'Delete', 'Dispose', 'EndThread', 
'Erase', 'Exclude', 'Exit', 'FillChar', 'Flush', 'FreeAndNil',
+                       'FreeMem', 'GetDir', 'GetLocaleFormatSettings', 'Halt', 
'Inc', 'Include', 'Insert', 'MkDir', 'Move', 'New',
+                       'ProcessPath', 'Randomize', 'Read', 'ReadLn', 
'ReallocMem', 'Rename', 'ReplaceDate', 'ReplaceTime',
+                       'Reset', 'ReWrite', 'RmDir', 'RunError', 'Seek', 
'SetLength', 'SetString', 'ShowMessage', 'ShowMessageFmt',
+                       'ShowMessagePos', 'Str', 'Truncate', 'Val', 'Write', 
'WriteLn',
+                       
+                       
'AdminPrivilegesRequired','AfterInstall','AllowCancelDuringInstall','AllowNoIcons','AllowRootDirectory','AllowUNCPath','AlwaysRestart','AlwaysShowComponentsList','AlwaysShowDirOnReadyPage','AlwaysShowGroupOnReadyPage
 
','AlwaysUsePersonalGroup','AppComments','AppContact','AppCopyright','AppendDefaultDirName',
+                       
'AppendDefaultGroupName','AppId','AppModifyPath','AppMutex','AppName','AppPublisher',
+                       
'AppPublisherURL','AppReadmeFile','AppSupportURL','AppUpdatesURL','AppVerName','AppVersion',
+                       
'Attribs','BackColor','BackColor2','BackColorDirection','BackSolid','BeforeInstall',
+                       
'ChangesAssociations','ChangesEnvironment','Check','CodeFile','Comment','Components','Compression','CopyMode',
+                       
'CreateAppDir','CreateUninstallRegKey','DefaultDirName','DefaultGroupName',
+                       
'DefaultUserInfoName','DefaultUserInfoOrg','DefaultUserInfoSerial',
+                       'Description','DestDir','DestName','DirExistsWarning',
+                       'DisableDirPage','DisableFinishedPage',
+                       
'DisableProgramGroupPage','DisableReadyMemo','DisableReadyPage',
+                       
'DisableStartupPrompt','DiskClusterSize','DiskSliceSize','DiskSpaceMBLabel',
+                       
'DiskSpanning','DontMergeDuplicateFiles','EnableDirDoesntExistWarning','Encryption',
+                       
'Excludes','ExtraDiskSpaceRequired','Filename','Flags','FlatComponentsList','FontInstall',
+                       
'GroupDescription','HotKey','IconFilename','IconIndex','InfoAfterFile','InfoBeforeFile',
+                       
'InternalCompressLevel','Key','LanguageDetectionMethod','Languages',
+                       
'LicenseFile','MergeDuplicateFiles','MessagesFile','MinVersion','Name',
+                       
'OnlyBelowVersion','OutputBaseFilename','OutputManifestFile','OutputDir',
+                       
'Parameters','Password','Permissions','PrivilegesRequired','ReserveBytes',
+                       
'RestartIfNeededByRun','Root','RunOnceId','Section','SetupIconFile',
+                       
'ShowComponentSizes','ShowLanguageDialog','ShowTasksTreeLines','SlicesPerDisk',
+                       
'SolidCompression','Source','SourceDir','StatusMsg','Subkey','Tasks',
+                       
'TimeStampRounding','TimeStampsInUTC','TouchDate','TouchTime','Type','Types',
+                       
'UninstallDisplayIcon','UninstallDisplayName','UninstallFilesDir','UninstallIconFile',
+                       
'UninstallLogMode','UninstallRestartComputer','UninstallStyle','Uninstallable',
+                       
'UpdateUninstallLogAppName','UsePreviousAppDir','UsePreviousGroup',
+                       
'UsePreviousTasks','UsePreviousSetupType','UsePreviousUserInfo',
+                       
'UserInfoPage','UseSetupLdr','ValueData','ValueName','ValueType',
+                       
'VersionInfoVersion','VersionInfoCompany','VersionInfoDescription','VersionInfoTextVersion',
+                       
'WindowResizable','WindowShowCaption','WindowStartMaximized',
+                       
'WindowVisible','WizardImageBackColor','WizardImageFile','WizardImageStretch','WizardSmallImageBackColor','WizardSmallImageFile','WizardStyle','WorkingDir'
+
+                       
+                       ),
+               4 => array(
+                       'AnsiChar', 'AnsiString', 'Boolean', 'Byte', 
'Cardinal', 'Char', 'Comp', 'Currency', 'Double', 'Extended',
+                       'Int64', 'Integer', 'LongInt', 'LongWord', 'PAnsiChar', 
'PAnsiString', 'PChar', 'PCurrency', 'PDateTime',
+                       'PExtended', 'PInt64', 'Pointer', 'PShortString', 
'PString', 'PVariant', 'PWideChar', 'PWideString',
+                       'Real', 'Real48', 'ShortInt', 'ShortString', 'Single', 
'SmallInt', 'String', 'TBits', 'TConvType', 'TDateTime',
+                       'Text', 'TextFile', 'TFloatFormat', 'TFormatSettings', 
'TList', 'TObject', 'TOpenDialog', 'TPoint',
+                       'TPrintDialog', 'TRect', 'TReplaceFlags', 
'TSaveDialog', 'TSearchRec', 'TStringList', 'TSysCharSet',
+                       'TThreadFunc', 'Variant', 'WideChar', 'WideString', 
'Word'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '@', '%', '&', '*', '|', '/', 
'<', '>'
+               ),      
+               
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #000000; font-weight: bold;',/*bold Black*/
+                       2 => 'color: #000000;font-style: italic;',/*Black*/
+                       3 => 'color: #0000FF;',/*blue*/
+                       4 => 'color: #CC0000;'/*red*/
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #33FF00; font-style: italic;',
+                       'MULTI' => 'color: #33FF00; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color:  #000000; font-weight: bold;',
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/java.php
===================================================================
RCS file: geshi/java.php
diff -N geshi/java.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/java.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,1390 @@
+<?php
+/*************************************************************************************
+ * java.php
+ * --------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Java language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.4)
+ *   -  Added instanceof keyword
+ * 2004/11/27 (1.0.3)
+ *   -  Added support for multiple object splitters
+ * 2004/08/05 (1.0.2)
+ *   -  Added URL support
+ *   -  Added keyword "this", as bugs in GeSHi class ironed out
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ *   -  Added extra missed keywords
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Compact the class names like the first few have been
+ *   and eliminate repeats
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Java',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => 'import'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'for', 'foreach', 'if', 'else', 'while', 'do',
+                       'switch', 'case'
+                       ),
+               2 => array(
+                       'null', 'return', 'false', 'final', 'true', 'public',
+                       'private', 'protected', 'extends', 'break', 'class',
+                       'new', 'try', 'catch', 'throws', 'finally', 
'implements',
+                       'interface', 'throw', 'native', 'synchronized', 'this',
+            'abstract', 'transient', 'instanceof', 'assert', 'continue',
+            'default', 'enum', 'package', 'static', 'strictfp', 'super',
+            'volatile', 'const', 'goto'
+                       ),
+               3 => array(
+                       'AbstractAction', 'AbstractBorder', 'AbstractButton', 
'AbstractCellEditor',
+                       'AbstractCollection', 'AbstractColorChooserPanel', 
'AbstractDocument',
+                       'AbstractDocument.AttributeContext', 
'AbstractDocument.Content',
+                       'AbstractDocument.ElementEdit', 'AbstractLayoutCache',
+                       'AbstractLayoutCache.NodeDimensions', 'AbstractList', 
'AbstractListModel',
+                       'AbstractMap', 'AbstractMethodError', 
'AbstractSequentialList',
+                       'AbstractSet', 'AbstractTableModel', 
'AbstractUndoableEdit', 'AbstractWriter',
+                       'AccessControlContext', 'AccessControlException', 
'AccessController',
+                       'AccessException', 'Accessible', 'AccessibleAction', 
'AccessibleBundle',
+                       'AccessibleComponent', 'AccessibleContext', 
'AccessibleHyperlink',
+                       'AccessibleHypertext', 'AccessibleIcon', 
'AccessibleObject',
+                       'AccessibleRelation', 'AccessibleRelationSet', 
'AccessibleResourceBundle',
+                       'AccessibleRole', 'AccessibleSelection', 
'AccessibleState',
+                       'AccessibleStateSet', 'AccessibleTable', 
'AccessibleTableModelChange',
+                       'AccessibleText', 'AccessibleValue', 'Acl', 'AclEntry', 
'AclNotFoundException',
+                       'Action', 'ActionEvent', 'ActionListener', 'ActionMap', 
'ActionMapUIResource',
+                       'Activatable', 'ActivateFailedException', 
'ActivationDesc',
+                       'ActivationException', 'ActivationGroup', 
'ActivationGroupDesc',
+                       'ActivationGroupDesc.CommandEnvironment', 
'ActivationGroupID', 'ActivationID',
+                       'ActivationInstantiator', 'ActivationMonitor', 
'ActivationSystem',
+                       'Activator', 'ActiveEvent', 'Adjustable', 
'AdjustmentEvent', 'AdjustmentListener',
+                       'Adler32', 'AffineTransform', 'AffineTransformOp', 
'AlgorithmParameterGenerator',
+                       'AlgorithmParameterGeneratorSpi', 
'AlgorithmParameters', 'AlgorithmParameterSpec',
+                       'AlgorithmParametersSpi', 'AllPermission', 
'AlphaComposite', 'AlreadyBound',
+                       'AlreadyBoundException', 'AlreadyBoundHelper', 
'AlreadyBoundHolder',
+                       'AncestorEvent', 'AncestorListener', 'Annotation', 
'Any', 'AnyHolder',
+                       'AnySeqHelper', 'AnySeqHolder', 'Applet', 
'AppletContext', 'AppletInitializer',
+                       'AppletStub', 'ApplicationException', 'Arc2D', 
'Arc2D.Double', 'Arc2D.Float',
+                       'Area', 'AreaAveragingScaleFilter', 'ARG_IN', 
'ARG_INOUT', 'ARG_OUT',
+                       'ArithmeticException', 'Array', 
'ArrayIndexOutOfBoundsException',
+                       'ArrayList', 'Arrays', 'ArrayStoreException', 
'AsyncBoxView',
+                       'Attribute', 'AttributedCharacterIterator', 
'AttributedCharacterIterator.Attribute',
+                       'AttributedString', 'AttributeInUseException', 
'AttributeList',
+                       'AttributeModificationException', 'Attributes', 
'Attributes.Name',
+                       'AttributeSet', 'AttributeSet.CharacterAttribute', 
'AttributeSet.ColorAttribute',
+                       'AttributeSet.FontAttribute', 
'AttributeSet.ParagraphAttribute',
+                       'AudioClip', 'AudioFileFormat', 'AudioFileFormat.Type', 
'AudioFileReader',
+                       'AudioFileWriter', 'AudioFormat', 
'AudioFormat.Encoding', 'AudioInputStream',
+                       'AudioPermission', 'AudioSystem', 
'AuthenticationException',
+                       'AuthenticationNotSupportedException', 'Authenticator', 
'Autoscroll',
+                       'AWTError', 'AWTEvent', 'AWTEventListener', 
'AWTEventMulticaster',
+                       'AWTException', 'AWTPermission', 'BAD_CONTEXT', 
'BAD_INV_ORDER', 'BAD_OPERATION',
+                       'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 
'BAD_POLICY_VALUE', 'BAD_TYPECODE',
+                       'BadKind', 'BadLocationException', 'BandCombineOp', 
'BandedSampleModel','BasicArrowButton',
+                       'BasicAttribute', 'BasicAttributes', 'BasicBorders', 
'BasicBorders.ButtonBorder',
+                       'BasicBorders.FieldBorder', 
'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder',
+                       'BasicBorders.RadioButtonBorder', 
'BasicBorders.SplitPaneBorder',
+                       'BasicBorders.ToggleButtonBorder', 
'BasicButtonListener', 'BasicButtonUI',
+                       'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 
'BasicColorChooserUI', 'BasicComboBoxEditor',
+                       'BasicComboBoxEditor.UIResource', 
'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource',
+                       'BasicComboBoxUI', 'BasicComboPopup', 
'BasicDesktopIconUI', 'BasicDesktopPaneUI',
+                       'BasicDirectoryModel', 'BasicEditorPaneUI', 
'BasicFileChooserUI',
+                       'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 
'BasicInternalFrameTitlePane',
+                       'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 
'BasicLookAndFeel',
+                       'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 
'BasicOptionPaneUI',
+                       'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 
'BasicPasswordFieldUI',
+                       'BasicPermission', 'BasicPopupMenuSeparatorUI', 
'BasicPopupMenuUI',
+                       'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 
'BasicRadioButtonUI',
+                       'BasicRootPaneUI', 'BasicScrollBarUI', 
'BasicScrollPaneUI', 'BasicSeparatorUI',
+                       'BasicSliderUI', 'BasicSplitPaneDivider', 
'BasicSplitPaneUI', 'BasicStroke',
+                       'BasicTabbedPaneUI', 'BasicTableHeaderUI', 
'BasicTableUI', 'BasicTextAreaUI',
+                       'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 
'BasicTextUI.BasicCaret',
+                       'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 
'BasicToolBarSeparatorUI',
+                       'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 
'BasicViewportUI',
+                       'BatchUpdateException', 'BeanContext', 
'BeanContextChild',
+                       'BeanContextChildComponentProxy', 
'BeanContextChildSupport', 'BeanContextContainerProxy',
+                       'BeanContextEvent', 'BeanContextMembershipEvent', 
'BeanContextMembershipListener',
+                       'BeanContextProxy', 'BeanContextServiceAvailableEvent', 
'BeanContextServiceProvider',
+                       'BeanContextServiceProviderBeanInfo', 
'BeanContextServiceRevokedEvent',
+                       'BeanContextServiceRevokedListener', 
'BeanContextServices',
+                       'BeanContextServicesListener', 
'BeanContextServicesSupport',
+                       'BeanContextServicesSupport.BCSSServiceProvider', 
'BeanContextSupport',
+                       'BeanContextSupport.BCSIterator', 'BeanDescriptor', 
'BeanInfo', 'Beans',
+                       'BevelBorder', 'BigDecimal', 'BigInteger', 
'BinaryRefAddr', 'BindException',
+                       'Binding', 'BindingHelper', 'BindingHolder', 
'BindingIterator',
+                       'BindingIteratorHelper', 'BindingIteratorHolder', 
'BindingIteratorOperations',
+                       'BindingListHelper', 'BindingListHolder', 
'BindingType', 'BindingTypeHelper',
+                       'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView', 
'Book', 'Boolean',
+                       'BooleanControl', 'BooleanControl.Type', 
'BooleanHolder', 'BooleanSeqHelper',
+                       'BooleanSeqHolder', 'Border', 'BorderFactory', 
'BorderLayout', 'BorderUIResource',
+                       'BorderUIResource.BevelBorderUIResource', 
'BorderUIResource.CompoundBorderUIResource',
+                       'BorderUIResource.EmptyBorderUIResource', 
'BorderUIResource.EtchedBorderUIResource',
+                       'BorderUIResource.LineBorderUIResource', 
'BorderUIResource.MatteBorderUIResource',
+                       'BorderUIResource.TitledBorderUIResource', 
'BoundedRangeModel', 'Bounds',
+                       'Box', 'Box.Filler', 'BoxedValueHelper', 'BoxLayout', 
'BoxView',
+                       'BreakIterator', 'BufferedImage', 
'BufferedImageFilter', 'BufferedImageOp',
+                       'BufferedInputStream', 'BufferedOutputStream', 
'BufferedReader', 'BufferedWriter',
+                       'Button', 'ButtonGroup', 'ButtonModel', 'ButtonUI', 
'Byte', 'ByteArrayInputStream',
+                       'ByteArrayOutputStream', 'ByteHolder', 
'ByteLookupTable', 'Calendar',
+                       'CallableStatement', 'CannotProceed', 
'CannotProceedException', 'CannotProceedHelper',
+                       'CannotProceedHolder', 'CannotRedoException', 
'CannotUndoException',
+                       'Canvas', 'CardLayout', 'Caret', 'CaretEvent', 
'CaretListener', 'CellEditor',
+                       'CellEditorListener', 'CellRendererPane', 
'Certificate', 'Certificate.CertificateRep',
+                       'CertificateEncodingException', 'CertificateException', 
'CertificateExpiredException',
+                       'CertificateFactory', 'CertificateFactorySpi', 
'CertificateNotYetValidException',
+                       'CertificateParsingException', 
'ChangedCharSetException', 'ChangeEvent',
+                       'ChangeListener', 'Character', 'Character.Subset', 
'Character.UnicodeBlock',
+                       'CharacterIterator', 'CharArrayReader', 
'CharArrayWriter', 'CharConversionException',
+                       'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 
'Checkbox', 'CheckboxGroup',
+                       'CheckboxMenuItem', 'CheckedInputStream', 
'CheckedOutputStream', 'Checksum',
+                       'Choice', 'ChoiceFormat', 'Class', 
'ClassCastException', 'ClassCircularityError',
+                       'ClassDesc', 'ClassFormatError', 'ClassLoader', 
'ClassNotFoundException',
+                       'Clip', 'Clipboard', 'ClipboardOwner', 'Clob', 
'Cloneable', 'CloneNotSupportedException',
+                       'CMMException', 'CodeSource', 
'CollationElementIterator', 'CollationKey',
+                       'Collator', 'Collection', 'Collections', 'Color', 
'ColorChooserComponentFactory',
+                       'ColorChooserUI', 'ColorConvertOp', 'ColorModel', 
'ColorSelectionModel',
+                       'ColorSpace', 'ColorUIResource', 'ComboBoxEditor', 
'ComboBoxModel', 'ComboBoxUI',
+                       'ComboPopup', 'COMM_FAILURE', 'CommunicationException', 
'Comparable',
+                       'Comparator', 'Compiler', 'CompletionStatus', 
'CompletionStatusHelper',
+                       'Component', 'ComponentAdapter', 'ComponentColorModel', 
'ComponentEvent',
+                       'ComponentInputMap', 'ComponentInputMapUIResource', 
'ComponentListener',
+                       'ComponentOrientation', 'ComponentSampleModel', 
'ComponentUI', 'ComponentView',
+                       'Composite', 'CompositeContext', 
'CompositeName','CompositeView', 'CompoundBorder',
+                       'CompoundControl', 'CompoundControl.Type', 
'CompoundEdit', 'CompoundName',
+                       'ConcurrentModificationException', 
'ConfigurationException', 'ConnectException',
+                       'ConnectException', 'ConnectIOException', 'Connection', 
'Constructor',
+                       'Container', 'ContainerAdapter', 'ContainerEvent', 
'ContainerListener',
+                       'ContentHandler', 'ContentHandlerFactory', 
'ContentModel', 'Context', 'ContextList',
+                       'ContextNotEmptyException', 
'ContextualRenderedImageFactory', 'Control',
+                       'Control.Type', 'ControlFactory', 
'ControllerEventListener', 'ConvolveOp',
+                       'CRC32', 'CRL', 'CRLException', 'CropImageFilter', 
'CSS', 'CSS.Attribute',
+                       'CTX_RESTRICT_SCOPE', 'CubicCurve2D', 
'CubicCurve2D.Double', 'CubicCurve2D.Float',
+                       'Current', 'CurrentHelper', 'CurrentHolder', 
'CurrentOperations', 'Cursor',
+                       'Customizer', 'CustomMarshal', 'CustomValue', 
'DATA_CONVERSION', 'DatabaseMetaData',
+                       'DataBuffer', 'DataBufferByte', 'DataBufferInt', 
'DataBufferShort', 'DataBufferUShort',
+                       'DataFlavor', 'DataFormatException', 'DatagramPacket', 
'DatagramSocket',
+                       'DatagramSocketImpl', 'DatagramSocketImplFactory', 
'DataInput', 'DataInputStream',
+                       'DataLine', 'DataLine.Info', 'DataOutput', 
'DataOutputStream', 'DataOutputStream',
+                       'DataTruncation', 'Date', 'DateFormat', 
'DateFormatSymbols', 'DebugGraphics',
+                       'DecimalFormat', 'DecimalFormatSymbols', 
'DefaultBoundedRangeModel',
+                       'DefaultButtonModel', 'DefaultCaret', 
'DefaultCellEditor', 'DefaultColorSelectionModel',
+                       'DefaultComboBoxModel', 'DefaultDesktopManager', 
'DefaultEditorKit',
+                       'DefaultEditorKit.BeepAction', 
'DefaultEditorKit.CopyAction',
+                       'DefaultEditorKit.CutAction', 
'DefaultEditorKit.DefaultKeyTypedAction',
+                       'DefaultEditorKit.InsertBreakAction', 
'DefaultEditorKit.InsertContentAction',
+                       'DefaultEditorKit.InsertTabAction', 
'DefaultEditorKit.PasteAction,',
+                       'DefaultFocusManager', 'DefaultHighlighter', 
'DefaultHighlighter.DefaultHighlightPainter',
+                       'DefaultListCellRenderer', 
'DefaultListCellRenderer.UIResource', 'DefaultListModel',
+                       'DefaultListSelectionModel', 'DefaultMenuLayout', 
'DefaultMetalTheme',
+                       'DefaultMutableTreeNode', 
'DefaultSingleSelectionModel', 'DefaultStyledDocument',
+                       'DefaultStyledDocument.AttributeUndoableEdit', 
'DefaultStyledDocument.ElementSpec',
+                       'DefaultTableCellRenderer', 
'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel',
+                       'DefaultTableModel', 'DefaultTextUI', 
'DefaultTreeCellEditor', 'DefaultTreeCellRenderer',
+                       'DefaultTreeModel', 'DefaultTreeSelectionModel', 
'DefinitionKind', 'DefinitionKindHelper',
+                       'Deflater', 'DeflaterOutputStream', 'Delegate', 
'DesignMode', 'DesktopIconUI',
+                       'DesktopManager', 'DesktopPaneUI', 'DGC', 'Dialog', 
'Dictionary', 'DigestException',
+                       'DigestInputStream', 'DigestOutputStream', 'Dimension', 
'Dimension2D',
+                       'DimensionUIResource', 'DirContext', 
'DirectColorModel', 'DirectoryManager',
+                       'DirObjectFactory', 'DirStateFactory', 
'DirStateFactory.Result', 'DnDConstants',
+                       'Document', 'DocumentEvent', 
'DocumentEvent.ElementChange', 'DocumentEvent.EventType',
+                       'DocumentListener', 'DocumentParser', 'DomainCombiner', 
'DomainManager',
+                       'DomainManagerOperations', 'Double', 'DoubleHolder', 
'DoubleSeqHelper',
+                       'DoubleSeqHolder', 'DragGestureEvent', 
'DragGestureListener', 'DragGestureRecognizer',
+                       'DragSource', 'DragSourceContext', 
'DragSourceDragEvent', 'DragSourceDropEvent',
+                       'DragSourceEvent', 'DragSourceListener', 'Driver', 
'DriverManager',
+                       'DriverPropertyInfo', 'DropTarget', 
'DropTarget.DropTargetAutoScroller',
+                       'DropTargetContext', 'DropTargetDragEvent', 
'DropTargetDropEvent',
+                       'DropTargetEvent', 'DropTargetListener', 'DSAKey', 
'DSAKeyPairGenerator',
+                       'DSAParameterSpec', 'DSAParams', 'DSAPrivateKey', 
'DSAPrivateKeySpec',
+                       'DSAPublicKey', 'DSAPublicKeySpec', 'DTD', 
'DTDConstants', 'DynamicImplementation',
+                       'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 
'DynSequence', 'DynStruct',
+                       'DynUnion', 'DynValue', 'EditorKit', 'Element', 
'ElementIterator', 'Ellipse2D',
+                       'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder', 
'EmptyStackException',
+                       'EncodedKeySpec', 'Entity', 'EnumControl', 
'EnumControl.Type','Enumeration',
+                       'Environment', 'EOFException', 'Error', 'EtchedBorder', 
'Event', 'EventContext',
+                       'EventDirContext', 'EventListener', 
'EventListenerList', 'EventObject', 'EventQueue',
+                       'EventSetDescriptor', 'Exception', 
'ExceptionInInitializerError', 'ExceptionList',
+                       'ExpandVetoException', 'ExportException', 
'ExtendedRequest', 'ExtendedResponse',
+                       'Externalizable', 'FeatureDescriptor', 'Field', 
'FieldNameHelper',
+                       'FieldPosition', 'FieldView', 'File', 'FileChooserUI', 
'FileDescriptor',
+                       'FileDialog', 'FileFilter', 'FileFilter', 
'FileInputStream', 'FilenameFilter',
+                       'FileNameMap', 'FileNotFoundException', 
'FileOutputStream', 'FilePermission',
+                       'FileReader', 'FileSystemView', 'FileView', 
'FileWriter', 'FilteredImageSource',
+                       'FilterInputStream', 'FilterOutputStream', 
'FilterReader', 'FilterWriter',
+                       'FixedHeightLayoutCache', 'FixedHolder', 
'FlatteningPathIterator', 'FlavorMap',
+                       'Float', 'FloatControl', 'FloatControl.Type', 
'FloatHolder', 'FloatSeqHelper',
+                       'FloatSeqHolder', 'FlowLayout', 'FlowView', 
'FlowView.FlowStrategy', 'FocusAdapter',
+                       'FocusEvent', 'FocusListener', 'FocusManager', 'Font', 
'FontFormatException',
+                       'FontMetrics', 'FontRenderContext', 'FontUIResource', 
'Format', 'FormatConversionProvider',
+                       'FormView', 'Frame', 'FREE_MEM', 'GapContent', 
'GeneralPath', 'GeneralSecurityException',
+                       'GlyphJustificationInfo', 'GlyphMetrics', 
'GlyphVector', 'GlyphView', 'GlyphView.GlyphPainter',
+                       'GradientPaint', 'GraphicAttribute', 'Graphics', 
'Graphics2D', 'GraphicsConfigTemplate',
+                       'GraphicsConfiguration', 'GraphicsDevice', 
'GraphicsEnvironment', 'GrayFilter',
+            'GregorianCalendar', 'GridBagConstraints', 'GridBagLayout', 
'GridLayout', 'Group', 'Guard',
+                       'GuardedObject', 'GZIPInputStream', 'GZIPOutputStream',
+                       'HasControls',
+                       'HashMap',
+                       'HashSet',
+                       'Hashtable',
+                       'HierarchyBoundsAdapter',
+                       'HierarchyBoundsListener',
+                       'HierarchyEvent',
+                       'HierarchyListener',
+                       'Highlighter',
+                       'Highlighter.Highlight',
+                       'Highlighter.HighlightPainter',
+                       'HTML',
+                       'HTML.Attribute',
+                       'HTML.Tag',
+                       'HTML.UnknownTag',
+                       'HTMLDocument',
+                       'HTMLDocument.Iterator',
+                       'HTMLEditorKit',
+                       'HTMLEditorKit.HTMLFactory',
+                       'HTMLEditorKit.HTMLTextAction',
+                       'HTMLEditorKit.InsertHTMLTextAction',
+                       'HTMLEditorKit.LinkController',
+                       'HTMLEditorKit.Parser',
+                       'HTMLEditorKit.ParserCallback',
+                       'HTMLFrameHyperlinkEvent',
+                       'HTMLWriter',
+                       'HttpURLConnection',
+                       'HyperlinkEvent',
+                       'HyperlinkEvent.EventType',
+                       'HyperlinkListener',
+                       'ICC_ColorSpace',
+                       'ICC_Profile',
+                       'ICC_ProfileGray',
+                       'ICC_ProfileRGB',
+                       'Icon',
+                       'IconUIResource',
+                       'IconView',
+                       'IdentifierHelper',
+                       'Identity',
+                       'IdentityScope',
+                       'IDLEntity',
+                       'IDLType',
+                       'IDLTypeHelper', 'IDLTypeOperations',
+                       'IllegalAccessError',
+                       'IllegalAccessException',
+                       'IllegalArgumentException',
+                       'IllegalComponentStateException',
+                       'IllegalMonitorStateException',
+                       'IllegalPathStateException',
+                       'IllegalStateException',
+                       'IllegalThreadStateException',
+                       'Image',
+                       'ImageConsumer',
+                       'ImageFilter',
+                       'ImageGraphicAttribute',
+                       'ImageIcon',
+                       'ImageObserver',
+                       'ImageProducer',
+                       'ImagingOpException',
+                       'IMP_LIMIT',
+                       'IncompatibleClassChangeError',
+                       'InconsistentTypeCode',
+                       'IndexColorModel',
+                       'IndexedPropertyDescriptor',
+                       'IndexOutOfBoundsException',
+                       'IndirectionException',
+                       'InetAddress',
+                       'Inflater',
+                       'InflaterInputStream',
+                       'InheritableThreadLocal',
+                       'InitialContext',
+                       'InitialContextFactory',
+                       'InitialContextFactoryBuilder',
+                       'InitialDirContext',
+                       'INITIALIZE',
+                       'Initializer',
+                       'InitialLdapContext',
+                       'InlineView',
+                       'InputContext',
+                       'InputEvent',
+                       'InputMap',
+                       'InputMapUIResource',
+                       'InputMethod',
+                       'InputMethodContext',
+                       'InputMethodDescriptor',
+                       'InputMethodEvent',
+                       'InputMethodHighlight',
+                       'InputMethodListener',
+                       'InputMethodRequests',
+                       'InputStream',
+                       'InputStream',
+                       'InputStream',
+                       'InputStreamReader',
+                       'InputSubset',
+                       'InputVerifier',
+                       'Insets',
+                       'InsetsUIResource',
+                       'InstantiationError',
+                       'InstantiationException',
+                       'Instrument',
+                       'InsufficientResourcesException',
+                       'Integer',
+                       'INTERNAL',
+                       'InternalError', 'InternalFrameAdapter',
+                       'InternalFrameEvent',
+                       'InternalFrameListener',
+                       'InternalFrameUI',
+                       'InterruptedException',
+                       'InterruptedIOException',
+                       'InterruptedNamingException',
+                       'INTF_REPOS',
+                       'IntHolder',
+                       'IntrospectionException',
+                       'Introspector',
+                       'INV_FLAG',
+                       'INV_IDENT',
+                       'INV_OBJREF',
+                       'INV_POLICY',
+                       'Invalid',
+                       'INVALID_TRANSACTION',
+                       'InvalidAlgorithmParameterException',
+                       'InvalidAttributeIdentifierException',
+                       'InvalidAttributesException',
+                       'InvalidAttributeValueException',
+                       'InvalidClassException',
+                       'InvalidDnDOperationException',
+                       'InvalidKeyException',
+                       'InvalidKeySpecException',
+                       'InvalidMidiDataException',
+                       'InvalidName',
+                       'InvalidName',
+                       'InvalidNameException',
+                       'InvalidNameHelper',
+                       'InvalidNameHolder',
+                       'InvalidObjectException',
+                       'InvalidParameterException',
+                       'InvalidParameterSpecException',
+                       'InvalidSearchControlsException',
+                       'InvalidSearchFilterException',
+                       'InvalidSeq',
+                       'InvalidTransactionException',
+                       'InvalidValue',
+                       'InvocationEvent',
+                       'InvocationHandler',
+                       'InvocationTargetException',
+                       'InvokeHandler',
+                       'IOException',
+                       'IRObject',
+                       'IRObjectOperations', 'IstringHelper', 'ItemEvent', 
'ItemListener',
+                       'ItemSelectable', 'Iterator', 'JApplet', 'JarEntry', 
'JarException',
+                       'JarFile', 'JarInputStream', 'JarOutputStream', 
'JarURLConnection',
+                       'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 
'JColorChooser',
+                       'JComboBox',
+                       'JComboBox.KeySelectionManager',
+                       'JComponent',
+                       'JDesktopPane',
+                       'JDialog',
+                       'JEditorPane',
+                       'JFileChooser',
+                       'JFrame',
+                       'JInternalFrame',
+                       'JInternalFrame.JDesktopIcon',
+                       'JLabel',
+                       'JLayeredPane',
+                       'JList',
+                       'JMenu',
+                       'JMenuBar',
+                       'JMenuItem',
+                       'JobAttributes',
+                       'JobAttributes.DefaultSelectionType',
+                       'JobAttributes.DestinationType',
+                       'JobAttributes.DialogType',
+                       'JobAttributes.MultipleDocumentHandlingType',
+                       'JobAttributes.SidesType',
+                       'JOptionPane',
+                       'JPanel',
+                       'JPasswordField',
+                       'JPopupMenu',
+                       'JPopupMenu.Separator',
+                       'JProgressBar',
+                       'JRadioButton',
+                       'JRadioButtonMenuItem',
+                       'JRootPane',
+                       'JScrollBar',
+                       'JScrollPane',
+                       'JSeparator',
+                       'JSlider',
+                       'JSplitPane',
+                       'JTabbedPane',
+                       'JTable',
+                       'JTableHeader',
+                       'JTextArea',
+                       'JTextComponent',
+                       'JTextComponent.KeyBinding', 'JTextField',
+                       'JTextPane',
+                       'JToggleButton',
+                       'JToggleButton.ToggleButtonModel',
+                       'JToolBar',
+                       'JToolBar.Separator',
+                       'JToolTip',
+                       'JTree',
+                       'JTree.DynamicUtilTreeNode',
+                       'JTree.EmptySelectionModel',
+                       'JViewport',
+                       'JWindow',
+                       'Kernel',
+                       'Key',
+                       'KeyAdapter',
+                       'KeyEvent',
+                       'KeyException',
+                       'KeyFactory',
+                       'KeyFactorySpi',
+                       'KeyListener',
+                       'KeyManagementException',
+                       'Keymap',
+                       'KeyPair',
+                       'KeyPairGenerator',
+                       'KeyPairGeneratorSpi',
+                       'KeySpec',
+                       'KeyStore',
+                       'KeyStoreException',
+                       'KeyStoreSpi',
+                       'KeyStroke',
+                       'Label',
+                       'LabelUI',
+                       'LabelView',
+                       'LastOwnerException',
+                       'LayeredHighlighter',
+                       'LayeredHighlighter.LayerPainter',
+                       'LayoutManager',
+                       'LayoutManager2',
+                       'LayoutQueue',
+                       'LdapContext',
+                       'LdapReferralException',
+                       'Lease',
+                       'LimitExceededException',
+                       'Line',
+                       'Line.Info',
+                       'Line2D',
+                       'Line2D.Double',
+                       'Line2D.Float',
+                       'LineBorder',
+                       'LineBreakMeasurer',
+                       'LineEvent',
+                       'LineEvent.Type',
+                       'LineListener',
+                       'LineMetrics',
+                       'LineNumberInputStream',
+                       'LineNumberReader',
+                       'LineUnavailableException',
+                       'LinkageError',
+                       'LinkedList',
+                       'LinkException',
+                       'LinkLoopException',
+                       'LinkRef',
+                       'List',
+                       'List',
+                       'ListCellRenderer',
+                       'ListDataEvent',
+                       'ListDataListener',
+                       'ListIterator',
+                       'ListModel',
+                       'ListResourceBundle',
+                       'ListSelectionEvent',
+                       'ListSelectionListener',
+                       'ListSelectionModel',
+                       'ListUI',
+                       'ListView',
+                       'LoaderHandler',
+                       'Locale',
+                       'LocateRegistry',
+                       'LogStream',
+                       'Long',
+                       'LongHolder',
+                       'LongLongSeqHelper',
+                       'LongLongSeqHolder',
+                       'LongSeqHelper',
+                       'LongSeqHolder',
+                       'LookAndFeel',
+                       'LookupOp',
+                       'LookupTable',
+                       'MalformedLinkException',
+                       'MalformedURLException',
+                       'Manifest', 'Map',
+                       'Map.Entry',
+                       'MARSHAL',
+                       'MarshalException',
+                       'MarshalledObject',
+                       'Math',
+                       'MatteBorder',
+                       'MediaTracker',
+                       'Member',
+                       'MemoryImageSource',
+                       'Menu',
+                       'MenuBar',
+                       'MenuBarUI',
+                       'MenuComponent',
+                       'MenuContainer',
+                       'MenuDragMouseEvent',
+                       'MenuDragMouseListener',
+                       'MenuElement',
+                       'MenuEvent',
+                       'MenuItem',
+                       'MenuItemUI',
+                       'MenuKeyEvent',
+                       'MenuKeyListener',
+                       'MenuListener',
+                       'MenuSelectionManager',
+                       'MenuShortcut',
+                       'MessageDigest',
+                       'MessageDigestSpi',
+                       'MessageFormat',
+                       'MetaEventListener',
+                       'MetalBorders',
+                       'MetalBorders.ButtonBorder',
+                       'MetalBorders.Flush3DBorder',
+                       'MetalBorders.InternalFrameBorder',
+                       'MetalBorders.MenuBarBorder',
+                       'MetalBorders.MenuItemBorder',
+                       'MetalBorders.OptionDialogBorder',
+                       'MetalBorders.PaletteBorder',
+                       'MetalBorders.PopupMenuBorder',
+                       'MetalBorders.RolloverButtonBorder',
+                       'MetalBorders.ScrollPaneBorder',
+                       'MetalBorders.TableHeaderBorder',
+                       'MetalBorders.TextFieldBorder',
+                       'MetalBorders.ToggleButtonBorder',
+                       'MetalBorders.ToolBarBorder',
+                       'MetalButtonUI',
+                       'MetalCheckBoxIcon',
+                       'MetalCheckBoxUI',
+                       'MetalComboBoxButton',
+                       'MetalComboBoxEditor',
+                       'MetalComboBoxEditor.UIResource',
+                       'MetalComboBoxIcon',
+                       'MetalComboBoxUI',
+                       'MetalDesktopIconUI',
+                       'MetalFileChooserUI',
+                       'MetalIconFactory',
+                       'MetalIconFactory.FileIcon16',
+                       'MetalIconFactory.FolderIcon16',
+                       'MetalIconFactory.PaletteCloseIcon',
+                       'MetalIconFactory.TreeControlIcon',
+                       'MetalIconFactory.TreeFolderIcon',
+                       'MetalIconFactory.TreeLeafIcon',
+                       'MetalInternalFrameTitlePane',
+                       'MetalInternalFrameUI',
+                       'MetalLabelUI',
+                       'MetalLookAndFeel',
+                       'MetalPopupMenuSeparatorUI',
+                       'MetalProgressBarUI',
+                       'MetalRadioButtonUI',
+                       'MetalScrollBarUI',
+                       'MetalScrollButton',
+                       'MetalScrollPaneUI',
+                       'MetalSeparatorUI',
+                       'MetalSliderUI',
+                       'MetalSplitPaneUI',
+                       'MetalTabbedPaneUI',
+                       'MetalTextFieldUI',
+                       'MetalTheme',
+                       'MetalToggleButtonUI',
+                       'MetalToolBarUI',
+                       'MetalToolTipUI',
+                       'MetalTreeUI',
+                       'MetaMessage',
+                       'Method',
+                       'MethodDescriptor',
+                       'MidiChannel',
+                       'MidiDevice',
+                       'MidiDevice.Info',
+                       'MidiDeviceProvider',
+                       'MidiEvent',
+                       'MidiFileFormat',
+                       'MidiFileReader',
+                       'MidiFileWriter',
+                       'MidiMessage',
+                       'MidiSystem',
+                       'MidiUnavailableException',
+                       'MimeTypeParseException',
+                       'MinimalHTMLWriter',
+                       'MissingResourceException',
+                       'Mixer',
+                       'Mixer.Info',
+                       'MixerProvider',
+                       'ModificationItem',
+                       'Modifier',
+                       'MouseAdapter',
+                       'MouseDragGestureRecognizer',
+                       'MouseEvent',
+                       'MouseInputAdapter',
+                       'MouseInputListener',
+                       'MouseListener',
+                       'MouseMotionAdapter',
+                       'MouseMotionListener',
+                       'MultiButtonUI',
+                       'MulticastSocket',
+                       'MultiColorChooserUI',
+                       'MultiComboBoxUI',
+                       'MultiDesktopIconUI',
+                       'MultiDesktopPaneUI',
+                       'MultiFileChooserUI',
+                       'MultiInternalFrameUI',
+                       'MultiLabelUI', 'MultiListUI',
+                       'MultiLookAndFeel',
+                       'MultiMenuBarUI',
+                       'MultiMenuItemUI',
+                       'MultiOptionPaneUI',
+                       'MultiPanelUI',
+                       'MultiPixelPackedSampleModel',
+                       'MultipleMaster',
+                       'MultiPopupMenuUI',
+                       'MultiProgressBarUI',
+                       'MultiScrollBarUI',
+                       'MultiScrollPaneUI',
+                       'MultiSeparatorUI',
+                       'MultiSliderUI',
+                       'MultiSplitPaneUI',
+                       'MultiTabbedPaneUI',
+                       'MultiTableHeaderUI',
+                       'MultiTableUI',
+                       'MultiTextUI',
+                       'MultiToolBarUI',
+                       'MultiToolTipUI',
+                       'MultiTreeUI',
+                       'MultiViewportUI',
+                       'MutableAttributeSet',
+                       'MutableComboBoxModel',
+                       'MutableTreeNode',
+                       'Name',
+                       'NameAlreadyBoundException',
+                       'NameClassPair',
+                       'NameComponent',
+                       'NameComponentHelper',
+                       'NameComponentHolder',
+                       'NamedValue',
+                       'NameHelper',
+                       'NameHolder',
+                       'NameNotFoundException',
+                       'NameParser',
+                       'NamespaceChangeListener',
+                       'NameValuePair',
+                       'NameValuePairHelper',
+                       'Naming',
+                       'NamingContext',
+                       'NamingContextHelper',
+                       'NamingContextHolder',
+                       'NamingContextOperations',
+                       'NamingEnumeration',
+                       'NamingEvent',
+                       'NamingException',
+                       'NamingExceptionEvent',
+                       'NamingListener',
+                       'NamingManager',
+                       'NamingSecurityException',
+                       'NegativeArraySizeException',
+                       'NetPermission',
+                       'NO_IMPLEMENT',
+                       'NO_MEMORY',
+                       'NO_PERMISSION',
+                       'NO_RESOURCES',
+                       'NO_RESPONSE',
+                       'NoClassDefFoundError',
+                       'NoInitialContextException', 
'NoninvertibleTransformException',
+                       'NoPermissionException',
+                       'NoRouteToHostException',
+                       'NoSuchAlgorithmException',
+                       'NoSuchAttributeException',
+                       'NoSuchElementException',
+                       'NoSuchFieldError',
+                       'NoSuchFieldException',
+                       'NoSuchMethodError',
+                       'NoSuchMethodException',
+                       'NoSuchObjectException',
+                       'NoSuchProviderException',
+                       'NotActiveException',
+                       'NotBoundException',
+                       'NotContextException',
+                       'NotEmpty',
+                       'NotEmptyHelper',
+                       'NotEmptyHolder',
+                       'NotFound',
+                       'NotFoundHelper',
+                       'NotFoundHolder',
+                       'NotFoundReason',
+                       'NotFoundReasonHelper',
+                       'NotFoundReasonHolder',
+                       'NotOwnerException',
+                       'NotSerializableException',
+                       'NullPointerException',
+                       'Number',
+                       'NumberFormat', 'NumberFormatException', 'NVList',
+                       'OBJ_ADAPTER', 'Object', 'OBJECT_NOT_EXIST', 
'ObjectChangeListener',
+                       'ObjectFactory',
+                       'ObjectFactoryBuilder',
+                       'ObjectHelper',
+                       'ObjectHolder',
+                       'ObjectImpl', 'ObjectImpl',
+                       'ObjectInput',
+                       'ObjectInputStream',
+                       'ObjectInputStream.GetField',
+                       'ObjectInputValidation',
+                       'ObjectOutput',
+                       'ObjectOutputStream',
+                       'ObjectOutputStream.PutField',
+                       'ObjectStreamClass',
+                       'ObjectStreamConstants',
+                       'ObjectStreamException',
+                       'ObjectStreamField',
+                       'ObjectView',
+                       'ObjID',
+                       'Observable',
+                       'Observer',
+                       'OctetSeqHelper',
+                       'OctetSeqHolder',
+                       'OMGVMCID',
+                       'OpenType',
+                       'Operation',
+                       'OperationNotSupportedException',
+                       'Option',
+                       'OptionalDataException',
+                       'OptionPaneUI',
+                       'ORB',
+                       'OutOfMemoryError',
+                       'OutputStream',
+                       'OutputStreamWriter',
+                       'OverlayLayout',
+                       'Owner',
+                       'Package',
+                       'PackedColorModel',
+                       'Pageable',
+                       'PageAttributes',
+                       'PageAttributes.ColorType',
+                       'PageAttributes.MediaType',
+                       'PageAttributes.OrientationRequestedType',
+                       'PageAttributes.OriginType',
+                       'PageAttributes.PrintQualityType',
+                       'PageFormat',
+                       'Paint',
+                       'PaintContext',
+                       'PaintEvent',
+                       'Panel',
+                       'PanelUI',
+                       'Paper',
+                       'ParagraphView',
+                       'ParagraphView',
+                       'ParameterBlock',
+                       'ParameterDescriptor',
+                       'ParseException',
+                       'ParsePosition',
+                       'Parser',
+                       'ParserDelegator',
+                       'PartialResultException',
+                       'PasswordAuthentication',
+                       'PasswordView',
+                       'Patch',
+                       'PathIterator',
+                       'Permission',
+                       'Permission',
+                       'PermissionCollection',
+                       'Permissions',
+                       'PERSIST_STORE',
+                       'PhantomReference',
+                       'PipedInputStream',
+                       'PipedOutputStream',
+                       'PipedReader',
+                       'PipedWriter',
+                       'PixelGrabber',
+                       'PixelInterleavedSampleModel',
+                       'PKCS8EncodedKeySpec',
+                       'PlainDocument',
+                       'PlainView',
+                       'Point',
+                       'Point2D',
+                       'Point2D.Double',
+                       'Point2D.Float',
+                       'Policy',
+                       'Policy',
+                       'PolicyError',
+                       'PolicyHelper',
+                       'PolicyHolder',
+                       'PolicyListHelper',
+                       'PolicyListHolder',
+                       'PolicyOperations', 'PolicyTypeHelper',
+                       'Polygon',
+                       'PopupMenu',
+                       'PopupMenuEvent',
+                       'PopupMenuListener',
+                       'PopupMenuUI',
+                       'Port',
+                       'Port.Info',
+                       'PortableRemoteObject',
+                       'PortableRemoteObjectDelegate',
+                       'Position',
+                       'Position.Bias',
+                       'PreparedStatement',
+                       'Principal',
+                       'Principal',
+                       'PrincipalHolder',
+                       'Printable',
+                       'PrinterAbortException',
+                       'PrinterException',
+                       'PrinterGraphics',
+                       'PrinterIOException',
+                       'PrinterJob',
+                       'PrintGraphics',
+                       'PrintJob',
+                       'PrintStream',
+                       'PrintWriter',
+                       'PRIVATE_MEMBER',
+                       'PrivateKey',
+                       'PrivilegedAction',
+                       'PrivilegedActionException',
+                       'PrivilegedExceptionAction',
+                       'Process',
+                       'ProfileDataException',
+                       'ProgressBarUI',
+                       'ProgressMonitor',
+                       'ProgressMonitorInputStream',
+                       'Properties',
+                       'PropertyChangeEvent',
+                       'PropertyChangeListener',
+                       'PropertyChangeSupport',
+                       'PropertyDescriptor',
+                       'PropertyEditor',
+                       'PropertyEditorManager',
+                       'PropertyEditorSupport',
+                       'PropertyPermission',
+                       'PropertyResourceBundle',
+                       'PropertyVetoException',
+                       'ProtectionDomain',
+                       'ProtocolException',
+                       'Provider',
+                       'ProviderException',
+                       'Proxy',
+                       'PUBLIC_MEMBER',
+                       'PublicKey',
+                       'PushbackInputStream',
+                       'PushbackReader',
+                       'QuadCurve2D',
+                       'QuadCurve2D.Double',
+                       'QuadCurve2D.Float',
+                       'Random',
+                       'RandomAccessFile', 'Raster', 'RasterFormatException', 
'RasterOp',
+                       'Reader', 'Receiver', 'Rectangle', 'Rectangle2D', 
'Rectangle2D.Double',
+                       'Rectangle2D.Float', 'RectangularShape', 'Ref', 
'RefAddr', 'Reference',
+                       'Referenceable', 'ReferenceQueue', 'ReferralException',
+                       'ReflectPermission', 'Registry', 'RegistryHandler', 
'RemarshalException',
+                       'Remote', 'RemoteCall', 'RemoteException', 
'RemoteObject', 'RemoteRef',
+                       'RemoteServer',
+                       'RemoteStub',
+                       'RenderableImage',
+                       'RenderableImageOp',
+                       'RenderableImageProducer',
+                       'RenderContext',
+                       'RenderedImage',
+                       'RenderedImageFactory',
+                       'Renderer',
+                       'RenderingHints',
+                       'RenderingHints.Key',
+                       'RepaintManager',
+                       'ReplicateScaleFilter',
+                       'Repository',
+                       'RepositoryIdHelper',
+                       'Request',
+                       'RescaleOp',
+                       'Resolver',
+                       'ResolveResult',
+                       'ResourceBundle',
+                       'ResponseHandler',
+                       'ResultSet',
+                       'ResultSetMetaData',
+                       'ReverbType',
+                       'RGBImageFilter',
+                       'RMIClassLoader',
+                       'RMIClientSocketFactory',
+                       'RMIFailureHandler',
+                       'RMISecurityException',
+                       'RMISecurityManager',
+                       'RMIServerSocketFactory',
+                       'RMISocketFactory',
+                       'Robot',
+                       'RootPaneContainer',
+                       'RootPaneUI',
+                       'RoundRectangle2D',
+                       'RoundRectangle2D.Double',
+                       'RoundRectangle2D.Float',
+                       'RowMapper',
+                       'RSAKey',
+                       'RSAKeyGenParameterSpec',
+                       'RSAPrivateCrtKey',
+                       'RSAPrivateCrtKeySpec',
+                       'RSAPrivateKey',
+                       'RSAPrivateKeySpec',
+                       'RSAPublicKey',
+                       'RSAPublicKeySpec',
+                       'RTFEditorKit',
+                       'RuleBasedCollator',
+                       'Runnable',
+                       'Runtime',
+                       'RunTime',
+                       'RuntimeException',
+                       'RunTimeOperations',
+                       'RuntimePermission',
+                       'SampleModel',
+                       'SchemaViolationException',
+                       'Scrollable',
+                       'Scrollbar',
+                       'ScrollBarUI',
+                       'ScrollPane',
+                       'ScrollPaneConstants',
+                       'ScrollPaneLayout',
+                       'ScrollPaneLayout.UIResource',
+                       'ScrollPaneUI',
+                       'SearchControls',
+                       'SearchResult',
+                       'SecureClassLoader',
+                       'SecureRandom',
+                       'SecureRandomSpi',
+                       'Security',
+                       'SecurityException',
+                       'SecurityManager',
+                       'SecurityPermission',
+                       'Segment',
+                       'SeparatorUI',
+                       'Sequence',
+                       'SequenceInputStream',
+                       'Sequencer',
+                       'Sequencer.SyncMode',
+                       'Serializable',
+                       'SerializablePermission',
+                       'ServantObject',
+                       'ServerCloneException',
+                       'ServerError', 'ServerException',
+                       'ServerNotActiveException',
+                       'ServerRef',
+                       'ServerRequest',
+                       'ServerRuntimeException',
+                       'ServerSocket',
+                       'ServiceDetail',
+                       'ServiceDetailHelper',
+                       'ServiceInformation',
+                       'ServiceInformationHelper',
+                       'ServiceInformationHolder',
+                       'ServiceUnavailableException',
+                       'Set',
+                       'SetOverrideType',
+                       'SetOverrideTypeHelper',
+                       'Shape',
+                       'ShapeGraphicAttribute',
+                       'Short',
+                       'ShortHolder',
+                       'ShortLookupTable',
+                       'ShortMessage',
+                       'ShortSeqHelper',
+                       'ShortSeqHolder',
+                       'Signature',
+                       'SignatureException',
+                       'SignatureSpi',
+                       'SignedObject',
+                       'Signer',
+                       'SimpleAttributeSet',
+                       'SimpleBeanInfo',
+                       'SimpleDateFormat',
+                       'SimpleTimeZone',
+                       'SinglePixelPackedSampleModel',
+                       'SingleSelectionModel',
+                       'SizeLimitExceededException',
+                       'SizeRequirements',
+                       'SizeSequence',
+                       'Skeleton',
+                       'SkeletonMismatchException',
+                       'SkeletonNotFoundException',
+                       'SliderUI',
+                       'Socket',
+                       'SocketException',
+                       'SocketImpl',
+                       'SocketImplFactory',
+                       'SocketOptions',
+                       'SocketPermission',
+                       'SocketSecurityException',
+                       'SoftBevelBorder',
+                       'SoftReference',
+                       'SortedMap',
+                       'SortedSet',
+                       'Soundbank',
+                       'SoundbankReader',
+                       'SoundbankResource',
+                       'SourceDataLine',
+                       'SplitPaneUI',
+                       'SQLData',
+                       'SQLException',
+                       'SQLInput',
+                       'SQLOutput', 'SQLPermission',
+                       'SQLWarning',
+                       'Stack',
+                       'StackOverflowError',
+                       'StateEdit',
+                       'StateEditable',
+                       'StateFactory',
+                       'Statement',
+                       'Streamable',
+                       'StreamableValue',
+                       'StreamCorruptedException',
+                       'StreamTokenizer',
+                       'StrictMath',
+                       'String',
+                       'StringBuffer',
+                       'StringBufferInputStream',
+                       'StringCharacterIterator',
+                       'StringContent',
+                       'StringHolder',
+                       'StringIndexOutOfBoundsException',
+                       'StringReader',
+                       'StringRefAddr',
+                       'StringSelection',
+                       'StringTokenizer',
+                       'StringValueHelper',
+                       'StringWriter',
+                       'Stroke',
+                       'Struct',
+                       'StructMember',
+                       'StructMemberHelper',
+                       'Stub',
+                       'StubDelegate',
+                       'StubNotFoundException',
+                       'Style',
+                       'StyleConstants',
+                       'StyleConstants.CharacterConstants',
+                       'StyleConstants.ColorConstants',
+                       'StyleConstants.FontConstants',
+                       'StyleConstants.ParagraphConstants',
+                       'StyleContext',
+                       'StyledDocument',
+                       'StyledEditorKit',
+                       'StyledEditorKit.AlignmentAction',
+                       'StyledEditorKit.BoldAction',
+                       'StyledEditorKit.FontFamilyAction',
+                       'StyledEditorKit.FontSizeAction',
+                       'StyledEditorKit.ForegroundAction',
+                       'StyledEditorKit.ItalicAction',
+                       'StyledEditorKit.StyledTextAction',
+                       'StyledEditorKit.UnderlineAction',
+                       'StyleSheet',
+                       'StyleSheet.BoxPainter',
+                       'StyleSheet.ListPainter',
+                       'SwingConstants',
+                       'SwingPropertyChangeSupport',
+                       'SwingUtilities',
+                       'SyncFailedException',
+                       'Synthesizer',
+                       'SysexMessage',
+                       'System',
+                       'SystemColor', 'SystemException',
+                       'SystemFlavorMap',
+                       'TabableView',
+                       'TabbedPaneUI',
+                       'TabExpander',
+                       'TableCellEditor',
+                       'TableCellRenderer',
+                       'TableColumn',
+                       'TableColumnModel',
+                       'TableColumnModelEvent',
+                       'TableColumnModelListener',
+                       'TableHeaderUI',
+                       'TableModel',
+                       'TableModelEvent',
+                       'TableModelListener',
+                       'TableUI',
+                       'TableView',
+                       'TabSet',
+                       'TabStop',
+                       'TagElement',
+                       'TargetDataLine',
+                       'TCKind',
+                       'TextAction',
+                       'TextArea',
+                       'TextAttribute',
+                       'TextComponent',
+                       'TextEvent',
+                       'TextField',
+                       'TextHitInfo',
+                       'TextLayout',
+                       'TextLayout.CaretPolicy',
+                       'TextListener',
+                       'TextMeasurer',
+                       'TextUI',
+                       'TexturePaint',
+                       'Thread',
+                       'ThreadDeath',
+                       'ThreadGroup',
+                       'ThreadLocal',
+                       'Throwable',
+                       'Tie',
+                       'TileObserver',
+                       'Time',
+                       'TimeLimitExceededException',
+                       'Timer',
+                       'Timer',
+                       'TimerTask',
+                       'Timestamp',
+                       'TimeZone',
+                       'TitledBorder',
+                       'ToolBarUI',
+                       'Toolkit',
+                       'ToolTipManager',
+                       'ToolTipUI',
+                       'TooManyListenersException',
+                       'Track',
+                       'TRANSACTION_REQUIRED',
+                       'TRANSACTION_ROLLEDBACK',
+                       'TransactionRequiredException',
+                       'TransactionRolledbackException',
+                       'Transferable',
+                       'TransformAttribute',
+                       'TRANSIENT',
+                       'Transmitter',
+                       'Transparency',
+                       'TreeCellEditor',
+                       'TreeCellRenderer',
+                       'TreeExpansionEvent',
+                       'TreeExpansionListener',
+                       'TreeMap',
+                       'TreeModel',
+                       'TreeModelEvent',
+                       'TreeModelListener',
+                       'TreeNode',
+                       'TreePath',
+                       'TreeSelectionEvent',
+                       'TreeSelectionListener',
+                       'TreeSelectionModel',
+                       'TreeSet',
+                       'TreeUI',
+                       'TreeWillExpandListener',
+                       'TypeCode',
+                       'TypeCodeHolder',
+                       'TypeMismatch',
+                       'Types',
+                       'UID',
+                       'UIDefaults',
+                       'UIDefaults.ActiveValue',
+                       'UIDefaults.LazyInputMap',
+                       'UIDefaults.LazyValue',
+                       'UIDefaults.ProxyLazyValue', 'UIManager',
+                       'UIManager.LookAndFeelInfo',
+                       'UIResource',
+                       'ULongLongSeqHelper',
+                       'ULongLongSeqHolder',
+                       'ULongSeqHelper',
+                       'ULongSeqHolder',
+                       'UndeclaredThrowableException',
+                       'UndoableEdit',
+                       'UndoableEditEvent',
+                       'UndoableEditListener',
+                       'UndoableEditSupport',
+                       'UndoManager',
+                       'UnexpectedException',
+                       'UnicastRemoteObject',
+                       'UnionMember',
+                       'UnionMemberHelper',
+                       'UNKNOWN',
+                       'UnknownError',
+                       'UnknownException',
+                       'UnknownGroupException',
+                       'UnknownHostException',
+                       'UnknownHostException',
+                       'UnknownObjectException',
+                       'UnknownServiceException',
+                       'UnknownUserException',
+                       'UnmarshalException',
+                       'UnrecoverableKeyException',
+                       'Unreferenced',
+                       'UnresolvedPermission',
+                       'UnsatisfiedLinkError',
+                       'UnsolicitedNotification',
+                       'UnsolicitedNotificationEvent',
+                       'UnsolicitedNotificationListener',
+                       'UNSUPPORTED_POLICY',
+                       'UNSUPPORTED_POLICY_VALUE',
+                       'UnsupportedAudioFileException',
+                       'UnsupportedClassVersionError',
+                       'UnsupportedEncodingException',
+                       'UnsupportedFlavorException',
+                       'UnsupportedLookAndFeelException',
+                       'UnsupportedOperationException',
+                       'URL',
+                       'URLClassLoader',
+                       'URLConnection',
+                       'URLDecoder',
+                       'URLEncoder',
+                       'URLStreamHandler',
+                       'URLStreamHandlerFactory',
+                       'UserException',
+                       'UShortSeqHelper',
+                       'UShortSeqHolder',
+                       'UTFDataFormatException',
+                       'Util',
+                       'UtilDelegate',
+                       'Utilities',
+                       'ValueBase',
+                       'ValueBaseHelper',
+                       'ValueBaseHolder',
+                       'ValueFactory',
+                       'ValueHandler',
+                       'ValueMember',
+                       'ValueMemberHelper',
+                       'VariableHeightLayoutCache',
+                       'Vector',
+                       'VerifyError',
+                       'VersionSpecHelper',
+                       'VetoableChangeListener',
+                       'VetoableChangeSupport',
+                       'View',
+                       'ViewFactory',
+                       'ViewportLayout',
+                       'ViewportUI',
+                       'VirtualMachineError',
+                       'Visibility',
+                       'VisibilityHelper',
+                       'VM_ABSTRACT',
+                       'VM_CUSTOM',
+                       'VM_NONE',
+                       'VM_TRUNCATABLE',
+                       'VMID',
+                       'VoiceStatus',
+                       'Void',
+                       'WCharSeqHelper',
+                       'WCharSeqHolder',
+                       'WeakHashMap',
+                       'WeakReference',
+                       'Window',
+                       'WindowAdapter',
+                       'WindowConstants',
+                       'WindowEvent', 'WindowListener',
+                       'WrappedPlainView',
+                       'WritableRaster',
+                       'WritableRenderedImage',
+                       'WriteAbortedException',
+                       'Writer',
+                       'WrongTransaction',
+                       'WStringValueHelper',
+                       'X509Certificate',
+                       'X509CRL',
+                       'X509CRLEntry',
+                       'X509EncodedKeySpec',
+                       'X509Extension',
+                       'ZipEntry',
+                       'ZipException',
+                       'ZipFile',
+                       'ZipInputStream',
+                       'ZipOutputStream',
+                       'ZoneView',
+                       '_BindingIteratorImplBase',
+                       '_BindingIteratorStub',
+                       '_IDLTypeStub',
+                       '_NamingContextImplBase',
+                       '_NamingContextStub',
+                       '_PolicyStub',
+                       '_Remote_Stub '
+                       ),
+               4 => array(
+                       'void', 'double', 'int', 'boolean', 'byte', 'short', 
'long', 'char', 'float'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', 
'>', '?'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => true,
+               4 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #aaaadd; font-weight: bold;',
+                       4 => 'color: #993333;'
+                       ),
+               'COMMENTS' => array(
+                       1=> 'color: #808080; font-style: italic;',
+                       2=> 'color: #a1a100;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 
'http://www.google.com/search?hl=en&amp;q=allinurl%3A{FNAME}+java.sun.com&amp;bntI=I%27m%20Feeling%20Lucky',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/java5.php
===================================================================
RCS file: geshi/java5.php
diff -N geshi/java5.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/java5.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,1023 @@
+<?php
+/*************************************************************************************
+ * java.php
+ * --------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Java language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.4)
+ *   -  Added instanceof keyword
+ * 2004/11/27 (1.0.3)
+ *   -  Added support for multiple object splitters
+ * 2004/08/05 (1.0.2)
+ *   -  Added URL support
+ *   -  Added keyword "this", as bugs in GeSHi class ironed out
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ *   -  Added extra missed keywords
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO
+ * -------------------------
+ * *
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Java(TM) 2 Platform Standard Edition 5.0',
+       'COMMENT_SINGLE' => array(1 => '//'),   /* import statements are not 
comments! */
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       /* see the authoritative list of all 50 Java keywords 
at */
+                       /* 
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#229308 */
+
+                       /* java keywords, part 1: control flow */
+                       'case', 'default', 'do', 'else', 'for',
+                       'goto', 'if', 'switch', 'while'
+
+                       /* IMO 'break', 'continue', 'return' and 'throw' */
+                        /* should also be added to this group, as they   */
+                       /* also manage the control flow,                 */
+                       /* arguably 'try'/'catch'/'finally' as well      */
+                       ),
+               2 => array(
+                       /* java keywords, part 2 */
+
+                       'break', 'continue', 'return', 'throw',
+                       'try', 'catch', 'finally',
+
+                       'abstract', 'assert', 'class', 'const', 'enum', 
'extends',
+                       'final', 'implements', 'import', 'instanceof', 
'interface',
+                       'native', 'new', 'package', 'private', 'protected',
+                       'public', 'static', 'strictfp', 'super', 'synchronized',
+                       'this', 'throws', 'transient', 'volatile'
+                       ),
+               3 => array(
+                       /* Java keywords, part 3: primitive data types and 
'void' */
+                       'boolean', 'byte', 'char', 'double',
+                       'float', 'int', 'long', 'short', 'void'
+                       ),
+               4 => array(
+                       /* other reserved words in Java: literals */
+                       /* should be styled to look similar to numbers and 
Strings */
+                       'false', 'null', 'true'
+                       ),
+               5 => array (
+                       'Applet', 'AppletContext', 'AppletStub', 'AudioClip'
+                       ),
+               6 => array (
+                       'AWTError', 'AWTEvent', 'AWTEventMulticaster', 
'AWTException', 'AWTKeyStroke', 'AWTPermission', 'ActiveEvent', 'Adjustable', 
'AlphaComposite', 'BasicStroke', 'BorderLayout', 'BufferCapabilities', 
'BufferCapabilities.FlipContents', 'Button', 'Canvas', 'CardLayout', 
'Checkbox', 'CheckboxGroup', 'CheckboxMenuItem', 'Choice', 'Color', 
'Component', 'ComponentOrientation', 'Composite', 'CompositeContext', 
'Container', 'ContainerOrderFocusTraversalPolicy', 'Cursor', 
'DefaultFocusTraversalPolicy', 'DefaultKeyboardFocusManager', 'Dialog', 
'Dimension', 'DisplayMode', 'EventQueue', 'FileDialog', 'FlowLayout', 
'FocusTraversalPolicy', 'Font', 'FontFormatException', 'FontMetrics', 'Frame', 
'GradientPaint', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate', 
'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 
'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'HeadlessException', 
'IllegalComponentStateException', 'Image', 'ImageCapabilities', 'Insets', 
'ItemSelectable', 'JobAttributes',
+                       'JobAttributes.DefaultSelectionType', 
'JobAttributes.DestinationType', 'JobAttributes.DialogType', 
'JobAttributes.MultipleDocumentHandlingType', 'JobAttributes.SidesType', 
'KeyEventDispatcher', 'KeyEventPostProcessor', 'KeyboardFocusManager', 'Label', 
'LayoutManager', 'LayoutManager2', 'MediaTracker', 'Menu', 'MenuBar', 
'MenuComponent', 'MenuContainer', 'MenuItem', 'MenuShortcut', 'MouseInfo', 
'PageAttributes', 'PageAttributes.ColorType', 'PageAttributes.MediaType', 
'PageAttributes.OrientationRequestedType', 'PageAttributes.OriginType', 
'PageAttributes.PrintQualityType', 'Paint', 'PaintContext', 'Panel', 'Point', 
'PointerInfo', 'Polygon', 'PopupMenu', 'PrintGraphics', 'PrintJob', 
'Rectangle', 'RenderingHints', 'RenderingHints.Key', 'Robot', 'ScrollPane', 
'ScrollPaneAdjustable', 'Scrollbar', 'Shape', 'Stroke', 'SystemColor', 
'TextArea', 'TextComponent', 'TextField', 'TexturePaint', 'Toolkit', 
'Transparency', 'Window'
+                       ),
+               7 => array (
+                       'CMMException', 'ColorSpace', 'ICC_ColorSpace', 
'ICC_Profile', 'ICC_ProfileGray', 'ICC_ProfileRGB', 'ProfileDataException'
+                       ),
+               8 => array (
+                       'Clipboard', 'ClipboardOwner', 'DataFlavor', 
'FlavorEvent', 'FlavorListener', 'FlavorMap', 'FlavorTable', 
'MimeTypeParseException', 'StringSelection', 'SystemFlavorMap', 'Transferable', 
'UnsupportedFlavorException'
+                       ),
+               9 => array (
+                       'Autoscroll', 'DnDConstants', 'DragGestureEvent', 
'DragGestureListener', 'DragGestureRecognizer', 'DragSource', 
'DragSourceAdapter', 'DragSourceContext', 'DragSourceDragEvent', 
'DragSourceDropEvent', 'DragSourceEvent', 'DragSourceListener', 
'DragSourceMotionListener', 'DropTarget', 'DropTarget.DropTargetAutoScroller', 
'DropTargetAdapter', 'DropTargetContext', 'DropTargetDragEvent', 
'DropTargetDropEvent', 'DropTargetEvent', 'DropTargetListener', 
'InvalidDnDOperationException', 'MouseDragGestureRecognizer'
+                       ),
+               10 => array (
+                       'AWTEventListener', 'AWTEventListenerProxy', 
'ActionEvent', 'ActionListener', 'AdjustmentEvent', 'AdjustmentListener', 
'ComponentAdapter', 'ComponentEvent', 'ComponentListener', 'ContainerAdapter', 
'ContainerEvent', 'ContainerListener', 'FocusAdapter', 'FocusEvent', 
'FocusListener', 'HierarchyBoundsAdapter', 'HierarchyBoundsListener', 
'HierarchyEvent', 'HierarchyListener', 'InputEvent', 'InputMethodEvent', 
'InputMethodListener', 'InvocationEvent', 'ItemEvent', 'ItemListener', 
'KeyAdapter', 'KeyEvent', 'KeyListener', 'MouseAdapter', 'MouseListener', 
'MouseMotionAdapter', 'MouseMotionListener', 'MouseWheelEvent', 
'MouseWheelListener', 'PaintEvent', 'TextEvent', 'TextListener', 
'WindowAdapter', 'WindowEvent', 'WindowFocusListener', 'WindowListener', 
'WindowStateListener'
+                       ),
+               11 => array (
+                       'FontRenderContext', 'GlyphJustificationInfo', 
'GlyphMetrics', 'GlyphVector', 'GraphicAttribute', 'ImageGraphicAttribute', 
'LineBreakMeasurer', 'LineMetrics', 'MultipleMaster', 'NumericShaper', 
'ShapeGraphicAttribute', 'TextAttribute', 'TextHitInfo', 'TextLayout', 
'TextLayout.CaretPolicy', 'TextMeasurer', 'TransformAttribute'
+                       ),
+               12 => array (
+                       'AffineTransform', 'Arc2D', 'Arc2D.Double', 
'Arc2D.Float', 'Area', 'CubicCurve2D', 'CubicCurve2D.Double', 
'CubicCurve2D.Float', 'Dimension2D', 'Ellipse2D', 'Ellipse2D.Double', 
'Ellipse2D.Float', 'FlatteningPathIterator', 'GeneralPath', 
'IllegalPathStateException', 'Line2D', 'Line2D.Double', 'Line2D.Float', 
'NoninvertibleTransformException', 'PathIterator', 'Point2D', 'Point2D.Double', 
'Point2D.Float', 'QuadCurve2D', 'QuadCurve2D.Double', 'QuadCurve2D.Float', 
'Rectangle2D', 'Rectangle2D.Double', 'Rectangle2D.Float', 'RectangularShape', 
'RoundRectangle2D', 'RoundRectangle2D.Double', 'RoundRectangle2D.Float'
+                       ),
+               13 => array (
+                       'InputContext', 'InputMethodHighlight', 
'InputMethodRequests', 'InputSubset'
+                       ),
+               14 => array (
+                       'InputMethod', 'InputMethodContext', 
'InputMethodDescriptor'
+                       ),
+               15 => array (
+                       'AffineTransformOp', 'AreaAveragingScaleFilter', 
'BandCombineOp', 'BandedSampleModel', 'BufferStrategy', 'BufferedImage', 
'BufferedImageFilter', 'BufferedImageOp', 'ByteLookupTable', 'ColorConvertOp', 
'ColorModel', 'ComponentColorModel', 'ComponentSampleModel', 'ConvolveOp', 
'CropImageFilter', 'DataBuffer', 'DataBufferByte', 'DataBufferDouble', 
'DataBufferFloat', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort', 
'DirectColorModel', 'FilteredImageSource', 'ImageConsumer', 'ImageFilter', 
'ImageObserver', 'ImageProducer', 'ImagingOpException', 'IndexColorModel', 
'Kernel', 'LookupOp', 'LookupTable', 'MemoryImageSource', 
'MultiPixelPackedSampleModel', 'PackedColorModel', 'PixelGrabber', 
'PixelInterleavedSampleModel', 'RGBImageFilter', 'Raster', 
'RasterFormatException', 'RasterOp', 'RenderedImage', 'ReplicateScaleFilter', 
'RescaleOp', 'SampleModel', 'ShortLookupTable', 'SinglePixelPackedSampleModel', 
'TileObserver', 'VolatileImage', 'WritableRaster', 'WritableRenderedImage'
+                       ),
+               16 => array (
+                       'ContextualRenderedImageFactory', 'ParameterBlock', 
'RenderContext', 'RenderableImage', 'RenderableImageOp', 
'RenderableImageProducer', 'RenderedImageFactory'
+                       ),
+               17 => array (
+                       'Book', 'PageFormat', 'Pageable', 'Paper', 'Printable', 
'PrinterAbortException', 'PrinterException', 'PrinterGraphics', 
'PrinterIOException', 'PrinterJob'
+                       ),
+               18 => array (
+                       'AppletInitializer', 'BeanDescriptor', 'BeanInfo', 
'Beans', 'Customizer', 'DefaultPersistenceDelegate', 'DesignMode', 'Encoder', 
'EventHandler', 'EventSetDescriptor', 'ExceptionListener', 'Expression', 
'FeatureDescriptor', 'IndexedPropertyChangeEvent', 'IndexedPropertyDescriptor', 
'Introspector', 'MethodDescriptor', 'ParameterDescriptor', 
'PersistenceDelegate', 'PropertyChangeEvent', 'PropertyChangeListener', 
'PropertyChangeListenerProxy', 'PropertyChangeSupport', 'PropertyDescriptor', 
'PropertyEditor', 'PropertyEditorManager', 'PropertyEditorSupport', 
'PropertyVetoException', 'SimpleBeanInfo', 'VetoableChangeListener', 
'VetoableChangeListenerProxy', 'VetoableChangeSupport', 'Visibility', 
'XMLDecoder', 'XMLEncoder'
+                       ),
+               19 => array (
+                       'BeanContext', 'BeanContextChild', 
'BeanContextChildComponentProxy', 'BeanContextChildSupport', 
'BeanContextContainerProxy', 'BeanContextEvent', 'BeanContextMembershipEvent', 
'BeanContextMembershipListener', 'BeanContextProxy', 
'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider', 
'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent', 
'BeanContextServiceRevokedListener', 'BeanContextServices', 
'BeanContextServicesListener', 'BeanContextServicesSupport', 
'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport', 
'BeanContextSupport.BCSIterator'
+                       ),
+               20 => array (
+                       'BufferedInputStream', 'BufferedOutputStream', 
'BufferedReader', 'BufferedWriter', 'ByteArrayInputStream', 
'ByteArrayOutputStream', 'CharArrayReader', 'CharArrayWriter', 
'CharConversionException', 'Closeable', 'DataInput', 'DataOutput', 
'EOFException', 'Externalizable', 'File', 'FileDescriptor', 'FileInputStream', 
'FileNotFoundException', 'FileOutputStream', 'FilePermission', 'FileReader', 
'FileWriter', 'FilenameFilter', 'FilterInputStream', 'FilterOutputStream', 
'FilterReader', 'FilterWriter', 'Flushable', 'IOException', 
'InputStreamReader', 'InterruptedIOException', 'InvalidClassException', 
'InvalidObjectException', 'LineNumberInputStream', 'LineNumberReader', 
'NotActiveException', 'NotSerializableException', 'ObjectInput', 
'ObjectInputStream', 'ObjectInputStream.GetField', 'ObjectInputValidation', 
'ObjectOutput', 'ObjectOutputStream', 'ObjectOutputStream.PutField', 
'ObjectStreamClass', 'ObjectStreamConstants', 'ObjectStreamException', 
'ObjectStreamField', 'OptionalDataException', 'OutputStreamWriter',
+                       'PipedInputStream', 'PipedOutputStream', 'PipedReader', 
'PipedWriter', 'PrintStream', 'PrintWriter', 'PushbackInputStream', 
'PushbackReader', 'RandomAccessFile', 'Reader', 'SequenceInputStream', 
'Serializable', 'SerializablePermission', 'StreamCorruptedException', 
'StreamTokenizer', 'StringBufferInputStream', 'StringReader', 'StringWriter', 
'SyncFailedException', 'UTFDataFormatException', 
'UnsupportedEncodingException', 'WriteAbortedException', 'Writer'
+                       ),
+               21 => array (
+                       'AbstractMethodError', 'Appendable', 
'ArithmeticException', 'ArrayIndexOutOfBoundsException', 'ArrayStoreException', 
'AssertionError', 'Boolean', 'Byte', 'CharSequence', 'Character', 
'Character.Subset', 'Character.UnicodeBlock', 'Class', 'ClassCastException', 
'ClassCircularityError', 'ClassFormatError', 'ClassLoader', 
'ClassNotFoundException', 'CloneNotSupportedException', 'Cloneable', 
'Comparable', 'Compiler', 'Deprecated', 'Double', 'Enum', 
'EnumConstantNotPresentException', 'Error', 'Exception', 
'ExceptionInInitializerError', 'Float', 'IllegalAccessError', 
'IllegalAccessException', 'IllegalArgumentException', 
'IllegalMonitorStateException', 'IllegalStateException', 
'IllegalThreadStateException', 'IncompatibleClassChangeError', 
'IndexOutOfBoundsException', 'InheritableThreadLocal', 'InstantiationError', 
'InstantiationException', 'Integer', 'InternalError', 'InterruptedException', 
'Iterable', 'LinkageError', 'Long', 'Math', 'NegativeArraySizeException', 
'NoClassDefFoundError', 'NoSuchFieldError',
+                       'NoSuchFieldException', 'NoSuchMethodError', 
'NoSuchMethodException', 'NullPointerException', 'Number', 
'NumberFormatException', 'OutOfMemoryError', 'Override', 'Package', 'Process', 
'ProcessBuilder', 'Readable', 'Runnable', 'Runtime', 'RuntimeException', 
'RuntimePermission', 'SecurityException', 'SecurityManager', 'Short', 
'StackOverflowError', 'StackTraceElement', 'StrictMath', 'String', 
'StringBuffer', 'StringBuilder', 'StringIndexOutOfBoundsException', 
'SuppressWarnings', 'System', 'Thread', 'Thread.State', 
'Thread.UncaughtExceptionHandler', 'ThreadDeath', 'ThreadGroup', 'ThreadLocal', 
'Throwable', 'TypeNotPresentException', 'UnknownError', 'UnsatisfiedLinkError', 
'UnsupportedClassVersionError', 'UnsupportedOperationException', 'VerifyError', 
'VirtualMachineError', 'Void'
+                       ),
+               22 => array (
+                       'AnnotationFormatError', 
'AnnotationTypeMismatchException', 'Documented', 'ElementType', 
'IncompleteAnnotationException', 'Inherited', 'Retention', 'RetentionPolicy', 
'Target'
+                       ),
+               23 => array (
+                       'ClassDefinition', 'ClassFileTransformer', 
'IllegalClassFormatException', 'Instrumentation', 'UnmodifiableClassException'
+                       ),
+               24 => array (
+                       'ClassLoadingMXBean', 'CompilationMXBean', 
'GarbageCollectorMXBean', 'ManagementFactory', 'ManagementPermission', 
'MemoryMXBean', 'MemoryManagerMXBean', 'MemoryNotificationInfo', 
'MemoryPoolMXBean', 'MemoryType', 'MemoryUsage', 'OperatingSystemMXBean', 
'RuntimeMXBean', 'ThreadInfo', 'ThreadMXBean'
+                       ),
+               25 => array (
+                       'PhantomReference', 'ReferenceQueue', 'SoftReference', 
'WeakReference'
+                       ),
+               26 => array (
+                       'AccessibleObject', 'AnnotatedElement', 'Constructor', 
'Field', 'GenericArrayType', 'GenericDeclaration', 
'GenericSignatureFormatError', 'InvocationHandler', 
'InvocationTargetException', 'MalformedParameterizedTypeException', 'Member', 
'Method', 'Modifier', 'ParameterizedType', 'ReflectPermission', 'Type', 
'TypeVariable', 'UndeclaredThrowableException', 'WildcardType'
+                       ),
+               27 => array (
+                       'BigDecimal', 'BigInteger', 'MathContext', 
'RoundingMode'
+                       ),
+               28 => array (
+                       'Authenticator', 'Authenticator.RequestorType', 
'BindException', 'CacheRequest', 'CacheResponse', 'ContentHandlerFactory', 
'CookieHandler', 'DatagramPacket', 'DatagramSocket', 'DatagramSocketImpl', 
'DatagramSocketImplFactory', 'FileNameMap', 'HttpRetryException', 
'HttpURLConnection', 'Inet4Address', 'Inet6Address', 'InetAddress', 
'InetSocketAddress', 'JarURLConnection', 'MalformedURLException', 
'MulticastSocket', 'NetPermission', 'NetworkInterface', 
'NoRouteToHostException', 'PasswordAuthentication', 'PortUnreachableException', 
'ProtocolException', 'Proxy.Type', 'ProxySelector', 'ResponseCache', 
'SecureCacheResponse', 'ServerSocket', 'Socket', 'SocketAddress', 
'SocketException', 'SocketImpl', 'SocketImplFactory', 'SocketOptions', 
'SocketPermission', 'SocketTimeoutException', 'URI', 'URISyntaxException', 
'URL', 'URLClassLoader', 'URLConnection', 'URLDecoder', 'URLEncoder', 
'URLStreamHandler', 'URLStreamHandlerFactory', 'UnknownServiceException'
+                       ),
+               29 => array (
+                       'Buffer', 'BufferOverflowException', 
'BufferUnderflowException', 'ByteBuffer', 'ByteOrder', 'CharBuffer', 
'DoubleBuffer', 'FloatBuffer', 'IntBuffer', 'InvalidMarkException', 
'LongBuffer', 'MappedByteBuffer', 'ReadOnlyBufferException', 'ShortBuffer'
+                       ),
+               30 => array (
+                       'AlreadyConnectedException', 
'AsynchronousCloseException', 'ByteChannel', 'CancelledKeyException', 
'Channel', 'Channels', 'ClosedByInterruptException', 'ClosedChannelException', 
'ClosedSelectorException', 'ConnectionPendingException', 'DatagramChannel', 
'FileChannel', 'FileChannel.MapMode', 'FileLock', 
'FileLockInterruptionException', 'GatheringByteChannel', 
'IllegalBlockingModeException', 'IllegalSelectorException', 
'InterruptibleChannel', 'NoConnectionPendingException', 
'NonReadableChannelException', 'NonWritableChannelException', 
'NotYetBoundException', 'NotYetConnectedException', 
'OverlappingFileLockException', 'Pipe', 'Pipe.SinkChannel', 
'Pipe.SourceChannel', 'ReadableByteChannel', 'ScatteringByteChannel', 
'SelectableChannel', 'SelectionKey', 'Selector', 'ServerSocketChannel', 
'SocketChannel', 'UnresolvedAddressException', 
'UnsupportedAddressTypeException', 'WritableByteChannel'
+                       ),
+               31 => array (
+                       'AbstractInterruptibleChannel', 
'AbstractSelectableChannel', 'AbstractSelectionKey', 'AbstractSelector', 
'SelectorProvider'
+                       ),
+               32 => array (
+                       'CharacterCodingException', 'Charset', 
'CharsetDecoder', 'CharsetEncoder', 'CoderMalfunctionError', 'CoderResult', 
'CodingErrorAction', 'IllegalCharsetNameException', 'MalformedInputException', 
'UnmappableCharacterException', 'UnsupportedCharsetException'
+                       ),
+               33 => array (
+                       'CharsetProvider'
+                       ),
+               34 => array (
+                       'AccessException', 'AlreadyBoundException', 
'ConnectIOException', 'MarshalException', 'MarshalledObject', 'Naming', 
'NoSuchObjectException', 'NotBoundException', 'RMISecurityException', 
'RMISecurityManager', 'Remote', 'RemoteException', 'ServerError', 
'ServerException', 'ServerRuntimeException', 'StubNotFoundException', 
'UnexpectedException', 'UnmarshalException'
+                       ),
+               35 => array (
+                       'Activatable', 'ActivateFailedException', 
'ActivationDesc', 'ActivationException', 'ActivationGroup', 
'ActivationGroupDesc', 'ActivationGroupDesc.CommandEnvironment', 
'ActivationGroupID', 'ActivationGroup_Stub', 'ActivationID', 
'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem', 'Activator', 
'UnknownGroupException', 'UnknownObjectException'
+                       ),
+               36 => array (
+                       'DGC', 'Lease', 'VMID'
+                       ),
+               37 => array (
+                       'LocateRegistry', 'Registry', 'RegistryHandler'
+                       ),
+               38 => array (
+                       'ExportException', 'LoaderHandler', 'LogStream', 
'ObjID', 'Operation', 'RMIClassLoader', 'RMIClassLoaderSpi', 
'RMIClientSocketFactory', 'RMIFailureHandler', 'RMIServerSocketFactory', 
'RMISocketFactory', 'RemoteCall', 'RemoteObject', 
'RemoteObjectInvocationHandler', 'RemoteRef', 'RemoteServer', 'RemoteStub', 
'ServerCloneException', 'ServerNotActiveException', 'ServerRef', 'Skeleton', 
'SkeletonMismatchException', 'SkeletonNotFoundException', 
'SocketSecurityException', 'UID', 'UnicastRemoteObject', 'Unreferenced'
+                       ),
+               39 => array (
+                       'AccessControlContext', 'AccessControlException', 
'AccessController', 'AlgorithmParameterGenerator', 
'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 
'AlgorithmParametersSpi', 'AllPermission', 'AuthProvider', 'BasicPermission', 
'CodeSigner', 'CodeSource', 'DigestException', 'DigestInputStream', 
'DigestOutputStream', 'DomainCombiner', 'GeneralSecurityException', 'Guard', 
'GuardedObject', 'Identity', 'IdentityScope', 
'InvalidAlgorithmParameterException', 'InvalidParameterException', 'Key', 
'KeyException', 'KeyFactory', 'KeyFactorySpi', 'KeyManagementException', 
'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi', 'KeyRep', 'KeyRep.Type', 
'KeyStore', 'KeyStore.Builder', 'KeyStore.CallbackHandlerProtection', 
'KeyStore.Entry', 'KeyStore.LoadStoreParameter', 'KeyStore.PasswordProtection', 
'KeyStore.PrivateKeyEntry', 'KeyStore.ProtectionParameter', 
'KeyStore.SecretKeyEntry', 'KeyStore.TrustedCertificateEntry', 
'KeyStoreException', 'KeyStoreSpi', 'MessageDigest', 'MessageDigestSpi',
+                       'NoSuchAlgorithmException', 'NoSuchProviderException', 
'PermissionCollection', 'Permissions', 'PrivateKey', 'PrivilegedAction', 
'PrivilegedActionException', 'PrivilegedExceptionAction', 'ProtectionDomain', 
'Provider', 'Provider.Service', 'ProviderException', 'PublicKey', 
'SecureClassLoader', 'SecureRandom', 'SecureRandomSpi', 'Security', 
'SecurityPermission', 'Signature', 'SignatureException', 'SignatureSpi', 
'SignedObject', 'Signer', 'UnrecoverableEntryException', 
'UnrecoverableKeyException', 'UnresolvedPermission'
+                       ),
+               40 => array (
+                       'Acl', 'AclEntry', 'AclNotFoundException', 'Group', 
'LastOwnerException', 'NotOwnerException', 'Owner'
+                       ),
+               41 => array (
+                       'CRL', 'CRLException', 'CRLSelector', 'CertPath', 
'CertPath.CertPathRep', 'CertPathBuilder', 'CertPathBuilderException', 
'CertPathBuilderResult', 'CertPathBuilderSpi', 'CertPathParameters', 
'CertPathValidator', 'CertPathValidatorException', 'CertPathValidatorResult', 
'CertPathValidatorSpi', 'CertSelector', 'CertStore', 'CertStoreException', 
'CertStoreParameters', 'CertStoreSpi', 'Certificate.CertificateRep', 
'CertificateFactory', 'CertificateFactorySpi', 'CollectionCertStoreParameters', 
'LDAPCertStoreParameters', 'PKIXBuilderParameters', 
'PKIXCertPathBuilderResult', 'PKIXCertPathChecker', 
'PKIXCertPathValidatorResult', 'PKIXParameters', 'PolicyNode', 
'PolicyQualifierInfo', 'TrustAnchor', 'X509CRL', 'X509CRLEntry', 
'X509CRLSelector', 'X509CertSelector', 'X509Extension'
+                       ),
+               42 => array (
+                       'DSAKey', 'DSAKeyPairGenerator', 'DSAParams', 
'DSAPrivateKey', 'DSAPublicKey', 'ECKey', 'ECPrivateKey', 'ECPublicKey', 
'RSAKey', 'RSAMultiPrimePrivateCrtKey', 'RSAPrivateCrtKey', 'RSAPrivateKey', 
'RSAPublicKey'
+                       ),
+               43 => array (
+                       'AlgorithmParameterSpec', 'DSAParameterSpec', 
'DSAPrivateKeySpec', 'DSAPublicKeySpec', 'ECField', 'ECFieldF2m', 'ECFieldFp', 
'ECGenParameterSpec', 'ECParameterSpec', 'ECPoint', 'ECPrivateKeySpec', 
'ECPublicKeySpec', 'EllipticCurve', 'EncodedKeySpec', 
'InvalidKeySpecException', 'InvalidParameterSpecException', 'KeySpec', 
'MGF1ParameterSpec', 'PKCS8EncodedKeySpec', 'PSSParameterSpec', 
'RSAKeyGenParameterSpec', 'RSAMultiPrimePrivateCrtKeySpec', 
'RSAOtherPrimeInfo', 'RSAPrivateCrtKeySpec', 'RSAPrivateKeySpec', 
'RSAPublicKeySpec', 'X509EncodedKeySpec'
+                       ),
+               44 => array (
+                       'BatchUpdateException', 'Blob', 'CallableStatement', 
'Clob', 'Connection', 'DataTruncation', 'DatabaseMetaData', 'Driver', 
'DriverManager', 'DriverPropertyInfo', 'ParameterMetaData', 
'PreparedStatement', 'Ref', 'ResultSet', 'ResultSetMetaData', 'SQLData', 
'SQLException', 'SQLInput', 'SQLOutput', 'SQLPermission', 'SQLWarning', 
'Savepoint', 'Struct', 'Time', 'Types'
+                       ),
+               45 => array (
+                       'AttributedCharacterIterator', 
'AttributedCharacterIterator.Attribute', 'AttributedString', 'Bidi', 
'BreakIterator', 'CharacterIterator', 'ChoiceFormat', 
'CollationElementIterator', 'CollationKey', 'Collator', 'DateFormat', 
'DateFormat.Field', 'DateFormatSymbols', 'DecimalFormat', 
'DecimalFormatSymbols', 'FieldPosition', 'Format', 'Format.Field', 
'MessageFormat', 'MessageFormat.Field', 'NumberFormat', 'NumberFormat.Field', 
'ParseException', 'ParsePosition', 'RuleBasedCollator', 'SimpleDateFormat', 
'StringCharacterIterator'
+                       ),
+               46 => array (
+                       'AbstractCollection', 'AbstractList', 'AbstractMap', 
'AbstractQueue', 'AbstractSequentialList', 'AbstractSet', 'ArrayList', 
'Arrays', 'BitSet', 'Calendar', 'Collection', 'Collections', 'Comparator', 
'ConcurrentModificationException', 'Currency', 'Dictionary', 
'DuplicateFormatFlagsException', 'EmptyStackException', 'EnumMap', 'EnumSet', 
'Enumeration', 'EventListenerProxy', 'EventObject', 
'FormatFlagsConversionMismatchException', 'Formattable', 'FormattableFlags', 
'Formatter.BigDecimalLayoutForm', 'FormatterClosedException', 
'GregorianCalendar', 'HashMap', 'HashSet', 'Hashtable', 'IdentityHashMap', 
'IllegalFormatCodePointException', 'IllegalFormatConversionException', 
'IllegalFormatException', 'IllegalFormatFlagsException', 
'IllegalFormatPrecisionException', 'IllegalFormatWidthException', 
'InputMismatchException', 'InvalidPropertiesFormatException', 'Iterator', 
'LinkedHashMap', 'LinkedHashSet', 'LinkedList', 'ListIterator', 
'ListResourceBundle', 'Locale', 'Map', 'Map.Entry', 
'MissingFormatArgumentException',
+                       'MissingFormatWidthException', 
'MissingResourceException', 'NoSuchElementException', 'Observable', 'Observer', 
'PriorityQueue', 'Properties', 'PropertyPermission', 'PropertyResourceBundle', 
'Queue', 'Random', 'RandomAccess', 'ResourceBundle', 'Scanner', 'Set', 
'SimpleTimeZone', 'SortedMap', 'SortedSet', 'Stack', 'StringTokenizer', 
'TimeZone', 'TimerTask', 'TooManyListenersException', 'TreeMap', 'TreeSet', 
'UUID', 'UnknownFormatConversionException', 'UnknownFormatFlagsException', 
'Vector', 'WeakHashMap'
+                       ),
+               47 => array (
+                       'AbstractExecutorService', 'ArrayBlockingQueue', 
'BlockingQueue', 'BrokenBarrierException', 'Callable', 'CancellationException', 
'CompletionService', 'ConcurrentHashMap', 'ConcurrentLinkedQueue', 
'ConcurrentMap', 'CopyOnWriteArrayList', 'CopyOnWriteArraySet', 
'CountDownLatch', 'CyclicBarrier', 'DelayQueue', 'Delayed', 'Exchanger', 
'ExecutionException', 'Executor', 'ExecutorCompletionService', 
'ExecutorService', 'Executors', 'Future', 'FutureTask', 'LinkedBlockingQueue', 
'PriorityBlockingQueue', 'RejectedExecutionException', 
'RejectedExecutionHandler', 'ScheduledExecutorService', 'ScheduledFuture', 
'ScheduledThreadPoolExecutor', 'Semaphore', 'SynchronousQueue', 
'ThreadFactory', 'ThreadPoolExecutor', 'ThreadPoolExecutor.AbortPolicy', 
'ThreadPoolExecutor.CallerRunsPolicy', 
'ThreadPoolExecutor.DiscardOldestPolicy', 'ThreadPoolExecutor.DiscardPolicy', 
'TimeUnit', 'TimeoutException'
+                       ),
+               48 => array (
+                       'AtomicBoolean', 'AtomicInteger', 'AtomicIntegerArray', 
'AtomicIntegerFieldUpdater', 'AtomicLong', 'AtomicLongArray', 
'AtomicLongFieldUpdater', 'AtomicMarkableReference', 'AtomicReference', 
'AtomicReferenceArray', 'AtomicReferenceFieldUpdater', 'AtomicStampedReference'
+                       ),
+               49 => array (
+                       'AbstractQueuedSynchronizer', 'Condition', 'Lock', 
'LockSupport', 'ReadWriteLock', 'ReentrantLock', 'ReentrantReadWriteLock', 
'ReentrantReadWriteLock.ReadLock', 'ReentrantReadWriteLock.WriteLock'
+                       ),
+               50 => array (
+                       'Attributes.Name', 'JarEntry', 'JarException', 
'JarFile', 'JarInputStream', 'JarOutputStream', 'Manifest', 'Pack200', 
'Pack200.Packer', 'Pack200.Unpacker'
+                       ),
+               51 => array (
+                       'ConsoleHandler', 'ErrorManager', 'FileHandler', 
'Filter', 'Handler', 'Level', 'LogManager', 'LogRecord', 'Logger', 
'LoggingMXBean', 'LoggingPermission', 'MemoryHandler', 'SimpleFormatter', 
'SocketHandler', 'StreamHandler', 'XMLFormatter'
+                       ),
+               52 => array (
+                       'AbstractPreferences', 'BackingStoreException', 
'InvalidPreferencesFormatException', 'NodeChangeEvent', 'NodeChangeListener', 
'PreferenceChangeEvent', 'PreferenceChangeListener', 'Preferences', 
'PreferencesFactory'
+                       ),
+               53 => array (
+                       'MatchResult', 'Matcher', 'Pattern', 
'PatternSyntaxException'
+                       ),
+               54 => array (
+                       'Adler32', 'CRC32', 'CheckedInputStream', 
'CheckedOutputStream', 'Checksum', 'DataFormatException', 'Deflater', 
'DeflaterOutputStream', 'GZIPInputStream', 'GZIPOutputStream', 'Inflater', 
'InflaterInputStream', 'ZipEntry', 'ZipException', 'ZipFile', 'ZipInputStream', 
'ZipOutputStream'
+                       ),
+               55 => array (
+                       'Accessible', 'AccessibleAction', 
'AccessibleAttributeSequence', 'AccessibleBundle', 'AccessibleComponent', 
'AccessibleContext', 'AccessibleEditableText', 'AccessibleExtendedComponent', 
'AccessibleExtendedTable', 'AccessibleExtendedText', 'AccessibleHyperlink', 
'AccessibleHypertext', 'AccessibleIcon', 'AccessibleKeyBinding', 
'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle', 
'AccessibleRole', 'AccessibleSelection', 'AccessibleState', 
'AccessibleStateSet', 'AccessibleStreamable', 'AccessibleTable', 
'AccessibleTableModelChange', 'AccessibleText', 'AccessibleTextSequence', 
'AccessibleValue'
+                       ),
+               56 => array (
+                       'ActivityCompletedException', 
'ActivityRequiredException', 'InvalidActivityException'
+                       ),
+               57 => array (
+                       'BadPaddingException', 'Cipher', 'CipherInputStream', 
'CipherOutputStream', 'CipherSpi', 'EncryptedPrivateKeyInfo', 
'ExemptionMechanism', 'ExemptionMechanismException', 'ExemptionMechanismSpi', 
'IllegalBlockSizeException', 'KeyAgreement', 'KeyAgreementSpi', 'KeyGenerator', 
'KeyGeneratorSpi', 'Mac', 'MacSpi', 'NoSuchPaddingException', 'NullCipher', 
'SealedObject', 'SecretKey', 'SecretKeyFactory', 'SecretKeyFactorySpi', 
'ShortBufferException'
+                       ),
+               58 => array (
+                       'DHKey', 'DHPrivateKey', 'DHPublicKey', 'PBEKey'
+                       ),
+               59 => array (
+                       'DESKeySpec', 'DESedeKeySpec', 'DHGenParameterSpec', 
'DHParameterSpec', 'DHPrivateKeySpec', 'DHPublicKeySpec', 'IvParameterSpec', 
'OAEPParameterSpec', 'PBEKeySpec', 'PBEParameterSpec', 'PSource', 
'PSource.PSpecified', 'RC2ParameterSpec', 'RC5ParameterSpec', 'SecretKeySpec'
+                       ),
+               60 => array (
+                       'IIOException', 'IIOImage', 'IIOParam', 
'IIOParamController', 'ImageIO', 'ImageReadParam', 'ImageReader', 
'ImageTranscoder', 'ImageTypeSpecifier', 'ImageWriteParam', 'ImageWriter'
+                       ),
+               61 => array (
+                       'IIOReadProgressListener', 'IIOReadUpdateListener', 
'IIOReadWarningListener', 'IIOWriteProgressListener', 'IIOWriteWarningListener'
+                       ),
+               62 => array (
+                       'IIOInvalidTreeException', 'IIOMetadata', 
'IIOMetadataController', 'IIOMetadataFormat', 'IIOMetadataFormatImpl', 
'IIOMetadataNode'
+                       ),
+               63 => array (
+                       'BMPImageWriteParam'
+                       ),
+               64 => array (
+                       'JPEGHuffmanTable', 'JPEGImageReadParam', 
'JPEGImageWriteParam', 'JPEGQTable'
+                       ),
+               65 => array (
+                       'IIORegistry', 'IIOServiceProvider', 
'ImageInputStreamSpi', 'ImageOutputStreamSpi', 'ImageReaderSpi', 
'ImageReaderWriterSpi', 'ImageTranscoderSpi', 'ImageWriterSpi', 
'RegisterableService', 'ServiceRegistry', 'ServiceRegistry.Filter'
+                       ),
+               66 => array (
+                       'FileCacheImageInputStream', 
'FileCacheImageOutputStream', 'FileImageInputStream', 'FileImageOutputStream', 
'IIOByteBuffer', 'ImageInputStream', 'ImageInputStreamImpl', 
'ImageOutputStream', 'ImageOutputStreamImpl', 'MemoryCacheImageInputStream', 
'MemoryCacheImageOutputStream'
+                       ),
+               67 => array (
+                       'AttributeChangeNotification', 
'AttributeChangeNotificationFilter', 'AttributeNotFoundException', 
'AttributeValueExp', 'BadAttributeValueExpException', 
'BadBinaryOpValueExpException', 'BadStringOperationException', 'Descriptor', 
'DescriptorAccess', 'DynamicMBean', 'InstanceAlreadyExistsException', 
'InstanceNotFoundException', 'InvalidApplicationException', 'JMException', 
'JMRuntimeException', 'ListenerNotFoundException', 'MBeanAttributeInfo', 
'MBeanConstructorInfo', 'MBeanException', 'MBeanFeatureInfo', 'MBeanInfo', 
'MBeanNotificationInfo', 'MBeanOperationInfo', 'MBeanParameterInfo', 
'MBeanPermission', 'MBeanRegistration', 'MBeanRegistrationException', 
'MBeanServer', 'MBeanServerBuilder', 'MBeanServerConnection', 
'MBeanServerDelegate', 'MBeanServerDelegateMBean', 'MBeanServerFactory', 
'MBeanServerInvocationHandler', 'MBeanServerNotification', 
'MBeanServerPermission', 'MBeanTrustPermission', 
'MalformedObjectNameException', 'NotCompliantMBeanException', 'Notification', 
'NotificationBroadcaster',
+                       'NotificationBroadcasterSupport', 
'NotificationEmitter', 'NotificationFilter', 'NotificationFilterSupport', 
'NotificationListener', 'ObjectInstance', 'ObjectName', 'OperationsException', 
'PersistentMBean', 'Query', 'QueryEval', 'QueryExp', 'ReflectionException', 
'RuntimeErrorException', 'RuntimeMBeanException', 'RuntimeOperationsException', 
'ServiceNotFoundException', 'StandardMBean', 'StringValueExp', 'ValueExp'
+                       ),
+               68 => array (
+                       'ClassLoaderRepository', 'MLet', 'MLetMBean', 
'PrivateClassLoader', 'PrivateMLet'
+                       ),
+               69 => array (
+                       'DescriptorSupport', 
'InvalidTargetObjectTypeException', 'ModelMBean', 'ModelMBeanAttributeInfo', 
'ModelMBeanConstructorInfo', 'ModelMBeanInfo', 'ModelMBeanInfoSupport', 
'ModelMBeanNotificationBroadcaster', 'ModelMBeanNotificationInfo', 
'ModelMBeanOperationInfo', 'RequiredModelMBean', 'XMLParseException'
+                       ),
+               70 => array (
+                       'CounterMonitor', 'CounterMonitorMBean', 
'GaugeMonitor', 'GaugeMonitorMBean', 'Monitor', 'MonitorMBean', 
'MonitorNotification', 'MonitorSettingException', 'StringMonitor', 
'StringMonitorMBean'
+                       ),
+               71 => array (
+                       'ArrayType', 'CompositeData', 'CompositeDataSupport', 
'CompositeType', 'InvalidOpenTypeException', 'KeyAlreadyExistsException', 
'OpenDataException', 'OpenMBeanAttributeInfo', 'OpenMBeanAttributeInfoSupport', 
'OpenMBeanConstructorInfo', 'OpenMBeanConstructorInfoSupport', 'OpenMBeanInfo', 
'OpenMBeanInfoSupport', 'OpenMBeanOperationInfo', 
'OpenMBeanOperationInfoSupport', 'OpenMBeanParameterInfo', 
'OpenMBeanParameterInfoSupport', 'SimpleType', 'TabularData', 
'TabularDataSupport', 'TabularType'
+                       ),
+               72 => array (
+                       'InvalidRelationIdException', 
'InvalidRelationServiceException', 'InvalidRelationTypeException', 
'InvalidRoleInfoException', 'InvalidRoleValueException', 
'MBeanServerNotificationFilter', 'Relation', 'RelationException', 
'RelationNotFoundException', 'RelationNotification', 'RelationService', 
'RelationServiceMBean', 'RelationServiceNotRegisteredException', 
'RelationSupport', 'RelationSupportMBean', 'RelationType', 
'RelationTypeNotFoundException', 'RelationTypeSupport', 'Role', 'RoleInfo', 
'RoleInfoNotFoundException', 'RoleList', 'RoleNotFoundException', 'RoleResult', 
'RoleStatus', 'RoleUnresolved', 'RoleUnresolvedList'
+                       ),
+               73 => array (
+                       'JMXAuthenticator', 'JMXConnectionNotification', 
'JMXConnector', 'JMXConnectorFactory', 'JMXConnectorProvider', 
'JMXConnectorServer', 'JMXConnectorServerFactory', 'JMXConnectorServerMBean', 
'JMXConnectorServerProvider', 'JMXPrincipal', 'JMXProviderException', 
'JMXServerErrorException', 'JMXServiceURL', 'MBeanServerForwarder', 
'NotificationResult', 'SubjectDelegationPermission', 'TargetedNotification'
+                       ),
+               74 => array (
+                       'RMIConnection', 'RMIConnectionImpl', 
'RMIConnectionImpl_Stub', 'RMIConnector', 'RMIConnectorServer', 
'RMIIIOPServerImpl', 'RMIJRMPServerImpl', 'RMIServer', 'RMIServerImpl', 
'RMIServerImpl_Stub'
+                       ),
+               75 => array (
+                       'TimerAlarmClockNotification', 'TimerMBean', 
'TimerNotification'
+                       ),
+               76 => array (
+                       'AuthenticationNotSupportedException', 'BinaryRefAddr', 
'CannotProceedException', 'CommunicationException', 'CompositeName', 
'CompoundName', 'ConfigurationException', 'ContextNotEmptyException', 
'InitialContext', 'InsufficientResourcesException', 
'InterruptedNamingException', 'InvalidNameException', 'LimitExceededException', 
'LinkException', 'LinkLoopException', 'LinkRef', 'MalformedLinkException', 
'Name', 'NameAlreadyBoundException', 'NameClassPair', 'NameNotFoundException', 
'NameParser', 'NamingEnumeration', 'NamingException', 
'NamingSecurityException', 'NoInitialContextException', 
'NoPermissionException', 'NotContextException', 
'OperationNotSupportedException', 'PartialResultException', 'RefAddr', 
'Referenceable', 'ReferralException', 'ServiceUnavailableException', 
'SizeLimitExceededException', 'StringRefAddr', 'TimeLimitExceededException'
+                       ),
+               77 => array (
+                       'AttributeInUseException', 
'AttributeModificationException', 'BasicAttribute', 'BasicAttributes', 
'DirContext', 'InitialDirContext', 'InvalidAttributeIdentifierException', 
'InvalidAttributesException', 'InvalidSearchControlsException', 
'InvalidSearchFilterException', 'ModificationItem', 'NoSuchAttributeException', 
'SchemaViolationException', 'SearchControls', 'SearchResult'
+                       ),
+               78 => array (
+                       'EventContext', 'EventDirContext', 
'NamespaceChangeListener', 'NamingEvent', 'NamingExceptionEvent', 
'NamingListener', 'ObjectChangeListener'
+                       ),
+               79 => array (
+                       'BasicControl', 'ControlFactory', 'ExtendedRequest', 
'ExtendedResponse', 'HasControls', 'InitialLdapContext', 'LdapContext', 
'LdapName', 'LdapReferralException', 'ManageReferralControl', 
'PagedResultsControl', 'PagedResultsResponseControl', 'Rdn', 'SortControl', 
'SortKey', 'SortResponseControl', 'StartTlsRequest', 'StartTlsResponse', 
'UnsolicitedNotification', 'UnsolicitedNotificationEvent', 
'UnsolicitedNotificationListener'
+                       ),
+               80 => array (
+                       'DirObjectFactory', 'DirStateFactory', 
'DirStateFactory.Result', 'DirectoryManager', 'InitialContextFactory', 
'InitialContextFactoryBuilder', 'NamingManager', 'ObjectFactory', 
'ObjectFactoryBuilder', 'ResolveResult', 'Resolver', 'StateFactory'
+                       ),
+               81 => array (
+                       'ServerSocketFactory', 'SocketFactory'
+                       ),
+               82 => array (
+                       'CertPathTrustManagerParameters', 
'HandshakeCompletedEvent', 'HandshakeCompletedListener', 'HostnameVerifier', 
'HttpsURLConnection', 'KeyManager', 'KeyManagerFactory', 
'KeyManagerFactorySpi', 'KeyStoreBuilderParameters', 
'ManagerFactoryParameters', 'SSLContext', 'SSLContextSpi', 'SSLEngine', 
'SSLEngineResult', 'SSLEngineResult.HandshakeStatus', 'SSLEngineResult.Status', 
'SSLException', 'SSLHandshakeException', 'SSLKeyException', 
'SSLPeerUnverifiedException', 'SSLPermission', 'SSLProtocolException', 
'SSLServerSocket', 'SSLServerSocketFactory', 'SSLSession', 
'SSLSessionBindingEvent', 'SSLSessionBindingListener', 'SSLSessionContext', 
'SSLSocket', 'SSLSocketFactory', 'TrustManager', 'TrustManagerFactory', 
'TrustManagerFactorySpi', 'X509ExtendedKeyManager', 'X509KeyManager', 
'X509TrustManager'
+                       ),
+               83 => array (
+                       'AttributeException', 'CancelablePrintJob', 'Doc', 
'DocFlavor', 'DocFlavor.BYTE_ARRAY', 'DocFlavor.CHAR_ARRAY', 
'DocFlavor.INPUT_STREAM', 'DocFlavor.READER', 'DocFlavor.SERVICE_FORMATTED', 
'DocFlavor.STRING', 'DocFlavor.URL', 'DocPrintJob', 'FlavorException', 
'MultiDoc', 'MultiDocPrintJob', 'MultiDocPrintService', 'PrintException', 
'PrintService', 'PrintServiceLookup', 'ServiceUI', 'ServiceUIFactory', 
'SimpleDoc', 'StreamPrintService', 'StreamPrintServiceFactory', 'URIException'
+                       ),
+               84 => array (
+                       'AttributeSetUtilities', 'DateTimeSyntax', 
'DocAttribute', 'DocAttributeSet', 'EnumSyntax', 'HashAttributeSet', 
'HashDocAttributeSet', 'HashPrintJobAttributeSet', 
'HashPrintRequestAttributeSet', 'HashPrintServiceAttributeSet', 
'IntegerSyntax', 'PrintJobAttribute', 'PrintJobAttributeSet', 
'PrintRequestAttribute', 'PrintRequestAttributeSet', 'PrintServiceAttribute', 
'PrintServiceAttributeSet', 'ResolutionSyntax', 'SetOfIntegerSyntax', 
'Size2DSyntax', 'SupportedValuesAttribute', 'TextSyntax', 'URISyntax', 
'UnmodifiableSetException'
+                       ),
+               85 => array (
+                       'Chromaticity', 'ColorSupported', 'Compression', 
'Copies', 'CopiesSupported', 'DateTimeAtCompleted', 'DateTimeAtCreation', 
'DateTimeAtProcessing', 'Destination', 'DocumentName', 'Fidelity', 
'Finishings', 'JobHoldUntil', 'JobImpressions', 'JobImpressionsCompleted', 
'JobImpressionsSupported', 'JobKOctets', 'JobKOctetsProcessed', 
'JobKOctetsSupported', 'JobMediaSheets', 'JobMediaSheetsCompleted', 
'JobMediaSheetsSupported', 'JobMessageFromOperator', 'JobName', 
'JobOriginatingUserName', 'JobPriority', 'JobPrioritySupported', 'JobSheets', 
'JobState', 'JobStateReason', 'JobStateReasons', 'Media', 'MediaName', 
'MediaPrintableArea', 'MediaSize', 'MediaSize.Engineering', 'MediaSize.ISO', 
'MediaSize.JIS', 'MediaSize.NA', 'MediaSize.Other', 'MediaSizeName', 
'MediaTray', 'MultipleDocumentHandling', 'NumberOfDocuments', 
'NumberOfInterveningJobs', 'NumberUp', 'NumberUpSupported', 
'OrientationRequested', 'OutputDeviceAssigned', 'PDLOverrideSupported', 
'PageRanges', 'PagesPerMinute', 'PagesPerMinuteColor',
+                       'PresentationDirection', 'PrintQuality', 'PrinterInfo', 
'PrinterIsAcceptingJobs', 'PrinterLocation', 'PrinterMakeAndModel', 
'PrinterMessageFromOperator', 'PrinterMoreInfo', 'PrinterMoreInfoManufacturer', 
'PrinterName', 'PrinterResolution', 'PrinterState', 'PrinterStateReason', 
'PrinterStateReasons', 'PrinterURI', 'QueuedJobCount', 
'ReferenceUriSchemesSupported', 'RequestingUserName', 'Severity', 
'SheetCollate', 'Sides'
+                       ),
+               86 => array (
+                       'PrintEvent', 'PrintJobAdapter', 
'PrintJobAttributeEvent', 'PrintJobAttributeListener', 'PrintJobEvent', 
'PrintJobListener', 'PrintServiceAttributeEvent', 
'PrintServiceAttributeListener'
+                       ),
+               87 => array (
+                       'PortableRemoteObject'
+                       ),
+               88 => array (
+                       'ClassDesc', 'PortableRemoteObjectDelegate', 'Stub', 
'StubDelegate', 'Tie', 'Util', 'UtilDelegate', 'ValueHandler', 
'ValueHandlerMultiFormat'
+                       ),
+               89 => array (
+                       'SslRMIClientSocketFactory', 'SslRMIServerSocketFactory'
+                       ),
+               90 => array (
+                       'AuthPermission', 'DestroyFailedException', 
'Destroyable', 'PrivateCredentialPermission', 'RefreshFailedException', 
'Refreshable', 'Subject', 'SubjectDomainCombiner'
+                       ),
+               91 => array (
+                       'Callback', 'CallbackHandler', 'ChoiceCallback', 
'ConfirmationCallback', 'LanguageCallback', 'NameCallback', 'PasswordCallback', 
'TextInputCallback', 'TextOutputCallback', 'UnsupportedCallbackException'
+                       ),
+               92 => array (
+                       'DelegationPermission', 'KerberosKey', 
'KerberosPrincipal', 'KerberosTicket', 'ServicePermission'
+                       ),
+               93 => array (
+                       'AccountException', 'AccountExpiredException', 
'AccountLockedException', 'AccountNotFoundException', 'AppConfigurationEntry', 
'AppConfigurationEntry.LoginModuleControlFlag', 'Configuration', 
'CredentialException', 'CredentialExpiredException', 
'CredentialNotFoundException', 'FailedLoginException', 'LoginContext', 
'LoginException'
+                       ),
+               94 => array (
+                       'LoginModule'
+                       ),
+               95 => array (
+                       'X500Principal', 'X500PrivateCredential'
+                       ),
+               96 => array (
+                       'AuthorizeCallback', 'RealmCallback', 
'RealmChoiceCallback', 'Sasl', 'SaslClient', 'SaslClientFactory', 
'SaslException', 'SaslServer', 'SaslServerFactory'
+                       ),
+               97 => array (
+                       'ControllerEventListener', 'Instrument', 
'InvalidMidiDataException', 'MetaEventListener', 'MetaMessage', 'MidiChannel', 
'MidiDevice', 'MidiDevice.Info', 'MidiEvent', 'MidiFileFormat', 'MidiMessage', 
'MidiSystem', 'MidiUnavailableException', 'Patch', 'Receiver', 'Sequence', 
'Sequencer', 'Sequencer.SyncMode', 'ShortMessage', 'Soundbank', 
'SoundbankResource', 'Synthesizer', 'SysexMessage', 'Track', 'Transmitter', 
'VoiceStatus'
+                       ),
+               98 => array (
+                       'MidiDeviceProvider', 'MidiFileReader', 
'MidiFileWriter', 'SoundbankReader'
+                       ),
+               99 => array (
+                       'AudioFileFormat', 'AudioFileFormat.Type', 
'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream', 'AudioPermission', 
'AudioSystem', 'BooleanControl', 'BooleanControl.Type', 'Clip', 
'CompoundControl', 'CompoundControl.Type', 'Control.Type', 'DataLine', 
'DataLine.Info', 'EnumControl', 'EnumControl.Type', 'FloatControl', 
'FloatControl.Type', 'Line', 'Line.Info', 'LineEvent', 'LineEvent.Type', 
'LineListener', 'LineUnavailableException', 'Mixer', 'Mixer.Info', 'Port', 
'Port.Info', 'ReverbType', 'SourceDataLine', 'TargetDataLine', 
'UnsupportedAudioFileException'
+                       ),
+               100 => array (
+                       'AudioFileReader', 'AudioFileWriter', 
'FormatConversionProvider', 'MixerProvider'
+                       ),
+               101 => array (
+                       'ConnectionEvent', 'ConnectionEventListener', 
'ConnectionPoolDataSource', 'DataSource', 'PooledConnection', 'RowSet', 
'RowSetEvent', 'RowSetInternal', 'RowSetListener', 'RowSetMetaData', 
'RowSetReader', 'RowSetWriter', 'XAConnection', 'XADataSource'
+                       ),
+               102 => array (
+                       'BaseRowSet', 'CachedRowSet', 'FilteredRowSet', 
'JdbcRowSet', 'JoinRowSet', 'Joinable', 'Predicate', 'RowSetMetaDataImpl', 
'RowSetWarning', 'WebRowSet'
+                       ),
+               103 => array (
+                       'SQLInputImpl', 'SQLOutputImpl', 'SerialArray', 
'SerialBlob', 'SerialClob', 'SerialDatalink', 'SerialException', 
'SerialJavaObject', 'SerialRef', 'SerialStruct'
+                       ),
+               104 => array (
+                       'SyncFactory', 'SyncFactoryException', 'SyncProvider', 
'SyncProviderException', 'SyncResolver', 'TransactionalWriter', 'XmlReader', 
'XmlWriter'
+                       ),
+               105 => array (
+                       'AbstractAction', 'AbstractButton', 
'AbstractCellEditor', 'AbstractListModel', 'AbstractSpinnerModel', 'Action', 
'ActionMap', 'BorderFactory', 'BoundedRangeModel', 'Box', 'Box.Filler', 
'BoxLayout', 'ButtonGroup', 'ButtonModel', 'CellEditor', 'CellRendererPane', 
'ComboBoxEditor', 'ComboBoxModel', 'ComponentInputMap', 'DebugGraphics', 
'DefaultBoundedRangeModel', 'DefaultButtonModel', 'DefaultCellEditor', 
'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultFocusManager', 
'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 
'DefaultListModel', 'DefaultListSelectionModel', 'DefaultSingleSelectionModel', 
'DesktopManager', 'FocusManager', 'GrayFilter', 'Icon', 'ImageIcon', 
'InputMap', 'InputVerifier', 'InternalFrameFocusTraversalPolicy', 'JApplet', 
'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox', 
'JComboBox.KeySelectionManager', 'JComponent', 'JDesktopPane', 'JDialog', 
'JEditorPane', 'JFileChooser', 'JFormattedTextField', 
'JFormattedTextField.AbstractFormatter',
+                       'JFormattedTextField.AbstractFormatterFactory', 
'JFrame', 'JInternalFrame', 'JInternalFrame.JDesktopIcon', 'JLabel', 
'JLayeredPane', 'JList', 'JMenu', 'JMenuBar', 'JMenuItem', 'JOptionPane', 
'JPanel', 'JPasswordField', 'JPopupMenu', 'JPopupMenu.Separator', 
'JProgressBar', 'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane', 
'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider', 'JSpinner', 
'JSpinner.DateEditor', 'JSpinner.DefaultEditor', 'JSpinner.ListEditor', 
'JSpinner.NumberEditor', 'JSplitPane', 'JTabbedPane', 'JTable', 
'JTable.PrintMode', 'JTextArea', 'JTextField', 'JTextPane', 'JToggleButton', 
'JToggleButton.ToggleButtonModel', 'JToolBar', 'JToolBar.Separator', 
'JToolTip', 'JTree', 'JTree.DynamicUtilTreeNode', 'JTree.EmptySelectionModel', 
'JViewport', 'JWindow', 'KeyStroke', 'LayoutFocusTraversalPolicy', 
'ListCellRenderer', 'ListModel', 'ListSelectionModel', 'LookAndFeel', 
'MenuElement', 'MenuSelectionManager', 'MutableComboBoxModel', 'OverlayLayout', 
'Popup', 'PopupFactory', 'ProgressMonitor',
+                       'ProgressMonitorInputStream', 'Renderer', 
'RepaintManager', 'RootPaneContainer', 'ScrollPaneConstants', 
'ScrollPaneLayout', 'ScrollPaneLayout.UIResource', 'Scrollable', 
'SingleSelectionModel', 'SizeRequirements', 'SizeSequence', 
'SortingFocusTraversalPolicy', 'SpinnerDateModel', 'SpinnerListModel', 
'SpinnerModel', 'SpinnerNumberModel', 'Spring', 'SpringLayout', 
'SpringLayout.Constraints', 'SwingConstants', 'SwingUtilities', 
'ToolTipManager', 'TransferHandler', 'UIDefaults', 'UIDefaults.ActiveValue', 
'UIDefaults.LazyInputMap', 'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue', 
'UIManager', 'UIManager.LookAndFeelInfo', 'UnsupportedLookAndFeelException', 
'ViewportLayout', 'WindowConstants'
+                       ),
+               106 => array (
+                       'AbstractBorder', 'BevelBorder', 'Border', 
'CompoundBorder', 'EmptyBorder', 'EtchedBorder', 'LineBorder', 'MatteBorder', 
'SoftBevelBorder', 'TitledBorder'
+                       ),
+               107 => array (
+                       'AbstractColorChooserPanel', 
'ColorChooserComponentFactory', 'ColorSelectionModel', 
'DefaultColorSelectionModel'
+                       ),
+               108 => array (
+                       'AncestorEvent', 'AncestorListener', 'CaretEvent', 
'CaretListener', 'CellEditorListener', 'ChangeEvent', 'ChangeListener', 
'DocumentEvent.ElementChange', 'DocumentEvent.EventType', 'DocumentListener', 
'EventListenerList', 'HyperlinkEvent', 'HyperlinkEvent.EventType', 
'HyperlinkListener', 'InternalFrameAdapter', 'InternalFrameEvent', 
'InternalFrameListener', 'ListDataEvent', 'ListDataListener', 
'ListSelectionEvent', 'ListSelectionListener', 'MenuDragMouseEvent', 
'MenuDragMouseListener', 'MenuEvent', 'MenuKeyEvent', 'MenuKeyListener', 
'MenuListener', 'MouseInputAdapter', 'MouseInputListener', 'PopupMenuEvent', 
'PopupMenuListener', 'SwingPropertyChangeSupport', 'TableColumnModelEvent', 
'TableColumnModelListener', 'TableModelEvent', 'TableModelListener', 
'TreeExpansionEvent', 'TreeExpansionListener', 'TreeModelEvent', 
'TreeModelListener', 'TreeSelectionEvent', 'TreeSelectionListener', 
'TreeWillExpandListener', 'UndoableEditEvent', 'UndoableEditListener'
+                       ),
+               109 => array (
+                       'FileSystemView', 'FileView'
+                       ),
+               110 => array (
+                       'ActionMapUIResource', 'BorderUIResource', 
'BorderUIResource.BevelBorderUIResource', 
'BorderUIResource.CompoundBorderUIResource', 
'BorderUIResource.EmptyBorderUIResource', 
'BorderUIResource.EtchedBorderUIResource', 
'BorderUIResource.LineBorderUIResource', 
'BorderUIResource.MatteBorderUIResource', 
'BorderUIResource.TitledBorderUIResource', 'ButtonUI', 'ColorChooserUI', 
'ColorUIResource', 'ComboBoxUI', 'ComponentInputMapUIResource', 'ComponentUI', 
'DesktopIconUI', 'DesktopPaneUI', 'DimensionUIResource', 'FileChooserUI', 
'FontUIResource', 'IconUIResource', 'InputMapUIResource', 'InsetsUIResource', 
'InternalFrameUI', 'LabelUI', 'ListUI', 'MenuBarUI', 'MenuItemUI', 
'OptionPaneUI', 'PanelUI', 'PopupMenuUI', 'ProgressBarUI', 'RootPaneUI', 
'ScrollBarUI', 'ScrollPaneUI', 'SeparatorUI', 'SliderUI', 'SpinnerUI', 
'SplitPaneUI', 'TabbedPaneUI', 'TableHeaderUI', 'TableUI', 'TextUI', 
'ToolBarUI', 'ToolTipUI', 'TreeUI', 'UIResource', 'ViewportUI'
+                       ),
+               111 => array (
+                       'BasicArrowButton', 'BasicBorders', 
'BasicBorders.ButtonBorder', 'BasicBorders.FieldBorder', 
'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder', 
'BasicBorders.RadioButtonBorder', 'BasicBorders.RolloverButtonBorder', 
'BasicBorders.SplitPaneBorder', 'BasicBorders.ToggleButtonBorder', 
'BasicButtonListener', 'BasicButtonUI', 'BasicCheckBoxMenuItemUI', 
'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor', 
'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 
'BasicComboBoxRenderer.UIResource', 'BasicComboBoxUI', 'BasicComboPopup', 
'BasicDesktopIconUI', 'BasicDesktopPaneUI', 'BasicDirectoryModel', 
'BasicEditorPaneUI', 'BasicFileChooserUI', 'BasicFormattedTextFieldUI', 
'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 
'BasicInternalFrameTitlePane', 'BasicInternalFrameUI', 'BasicLabelUI', 
'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI', 'BasicMenuItemUI', 
'BasicMenuUI', 'BasicOptionPaneUI', 'BasicOptionPaneUI.ButtonAreaLayout', 
'BasicPanelUI', 'BasicPasswordFieldUI',
+                       'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI', 
'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI', 
'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI', 
'BasicSliderUI', 'BasicSpinnerUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 
'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI', 
'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret', 
'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 
'BasicToolBarSeparatorUI', 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 
'BasicViewportUI', 'ComboPopup', 'DefaultMenuLayout'
+                       ),
+               112 => array (
+                       'DefaultMetalTheme', 'MetalBorders', 
'MetalBorders.ButtonBorder', 'MetalBorders.Flush3DBorder', 
'MetalBorders.InternalFrameBorder', 'MetalBorders.MenuBarBorder', 
'MetalBorders.MenuItemBorder', 'MetalBorders.OptionDialogBorder', 
'MetalBorders.PaletteBorder', 'MetalBorders.PopupMenuBorder', 
'MetalBorders.RolloverButtonBorder', 'MetalBorders.ScrollPaneBorder', 
'MetalBorders.TableHeaderBorder', 'MetalBorders.TextFieldBorder', 
'MetalBorders.ToggleButtonBorder', 'MetalBorders.ToolBarBorder', 
'MetalButtonUI', 'MetalCheckBoxIcon', 'MetalCheckBoxUI', 'MetalComboBoxButton', 
'MetalComboBoxEditor', 'MetalComboBoxEditor.UIResource', 'MetalComboBoxIcon', 
'MetalComboBoxUI', 'MetalDesktopIconUI', 'MetalFileChooserUI', 
'MetalIconFactory', 'MetalIconFactory.FileIcon16', 
'MetalIconFactory.FolderIcon16', 'MetalIconFactory.PaletteCloseIcon', 
'MetalIconFactory.TreeControlIcon', 'MetalIconFactory.TreeFolderIcon', 
'MetalIconFactory.TreeLeafIcon', 'MetalInternalFrameTitlePane', 
'MetalInternalFrameUI', 'MetalLabelUI',
+                       'MetalLookAndFeel', 'MetalMenuBarUI', 
'MetalPopupMenuSeparatorUI', 'MetalProgressBarUI', 'MetalRadioButtonUI', 
'MetalRootPaneUI', 'MetalScrollBarUI', 'MetalScrollButton', 
'MetalScrollPaneUI', 'MetalSeparatorUI', 'MetalSliderUI', 'MetalSplitPaneUI', 
'MetalTabbedPaneUI', 'MetalTextFieldUI', 'MetalTheme', 'MetalToggleButtonUI', 
'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI', 'OceanTheme'
+                       ),
+               113 => array (
+                       'MultiButtonUI', 'MultiColorChooserUI', 
'MultiComboBoxUI', 'MultiDesktopIconUI', 'MultiDesktopPaneUI', 
'MultiFileChooserUI', 'MultiInternalFrameUI', 'MultiLabelUI', 'MultiListUI', 
'MultiLookAndFeel', 'MultiMenuBarUI', 'MultiMenuItemUI', 'MultiOptionPaneUI', 
'MultiPanelUI', 'MultiPopupMenuUI', 'MultiProgressBarUI', 'MultiRootPaneUI', 
'MultiScrollBarUI', 'MultiScrollPaneUI', 'MultiSeparatorUI', 'MultiSliderUI', 
'MultiSpinnerUI', 'MultiSplitPaneUI', 'MultiTabbedPaneUI', 
'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI', 'MultiToolBarUI', 
'MultiToolTipUI', 'MultiTreeUI', 'MultiViewportUI'
+                       ),
+               114 => array (
+                       'ColorType', 'Region', 'SynthConstants', 
'SynthContext', 'SynthGraphicsUtils', 'SynthLookAndFeel', 'SynthPainter', 
'SynthStyle', 'SynthStyleFactory'
+                       ),
+               115 => array (
+                       'AbstractTableModel', 'DefaultTableCellRenderer', 
'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel', 
'DefaultTableModel', 'JTableHeader', 'TableCellEditor', 'TableCellRenderer', 
'TableColumn', 'TableColumnModel', 'TableModel'
+                       ),
+               116 => array (
+                       'AbstractDocument', 
'AbstractDocument.AttributeContext', 'AbstractDocument.Content', 
'AbstractDocument.ElementEdit', 'AbstractWriter', 'AsyncBoxView', 
'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute', 
'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute', 
'BadLocationException', 'BoxView', 'Caret', 'ChangedCharSetException', 
'ComponentView', 'CompositeView', 'DateFormatter', 'DefaultCaret', 
'DefaultEditorKit', 'DefaultEditorKit.BeepAction', 
'DefaultEditorKit.CopyAction', 'DefaultEditorKit.CutAction', 
'DefaultEditorKit.DefaultKeyTypedAction', 'DefaultEditorKit.InsertBreakAction', 
'DefaultEditorKit.InsertContentAction', 'DefaultEditorKit.InsertTabAction', 
'DefaultEditorKit.PasteAction', 'DefaultFormatter', 'DefaultFormatterFactory', 
'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter', 
'DefaultStyledDocument', 'DefaultStyledDocument.AttributeUndoableEdit', 
'DefaultStyledDocument.ElementSpec', 'DefaultTextUI', 'DocumentFilter', 
'DocumentFilter.FilterBypass',
+                       'EditorKit', 'ElementIterator', 'FieldView', 
'FlowView', 'FlowView.FlowStrategy', 'GapContent', 'GlyphView', 
'GlyphView.GlyphPainter', 'Highlighter', 'Highlighter.Highlight', 
'Highlighter.HighlightPainter', 'IconView', 'InternationalFormatter', 
'JTextComponent', 'JTextComponent.KeyBinding', 'Keymap', 'LabelView', 
'LayeredHighlighter', 'LayeredHighlighter.LayerPainter', 'LayoutQueue', 
'MaskFormatter', 'MutableAttributeSet', 'NavigationFilter', 
'NavigationFilter.FilterBypass', 'NumberFormatter', 'PasswordView', 
'PlainDocument', 'PlainView', 'Position', 'Position.Bias', 'Segment', 
'SimpleAttributeSet', 'StringContent', 'Style', 'StyleConstants', 
'StyleConstants.CharacterConstants', 'StyleConstants.ColorConstants', 
'StyleConstants.FontConstants', 'StyleConstants.ParagraphConstants', 
'StyleContext', 'StyledDocument', 'StyledEditorKit', 
'StyledEditorKit.AlignmentAction', 'StyledEditorKit.BoldAction', 
'StyledEditorKit.FontFamilyAction', 'StyledEditorKit.FontSizeAction', 
'StyledEditorKit.ForegroundAction',
+                       'StyledEditorKit.ItalicAction', 
'StyledEditorKit.StyledTextAction', 'StyledEditorKit.UnderlineAction', 
'TabExpander', 'TabSet', 'TabStop', 'TabableView', 'TableView', 'TextAction', 
'Utilities', 'View', 'ViewFactory', 'WrappedPlainView', 'ZoneView'
+                       ),
+               117 => array (
+                       'BlockView', 'CSS', 'CSS.Attribute', 'FormSubmitEvent', 
'FormSubmitEvent.MethodType', 'FormView', 'HTML', 'HTML.Attribute', 'HTML.Tag', 
'HTML.UnknownTag', 'HTMLDocument', 'HTMLDocument.Iterator', 'HTMLEditorKit', 
'HTMLEditorKit.HTMLFactory', 'HTMLEditorKit.HTMLTextAction', 
'HTMLEditorKit.InsertHTMLTextAction', 'HTMLEditorKit.LinkController', 
'HTMLEditorKit.Parser', 'HTMLEditorKit.ParserCallback', 
'HTMLFrameHyperlinkEvent', 'HTMLWriter', 'ImageView', 'InlineView', 'ListView', 
'MinimalHTMLWriter', 'ObjectView', 'Option', 'StyleSheet', 
'StyleSheet.BoxPainter', 'StyleSheet.ListPainter'
+                       ),
+               118 => array (
+                       'ContentModel', 'DTD', 'DTDConstants', 
'DocumentParser', 'ParserDelegator', 'TagElement'
+                       ),
+               119 => array (
+                       'RTFEditorKit'
+                       ),
+               120 => array (
+                       'AbstractLayoutCache', 
'AbstractLayoutCache.NodeDimensions', 'DefaultMutableTreeNode', 
'DefaultTreeCellEditor', 'DefaultTreeCellRenderer', 'DefaultTreeModel', 
'DefaultTreeSelectionModel', 'ExpandVetoException', 'FixedHeightLayoutCache', 
'MutableTreeNode', 'RowMapper', 'TreeCellEditor', 'TreeCellRenderer', 
'TreeModel', 'TreeNode', 'TreePath', 'TreeSelectionModel', 
'VariableHeightLayoutCache'
+                       ),
+               121 => array (
+                       'AbstractUndoableEdit', 'CannotRedoException', 
'CannotUndoException', 'CompoundEdit', 'StateEdit', 'StateEditable', 
'UndoManager', 'UndoableEdit', 'UndoableEditSupport'
+                       ),
+               122 => array (
+                       'InvalidTransactionException', 
'TransactionRequiredException', 'TransactionRolledbackException'
+                       ),
+               123 => array (
+                       'XAException', 'XAResource', 'Xid'
+                       ),
+               124 => array (
+                       'XMLConstants'
+                       ),
+               125 => array (
+                       'DatatypeConfigurationException', 'DatatypeConstants', 
'DatatypeConstants.Field', 'DatatypeFactory', 'Duration', 'XMLGregorianCalendar'
+                       ),
+               126 => array (
+                       'NamespaceContext', 'QName'
+                       ),
+               127 => array (
+                       'DocumentBuilder', 'DocumentBuilderFactory', 
'FactoryConfigurationError', 'ParserConfigurationException', 'SAXParser', 
'SAXParserFactory'
+                       ),
+               128 => array (
+                       'ErrorListener', 'OutputKeys', 'Result', 'Source', 
'SourceLocator', 'Templates', 'Transformer', 
'TransformerConfigurationException', 'TransformerException', 
'TransformerFactory', 'TransformerFactoryConfigurationError', 'URIResolver'
+                       ),
+               129 => array (
+                       'DOMResult', 'DOMSource'
+                       ),
+               130 => array (
+                       'SAXResult', 'SAXSource', 'SAXTransformerFactory', 
'TemplatesHandler', 'TransformerHandler'
+                       ),
+               131 => array (
+                       'StreamResult', 'StreamSource'
+                       ),
+               132 => array (
+                       'Schema', 'SchemaFactory', 'SchemaFactoryLoader', 
'TypeInfoProvider', 'Validator', 'ValidatorHandler'
+                       ),
+               133 => array (
+                       'XPath', 'XPathConstants', 'XPathException', 
'XPathExpression', 'XPathExpressionException', 'XPathFactory', 
'XPathFactoryConfigurationException', 'XPathFunction', 
'XPathFunctionException', 'XPathFunctionResolver', 'XPathVariableResolver'
+                       ),
+               134 => array (
+                       'ChannelBinding', 'GSSContext', 'GSSCredential', 
'GSSException', 'GSSManager', 'GSSName', 'MessageProp', 'Oid'
+                       ),
+               135 => array (
+                       'ACTIVITY_COMPLETED', 'ACTIVITY_REQUIRED', 'ARG_IN', 
'ARG_INOUT', 'ARG_OUT', 'Any', 'AnyHolder', 'AnySeqHolder', 'BAD_CONTEXT', 
'BAD_INV_ORDER', 'BAD_OPERATION', 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 
'BAD_POLICY_VALUE', 'BAD_QOS', 'BAD_TYPECODE', 'BooleanHolder', 
'BooleanSeqHelper', 'BooleanSeqHolder', 'ByteHolder', 'CODESET_INCOMPATIBLE', 
'COMM_FAILURE', 'CTX_RESTRICT_SCOPE', 'CharHolder', 'CharSeqHelper', 
'CharSeqHolder', 'CompletionStatus', 'CompletionStatusHelper', 'ContextList', 
'CurrentHolder', 'CustomMarshal', 'DATA_CONVERSION', 'DefinitionKind', 
'DefinitionKindHelper', 'DomainManager', 'DomainManagerOperations', 
'DoubleHolder', 'DoubleSeqHelper', 'DoubleSeqHolder', 'Environment', 
'ExceptionList', 'FREE_MEM', 'FixedHolder', 'FloatHolder', 'FloatSeqHelper', 
'FloatSeqHolder', 'IDLType', 'IDLTypeHelper', 'IDLTypeOperations', 'IMP_LIMIT', 
'INITIALIZE', 'INTERNAL', 'INTF_REPOS', 'INVALID_ACTIVITY', 
'INVALID_TRANSACTION', 'INV_FLAG', 'INV_IDENT', 'INV_OBJREF', 'INV_POLICY', 
'IRObject',
+                       'IRObjectOperations', 'IdentifierHelper', 'IntHolder', 
'LocalObject', 'LongHolder', 'LongLongSeqHelper', 'LongLongSeqHolder', 
'LongSeqHelper', 'LongSeqHolder', 'MARSHAL', 'NO_IMPLEMENT', 'NO_MEMORY', 
'NO_PERMISSION', 'NO_RESOURCES', 'NO_RESPONSE', 'NVList', 'NamedValue', 
'OBJECT_NOT_EXIST', 'OBJ_ADAPTER', 'OMGVMCID', 'ObjectHelper', 'ObjectHolder', 
'OctetSeqHelper', 'OctetSeqHolder', 'PERSIST_STORE', 'PRIVATE_MEMBER', 
'PUBLIC_MEMBER', 'ParameterMode', 'ParameterModeHelper', 'ParameterModeHolder', 
'PolicyError', 'PolicyErrorCodeHelper', 'PolicyErrorHelper', 
'PolicyErrorHolder', 'PolicyHelper', 'PolicyHolder', 'PolicyListHelper', 
'PolicyListHolder', 'PolicyOperations', 'PolicyTypeHelper', 'PrincipalHolder', 
'REBIND', 'RepositoryIdHelper', 'Request', 'ServerRequest', 'ServiceDetail', 
'ServiceDetailHelper', 'ServiceInformation', 'ServiceInformationHelper', 
'ServiceInformationHolder', 'SetOverrideType', 'SetOverrideTypeHelper', 
'ShortHolder', 'ShortSeqHelper', 'ShortSeqHolder', 'StringHolder',
+                       'StringSeqHelper', 'StringSeqHolder', 
'StringValueHelper', 'StructMember', 'StructMemberHelper', 'SystemException', 
'TCKind', 'TIMEOUT', 'TRANSACTION_MODE', 'TRANSACTION_REQUIRED', 
'TRANSACTION_ROLLEDBACK', 'TRANSACTION_UNAVAILABLE', 'TRANSIENT', 'TypeCode', 
'TypeCodeHolder', 'ULongLongSeqHelper', 'ULongLongSeqHolder', 'ULongSeqHelper', 
'ULongSeqHolder', 'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE', 
'UShortSeqHelper', 'UShortSeqHolder', 'UnionMember', 'UnionMemberHelper', 
'UnknownUserException', 'UnknownUserExceptionHelper', 
'UnknownUserExceptionHolder', 'UserException', 'VM_ABSTRACT', 'VM_CUSTOM', 
'VM_NONE', 'VM_TRUNCATABLE', 'ValueBaseHelper', 'ValueBaseHolder', 
'ValueMember', 'ValueMemberHelper', 'VersionSpecHelper', 'VisibilityHelper', 
'WCharSeqHelper', 'WCharSeqHolder', 'WStringSeqHelper', 'WStringSeqHolder', 
'WStringValueHelper', 'WrongTransaction', 'WrongTransactionHelper', 
'WrongTransactionHolder', '_IDLTypeStub', '_PolicyStub'
+                       ),
+               136 => array (
+                       'Invalid', 'InvalidSeq'
+                       ),
+               137 => array (
+                       'BadKind'
+                       ),
+               138 => array (
+                       'ApplicationException', 'BoxedValueHelper', 
'CustomValue', 'IDLEntity', 'IndirectionException', 'InvokeHandler', 
'RemarshalException', 'ResponseHandler', 'ServantObject', 'Streamable', 
'StreamableValue', 'UnknownException', 'ValueBase', 'ValueFactory', 
'ValueInputStream', 'ValueOutputStream'
+                       ),
+               139 => array (
+                       'BindingHelper', 'BindingHolder', 'BindingIterator', 
'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations', 
'BindingIteratorPOA', 'BindingListHelper', 'BindingListHolder', 'BindingType', 
'BindingTypeHelper', 'BindingTypeHolder', 'IstringHelper', 'NameComponent', 
'NameComponentHelper', 'NameComponentHolder', 'NameHelper', 'NameHolder', 
'NamingContext', 'NamingContextExt', 'NamingContextExtHelper', 
'NamingContextExtHolder', 'NamingContextExtOperations', 'NamingContextExtPOA', 
'NamingContextHelper', 'NamingContextHolder', 'NamingContextOperations', 
'NamingContextPOA', '_BindingIteratorImplBase', '_BindingIteratorStub', 
'_NamingContextExtStub', '_NamingContextImplBase', '_NamingContextStub'
+                       ),
+               140 => array (
+                       'AddressHelper', 'InvalidAddress', 
'InvalidAddressHelper', 'InvalidAddressHolder', 'StringNameHelper', 
'URLStringHelper'
+                       ),
+               141 => array (
+                       'AlreadyBound', 'AlreadyBoundHelper', 
'AlreadyBoundHolder', 'CannotProceed', 'CannotProceedHelper', 
'CannotProceedHolder', 'InvalidNameHolder', 'NotEmpty', 'NotEmptyHelper', 
'NotEmptyHolder', 'NotFound', 'NotFoundHelper', 'NotFoundHolder', 
'NotFoundReason', 'NotFoundReasonHelper', 'NotFoundReasonHolder'
+                       ),
+               142 => array (
+                       'Parameter'
+                       ),
+               143 => array (
+                       'DynAnyFactory', 'DynAnyFactoryHelper', 
'DynAnyFactoryOperations', 'DynAnyHelper', 'DynAnyOperations', 
'DynAnySeqHelper', 'DynArrayHelper', 'DynArrayOperations', 'DynEnumHelper', 
'DynEnumOperations', 'DynFixedHelper', 'DynFixedOperations', 
'DynSequenceHelper', 'DynSequenceOperations', 'DynStructHelper', 
'DynStructOperations', 'DynUnionHelper', 'DynUnionOperations', 'DynValueBox', 
'DynValueBoxOperations', 'DynValueCommon', 'DynValueCommonOperations', 
'DynValueHelper', 'DynValueOperations', 'NameDynAnyPair', 
'NameDynAnyPairHelper', 'NameDynAnyPairSeqHelper', 'NameValuePairSeqHelper', 
'_DynAnyFactoryStub', '_DynAnyStub', '_DynArrayStub', '_DynEnumStub', 
'_DynFixedStub', '_DynSequenceStub', '_DynStructStub', '_DynUnionStub', 
'_DynValueStub'
+                       ),
+               144 => array (
+                       'InconsistentTypeCodeHelper'
+                       ),
+               145 => array (
+                       'InvalidValueHelper'
+                       ),
+               146 => array (
+                       'CodeSets', 'Codec', 'CodecFactory', 
'CodecFactoryHelper', 'CodecFactoryOperations', 'CodecOperations', 
'ComponentIdHelper', 'ENCODING_CDR_ENCAPS', 'Encoding', 
'ExceptionDetailMessage', 'IOR', 'IORHelper', 'IORHolder', 
'MultipleComponentProfileHelper', 'MultipleComponentProfileHolder', 
'ProfileIdHelper', 'RMICustomMaxStreamFormat', 'ServiceContext', 
'ServiceContextHelper', 'ServiceContextHolder', 'ServiceContextListHelper', 
'ServiceContextListHolder', 'ServiceIdHelper', 'TAG_ALTERNATE_IIOP_ADDRESS', 
'TAG_CODE_SETS', 'TAG_INTERNET_IOP', 'TAG_JAVA_CODEBASE', 
'TAG_MULTIPLE_COMPONENTS', 'TAG_ORB_TYPE', 'TAG_POLICIES', 
'TAG_RMI_CUSTOM_MAX_STREAM_FORMAT', 'TaggedComponent', 'TaggedComponentHelper', 
'TaggedComponentHolder', 'TaggedProfile', 'TaggedProfileHelper', 
'TaggedProfileHolder', 'TransactionService'
+                       ),
+               147 => array (
+                       'UnknownEncoding', 'UnknownEncodingHelper'
+                       ),
+               148 => array (
+                       'FormatMismatch', 'FormatMismatchHelper', 
'InvalidTypeForEncoding', 'InvalidTypeForEncodingHelper'
+                       ),
+               149 => array (
+                       'SYNC_WITH_TRANSPORT', 'SyncScopeHelper'
+                       ),
+               150 => array (
+                       'ACTIVE', 'AdapterManagerIdHelper', 
'AdapterNameHelper', 'AdapterStateHelper', 'ClientRequestInfo', 
'ClientRequestInfoOperations', 'ClientRequestInterceptor', 
'ClientRequestInterceptorOperations', 'DISCARDING', 'HOLDING', 'INACTIVE', 
'IORInfo', 'IORInfoOperations', 'IORInterceptor', 'IORInterceptorOperations', 
'IORInterceptor_3_0', 'IORInterceptor_3_0Helper', 'IORInterceptor_3_0Holder', 
'IORInterceptor_3_0Operations', 'Interceptor', 'InterceptorOperations', 
'InvalidSlot', 'InvalidSlotHelper', 'LOCATION_FORWARD', 'NON_EXISTENT', 
'ORBIdHelper', 'ORBInitInfo', 'ORBInitInfoOperations', 'ORBInitializer', 
'ORBInitializerOperations', 'ObjectReferenceFactory', 
'ObjectReferenceFactoryHelper', 'ObjectReferenceFactoryHolder', 
'ObjectReferenceTemplate', 'ObjectReferenceTemplateHelper', 
'ObjectReferenceTemplateHolder', 'ObjectReferenceTemplateSeqHelper', 
'ObjectReferenceTemplateSeqHolder', 'PolicyFactory', 'PolicyFactoryOperations', 
'RequestInfo', 'RequestInfoOperations', 'SUCCESSFUL', 'SYSTEM_EXCEPTION',
+                       'ServerIdHelper', 'ServerRequestInfo', 
'ServerRequestInfoOperations', 'ServerRequestInterceptor', 
'ServerRequestInterceptorOperations', 'TRANSPORT_RETRY', 'USER_EXCEPTION'
+                       ),
+               151 => array (
+                       'DuplicateName', 'DuplicateNameHelper'
+                       ),
+               152 => array (
+                       'AdapterActivator', 'AdapterActivatorOperations', 
'ID_ASSIGNMENT_POLICY_ID', 'ID_UNIQUENESS_POLICY_ID', 
'IMPLICIT_ACTIVATION_POLICY_ID', 'IdAssignmentPolicy', 
'IdAssignmentPolicyOperations', 'IdAssignmentPolicyValue', 
'IdUniquenessPolicy', 'IdUniquenessPolicyOperations', 
'IdUniquenessPolicyValue', 'ImplicitActivationPolicy', 
'ImplicitActivationPolicyOperations', 'ImplicitActivationPolicyValue', 
'LIFESPAN_POLICY_ID', 'LifespanPolicy', 'LifespanPolicyOperations', 
'LifespanPolicyValue', 'POA', 'POAHelper', 'POAManager', 
'POAManagerOperations', 'POAOperations', 'REQUEST_PROCESSING_POLICY_ID', 
'RequestProcessingPolicy', 'RequestProcessingPolicyOperations', 
'RequestProcessingPolicyValue', 'SERVANT_RETENTION_POLICY_ID', 'Servant', 
'ServantActivator', 'ServantActivatorHelper', 'ServantActivatorOperations', 
'ServantActivatorPOA', 'ServantLocator', 'ServantLocatorHelper', 
'ServantLocatorOperations', 'ServantLocatorPOA', 'ServantManager', 
'ServantManagerOperations', 'ServantRetentionPolicy',
+                       'ServantRetentionPolicyOperations', 
'ServantRetentionPolicyValue', 'THREAD_POLICY_ID', 'ThreadPolicy', 
'ThreadPolicyOperations', 'ThreadPolicyValue', '_ServantActivatorStub', 
'_ServantLocatorStub'
+                       ),
+               153 => array (
+                       'NoContext', 'NoContextHelper'
+                       ),
+               154 => array (
+                       'AdapterInactive', 'AdapterInactiveHelper', 'State'
+                       ),
+               155 => array (
+                       'AdapterAlreadyExists', 'AdapterAlreadyExistsHelper', 
'AdapterNonExistent', 'AdapterNonExistentHelper', 'InvalidPolicy', 
'InvalidPolicyHelper', 'NoServant', 'NoServantHelper', 'ObjectAlreadyActive', 
'ObjectAlreadyActiveHelper', 'ObjectNotActive', 'ObjectNotActiveHelper', 
'ServantAlreadyActive', 'ServantAlreadyActiveHelper', 'ServantNotActive', 
'ServantNotActiveHelper', 'WrongAdapter', 'WrongAdapterHelper', 'WrongPolicy', 
'WrongPolicyHelper'
+                       ),
+               156 => array (
+                       'CookieHolder'
+                       ),
+               157 => array (
+                       'RunTime', 'RunTimeOperations'
+                       ),
+               158 => array (
+                       '_Remote_Stub'
+                       ),
+               159 => array (
+                       'Attr', 'CDATASection', 'CharacterData', 'Comment', 
'DOMConfiguration', 'DOMError', 'DOMErrorHandler', 'DOMException', 
'DOMImplementation', 'DOMImplementationList', 'DOMImplementationSource', 
'DOMStringList', 'DocumentFragment', 'DocumentType', 'EntityReference', 
'NameList', 'NamedNodeMap', 'Node', 'NodeList', 'Notation', 
'ProcessingInstruction', 'Text', 'TypeInfo', 'UserDataHandler'
+                       ),
+               160 => array (
+                       'DOMImplementationRegistry'
+                       ),
+               161 => array (
+                       'EventException', 'EventTarget', 'MutationEvent', 
'UIEvent'
+                       ),
+               162 => array (
+                       'DOMImplementationLS', 'LSException', 'LSInput', 
'LSLoadEvent', 'LSOutput', 'LSParser', 'LSParserFilter', 'LSProgressEvent', 
'LSResourceResolver', 'LSSerializer', 'LSSerializerFilter'
+                       ),
+               163 => array (
+                       'DTDHandler', 'DocumentHandler', 'EntityResolver', 
'ErrorHandler', 'HandlerBase', 'InputSource', 'Locator', 'SAXException', 
'SAXNotRecognizedException', 'SAXNotSupportedException', 'SAXParseException', 
'XMLFilter', 'XMLReader'
+                       ),
+               164 => array (
+                       'Attributes2', 'Attributes2Impl', 'DeclHandler', 
'DefaultHandler2', 'EntityResolver2', 'LexicalHandler', 'Locator2', 
'Locator2Impl'
+                       ),
+               165 => array (
+                       'AttributeListImpl', 'AttributesImpl', 
'DefaultHandler', 'LocatorImpl', 'NamespaceSupport', 'ParserAdapter', 
'ParserFactory', 'XMLFilterImpl', 'XMLReaderAdapter', 'XMLReaderFactory'
+                       ),
+               /* ambiguous class names (appear in more than one package) */
+               166 => array (
+                       'Annotation', 'AnySeqHelper', 'Array', 'Attribute', 
'AttributeList', 'AttributeSet', 'Attributes', 'AuthenticationException', 
'Binding', 'Bounds', 'Certificate', 'CertificateEncodingException', 
'CertificateException', 'CertificateExpiredException', 
'CertificateNotYetValidException', 'CertificateParsingException', 
'ConnectException', 'ContentHandler', 'Context', 'Control', 'Current', 
'CurrentHelper', 'CurrentOperations', 'DOMLocator', 'DataInputStream', 
'DataOutputStream', 'Date', 'DefaultLoaderRepository', 'Delegate', 'Document', 
'DocumentEvent', 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 
'DynStruct', 'DynUnion', 'DynValue', 'DynamicImplementation', 'Element', 
'Entity', 'Event', 'EventListener', 'FieldNameHelper', 'FileFilter', 
'Formatter', 'ForwardRequest', 'ForwardRequestHelper', 'InconsistentTypeCode', 
'InputStream', 'IntrospectionException', 'InvalidAttributeValueException', 
'InvalidKeyException', 'InvalidName', 'InvalidNameHelper', 'InvalidValue', 
'List', 'MouseEvent',
+                       'NameValuePair', 'NameValuePairHelper', 'ORB', 
'Object', 'ObjectIdHelper', 'ObjectImpl', 'OpenType', 'OutputStream', 
'ParagraphView', 'Parser', 'Permission', 'Policy', 'Principal', 'Proxy', 
'Reference', 'Statement', 'Timer', 'Timestamp', 'TypeMismatch', 
'TypeMismatchHelper', 'UNKNOWN', 'UnknownHostException', 'X509Certificate'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', 
'>', '?'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               /* all Java keywords are case sensitive */
+               1 => true, 2 => true, 3 => true, 4 => true,
+               5 => true, 6 => true, 7 => true, 8 => true, 9 => true,
+               10 => true, 11 => true, 12 => true, 13 => true, 14 => true,
+               15 => true, 16 => true, 17 => true, 18 => true, 19 => true,
+               20 => true, 21 => true, 22 => true, 23 => true, 24 => true,
+               25 => true, 26 => true, 27 => true, 28 => true, 29 => true,
+               30 => true, 31 => true, 32 => true, 33 => true, 34 => true,
+               35 => true, 36 => true, 37 => true, 38 => true, 39 => true,
+               40 => true, 41 => true, 42 => true, 43 => true, 44 => true,
+               45 => true, 46 => true, 47 => true, 48 => true, 49 => true,
+               50 => true, 51 => true, 52 => true, 53 => true, 54 => true,
+               55 => true, 56 => true, 57 => true, 58 => true, 59 => true,
+               60 => true, 61 => true, 62 => true, 63 => true, 64 => true,
+               65 => true, 66 => true, 67 => true, 68 => true, 69 => true,
+               70 => true, 71 => true, 72 => true, 73 => true, 74 => true,
+               75 => true, 76 => true, 77 => true, 78 => true, 79 => true,
+               80 => true, 81 => true, 82 => true, 83 => true, 84 => true,
+               85 => true, 86 => true, 87 => true, 88 => true, 89 => true,
+               90 => true, 91 => true, 92 => true, 93 => true, 94 => true,
+               95 => true, 96 => true, 97 => true, 98 => true, 99 => true,
+               100 => true, 101 => true, 102 => true, 103 => true, 104 => true,
+               105 => true, 106 => true, 107 => true, 108 => true, 109 => true,
+               110 => true, 111 => true, 112 => true, 113 => true, 114 => true,
+               115 => true, 116 => true, 117 => true, 118 => true, 119 => true,
+               120 => true, 121 => true, 122 => true, 123 => true, 124 => true,
+               125 => true, 126 => true, 127 => true, 128 => true, 129 => true,
+               130 => true, 131 => true, 132 => true, 133 => true, 134 => true,
+               135 => true, 136 => true, 137 => true, 138 => true, 139 => true,
+               140 => true, 141 => true, 142 => true, 143 => true, 144 => true,
+               145 => true, 146 => true, 147 => true, 148 => true, 149 => true,
+               150 => true, 151 => true, 152 => true, 153 => true, 154 => true,
+               155 => true, 156 => true, 157 => true, 158 => true, 159 => true,
+               160 => true, 161 => true, 162 => true, 163 => true, 164 => true,
+               165 => true, 166 => true
+       ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #993333;',
+                       4 => 'color: #b13366;',
+                       5 => 'color: #aaaadd; font-weight: bold;',
+                       6 => 'color: #aaaadd; font-weight: bold;',
+                       7 => 'color: #aaaadd; font-weight: bold;',
+                       8 => 'color: #aaaadd; font-weight: bold;',
+                       9 => 'color: #aaaadd; font-weight: bold;',
+                       10 => 'color: #aaaadd; font-weight: bold;',
+                       11 => 'color: #aaaadd; font-weight: bold;',
+                       12 => 'color: #aaaadd; font-weight: bold;',
+                       13 => 'color: #aaaadd; font-weight: bold;',
+                       14 => 'color: #aaaadd; font-weight: bold;',
+                       15 => 'color: #aaaadd; font-weight: bold;',
+                       16 => 'color: #aaaadd; font-weight: bold;',
+                       17 => 'color: #aaaadd; font-weight: bold;',
+                       18 => 'color: #aaaadd; font-weight: bold;',
+                       19 => 'color: #aaaadd; font-weight: bold;',
+                       20 => 'color: #aaaadd; font-weight: bold;',
+                       21 => 'color: #aaaadd; font-weight: bold;',
+                       22 => 'color: #aaaadd; font-weight: bold;',
+                       23 => 'color: #aaaadd; font-weight: bold;',
+                       24 => 'color: #aaaadd; font-weight: bold;',
+                       25 => 'color: #aaaadd; font-weight: bold;',
+                       26 => 'color: #aaaadd; font-weight: bold;',
+                       27 => 'color: #aaaadd; font-weight: bold;',
+                       28 => 'color: #aaaadd; font-weight: bold;',
+                       29 => 'color: #aaaadd; font-weight: bold;',
+                       30 => 'color: #aaaadd; font-weight: bold;',
+                       31 => 'color: #aaaadd; font-weight: bold;',
+                       32 => 'color: #aaaadd; font-weight: bold;',
+                       33 => 'color: #aaaadd; font-weight: bold;',
+                       34 => 'color: #aaaadd; font-weight: bold;',
+                       35 => 'color: #aaaadd; font-weight: bold;',
+                       36 => 'color: #aaaadd; font-weight: bold;',
+                       37 => 'color: #aaaadd; font-weight: bold;',
+                       38 => 'color: #aaaadd; font-weight: bold;',
+                       39 => 'color: #aaaadd; font-weight: bold;',
+                       40 => 'color: #aaaadd; font-weight: bold;',
+                       41 => 'color: #aaaadd; font-weight: bold;',
+                       42 => 'color: #aaaadd; font-weight: bold;',
+                       43 => 'color: #aaaadd; font-weight: bold;',
+                       44 => 'color: #aaaadd; font-weight: bold;',
+                       45 => 'color: #aaaadd; font-weight: bold;',
+                       46 => 'color: #aaaadd; font-weight: bold;',
+                       47 => 'color: #aaaadd; font-weight: bold;',
+                       48 => 'color: #aaaadd; font-weight: bold;',
+                       49 => 'color: #aaaadd; font-weight: bold;',
+                       50 => 'color: #aaaadd; font-weight: bold;',
+                       51 => 'color: #aaaadd; font-weight: bold;',
+                       52 => 'color: #aaaadd; font-weight: bold;',
+                       53 => 'color: #aaaadd; font-weight: bold;',
+                       54 => 'color: #aaaadd; font-weight: bold;',
+                       55 => 'color: #aaaadd; font-weight: bold;',
+                       56 => 'color: #aaaadd; font-weight: bold;',
+                       57 => 'color: #aaaadd; font-weight: bold;',
+                       58 => 'color: #aaaadd; font-weight: bold;',
+                       59 => 'color: #aaaadd; font-weight: bold;',
+                       60 => 'color: #aaaadd; font-weight: bold;',
+                       61 => 'color: #aaaadd; font-weight: bold;',
+                       62 => 'color: #aaaadd; font-weight: bold;',
+                       63 => 'color: #aaaadd; font-weight: bold;',
+                       64 => 'color: #aaaadd; font-weight: bold;',
+                       65 => 'color: #aaaadd; font-weight: bold;',
+                       66 => 'color: #aaaadd; font-weight: bold;',
+                       67 => 'color: #aaaadd; font-weight: bold;',
+                       68 => 'color: #aaaadd; font-weight: bold;',
+                       69 => 'color: #aaaadd; font-weight: bold;',
+                       70 => 'color: #aaaadd; font-weight: bold;',
+                       71 => 'color: #aaaadd; font-weight: bold;',
+                       72 => 'color: #aaaadd; font-weight: bold;',
+                       73 => 'color: #aaaadd; font-weight: bold;',
+                       74 => 'color: #aaaadd; font-weight: bold;',
+                       75 => 'color: #aaaadd; font-weight: bold;',
+                       76 => 'color: #aaaadd; font-weight: bold;',
+                       77 => 'color: #aaaadd; font-weight: bold;',
+                       78 => 'color: #aaaadd; font-weight: bold;',
+                       79 => 'color: #aaaadd; font-weight: bold;',
+                       80 => 'color: #aaaadd; font-weight: bold;',
+                       81 => 'color: #aaaadd; font-weight: bold;',
+                       82 => 'color: #aaaadd; font-weight: bold;',
+                       83 => 'color: #aaaadd; font-weight: bold;',
+                       84 => 'color: #aaaadd; font-weight: bold;',
+                       85 => 'color: #aaaadd; font-weight: bold;',
+                       86 => 'color: #aaaadd; font-weight: bold;',
+                       87 => 'color: #aaaadd; font-weight: bold;',
+                       88 => 'color: #aaaadd; font-weight: bold;',
+                       89 => 'color: #aaaadd; font-weight: bold;',
+                       90 => 'color: #aaaadd; font-weight: bold;',
+                       91 => 'color: #aaaadd; font-weight: bold;',
+                       92 => 'color: #aaaadd; font-weight: bold;',
+                       93 => 'color: #aaaadd; font-weight: bold;',
+                       94 => 'color: #aaaadd; font-weight: bold;',
+                       95 => 'color: #aaaadd; font-weight: bold;',
+                       96 => 'color: #aaaadd; font-weight: bold;',
+                       97 => 'color: #aaaadd; font-weight: bold;',
+                       98 => 'color: #aaaadd; font-weight: bold;',
+                       99 => 'color: #aaaadd; font-weight: bold;',
+                       100 => 'color: #aaaadd; font-weight: bold;',
+                       101 => 'color: #aaaadd; font-weight: bold;',
+                       102 => 'color: #aaaadd; font-weight: bold;',
+                       103 => 'color: #aaaadd; font-weight: bold;',
+                       104 => 'color: #aaaadd; font-weight: bold;',
+                       105 => 'color: #aaaadd; font-weight: bold;',
+                       106 => 'color: #aaaadd; font-weight: bold;',
+                       107 => 'color: #aaaadd; font-weight: bold;',
+                       108 => 'color: #aaaadd; font-weight: bold;',
+                       109 => 'color: #aaaadd; font-weight: bold;',
+                       110 => 'color: #aaaadd; font-weight: bold;',
+                       111 => 'color: #aaaadd; font-weight: bold;',
+                       112 => 'color: #aaaadd; font-weight: bold;',
+                       113 => 'color: #aaaadd; font-weight: bold;',
+                       114 => 'color: #aaaadd; font-weight: bold;',
+                       115 => 'color: #aaaadd; font-weight: bold;',
+                       116 => 'color: #aaaadd; font-weight: bold;',
+                       117 => 'color: #aaaadd; font-weight: bold;',
+                       118 => 'color: #aaaadd; font-weight: bold;',
+                       119 => 'color: #aaaadd; font-weight: bold;',
+                       120 => 'color: #aaaadd; font-weight: bold;',
+                       121 => 'color: #aaaadd; font-weight: bold;',
+                       122 => 'color: #aaaadd; font-weight: bold;',
+                       123 => 'color: #aaaadd; font-weight: bold;',
+                       124 => 'color: #aaaadd; font-weight: bold;',
+                       125 => 'color: #aaaadd; font-weight: bold;',
+                       126 => 'color: #aaaadd; font-weight: bold;',
+                       127 => 'color: #aaaadd; font-weight: bold;',
+                       128 => 'color: #aaaadd; font-weight: bold;',
+                       129 => 'color: #aaaadd; font-weight: bold;',
+                       130 => 'color: #aaaadd; font-weight: bold;',
+                       131 => 'color: #aaaadd; font-weight: bold;',
+                       132 => 'color: #aaaadd; font-weight: bold;',
+                       133 => 'color: #aaaadd; font-weight: bold;',
+                       134 => 'color: #aaaadd; font-weight: bold;',
+                       135 => 'color: #aaaadd; font-weight: bold;',
+                       136 => 'color: #aaaadd; font-weight: bold;',
+                       137 => 'color: #aaaadd; font-weight: bold;',
+                       138 => 'color: #aaaadd; font-weight: bold;',
+                       139 => 'color: #aaaadd; font-weight: bold;',
+                       140 => 'color: #aaaadd; font-weight: bold;',
+                       141 => 'color: #aaaadd; font-weight: bold;',
+                       142 => 'color: #aaaadd; font-weight: bold;',
+                       143 => 'color: #aaaadd; font-weight: bold;',
+                       144 => 'color: #aaaadd; font-weight: bold;',
+                       145 => 'color: #aaaadd; font-weight: bold;',
+                       146 => 'color: #aaaadd; font-weight: bold;',
+                       147 => 'color: #aaaadd; font-weight: bold;',
+                       148 => 'color: #aaaadd; font-weight: bold;',
+                       149 => 'color: #aaaadd; font-weight: bold;',
+                       150 => 'color: #aaaadd; font-weight: bold;',
+                       151 => 'color: #aaaadd; font-weight: bold;',
+                       152 => 'color: #aaaadd; font-weight: bold;',
+                       153 => 'color: #aaaadd; font-weight: bold;',
+                       154 => 'color: #aaaadd; font-weight: bold;',
+                       155 => 'color: #aaaadd; font-weight: bold;',
+                       156 => 'color: #aaaadd; font-weight: bold;',
+                       157 => 'color: #aaaadd; font-weight: bold;',
+                       158 => 'color: #aaaadd; font-weight: bold;',
+                       159 => 'color: #aaaadd; font-weight: bold;',
+                       160 => 'color: #aaaadd; font-weight: bold;',
+                       161 => 'color: #aaaadd; font-weight: bold;',
+                       162 => 'color: #aaaadd; font-weight: bold;',
+                       163 => 'color: #aaaadd; font-weight: bold;',
+                       164 => 'color: #aaaadd; font-weight: bold;',
+                       165 => 'color: #aaaadd; font-weight: bold;',
+                       166 => 'color: #aaaadd; font-weight: bold;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => '',
+               5 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/applet/{FNAME}.html',
+               6 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/{FNAME}.html',
+               7 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/color/{FNAME}.html',
+               8 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/datatransfer/{FNAME}.html',
+               9 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/dnd/{FNAME}.html',
+               10 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/{FNAME}.html',
+               11 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/font/{FNAME}.html',
+               12 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/{FNAME}.html',
+               13 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/{FNAME}.html',
+               14 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/spi/{FNAME}.html',
+               15 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/{FNAME}.html',
+               16 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/renderable/{FNAME}.html',
+               17 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/print/{FNAME}.html',
+               18 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/{FNAME}.html',
+               19 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/beancontext/{FNAME}.html',
+               20 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/io/{FNAME}.html',
+               21 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/{FNAME}.html',
+               22 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/{FNAME}.html',
+               23 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/{FNAME}.html',
+               24 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/{FNAME}.html',
+               25 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ref/{FNAME}.html',
+               26 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/{FNAME}.html',
+               27 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/math/{FNAME}.html',
+               28 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/net/{FNAME}.html',
+               29 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/{FNAME}.html',
+               30 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/{FNAME}.html',
+               31 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/spi/{FNAME}.html',
+               32 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/{FNAME}.html',
+               33 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/spi/{FNAME}.html',
+               34 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/{FNAME}.html',
+               35 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/activation/{FNAME}.html',
+               36 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/dgc/{FNAME}.html',
+               37 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/registry/{FNAME}.html',
+               38 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/{FNAME}.html',
+               39 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/security/{FNAME}.html',
+               40 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/security/acl/{FNAME}.html',
+               41 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/security/cert/{FNAME}.html',
+               42 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/security/interfaces/{FNAME}.html',
+               43 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/security/spec/{FNAME}.html',
+               44 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/sql/{FNAME}.html',
+               45 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/text/{FNAME}.html',
+               46 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/{FNAME}.html',
+               47 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/{FNAME}.html',
+               48 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/{FNAME}.html',
+               49 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/{FNAME}.html',
+               50 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/jar/{FNAME}.html',
+               51 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/{FNAME}.html',
+               52 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/{FNAME}.html',
+               53 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/{FNAME}.html',
+               54 => 
'http://java.sun.com/j2se/1.5.0/docs/api/java/util/zip/{FNAME}.html',
+               55 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/accessibility/{FNAME}.html',
+               56 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/activity/{FNAME}.html',
+               57 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/{FNAME}.html',
+               58 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/interfaces/{FNAME}.html',
+               59 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/spec/{FNAME}.html',
+               60 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/{FNAME}.html',
+               61 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/event/{FNAME}.html',
+               62 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/metadata/{FNAME}.html',
+               63 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/bmp/{FNAME}.html',
+               64 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html',
+               65 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/spi/{FNAME}.html',
+               66 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/stream/{FNAME}.html',
+               67 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/{FNAME}.html',
+               68 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/loading/{FNAME}.html',
+               69 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/modelmbean/{FNAME}.html',
+               70 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/monitor/{FNAME}.html',
+               71 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/{FNAME}.html',
+               72 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/relation/{FNAME}.html',
+               73 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/{FNAME}.html',
+               74 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/rmi/{FNAME}.html',
+               75 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/timer/{FNAME}.html',
+               76 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/{FNAME}.html',
+               77 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/directory/{FNAME}.html',
+               78 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/event/{FNAME}.html',
+               79 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/ldap/{FNAME}.html',
+               80 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/spi/{FNAME}.html',
+               81 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/{FNAME}.html',
+               82 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/ssl/{FNAME}.html',
+               83 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/{FNAME}.html',
+               84 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/{FNAME}.html',
+               85 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/standard/{FNAME}.html',
+               86 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/event/{FNAME}.html',
+               87 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/{FNAME}.html',
+               88 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/CORBA/{FNAME}.html',
+               89 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/ssl/{FNAME}.html',
+               90 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/{FNAME}.html',
+               91 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/callback/{FNAME}.html',
+               92 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/kerberos/{FNAME}.html',
+               93 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/login/{FNAME}.html',
+               94 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/spi/{FNAME}.html',
+               95 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/x500/{FNAME}.html',
+               96 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/sasl/{FNAME}.html',
+               97 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/{FNAME}.html',
+               98 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/spi/{FNAME}.html',
+               99 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/{FNAME}.html',
+               100 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/spi/{FNAME}.html',
+               101 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/{FNAME}.html',
+               102 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/{FNAME}.html',
+               103 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/serial/{FNAME}.html',
+               104 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/spi/{FNAME}.html',
+               105 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/{FNAME}.html',
+               106 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/border/{FNAME}.html',
+               107 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/colorchooser/{FNAME}.html',
+               108 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/{FNAME}.html',
+               109 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/filechooser/{FNAME}.html',
+               110 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/{FNAME}.html',
+               111 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/basic/{FNAME}.html',
+               112 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/metal/{FNAME}.html',
+               113 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/multi/{FNAME}.html',
+               114 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/synth/{FNAME}.html',
+               115 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/{FNAME}.html',
+               116 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/{FNAME}.html',
+               117 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/{FNAME}.html',
+               118 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/parser/{FNAME}.html',
+               119 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/rtf/{FNAME}.html',
+               120 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/tree/{FNAME}.html',
+               121 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/undo/{FNAME}.html',
+               122 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/{FNAME}.html',
+               123 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/xa/{FNAME}.html',
+               124 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/{FNAME}.html',
+               125 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/datatype/{FNAME}.html',
+               126 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/namespace/{FNAME}.html',
+               127 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/{FNAME}.html',
+               128 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/{FNAME}.html',
+               129 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/dom/{FNAME}.html',
+               130 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/sax/{FNAME}.html',
+               131 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/stream/{FNAME}.html',
+               132 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/validation/{FNAME}.html',
+               133 => 
'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/{FNAME}.html',
+               134 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/ietf/jgss/{FNAME}.html',
+               135 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/{FNAME}.html',
+               136 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html',
+               137 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html',
+               138 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/portable/{FNAME}.html',
+               139 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/{FNAME}.html',
+               140 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html',
+               141 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html',
+               142 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Dynamic/{FNAME}.html',
+               143 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/{FNAME}.html',
+               144 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html',
+               145 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html',
+               146 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/{FNAME}.html',
+               147 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html',
+               148 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html',
+               149 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Messaging/{FNAME}.html',
+               150 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/{FNAME}.html',
+               151 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html',
+               152 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/{FNAME}.html',
+               153 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html',
+               154 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html',
+               155 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html',
+               156 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html',
+               157 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/SendingContext/{FNAME}.html',
+               158 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/stub/java/rmi/{FNAME}.html',
+               159 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/{FNAME}.html',
+               160 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/bootstrap/{FNAME}.html',
+               161 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/events/{FNAME}.html',
+               162 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/{FNAME}.html',
+               163 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/{FNAME}.html',
+               164 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/ext/{FNAME}.html',
+               165 => 
'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/helpers/{FNAME}.html',
+               /* ambiguous class names (appear in more than one package) */
+               166 => 
'http://www.google.com/search?sitesearch=java.sun.com&amp;q=allinurl%3Aj2se%2F1+5+0%2Fdocs%2Fapi+{FNAME}'
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               /* Java does not use '::' */
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/javascript.php
===================================================================
RCS file: geshi/javascript.php
diff -N geshi/javascript.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/javascript.php        25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,146 @@
+<?php
+/*************************************************************************************
+ * javascript.php
+ * --------------
+ * Author: Ben Keen (address@hidden)
+ * Copyright: (c) 2004 Ben Keen (address@hidden), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * JavaScript language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+  'LANG_NAME' => 'Javascript',
+  'COMMENT_SINGLE' => array(1 => '//'),
+  'COMMENT_MULTI' => array('/*' => '*/'),
+  'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+  'QUOTEMARKS' => array("'", '"'),
+  'ESCAPE_CHAR' => '\\',
+  'KEYWORDS' => array(
+    1 => array(
+      'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
+      'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
+      'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 
'void',
+      'while', 'write', 'with'
+      ),
+    2 => array(
+      'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
+      'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
+      'protected', 'public', 'super', 'true', 'use', 'var'
+      ),
+    3 => array(
+
+      // common functions for Window object
+      'alert', 'back', 'blur', 'close', 'confirm', 'focus', 'forward', 'home',
+      'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
+      'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'status',
+      'stop',
+      )
+    ),
+  'SYMBOLS' => array(
+    '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+    ),
+  'CASE_SENSITIVE' => array(
+    GESHI_COMMENTS => false,
+    1 => false,
+    2 => false,
+    3 => false
+    ),
+  'STYLES' => array(
+    'KEYWORDS' => array(
+      1 => 'color: #000066; font-weight: bold;',
+      2 => 'color: #003366; font-weight: bold;',
+      3 => 'color: #000066;'
+      ),
+    'COMMENTS' => array(
+      1 => 'color: #009900; font-style: italic;',
+      'MULTI' => 'color: #009900; font-style: italic;'
+      ),
+    'ESCAPE_CHAR' => array(
+      0 => 'color: #000099; font-weight: bold;'
+      ),
+    'BRACKETS' => array(
+      0 => 'color: #66cc66;'
+      ),
+    'STRINGS' => array(
+      0 => 'color: #3366CC;'
+      ),
+    'NUMBERS' => array(
+      0 => 'color: #CC0000;'
+      ),
+    'METHODS' => array(
+      1 => 'color: #006600;'
+      ),
+    'SYMBOLS' => array(
+      0 => 'color: #66cc66;'
+      ),
+    'REGEXPS' => array(
+      0 => 'color: #0066FF;'
+      ),
+    'SCRIPT' => array(
+      0 => '',
+      1 => '',
+      2 => '',
+      3 => ''
+      )
+    ),
+  'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => ''
+       ),
+  'OOLANG' => true,
+  'OBJECT_SPLITTERS' => array(
+       1 => '.'
+       ),
+  'REGEXPS' => array(
+    0 => "/.*/([igm]*)?"         // matches js reg exps
+    ),
+  'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+  'SCRIPT_DELIMITERS' => array(
+    0 => array(
+      '<script type="text/javascript">' => '</script>'
+      ),
+    1 => array(
+      '<script language="javascript">' => '</script>'
+      )
+    ),
+  'HIGHLIGHT_STRICT_BLOCK' => array(
+    0 => true,
+    1 => true
+  )
+);
+
+?>
\ No newline at end of file

Index: geshi/latex.php
===================================================================
RCS file: geshi/latex.php
diff -N geshi/latex.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/latex.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,190 @@
+<?php
+/*************************************************************************************
+ * latex.php
+ * -----
+ * Original Author: efi
+ * modified by Matthias Pospiech (address@hidden)
+ 
*************************************************************************************
+ *
+ *   This file is not yet part of GeSHi. (and is not compatible to the 1.1+ 
branch)
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+if (is_a($this, 'GeSHi')) {
+    $this->set_symbols_highlighting(false);
+    $this->set_numbers_highlighting(false);
+}
+
+$language_data = array (
+    'LANG_NAME' => 'LaTeX',
+    'COMMENT_SINGLE' => array(1 => '%'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array(),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        ),
+    'SYMBOLS' => array(
+        '.', ',','\\',"~", "{", "}", "[", "]", "$"
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => true,
+        1 => false,
+        2 => false,
+        3 => false,
+        4 => false,
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            ),
+        'BRACKETS' => array(
+            ),
+        'STRINGS' => array(
+            ),
+        'NUMBERS' => array(
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            ),
+        'REGEXPS' => array(
+            1 => 'color: #00A000; font-weight: bold;',  // Math inner
+            2 => 'color: #800000; font-weight: normal;', // \keyword #202020
+            3 => 'color: #2222D0; font-weight: normal;', // {...}
+            4 => 'color: #2222D0; font-weight: normal;', // [Option]
+            5 => 'color: #00A000; font-weight: normal;', // Mathe #CCF020
+            6 => 'color: #F00000; font-weight: normal;', // Structure \begin
+            7 => 'color: #F00000; font-weight: normal;', // Structure \end
+            8 => 'color: #F00000; font-weight: normal;', // Structure: Labels
+            //9 => 'color: #F00000; font-weight: normal;',  // Structure
+            10 => 'color: #0000D0; font-weight: bold;',  // Environment
+            11 => 'color: #0000D0; font-weight: bold;',  // Environment
+        ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        // Math inner
+        1 => array(
+            GESHI_SEARCH => 
"(\\\\begin\\{)(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign
 
)(\\})(.*)(\\\\end\\{)(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign)(\\})",
+            GESHI_REPLACE => '\\4',
+            GESHI_MODIFIERS => 's',
+            GESHI_BEFORE => '\1\2\3',
+            GESHI_AFTER => '\5\6\7'
+            ),
+        //  \keywords
+        2 => array(
+            GESHI_SEARCH => "(\\\\)([a-zA-Z]+)",
+            GESHI_REPLACE => '\1\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+        // {parameters}
+        3 => array(
+            GESHI_SEARCH => "(\\{)(.*)(\\})",
+            GESHI_REPLACE => '\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '\1',
+            GESHI_AFTER => '\3'
+            ),
+        // [Option]
+        4 => array(
+            GESHI_SEARCH => "(\[)(.+)(\])",
+            GESHI_REPLACE => '\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '\1',
+            GESHI_AFTER => '\3'
+            ),
+        // Mathe  mit $ ... $
+        5 => array(
+            GESHI_SEARCH => "(\\$)(.+)(\\$)",
+            GESHI_REPLACE => '\1\2\3',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+        // Structure begin
+        6 => array(
+            GESHI_SEARCH => "(\\\\begin)(?=[^a-zA-Z])",
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => '\\2'
+            ),
+        // Structure end
+        7 => array(
+            GESHI_SEARCH => "(\\\\end)(?=[^a-zA-Z])",
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => '\\2'
+            ),
+        //Structure: Label
+        8 => array(
+            GESHI_SEARCH => "(\\\\)(label|pageref|ref|cite)(?=[^a-zA-Z])",
+            GESHI_REPLACE => '\\1\\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => '\\3'
+            ),
+// Structure: sections
+/*9 => array(
+            GESHI_SEARCH => 
"(\\\\)(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)(?=[^a-zA-Z])",
+            GESHI_REPLACE => '\1\\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => '\\3'
+            ),*/
+// environment begin
+10 => array(
+            GESHI_SEARCH => "(\\\\begin)(\\{)(.*)(\\})",
+            GESHI_REPLACE => '\\3',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+// environment end
+11 => array(
+            GESHI_SEARCH => "(\\\\end)(\\{)(.*)(\\})",
+            GESHI_REPLACE => '\\3',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+
+// ---------------------------------------------
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>
+

Index: geshi/lisp.php
===================================================================
RCS file: geshi/lisp.php
diff -N geshi/lisp.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/lisp.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,135 @@
+<?php
+/*************************************************************************************
+ * lisp.php
+ * --------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/highlighter
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Generic Lisp language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/9  (1.0.2)
+ *  -  Added support for :keywords and ::access (Denis Mashkevich)
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Lisp',
+       'COMMENT_SINGLE' => array(1 => ';'),
+       'COMMENT_MULTI' => array(';|' => '|;'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                 'not','defun','princ',
+                 'eval','apply','funcall','quote','identity','function',
+                 'complement','backquote','lambda','set','setq','setf',
+                 'defun','defmacro','gensym','make','symbol','intern',
+                 'symbol','name','symbol','value','symbol','plist','get',
+                 'getf','putprop','remprop','hash','make','array','aref',
+                 
'car','cdr','caar','cadr','cdar','cddr','caaar','caadr','cadar',
+                 'caddr','cdaar','cdadr','cddar','cdddr','caaaar','caaadr',
+                 'caadar','caaddr','cadaar','cadadr','caddar','cadddr',
+                 'cdaaar','cdaadr','cdadar','cdaddr','cddaar','cddadr',
+                 
'cdddar','cddddr','cons','list','append','reverse','last','nth',
+                 'nthcdr','member','assoc','subst','sublis','nsubst',
+                 'nsublis','remove','length','list','length',
+                 'mapc','mapcar','mapl','maplist','mapcan','mapcon','rplaca',
+                 'rplacd','nconc','delete','atom','symbolp','numberp',
+                 'boundp','null','listp','consp','minusp','zerop','plusp',
+                 'evenp','oddp','eq','eql','equal','cond','case','and','or',
+                 'let','l','if','prog','prog1','prog2','progn','go','return',
+                 
'do','dolist','dotimes','catch','throw','error','cerror','break',
+                 'continue','errset','baktrace','evalhook','truncate','float',
+                 'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt',
+                 
'random','logand','logior','logxor','lognot','bignums','logeqv',
+                 'lognand','lognor','logorc2','logtest','logbitp','logcount',
+                 'integer','length','nil'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', 
'/','+','-','*','=','<','>',';','|'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #555;',
+            1 => 'color: #555;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+            '::', ':'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/lua.php
===================================================================
RCS file: geshi/lua.php
diff -N geshi/lua.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/lua.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,137 @@
+<?php
+/*************************************************************************************
+ * lua.php
+ * -------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * LUA language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/26 (1.0.2)
+ *  -  Added support for objects and methods
+ *  -  Removed unusable keywords
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Lua',
+       'COMMENT_SINGLE' => array(1 => "--"),
+       'COMMENT_MULTI' => array('--[[' => ']]'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       
'and','break','do','else','elseif','end','false','for','function','if',
+                       
'in','local','nil','not','or','repeat','return','then','true','until','while',
+                       
'_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring',
+                       'print','tonumber','tostring','type','unpack',
+                       '_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT',
+                       
'_STDERR','_STDIN','_STDOUT','call','dostring','foreach','foreachi','getn','globals','newtype',
+                       'rawget','rawset','require','sort','tinsert','tremove',
+                       
'abs','acos','asin','atan','atan2','ceil','cos','deg','exp',
+                       
'floor','format','frexp','gsub','ldexp','log','log10','max','min','mod','rad','random','randomseed',
+                       
'sin','sqrt','strbyte','strchar','strfind','strlen','strlower','strrep','strsub','strupper','tan',
+                       'openfile','closefile','readfrom','writeto','appendto',
+                       
'remove','rename','flush','seek','tmpfile','tmpname','read','write',
+                       
'clock','date','difftime','execute','exit','getenv','setlocale','time',
+                       
'_G','getfenv','getmetatable','ipairs','loadlib','next','pairs','pcall',
+                       
'rawegal','rawget','rawset','require','setfenv','setmetatable','xpcall',
+            
'string.byte','string.char','string.dump','string.find','string.len',
+            
'string.lower','string.rep','string.sub','string.upper','string.format','string.gfind','string.gsub',
+            
'table.concat','table.foreach','table.foreachi','table.getn','table.sort','table.insert','table.remove','table.setn',
+            
'math.abs','math.acos','math.asin','math.atan','math.atan2','math.ceil','math.cos','math.deg','math.exp',
+            
'math.floor','math.frexp','math.ldexp','math.log','math.log10','math.max','math.min','math.mod',
+            
'math.pi','math.rad','math.random','math.randomseed','math.sin','math.sqrt','math.tan',
+            'coroutine.create','coroutine.resume','coroutine.status',
+            'coroutine.wrap','coroutine.yield',
+            
'io.close','io.flush','io.input','io.lines','io.open','io.output','io.read','io.tmpfile','io.type','io.write',
+            'io.stdin','io.stdout','io.stderr',
+            
'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename',
+            'os.setlocale','os.time','os.tmpname',
+                       'string','table','math','coroutine','io','os','debug'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', 
'>', '=', ';'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+      0 => 'color: #b1b100;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
+

Index: geshi/matlab.php
===================================================================
RCS file: geshi/matlab.php
diff -N geshi/matlab.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/matlab.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,869 @@
+<?php
+/*************************************************************************************
+ * matlab.php
+ * -----------
+ * Author: Florian Knorn (address@hidden)
+ * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/02/09
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Matlab M-file language file for GeSHi. 
+ *
+ * CHANGES
+ * -------
+ * 2006-03-25
+ *   - support for the transpose operator
+ *   - many keywords added
+ *   - links to the matlab documentation at mathworks
+ *      by: Olivier Verdier (address@hidden)
+ * 2005/05/07 (1.0.0)
+ *   -  First Release
+ *
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Matlab M',
+       'COMMENT_SINGLE' => array(1 => '%'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array(),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       'break', 'case', 'catch', 'continue', 'elseif', 'else', 
'end', 'for', 
+                       'function', 'global', 'if', 'otherwise', 'persistent', 
'return', 
+                       'switch', 'try', 'while','...'
+                       ),
+        2 => array(
+                            'all',
+                                                       'any',
+                                                       'exist',
+                                                       'find',
+                                                       'is',
+                                                       'isa',
+                                                       'logical',
+                                                       'mislocked',
+                                                       
+                                                       'builtin',
+                                                       'eval',
+                                                       'evalc',
+                                                       'evalin',
+                                                       'feval',
+                                                       'function',
+                                                       'global',
+                                                       'nargchk',
+                                                       'persistent',
+                                                       'script',
+                                                       'break',
+                                                       'case',
+                                                       'catch',
+                                                       'else',
+                                                       'elseif',
+                                                       'end',
+                                                       'error',
+                                                       'for',
+                                                       'if',
+                                                       'otherwise',
+                                                       'return',
+                                                       'switch',
+                                                       'try',
+                                                       'warning',
+                                                       'while',
+                                                       'input',
+                                                       'keyboard',
+                                                       'menu',
+                                                       'pause',
+                                                       'class',
+                                                       'double',
+                                                       'inferiorto',
+                                                       'inline',
+                                                       'int8',
+                                                       'int16',
+                                                       'int32',
+                                                       'isa',
+                                                       'loadobj',
+                                                       'saveobj',
+                                                       'single',
+                                                       'superiorto',
+                                                       'uint8',
+                                                       'int16',
+                                                       'uint32',
+                                                       'dbclear',
+                                                       'dbcont',
+                                                       'dbdown',
+                                                       'dbmex',
+                                                       'dbquit',
+                                                       'dbstack',
+                                                       'dbstatus',
+                                                       'dbstep',
+                                                       'dbstop',
+                                                       'dbtype',
+                                                       'dbup',
+                                                               
+                                                       'blkdiag',
+                                                       'eye',
+                                                       'linspace',
+                                                       'logspace',
+                                                       'ones',
+                                                       'rand',
+                                                       'randn',
+                                                       'zeros',
+                                                       'ans',
+                                                       'computer',
+                                                       'eps',
+                                                       'flops',
+                                                       'i',
+                                                       'Inf',
+                                                       'inputname',
+                                                       'j',
+                                                       'NaN',
+                                                       'nargin',
+                                                       'nargout',
+                                                       'pi',
+                                                       'realmax',
+                                                       'realmin',
+                                                       'varargin',
+                                                       'varargout',
+                                                       'calendar',
+                                                       'clock',
+                                                       'cputime',
+                                                       'date',
+                                                       'datenum',
+                                                       'datestr',
+                                                       'datevec',
+                                                       'eomday',
+                                                       'etime',
+                                                       'now',
+                                                       'tic',
+                                                       'toc',
+                                                       'weekday',
+                                                       'cat',
+                                                       'diag',
+                                                       'fliplr',
+                                                       'flipud',
+                                                       'repmat',
+                                                       'reshape',
+                                                       'rot90',
+                                                       'tril',
+                                                       'triu',
+                                                       'compan',
+                                                       'gallery',
+                                                       'hadamard',
+                                                       'hankel',
+                                                       'hilb',
+                                                       'invhilb',
+                                                       'magic',
+                                                       'pascal',
+                                                       'toeplitz',
+                                                       'wilkinson',
+                                                       'abs',
+                                                       'acos',
+                                                       'acosh',
+                                                       'acot',
+                                                       'acoth',
+                                                       'acsc',
+                                                       'acsch',
+                                                       'angle',
+                                                       'asec',
+                                                       'asech',
+                                                       'asin',
+                                                       'asinh',
+                                                       'atan',
+                                                       'atanh',
+                                                       'atan2',
+                                                       'ceil',
+                                                       'complex',
+                                                       'conj',
+                                                       'cos',
+                                                       'cosh',
+                                                       'cot',
+                                                       'coth',
+                                                       'csc',
+                                                       'csch',
+                                                       'exp',
+                                                       'fix',
+                                                       'floor',
+                                                       'gcd',
+                                                       'imag',
+                                                       'lcm',
+                                                       'log',
+                                                       'log2',
+                                                       'log10',
+                                                       'mod',
+                                                       'nchoosek',
+                                                       'real',
+                                                       'rem',
+                                                       'round',
+                                                       'sec',
+                                                       'sech',
+                                                       'sign',
+                                                       'sin',
+                                                       'sinh',
+                                                       'sqrt',
+                                                       'tan',
+                                                       'tanh',
+                                                       'airy',
+                                                       'besselh',
+                                                       'besseli',
+                                                       'besselk',
+                                                       'besselj',
+                                                       'Bessely',
+                                                       'beta',
+                                                       'betainc',
+                                                       'betaln',
+                                                       'ellipj',
+                                                       'ellipke',
+                                                       'erf',
+                                                       'erfc',
+                                                       'erfcx',
+                                                       'erfiny',
+                                                       'expint',
+                                                       'factorial',
+                                                       'gamma',
+                                                       'gammainc',
+                                                       'gammaln',
+                                                       'legendre',
+                                                       'pow2',
+                                                       'rat',
+                                                       'rats',
+                                                       'cart2pol',
+                                                       'cart2sph',
+                                                       'pol2cart',
+                                                       'sph2cart',
+                                                       'abs',
+                                                       'eval',
+                                                       'real',
+                                                       'strings',
+                                                       'deblank',
+                                                       'findstr',
+                                                       'lower',
+                                                       'strcat',
+                                                       'strcmp',
+                                                       'strcmpi',
+                                                       'strjust',
+                                                       'strmatch',
+                                                       'strncmp',
+                                                       'strrep',
+                                                       'strtok',
+                                                       'strvcat',
+                                                       'symvar',
+                                                       'texlabel',
+                                                       'upper',
+                                                       'char',
+                                                       'int2str',
+                                                       'mat2str',
+                                                       'num2str',
+                                                       'sprintf',
+                                                       'sscanf',
+                                                       'str2double',
+                                                       'str2num',
+                                                       'bin2dec',
+                                                       'dec2bin',
+                                                       'dec2hex',
+                                                       'hex2dec',
+                                                       'hex2num',
+                                                       'fclose',
+                                                       'fopen',
+                                                       'fread',
+                                                       'fwrite',
+                                                       'fgetl',
+                                                       'fgets',
+                                                       'fprintf',
+                                                       'fscanf',
+                                                       'feof',
+                                                       'ferror',
+                                                       'frewind',
+                                                       'fseek',
+                                                       'ftell',
+                                                       'sprintf',
+                                                       'sscanf',
+                                                       'dlmread',
+                                                       'dlmwrite',
+                                                       'hdf',
+                                                       'imfinfo',
+                                                       'imread',
+                                                       'imwrite',
+                                                       'textread',
+                                                       'wk1read',
+                                                       'wk1write',
+                                                       'bitand',
+                                                       'bitcmp',
+                                                       'bitor',
+                                                       'bitmax',
+                                                       'bitset',
+                                                       'bitshift',
+                                                       'bitget',
+                                                       'bitxor',
+                                                       'fieldnames',
+                                                       'getfield',
+                                                       'rmfield',
+                                                       'setfield',
+                                                       'struct',
+                                                       'struct2cell',
+                                                       'class',
+                                                       'isa',
+                                                       'cell',
+                                                       'cellfun',
+                                                       'cellstr',
+                                                       'cell2struct',
+                                                       'celldisp',
+                                                       'cellplot',
+                                                       'num2cell',
+                                                       'cat',
+                                                       'flipdim',
+                                                       'ind2sub',
+                                                       'ipermute',
+                                                       'ndgrid',
+                                                       'ndims',
+                                                       'permute',
+                                                       'reshape',
+                                                       'shiftdim',
+                                                       'squeeze',
+                                                       'sub2ind',
+                                                       'cond',
+                                                       'condeig',
+                                                       'det',
+                                                       'norm',
+                                                       'null',
+                                                       'orth',
+                                                       'rank',
+                                                       'rcond',
+                                                       'rref',
+                                                       'rrefmovie',
+                                                       'subspace',
+                                                       'trace',
+                                                       'chol',
+                                                       'inv',
+                                                       'lscov',
+                                                       'lu',
+                                                       'nnls',
+                                                       'pinv',
+                                                       'qr',
+                                                       'balance',
+                                                       'cdf2rdf',
+                                                       'eig',
+                                                       'gsvd',
+                                                       'hess',
+                                                       'poly',
+                                                       'qz',
+                                                       'rsf2csf',
+                                                       'schur',
+                                                       'svd',
+                                                       'expm',
+                                                       'funm',
+                                                       'logm',
+                                                       'sqrtm',
+                                                       'qrdelete',
+                                                       'qrinsert',
+                                                       'bar',
+                                                       'barh',
+                                                       'hist',
+                                                       'hold',
+                                                       'loglog',
+                                                       'pie',
+                                                       'plot',
+                                                       'polar',
+                                                       'semilogx',
+                                                       'semilogy',
+                                                       'subplot',
+                                                       'bar3',
+                                                       'bar3h',
+                                                       'comet3',
+                                                       'cylinder',
+                                                       'fill3',
+                                                       'plot3',
+                                                       'quiver3',
+                                                       'slice',
+                                                       'sphere',
+                                                       'stem3',
+                                                       'waterfall',
+                                                       'clabel',
+                                                       'datetick',
+                                                       'grid',
+                                                       'gtext',
+                                                       'legend',
+                                                       'plotyy',
+                                                       'title',
+                                                       'xlabel',
+                                                       'ylabel',
+                                                       'zlabel',
+                                                       'contour',
+                                                       'contourc',
+                                                       'contourf',
+                                                       'hidden',
+                                                       'meshc',
+                                                       'mesh',
+                                                       'peaks',
+                                                       'surf',
+                                                       'surface',
+                                                       'surfc',
+                                                       'surfl',
+                                                       'trimesh',
+                                                       'trisurf',
+                                                       'coneplot',
+                                                       'contourslice',
+                                                       'isocaps',
+                                                       'isonormals',
+                                                       'isosurface',
+                                                       'reducepatch',
+                                                       'reducevolume',
+                                                       'shrinkfaces',
+                                                       'smooth3',
+                                                       'stream2',
+                                                       'stream3',
+                                                       'streamline',
+                                                       'surf2patch',
+                                                       'subvolume',
+                                                       'griddata',
+                                                       'meshgrid',
+                                                       'area',
+                                                       'box',
+                                                       'comet',
+                                                       'compass',
+                                                       'errorbar',
+                                                       'ezcontour',
+                                                       'ezcontourf',
+                                                       'ezmesh',
+                                                       'ezmeshc',
+                                                       'ezplot',
+                                                       'ezplot3',
+                                                       'ezpolar',
+                                                       'ezsurf',
+                                                       'ezsurfc',
+                                                       'feather',
+                                                       'fill',
+                                                       'fplot',
+                                                       'pareto',
+                                                       'pie3',
+                                                       'plotmatrix',
+                                                       'pcolor',
+                                                       'rose',
+                                                       'quiver',
+                                                       'ribbon',
+                                                       'stairs',
+                                                       'scatter',
+                                                       'scatter3',
+                                                       'stem',
+                                                       'convhull',
+                                                       'delaunay',
+                                                       'dsearch',
+                                                       'inpolygon',
+                                                       'polyarea',
+                                                       'tsearch',
+                                                       'voronoi',
+                                                       'camdolly',
+                                                       'camlookat',
+                                                       'camorbit',
+                                                       'campan',
+                                                       'campos',
+                                                       'camproj',
+                                                       'camroll',
+                                                       'camtarget',
+                                                       'camup',
+                                                       'camva',
+                                                       'camzoom',
+                                                       'daspect',
+                                                       'pbaspect',
+                                                       'view',
+                                                       'viewmtx',
+                                                       'xlim',
+                                                       'ylim',
+                                                       'zlim',
+                                                       'camlight',
+                                                       'diffuse',
+                                                       'lighting',
+                                                       'lightingangle',
+                                                       'material',
+                                                       'specular',
+                                                       'brighten',
+                                                       'bwcontr',
+                                                       'caxis',
+                                                       'colorbar',
+                                                       'colorcube',
+                                                       'colordef',
+                                                       'colormap',
+                                                       'graymon',
+                                                       'hsv2rgb',
+                                                       'rgb2hsv',
+                                                       'rgbplot',
+                                                       'shading',
+                                                       'spinmap',
+                                                       'surfnorm',
+                                                       'whitebg',
+                                                       'autumn',
+                                                       'bone',
+                                                       'contrast',
+                                                       'cool',
+                                                       'copper',
+                                                       'flag',
+                                                       'gray',
+                                                       'hot',
+                                                       'hsv',
+                                                       'jet',
+                                                       'lines',
+                                                       'prism',
+                                                       'spring',
+                                                       'summer',
+                                                       'winter',
+                                                       'orient',
+                                                       'print',
+                                                       'printopt',
+                                                       'saveas',
+                                                       'copyobj',
+                                                       'findobj',
+                                                       'gcbo',
+                                                       'gco',
+                                                       'get',
+                                                       'rotate',
+                                                       'ishandle',
+                                                       'set',
+                                                       'axes',
+                                                       'figure',
+                                                       'image',
+                                                       'light',
+                                                       'line',
+                                                       'patch',
+                                                       'rectangle',
+                                                       'surface',
+                                                       'text Create',
+                                                       'uicontext Create',
+                                                       'capture',
+                                                       'clc',
+                                                       'clf',
+                                                       'clg',
+                                                       'close',
+                                                       'gcf',
+                                                       'newplot',
+                                                       'refresh',
+                                                       'saveas',
+                                                       'axis',
+                                                       'cla',
+                                                       'gca',
+                                                       'propedit',
+                                                       'reset',
+                                                       'rotate3d',
+                                                       'selectmoveresize',
+                                                       'shg',
+                                                       'ginput',
+                                                       'zoom',
+                                                       'dragrect',
+                                                       'drawnow',
+                                                       'rbbox',
+                                                       'dialog',
+                                                       'errordlg',
+                                                       'helpdlg',
+                                                       'inputdlg',
+                                                       'listdlg',
+                                                       'msgbox',
+                                                       'pagedlg',
+                                                       'printdlg',
+                                                       'questdlg',
+                                                       'uigetfile',
+                                                       'uiputfile',
+                                                       'uisetcolor',
+                                                       'uisetfont',
+                                                       'warndlg',
+                                                       'menu',
+                                                       'menuedit',
+                                                       'uicontextmenu',
+                                                       'uicontrol',
+                                                       'uimenu',
+                                                       'dragrect',
+                                                       'findfigs',
+                                                       'gcbo',
+                                                       'rbbox',
+                                                       'selectmoveresize',
+                                                       'textwrap',
+                                                       'uiresume',
+                                                       'uiwait Used',
+                                                       'waitbar',
+                                                       'waitforbuttonpress',
+                                                       'convhull',
+                                                       'cumprod',
+                                                       'cumsum',
+                                                       'cumtrapz',
+                                                       'delaunay',
+                                                       'dsearch',
+                                                       'factor',
+                                                       'inpolygon',
+                                                       'max',
+                                                       'mean',
+                                                       'median',
+                                                       'min',
+                                                       'perms',
+                                                       'polyarea',
+                                                       'primes',
+                                                       'prod',
+                                                       'sort',
+                                                       'sortrows',
+                                                       'std',
+                                                       'sum',
+                                                       'trapz',
+                                                       'tsearch',
+                                                       'var',
+                                                       'voronoi',
+                                                       'del2',
+                                                       'diff',
+                                                       'gradient',
+                                                       'corrcoef',
+                                                       'cov',
+                                                       'conv',
+                                                       'conv2',
+                                                       'deconv',
+                                                       'filter',
+                                                       'filter2',
+                                                       'abs',
+                                                       'angle',
+                                                       'cplxpair',
+                                                       'fft',
+                                                       'fft2',
+                                                       'fftshift',
+                                                       'ifft',
+                                                       'ifft2',
+                                                       'ifftn',
+                                                       'ifftshift',
+                                                       'nextpow2',
+                                                       'unwrap',
+                                                       'cross',
+                                                       'intersect',
+                                                       'ismember',
+                                                       'setdiff',
+                                                       'setxor',
+                                                       'union',
+                                                       'unique',
+                                                       'conv',
+                                                       'deconv',
+                                                       'poly',
+                                                       'polyder',
+                                                       'polyeig',
+                                                       'polyfit',
+                                                       'polyval',
+                                                       'polyvalm',
+                                                       'residue',
+                                                       'roots',
+                                                       'griddata',
+                                                       'interp1',
+                                                       'interp2',
+                                                       'interp3',
+                                                       'interpft',
+                                                       'interpn',
+                                                       'meshgrid',
+                                                       'ndgrid',
+                                                       'spline',
+                                                       'dblquad',
+                                                       'fmin',
+                                                       'fmins',
+                                                       'fzero',
+                                                       'ode45,',
+                                                       'ode113,',
+                                                       'ode15s,',
+                                                       'ode23s,',
+                                                       'ode23t,',
+                                                       'ode23tb',
+                                                       'odefile',
+                                                       'odeget',
+                                                       'odeset',
+                                                       'quad,',
+                                                       'vectorize',
+                                                       'spdiags',
+                                                       'speye',
+                                                       'sprand',
+                                                       'sprandn',
+                                                       'sprandsym',
+                                                       'find',
+                                                       'full',
+                                                       'sparse',
+                                                       'spconvert',
+                                                       'nnz',
+                                                       'nonzeros',
+                                                       'nzmax',
+                                                       'spalloc',
+                                                       'spfun',
+                                                       'spones',
+                                                       'colmmd',
+                                                       'colperm',
+                                                       'dmperm',
+                                                       'randperm',
+                                                       'symmmd',
+                                                       'symrcm',
+                                                       'condest',
+                                                       'normest',
+                                                       'bicg',
+                                                       'bicgstab',
+                                                       'cgs',
+                                                       'cholinc',
+                                                       'cholupdate',
+                                                       'gmres',
+                                                       'luinc',
+                                                       'pcg',
+                                                       'qmr',
+                                                       'qr',
+                                                       'qrdelete',
+                                                       'qrinsert',
+                                                       'qrupdate',
+                                                       'eigs',
+                                                       'svds',
+                                                       'spparms',
+                                                       'lin2mu',
+                                                       'mu2lin',
+                                                       'sound',
+                                                       'soundsc',
+                                                       'auread',
+                                                       'auwrite',
+                                                       'wavread',
+                                                       'wavwrite',
+                                                       '[Keywords 6]',
+                                                       'addpath',
+                                                       'doc',
+                                                       'docopt',
+                                                       'help',
+                                                       'helpdesk',
+                                                       'helpwin',
+                                                       'lasterr',
+                                                       'lastwarn',
+                                                       'lookfor',
+                                                       'partialpath',
+                                                       'path',
+                                                       'pathtool',
+                                                       'profile',
+                                                       'profreport',
+                                                       'rmpath',
+                                                       'type',
+                                                       'ver',
+                                                       'version',
+                                                       'web',
+                                                       'what',
+                                                       'whatsnew',
+                                                       'which',
+                                                       'clear',
+                                                       'disp',
+                                                       'length',
+                                                       'load',
+                                                       'mlock',
+                                                       'munlock',
+                                                       'openvar',
+                                                       'pack',
+                                                       'save',
+                                                       'saveas',
+                                                       'size',
+                                                       'who',
+                                                       'whos',
+                                                       'workspace',
+                                                       'clc',
+                                                       'echo',
+                                                       'format',
+                                                       'home',
+                                                       'more',
+                                                       'cd',
+                                                       'copyfile',
+                                                       'delete',
+                                                       'diary',
+                                                       'dir',
+                                                       'edit',
+                                                       'fileparts',
+                                                       'fullfile',
+                                                       'inmem',
+                                                       'ls',
+                                                       'matlabroot',
+                                                       'mkdir',
+                                                       'open',
+                                                       'pwd',
+                                                       'tempdir',
+                                                       'tempname',
+                                                       'matlabrc',
+                                                       'quit',                 
           
+)
+               ),
+       'SYMBOLS' => array( 
+               '...' 
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               //3 => false,
+               //4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0000FF;',
+            2 => 'color: #0000FF;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #228B22;',
+                       ),
+               'ESCAPE_CHAR' => array(
+            0 => ''
+                       ),
+               'BRACKETS' => array(
+            0 => 'color: #080;'
+                       ),
+               'STRINGS' => array(
+                       //0 => 'color: #A020F0;'
+                       ),
+               'NUMBERS' => array(
+            0 => 'color: #33f;'
+                       ),
+               'METHODS' => array(
+            1 => '',
+            2 => ''
+                       ),
+               'SYMBOLS' => array(
+            0 => 'color: #080;'
+                       ),
+               'REGEXPS' => array(
+            0 => 'color:#A020F0;'
+                       ),
+               'SCRIPT' => array(
+            0 => ''
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => 
'http://www.mathworks.com/access/helpdesk/help/techdoc/ref/{FNAME}.html',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+        0 => array(
+            GESHI_SEARCH => "([^\w])'([^\\n\\r']*)'",
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => '',
+            GESHI_BEFORE => "\\1'",
+            GESHI_AFTER => "'"
+               )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/mpasm.php
===================================================================
RCS file: geshi/mpasm.php
diff -N geshi/mpasm.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/mpasm.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,160 @@
+<?php
+/*************************************************************************************
+ * mpasm.php
+ * ---------
+ * Author: Bakalex (address@hidden)
+ * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/12/6
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Microchip Assembler language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/01/29 (1.0.0)
+ *  - First Release
+ *
+ * TODO (updated 2005/12/6)
+ * -------------------------
+ *
+ * For the moment, i've only added PIC16C6X registers. We need more 
(PIC16F/C7x/8x,
+ * PIC10, PIC18 and dsPIC registers).
+ * Must take a look to dsPIC instructions.
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Microchip Assembler',
+       'COMMENT_SINGLE' => array(1 => ';'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               /*Directive Language*/
+               4 => array(
+                       'CONSTANT', '#DEFINE', 'END', 'EQU', 'ERROR', 
'ERROR-LEVEL', '#INCLUDE', 'LIST',
+                       'MESSG', 'NOLIST', 'ORG', 'PAGE', 'PROCESSOR', 'RADIX', 
'SET', 'SPACE', 'SUBTITLE',
+                       'TITLE', '#UNDEFINE', 'VARIABLE', 'ELSE', 'ENDIF', 
'ENDW', 'IF', 'IFDEF', 'IFNDEF',
+                       'WHILE', '__BADRAM', 'CBLOCK', '__CONFIG', 'DA', 
'DATA', 'DB', 'DE', 'DT', 'DW',
+                       'ENDC', 'FILL', '__IDLOCS', '__MAXRAM', 'RES', 'ENDM', 
'EXITM', 'EXPAND', 'LOCAL',
+                       'MACRO', 'NOEXPAND', 'BANKISEL', 'BANKSEL', 'CODE', 
'EXTERN', 'GLOBAL', 'IDATA',
+                       'PAGESEL', 'UDATA', 'UDATA_ACS', 'UDATA_OVR', 
'UDATA_SHR'
+                 ),
+               /* 12&14-bit Specific Instruction Set*/
+               1 => array(
+                       'andlw', 'call', 'clrwdt', 'goto', 'iorlw', 'movlw', 
'option', 'retlw', 'sleep',
+                       'tris', 'xorlw', 'addwf', 'andwf', 'clrf', 'clrw', 
'comf', 'decf', 'decfsz', 'incf',
+                       'incfsz', 'iorwf', 'movf', 'movwf', 'nop', 'rlf', 
'rrf', 'subwf', 'swapf', 'xorwf',
+                       'bcf', 'bsf', 'btfsc', 'btfss',
+                       'addlw', 'iorlw', 'retfie', 'return', 'sublw', 'xorlw', 
'addcf', 'adddcf', 'b', 'bc', 'bdc',
+                       'bnc', 'bndc', 'bnz', 'bz', 'clrc', 'clrdc', 'clrz', 
'lcall', 'lgoto', 'movfw',
+                       'negf', 'setc', 'setdc', 'setz', 'skpc', 'skpdc', 
'skpnc', 'skpndc', 'skpnz', 'skpz',
+                       'subcf', 'subdcf', 'tstf'
+                   ),
+               /* 16-bit Specific Instructiob Set */
+               2 => array (
+                       'movfp', 'movlb', 'movlp', 'movpf', 'movwf', 'tablrd', 
'tablwt', 'tlrd', 'tlwt',
+                       'addwfc', 'daw', 'mullw', 'negw', 'rlcf', 'rlncf', 
'rrcf', 'rrncf', 'setf', 'subwfb',
+                       'btg', 'cpfseq', 'cpfsgt', 'cpfslt', 'dcfsnz', 
'infsnz', 'tstfsz', 'lfsr', 'bnn',
+                       'bnov', 'bra', 'pop', 'push', 'rcall', 'reset'
+                   ),
+               /* Registers */
+               3 => array(
+                       'INDF', 'TMR0', 'PCL', 'STATUS', 'FSR', 'PORTA', 
'PORTB', 'PORTC', 'PORTD', 'PORTE',
+                       'PCLATH', 'INTCON', 'PIR1', 'PIR2', 'TMR1L', 'TMR1H', 
'T1CON', 'TMR2', 'T2CON', 'TMR2L',
+                       'TMR2H', 'TMR0H', 'TMR0L', 'SSPBUF', 'SSPCON', 
'CCPR1L', 'CCPR1H', 'CCP1CON', 'RCSTA',
+                       'TXREG', 'RCREG', 'CCPR2L', 'CCPR2H', 'CCP2CON', 
'OPTION', 'TRISA', 'TRISB', 'TRISC',
+                       'TRISD', 'TRISE', 'PIE2', 'PIE1', 'PR2', 'SSPADD', 
'SSPSTAT', 'TXSTA', 'SPBRG'
+                   ),
+               /*Operands*/
+               5 => array(
+                        'high','low'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '[', ']', '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #00007f;',
+                       2 => 'color: #0000ff;',
+                       3 => 'color: #007f00;',
+                       4 => 'color: #46aa03; font-weight:bold;',
+                       5 => 'color: #7f0000;',
+                       6 => 'color: #7f0000;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #adadad; font-style: italic;',
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #7f007f;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #ff0000;',
+                       1 => 'color: #ff0000;'
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => '[0-9a-fA-F][0-9a-fA-F]*[hH]',
+               1 => '[01][01]*[bB]'
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/mysql.php
===================================================================
RCS file: geshi/mysql.php
diff -N geshi/mysql.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/mysql.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,183 @@
+<?php 
+ 
/*************************************************************************************
 
+ * mysql.php 
+ * --------- 
+ * Author: Carl F�rstenberg (address@hidden) 
+ * Copyright: (c) 2005 Carl F�rstenberg, Nigel McNie 
(http://qbnz.com/highlighter) 
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $ 
+ * Date Started: 2004/06/04 
+ * Last Modified: $Date: 2006/09/25 08:46:28 $ 
+ * 
+ * MySQL language file for GeSHi. 
+ * 
+ * 
+ 
*************************************************************************************
 
+ * 
+ * This file is part of GeSHi. 
+ * 
+ * GeSHi 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. 
+ * 
+ * GeSHi 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 GeSHi; if not, write to the Free Software 
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
+ * 
+ 
************************************************************************************/
 
+  
+$language_data = array ( 
+  'LANG_NAME' => 'MySQL', 
+  'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'), 
+  'COMMENT_MULTI' => array('/*' => '*/'), 
+  'CASE_KEYWORDS' => 1, 
+  'QUOTEMARKS' => array("'", '"', ''), 
+  'ESCAPE_CHAR' => '\\', 
+  'KEYWORDS' => array( 
+  1 => array( 
+  /* Mix */ 
+  'ALTER DATABASE', 'ALTER TABLE', 'CREATE DATABASE', 'CREATE INDEX', 'CREATE 
TABLE', 'DROP DATABASE', 
+  'DROP INDEX', 'DROP TABLE', 'RENAME TABLE', 'DELETE', 'DO', 'HANDLER', 
'INSERT', 'LOAD DATA INFILE',  
+  'REPLACE', 'SELECT', 'TRUNCATE', 'UPDATE', 'DESCRIBE', 'USE', 'START 
TRANSACTION', 'COMMIT', 'ROLLBACK', 
+  'SAVEPOINT', 'ROLLBACK TO SAVEPOINT', 'LOCK TABLES', 'UNLOCK_TABLES', 'SET 
TRANACTIONS', 'SET', 'SHOW', 
+  'CREATE PROCEDURE', 'CREATE FUNCTION', 'ALTER PROCEDURE', 'ALTER FUNCTION', 
'DROP PROCEDURE', 'DROP FUNCTION',  
+  'SHOW CREATE PROCEDURE', 'SHOW CREATE FUNCTION', 'SHOW PROCEDURE STATUS', 
'SHOW FUNCTION STATUS',  
+  'CALL', 'BEGIN', 'END', 'DECLARE', 'CREATE ROUTINE', 'ALTER ROUTINE', 
'CREATE', 'ALTER', 'DROP', 
+  'PRIMARY KEY', 'VALUES', 'INTO', 'FROM',  
+  'ANALYZE', 'BDB', 'BERKELEYDB', 'BTREE', 'BY', 'CASCADE', 'CHECK', 'COLUMN', 
'COLUMNS', 'CONSTRAINT', 
+  'CROSS', 'DATABASES', 'DELAYED', 'DISTINCT', 'DISTINCTROW', 'ENCLOSED', 
'ERRORS', 'ESCAPED', 'EXISTS', 
+  'EXPLAIN', 'FALSE', 'FIELDS', 'FORCE', 'FOREIGN', 'FULLTEXT', 'GEOMETRY', 
'GRANT', 'GROUP', 'HASH', 
+  'HAVING', 'HELP', 'HIGH_PRIORITY', 'IGNORE', 'INNER', 'INNODB', 'INTERVAL', 
'JOIN', 'KEYS', 'KILL', 
+  'LINES', 'LOW_PRIORITY', 'MASTER_SERVER_ID', 'MATCH', 'MIDDLEINT', 
'MRG_MYISAM', 'NATURAL', 'OPTIMIZE', 
+  'OPTION', 'OPTIONALLY', 'ORDER', 'OUTER', 'OUTFILE', 'PRIVILEGES', 'PURGE', 
'READ', 'REFERENCES', 
+  'REQUIRE', 'RESTRICT', 'RETURNS', 'REVOKE', 'RLIKE', 'RTREE', 'SOME', 
'SONAME', 'SPATIAL', 'SQL_BIG_RESULT',  
+  'SQL_CALC_FOUND_ROWS', 'SQL_SMALL_RESULT', 'SSL', 'STARTING', 
'STRAIGHT_JOIN', 'STRIPED', 'TERMINATED',  
+  'TRUE', 'TYPES', 'UNION', 'USAGE', 'USER_RESOURCES', 'USING', 
'VARCHARACTER', 'WARNINGS', 'WHERE', 'WRITE', 
+  /* Control Flow Functions */ 
+  'CASE', 'WHEN', 'THEN', 'ELSE', 'END', 
+  /* String Functions */ 
+  'UNHEX', 'BIN', 'BIT_LENGTH', 'CHAR_LENGTH', 'CHARACTER_LENGTH', 'COMPRESS', 
'CONCAT', 
+  'CONCAT_WS', 'CONV', 'ELT', 'EXPORT_SET', 'FIELD', 'FIND_IN_SET', 'FORMAT', 
'HEX',  
+  'INSERT', 'INSTR', 'LCASE', 'LEFT', 'LENGTH', 'LOAD_FILE', 'LOCATE', 
'LOWER', 'LPAD', 
+  'LTRIM', 'MAKE_SET', 'MID', 'OCT', 'OCTET_LENGTH', 'ORD', 'POSITION', 
'QUOTE', 'REPEAT', 
+  'REPLACE', 'REVERSE', 'RIGHT', 'RPAD', 'RTRIM', 'SOUNDEX', 'SPACE', 
'SUBSTRING',  
+  'SUBSTRING_INDEX', 'TRIM', 'UCASE', 'UPPER', 'UNCOMPRESS', 
'UNCOMPRESSD_LENGTH',
+  'MD5', 'SHA1',  
+  /* Numeric Functions */ 
+  'ABS', 'ACOS', 'ASIN', 'ATAN', 'ATAN2', 'CEILING', 'CEIL', 'COS', 'COT', 
'CRC32', 'DEGREES', 
+  'EXP', 'FLOOR', 'LN', 'LOG', 'LOG2', 'LOG10', 'MOD', 'PI', 'POW', 'POWER', 
'RADIANS', 'RAND', 
+  'ROUND', 'SIGN', 'SIN', 'SQRT', 'TAN', 'TRUNCATE', 
+  /* Date and Time Functions */ 
+  'ADDDATE', 'ADDTIME', 'CONVERT_TZ', 'CURDATE', 'CURRENT_DATE', 'CURTIME', 
'CURRENT_TIME', 
+  'CURRENT_TIMESTAMP', 'DATEDIFF', 'DATE_ADD', 'DATE_SUB', 'DATE_FORMAT', 
'DAY',  
+  'DAYNAME', 'DAYOFMONTH', 'DAYOFWEEK', 'DAYOFYEAR', 'EXTRACT', 'FROM_DAYS', 
'FROM_UNIXTIME', 
+  'GET_FORMAT', 'LAST_DAY', 'LOCALTIME', 'LOCALTIMESTAMP', 'MAKEDATE', 
'MAKETIME',  
+  'MICROSECOND', 'MONTHNAME', 'NOW', 'PERIOD_ADD', 'PERIOD_DIFF', 'QUARTER', 
+  'SECOND', 'SEC_TO_TIME', 'STR_TO_DATE', 'SUBDATE', 'SUBTIME', 'SYSDATE', 
'TIME', 'TIMEDIFF', 
+  'TIMESTAMP', 'TIMESTAMPADD', 'TIMESTAMPDIFF', 'TIME_FORMAT', 'TIME_TO_SEC', 
'TO_DAYS',  
+  'UNIX_TIMESTAMP', 'UTC_DATE', 'UTC_TIME', 'UTC_TIMESTAMP', 'WEEKDAY', 
'WEEKOFYEAR', 
+  'YEARWEEK', 
+   
+   ), 
+   2 => array( 
+   'INTEGER', 'SMALLINT', 'DECIMAL', 'NUMERIC', 'FLOAT', 'REAL', 'DOUBLE 
PRECISION', 
+   'DOUBLE', 'INT', 'DEC', 'BIT' ,'TINYINT', 'SMALLINT', 'MEDIUMINT', 
'BIGINT',  
+   'DATETIME', 'DATE', 'TIMESTAMP', 'TIME', 'YEAR',  
+   'CHAR', 'VARCHAR', 'BINARY', 'CHARACTER VARYING', 'VARBINARY', 'TINYBLOB', 
'TINYTEXT', 
+   'BLOB', 'TEXT','MEDIUMBLOB', 'MEDIUMTEXT', 'LONGBLOB', 'LONGTEXT', 'ENUM', 
'SET', 
+   'SERIAL DEFAULT VALUE', 'SERIAL', 'FIXED' 
+   ), 
+   3 => array( 
+   'ZEROFILL', 'NOT NULL', 'UNSIGNED', 'AUTO_INCREMENT', 'UNIQUE', 'NOT', 
'NULL', 'CHARACTER SET', 'CHARSET', 
+   'ASCII', 'UNICODE', 'NATIONAL', 'BOTH', 'LEADING', 'TRAILING','DEFAULT' 
+   ), 
+   4 => array( 
+   'MICROSECOND', 'SECOND', 'MINUTE', 'HOUR', 'DAY', 'WEEK', 'MONTH', 
'QUARTER', 'YEAR', 'SECOND_MICROSECOND',  
+   'MINUTE_MICROSECOND', 'MINUTE_SECOND', 'HOUR_MICROSECOND', 'HOUR_SECOND', 
'HOUR_MINUTE', 'DAY_MICROSECOND', 
+   'DAY_SECOND', 'DAY_MINUTE', 'DAY_HOUR', 'YEAR_MONTH' 
+   ),
+   5 => array(
+   'OR', 'XOR', 'AND', 'NOT', 'BETWEEN', 'IS', 'LIKE', 'REGEXP', 'IN', 'DIV',
+    'MOD', 'BINARY', 'COLLATE', 'LIMIT', 'OFFSET'
+   ), 
+   ),
+   'SYMBOLS' => array( 
+   ':=', 
+   '||', 'OR', 'XOR', 
+   '&&', 'AND', 
+   'NOT', 
+   'BETWEEN', 'CASE', 'WHEN', 'THEN', 'ELSE', 
+   '=', '<=>', '>=', '>', '<=', '<', '<>', '!=', 'IS', 'LIKE', 'REGEXP', 'IN', 
+   '|', 
+   '&', 
+   '<<', '>>', 
+   '-', '+', 
+   '*', '/', 'DIV', '%', 'MOD', 
+   '^', 
+   '-', '~', 
+   '!', 
+   'BINARY', 'COLLATE', 
+   '(', ')', 
+   ), 
+   'CASE_SENSITIVE' => array( 
+   GESHI_COMMENTS => false, 
+   1 => false, 
+   2 => false, 
+   3 => false, 
+   4 => false, 
+   5 => false
+   ), 
+   'STYLES' => array( 
+   'KEYWORDS' => array( 
+   1 => 'color: #993333; font-weight: bold;', 
+   2 => 'color: #aa9933; font-weight: bold;', 
+   3 => 'color: #aa3399; font-weight: bold;', 
+   4 => 'color: #33aa99; font-weight: bold;',
+   5 => 'color: #993333; font-weight: bold;'
+   ), 
+   'COMMENTS' => array( 
+   'MULTI' => 'color: #808080; font-style: italic;', 
+   1 => 'color: #808080; font-style: italic;', 
+   2 => 'color: #808080; font-style: italic;' 
+   ), 
+   'ESCAPE_CHAR' => array( 
+   0 => 'color: #000099; font-weight: bold;' 
+   ), 
+   'BRACKETS' => array( 
+   0 => 'color: #66cc66;' 
+   ), 
+   'STRINGS' => array( 
+   0 => 'color: #ff0000;' 
+   ), 
+   'NUMBERS' => array( 
+   0 => 'color: #cc66cc;' 
+   ), 
+   'METHODS' => array( 
+   ), 
+   'SYMBOLS' => array( 
+   0 => 'color: #66cc66;' 
+   ), 
+   'SCRIPT' => array( 
+   ), 
+   'REGEXPS' => array( 
+   ) 
+   ), 
+   'OOLANG' => false, 
+   'OBJECT_SPLITTERS' => array( 
+   ), 
+   'REGEXPS' => array( 
+   ), 
+   'STRICT_MODE_APPLIES' => GESHI_NEVER, 
+   'SCRIPT_DELIMITERS' => array( 
+   ), 
+   'HIGHLIGHT_STRICT_BLOCK' => array( 
+   ) 
+);
+
+?>

Index: geshi/nsis.php
===================================================================
RCS file: geshi/nsis.php
diff -N geshi/nsis.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/nsis.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,354 @@
+<?php
+/*************************************************************************************
+ * nsis.php
+ * --------
+ * Author: deguix (address@hidden), Tux (http://tux.a4.cz/)
+ * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/12/03
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Nullsoft Scriptable Install System language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/03 (2.0.2)
+ *   - Updated to NSIS 2.11.
+ * 2005/06/17 (2.0.1)
+ *   - Updated to NSIS 2.07b0.
+ * 2005/04/05 (2.0.0)
+ *   - Updated to NSIS 2.06.
+ * 2004/11/27 (1.0.2)
+ *   - Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   - Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   - First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'NSIS',
+       'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'",'"','`'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       '!appendfile', '!addIncludeDir', '!addplugindir', 
'!cd', '!define', '!delfile', '!echo', '!else',
+                       '!endif', '!error', '!execute', '!ifdef', 
'!ifmacrodef', '!ifmacrondef', '!ifndef', '!include',
+                       '!insertmacro', '!macro', '!macroend', '!packhdr', 
'!tempfile', '!system', '!undef', '!verbose',
+                       '!warning'
+                 ),
+               2 => array(
+                       'AddBrandingImage', 'AllowRootDirInstall', 
'AutoCloseWindow', 'BGFont',
+                       'BGGradient', 'BrandingText', 'Caption', 'ChangeUI', 
'CheckBitmap', 'CompletedText', 'ComponentText',
+                       'CRCCheck', 'DetailsButtonText', 'DirShow', 'DirText', 
'DirVar', 'DirVerify', 'FileErrorText',
+                       'Function', 'FunctionEnd', 'Icon', 'InstallButtonText', 
'InstallColors', 'InstallDir',
+                       'InstallDirRegKey', 'InstProgressFlags', 'InstType', 
'LangString', 'LangStringUP', 'LicenseBkColor',
+                       'LicenseData', 'LicenseForceSelection', 
'LicenseLangString', 'LicenseText', 'LoadLanguageFile',
+                       'MiscButtonText', 'Name', 'OutFile', 'Page', 'PageEx', 
'PageExEnd', 'Section',
+                       'SectionEnd', 'SectionGroup', 'SectionGroupEnd', 
'SetCompressor', 'SetFont', 'ShowInstDetails',
+                       'ShowUninstDetails', 'SilentInstall', 
'SilentUnInstall', 'SpaceTexts', 'SubCaption', 'SubSection',
+                       'SubSectionEnd', 'UninstallButtonText', 
'UninstallCaption', 'UninstallIcon', 'UninstallSubCaption',
+                       'UninstallText', 'UninstPage', 'Var', 
'VIAddVersionKey', 'VIProductVersion', 'WindowIcon', 'XPStyle'
+                 ),
+               3 => array(
+                       'AddSize', 'AllowSkipFiles', 'AutoCloseWindow', 
'FileBufSize', 'GetInstDirError', 'PageCallbacks',
+                       'SectionIn', 'SetCompress', 'SetCompressionLevel', 
'SetCompressorDictSize',
+                       'SetDatablockOptimize', 'SetDateSave', 'SetOverwrite', 
'SetPluginUnload'
+                 ),
+               4 => array(
+                       'Abort', 'BringToFront', 'Call', 'CallInstDLL', 
'ClearErrors', 'CopyFiles','CreateDirectory',
+                       'CreateFont', 'CreateShortCut', 'Delete', 
'DeleteINISec', 'DeleteINIStr', 'DeleteRegKey',
+                       'DeleteRegValue', 'DetailPrint', 'EnableWindow', 
'EnumRegKey', 'EnumRegValue', 'Exch', 'Exec',
+                       'ExecShell', 'ExecWait', 'ExpandEnvStrings', 'File', 
'FileClose', 'FileOpen', 'FileRead',
+                       'FileReadByte', 'FileSeek', 'FileWrite', 
'FileWriteByte', 'FindClose', 'FindFirst', 'FindNext',
+                       'FindWindow', 'FlushINI', 'GetCurInstType', 
'GetCurrentAddress', 'GetDlgItem', 'GetDLLVersion',
+                       'GetDLLVersionLocal', 'GetErrorLevel', 'GetFileTime', 
'GetFileTimeLocal', 'GetFullPathName',
+                       'GetFunctionAddress', 'GetLabelAddress', 
'GetTempFileName', 'GetWindowText', 'Goto', 'HideWindow',
+                       'IfAbort', 'IfErrors', 'IfFileExists', 'IfRebootFlag', 
'IfSilent', 'InitPluginsDir', 'InstTypeGetText',
+                       'InstTypeSetText', 'IntCmp', 'IntCmpU', 'IntFmt', 
'IntOp', 'IsWindow', 'LockWindow', 'LogSet', 'LogText',
+                       'MessageBox', 'Nop', 'Pop', 'Push', 'Quit', 
'ReadEnvStr', 'ReadIniStr', 'ReadRegDWORD', 'ReadRegStr',
+                       'Reboot', 'RegDLL', 'Rename', 'ReserveFile', 'Return', 
'RMDir', 'SearchPath', 'SectionGetFlags',
+                       'SectionGetInstTypes', 'SectionGetSize', 
'SectionGetText', 'SectionSetFlags', 'SectionSetInstTypes',
+                       'SectionSetSize', 'SectionSetText', 'SendMessage', 
'SetAutoClose', 'SetBrandingImage', 'SetCtlColors',
+                       'SetCurInstType', 'SetDetailsPrint', 'SetDetailsView', 
'SetErrorLevel', 'SetErrors', 'SetFileAttributes',
+                       'SetOutPath', 'SetRebootFlag', 'SetShellVarContext', 
'SetSilent', 'ShowWindow', 'Sleep', 'StrCmp',
+                       'StrCpy', 'StrLen', 'UnRegDLL', 'WriteINIStr', 
'WriteRegBin', 'WriteRegDWORD', 'WriteRegExpandStr',
+                       'WriteRegStr', 'WriteUninstaller'
+                 ),
+               5 => array(
+                       'all', 'alwaysoff', 'ARCHIVE', 'auto', 'both', 'bzip2', 
'checkbox', 'components', 'current',
+                       'custom', 'directory', 'false', 
'FILE_ATTRIBUTE_ARCHIVE', 'FILE_ATTRIBUTE_HIDDEN', 'FILE_ATTRIBUTE_NORMAL',
+                       'FILE_ATTRIBUTE_OFFLINE', 'FILE_ATTRIBUTE_READONLY', 
'FILE_ATTRIBUTE_SYSTEM,TEMPORARY',
+                       'FILE_ATTRIBUTE_TEMPORARY', 'force', 'HIDDEN', 'hide', 
'HKCC', 'HKCR', 'HKCU', 'HKDD', 'HKEY_CLASSES_ROOT',
+                       'HKEY_CURRENT_CONFIG', 'HKEY_CURRENT_USER', 
'HKEY_DYN_DATA', 'HKEY_LOCAL_MACHINE', 'HKEY_PERFORMANCE_DATA',
+                       'HKEY_USERS', 'HKLM', 'HKPD', 'HKU', 'IDABORT', 
'IDCANCEL', 'IDIGNORE', 'IDNO', 'IDOK', 'IDRETRY', 'IDYES',
+                       'ifdiff', 'ifnewer', 'instfiles', 'lastused', 'leave', 
'license', 'listonly', 'lzma', 'manual',
+                       'MB_ABORTRETRYIGNORE', 'MB_DEFBUTTON1', 
'MB_DEFBUTTON2', 'MB_DEFBUTTON3', 'MB_DEFBUTTON4',
+                       'MB_ICONEXCLAMATION', 'MB_ICONINFORMATION', 
'MB_ICONQUESTION', 'MB_ICONSTOP', 'MB_OK', 'MB_OKCANCEL',
+                       'MB_RETRYCANCEL', 'MB_RIGHT', 'MB_SETFOREGROUND', 
'MB_TOPMOST', 'MB_YESNO', 'MB_YESNOCANCEL', 'nevershow',
+                       'none', 'normal', 'off', 'OFFLINE', 'on', 
'radiobuttons', 'READONLY', 'RO', 'SHCTX', 'SHELL_CONTEXT', 'show',
+                       'silent', 'silentlog', 'SW_HIDE', 'SW_SHOWMAXIMIZED', 
'SW_SHOWMINIMIZED', 'SW_SHOWNORMAL', 'SYSTEM',
+                       'textonly', 'true', 'try', 'uninstConfirm', 'zlib'
+                  ),
+               6 => array(
+                       '/a', '/components', '/COMPONENTSONLYONCUSTOM', 
'/CUSTOMSTRING', '/e', '/FILESONLY', '/FINAL', '/gray', '/GLOBAL',
+                       '/ifempty', '/IMGID', '/ITALIC', '/lang', '/NOCUSTOM', 
'/nonfatal', '/NOUNLOAD', '/oname', '/r', '/REBOOTOK',
+                       '/RESIZETOFIT', '/SOLID', '/SD', '/SHORT', '/silent', 
'/SOLID', '/STRIKE', '/TIMEOUT', '/TRIMCENTER', '/TRIMLEFT',
+                       '/TRIMRIGHT', '/UNDERLINE', '/windows', '/x'
+                  ),
+               7 => array(
+                       '.onGUIEnd', '.onGUIInit', '.onInit', '.onInstFailed', 
'.onInstSuccess', '.onMouseOverSection',
+                       '.onRebootFailed', '.onSelChange', '.onUserAbort', 
'.onVerifyInstDir', 'un.onGUIEnd', 'un.onGUIInit',
+                       'un.onInit', 'un.onRebootFailed', 'un.onUninstFailed', 
'un.onUninstSuccess', 'un.onUserAbort'
+                  ),
+               8 => array(
+                       'MUI.nsh', '"${NSISDIR}\Contrib\Modern UI\System.nsh"', 
'MUI_SYSVERSION', 'MUI_ICON', 'MUI_UNICON',
+                       'MUI_HEADERIMAGE', 'MUI_HEADERIMAGE_BITMAP', 
'MUI_HEADERIMAGE_BITMAP_NOSTRETCH', 'MUI_HEADERIMAGE_BITMAP_RTL',
+                       'MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH', 
'MUI_HEADERIMAGE_UNBITMAP', 'MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH',
+                       'MUI_HEADERIMAGE_UNBITMAP_RTL', 
'MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_RIGHT', 
'MUI_BGCOLOR',
+                       'MUI_UI', 'MUI_UI_HEADERIMAGE', 
'MUI_UI_HEADERIMAGE_RIGHT', 'MUI_UI_COMPONENTSPAGE_SMALLDESC',
+                       'MUI_UI_COMPONENTSPAGE_NODESC', 
'MUI_WELCOMEFINISHPAGE_BITMAP', 'MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
+                       'MUI_WELCOMEFINISHPAGE_INI', 
'MUI_UNWELCOMEFINISHPAGE_BITMAP', 'MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
+                       'MUI_UNWELCOMEFINISHPAGE_INI', 
'MUI_LICENSEPAGE_BGCOLOR', 'MUI_COMPONENTSPAGE_CHECKBITMAP',
+                       'MUI_COMPONENTSPAGE_SMALLDESC', 
'MUI_COMPONENTSPAGE_NODESC', 'MUI_INSTFILESPAGE_COLORS',
+                       'MUI_INSTFILESPAGE_PROGRESSBAR', 
'MUI_FINISHPAGE_NOAUTOCLOSE', 'MUI_UNFINISHPAGE_NOAUTOCLOSE',
+                       'MUI_ABORTWARNING', 'MUI_ABORTWARNING_TEXT', 
'MUI_UNABORTWARNING', 'MUI_UNABORTWARNING_TEXT',
+                       'MUI_PAGE_WELCOME', 'MUI_PAGE_LICENSE', 
'MUI_PAGE_COMPONENTS', 'MUI_PAGE_DIRECTORY',
+                       'MUI_PAGE_STARTMENU', 'MUI_PAGE_INSTFILES', 
'MUI_PAGE_FINISH', 'MUI_UNPAGE_WELCOME',
+                       'MUI_UNPAGE_CONFIRM', 'MUI_UNPAGE_LICENSE', 
'MUI_UNPAGE_COMPONENTS', 'MUI_UNPAGE_DIRECTORY',
+                       'MUI_UNPAGE_INSTFILES', 'MUI_UNPAGE_FINISH', 
'MUI_PAGE_HEADER_TEXT', 'MUI_PAGE_HEADER_SUBTEXT',
+                       'MUI_WELCOMEPAGE_TITLE', 
'MUI_WELCOMEPAGE_TITLE_3LINES', 'MUI_WELCOMEPAGE_TEXT',
+                       'MUI_LICENSEPAGE_TEXT_TOP', 
'MUI_LICENSEPAGE_TEXT_BOTTOM', 'MUI_LICENSEPAGE_BUTTON',
+                       'MUI_LICENSEPAGE_CHECKBOX', 
'MUI_LICENSEPAGE_CHECKBOX_TEXT', 'MUI_LICENSEPAGE_RADIOBUTTONS',
+                       'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT', 
'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE',
+                       'MUI_COMPONENTSPAGE_TEXT_TOP', 
'MUI_COMPONENTSPAGE_TEXT_COMPLIST', 'MUI_COMPONENTSPAGE_TEXT_INSTTYPE',
+                       'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE', 
'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO',
+                       'MUI_DIRECTORYPAGE_TEXT_TOP', 
'MUI_DIRECTORYPAGE_TEXT_DESTINATION', 'MUI_DIRECTORYPAGE_VARIABLE',
+                       'MUI_DIRECTORYPAGE_VERIFYONLEAVE', 
'MUI_STARTMENU_WRITE_BEGIN', 'MUI_STARTMENU_WRITE_END',
+                       'MUI_STARTMENUPAGE_TEXT_TOP', 
'MUI_STARTMENUPAGE_TEXT_CHECKBOX', 'MUI_STARTMENUPAGE_DEFAULTFOLDER',
+                       'MUI_STARTMENUPAGE_NODISABLE', 
'MUI_STARTMENUPAGE_REGISTRY_ROOT', 'MUI_STARTMENUPAGE_REGISTRY_KEY',
+                       'MUI_STARTMENUPAGE_REGISTRY_VALUENAME', 
'MUI_INSTFILESPAGE_FINISHHEADER_TEXT',
+                       'MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT', 
'MUI_INSTFILESPAGE_ABORTHEADER_TEXT',
+                       'MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT', 
'MUI_FINISHPAGE_TITLE', 'MUI_FINISHPAGE_TITLE_3LINES',
+                       'MUI_FINISHPAGE_TEXT', 'MUI_FINISHPAGE_TEXT_LARGE', 
'MUI_FINISHPAGE_BUTTON',
+                       'MUI_FINISHPAGE_TEXT_REBOOT', 
'MUI_FINISHPAGE_TEXT_REBOOTNOW', 'MUI_FINISHPAGE_TEXT_REBOOTLATER',
+                       'MUI_FINISHPAGE_RUN', 'MUI_FINISHPAGE_RUN_TEXT', 
'MUI_FINISHPAGE_RUN_PARAMETERS',
+                       'MUI_FINISHPAGE_RUN_NOTCHECKED', 
'MUI_FINISHPAGE_RUN_FUNCTION', 'MUI_FINISHPAGE_SHOWREADME',
+                       'MUI_FINISHPAGE_SHOWREADME_TEXT', 
'MUI_FINISHPAGE_SHOWREADME_NOTCHECKED',
+                       'MUI_FINISHPAGE_SHOWREADME_FUNCTION', 
'MUI_FINISHPAGE_LINK', 'MUI_FINISHPAGE_LINK_LOCATION',
+                       'MUI_FINISHPAGE_LINK_COLOR', 
'MUI_FINISHPAGE_NOREBOOTSUPPORT', 'MUI_UNCONFIRMPAGE_TEXT_TOP',
+                       'MUI_UNCONFIRMPAGE_TEXT_LOCATION', 'MUI_LANGUAGE', 
'MUI_LANGDLL_DISPLAY',
+                       'MUI_LANGDLL_REGISTRY_ROOT', 
'MUI_LANGDLL_REGISTRY_KEY', 'MUI_LANGDLL_REGISTRY_VALUENAME',
+                       'MUI_LANGDLL_WINDOWTITLE', 'MUI_LANGDLL_INFO', 
'MUI_LANGDLL_ALWAYSSHOW',
+                       'MUI_RESERVEFILE_INSTALLOPTIONS', 
'MUI_RESERVEFILE_LANGDLL', 'MUI_FUNCTION_DESCRIPTION_BEGIN',
+                       'MUI_DESCRIPTION_TEXT', 'MUI_FUNCTION_DESCRIPTION_END', 
'MUI_INSTALLOPTIONS_EXTRACT',
+                       'MUI_INSTALLOPTIONS_EXTRACT_AS', 'MUI_HEADER_TEXT', 
'MUI_INSTALLOPTIONS_DISPLAY',
+                       'MUI_INSTALLOPTIONS_INITDIALOG', 
'MUI_INSTALLOPTIONS_SHOW',
+                       'MUI_INSTALLOPTIONS_DISPLAY_RETURN', 
'MUI_INSTALLOPTIONS_SHOW_RETURN',
+                       'MUI_INSTALLOPTIONS_READ', 'MUI_INSTALLOPTIONS_WRITE',
+                       'MUI_CUSTOMFUNCTION_GUIINIT', 
'MUI_CUSTOMFUNCTION_GUIINIT',
+                       'MUI_CUSTOMFUNCTION_UNGUIINIT', 
'MUI_CUSTOMFUNCTION_ABORT', 'MUI_CUSTOMFUNCTION_UNABORT',
+                       'MUI_PAGE_CUSTOMFUNCTION_PRE', 
'MUI_PAGE_CUSTOMFUNCTION_SHOW', 'MUI_PAGE_CUSTOMFUNCTION_LEAVE',
+                       'MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT'
+                  ),
+               9 => array(
+                       'LogicLib.nsh', '${LOGICLIB}', 'LOGICLIB_STRCMP', 
'LOGICLIB_INT64CMP', 'LOGICLIB_SECTIONCMP', '${If}', '${Unless}',
+                       '${ElseIf}', '${ElseUnless}', '${Else}', '${EndIf}', 
'${EndUnless}', '${AndIf}', '${AndUnless}',
+                       '${OrIf}', '${OrUnless}', '${IfThen}', '${IfCmd}', 
'${Select}', '${Case2}', '${Case3}',
+                       '${Case4}', '${Case5}', '${CaseElse}', '${Default}', 
'${EndSelect}', '${Switch}',
+                       '${Case}', '${EndSwitch}', '${Do}', '${DoWhile}', 
'${UntilWhile}', '${Continue}', '${Break}',
+                       '${Loop}', '${LoopWhile}', '${LoopUntil}', '${While}', 
'${ExitWhile}', '${EndWhile}', '${For}',
+                       '${ForEach}', '${ExitFor}', '${Next}', '${Abort}', 
'${Errors}', '${RebootFlag}', '${Silent}',
+                       '${FileExists}', '${Cmd}', '${SectionIsSelected}', 
'${SectionIsSectionGroup}',
+                       '${SectionIsSectionGroupEnd}', '${SectionIsBold}', 
'${SectionIsReadOnly}',
+                       '${SectionIsExpanded}', '${SectionIsPartiallySelected}'
+                  ),
+               10 => array(
+                       'StrFunc.nsh', '${STRFUNC}', '${StrCase}', '${StrClb}', 
'${StrIOToNSIS}', '${StrLoc}', '${StrNSISToIO}', '${StrRep}',
+                       '${StrSort}', '${StrStr}', '${StrStrAdv}', '${StrTok}', 
'${StrTrimNewLines}'
+                  ),
+               11 => array(
+                       'UpgradeDLL.nsh', 'UPGRADEDLL_INCLUDED', 'UpgradeDLL'
+                  ),
+               12 => array(
+                       'Sections.nsh', 'SECTIONS_INCLUDED', '${SF_SELECTED}', 
'${SF_SECGRP}', '${SF_SUBSEC}', '${SF_SECGRPEND}',
+                       '${SF_SUBSECEND}', '${SF_BOLD}', '${SF_RO}', 
'${SF_EXPAND}', '${SF_PSELECTED}', '${SF_TOGGLED}',
+                       '${SF_NAMECHG}', '${SECTION_OFF}', 'SelectSection', 
'UnselectSection', 'ReverseSection',
+                       'StartRadioButtons', 'RadioButton', 'EndRadioButtons', 
'${INSTTYPE_1}', '${INSTTYPE_1}', '${INSTTYPE_2}',
+                       '${INSTTYPE_3}', '${INSTTYPE_4}', '${INSTTYPE_5}', 
'${INSTTYPE_6}', '${INSTTYPE_7}', '${INSTTYPE_8}',
+                       '${INSTTYPE_9}', '${INSTTYPE_10}', '${INSTTYPE_11}', 
'${INSTTYPE_12}', '${INSTTYPE_13}', '${INSTTYPE_14}',
+                       '${INSTTYPE_15}', '${INSTTYPE_16}', '${INSTTYPE_17}', 
'${INSTTYPE_18}', '${INSTTYPE_19}', '${INSTTYPE_20}',
+                       '${INSTTYPE_21}', '${INSTTYPE_22}', '${INSTTYPE_23}', 
'${INSTTYPE_24}', '${INSTTYPE_25}', '${INSTTYPE_26}',
+                       '${INSTTYPE_27}', '${INSTTYPE_28}', '${INSTTYPE_29}', 
'${INSTTYPE_30}', '${INSTTYPE_31}', '${INSTTYPE_32}',
+                       'SetSectionInInstType', 'ClearSectionInInstType', 
'SetSectionFlag', 'ClearSectionFlag', 'SectionFlagIsSet'
+                  ),
+               13 => array(
+                       'Colors.nsh', 'WHITE', 'BLACK', 'YELLOW', 'RED', 
'GREEN', 'BLUE', 'MAGENTA', 'CYAN', 'rgb2hex'
+                  ),
+               14 => array(
+                       'FileFunc.nsh', '${Locate}', '${GetSize}', 
'${DriveSpace}', '${GetDrives}', '${GetTime}', '${GetFileAttributes}', 
'${GetFileVersion}', '${GetExeName}', '${GetExePath}', '${GetParameters}', 
'${GetOptions}', '${GetRoot}', '${GetParent}', '${GetFileName}', 
'${GetBaseName}', '${GetFileExt}', '${BannerTrimPath}', '${DirState}', 
'${RefreshShellIcons}'
+                  ),
+               15 => array(
+                       'TextFunc.nsh', '${LineFind}', '${LineRead}', 
'${FileReadFromEnd}', '${LineSum}', '${FileJoin}', '${TextCompare}', 
'${ConfigRead}', '${ConfigWrite}', '${FileRecode}', '${TrimNewLines}'
+                  ),
+               16 => array(
+                       'WordFunc.nsh', '${WordFind}', '${WordFind2X}', 
'${WordFind3X}', '${WordReplace}', '${WordAdd}', '${WordInsert}', 
'${StrFilter}', '${VersionCompare}', '${VersionConvert}'
+                  )
+       ),
+       'SYMBOLS' => array(
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false,
+               6 => false,
+               7 => false,
+               8 => false,
+               9 => false,
+               10 => false,
+               11 => false,
+               12 => false,
+               13 => false,
+               14 => false,
+               15 => false,
+               16 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #000066; font-weight:bold;',
+                       2 => 'color: #000066;',
+                       3 => 'color: #003366;',
+                       4 => 'color: #000099;',
+                       5 => 'color: #ff6600;',
+                       6 => 'color: #ff6600;',
+                       7 => 'color: #006600;',
+                       8 => 'color: #006600;',
+                       9 => 'color: #006600;',
+                       10 => 'color: #006600;',
+                       11 => 'color: #006600;',
+                       12 => 'color: #006600;',
+                       13 => 'color: #006600;',
+                       14 => 'color: #006600;',
+                       15 => 'color: #006600;',
+                       16 => 'color: #006600;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #666666; font-style: italic;',
+                       2 => 'color: #666666; font-style: italic;',
+                       'MULTI' => 'color: #666666; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #660066; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => ''
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #660066;'
+                       ),
+               'NUMBERS' => array(
+                       0 => ''
+                       ),
+               'METHODS' => array(
+                       0 => ''
+                       ),
+               'SYMBOLS' => array(
+                       0 => ''
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #660000;',
+                       1 => 'color: #660000;',
+                       2 => 'color: #660000;',
+                       3 => 'color: #660000;',
+                       4 => 'color: #660000;',
+                       5 => 'color: #660000;',
+                       6 => 'color: #660000;',
+                       7 => 'color: #000099;',
+                       8 => 'color: #003399;'
+                       ),
+               'SCRIPT' => array(
+                       0 => ''
+                       )
+               ),
+       'URLS' => array(
+               0 => '',
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => '',
+               5 => '',
+               6 => '',
+               7 => '',
+               8 => '',
+               9 => '',
+               10 => '',
+               11 => '',
+               12 => '',
+               13 => '',
+               14 => '',
+               15 => '',
+               16 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => '\$\$',
+               1 => '\$\\r',
+               2 => '\$\\n',
+               3 => '\$\\t',
+               4 => '\$[a-zA-Z0-9_]+',
+               5 => '\$\{.{1,256}\}',
+               6 => '\$\\\(.{1,256}\\\)',
+               7 => array(
+                       GESHI_SEARCH => 
'([^:/\\\*\?\"\<\>\|\s]*?)(::)([^:/\\\*\?\"\<\>\|\s]*?)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '\\2\\3'
+                       ),
+               8 => array(
+                       GESHI_SEARCH => 
'([^:/\\\*\?\"\<\>\|\s]*?)(::)([^:/\\\*\?\"\<\>\|]*?\s)',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1\\2',
+                       GESHI_AFTER => ''
+                       )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/objc.php
===================================================================
RCS file: geshi/objc.php
diff -N geshi/objc.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/objc.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,241 @@
+<?php
+/*************************************************************************************
+ * objc.php
+ * --------
+ * Author: M. Uli Kusterer (address@hidden)
+ * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie 
(http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Objective C language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Objective C',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'if', 'return', 'while', 'case', 'continue', 'default',
+                       'do', 'else', 'for', 'switch', 'goto'
+                       ),
+               2 => array(
+                       'NULL', 'false', 'break', 'true', 'enum', 'nil', 'Nil', 
'errno', 'EDOM',
+                       'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 
'DBL_DIG', 'LDBL_DIG',
+                       'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 
'FLT_MANT_DIG', 'DBL_MANT_DIG',
+                       'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 
'FLT_MAX_EXP', 'DBL_MAX_EXP',
+                       'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 
'FLT_MIN_EXP', 'DBL_MIN_EXP',
+                       'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 
'SCHAR_MAX', 'SCHAR_MIN',
+                       'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 
'INT_MAX', 'INT_MIN',
+                       'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 
'HUGE_VAL', 'SIGABRT',
+                       'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 
'SIG_DFL', 'SIG_ERR',
+                       'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 
'FOPEN_MAX', 'L_tmpnam', 'NULL',
+                       'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 
'stdout', 'stderr',
+                       'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 
'CLOCKS_PER_SEC'
+                       ),
+               3 => array(
+                       'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
+                       'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 
'islower', 'isprint',
+                       'ispunct', 'isspace', 'ispunct', 'isupper', 'isxdigit', 
'tolower', 'toupper',
+                       'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 
'fabs', 'ldexp',
+                       'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 
'acos', 'atan', 'atan2',
+                       'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp', 'asin', 
'acos', 'atan', 'atan2',
+                       'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 
'fopen', 'freopen',
+                       'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 
'tmpname', 'setvbuf',
+                       'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 
'scanf', 'sscanf',
+                       'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 
'gets', 'putc',
+                       'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 
'fseek', 'ftell', 'rewind',
+                       'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 
'perror', 'abs', 'labs',
+                       'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 
'strtol', 'strtoul', 'calloc',
+                       'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 
'system', 'getenv',
+                       'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 
'strncpy', 'strcat', 'strncat',
+                       'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 
'strspn', 'strcspn',
+                       'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 
'strxfrm', 'memcpy',
+                       'memmove', 'memcmp', 'memchr', 'memset', 'clock', 
'time', 'difftime', 'mktime',
+                       'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
+                       ),
+               4 => array(   // Data types:
+                       'auto', 'char', 'const', 'double',  'float', 'int', 
'long',
+                       'register', 'short', 'signed', 'sizeof', 'static', 
'string', 'struct',
+                       'typedef', 'union', 'unsigned', 'void', 'volatile', 
'extern', 'jmp_buf',
+                       'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 
'FILE', 'fpos_t',
+                       'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
+                       // OpenStep/GNUstep/Cocoa:
+                       'SEL', 'id', 'NSRect', 'NSRange', 'NSPoint', 'NSZone', 
'Class', 'IMP', 'BOOL',
+                       // OpenStep/GNUstep/Cocoa @identifiers
+                       '@selector', '@class', '@protocol', '@interface', 
'@implementation', '@end',
+                       '@private', '@protected', '@public', '@try', '@throw', 
'@catch', '@finally',
+                       '@encode', '@defs', '@synchronized'
+                       ),
+        5 => array( // OpenStep/GNUstep/Cocoa Foundation
+                       'NSAppleEventDescriptor', 'NSNetService', 
'NSAppleEventManager',
+                       'NSNetServiceBrowser', 'NSAppleScript', 
'NSNotification', 'NSArchiver',
+                       'NSNotificationCenter', 'NSArray', 
'NSNotificationQueue', 'NSAssertionHandler',
+                       'NSNull', 'NSAttributedString', 'NSNumber', 
'NSAutoreleasePool',
+                       'NSNumberFormatter', 'NSBundle', 'NSObject', 
'NSCachedURLResponse',
+                       'NSOutputStream', 'NSCalendarDate', 'NSPipe', 
'NSCharacterSet', 'NSPort',
+                       'NSClassDescription', 'NSPortCoder', 'NSCloneCommand', 
'NSPortMessage',
+                       'NSCloseCommand', 'NSPortNameServer', 'NSCoder', 
'NSPositionalSpecifier',
+                       'NSConditionLock', 'NSProcessInfo', 'NSConnection', 
'NSPropertyListSerialization',
+                       'NSCountCommand', 'NSPropertySpecifier', 
'NSCountedSet', 'NSProtocolChecker',
+                       'NSCreateCommand', 'NSProxy', 'NSData', 
'NSQuitCommand', 'NSDate',
+                       'NSRandomSpecifier', 'NSDateFormatter', 
'NSRangeSpecifier', 'NSDecimalNumber',
+                       'NSRecursiveLock', 'NSDecimalNumberHandler', 
'NSRelativeSpecifier',
+                       'NSDeleteCommand', 'NSRunLoop', 'NSDeserializer', 
'NSScanner', 'NSDictionary',
+                       'NSScriptClassDescription', 'NSDirectoryEnumerator', 
'NSScriptCoercionHandler',
+                       'NSDistantObject', 'NSScriptCommand', 
'NSDistantObjectRequest',
+                       'NSScriptCommandDescription', 'NSDistributedLock', 
'NSScriptExecutionContext',
+                       'NSDistributedNotificationCenter', 
'NSScriptObjectSpecifier', 'NSEnumerator',
+                       'NSScriptSuiteRegistry', 'NSError', 
'NSScriptWhoseTest', 'NSException',
+                       'NSSerializer', 'NSExistsCommand', 'NSSet', 
'NSFileHandle', 'NSSetCommand',
+                       'NSFileManager', 'NSSocketPort', 'NSFormatter', 
'NSSocketPortNameServer',
+                       'NSGetCommand', 'NSSortDescriptor', 'NSHost', 
'NSSpecifierTest', 'NSHTTPCookie',
+                       'NSSpellServer', 'NSHTTPCookieStorage', 'NSStream', 
'NSHTTPURLResponse',
+                       'NSString', 'NSIndexSet', 'NSTask', 'NSIndexSpecifier', 
'NSThread',
+                       'NSInputStream', 'NSTimer', 'NSInvocation', 
'NSTimeZone', 'NSKeyedArchiver',
+                       'NSUnarchiver', 'NSKeyedUnarchiver', 'NSUndoManager', 
'NSLock',
+                       'NSUniqueIDSpecifier', 'NSLogicalTest', 'NSURL', 
'NSMachBootstrapServer',
+                       'NSURLAuthenticationChallenge', 'NSMachPort', 
'NSURLCache', 'NSMessagePort',
+                       'NSURLConnection', 'NSMessagePortNameServer', 
'NSURLCredential',
+                       'NSMethodSignature', 'NSURLCredentialStorage', 
'NSMiddleSpecifier',
+                       'NSURLDownload', 'NSMoveCommand', 'NSURLHandle', 
'NSMutableArray',
+                       'NSURLProtectionSpace', 'NSMutableAttributedString', 
'NSURLProtocol',
+                       'NSMutableCharacterSet', 'NSURLRequest', 
'NSMutableData', 'NSURLResponse',
+                       'NSMutableDictionary', 'NSUserDefaults', 
'NSMutableIndexSet', 'NSValue',
+                       'NSMutableSet', 'NSValueTransformer', 
'NSMutableString', 'NSWhoseSpecifier',
+                       'NSMutableURLRequest', 'NSXMLParser', 'NSNameSpecifier'
+               ),
+               6 => array( // OpenStep/GNUstep/Cocoa AppKit
+                       'NSActionCell', 'NSOpenGLPixelFormat', 
'NSAffineTransform', 'NSOpenGLView',
+                       'NSAlert', 'NSOpenPanel', 'NSAppleScript Additions', 
'NSOutlineView',
+                       'NSApplication', 'NSPageLayout', 'NSArrayController', 
'NSPanel',
+                       'NSATSTypesetter', 'NSParagraphStyle', 'NSPasteboard', 
'NSBezierPath',
+                       'NSPDFImageRep', 'NSBitmapImageRep', 'NSPICTImageRep', 
'NSBox', 'NSPopUpButton',
+                       'NSBrowser', 'NSPopUpButtonCell', 'NSBrowserCell', 
'NSPrinter', 'NSPrintInfo',
+                       'NSButton', 'NSPrintOperation', 'NSButtonCell', 
'NSPrintPanel', 'NSCachedImageRep',
+                       'NSProgressIndicator', 'NSCell', 'NSQuickDrawView', 
'NSClipView', 'NSResponder',
+                       'NSRulerMarker', 'NSColor', 'NSRulerView', 
'NSColorList', 'NSSavePanel',
+                       'NSColorPanel', 'NSScreen', 'NSColorPicker', 
'NSScroller', 'NSColorWell',
+                       'NSScrollView', 'NSComboBox', 'NSSearchField', 
'NSComboBoxCell',
+                       'NSSearchFieldCell', 'NSControl', 'NSSecureTextField', 
'NSController',
+                       'NSSecureTextFieldCell', 'NSCursor', 'NSSegmentedCell', 
'NSCustomImageRep',
+                       'NSSegmentedControl', 'NSDocument', 'NSShadow', 
'NSDocumentController',
+                       'NSSimpleHorizontalTypesetter', 'NSDrawer', 'NSSlider', 
'NSEPSImageRep',
+                       'NSSliderCell', 'NSEvent', 'NSSound', 'NSFileWrapper', 
'NSSpeechRecognizer',
+                       'NSFont', 'NSSpeechSynthesizer', 'NSFontDescriptor', 
'NSSpellChecker',
+                       'NSFontManager', 'NSSplitView', 'NSFontPanel', 
'NSStatusBar', 'NSForm',
+                       'NSStatusItem', 'NSFormCell', 'NSStepper', 
'NSGlyphGenerator', 'NSStepperCell',
+                       'NSGlyphInfo', 'NSGraphicsContext', 'NSTableColumn', 
'NSHelpManager',
+                       'NSTableHeaderCell', 'NSImage', 'NSTableHeaderView', 
'NSImageCell', 'NSTableView',
+                       'NSImageRep', 'NSTabView', 'NSImageView', 
'NSTabViewItem', 'NSInputManager',
+                       'NSText', 'NSInputServer', 'NSTextAttachment', 
'NSLayoutManager',
+                       'NSTextAttachmentCell', 'NSMatrix', 'NSTextContainer', 
'NSMenu', 'NSTextField',
+                       'NSMenuItem', 'NSTextFieldCell', 'NSMenuItemCell', 
'NSTextStorage', 'NSMenuView',
+                       'NSTextTab', 'NSMovie', 'NSTextView', 'NSMovieView', 
'NSToolbar', 'NSToolbarItem',
+                       'NSMutableParagraphStyle', 'NSTypesetter', 'NSNib', 
'NSNibConnector',
+                       'NSUserDefaultsController', 'NSNibControlConnector', 
'NSView',
+                       'NSNibOutletConnector', 'NSWindow', 
'NSObjectController', 'NSWindowController',
+                       'NSOpenGLContext', 'NSWorkspace', 'NSOpenGLPixelBuffer'
+               )
+       ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', 
'%', '^', '&', ':'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false,
+               6 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0000ff;',
+                       2 => 'color: #0000ff;',
+                       3 => 'color: #0000dd;',
+                       4 => 'color: #0000ff;',
+                       5 => 'color: #0000ff;',
+                       6 => 'color: #0000ff;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #ff0000;',
+                       2 => 'color: #339900;',
+                       'MULTI' => 'color: #ff0000; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #666666; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #002200;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #666666;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #0000dd;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #002200;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 
'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
+               4 => '',
+               5 => 
'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/{FNAME}.html',
+               6 => 
'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/ObjC_classic/Classes/{FNAME}.html'
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/ocaml-brief.php
===================================================================
RCS file: geshi/ocaml-brief.php
diff -N geshi/ocaml-brief.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/ocaml-brief.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,114 @@
+<?php
+/*************************************************************************************
+ * ocaml.php
+ * ----------
+ * Author: Flaie (address@hidden)
+ * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/08/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * OCaml (Objective Caml) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2005/08/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'OCaml',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array('(*' => '*)'),
+       'CASE_KEYWORDS' => 0,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => "",
+       'KEYWORDS' => array(
+          /* main OCaml keywords */
+               1 => array(
+                       'and', 'As', 'asr', 'begin', 'Class', 'Closed', 
'constraint', 'do', 'done', 'downto', 'else',
+                       'end', 'exception', 'external', 'failwith', 'false', 
'flush', 'for', 'fun', 'function', 'functor',
+                       'if', 'in', 'include', 'inherit',  'incr', 'land', 
'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
+                       'match', 'method', 'mod', 'module', 'mutable', 'new', 
'not', 'of', 'open', 'option', 'or', 'parser',
+                       'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 
'struct', 'stdout', 'stdin', 'stderr', 'then',
+                       'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 
'while', 'with'
+                       )
+               ),
+       /* highlighting symbols is really important in OCaml */
+       'SYMBOLS' => array(
+                       ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+', 
+                       '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
+                       ), 
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #06c; font-weight: bold;' /* nice blue */
+                       ),
+               'COMMENTS' => array(
+                       'MULTI' => 'color: #5d478b; font-style: italic;' /* 
light purple */
+                       ),
+               'ESCAPE_CHAR' => array(
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #6c6;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #3cb371;' /* nice green */
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #c6c;' /* pink */
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #060;' /* dark green */
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SYMBOLS' => array( 
+                       0 => 'color: #a52a2a;' /* maroon */
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/ocaml.php
===================================================================
RCS file: geshi/ocaml.php
diff -N geshi/ocaml.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/ocaml.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,163 @@
+<?php
+/*************************************************************************************
+ * ocaml.php
+ * ----------
+ * Author: Flaie (address@hidden)
+ * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/08/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * OCaml (Objective Caml) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2005/08/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'OCaml',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array('(*' => '*)'),
+       'CASE_KEYWORDS' => 0,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => "",
+       'KEYWORDS' => array(
+          /* main OCaml keywords */
+               1 => array(
+                       'and', 'As', 'asr', 'begin', 'Class', 'Closed', 
'constraint', 'do', 'done', 'downto', 'else',
+                       'end', 'exception', 'external', 'failwith', 'false', 
'flush', 'for', 'fun', 'function', 'functor',
+                       'if', 'in', 'include', 'inherit',  'incr', 'land', 
'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
+                       'match', 'method', 'mod', 'module', 'mutable', 'new', 
'not', 'of', 'open', 'option', 'or', 'parser',
+                       'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 
'struct', 'stdout', 'stdin', 'stderr', 'then',
+                       'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 
'while', 'with'
+                       ),
+               /* define names of main librarys, so we can link to it */
+               2 => array(
+                       'Arg', 'Arith_status', 'Array', 'ArrayLabels', 
'Big_int', 'Bigarray', 'Buffer', 'Callback',
+                       'CamlinternalOO', 'Char', 'Complex', 'Condition', 
'Dbm', 'Digest', 'Dynlink', 'Event',
+                       'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 
'GraphicsX11', 'Hashtbl', 'Int32', 'Int64',
+                       'Lazy', 'Lexing', 'List', 'ListLabels', 'Map', 
'Marshal', 'MoreLabels', 'Mutex', 'Nativeint',
+                       'Num', 'Obj', 'Oo', 'Parsing', 'Pervasives', 
'Printexc', 'Printf', 'Queue', 'Random', 'Scanf',
+                       'Set', 'Sort', 'Stack', 'StdLabels', 'Str', 'Stream', 
'String', 'StringLabels', 'Sys', 'Thread',
+                       'ThreadUnix', 'Tk'
+                  ),
+               /* just link to the Pervasives functions library, cause it's 
the default opened library when starting OCaml */
+               3 => array(
+                       'raise', 'invalid_arg', 'failwith', 'compare', 'min', 
'max', 'succ', 'pred', 'mod', 'abs', 
+                       'max_int', 'min_int', 'sqrt', 'exp', 'log', 'log10', 
'cos', 'sin', 'tan', 'acos', 'asin', 
+                       'atan', 'atan2', 'cosh', 'sinh', 'tanh', 'ceil', 
'floor', 'abs_float', 'mod_float', 'frexp',
+                       'ldexp', 'modf', 'float', 'float_of_int', 'truncate', 
'int_of_float', 'infinity', 'nan',
+                       'max_float', 'min_float', 'epsilon_float', 
'classify_float', 'int_of_char', 'char_of_int', 
+                       'ignore', 'string_of_bool', 'bool_of_string', 
'string_of_int', 'int_of_string', 
+                       'string_of_float', 'float_of_string', 'fst', 'snd', 
'stdin', 'stdout', 'stderr', 'print_char',
+                       'print_string', 'print_int', 'print_float', 
'print_endline', 'print_newline', 'prerr_char',
+                       'prerr_string', 'prerr_int', 'prerr_float', 
'prerr_endline', 'prerr_newline', 'read_line',
+                       'read_int', 'read_float', 'open_out', 'open_out_bin', 
'open_out_gen', 'flush', 'flush_all',
+                       'output_char', 'output_string', 'output', 
'output_byte', 'output_binary_int', 'output_value',
+                       'seek_out', 'pos_out',  'out_channel_length', 
'close_out', 'close_out_noerr', 'set_binary_mode_out',
+                       'open_in', 'open_in_bin', 'open_in_gen', 'input_char', 
'input_line', 'input', 'really_input',
+                       'input_byte', 'input_binary_int', 'input_value', 
'seek_in', 'pos_in', 'in_channel_length',
+                       'close_in', 'close_in_noerr', 'set_binary_mode_in', 
'incr', 'decr', 'string_of_format',
+                       'format_of_string', 'exit', 'at_exit' 
+                  ),
+               /* here Pervasives Types */
+               4 => array (
+                  'fpclass', 'in_channel', 'out_channel', 'open_flag', 
'Sys_error', 'ref', 'format'
+                  ),
+               /* finally Pervasives Exceptions */
+               5 => array (
+                       'Exit', 'Invalid_Argument', 'Failure', 
'Division_by_zero'
+                  )
+               ),
+       /* highlighting symbols is really important in OCaml */
+       'SYMBOLS' => array(
+                       ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+', 
+                       '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
+                       ), 
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => true, /* functions name are case seinsitive */
+               3 => true, /* types name too */
+               4 => true  /* finally exceptions too */
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #06c; font-weight: bold;' /* nice blue */
+                       ),
+               'COMMENTS' => array(
+                       'MULTI' => 'color: #5d478b; font-style: italic;' /* 
light purple */
+                       ),
+               'ESCAPE_CHAR' => array(
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #6c6;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #3cb371;' /* nice green */
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #c6c;' /* pink */
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #060;' /* dark green */
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SYMBOLS' => array( 
+                       0 => 'color: #a52a2a;' /* maroon */
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+          /* some of keywords are Pervasives functions (land, lxor, asr, ...) 
*/
+               1 => '',
+               /* link to the wanted library */
+               2 => 
'http://caml.inria.fr/pub/docs/manual-ocaml/libref/{FNAME}.html', 
+               /* link to Pervasives functions */
+               3 => 
'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VAL{FNAME}', 
+               /* link to Pervasives type */
+               4 => 
'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#TYPE{FNAME}',
+               /* link to Pervasives exceptions */
+               5 => 
'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#EXCEPTION{FNAME}'
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/oobas.php
===================================================================
RCS file: geshi/oobas.php
diff -N geshi/oobas.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/oobas.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,132 @@
+<?php
+/*************************************************************************************
+ * oobas.php
+ * ---------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * OpenOffice.org Basic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'OpenOffice.org Basic',
+       'COMMENT_SINGLE' => array(1 => "'"),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       
'dim','private','public','global','as','if','redim','true','set',
+                       'byval',
+                       
'false','bool','double','integer','long','object','single','variant',
+                       
'msgbox','print','inputbox','green','blue','red','qbcolor',
+                       
'rgb','open','close','reset','freefile','get','input','line',
+                       
'put','write','loc','seek','eof','lof','chdir','chdrive',
+                       
'curdir','dir','fileattr','filecopy','filedatetime','fileexists',
+                       
'filelen','getattr','kill','mkdir','name','rmdir','setattr',
+                       
'dateserial','datevalue','day','month','weekday','year','cdatetoiso',
+                       
'cdatefromiso','hour','minute','second','timeserial','timevalue',
+                       
'date','now','time','timer','erl','err','error','on','error','goto','resume',
+                       
'and','eqv','imp','not','or','xor','mod','','atn','cos','sin','tan','log',
+                       
'exp','rnd','randomize','sqr','fix','int','abs','sgn','hex','oct',
+                       
'it','then','else','select','case','iif','do','loop','for','next',
+                       
'while','wend','gosub','return','goto','on','goto','call','choose','declare',
+                       
'end','exit','freelibrary','function','rem','stop','sub','switch','with',
+                       
'cbool','cdate','cdbl','cint','clng','const','csng','cstr','defbool',
+                       
'defdate','defdbl','defint','deflng','asc','chr','str','val','cbyte',
+                       
'space','string','format','lcase','left','lset','ltrim','mid','right',
+                       
'rset','rtrim','trim','ucase','split','join','converttourl','convertfromurl',
+                       
'instr','len','strcomp','beep','shell','wait','getsystemticks','environ',
+                       
'getsolarversion','getguitype','twipsperpixelx','twipsperpixely',
+                       
'createunostruct','createunoservice','getprocessservicemanager',
+                       
'createunodialog','createunolistener','createunovalue','thiscomponent',
+                       'globalscope'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '='
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/oracle8.php
===================================================================
RCS file: geshi/oracle8.php
diff -N geshi/oracle8.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/oracle8.php   25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,489 @@
+<?php
+/*************************************************************************************
+ * oracle8.php
+ * -----------
+ * Author: Guy Wicks (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Oracle 8 language file for GeSHi
+ *
+ * CHANGES
+ * -------
+ * 2005/01/29 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Oracle 8 SQL',
+       'COMMENT_SINGLE' => array(1 => '--'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+       'QUOTEMARKS' => array("'", '"', '`'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+//Put your package names here - e.g. select distinct ''''|| lower(name) || 
''',' from user_source;
+               6 => array(
+                       ),
+
+//Put your table names here - e.g. select distinct ''''|| lower(table_name) || 
''',' from user_tables;
+               5 => array(
+                       ),
+
+//Put your view names here - e.g. select distinct ''''|| lower(view_name) || 
''',' from user_views;
+               4 => array(
+                       ),
+
+//Put your table field names here - e.g. select distinct ''''|| 
lower(column_name) || ''',' from user_tab_columns;
+               3 => array(
+                       ),
+//Put ORACLE reserved keywords here (8.1.7).  I like mine uppercase.
+               1 => array(
+                       'ABS',
+                       'ACCESS',
+                       'ACOS',
+                       'ADD',
+                       'ADD_MONTHS',
+                       'ALL',
+                       'ALTER',
+                       'ANALYZE',
+                       'AND',
+                       'ANY',
+                       'ARRAY',
+                       'AS',
+                       'ASC',
+                       'ASCII',
+                       'ASIN',
+                       'ASSOCIATE',
+                       'AT',
+                       'ATAN',
+                       'ATAN2',
+                       'AUDIT',
+                       'AUTHID',
+                       'AVG',
+                       'BEGIN',
+                       'BETWEEN',
+                       'BFILENAME',
+                       'BINARY_INTEGER',
+                       'BITAND',
+                       'BODY',
+                       'BOOLEAN',
+                       'BULK',
+                       'BY',
+                       'CALL',
+                       'CASCADE',
+                       'CASE',
+                       'CEIL',
+                       'CHAR',
+                       'CHAR_BASE',
+                       'CHARTOROWID',
+                       'CHECK',
+                       'CHR',
+                       'CLOSE',
+                       'CLUSTER',
+                       'COALESCE',
+                       'COLLECT',
+                       'COLUMN',
+                       'COMMENT',
+                       'COMMIT',
+                       'COMPRESS',
+                       'CONCAT',
+                       'CONNECT',
+                       'CONSTANT',
+                       'CONSTRAINT',
+                       'CONSTRAINTS',
+                       'CONTEXT',
+                       'CONTROLFILE',
+                       'CONVERT',
+                       'CORR',
+                       'COS',
+                       'COSH',
+                       'COST',
+                       'COUNT',
+                       'COVAR_POP',
+                       'COVAR_SAMP',
+                       'CREATE',
+                       'CUME_DIST',
+                       'CURRENT',
+                       'CURRVAL',
+                       'CURSOR',
+                       'DATABASE',
+                       'DATE',
+                       'DAY',
+                       'DECIMAL',
+                       'DECLARE',
+                       'DECODE',
+                       'DEFAULT',
+                       'DELETE',
+                       'DENSE_RANK',
+                       'DEREF',
+                       'DESC',
+                       'DIMENSION',
+                       'DIRECTORY',
+                       'DISASSOCIATE',
+                       'DISTINCT',
+                       'DO',
+                       'DROP',
+                       'DUMP',
+                       'ELSE',
+                       'ELSIF',
+                       'EMPTY_BLOB',
+                       'EMPTY_CLOB',
+                       'END',
+                       'EXCEPTION',
+                       'EXCLUSIVE',
+                       'EXEC',
+                       'EXECUTE',
+                       'EXISTS',
+                       'EXIT',
+                       'EXP',
+                       'EXPLAIN',
+                       'EXTENDS',
+                       'EXTRACT',
+                       'FALSE',
+                       'FETCH',
+                       'FILE',
+                       'FIRST_VALUE',
+                       'FLOAT',
+                       'FLOOR',
+                       'FOR',
+                       'FORALL',
+                       'FROM',
+                       'FUNCTION',
+                       'GOTO',
+                       'GRANT',
+                       'GREATEST',
+                       'GROUP',
+                       'GROUPING',
+                       'HAVING',
+                       'HEAP',
+                       'HEXTORAW',
+                       'HOUR',
+                       'IDENTIFIED',
+                       'IF',
+                       'IMMEDIATE',
+                       'IN',
+                       'INCREMENT',
+                       'INDEX',
+                       'INDEXTYPE',
+                       'INDICATOR',
+                       'INITCAP',
+                       'INITIAL',
+                       'INSERT',
+                       'INSTR',
+                       'INSTRB',
+                       'INTEGER',
+                       'INTERFACE',
+                       'INTERSECT',
+                       'INTERVAL',
+                       'INTO',
+                       'IS',
+                       'ISOLATION',
+                       'JAVA',
+                       'KEY',
+                       'LAG',
+                       'LAST_DAY',
+                       'LAST_VALUE',
+                       'LEAD',
+                       'LEAST',
+                       'LENGTH',
+                       'LENGTHB',
+                       'LEVEL',
+                       'LIBRARY',
+                       'LIKE',
+                       'LIMITED',
+                       'LINK',
+                       'LN',
+                       'LOCK',
+                       'LOG',
+                       'LONG',
+                       'LOOP',
+                       'LOWER',
+                       'LPAD',
+                       'LTRIM',
+                       'MAKE_REF',
+                       'MATERIALIZED',
+                       'MAX',
+                       'MAXEXTENTS',
+                       'MIN',
+                       'MINUS',
+                       'MINUTE',
+                       'MLSLABEL',
+                       'MOD',
+                       'MODE',
+                       'MODIFY',
+                       'MONTH',
+                       'MONTHS_BETWEEN',
+                       'NATURAL',
+                       'NATURALN',
+                       'NEW',
+                       'NEW_TIME',
+                       'NEXT_DAY',
+                       'NEXTVAL',
+                       'NLS_CHARSET_DECL_LEN',
+                       'NLS_CHARSET_ID',
+                       'NLS_CHARSET_NAME',
+                       'NLS_INITCAP',
+                       'NLS_LOWER',
+                       'NLS_UPPER',
+                       'NLSSORT',
+                       'NOAUDIT',
+                       'NOCOMPRESS',
+                       'NOCOPY',
+                       'NOT',
+                       'NOWAIT',
+                       'NTILE',
+                       'NULL',
+                       'NULLIF',
+                       'NUMBER',
+                       'NUMBER_BASE',
+                       'NUMTODSINTERVAL',
+                       'NUMTOYMINTERVAL',
+                       'NVL',
+                       'NVL2',
+                       'OCIROWID',
+                       'OF',
+                       'OFFLINE',
+                       'ON',
+                       'ONLINE',
+                       'OPAQUE',
+                       'OPEN',
+                       'OPERATOR',
+                       'OPTION',
+                       'OR',
+                       'ORDER',
+                       'ORGANIZATION',
+                       'OTHERS',
+                       'OUT',
+                       'OUTLINE',
+                       'PACKAGE',
+                       'PARTITION',
+                       'PCTFREE',
+                       'PERCENT_RANK',
+                       'PLAN',
+                       'PLS_INTEGER',
+                       'POSITIVE',
+                       'POSITIVEN',
+                       'POWER',
+                       'PRAGMA',
+                       'PRIMARY',
+                       'PRIOR',
+                       'PRIVATE',
+                       'PRIVILEGES',
+                       'PROCEDURE',
+                       'PROFILE',
+                       'PUBLIC',
+                       'RAISE',
+                       'RANGE',
+                       'RANK',
+                       'RATIO_TO_REPORT',
+                       'RAW',
+                       'RAWTOHEX',
+                       'REAL',
+                       'RECORD',
+                       'REF',
+                       'REFTOHEX',
+                       'REGR_AVGX',
+                       'REGR_AVGY',
+                       'REGR_COUNT',
+                       'REGR_INTERCEPT',
+                       'REGR_R2',
+                       'REGR_SLOPE',
+                       'REGR_SXX',
+                       'REGR_SXY',
+                       'REGR_SYY',
+                       'RELEASE',
+                       'RENAME',
+                       'REPLACE',
+                       'RESOURCE',
+                       'RETURN',
+                       'RETURNING',
+                       'REVERSE',
+                       'REVOKE',
+                       'ROLE',
+                       'ROLLBACK',
+                       'ROUND',
+                       'ROW',
+                       'ROW_NUMBER',
+                       'ROWID',
+                       'ROWIDTOCHAR',
+                       'ROWNUM',
+                       'ROWS',
+                       'ROWTYPE',
+                       'RPAD',
+                       'RTRIM',
+                       'SAVEPOINT',
+                       'SCHEMA',
+                       'SECOND',
+                       'SEGMENT',
+                       'SELECT',
+                       'SEPERATE',
+                       'SEQUENCE',
+                       'SESSION',
+                       'SET',
+                       'SHARE',
+                       'SIGN',
+                       'SIN',
+                       'SINH',
+                       'SIZE',
+                       'SMALLINT',
+                       'SOUNDEX',
+                       'SPACE',
+                       'SQL',
+                       'SQLCODE',
+                       'SQLERRM',
+                       'SQRT',
+                       'START',
+                       'STATISTICS',
+                       'STDDEV',
+                       'STDDEV_POP',
+                       'STDDEV_SAMP',
+                       'STOP',
+                       'SUBSTR',
+                       'SUBSTRB',
+                       'SUBTYPE',
+                       'SUCCESSFUL',
+                       'SUM',
+                       'SYNONYM',
+                       'SYS_CONTEXT',
+                       'SYS_GUID',
+                       'SYSDATE',
+                       'SYSTEM',
+                       'TABLE',
+                       'TABLESPACE',
+                       'TAN',
+                       'TANH',
+                       'TEMPORARY',
+                       'THEN',
+                       'TIME',
+                       'TIMESTAMP',
+                       'TIMEZONE_ABBR',
+                       'TIMEZONE_HOUR',
+                       'TIMEZONE_MINUTE',
+                       'TIMEZONE_REGION',
+                       'TIMING',
+                       'TO',
+                       'TO_CHAR',
+                       'TO_DATE',
+                       'TO_LOB',
+                       'TO_MULTI_BYTE',
+                       'TO_NUMBER',
+                       'TO_SINGLE_BYTE',
+                       'TRANSACTION',
+                       'TRANSLATE',
+                       'TRIGGER',
+                       'TRIM',
+                       'TRUE',
+                       'TRUNC',
+                       'TRUNCATE',
+                       'TYPE',
+                       'UI',
+                       'UID',
+                       'UNION',
+                       'UNIQUE',
+                       'UPDATE',
+                       'UPPER',
+                       'USE',
+                       'USER',
+                       'USERENV',
+                       'USING',
+                       'VALIDATE',
+                       'VALUE',
+                       'VALUES',
+                       'VAR_POP',
+                       'VAR_SAMP',
+                       'VARCHAR',
+                       'VARCHAR2',
+                       'VARIANCE',
+                       'VIEW',
+                       'VSIZE',
+                       'WHEN',
+                       'WHENEVER',
+                       'WHERE',
+                       'WHILE',
+                       'WITH',
+                       'WORK',
+                       'WRITE',
+                       'YEAR',
+                       'ZONE'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '=', '<', '>', '|'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #993333; font-weight: bold; 
text-transform: uppercase;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #ff0000;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/pascal.php
===================================================================
RCS file: geshi/pascal.php
diff -N geshi/pascal.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/pascal.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,145 @@
+<?php
+/*************************************************************************************
+ * pascal.php
+ * ----------
+ * Author: Tux (address@hidden)
+ * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/26
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Pascal language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.2)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.1)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.0)
+ *   -  Added support for symbols
+ * 2004/07/27 (0.9.1)
+ *   -  Pascal is OO language. Some new words.
+ * 2004/07/26 (0.9.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Pascal',
+       'COMMENT_SINGLE' => array(1 => '//'),
+       'COMMENT_MULTI' => array('{' => '}','(*' => '*)'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'if', 'while', 'until', 'repeat', 'default',
+                       'do', 'else', 'for', 'switch', 
'goto','label','asm','begin','end',
+                       'assembler','case', 'downto', 
'to','div','mod','far','forward','in','inherited',
+                       
'inline','interrupt','label','library','not','var','of','then','stdcall',
+                       
'cdecl','end.','raise','try','except','name','finally','resourcestring','override','overload',
+                       
'default','public','protected','private','property','published','stored','catch'
+                       ),
+               2 => array(
+                       'nil', 'false', 'break', 'true', 'function', 
'procedure','implementation','interface',
+                       'unit','program','initialization','finalization','uses'
+                       ),
+               3 => array(
+                       'abs', 
'absolute','and','arc','arctan','chr','constructor','destructor',
+                       
'dispose','cos','eof','eoln','exp','get','index','ln','new','xor','write','writeln',
+                       
'shr','sin','sqrt','succ','pred','odd','read','readln','ord','ordinal','blockread','blockwrite'
+                       ),
+               4 => array(
+                       'array', 'char', 'const', 'boolean',  'real', 
'integer', 'longint',
+                       'word', 'shortint', 'record','byte','bytebool','string',
+                       
'type','object','export','exports','external','file','longbool','pointer','set',
+                       'packed','ansistring','union'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => '',
+                       4 => 'color: #993333;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #339933;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #202020;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/perl.php
===================================================================
RCS file: geshi/perl.php
diff -N geshi/perl.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/perl.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,169 @@
+<?php
+/*************************************************************************************
+ * perl.php
+ * --------
+ * Author: Andreas Gohr (address@hidden), Ben Keen (address@hidden)
+ * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), 
Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Perl language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/01/05 (1.0.2)
+ *   -  Used hardescape feature for ' strings (Cliff Stanford)
+ * 2004/11/27 (1.0.1)
+ *   -  Added support for multiple object splitters
+ * 2004/08/20 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * LABEL:
+ * * string comparison operators
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Perl',
+       'COMMENT_SINGLE' => array(1 => '#'),
+       'COMMENT_MULTI' => array( '=pod' => '=cut'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'HARDQUOTE' => array("'", "'"),             // An optional 2-element 
array defining the beginning and end of a hard-quoted string
+       'HARDESCAPE' => array('\\\'', "\\\\"),      // Things that must still 
be escaped inside a hard-quoted string
+                                                   // If HARDQUOTE is defined, 
HARDESCAPE must be defined
+                                                   // This will not work 
unless the first character of each element is either in the
+                                                   // QUOTEMARKS array or is 
the ESCAPE_CHAR
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'case', 'do', 'else', 'elsif', 'for', 'if', 'then', 
'until', 'while', 'foreach', 'my',
+                       'or', 'and', 'unless', 'next', 'last', 'redo', 'not', 
'our',
+                       'reset', 'continue','and', 'cmp', 'ne'
+                       ),
+               2 => array(
+                       'use', 'sub', 'new', '__END__', '__DATA__', '__DIE__', 
'__WARN__', 'BEGIN',
+                       'STDIN', 'STDOUT', 'STDERR'
+                       ),
+               3 => array(
+                       'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 
'bless',
+                       'caller', 'chdir', 'chmod', 'chomp', 'chop', 'chown', 
'chr',
+                       'chroot', 'close', 'closedir', 'connect', 'continue', 
'cos',
+                       'crypt', 'dbmclose', 'dbmopen', 'defined', 'delete', 
'die',
+                       'dump', 'each', 'endgrent', 'endhostent', 'endnetent', 
'endprotoent',
+                       'endpwent', 'endservent', 'eof', 'eval', 'exec', 
'exists', 'exit',
+                       'exp', 'fcntl', 'fileno', 'flock', 'fork', 'format', 
'formline',
+                       'getc', 'getgrent', 'getgrgid', 'getgrnam', 
'gethostbyaddr',
+                       'gethostbyname', 'gethostent', 'getlogin', 
'getnetbyaddr', 'getnetbyname',
+                       'getnetent', 'getpeername', 'getpgrp', 'getppid', 
'getpriority',
+                       'getprotobyname', 'getprotobynumber', 'getprotoent', 
'getpwent',
+                       'getpwnam', 'getpwuid', 'getservbyname', 
'getservbyport', 'getservent',
+                       'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 
'grep',
+                       'hex', 'import', 'index', 'int', 'ioctl', 'join', 
'keys', 'kill',
+                       'last', 'lc', 'lcfirst', 'length', 'link', 'listen', 
'local',
+                       'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 
'msgctl', 'msgget',
+                       'msgrcv', 'msgsnd', 'my', 'next', 'no', 'oct', 'open', 
'opendir',
+                       'ord', 'our', 'pack', 'package', 'pipe', 'pop', 'pos', 
'print',
+                       'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 
'qw',
+                       'qx', 'q', 'rand', 'read', 'readdir', 'readline', 
'readlink', 'readpipe',
+                       'recv', 'redo', 'ref', 'rename', 'require', 'return',
+                       'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 
'scalar', 'seek',
+                       'seekdir', 'select', 'semctl', 'semget', 'semop', 
'send', 'setgrent',
+                       'sethostent', 'setnetent', 'setpgrp', 'setpriority', 
'setprotoent',
+                       'setpwent', 'setservent', 'setsockopt', 'shift', 
'shmctl', 'shmget',
+                       'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 
'socket', 'socketpair',
+                       'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 
'stat',
+                       'study', 'substr', 'symlink', 'syscall', 'sysopen', 
'sysread',
+                       'sysseek', 'system', 'syswrite', 'tell', 'telldir', 
'tie', 'tied',
+                       'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 
'umask', 'undef',
+                       'unlink', 'unpack', 'unshift', 'untie', 'utime', 
'values',
+                       'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 
'y'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => true,
+               2 => true,
+               3 => true,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;',
+                       4 => 'color: #009999;',
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               3 => 'http://www.perldoc.com/perl5.6/pod/func/{FNAME}.html'
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '-&gt;',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               0 => 'address@hidden',
+               4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/php-brief.php
===================================================================
RCS file: geshi/php-brief.php
diff -N geshi/php-brief.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/php-brief.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,162 @@
+<?php
+/*************************************************************************************
+ * php-brief.php
+ * -------------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/02
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * PHP language file for GeSHi (brief version).
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ *  -  Fixed &new problem
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Remove more functions that are hardly used
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'PHP',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'include', 'require', 'include_once', 'require_once',
+                       'for', 'as', 'foreach', 'if', 'elseif', 'else', 
'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
+                       'return', 'break'
+                       ),
+               2 => array(
+                       'null', '__LINE__', '__FILE__',
+                       'false', '&lt;?php', '?&gt;',
+                       'true', 'var', 'default',
+                       'function', 'class', 'new', '&amp;new', 'public', 
'private', 'interface', 'extends',
+                       ),
+               3 => array(
+                       'func_num_args', 'func_get_arg', 'func_get_args', 
'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 
'error_reporting', 'define', 'defined',
+                       'trigger_error', 'user_error', 'set_error_handler', 
'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
+                       'extension_loaded', 'get_extension_funcs', 
'debug_backtrace',
+                       'constant', 'bin2hex', 'sleep', 'usleep', 'time', 
'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 
'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 
'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 
'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 
'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 
'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 
'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 
'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 
'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 
'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 
'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 
'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
+                       'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 
'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 
'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 
'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 
'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 
'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 
'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 
'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 
'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 
'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 
'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 
'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
+                       'import_request_variables', 'error_log', 'serialize', 
'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 
'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 
'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 
'set_include_path', 'restore_include_path', 'setcookie', 'header', 
'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 
'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 
'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 
'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 
'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 
'is_scalar',
+                       'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 
'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 
'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 
'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 
'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 
'file', 'file_get_contents', 'stream_select', 'stream_context_create', 
'stream_context_set_params', 'stream_context_set_option', 
'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 
'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 
'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 
'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 
'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 
'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 
'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 
'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 
'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 
'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 
'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
+                       'touch', 'clearstatcache', 'mail', 'ob_start', 
'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 
'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 
'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 
'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 
'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 
'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 
'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 
'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 
'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 
'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 
'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 
'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 
'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 
'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 
'str_rot13', 'aggregate',
+                       'session_name', 'session_module_name', 
'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 
'session_register', 'session_unregister', 'session_is_registered', 
'session_encode',
+                       'session_start', 'session_destroy', 'session_unset', 
'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 
'session_set_cookie_params', 'session_get_cookie_params', 
'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 
'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 
'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 
'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 
'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 
'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 
'apache_response_headers', 'apache_get_version', 'getallheaders', 
'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 
'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 
'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 
'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 
'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 
'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 
'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 
'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 
'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 
'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 
'mysql_stat',
+                       'mysql_thread_id', 'mysql_client_encoding', 
'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 
'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 
'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 
'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 
'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 
'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 
'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 
'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 
'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 
'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 
'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 
'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 
'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 
'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 
'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 
'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 
'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
+                       'pg_trace', 'pg_untrace', 'pg_lo_create', 
'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 
'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 
'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 
'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 
'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 
'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 
'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 
'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 
'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 
'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
+                       'echo', 'print', 'global', 'static', 'exit', 'array', 
'empty', 'eval', 'isset', 'unset', 'die'
+                       )
+               ),
+       'SYMBOLS' => array(
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 'http://www.php.net/{FNAME}',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '-&gt;',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               '<?php' => '?>',
+               '<?' => '?>',
+               '<%' => '%>',
+               '<script language="php">' => '</script>'
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               3 => true
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/php.php
===================================================================
RCS file: geshi/php.php
diff -N geshi/php.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/php.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,348 @@
+<?php
+/*************************************************************************************
+ * php.php
+ * --------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * PHP language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/25 (1.0.3)
+ *  -  Added support for multiple object splitters
+ *  -  Fixed &new problem
+ * 2004/10/27 (1.0.2)
+ *  -  Added URL support
+ *  -  Added extra constants
+ * 2004/08/05 (1.0.1)
+ *  -  Added support for symbols
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * * Make sure the last few function I may have missed
+ *   (like eval()) are included for highlighting
+ * * Split to several files - php4, php5 etc
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'PHP',
+       'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'include', 'require', 'include_once', 'require_once',
+                       'for', 'foreach', 'as', 'if', 'elseif', 'else', 
'while', 'do', 'endwhile',
+            'endif', 'switch', 'case', 'endswitch',
+                       'return', 'break', 'continue'
+                       ),
+               2 => array(
+                       'null', '__LINE__', '__FILE__',
+                       'false', '&lt;?php', '?&gt;', '&lt;?',
+                       '&lt;script language', '&lt;/script&gt;',
+                       'true', 'var', 'default',
+                       'function', 'class', 'new', '&amp;new', 'public', 
'private', 'interface', 'extends',
+                       '__FUNCTION__', '__CLASS__', '__METHOD__', 
'PHP_VERSION',
+                       'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 
'PEAR_EXTENSION_DIR',
+                       'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 
'PHP_DATADIR', 'PHP_SYSCONFDIR',
+                       'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 
'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+                       'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 
'E_PARSE', 'E_NOTICE',
+                       'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 
'E_COMPILE_WARNING', 'E_USER_ERROR',
+                       'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+                       ),
+               3 => array(
+                       
'zlib_get_coding_type','zend_version','zend_logo_guid','yp_order','yp_next',
+                       
'yp_match','yp_master','yp_get_default_domain','yp_first','yp_errno','yp_err_string',
+                       
'yp_cat','yp_all','xml_set_unparsed_entity_decl_handler','xml_set_start_namespace_decl_handler','xml_set_processing_instruction_handler','xml_set_object',
+                       
'xml_set_notation_decl_handler','xml_set_external_entity_ref_handler','xml_set_end_namespace_decl_handler','xml_set_element_handler','xml_set_default_handler','xml_set_character_data_handler',
+                       
'xml_parser_set_option','xml_parser_get_option','xml_parser_free','xml_parser_create_ns','xml_parser_create','xml_parse_into_struct',
+                       
'xml_parse','xml_get_error_code','xml_get_current_line_number','xml_get_current_column_number','xml_get_current_byte_index','xml_error_string',
+                       
'wordwrap','wddx_serialize_vars','wddx_serialize_value','wddx_packet_start','wddx_packet_end','wddx_deserialize',
+                       
'wddx_add_vars','vsprintf','vprintf','virtual','version_compare','var_export',
+                       
'var_dump','utf8_encode','utf8_decode','usort','usleep','user_error',
+                       
'urlencode','urldecode','unserialize','unregister_tick_function','unpack','unlink',
+                       
'unixtojd','uniqid','umask','uksort','ucwords','ucfirst',
+                       
'uasort','trim','trigger_error','touch','token_name','token_get_all',
+                       'tmpfile','time','textdomain','tempnam','tanh','tan',
+                       
'system','syslog','symlink','substr_replace','substr_count','substr',
+                       
'strval','strtr','strtoupper','strtotime','strtolower','strtok',
+                       'strstr','strspn','strrpos','strrev','strrchr','strpos',
+                       
'strncmp','strncasecmp','strnatcmp','strnatcasecmp','strlen','stristr',
+                       
'stripslashes','stripcslashes','strip_tags','strftime','stream_wrapper_register','stream_set_write_buffer',
+                       
'stream_set_timeout','stream_set_blocking','stream_select','stream_register_wrapper','stream_get_meta_data','stream_filter_prepend',
+                       
'stream_filter_append','stream_context_set_params','stream_context_set_option','stream_context_get_options','stream_context_create','strcspn',
+                       
'strcoll','strcmp','strchr','strcasecmp','str_word_count','str_shuffle',
+                       
'str_rot13','str_replace','str_repeat','str_pad','stat','sscanf',
+                       'srand','sqrt','sql_regcase','sprintf','spliti','split',
+                       
'soundex','sort','socket_writev','socket_write','socket_strerror','socket_shutdown',
+                       
'socket_setopt','socket_set_timeout','socket_set_option','socket_set_nonblock','socket_set_blocking','socket_set_block',
+                       
'socket_sendto','socket_sendmsg','socket_send','socket_select','socket_recvmsg','socket_recvfrom',
+                       
'socket_recv','socket_readv','socket_read','socket_listen','socket_last_error','socket_iovec_set',
+                       
'socket_iovec_free','socket_iovec_fetch','socket_iovec_delete','socket_iovec_alloc','socket_iovec_add','socket_getsockname',
+                       
'socket_getpeername','socket_getopt','socket_get_status','socket_get_option','socket_create_pair','socket_create_listen',
+                       
'socket_create','socket_connect','socket_close','socket_clear_error','socket_bind','socket_accept',
+                       'sleep','sizeof','sinh','sin','similar_text','shuffle',
+                       
'show_source','shmop_write','shmop_size','shmop_read','shmop_open','shmop_delete',
+                       
'shmop_close','shm_remove_var','shm_remove','shm_put_var','shm_get_var','shm_detach',
+                       
'shm_attach','shell_exec','sha1_file','sha1','settype','setlocale',
+                       
'setcookie','set_time_limit','set_socket_blocking','set_magic_quotes_runtime','set_include_path','set_file_buffer',
+                       
'set_error_handler','session_write_close','session_unset','session_unregister','session_start','session_set_save_handler',
+                       
'session_set_cookie_params','session_save_path','session_register','session_regenerate_id','session_name','session_module_name',
+                       
'session_is_registered','session_id','session_get_cookie_params','session_encode','session_destroy','session_decode',
+                       
'session_cache_limiter','session_cache_expire','serialize','sem_remove','sem_release','sem_get',
+                       
'sem_acquire','rtrim','rsort','round','rmdir','rewinddir',
+                       
'rewind','restore_include_path','restore_error_handler','reset','rename','register_tick_function',
+                       
'register_shutdown_function','realpath','readlink','readgzfile','readfile','readdir',
+                       
'read_exif_data','rawurlencode','rawurldecode','range','rand','rad2deg',
+                       
'quotemeta','quoted_printable_decode','putenv','proc_open','proc_close','printf',
+                       
'print_r','prev','preg_split','preg_replace_callback','preg_replace','preg_quote',
+                       
'preg_match_all','preg_match','preg_grep','pow','posix_uname','posix_ttyname',
+                       
'posix_times','posix_strerror','posix_setuid','posix_setsid','posix_setpgid','posix_setgid',
+                       
'posix_seteuid','posix_setegid','posix_mkfifo','posix_kill','posix_isatty','posix_getuid',
+                       
'posix_getsid','posix_getrlimit','posix_getpwuid','posix_getpwnam','posix_getppid','posix_getpid',
+                       
'posix_getpgrp','posix_getpgid','posix_getlogin','posix_getgroups','posix_getgrnam','posix_getgrgid',
+                       
'posix_getgid','posix_geteuid','posix_getegid','posix_getcwd','posix_get_last_error','posix_errno',
+                       
'posix_ctermid','pos','popen','pi','phpversion','phpinfo',
+                       
'phpcredits','php_uname','php_sapi_name','php_logo_guid','php_ini_scanned_files','pg_update',
+                       
'pg_untrace','pg_unescape_bytea','pg_tty','pg_trace','pg_setclientencoding','pg_set_client_encoding',
+                       
'pg_send_query','pg_select','pg_result_status','pg_result_seek','pg_result_error','pg_result',
+                       
'pg_query','pg_put_line','pg_port','pg_ping','pg_pconnect','pg_options',
+                       
'pg_numrows','pg_numfields','pg_num_rows','pg_num_fields','pg_meta_data','pg_lowrite',
+                       
'pg_lounlink','pg_loreadall','pg_loread','pg_loopen','pg_loimport','pg_loexport',
+                       
'pg_locreate','pg_loclose','pg_lo_write','pg_lo_unlink','pg_lo_tell','pg_lo_seek',
+                       
'pg_lo_read_all','pg_lo_read','pg_lo_open','pg_lo_import','pg_lo_export','pg_lo_create',
+                       
'pg_lo_close','pg_last_oid','pg_last_notice','pg_last_error','pg_insert','pg_host',
+                       
'pg_getlastoid','pg_get_result','pg_get_pid','pg_get_notify','pg_freeresult','pg_free_result',
+                       
'pg_fieldtype','pg_fieldsize','pg_fieldprtlen','pg_fieldnum','pg_fieldname','pg_fieldisnull',
+                       
'pg_field_type','pg_field_size','pg_field_prtlen','pg_field_num','pg_field_name','pg_field_is_null',
+                       
'pg_fetch_row','pg_fetch_result','pg_fetch_object','pg_fetch_assoc','pg_fetch_array','pg_fetch_all',
+                       
'pg_exec','pg_escape_string','pg_escape_bytea','pg_errormessage','pg_end_copy','pg_delete',
+                       
'pg_dbname','pg_copy_to','pg_copy_from','pg_convert','pg_connection_status','pg_connection_reset',
+                       
'pg_connection_busy','pg_connect','pg_cmdtuples','pg_close','pg_clientencoding','pg_client_encoding',
+                       
'pg_cancel_query','pg_affected_rows','pfsockopen','pclose','pathinfo','passthru',
+                       
'parse_url','parse_str','parse_ini_file','pack','overload','output_reset_rewrite_vars',
+                       
'output_add_rewrite_var','ord','openssl_x509_read','openssl_x509_parse','openssl_x509_free','openssl_x509_export_to_file',
+                       
'openssl_x509_export','openssl_x509_checkpurpose','openssl_x509_check_private_key','openssl_verify','openssl_sign','openssl_seal',
+                       
'openssl_public_encrypt','openssl_public_decrypt','openssl_private_encrypt','openssl_private_decrypt','openssl_pkey_new','openssl_pkey_get_public',
+                       
'openssl_pkey_get_private','openssl_pkey_free','openssl_pkey_export_to_file','openssl_pkey_export','openssl_pkcs7_verify','openssl_pkcs7_sign',
+                       
'openssl_pkcs7_encrypt','openssl_pkcs7_decrypt','openssl_open','openssl_get_publickey','openssl_get_privatekey','openssl_free_key',
+                       
'openssl_error_string','openssl_csr_sign','openssl_csr_new','openssl_csr_export_to_file','openssl_csr_export','openlog',
+                       
'opendir','octdec','ob_start','ob_list_handlers','ob_implicit_flush','ob_iconv_handler',
+                       
'ob_gzhandler','ob_get_status','ob_get_level','ob_get_length','ob_get_flush','ob_get_contents',
+                       
'ob_get_clean','ob_flush','ob_end_flush','ob_end_clean','ob_clean','number_format',
+                       
'nl_langinfo','nl2br','ngettext','next','natsort','natcasesort',
+                       
'mysql_unbuffered_query','mysql_thread_id','mysql_tablename','mysql_table_name','mysql_stat','mysql_selectdb',
+                       
'mysql_select_db','mysql_result','mysql_real_escape_string','mysql_query','mysql_ping','mysql_pconnect',
+                       
'mysql_numrows','mysql_numfields','mysql_num_rows','mysql_num_fields','mysql_listtables','mysql_listfields',
+                       
'mysql_listdbs','mysql_list_tables','mysql_list_processes','mysql_list_fields','mysql_list_dbs','mysql_insert_id',
+                       
'mysql_info','mysql_get_server_info','mysql_get_proto_info','mysql_get_host_info','mysql_get_client_info','mysql_freeresult',
+                       
'mysql_free_result','mysql_fieldtype','mysql_fieldtable','mysql_fieldname','mysql_fieldlen','mysql_fieldflags',
+                       
'mysql_field_type','mysql_field_table','mysql_field_seek','mysql_field_name','mysql_field_len','mysql_field_flags',
+                       
'mysql_fetch_row','mysql_fetch_object','mysql_fetch_lengths','mysql_fetch_field','mysql_fetch_assoc','mysql_fetch_array',
+                       
'mysql_escape_string','mysql_error','mysql_errno','mysql_dropdb','mysql_drop_db','mysql_dbname',
+                       
'mysql_db_query','mysql_db_name','mysql_data_seek','mysql_createdb','mysql_create_db','mysql_connect',
+                       
'mysql_close','mysql_client_encoding','mysql_affected_rows','mysql','mt_srand','mt_rand',
+                       
'mt_getrandmax','move_uploaded_file','money_format','mktime','mkdir','min',
+                       
'microtime','method_exists','metaphone','memory_get_usage','md5_file','md5',
+                       
'mbsubstr','mbstrrpos','mbstrpos','mbstrlen','mbstrcut','mbsplit',
+                       
'mbregex_encoding','mberegi_replace','mberegi','mbereg_search_setpos','mbereg_search_regs','mbereg_search_pos',
+                       
'mbereg_search_init','mbereg_search_getregs','mbereg_search_getpos','mbereg_search','mbereg_replace','mbereg_match',
+                       
'mbereg','mb_substr_count','mb_substr','mb_substitute_character','mb_strwidth','mb_strtoupper',
+                       
'mb_strtolower','mb_strrpos','mb_strpos','mb_strlen','mb_strimwidth','mb_strcut',
+                       
'mb_split','mb_send_mail','mb_regex_set_options','mb_regex_encoding','mb_preferred_mime_name','mb_parse_str',
+                       
'mb_output_handler','mb_language','mb_internal_encoding','mb_http_output','mb_http_input','mb_get_info',
+                       
'mb_eregi_replace','mb_eregi','mb_ereg_search_setpos','mb_ereg_search_regs','mb_ereg_search_pos','mb_ereg_search_init',
+                       
'mb_ereg_search_getregs','mb_ereg_search_getpos','mb_ereg_search','mb_ereg_replace','mb_ereg_match','mb_ereg',
+                       
'mb_encode_numericentity','mb_encode_mimeheader','mb_detect_order','mb_detect_encoding','mb_decode_numericentity','mb_decode_mimeheader',
+                       
'mb_convert_variables','mb_convert_kana','mb_convert_encoding','mb_convert_case','max','mail',
+                       
'magic_quotes_runtime','ltrim','lstat','long2ip','log1p','log10',
+                       
'log','localtime','localeconv','linkinfo','link','levenshtein',
+                       
'lcg_value','ksort','krsort','key_exists','key','juliantojd',
+                       
'join','jewishtojd','jdtounix','jdtojulian','jdtojewish','jdtogregorian',
+                       
'jdtofrench','jdmonthname','jddayofweek','is_writeable','is_writable','is_uploaded_file',
+                       
'is_subclass_of','is_string','is_scalar','is_resource','is_real','is_readable',
+                       
'is_object','is_numeric','is_null','is_nan','is_long','is_link',
+                       
'is_integer','is_int','is_infinite','is_float','is_finite','is_file',
+                       
'is_executable','is_double','is_dir','is_callable','is_bool','is_array',
+                       
'is_a','iptcparse','iptcembed','ip2long','intval','ini_set',
+                       
'ini_restore','ini_get_all','ini_get','ini_alter','in_array','import_request_variables',
+                       
'implode','image_type_to_mime_type','ignore_user_abort','iconv_set_encoding','iconv_get_encoding','iconv',
+                       
'i18n_mime_header_encode','i18n_mime_header_decode','i18n_ja_jp_hantozen','i18n_internal_encoding','i18n_http_output','i18n_http_input',
+                       
'i18n_discover_encoding','i18n_convert','hypot','htmlspecialchars','htmlentities','html_entity_decode',
+                       
'highlight_string','highlight_file','hexdec','hebrevc','hebrev','headers_sent',
+                       
'header','gzwrite','gzuncompress','gztell','gzseek','gzrewind',
+                       
'gzread','gzputs','gzpassthru','gzopen','gzinflate','gzgetss',
+                       
'gzgets','gzgetc','gzfile','gzeof','gzencode','gzdeflate',
+                       
'gzcompress','gzclose','gregoriantojd','gmstrftime','gmmktime','gmdate',
+                       
'glob','gettype','gettimeofday','gettext','getservbyport','getservbyname',
+                       
'getrusage','getrandmax','getprotobynumber','getprotobyname','getopt','getmyuid',
+                       
'getmypid','getmyinode','getmygid','getmxrr','getlastmod','getimagesize',
+                       
'gethostbynamel','gethostbyname','gethostbyaddr','getenv','getdate','getcwd',
+                       
'getallheaders','get_resource_type','get_required_files','get_parent_class','get_object_vars','get_meta_tags',
+                       
'get_magic_quotes_runtime','get_magic_quotes_gpc','get_loaded_extensions','get_included_files','get_include_path','get_html_translation_table',
+                       
'get_extension_funcs','get_defined_vars','get_defined_functions','get_defined_constants','get_declared_classes','get_current_user',
+                       
'get_class_vars','get_class_methods','get_class','get_cfg_var','get_browser','fwrite',
+                       
'function_exists','func_num_args','func_get_args','func_get_arg','ftruncate','ftp_systype',
+                       
'ftp_ssl_connect','ftp_size','ftp_site','ftp_set_option','ftp_rmdir','ftp_rename',
+                       
'ftp_rawlist','ftp_quit','ftp_pwd','ftp_put','ftp_pasv','ftp_nlist',
+                       
'ftp_nb_put','ftp_nb_get','ftp_nb_fput','ftp_nb_fget','ftp_nb_continue','ftp_mkdir',
+                       
'ftp_mdtm','ftp_login','ftp_get_option','ftp_get','ftp_fput','ftp_fget',
+                       
'ftp_exec','ftp_delete','ftp_connect','ftp_close','ftp_chdir','ftp_cdup',
+                       'ftok','ftell','fstat','fsockopen','fseek','fscanf',
+                       
'frenchtojd','fread','fputs','fpassthru','fopen','fnmatch',
+                       'fmod','flush','floor','flock','floatval','filetype',
+                       
'filesize','filepro_rowcount','filepro_retrieve','filepro_fieldwidth','filepro_fieldtype','filepro_fieldname',
+                       
'filepro_fieldcount','filepro','fileperms','fileowner','filemtime','fileinode',
+                       
'filegroup','filectime','fileatime','file_get_contents','file_exists','file',
+                       'fgetss','fgets','fgetcsv','fgetc','fflush','feof',
+                       
'fclose','ezmlm_hash','extract','extension_loaded','expm1','explode',
+                       
'exp','exif_thumbnail','exif_tagname','exif_read_data','exif_imagetype','exec',
+                       
'escapeshellcmd','escapeshellarg','error_reporting','error_log','eregi_replace','eregi',
+                       
'ereg_replace','ereg','end','easter_days','easter_date','each',
+                       
'doubleval','dngettext','dl','diskfreespace','disk_total_space','disk_free_space',
+                       
'dirname','dir','dgettext','deg2rad','defined','define_syslog_variables',
+                       
'define','decoct','dechex','decbin','debug_zval_dump','debug_backtrace',
+                       
'deaggregate','dcngettext','dcgettext','dba_sync','dba_replace','dba_popen',
+                       
'dba_optimize','dba_open','dba_nextkey','dba_list','dba_insert','dba_handlers',
+                       
'dba_firstkey','dba_fetch','dba_exists','dba_delete','dba_close','date',
+                       
'current','ctype_xdigit','ctype_upper','ctype_space','ctype_punct','ctype_print',
+                       
'ctype_lower','ctype_graph','ctype_digit','ctype_cntrl','ctype_alpha','ctype_alnum',
+                       
'crypt','create_function','crc32','count_chars','count','cosh',
+                       
'cos','copy','convert_cyr_string','constant','connection_status','connection_aborted',
+                       
'compact','closelog','closedir','clearstatcache','class_exists','chunk_split',
+                       'chr','chown','chop','chmod','chgrp','checkdnsrr',
+                       
'checkdate','chdir','ceil','call_user_method_array','call_user_method','call_user_func_array',
+                       
'call_user_func','cal_to_jd','cal_info','cal_from_jd','cal_days_in_month','bzwrite',
+                       
'bzread','bzopen','bzflush','bzerrstr','bzerror','bzerrno',
+                       
'bzdecompress','bzcompress','bzclose','bindtextdomain','bindec','bind_textdomain_codeset',
+                       'bin2hex','bcsub','bcsqrt','bcscale','bcpow','bcmul',
+                       
'bcmod','bcdiv','bccomp','bcadd','basename','base_convert',
+                       
'base64_encode','base64_decode','atanh','atan2','atan','assert_options',
+                       'assert','asort','asinh','asin','arsort','array_walk',
+                       
'array_values','array_unshift','array_unique','array_sum','array_splice','array_slice',
+                       
'array_shift','array_search','array_reverse','array_reduce','array_rand','array_push',
+                       
'array_pop','array_pad','array_multisort','array_merge_recursive','array_merge','array_map',
+                       
'array_keys','array_key_exists','array_intersect_assoc','array_intersect','array_flip','array_filter',
+                       
'array_fill','array_diff_assoc','array_diff','array_count_values','array_chunk','array_change_key_case',
+                       
'apache_setenv','apache_response_headers','apache_request_headers','apache_note','apache_lookup_uri','apache_get_version',
+                       
'apache_child_terminate','aggregation_info','aggregate_properties_by_regexp','aggregate_properties_by_list','aggregate_properties','aggregate_methods_by_regexp',
+                       
'aggregate_methods_by_list','aggregate_methods','aggregate','addslashes','addcslashes','acosh',
+                       'acos','abs','_','echo', 'print', 'global', 'static', 
'exit', 'array', 'empty',
+            'eval', 'isset', 'unset', 'die', 'list'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', 
'/', '<', '>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;',
+                       2 => 'color: #000000; font-weight: bold;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;',
+                       2 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       3 => ''
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 'http://www.php.net/{FNAME}',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '-&gt;',
+               2 => '::'
+               ),
+       'REGEXPS' => array(
+               0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*",
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<?php' => '?>'
+                       ),
+               1 => array(
+                       '<?' => '?>'
+                       ),
+               2 => array(
+                       '<%' => '%>'
+                       ),
+               3 => array(
+                       '<script language="php">' => '</script>'
+                       )
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               3 => true
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/python.php
===================================================================
RCS file: geshi/python.php
diff -N geshi/python.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/python.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,229 @@
+<?php
+/*************************************************************************************
+ * python.php
+ * ----------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Python language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/05/26
+ *  -  Modifications by Tim (address@hidden): added more keyword categories, 
tweaked colors
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Python',
+       'COMMENT_SINGLE' => array(1 => '#'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"', "'", '"""'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+
+               /*
+               ** Set 1: reserved words
+               ** http://python.org/doc/current/ref/keywords.html
+               */
+               1 => array(
+                       'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 
'from', 'lambda', 'return', 'break',
+                       'else', 'global', 'not', 'try', 'class', 'except', 
'if', 'or', 'while', 'continue', 'exec',
+                       'import', 'pass', 'yield', 'def', 'finally', 'in', 
'print'
+                       ),
+
+               /*
+               ** Set 2: builtins
+               ** http://python.org/doc/current/lib/built-in-funcs.html
+               */
+               2 => array(
+                       '__import__', 'abs', 'basestring', 'bool', 'callable', 
'chr', 'classmethod', 'cmp', 
+                       'compile', 'complex', 'delattr', 'dict', 'dir', 
'divmod', 'enumerate', 'eval', 'execfile', 
+                       'file', 'filter', 'float', 'frozenset', 'getattr', 
'globals', 'hasattr', 'hash', 'help',
+                       'hex', 'id', 'input', 'int', 'isinstance', 
'issubclass', 'iter', 'len', 'list', 'locals',
+                       'long', 'map', 'max', 'min', 'object', 'oct', 'open', 
'ord', 'pow', 'property', 'range',
+                       'raw_input', 'reduce', 'reload', 'repr', 'reversed', 
'round', 'set', 'setattr', 'slice',
+                       'sorted', 'staticmethod', 'str', 'sum', 'super', 
'tuple', 'type', 'unichr', 'unicode', 
+                       'vars', 'xrange', 'zip',
+                       // Built-in constants: 
http://python.org/doc/current/lib/node35.html
+                       'False', 'True', 'None', 'NotImplemented', 'Ellipsis',
+                       // Built-in Exceptions: 
http://python.org/doc/current/lib/module-exceptions.html
+                       'Exception', 'StandardError', 'ArithmeticError', 
'LookupError', 'EnvironmentError',
+                       'AssertionError', 'AttributeError', 'EOFError', 
'FloatingPointError', 'IOError',
+                       'ImportError', 'IndexError', 'KeyError', 
'KeyboardInterrupt', 'MemoryError', 'NameError',
+                       'NotImplementedError', 'OSError', 'OverflowError', 
'ReferenceError', 'RuntimeError',
+                       'StopIteration', 'SyntaxError', 'SystemError', 
'SystemExit', 'TypeError',
+                       'UnboundlocalError', 'UnicodeError', 
'UnicodeEncodeError', 'UnicodeDecodeError',
+                       'UnicodeTranslateError', 'ValueError', 'WindowsError', 
'ZeroDivisionError', 'Warning',
+                       'UserWarning', 'DeprecationWarning', 
'PendingDeprecationWarning', 'SyntaxWarning',
+                       'RuntimeWarning', 'FutureWarning',
+                       // self: this is a common python convention (but not a 
reserved word)
+                       'self'
+                       ),
+
+               /*
+               ** Set 3: standard library
+               ** http://python.org/doc/current/lib/modindex.html
+               */
+               3 => array(
+                       '__builtin__', '__future__', '__main__', '_winreg', 
'aifc', 'AL', 'al', 'anydbm',
+                       'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 
'base64', 'BaseHTTPServer',
+                       'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 
'bz2', 'calendar', 'cd', 'cgi',
+                       'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 
'code', 'codecs', 'codeop',
+                       'collections', 'colorsys', 'commands', 'compileall', 
'compiler', 'compiler',
+                       'ConfigParser', 'Cookie', 'cookielib', 'copy', 
'copy_reg', 'cPickle', 'crypt',
+                       'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 
'dbm', 'decimal', 'DEVICE',
+                       'difflib', 'dircache', 'dis', 'distutils', 'dl', 
'doctest', 'DocXMLRPCServer', 'dumbdbm',
+                       'dummy_thread', 'dummy_threading', 'email', 
'encodings', 'errno', 'exceptions', 'fcntl',
+                       'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 
'fnmatch', 'formatter', 'fpectl',
+                       'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 
'getpass', 'gettext', 'GL', 'gl', 'glob',
+                       'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 
'htmlentitydefs', 'htmllib',
+                       'HTMLParser', 'httplib', 'imageop', 'imaplib', 
'imgfile', 'imghdr', 'imp', 'inspect',
+                       'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 
'logging', 'mailbox', 'mailcap',
+                       'marshal', 'math', 'md5', 'mhlib', 'mimetools', 
'mimetypes', 'MimeWriter', 'mimify',
+                       'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 
'nis', 'nntplib', 'operator',
+                       'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 
'pickle', 'pickletools', 'pipes',
+                       'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 
'posixfile', 'pprint', 'profile',
+                       'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 
'pydoc', 'Queue', 'quopri', 'random',
+                       're', 'readline', 'repr', 'resource', 'rexec', 
'rfc822', 'rgbimg', 'rlcompleter',
+                       'robotparser', 'sched', 'ScrolledText', 'select', 
'sets', 'sgmllib', 'sha', 'shelve',
+                       'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 
'SimpleXMLRPCServer', 'site', 'smtpd',
+                       'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 
'statcache', 'statvfs', 'string',
+                       'StringIO', 'stringprep', 'struct', 'subprocess', 
'sunau', 'SUNAUDIODEV', 'sunaudiodev',
+                       'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 
'telnetlib', 'tempfile', 'termios',
+                       'test', 'textwrap', 'thread', 'threading', 'time', 
'timeit', 'Tix', 'Tkinter', 'token',
+                       'tokenize', 'traceback', 'tty', 'turtle', 'types', 
'unicodedata', 'unittest', 'urllib2',
+                       'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 
'UserString', 'uu', 'warnings',
+                       'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 
'winsound', 'xdrlib', 'xml',
+                       'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib'
+                       ),
+
+               /*
+               ** Set 4: special methods
+               ** http://python.org/doc/current/ref/specialnames.html
+               */
+               4 => array(
+                       /*
+                       // Iterator types: 
http://python.org/doc/current/lib/typeiter.html
+                       '__iter__', 'next',
+                       // String types: 
http://python.org/doc/current/lib/string-methods.html
+                       'capitalize', 'center', 'count', 'decode', 'encode', 
'endswith', 'expandtabs',
+                       'find', 'index', 'isalnum', 'isaplpha', 'isdigit', 
'islower', 'isspace', 'istitle',
+                       'isupper', 'join', 'ljust', 'lower', 'lstrip', 
'replace', 'rfind', 'rindex', 'rjust',
+                       'rsplit', 'rstrip', 'split', 'splitlines', 
'startswith', 'strip', 'swapcase', 'title',
+                       'translate', 'upper', 'zfill',
+                       */
+                       // Basic customization: 
http://python.org/doc/current/ref/customization.html
+                       '__new__', '__init__', '__del__', '__repr__', 
'__str__', 
+                       '__lt__', '__le__', '__eq__', '__ne__', '__gt__', 
'__ge__', '__cmp__', '__rcmp__',
+                       '__hash__', '__nonzero__', '__unicode__', '__dict__',
+                       // Attribute access: 
http://python.org/doc/current/ref/attribute-access.html
+                       '__setattr__', '__delattr__', '__getattr__', 
'__getattribute__', '__get__', '__set__',
+                       '__delete__', '__slots__',
+                       // Class creation, callable objects
+                       '__metaclass__', '__call__', 
+                       // Container types: 
http://python.org/doc/current/ref/sequence-types.html
+                       '__len__', '__getitem__', '__setitem__', '__delitem__', 
'__iter__', '__contains__',
+                       '__getslice__', '__setslice__', '__delslice__',
+                       // Numeric types: 
http://python.org/doc/current/ref/numeric-types.html
+                       
'__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',
+                       
'__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',
+                       '__ior__','__ixor__', 
'__ilshift__','__irshift__','__invert__','__int__',
+                       '__long__','__lshift__',
+                       
'__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',
+                       
'__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
+                       
'__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__',
+                       '__sub__','__xor__'
+                       )
+
+               ),
+       'SYMBOLS' => array(
+                       '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', 
'<', '>', '?', '`'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => true,
+        2 => true,
+        3 => true,
+        4 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #ff7700;font-weight:bold;',        // 
Reserved
+                       2 => 'color: #008000;',                                 
        // Built-ins + self
+                       3 => 'color: #dc143c;',                                 
        // Standard lib
+                       4 => 'color: #0000cd;'                                  
        // Special methods
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: black;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #483d8b;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #ff4500;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: black;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/qbasic.php
===================================================================
RCS file: geshi/qbasic.php
diff -N geshi/qbasic.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/qbasic.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,147 @@
+<?php
+/*************************************************************************************
+ * qbasic.php
+ * ----------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/20
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * QBasic/QuickBASIC language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *   -  Added support for URLs
+ * 2004/08/05 (1.0.1)
+ *   -  Added support for symbols
+ *   -  Removed unnessecary slashes from some keywords
+ * 2004/07/14 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Make sure all possible combinations of keywords with
+ *   a space in them (EXIT FOR, END SELECT) are added
+ *   to the first keyword group
+ * * Update colours, especially for the first keyword group
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+$language_data = array (
+       'LANG_NAME' => 'QBasic/QuickBASIC',
+       'COMMENT_SINGLE' => array(1 => "'", 2 => ' REM', 3 => "\tREM"),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 
'ELSEIF', 'IF',
+                       'FOR', 'TO', 'NEXT', 'STEP', 'GOTO', 'GOSUB', 'RETURN', 
'RESUME', 'SELECT',
+                       'CASE', 'UNTIL'
+                       ),
+               3 => array(
+                       'ABS', 'ABSOLUTE', 'ACCESS', 'ALIAS', 'AND', 'ANY', 
'APPEND', 'AS', 'ASC', 'ATN',
+                       'BASE', 'BEEP', 'BINARY', 'BLOAD', 'BSAVE', 'BYVAL', 
'CALL', 'CALLS', 'CASE',
+                       'CDBL', 'CDECL', 'CHAIN', 'CHDIR', 'CHDIR', 'CHR$', 
'CINT', 'CIRCLE', 'CLEAR',
+                       'CLNG', 'CLOSE', 'CLS', 'COM', 'COMMAND$', 'COMMON', 
'CONST', 'COS', 'CSNG',
+                       'CSRLIN', 'CVD', 'CVDMBF', 'CVI', 'CVL', 'CVS', 
'CVSMDF', 'DATA', 'DATE$',
+                       'DECLARE', 'DEF', 'FN', 'SEG', 'DEFDBL', 'DEFINT', 
'DEFLNG', 'DEFSNG', 'DEFSTR',
+                       'DIM', 'DOUBLE', 'DRAW', 'END', 'ENVIRON', 'ENVIRON$', 
'EOF', 'EQV', 'ERASE',
+                       'ERDEV', 'ERDEV$', 'ERL', 'ERR', 'ERROR', 'EXIT', 
'EXP', 'FIELD', 'FILEATTR',
+                       'FILES', 'FIX', 'FRE', 'FREEFILE', 'FUNCTION', 'GET', 
'HEX$', 'IMP', 'INKEY$',
+                       'INP', 'INPUT', 'INPUT$', 'INSTR', 'INT', 'INTEGER', 
'IOCTL', 'IOCTL$', 'IS',
+                       'KEY', 'KILL', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 
'LET', 'LINE', 'LIST', 'LOC',
+                       'LOCAL', 'LOCATE', 'LOCK', 'LOF', 'LOG', 'UNLOCK', 
'LONG', 'LPOS', 'LPRINT',
+                       'LSET', 'LTRIM$', 'MID$', 'MKD$', 'MKDIR', 'MKDMBF$', 
'MKI$', 'MKL$',
+                       'MKS$', 'MKSMBF$', 'MOD', 'NAME', 'NOT', 'OCT$', 'OFF', 
'ON', 'PEN', 'PLAY',
+                       'STRIG', 'TIMER', 'UEVENT', 'OPEN', 'OPTION', 'BASE', 
'OR', 'OUT', 'OUTPUT',
+                       'PAINT', 'PALETTE', 'PCOPY', 'PEEK', 'PMAP', 'POINT', 
'POKE', 'POS', 'PRESET',
+                       'PRINT', 'USING', 'PSET', 'PUT', 'RANDOM', 'RANDOMIZE', 
'READ', 'REDIM', 'RESET',
+                       'RESTORE', 'RIGHT$', 'RMDIR', 'RND', 'RSET', 'RTRIM$', 
'RUN', 'SADD', 'SCREEN',
+                       'SEEK', 'SETMEM', 'SGN', 'SHARED', 'SHELL', 'SIGNAL', 
'SIN', 'SINGLE', 'SLEEP',
+                       'SOUND', 'SPACE$', 'SPC', 'SQR', 'STATIC', 'STICK', 
'STOP', 'STR$', 'STRIG',
+                       'STRING', 'STRING$', 'SUB', 'SWAP', 'SYSTEM', 'TAB', 
'TAN', 'TIME$', 'TIMER',
+                       'TROFF', 'TRON', 'TYPE', 'UBOUND', 'UCASE$', 'UEVENT', 
'UNLOCK', 'USING', 'VAL',
+                       'VARPTR', 'VARPTR$', 'VARSEG', 'VIEW', 'WAIT', 'WIDTH', 
'WINDOW', 'WRITE', 'XOR'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               3 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #a1a100;',
+                       3 => 'color: #000066;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080;',
+                       2 => 'color: #808080;',
+            3 => 'color: #808080;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               3 => 'http://www.qbasicnews.com/qboho/qck{FNAME}.shtml'
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/reg.php
===================================================================
RCS file: geshi/reg.php
diff -N geshi/reg.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/reg.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,216 @@
+<?php
+/*************************************************************************************
+ * reg.php
+ * -------
+ * Author: Sean Hanna (address@hidden)
+ * Copyright: (c) 2006 Sean Hanna 
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 03/15/2006
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Microsoft Registry Editor Language File.
+ *
+ * CHANGES
+ * -------
+ * 03/15/2006 (0.5.0)
+ *  -  Syntax File Created
+ * 04/27/2006 (0.9.5)
+ *  - Syntax Coloring Cleaned Up
+ *  - First Release
+ * 04/29/2006 (1.0.0)
+ *  - Updated a few coloring settings
+ *
+ * TODO (updated 4/27/2006)
+ * -------------------------
+ * - Add a verification to the multi-line portion of the hex field regex
+ *    for a '\' character on the line preceding the line of the multi-line
+ *    hex field.
+ *
+ * KNOWN ISSUES (updated 4/27/2006)
+ * ---------------------------------
+ *
+ * - There are two regexes for the multiline hex value regex. The regex for
+ *             all lines after the first does not verify that the previous 
line contains
+ *             a line continuation character '\'. This regex also does not 
check for 
+ *             end of line as it should.
+ *
+ * - If number_highlighting is enabled during processing of this syntax file
+ *    many of the regexps used will appear slightly incorrect.
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+
+ 
************************************************************************************/
+$language_data = array (
+       'LANG_NAME' => 'Microsoft Registry',
+       'COMMENT_SINGLE' => array(1 =>';'),
+       'COMMENT_MULTI' => array( ),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array(),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(),
+               2 => array()
+           /* Registry Key Constants Not Used
+               3 => array(
+                       'HKEY_LOCAL_MACHINE', 
+                       'HKEY_CLASSES_ROOT', 
+                       'HKEY_CURRENT_USER',
+                       'HKEY_USERS', 
+                       'HKEY_CURRENT_CONFIG', 
+                       'HKEY_DYN_DATA',
+                       'HKLM', 'HKCR', 'HKCU', 'HKU', 'HKCC', 'HKDD'
+                       )/***/
+               ),
+       'SYMBOLS' => array( ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array( 1 => 'color: #00CCFF;',
+                                                        2 => 'color: #0000FF;' 
),
+               'COMMENTS' => array( 1 => 'color: #009900;' ),
+               'ESCAPE_CHAR' => array(),
+               'BRACKETS' => array(0 => 'color: #000000;'),
+               'STRINGS' => array( 0 => 'color: #009900;' ),
+               'NUMBERS' => array(),
+               'METHODS' => array(),
+               'SYMBOLS' => array(0 => 'color: #000000;'),
+               'SCRIPT' => array(),
+               'REGEXPS' => array( 
+                       0 => '',
+                       1 => 'color: #0000FF;',
+                       2 => '',
+                       3 => '',
+                       4 => 'color: #0000FF;',
+                       5 => '',
+                       6 => '',
+                       7 => '',
+                       8 => '',
+                       9 => 'color: #FF6600;',
+                       )
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               // Highlight Key Delimiters
+               0 => array(
+                       GESHI_SEARCH => 
'((^|\\n)\\s*)(\\\\\\[(.*)\\\\\\])(\\s*(\\n|$))',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\5',
+                       GESHI_CLASS => 'kw1'
+                       ),
+               // Highlight File Format Header Version 5
+               1 => array(
+                       GESHI_SEARCH => '((\\n|^)\\s*)(Windows Registry Editor 
Version [0-9]+(.)+([0-9]+))((\\n|$)\\s*)',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\6',
+                       GESHI_CLASS => 'geshi_registry_header'
+                       ),
+               // Highlight File Format Header Version 4
+               2 => array(
+                       GESHI_SEARCH => '((\\n|^)\\s*)(REGEDIT 
[0-9]+)(\\s*(\\n|$))',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\4',
+                       GESHI_CLASS => 'geshi_registry_header'
+                       ),
+               // Highlight dword: 32 bit integer values
+               3 => array(
+                       GESHI_SEARCH => '(=\\s*)(dword:[0-9]{8})(\\s*(\\n|$))',
+                       GESHI_REPLACE => '\\2',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\3',
+                       GESHI_CLASS => 'kw2'
+                       ),                      
+               // Highlight variable names
+               4 => array(
+                       GESHI_SEARCH => 
'((\\n|^)\\s*\\&quot\\;)(.*)(\\&quot\\;\\s*=)',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\4',
+                       GESHI_CLASS => 'geshi_variable'
+                       ),
+               // Highlight String Values
+               5 => array(
+                       GESHI_SEARCH => 
'(=\\s*)(\\&quot\\;.*\\&quot\\;)(\\s*(\\n|$))',
+                       GESHI_REPLACE => '\\2',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\3',
+                       GESHI_CLASS => 'st0'
+                       ),
+               // Highlight Hexadecimal Values
+               6 => array(
+                       GESHI_SEARCH => 
'(=\\s*)(hex((\\\\\\([0-9]{1,2}\\\\\\))|()):(([0-9a-fA-F]{2},)|(\\s))*(([0-9a-fA-F]{2})|(\\\\\\\\)))(\\s*(\\n|$))',
+                       GESHI_REPLACE => '\\2',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\12',
+                       GESHI_CLASS => 'kw2'
+                       ),
+               // Highlight Hexadecimal Values (Multi-Line)
+               7 => array(
+                       GESHI_SEARCH => 
'((\\n|^)\\s*)((([0-9a-fA-F]{2},)|(\\s))*(([0-9a-fA-F]{2})|(\\\\\\\\)))',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\10',
+                       GESHI_CLASS => 'kw2'
+                       ),
+               // Highlight Default Variable
+               8 => array(
+                       GESHI_SEARCH => '((\\n|^)\\s*)(@)(\\s*=)',
+                       GESHI_REPLACE => '\\3',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => '\\4',
+                       GESHI_CLASS => 'geshi_variable'
+                       ),
+               // Highlight GUID's found anywhere.
+               9 => array(
+                       GESHI_SEARCH => 
'(\\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\})',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '',
+                       GESHI_CLASS => 'geshi_guid'
+                       )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+if (is_a($this, 'GeSHi')) {
+    $this->set_numbers_highlighting(false);
+}
+?>

Index: geshi/robots.php
===================================================================
RCS file: geshi/robots.php
diff -N geshi/robots.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/robots.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,100 @@
+<?php
+/*************************************************************************************
+ * robots.php
+ * --------
+ * Author: Christian Lescuyer (address@hidden)
+ * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/02/17
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * robots.txt language file for GeSHi.
+ *
+ * 2006/02/17 (1.0.0)
+ *   -  First Release
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'robots.txt',
+    'COMMENT_SINGLE' => array(1 => '#'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array(),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        1 => array(
+            'User-agent', 'Disallow'
+            )
+        ),
+    'SYMBOLS' => array(
+        ':'
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => true
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #b1b100;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #808080; font-style: italic;',
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #cc66cc;'
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'REGEXPS' => array(
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => 'http://www.robotstxt.org/wc/norobots.html'
+        ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+
+?>
\ No newline at end of file

Index: geshi/ruby.php
===================================================================
RCS file: geshi/ruby.php
diff -N geshi/ruby.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/ruby.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,149 @@
+<?php
+/*************************************************************************************
+ * ruby.php
+ * --------
+ * Author: Amit Gupta (http://blog.igeek.info/)
+ * Copyright: (c) 2005 Amit Gupta (http://blog.igeek.info/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/09/05
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Ruby language file for GeSHi
+ *
+ * CHANGES
+ * -------
+ * 2006/01/05 (1.0.1)
+ *   -  Add =begin multiline comments (Juan J. Martínez)
+ *   -  Add ` string (Juan J. Martínez)
+ * 2005/09/05 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2005/09/05)
+ * -------------------------
+ * * Add the remaining keywords, methods, classes as per
+ *   v1.8.2(as listed in the online manual)
+ *
+ 
*************************************************************************************
+ *
+ *   This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Ruby',
+       'COMMENT_SINGLE' => array(1 => "#"),
+    'COMMENT_MULTI' => array( "=begin" => "=end"),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"', '`'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                               'alias', 'and', 'begin', 'break', 'case', 
'class',
+                               'def', 'defined', 'do', 'else', 'elsif', 'end',
+                               'ensure', 'for', 'if', 'in', 'module', 'while',
+                               'next', 'not', 'or', 'redo', 'rescue', 'yield',
+                               'retry', 'super', 'then', 'undef', 'unless',
+                               'until', 'when', 'BEGIN', 'END', 'include'
+
+                       ),
+               2 => array(
+                               '__FILE__', '__LINE__', 'false', 'nil', 'self', 
'true', 'return'
+                       ),
+               3 => array(
+                               'Array', 'Float', 'Integer', 'String', 
'at_exit',
+                               'autoload', 'binding', 'caller', 'catch', 
'chop', 'chop!',
+                               'chomp', 'chomp!', 'eval', 'exec', 'exit', 
'exit!', 'fail',
+                               'fork', 'format', 'gets', 'global_variables', 
'gsub', 'gsub!',
+                               'iterator?', 'lambda', 'load', 
'local_variables', 'loop', 'open',
+                               'p', 'print', 'printf', 'proc', 'putc', 'puts', 
'raise',
+                               'rand', 'readline', 'readlines', 'require', 
'select', 'sleep',
+                               'split', 'sprintf', 'srand', 'sub', 'sub!', 
'syscall',
+                               'system', 'test', 'trace_var', 'trap', 
'untrace_var'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '@', '%', '&', '*', '|', '/', 
'<', '>',
+               '+', '-', '=&gt;', '=>'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color:#9966CC; font-weight:bold;',
+                       2 => 'color:#0000FF; font-weight:bold;',
+                       3 => 'color:#CC0066; font-weight:bold;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color:#008000; font-style:italic;',
+            'MULTI' => 'color:#000080; font-style:italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color:#000099;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color:#006600; font-weight:bold;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color:#996600;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color:#006666;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color:#9900CC;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color:#006600; font-weight:bold;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       0 => '',
+                       1 => '',
+                       2 => '',
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<%' => '%>'
+                       )
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true,
+               1 => true,
+               2 => true,
+               )
+);
+
+?>

Index: geshi/sas.php
===================================================================
RCS file: geshi/sas.php
diff -N geshi/sas.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/sas.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,359 @@
+<?php
+/*************************************************************************************
+ * sas.php
+ * -------
+ * Author: Galen Johnson (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/12/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * SAS language file for GeSHi. Based on the sas vim file.
+ *
+ * CHANGES
+ * -------
+ * 2005/12/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2005/12/27)
+ * -------------------------
+ *
+ * * Check highlighting stuff works
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+    'LANG_NAME' => 'SAS',
+    'COMMENT_SINGLE' => array(),
+    'COMMENT_MULTI' => array('/*' => '*/'),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array("'", '"'),
+    'ESCAPE_CHAR' => '\\',
+    'KEYWORDS' => array(
+        1 => array(
+            '_NULL_', '_INFILE_', '_N_', '_WEBOUT_', '_NUMERIC_', 
'_CHARACTER_', '_ALL_'
+            ),
+        2 => array(
+            '%BQUOTE', '%NRBQUOTE', '%CMPRES', '%QCMPRES',
+
+            '%COMPSTOR', '%DATATYP', '%DISPLAY', '%DO',
+            '%ELSE', '%END', '%EVAL', '%GLOBAL',
+            '%GOTO', '%IF', '%INDEX', '%INPUT',
+            '%KEYDEF', '%LABEL', '%LEFT', '%LENGTH',
+            '%LET', '%LOCAL', '%LOWCASE', '%MACRO',
+            '%MEND', '%NRBQUOTE', '%NRQUOTE', '%NRSTR',
+
+            '%PUT', '%QCMPRES', '%QLEFT', '%QLOWCASE',
+            '%QSCAN', '%QSUBSTR', '%QSYSFUNC', '%QTRIM',
+            '%QUOTE', '%QUPCASE', '%SCAN', '%STR',
+            '%SUBSTR', '%SUPERQ', '%SYSCALL', '%SYSEVALF',
+            '%SYSEXEC', '%SYSFUNC', '%SYSGET', '%SYSLPUT',
+            '%SYSPROD', '%SYSRC', '%SYSRPUT', '%THEN',
+
+            '%TO', '%TRIM', '%UNQUOTE', '%UNTIL',
+            '%UPCASE', '%VERIFY', '%WHILE', '%WINDOW'
+            ),
+        3 => array(
+            'ABS', 'ADDR', 'AIRY', 'ARCOS', 'ARSIN', 'ATAN', 'ATTRC', 'ATTRN',
+
+            'BAND', 'BETAINV', 'BLSHIFT', 'BNOT', 'BOR', 'BRSHIFT', 'BXOR',
+            'BYTE', 'CDF', 'CEIL', 'CEXIST', 'CINV', 'CLOSE', 'CNONCT', 
'COLLATE',
+            'COMPBL', 'COMPOUND', 'COMPRESS', 'COSH', 'COS', 'CSS', 'CUROBS',
+            'CV', 'DACCDBSL', 'DACCDB', 'DACCSL', 'DACCSYD', 'DACCTAB',
+            'DAIRY', 'DATETIME', 'DATEJUL', 'DATEPART', 'DATE', 'DAY',
+            'DCLOSE', 'DEPDBSL', 'DEPDB', 'DEPSL',
+
+            'DEPSYD', 'DEPSYD', 'DEPTAB', 'DEPTAB', 'DEQUOTE', 'DHMS',
+            'DIF', 'DIGAMMA', 'DIM', 'DINFO', 'DNUM', 'DOPEN', 'DOPTNAME',
+            'DOPTNUM', 'DREAD', 'DROPNOTE', 'DSNAME', 'ERFC', 'ERF', 'EXIST',
+            'EXP', 'FAPPEND', 'FCLOSE', 'FCOL', 'FDELETE', 'FETCHOBS', 'FETCH',
+            'FEXIST', 'FGET', 'FILEEXIST', 'FILENAME', 'FILEREF', 'FINFO',
+            'FINV', 'FIPNAMEL', 'FIPNAME', 'FIPSTATE', 'FLOOR', 'FNONCT',
+
+            'FNOTE', 'FOPEN', 'FOPTNAME', 'FOPTNUM', 'FPOINT', 'FPOS',
+            'FPUT', 'FREAD', 'FREWIND', 'FRLEN', 'FSEP', 'FUZZ', 'FWRITE',
+            'GAMINV', 'GAMMA', 'GETOPTION', 'GETVARC', 'GETVARN', 'HBOUND',
+            'HMS', 'HOSTHELP', 'HOUR', 'IBESSEL', 'INDEXW', 'INDEXC',
+            'INDEX', 'INPUTN', 'INPUTC', 'INPUT', 'INTRR', 'INTCK', 'INTNX',
+            'INT', 'IRR', 'JBESSEL', 'JULDATE', 'KURTOSIS', 'LAG', 'LBOUND',
+
+            'LEFT', 'LENGTH', 'LGAMMA', 'LIBNAME', 'LIBREF', 'LOG10',
+            'LOG2', 'LOGPDF', 'LOGPMF', 'LOGSDF', 'LOG', 'LOWCASE', 'MAX', 
'MDY',
+            'MEAN', 'MINUTE', 'MIN', 'MOD', 'MONTH', 'MOPEN', 'MORT',
+            'NETPV', 'NMISS', 'NORMAL', 'NPV', 'N', 'OPEN', 'ORDINAL',
+            'PATHNAME', 'PDF', 'PEEKC', 'PEEK', 'PMF', 'POINT', 'POISSON', 
'POKE',
+            'PROBBETA', 'PROBBNML', 'PROBCHI', 'PROBF', 'PROBGAM',
+
+            'PROBHYPR', 'PROBIT', 'PROBNEGB', 'PROBNORM', 'PROBT', 'PUTN',
+            'PUTC', 'PUT', 'QTR', 'QUOTE', 'RANBIN', 'RANCAU', 'RANEXP',
+            'RANGAM', 'RANGE', 'RANK', 'RANNOR', 'RANPOI', 'RANTBL', 'RANTRI',
+            'RANUNI', 'REPEAT', 'RESOLVE', 'REVERSE', 'REWIND', 'RIGHT',
+            'ROUND', 'SAVING', 'SCAN', 'SDF', 'SECOND', 'SIGN', 'SINH', 'SIN',
+            'SKEWNESS', 'SOUNDEX', 'SPEDIS', 'SQRT', 'STDERR', 'STD', 'STFIPS',
+
+            'STNAME', 'STNAMEL', 'SUBSTR', 'SUM', 'SYMGET', 'SYSGET', 'SYSMSG',
+            'SYSPROD', 'SYSRC', 'SYSTEM', 'TANH', 'TAN', 'TIMEPART', 'TIME',
+            'TINV', 'TNONCT', 'TODAY', 'TRANSLATE', 'TRANWRD', 'TRIGAMMA',
+            'TRIMN', 'TRIM', 'TRUNC', 'UNIFORM', 'UPCASE', 'USS',
+            'VARFMT', 'VARINFMT', 'VARLABEL', 'VARLEN', 'VARNAME',
+            'VARNUM', 'VARRAYX', 'VARRAY', 'VARTYPE', 'VAR', 'VERIFY', 
'VFORMATX',
+
+            'VFORMATDX', 'VFORMATD', 'VFORMATNX', 'VFORMATN', 'VFORMATWX',
+            'VFORMATW', 'VFORMAT', 'VINARRAYX', 'VINARRAY', 'VINFORMATX',
+            'VINFORMATDX', 'VINFORMATD', 'VINFORMATNX', 'VINFORMATN',
+            'VINFORMATWX', 'VINFORMATW', 'VINFORMAT', 'VLABELX',
+            'VLABEL', 'VLENGTHX', 'VLENGTH', 'VNAMEX', 'VNAME', 'VTYPEX',
+            'VTYPE', 'WEEKDAY', 'YEAR', 'YYQ', 'ZIPFIPS', 'ZIPNAME', 
'ZIPNAMEL',
+
+            'ZIPSTATE'
+            ),
+        4 => array(
+            'ABORT', 'ARRAY', 'ATTRIB', 'BY', 'CALL', 'CARDS4', 'CATNAME',
+            'CONTINUE', 'DATALINES4', 'DELETE', 'DISPLAY',
+
+            'DM', 'DROP', 'ENDSAS', 'FILENAME', 'FILE', 'FOOTNOTE',
+            'FORMAT', 'GOTO', 'INFILE', 'INFORMAT', 'INPUT', 'KEEP',
+            'LABEL', 'LEAVE', 'LENGTH', 'LIBNAME', 'LINK', 'LIST', 'LOSTCARD',
+            'MERGE', 'MISSING', 'MODIFY', 'OPTIONS', 'OUTPUT', 'PAGE',
+            'PUT', 'REDIRECT', 'REMOVE', 'RENAME', 'REPLACE', 'RETAIN',
+            'RETURN', 'SELECT', 'SET', 'SKIP', 'STARTSAS', 'STOP', 'TITLE',
+
+            'UPDATE', 'WAITSAS', 'WHERE', 'WINDOW', 'X', 'SYSTASK',
+            'ADD', 'AND', 'ALTER', 'AS', 'CASCADE', 'CHECK', 'CREATE',
+            'DELETE', 'DESCRIBE', 'DISTINCT', 'DROP', 'FOREIGN',
+            'FROM', 'GROUP', 'HAVING', 'INDEX', 'INSERT', 'INTO', 'IN',
+            'KEY', 'LIKE', 'MESSAGE', 'MODIFY', 'MSGTYPE', 'NOT',
+            'NULL', 'ON', 'OR', 'ORDER', 'PRIMARY', 'REFERENCES',
+
+            'RESET', 'RESTRICT', 'SELECT', 'SET', 'TABLE',
+            'UNIQUE', 'UPDATE', 'VALIDATE', 'VIEW', 'WHERE'
+            ),
+        5 => array(
+            'DO', 'ELSE', 'END', 'IF', 'THEN', 'UNTIL', 'WHILE'
+
+            ),
+        6 => array(
+            'RUN', 'QUIT', 'DATA'
+            ),
+        7 => array(
+
+            'ERROR'
+            ),
+        8 => array(
+            'WARNING'
+            ),
+
+        9 => array(
+            'NOTE'
+            )
+        ),
+    'SYMBOLS' => array(
+
+        ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => false,
+        1 => false,
+
+        2 => false,
+        3 => false,
+        4 => false,
+        5 => false,
+
+        6 => false,
+        7 => false,
+        8 => false,
+        9 => false
+
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #0000ff;',
+
+            2 => 'color: #0000ff;',
+            3 => 'color: #0000ff;',
+            4 => 'color: #0000ff;',
+            5 => 'color: #0000ff;',
+
+            6 => 'color: #000080; font-weight: bold;',
+            7 => 'color: #ff0000;',
+            8 => 'color: #00ff00;',
+            9 => 'color: #0000ff;'
+
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #006400; font-style: italic;',
+            'MULTI' => 'color: #006400; font-style: italic;'
+
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #a020f0;'
+
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #2e8b57; font-weight: bold;'
+            ),
+        'METHODS' => array(
+
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'SCRIPT' => array(
+
+            0 => '',
+            1 => '',
+            2 => '',
+            3 => ''
+
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #0000ff; font-weight: bold;',
+            1 => 'color: #000080; font-weight: bold;',
+
+            2 => 'color: #006400; font-style: italic;',
+            3 => 'color: #006400; font-style: italic;',
+            4 => 'color: #006400; font-style: italic;',
+            5 => 'color: #ff0000; font-weight: bold;',
+
+            6 => 'color: #00ff00; font-style: italic;',
+            7 => 'color: #0000ff; font-style: normal;',
+            8 => 'color: #b218b2; font-weight: bold;',
+            9 => 'color: #b218b2; font-weight: bold;'
+
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => '',
+
+        3 => '',
+        4 => '',
+        5 => '',
+        6 => '',
+
+        7 => '',
+        8 => '',
+        9 => ''
+        ),
+
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+
+        0 => "&amp;[a-zA-Z_][a-zA-Z0-9_]*",
+        1 => array(
+            GESHI_SEARCH => '(^\\s*)(PROC \\w+)',
+            GESHI_REPLACE => '\\2',
+
+            GESHI_MODIFIERS => 'im',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => ''
+            ),
+
+        2 => array(
+            GESHI_SEARCH => '(^\\s*)(\\*.*;)',
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'im',
+
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => ''
+            ),
+        3 => array(
+
+            GESHI_SEARCH => '(.*;\\s*)(\\*.*;)',
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'im',
+            GESHI_BEFORE => '\\1',
+
+            GESHI_AFTER => ''
+            ),
+        4 => array(
+            GESHI_SEARCH => '(^\\s*)(%\\*.*;)',
+
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'im',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => ''
+
+            ),
+        5 => array(
+            GESHI_SEARCH => '(^ERROR.*)',
+            GESHI_REPLACE => '\\1',
+
+            GESHI_MODIFIERS => 'im',
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+
+        6 => array(
+            GESHI_SEARCH => '(^WARNING.*)',
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => 'im',
+
+            GESHI_BEFORE => '',
+            GESHI_AFTER => ''
+            ),
+        7 => array(
+
+            GESHI_SEARCH => '(^NOTE.*)',
+            GESHI_REPLACE => '\\1',
+            GESHI_MODIFIERS => 'im',
+            GESHI_BEFORE => '',
+
+            GESHI_AFTER => ''
+            ),
+        8 => array(
+            GESHI_SEARCH => '(^\\s*)(CARDS.*)(^\\s*;\\s*$)',
+
+            GESHI_REPLACE => '\\2',
+            GESHI_MODIFIERS => 'sim',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => '\\3'
+
+            ),
+        9 => array(
+            GESHI_SEARCH => '(^\\s*)(DATALINES.*)(^\\s*;\\s*$)',
+            GESHI_REPLACE => '\\2',
+
+            GESHI_MODIFIERS => 'sim',
+            GESHI_BEFORE => '\\1',
+            GESHI_AFTER => '\\3'
+            )
+
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+
+        )
+);
+
+?>
\ No newline at end of file

Index: geshi/scheme.php
===================================================================
RCS file: geshi/scheme.php
diff -N geshi/scheme.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/scheme.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,172 @@
+<?php
+/*************************************************************************************
+ * scheme.php
+ * ----------
+ * Author: Jon Raphaelson (address@hidden)
+ * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Scheme language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/09/22 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2005/09/22)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Scheme',
+       'COMMENT_SINGLE' => array(1 => ';'),
+       'COMMENT_MULTI' => array(';|' => '|;'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                 'abs', 'acos', 'and', 'angle', 'append', 'appply', 
'approximate',
+                 'asin', 'assoc', 'assq', 'assv', 'atan',
+                 
+                 'begin', 'boolean?', 'bound-identifier=?', 
+                 
+                 'caar', 'caddr', 'cadr', 'call-with-current-continuation', 
+                 'call-with-input-file', 'call-with-output-file', 'call/cc', 
'car',
+                 'case', 'catch', 'cdddar', 'cddddr', 'cdr', 'ceiling', 
'char->integer',
+                 'char-alphabetic?', 'char-ci<=?', 'char-ci<?', 'char-ci?', 
'char-ci>=?',
+                 'char-ci>?', 'char-ci=?', 'char-downcase', 
'char-lower-case?', 
+                 'char-numeric', 'char-ready', 'char-ready?', 'char-upcase', 
+                 'char-upper-case?', 'char-whitespace?', 'char<=?', 'char<?', 
'char=?',
+                 'char>=?', 'char>?', 'char?', 'close-input-port', 
'close-output-port',
+                 'complex?', 'cond', 'cons', 'construct-identifier', 'cos', 
+                 'current-input-port', 'current-output-port',
+                 
+                 'd', 'define', 'define-syntax', 'delay', 'denominator', 
'display', 'do',
+                 
+                 'e', 'eof-object?', 'eq?', 'equal?', 'eqv?', 'even?', 
'exact->inexact',
+                 'exact?', 'exp', 'expt', 'else',
+                 
+                 'f', 'floor', 'for-each', 'force', 'free-identifer=?', 
+                 
+                 'gcd', 'gen-counter', 'gen-loser', 'generate-identifier',
+                 
+                 'identifier->symbol', 'identifier', 'if', 'imag-part', 
'inexact->exact',
+                 'inexact?', 'input-port?', 'integer->char', 'integer?', 
'integrate-system',
+                 
+                 'l', 'lambda', 'last-pair', 'lcm', 'length', 'let', 'let*', 
'letrec', 
+                 'list', 'list->string', 'list->vector', 'list-ref', 
'list-tail', 'list?',
+                 'load', 'log',
+                 
+                 'magnitude', 'make-polar', 'make-promise', 
'make-rectangular',     
+                 'make-string', 'make-vector', 'map', 'map-streams', 'max', 
'member', 
+                 'memq', 'memv', 'min', 'modulo',
+                 
+                 'negative', 'newline', 'nil', 'not', 'null?', 
'number->string', 'number?',
+                 'numerator',
+                 
+                 'odd?', 'open-input-file', 'open-output-file', 'or', 
'output-port', 
+                 
+                 'pair?', 'peek-char', 'positive?', 'procedure?',
+                 
+                 'quasiquote', 'quote', 'quotient', 
+                 
+                 'rational', 'rationalize', 'read', 'read-char', 'real-part', 
'real?',
+                 'remainder', 'return', 'reverse',
+                 
+                 's', 'sequence', 'set!', 'set-char!', 'set-cdr!', 'sin', 
'sqrt', 'string',
+                 'string->list', 'string->number', 'string->symbol', 
'string-append', 
+                 'string-ci<=?', 'string-ci<?', 'string-ci=?', 'string-ci>=?', 
+                 'string-ci>?', 'string-copy', 'string-fill!', 
'string-length', 
+                 'string-ref', 'string-set!', 'string<=?', 'string<?', 
'string=?', 
+                 'string>=?', 'string>?', 'string?', 'substring', 
'symbol->string', 
+                 'symbol?', 'syntax', 'syntax-rules',
+                 
+                 't', 'tan', 'template', 'transcript-off', 'transcript-on', 
'truncate',
+                 
+                 'unquote', 'unquote-splicing', 'unwrap-syntax', 
+                 
+                 'vector', 'vector->list', 'vector-fill!', 'vector-length', 
'vector-ref', 
+                 'vector-set!', 'vector?', 
+                 
+                 'with-input-from-file', 'with-output-to-file', 'write', 
'write-char',
+                 
+                 'zero?'
+                 
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', 
'/','+','-','*','=','<','>',';','|'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #202020;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/sdlbasic.php
===================================================================
RCS file: geshi/sdlbasic.php
diff -N geshi/sdlbasic.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/sdlbasic.php  25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,163 @@
+<?php
+/*************************************************************************************
+ * sdlbasic.php
+ * ------------
+ * Author: Roberto Rossi 
+ * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/08/19
+ * Date Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2005/08/19 (1.0.0)
+ *  -  First Release
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ $language_data = array (
+       'LANG_NAME' => 'sdlBasic',
+       'COMMENT_SINGLE' => array(1 => "'", 2 => "rem", 3 => "!", 4 => "#"),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+    'const', 'option', 'explicit', 'option', 'qbasic', 'include', 'argc',
+    'argv', 'command', 'command$', 'run', 'shell', 'end', 'os', 'declare',
+    'sub', 'function', 'return', 'while', 'wend', 'exit', 'while', 'end',
+    'while', 'continue', 'if', 'then', 'else', 'elseif', 'end', 'if',
+    'select', 'case', 'case', 'else', 'end', 'case', 'for', 'each', 'step',
+    'next', 'to', 'continue', 'dim', 'shared', 'common', 'lbound', 'bound',
+    'erase', 'asc', 'chr', 'chr$', 'insert', 'insert$', 'instr', 'lcase',
+    'lcase$', 'left', 'left$', 'len', 'length', 'ltrim', 'ltrim$', 'mid',
+    'mid$', 'replace', 'replace$', 'replacesubstr', 'replacesubstr$',
+    'reverse', 'reverse$', 'right', 'right$', 'rinstr', 'rtrim', 'rtrim$',
+    'space', 'space$', 'str', 'str$', 'strf', 'strf$', 'string', 'string$',
+    'tally', 'trim', 'trim$', 'typeof', 'typeof$', 'ucase', 'ucase$', 'val',
+    'abs', 'acos', 'andbit', 'asin', 'atan', 'bitwiseand', 'bitwiseor',
+    'bitwisexor', 'cos', 'exp', 'fix', 'floor', 'frac', 'hex', 'hex$', 'int',
+    'log', 'min', 'max', 'orbit', 'randomize', 'rnd', 'round', 'sgn', 'sin',
+    'sqr', 'tan', 'xorbit', 'open', 'as', 'file', 'input', 'close', 'output',
+    'append', 'eof', 'fileexists', 'filecopy', 'filemove', 'filerename',
+    'freefile', 'kill', 'loc', 'lof', 'readbyte', 'rename', 'seek',
+    'writebyte', 'chdir', 'dir', 'dir$', 'direxists', 'dirfirst', 'dirnext',
+    'mkdir', 'rmdir', 'print', 'date', 'date$', 'time', 'time$', 'ticks',
+    'data', 'read', 'reservebank', 'freebank', 'copybank', 'loadbank',
+    'savebank', 'setbank', 'sizebank', 'poke', 'doke', 'loke', 'peek', 'deek',
+    'leek', 'memcopy', 'setdisplay', 'setcaption', 'caption', 'displaywidth',
+    'displayheight', 'displaybpp', 'screen', 'directscreen', 'screenopen',
+    'screenclose', 'screenclone', 'screencopy', 'screenfade', 'screenfadein',
+    'screencrossfade', 'screenalpha', 'screenlock', 'screenunlock',
+    'screenrect', 'xscreenrect', 'yscreenrect', 'wscreenrect', 'hscreenrect',
+    'flagscreenrect', 'screenwidth', 'screenheight', 'offset', 'xoffset',
+    'yoffset', 'cls', 'screenswap', 'autoback', 'setautoback',
+    'dualplayfield', 'waitvbl', 'fps', 'rgb', 'enablepalette', 'color',
+    'palette', 'colorcycling', 'ink', 'point', 'dot', 'plot', 'line', 'box',
+    'bar', 'circle', 'fillcircle', 'ellipse', 'fillellipse', 'paint',
+    'loadimage', 'saveimage', 'loadsound', 'savesound', 'loadmusic',
+    'hotspot', 'setcolorkey', 'imageexists', 'imagewidth', 'imageheight',
+    'deleteimage', 'copyimage', 'setalpha', 'zoomimage', 'rotateimage',
+    'rotozoomimage', 'blt', 'pastebob', 'pasteicon', 'grab', 'spriteclip',
+    'sprite', 'deletesprite', 'xsprite', 'ysprite', 'spritewidth',
+    'spriteheight', 'frsprite', 'livesprite', 'spritehit', 'autoupdatesprite',
+    'updatesprite', 'setbob', 'bob', 'deletebob', 'xbob', 'ybob', 'bobwidth',
+    'bobheight', 'frbob', 'livebob', 'bobhit', 'autoupdatebob', 'updatebob',
+    'text', 'setfont', 'textrender', 'pen', 'paper', 'prints', 'locate',
+    'atx', 'aty', 'curson', 'cursoff', 'inputs', 'zoneinputs',
+    'isenabledsound', 'soundexists', 'deletesound', 'copysound',
+    'musicexists', 'playsound', 'volumesound', 'stopsound', 'pausesound',
+    'resumesound', 'vumetersound', 'positionsound', 'soundchannels',
+    'playmusic', 'positionmusic', 'stopmusic', 'fademusic', 'pausemusic',
+    'resumemusic', 'rewindmusic', 'volumemusic', 'speedmusic', 'numdrivescd',
+    'namecd', 'getfreecd', 'opencd', 'indrivecd', 'trackscd', 'curtrackcd',
+    'curframecd', 'playcd', 'playtrackscd', 'playtrackscd', 'playtrackscd',
+    'pausecd', 'resumecd', 'stopcd', 'ejectcd', 'closecd', 'tracktypecd',
+    'tracklengthcd', 'trackoffsetcd', 'key', 'inkey', 'waitkey', 'xmouse',
+    'ymouse', 'xmousescreen', 'ymousescreen', 'bmouse', 'changemouse',
+    'locatemouse', 'mouseshow', 'mousehide', 'mousezone', 'numjoysticks',
+    'namejoystick', 'numaxesjoystick', 'numballsjoystick', 'numhatsjoystick',
+    'numbuttonsjoystick', 'getaxisjoystick', 'gethatjoystick',
+    'getbuttonjoystick', 'xgetballjoystick', 'ygetballjoystick', 'joy',
+    'bjoy', 'wait', 'timer', 'isenabledsock', 'getfreesock', 'opensock',
+    'acceptsock', 'isserverready', 'connectsock', 'connectionreadysock',
+    'isclientready', 'losesock', 'peeksock', 'readsock', 'readbytesock',
+    'readlinesock', 'writesock', 'writebytesock', 'writelinesock',
+    'getremoteip', 'getremoteport', 'getlocalip' 
+      )
+               ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080;',
+                       2 => 'color: #808080;',
+                       3 => 'color: #808080;',
+                       4 => 'color: #808080;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/smalltalk.php
===================================================================
RCS file: geshi/smalltalk.php
diff -N geshi/smalltalk.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/smalltalk.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,161 @@
+<?php
+/*************************************************************************************
+ * smalltalk.php
+ * --------
+ * Author: Bananeweizen (address@hidden)
+ * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/03/27
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Smalltalk language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006-05-24 (1.0.0)
+ *   -  First Release
+ *
+ * TODO
+ * -------------------------
+ * * recognize nested array symbols correctly
+ * 
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Smalltalk',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array('"' => '"'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'"),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array('self','super','true','false','nil')
+               ),
+       'SYMBOLS' => array(
+               '[', ']', '=' , ':=', '(', ')', '#'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #7f007f;'
+                       ),
+               'COMMENTS' => array(
+                       'MULTI' => 'color: #007f00; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                   0 => ''
+                       ),
+               'BRACKETS' => array(
+                   0 => ''
+                       ),
+               'STRINGS' => array(
+                   0 => 'color: #7f0000;'
+                       ),
+               'NUMBERS' => array(
+                   0 => 'color: #7f0000;'
+                       ),
+               'METHODS' => array(
+                   0 => ''
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #000066; font-weight:bold;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;',
+                       1 => 'color: #7f0000;',
+                       2 => 'color: #7f0000;',
+                       3 => 'color: #00007f;',
+                       4 => 'color: #7f007f;',
+                       5 => 'color: #00007f;',
+                       6 => 'color: #00007f;'
+                       ),
+               'SCRIPT' => array(
+                   0 => ''
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => array(
+                       GESHI_SEARCH => 
'([^a-zA-Z0-9_#])([A-Z]+[a-zA-Z0-9_]*)', //class names
+                       GESHI_REPLACE => '\\2',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => ''
+                       ),
+               1 => array(
+                       GESHI_SEARCH => '(#+)([a-zA-Z0-9_]+)', //symbols
+                       GESHI_REPLACE => '\\1\\2',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+               2 => array(
+                       GESHI_SEARCH => '(#\s*\([^)]*\))', //array symbols
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+               3 => array(
+                       GESHI_SEARCH => '\|([a-zA-Z0-9_\s]+)\|', //temporary 
variables
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '|',
+                       GESHI_AFTER => '|'
+                       ),
+               4 => array(
+                       GESHI_SEARCH => '(self|super|true|false|nil)', 
//keywords again (to avoid matching in next regexp)
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+               5 => array(
+                       GESHI_SEARCH => '([:(,=[.*/+-]\s*)([a-zA-Z0-9_]+)', 
//message parameters, message receivers
+                       GESHI_REPLACE => '\\2',
+                       GESHI_MODIFIERS => 's',
+                       GESHI_BEFORE => '\\1',
+                       GESHI_AFTER => ''
+                       ),
+               6 => array(
+                       GESHI_SEARCH => '([a-zA-Z0-9_]+)(\s*:=)', //assignment 
targets
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => '',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '\\2'
+                       )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/smarty.php
===================================================================
RCS file: geshi/smarty.php
diff -N geshi/smarty.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/smarty.php    25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,168 @@
+<?php
+/*************************************************************************************
+ * smarty.php
+ * ----------
+ * Author: Alan Juden (address@hidden)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/07/10
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Smarty template language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *  -  Initial Release
+ *
+ * TODO
+ * ----
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Smarty',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array('{*' => '*}'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       '$smarty', 'now', 'const', 'capture', 'config', 
'section', 'foreach', 'template', 'version', 'ldelim', 'rdelim',
+                       'config_load', 'foreachelse', 'include', 'include_php', 
'insert', 'if', 'elseif', 'else', 'php',
+                       'sectionelse', 'clear_all_cache', 'clear_cache', 
'is_cached',
+                       ),
+               2 => array(
+                       'capitalize', 'count_characters', 'cat', 
'count_paragraphs', 'count_sentences', 'count_words', 'date_format',
+                       'default', 'escape', 'indent', 'lower', 'nl2br', 
'regex_replace', 'replace', 'spacify', 'string_format',
+                       'strip', 'strip_tags', 'truncate', 'upper', 'wordwrap'
+                       ),
+               3 => array(
+                       'assign', 'counter', 'cycle', 'debug', 'eval', 'fetch', 
'html_checkboxes', 'html_image', 'html_options',
+                       'html_radios', 'html_select_date', 'html_select_time', 
'html_table', 'math', 'mailto', 'popup_init',
+                       'popup', 'textformat'
+                       ),
+               4 => array(
+                       '$template_dir', '$compile_dir', '$config_dir', 
'$plugins_dir', '$debugging', '$debug_tpl',
+                       '$debugging_ctrl', '$autoload_filters', 
'$compile_check', '$force_compile', '$caching', '$cache_dir',
+                       '$cache_lifetime', '$cache_handler_func', 
'$cache_modified_check', '$config_overwrite',
+                       '$config_booleanize', '$config_read_hidden', 
'$config_fix_newlines', '$default_template_handler_func',
+                       '$php_handling', '$security', '$secure_dir', 
'$security_settings', '$trusted_dir', '$left_delimiter',
+                       '$right_delimiter', '$compiler_class', 
'$request_vars_order', '$request_use_auto_globals',
+                       '$error_reporting', '$compile_id', '$use_sub_dirs', 
'$default_modifiers', '$default_resource_type'
+                       ),
+               5 => array(
+                       'append', 'append_by_ref', 'assign', 'assign_by_ref', 
'clear_all_assign', 'clear_all_cache',
+                       'clear_assign', 'clear_cache', 'clear_compiled_tpl', 
'clear_config', 'config_load', 'display',
+                       'fetch', 'get_config_vars', 'get_registered_object', 
'get_template_vars', 'is_cached',
+                       'load_filter', 'register_block', 
'register_compiler_function', 'register_function',
+                       'register_modifier', 'register_object', 
'register_outputfilter', 'register_postfilter',
+                       'register_prefilter', 'register_resource', 
'trigger_error', 'template_exists', 'unregister_block',
+                       'unregister_compiler_function', 'unregister_function', 
'unregister_modifier', 'unregister_object',
+                       'unregister_outputfilter', 'unregister_postfilter', 
'unregister_prefilter', 'unregister_resource'
+                       ),
+               6 => array(
+                       'name', 'assign', 'file', 'scope', 'global', 'key', 
'once', 'script',
+                       'loop', 'start', 'step', 'max', 'show', 'values', 
'value', 'from', 'item'
+                       ),
+               7 => array(
+                       'eq', 'neq', 'ne', 'lte', 'gte', 'ge', 'le', 'not', 
'mod'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '/', '=', '==', '!=', '>', '<', '>=', '<=', '!', '%'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false,
+               6 => false,
+               7 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0600FF;',         //Functions
+                       2 => 'color: #008000;',         //Modifiers
+                       3 => 'color: #0600FF;',         //Custom Functions
+                       4 => 'color: #804040;',         //Variables
+                       5 => 'color: #008000;',         //Methods
+                       6 => 'color: #6A0A0A;',         //Attributes
+                       7 => 'color: #D36900;'          //Text-based symbols
+                       ),
+               'COMMENTS' => array(
+                       'MULTI' => 'color: #008080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #D36900;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #D36900;'
+                       ),
+               'SCRIPT' => array(
+            0 => ''
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => 'http://smarty.php.net/{FNAME}',
+               2 => 'http://smarty.php.net/{FNAME}',
+               3 => 'http://smarty.php.net/{FNAME}',
+               4 => 'http://smarty.php.net/{FNAME}',
+               5 => 'http://smarty.php.net/{FNAME}',
+               6 => '',
+               7 => 'http://smarty.php.net/{FNAME}'
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '{' => '}'
+                       )
+       ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => true
+               )
+);
+
+?>

Index: geshi/sql.php
===================================================================
RCS file: geshi/sql.php
diff -N geshi/sql.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/sql.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,137 @@
+<?php
+/*************************************************************************************
+ * sql.php
+ * -------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * SQL language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.3)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.2)
+ *  -  Added "`" string delimiter
+ *  -  Added "#" single comment starter
+ * 2004/08/05 (1.0.1)
+ *  -  Added support for symbols
+ *  -  Added many more keywords (mostly MYSQL keywords)
+ * 2004/07/14 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Add all keywords
+ * * Split this to several sql files - mysql-sql, ansi-sql etc
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'SQL',
+       'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => 1,
+       'QUOTEMARKS' => array("'", '"', '`'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       'ALL', 'ASC', 'AS',  'ALTER', 'AND', 'ADD', 
'AUTO_INCREMENT',
+                       'BETWEEN', 'BINARY', 'BOTH', 'BY', 'BOOLEAN',
+                       'CHANGE', 'CHECK', 'COLUMNS', 'COLUMN', 
'CROSS','CREATE',
+                       'DATABASES', 'DATABASE', 'DATA', 'DELAYED', 'DESCRIBE', 
'DESC',  'DISTINCT', 'DELETE', 'DROP', 'DEFAULT',
+                       'ENCLOSED', 'ESCAPED', 'EXISTS', 'EXPLAIN',
+                       'FIELDS', 'FIELD', 'FLUSH', 'FOR', 'FOREIGN', 
'FUNCTION', 'FROM',
+                       'GROUP', 'GRANT',
+                       'HAVING',
+                       'IGNORE', 'INDEX', 'INFILE', 'INSERT', 'INNER', 'INTO', 
'IDENTIFIED', 'IN', 'IS', 'IF',
+                       'JOIN',
+                       'KEYS', 'KILL','KEY',
+                       'LEADING', 'LIKE', 'LIMIT', 'LINES', 'LOAD', 'LOCAL', 
'LOCK', 'LOW_PRIORITY', 'LEFT', 'LANGUAGE',
+                       'MODIFY',
+                       'NATURAL', 'NOT', 'NULL', 'NEXTVAL',
+                       'OPTIMIZE', 'OPTION', 'OPTIONALLY', 'ORDER', 'OUTFILE', 
'OR', 'OUTER', 'ON',
+                       'PROCEEDURE','PROCEDURAL', 'PRIMARY',
+                       'READ', 'REFERENCES', 'REGEXP', 'RENAME', 'REPLACE', 
'RETURN', 'REVOKE', 'RLIKE', 'RIGHT',
+                       'SHOW', 'SONAME', 'STATUS', 'STRAIGHT_JOIN', 'SELECT', 
'SETVAL', 'SET',
+                       'TABLES', 'TEMINATED', 'TO', 'TRAILING','TRUNCATE', 
'TABLE', 'TEMPORARY', 'TRIGGER', 'TRUSTED',
+                       'UNIQUE', 'UNLOCK', 'USE', 'USING', 'UPDATE', 
'UNSIGNED',
+                       'VALUES', 'VARIABLES', 'VIEW',
+                       'WITH', 'WRITE', 'WHERE',
+                       'ZEROFILL',
+                       'XOR',
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '=', '<', '>', '|'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #993333; font-weight: bold;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       2 => 'color: #808080; font-style: italic;',
+            'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/tcl.php
===================================================================
RCS file: geshi/tcl.php
diff -N geshi/tcl.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/tcl.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,183 @@
+<?php
+/*************************************************************************************
+ * tcl.php
+ * ---------------------------------
+ * Author: Reid van Melle (address@hidden)
+ * Copyright: (c) 2004 Reid van Melle (address@hidden)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/05/05
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * TCL/iTCL language file for GeSHi.
+ *
+ * This was thrown together in about an hour so I don't expect
+ * really great things.  However, it is a good start.  I never
+ * got a change to try out the iTCL or object-based support but
+ * this is not widely used anyway.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/05 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2006/05/05)
+ * -------------------------
+ * - Get TCL built-in special variables hilighted with a new color..
+ *   currently, these are listed in //special variables in the keywords
+ *   section, but they get covered by the general REGEXP for symbols
+ * - General cleanup, testing, and verification
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'TCL',
+       'COMMENT_SINGLE' => array(1 => '#'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"', "'"),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+
+               /*
+               ** Set 1: reserved words
+               ** http://python.org/doc/current/ref/keywords.html
+               */
+               1 => array(
+                       'proc', 'global', 'upvar', 'if', 'then', 'else', 
'elseif', 'for', 'foreach',
+                       'break', 'continue', 'while', 'set', 'eval', 'case', 
'in', 'switch',
+                       'default', 'exit', 'error', 'proc', 'return', 
'uplevel', 'loop', 
+                       'for_array_keys', 'for_recursive_glob', 'for_file', 
'unwind_protect',
+                       'expr', 'catch', 'namespace', 'rename', 'variable',
+                       // itcl
+                       'method', 'itcl_class', 'public', 'protected'),
+
+               /*
+               ** Set 2: builtins
+               ** 
http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm
+               */
+               2 => array(
+                       // string handling
+                       'append', 'binary', 'format', 're_syntax', 'regexp', 
'regsub',
+                       'scan', 'string', 'subst', 
+                       // list handling
+                       'concat', 'join', 'lappend', 'lindex', 'list', 
'llength', 'lrange',
+                       'lreplace', 'lsearch', 'lset', 'lsort', 'split',
+                       // math
+                       'expr',
+                       // procedures and output
+                       'incr', 'close', 'eof', 'fblocked', 'fconfigure', 
'fcopy', 'file',
+                       'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 
'seek', 
+                       'socket', 'tell',
+                       // packages and source files
+                       'load', 'loadTk', 'package', 'pgk::create', 
'pgk_mkIndex', 'source',
+                       // interpreter routines
+                       'bgerror', 'history', 'info', 'interp', 'memory', 
'unknown',
+                       // library routines
+                       'enconding', 'http', 'msgcat',
+                       // system related
+                       'cd', 'clock', 'exec', 'exit', 'glob', 'pid', 'pwd', 
'time',
+                       // platform specified
+                       'dde', 'registry', 'resource',
+                       // special variables
+                       '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0', 
+                       '$auto_index', '$auto_oldpath', '$auto_path', '$env', 
+                       '$tcl_interactive', '$tcl_libpath', '$tcl_library', 
+                       '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', 
'$tcl_traceExec',
+                       ),
+
+               /*
+               ** Set 3: standard library
+               */
+               3 => array(
+                       'comment', 'dde', 'filename', 'http', 'library', 
'memory',
+                       'packagens', 'registry', 'resource', 'tcltest', 
'tclvars',
+                       ),
+
+               /*
+               ** Set 4: special methods
+               */
+               4 => array(
+                       )
+
+               ),
+       'SYMBOLS' => array(
+                       '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', 
';', '<', '>', '?'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => true,
+        2 => true,
+        3 => true,
+        4 => true
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #ff7700;font-weight:bold;',        // 
Reserved
+                       2 => 'color: #008000;',                                 
        // Built-ins + self
+                       3 => 'color: #dc143c;',                                 
        // Standard lib
+                       4 => 'color: #0000cd;'                                  
        // Special methods
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080; font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: black;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #483d8b;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #ff4500;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: black;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+            0 => 'color: #ff3333;'
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '::'
+               ),
+       'REGEXPS' => array(
+               0 => '[\\$]+[a-zA-Z_][a-zA-Z0-9_]*',
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/text.php
===================================================================
RCS file: geshi/text.php
diff -N geshi/text.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/text.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,83 @@
+<?php
+/*************************************************************************************
+ * text.php
+ * --------
+ * Author: Sean Hanna (address@hidden)
+ * Copyright: (c) 2006 Sean Hanna 
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 04/23/2006
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Standard Text File (No Syntax Highlighting).
+ *
+ * CHANGES
+ * -------
+ * 04/23/2006 (0.5.0)
+ *  -  Syntax File Created
+ *
+ * 04/27/2006 (1.0.0)
+ * - Documentation Cleaned Up
+ * - First Release
+ *
+ * TODO (updated 04/27/2006)
+ * -------------------------
+ * 
+ * 
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+
+ 
************************************************************************************/
+$language_data = array (
+       'LANG_NAME' => 'Text',
+       'COMMENT_SINGLE' => array( ),
+       'COMMENT_MULTI' => array( ),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array(),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array( ),
+       'SYMBOLS' => array( ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(),
+               'COMMENTS' => array(),
+               'ESCAPE_CHAR' => array(),
+               'BRACKETS' => array(),
+               'STRINGS' => array(),
+               'NUMBERS' => array(),
+               'METHODS' => array(),
+               'SYMBOLS' => array(),
+               'SCRIPT' => array(),
+               'REGEXPS' => array()
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(),
+       'REGEXPS' => array(     ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array( ),
+       'HIGHLIGHT_STRICT_BLOCK' => array( )
+);
+if (is_a($this, 'GeSHi')) {
+    $this->set_numbers_highlighting(false);
+    $this->set_brackets_highlighting(false);
+    $this->disable_highlighting();
+}
+?>

Index: geshi/thinbasic.php
===================================================================
RCS file: geshi/thinbasic.php
diff -N geshi/thinbasic.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/thinbasic.php 25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,639 @@
+<?php
+/*************************************************************************************
+ * thinbasic.php
+ * ------
+ * Author: Eros Olmi (address@hidden)
+ * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/05/12
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * thinBasic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/12 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2006/05/12)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ $language_data = array (
+       'LANG_NAME' => 'thinBasic',
+       'COMMENT_SINGLE' => array(1 => 'thinBasic version 1.0.11.0'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                        
'#DEF','#DEFAULT','#ELSE','#ELSEIF','#ENDIF','#IF','#MINVERSION','%DEF',
+                        
'ABS','ADD','ADO_CONNECTION_CLOSE','ADO_CONNECTION_EXECUTE','ADO_CONNECTION_GETCONNECTIONSTRING','ADO_CONNECTION_OPEN','ADO_CONNECTION_SETCONNECTIONSTRING','ADO_CREATEOBJECT',
+                        
'ADO_RECORDSET_CLOSE','ADO_RECORDSET_EOF','ADO_RECORDSET_GETCOLLECTN','ADO_RECORDSET_GETCOLLECTS','ADO_RECORDSET_MOVEFIRST','ADO_RECORDSET_MOVELAST','ADO_RECORDSET_MOVENEXT','ADO_RECORDSET_MOVEPREVIOUS',
+                        
'ADO_RECORDSET_OPEN','ADO_RECORDSET_PUTREFACTIVECONNECTION','ADO_RECORDSET_SETCURSORLOCATION','ADO_RECORDSET_SETCURSORTYPE','ADO_RECORDSET_SETLOCKTYPE','ADO_RECORDSET_SETSOURCE','ADO_RELEASE','ADO_RESULT',
+                        
'ALERT','ALIAS','AND','ANIMATE_OPEN','ANIMATE_PLAY','ANIMATE_STOP','ANY','APPEND',
+                        
'APP_COUNTER','APP_INCLUDEPATH','APP_LISTEQUATES','APP_LISTFUNCTIONS','APP_LISTKEYWORDS','APP_LISTVARIABLES','APP_NAME','APP_PATH',
+                        
'APP_SOURCEFULLNAME','APP_SOURCENAME','APP_SOURCEPATH','APP_TIMER','ARCCOS','ARCCOSH','ARCCOT','ARCCOTH',
+                        
'ARCCSC','ARCCSCH','ARCSEC','ARCSECH','ARCSIN','ARCSINH','ARCTANH','ARRAY',
+                        
'AS','ASC','ASCEND','ASCENDING','ASCII2UNICODE','ASCIIZ','ASCIZ','ASSIGN',
+                        
'AT','ATN','ATTACH','BAR','BEEP','BIFF_CLOSEFILE','BIFF_CREATEFILE','BIFF_SETBUFFER',
+                        
'BIFF_SETCOLWIDTH','BIFF_SETROWHEIGHT','BIFF_WRITEDATE','BIFF_WRITENUMBER','BIFF_WRITETEXT','BIN$','BOUNDCHECK','BUTTON',
+                        
'BYCMD','BYREF','BYTE','BYVAL','CALL','CASE','CEIL','CGI_ADDQUOTE',
+                        
'CGI_ADDSPECIALCHARSPREFIX','CGI_CFGGETOPTION','CGI_CFGSETOPTION','CGI_ENVIRON','CGI_GETCURRENTGUID','CGI_GETCURRENTSESSION','CGI_GETQUERYVALUE','CGI_GETREQUESTMETHOD',
+                        
'CGI_GETSESSIONVARIABLE','CGI_HEADER','CGI_LOADCONFIGFILE','CGI_READ','CGI_REMOVEQUOTE','CGI_REMOVESPECIALCHARSPREFIX','CGI_RESETDEFAULTSETTINGS','CGI_SETSESSIONVARIABLE',
+                        
'CGI_STARTSESSION','CGI_UPLOADFILESIZE','CGI_UPLOADFILESNUMBER','CGI_UPLOADFILESTIME','CGI_URLDECODESTRING','CGI_WRITE','CGI_WRITELOGFILE','CHECK',
+                        
'CHECK3STATE','CHECKBOX','CHOOSE$','CHR$','CLEARMESSAGES','CLIENT','COLOR','COMBINATIONS',
+                        
'COMBOBOX','COM_BUILDVARIANT','COM_CLSIDFROMPROGID','COM_CLSIDFROMSTRING','COM_CREATEOBJECT','COM_DISPLAYERROR','COM_EXECUTE','COM_GETENGINEGUID',
+                        
'COM_GETOBJECT','COM_ISEQUALCLSID','COM_ISEQUALGUID','COM_ISEQUALIID','COM_PROGIDFROMCLSID','COM_QUERYINTERFACE','COM_RELEASE','COM_STRINGFROMCLSID',
+                        
'COM_SUCCEEDED','COM_VARIANTCLEAR','COM_VARIANTCOPY','COM_VARIANTINIT','CONSOLE_ALLOC','CONSOLE_AREFILEAPISANSI','CONSOLE_ATTACH','CONSOLE_BACKGROUNDRGB',
+                        
'CONSOLE_BOX','CONSOLE_CLS','CONSOLE_CREATESCREENBUFFER','CONSOLE_DISABLECTRLC','CONSOLE_ENABLECTRLC','CONSOLE_FOREGROUNDRGB','CONSOLE_FREE','CONSOLE_FULLSCREEN',
+                        
'CONSOLE_GENERATECTRLEVENT','CONSOLE_GETCP','CONSOLE_GETCURRENTFONTINDEX','CONSOLE_GETCURSORSIZE','CONSOLE_GETCURSORX','CONSOLE_GETCURSORY','CONSOLE_GETINPUTMODE','CONSOLE_GETNUMBEROFMOUSEBUTTONS',
+                        
'CONSOLE_GETOUTPUTCP','CONSOLE_GETOUTPUTMODE','CONSOLE_GETPROGRESSBARCHAR','CONSOLE_GETSIZEX','CONSOLE_GETSIZEY','CONSOLE_GETSTDHANDLE','CONSOLE_GETTEXTATTRIBUTE','CONSOLE_GETTITLE',
+                        
'CONSOLE_HIDECURSOR','CONSOLE_INKEY','CONSOLE_INKEYB','CONSOLE_NORMALSCREEN','CONSOLE_PRINT','CONSOLE_PRINTAT','CONSOLE_PRINTLINE','CONSOLE_PROGRESSBAR',
+                        
'CONSOLE_READ','CONSOLE_READLINE','CONSOLE_RESTORESCREEN','CONSOLE_SAVESCREEN','CONSOLE_SCROLLBUFFER','CONSOLE_SCROLLBUFFERONEROW','CONSOLE_SCROLLWINDOW','CONSOLE_SETACTIVESCREENBUFFER',
+                        
'CONSOLE_SETCP','CONSOLE_SETCURSORPOSITION','CONSOLE_SETCURSORSIZE','CONSOLE_SETFILEAPISTOANSI','CONSOLE_SETFILEAPISTOOEM','CONSOLE_SETINPUTMODE','CONSOLE_SETOUTPUTCP','CONSOLE_SETOUTPUTMODE',
+                        
'CONSOLE_SETPROGRESSBARCHAR','CONSOLE_SETSCREENBUFFERSIZE','CONSOLE_SETSTDHANDLE','CONSOLE_SETTEXTATTRIBUTE','CONSOLE_SETTITLE','CONSOLE_SHOWCURSOR','CONSOLE_SHOWWINDOW','CONSOLE_WAITKEY',
+                        
'CONSOLE_WRITE','CONSOLE_WRITELINE','CONTROL','CONTROL_GETNUMBER','CONTROL_GETTEXT','COS','COSH','COTAN',
+                        
'COTH','CREATEFONT','CRYPTO_DECRYPT','CRYPTO_ENCRYPT','CRYPTO_ENUMPROVIDERS','CRYPTO_ENUMPROVIDERTYPES','CRYPTO_GENRANDOMSTRING','CRYPTO_GETDEFAULTPROVIDER',
+                        
'CRYPTO_GETPROVIDERSCOUNT','CRYPTO_GETPROVIDERTYPESCOUNT','CSC','CSCH','CSET$','CUR','CURRENCY','CVBYT',
+                        'CVCUR','CVCUX','CVD','CVDWD','CVE','CVI','CVL','CVQ',
+                        
'CVS','CVWRD','DATE$','DBGECHO','DBG_SHOWVARSTR','DECLARE','DECR','DEGTORAD',
+                        
'DELETE','DELETEOBJECT','DESCEND','DESCENDING','DESKTOP','DIALOG','DIALOG_BROWSEFORFOLDER','DIALOG_CHOOSECOLOR',
+                        
'DIALOG_OPENFILE','DIALOG_SAVEFILE','DIM','DIR_CHANGE','DIR_CHANGEDRIVE','DIR_EXISTS','DIR_GETCURRENT','DIR_ISDIR',
+                        
'DIR_ISEMPTY','DIR_LIST','DIR_MAKE','DIR_MAKEALL','DIR_REMOVE','DISABLE','DO','DOEVENTS',
+                        
'DOUBLE','DRAW','DT_COOKIEDATE','DT_DATEADDDAYS','DT_DATEDIFF','DT_DATEFORMAT','DT_DATESUBDAYS','DT_DATETIMEADDSECONDS',
+                        
'DT_DATETIMESUBSECONDS','DT_DATETOSEC','DT_DAY','DT_GETDATECENTURY','DT_GETDATESEPARATOR','DT_GETMONTHNAME','DT_GETTIMESEPARATOR','DT_GETTIMESTAMP',
+                        
'DT_GETWEEKDAY','DT_GETWEEKDAYNAME','DT_HOUR','DT_ISLEAPYEAR','DT_ISVALIDDATE','DT_LASTDAYOFMONTH','DT_MINUTE','DT_MONTH',
+                        
'DT_SECOND','DT_SECTODATE','DT_SECTOTIME','DT_SETDATECENTURY','DT_SETDATESEPARATOR','DT_SETTIMESEPARATOR','DT_TIMEADDSECONDS','DT_TIMEFORMAT',
+                        
'DT_TIMESUBSECONDS','DT_TIMETOSEC','DT_YEAR','DWORD','ECHO','ELSE','ELSEIF','ENABLE',
+                        
'END','ENDIF','ENGINE_GETCURRENTTOKEN','ERR','ERRCLEAR','EXIT','EXP','EXP10',
+                        
'EXP2','EXPORT','EXT','EXTRACT$','FACTORIAL','FILE_CHANGED','FILE_CLOSE','FILE_COPY',
+                        
'FILE_EOF','FILE_EXISTS','FILE_GET','FILE_GETDATE','FILE_GETDATETIME','FILE_GETDATETIMESTAMP','FILE_GETTIME','FILE_GETVERSION',
+                        
'FILE_GETVERSIONSTRING','FILE_KILL','FILE_LOAD','FILE_LOF','FILE_OPEN','FILE_PATHSPLIT','FILE_PUT','FILE_RENAME',
+                        
'FILE_SAVE','FILE_SEEK','FILE_SETDATETIME','FILE_SIZE','FIX','FLUSH','FOCUS','FONT',
+                        
'FONT_CREATE','FONT_LIST','FOR','FORMAT$','FRAC','FRAME','FTP_COMMAND','FTP_CONNECT',
+                        
'FTP_DELFILE','FTP_EXTRACT','FTP_FINISHED','FTP_GETERRORNUMBER','FTP_GETERRORSTRING','FTP_GETFILE','FTP_GETLIST','FTP_GETLOCALDIR',
+                        
'FTP_GETNUMBER','FTP_GETSERVERDIR','FTP_GETSTRING','FTP_PUTFILE','FTP_QUIT','FTP_SETLOCALDIR','FTP_SETLOGFILE','FTP_SETMODE',
+                        
'FTP_SETNUMBER','FTP_SETSERVERDIR','FTP_SETSTRING','FUNCTION','FUNCTION_CPARAMS','FUNCTION_EXISTS','FUNCTION_NAME','FUNCTION_NPARAMS',
+                        
'GET','GETASYNCKEYSTATE','GETMESSAGE','GETS','GETTICKCOUNT','GLOBAL','GRAPHIC','GUID$',
+                        
'GUIDTXT$','HANDLE','HASH','HEX$','HIINT','HIWRD','HOSTIP_TONAME','HOSTNAME_TOIP',
+                        
'HOST_ADDR','ICRYPTO_ASCII2BIN','ICRYPTO_ASCII2STRING','ICRYPTO_BIN2ASCII','ICRYPTO_BYTEXOR','ICRYPTO_CRC16','ICRYPTO_CRC32','ICRYPTO_DECRYPTRC4',
+                        
'ICRYPTO_DECRYPTRIJNDAEL','ICRYPTO_ENCRYPTRC4','ICRYPTO_ENCRYPTRIJNDAEL','ICRYPTO_MD5','ICRYPTO_SHA1','ICRYPTO_STRING2ASCII','ICRYPTO_TESTCRC16','ICRYPTO_TESTCRC32',
+                        
'ICRYPTO_TESTMD5','ICRYPTO_TESTSHA1','IF','IIF','IIF$','IMAGE','IN','INCR',
+                        
'INET_GETCONNECTIONMODE','INET_GETIP','INET_GETSTATE','INET_OPENDIALUPDIALOG','INET_URLDOWNLOAD','INI_GETKEY','INI_GETSECTIONKEYLIST','INI_GETSECTIONSLIST',
+                        
'INI_SETKEY','INPUTBOX$','INSTR','INT','INTEGER','IP_ADDR','IP_TOSTRING','ISEVEN',
+                        
'ISFALSE','ISODD','ISTRUE','ISUNICODE','ISWINDOW','ITERATE','JOIN$','KILL',
+                        
'LABEL','LBOUND','LCASE$','LEFT','LEFT$','LEN','LIB','LIBRARY_EXISTS',
+                        
'LINE','LISTBOX','LL_ADD','LL_COUNT','LL_DATA','LL_DATABYNAME','LL_DELETE','LL_DELETEBYNAME',
+                        
'LL_DELETELIKE','LL_FINDBYDATA','LL_FINDBYNAME','LL_FINDLAST','LL_FREE','LL_FROMFILE','LL_GETBYNUMBER','LL_GETITEM',
+                        
'LL_NAME','LL_TOFILE','LL_TOSTRING','LL_UPDATE','LL_UPDATEBYNAME','LOC','LOCAL','LOG',
+                        
'LOG10','LOG2','LOGB','LOG_WRITE','LOINT','LONG','LOOP','LOWRD',
+                        
'LSET$','LTRIM$','MAKDWR','MAKINT','MAKLNG','MAKWRD','MAX','MAX$',
+                        
'MCASE$','MENU','MID$','MIN','MIN$','MKBYT$','MKCUR$','MKCUX$',
+                        
'MKD$','MKDWD$','MKE$','MKI$','MKL$','MKQ$','MKS$','MKWRD$',
+                        
'MOD','MODAL','MODELESS','MODULE','MOUSEPTR','MSGBOX','NEW','NEXT',
+                        
'NOT','NUMBER','OFF','ON','ONCE','OPT','OPTION','OPTIONAL',
+                        
'OR','OS_CALLDLL','OS_ENVIRON','OS_FATALAPPEXIT','OS_FLASHWINDOW','OS_GETCOMMAND','OS_GETCOMMANDS','OS_GETCOMPUTERNAME',
+                        
'OS_GETCURRENTPROCESSID','OS_GETCURRENTTHREADID','OS_GETLASTCALLDLLERROR','OS_GETLASTCALLDLLSTATUS','OS_GETSPECIALFOLDER','OS_GETSYSTEMDIR','OS_GETTEMPDIR','OS_GETUSERNAME',
+                        
'OS_GETWINDOWSDIR','OS_IEVERSION','OS_MESSAGEBEEP','OS_SETLASTCALLDLLERROR','OS_SHELL','OS_SHELLEXECUTE','OS_WINVERSIONTEXT','PARAMETERS',
+                        
'PARSE','PARSE$','PARSECOUNT','PCT','PC_DECODECDERROR','PC_EJECTCD','PC_EMPTYBIN','PC_GETCAPSLOCKKEYSTATE',
+                        
'PC_GETCARETBLINKTIME','PC_GETNUMLOCKKEYSTATE','PC_GETSCROLLLOCKKEYSTATE','PC_GETSTATEONOFF','PC_HIDECARET','PC_INSERTCD','PC_LOCK','PC_PREVENTSHUTDOWN',
+                        
'PC_RESTARTDIALOG','PC_SETCARETBLINKTIME','PC_SHOWCARET','PC_SHUTDOWN','PC_SUSPENDSTATE','PC_SYSTEMUPFROM','PEEK$','PEEKMESSAGE',
+                        
'PERMUTATIONS','PI','PIXELS','POKE$','POPUP','POST','PRESERVE','PTR',
+                        
'QUAD','QUERYPERFORMANCECOUNTER','QUERYPERFORMANCEFREQUENCY','RADTODEG','RANDOMIZE','RAS_BEGINDIAL','RAS_GETENTRY','RAS_HANGUP',
+                        
'RAS_HANGUPALL','RAS_LOADENTRIES','RAS_OPENDIALUPDIALOG','RAS_SETPARAMS','REDIM','REDRAW','REF','REFERENCE',
+                        
'REGISTRY_DELKEY','REGISTRY_DELVALUE','REGISTRY_GETALLKEYS','REGISTRY_GETDWORD','REGISTRY_GETTXTBOOL','REGISTRY_GETTXTNUM','REGISTRY_GETVALUE','REGISTRY_SETDWORD',
+                        
'REGISTRY_SETTXTBOOL','REGISTRY_SETTXTNUM','REGISTRY_SETVALUE','REM','REMOVE$','REPEAT$','REPLACE$','RESOURCE',
+                        
'RGB','RIGHT','RIGHT$','RND','RNDF','ROUND','RSET$','RTF_APPENDTEXT',
+                        
'RTF_GETFONTNAME','RTF_GETFONTSIZE','RTF_GETTEXT','RTF_LOADFROMFILE','RTF_SAVETOFILE','RTF_SETBGCOLOR','RTF_SETFGCOLOR','RTF_SETFONTNAME',
+                        
'RTF_SETFONTSIZE','RTF_SETTEXT','RTRIM$','SAPI_GETRATE','SAPI_GETVOLUME','SAPI_MODULELOADED','SAPI_SETRATE','SAPI_SETVOLUME',
+                        
'SAPI_SPEAK','SCAN','SEC','SECH','SELECT','SELECTESPRESSION','SELECTEXPRESSION','SEND',
+                        
'SENDKEYS','SENDKEYSBULK','SENDMESSAGE','SET','SGN','SHIFT','SHOW','SIGNED',
+                        
'SIN','SINGLE','SINH','SIZE','SIZEOF','SLEEP','SMTP_CLOSE','SMTP_CONNECT',
+                        
'SMTP_DEBUG','SMTP_FINISHED','SMTP_GETERROR','SMTP_SENDEMAIL','SMTP_SENDHTML','SMTP_SETLOGFILE','SMTP_SETOPTION','SMTP_STATISTICS',
+                        
'SORT','SPLIT','SQR','STATE','STATIC','STAT_AVERAGEARITHMETIC','STAT_AVERAGEGEOMETRIC','STAT_AVERAGEHARMONIC',
+                        
'STAT_CHISQUARE','STAT_FILLARRAY','STAT_INVERSESUM','STAT_MAX','STAT_MIN','STAT_PRODUCT','STAT_RANDOM','STAT_STDDEVIATION',
+                        
'STAT_STDERROR','STAT_SUM','STDIN','STDOUT','STEP','STOP','STR$','STRDELETE$',
+                        
'STRING','STRING$','STRINSERT$','STRPTR','STRREVERSE$','STRUNZIP$','STRZIP$','SUB',
+                        
'SWAP','TABCTRL_GETCURSEL','TABCTRL_INSERTITEM','TABCTRL_ONNOTIFY','TALLY','TAN','TANGENT','TANH',
+                        
'TBGL_BACKCOLOR','TBGL_BEGINPOLY','TBGL_BINDTEXTURE','TBGL_BLENDFUNC','TBGL_BOX','TBGL_BUILDFONT','TBGL_CALLLIST','TBGL_CAMERA',
+                        
'TBGL_CLEARFRAME','TBGL_COLOR','TBGL_COLORALPHA','TBGL_CREATEWINDOW','TBGL_CYLINDER','TBGL_DELETELIST','TBGL_DESTROYWINDOW','TBGL_DRAWFRAME',
+                        
'TBGL_ENDLIST','TBGL_ENDPOLY','TBGL_ERRORMESSAGES','TBGL_GETFRAMERATE','TBGL_GETLASTGLERROR','TBGL_GETTEXTURELIST','TBGL_GETTEXTURENAME','TBGL_KILLFONT',
+                        
'TBGL_LINESTIPPLE','TBGL_LINEWIDTH','TBGL_LOADBMPFONT','TBGL_LOADFONT','TBGL_LOADTEXTURE','TBGL_M15ADDBONETREEITEM','TBGL_M15APPLYBONES','TBGL_M15CLEARMODEL',
+                        
'TBGL_M15DEFBONEBOX','TBGL_M15DRAWMODEL','TBGL_M15GETMODELVERTEXCOUNT','TBGL_M15GETVERTEXPARAM','TBGL_M15INITMODELBUFFERS','TBGL_M15LOADMODEL','TBGL_M15RECALCNORMALS','TBGL_M15RESETBONES',
+                        
'TBGL_M15ROTBONE','TBGL_M15SETMODELVERTEXCOUNT','TBGL_M15SETVERTEXPARAM','TBGL_M15SETVERTEXRGB','TBGL_M15SETVERTEXXYZ','TBGL_NEWLIST','TBGL_NORMAL','TBGL_POINTSIZE',
+                        
'TBGL_POLYGONLOOK','TBGL_POPMATRIX','TBGL_PRINT','TBGL_PRINTBMP','TBGL_PRINTFONT','TBGL_PUSHMATRIX','TBGL_RENDERTOTEXTURE','TBGL_RESETMATRIX',
+                        
'TBGL_ROTATE','TBGL_ROTATEXYZ','TBGL_SAVESCREENSHOT','TBGL_SCALE','TBGL_SETDRAWDISTANCE','TBGL_SETPRIMITIVEQUALITY','TBGL_SETUPCLIPPLANE','TBGL_SETUPFOG',
+                        
'TBGL_SETUPLIGHTSOURCE','TBGL_SHOWWINDOW','TBGL_SPHERE','TBGL_TEXCOORD2D','TBGL_TORUS','TBGL_TRANSLATE','TBGL_USEBLEND','TBGL_USEBLENDFLAG',
+                        
'TBGL_USECLIPPLANE','TBGL_USECLIPPLANEFLAG','TBGL_USEDEPTH','TBGL_USEDEPTHFLAG','TBGL_USEDEPTHMASK','TBGL_USEFOG','TBGL_USEFOGFLAG','TBGL_USELIGHTING',
+                        
'TBGL_USELIGHTINGFLAG','TBGL_USELIGHTSOURCE','TBGL_USELIGHTSOURCEFLAG','TBGL_USELINESTIPPLE','TBGL_USELINESTIPPLEFLAG','TBGL_USETEXTURE','TBGL_USETEXTUREFLAG','TBGL_VERTEX',
+                        
'TBGL_VIEWPORT','TCP_CLOSE','TCP_FREEFILE','TCP_LINEINPUT','TCP_OPEN','TCP_PRINT','TCP_RECV','TCP_SEND',
+                        
'TEXT','TEXTBOX','THEN','TIME$','TIMER','TO','TOKENIZER_GETNEXTTOKEN','TOKENIZER_MOVETOEOL',
+                        
'TOOLTIP','TRIM$','TRIMFULL$','TYPE','UBOUND','UCASE$','UDP_CLOSE','UDP_FREEFILE',
+                        
'UDP_OPEN','UDP_OPENSERVER','UDP_RECV','UDP_SEND','UNICODE2ASCII','UNION','UNITS','UNTIL',
+                        
'USER','USES','USING','USING$','VAL','VALUE','VARIABLE_EXIST','VARIABLE_EXISTS',
+                        
'VARIABLE_GETINFO','VARIANT','VARIANTVT','VARIANTVT$','VARPTR','VERIFY','WEND','WHILE',
+                        
'WIN_FINDBYCLASS','WIN_FINDBYTITLE','WIN_FLASH','WIN_GETACTIVE','WIN_GETCLASS','WIN_GETFOREGROUND','WIN_GETTITLE','WIN_ISICONIC',
+                        
'WIN_ISVISIBLE','WIN_ISZOOMED','WIN_SETFOREGROUND','WIN_SETTITLE','WIN_SHOW','WITH','WORD','XML_ATTRIBCOUNT',
+                        
'XML_ATTRIBNAME','XML_ATTRIBVALUE','XML_CHILD','XML_CHILDDATA','XML_DECODEPARAM','XML_FINDNODE','XML_FREE','XML_GETTAG',
+                        
'XML_LASTERROR','XML_NEXTSIBLING','XML_NODETOSTRING','XML_NODETYPE','XML_PARENT','XML_PARSE','XML_PARSEFILE','XML_TREETOSTRING',
+                        
'XOR','ODBCADDRECORD','ODBCALLOCCONNECT','ODBCALLOCDBC','ODBCALLOCDESC','ODBCALLOCENV','ODBCALLOCHANDLE','ODBCALLOCSTMT',
+                        
'ODBCBINDCOL','ODBCBINDCOLTOBINARY','ODBCBINDCOLTOBIT','ODBCBINDCOLTOBYTE','ODBCBINDCOLTOCURRENCY','ODBCBINDCOLTODATE','ODBCBINDCOLTODECIMAL','ODBCBINDCOLTODOUBLE',
+                        
'ODBCBINDCOLTODWORD','ODBCBINDCOLTOINTEGER','ODBCBINDCOLTOLONG','ODBCBINDCOLTONUMERIC','ODBCBINDCOLTOQUAD','ODBCBINDCOLTOSINGLE','ODBCBINDCOLTOSTRING','ODBCBINDCOLTOTIME',
+                        
'ODBCBINDCOLTOTIMESTAMP','ODBCBINDCOLTOWORD','ODBCBINDPARAMETER','ODBCBROWSECONNECT','ODBCBULKOPERATIONS','ODBCCANCEL','ODBCCLEARRESULT','ODBCCLOSECONNECTION',
+                        
'ODBCCLOSECURSOR','ODBCCLOSESTMT','ODBCCLOSESTMTCURSOR','ODBCCOLATTRIBUTE','ODBCCOLAUTOUNIQUEVALUE','ODBCCOLBASECOLUMNNAME','ODBCCOLBASETABLENAME','ODBCCOLCASESENSITIVE',
+                        
'ODBCCOLCATALOGNAME','ODBCCOLCONCISETYPE','ODBCCOLCOUNT','ODBCCOLDISPLAYSIZE','ODBCCOLFIXEDPRECSCALE','ODBCCOLISNULL','ODBCCOLLABEL','ODBCCOLLENGTH',
+                        
'ODBCCOLLITERALPREFIX','ODBCCOLLITERALSUFFIX','ODBCCOLLOCALTYPENAME','ODBCCOLNAME','ODBCCOLNULLABLE','ODBCCOLNUMPRECRADIX','ODBCCOLOCTETLENGTH','ODBCCOLPRECISION',
+                        
'ODBCCOLSCALE','ODBCCOLSCHEMANAME','ODBCCOLSEARCHABLE','ODBCCOLTABLENAME','ODBCCOLTYPE','ODBCCOLTYPENAME','ODBCCOLUMN','ODBCCOLUMNPRIVILEGES',
+                        
'ODBCCOLUMNPRIVILEGESCOUNT','ODBCCOLUMNS','ODBCCOLUMNSCOUNT','ODBCCOLUNNAMED','ODBCCOLUNSIGNED','ODBCCOLUPDATABLE','ODBCCOMMITDBCTRAN','ODBCCOMMITENVTRAN',
+                        
'ODBCCOMMITTRAN','ODBCCONFIGDATASOURCE','ODBCCONFIGDRIVER','ODBCCONNECT','ODBCCONNECTIONISALIVE','ODBCCONNECTIONISDEAD','ODBCCOPYDESC','ODBCCREATEDATASOURCE',
+                        
'ODBCDATASOURCES','ODBCDELETEBYBOOKMARK','ODBCDELETERECORD','ODBCDESCRIBECOL','ODBCDESCRIBEPARAM','ODBCDISCONNECT','ODBCDRIVERCONNECT','ODBCDRIVERS',
+                        
'ODBCDRIVERSCOUNT','ODBCENDTRAN','ODBCEOF','ODBCERROR','ODBCEXECDIRECT','ODBCEXECUTE','ODBCEXTENDEDFETCH','ODBCFETCH',
+                        
'ODBCFETCHBYBOOKMARK','ODBCFETCHSCROLL','ODBCFOREIGNKEYS','ODBCFOREIGNKEYSCOUNT','ODBCFREECONNECT','ODBCFREEDBC','ODBCFREEDESC','ODBCFREEENV',
+                        
'ODBCFREEHANDLE','ODBCFREESTMT','ODBCGETACCESSIBLEPROCEDURES','ODBCGETACCESSIBLETABLES','ODBCGETACCESSMODE','ODBCGETACTIVEENVIRONMENTS','ODBCGETAGGREGATEFUNCTIONS','ODBCGETALTERDOMAIN',
+                        
'ODBCGETALTERTABLE','ODBCGETASYNCENABLE','ODBCGETASYNCMODE','ODBCGETAUTOCOMMIT','ODBCGETAUTOIPD','ODBCGETBATCHROWCOUNT','ODBCGETBATCHSUPPORT','ODBCGETBOOKMARKPERSISTENCE',
+                        
'ODBCGETCATALOGLOCATION','ODBCGETCATALOGNAME','ODBCGETCATALOGNAMESEPARATOR','ODBCGETCATALOGTERM','ODBCGETCATALOGUSAGE','ODBCGETCOLLATIONSEQ','ODBCGETCOLUMNALIAS','ODBCGETCONCATNULLBEHAVIOR',
+                        
'ODBCGETCONFIGMODE','ODBCGETCONNECTATTR','ODBCGETCONNECTIONDEAD','ODBCGETCONNECTIONERRORINFO','ODBCGETCONNECTIONSQLSTATE','ODBCGETCONNECTIONTIMEOUT','ODBCGETCONVERTBIGINT','ODBCGETCONVERTBINARY',
+                        
'ODBCGETCONVERTBIT','ODBCGETCONVERTCHAR','ODBCGETCONVERTDATE','ODBCGETCONVERTDECIMAL','ODBCGETCONVERTDOUBLE','ODBCGETCONVERTFLOAT','ODBCGETCONVERTFUNCTIONS','ODBCGETCONVERTINTEGER',
+                        
'ODBCGETCONVERTINTERVALDAYTIME','ODBCGETCONVERTINTERVALYEARMONTH','ODBCGETCONVERTLONGVARBINARY','ODBCGETCONVERTLONGVARCHAR','ODBCGETCONVERTNUMERIC','ODBCGETCONVERTREAL','ODBCGETCONVERTSMALLINT','ODBCGETCONVERTTIME',
+                        
'ODBCGETCONVERTTIMESTAMP','ODBCGETCONVERTTINYINT','ODBCGETCONVERTVARBINARY','ODBCGETCONVERTVARCHAR','ODBCGETCORRELATIONNAME','ODBCGETCREATEASSERTION','ODBCGETCREATECHARACTERSET','ODBCGETCREATECOLLATION',
+                        
'ODBCGETCREATEDOMAIN','ODBCGETCREATESCHEMA','ODBCGETCREATETABLE','ODBCGETCREATETRANSLATION','ODBCGETCREATEVIEW','ODBCGETCURRENTCATALOG','ODBCGETCURSORCOMMITBEHAVIOR','ODBCGETCURSORCONCURRENCY',
+                        
'ODBCGETCURSORKEYSETSIZE','ODBCGETCURSORLOCKTYPE','ODBCGETCURSORNAME','ODBCGETCURSORROLLBACKBEHAVIOR','ODBCGETCURSORSCROLLABILITY','ODBCGETCURSORSENSITIVITY','ODBCGETCURSORSENSITIVITYSUPPORT','ODBCGETCURSORTYPE',
+                        
'ODBCGETDATA','ODBCGETDATABASENAME','ODBCGETDATAEXTENSIONS','ODBCGETDATASOURCENAME','ODBCGETDATASOURCEREADONLY','ODBCGETDATASTRING','ODBCGETDATASTRINGBYCOLNAME','ODBCGETDATETIMELITERALS',
+                        
'ODBCGETDBCERRORINFO','ODBCGETDBCSQLSTATE','ODBCGETDBMSNAME','ODBCGETDBMSVER','ODBCGETDDLINDEX','ODBCGETDEFAULTTXNISOLATION','ODBCGETDESCERRORINFO','ODBCGETDESCFIELD',
+                        
'ODBCGETDESCREC','ODBCGETDESCRIBEPARAMETER','ODBCGETDESCRIPTORERRORINFO','ODBCGETDESCRIPTORSQLSTATE','ODBCGETDESCSQLSTATE','ODBCGETDIAGFIELD','ODBCGETDIAGREC','ODBCGETDMVER',
+                        
'ODBCGETDMVERMAJOR','ODBCGETDMVERMINOR','ODBCGETDRIVERHDBC','ODBCGETDRIVERHENV','ODBCGETDRIVERHLIB','ODBCGETDRIVERMANAGERINSTALLPATH','ODBCGETDRIVERNAME','ODBCGETDRIVERODBCVER',
+                        
'ODBCGETDRIVERVER','ODBCGETDROPASSERTION','ODBCGETDROPCHARACTERSET','ODBCGETDROPCOLLATION','ODBCGETDROPDOMAIN','ODBCGETDROPSCHEMA','ODBCGETDROPTABLE','ODBCGETDROPTRANSLATION',
+                        
'ODBCGETDROPVIEW','ODBCGETDYNAMICCURSORATTRIBUTES1','ODBCGETDYNAMICCURSORATTRIBUTES2','ODBCGETENVATTR','ODBCGETENVCONNECTIONPOOLING','ODBCGETENVCPMATCH','ODBCGETENVERRORINFO','ODBCGETENVIRONMENTERRORINFO',
+                        
'ODBCGETENVIRONMENTSQLSTATE','ODBCGETENVODBCVERSION','ODBCGETENVOUTPUTNTS','ODBCGETENVSQLSTATE','ODBCGETERRORINFO','ODBCGETEXPRESSIONSINORDERBY','ODBCGETFILEUSAGE','ODBCGETFORWARDONLYCURSORATTRIBUTES1',
+                        
'ODBCGETFORWARDONLYCURSORATTRIBUTES2','ODBCGETFUNCTIONS','ODBCGETGROUPBY','ODBCGETIDENTIFIERCASE','ODBCGETIDENTIFIERQUOTECHAR','ODBCGETIMPPARAMDESCFIELD','ODBCGETIMPPARAMDESCFIELDNAME','ODBCGETIMPPARAMDESCFIELDNULLABLE',
+                        
'ODBCGETIMPPARAMDESCFIELDOCTETLENGTH','ODBCGETIMPPARAMDESCFIELDPRECISION','ODBCGETIMPPARAMDESCFIELDSCALE','ODBCGETIMPPARAMDESCFIELDTYPE','ODBCGETIMPPARAMDESCREC','ODBCGETIMPROWDESCFIELD','ODBCGETIMPROWDESCFIELDNAME','ODBCGETIMPROWDESCFIELDNULLABLE',
+                        
'ODBCGETIMPROWDESCFIELDOCTETLENGTH','ODBCGETIMPROWDESCFIELDPRECISION','ODBCGETIMPROWDESCFIELDSCALE','ODBCGETIMPROWDESCFIELDTYPE','ODBCGETIMPROWDESCREC','ODBCGETINDEXKEYWORDS','ODBCGETINFO','ODBCGETINFOINT',
+                        
'ODBCGETINFOLONG','ODBCGETINFOSCHEMAVIEWS','ODBCGETINFOSTR','ODBCGETINSERTSTATEMENT','ODBCGETINSTALLEDDRIVERS','ODBCGETINSTALLERERRORCODE','ODBCGETINSTALLERERRORMESSAGE','ODBCGETINTEGRITY',
+                        
'ODBCGETKEYSETCURSORATTRIBUTES1','ODBCGETKEYSETCURSORATTRIBUTES2','ODBCGETKEYWORDS','ODBCGETLIKEESCAPECLAUSE','ODBCGETLOGINTIMEOUT','ODBCGETLONGVARCHARDATA','ODBCGETLONGVARCHARDATABYCOLNAME','ODBCGETMAXASYNCCONCURRENTSTATEMENTS',
+                        
'ODBCGETMAXBINARYLITERALLEN','ODBCGETMAXCATALOGNAMELEN','ODBCGETMAXCHARLITERALLEN','ODBCGETMAXCOLUMNNAMELEN','ODBCGETMAXCOLUMNSINGROUPBY','ODBCGETMAXCOLUMNSININDEX','ODBCGETMAXCOLUMNSINORDERBY','ODBCGETMAXCOLUMNSINSELECT',
+                        
'ODBCGETMAXCOLUMNSINTABLE','ODBCGETMAXCONCURRENTACTIVITIES','ODBCGETMAXCURSORNAMELEN','ODBCGETMAXDRIVERCONNECTIONS','ODBCGETMAXIDENTIFIERLEN','ODBCGETMAXINDEXSIZE','ODBCGETMAXPROCEDURENAMELEN','ODBCGETMAXROWSIZE',
+                        
'ODBCGETMAXROWSIZEINCLUDESLONG','ODBCGETMAXSCHEMANAMELEN','ODBCGETMAXSTATEMENTLEN','ODBCGETMAXTABLENAMELEN','ODBCGETMAXTABLESINSELECT','ODBCGETMAXUSERNAMELEN','ODBCGETMETADATAID','ODBCGETMULTIPLEACTIVETXN',
+                        
'ODBCGETMULTRESULTSETS','ODBCGETNEEDLONGDATALEN','ODBCGETNONNULLABLECOLUMNS','ODBCGETNULLCOLLATION','ODBCGETNUMERICFUNCTIONS','ODBCGETODBCCURSORS','ODBCGETODBCINTERFACECONFORMANCE','ODBCGETODBCVER',
+                        
'ODBCGETOJCAPABILITIES','ODBCGETORDERBYCOLUMNSINSELECT','ODBCGETOUTERJOINS','ODBCGETPACKETMODE','ODBCGETPARAMARRAYROWCOUNTS','ODBCGETPARAMARRAYSELECTS','ODBCGETPOSOPERATIONS','ODBCGETPRIVATEPROFILESTRING',
+                        
'ODBCGETPROCEDURESSUPPORT','ODBCGETPROCEDURETERM','ODBCGETQUIETMODE','ODBCGETROWUPDATES','ODBCGETSCHEMATERM','ODBCGETSCHEMAUSAGE','ODBCGETSCROLLOPTIONS','ODBCGETSEARCHPATTERNESCAPE',
+                        
'ODBCGETSERVERNAME','ODBCGETSPECIALCHARACTERS','ODBCGETSQL92DATETIMEFUNCTIONS','ODBCGETSQL92FOREIGNKEYDELETERULE','ODBCGETSQL92FOREIGNKEYUPDATERULE','ODBCGETSQL92GRANT','ODBCGETSQL92NUMERICVALUEFUNCTIONS','ODBCGETSQL92PREDICATES',
+                        
'ODBCGETSQL92RELATIONALJOINOPERATORS','ODBCGETSQL92REVOKE','ODBCGETSQL92ROWVALUECONSTRUCTOR','ODBCGETSQL92STRINGFUNCTIONS','ODBCGETSQL92VALUEEXPRESSIONS','ODBCGETSQLCONFORMANCE','ODBCGETSQLSTATE','ODBCGETSTANDARDCLICONFORMANCE',
+                        
'ODBCGETSTATEMENTERRORINFO','ODBCGETSTATEMENTSQLSTATE','ODBCGETSTATICCURSORATTRIBUTES1','ODBCGETSTATICCURSORATTRIBUTES2','ODBCGETSTMTAPPPARAMDESC','ODBCGETSTMTAPPROWDESC','ODBCGETSTMTASYNCENABLE','ODBCGETSTMTATTR',
+                        
'ODBCGETSTMTCONCURRENCY','ODBCGETSTMTCURSORSCROLLABLE','ODBCGETSTMTCURSORSENSITIVITY','ODBCGETSTMTCURSORTYPE','ODBCGETSTMTENABLEAUTOIPD','ODBCGETSTMTERRORINFO','ODBCGETSTMTFETCHBOOKMARKPTR','ODBCGETSTMTIMPPARAMDESC',
+                        
'ODBCGETSTMTIMPROWDESC','ODBCGETSTMTKEYSETSIZE','ODBCGETSTMTMAXLENGTH','ODBCGETSTMTMAXROWS','ODBCGETSTMTMETADATAID','ODBCGETSTMTNOSCAN','ODBCGETSTMTPARAMBINDOFFSETPTR','ODBCGETSTMTPARAMBINDTYPE',
+                        
'ODBCGETSTMTPARAMOPERATIONPTR','ODBCGETSTMTPARAMSETSIZE','ODBCGETSTMTPARAMSPROCESSEDPTR','ODBCGETSTMTPARAMSTATUSPTR','ODBCGETSTMTQUERYTIMEOUT','ODBCGETSTMTRETRIEVEDATA','ODBCGETSTMTROWARRAYSIZE','ODBCGETSTMTROWBINDOFFSETPTR',
+                        
'ODBCGETSTMTROWBINDTYPE','ODBCGETSTMTROWNUMBER','ODBCGETSTMTROWOPERATIONPTR','ODBCGETSTMTROWSFETCHEDPTR','ODBCGETSTMTROWSTATUSPTR','ODBCGETSTMTSIMULATECURSOR','ODBCGETSTMTSQLSTATE','ODBCGETSTMTUSEBOOKMARKS',
+                        
'ODBCGETSTRINGFUNCTIONS','ODBCGETSUBQUERIES','ODBCGETSYSTEMFUNCTIONS','ODBCGETTABLETERM','ODBCGETTIMEDATEADDINTERVALS','ODBCGETTIMEDATEDIFFINTERVALS','ODBCGETTIMEDATEFUNCTIONS','ODBCGETTRACE',
+                        
'ODBCGETTRACEFILE','ODBCGETTRANSLATELIB','ODBCGETTRANSLATOR','ODBCGETTXNCAPABLE','ODBCGETTXNISOLATION','ODBCGETTXNISOLATIONOPTION','ODBCGETTYPEINFO','ODBCGETTYPEINFOCOUNT',
+                        
'ODBCGETUNION','ODBCGETUSERNAME','ODBCGETXOPENCLIYEAR','ODBCINSTALLDRIVEREX','ODBCINSTALLDRIVERMANAGER','ODBCINSTALLERERROR','ODBCINSTALLTRANSLATOREX','ODBCLOCKRECORD',
+                        
'ODBCMANAGEDATASOURCES','ODBCMORERESULTS','ODBCMOVE','ODBCMOVEFIRST','ODBCMOVELAST','ODBCMOVENEXT','ODBCMOVEPREVIOUS','ODBCNATIVESQL',
+                        
'ODBCNUMPARAMS','ODBCNUMRESULTCOLS','ODBCOPENCONNECTION','ODBCOPENSTMT','ODBCPARAMDATA','ODBCPOSTINSTALLERERROR','ODBCPREPARE','ODBCPRIMARYKEYS',
+                        
'ODBCPRIMARYKEYSCOUNT','ODBCPROCEDURECOLUMNS','ODBCPROCEDURECOLUMNSCOUNT','ODBCPROCEDURES','ODBCPROCEDURESCOUNT','ODBCPUTDATA','ODBCQUOTEDIDENTIFIERCASE','ODBCREADFILEDSN',
+                        
'ODBCRECORDCOUNT','ODBCREFRESHRECORD','ODBCREMOVEDRIVER','ODBCREMOVEDRIVERMANAGER','ODBCREMOVEDSNFROMINI','ODBCREMOVETRANSLATOR','ODBCRESETPARAMS','ODBCRESULT',
+                        
'ODBCROLLBACKDBCTRAN','ODBCROLLBACKENVTRAN','ODBCROLLBACKTRAN','ODBCROWCOUNT','ODBCSETABSOLUTEPOSITION','ODBCSETACCESSMODE','ODBCSETASYNCENABLE','ODBCSETAUTOCOMMIT',
+                        
'ODBCSETAUTOCOMMITOFF','ODBCSETAUTOCOMMITON','ODBCSETCONCURVALUESCONCURRENCY','ODBCSETCONFIGMODE','ODBCSETCONNECTATTR','ODBCSETCONNECTIONTIMEOUT','ODBCSETCURRENTCATALOG','ODBCSETCURSORCONCURRENCY',
+                        
'ODBCSETCURSORKEYSETSIZE','ODBCSETCURSORLOCKTYPE','ODBCSETCURSORNAME','ODBCSETCURSORSCROLLABILITY','ODBCSETCURSORSENSITIVITY','ODBCSETCURSORTYPE','ODBCSETDESCFIELD','ODBCSETDESCREC',
+                        
'ODBCSETDYNAMICCURSOR','ODBCSETENVATTR','ODBCSETENVCONNECTIONPOOLING','ODBCSETENVCPMATCH','ODBCSETENVODBCVERSION','ODBCSETENVOUTPUTNTS','ODBCSETFORWARDONLYCURSOR','ODBCSETKEYSETDRIVENCURSOR',
+                        
'ODBCSETLOCKCONCURRENCY','ODBCSETLOGINTIMEOUT','ODBCSETMETADATAID','ODBCSETMULTIUSERKEYSETCURSOR','ODBCSETODBCCURSORS','ODBCSETOPTIMISTICCONCURRENCY','ODBCSETPACKETMODE','ODBCSETPOS',
+                        
'ODBCSETPOSITION','ODBCSETQUIETMODE','ODBCSETREADONLYCONCURRENCY','ODBCSETRELATIVEPOSITION','ODBCSETRESULT','ODBCSETROWVERCONCURRENCY','ODBCSETSTATICCURSOR','ODBCSETSTMTAPPPARAMDESC',
+                        
'ODBCSETSTMTAPPROWDESC','ODBCSETSTMTASYNCENABLE','ODBCSETSTMTATTR','ODBCSETSTMTCONCURRENCY','ODBCSETSTMTCURSORSCROLLABLE','ODBCSETSTMTCURSORSENSITIVITY','ODBCSETSTMTCURSORTYPE','ODBCSETSTMTENABLEAUTOIPD',
+                        
'ODBCSETSTMTFETCHBOOKMARKPTR','ODBCSETSTMTKEYSETSIZE','ODBCSETSTMTMAXLENGTH','ODBCSETSTMTMAXROWS','ODBCSETSTMTMETADATAID','ODBCSETSTMTNOSCAN','ODBCSETSTMTPARAMBINDOFFSETPTR','ODBCSETSTMTPARAMBINDTYPE',
+                        
'ODBCSETSTMTPARAMOPERATIONPTR','ODBCSETSTMTPARAMSETSIZE','ODBCSETSTMTPARAMSPROCESSEDPTR','ODBCSETSTMTPARAMSTATUSPTR','ODBCSETSTMTQUERYTIMEOUT','ODBCSETSTMTRETRIEVEDATA','ODBCSETSTMTROWARRAYSIZE','ODBCSETSTMTROWBINDOFFSETPTR',
+                        
'ODBCSETSTMTROWBINDTYPE','ODBCSETSTMTROWOPERATIONPTR','ODBCSETSTMTROWSFETCHEDPTR','ODBCSETSTMTROWSTATUSPTR','ODBCSETSTMTSIMULATECURSOR','ODBCSETSTMTUSEBOOKMARKS','ODBCSETTRACE','ODBCSETTRACEFILE',
+                        
'ODBCSETTRANSLATELIB','ODBCSETTXNISOLATION','ODBCSPECIALCOLUMNS','ODBCSPECIALCOLUMNSCOUNT','ODBCSTATINDEXALLOWDUPLICATES','ODBCSTATINDEXCARDINALITY','ODBCSTATINDEXCATALOGNAME','ODBCSTATINDEXCOLUMNNAME',
+                        
'ODBCSTATINDEXCOLUMNORDINALPOSITION','ODBCSTATINDEXFILTERCONDITION','ODBCSTATINDEXPAGES','ODBCSTATINDEXQUALIFIER','ODBCSTATINDEXSCHEMANAME','ODBCSTATINDEXSORTSEQUENCE','ODBCSTATISTICS','ODBCSTATISTICSCOUNT',
+                        
'ODBCSTATTABLECARDINALITY','ODBCSTATTABLECATALOGNAME','ODBCSTATTABLEPAGES','ODBCSTATTABLESCHEMANAME','ODBCSUPPORTS','ODBCTABLEPRIVILEGES','ODBCTABLEPRIVILEGESCOUNT','ODBCTABLES',
+                        
'ODBCTABLESCOUNT','ODBCUNBINDCOL','ODBCUNBINDCOLUMNS','ODBCUNLOCKRECORD','ODBCUPDATEBYBOOKMARK','ODBCUPDATERECORD','ODBCVALIDDSN','ODBCWRITEDSNTOINI',
+                        
'ODBCWRITEFILEDSN','ODBCWRITEPRIVATEPROFILESTRING','ODBCWRONGDRIVER','SQLALLOCCONNECT','SQLALLOCENV','SQLALLOCHANDLE','SQLALLOCSTMT','SQLBINDCOL',
+                        
'SQLBINDPARAM','SQLBINDPARAMETER','SQLBROWSECONNECT','SQLBULKOPERATIONS','SQLCANCEL','SQLCLOSECURSOR','SQLCOLATTRIBUTE','SQLCOLATTRIBUTES',
+                        
'SQLCOLUMNPRIVILEGES','SQLCOLUMNS','SQLCONFIGDATASOURCE','SQLCONFIGDRIVER','SQLCONNECT','SQLCOPYDESC','SQLCREATEDATASOURCE','SQLDATASOURCES',
+                        
'SQLDESCRIBECOL','SQLDESCRIBEPARAM','SQLDISCONNECT','SQLDRIVERCONNECT','SQLDRIVERS','SQLENDTRAN','SQLERROR','SQLEXECDIRECT',
+                        
'SQLEXECUTE','SQLEXTENDEDFETCH','SQLFETCH','SQLFETCHSCROLL','SQLFOREIGNKEYS','SQLFREECONNECT','SQLFREEENV','SQLFREEHANDLE',
+                        
'SQLFREESTMT','SQLGETCONFIGMODE','SQLGETCONNECTATTR','SQLGETCONNECTOPTION','SQLGETCURSORNAME','SQLGETDATA','SQLGETDESCFIELD','SQLGETDESCREC',
+                        
'SQLGETDIAGFIELD','SQLGETDIAGREC','SQLGETENVATTR','SQLGETFUNCTIONS','SQLGETINFO','SQLGETINSTALLEDDRIVERS','SQLGETPRIVATEPROFILESTRING','SQLGETSTMTATTR',
+                        
'SQLGETSTMTOPTION','SQLGETTRANSLATOR','SQLGETTYPEINFO','SQLINSTALLDRIVEREX','SQLINSTALLDRIVERMANAGER','SQLINSTALLERERROR','SQLINSTALLTRANSLATOREX','SQLMANAGEDATASOURCES',
+                        
'SQLMORERESULTS','SQLNATIVESQL','SQLNUMPARAMS','SQLNUMRESULTCOLS','SQLPARAMDATA','SQLPARAMOPTIONS','SQLPOSTINSTALLERERROR','SQLPREPARE',
+                        
'SQLPRIMARYKEYS','SQLPROCEDURECOLUMNS','SQLPROCEDURES','SQLPUTDATA','SQLREADFILEDSN','SQLREMOVEDRIVER','SQLREMOVEDRIVERMANAGER','SQLREMOVEDSNFROMINI',
+                        
'SQLREMOVETRANSLATOR','SQLROWCOUNT','SQLSETCONFIGMODE','SQLSETCONNECTATTR','SQLSETCONNECTOPTION','SQLSETCURSORNAME','SQLSETDESCFIELD','SQLSETDESCREC',
+                        
'SQLSETENVATTR','SQLSETPARAM','SQLSETPOS','SQLSETSCROLLOPTIONS','SQLSETSTMTATTR','SQLSETSTMTOPTION','SQLSPECIALCOLUMNS','SQLSTATISTICS',
+                        
'SQLTABLEPRIVILEGES','SQLTABLES','SQLTRANSACT','SQLVALIDDSN','SQLWRITEDSNTOINI','SQLWRITEFILEDSN','SQLWRITEPRIVATEPROFILESTRING'),
+                2 => array(
+                        
'$BEL','$BS','$CR','$CRLF','$DQ','$DT_DATE_SEPARATOR','$DT_LANGUAGE','$DT_TIME_SEPARATOR',
+                        
'$ESC','$FF','$LF','$NUL','$PC_SD_MY_PC','$SPC','$SQL_OPT_TRACE_FILE_DEFAULT','$SQL_SPEC_STRING',
+                        
'$TAB','$VT','%ACM_OPEN','%ACM_OPENW','%ACM_PLAY','%ACM_STOP','%ACN_START','%ACN_STOP',
+                        
'%ACS_AUTOPLAY','%ACS_CENTER','%ACS_TIMER','%ACS_TRANSPARENT','%ADCMDFILE','%ADCMDSTOREDPROC','%ADCMDTABLE','%ADCMDTABLEDIRECT',
+                        
'%ADCMDTEXT','%ADCMDUNKNOWN','%ADCMDUNSPECIFIED','%ADLOCKBATCHOPTIMISTIC','%ADLOCKOPTIMISTIC','%ADLOCKPESSIMISTIC','%ADLOCKREADONLY','%ADLOCKUNSPECIFIED',
+                        
'%ADOPENDYNAMIC','%ADOPENFORWARDONLY','%ADOPENKEYSET','%ADOPENSTATIC','%ADOPENUNSPECIFIED','%APP_COUNTER_FUNLOOKUP','%APP_COUNTER_KEYLOOKUP','%APP_COUNTER_LOOKUP',
+                        
'%APP_COUNTER_TESTALPHA','%APP_COUNTER_UDTLOOKUP','%APP_COUNTER_VARLOOKUP','%APP_TIMER_EXECTOTAL','%APP_TIMER_INIT','%APP_TIMER_LOAD','%APP_TIMER_PREPROCESSOR','%AW_ACTIVATE',
+                        
'%AW_BLEND','%AW_CENTER','%AW_HIDE','%AW_HOR_NEGATIVE','%AW_HOR_POSITIVE','%AW_SLIDE','%AW_VER_NEGATIVE','%AW_VER_POSITIVE',
+                        
'%BCM_FIRST','%BLACK','%BLUE','%BM_SETCHECK','%BST_CHECKED','%BST_UNCHECKED','%BS_AUTOCHECKBOX','%BS_BOTTOM',
+                        
'%BS_CENTER','%BS_DEFAULT','%BS_DEFPUSHBUTTON','%BS_FLAT','%BS_LEFT','%BS_LEFTTEXT','%BS_MULTILINE','%BS_NOTIFY',
+                        
'%BS_PUSHLIKE','%BS_RIGHT','%BS_TOP','%BS_VCENTER','%CBM_FIRST','%CBN_SELENDOK','%CBS_AUTOHSCROLL','%CBS_DISABLENOSCROLL',
+                        
'%CBS_DROPDOWN','%CBS_DROPDOWNLIST','%CBS_HASSTRINGS','%CBS_LOWERCASE','%CBS_NOINTEGRALHEIGHT','%CBS_SIMPLE','%CBS_SORT','%CBS_UPPERCASE',
+                        
'%CB_SELECTSTRING','%CCM_FIRST','%CC_ANYCOLOR','%CC_ENABLEHOOK','%CC_ENABLETEMPLATE','%CC_ENABLETEMPLATEHANDLE','%CC_FULLOPEN','%CC_PREVENTFULLOPEN',
+                        
'%CC_RGBINIT','%CC_SHOWHELP','%CC_SOLIDCOLOR','%CFE_BOLD','%CFE_ITALIC','%CFE_LINK','%CFE_PROTECTED','%CFE_STRIKEOUT',
+                        
'%CFE_UNDERLINE','%CFM_ANIMATION','%CFM_BACKCOLOR','%CFM_BOLD','%CFM_CHARSET','%CFM_COLOR','%CFM_FACE','%CFM_ITALIC',
+                        
'%CFM_KERNING','%CFM_LCID','%CFM_LINK','%CFM_OFFSET','%CFM_PROTECTED','%CFM_REVAUTHOR','%CFM_SIZE','%CFM_SPACING',
+                        
'%CFM_STRIKEOUT','%CFM_STYLE','%CFM_UNDERLINE','%CFM_UNDERLINETYPE','%CFM_WEIGHT','%CGI_ACCEPT_FILE_UPLOAD','%CGI_AUTO_ADD_SPECIAL_CHARS_PREFIX','%CGI_AUTO_CREATE_VARS',
+                        
'%CGI_BUFFERIZE_OUTPUT','%CGI_DOUBLE_QUOTE','%CGI_FILE_UPLOAD_BASEPATH','%CGI_FORCE_SESSION_VALIDATION','%CGI_MAX_BYTE_FROM_STD_IN','%CGI_REQUEST_METHOD_GET','%CGI_REQUEST_METHOD_POST','%CGI_SESSION_FILE_BASEPATH',
+                        
'%CGI_SINGLE_QUOTE','%CGI_SPECIAL_CHARS_PREFIX','%CGI_TEMPORARY_UPLOAD_PATH','%CGI_UPLOAD_CAN_OVERWRITE','%CGI_WRITE_LOG_FILE','%CGI_WRITE_VARS_INTO_LOG_FILE','%CONOLE_ATTACH_PARENT_PROCESS','%CONSOLE_BACKGROUND_BLUE',
+                        
'%CONSOLE_BACKGROUND_GREEN','%CONSOLE_BACKGROUND_INTENSITY','%CONSOLE_BACKGROUND_RED','%CONSOLE_BOX_FLAG_3DOFF','%CONSOLE_BOX_FLAG_3DON','%CONSOLE_BOX_FLAG_SHADOW','%CONSOLE_COMMON_LVB_GRID_HORIZONTAL','%CONSOLE_COMMON_LVB_GRID_LVERTICAL',
+                        
'%CONSOLE_COMMON_LVB_GRID_RVERTICAL','%CONSOLE_COMMON_LVB_LEADING_BYTE','%CONSOLE_COMMON_LVB_REVERSE_VIDEO','%CONSOLE_COMMON_LVB_TRAILING_BYTE','%CONSOLE_COMMON_LVB_UNDERSCORE','%CONSOLE_CTRL_BREAK_EVENT','%CONSOLE_CTRL_C_EVENT','%CONSOLE_DOUBLE_CLICK',
+                        
'%CONSOLE_ENABLE_AUTO_POSITION','%CONSOLE_ENABLE_ECHO_INPUT','%CONSOLE_ENABLE_EXTENDED_FLAGS','%CONSOLE_ENABLE_INSERT_MODE','%CONSOLE_ENABLE_LINE_INPUT','%CONSOLE_ENABLE_MOUSE_INPUT','%CONSOLE_ENABLE_PROCESSED_INPUT','%CONSOLE_ENABLE_PROCESSED_OUTPUT',
+                        
'%CONSOLE_ENABLE_QUICK_EDIT_MODE','%CONSOLE_ENABLE_WINDOW_INPUT','%CONSOLE_ENABLE_WRAP_AT_EOL_OUTPUT','%CONSOLE_FOREGROUND_BLUE','%CONSOLE_FOREGROUND_GREEN','%CONSOLE_FOREGROUND_INTENSITY','%CONSOLE_FOREGROUND_RED','%CONSOLE_LBUTTON',
+                        
'%CONSOLE_MBUTTON','%CONSOLE_MOUSE_MOVED','%CONSOLE_MOUSE_WHEELED','%CONSOLE_RBUTTON','%CONSOLE_SCROLLBUF_DOWN','%CONSOLE_SCROLLBUF_UP','%CONSOLE_SCROLLWND_ABSOLUTE','%CONSOLE_SCROLLWND_RELATIVE',
+                        
'%CONSOLE_STD_ERROR_HANDLE','%CONSOLE_STD_INPUT_HANDLE','%CONSOLE_STD_OUTPUT_HANDLE','%CONSOLE_SW_FORCEMINIMIZE','%CONSOLE_SW_HIDE','%CONSOLE_SW_MAXIMIZE','%CONSOLE_SW_MINIMIZE','%CONSOLE_SW_RESTORE',
+                        
'%CONSOLE_SW_SHOW','%CONSOLE_SW_SHOWDEFAULT','%CONSOLE_SW_SHOWMAXIMIZED','%CONSOLE_SW_SHOWMINIMIZED','%CONSOLE_SW_SHOWMINNOACTIVE','%CONSOLE_SW_SHOWNA','%CONSOLE_SW_SHOWNOACTIVATE','%CONSOLE_SW_SHOWNORMAL',
+                        
'%CONSOLE_UNAVAILABLE','%CRYPTO_CALG_DES','%CRYPTO_CALG_RC2','%CRYPTO_CALG_RC4','%CRYPTO_PROV_DH_SCHANNEL','%CRYPTO_PROV_DSS','%CRYPTO_PROV_DSS_DH','%CRYPTO_PROV_FORTEZZA',
+                        
'%CRYPTO_PROV_MS_EXCHANGE','%CRYPTO_PROV_RSA_FULL','%CRYPTO_PROV_RSA_SCHANNEL','%CRYPTO_PROV_RSA_SIG','%CRYPTO_PROV_SSL','%CSIDL_ADMINTOOLS','%CSIDL_ALTSTARTUP','%CSIDL_APPDATA',
+                        
'%CSIDL_BITBUCKET','%CSIDL_CDBURN_AREA','%CSIDL_COMMON_ADMINTOOLS','%CSIDL_COMMON_ALTSTARTUP','%CSIDL_COMMON_APPDATA','%CSIDL_COMMON_DESKTOPDIRECTORY','%CSIDL_COMMON_DOCUMENTS','%CSIDL_COMMON_FAVORITES',
+                        
'%CSIDL_COMMON_MUSIC','%CSIDL_COMMON_PICTURES','%CSIDL_COMMON_PROGRAMS','%CSIDL_COMMON_STARTMENU','%CSIDL_COMMON_STARTUP','%CSIDL_COMMON_TEMPLATES','%CSIDL_COMMON_VIDEO','%CSIDL_CONTROLS',
+                        
'%CSIDL_COOKIES','%CSIDL_DESKTOP','%CSIDL_DESKTOPDIRECTORY','%CSIDL_DRIVES','%CSIDL_FAVORITES','%CSIDL_FLAG_CREATE','%CSIDL_FONTS','%CSIDL_HISTORY',
+                        
'%CSIDL_INTERNET','%CSIDL_INTERNET_CACHE','%CSIDL_LOCAL_APPDATA','%CSIDL_MYDOCUMENTS','%CSIDL_MYMUSIC','%CSIDL_MYPICTURES','%CSIDL_MYVIDEO','%CSIDL_NETHOOD',
+                        
'%CSIDL_NETWORK','%CSIDL_PERSONAL','%CSIDL_PRINTERS','%CSIDL_PRINTHOOD','%CSIDL_PROFILE','%CSIDL_PROGRAMS','%CSIDL_PROGRAM_FILES','%CSIDL_PROGRAM_FILES_COMMON',
+                        
'%CSIDL_RECENT','%CSIDL_SENDTO','%CSIDL_STARTMENU','%CSIDL_STARTUP','%CSIDL_SYSTEM','%CSIDL_TEMPLATES','%CSIDL_WINDOWS','%CW_USEDEFAULT',
+                        
'%CYAN','%DATE_TIME_FILE_CREATION','%DATE_TIME_LAST_FILE_ACCESS','%DATE_TIME_LAST_FILE_WRITE','%DS_3DLOOK','%DS_ABSALIGN','%DS_CENTER','%DS_CENTERMOUSE',
+                        
'%DS_CONTEXTHELP','%DS_CONTROL','%DS_MODALFRAME','%DS_NOFAILCREATE','%DS_SETFONT','%DS_SETFOREGROUND','%DS_SYSMODAL','%DTM_FIRST',
+                        
'%DTM_GETMCCOLOR','%DTM_GETMCFONT','%DTM_GETMONTHCAL','%DTM_GETRANGE','%DTM_GETSYSTEMTIME','%DTM_SETFORMAT','%DTM_SETFORMATW','%DTM_SETMCCOLOR',
+                        
'%DTM_SETMCFONT','%DTM_SETRANGE','%DTM_SETSYSTEMTIME','%DTN_CLOSEUP','%DTN_DATETIMECHANGE','%DTN_DROPDOWN','%DTN_FORMAT','%DTN_FORMATQUERY',
+                        
'%DTN_FORMATQUERYW','%DTN_FORMATW','%DTN_USERSTRING','%DTN_USERSTRINGW','%DTN_WMKEYDOWN','%DTN_WMKEYDOWNW','%DTS_APPCANPARSE','%DTS_LONGDATEFORMAT',
+                        
'%DTS_RIGHTALIGN','%DTS_SHORTDATECENTURYFORMAT','%DTS_SHORTDATEFORMAT','%DTS_SHOWNONE','%DTS_TIMEFORMAT','%DTS_UPDOWN','%DT_DATE_CENTURY','%DT_DATE_OK',
+                        
'%DT_DAY_IN_YEAR','%DT_DIFF_IN_DAYS','%DT_DIFF_IN_HOURS','%DT_DIFF_IN_MINUTES','%DT_DIFF_IN_SECONDS','%DT_HOURS_IN_DAY','%DT_MINUTES_IN_HOUR','%DT_SECONDS_IN_DAY',
+                        
'%DT_SECONDS_IN_HOUR','%DT_SECONDS_IN_MINUTE','%DT_SECONDS_IN_YEAR','%DT_USE_LONG_FORM','%DT_USE_SHORT_FORM','%DT_WRONG_DATE','%DT_WRONG_DAY','%DT_WRONG_MONTH',
+                        
'%ECM_FIRST','%ECOOP_AND','%ECOOP_OR','%ECOOP_SET','%ECOOP_XOR','%ECO_AUTOHSCROLL','%ECO_AUTOVSCROLL','%ECO_AUTOWORDSELECTION',
+                        
'%ECO_NOHIDESEL','%ECO_READONLY','%ECO_SELECTIONBAR','%ECO_WANTRETURN','%EM_CANPASTE','%EM_CANREDO','%EM_CANUNDO','%EM_CHARFROMPOS',
+                        
'%EM_DISPLAYBAND','%EM_EMPTYUNDOBUFFER','%EM_EXGETSEL','%EM_EXLIMITTEXT','%EM_EXLINEFROMCHAR','%EM_EXSETSEL','%EM_FINDTEXT','%EM_FINDTEXTEX',
+                        
'%EM_FINDWORDBREAK','%EM_FMTLINES','%EM_FORMATRANGE','%EM_GETCHARFORMAT','%EM_GETEDITSTYLE','%EM_GETEVENTMASK','%EM_GETFIRSTVISIBLELINE','%EM_GETHANDLE',
+                        
'%EM_GETIMESTATUS','%EM_GETLIMITTEXT','%EM_GETLINE','%EM_GETLINECOUNT','%EM_GETMARGINS','%EM_GETMODIFY','%EM_GETOLEINTERFACE','%EM_GETOPTIONS',
+                        
'%EM_GETPARAFORMAT','%EM_GETPASSWORDCHAR','%EM_GETRECT','%EM_GETREDONAME','%EM_GETSCROLLPOS','%EM_GETSEL','%EM_GETSELTEXT','%EM_GETTEXTMODE',
+                        
'%EM_GETTEXTRANGE','%EM_GETTHUMB','%EM_GETUNDONAME','%EM_GETWORDBREAKPROC','%EM_GETWORDBREAKPROCEX','%EM_HIDESELECTION','%EM_LIMITTEXT','%EM_LINEFROMCHAR',
+                        
'%EM_LINEINDEX','%EM_LINELENGTH','%EM_LINESCROLL','%EM_PASTESPECIAL','%EM_POSFROMCHAR','%EM_REDO','%EM_REPLACESEL','%EM_REQUESTRESIZE',
+                        
'%EM_SCROLL','%EM_SCROLLCARET','%EM_SELECTIONTYPE','%EM_SETBKGNDCOLOR','%EM_SETCHARFORMAT','%EM_SETEDITSTYLE','%EM_SETEVENTMASK','%EM_SETHANDLE',
+                        
'%EM_SETIMESTATUS','%EM_SETLIMITTEXT','%EM_SETMARGINS','%EM_SETMODIFY','%EM_SETOLECALLBACK','%EM_SETOPTIONS','%EM_SETPARAFORMAT','%EM_SETPASSWORDCHAR',
+                        
'%EM_SETREADONLY','%EM_SETRECT','%EM_SETRECTNP','%EM_SETSCROLLPOS','%EM_SETSEL','%EM_SETTABSTOPS','%EM_SETTARGETDEVICE','%EM_SETTEXTMODE',
+                        
'%EM_SETUNDOLIMIT','%EM_SETWORDBREAKPROC','%EM_SETWORDBREAKPROCEX','%EM_STOPGROUPTYPING','%EM_STREAMIN','%EM_STREAMOUT','%EM_UNDO','%ENM_CHANGE',
+                        
'%ENM_CORRECTTEXT','%ENM_DRAGDROPDONE','%ENM_DROPFILES','%ENM_KEYEVENTS','%ENM_MOUSEEVENTS','%ENM_NONE','%ENM_PARAGRAPHEXPANDED','%ENM_PROTECTED',
+                        
'%ENM_REQUESTRESIZE','%ENM_SCROLL','%ENM_SCROLLEVENTS','%ENM_SELCHANGE','%ENM_UPDATE','%EN_CHANGE','%EN_MSGFILTER','%EN_SELCHANGE',
+                        
'%EN_UPDATE','%ES_AUTOHSCROLL','%ES_AUTOVSCROLL','%ES_CENTER','%ES_DISABLENOSCROLL','%ES_EX_NOCALLOLEINIT','%ES_LEFT','%ES_LOWERCASE',
+                        
'%ES_MULTILINE','%ES_NOHIDESEL','%ES_NOOLEDRAGDROP','%ES_NUMBER','%ES_OEMCONVERT','%ES_PASSWORD','%ES_READONLY','%ES_RIGHT',
+                        
'%ES_SAVESEL','%ES_SELECTIONBAR','%ES_SUNKEN','%ES_UPPERCASE','%ES_WANTRETURN','%FALSE','%FILE_ADDPATH','%FILE_ARCHIVE',
+                        
'%FILE_BUILDVERSION','%FILE_HIDDEN','%FILE_MAJORVERSION','%FILE_MINORVERSION','%FILE_NORMAL','%FILE_READONLY','%FILE_REVISIONVERSION','%FILE_SUBDIR',
+                        
'%FILE_SYSTEM','%FILE_VLABEL','%FTP_GET_CONNECT_STATUS','%FTP_GET_FILE_BYTES_RCVD','%FTP_GET_FILE_BYTES_SENT','%FTP_GET_LAST_RESPONSE','%FTP_GET_LOCAL_IP','%FTP_GET_SERVER_IP',
+                        
'%FTP_GET_TOTAL_BYTES_RCVD','%FTP_GET_TOTAL_BYTES_SENT','%FTP_LIST_FULLLIST','%FTP_LIST_FULLLISTDIR','%FTP_LIST_FULLLISTFILE','%FTP_SET_ASYNC','%FTP_SET_CONNECT_WAIT','%FTP_SET_MAX_LISTEN_WAIT',
+                        
'%FTP_SET_MAX_RESPONSE_WAIT','%FTP_SET_PASSIVE','%FTP_SET_SYNC','%FW_BLACK','%FW_BOLD','%FW_DEMIBOLD','%FW_DONTCARE','%FW_EXTRABOLD',
+                        
'%FW_EXTRALIGHT','%FW_HEAVY','%FW_LIGHT','%FW_MEDIUM','%FW_NORMAL','%FW_REGULAR','%FW_SEMIBOLD','%FW_THIN',
+                        
'%FW_ULTRABOLD','%FW_ULTRALIGHT','%GDTR_MAX','%GDTR_MIN','%GL_CLIP_PLANE0','%GL_CLIP_PLANE1','%GL_CLIP_PLANE2','%GL_CLIP_PLANE3',
+                        
'%GL_CLIP_PLANE4','%GL_CLIP_PLANE5','%GL_DST_ALPHA','%GL_DST_COLOR','%GL_FILL','%GL_LIGHT0','%GL_LIGHT1','%GL_LIGHT2',
+                        
'%GL_LIGHT3','%GL_LIGHT4','%GL_LIGHT5','%GL_LIGHT6','%GL_LIGHT7','%GL_LINE','%GL_LINES','%GL_LINE_LOOP',
+                        
'%GL_LINE_STRIP','%GL_ONE','%GL_ONE_MINUS_DST_ALPHA','%GL_ONE_MINUS_DST_COLOR','%GL_ONE_MINUS_SRC_ALPHA','%GL_ONE_MINUS_SRC_COLOR','%GL_POINT','%GL_POINTS',
+                        
'%GL_POLYGON','%GL_QUADS','%GL_QUAD_STRIP','%GL_SRC_ALPHA','%GL_SRC_ALPHA_SATURATE','%GL_SRC_COLOR','%GL_TRIANGLES','%GL_TRIANGLE_FAN',
+                        
'%GL_TRIANGLE_STRIP','%GL_ZERO','%GRAY','%GREEN','%GWLP_HINSTANCE','%GWLP_HWNDPARENT','%GWLP_ID','%GWLP_USERDATA',
+                        
'%GWLP_WNDPROC','%GWL_EXSTYLE','%GWL_HINSTANCE','%GWL_HWNDPARENT','%GWL_ID','%GWL_STYLE','%GWL_USERDATA','%GWL_WNDPROC',
+                        
'%HDM_FIRST','%ICRYPTO_XOR_DECREASE','%ICRYPTO_XOR_INCREASE','%ICRYPTO_XOR_NORMAL','%IDABORT','%IDCANCEL','%IDCONTINUE','%IDIGNORE',
+                        
'%IDNO','%IDOK','%IDRETRY','%IDTIMEOUT','%IDTRYAGAIN','%IDYES','%INTERNET_CONNECTION_CONFIGURED','%INTERNET_CONNECTION_LAN',
+                        
'%INTERNET_CONNECTION_MODEM','%INTERNET_CONNECTION_MODEM_BUSY','%INTERNET_CONNECTION_OFFLINE','%INTERNET_CONNECTION_PROXY','%INTERNET_RAS_INSTALLED','%LBN_DBLCLK','%LBN_KILLFOCUS','%LBN_SELCANCEL',
+                        
'%LBN_SELCHANGE','%LBN_SETFOCUS','%LBS_DISABLENOSCROLL','%LBS_EXTENDEDSEL','%LBS_MULTICOLUMN','%LBS_MULTIPLESEL','%LBS_NOINTEGRALHEIGHT','%LBS_NOSEL',
+                        
'%LBS_NOTIFY','%LBS_SORT','%LBS_STANDARD','%LBS_USETABSTOPS','%LB_ADDFILE','%LB_ADDSTRING','%LB_DELETESTRING','%LB_DIR',
+                        
'%LB_FINDSTRING','%LB_FINDSTRINGEXACT','%LB_GETANCHORINDEX','%LB_GETCARETINDEX','%LB_GETCOUNT','%LB_GETCURSEL','%LB_GETHORIZONTALEXTENT','%LB_GETITEMDATA',
+                        
'%LB_GETITEMHEIGHT','%LB_GETITEMRECT','%LB_GETLISTBOXINFO','%LB_GETLOCALE','%LB_GETSEL','%LB_GETSELCOUNT','%LB_GETSELITEMS','%LB_GETTEXT',
+                        
'%LB_GETTEXTLEN','%LB_GETTOPINDEX','%LB_INITSTORAGE','%LB_INSERTSTRING','%LB_ITEMFROMPOINT','%LB_MULTIPLEADDSTRING','%LB_RESETCONTENT','%LB_SELECTSTRING',
+                        
'%LB_SELITEMRANGE','%LB_SELITEMRANGEEX','%LB_SETANCHORINDEX','%LB_SETCARETINDEX','%LB_SETCOLUMNWIDTH','%LB_SETCOUNT','%LB_SETCURSEL','%LB_SETHORIZONTALEXTENT',
+                        
'%LB_SETITEMDATA','%LB_SETITEMHEIGHT','%LB_SETLOCALE','%LB_SETSEL','%LB_SETTABSTOPS','%LB_SETTOPINDEX','%LF_FACESIZE','%LTGRAY',
+                        
'%LVM_FIRST','%MAGENTA','%MAXBYTE','%MAXCHAR','%MAXDWORD','%MAXSHORT','%MAXWORD','%MAX_PATH',
+                        
'%MB_ABORTRETRYIGNORE','%MB_APPLMODAL','%MB_CANCELTRYCONTINUE','%MB_DEFBUTTON1','%MB_DEFBUTTON2','%MB_DEFBUTTON3','%MB_HELP','%MB_ICONASTERISK',
+                        
'%MB_ICONERROR','%MB_ICONEXCLAMATION','%MB_ICONHAND','%MB_ICONINFORMATION','%MB_ICONQUESTION','%MB_ICONSTOP','%MB_ICONWARNING','%MB_OK',
+                        
'%MB_OKCANCEL','%MB_RETRYCANCEL','%MB_SIMPLE','%MB_SYSTEMMODAL','%MB_TOPMOST','%MB_YESNO','%MB_YESNOCANCEL','%MF_CHECKED',
+                        
'%MF_DISABLED','%MF_ENABLED','%MF_GRAYED','%MF_SEPARATOR','%MF_UNCHECKED','%MINCHAR','%MINLONG','%MINSHORT',
+                        
'%NULL','%ODBC352_INC','%ODBCVER','%ODBC_ADD_DSN','%ODBC_ADD_SYS_DSN','%ODBC_BOTH_DSN','%ODBC_CONFIG_DRIVER','%ODBC_CONFIG_DRIVER_MAX',
+                        
'%ODBC_CONFIG_DSN','%ODBC_CONFIG_SYS_DSN','%ODBC_DRIVER_VERSION','%ODBC_ERROR_COMPONENT_NOT_FOUND','%ODBC_ERROR_CREATE_DSN_FAILED','%ODBC_ERROR_GENERAL_ERR','%ODBC_ERROR_INVALID_BUFF_LEN','%ODBC_ERROR_INVALID_DSN',
+                        
'%ODBC_ERROR_INVALID_HWND','%ODBC_ERROR_INVALID_INF','%ODBC_ERROR_INVALID_KEYWORD_VALUE','%ODBC_ERROR_INVALID_LOG_FILE','%ODBC_ERROR_INVALID_NAME','%ODBC_ERROR_INVALID_PARAM_SEQUENCE','%ODBC_ERROR_INVALID_PATH','%ODBC_ERROR_INVALID_REQUEST_TYPE',
+                        
'%ODBC_ERROR_INVALID_STR','%ODBC_ERROR_LOAD_LIB_FAILED','%ODBC_ERROR_OUTPUT_STRING_TRUNCATED','%ODBC_ERROR_OUT_OF_MEM','%ODBC_ERROR_REMOVE_DSN_FAILED','%ODBC_ERROR_REQUEST_FAILED','%ODBC_ERROR_USAGE_UPDATE_FAILED','%ODBC_ERROR_USER_CANCELED',
+                        
'%ODBC_ERROR_WRITING_SYSINFO_FAILED','%ODBC_INSTALL_COMPLETE','%ODBC_INSTALL_DRIVER','%ODBC_INSTALL_INQUIRY','%ODBC_REMOVE_DEFAULT_DSN','%ODBC_REMOVE_DRIVER','%ODBC_REMOVE_DSN','%ODBC_REMOVE_SYS_DSN',
+                        
'%ODBC_SYSTEM_DSN','%ODBC_USER_DSN','%OFN_ALLOWMULTISELECT','%OFN_CREATEPROMPT','%OFN_ENABLEHOOK','%OFN_ENABLEINCLUDENOTIFY','%OFN_ENABLESIZING','%OFN_ENABLETEMPLATE',
+                        
'%OFN_ENABLETEMPLATEHANDLE','%OFN_EXPLORER','%OFN_EXTENSIONDIFFERENT','%OFN_FILEMUSTEXIST','%OFN_HIDEREADONLY','%OFN_LONGNAMES','%OFN_NOCHANGEDIR','%OFN_NODEREFERENCELINKS',
+                        
'%OFN_NOLONGNAMES','%OFN_NONETWORKBUTTON','%OFN_NOREADONLYRETURN','%OFN_NOTESTFILECREATE','%OFN_NOVALIDATE','%OFN_OVERWRITEPROMPT','%OFN_PATHMUSTEXIST','%OFN_READONLY',
+                        
'%OFN_SHAREAWARE','%OFN_SHOWHELP','%OS_ERROR_CALLFUNCTION','%OS_ERROR_EMPTYSTRING','%OS_ERROR_LOADLIBRARY','%OS_ERROR_SUCCESS','%OS_ERROR_WRONGPARAMETER','%OS_SHELL_ASYNC',
+                        
'%OS_SHELL_SYNC','%OS_WNDSTYLE_HIDE','%OS_WNDSTYLE_MAXIMIZED','%OS_WNDSTYLE_MINIMIZED','%OS_WNDSTYLE_MINIMIZEDNOFOCUS','%OS_WNDSTYLE_NORMAL','%OS_WNDSTYLE_NORMALNOFOCUS','%PATH_EXT',
+                        
'%PATH_FILE','%PATH_FILEEXT','%PATH_ROOT','%PATH_ROOTPATH','%PATH_ROOTPATHPROG','%PATH_ROOTPATHPROGEXT','%PBM_DELTAPOS','%PBM_GETPOS',
+                        
'%PBM_GETRANGE','%PBM_SETBARCOLOR','%PBM_SETBKCOLOR','%PBM_SETPOS','%PBM_SETRANGE','%PBM_SETRANGE32','%PBM_SETSTEP','%PBM_STEPIT',
+                        
'%PBS_SMOOTH','%PBS_VERTICAL','%PC_DISABLEWAKEEVENT_OFF','%PC_DISABLEWAKEEVENT_ON','%PC_EB_NOCONFIRMATION','%PC_EB_NOPROGRESSUI','%PC_EB_NORMAL','%PC_EB_NOSOUND',
+                        
'%PC_FORCECRITICAL_OFF','%PC_FORCECRITICAL_ON','%PC_HIBERNATE_OFF','%PC_HIBERNATE_ON','%PC_RD_FORCE','%PC_RD_FORCEIFHUNG','%PC_RD_LOGOFF','%PC_RD_POWEROFF',
+                        
'%PC_RD_REBOOT','%PC_RD_SHUTDOWN','%PC_SD_DONOT_FORCE','%PC_SD_DONOT_REBOOT','%PC_SD_FORCE','%PC_SD_REBOOT','%PGM_FIRST','%RED',
+                        
'%SAPI_SVSFDEFAULT','%SAPI_SVSFISFILENAME','%SAPI_SVSFISNOTXML','%SAPI_SVSFISXML','%SAPI_SVSFLAGSASYNC','%SAPI_SVSFNLPMASK','%SAPI_SVSFNLPSPEAKPUNC','%SAPI_SVSFPERSISTXML',
+                        
'%SAPI_SVSFPURGEBEFORESPEAK','%SAPI_SVSFUNUSEDFLAGS','%SAPI_SVSFVOICEMASK','%SBS_SIZEGRIP','%SB_BOTTOM','%SB_ENDSCROLL','%SB_LEFT','%SB_LINEDOWN',
+                        
'%SB_LINELEFT','%SB_LINERIGHT','%SB_LINEUP','%SB_PAGEDOWN','%SB_PAGELEFT','%SB_PAGERIGHT','%SB_PAGEUP','%SB_RIGHT',
+                        
'%SB_THUMBPOSITION','%SB_THUMBTRACK','%SB_TOP','%SCF_ALL','%SCF_ASSOCIATEFONT','%SCF_DEFAULT','%SCF_NOKBUPDATE','%SCF_SELECTION',
+                        
'%SCF_USEUIRULES','%SCF_WORD','%SC_CLOSE','%SC_CONTEXTHELP','%SC_HOTKEY','%SC_HSCROLL','%SC_KEYMENU','%SC_MAXIMIZE',
+                        
'%SC_MINIMIZE','%SC_MONITORPOWER','%SC_MOUSEMENU','%SC_MOVE','%SC_NEXTWINDOW','%SC_PREVWINDOW','%SC_RESTORE','%SC_SCREENSAVE',
+                        
'%SC_SIZE','%SC_TASKLIST','%SC_VSCROLL','%SES_ALLOWBEEPS','%SES_BEEPONMAXTEXT','%SES_BIDI','%SES_EMULATE10','%SES_EMULATESYSEDIT',
+                        
'%SES_EXTENDBACKCOLOR','%SES_LOWERCASE','%SES_MAPCPS','%SES_NOIME','%SES_NOINPUTSEQUENCECHK','%SES_SCROLLONKILLFOCUS','%SES_UPPERCASE','%SES_USEAIMM',
+                        
'%SES_USECRLF','%SES_XLTCRCRLFTOCR','%SF_RTF','%SF_TEXT','%SMTP_ADDRESS_DELIMITER','%SMTP_ADD_HEADER','%SMTP_ALLOW_8BITS','%SMTP_ASYNC',
+                        
'%SMTP_ATTACH_BASE_NUMBER','%SMTP_ATTACH_DELIMITER','%SMTP_AUTHENTICATE_CRAM','%SMTP_AUTHENTICATE_LOGIN','%SMTP_AUTHENTICATE_PLAIN','%SMTP_AUTHENTICATE_PROTOCOL','%SMTP_AUTO_CALL_DRIVER','%SMTP_BLOCKING_MODE',
+                        
'%SMTP_CHARSET_8859','%SMTP_CHARSET_BLANK','%SMTP_CHARSET_ISO_8859_1','%SMTP_CHARSET_ISO_8859_8','%SMTP_CHARSET_US_ASCII','%SMTP_CHARSET_WIN_1252','%SMTP_CHARSET_WIN_1255','%SMTP_CONNECT_WAIT',
+                        
'%SMTP_COPY_BUFFER','%SMTP_DECODE_UNNAMED','%SMTP_DISABLE_MIME','%SMTP_ENABLE_APOP','%SMTP_ENABLE_ESMTP','%SMTP_ENABLE_IMAGE','%SMTP_ENABLE_XMAILER','%SMTP_FILE_PREFIX',
+                        
'%SMTP_FORCE_INLINE','%SMTP_GET_ATTACH_BYTES_READ','%SMTP_GET_ATTACH_BYTES_SENT','%SMTP_GET_ATTACH_COUNT','%SMTP_GET_ATTACH_NAMES','%SMTP_GET_BUFFER_COUNT','%SMTP_GET_BUILD','%SMTP_GET_CONNECT_STATUS',
+                        
'%SMTP_GET_COUNTER','%SMTP_GET_LAST_RECIPIENT','%SMTP_GET_LAST_RESPONSE','%SMTP_GET_LOCAL_IP','%SMTP_GET_MESSAGE_BYTES_READ','%SMTP_GET_MESSAGE_BYTES_SENT','%SMTP_GET_MSG_COUNT','%SMTP_GET_MSG_SIZE',
+                        
'%SMTP_GET_REGISTRATION','%SMTP_GET_RESPONSE','%SMTP_GET_SERVER_IP','%SMTP_GET_SOCKET','%SMTP_GET_SOCK_ERROR','%SMTP_GET_TOTAL_BYTES_READ','%SMTP_GET_TOTAL_BYTES_SENT','%SMTP_GET_VERIFY_STATUS',
+                        
'%SMTP_GET_VERSION','%SMTP_HIDE_HEADERS','%SMTP_HIDE_SAVED_MSG','%SMTP_HIDE_TO_ADDR','%SMTP_HTML_CHARSET','%SMTP_IGNORE_REJECTED','%SMTP_INLINE_TEXT_ATTACHMENT','%SMTP_INLINE_TEXT_INLINE',
+                        
'%SMTP_INLINE_TEXT_OFF','%SMTP_LOG_FILE','%SMTP_MAX_LINE_LENGTH','%SMTP_MAX_RESPONSE_WAIT','%SMTP_MIN_RESPONSE_WAIT','%SMTP_PATH_DELIMITER','%SMTP_POP3_PORT','%SMTP_QUOTED_8859',
+                        
'%SMTP_QUOTED_HTML','%SMTP_QUOTED_ISO_8859_1','%SMTP_QUOTED_ISO_8859_8','%SMTP_QUOTED_OFF','%SMTP_QUOTED_PLAIN','%SMTP_QUOTED_PRINTABLE','%SMTP_QUOTED_RICH','%SMTP_QUOTED_USER',
+                        
'%SMTP_QUOTED_WIN_1252','%SMTP_QUOTED_WIN_1255','%SMTP_RAW_MODE','%SMTP_SET_ATTACH_CONTENT_TYPE','%SMTP_SET_CONTENT_TYPE','%SMTP_SET_CONTENT_TYPE_PREFIX','%SMTP_SET_FILE_PREFIX','%SMTP_SET_FROM',
+                        
'%SMTP_SET_HEADER','%SMTP_SET_REPLY','%SMTP_SET_SECRET','%SMTP_SET_TEXT_MESSAGE','%SMTP_SET_TRANSFER_ENCODING','%SMTP_SET_USER','%SMTP_SLEEP_TIME','%SMTP_SMTP_PORT',
+                        
'%SMTP_SYNC','%SMTP_WRITE_BUFFER','%SMTP_WRITE_CONTENT_TYPE','%SMTP_WRITE_TO_LOG','%SMTP_WSACLEANUP','%SQL_AA_FALSE','%SQL_AA_TRUE','%SQL_ACCESSIBLE_PROCEDURES',
+                        
'%SQL_ACCESSIBLE_TABLES','%SQL_ACCESS_MODE','%SQL_ACTIVE_CONNECTIONS','%SQL_ACTIVE_ENVIRONMENTS','%SQL_ACTIVE_STATEMENTS','%SQL_ADD','%SQL_AD_ADD_CONSTRAINT_DEFERRABLE','%SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED',
+                        
'%SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE','%SQL_AD_ADD_DOMAIN_CONSTRAINT','%SQL_AD_ADD_DOMAIN_DEFAULT','%SQL_AD_CONSTRAINT_NAME_DEFINITION','%SQL_AD_DROP_DOMAIN_CONSTRAINT','%SQL_AD_DROP_DOMAIN_DEFAULT','%SQL_AF_ALL',
+                        
'%SQL_AF_AVG','%SQL_AF_COUNT','%SQL_AF_DISTINCT','%SQL_AF_MAX','%SQL_AF_MIN','%SQL_AF_SUM','%SQL_AGGREGATE_FUNCTIONS','%SQL_ALL_EXCEPT_LIKE',
+                        
'%SQL_ALL_TYPES','%SQL_ALTER_DOMAIN','%SQL_ALTER_TABLE','%SQL_AM_CONNECTION','%SQL_AM_NONE','%SQL_AM_STATEMENT','%SQL_API_ALL_FUNCTIONS','%SQL_API_LOADBYORDINAL',
+                        
'%SQL_API_ODBC3_ALL_FUNCTIONS','%SQL_API_ODBC3_ALL_FUNCTIONS_SIZE','%SQL_API_SQLALLOCCONNECT','%SQL_API_SQLALLOCENV','%SQL_API_SQLALLOCHANDLE','%SQL_API_SQLALLOCHANDLESTD','%SQL_API_SQLALLOCSTMT','%SQL_API_SQLBINDCOL',
+                        
'%SQL_API_SQLBINDPARAM','%SQL_API_SQLBINDPARAMETER','%SQL_API_SQLBROWSECONNECT','%SQL_API_SQLBULKOPERATIONS','%SQL_API_SQLCANCEL','%SQL_API_SQLCLOSECURSOR','%SQL_API_SQLCOLATTRIBUTE','%SQL_API_SQLCOLATTRIBUTES',
+                        
'%SQL_API_SQLCOLUMNPRIVILEGES','%SQL_API_SQLCOLUMNS','%SQL_API_SQLCONNECT','%SQL_API_SQLCOPYDESC','%SQL_API_SQLDATASOURCES','%SQL_API_SQLDESCRIBECOL','%SQL_API_SQLDESCRIBEPARAM','%SQL_API_SQLDISCONNECT',
+                        
'%SQL_API_SQLDRIVERCONNECT','%SQL_API_SQLDRIVERS','%SQL_API_SQLENDTRAN','%SQL_API_SQLERROR','%SQL_API_SQLEXECDIRECT','%SQL_API_SQLEXECUTE','%SQL_API_SQLEXTENDEDFETCH','%SQL_API_SQLFETCH',
+                        
'%SQL_API_SQLFETCHSCROLL','%SQL_API_SQLFOREIGNKEYS','%SQL_API_SQLFREECONNECT','%SQL_API_SQLFREEENV','%SQL_API_SQLFREEHANDLE','%SQL_API_SQLFREESTMT','%SQL_API_SQLGETCONNECTATTR','%SQL_API_SQLGETCONNECTOPTION',
+                        
'%SQL_API_SQLGETCURSORNAME','%SQL_API_SQLGETDATA','%SQL_API_SQLGETDESCFIELD','%SQL_API_SQLGETDESCREC','%SQL_API_SQLGETDIAGFIELD','%SQL_API_SQLGETDIAGREC','%SQL_API_SQLGETENVATTR','%SQL_API_SQLGETFUNCTIONS',
+                        
'%SQL_API_SQLGETINFO','%SQL_API_SQLGETSTMTATTR','%SQL_API_SQLGETSTMTOPTION','%SQL_API_SQLGETTYPEINFO','%SQL_API_SQLMORERESULTS','%SQL_API_SQLNATIVESQL','%SQL_API_SQLNUMPARAMS','%SQL_API_SQLNUMRESULTCOLS',
+                        
'%SQL_API_SQLPARAMDATA','%SQL_API_SQLPARAMOPTIONS','%SQL_API_SQLPREPARE','%SQL_API_SQLPRIMARYKEYS','%SQL_API_SQLPROCEDURECOLUMNS','%SQL_API_SQLPROCEDURES','%SQL_API_SQLPUTDATA','%SQL_API_SQLROWCOUNT',
+                        
'%SQL_API_SQLSETCONNECTATTR','%SQL_API_SQLSETCONNECTOPTION','%SQL_API_SQLSETCURSORNAME','%SQL_API_SQLSETDESCFIELD','%SQL_API_SQLSETDESCREC','%SQL_API_SQLSETENVATTR','%SQL_API_SQLSETPARAM','%SQL_API_SQLSETPOS',
+                        
'%SQL_API_SQLSETSCROLLOPTIONS','%SQL_API_SQLSETSTMTATTR','%SQL_API_SQLSETSTMTOPTION','%SQL_API_SQLSPECIALCOLUMNS','%SQL_API_SQLSTATISTICS','%SQL_API_SQLTABLEPRIVILEGES','%SQL_API_SQLTABLES','%SQL_API_SQLTRANSACT',
+                        
'%SQL_ARD_TYPE','%SQL_ASYNC_ENABLE','%SQL_ASYNC_ENABLE_DEFAULT','%SQL_ASYNC_ENABLE_OFF','%SQL_ASYNC_ENABLE_ON','%SQL_ASYNC_MODE','%SQL_ATTR_ACCESS_MODE','%SQL_ATTR_ANSI_APP',
+                        
'%SQL_ATTR_APP_PARAM_DESC','%SQL_ATTR_APP_ROW_DESC','%SQL_ATTR_ASYNC_ENABLE','%SQL_ATTR_AUTOCOMMIT','%SQL_ATTR_AUTO_IPD','%SQL_ATTR_CONCURRENCY','%SQL_ATTR_CONNECTION_DEAD','%SQL_ATTR_CONNECTION_POOLING',
+                        
'%SQL_ATTR_CONNECTION_TIMEOUT','%SQL_ATTR_CP_MATCH','%SQL_ATTR_CURRENT_CATALOG','%SQL_ATTR_CURSOR_SCROLLABLE','%SQL_ATTR_CURSOR_SENSITIVITY','%SQL_ATTR_CURSOR_TYPE','%SQL_ATTR_DISCONNECT_BEHAVIOR','%SQL_ATTR_ENABLE_AUTO_IPD',
+                        
'%SQL_ATTR_ENLIST_IN_DTC','%SQL_ATTR_ENLIST_IN_XA','%SQL_ATTR_FETCH_BOOKMARK_PTR','%SQL_ATTR_IMP_PARAM_DESC','%SQL_ATTR_IMP_ROW_DESC','%SQL_ATTR_KEYSET_SIZE','%SQL_ATTR_LOGIN_TIMEOUT','%SQL_ATTR_MAX_LENGTH',
+                        
'%SQL_ATTR_MAX_ROWS','%SQL_ATTR_METADATA_ID','%SQL_ATTR_NOSCAN','%SQL_ATTR_ODBC_CURSORS','%SQL_ATTR_ODBC_VERSION','%SQL_ATTR_OUTPUT_NTS','%SQL_ATTR_PACKET_SIZE','%SQL_ATTR_PARAMSET_SIZE',
+                        
'%SQL_ATTR_PARAMS_PROCESSED_PTR','%SQL_ATTR_PARAM_BIND_OFFSET_PTR','%SQL_ATTR_PARAM_BIND_TYPE','%SQL_ATTR_PARAM_OPERATION_PTR','%SQL_ATTR_PARAM_STATUS_PTR','%SQL_ATTR_QUERY_TIMEOUT','%SQL_ATTR_QUIET_MODE','%SQL_ATTR_READONLY',
+                        
'%SQL_ATTR_READWRITE_UNKNOWN','%SQL_ATTR_RETRIEVE_DATA','%SQL_ATTR_ROWS_FETCHED_PTR','%SQL_ATTR_ROW_ARRAY_SIZE','%SQL_ATTR_ROW_BIND_OFFSET_PTR','%SQL_ATTR_ROW_BIND_TYPE','%SQL_ATTR_ROW_NUMBER','%SQL_ATTR_ROW_OPERATION_PTR',
+                        
'%SQL_ATTR_ROW_STATUS_PTR','%SQL_ATTR_SIMULATE_CURSOR','%SQL_ATTR_TRACE','%SQL_ATTR_TRACEFILE','%SQL_ATTR_TRANSLATE_LIB','%SQL_ATTR_TRANSLATE_OPTION','%SQL_ATTR_TXN_ISOLATION','%SQL_ATTR_USE_BOOKMARKS',
+                        
'%SQL_ATTR_WRITE','%SQL_AT_ADD_COLUMN','%SQL_AT_ADD_COLUMN_COLLATION','%SQL_AT_ADD_COLUMN_DEFAULT','%SQL_AT_ADD_COLUMN_SINGLE','%SQL_AT_ADD_CONSTRAINT','%SQL_AT_ADD_TABLE_CONSTRAINT','%SQL_AT_CONSTRAINT_DEFERRABLE',
+                        
'%SQL_AT_CONSTRAINT_INITIALLY_DEFERRED','%SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AT_CONSTRAINT_NAME_DEFINITION','%SQL_AT_CONSTRAINT_NON_DEFERRABLE','%SQL_AT_DROP_COLUMN','%SQL_AT_DROP_COLUMN_CASCADE','%SQL_AT_DROP_COLUMN_DEFAULT','%SQL_AT_DROP_COLUMN_RESTRICT',
+                        
'%SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE','%SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT','%SQL_AT_SET_COLUMN_DEFAULT','%SQL_AUTOCOMMIT','%SQL_AUTOCOMMIT_DEFAULT','%SQL_AUTOCOMMIT_OFF','%SQL_AUTOCOMMIT_ON','%SQL_BATCH_ROW_COUNT',
+                        
'%SQL_BATCH_SUPPORT','%SQL_BEST_ROWID','%SQL_BIGINT','%SQL_BINARY','%SQL_BIND_BY_COLUMN','%SQL_BIND_TYPE','%SQL_BIND_TYPE_DEFAULT','%SQL_BIT',
+                        
'%SQL_BOOKMARK_PERSISTENCE','%SQL_BP_CLOSE','%SQL_BP_DELETE','%SQL_BP_DROP','%SQL_BP_OTHER_HSTMT','%SQL_BP_SCROLL','%SQL_BP_TRANSACTION','%SQL_BP_UPDATE',
+                        
'%SQL_BRC_EXPLICIT','%SQL_BRC_PROCEDURES','%SQL_BRC_ROLLED_UP','%SQL_BS_ROW_COUNT_EXPLICIT','%SQL_BS_ROW_COUNT_PROC','%SQL_BS_SELECT_EXPLICIT','%SQL_BS_SELECT_PROC','%SQL_CA1_ABSOLUTE',
+                        
'%SQL_CA1_BOOKMARK','%SQL_CA1_BULK_ADD','%SQL_CA1_BULK_DELETE_BY_BOOKMARK','%SQL_CA1_BULK_FETCH_BY_BOOKMARK','%SQL_CA1_BULK_UPDATE_BY_BOOKMARK','%SQL_CA1_LOCK_EXCLUSIVE','%SQL_CA1_LOCK_NO_CHANGE','%SQL_CA1_LOCK_UNLOCK',
+                        
'%SQL_CA1_NEXT','%SQL_CA1_POSITIONED_DELETE','%SQL_CA1_POSITIONED_UPDATE','%SQL_CA1_POS_DELETE','%SQL_CA1_POS_POSITION','%SQL_CA1_POS_REFRESH','%SQL_CA1_POS_UPDATE','%SQL_CA1_RELATIVE',
+                        
'%SQL_CA1_SELECT_FOR_UPDATE','%SQL_CA2_CRC_APPROXIMATE','%SQL_CA2_CRC_EXACT','%SQL_CA2_LOCK_CONCURRENCY','%SQL_CA2_MAX_ROWS_AFFECTS_ALL','%SQL_CA2_MAX_ROWS_CATALOG','%SQL_CA2_MAX_ROWS_DELETE','%SQL_CA2_MAX_ROWS_INSERT',
+                        
'%SQL_CA2_MAX_ROWS_SELECT','%SQL_CA2_MAX_ROWS_UPDATE','%SQL_CA2_OPT_ROWVER_CONCURRENCY','%SQL_CA2_OPT_VALUES_CONCURRENCY','%SQL_CA2_READ_ONLY_CONCURRENCY','%SQL_CA2_SENSITIVITY_ADDITIONS','%SQL_CA2_SENSITIVITY_DELETIONS','%SQL_CA2_SENSITIVITY_UPDATES',
+                        
'%SQL_CA2_SIMULATE_NON_UNIQUE','%SQL_CA2_SIMULATE_TRY_UNIQUE','%SQL_CA2_SIMULATE_UNIQUE','%SQL_CASCADE','%SQL_CATALOG_LOCATION','%SQL_CATALOG_NAME','%SQL_CATALOG_NAME_SEPARATOR','%SQL_CATALOG_TERM',
+                        
'%SQL_CATALOG_USAGE','%SQL_CA_CONSTRAINT_DEFERRABLE','%SQL_CA_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CA_CONSTRAINT_NON_DEFERRABLE','%SQL_CA_CREATE_ASSERTION','%SQL_CB_CLOSE','%SQL_CB_DELETE',
+                        
'%SQL_CB_NON_NULL','%SQL_CB_NULL','%SQL_CB_PRESERVE','%SQL_CCOL_CREATE_COLLATION','%SQL_CCS_COLLATE_CLAUSE','%SQL_CCS_CREATE_CHARACTER_SET','%SQL_CCS_LIMITED_COLLATION','%SQL_CC_CLOSE',
+                        
'%SQL_CC_DELETE','%SQL_CC_PRESERVE','%SQL_CDO_COLLATION','%SQL_CDO_CONSTRAINT','%SQL_CDO_CONSTRAINT_DEFERRABLE','%SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CDO_CONSTRAINT_NAME_DEFINITION',
+                        
'%SQL_CDO_CONSTRAINT_NON_DEFERRABLE','%SQL_CDO_CREATE_DOMAIN','%SQL_CDO_DEFAULT','%SQL_CD_FALSE','%SQL_CD_TRUE','%SQL_CHAR','%SQL_CLOSE','%SQL_CL_END',
+                        
'%SQL_CL_START','%SQL_CN_ANY','%SQL_CN_DIFFERENT','%SQL_CN_NONE','%SQL_CODE_DATE','%SQL_CODE_DAY','%SQL_CODE_DAY_TO_HOUR','%SQL_CODE_DAY_TO_MINUTE',
+                        
'%SQL_CODE_DAY_TO_SECOND','%SQL_CODE_HOUR','%SQL_CODE_HOUR_TO_MINUTE','%SQL_CODE_HOUR_TO_SECOND','%SQL_CODE_MINUTE','%SQL_CODE_MINUTE_TO_SECOND','%SQL_CODE_MONTH','%SQL_CODE_SECOND',
+                        
'%SQL_CODE_TIME','%SQL_CODE_TIMESTAMP','%SQL_CODE_YEAR','%SQL_CODE_YEAR_TO_MONTH','%SQL_COLATT_OPT_MAX','%SQL_COLATT_OPT_MIN','%SQL_COLLATION_SEQ','%SQL_COLUMN_ALIAS',
+                        
'%SQL_COLUMN_AUTO_INCREMENT','%SQL_COLUMN_CASE_SENSITIVE','%SQL_COLUMN_COUNT','%SQL_COLUMN_DISPLAY_SIZE','%SQL_COLUMN_IGNORE','%SQL_COLUMN_LABEL','%SQL_COLUMN_LENGTH','%SQL_COLUMN_MONEY',
+                        
'%SQL_COLUMN_NAME','%SQL_COLUMN_NULLABLE','%SQL_COLUMN_NUMBER_UNKNOWN','%SQL_COLUMN_OWNER_NAME','%SQL_COLUMN_PRECISION','%SQL_COLUMN_QUALIFIER_NAME','%SQL_COLUMN_SCALE','%SQL_COLUMN_SEARCHABLE',
+                        
'%SQL_COLUMN_TABLE_NAME','%SQL_COLUMN_TYPE','%SQL_COLUMN_TYPE_NAME','%SQL_COLUMN_UNSIGNED','%SQL_COLUMN_UPDATABLE','%SQL_COL_PRED_BASIC','%SQL_COL_PRED_CHAR','%SQL_COMMIT',
+                        
'%SQL_CONCAT_NULL_BEHAVIOR','%SQL_CONCURRENCY','%SQL_CONCUR_DEFAULT','%SQL_CONCUR_LOCK','%SQL_CONCUR_READ_ONLY','%SQL_CONCUR_ROWVER','%SQL_CONCUR_TIMESTAMP','%SQL_CONCUR_VALUES',
+                        
'%SQL_CONVERT_BIGINT','%SQL_CONVERT_BINARY','%SQL_CONVERT_BIT','%SQL_CONVERT_CHAR','%SQL_CONVERT_DATE','%SQL_CONVERT_DECIMAL','%SQL_CONVERT_DOUBLE','%SQL_CONVERT_FLOAT',
+                        
'%SQL_CONVERT_FUNCTIONS','%SQL_CONVERT_GUID','%SQL_CONVERT_INTEGER','%SQL_CONVERT_INTERVAL_DAY_TIME','%SQL_CONVERT_INTERVAL_YEAR_MONTH','%SQL_CONVERT_LONGVARBINARY','%SQL_CONVERT_LONGVARCHAR','%SQL_CONVERT_NUMERIC',
+                        
'%SQL_CONVERT_REAL','%SQL_CONVERT_SMALLINT','%SQL_CONVERT_TIME','%SQL_CONVERT_TIMESTAMP','%SQL_CONVERT_TINYINT','%SQL_CONVERT_VARBINARY','%SQL_CONVERT_VARCHAR','%SQL_CONVERT_WCHAR',
+                        
'%SQL_CONVERT_WLONGVARCHAR','%SQL_CONVERT_WVARCHAR','%SQL_CORRELATION_NAME','%SQL_CP_DEFAULT','%SQL_CP_MATCH_DEFAULT','%SQL_CP_OFF','%SQL_CP_ONE_PER_DRIVER','%SQL_CP_ONE_PER_HENV',
+                        
'%SQL_CP_RELAXED_MATCH','%SQL_CP_STRICT_MATCH','%SQL_CREATE_ASSERTION','%SQL_CREATE_CHARACTER_SET','%SQL_CREATE_COLLATION','%SQL_CREATE_DOMAIN','%SQL_CREATE_SCHEMA','%SQL_CREATE_TABLE',
+                        
'%SQL_CREATE_TRANSLATION','%SQL_CREATE_VIEW','%SQL_CR_CLOSE','%SQL_CR_DELETE','%SQL_CR_PRESERVE','%SQL_CS_AUTHORIZATION','%SQL_CS_CREATE_SCHEMA','%SQL_CS_DEFAULT_CHARACTER_SET',
+                        
'%SQL_CTR_CREATE_TRANSLATION','%SQL_CT_COLUMN_COLLATION','%SQL_CT_COLUMN_CONSTRAINT','%SQL_CT_COLUMN_DEFAULT','%SQL_CT_COMMIT_DELETE','%SQL_CT_COMMIT_PRESERVE','%SQL_CT_CONSTRAINT_DEFERRABLE','%SQL_CT_CONSTRAINT_INITIALLY_DEFERRED',
+                        
'%SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CT_CONSTRAINT_NAME_DEFINITION','%SQL_CT_CONSTRAINT_NON_DEFERRABLE','%SQL_CT_CREATE_TABLE','%SQL_CT_GLOBAL_TEMPORARY','%SQL_CT_LOCAL_TEMPORARY','%SQL_CT_TABLE_CONSTRAINT','%SQL_CURRENT_QUALIFIER',
+                        
'%SQL_CURSOR_COMMIT_BEHAVIOR','%SQL_CURSOR_DYNAMIC','%SQL_CURSOR_FORWARD_ONLY','%SQL_CURSOR_KEYSET_DRIVEN','%SQL_CURSOR_ROLLBACK_BEHAVIOR','%SQL_CURSOR_SENSITIVITY','%SQL_CURSOR_STATIC','%SQL_CURSOR_TYPE',
+                        
'%SQL_CURSOR_TYPE_DEFAULT','%SQL_CUR_DEFAULT','%SQL_CUR_USE_DRIVER','%SQL_CUR_USE_IF_NEEDED','%SQL_CUR_USE_ODBC','%SQL_CU_DML_STATEMENTS','%SQL_CU_INDEX_DEFINITION','%SQL_CU_PRIVILEGE_DEFINITION',
+                        
'%SQL_CU_PROCEDURE_INVOCATION','%SQL_CU_TABLE_DEFINITION','%SQL_CVT_BIGINT','%SQL_CVT_BINARY','%SQL_CVT_BIT','%SQL_CVT_CHAR','%SQL_CVT_DATE','%SQL_CVT_DECIMAL',
+                        
'%SQL_CVT_DOUBLE','%SQL_CVT_FLOAT','%SQL_CVT_GUID','%SQL_CVT_INTEGER','%SQL_CVT_INTERVAL_DAY_TIME','%SQL_CVT_INTERVAL_YEAR_MONTH','%SQL_CVT_LONGVARBINARY','%SQL_CVT_LONGVARCHAR',
+                        
'%SQL_CVT_NUMERIC','%SQL_CVT_REAL','%SQL_CVT_SMALLINT','%SQL_CVT_TIME','%SQL_CVT_TIMESTAMP','%SQL_CVT_TINYINT','%SQL_CVT_VARBINARY','%SQL_CVT_VARCHAR',
+                        
'%SQL_CVT_WCHAR','%SQL_CVT_WLONGVARCHAR','%SQL_CVT_WVARCHAR','%SQL_CV_CASCADED','%SQL_CV_CHECK_OPTION','%SQL_CV_CREATE_VIEW','%SQL_CV_LOCAL','%SQL_C_BINARY',
+                        
'%SQL_C_BIT','%SQL_C_BOOKMARK','%SQL_C_CHAR','%SQL_C_DATE','%SQL_C_DEFAULT','%SQL_C_DOUBLE','%SQL_C_FLOAT','%SQL_C_GUID',
+                        
'%SQL_C_INTERVAL_DAY','%SQL_C_INTERVAL_DAY_TO_HOUR','%SQL_C_INTERVAL_DAY_TO_MINUTE','%SQL_C_INTERVAL_DAY_TO_SECOND','%SQL_C_INTERVAL_HOUR','%SQL_C_INTERVAL_HOUR_TO_MINUTE','%SQL_C_INTERVAL_HOUR_TO_SECOND','%SQL_C_INTERVAL_MINUTE',
+                        
'%SQL_C_INTERVAL_MINUTE_TO_SECOND','%SQL_C_INTERVAL_MONTH','%SQL_C_INTERVAL_SECOND','%SQL_C_INTERVAL_YEAR','%SQL_C_INTERVAL_YEAR_TO_MONTH','%SQL_C_LONG','%SQL_C_NUMERIC','%SQL_C_SBIGINT',
+                        
'%SQL_C_SHORT','%SQL_C_SLONG','%SQL_C_SSHORT','%SQL_C_STINYINT','%SQL_C_TIME','%SQL_C_TIMESTAMP','%SQL_C_TINYINT','%SQL_C_TYPE_DATE',
+                        
'%SQL_C_TYPE_TIME','%SQL_C_TYPE_TIMESTAMP','%SQL_C_UBIGINT','%SQL_C_ULONG','%SQL_C_USHORT','%SQL_C_UTINYINT','%SQL_C_VARBOOKMARK','%SQL_DATABASE_NAME',
+                        
'%SQL_DATA_AT_EXEC','%SQL_DATA_SOURCE_NAME','%SQL_DATA_SOURCE_READ_ONLY','%SQL_DATE','%SQL_DATETIME','%SQL_DATETIME_LITERALS','%SQL_DATE_LEN','%SQL_DAY',
+                        
'%SQL_DAY_TO_HOUR','%SQL_DAY_TO_MINUTE','%SQL_DAY_TO_SECOND','%SQL_DA_DROP_ASSERTION','%SQL_DBMS_NAME','%SQL_DBMS_VER','%SQL_DB_DEFAULT','%SQL_DB_DISCONNECT',
+                        
'%SQL_DB_RETURN_TO_POOL','%SQL_DCS_DROP_CHARACTER_SET','%SQL_DC_DROP_COLLATION','%SQL_DDL_INDEX','%SQL_DD_CASCADE','%SQL_DD_DROP_DOMAIN','%SQL_DD_RESTRICT','%SQL_DECIMAL',
+                        
'%SQL_DEFAULT','%SQL_DEFAULT_PARAM','%SQL_DEFAULT_TXN_ISOLATION','%SQL_DELETE','%SQL_DELETE_BY_BOOKMARK','%SQL_DESCRIBE_PARAMETER','%SQL_DESC_ALLOC_AUTO','%SQL_DESC_ALLOC_TYPE',
+                        
'%SQL_DESC_ALLOC_USER','%SQL_DESC_ARRAY_SIZE','%SQL_DESC_ARRAY_STATUS_PTR','%SQL_DESC_AUTO_UNIQUE_VALUE','%SQL_DESC_BASE_COLUMN_NAME','%SQL_DESC_BASE_TABLE_NAME','%SQL_DESC_BIND_OFFSET_PTR','%SQL_DESC_BIND_TYPE',
+                        
'%SQL_DESC_CASE_SENSITIVE','%SQL_DESC_CATALOG_NAME','%SQL_DESC_CONCISE_TYPE','%SQL_DESC_COUNT','%SQL_DESC_DATA_PTR','%SQL_DESC_DATETIME_INTERVAL_CODE','%SQL_DESC_DATETIME_INTERVAL_PRECISION','%SQL_DESC_DISPLAY_SIZE',
+                        
'%SQL_DESC_FIXED_PREC_SCALE','%SQL_DESC_INDICATOR_PTR','%SQL_DESC_LABEL','%SQL_DESC_LENGTH','%SQL_DESC_LITERAL_PREFIX','%SQL_DESC_LITERAL_SUFFIX','%SQL_DESC_LOCAL_TYPE_NAME','%SQL_DESC_MAXIMUM_SCALE',
+                        
'%SQL_DESC_MINIMUM_SCALE','%SQL_DESC_NAME','%SQL_DESC_NULLABLE','%SQL_DESC_NUM_PREC_RADIX','%SQL_DESC_OCTET_LENGTH','%SQL_DESC_OCTET_LENGTH_PTR','%SQL_DESC_PARAMETER_TYPE','%SQL_DESC_PRECISION',
+                        
'%SQL_DESC_ROWS_PROCESSED_PTR','%SQL_DESC_SCALE','%SQL_DESC_SCHEMA_NAME','%SQL_DESC_SEARCHABLE','%SQL_DESC_TABLE_NAME','%SQL_DESC_TYPE','%SQL_DESC_TYPE_NAME','%SQL_DESC_UNNAMED',
+                        
'%SQL_DESC_UNSIGNED','%SQL_DESC_UPDATABLE','%SQL_DIAG_ALTER_TABLE','%SQL_DIAG_CALL','%SQL_DIAG_CLASS_ORIGIN','%SQL_DIAG_COLUMN_NUMBER','%SQL_DIAG_CONNECTION_NAME','%SQL_DIAG_CREATE_INDEX',
+                        
'%SQL_DIAG_CREATE_TABLE','%SQL_DIAG_CREATE_VIEW','%SQL_DIAG_CURSOR_ROW_COUNT','%SQL_DIAG_DELETE_WHERE','%SQL_DIAG_DROP_INDEX','%SQL_DIAG_DROP_TABLE','%SQL_DIAG_DROP_VIEW','%SQL_DIAG_DYNAMIC_DELETE_CURSOR',
+                        
'%SQL_DIAG_DYNAMIC_FUNCTION','%SQL_DIAG_DYNAMIC_FUNCTION_CODE','%SQL_DIAG_DYNAMIC_UPDATE_CURSOR','%SQL_DIAG_GRANT','%SQL_DIAG_INSERT','%SQL_DIAG_MESSAGE_TEXT','%SQL_DIAG_NATIVE','%SQL_DIAG_NUMBER',
+                        
'%SQL_DIAG_RETURNCODE','%SQL_DIAG_REVOKE','%SQL_DIAG_ROW_COUNT','%SQL_DIAG_ROW_NUMBER','%SQL_DIAG_SELECT_CURSOR','%SQL_DIAG_SERVER_NAME','%SQL_DIAG_SQLSTATE','%SQL_DIAG_SUBCLASS_ORIGIN',
+                        
'%SQL_DIAG_UNKNOWN_STATEMENT','%SQL_DIAG_UPDATE_WHERE','%SQL_DI_CREATE_INDEX','%SQL_DI_DROP_INDEX','%SQL_DL_SQL92_DATE','%SQL_DL_SQL92_INTERVAL_DAY','%SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR','%SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE',
+                        
'%SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND','%SQL_DL_SQL92_INTERVAL_HOUR','%SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE','%SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MINUTE','%SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MONTH','%SQL_DL_SQL92_INTERVAL_SECOND',
+                        
'%SQL_DL_SQL92_INTERVAL_YEAR','%SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH','%SQL_DL_SQL92_TIME','%SQL_DL_SQL92_TIMESTAMP','%SQL_DM_VER','%SQL_DOUBLE','%SQL_DRIVER_COMPLETE','%SQL_DRIVER_COMPLETE_REQUIRED',
+                        
'%SQL_DRIVER_HDBC','%SQL_DRIVER_HDESC','%SQL_DRIVER_HENV','%SQL_DRIVER_HLIB','%SQL_DRIVER_HSTMT','%SQL_DRIVER_NAME','%SQL_DRIVER_NOPROMPT','%SQL_DRIVER_ODBC_VER',
+                        
'%SQL_DRIVER_PROMPT','%SQL_DRIVER_VER','%SQL_DROP','%SQL_DROP_ASSERTION','%SQL_DROP_CHARACTER_SET','%SQL_DROP_COLLATION','%SQL_DROP_DOMAIN','%SQL_DROP_SCHEMA',
+                        
'%SQL_DROP_TABLE','%SQL_DROP_TRANSLATION','%SQL_DROP_VIEW','%SQL_DS_CASCADE','%SQL_DS_DROP_SCHEMA','%SQL_DS_RESTRICT','%SQL_DTC_DONE','%SQL_DTC_ENLIST_EXPENSIVE',
+                        
'%SQL_DTC_TRANSITION_COST','%SQL_DTC_UNENLIST_EXPENSIVE','%SQL_DTR_DROP_TRANSLATION','%SQL_DT_CASCADE','%SQL_DT_DROP_TABLE','%SQL_DT_RESTRICT','%SQL_DV_CASCADE','%SQL_DV_DROP_VIEW',
+                        
'%SQL_DV_RESTRICT','%SQL_DYNAMIC_CURSOR_ATTRIBUTES1','%SQL_DYNAMIC_CURSOR_ATTRIBUTES2','%SQL_ENSURE','%SQL_ENTIRE_ROWSET','%SQL_ERROR','%SQL_EXPRESSIONS_IN_ORDERBY','%SQL_FALSE',
+                        
'%SQL_FD_FETCH_ABSOLUTE','%SQL_FD_FETCH_BOOKMARK','%SQL_FD_FETCH_FIRST','%SQL_FD_FETCH_LAST','%SQL_FD_FETCH_NEXT','%SQL_FD_FETCH_PREV','%SQL_FD_FETCH_PRIOR','%SQL_FD_FETCH_RELATIVE',
+                        
'%SQL_FETCH_ABSOLUTE','%SQL_FETCH_BOOKMARK','%SQL_FETCH_BY_BOOKMARK','%SQL_FETCH_DIRECTION','%SQL_FETCH_FIRST','%SQL_FETCH_FIRST_SYSTEM','%SQL_FETCH_FIRST_USER','%SQL_FETCH_LAST',
+                        
'%SQL_FETCH_NEXT','%SQL_FETCH_PREV','%SQL_FETCH_PRIOR','%SQL_FETCH_RELATIVE','%SQL_FILE_CATALOG','%SQL_FILE_NOT_SUPPORTED','%SQL_FILE_QUALIFIER','%SQL_FILE_TABLE',
+                        
'%SQL_FILE_USAGE','%SQL_FLOAT','%SQL_FN_CVT_CAST','%SQL_FN_CVT_CONVERT','%SQL_FN_NUM_ABS','%SQL_FN_NUM_ACOS','%SQL_FN_NUM_ASIN','%SQL_FN_NUM_ATAN',
+                        
'%SQL_FN_NUM_ATAN2','%SQL_FN_NUM_CEILING','%SQL_FN_NUM_COS','%SQL_FN_NUM_COT','%SQL_FN_NUM_DEGREES','%SQL_FN_NUM_EXP','%SQL_FN_NUM_FLOOR','%SQL_FN_NUM_LOG',
+                        
'%SQL_FN_NUM_LOG10','%SQL_FN_NUM_MOD','%SQL_FN_NUM_PI','%SQL_FN_NUM_POWER','%SQL_FN_NUM_RADIANS','%SQL_FN_NUM_RAND','%SQL_FN_NUM_ROUND','%SQL_FN_NUM_SIGN',
+                        
'%SQL_FN_NUM_SIN','%SQL_FN_NUM_SQRT','%SQL_FN_NUM_TAN','%SQL_FN_NUM_TRUNCATE','%SQL_FN_STR_ASCII','%SQL_FN_STR_BIT_LENGTH','%SQL_FN_STR_CHAR','%SQL_FN_STR_CHARACTER_LENGTH',
+                        
'%SQL_FN_STR_CHAR_LENGTH','%SQL_FN_STR_CONCAT','%SQL_FN_STR_DIFFERENCE','%SQL_FN_STR_INSERT','%SQL_FN_STR_LCASE','%SQL_FN_STR_LEFT','%SQL_FN_STR_LENGTH','%SQL_FN_STR_LOCATE',
+                        
'%SQL_FN_STR_LOCATE_2','%SQL_FN_STR_LTRIM','%SQL_FN_STR_OCTET_LENGTH','%SQL_FN_STR_POSITION','%SQL_FN_STR_REPEAT','%SQL_FN_STR_REPLACE','%SQL_FN_STR_RIGHT','%SQL_FN_STR_RTRIM',
+                        
'%SQL_FN_STR_SOUNDEX','%SQL_FN_STR_SPACE','%SQL_FN_STR_SUBSTRING','%SQL_FN_STR_UCASE','%SQL_FN_SYS_DBNAME','%SQL_FN_SYS_IFNULL','%SQL_FN_SYS_USERNAME','%SQL_FN_TD_CURDATE',
+                        
'%SQL_FN_TD_CURRENT_DATE','%SQL_FN_TD_CURRENT_TIME','%SQL_FN_TD_CURRENT_TIMESTAMP','%SQL_FN_TD_CURTIME','%SQL_FN_TD_DAYNAME','%SQL_FN_TD_DAYOFMONTH','%SQL_FN_TD_DAYOFWEEK','%SQL_FN_TD_DAYOFYEAR',
+                        
'%SQL_FN_TD_EXTRACT','%SQL_FN_TD_HOUR','%SQL_FN_TD_MINUTE','%SQL_FN_TD_MONTH','%SQL_FN_TD_MONTHNAME','%SQL_FN_TD_NOW','%SQL_FN_TD_QUARTER','%SQL_FN_TD_SECOND',
+                        
'%SQL_FN_TD_TIMESTAMPADD','%SQL_FN_TD_TIMESTAMPDIFF','%SQL_FN_TD_WEEK','%SQL_FN_TD_YEAR','%SQL_FN_TSI_DAY','%SQL_FN_TSI_FRAC_SECOND','%SQL_FN_TSI_HOUR','%SQL_FN_TSI_MINUTE',
+                        
'%SQL_FN_TSI_MONTH','%SQL_FN_TSI_QUARTER','%SQL_FN_TSI_SECOND','%SQL_FN_TSI_WEEK','%SQL_FN_TSI_YEAR','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2','%SQL_GB_COLLATE',
+                        
'%SQL_GB_GROUP_BY_CONTAINS_SELECT','%SQL_GB_GROUP_BY_EQUALS_SELECT','%SQL_GB_NOT_SUPPORTED','%SQL_GB_NO_RELATION','%SQL_GD_ANY_COLUMN','%SQL_GD_ANY_ORDER','%SQL_GD_BLOCK','%SQL_GD_BOUND',
+                        
'%SQL_GETDATA_EXTENSIONS','%SQL_GET_BOOKMARK','%SQL_GROUP_BY','%SQL_GUID','%SQL_HANDLE_DBC','%SQL_HANDLE_DESC','%SQL_HANDLE_ENV','%SQL_HANDLE_SENV',
+                        
'%SQL_HANDLE_STMT','%SQL_HOUR','%SQL_HOUR_TO_MINUTE','%SQL_HOUR_TO_SECOND','%SQL_IC_LOWER','%SQL_IC_MIXED','%SQL_IC_SENSITIVE','%SQL_IC_UPPER',
+                        
'%SQL_IDENTIFIER_CASE','%SQL_IDENTIFIER_QUOTE_CHAR','%SQL_IGNORE','%SQL_IK_ALL','%SQL_IK_ASC','%SQL_IK_DESC','%SQL_IK_NONE','%SQL_INDEX_ALL',
+                        
'%SQL_INDEX_CLUSTERED','%SQL_INDEX_HASHED','%SQL_INDEX_KEYWORDS','%SQL_INDEX_OTHER','%SQL_INDEX_UNIQUE','%SQL_INFO_FIRST','%SQL_INFO_SCHEMA_VIEWS','%SQL_INITIALLY_DEFERRED',
+                        
'%SQL_INITIALLY_IMMEDIATE','%SQL_INSENSITIVE','%SQL_INSERT_STATEMENT','%SQL_INTEGER','%SQL_INTEGRITY','%SQL_INTERVAL','%SQL_INTERVAL_DAY','%SQL_INTERVAL_DAY_TO_HOUR',
+                        
'%SQL_INTERVAL_DAY_TO_MINUTE','%SQL_INTERVAL_DAY_TO_SECOND','%SQL_INTERVAL_HOUR','%SQL_INTERVAL_HOUR_TO_MINUTE','%SQL_INTERVAL_HOUR_TO_SECOND','%SQL_INTERVAL_MINUTE','%SQL_INTERVAL_MINUTE_TO_SECOND','%SQL_INTERVAL_MONTH',
+                        
'%SQL_INTERVAL_SECOND','%SQL_INTERVAL_YEAR','%SQL_INTERVAL_YEAR_TO_MONTH','%SQL_INVALID_HANDLE','%SQL_ISV_ASSERTIONS','%SQL_ISV_CHARACTER_SETS','%SQL_ISV_CHECK_CONSTRAINTS','%SQL_ISV_COLLATIONS',
+                        
'%SQL_ISV_COLUMNS','%SQL_ISV_COLUMN_DOMAIN_USAGE','%SQL_ISV_COLUMN_PRIVILEGES','%SQL_ISV_CONSTRAINT_COLUMN_USAGE','%SQL_ISV_CONSTRAINT_TABLE_USAGE','%SQL_ISV_DOMAINS','%SQL_ISV_DOMAIN_CONSTRAINTS','%SQL_ISV_KEY_COLUMN_USAGE',
+                        
'%SQL_ISV_REFERENTIAL_CONSTRAINTS','%SQL_ISV_SCHEMATA','%SQL_ISV_SQL_LANGUAGES','%SQL_ISV_TABLES','%SQL_ISV_TABLE_CONSTRAINTS','%SQL_ISV_TABLE_PRIVILEGES','%SQL_ISV_TRANSLATIONS','%SQL_ISV_USAGE_PRIVILEGES',
+                        
'%SQL_ISV_VIEWS','%SQL_ISV_VIEW_COLUMN_USAGE','%SQL_ISV_VIEW_TABLE_USAGE','%SQL_IS_DAY','%SQL_IS_DAY_TO_HOUR','%SQL_IS_DAY_TO_MINUTE','%SQL_IS_DAY_TO_SECOND','%SQL_IS_HOUR',
+                        
'%SQL_IS_HOUR_TO_MINUTE','%SQL_IS_HOUR_TO_SECOND','%SQL_IS_INSERT_LITERALS','%SQL_IS_INSERT_SEARCHED','%SQL_IS_INTEGER','%SQL_IS_MINUTE','%SQL_IS_MINUTE_TO_SECOND','%SQL_IS_MONTH',
+                        
'%SQL_IS_POINTER','%SQL_IS_SECOND','%SQL_IS_SELECT_INTO','%SQL_IS_SMALLINT','%SQL_IS_UINTEGER','%SQL_IS_USMALLINT','%SQL_IS_YEAR','%SQL_IS_YEAR_TO_MONTH',
+                        
'%SQL_KEYSET_CURSOR_ATTRIBUTES1','%SQL_KEYSET_CURSOR_ATTRIBUTES2','%SQL_KEYSET_SIZE','%SQL_KEYSET_SIZE_DEFAULT','%SQL_KEYWORDS','%SQL_LCK_EXCLUSIVE','%SQL_LCK_NO_CHANGE','%SQL_LCK_UNLOCK',
+                        
'%SQL_LEN_BINARY_ATTR_OFFSET','%SQL_LEN_DATA_AT_EXEC_OFFSET','%SQL_LIKE_ESCAPE_CLAUSE','%SQL_LIKE_ONLY','%SQL_LOCK_EXCLUSIVE','%SQL_LOCK_NO_CHANGE','%SQL_LOCK_TYPES','%SQL_LOCK_UNLOCK',
+                        
'%SQL_LOGIN_TIMEOUT','%SQL_LOGIN_TIMEOUT_DEFAULT','%SQL_LONGVARBINARY','%SQL_LONGVARCHAR','%SQL_MAXIMUM_CATALOG_NAME_LENGTH','%SQL_MAXIMUM_COLUMNS_IN_GROUP_BY','%SQL_MAXIMUM_COLUMNS_IN_INDEX','%SQL_MAXIMUM_COLUMNS_IN_ORDER_BY',
+                        
'%SQL_MAXIMUM_COLUMNS_IN_SELECT','%SQL_MAXIMUM_COLUMN_NAME_LENGTH','%SQL_MAXIMUM_CONCURRENT_ACTIVITIES','%SQL_MAXIMUM_CURSOR_NAME_LENGTH','%SQL_MAXIMUM_DRIVER_CONNECTIONS','%SQL_MAXIMUM_IDENTIFIER_LENGTH','%SQL_MAXIMUM_INDEX_SIZE','%SQL_MAXIMUM_ROW_SIZE',
+                        
'%SQL_MAXIMUM_SCHEMA_NAME_LENGTH','%SQL_MAXIMUM_STATEMENT_LENGTH','%SQL_MAXIMUM_TABLES_IN_SELECT','%SQL_MAXIMUM_USER_NAME_LENGTH','%SQL_MAX_ASYNC_CONCURRENT_STATEMENTS','%SQL_MAX_BINARY_LITERAL_LEN','%SQL_MAX_CATALOG_NAME_LEN','%SQL_MAX_CHAR_LITERAL_LEN',
+                        
'%SQL_MAX_COLUMNS_IN_GROUP_BY','%SQL_MAX_COLUMNS_IN_INDEX','%SQL_MAX_COLUMNS_IN_ORDER_BY','%SQL_MAX_COLUMNS_IN_SELECT','%SQL_MAX_COLUMNS_IN_TABLE','%SQL_MAX_COLUMN_NAME_LEN','%SQL_MAX_CONCURRENT_ACTIVITIES','%SQL_MAX_CURSOR_NAME_LEN',
+                        
'%SQL_MAX_DRIVER_CONNECTIONS','%SQL_MAX_DSN_LENGTH','%SQL_MAX_IDENTIFIER_LEN','%SQL_MAX_INDEX_SIZE','%SQL_MAX_LENGTH','%SQL_MAX_LENGTH_DEFAULT','%SQL_MAX_MESSAGE_LENGTH','%SQL_MAX_NUMERIC_LEN',
+                        
'%SQL_MAX_OPTION_STRING_LENGTH','%SQL_MAX_OWNER_NAME_LEN','%SQL_MAX_PROCEDURE_NAME_LEN','%SQL_MAX_QUALIFIER_NAME_LEN','%SQL_MAX_ROWS','%SQL_MAX_ROWS_DEFAULT','%SQL_MAX_ROW_SIZE','%SQL_MAX_ROW_SIZE_INCLUDES_LONG',
+                        
'%SQL_MAX_SCHEMA_NAME_LEN','%SQL_MAX_STATEMENT_LEN','%SQL_MAX_TABLES_IN_SELECT','%SQL_MAX_TABLE_NAME_LEN','%SQL_MAX_USER_NAME_LEN','%SQL_MINUTE','%SQL_MINUTE_TO_SECOND','%SQL_MODE_DEFAULT',
+                        
'%SQL_MODE_READ_ONLY','%SQL_MODE_READ_WRITE','%SQL_MONTH','%SQL_MULTIPLE_ACTIVE_TXN','%SQL_MULT_RESULT_SETS','%SQL_NAMED','%SQL_NC_END','%SQL_NC_HIGH',
+                        
'%SQL_NC_LOW','%SQL_NC_START','%SQL_NEED_DATA','%SQL_NEED_LONG_DATA_LEN','%SQL_NNC_NON_NULL','%SQL_NNC_NULL','%SQL_NONSCROLLABLE','%SQL_NON_NULLABLE_COLUMNS',
+                        
'%SQL_NOSCAN','%SQL_NOSCAN_DEFAULT','%SQL_NOSCAN_OFF','%SQL_NOSCAN_ON','%SQL_NOT_DEFERRABLE','%SQL_NO_ACTION','%SQL_NO_COLUMN_NUMBER','%SQL_NO_DATA',
+                        
'%SQL_NO_DATA_FOUND','%SQL_NO_NULLS','%SQL_NO_ROW_NUMBER','%SQL_NO_TOTAL','%SQL_NTS','%SQL_NTSL','%SQL_NULLABLE','%SQL_NULLABLE_UNKNOWN',
+                        
'%SQL_NULL_COLLATION','%SQL_NULL_DATA','%SQL_NULL_HANDLE','%SQL_NULL_HDBC','%SQL_NULL_HDESC','%SQL_NULL_HENV','%SQL_NULL_HSTMT','%SQL_NUMERIC',
+                        
'%SQL_NUMERIC_FUNCTIONS','%SQL_OAC_LEVEL1','%SQL_OAC_LEVEL2','%SQL_OAC_NONE','%SQL_ODBC_API_CONFORMANCE','%SQL_ODBC_CURSORS','%SQL_ODBC_INTERFACE_CONFORMANCE','%SQL_ODBC_SAG_CLI_CONFORMANCE',
+                        
'%SQL_ODBC_SQL_CONFORMANCE','%SQL_ODBC_SQL_OPT_IEF','%SQL_ODBC_VER','%SQL_OIC_CORE','%SQL_OIC_LEVEL1','%SQL_OIC_LEVEL2','%SQL_OJ_ALL_COMPARISON_OPS','%SQL_OJ_CAPABILITIES',
+                        
'%SQL_OJ_FULL','%SQL_OJ_INNER','%SQL_OJ_LEFT','%SQL_OJ_NESTED','%SQL_OJ_NOT_ORDERED','%SQL_OJ_RIGHT','%SQL_OPT_TRACE','%SQL_OPT_TRACEFILE',
+                        
'%SQL_OPT_TRACE_DEFAULT','%SQL_OPT_TRACE_OFF','%SQL_OPT_TRACE_ON','%SQL_ORDER_BY_COLUMNS_IN_SELECT','%SQL_OSCC_COMPLIANT','%SQL_OSCC_NOT_COMPLIANT','%SQL_OSC_CORE','%SQL_OSC_EXTENDED',
+                        
'%SQL_OSC_MINIMUM','%SQL_OUTER_JOINS','%SQL_OUTER_JOIN_CAPABILITIES','%SQL_OU_DML_STATEMENTS','%SQL_OU_INDEX_DEFINITION','%SQL_OU_PRIVILEGE_DEFINITION','%SQL_OU_PROCEDURE_INVOCATION','%SQL_OU_TABLE_DEFINITION',
+                        
'%SQL_OV_ODBC2','%SQL_OV_ODBC3','%SQL_OWNER_TERM','%SQL_OWNER_USAGE','%SQL_PACKET_SIZE','%SQL_PARAM_ARRAY_ROW_COUNTS','%SQL_PARAM_ARRAY_SELECTS','%SQL_PARAM_BIND_BY_COLUMN',
+                        
'%SQL_PARAM_BIND_TYPE_DEFAULT','%SQL_PARAM_DIAG_UNAVAILABLE','%SQL_PARAM_ERROR','%SQL_PARAM_IGNORE','%SQL_PARAM_INPUT','%SQL_PARAM_INPUT_OUTPUT','%SQL_PARAM_OUTPUT','%SQL_PARAM_PROCEED',
+                        
'%SQL_PARAM_SUCCESS','%SQL_PARAM_SUCCESS_WITH_INFO','%SQL_PARAM_TYPE_DEFAULT','%SQL_PARAM_TYPE_UNKNOWN','%SQL_PARAM_UNUSED','%SQL_PARC_BATCH','%SQL_PARC_NO_BATCH','%SQL_PAS_BATCH',
+                        
'%SQL_PAS_NO_BATCH','%SQL_PAS_NO_SELECT','%SQL_PC_NON_PSEUDO','%SQL_PC_NOT_PSEUDO','%SQL_PC_PSEUDO','%SQL_PC_UNKNOWN','%SQL_POSITION','%SQL_POSITIONED_STATEMENTS',
+                        
'%SQL_POS_ADD','%SQL_POS_DELETE','%SQL_POS_OPERATIONS','%SQL_POS_POSITION','%SQL_POS_REFRESH','%SQL_POS_UPDATE','%SQL_PRED_BASIC','%SQL_PRED_CHAR',
+                        
'%SQL_PRED_NONE','%SQL_PRED_SEARCHABLE','%SQL_PROCEDURES','%SQL_PROCEDURE_TERM','%SQL_PS_POSITIONED_DELETE','%SQL_PS_POSITIONED_UPDATE','%SQL_PS_SELECT_FOR_UPDATE','%SQL_PT_FUNCTION',
+                        
'%SQL_PT_PROCEDURE','%SQL_PT_UNKNOWN','%SQL_QL_END','%SQL_QL_START','%SQL_QUALIFIER_LOCATION','%SQL_QUALIFIER_NAME_SEPARATOR','%SQL_QUALIFIER_TERM','%SQL_QUALIFIER_USAGE',
+                        
'%SQL_QUERY_TIMEOUT','%SQL_QUERY_TIMEOUT_DEFAULT','%SQL_QUICK','%SQL_QUIET_MODE','%SQL_QUOTED_IDENTIFIER_CASE','%SQL_QU_DML_STATEMENTS','%SQL_QU_INDEX_DEFINITION','%SQL_QU_PRIVILEGE_DEFINITION',
+                        
'%SQL_QU_PROCEDURE_INVOCATION','%SQL_QU_TABLE_DEFINITION','%SQL_RD_DEFAULT','%SQL_RD_OFF','%SQL_RD_ON','%SQL_REAL','%SQL_REFRESH','%SQL_RESET_PARAMS',
+                        
'%SQL_RESTRICT','%SQL_RESULT_COL','%SQL_RETRIEVE_DATA','%SQL_RETURN_VALUE','%SQL_ROLLBACK','%SQL_ROWSET_SIZE','%SQL_ROWSET_SIZE_DEFAULT','%SQL_ROWVER',
+                        
'%SQL_ROW_ADDED','%SQL_ROW_DELETED','%SQL_ROW_ERROR','%SQL_ROW_IDENTIFIER','%SQL_ROW_IGNORE','%SQL_ROW_NOROW','%SQL_ROW_NUMBER','%SQL_ROW_NUMBER_UNKNOWN',
+                        
'%SQL_ROW_PROCEED','%SQL_ROW_SUCCESS','%SQL_ROW_SUCCESS_WITH_INFO','%SQL_ROW_UPDATED','%SQL_ROW_UPDATES','%SQL_SCCO_LOCK','%SQL_SCCO_OPT_ROWVER','%SQL_SCCO_OPT_TIMESTAMP',
+                        
'%SQL_SCCO_OPT_VALUES','%SQL_SCCO_READ_ONLY','%SQL_SCC_ISO92_CLI','%SQL_SCC_XOPEN_CLI_VERSION1','%SQL_SCHEMA_TERM','%SQL_SCHEMA_USAGE','%SQL_SCOPE_CURROW','%SQL_SCOPE_SESSION',
+                        
'%SQL_SCOPE_TRANSACTION','%SQL_SCROLLABLE','%SQL_SCROLL_CONCURRENCY','%SQL_SCROLL_DYNAMIC','%SQL_SCROLL_FORWARD_ONLY','%SQL_SCROLL_KEYSET_DRIVEN','%SQL_SCROLL_OPTIONS','%SQL_SCROLL_STATIC',
+                        
'%SQL_SC_FIPS127_2_TRANSITIONAL','%SQL_SC_NON_UNIQUE','%SQL_SC_SQL92_ENTRY','%SQL_SC_SQL92_FULL','%SQL_SC_SQL92_INTERMEDIATE','%SQL_SC_TRY_UNIQUE','%SQL_SC_UNIQUE','%SQL_SDF_CURRENT_DATE',
+                        
'%SQL_SDF_CURRENT_TIME','%SQL_SDF_CURRENT_TIMESTAMP','%SQL_SEARCHABLE','%SQL_SEARCH_PATTERN_ESCAPE','%SQL_SECOND','%SQL_SENSITIVE','%SQL_SERVER_NAME','%SQL_SETPARAM_VALUE_MAX',
+                        
'%SQL_SETPOS_MAX_LOCK_VALUE','%SQL_SETPOS_MAX_OPTION_VALUE','%SQL_SET_DEFAULT','%SQL_SET_NULL','%SQL_SFKD_CASCADE','%SQL_SFKD_NO_ACTION','%SQL_SFKD_SET_DEFAULT','%SQL_SFKD_SET_NULL',
+                        
'%SQL_SFKU_CASCADE','%SQL_SFKU_NO_ACTION','%SQL_SFKU_SET_DEFAULT','%SQL_SFKU_SET_NULL','%SQL_SG_DELETE_TABLE','%SQL_SG_INSERT_COLUMN','%SQL_SG_INSERT_TABLE','%SQL_SG_REFERENCES_COLUMN',
+                        
'%SQL_SG_REFERENCES_TABLE','%SQL_SG_SELECT_TABLE','%SQL_SG_UPDATE_COLUMN','%SQL_SG_UPDATE_TABLE','%SQL_SG_USAGE_ON_CHARACTER_SET','%SQL_SG_USAGE_ON_COLLATION','%SQL_SG_USAGE_ON_DOMAIN','%SQL_SG_USAGE_ON_TRANSLATION',
+                        
'%SQL_SG_WITH_GRANT_OPTION','%SQL_SIGNED_OFFSET','%SQL_SIMULATE_CURSOR','%SQL_SMALLINT','%SQL_SNVF_BIT_LENGTH','%SQL_SNVF_CHARACTER_LENGTH','%SQL_SNVF_CHAR_LENGTH','%SQL_SNVF_EXTRACT',
+                        
'%SQL_SNVF_OCTET_LENGTH','%SQL_SNVF_POSITION','%SQL_SO_DYNAMIC','%SQL_SO_FORWARD_ONLY','%SQL_SO_KEYSET_DRIVEN','%SQL_SO_MIXED','%SQL_SO_STATIC','%SQL_SPECIAL_CHARACTERS',
+                        
'%SQL_SPEC_MAJOR','%SQL_SPEC_MINOR','%SQL_SP_BETWEEN','%SQL_SP_COMPARISON','%SQL_SP_EXISTS','%SQL_SP_IN','%SQL_SP_ISNOTNULL','%SQL_SP_ISNULL',
+                        
'%SQL_SP_LIKE','%SQL_SP_MATCH_FULL','%SQL_SP_MATCH_PARTIAL','%SQL_SP_MATCH_UNIQUE_FULL','%SQL_SP_MATCH_UNIQUE_PARTIAL','%SQL_SP_OVERLAPS','%SQL_SP_QUANTIFIED_COMPARISON','%SQL_SP_UNIQUE',
+                        
'%SQL_SQL92_DATETIME_FUNCTIONS','%SQL_SQL92_FOREIGN_KEY_DELETE_RULE','%SQL_SQL92_FOREIGN_KEY_UPDATE_RULE','%SQL_SQL92_GRANT','%SQL_SQL92_NUMERIC_VALUE_FUNCTIONS','%SQL_SQL92_PREDICATES','%SQL_SQL92_RELATIONAL_JOIN_OPERATORS','%SQL_SQL92_REVOKE',
+                        
'%SQL_SQL92_ROW_VALUE_CONSTRUCTOR','%SQL_SQL92_STRING_FUNCTIONS','%SQL_SQL92_VALUE_EXPRESSIONS','%SQL_SQLSTATE_SIZE','%SQL_SQL_CONFORMANCE','%SQL_SQ_COMPARISON','%SQL_SQ_CORRELATED_SUBQUERIES','%SQL_SQ_EXISTS',
+                        
'%SQL_SQ_IN','%SQL_SQ_QUANTIFIED','%SQL_SRJO_CORRESPONDING_CLAUSE','%SQL_SRJO_CROSS_JOIN','%SQL_SRJO_EXCEPT_JOIN','%SQL_SRJO_FULL_OUTER_JOIN','%SQL_SRJO_INNER_JOIN','%SQL_SRJO_INTERSECT_JOIN',
+                        
'%SQL_SRJO_LEFT_OUTER_JOIN','%SQL_SRJO_NATURAL_JOIN','%SQL_SRJO_RIGHT_OUTER_JOIN','%SQL_SRJO_UNION_JOIN','%SQL_SRVC_DEFAULT','%SQL_SRVC_NULL','%SQL_SRVC_ROW_SUBQUERY','%SQL_SRVC_VALUE_EXPRESSION',
+                        
'%SQL_SR_CASCADE','%SQL_SR_DELETE_TABLE','%SQL_SR_GRANT_OPTION_FOR','%SQL_SR_INSERT_COLUMN','%SQL_SR_INSERT_TABLE','%SQL_SR_REFERENCES_COLUMN','%SQL_SR_REFERENCES_TABLE','%SQL_SR_RESTRICT',
+                        
'%SQL_SR_SELECT_TABLE','%SQL_SR_UPDATE_COLUMN','%SQL_SR_UPDATE_TABLE','%SQL_SR_USAGE_ON_CHARACTER_SET','%SQL_SR_USAGE_ON_COLLATION','%SQL_SR_USAGE_ON_DOMAIN','%SQL_SR_USAGE_ON_TRANSLATION','%SQL_SSF_CONVERT',
+                        
'%SQL_SSF_LOWER','%SQL_SSF_SUBSTRING','%SQL_SSF_TRANSLATE','%SQL_SSF_TRIM_BOTH','%SQL_SSF_TRIM_LEADING','%SQL_SSF_TRIM_TRAILING','%SQL_SSF_UPPER','%SQL_SS_ADDITIONS',
+                        
'%SQL_SS_DELETIONS','%SQL_SS_UPDATES','%SQL_STANDARD_CLI_CONFORMANCE','%SQL_STATIC_CURSOR_ATTRIBUTES1','%SQL_STATIC_CURSOR_ATTRIBUTES2','%SQL_STATIC_SENSITIVITY','%SQL_STILL_EXECUTING','%SQL_STRING_FUNCTIONS',
+                        
'%SQL_SUBQUERIES','%SQL_SUCCESS','%SQL_SUCCESS_WITH_INFO','%SQL_SU_DML_STATEMENTS','%SQL_SU_INDEX_DEFINITION','%SQL_SU_PRIVILEGE_DEFINITION','%SQL_SU_PROCEDURE_INVOCATION','%SQL_SU_TABLE_DEFINITION',
+                        
'%SQL_SVE_CASE','%SQL_SVE_CAST','%SQL_SVE_COALESCE','%SQL_SVE_NULLIF','%SQL_SYSTEM_FUNCTIONS','%SQL_TABLE_STAT','%SQL_TABLE_TERM','%SQL_TC_ALL',
+                        
'%SQL_TC_DDL_COMMIT','%SQL_TC_DDL_IGNORE','%SQL_TC_DML','%SQL_TC_NONE','%SQL_TIME','%SQL_TIMEDATE_ADD_INTERVALS','%SQL_TIMEDATE_DIFF_INTERVALS','%SQL_TIMEDATE_FUNCTIONS',
+                        
'%SQL_TIMESTAMP','%SQL_TIMESTAMP_LEN','%SQL_TIME_LEN','%SQL_TINYINT','%SQL_TRANSACTION_CAPABLE','%SQL_TRANSACTION_ISOLATION_OPTION','%SQL_TRANSACTION_READ_COMMITTED','%SQL_TRANSACTION_READ_UNCOMMITTED',
+                        
'%SQL_TRANSACTION_REPEATABLE_READ','%SQL_TRANSACTION_SERIALIZABLE','%SQL_TRANSLATE_DLL','%SQL_TRANSLATE_OPTION','%SQL_TRUE','%SQL_TXN_CAPABLE','%SQL_TXN_ISOLATION','%SQL_TXN_ISOLATION_OPTION',
+                        
'%SQL_TXN_READ_COMMITTED','%SQL_TXN_READ_UNCOMMITTED','%SQL_TXN_REPEATABLE_READ','%SQL_TXN_SERIALIZABLE','%SQL_TYPE_DATE','%SQL_TYPE_NULL','%SQL_TYPE_TIME','%SQL_TYPE_TIMESTAMP',
+                        
'%SQL_UB_DEFAULT','%SQL_UB_FIXED','%SQL_UB_OFF','%SQL_UB_ON','%SQL_UB_VARIABLE','%SQL_UNBIND','%SQL_UNICODE','%SQL_UNICODE_CHAR',
+                        
'%SQL_UNICODE_LONGVARCHAR','%SQL_UNICODE_VARCHAR','%SQL_UNION','%SQL_UNION_STATEMENT','%SQL_UNKNOWN_TYPE','%SQL_UNNAMED','%SQL_UNSEARCHABLE','%SQL_UNSIGNED_OFFSET',
+                        
'%SQL_UNSPECIFIED','%SQL_UPDATE','%SQL_UPDATE_BY_BOOKMARK','%SQL_USER_NAME','%SQL_USE_BOOKMARKS','%SQL_US_UNION','%SQL_US_UNION_ALL','%SQL_U_UNION',
+                        
'%SQL_U_UNION_ALL','%SQL_VARBINARY','%SQL_VARCHAR','%SQL_XOPEN_CLI_YEAR','%SQL_YEAR','%SQL_YEAR_TO_MONTH','%SS_BITMAP','%SS_BLACKFRAME',
+                        
'%SS_BLACKRECT','%SS_CENTER','%SS_CENTERIMAGE','%SS_ENDELLIPSIS','%SS_ETCHEDFRAME','%SS_ETCHEDHORZ','%SS_ETCHEDVERT','%SS_GRAYFRAME',
+                        
'%SS_GRAYRECT','%SS_LEFT','%SS_NOPREFIX','%SS_NOTIFY','%SS_NOWORDWRAP','%SS_PATHELLIPSIS','%SS_RIGHT','%SS_RIGHTJUST',
+                        
'%SS_SIMPLE','%SS_SUNKEN','%SS_WHITEFRAME','%SS_WHITERECT','%SS_WORDELLIPSIS','%STAT_FILL_NATURAL','%STAT_FILL_NATURAL_ERASTONE','%STAT_FILL_NATURAL_EVEN',
+                        
'%STAT_FILL_NATURAL_FIBONACCI','%STAT_FILL_NATURAL_ODD','%STAT_MINMAX_INDEX','%STAT_MINMAX_VALUE','%SW_FORCEMINIMIZE','%SW_HIDE','%SW_MAXIMIZE','%SW_MINIMIZE',
+                        
'%SW_NORMAL','%SW_RESTORE','%SW_SHOW','%SW_SHOWDEFAULT','%SW_SHOWMAXIMIZED','%SW_SHOWMINIMIZED','%SW_SHOWMINNOACTIVE','%SW_SHOWNA',
+                        
'%SW_SHOWNOACTIVATE','%SW_SHOWNORMAL','%TBGL_ERROR_FILE','%TBGL_ERROR_MSGBOX','%TBGL_ERROR_NONE','%TBGL_M15B','%TBGL_M15G','%TBGL_M15LAYER',
+                        
'%TBGL_M15PSTOP','%TBGL_M15R','%TBGL_M15TEXN','%TBGL_M15TEXX','%TBGL_M15TEXY','%TBGL_M15X','%TBGL_M15Y','%TBGL_M15Z',
+                        
'%TBGL_NORMAL_PRECISE','%TBGL_NORMAL_SMOOTH','%TBGL_TEX_LINEAR','%TBGL_TEX_MIPMAP','%TBGL_TEX_NEAREST','%TB_%VT_BSTR','%TB_%VT_CY','%TB_%VT_DATE',
+                        
'%TB_%VT_EMPTY','%TB_%VT_I2','%TB_%VT_I4','%TB_%VT_NULL','%TB_%VT_R4','%TB_%VT_R8','%TB_CLASS_E_NOAGGREGATION','%TB_CO_E_CLASSSTRING',
+                        
'%TB_DISPATCH_METHOD','%TB_DISPATCH_PROPERTYGET','%TB_DISPATCH_PROPERTYPUT','%TB_DISPATCH_PROPERTYPUTREF','%TB_E_INVALIDARG','%TB_E_NOINTERFACE','%TB_E_OUTOFMEMORY','%TB_MK_E_CONNECTMANUALLY',
+                        
'%TB_MK_E_EXCEEDEDDEADLINE','%TB_MK_E_INTERMEDIATEINTERFACENOTSUPPORTED','%TB_MK_E_NOOBJECT','%TB_MK_E_SYNTAX','%TB_REGDB_E_CLASSNOTREG','%TB_REGDB_E_WRITEREGDB','%TB_SIZEOF_TBVARIANT','%TB_S_FALSE',
+                        
'%TB_S_OK','%TCM_FIRST','%TCS_BOTTOM','%TCS_BUTTONS','%TCS_EX_FLATSEPARATORS','%TCS_EX_REGISTERDROP','%TCS_FIXEDWIDTH','%TCS_FLATBUTTONS',
+                        
'%TCS_FOCUSNEVER','%TCS_FOCUSONBUTTONDOWN','%TCS_FORCEICONLEFT','%TCS_FORCELABELLEFT','%TCS_HOTTRACK','%TCS_MULTILINE','%TCS_MULTISELECT','%TCS_OWNERDRAWFIXED',
+                        
'%TCS_RAGGEDRIGHT','%TCS_RIGHT','%TCS_RIGHTJUSTIFY','%TCS_SCROLLOPPOSITE','%TCS_SINGLELINE','%TCS_TABS','%TCS_TOOLTIPS','%TCS_VERTICAL',
+                        
'%TM_PLAINTEXT','%TM_RICHTEXT','%TOKENIZER_DELIMITER','%TOKENIZER_EOL','%TOKENIZER_ERROR','%TOKENIZER_FINISHED','%TOKENIZER_NUMBER','%TOKENIZER_QUOTE',
+                        
'%TOKENIZER_STRING','%TOKENIZER_UNDEFTOK','%TRUE','%TV_FIRST','%VK_0','%VK_1','%VK_2','%VK_3',
+                        
'%VK_4','%VK_5','%VK_6','%VK_7','%VK_8','%VK_9','%VK_A','%VK_ACCEPT',
+                        
'%VK_ADD','%VK_APPS','%VK_B','%VK_BACK','%VK_C','%VK_CANCEL','%VK_CAPITAL','%VK_CLEAR',
+                        
'%VK_CONTROL','%VK_CONVERT','%VK_D','%VK_DECIMAL','%VK_DELETE','%VK_DIVIDE','%VK_DOWN','%VK_E',
+                        
'%VK_END','%VK_ESCAPE','%VK_EXECUTE','%VK_F','%VK_F1','%VK_F10','%VK_F11','%VK_F12',
+                        
'%VK_F13','%VK_F14','%VK_F15','%VK_F16','%VK_F17','%VK_F18','%VK_F19','%VK_F2',
+                        
'%VK_F20','%VK_F21','%VK_F22','%VK_F23','%VK_F24','%VK_F3','%VK_F4','%VK_F5',
+                        
'%VK_F6','%VK_F7','%VK_F8','%VK_F9','%VK_FINAL','%VK_G','%VK_H','%VK_HANGEUL',
+                        
'%VK_HANGUL','%VK_HANJA','%VK_HELP','%VK_HOME','%VK_I','%VK_INSERT','%VK_J','%VK_JUNJA',
+                        
'%VK_K','%VK_KANA','%VK_KANJI','%VK_L','%VK_LBUTTON','%VK_LEFT','%VK_LINEFEED','%VK_LWIN',
+                        
'%VK_M','%VK_MBUTTON','%VK_MENU','%VK_MODECHANGE','%VK_MULTIPLY','%VK_N','%VK_NEXT','%VK_NONCONVERT',
+                        
'%VK_NUMLOCK','%VK_NUMPAD0','%VK_NUMPAD1','%VK_NUMPAD2','%VK_NUMPAD3','%VK_NUMPAD4','%VK_NUMPAD5','%VK_NUMPAD6',
+                        
'%VK_NUMPAD7','%VK_NUMPAD8','%VK_NUMPAD9','%VK_O','%VK_P','%VK_PAUSE','%VK_PGDN','%VK_PGUP',
+                        
'%VK_PRINT','%VK_PRIOR','%VK_Q','%VK_R','%VK_RBUTTON','%VK_RETURN','%VK_RIGHT','%VK_RWIN',
+                        
'%VK_S','%VK_SCROLL','%VK_SELECT','%VK_SEPARATOR','%VK_SHIFT','%VK_SLEEP','%VK_SNAPSHOT','%VK_SPACE',
+                        
'%VK_SUBTRACT','%VK_T','%VK_TAB','%VK_U','%VK_UP','%VK_V','%VK_W','%VK_X',
+                        
'%VK_XBUTTON1','%VK_XBUTTON2','%VK_Y','%VK_Z','%VT_ARRAY','%VT_BLOB','%VT_BLOB_OBJECT','%VT_BOOL',
+                        
'%VT_BSTR','%VT_BYREF','%VT_CARRAY','%VT_CF','%VT_CLSID','%VT_CY','%VT_DATE','%VT_DISPATCH',
+                        
'%VT_EMPTY','%VT_ERROR','%VT_FILETIME','%VT_HRESULT','%VT_I1','%VT_I2','%VT_I4','%VT_I8',
+                        
'%VT_INT','%VT_LPSTR','%VT_LPWSTR','%VT_NULL','%VT_PTR','%VT_R4','%VT_R8','%VT_RECORD',
+                        
'%VT_RESERVED','%VT_SAFEARRAY','%VT_STORAGE','%VT_STORED_OBJECT','%VT_STREAM','%VT_STREAMED_OBJECT','%VT_UI1','%VT_UI2',
+                        
'%VT_UI4','%VT_UI8','%VT_UINT','%VT_UNKNOWN','%VT_USERDEFINED','%VT_VARIANT','%VT_VECTOR','%VT_VOID',
+                        
'%WHITE','%WIN_FINDTITLECONTAIN','%WIN_FINDTITLEEND','%WIN_FINDTITLEEQUAL','%WIN_FINDTITLESTART','%WM_ACTIVATE','%WM_ACTIVATEAPP','%WM_CAPTURECHANGED',
+                        
'%WM_CHAR','%WM_CLOSE','%WM_COMMAND','%WM_DESTROY','%WM_GETTEXTLENGTH','%WM_HOTKEY','%WM_INITDIALOG','%WM_KEYDOWN',
+                        
'%WM_KEYUP','%WM_KILLFOCUS','%WM_MOUSEMOVE','%WM_MOVE','%WM_MOVING','%WM_NOTIFY','%WM_PAINT','%WM_QUIT',
+                        
'%WM_SETFOCUS','%WM_SETFONT','%WM_SETTEXT','%WM_SIZE','%WM_SIZING','%WM_SYSCOMMAND','%WM_TIMER','%WM_USER',
+                        
'%WS_BORDER','%WS_CAPTION','%WS_CHILD','%WS_CLIPCHILDREN','%WS_CLIPSIBLINGS','%WS_DISABLED','%WS_DLGFRAME','%WS_EX_ACCEPTFILES',
+                        
'%WS_EX_APPWINDOW','%WS_EX_CLIENTEDGE','%WS_EX_CONTEXTHELP','%WS_EX_CONTROLPARENT','%WS_EX_LEFT','%WS_EX_LEFTSCROLLBAR','%WS_EX_LTRREADING','%WS_EX_MDICHILD',
+                        
'%WS_EX_NOPARENTNOTIFY','%WS_EX_OVERLAPPEDWINDOW','%WS_EX_PALETTEWINDOW','%WS_EX_RIGHT','%WS_EX_RIGHTSCROLLBAR','%WS_EX_RTLREADING','%WS_EX_STATICEDGE','%WS_EX_TOOLWINDOW',
+                        
'%WS_EX_TOPMOST','%WS_EX_TRANSPARENT','%WS_EX_WINDOWEDGE','%WS_GROUP','%WS_HSCROLL','%WS_ICONIC','%WS_MAXIMIZE','%WS_MAXIMIZEBOX',
+                        
'%WS_MINIMIZE','%WS_MINIMIZEBOX','%WS_OVERLAPPEDWINDOW','%WS_POPUP','%WS_POPUPWINDOW','%WS_SYSMENU','%WS_TABSTOP','%WS_THICKFRAME',
+                        
'%WS_VISIBLE','%WS_VSCROLL','%YELLOW','CRLF','FALSE','NULL','TAB','TRUE'
+                        
+                        )
+                ),
+        'SYMBOLS' => array(
+          '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', 
'^', '&', ':'
+          ),
+        'CASE_SENSITIVE' => array(
+                GESHI_COMMENTS => false,
+                1 => false,
+                2 => false
+                ),
+        'STYLES' => array(
+                'KEYWORDS' => array(
+                        1 => 'color: #0000FF; font-weight: bold;',
+                        2 => 'color: #993333; font-style: italic; font-weight: 
bold;',
+                        3 => 'color: #000066;',
+                        4 => 'color: #993333;'
+                        ),
+                'COMMENTS' => array(
+                        1 => 'color: #008000;'
+                        ),
+                'BRACKETS' => array(
+                        0 => 'color: #333333;'
+                        ),
+                'STRINGS' => array(
+                        0 => 'color: #800080;'
+                        ),
+                'NUMBERS' => array(
+                        0 => 'color: #CC0000;'
+                        ),
+                'METHODS' => array(
+                        1 => 'color: #66cc66;'
+                        ),
+                'SYMBOLS' => array(
+                        0 => 'color: #333333;'
+                        ),
+                'ESCAPE_CHAR' => array(
+                        0 => 'color: #000099;'
+                        ),
+                'SCRIPT' => array(
+                        ),
+                'REGEXPS' => array(
+                        )
+                ),
+        'OOLANG' => false,
+        'OBJECT_SPLITTERS' => array(
+                1 => '_'
+                ),
+        'REGEXPS' => array(
+                ),
+        'STRICT_MODE_APPLIES' => GESHI_NEVER,
+        'SCRIPT_DELIMITERS' => array(
+                ),
+        'HIGHLIGHT_STRICT_BLOCK' => array(
+                )
+);
+
+?>

Index: geshi/tsql.php
===================================================================
RCS file: geshi/tsql.php
diff -N geshi/tsql.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/tsql.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,384 @@
+<?php
+/*************************************************************************************
+ * tsql.php
+ * --------
+ * Author: Duncan Lock (address@hidden)
+ * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie 
(http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/11/22
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * T-SQL language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/01/23 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2006/01/23)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'T-SQL',
+       'COMMENT_SINGLE' => array(1 => '--'),
+       'COMMENT_MULTI' => array('/*' => '*/'),
+       'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array(
+                       /* 
+                               This will be highlighted in blue
+                       */
+
+                       // Datatypes
+                       'bigint', 'int', 'smallint', 'tinyint', 'bit', 
'decimal', 'numeric', 'money', 
+                       'smallmoney', 'float', 'real', 'datetime', 
'smalldatetime', 'char', 'varchar', 
+                       'text', 'nchar', 'nvarchar', 'ntext', 'binary', 
'varbinary', 'image', 'cursor', 
+                       'sql_variant', 'table', 'timestamp', 'uniqueidentifier',
+
+                       // Keywords
+                       'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 
'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALTER', 'ARE', 'ARRAY', 'AS',
+                       'ASC', 'ASSERTION', 'AT', 'AUTHORIZATION', 'BACKUP', 
'BEFORE', 'BEGIN', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'BOTH', 'BREADTH',
+                       'BREAK', 'BROWSE', 'BULK', 'BY', 'CALL', 'CASCADE', 
'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHAR', 'CHARACTER', 'CHECK', 
'CHECKPOINT',
+                       'CLASS', 'CLOB', 'CLOSE', 'CLUSTERED', 'COALESCE', 
'COLLATE', 'COLLATION', 'COLUMN', 'COMMIT', 'COMPLETION', 'COMPUTE', 'CONNECT',
+                       'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 
'CONSTRUCTOR', 'CONTAINS', 'CONTAINSTABLE', 'CONTINUE', 'CONVERT', 
'CORRESPONDING', 'CREATE',
+                       'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH', 
'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
+                       'CURSOR', 'CYCLE', 'DATA', 'DATABASE', 'DATE', 'DAY', 
'DBCC', 'DEALLOCATE', 'DEC', 'DECIMAL', 'DECLARE', 'DEFAULT', 'DEFERRABLE',
+                       'DEFERRED', 'DELETE', 'DENY', 'DEPTH', 'DEREF', 'DESC', 
'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC',
+                       'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISK', 
'DISTINCT', 'DISTRIBUTED', 'DOMAIN', 'DOUBLE', 'DROP', 'DUMMY', 'DUMP', 
'DYNAMIC',
+                       'EACH', 'ELSE', 'END', 'END-EXEC', 'EQUALS', 'ERRLVL', 
'ESCAPE', 'EVERY', 'EXCEPT', 'EXCEPTION', 'EXEC', 'EXECUTE', 'EXIT',
+                       'EXTERNAL', 'FALSE', 'FETCH', 'FILE', 'FILLFACTOR', 
'FIRST', 'FLOAT', 'FOR', 'FOREIGN', 'FOUND', 'FREE', 'FREETEXT', 
'FREETEXTTABLE',
+                       'FROM', 'FULL', 'FUNCTION', 'GENERAL', 'GET', 'GLOBAL', 
'GOTO', 'GRANT', 'GROUP', 'GROUPING', 'HAVING', 'HOLDLOCK', 'HOST', 'HOUR',
+                       'IDENTITY', 'IDENTITY_INSERT', 'IDENTITYCOL', 'IF', 
'IGNORE', 'IMMEDIATE', 'INDEX', 'INDICATOR', 'INITIALIZE', 'INITIALLY',
+                       'INNER', 'INOUT', 'INPUT', 'INSERT', 'INT', 'INTEGER', 
'INTERSECT', 'INTERVAL', 'INTO', 'IS', 'ISOLATION', 'ITERATE', 'KEY',
+                       'KILL', 'LANGUAGE', 'LARGE', 'LAST', 'LATERAL', 
'LEADING', 'LEFT', 'LESS', 'LEVEL', 'LIMIT', 'LINENO', 'LOAD', 'LOCAL',
+                       'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATOR', 'MAP', 
'MATCH', 'MINUTE', 'MODIFIES', 'MODIFY', 'MODULE', 'MONTH', 'NAMES', 'NATIONAL',
+                       'NATURAL', 'NCHAR', 'NCLOB', 'NEW', 'NEXT', 'NO', 
'NOCHECK', 'NONCLUSTERED', 'NONE', 'NULLIF', 'NUMERIC', 'OBJECT', 'OF',
+                       'OFF', 'OFFSETS', 'OLD', 'ON', 'ONLY', 'OPEN', 
'OPENDATASOURCE', 'OPENQUERY', 'OPENROWSET', 'OPENXML', 'OPERATION', 'OPTION',
+                       'ORDER', 'ORDINALITY', 'OUT', 'OUTPUT', 'OVER', 'PAD', 
'PARAMETER', 'PARAMETERS', 'PARTIAL', 'PATH', 'PERCENT', 'PLAN',
+                       'POSTFIX', 'PRECISION', 'PREFIX', 'PREORDER', 
'PREPARE', 'PRESERVE', 'PRIMARY', 'PRINT', 'PRIOR', 'PRIVILEGES', 'PROC', 
'PROCEDURE',
+                       'PUBLIC', 'RAISERROR', 'READ', 'READS', 'READTEXT', 
'REAL', 'RECONFIGURE', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 
'RELATIVE',
+                       'REPLICATION', 'RESTORE', 'RESTRICT', 'RESULT', 
'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROLLUP', 
'ROUTINE', 'ROW',
+                       'ROWGUIDCOL', 'ROWS', 'RULE', 'SAVE', 'SAVEPOINT', 
'SCHEMA', 'SCOPE', 'SCROLL', 'SEARCH', 'SECOND', 'SECTION', 'SELECT',
+                       'SEQUENCE', 'SESSION', 'SESSION_USER', 'SET', 'SETS', 
'SETUSER', 'SHUTDOWN', 'SIZE', 'SMALLINT', 'SPACE', 'SPECIFIC',
+                       'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLSTATE', 
'SQLWARNING', 'START', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 
'STRUCTURE',
+                       'SYSTEM_USER', 'TABLE', 'TEMPORARY', 'TERMINATE', 
'TEXTSIZE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR', 
'TIMEZONE_MINUTE',
+                       'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 
'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TSEQUAL', 'UNDER', 
'UNION',
+                       'UNIQUE', 'UNKNOWN', 'UNNEST', 'UPDATE', 'UPDATETEXT', 
'USAGE', 'USE', 'USER', 'USING', 'VALUE', 'VALUES', 'VARCHAR', 'VARIABLE',
+                       'VARYING', 'VIEW', 'WAITFOR', 'WHEN', 'WHENEVER', 
'WHERE', 'WHILE', 'WITH', 'WITHOUT', 'WORK', 'WRITE', 'WRITETEXT', 'YEAR', 
'ZONE',
+                       'UNCOMMITTED', 'NOCOUNT',
+                       ),
+               2 => array(
+                       /*
+                               Built-in functions
+                               Highlighted in pink.
+                       */
+
+                       //Configuration Functions
+                       
'@@DATEFIRST','@@OPTIONS','@@DBTS','@@REMSERVER','@@LANGID','@@SERVERNAME', 
+                       
'@@LANGUAGE','@@SERVICENAME','@@LOCK_TIMEOUT','@@SPID','@@MAX_CONNECTIONS','@@TEXTSIZE',
 
+                       '@@MAX_PRECISION','@@VERSION','@@NESTLEVEL',
+
+                       //Cursor Functions
+                       '@@CURSOR_ROWS','@@FETCH_STATUS',
+
+                       //Date and Time Functions
+                       
'DATEADD','DATEDIFF','DATENAME','DATEPART','DAY','GETDATE','GETUTCDATE','MONTH','YEAR',
+
+                       //Mathematical Functions
+                       
'ABS','DEGREES','RAND','ACOS','EXP','ROUND','ASIN','FLOOR','SIGN', 
+                       
'ATAN','LOG','SIN','ATN2','LOG10','SQUARE','CEILING','PI','SQRT','COS', 
+                       'POWER','TAN','COT','RADIANS',
+
+                       //Meta Data Functions
+                       
'COL_LENGTH','fn_listextendedproperty','COL_NAME','FULLTEXTCATALOGPROPERTY', 
+                       
'COLUMNPROPERTY','FULLTEXTSERVICEPROPERTY','DATABASEPROPERTY','INDEX_COL', 
+                       
'DATABASEPROPERTYEX','INDEXKEY_PROPERTY','DB_ID','INDEXPROPERTY','DB_NAME', 
+                       
'OBJECT_ID','FILE_ID','OBJECT_NAME','FILE_NAME','OBJECTPROPERTY','FILEGROUP_ID',
 
+                       
'@@PROCID','FILEGROUP_NAME','SQL_VARIANT_PROPERTY','FILEGROUPPROPERTY', 
+                       'TYPEPROPERTY','FILEPROPERTY',
+
+                       //Security Functions
+                       
'fn_trace_geteventinfo','IS_SRVROLEMEMBER','fn_trace_getfilterinfo','SUSER_SID',
 
+                       
'fn_trace_getinfo','SUSER_SNAME','fn_trace_gettable','USER_ID','HAS_DBACCESS', 
+                       'IS_MEMBER',
+
+                       //String Functions
+                       
'ASCII','NCHAR','SOUNDEX','CHAR','PATINDEX','SPACE','CHARINDEX', 
+                       
'REPLACE','STR','DIFFERENCE','QUOTENAME','STUFF','LEFT','REPLICATE', 
+                       
'SUBSTRING','LEN','REVERSE','UNICODE','LOWER','RIGHT','UPPER','LTRIM', 
+                       'RTRIM',
+
+                       //System Functions
+                       
'APP_NAME','COLLATIONPROPERTY','@@ERROR','fn_helpcollations', 
+                       
'fn_servershareddrives','fn_virtualfilestats','FORMATMESSAGE', 
+                       
'GETANSINULL','HOST_ID','HOST_NAME','IDENT_CURRENT','IDENT_INCR', 
+                       
'IDENT_SEED','@@IDENTITY','ISDATE','ISNUMERIC','PARSENAME','PERMISSIONS', 
+                       
'@@ROWCOUNT','ROWCOUNT_BIG','SCOPE_IDENTITY','SERVERPROPERTY','SESSIONPROPERTY',
 
+                       'STATS_DATE','@@TRANCOUNT','USER_NAME',
+
+                       //System Statistical Functions
+                       
'@@CONNECTIONS','@@PACK_RECEIVED','@@CPU_BUSY','@@PACK_SENT',
+                       
'fn_virtualfilestats','@@TIMETICKS','@@IDLE','@@TOTAL_ERRORS','@@IO_BUSY',
+                       '@@TOTAL_READ','@@PACKET_ERRORS','@@TOTAL_WRITE',
+
+                       //Text and Image Functions
+                       'TEXTPTR','TEXTVALID',
+                       
+                       //Aggregate functions
+                       'AVG', 'MAX', 'BINARY_CHECKSUM', 'MIN', 'CHECKSUM', 
'SUM', 'CHECKSUM_AGG', 
+                       'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 
'GROUPING', 'VARP'
+                       ),
+               3 => array(
+                       /*      
+                               System stored procedures
+                               Higlighted dark brown
+                       */
+
+                       //Active Directory Procedures
+                       'sp_ActiveDirectory_Obj', 'sp_ActiveDirectory_SCP',
+
+                       //Catalog Procedures
+                       'sp_column_privileges', 'sp_special_columns', 
'sp_columns', 'sp_sproc_columns', 
+                       'sp_databases', 'sp_statistics', 'sp_fkeys', 
'sp_stored_procedures', 'sp_pkeys', 
+                       'sp_table_privileges', 'sp_server_info', 'sp_tables',
+
+                       //Cursor Procedures
+                       'sp_cursor_list', 'sp_describe_cursor_columns', 
'sp_describe_cursor', 'sp_describe_cursor_tables',
+
+                       //Database Maintenance Plan Procedures
+                       'sp_add_maintenance_plan', 
'sp_delete_maintenance_plan_db', 'sp_add_maintenance_plan_db', 
+                       'sp_delete_maintenance_plan_job', 
'sp_add_maintenance_plan_job', 'sp_help_maintenance_plan', 
+                       'sp_delete_maintenance_plan',
+
+                       //Distributed Queries Procedures
+                       'sp_addlinkedserver', 'sp_indexes', 
'sp_addlinkedsrvlogin', 'sp_linkedservers', 'sp_catalogs', 
+                       'sp_primarykeys', 'sp_column_privileges_ex', 
'sp_serveroption', 'sp_columns_ex', 
+                       'sp_table_privileges_ex', 'sp_droplinkedsrvlogin', 
'sp_tables_ex', 'sp_foreignkeys',
+
+                       //Full-Text Search Procedures
+                       'sp_fulltext_catalog', 
'sp_help_fulltext_catalogs_cursor', 'sp_fulltext_column', 
+                       'sp_help_fulltext_columns', 'sp_fulltext_database', 
'sp_help_fulltext_columns_cursor', 
+                       'sp_fulltext_service', 'sp_help_fulltext_tables', 
'sp_fulltext_table', 
+                       'sp_help_fulltext_tables_cursor', 
'sp_help_fulltext_catalogs',
+
+                       //Log Shipping Procedures
+                       'sp_add_log_shipping_database', 
'sp_delete_log_shipping_database', 'sp_add_log_shipping_plan',
+                       'sp_delete_log_shipping_plan', 
'sp_add_log_shipping_plan_database', 
+                       'sp_delete_log_shipping_plan_database', 
'sp_add_log_shipping_primary', 
+                       'sp_delete_log_shipping_primary', 
'sp_add_log_shipping_secondary', 
+                       'sp_delete_log_shipping_secondary', 
'sp_can_tlog_be_applied', 'sp_get_log_shipping_monitor_info', 
+                       'sp_change_monitor_role', 
'sp_remove_log_shipping_monitor', 'sp_change_primary_role', 
+                       'sp_resolve_logins', 'sp_change_secondary_role', 
'sp_update_log_shipping_monitor_info', 
+                       'sp_create_log_shipping_monitor_account', 
'sp_update_log_shipping_plan', 
+                       'sp_define_log_shipping_monitor', 
'sp_update_log_shipping_plan_database',
+
+                       //OLE Automation Extended Stored Procedures
+                       'sp_OACreate', 'sp_OAMethod', 'sp_OADestroy', 
'sp_OASetProperty', 'sp_OAGetErrorInfo', 
+                       'sp_OAStop', 'sp_OAGetProperty',
+
+                       //Replication Procedures
+                       'sp_add_agent_parameter', 'sp_enableagentoffload', 
'sp_add_agent_profile', 
+                       'sp_enumcustomresolvers', 'sp_addarticle', 
'sp_enumdsn', 'sp_adddistpublisher', 
+                       'sp_enumfullsubscribers', 'sp_adddistributiondb', 
'sp_expired_subscription_cleanup', 
+                       'sp_adddistributor', 'sp_generatefilters', 
'sp_addmergealternatepublisher', 
+                       'sp_getagentoffloadinfo', 'sp_addmergearticle', 
'sp_getmergedeletetype', 'sp_addmergefilter', 
+                       'sp_get_distributor', 'sp_addmergepublication', 
'sp_getqueuedrows', 'sp_addmergepullsubscription', 
+                       'sp_getsubscriptiondtspackagename', 
'sp_addmergepullsubscription_agent', 'sp_grant_publication_access', 
+                       'sp_addmergesubscription', 'sp_help_agent_default', 
'sp_addpublication', 'sp_help_agent_parameter', 
+                       'sp_addpublication_snapshot', 'sp_help_agent_profile', 
'sp_addpublisher70', 'sp_helparticle', 
+                       'sp_addpullsubscription', 'sp_helparticlecolumns', 
'sp_addpullsubscription_agent', 'sp_helparticledts', 
+                       'sp_addscriptexec', 'sp_helpdistpublisher', 
'sp_addsubscriber', 'sp_helpdistributiondb', 
+                       'sp_addsubscriber_schedule', 'sp_helpdistributor', 
'sp_addsubscription', 'sp_helpmergealternatepublisher', 
+                       'sp_addsynctriggers', 'sp_helpmergearticle', 
'sp_addtabletocontents', 'sp_helpmergearticlecolumn', 
+                       'sp_adjustpublisheridentityrange', 
'sp_helpmergearticleconflicts', 'sp_article_validation', 
+                       'sp_helpmergeconflictrows', 'sp_articlecolumn', 
'sp_helpmergedeleteconflictrows', 'sp_articlefilter', 
+                       'sp_helpmergefilter', 'sp_articlesynctranprocs', 
'sp_helpmergepublication', 'sp_articleview', 
+                       'sp_helpmergepullsubscription', 
'sp_attachsubscription', 'sp_helpmergesubscription', 'sp_browsesnapshotfolder', 
+                       'sp_helppublication', 'sp_browsemergesnapshotfolder', 
'sp_help_publication_access', 'sp_browsereplcmds', 
+                       'sp_helppullsubscription', 'sp_change_agent_parameter', 
'sp_helpreplfailovermode', 'sp_change_agent_profile', 
+                       'sp_helpreplicationdboption', 'sp_changearticle', 
'sp_helpreplicationoption', 'sp_changedistpublisher', 
+                       'sp_helpsubscriberinfo', 'sp_changedistributiondb', 
'sp_helpsubscription', 'sp_changedistributor_password', 
+                       'sp_ivindexhasnullcols', 
'sp_changedistributor_property', 'sp_helpsubscription_properties', 
'sp_changemergearticle', 
+                       'sp_link_publication', 'sp_changemergefilter', 
'sp_marksubscriptionvalidation', 'sp_changemergepublication', 
+                       'sp_mergearticlecolumn', 
'sp_changemergepullsubscription', 'sp_mergecleanupmetadata', 
'sp_changemergesubscription', 
+                       'sp_mergedummyupdate', 'sp_changepublication', 
'sp_mergesubscription_cleanup', 'sp_changesubscriber', 
+                       'sp_publication_validation', 
'sp_changesubscriber_schedule', 'sp_refreshsubscriptions', 
'sp_changesubscriptiondtsinfo', 
+                       'sp_reinitmergepullsubscription', 'sp_changesubstatus', 
'sp_reinitmergesubscription', 'sp_change_subscription_properties', 
+                       'sp_reinitpullsubscription', 
'sp_check_for_sync_trigger', 'sp_reinitsubscription', 'sp_copymergesnapshot', 
+                       'sp_removedbreplication', 'sp_copysnapshot', 
'sp_repladdcolumn', 'sp_copysubscription', 'sp_replcmds', 
+                       'sp_deletemergeconflictrow', 'sp_replcounters', 
'sp_disableagentoffload', 'sp_repldone', 'sp_drop_agent_parameter', 
+                       'sp_repldropcolumn', 'sp_drop_agent_profile', 
'sp_replflush', 'sp_droparticle', 'sp_replicationdboption', 
+                       'sp_dropanonymouseagent', 
'sp_replication_agent_checkup', 'sp_dropdistpublisher', 'sp_replqueuemonitor', 
+                       'sp_dropdistributiondb', 'sp_replsetoriginator', 
'sp_dropmergealternatepublisher', 'sp_replshowcmds', 
+                       'sp_dropdistributor', 'sp_repltrans', 
'sp_dropmergearticle', 'sp_restoredbreplication', 'sp_dropmergefilter', 
+                       'sp_revoke_publication_access', 
'sp_scriptsubconflicttable', 'sp_dropmergepublication', 
'sp_script_synctran_commands', 
+                       'sp_dropmergepullsubscription', 
'sp_setreplfailovermode', 'sp_showrowreplicainfo', 'sp_dropmergesubscription', 
+                       'sp_subscription_cleanup', 'sp_droppublication', 
'sp_table_validation', 'sp_droppullsubscription', 
+                       'sp_update_agent_profile', 'sp_dropsubscriber', 
'sp_validatemergepublication', 'sp_dropsubscription', 
+                       'sp_validatemergesubscription', 'sp_dsninfo', 
'sp_vupgrade_replication', 'sp_dumpparamcmd',
+
+                       //Security Procedures
+                       'sp_addalias', 'sp_droprolemember', 'sp_addapprole', 
'sp_dropserver', 'sp_addgroup', 'sp_dropsrvrolemember', 
+                       'sp_addlinkedsrvlogin', 'sp_dropuser', 'sp_addlogin', 
'sp_grantdbaccess', 'sp_addremotelogin', 
+                       'sp_grantlogin', 'sp_addrole', 'sp_helpdbfixedrole', 
'sp_addrolemember', 'sp_helpgroup', 
+                       'sp_addserver', 'sp_helplinkedsrvlogin', 
'sp_addsrvrolemember', 'sp_helplogins', 'sp_adduser', 
+                       'sp_helpntgroup', 'sp_approlepassword', 
'sp_helpremotelogin', 'sp_changedbowner', 'sp_helprole', 
+                       'sp_changegroup', 'sp_helprolemember', 
'sp_changeobjectowner', 'sp_helprotect', 'sp_change_users_login', 
+                       'sp_helpsrvrole', 'sp_dbfixedrolepermission', 
'sp_helpsrvrolemember', 'sp_defaultdb', 'sp_helpuser', 
+                       'sp_defaultlanguage', 'sp_MShasdbaccess', 
'sp_denylogin', 'sp_password', 'sp_dropalias', 'sp_remoteoption', 
+                       'sp_dropapprole', 'sp_revokedbaccess', 'sp_dropgroup', 
'sp_revokelogin', 'sp_droplinkedsrvlogin', 
+                       'sp_setapprole', 'sp_droplogin', 
'sp_srvrolepermission', 'sp_dropremotelogin', 'sp_validatelogins', 
'sp_droprole',
+
+                       //SQL Mail Procedures
+                       'sp_processmail', 'xp_sendmail', 'xp_deletemail', 
'xp_startmail', 'xp_findnextmsg', 'xp_stopmail', 'xp_readmail',
+
+                       //SQL Profiler Procedures
+                       'sp_trace_create', 'sp_trace_setfilter', 
'sp_trace_generateevent', 'sp_trace_setstatus', 'sp_trace_setevent',
+
+                       //SQL Server Agent Procedures
+                       'sp_add_alert', 'sp_help_jobhistory', 
'sp_add_category', 'sp_help_jobschedule', 'sp_add_job', 
+                       'sp_help_jobserver', 'sp_add_jobschedule', 
'sp_help_jobstep', 'sp_add_jobserver', 'sp_help_notification', 
+                       'sp_add_jobstep', 'sp_help_operator', 
'sp_add_notification', 'sp_help_targetserver', 
+                       'sp_add_operator', 'sp_help_targetservergroup', 
'sp_add_targetservergroup', 'sp_helptask', 
+                       'sp_add_targetsvrgrp_member', 
'sp_manage_jobs_by_login', 'sp_addtask', 'sp_msx_defect', 
+                       'sp_apply_job_to_targets', 'sp_msx_enlist', 
'sp_delete_alert', 'sp_post_msx_operation', 
+                       'sp_delete_category', 'sp_purgehistory', 
'sp_delete_job', 'sp_purge_jobhistory', 'sp_delete_jobschedule', 
+                       'sp_reassigntask', 'sp_delete_jobserver', 
'sp_remove_job_from_targets', 'sp_delete_jobstep', 
+                       'sp_resync_targetserver', 'sp_delete_notification', 
'sp_start_job', 'sp_delete_operator', 
+                       'sp_stop_job', 'sp_delete_targetserver', 
'sp_update_alert', 'sp_delete_targetservergroup', 
+                       'sp_update_category', 'sp_delete_targetsvrgrp_member', 
'sp_update_job', 'sp_droptask', 
+                       'sp_update_jobschedule', 'sp_help_alert', 
'sp_update_jobstep', 'sp_help_category', 
+                       'sp_update_notification', 'sp_help_downloadlist', 
'sp_update_operator', 'sp_helphistory', 
+                       'sp_update_targetservergroup', 'sp_help_job', 
'sp_updatetask', 'xp_sqlagent_proxy_account',
+
+                       //System Procedures
+                       'sp_add_data_file_recover_suspect_db', 
'sp_helpconstraint', 'sp_addextendedproc', 
+                       'sp_helpdb', 'sp_addextendedproperty', 'sp_helpdevice', 
'sp_add_log_file_recover_suspect_db', 
+                       'sp_helpextendedproc', 'sp_addmessage', 'sp_helpfile', 
'sp_addtype', 'sp_helpfilegroup', 
+                       'sp_addumpdevice', 'sp_helpindex', 'sp_altermessage', 
'sp_helplanguage', 'sp_autostats', 
+                       'sp_helpserver', 'sp_attach_db', 'sp_helpsort', 
'sp_attach_single_file_db', 'sp_helpstats', 
+                       'sp_bindefault', 'sp_helptext', 'sp_bindrule', 
'sp_helptrigger', 'sp_bindsession', 
+                       'sp_indexoption', 'sp_certify_removable', 
'sp_invalidate_textptr', 'sp_configure', 
+                       'sp_lock', 'sp_create_removable', 'sp_monitor', 
'sp_createstats', 'sp_procoption', 
+                       'sp_cycle_errorlog', 'sp_recompile', 
'sp_datatype_info', 'sp_refreshview', 'sp_dbcmptlevel', 
+                       'sp_releaseapplock', 'sp_dboption', 'sp_rename', 
'sp_dbremove', 'sp_renamedb', 
+                       'sp_delete_backuphistory', 'sp_resetstatus', 
'sp_depends', 'sp_serveroption', 'sp_detach_db', 
+                       'sp_setnetname', 'sp_dropdevice', 'sp_settriggerorder', 
'sp_dropextendedproc', 'sp_spaceused', 
+                       'sp_dropextendedproperty', 'sp_tableoption', 
'sp_dropmessage', 'sp_unbindefault', 'sp_droptype', 
+                       'sp_unbindrule', 'sp_executesql', 
'sp_updateextendedproperty', 'sp_getapplock', 'sp_updatestats', 
+                       'sp_getbindtoken', 'sp_validname', 'sp_help', 'sp_who',
+
+                       //Web Assistant Procedures
+                       'sp_dropwebtask', 'sp_makewebtask', 'sp_enumcodepages', 
'sp_runwebtask',
+
+                       //XML Procedures
+                       'sp_xml_preparedocument', 'sp_xml_removedocument',
+
+                       //General Extended Procedures
+                       'xp_cmdshellxp_logininfo', 'xp_enumgroups', 'xp_msver', 
'xp_findnextmsgxp_revokelogin', 
+                       'xp_grantlogin', 'xp_sprintf', 'xp_logevent', 
'xp_sqlmaint', 'xp_loginconfig', 'xp_sscanf',
+
+                       //API System Stored Procedures
+                       'sp_cursor', 'sp_cursorclose', 'sp_cursorexecute', 
'sp_cursorfetch', 'sp_cursoropen', 
+                       'sp_cursoroption', 'sp_cursorprepare', 
'sp_cursorunprepare', 'sp_execute', 'sp_prepare', 'sp_unprepare',
+
+                       //Misc
+                       'sp_createorphan', 'sp_droporphans', 
'sp_reset_connection', 'sp_sdidebug'
+                       ),
+               4 => array(
+                       //Function/sp's higlighted brown.
+                       'fn_helpcollations', 'fn_listextendedproperty ', 
'fn_servershareddrives', 
+                       'fn_trace_geteventinfo', 'fn_trace_getfilterinfo', 
'fn_trace_getinfo', 
+                       'fn_trace_gettable', 'fn_virtualfilestats',
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '!', '!=', '%', '&', '&&', '(', ')', '*', '+', '-', '/', '<', 
'<<', '<=', 
+               '<=>', '<>', '=', '>', '>=', '>>', '^', 'ALL', 'AND', 'ANY', 
'BETWEEN', 'CROSS', 
+               'EXISTS', 'IN', 'JOIN', 'LIKE', 'NOT', 'NULL', 'OR', 'OUTER', 
'SOME', '|', '||', '~'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0000FF;',
+                       2 => 'color: #FF00FF;',
+                       3 => 'color: #AF0000;',
+                       4 => 'color: #AF0000;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #008080;',
+                       'MULTI' => 'color: #008080;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #808080;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #FF0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #000;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #202020;',
+                       2 => 'color: #202020;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #808080;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/vb.php
===================================================================
RCS file: geshi/vb.php
diff -N geshi/vb.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/vb.php        25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,150 @@
+<?php
+/*************************************************************************************
+ * vb.php
+ * ------
+ * Author: Roberto Rossi (address@hidden)
+ * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel 
McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/08/30
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * Visual Basic language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/08/30 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ $language_data = array (
+       'LANG_NAME' => 'Visual Basic',
+       'COMMENT_SINGLE' => array(1 => "'"),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       'as', 'err', 'boolean', 'and', 'or', 'recordset', 
'unload', 'to',
+                       
'integer','long','single','new','database','nothing','set','close',
+                       
'open','print','split','line','field','querydef','instrrev',
+                       'abs','array','asc','ascb','ascw','atn','avg','me',
+                       
'cbool','cbyte','ccur','cdate','cdbl','cdec','choose','chr','chrb','chrw','cint','clng',
+                       
'command','cos','count','createobject','csng','cstr','curdir','cvar','cvdate','cverr',
+                       
'date','dateadd','datediff','datepart','dateserial','datevalue','day','ddb','dir','doevents',
+                       'environ','eof','error','exp',
+                       
'fileattr','filedatetime','filelen','fix','format','freefile','fv',
+                       
'getallstrings','getattr','getautoserversettings','getobject','getsetting',
+                       
'hex','hour','iif','imestatus','input','inputb','inputbox','instr','instb','int','ipmt',
+                       
'isarray','isdate','isempty','iserror','ismissing','isnull','isnumeric','isobject',
+                       
'lbound','lcase','left','leftb','len','lenb','loadpicture','loc','lof','log','ltrim',
+                       
'max','mid','midb','min','minute','mirr','month','msgbox',
+                       
'now','nper','npv','oct','partition','pmt','ppmt','pv','qbcolor',
+                       'rate','rgb','right','rightb','rnd','rtrim',
+                       
'second','seek','sgn','shell','sin','sln','space','spc','sqr','stdev','stdevp','str',
+                       'strcomp','strconv','string','switch','sum','syd',
+                       
'tab','tan','time','timer','timeserial','timevalue','trim','typename',
+                       
'ubound','ucase','val','var','varp','vartype','weekday','year',
+                       
'appactivate','base','beep','call','case','chdir','chdrive','const',
+                       
'declare','defbool','defbyte','defcur','defdate','defdbl','defdec','defint',
+                       
'deflng','defobj','defsng','defstr','deftype','defvar','deletesetting','dim','do',
+                       
'else','elseif','end','enum','erase','event','exit','explicit',
+                       
'false','filecopy','for','foreach','friend','function','get','gosub','goto',
+                       
'if','implements','kill','let','lineinput','lock','loop','lset','mkdir','name','next','not',
+                       
'onerror','on','option','private','property','public','put','raiseevent','randomize',
+                       'redim','rem','reset','resume','return','rmdir','rset',
+                       
'savepicture','savesetting','sendkeys','setattr','static','sub',
+                       
'then','true','type','unlock','wend','while','width','with','write',
+                       
'vbabort','vbabortretryignore','vbapplicationmodal','vbarray',
+                       
'vbbinarycompare','vbblack','vbblue','vbboolean','vbbyte','vbcancel',
+                       
'vbcr','vbcritical','vbcrlf','vbcurrency','vbcyan','vbdataobject',
+                       
'vbdate','vbdecimal','vbdefaultbutton1','vbdefaultbutton2',
+                       
'vbdefaultbutton3','vbdefaultbutton4','vbdouble','vbempty',
+                       
'vberror','vbexclamation','vbfirstfourdays','vbfirstfullweek',
+                       
'vbfirstjan1','vbformfeed','vbfriday','vbgeneraldate','vbgreen',
+                       
'vbignore','vbinformation','vbinteger','vblf','vblong','vblongdate',
+                       
'vblongtime','vbmagenta','vbmonday','vbnewline','vbno','vbnull',
+                       
'vbnullchar','vbnullstring','vbobject','vbobjecterror','vbok','vbokcancel',
+                       
'vbokonly','vbquestion','vbred','vbretry','vbretrycancel','vbsaturday',
+                       
'vbshortdate','vbshorttime','vbsingle','vbstring','vbsunday',
+                       
'vbsystemmodal','vbtab','vbtextcompare','vbthursday','vbtuesday',
+                       
'vbusesystem','vbusesystemdayofweek','vbvariant','vbverticaltab',
+                       
'vbwednesday','vbwhite','vbyellow','vbyes','vbyesno','vbyesnocancel',
+                       'vbnormal','vbdirectory'
+                       )
+               ),
+       'SYMBOLS' => array(
+               '(', ')'
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #b1b100;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #808080;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #66cc66;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099;'
+                       ),
+               'SCRIPT' => array(
+                       ),
+               'REGEXPS' => array(
+                       )
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/vbnet.php
===================================================================
RCS file: geshi/vbnet.php
diff -N geshi/vbnet.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/vbnet.php     25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,199 @@
+<?php
+/*************************************************************************************
+ * vbnet.php
+ * ---------
+ * Author: Alan Juden (address@hidden)
+ * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/06/04
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * VB.NET language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.0)
+ *  -  Initial release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+ $language_data = array (
+       'LANG_NAME' => 'vb.net',
+       'COMMENT_SINGLE' => array(1 => "'"),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       '3DDKSHADOW', '3DHIGHLIGHT', '3DLIGHT', 'ABORT', 
'ABORTRETRYIGNORE', 'ACTIVEBORDER',
+                       'ACTIVETITLEBAR', 'ALIAS', 'APPLICATIONMODAL', 
'APPLICATIONWORKSPACE', 'ARCHIVE',
+                       'BACK', 'BINARYCOMPARE', 'BLACK', 'BLUE', 'BUTTONFACE', 
'BUTTONSHADOW', 'BUTTONTEXT',
+                       'CANCEL', 'CDROM', 'CR', 'CRITICAL', 'CRLF', 'CYAN', 
'DEFAULT', 'DEFAULTBUTTON1',
+                       'DEFAULTBUTTON2', 'DEFAULTBUTTON3', 'DESKTOP', 
'DIRECTORY', 'EXCLAMATION', 'FALSE',
+                       'FIXED', 'FORAPPENDING', 'FORMFEED', 'FORREADING', 
'FORWRITING', 'FROMUNICODE',
+                       'GRAYTEXT', 'GREEN', 'HIDDEN', 'HIDE', 'HIGHLIGHT', 
'HIGHLIGHTTEXT', 'HIRAGANA',
+                       'IGNORE', 'INACTIVEBORDER', 'INACTIVECAPTIONTEXT', 
'INACTIVETITLEBAR', 'INFOBACKGROUND',
+                       'INFORMATION', 'INFOTEXT', 'KATAKANALF', 'LOWERCASE', 
'MAGENTA', 'MAXIMIZEDFOCUS',
+                       'MENUBAR', 'MENUTEXT', 'METHOD', 'MINIMIZEDFOCUS', 
'MINIMIZEDNOFOCUS', 'MSGBOXRIGHT',
+                       'MSGBOXRTLREADING', 'MSGBOXSETFOREGROUND', 'NARROW', 
'NEWLINE', 'NO', 'NORMAL',
+                       'NORMALFOCUS', 'NORMALNOFOCUS', 'NULLSTRING', 
'OBJECTERROR', 'OK', 'OKCANCEL', 'OKONLY',
+                       'PROPERCASE', 'QUESTION', 'RAMDISK', 'READONLY', 'RED', 
'REMOTE', 'REMOVABLE', 'RETRY',
+                       'RETRYCANCEL', 'SCROLLBARS', 'SYSTEMFOLDER', 
'SYSTEMMODAL', 'TAB', 'TEMPORARYFOLDER',
+                       'TEXTCOMPARE', 'TITLEBARTEXT', 'TRUE', 'UNICODE', 
'UNKNOWN', 'UPPERCASE', 'VERTICALTAB',
+                       'VOLUME', 'WHITE', 'WIDE', 'WIN16', 'WIN32', 
'WINDOWBACKGROUND', 'WINDOWFRAME',
+                       'WINDOWSFOLDER', 'WINDOWTEXT', 'YELLOW', 'YES', 
'YESNO', 'YESNOCANCEL'
+                       ),
+               2 => array(
+                       'As', 'ADDHANDLER', 'ASSEMBLY', 'AUTO', 'Binary', 
'ByRef', 'ByVal', 'BEGINEPILOGUE',
+                       'Else', 'Empty', 'Error', 'ENDPROLOGUE', 
'EXTERNALSOURCE', 'ENVIRON', 'For',
+                       'Friend', 'GET', 'HANDLES', 'Input', 'Is', 'Len', 
'Lock', 'Me', 'Mid', 'MUSTINHERIT',
+                       'MYBASE', 'MYCLASS', 'New', 'Next', 'Nothing', 'Null', 
'NOTINHERITABLE',
+                       'NOTOVERRIDABLE', 'OFF', 'On', 'Option', 'Optional', 
'OVERRIDABLE', 'ParamArray',
+                       'Print', 'Private', 'Property', 'Public', 'Resume', 
'Seek', 'Static', 'Step',
+                       'String', 'SHELL', 'SENDKEYS', 'SET', 'Then', 'Time', 
'To', 'THROW', 'WithEvents'
+                       ),
+               3 => array(
+                       'COLLECTION', 'DEBUG', 'DICTIONARY', 'DRIVE', 'DRIVES', 
'ERR', 'FILE', 'FILES',
+                       'FILESYSTEMOBJECT', 'FOLDER', 'FOLDERS', 'TEXTSTREAM'
+                       ),
+               4 => array(
+                       'BOOLEAN', 'BYTE', 'DATE', 'DECIMIAL', 'DOUBLE', 
'INTEGER', 'LONG', 'OBJECT',
+                       'SINGLE STRING'
+                       ),
+               5 => array(
+                       'ADDRESSOF', 'AND', 'BITAND', 'BITNOT', 'BITOR', 
'BITXOR',
+                       'GETTYPE', 'LIKE', 'MOD', 'NOT', 'ORXOR'
+                       ),
+               6 => array(
+                       'APPACTIVATE', 'BEEP', 'CALL', 'CHDIR', 'CHDRIVE', 
'CLASS', 'CASE', 'CATCH',
+                       'DECLARE', 'DELEGATE', 'DELETESETTING', 'DIM', 'DO', 
'DOEVENTS', 'END', 'ENUM',
+                       'EVENT', 'EXIT', 'EACH', 'FUNCTION', 'FINALLY', 'IF', 
'IMPORTS', 'INHERITS',
+                       'INTERFACE', 'IMPLEMENTS', 'KILL', 'LOOP', 'MIDB', 
'NAMESPACE', 'OPEN', 'PUT',
+                       'RAISEEVENT', 'RANDOMIZE', 'REDIM', 'REM', 'RESET', 
'SAVESETTING', 'SELECT',
+                       'SETATTR', 'STOP', 'SUB', 'SYNCLOCK', 'STRUCTURE', 
'SHADOWS', 'SWITCH',
+                       'TIMEOFDAY', 'TODAY', 'TRY', 'WIDTH', 'WITH', 'WRITE', 
'WHILE'
+                       ),
+               7 => array(
+                       'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 
'CBOOL', 'CBYTE', 'CCHAR',
+                       'CCHR', 'CDATE', 'CDBL', 'CDEC', 'CHOOSE', 'CHR', 
'CHR$', 'CHRB', 'CHRB$', 'CHRW',
+                       'CINT', 'CLNG', 'CLNG8', 'CLOSE', 'COBJ', 'COMMAND', 
'COMMAND$', 'CONVERSION',
+                       'COS', 'CREATEOBJECT', 'CSHORT', 'CSTR', 'CURDIR', 
'CTYPE', 'CVDATE', 'DATEADD',
+                       'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 
'DAY', 'DDB', 'DIR', 'DIR$',
+                       'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 
'FILEDATATIME', 'FILELEN', 'FILTER',
+                       'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 
'FORMATDATETIME', 'FORMATNUMBER',
+                       'FORMATPERCENT', 'FREEFILE', 'FV', 'GETALLSETTINGS', 
'GETATTRGETOBJECT', 'GETSETTING',
+                       'HEX', 'HEX$', 'HOUR', 'IIF', 'IMESTATUS', 'INPUT$', 
'INPUTB', 'INPUTB$', 'INPUTBOX',
+                       'INSTR', 'INSTRB', 'INSTRREV', 'INT', 'IPMT', 'IRR', 
'ISARRAY', 'ISDATE', 'ISEMPTY',
+                       'ISERROR', 'ISNULL', 'ISNUMERIC', 'ISOBJECT', 'JOIN', 
'LBOUND', 'LCASE', 'LCASE$',
+                       'LEFT', 'LEFT$', 'LEFTB', 'LEFTB$', 'LENB', 
'LINEINPUT', 'LOC', 'LOF', 'LOG', 'LTRIM',
+                       'LTRIM$', 'MID$', 'MIDB', 'MIDB$', 'MINUTE', 'MIRR', 
'MKDIR', 'MONTH', 'MONTHNAME',
+                       'MSGBOX', 'NOW', 'NPER', 'NPV', 'OCT', 'OCT$', 
'PARTITION', 'PMT', 'PPMT', 'PV',
+                       'RATE', 'REPLACE', 'RIGHT', 'RIGHT$', 'RIGHTB', 
'RIGHTB$', 'RMDIR', 'RND', 'RTRIM',
+                       'RTRIM$', 'SECOND', 'SIN', 'SLN', 'SPACE', 'SPACE$', 
'SPC', 'SPLIT', 'STR', 'STR$',
+                       'STRCOMP', 'STRCONV', 'STRING$', 'STRREVERSE', 'SYD', 
'TAB', 'TAN', 'TIMEOFDAY',
+                       'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 
'TRIM$', 'TYPENAME', 'UBOUND',
+                       'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 
'YEAR'
+                       ),
+               8 => array(
+                       'ANY', 'ATN', 'CALENDAR', 'CIRCLE', 'CURRENCY', 
'DEFBOOL', 'DEFBYTE', 'DEFCUR',
+                       'DEFDATE', 'DEFDBL', 'DEFDEC', 'DEFINT', 'DEFLNG', 
'DEFOBJ', 'DEFSNG', 'DEFSTR',
+                       'DEFVAR', 'EQV', 'GOSUB', 'IMP', 'INITIALIZE', 
'ISMISSING', 'LET', 'LINE', 'LSET',
+                       'RSET', 'SGN', 'SQR', 'TERMINATE', 'VARIANT', 
'VARTYPE', 'WEND'
+                       ),
+               ),
+       'SYMBOLS' => array(
+               '&', '&=', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', 
'=', '\\', '\\=',
+               '^', '^='
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false,
+               6 => false,
+               7 => false,
+               8 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #0600FF;',         //Constants
+                       2 => 'color: #FF8000;',         //Keywords
+                       3 => 'color: #008000;',         //Data Types
+                       4 => 'color: #FF0000;',         //Objects
+                       5 => 'color: #804040;',         //Operators
+                       6 => 'color: #0600FF;',         //Statements
+                       7 => 'color: #0600FF;',         //Functions
+                       8 => 'color: #0600FF;'          //Deprecated
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: #008080; font-style: italic;',
+                       'MULTI' => 'color: #008080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #008080; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #000000;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #808080;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #FF0000;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #0000FF;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #008000;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => 
'http://www.google.com/search?q={FNAME}+msdn.microsoft.com',
+               4 => ''
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 =>'.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>

Index: geshi/vhdl.php
===================================================================
RCS file: geshi/vhdl.php
diff -N geshi/vhdl.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/vhdl.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,140 @@
+<?php
+/*************************************************************************************
+ * vhdl.php
+ * --------
+ * Author: Alexander 'E-Razor' Krause (address@hidden)
+ * Copyright: (c) 2005 Alexander Krause
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2005/06/15
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ * 
+ * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for 
GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2006/06/15 (1.0.0)
+ *  -  First Release
+ *
+ * TODO
+ * ----
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ 
+$language_data = array (
+    'LANG_NAME' => 'VHDL',
+    'COMMENT_SINGLE' => array(1 => '--'),
+    'COMMENT_MULTI' => array(),
+    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+    'QUOTEMARKS' => array('"'),
+    'ESCAPE_CHAR' => '',
+    'KEYWORDS' => array(
+        /*keywords*/
+        1 => array(
+            'access','after','alias','all','assert','architecture','begin',
+            
'block','body','buffer','bus','case','component','configuration','constant',
+            
'disconnect','downto','else','elsif','end','entity','exit','file','for',
+            
'function','generate','generic','group','guarded','if','impure','in',
+            
'inertial','inout','is','label','library','linkage','literal','loop',
+            
'map','new','next','null','of','on','open','others','out','package',
+            
'port','postponed','procedure','process','pure','range','record','register',
+            
'reject','report','return','select','severity','signal','shared','subtype',
+            
'then','to','transport','type','unaffected','units','until','use','variable',
+            
'wait','when','while','with','note','warning','error','failure','and',
+            'or','xor','not','nor'
+        ),
+        /*types*/
+        2 => array(
+            
'bit','bit_vector','character','boolean','integer','real','time','string',
+            
'severity_level','positive','natural','signed','unsigned','line','text',
+            
'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state',
+            
'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength',
+            
'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector'
+        ),
+        /*operators*/
+        3 => array(
+                '=','<=',':=','=>','=='
+        )
+    ),
+    'SYMBOLS' => array(
+        '[', ']', '(', ')',';','<','>',':'
+    ),
+    'CASE_SENSITIVE' => array(
+        GESHI_COMMENTS => true,
+        1 => false,
+        2 => false
+        ),
+    'STYLES' => array(
+        'KEYWORDS' => array(
+            1 => 'color: #000000; font-weight: bold;',
+            2 => 'color: #aa0000;'
+            ),
+        'COMMENTS' => array(
+            1 => 'color: #adadad; font-style: italic;'
+            ),
+        'ESCAPE_CHAR' => array(
+            0 => 'color: #000099; font-weight: bold;'
+            ),
+        'BRACKETS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'STRINGS' => array(
+            0 => 'color: #7f007f;'
+            ),
+        'NUMBERS' => array(
+            0 => 'color: #ff0000;'
+            ),
+        'METHODS' => array(
+            ),
+        'SYMBOLS' => array(
+            0 => 'color: #66cc66;'
+            ),
+        'REGEXPS' => array(
+            0 => 'color: #ff0000;',
+            1 => 'color: #ff0000;',
+            2 => 'color: #ff0000;',
+            3 => 'color: #ff0000;'
+            ),
+        'SCRIPT' => array(
+            )
+        ),
+    'URLS' => array(
+        1 => '',
+        2 => ''
+    ),
+    'OOLANG' => false,
+    'OBJECT_SPLITTERS' => array(
+        ),
+    'REGEXPS' => array(
+        0 => '(\b(0x)[0-9a-fA-F]{2,}[hH]?|\b(0x)?[0-9a-fA-F]{2,}[hH])|'.
+        '(\b[0-9]{1,}((\.){1}[0-9]{1,}){0,1}(E)[\-]{0,1}[0-9]{1,})|'.
+         '(\b(ns))|'.
+         "('[0-9a-zA-Z]+)",
+         1 => "\b(''[0-9]'')"
+        ),
+    'STRICT_MODE_APPLIES' => GESHI_NEVER,
+    'SCRIPT_DELIMITERS' => array(
+        ),
+    'HIGHLIGHT_STRICT_BLOCK' => array(
+        )
+);
+ 
+?>

Index: geshi/visualfoxpro.php
===================================================================
RCS file: geshi/visualfoxpro.php
diff -N geshi/visualfoxpro.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/visualfoxpro.php      25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,444 @@
+<?php
+/*************************************************************************************
+ * visualfoxpro.php
+ * ----------------
+ * Author: Roberto Armellin (address@hidden)
+ * Copyright: (c) 2004 Roberto Armellin, Nigel McNie 
(http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/09/17
+ * Last Modified: 2004/09/18
+ *
+ * Visual FoxPro language file for GeSHi.
+ *
+ * CHANGES
+ * -------
+ * 2004/11/27 (1.0.1)
+ *  -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *  -  First Release
+ *
+ * TODO (updated 2004/10/27)
+ * -------------------------
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'Visual Fox Pro',
+       'COMMENT_SINGLE' => array(1 => "//", 2 => "\n*"),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array('"'),
+       'ESCAPE_CHAR' => '\\',
+       'KEYWORDS' => array(
+               1 => array('Case', 'Else', '#Else', 'Then',
+                       'Endcase', 'Enddefine', 'Enddo', 'Endfor', 'Endfunc', 
'Endif', 'Endprintjob',
+                       'Endproc', 'Endscan', 'Endtext', 'Endwith', '#Endif',
+                       '#Elif','#Else','#Endif','#Define','#If','#Include',
+                       
'#Itsexpression','#Readclauses','#Region','#Section','#Undef','#Wname',
+                       'Case','Define','Do','Else','Endcase','Enddefine',
+                       
'Enddo','Endfor','Endfunc','Endif','Endprintjob','Endproc',
+                       'Endscan','Endtext','Endwith','For','Function','Hidden',
+                       
'If','Local','Lparameter','Lparameters','Next','Otherwise',
+                       
'Parameters','Printjob','Procedure','Protected','Public','Scan',
+                       'Text','Then','While','With','?','??',
+                       '???','Abs','Accept','Access','Aclass','Acopy',
+                       
'Acos','Adatabases','Adbobjects','Addbs','Addrelationtoenv','Addtabletoenv',
+                       'Adel','Adir','Aelement','Aerror','Afields','Afont',
+                       
'Agetclass','Agetfileversion','Ains','Ainstance','Alen','Align',
+                       
'Alines','Alltrim','Alter','Amembers','Amouseobj','Anetresources',
+                       
'Ansitooem','Append','Aprinters','Ascan','Aselobj','Asin',
+                       
'Asort','Assert','Asserts','Assist','Asubscript','Asynchronous',
+                       'At_c','Atan','Atc','Atcc','Atcline','Atline',
+                       
'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average',
+                       
'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound',
+                       
'BinToC','Bintoc','Bitand','Bitclear','Bitlshift','Bitnot',
+                       'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof',
+                       
'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError',
+                       'CToBin','Calculate','Call','Capslock','Cd','Cdow',
+                       'Ceiling','Central','Change','Char','Chdir','Chr',
+                       'Chrsaw','Chrtran','Chrtranc','Close','Cmonth','Cntbar',
+                       
'Cntpad','Col','Comclassinfo','CommandTargetQuery','Compile','Completed',
+                       
'Compobj','Compute','Concat','ConnectBusy','ConnectHandle','ConnectName',
+                       
'ConnectString','ConnectTimeOut','ContainerReleaseType','Continue','Copy','Cos',
+                       
'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf',
+                       
'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline',
+                       
'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch',
+                       
'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctobin','Ctod','Ctot',
+                       
'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp',
+                       
'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable',
+                       
'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified',
+                       
'DB_KeyAndTimestamp','DB_KeyAndUpdatable','DB_LocalSQL','DB_NoPrompt','DB_Prompt','DB_RemoteSQL',
+                       
'DB_TransAuto','DB_TransManual','DB_TransNone','DB_Update','Datetime','Day',
+                       
'Dayname','Dayofmonth','Dayofweek','Dayofyear','Dbalias','Dbused',
+                       
'Ddeaborttrans','Ddeadvise','Ddeenabled','Ddeexecute','Ddeinitiate','Ddelasterror',
+                       
'Ddepoke','Dderequest','Ddesetoption','Ddesetservice','Ddesettopic','Ddeterminate',
+                       
'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees',
+                       
'DeleteTrigger','Desc','Description','Difference','Dimension','Dir',
+                       
'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll',
+                       'Dmy','DoDefault','DoEvents','Doc','Doevents','Dow',
+                       'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos',
+                       'Dtot','DynamicInputMask','Each','Edit','Eject','Elif',
+                       'End','Eof','Erase','Evaluate','Event','Eventtracking',
+                       'Exclude','Exclusive','Exit','Exp','Export','External',
+                       'FDate','FTime','Fchsize','Fclose','Fcount','Fcreate',
+                       
'Feof','Ferror','FetchMemo','FetchSize','Fflush','Fgets',
+                       'Filer','Filetostr','Find','Fklabel','Fkmax','Fldlist',
+                       'Flock','Floor','Flush','Fontmetric','Fopen','Forceext',
+                       
'Forcepath','FormSetClass','FormSetLib','FormsClass','FormsLib','Found',
+                       
'FoxPro','Foxcode','Foxdoc','Foxgen','Foxgraph','Foxview',
+                       'Fputs','Fread','French','Fseek','Fsize','Fv',
+                       'Fwrite','Gather','German','GetPem','Getbar','Getcolor',
+                       
'Getcp','Getdir','Getenv','Getexpr','Getfile','Getfldstate',
+                       
'Getfont','Gethost','Getnextmodified','Getobject','Getpad','Getpict',
+                       'Getprinter','Go','Gomonth','Goto','Graph','GridHorz',
+                       
'GridShow','GridShowPos','GridSnap','GridVert','Help','HelpOn',
+                       
'HelpTo','HighLightRow','Home','Hour','IMEStatus','IdleTimeOut',
+                       'Idxcollate','Ifdef','Ifndef','Iif','Import','Include',
+                       'Indbc','Index','Indexseek','Inkey','Inlist','Input',
+                       
'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte',
+                       
'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit',
+                       
'Isexclusive','Isflocked','Ishosted','Islower','Isreadonly','Isrlocked',
+                       
'Isupper','Italian','Japan','Join','Justdrive','Justext',
+                       
'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard'
+                       ),
+               2 => 
array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len',
+                       
'Lenc','Length','Likec','Lineno','LoadPicture','Loadpicture',
+                       'Locate','Locfile','Log','Log10','Logout','Lookup',
+                       'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords',
+                       'Mcol','Md','Mdown','Mdx','Mdy','Memlines',
+                       'Menu','Messagebox','Minute','Mkdir','Mline','Modify',
+                       'Month','Monthname','Mouse','Mrkbar','Mrkpad','Mrow',
+                       'Mtdll','Mton','Mwindow','Native','Ndx','Network',
+                       'NoFilter','Nodefault','Normalize','Note','Now','Ntom',
+                       
'NullString','Numlock','Nvl','ODBChdbc','ODBChstmt','OLEDropTextInsertion',
+                       
'OLELCid','Objnum','Objref','Objtoclient','Objvar','Occurs',
+                       
'Oemtoansi','Oldval','OlePublic','Olereturnerror','On','Open',
+                       'Oracle','Order','Os','Outer','PCount','Pack',
+                       'PacketSize','Padc','Padl','Padr','Payment','Pcol',
+                       'PemStatus','Pi','Pivot','Play','Pop','Popup',
+                       
'Power','PrimaryKey','Printstatus','Private','Prmbar','Prmpad',
+                       
'ProjectClick','Proper','Prow','Prtinfo','Push','Putfile',
+                       'Pv','Qpr','Quater','QueryTimeOut','Quit','Radians',
+                       'Rand','Rat','Ratc','Ratline','Rd','Rdlevel',
+                       
'Read','Readkey','Recall','Reccount','RecentlyUsedFiles','Recno',
+                       
'Recsize','Regional','Reindex','RelatedChild','RelatedTable','RelatedTag',
+                       
'Remove','Rename','Repeat','Replace','Replicate','Report',
+                       
'ResHeight','ResWidth','ResourceOn','ResourceTo','Resources','Restore',
+                       
'Resume','Retry','Return','Revertoffline','Rgbscheme','Rightc',
+                       'Rlock','Rmdir','Rollback','Round','Rtod','Rtrim',
+                       
'RuleExpression','RuleText','Run','Runscript','Rview','SQLAsynchronous',
+                       
'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect',
+                       
'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults',
+                       
'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime',
+                       
'Save','SavePicture','Savepicture','ScaleUnits','Scatter','Scols',
+                       'Scroll','Sec','Second','Seek','Select','SendUpdates',
+                       
'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls',
+                       
'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox',
+                       
'Skpbar','Skppad','Sort','Soundex','SourceName','Sqlcommit',
+                       
'Sqll','Sqlrollback','Sqlstringconnect','Sqrt','Srows','StatusBar',
+                       'Store','Str','Strconv','Strtofile','Strtran','Stuff',
+                       'Stuffc','Substr','Substrc','Substring','Sum','Suspend',
+                       
'Sys','Sysmetric','TabOrdering','Table','TableRefresh','Tablerevert',
+                       'Tableupdate','TagCount','TagNo','Tan','Target','This',
+                       
'Thisform','Thisformset','Timestamp','Timestampdiff','Total','Transactions',
+                       'Transform','Trim','Truncate','Ttoc','Ttod','Txnlevel',
+                       'Txtwidth','Type','Ucase','Undefine','Unlock','Unpack',
+                       
'Updatable','UpdatableFieldList','Update','UpdateName','UpdateNameList','UpdateTrigger',
+                       'UpdateType','Updated','Upper','Upsizing','Usa','Use',
+                       
'UseMemoSize','Used','Val','Validate','Varread','Vartype',
+                       
'Version','VersionLanguage','Wait','WaitTime','Wborder','Wchild',
+                       'Wcols','Week','Wexist','Wfont','WhereType','Windcmd',
+                       
'Windhelp','Windmemo','Windmenu','Windmodify','Windquery','Windscreen',
+                       
'Windsnip','Windstproc','WizardPrompt','Wlast','Wlcol','Wlrow',
+                       
'Wmaximum','Wminimum','Wontop','Woutput','Wparent','Wread',
+                       'Wrows','Wtitle','Wvisible','Year','Zap','_Alignment',
+                       
'_Asciicols','_Asciirows','_Assist','_Beautify','_Box','_Browser',
+                       
'_Builder','_Calcmem','_Calcvalue','_Cliptext','_Converter','_Coverage',
+                       
'_Curobj','_Dblclick','_Diarydate','_Dos','_Foxdoc','_Foxgraph',
+                       
'_Gallery','_Gengraph','_Genhtml','_Genmenu','_Genpd','_Genscrn',
+                       
'_Genxtab','_Getexpr','_Include','_Indent','_Lmargin','_Mac',
+                       
'_Mbr_appnd','_Mbr_cpart','_Mbr_delet','_Mbr_font','_Mbr_goto','_Mbr_grid',
+                       
'_Mbr_link','_Mbr_mode','_Mbr_mvfld','_Mbr_mvprt','_Mbr_seek','_Mbr_sp100',
+                       
'_Mbr_sp200','_Mbr_szfld','_Mbrowse','_Mda_appnd','_Mda_avg','_Mda_brow',
+                       
'_Mda_calc','_Mda_copy','_Mda_count','_Mda_label','_Mda_pack','_Mda_reprt',
+                       
'_Mda_rindx','_Mda_setup','_Mda_sort','_Mda_sp100','_Mda_sp200','_Mda_sp300',
+                       
'_Mda_sum','_Mda_total','_Mdata','_Mdiary','_Med_clear','_Med_copy',
+                       
'_Med_cut','_Med_cvtst','_Med_find','_Med_finda','_Med_goto','_Med_insob',
+                       
'_Med_link','_Med_obj','_Med_paste','_Med_pref','_Med_pstlk','_Med_redo',
+                       
'_Med_repl','_Med_repla','_Med_slcta','_Med_sp100','_Med_sp200','_Med_sp300',
+                       
'_Med_sp400','_Med_sp500','_Med_undo','_Medit','_Mfi_clall','_Mfi_close',
+                       
'_Mfi_export','_Mfi_import','_Mfi_new','_Mfi_open','_Mfi_pgset','_Mfi_prevu',
+                       
'_Mfi_print','_Mfi_quit','_Mfi_revrt','_Mfi_savas','_Mfi_save','_Mfi_send',
+                       
'_Mfi_setup','_Mfi_sp100','_Mfi_sp200','_Mfi_sp300','_Mfi_sp400','_Mfile',
+                       
'_Mfiler','_Mfirst','_Mlabel','_Mlast','_Mline','_Mmacro',
+                       
'_Mmbldr','_Mpr_beaut','_Mpr_cancl','_Mpr_compl','_Mpr_do','_Mpr_docum',
+                       
'_Mpr_formwz','_Mpr_gener','_Mpr_graph','_Mpr_resum','_Mpr_sp100','_Mpr_sp200',
+                       
'_Mpr_sp300','_Mpr_suspend','_Mprog','_Mproj','_Mrc_appnd','_Mrc_chnge',
+                       
'_Mrc_cont','_Mrc_delet','_Mrc_goto','_Mrc_locat','_Mrc_recal','_Mrc_repl',
+                       
'_Mrc_seek','_Mrc_sp100','_Mrc_sp200','_Mrecord','_Mreport','_Mrqbe',
+                       
'_Mscreen','_Msm_data','_Msm_edit','_Msm_file','_Msm_format','_Msm_prog',
+                       
'_Msm_recrd','_Msm_systm','_Msm_text','_Msm_tools','_Msm_view','_Msm_windo',
+                       
'_Mst_about','_Mst_ascii','_Mst_calcu','_Mst_captr','_Mst_dbase','_Mst_diary',
+                       
'_Mst_filer','_Mst_help','_Mst_hphow','_Mst_hpsch','_Mst_macro','_Mst_office',
+                       
'_Mst_puzzl','_Mst_sp100','_Mst_sp200','_Mst_sp300','_Mst_specl','_Msysmenu',
+                       
'_Msystem','_Mtable','_Mtb_appnd','_Mtb_cpart','_Mtb_delet','_Mtb_delrc',
+                       
'_Mtb_goto','_Mtb_link','_Mtb_mvfld','_Mtb_mvprt','_Mtb_props','_Mtb_recal',
+                       
'_Mtb_sp100','_Mtb_sp200','_Mtb_sp300','_Mtb_sp400','_Mtb_szfld','_Mwi_arran',
+                       
'_Mwi_clear','_Mwi_cmd','_Mwi_color','_Mwi_debug','_Mwi_hide','_Mwi_hidea',
+                       
'_Mwi_min','_Mwi_move','_Mwi_rotat','_Mwi_showa','_Mwi_size','_Mwi_sp100',
+                       
'_Mwi_sp200','_Mwi_toolb','_Mwi_trace','_Mwi_view','_Mwi_zoom','_Mwindow',
+                       
'_Mwizards','_Mwz_all','_Mwz_form','_Mwz_foxdoc','_Mwz_import','_Mwz_label',
+                       
'_Mwz_mail','_Mwz_pivot','_Mwz_query','_Mwz_reprt','_Mwz_setup','_Mwz_table',
+                       
'_Mwz_upsizing','_Netware','_Oracle','_Padvance','_Pageno','_Pbpage',
+                       
'_Pcolno','_Pcopies','_Pdparms','_Pdriver','_Pdsetup','_Pecode',
+                       
'_Peject','_Pepage','_Pform','_Plength','_Plineno','_Ploffset',
+                       
'_Ppitch','_Pquality','_Pretext','_Pscode','_Pspacing','_Pwait',
+                       
'_Rmargin','_Runactivedoc','_Samples','_Screen','_Shell','_Spellchk',
+                       
'_Sqlserver','_Startup','_Tabs','_Tally','_Text','_Throttle',
+                       
'_Transport','_Triggerlevel','_Unix','_WebDevOnly','_WebMenu','_WebMsftHomePage',
+                       
'_WebVFPHomePage','_WebVfpOnlineSupport','_Windows','_Wizard','_Wrap','_scctext',
+                       
'_vfp','Additive','After','Again','Aindent','Alignright',
+                       'All','Alt','Alternate','And','Ansi','Any',
+                       'Aplabout','App','Array','As','Asc','Ascending',
+                       'Ascii','At','Attributes','Automatic','Autosave','Avg',
+                       'Bar','Before','Bell','Between','Bitmap','Blank',
+                       
'Blink','Blocksize','Border','Bottom','Brstatus','Bucket',
+                       'Buffers','By','Candidate','Carry','Cascade','Catalog',
+                       'Cdx','Center','Century','Cga','Character','Check',
+                       'Classlib','Clock','Cnt','Codepage','Collate','Color',
+                       
'Com1','Com2','Command','Compact','Compatible','Compress',
+                       
'Confirm','Connection','Connections','Connstring','Console','Copies',
+                       
'Cpcompile','Cpdialog','Csv','Currency','Cycle','Databases',
+                       'Datasource','Date','Db4','Dbc','Dbf','Dbmemo3',
+                       
'Debug','Decimals','Defaultsource','Deletetables','Delimited','Delimiters',
+                       
'Descending','Design','Development','Device','Dif','Disabled',
+                       'Distinct','Dlls','Dohistory','Dos','Dosmem','Double',
+                       'Driver','Duplex','Echo','Editwork','Ega25','Ega43',
+                       
'Ems','Ems64','Encrypt','Encryption','Environment','Escape',
+                       'Events','Exact','Except','Exe','Exists','Expression',
+                       'Extended','F','Fdow','Fetch','Field','Fields',
+                       'File','Files','Fill','Fixed','Float','Foldconst',
+                       'Font','Footer','Force','Foreign','Fox2x','Foxplus',
+                       'Free','Freeze','From','Fullpath','Fw2','Fweek',
+                       'Get','Gets','Global','Group','Grow','Halfheight',
+                       
'Having','Heading','Headings','Helpfilter','History','Hmemory',
+                       'Hours','Id','In','Indexes','Information','Instruct',
+                       'Int','Integer','Intensity','Intersect','Into','Is',
+                       
'Isometric','Key','Keycolumns','Keycomp','Keyset','Last',
+                       'Ledit','Level','Library','Like','Linked','Lock',
+                       
'Logerrors','Long','Lpartition','Mac','Macdesktop','Machelp',
+                       'Mackey','Macros','Mark','Master','Max','Maxmem',
+                       'Mdi','Memlimit','Memory','Memos','Memowidth','Memvar',
+                       'Menus','Messages','Middle','Min','Minimize','Minus',
+                       'Mod','Modal','Module','Mono43','Movers','Multilocks',
+                       'Mvarsiz','Mvcount','N','Near','Negotiate','Noalias',
+                       
'Noappend','Noclear','Noclose','Noconsole','Nocptrans','Nodata',
+                       
'Nodebug','Nodelete','Nodup','Noedit','Noeject','Noenvironment',
+                       
'Nofloat','Nofollow','Nogrow','Noinit','Nolgrid','Nolink',
+                       
'Nolock','Nomargin','Nomdi','Nomenu','Nominimize','Nomodify'
+                       ),
+               3 => 
array('Nomouse','None','Nooptimize','Nooverwrite','Noprojecthook','Noprompt',
+                       
'Noread','Norefresh','Norequery','Norgrid','Norm','Normal',
+                       'Nosave','Noshadow','Noshow','Nospace','Not','Notab',
+                       
'Notify','Noupdate','Novalidate','Noverify','Nowait','Nowindow',
+                       'Nowrap','Nozoom','Npv','Null','Number','Objects',
+                       'Odometer','Of','Off','Oleobjects','Only','Optimize',
+                       
'Or','Orientation','Output','Outshow','Overlay','Overwrite',
+                       
'Pad','Palette','Paperlength','Papersize','Paperwidth','Password',
+                       'Path','Pattern','Pause','Pdox','Pdsetup','Pen',
+                       
'Pfs','Pixels','Plain','Popups','Precision','Preference',
+                       
'Preview','Primary','Printer','Printquality','Procedures','Production',
+                       
'Program','Progwork','Project','Prompt','Query','Random',
+                       
'Range','Readborder','Readerror','Record','Recover','Redit',
+                       
'Reference','References','Relative','Remote','Reprocess','Resource',
+                       'Rest','Restrict','Rgb','Right','Row','Rowset',
+                       'Rpd','Runtime','Safety','Same','Sample','Say',
+                       'Scale','Scheme','Scoreboard','Screen','Sdf','Seconds',
+                       'Selection','Shadows','Shared','Sheet','Shell','Shift',
+                       'Shutdown','Single','Some','Sortwork','Space','Sql',
+                       'Standalone','Status','Std','Step','Sticky','String',
+                       
'Structure','Subclass','Summary','Sylk','Sysformats','Sysmenus',
+                       'System','T','Tab','Tables','Talk','Tedit',
+                       'Textmerge','Time','Timeout','Titles','Tmpfiles','To',
+                       
'Topic','Transaction','Trap','Trbetween','Trigger','Ttoption',
+                       
'Typeahead','Udfparms','Union','Unique','Userid','Users',
+                       'Values','Var','Verb','Vga25','Vga50','Views',
+                       'Volume','Where','Windows','Wk1','Wk3','Wks',
+                       'Workarea','Wp','Wr1','Wrap','Wrk','Xcmdfile',
+                       'Xl5','Xl8','Xls','Y','Yresolution','Zoom',
+                       
'Activate','ActivateCell','Add','AddColumn','AddItem','AddListItem',
+                       
'AddObject','AddProperty','AddToSCC','AfterBuild','AfterCloseTables','AfterDock',
+                       
'AfterRowColChange','BeforeBuild','BeforeDock','BeforeOpenTables','BeforeRowColChange','Box',
+                       
'Build','CheckIn','CheckOut','Circle','Clear','ClearData',
+                       
'Cleanup','Click','CloneObject','CloseEditor','CloseTables','Cls',
+                       
'CommandTargetExec','CommandTargetQueryStas','ContainerRelease','DataToClip','DblClick','Deactivate',
+                       
'Delete','DeleteColumn','Deleted','Destroy','DoCmd','Dock',
+                       
'DoScroll','DoVerb','DownClick','Drag','DragDrop','DragOver',
+                       
'DropDown','Draw','EnterFocus','Error','ErrorMessage','Eval',
+                       
'ExitFocus','FormatChange','GetData','GetFormat','GetLatestVersion','GoBack',
+                       
'GotFocus','GoForward','GridHitTest','Hide','HideDoc','IndexToItemId',
+                       
'Init','InteractiveChange','Item','ItemIdToIndex','KeyPress','Line',
+                       
'Load','LostFocus','Message','MiddleClick','MouseDown','MouseMove',
+                       
'MouseUp','MouseWheel','Move','Moved','NavigateTo','Newobject',
+                       
'OLECompleteDrag','OLEDrag','OLEDragDrop','OLEDragOver','OLEGiveFeedback','OLESetData',
+                       
'OLEStartDrag','OpenEditor','OpenTables','Paint','Point','Print',
+                       
'ProgrammaticChange','PSet','QueryAddFile','QueryModifyFile','QueryRemoveFile','QueryRunFile',
+                       
'QueryUnload','RangeHigh','RangeLow','ReadActivate','ReadExpression','ReadDeactivate',
+                       
'ReadMethod','ReadShow','ReadValid','ReadWhen','Refresh','Release',
+                       
'RemoveFromSCC','RemoveItem','RemoveListItem','RemoveObject','Requery','RequestData',
+                       
'Reset','ResetToDefault','Resize','RightClick','SaveAs','SaveAsClass',
+                       
'Scrolled','SetAll','SetData','SetFocus','SetFormat','SetMain',
+                       
'SetVar','SetViewPort','ShowDoc','ShowWhatsThis','TextHeight','TextWidth',
+                       
'Timer','UIEnable','UnDock','UndoCheckOut','Unload','UpClick',
+                       
'Valid','WhatsThisMode','When','WriteExpression','WriteMethod','ZOrder',
+                       
'ATGetColors','ATListColors','Accelerate','ActiveColumn','ActiveControl','ActiveForm',
+                       
'ActiveObjectId','ActivePage','ActiveProject','ActiveRow','AddLineFeeds','Alias',
+                       
'Alignment','AllowAddNew','AllowHeaderSizing','AllowResize','AllowRowSizing','AllowTabs',
+                       
'AlwaysOnTop','Application','AutoActivate','AutoCenter','AutoCloseTables','AutoIncrement',
+                       
'AutoOpenTables','AutoRelease','AutoSize','AutoVerbMenu','AutoYield','AvailNum',
+                       
'BackColor','BackStyle','BaseClass','BorderColor','BorderStyle','BorderWidth',
+                       
'Bound','BoundColumn','BoundTo','BrowseAlignment','BrowseCellMarg','BrowseDestWidth',
+                       
'BufferMode','BufferModeOverride','BuildDateTime','ButtonCount','ButtonIndex','Buttons',
+                       
'CLSID','CanAccelerate','CanGetFocus','CanLoseFocus','Cancel','Caption',
+                       
'ChildAlias','ChildOrder','Class','ClassLibrary','ClipControls','ClipRect',
+                       
'Closable','ColorScheme','ColorSource','ColumnCount','ColumnHeaders','ColumnLines',
+                       
'ColumnOrder','ColumnWidths','Columns','Comment','ContinuousScroll','ControlBox',
+                       
'ControlCount','ControlIndex','ControlSource','Controls','CurrentControl','CurrentX',
+                       
'CurrentY','CursorSource','Curvature','DataSession','DataSessionId','DataSourceObj',
+                       
'DataType','Database','DateFormat','DateMark','DefButton','DefButtonOrig',
+                       
'DefHeight','DefLeft','DefTop','DefWidth','Default','DefaultFilePath',
+                       
'DefineWindows','DeleteMark','Desktop','Dirty','DisabledBackColor','DisabledByEOF',
+                       
'DisabledForeColor','DisabledItemBackColor','DisabledItemForeColor','DisabledPicture','DispPageHeight','DispPageWidth',
+                       
'DisplayCount','DisplayValue','DoCreate','DockPosition','Docked','DocumentFile',
+                       
'DownPicture','DragIcon','DragMode','DragState','DrawMode','DrawStyle',
+                       
'DrawWidth','DynamicAlignment','DynamicBackColor','DynamicCurrentControl','DynamicFontBold','DynamicFontItalic',
+                       
'DynamicFontName','DynamicFontOutline','DynamicFontShadow','DynamicFontSize','DynamicFontStrikethru','DynamicFontUnderline',
+                       
'DynamicForeColor','EditFlags','Enabled','EnabledByReadLock','Encrypted','EnvLevel',
+                       
'ErasePage','FileClass','FileClassLibrary','FillColor','FillStyle','Filter',
+                       
'FirstElement','FontBold','FontItalic','FontName','FontOutline','FontShadow',
+                       
'FontSize','FontStrikethru','FontUnderline','ForceFocus','ForeColor','FormCount',
+                       
'FormIndex','FormPageCount','FormPageIndex','Format','Forms','FoxFont',
+                       
'FullName','GoFirst','GoLast','GridLineColor','GridLineWidth','GridLines'
+                       ),
+               4 => 
array('HPROJ','HWnd','HalfHeightCaption','HasClip','HeaderGap','HeaderHeight',
+                       
'Height','HelpContextID','HideSelection','Highlight','HomeDir','HostName',
+                       
'HotKey','HscrollSmallChange','IMEMode','Icon','IgnoreInsert','InResize',
+                       
'Increment','IncrementalSearch','InitialSelectedAlias','InputMask','Instancing','IntegralHeight',
+                       
'Interval','ItemBackColor','ItemData','ItemForeColor','ItemIDData','ItemTips',
+                       
'JustReadLocked','KeyPreview','KeyboardHighValue','KeyboardLowValue','LastModified','Left',
+                       
'LeftColumn','LineSlant','LinkMaster','List','ListCount','ListIndex',
+                       
'ListItem','ListItemId','LockDataSource','LockScreen','MDIForm','MainClass',
+                       
'MainFile','Margin','MaxButton','MaxHeight','MaxLeft','MaxLength',
+                       
'MaxTop','MaxWidth','MemoWindow','MinButton','MinHeight','MinWidth',
+                       
'MouseIcon','MousePointer','Movable','MoverBars','MultiSelect','Name',
+                       
'NapTime','NewIndex','NewItemId','NoDataOnLoad','NoDefine','NotifyContainer',
+                       
'NullDisplay','NumberOfElements','OLEDragMode','OLEDragPicture','OLEDropEffects','OLEDropHasData',
+                       
'OLEDropMode','OLERequestPendingTimeOut','OLEServerBusyRaiseError','OLEServerBusyTimeOut','OLETypeAllowed','OleClass',
+                       
'OleClassId','OleControlContainer','OleIDispInValue','OleIDispOutValue','OleIDispatchIncoming','OleIDispatchOutgoing',
+                       
'OnResize','OneToMany','OpenViews','OpenWindow','PageCount','PageHeight',
+                       
'PageOrder','PageWidth','Pages','Panel','PanelLink','Parent',
+                       
'ParentAlias','ParentClass','Partition','PasswordChar','Picture','ProcessID',
+                       
'ProgID','ProjectHookClass','ProjectHookLibrary','Projects','ReadColors','ReadCycle',
+                       
'ReadFiller','ReadLock','ReadMouse','ReadOnly','ReadSave','ReadSize',
+                       
'ReadTimeout','RecordMark','RecordSource','RecordSourceType','Rect','RelationalExpr',
+                       
'RelativeColumn','RelativeRow','ReleaseErase','ReleaseType','ReleaseWindows','Resizable',
+                       
'RightToLeft','RowHeight','RowSource','RowSourceType','SCCProvider','SCCStatus',
+                       
'SDIForm','ScaleMode','ScrollBars','SelLength','SelStart','SelText',
+                       
'SelectOnEntry','Selected','SelectedBackColor','SelectedForeColor','SelectedID','SelectedItemBackColor',
+                       
'SelectedItemForeColor','SelfEdit','ServerClass','ServerClassLibrary','ServerHelpFile','ServerName',
+                       
'ServerProject','ShowTips','ShowWindow','Sizable','Size<height>','Size<maxlength>',
+                       
'Size<width>','Skip','SkipForm','Sorted','SourceType','Sparse',
+                       
'SpecialEffect','SpinnerHighValue','SpinnerLowValue','SplitBar','StartMode','StatusBarText',
+                       
'Stretch','StrictDateEntry','Style','SystemRefCount','TabIndex','TabStop',
+                       
'TabStretch','TabStyle','Tabhit','Tabs','Tag','TerminateRead',
+                       
'ThreadID','TitleBar','ToolTipText','Top','TopIndex','TopItemId',
+                       
'TypeLibCLSID','TypeLibDesc','TypeLibName','UnlockDataSource','Value','ValueDirty',
+                       
'VersionComments','VersionCompany','VersionCopyright','VersionDescription','VersionNumber','VersionProduct',
+                       
'VersionTrademarks','View','ViewPortHeight','ViewPortLeft','ViewPortTop','ViewPortWidth',
+                       
'Visible','VscrollSmallChange','WasActive','WasOpen','WhatsThisButton','WhatsThisHelp',
+                       
'WhatsThisHelpID','Width','WindowList','WindowNTIList','WindowState','WindowType',
+                       
'WordWrap','ZOrderSet','ActiveDoc','Checkbox','Column','ComboBox',
+                       
'CommandButton','CommandGroup','Container','Control','Cursor','Custom',
+                       
'DataEnvironment','EditBox','Empty','FontClass','Form','Formset',
+                       'General','Grid','Header','HyperLink','Image','Label',
+                       
'ListBox','Memo','OleBaseControl','OleBoundControl','OleClassIDispOut','OleControl',
+                       
'OptionButton','OptionGroup','Page','PageFrame','ProjectHook','RectClass',
+                       'Relation','Session','Shape','Spinner','TextBox' 
,'Toolbar'
+                       ),
+               ),
+       'SYMBOLS' => array("!", "@", "$", "%", "(", ")", "-", "+", "=", "/", 
"{", "}", "[", "]", ":", ";", ",", "       ", ".", "*", "&"),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => true,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: blue;',
+                       2 => 'color: blue;',
+                       3 => 'color: blue;',
+                       4 => 'color: blue;'
+                       ),
+               'COMMENTS' => array(
+                       1 => 'color: green; font-style: italic;',
+                       2 => 'color: green font-style: italic;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: blue;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       1 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: blue;'
+                       ),
+               'REGEXPS' => array(
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'OOLANG' => true,
+       'OBJECT_SPLITTERS' => array(
+               1 => '.'
+               ),
+       'REGEXPS' => array(
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_NEVER,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+
+?>
\ No newline at end of file

Index: geshi/winbatch.php
===================================================================
RCS file: geshi/winbatch.php
diff -N geshi/winbatch.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/winbatch.php  25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,371 @@
+<?php
+/*************************************************************************************
+ * winbatch.php
+ * ------------
+ * Author: Craig Storey (address@hidden)
+ * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2006/05/19
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * WinBatch language file for GeSHi.
+ *
+ * WinBatch is a Windows scripting language - www.winbatch.com.
+ * The keywords were pulled from the winbatch/system/WIL.clr file for v2005G.
+ * Not all extender functions are added, but a very large set of the most 
common.
+ *
+ * CHANGES
+ * -------
+ * 2006/05/05 (1.0.0)
+ *  -  First Release
+ * 
+ * TODO (updated 2004/07/14)
+ * -------------------------
+ * - Right now any ':Subroutine' is treated as a comment. This highlights the 
+ *   Subroutine's name, but it's not a perfect fix. I should use a RegEx in 
+ *   GeSHI_Search&Replace features..
+ * - Update the list of extender functions.
+ * - Use a regular expression to comment UDFs that start with 'udf_'.
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+ 
+$language_data = array (
+       'LANG_NAME' => 'Winbatch',
+       'COMMENT_SINGLE' => array(1 => ';', 2 => ':'),
+       'COMMENT_MULTI' => array(),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"', '`'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               1 => array(
+                       'While', 'To', 'Then', 'Switch', 'Select', 'Return', 
'Next', 'IntControl', 'Include', 'In', 'If', 
+                       'Goto', 'GoSub', 'ForEach', 'For', 'Exit', 'Execute', 
'ErrorMode', 'EndWhile', 'EndSwitch', '#EndSubRoutine', 
+                       'EndSelect', 'EndIf', '#EEndFunction', 'EndFor', 'End', 
'Else', 'DropWild', 'Drop', '#DefineSubRoutine', 
+                       '#DefineFunction', 'Debug', 'Continue', 'Case', 
'CallExt', 'Call', 'By', 'BreakPoint', 'Break'
+                       ),
+               2 => array(
+                       'ZOOMED', 'YES', 'WORD4', 'WORD2', 'WORD1', 
'WHOLESECTION', 'WAIT', 'UNSORTED', 'UNCHECK', 'TRUE', 'TILE', 
+                       'TAB', 'STRING', 'STACK', 'SPC2NET', 'SORTED', 'SOK', 
'SNET2PC', 'SINGLE', 'SHIFT', 'SERVER', 'SERRWINSOCK', 
+                       'SERRVOICE', 'SERRSOCKET', 'SERRSERVICE', 'SERRSELECT', 
'SERRPARAM', 'SERROUTOFMEM', 'SERRNOTFOUND', 'SERRNOCONN', 
+                       'SERRNOANSWER', 'SERRMUSTWAIT', 'SERRIPADDR', 
'SERRHOSTNAME', 'SERRFAILURE', 'SERRBUSY', 'SCROLLLOCK', 'SCANCEL', 
+                       'SAVE', 'SALREADY', 'ROWS', 'REGUSERS', 'REGROOT', 
'REGMACHINE', 'REGCURRENT', 'REGCLASSES', 'RDBLCLICK', 'RCLICK', 
+                       'RBUTTON', 'RAD2DEG', 'QSUCCESSINFO', 'QSUCCESS', 
'QSTILLEX', 'QROLLBACK', 'QNULL', 'QNODATA', 'QNEXT', 'QNEEDDATA', 
+                       'QFIRST', 'QCOMMIT', 'QBADHANDLE', 'PRINTER', 
'PLANCKJOULES', 'PLANCKERGS', 'PI', 'PARSEONLY', 'PARSEC', 'P3ERRREPLY', 
+                       'OPEN', 'ON', 'OFF', 'NUMLOCK', 'NOWAIT', 'NOTIFY', 
'NORMAL', 'NORESIZE', 'NONE', 'NO', 'NCSAFORMAT', 'MULTIPLE', 
+                       'MSFORMAT', 'MPLAYRDBLCK', 'MPLAYRCLK', 'MPLAYRBUTTON', 
'MPLAYMDBLCK', 'MPLAYMCLK', 'MPLAYMBUTTON', 'MPLAYLDBLCK', 
+                       'MPLAYLCLK', 'MPLAYLBUTTON', 'MINOR', 'MDBLCLICK', 
'MCLICK', 'MBYESNO', 'MBUTTON', 'MBOKCANCEL', 'MAJOR', 'MAGFIELD', 
+                       'LOCALGROUP', 'LIGHTMTPS', 'LIGHTMPS', 'LF', 
'LDBLCLICK', 'LCLICK', 'LBUTTON', 'LAFFDBERROR', 'ICON', 'HTTPS', 'HTTP', 
+                       'HNOHEADER', 'HMETHODPOST', 'HMETHODGET', 'HIDDEN', 
'HHEADERONLY', 'HHEADER', 'GRAVITATION', 'GOPHER', 'GOLDENRATIO', 
+                       'GMTSEC', 'GLOBALGROUP', 'GFTSEC', 'GETPROCID', 
'GETEXITCODE', 'FWDSCAN', 'FTPPASSIVE', 'FTP', 'FLOAT8', 'FARADAY', 
+                       'FALSE', 'EXTENDED', 'EULERS', 'ENABLE', 'ELECTRIC', 
'DRIVE', 'DISABLE', 'DESCENDING', 'DEG2RAD', 'DEFAULT', 'CTRL', 
+                       'CRLF', 'CR', 'COMMONFORMAT', 'COLUMNS', 'CHECK', 
'CAPSLOCK', 'CANCEL', 'BOLTZMANN', 'BACKSCAN', 'AVOGADRO', 'ATTR_X', 
+                       'ATTR_T', 'ATTR_SY', 'ATTR_SH', 'ATTR_RO', 'ATTR_RI', 
'ATTR_P', 'ATTR_IC', 'ATTR_H', 'ATTR_DM', 'ATTR_DI', 'ATTR_DC', 
+                       'ATTR_CI', 'ATTR_A', 'ASCENDING', 'ARRANGE', 'AMC', 
'ACC_WRITE', 'ACC_READ_NT', 'ACC_READ_95', 'ACC_READ', 'ACC_PRINT_NT', 
+                       'ACC_PMANG_NT', 'ACC_PFULL_NT', 'ACC_LIST', 
'ACC_FULL_NT', 'ACC_FULL_95', 'ACC_DELETE', 'ACC_CREATE', 'ACC_CONTROL', 
+                       'ACC_CHNG_NT', 'ACC_ATTRIB', 'ABOVEICONS'               
        
+                       ),
+               3 => array(
+                       'Yields', 'Yield', 'WinZoom', 'WinWaitExist', 
'WinWaitClose', 'WinWaitChild', 'WinVersion', 'WinTitle', 'WinSysInfo', 
+                       'WinState', 'WinShow', 'WinResources', 
'WinPositionChild', 'WinPosition', 'WinPlaceSet', 'WinPlaceGet', 
'WinPlaceChild', 
+                       'WinPlace', 'WinParmSet', 'WinParmGet', 'WinName', 
'WinMetrics', 'WinItemProcId', 'WinItemNameId', 'WinItemizeEx', 
+                       'WinItemize', 'WinItemChild', 'WinIsDos', 'WinIdGet', 
'WinIconize', 'WinHide', 'WinHelp', 'WinGetactive', 'WinExistchild', 
+                       'WinExist', 'WinExename', 'WinConfig', 'WinClosenot', 
'WinClose', 'WinArrange', 'WinActivechild', 'WinActivchild', 
+                       'WinActivate', 'WebVerifyCard', 'WebSetTimeout', 
'WebParamSize', 'WebParamNames', 'WebParamFile', 'WebParamData', 
+                       'WebParamBuf', 'WebOutFile', 'WebOutBinary', 'WebOut', 
'WebDumpError', 'WebDatData', 'WebCounter', 'WebConSize', 'WebConData', 
+                       'WebConBuf', 'WebCmdData', 'WebBaseConv', 'Wallpaper', 
'WaitForKeyEX', 'WaitForKey', 'VersionDLL', 'Version', 'VarType', 
+                       'TimeYmdHms', 'TimeWait', 'TimeSubtract', 
'TimeJulToYmd', 'TimeJulianDay', 'TimeDiffSecs', 'TimeDiffDays', 'TimeDiff', 
'TimeDelay', 
+                       'TimeDate', 'TimeAdd', 'TextSelect', 'TextBoxSort', 
'TextBox', 'Terminate', 'Tanh', 'Tan', 'SysParamInfo', 'SvcWaitForCmd', 
+                       'SvcSetState', 'SvcSetAccept', 'StrUpper', 'StrTrim', 
'StrSubWild', 'StrSub', 'StrScan', 'StrReplace', 'StrLower', 'StrLenWild', 
+                       'StrLen', 'StrIndexWild', 'StrIndexNC', 'StrIndex', 
'StriCmp', 'StrFixLeft', 'StrFixCharsL', 'StrFixChars', 'StrFix', 'StrFill', 
+                       'StrCnt', 'StrCmp', 'StrClean', 'StrCharCount', 
'StrCat', 'StrByteCount', 'Sqrt', 'SoundVolume', 'Sounds', 'Snapshot', 'Sinh', 
'Sin', 
+                       'ShortCutMake', 'ShortCutInfo', 'ShortCutExtra', 
'ShortCutEdit', 'ShortCutDir', 'ShellExecute', 'SendMenusToEx', 'SendMenusTo', 
+                       'SendKeysTo', 'SendKeysChild', 'SendKey', 
'RunZoomWait', 'RunZoom', 'RunWithLogon', 'RunWait', 'RunShell', 'RunIconWait', 
+                       'RunIcon', 'RunHideWait', 'RunHide', 'RunExit', 
'RunEnviron', 'Run', 'RtStatus', 'Reload', 'RegUnloadHive', 'RegSetValue', 
+                       'RegSetQword', 'RegSetMulSz', 'RegSetExpSz', 
'RegSetEx', 'RegSetDword', 'RegSetBin', 'RegQueryValue', 'RegQueryStr', 
+                       'RegQueryQword', 'RegQueryMulSz', 'RegQueryKeys', 
'RegQueryKeyLastWriteTime', 'RegQueryKey', 'RegQueryItem', 'RegQueryExpSz', 
+                       'RegQueryEx', 'RegQueryDword', 'RegQueryBin', 
'RegOpenKeyEx', 'RegOpenKey', 'RegOpenFlags', 'RegLoadHive', 'RegExistValue', 
+                       'RegExistKey', 'RegEntryType', 'RegDelValue', 
'RegDeleteKey', 'RegCreateKey', 'RegConnect', 'RegCloseKey', 'RegApp', 
'Random', 
+                       'PtrPersistent', 'PtrGlobalDefine', 'PtrGlobal', 
'Print', 'PlayWaveform', 'PlayMidi', 'PlayMedia', 'PipeServerWrite', 
'PipeServerRead', 
+                       'PipeServerCreate', 'PipeServerClose', 'PipeInfo', 
'PipeClientSendRecvData', 'PipeClientOpen', 'PipeClientClose', 'Pause', 
+                       'ParseData', 'ObjectTypeGet', 'ObjectType', 
'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'objecteventremove', 
'ObjectEventAdd', 
+                       'objecteventadd', 'ObjectCreate', 'ObjectConstToArray', 
'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext', 
+                       'ObjectCollectionClose', 'ObjectClose', 'ObjectAccess', 
'Num2Char', 'NetInfo', 'MsgTextGet', 'MousePlay', 'MouseMove', 'MouseInfo', 
+                       'MouseDrag', 'MouseCoords', 'MouseClickBtn', 
'MouseClick', 'mod', 'Min', 'Message', 'Max', 'Loge', 'LogDisk', 'Log10', 
'LastError', 
+                       'KeyToggleSet', 'KeyToggleGet', 'ItemSortNc', 
'ItemSort', 'ItemSelect', 'ItemReplace', 'ItemRemove', 'ItemLocate', 
'ItemInsert', 
+                       'ItemExtractCSV', 'ItemExtract', 'ItemCountCSV', 
'ItemCount', 'IsNumber', 'IsLicensed', 'IsKeyDown', 'IsInt', 'IsFloat', 
'IsDefined', 
+                       'Int', 'InstallFile', 'IniWritePvt', 'IniWrite', 
'IniReadPvt', 'IniRead', 'IniItemizePvt', 'IniItemize', 'IniDeletePvt', 
'IniDelete', 
+                       'IgnoreInput', 'IconReplace', 'IconInfo', 
'IconExtract', 'IconArrange', 'GetTickCount', 'GetObject', 'GetExactTime', 
'Floor', 
+                       'FindWindow', 'FileYmdHms', 'FileWrite', 'FileVerInfo', 
'FileTimeTouch', 'FileTimeSetEx', 'FileTimeSet', 'FileTimeGetEx', 
+                       'FileTimeGet', 'FileTimeCode', 'FileSizeEx', 
'FileSize', 'FileRoot', 'FileRename', 'FileRead', 'FilePutW', 'FilePut', 
'FilePath', 
+                       'FileOpen', 'FileNameShort', 'FileNameLong', 
'FileNameEval2', 'FileNameEval1', 'FileMoveAttr', 'FileMove', 'FileMapName', 
+                       'FileLocate', 'FileItemPath', 'FileItemize', 
'FileInfoToArray', 'FileGetW', 'FileGet', 'FileFullname', 'FileExtension', 
'FileExist', 
+                       'FileDelete', 'FileCreateTemp', 'FileCopyAttr', 
'FileCopy', 'FileCompare', 'FileClose', 'FileBaseName', 'FileAttrSetEx', 
+                       'FileAttrSet', 'FileAttrGetEx', 'FileAttrGet', 
'FileAppend', 'Fabs', 'ExtractAttachedFile', 'Exp', 'ExeTypeInfo', 'Exclusive', 
+                       'EnvItemize', 'EnvironSet', 'Environment', 
'EndSession', 'DosVersion', 'DllLoad', 'DllLastError', 'DllHwnd', 'DllHinst', 
+                       'DllFree', 'DllCallCDecl', 'DllCall', 'Display', 
'DiskVolinfo', 'DiskSize', 'DiskScan', 'DiskInfo', 'DiskFree', 'DiskExist', 
+                       'DirWindows', 'DirSize', 'DirScript', 'DirRename', 
'DirRemove', 'DirMake', 'DirItemize', 'DirInfoToArray', 'DirHome', 'DirGet', 
+                       'DirExist', 'DirChange', 'DirAttrSetEx', 'DirAttrSet', 
'DirAttrGetEx', 'DirAttrGet', 'DialogProcOptions', 'DialogObject', 
+                       'DialogControlState', 'DialogControlSet', 
'DialogControlGet', 'DialogBox', 'Dialog', 'Delay', 'Decimals', 'DebugTrace', 
+                       'DebugData', 'DDETimeout', 'DDETerminate', 
'DDERequest', 'DDEPoke', 'DDEInitiate', 'DDEExecute', 'DateTime', 
'CurrFilepath', 
+                       'CurrentPath', 'CurrentFile', 'CreateObject', 'Cosh', 
'Cos', 'ClipPut', 'ClipHasFormat', 'ClipGetEx', 'ClipGet', 'ClipAppend', 
+                       'ChrUnicodeToString', 'ChrUnicodeToHex', 
'ChrStringToUnicode', 'ChrSetCodepage', 'ChrHexToUnicode', 'ChrGetCodepage', 
+                       'Char2Num', 'Ceiling', 'ButtonNames', 'BoxUpdates', 
'BoxTitle', 'BoxTextFont', 'BoxTextColor', 'BoxText', 'BoxShut', 'BoxPen', 
+                       'BoxOpen', 'BoxNew', 'BoxMapmode', 'BoxesUp', 
'BoxDrawText', 'BoxDrawRect', 'BoxDrawLine', 'BoxDrawCircle', 'BoxDestroy', 
+                       'BoxDataTag', 'BoxDataClear', 'BoxColor', 'BoxCaption', 
'BoxButtonWait', 'BoxButtonStat', 'BoxButtonKill', 'BoxButtonDraw', 
+                       'BoxBitMap', 'BinaryXor', 'BinaryXlate', 
'BinaryWriteEx', 'BinaryWrite', 'BinaryTagRepl', 'BinaryTagLen', 
'BinaryTagInit', 
+                       'BinaryTagIndex', 'BinaryTagFind', 'BinaryTagExtr', 
'BinaryStrCnt', 'BinarySort', 'BinaryReplace', 'BinaryReadEx', 
+                       'BinaryRead', 'BinaryPokeStrW', 'BinaryPokeStr', 
'BinaryPokeHex', 'BinaryPokeFlt', 'BinaryPoke4', 'BinaryPoke2', 'BinaryPoke', 
+                       'BinaryPeekStrW', 'BinaryPeekStr', 'BinaryPeekHex', 
'BinaryPeekFlt', 'BinaryPeek4', 'BinaryPeek2', 'BinaryPeek', 'BinaryOr', 
+                       'BinaryOleType', 'BinaryIndexNc', 'BinaryIndexEx', 
'BinaryIndexBin', 'BinaryIndex', 'BinaryIncrFlt', 'BinaryIncr4', 
+                       'BinaryIncr2', 'BinaryIncr', 'BinaryHashRec', 
'BinaryFree', 'BinaryEodSet', 'BinaryEodGet', 'BinaryCopy', 'BinaryConvert', 
+                       'BinaryCompare', 'BinaryClipPut', 'BinaryClipGet', 
'BinaryChecksum', 'BinaryBufInfo', 'BinaryAnd', 'BinaryAllocArray', 
+                       'BinaryAlloc', 'Beep', 'Average', 'Atan', 'AskYesNo', 
'AskTextbox', 'AskPassword', 'AskLine', 'AskItemlist', 'AskFont', 
+                       'AskFiletext', 'AskFilename', 'AskDirectory', 
'AskColor', 'Asin', 'ArrInitialize', 'ArrInfo', 'ArrDimension', 
+                       'Arrayize', 'ArrayFilePutCSV', 'ArrayFilePut', 
'ArrayFileGetCSV', 'ArrayFileGet', 'AppWaitClose', 'AppExist', 'AddExtender', 
+                       'Acos', 'Abs', 'About'
+                       ),
+               4 => array(
+                       'zZipFiles', 'zVersionInfo', 'zVersion', 'zUnZipFiles', 
'zSetPortBit', 'zRPortShift', 'zPortOut', 'zPortIn', 'zNotPortBit', 
+                       'zLPortShift', 'zGetPortBit', 'zClrPortBit', 
'xVerifyCCard', 'xSendMessage', 'xMessageBox', 'xMemCompact', 'xHex', 
'xGetElapsed', 
+                       'xGetChildHwnd', 'xExtenderInfo', 'xEnumStreams', 
'xEjectMedia', 'xDriveReady', 'xDiskLabelGet', 'xCursorSet', 'xBaseConvert', 
+                       'wxPing', 'wxParmSet', 'wxParmGet', 'wxMsgSetHdr', 
'wxMsgGetHdr', 'wxMsgGetBody', 'wxHost2Addr', 'wxGetLastErr', 'wxGetInfo', 
+                       'wxGetErrDesc', 'wxAddr2Host', 'wtsWaitSystemEvent', 
'wtsVersion', 'wtsTerminateProcess', 'wtsShutdownSystem', 'wtsSendMessage', 
+                       'wtsQuerySessionInfo', 'wtsProcIdToSessId', 
'wtsLogoffSession', 'wtsLastErrMsg', 'wtsIsTSEnabled', 'wtsIsCitrixEnabled', 
+                       'wtsGetActiveConsoleSessId', 'wtsEnumSessions', 
'wtsEnumProcesses', 'wtsDisconnectSession', 'wnWrkGroups', 'wnVersion', 
'wntWtsUserSet', 
+                       'wntWtsUserGet', 'wntVersion', 'wntUserSidChk', 
'wntUserSetDat', 'wntUserRename', 'wntUserProps', 'wntUserList', 'wntUserInfo', 
+                       'wntUserGetDat', 'wntUserFiles', 'wntUserExist', 
'wntUserDel', 'wntUserAddDat', 'wntUserAdd', 'wntSvcStatus', 'wntSvcStart', 
+                       'wntSvcList', 'wntSvcDelete', 'wntSvcCreate', 
'wntSvcControl', 'wntSvcCfgSet', 'wntSvcCfgGet', 'wntShutdown', 
'wntShareUsers', 
+                       'wntShareSet', 'wntShareList', 'wntShareInfo', 
'wntShareDel', 'wntShareAdd', 'wntServiceInf', 'wntServiceAt', 'wntServerType', 
+                       'wntServerList', 'wntServerInfo', 'wntSecurityGet', 
'wntRunAsUser', 'wntResources2', 'wntResources', 'wntRemoteTime', 
'wntRasUserSet', 
+                       'wntRasUserGet', 'wntProfileInfo', 'wntProfileDel', 
'wntPrivUsers', 'wntPrivList', 'wntPrivGet', 'wntPrivDel', 'wntPrivAdd', 
+                       'wntOwnerSet', 'wntOwnerGet', 'wntMemberSet', 
'wntMemberLst2', 'wntMemberList', 'wntMemberGrps', 'wntMemberGet', 
'wntMemberDel', 
+                       'wntLsaPolSet', 'wntLsaPolGet', 'wntListGroups', 
'wntLastErrMsg', 'wntGroupRen', 'wntGroupInfo', 'wntGroupEdit', 'wntGroupDel', 
+                       'wntGroupAdd', 'wntGetUser', 'wntGetDrive', 'wntGetDc', 
'wntGetCon', 'wntFileUsers', 'wntFilesOpen', 'wntFileClose', 'wntEventWrite', 
+                       'wntEventLog', 'wntDomainSync', 'wntDirDialog', 
'wntDfsList', 'wntDfsGetInfo', 'wntCurrUsers', 'wntChgPswd', 'wntCancelCon', 
+                       'wntAuditMod', 'wntAuditList', 'wntAuditGet', 
'wntAuditDel', 'wntAuditAdd2', 'wntAuditAdd', 'wntAddPrinter', 'wntAddDrive', 
+                       'wntAcctPolSet', 'wntAcctPolGet', 'wntAcctList', 
'wntAcctInfo', 'wntAccessMod', 'wntAccessList', 'wntAccessGet', 'wntAccessDel', 
+                       'wntaccessadd2', 'wntAccessAdd', 'wnShares', 
'wnSharePath', 'wnShareName', 'wnShareCnt', 'wnServers', 'wnRestore', 
'wnNetNames', 
+                       'wnGetUser', 'wnGetCon', 'wnGetCaps', 'wnDlgShare', 
'wnDlgNoShare', 'wnDlgDiscon', 'wnDlgCon4', 'wnDlgCon3', 'wnDlgCon2', 
'wnDlgCon', 
+                       'wnDlgBrowse', 'wnDialog', 'wnCmptrInfo', 
'wnCancelCon', 'wnAddCon', 'WaitSRQ', 'w9xVersion', 'w9xUserSetDat', 
'w9xUserRename', 
+                       'w9xUserprops', 'w9xUserList', 'w9xUserinfo', 
'w9xUserGetDat', 'w9xUserExist', 'w9xUserDel', 'w9xUserAddDat', 'w9xUserAdd', 
'w9xShareSet', 
+                       'w9xShareInfo', 'w9xShareDel', 'w9xShareAdd', 
'w9xServiceAt', 'w9xServerList', 'w9xRemoteTime', 'w9xOwnerGet', 
'w9xMemberSet', 
+                       'w9xMemberList', 'w9xMemberGrps', 'w9xMemberGet', 
'w9xMemberDel', 'w9xListGroups', 'w9xGroupInfo', 'w9xGroupDel', 'w9xGroupAdd', 
+                       'w9xGetDC', 'w9xFileUsers', 'w9xAccessList', 
'w9xAccessGet', 'w9xAccessDel', 'w9xAccessAdd', 'w95Version', 'w95ShareUsers', 
+                       'w95ShareSet', 'w95ShareList', 'w95ShareInfo', 
'w95ShareDel', 'w95ShareAdd', 'w95ServiceInf', 'w95ServiceAt', 'w95ServerType', 
+                       'w95ServerInfo', 'w95Resources', 'w95GetUser', 
'w95GetDrive', 'w95GetCon', 'w95FileUsers', 'w95FileClose', 'w95DirDialog', 
+                       'w95CancelCon', 'w95AddPrinter', 'w95AddDrive', 
'w95AccessDel', 'w95AccessAdd', 'w3Version', 'w3PrtBrowse', 'w3NetGetUser', 
+                       'w3NetDialog', 'w3GetCon', 'w3GetCaps', 'w3DirBrowse', 
'w3CancelCon', 'w3AddCon', 'urlGetScheme', 'urlEncode', 'urlDecode', 
+                       'tVersion', 'tSetPriority', 'TriggerList', 'Trigger', 
'tRemoteConn', 'tOpenProc', 'tListProc', 'tListMod', 'tKillProc', 
'tGetProcInfo', 
+                       'tGetPriority', 'tGetModInfo', 'tGetLastError', 
'tGetData', 'TestSys', 'TestSRQ', 'tCountProc', 'tCompatible', 'tCloseProc', 
+                       'tBrowseCntrs', 'sSendString', 'sSendNum', 'sSendLine', 
'sSendBinary', 'sRecvNum', 'sRecvLine', 'sRecvBinary', 'SrchVersion', 
+                       'SrchNext', 'SrchInit', 'SrchFree', 'sOpen', 
'sOK2Send', 'sOK2Recv', 'smtpSendText', 'smtpSendFile', 'sListen', 'SetRWLS', 
+                       'SendSetup', 'SendLLO', 'SendList', 'SendIFC', 
'SendDataBytes', 'SendCmds', 'Send', 'sConnect', 'sClose', 'SByteOrder32', 
+                       'sByteOrder16', 'sAccept', 'rRegVersion', 'rRegSearch', 
'ResetSys', 'ReceiveSetup', 'Receive', 'ReadStsByte', 'RcvRespMsg', 
+                       'RasVersion', 'RasTypeSize', 'RasRename', 'RasNumCons', 
'RasNameValid', 'RasListActCon', 'RasItemize', 'RasHangUp', 'RasGetLastErr', 
+                       'RasGetConStat', 'RasEntrySet', 'RasEntryInfo', 
'RasEntryExist', 'RasEntryDel', 'RasEntryAdd', 'RasDialInfo', 'RasDial', 
+                       'RasCopy', 'RasConStatus', 'qVersionInfo', 'qTransact', 
'qTables', 'qSpecial', 'qSetConnOpt', 'qNumRsltCol', 'qNativeSql', 'qLastCode', 
+                       'qGetData', 'qFreeStmt', 'qFreeEnv', 'qFreeConnect', 
'qFetch', 'qExecDirect', 'qError', 'qDriverList', 'qDriverCon', 'qDisconnect', 
+                       'qDataSources', 'qConnect', 'qConfigError', 
'qConfigData', 'qColumns', 'qBindCol', 'qAllocStmt', 'qAllocEnv', 
'qAllocConnect', 
+                       'pWaitFor', 'pVersionInfo', 'pTimeout', 'pSetPublish', 
'pSetPrtInfo', 'pSetPrtAttrib', 'pSetDefPrtEx', 'pSetDefPrt', 'pSendFile', 
+                       'pRecvFile', 'pPutString', 'pPutLine', 'pPutChar', 
'pPutByte', 'pPutBinary', 'PPollUnconfig', 'PPollConfig', 'PPoll', 'pPeekChar', 
+                       'pPeekByte', 'pPaperSizes', 'pPaperBins', 'pModemSReg', 
'pModemParams', 'pModemInit', 'pModemHangUp', 'pModemDial', 'pModemControl', 
+                       'pModemConnect', 'pModemCommand', 'pModemAnsRing', 
'pModemAnsCall', 'pMediaTypes', 'pGetString', 'pGetPublish', 'pGetPrtList', 
+                       'pGetPrtInfo', 'pGetPrtAttrib', 'pGetLine', 
'pGetLastError', 'pGetErrorMsg', 'pGetErrorCode', 'pGetDefPrtInf', 'pGetChar', 
+                       'pGetByte', 'pGetBinary', 'pDelPrtConn', 'pDelPrinter', 
'pComOpen', 'pComModify', 'pComInfo', 'pComControl', 'pComClose', 
+                       'pCheckSum', 'pCheckBinary', 'pCaptureOn', 
'pCaptureOff', 'pCaptureLog', 'PassControl', 'pAddPrtConn', 'pAddPrinter', 
'p3RecvText', 
+                       'p3RecvFile', 'p3Peek', 'p3Open', 'p3GetReply', 
'p3Delete', 'p3Count', 'p3Close', 'nwWhoAmI', 'nwVfyPassword', 'nwVersion', 
+                       'nwSrvShutdown', 'nwSrvNLMMgr', 'nwSrvGenGUID', 
'nwSrvExecNCF', 'nwSetVolLimit', 'nwSetSrvParam', 'nwSetSrvInfo', 
'nwSetPrimServ', 
+                       'nwSetPassword', 'nwSetOptions', 'nwSetFileInfo', 
'nwSetDirLimit', 'nwSetDirInfo', 'nwSetContext', 'nwSetBcastMode', 
'nwServerList', 
+                       'nwSendBcastMsg', 'nwSearchObjects', 'nwSearchFilter', 
'nwRenameObject', 'nwRemoveObject', 'nwReceiveBcastMsg', 'nwNameConvert', 
+                       'nwMutateObject', 'nwMoveObject', 'nwModifyObject', 
'nwMapDelete', 'nwMap', 'nwLogout', 'nwLogin', 'nwListUserGroups', 
+                       'nwListObjects', 'nwListGroupMembers', 'nwLastErrMsg', 
'nwIsUserInGroup', 'nwGetVolLimit', 'nwGetSrvStats', 'nwGetSrvParam', 
+                       'nwGetSrvInfo', 'nwGetSrvCfg', 'nwGetOptions', 
'nwGetObjValue', 'nwGetObjInfo', 'nwGetNLMInfo', 'nwGetMapped', 
'nwGetFileInfo', 
+                       'nwGetDirLimit', 'nwGetDirInfo', 'nwGetContext', 
'nwGetConnInfo', 'nwGetCapture', 'nwGetBcastMode', 'nwGetAttrInfo', 
+                       'nwDriveStatus', 'nwDrivePath', 'nwDetachFromServer', 
'nwDelUserFromGroup', 'nwDelConnNum', 'nwCompareObject', 'nwClientInfo', 
+                       'nwChgPassword', 'nwAttachToServer', 
'nwAddUserToGroup', 'nwAddObject', 'netVersion', 'netResources', 'netGetUser', 
'netGetCon', 
+                       'netDirDialog', 'netCancelCon', 'netAddPrinter', 
'netAddDrive', 'n4Version', 'n4UserGroups', 'n4UserGroupEx', 'n4SetPrimServ', 
+                       'n4SetOptions', 'n4SetContextG', 'n4SetContext', 
'n4ServerList', 'n4ServerInfo', 'n4ObjSearch', 'n4ObjRename', 'n4ObjOptions', 
+                       'n4ObjMove', 'n4ObjGetVal', 'n4ObjectProps', 
'n4ObjectList', 'n4ObjectInfo', 'n4ObjDelete', 'n4NameConvert', 'n4MsgsEndAll', 
+                       'n4MsgsEnd', 'n4MemberSet', 'n4MemberGet', 
'n4MemberDel', 'n4MapRoot', 'n4MapDir', 'n4MapDelete', 'n4Map', 'n4LogoutTree', 
+                       'n4Logout', 'n4Login', 'n4GetUserName', 'n4GetUserId', 
'n4GetUser', 'n4GetNetAddr', 'n4GetMapped', 'n4GetContext', 
+                       'n4GetConnNum', 'n4FileUsers', 'n4FileTimeGet', 
'n4FileAttrSet', 'n4FileAttrGet', 'n4DriveStatus', 'n4DrivePath', 
'n4DirTimeGet', 
+                       'n4DirAttrSet', 'n4DirAttrGet', 'n4Detach', 
'n4ChgPassword', 'n4CapturePrt', 'n4CaptureGet', 'n4CaptureEnd', 'n4Attach', 
+                       'n3Version', 'n3UserGroups', 'n3ServerList', 
'n3ServerInfo', 'n3MsgsEndAll', 'n3MsgsEnd', 'n3MemberSet', 'n3MemberGet', 
+                       'n3MemberDel', 'n3Maproot', 'n3Mapdir', 'n3Mapdelete', 
'n3Map', 'n3Logout', 'n3GetUserId', 'n3GetUser', 'n3GetNetAddr', 
+                       'n3GetMapped', 'n3GetConnNum', 'n3FileTimeGet', 
'n3FileAttrSet', 'n3FileAttrGet', 'n3DriveStatus', 'n3DrivePath', 
+                       'n3DirTimeGet', 'n3DirAttrSet', 'n3DirAttrGet', 
'n3Detach', 'n3ChgPassword', 'n3CapturePrt', 'n3CaptureGet', 
+                       'n3CaptureEnd', 'n3Attach', 'mVersion', 'mSyncMail', 
'mSendMailEx', 'mSendMail', 'mrecvmail', 'mReadNextMsg', 'mLogOn', 
+                       'mLogOff', 'mFindNext', 'mError', 'mCompatible', 
'kVerInfo', 'kStatusInfo', 'kSendText', 'kSendFile', 'kManageImap4', 
+                       'kInit', 'kGetMail', 'kExtra', 'kDest', 'kDeletePop3', 
'iWriteDataBuf', 'iWriteData', 'iVersion', 'IUrlOpen', 'iUrlEncode', 
+                       'iUrlDecode', 'iReadDataBuf', 'iReadData', 'ipVersion', 
'ipPing', 'iPing', 'ipHost2Addr', 'ipGetLastErr', 'ipGetAddress', 
+                       'iParseURL', 'ipAddr2Host', 'iOptionSet', 'iOptionGet', 
'ImgWave', 'ImgVersion', 'ImgUnsharpMask', 'ImgThreshold', 'ImgSwirl', 
+                       'ImgSpread', 'ImgSolarize', 'ImgShear', 'ImgSharpen', 
'ImgShade', 'ImgScale', 'ImgSample', 'ImgRotate', 'ImgResize', 
+                       'ImgReduceNoise', 'ImgRaise', 'ImgOilPaint', 
'ImgNormalize', 'ImgNegate', 'ImgMotionBlur', 'ImgModulate', 'ImgMinify', 
+                       'ImgMedianFilter', 'ImgMagnify', 'ImgLevel', 
'ImgIsValid', 'ImgIsPalette', 'ImgIsMono', 'ImgIsGray', 'ImgInfo', 
'ImgImplode', 
+                       'ImgGetImageType', 'ImgGetColorCount', 
'ImgGaussianBlur', 'ImgGamma', 'ImgFrame', 'ImgFlop', 'ImgFlip', 'ImgEqualize', 
+                       'ImgEnhance', 'ImgEmboss', 'ImgCrop', 'ImgConvert', 
'ImgContrast', 'ImgCompare', 'ImgColorize', 'ImgChop', 'ImgCharcoal', 
+                       'ImgBorder', 'ImgBlur', 'ImgAddNoise', 'iLocFindNext', 
'iLocFindInit', 'iHttpOpen', 'iHttpInit', 'iHttpHeaders', 'iHttpAccept', 
+                       'iHostConnect', 'iHost2Addr', 'iGetResponse', 
'iGetLastError', 'iGetIEVer', 'iGetConStatEx', 'iGetConState', 'iFtpRename', 
+                       'iFtpPut', 'iFtpOpen', 'iFtpGet', 'iFtpFindNext', 
'iFtpFindInit', 'iFtpDirRemove', 'iFtpDirMake', 'iFtpDirGet', 'iFtpDirChange', 
+                       'iFtpDialog', 'iFtpDelete', 'iFtpCmd', 'iErrorDialog', 
'iDialItemize', 'iDialHangUp', 'iDial', 'iCookieSet', 'iCookieGet', 
+                       'iContentURL', 'iContentFile', 'iContentData', 
'iClose', 'ibWrtf', 'ibWrt', 'ibWait', 'ibVersion', 'ibUnlock', 'ibTrg', 
+                       'ibTmo', 'ibStop', 'ibStatus', 'ibSta', 'ibSre', 
'ibSic', 'ibSad', 'ibRsv', 'ibRsp', 'ibRsc', 'ibRpp', 'ibRdf', 'ibRd', 
+                       'ibPpc', 'ibPoke', 'ibPct', 'ibPad', 'ibOnl', 
'ibMakeAddr', 'ibLock', 'ibLoc', 'ibLn', 'ibLines', 'ibIst', 'ibInit', 
+                       'ibGts', 'ibGetSad', 'ibGetPad', 'ibFind', 'ibEvent', 
'ibErr', 'ibEot', 'ibEos', 'iBegin', 'ibDma', 'ibDev', 'ibConfig', 
+                       'ibCntl', 'ibCnt', 'ibCmda', 'ibCmd', 'ibClr', 'ibCac', 
'ibBna', 'ibAsk', 'iAddr2Host', 'huge_Thousands', 'huge_Subtract', 
+                       'huge_SetOptions', 'huge_Multiply', 
'huge_GetLastError', 'huge_ExtenderInfo', 'huge_Divide', 'huge_Decimal', 
'huge_Add', 
+                       'httpStripHTML', 'httpRecvTextF', 'httpRecvText', 
'httpRecvQuery', 'httpRecvQryF', 'httpRecvFile', 'httpGetServer', 
+                       'httpGetQuery', 'httpGetPath', 'httpGetFile', 
'httpGetDir', 'httpGetAnchor', 'httpFullPath', 'httpFirewall', 'httpAuth', 
+                       'ftpRename', 'ftpQuote', 'ftpPut', 'ftpOpen', 
'ftpList', 'ftpGet', 'ftpFirewall', 'ftpDelete', 'ftpClose', 'ftpChDir', 
+                       'FindRQS', 'FindLstn', 'EnvSetVar', 'EnvPathDel', 
'EnvPathChk', 'EnvPathAdd', 'EnvListVars', 'EnvGetVar', 'EnvGetInfo', 
+                       'EnableRemote', 'EnableLocal', 'ehllapiWait', 
'ehllapiVersion', 'ehllapiUninit', 'ehllapiStopKeyIntercept', 
'ehllapiStopHostNotify', 
+                       'ehllapiStopCloseIntercept', 
'ehllapiStartKeyIntercept', 'ehllapiStartHostNotify', 
'ehllapiStartCloseIntercept', 
+                       'ehllapiSetWindowStatus', 'ehllapiSetSessionParams', 
'ehllapiSetPSWindowName', 'ehllapiSetCursorLoc', 'ehllapiSendKey', 
+                       'ehllapiSendFile', 'ehllapiSearchPS', 
'ehllapiSearchField', 'ehllapiRunProfile', 'ehllapiResetSystem', 
'ehllapiReserve', 
+                       'ehllapiRelease', 'ehllapiReceiveFile', 
'ehllapiQuerySystem', 'ehllapiQueryPSStatus', 'ehllapiQueryHostNotify', 
+                       'ehllapiQueryFieldAttr', 'ehllapiQueryCursorLoc', 
'ehllapiQueryCloseIntercept', 'ehllapiPostInterceptStatus', 
+                       'ehllapiPause', 'ehllapiLastErrMsg', 'ehllapiInit', 
'ehllapiGetWindowStatus', 'ehllapiGetPSHWND', 'ehllapiGetKey', 
+                       'ehllapiFindFieldPos', 'ehllapiFindFieldLen', 
'ehllapiDisconnectPS', 'ehllapiCvtRCToPos', 'ehllapiCvtPosToRC', 
+                       'ehllapiCopyTextToPS', 'ehllapiCopyTextToField', 
'ehllapiCopyTextFromPS', 'ehllapiCopyTextFromField', 'ehllapiCopyOIA', 
+                       'ehllapiConnectPS', 'dunItemize', 'dunDisconnect', 
'dunConnectEx', 'dunConnect', 'dsTestParam', 'dsSIDtoHexStr', 'dsSetSecProp', 
+                       'dsSetProperty', 'dsSetPassword', 'dsSetObj', 
'dsSetCredentX', 'dsSetCredent', 'dsRemFromGrp', 'dsRelSecObj', 'dsMoveObj', 
+                       'dsIsObject', 'dsIsMemberGrp', 'dsIsContainer', 
'dsGetUsersGrps', 'dsGetSecProp', 'dsGetPropName', 'dsGetProperty', 
+                       'dsGetPrntPath', 'dsGetPrimGrp', 'dsGetMemGrp', 
'dsGetInfo', 'dsGetClass', 'dsGetChldPath', 'dsFindPath', 'dsDeleteObj', 
+                       'dsCreatSecObj', 'dsCreateObj', 'dsCopySecObj', 
'dsAddToGrp', 'dsAclRemAce', 'dsAclOrderAce', 'dsAclGetAces', 'dsAclAddAce', 
+                       'DevClearList', 'DevClear', 'dbTest', 'dbSwapColumns', 
'dbSort', 'dbSetRecordField', 'dbSetOptions', 'dbSetErrorReporting', 
+                       'dbSetEntireRecord', 'dbSetDelimiter', 'dbSave', 
'dbOpen', 'dbNameColumn', 'dbMakeNewItem', 'dbInsertColumn', 'dbGetVersion', 
+                       'dbGetSaveStatus', 'dbGetRecordField', 
'dbGetRecordCount', 'dbGetNextItem', 'dbGetLastError', 'dbGetEntireRecord', 
+                       'dbGetColumnType', 'dbGetColumnNumber', 
'dbGetColumnName', 'dbGetColumnCount', 'dbFindRecord', 'dbExist', 
'dbEasterEgg', 
+                       'dbDeleteRecord', 'dbDeleteColumn', 'dbDebug', 
'dbCookDatabases', 'dbClose', 'dbCloneRecord', 'dbBindCol', 'cWndState', 
+                       'cWndinfo', 'cWndGetWndSpecName', 'cWndGetWndSpec', 
'cWndexist', 'cWndByWndSpecName', 'cWndByWndSpec', 'cWndbyseq', 
+                       'cWndbyname', 'cWndbyid', 'cWndbyclass', 
'cWinIDConvert', 'cVersionInfo', 'cVendorId', 'cSetWndText', 'cSetUpDownPos', 
+                       'cSetTvItem', 'cSetTrackPos', 'cSetTabItem', 
'cSetLvItem', 'cSetLbItemEx', 'cSetLbItem', 'cSetIpAddr', 'cSetFocus', 
+                       'cSetEditText', 'cSetDtpDate', 'cSetCbItem', 
'cSetCalDate', 'cSendMessage', 'cRadioButton', 'cPostMessage', 'cPostButton', 
+                       'cMemStat', 'cGetWndCursor', 'cGetUpDownPos', 
'cGetUpDownMin', 'cGetUpDownMax', 'cGetTVItem', 'cGetTrackPos', 'cGetTrackMin', 
+                       'cGetTrackMax', 'cGetTbText', 'cGetSbText', 
'cGetLvText', 'cGetLvSelText', 'cGetLvFocText', 'cGetLvDdtText', 
'cGetLvColText', 
+                       'cGetLbText', 'cGetLbSelText', 'cGetLbCount', 
'cGetIpAddr', 'cGetInfo', 'cGetHrText', 'cGetFocus', 'cGetEditText', 
'cGetDtpDate', 
+                       'cGetControlImageCRC', 'cGetCBText', 'cGetCbCount', 
'cGetCalDate', 'cFindByName', 'cFindByClass', 'cEnablestate', 'cDblClickItem', 
+                       'cCpuSupt', 'cCpuSpeed', 'cCpuIdExt', 'cCpuId', 
'cCpuFeat', 'cCpuBenchmark', 'cCloneCheck', 'cClickToolbar', 'cClickButton', 
+                       'cClearTvItem', 'cClearLvItem', 'cClearLbAll', 
'cCheckbox', 'aVersion', 'aStatusbar', 'aShellFolder', 'aMsgTimeout', 
'AllSPoll', 
+                       'aGetLastError', 'aFileRename', 'aFileMove', 
'aFileDelete', 'aFileCopy'                 
+                       ),
+               5 => array(
+                       'wWordRight', 'wWordLeft', 'wWinTile', 'wWinRestore', 
'wWinNext', 'wWinMinimize', 'wWinMaximize', 'wWinCloseAll', 'wWinClose', 
+                       'wWinCascade', 'wWinArricons', 'wViewOutput', 
'wViewOptions', 'wViewHtml', 'wUpperCase', 'wUpline', 'wUndo', 'wTopOfFile', 
'wToggleIns', 
+                       'wTab', 'wStatusMsg', 'wStartSel', 'wSpellcheck', 
'wSetProject', 'wSetPrefs', 'wSetColblk', 'wSetBookmark', 'wSelWordRight', 
+                       'wSelWordLeft', 'wSelUp', 'wSelTop', 'wSelRight', 
'wSelPgUp', 'wSelPgDn', 'wSelLeft', 'wSelInfo', 'wSelHome', 'wSelEnd', 
'wSelectAll', 
+                       'wSelDown', 'wSelBottom', 'wRunRebuild', 'wRunMake', 
'wRunExecute', 'wRunDebug', 'wRunConfig', 'wRunCompile', 'wRunCommand', 
'wRight', 
+                       'wRepeat', 'wRedo', 'wRecord', 'wProperties', 
'wPrintDirect', 'wPrinSetup', 'wPrevError', 'wPaste', 'wPageUp', 'wPageDown', 
'wNextError', 
+                       'wNewLine', 'wLowerCase', 'wLineCount', 'wLeft', 
'wInvertCase', 'wInsString', 'wInsLine', 'wHome', 'wHelpKeyword', 
'wHelpKeybrd', 
+                       'wHelpIndex', 'wHelpHelp', 'wHelpCmds', 'wHelpAbout', 
'wGotoLine', 'wGotoCol', 'wGetWrap', 'wGetWord', 'wGetUndo', 'wGetSelstate', 
+                       'wGetRedo', 'wGetOutput', 'wGetModified', 'wGetLineNo', 
'wGetIns', 'wGetFilename', 'wGetColNo', 'wGetChar', 'wFtpOpen', 'wFindNext', 
+                       'wFindInFiles', 'wFind', 'wFileSaveAs', 'wFileSave', 
'wFileRevert', 'wFilePrint', 'wFilePgSetup', 'wFileOpen', 'wFileNew', 
'wFileMerge', 
+                       'wFileList', 'wFileExit', 'wEndSel', 'wEndOfFile', 
'wEnd', 'wEdWrap', 'wEdWordRight', 'wEdWordLeft', 'wEdUpLine', 'wEdUndo', 
'wEdTopOfFile', 
+                       'wEdToggleIns', 'wEdTab', 'wEdStartSel', 
'wEdSetColBlk', 'wEdSelectAll', 'wEdRight', 'wEdRedo', 'wEdPaste', 'wEdPageUp', 
'wEdPageDown', 
+                       'wEdNewLine', 'wEdLeft', 'wEdInsString', 'wEdHome', 
'wEdGoToLine', 'wEdGoToCol', 'wEdGetWord', 'wEdEndSel', 'wEdEndOfFile', 
'wEdEnd', 
+                       'wEdDownLine', 'wEdDelete', 'wEdCutLine', 'wEdCut', 
'wEdCopyLine', 'wEdCopy', 'wEdClearSel', 'wEdBackTab', 'wEdBackspace', 
'wDownLine', 
+                       'wDelete', 'wDelButton', 'wCutMarked', 'wCutLine', 
'wCutAppend', 'wCut', 'wCopyMarked', 'wCopyLine', 'wCopyAppend', 'wCopy', 
'wCompile', 
+                       'wClearSel', 'wChange', 'wCallMacro', 'wBackTab', 
'wBackspace', 'wAutoIndent', 'wAddButton', 'edWindowTile', 'edWindowRestore', 
+                       'edWindowNext', 'edWindowMinimize', 'edWindowMaximize', 
'edWindowCloseall', 'edWindowClose', 'edWindowCascade', 'edWindowArrangeIcons', 
+                       'edStatusMsg', 'edSearchViewOutput', 'edSearchRepeat', 
'edSearchPrevError', 'edSearchNextError', 'edSearchFind', 'edSearchChange', 
+                       'edRunRebuild', 'edRunMake', 'edRunExecute', 
'edRunDebug', 'edRunConfigure', 'edRunCompile', 'edRunCommand', 'edRecord', 
'edHelpProcedures', 
+                       'edHelpKeyword', 'edHelpKeyboard', 'edHelpIndex', 
'edHelpHelp', 'edHelpCommands', 'edHelpAbout', 'edGetWordWrapState', 
'edGetWindowName', 
+                       'edGetUndoState', 'edGetSelectionState', 
'edGetRedoState', 'edGetModifiedStatus', 'edGetLineNumber', 'edGetInsertState', 
'edGetColumnNumber', 
+                       'edGetChar', 'edFileSetPreferences', 'edFileSaveAs', 
'edFileSave', 'edFilePrinterSetup', 'edFilePrint', 'edFilePageSetup', 
'edFileOpen', 
+                       'edFileNew', 'edFileMerge', 'edFileList', 'edFileExit', 
'edEditWrap', 'edEditWordRight', 'edEditWordLeft', 'edEditUpLine', 
'edEditUndo', 
+                       'edEditToggleIns', 'edEditTab', 'edEditStartSelection', 
'edEditSetColumnBlock', 'edEditSetBookmark', 'edEditSelectAll', 'edEditRight', 
+                       'edEditRedo', 'edEditPaste', 'edEditPageUp', 
'edEditPageDown', 'edEditLeft', 'edEditInsertString', 'edEditGoToLine', 
'edEditGoToColumn', 
+                       'edEditGoToBookmark', 'edEditGetCurrentWord', 
'edEditEndSelection', 'edEditEndOfLine', 'edEditEndOfFile', 'edEditDownline', 
'edEditDelete', 
+                       'edEditCutline', 'edEditCut', 'edEditCopyline', 
'edEditCopy', 'edEditClearSelection', 'edEditBeginningOfLine', 
'edEditBeginningOfFile', 
+                       'edEditBackTab', 'edEditBackspace', 'edDeleteButton', 
'edAddButton'
+                       )                                                       
                
+               ),
+       'SYMBOLS' => array(
+               '(', ')', '[', ']', '{', '}', '!', '+', '-', '~', '$', '^', 
'?', '@', '%', '#', '&', '*', '|', '/', '<', '>'    
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               1 => false,
+               2 => false,
+               3 => false,
+               4 => false,
+               5 => false
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       1 => 'color: #800080;',
+                       2 => 'color: #0080FF; font-weight: bold;',
+                       3 => 'color: #0000FF;',
+                       4 => 'color: #FF00FF;',
+                       5 => 'color: #008000;'                                  
+                       ),      
+               'COMMENTS' => array(
+                       1 => 'color: #008000; font-style: italic;',
+                       2 => 'color: #FF1010; font-weight: bold;',
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       0 => 'color: #006600;'
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #0000ff;'
+                       ),
+               'SCRIPT' => array(
+                       )
+               ),
+       'URLS' => array(
+               1 => '',
+               2 => '',
+               3 => '',
+               4 => '',
+               5 => ''
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTER' => '',
+       'REGEXPS' => array(
+               0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_MAYBE,
+       'SCRIPT_DELIMITERS' => array(
+               ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               )
+);
+ 
+?>
+
+

Index: geshi/xml.php
===================================================================
RCS file: geshi/xml.php
diff -N geshi/xml.php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ geshi/xml.php       25 Sep 2006 08:46:28 -0000      1.1
@@ -0,0 +1,147 @@
+<?php
+/*************************************************************************************
+ * xml.php
+ * -------
+ * Author: Nigel McNie (address@hidden)
+ * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
+ * Release Version: 1.0.7.14
+ * CVS Revision Version: $Revision: 1.1 $
+ * Date Started: 2004/09/01
+ * Last Modified: $Date: 2006/09/25 08:46:28 $
+ *
+ * XML language file for GeSHi. Based on the idea/file by Christian Weiske
+ *
+ * CHANGES
+ * -------
+ * 2005/12/28 (1.0.2)
+ *   -  Removed escape character for strings
+ * 2004/11/27 (1.0.1)
+ *   -  Added support for multiple object splitters
+ * 2004/10/27 (1.0.0)
+ *   -  First Release
+ *
+ * TODO (updated 2004/11/27)
+ * -------------------------
+ * * Check regexps work and correctly highlight XML stuff and nothing else
+ *
+ 
*************************************************************************************
+ *
+ *     This file is part of GeSHi.
+ *
+ *   GeSHi 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.
+ *
+ *   GeSHi 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 GeSHi; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ 
************************************************************************************/
+
+$language_data = array (
+       'LANG_NAME' => 'XML',
+       'COMMENT_SINGLE' => array(),
+       'COMMENT_MULTI' => array('<!--' => '-->'),
+       'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+       'QUOTEMARKS' => array("'", '"'),
+       'ESCAPE_CHAR' => '',
+       'KEYWORDS' => array(
+               ),
+       'SYMBOLS' => array(
+               ),
+       'CASE_SENSITIVE' => array(
+               GESHI_COMMENTS => false,
+               ),
+       'STYLES' => array(
+               'KEYWORDS' => array(
+                       ),
+               'COMMENTS' => array(
+                       'MULTI' => 'color: #808080; font-style: italic;'
+                       ),
+               'ESCAPE_CHAR' => array(
+                       0 => 'color: #000099; font-weight: bold;'
+                       ),
+               'BRACKETS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'STRINGS' => array(
+                       0 => 'color: #ff0000;'
+                       ),
+               'NUMBERS' => array(
+                       0 => 'color: #cc66cc;'
+                       ),
+               'METHODS' => array(
+                       ),
+               'SYMBOLS' => array(
+                       0 => 'color: #66cc66;'
+                       ),
+               'SCRIPT' => array(
+                       0 => 'color: #00bbdd;',
+                       1 => 'color: #ddbb00;',
+                       2 => 'color: #339933;',
+                       3 => 'color: #009900;'
+                       ),
+               'REGEXPS' => array(
+                       0 => 'color: #000066;',
+                       1 => 'font-weight: bold; color: black;',
+                       2 => 'font-weight: bold; color: black;',
+                       )
+               ),
+       'URLS' => array(
+               ),
+       'OOLANG' => false,
+       'OBJECT_SPLITTERS' => array(
+               ),
+       'REGEXPS' => array(
+               0 => array(
+                       GESHI_SEARCH => '(((xml:)?[a-z\-]+))(=)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => 'i',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => '\\4'
+                       ),
+               1 => array(
+                       GESHI_SEARCH => 
'(&lt;[/?|(\?xml)]?[a-z0-9_\-]*(\??&gt;)?)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => 'i',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       ),
+               2 => array(
+                       GESHI_SEARCH => '(([/|\?])?&gt;)',
+                       GESHI_REPLACE => '\\1',
+                       GESHI_MODIFIERS => 'i',
+                       GESHI_BEFORE => '',
+                       GESHI_AFTER => ''
+                       )
+               ),
+       'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+       'SCRIPT_DELIMITERS' => array(
+               0 => array(
+                       '<!DOCTYPE' => '>'
+                       ),
+               1 => array(
+                       '&' => ';'
+                       ),
+               2 => array(
+                       '<![CDATA[' => ']]>'
+                       ),
+               3 => array(
+                       '<' => '>'
+                       )
+       ),
+       'HIGHLIGHT_STRICT_BLOCK' => array(
+               0 => false,
+               1 => false,
+               2 => false,
+               3 => true
+               )
+);
+
+?>
\ No newline at end of file




reply via email to

[Prev in Thread] Current Thread [Next in Thread]