]> git.sesse.net Git - vlc/commitdiff
* all: replaced the flex parser by the libxml one
authorCyril Deguet <asmax@videolan.org>
Sun, 25 Jan 2004 11:44:19 +0000 (11:44 +0000)
committerCyril Deguet <asmax@videolan.org>
Sun, 25 Jan 2004 11:44:19 +0000 (11:44 +0000)
* src/window_manager.cpp: improved the raise window algorithm
* src/tooltip.cpp: fixed a segfault after changing a theme

21 files changed:
modules/gui/skins2/Modules.am
modules/gui/skins2/parser/builder.cpp
modules/gui/skins2/parser/builder.hpp
modules/gui/skins2/parser/builder_data.hpp
modules/gui/skins2/parser/flex.c [deleted file]
modules/gui/skins2/parser/gen.sh [deleted file]
modules/gui/skins2/parser/skin.act [deleted file]
modules/gui/skins2/parser/skin.c [deleted file]
modules/gui/skins2/parser/skin.dtd [deleted file]
modules/gui/skins2/parser/skin.h [deleted file]
modules/gui/skins2/parser/skin.l [deleted file]
modules/gui/skins2/parser/skin_parser.cpp [new file with mode: 0644]
modules/gui/skins2/parser/skin_parser.hpp [moved from modules/gui/skins2/parser/parser_context.hpp with 66% similarity]
modules/gui/skins2/parser/wrappers.cpp [deleted file]
modules/gui/skins2/parser/wrappers.h [deleted file]
modules/gui/skins2/parser/xmlparser.cpp
modules/gui/skins2/parser/xmlparser.hpp
modules/gui/skins2/src/theme_loader.cpp
modules/gui/skins2/src/tooltip.cpp
modules/gui/skins2/src/window_manager.cpp
modules/gui/skins2/theme/skin.dtd

index a67dc035d8f15fc27fbf8ce6f5d9ea657fb6866a..0b6a34ca39c11b943edfb4f7daf6556954da5900 100644 (file)
@@ -67,16 +67,12 @@ SOURCES_skins2 = \
        parser/builder.cpp \
        parser/builder.hpp \
        parser/builder_data.hpp \
-       parser/flex.c \
        parser/interpreter.cpp \
        parser/interpreter.hpp \
-       parser/parser_context.hpp \
-       parser/skin.c \
-       parser/skin.h \
+       parser/skin_parser.cpp \
+       parser/skin_parser.hpp \
        parser/xmlparser.cpp \
        parser/xmlparser.hpp \
-       parser/wrappers.cpp \
-       parser/wrappers.h \
        \
        src/anchor.cpp \
        src/anchor.hpp \
index 908e3166fadf1d7267651bf88804a5e60e4fd51a..cc7de5f5db62d585512fcdf139649ecdc63d1c55 100755 (executable)
@@ -2,7 +2,7 @@
  * builder.cpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: builder.cpp,v 1.2 2004/01/11 17:12:17 asmax Exp $
+ * $Id: builder.cpp,v 1.3 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -47,7 +47,7 @@
 #include "../utils/var_text.hpp"
 
 
-Builder::Builder( intf_thread_t *pIntf, BuilderData &rData):
+Builder::Builder( intf_thread_t *pIntf, const BuilderData &rData):
     SkinObject( pIntf ), m_rData( rData ), m_pTheme( NULL )
 {
 }
index eb336b66e92acff738d626759d00b31d4f5aa795..b34843fd79f155733516d37fa2b865ceccb8f495 100644 (file)
@@ -2,7 +2,7 @@
  * builder.hpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: builder.hpp,v 1.2 2004/01/11 17:12:17 asmax Exp $
+ * $Id: builder.hpp,v 1.3 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -47,7 +47,7 @@ class Theme;
 class Builder: public SkinObject
 {
     public:
-        Builder( intf_thread_t *pIntf, BuilderData &rData );
+        Builder( intf_thread_t *pIntf, const BuilderData &rData );
         virtual ~Builder() {}
 
         /// Create a Theme object, ready to use.
@@ -59,7 +59,7 @@ class Builder: public SkinObject
 
     private:
         /// Data from the XML
-        BuilderData &m_rData;
+        const BuilderData &m_rData;
 
         /// Theme under construction
         Theme *m_pTheme;
index a3f47994907e4ac860103dde16bc95f4071115c5..7052d575b27f0b75de94812390f9a220a322fefc 100644 (file)
@@ -2,7 +2,7 @@
  * builder_data.hpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: builder_data.hpp,v 1.2 2004/01/11 17:12:17 asmax Exp $
+ * $Id: builder_data.hpp,v 1.3 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -32,7 +32,6 @@ using namespace std;
 
 #include <vlc/vlc.h>
 #include <list>
-#include <map>
 #include <string>
 
 /// Structure for mapping data from XML file
diff --git a/modules/gui/skins2/parser/flex.c b/modules/gui/skins2/parser/flex.c
deleted file mode 100644 (file)
index 6605519..0000000
+++ /dev/null
@@ -1,7916 +0,0 @@
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header: /root/vlc-cvs/modules/gui/skins2/parser/Attic/flex.c,v 1.1 2004/01/03 23:31:33 asmax Exp $
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-#include <errno.h>
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#ifndef _WIN32
-#include <unistd.h>
-#else
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-#endif
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- *     if ( condition_holds )
- *             yyless( 5 );
- *     else
- *             do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               *yy_cp = yy_hold_char; \
-               YY_RESTORE_YY_MORE_OFFSET \
-               yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-               } \
-       while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-       {
-       FILE *yy_input_file;
-
-       char *yy_ch_buf;                /* input buffer */
-       char *yy_buf_pos;               /* current position in input buffer */
-
-       /* Size of input buffer in bytes, not including room for EOB
-        * characters.
-        */
-       yy_size_t yy_buf_size;
-
-       /* Number of characters read into yy_ch_buf, not including EOB
-        * characters.
-        */
-       int yy_n_chars;
-
-       /* Whether we "own" the buffer - i.e., we know we created it,
-        * and can realloc() it to grow it, and should free() it to
-        * delete it.
-        */
-       int yy_is_our_buffer;
-
-       /* Whether this is an "interactive" input source; if so, and
-        * if we're using stdio for input, then we want to use getc()
-        * instead of fread(), to make sure we stop fetching input after
-        * each newline.
-        */
-       int yy_is_interactive;
-
-       /* Whether we're considered to be at the beginning of a line.
-        * If so, '^' rules will be active on the next match, otherwise
-        * not.
-        */
-       int yy_at_bol;
-
-       /* Whether to try to fill the input buffer when we reach the
-        * end of it.
-        */
-       int yy_fill_buffer;
-
-       int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-       /* When an EOF's been seen but there's still some text to process
-        * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-        * shouldn't try reading from the input source any more.  We might
-        * still have a bunch of tokens to match, though, because of
-        * possible backing-up.
-        *
-        * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
-        */
-#define YY_BUFFER_EOF_PENDING 2
-       };
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;                /* whether we need to initialize */
-static int yy_start = 0;       /* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_is_interactive = is_interactive; \
-       }
-
-#define yy_set_bol(at_bol) \
-       { \
-       if ( ! yy_current_buffer ) \
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-       yy_current_buffer->yy_at_bol = at_bol; \
-       }
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-
-#define yywrap() 1
-#define YY_SKIP_YYWRAP
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-       yytext_ptr = yy_bp; \
-       yyleng = (int) (yy_cp - yy_bp); \
-       yy_hold_char = *yy_cp; \
-       *yy_cp = '\0'; \
-       yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 472
-#define YY_END_OF_BUFFER 473
-static yyconst short int yy_accept[2803] =
-    {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  473,  471,   31,   10,
-       10,   31,   31,  450,   10,  450,    5,    6,    5,    8,
-        9,    8,  466,  458,  459,  467,  464,  467,  465,  470,
-      458,  459,  470,  472,  472,   45,   10,   45,   45,   45,
-       43,   45,   45,   45,   45,  472,   49,   10,   49,  472,
-       49,  472,   59,   10,   59,   59,   59,   57,   59,   59,
-
-       59,   63,   10,   63,  472,   73,   10,   73,   73,   73,
-       71,   73,   73,   73,   77,   10,   77,  472,   93,   10,
-       93,   93,   93,   91,   93,   93,   93,   93,   93,   97,
-       10,   97,  109,   10,  109,  109,  109,  107,  109,  109,
-      109,  109,  113,   10,  113,  472,  129,   10,  129,  129,
-      129,  127,  129,  129,  129,  129,  129,  129,  472,  133,
-       10,  133,  133,  151,   10,  151,  151,  151,  149,  151,
-      151,  151,  151,  472,  155,   10,  155,  163,   10,  163,
-      163,  163,  161,  163,  163,  472,  167,   10,  167,  167,
-      472,  179,   10,  179,  179,  179,  177,  179,  179,  179,
-
-      179,  183,   10,  183,  472,  205,   10,  205,  205,  205,
-      203,  205,  205,  205,  205,  205,  205,  205,  205,  209,
-       10,  209,  472,  231,   10,  231,  231,  231,  229,  231,
-      231,  231,  231,  231,  231,  231,  231,  235,   10,  235,
-      472,  261,   10,  261,  261,  261,  259,  261,  261,  261,
-      261,  261,  261,  261,  261,  261,  261,  261,  265,   10,
-      265,  472,  303,   10,  303,  303,  303,  301,  303,  303,
-      303,  303,  303,  303,  303,  303,  303,  303,  303,  303,
-      307,   10,  307,  472,  339,   10,  339,  339,  339,  337,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-
-      339,  339,  343,   10,  343,  472,  373,   10,  373,  373,
-      373,  371,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  377,   10,  377,  472,  405,   10,  405,
-      405,  405,  403,  405,  405,  405,  405,  405,  405,  405,
-      405,  405,  405,  405,  409,   10,  409,  472,  445,   10,
-      445,  445,  445,  443,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  449,   10,  449,  466,
-      458,  459,  467,  467,  466,   10,    0,    2,    2,    0,
-        4,    7,  461,  460,    0,    0,    0,    0,    0,  469,
-        0,   44,   46,   46,   46,   46,   46,   46,    0,    0,
-
-        0,    0,    0,    0,   58,   60,   60,   60,   60,    0,
-       72,   74,   74,   74,   74,    0,   92,   94,   94,   94,
-       94,   94,   94,   94,    0,  108,  110,  110,  110,  110,
-      110,    0,  128,  130,  130,  130,  130,  130,    0,    0,
-        0,    0,    0,    0,  150,  152,  152,  152,  152,  152,
-      152,    0,    0,  162,  164,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  178,  180,
-      180,  180,    0,    0,    0,    0,    0,  204,  206,  206,
-      206,  206,  206,  206,  206,  206,    0,    0,    0,    0,
-        0,    0,  230,  232,  232,    0,    0,  232,  232,  232,
-
-      232,    0,    0,    0,    0,    0,    0,    0,  260,  262,
-      262,  262,  262,  262,  262,  262,  262,  262,  262,    0,
-        0,    0,    0,    0,  302,  304,  304,  304,  304,  304,
-      304,  304,  304,  304,  304,  304,    0,    0,    0,    0,
-        0,  338,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,    0,    0,    0,    0,    0,
-        0,  372,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  374,    0,    0,    0,    0,    0,  404,
-      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
-        0,    0,    0,    0,    0,  444,  446,  446,  446,  446,
-
-      446,  446,  446,  446,  446,  446,  446,  446,  446,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        3,    0,    0,    0,    0,    0,    0,    0,  468,    0,
-       46,   46,   46,   46,   46,    0,    0,    0,    0,    0,
-        0,    0,   60,   60,    0,    0,    0,    0,   74,    0,
-        0,   74,    0,    0,   94,   94,    0,    0,   94,   94,
-       94,    0,    0,  110,  110,  110,  110,    0,    0,  130,
-        0,    0,  130,  130,    0,  120,  119,    0,  122,  121,
-        0,    0,    0,  152,    0,    0,  152,  152,  152,    0,
-        0,    0,    0,  158,  157,    0,  160,  159,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  180,
-      180,    0,  170,  169,    0,  172,  171,    0,    0,  206,
-        0,    0,  206,  206,  206,  206,  206,    0,  190,  189,
-        0,  192,  191,    0,    0,  232,    0,  222,  221,  232,
-        0,    0,  232,  232,    0,  220,  219,    0,  216,  215,
-        0,  218,  217,    0,    0,  262,  262,  262,    0,    0,
-      262,  262,  262,  262,    0,    0,    0,  240,  239,    0,
-      242,  241,    0,    0,  304,  304,  304,    0,    0,  304,
-      304,  304,  304,  304,  304,  304,    0,  270,  269,    0,
-      272,  271,    0,    0,  340,  340,    0,    0,  340,  340,
-
-      340,  340,  340,  340,    0,    0,  340,  340,    0,  314,
-      313,    0,  316,  315,    0,    0,  374,    0,    0,  374,
-      374,  374,  374,  374,  374,  374,  374,  374,    0,  350,
-      349,    0,  352,  351,    0,    0,  406,  406,  406,  406,
-        0,    0,  406,  406,  406,  406,    0,  384,  383,    0,
-      386,  385,    0,    0,  446,  446,  446,  446,  446,    0,
-        0,  446,  446,  446,  446,  446,  446,  446,    0,  416,
-      415,    0,  418,  417,    0,    0,    0,  463,    0,   30,
-        1,    0,    0,  456,    0,    0,    0,  453,  452,    0,
-        0,   46,   46,   46,   46,   46,    0,    0,    0,   48,
-
-        0,    0,    0,    0,    0,   60,   60,    0,   52,   51,
-        0,    0,   62,    0,   74,    0,   66,   65,    0,    0,
-        0,    0,   76,    0,   94,   94,    0,   80,   79,   94,
-       94,   94,    0,    0,   96,    0,  110,  110,  110,  110,
-        0,    0,  112,    0,  130,    0,  116,  115,  130,  130,
-        0,    0,    0,  132,    0,  152,    0,  136,  135,  152,
-      152,  152,  152,  152,    0,    0,    0,  154,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      166,    0,  180,  180,    0,    0,  182,    0,  206,    0,
-      186,  185,  206,  206,  206,  206,  206,    0,    0,  208,
-
-        0,  232,  232,    0,  212,  211,  232,  232,    0,    0,
-      234,    0,  262,  262,  262,    0,  238,  237,  262,  262,
-      262,  262,    0,  248,  247,    0,    0,  264,    0,  304,
-      304,  304,    0,  268,  267,  304,  304,  304,  304,  304,
-        0,    0,    0,    0,    0,    0,  306,    0,  340,  340,
-        0,  310,  309,  340,  340,  340,  340,  340,  340,    0,
-      322,  321,  340,  340,    0,    0,  342,    0,  374,    0,
-      346,  345,  374,  374,  374,  374,  374,  374,  374,  374,
-      374,    0,    0,  376,    0,  406,  406,  406,  406,    0,
-      380,  379,  406,  406,  406,  406,    0,    0,  408,    0,
-
-      446,  446,  446,  446,  446,    0,  412,  411,  446,  446,
-      446,  446,    0,    0,  446,  446,    0,    0,  448,    0,
-        0,    0,    0,  457,  451,    0,    0,    0,   46,   46,
-       46,   46,   46,    0,    0,    0,    0,   78,    0,   60,
-        0,    0,    0,   74,    0,   70,   69,    0,   94,    0,
-        0,   94,    0,    0,   94,    0,  110,  110,    0,    0,
-      110,    0,  130,  130,  130,    0,    0,  152,  152,  152,
-      152,  152,  152,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  378,    0,  180,  180,    0,    0,    0,
-      206,  206,  206,  206,  206,    0,  232,    0,    0,  232,
-
-      232,    0,  262,    0,    0,    0,    0,  262,    0,    0,
-      262,  262,    0,  304,  304,  304,    0,    0,  304,  304,
-      304,  304,  304,  304,    0,  278,  277,    0,  284,  283,
-        0,    0,    0,    0,    0,  340,    0,    0,  340,  340,
-      340,  340,  340,  340,    0,    0,    0,  374,  374,  374,
-      374,  374,  374,  374,  374,  374,    0,  406,  406,    0,
-        0,    0,    0,  406,    0,    0,  406,  406,    0,  446,
-      446,    0,    0,  446,    0,    0,  446,  446,  446,  446,
-        0,  430,  429,  446,  446,    0,    0,    0,    0,    0,
-       12,    0,  454,  455,   32,    0,    0,   46,   46,   46,
-
-       46,    0,    0,    0,   64,   78,    0,   60,    0,   54,
-       53,    0,    0,    0,    0,    0,    0,    0,   82,   81,
-       94,    0,   84,   83,   94,    0,  110,    0,    0,    0,
-      100,   99,  110,    0,  130,  130,  130,    0,    0,  152,
-      152,  152,  152,  152,    0,    0,  156,    0,    0,    0,
-        0,  184,    0,    0,    0,    0,  378,    0,  180,    0,
-        0,    0,    0,  202,  201,    0,    0,  206,  206,  206,
-      206,    0,    0,    0,    0,  228,  227,  232,  232,    0,
-      262,    0,  250,  249,    0,  258,  257,  262,    0,  252,
-      251,  262,  262,    0,  304,    0,    0,    0,    0,    0,
-
-      300,  299,  304,    0,    0,    0,    0,  304,    0,    0,
-      304,    0,    0,  324,  323,    0,  336,  335,  340,    0,
-      326,  325,  340,  340,  340,  340,    0,    0,  340,    0,
-        0,  370,  369,  374,  374,  374,  374,  374,  374,  374,
-        0,    0,  374,    0,    0,    0,  406,    0,  390,  389,
-        0,  402,  401,  406,    0,  388,  387,  406,    0,    0,
-        0,  446,  446,    0,  428,  427,  446,    0,  442,  441,
-      446,  446,  446,  446,  446,    0,    0,    0,    0,    0,
-        0,   11,   32,    0,   38,   37,   46,    0,    0,   46,
-       46,    0,    0,   50,   64,  114,   60,    0,    0,   68,
-
-       67,    0,    0,   86,   85,    0,    0,   94,    0,   95,
-        0,    0,    0,  104,  103,  110,    0,  130,  130,  130,
-      134,    0,    0,    0,  152,  152,  152,  152,    0,  138,
-      137,  156,    0,  168,  236,    0,  184,    0,    0,    0,
-      308,    0,  180,    0,  176,  175,    0,    0,  198,  197,
-      206,  206,  206,  206,    0,    0,  224,  223,  232,  232,
-        0,    0,    0,  262,  262,  262,    0,  304,  304,    0,
-      280,  279,    0,  286,  285,  304,    0,  282,  281,    0,
-      288,  287,  304,    0,  290,  289,  304,    0,  340,    0,
-        0,  340,  340,  340,    0,  332,  331,  340,    0,  374,
-
-      374,  374,  374,  374,  374,  374,    0,  366,  365,  374,
-        0,    0,  392,  391,  406,    0,    0,  406,  406,    0,
-      394,  393,    0,  407,  446,  446,    0,    0,  446,  446,
-      446,  446,  446,    0,  420,  419,    0,    0,    0,    0,
-       46,    0,   36,   35,   46,    0,    0,    0,    0,   47,
-       50,  114,   60,    0,    0,   75,    0,   88,   87,   94,
-        0,  102,  101,    0,    0,    0,  130,  130,    0,    0,
-      134,    0,    0,  140,  139,  152,  152,  152,  152,    0,
-      168,  236,    0,    0,    0,    0,  308,    0,  165,  180,
-        0,    0,    0,    0,    0,  206,    0,    0,    0,  207,
-
-        0,    0,    0,    0,    0,    0,  254,  253,    0,    0,
-      262,  262,    0,    0,    0,    0,    0,    0,    0,  304,
-      304,    0,    0,    0,    0,  328,  327,  340,  340,  340,
-        0,    0,    0,    0,    0,  374,  374,  374,  374,  374,
-      374,    0,    0,    0,    0,    0,    0,  398,  397,  406,
-        0,    0,  446,  446,    0,    0,    0,  422,  421,    0,
-        0,  446,  446,  446,    0,    0,    0,    0,    0,    0,
-        0,    0,   46,    0,   34,   33,    0,   60,    0,   61,
-       94,    0,  106,  105,    0,    0,    0,  130,    0,  118,
-      117,    0,  131,  152,    0,    0,  152,    0,    0,    0,
-
-      153,  266,  410,    0,    0,    0,    0,    0,  181,    0,
-      194,  193,    0,  200,  199,  206,    0,  188,  187,    0,
-      226,  225,    0,  214,  213,    0,    0,  244,  243,  262,
-      262,    0,  263,    0,  292,  291,    0,  294,  293,    0,
-      274,  273,  304,  304,    0,    0,  318,  317,  340,  340,
-      340,    0,  312,  311,    0,  341,    0,  354,  353,    0,
-        0,    0,    0,    0,    0,  374,    0,    0,  374,    0,
-      348,  347,    0,    0,  396,  395,  406,    0,  382,  381,
-        0,    0,    0,    0,    0,  432,  431,    0,  424,  423,
-      446,  446,    0,    0,    0,  414,  413,    0,  462,    0,
-
-        0,    0,   42,   41,    0,    0,   98,   60,    0,    0,
-        0,    0,  124,  123,  130,    0,    0,    0,  144,  143,
-        0,    0,    0,  142,  141,  266,  410,    0,  210,    0,
-      174,  173,  206,    0,  262,  262,  304,  304,    0,  340,
-        0,    0,  340,    0,  364,  363,    0,  362,  361,    0,
-      360,  359,  374,    0,  358,  357,  374,    0,  406,    0,
-      436,  435,    0,  438,  437,    0,    0,  446,    0,  440,
-      439,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   40,   39,   98,
-        0,    0,    0,   90,   89,    0,    0,    0,    0,  148,
-
-      147,    0,  146,  145,    0,  210,  206,    0,  262,  262,
-      304,  304,    0,  305,  340,    0,  330,  329,  340,  374,
-      374,    0,  406,    0,  434,  433,  446,    0,  447,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   56,   55,    0,
-      111,    0,  126,  125,    0,    0,    0,    0,  233,    0,
-        0,    0,    0,    0,    0,  304,  304,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  344,    0,  196,
-
-      195,    0,  246,  245,    0,  256,  255,    0,  276,  275,
-        0,    0,    0,    0,    0,  320,  319,    0,  334,  333,
-        0,  356,  355,    0,  368,  367,    0,    0,  400,  399,
-        0,  426,  425,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  344,    0,  296,  295,    0,  298,  297,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  375,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   22,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   17,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   14,    0,   20,    0,   15,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   21,    0,
-        0,    0,    0,   19,    0,   28,    0,   27,    0,    0,
-        0,   13,    0,    0,    0,    0,    0,    0,    0,   25,
-        0,    0,    0,   29,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   26,    0,   16,    0,    0,    0,    0,
-        0,    0,    0,   18,    0,   24,    0,    0,    0,    0,
-
-       23,    0
-    } ;
-
-static yyconst int yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
-        1,    1,    1,    1,   10,   11,   12,   13,   14,   15,
-       13,   13,   13,   13,   13,   13,   13,   16,   17,   18,
-       19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
-       28,   16,   29,   16,   16,   30,   31,   16,   32,   33,
-       16,   34,   35,   36,   16,   16,   37,   16,   38,   16,
-       39,    1,   40,    1,   16,    1,   41,   42,   43,   44,
-
-       45,   46,   47,   48,   49,   16,   50,   51,   52,   53,
-       54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
-       64,   65,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst int yy_meta[66] =
-    {   0,
-        1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
-        3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
-        1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    1,    1,
-        9,    9,    9,    9,    9,    9,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5
-    } ;
-
-static yyconst short int yy_base[3053] =
-    {   0,
-        0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
-       14,   17,   33,   36,   49,   55,   45,   61,   66,   72,
-      101,  162,   75,   78,  121,  125,  128,  131,  134,  182,
-      186,  189,  192,  195,  223,  272,  243,  247,  250,  253,
-      321,  371,  292,  296,  299,  302,  421,    0,  341,  344,
-      347,  350,  486,  548,  391,  394,  397,  400,  610,    0,
-      506,  510,  514,  517,  568,  572,  576,  579,  674,  677,
-      695,  757,  715,  718,  721,  724,  727,  777,  819,  883,
-      780,  783,  786,  789,  839,  842,  845,  848,  851,  903,
-      947, 1011,  906,  909,  912,  915, 1075,    0,  967,  970,
-
-      973,  976, 1140,    0,  979, 1031, 1034, 1037, 1205,    0,
-     1040, 1043, 1269, 1272, 1290,    0, 1354, 1357, 1360, 1363,
-     1381,    0, 1445, 1448, 1451, 1454, 1472,    0, 1536, 1539,
-     1542, 1545, 1563,    0, 1627, 1630, 1633, 1636, 1654,    0,
-     1718, 1721, 1724, 1727, 1729, 1740, 7513, 9896, 9896,   84,
-       95,   29,   41, 9896,  152,   51, 9896, 9896, 7501, 9896,
-     9896, 7490, 9896, 7505, 7489, 1727, 9896, 9896, 9896, 9896,
-     7487, 7487, 7448, 9896, 1730, 9896,  155, 7467,    0,  139,
-     9896, 7434, 7443,  107, 7438, 1735, 9896,  213, 1749, 1736,
-      200,  517, 9896,  216, 7452,    0,  201, 9896, 7408, 7402,
-
-     7406, 9896,  256,  524,  579, 9896,  305, 7429,    0,  525,
-     9896, 7387, 7403, 7400, 9896,  353,  586,  727, 9896,  403,
-     7424,    0,  587, 9896, 7389, 7383,  693, 7383, 7367, 9896,
-      539,  856, 9896,  600, 7399,    0,  735, 9896, 7357, 7364,
-     7371, 7366, 9896,  680,  859, 1744, 9896,  683, 7390,    0,
-      789, 9896, 7352, 7364, 7356, 7356, 1785, 1788,  851, 9896,
-      686, 1772,  920, 9896,  747, 7384,    0,  794, 9896, 7358,
-     7354,   42, 7348,  915, 9896,  809,  923, 9896,  814, 7375,
-        0,  857, 9896, 1792, 1795, 1810, 9896,  871, 7381,  984,
-      979, 9896,  935, 7372,    0,  921, 9896, 7329, 7344, 1806,
-
-     1816, 9896, 1004, 1048, 1043, 9896, 1275, 7363,    0,  924,
-     9896, 7337,   48, 7326, 7317, 7320, 7313, 1838, 1845, 9896,
-     1278, 1800, 1795, 9896, 1281, 7331,    0,  988, 9896, 7284,
-     1848, 7286, 7276, 7279, 1851, 1856, 1859, 9896, 1366, 1801,
-     1780, 9896, 1457, 7307,    0, 1049, 9896, 7283, 7271, 7279,
-     7279, 7277, 7255, 7262, 7245, 7243, 1869, 1877, 9896, 1548,
-     1864, 1863, 9896, 1639, 7276,    0, 1052, 9896, 7252, 7236,
-     7244, 7244, 7240, 7223, 7233, 7218, 7222, 7216, 1887, 1895,
-     9896, 1824, 1889, 1881, 9896, 1901, 7250,    0, 1861, 9896,
-     7214, 7222, 7221, 7219, 7201, 7207, 7210,   12, 7203,  474,
-
-     1905, 1909, 9896, 1915, 1910, 1915, 9896, 1923, 7217,    0,
-     1916, 9896, 7191, 7190, 7184,  536, 7186, 7173, 7172, 7162,
-      697, 1931, 1936, 9896, 1939, 1939, 1925, 9896, 1950, 7193,
-        0, 1924, 9896, 7160, 7161, 7154, 7161, 7161, 7160, 7143,
-     7137, 7133, 1954, 1960, 9896, 1963, 1963, 1964, 9896, 1968,
-     7160,    0, 1927, 9896, 7132,  490, 7132, 7125, 7123, 7115,
-     7112, 7115,  759, 7109, 1974, 1979, 9896, 1984, 1984, 9896,
-     7149, 7149, 1967, 7145, 7104, 1988,   18, 7079, 9896, 7127,
-     7116, 9896, 9896, 9896, 1986,  215, 7067, 7066, 7063, 7095,
-     7066, 9896,    0, 7057, 7063, 7059, 7043, 7042, 7050, 7060,
-
-     7041, 7026, 7031, 7032, 9896,    0, 7017, 7020, 2000, 7046,
-     9896,    0, 7019, 2007, 6994, 7031, 9896,    0, 7004, 6990,
-     2013, 7001, 6967, 6987, 6994, 9896,    0, 6961, 6977, 6958,
-     6967, 6971, 9896,    0, 6965, 2018, 6962, 6943, 2025, 2032,
-     2043, 2048, 6956, 6948, 9896,    0, 6935, 2056, 6919, 6924,
-     6932, 6914, 6940, 9896,    0, 2061, 2064, 2074, 2079, 6915,
-     6899, 6910, 6904, 6904,  274, 6902, 6900, 6912, 9896,    0,
-     6890, 6884, 2087, 2092, 2100, 2105, 6910, 9896,    0, 6876,
-     2113, 6885, 6878, 6875, 6866, 6854, 2118, 2121, 2131, 2136,
-     6881, 6864, 9896,    0, 6856, 2144, 2149, 6844, 2157, 6851,
-
-     6833, 2162, 2165, 2175, 2180, 2188, 2193, 6847, 9896,    0,
-     6811, 6807, 6812, 2201, 6816, 6815, 6799, 6791, 2206, 2209,
-     2212, 2220, 2227, 6820, 9896,    0, 6783, 6778, 6783, 2238,
-     6787, 6768, 6765, 6769, 6751,   80, 2241, 2244, 2252, 2259,
-     6774, 9896,    0, 6734, 6744, 2270, 6747, 6736, 6730, 6727,
-     6724, 6717, 2273, 6708, 6700, 2276, 2279, 2294, 2297, 6717,
-     6708, 9896,    0, 6692, 2305, 6695, 6672, 6680, 6676, 6671,
-     6659, 6659, 6651, 6639, 2308, 2312, 2326, 2329, 6662, 9896,
-        0, 6645, 6631, 6631, 6632, 2337, 6624, 6612, 6615, 6624,
-     2340, 2344, 2358, 2361, 6631, 9896,    0, 6618, 6616, 6605,
-
-      160, 2369, 6605, 6608, 6601, 6594, 6587, 6584, 6597, 2372,
-     2376, 2390, 2393, 6606, 6598, 6609, 6604, 6613,  721, 6566,
-     9896, 2390,    0, 6562, 6561, 6597, 6595, 6552, 9896, 6560,
-     6540, 6542, 6532, 6526, 6512, 6523, 2408, 2411, 6504, 6517,
-     6507, 6502, 6506, 6507, 2414, 2417, 2432, 2435, 6494, 2438,
-     2441, 2458, 2461, 2465, 6492, 6485, 2468, 2486, 6488, 6487,
-     6481, 2471, 2476, 6474, 6471, 6474, 6458, 2495, 2498, 6463,
-     2501, 2504, 6437, 6444, 2519, 9896, 9896, 2529, 9896, 9896,
-     6428, 2537, 2540, 6439, 2545, 2549,  485,  547, 6426, 6429,
-     2559, 2563, 2566, 9896, 9896, 2578, 9896, 9896, 6429, 6412,
-
-     6421, 6424, 6418, 6410, 6410, 6402, 6379, 2574, 2588, 6381,
-     6387, 2593, 9896, 9896, 2603, 9896, 9896, 2611, 2614, 6377,
-     2617, 2620, 6374, 6361, 6367, 6365, 6363, 2635, 9896, 9896,
-     2644, 9896, 9896, 2652, 2655, 6356, 2659, 9896, 9896, 6350,
-     2667, 2674, 6353, 6353, 2685, 9896, 9896, 2693, 9896, 9896,
-     2702, 9896, 9896, 2710, 2713, 6352, 6339, 6332, 2716, 2719,
-     6327, 6327, 6329, 6325, 2734, 2737, 2745, 9896, 9896, 2753,
-     9896, 9896, 2761, 2764, 6324, 6317, 6310, 2767, 2770, 6303,
-     6304, 6307, 6294, 6292, 2785, 2788, 2791, 9896, 9896, 2799,
-     9896, 9896, 2807, 2810, 6277, 6272, 2813, 2816, 6258, 6255,
-
-     6214, 6218, 6221, 6203, 2831, 2834, 6172, 6158, 2842, 9896,
-     9896, 2850, 9896, 9896, 2858, 2861, 6147, 2864, 2867, 6130,
-     6145, 6135, 6077, 6054, 6029, 6011, 6001, 5987, 2882, 9896,
-     9896, 2890, 9896, 9896, 2898, 2901, 5986, 5960, 5943, 5937,
-     2904, 2907, 5936, 5928, 5935, 5906, 2922, 9896, 9896, 2930,
-     9896, 9896, 2941, 2944, 5910, 5905, 5887, 5855, 5846, 2947,
-     2950, 5840, 5834, 5823, 5818, 2965, 5784, 5746, 2968, 9896,
-     9896, 2976, 9896, 9896, 2984, 2988, 5776, 9896, 5778, 9896,
-     9896,  343, 5744, 9896, 5750, 5745, 5684, 9896, 9896, 5680,
-     5684, 5676, 5652, 5653, 5650, 5616, 5612, 2991, 2994, 9896,
-
-     2997, 5594, 5549, 5525, 5533, 5499, 3003, 3017, 9896, 9896,
-     3025, 3028, 9896, 3031, 5461, 3034, 9896, 9896, 3050, 3053,
-     3061, 3064, 9896, 3068, 5462, 3072, 3076, 9896, 9896, 5405,
-     3090, 5394, 3094, 3097, 9896, 3100, 5359, 5337, 3103, 5341,
-     3108, 3121, 9896, 3127, 5296, 3130, 9896, 9896, 5284, 5295,
-     5281, 3140, 3146, 9896, 3153, 5249, 3159, 9896, 9896, 5244,
-     5217, 5218, 5186, 5166, 5139, 3167, 3172, 9896, 3175, 5107,
-     5095, 5086, 5025, 4973, 4985, 4925, 4934, 4907, 3178, 3181,
-     9896, 3187, 4890, 4876, 3200, 3206, 9896, 3209, 3212, 3215,
-     9896, 9896, 3230, 3234, 3240, 3243, 3252, 3261, 3264, 9896,
-
-     3270, 4863, 3276, 3294, 9896, 9896, 4802, 4772, 3284, 3303,
-     9896, 3306, 4674, 3310, 3313, 3316, 9896, 9896, 4653, 3331,
-     4625, 4619, 3334, 9896, 9896, 3342, 3349, 9896, 3352, 4612,
-      136, 3355, 3361, 9896, 9896, 4600,  399, 4599, 4562, 4540,
-     3373, 3376, 3384, 3387, 3395, 3398, 9896, 3402, 3405, 3410,
-     3417, 9896, 9896, 3429, 3432, 3435, 3438, 3441, 3459, 3462,
-     9896, 9896, 3470, 3477, 3473, 3480, 9896, 3483, 3502, 3505,
-     9896, 9896, 3520, 3523, 3527, 3531, 3534, 3541, 3545, 3552,
-     3559, 3555, 3563, 9896, 3585, 4523, 4506, 3566, 3588, 3606,
-     9896, 9896, 4485, 3592, 4412, 4388, 3596, 3615, 9896, 3618,
-
-     4372, 4331, 3621, 4307, 3624, 3628, 9896, 9896, 4191, 4197,
-     4155, 4143, 3642, 3645, 4145, 4118, 3653, 3656, 9896, 3660,
-     4128, 2004, 3663, 9896, 9896, 4078, 4070, 4038, 3666, 3675,
-     3684, 3687, 3693, 3998, 3696, 3952, 3931, 3705, 3926, 3934,
-     3711, 3716, 3724, 3730, 3733, 9896, 9896, 3748, 3751, 3754,
-     3757, 3775, 3778, 3781, 3789, 3796, 3880, 3800, 3803, 3808,
-     3864, 3821, 3846, 3835, 3835, 3782, 3824, 3730, 3720, 3720,
-     3655, 3598, 3827, 3526, 3830, 3466, 3441, 3419, 3405, 3398,
-     3340, 3283, 3237, 3833, 3845, 3151, 3850, 3854, 3857, 3876,
-     3868, 3887, 3890, 3893, 3896, 3914, 3917, 3920, 3923, 3940,
-
-     3946, 3949, 3143, 3952, 3964, 3960, 3972, 3110, 3982, 3985,
-     3117, 3069, 3996, 3033, 4000, 4003, 4007, 4011, 2961, 4021,
-     4025, 2941, 4028, 2914, 4032, 9896, 9896, 4047, 9896, 9896,
-     4055, 4058, 4061, 4069, 4076, 2883, 4087, 4090, 2869, 2878,
-     2824, 2782, 4098, 2777, 4101, 4105, 4109, 2726, 2653, 2651,
-     2583, 2585, 2533, 2407, 4123, 2349, 4126, 4129, 4132, 4135,
-     4153, 4161, 4165, 4174, 4179, 4182, 4192, 4197, 4200, 2329,
-     2268, 4203, 4206, 2258, 4215, 4224, 2133, 2131, 2089, 2005,
-     4233, 9896, 9896, 1908, 4242, 4245, 1925,   51, 1816, 4249,
-     9896, 1759, 9896, 9896, 3860, 4252, 4264,   65, 4260,   71,
-
-       92,  149, 4272,  132, 4278, 4281,  177,  194, 4284, 9896,
-     9896, 4292, 4295, 4298, 4316, 4319, 4322, 4337, 9896, 9896,
-     4345, 4348, 9896, 9896, 4357, 4363, 4366, 4369, 4375, 4387,
-     9896, 9896, 4395, 4398,  212,  244,  252,  257, 4401, 4405,
-     4409, 4413, 4423, 4427, 4431, 4435, 4445, 4449,  280,  305,
-      341, 4455,  320,  336,  355,  360, 4458, 4461,  360, 4464,
-     4471, 4485, 4488, 9896, 9896, 4496, 4504,  447,  461,  480,
-      519, 4499, 4518, 4521, 4529, 9896, 9896,  523,  551, 4538,
-     4543, 4546, 9896, 9896, 4557, 9896, 9896, 4565, 4568, 9896,
-     9896, 4578, 4583, 4586,  679, 4589, 4592, 4607, 4610, 4619,
-
-     9896, 9896,  544, 4627, 4633, 4641, 4645,  552, 4653, 4659,
-      636, 4667, 4671, 9896, 9896, 4679, 9896, 9896,  656, 4687,
-     9896, 9896, 4695,  701,  728,  747, 4699, 4702,  758, 4717,
-     4720, 9896, 9896,  759,  784,  814,  822,  816,  833,  824,
-     4728, 4732,  854, 4740, 4746, 4749,  867, 4764, 9896, 9896,
-     4773, 9896, 9896, 4781, 4784, 9896, 9896,  889, 4792, 4795,
-     4803,  883,  906, 4806, 9896, 9896, 4814, 4818, 9896, 9896,
-      935,  941,  941,  944,  954, 4826, 4832, 4840,  967, 1797,
-     1986, 9896, 4601, 4844, 9896, 9896,  982, 4852, 4855, 1008,
-     4863, 1006, 4866, 4870, 4873, 4876, 1011, 4881, 4886, 9896,
-
-     9896, 4894, 4900, 9896, 9896, 4908, 4913, 1010, 4921, 9896,
-     4926, 4929, 4940, 9896, 9896, 4948, 4951, 1010, 1010, 4954,
-     4957, 4961, 4966, 4973, 1023, 1238, 1240, 1241, 4984, 9896,
-     9896, 4992, 4995, 4998, 5001, 1317, 5004, 1315, 1339, 1329,
-     5007, 5010, 1313, 5015, 9896, 9896, 5023, 5029, 9896, 9896,
-     5037, 5042, 5045, 5048, 5055, 5067, 9896, 9896, 5075, 5079,
-     5082, 5086, 5097, 5089, 5093, 5107, 5111, 5114, 5117, 5121,
-     9896, 9896, 5135, 9896, 9896, 5143, 5147, 9896, 9896, 5165,
-     9896, 9896, 5156, 5174, 9896, 9896, 5182, 5185, 5188, 5191,
-     5194, 5209, 5214, 5217, 5220, 9896, 9896, 5228, 5235, 5240,
-
-     5246, 5250, 5254, 5258, 5277, 5280, 5284, 9896, 9896, 5299,
-     5303, 5307, 9896, 9896, 5317, 5322, 5325, 5340, 5343, 5346,
-     9896, 9896, 5354, 9896, 1365, 5361, 5364, 5367, 5375, 1408,
-     1405, 1408, 5382, 5387, 9896, 9896, 5395, 1445, 1533, 1817,
-     5400, 5403, 9896, 9896, 5414, 5418, 5421, 1422, 5432, 9896,
-     5436, 5439, 1416, 5443, 5446, 9896, 5455, 9896, 9896, 1426,
-     5465, 9896, 9896, 5473, 5476, 5484, 5487, 1501, 5491, 5494,
-     5505, 5509, 5512, 9896, 9896, 1497, 5520, 1499, 5523, 5528,
-     5531, 5541, 1498, 1503, 1593, 1595, 5547, 5550, 9896, 5553,
-     5556, 5559, 5562, 5571, 5577, 5585, 5589, 5592, 5603, 9896,
-
-     5607, 5610, 5618, 5625, 5636, 5639, 9896, 9896, 5647, 5651,
-     5659, 5665, 5668, 5671, 5683, 5677, 5691, 5700, 5703, 5711,
-     5718, 5721, 5724, 5729, 5742, 9896, 9896, 5750, 5753, 5757,
-     5762, 5776, 5784, 5787, 5790, 5810, 5813, 5816, 5819, 5822,
-     5840, 5843, 5846, 5854, 5861, 5864, 5873, 9896, 9896, 5884,
-     5888, 5891, 5902, 5907, 5910, 5913, 5928, 9896, 9896, 5936,
-     5939, 1590, 1590, 5947, 5950, 5954, 5968, 1611, 5971, 1975,
-     5974, 5977, 5992, 5995, 9896, 9896, 1598, 1596, 6003, 9896,
-     6006, 6010, 9896, 9896, 6018, 6025, 6028, 1683, 6037, 9896,
-     9896, 6045, 9896, 6048, 6051, 6054, 6069, 6072, 6075, 6083,
-
-     9896, 6090, 6093, 1697, 1705, 6096, 6102, 6110, 9896, 6114,
-     9896, 9896, 6122, 9896, 9896, 6130, 6133, 9896, 9896, 6141,
-     9896, 9896, 6149, 9896, 9896, 6157, 6160, 9896, 9896, 6168,
-     6171, 6176, 9896, 6179, 9896, 9896, 6189, 9896, 9896, 6197,
-     9896, 9896, 6207, 6210, 6213, 6221, 9896, 9896, 6216, 6234,
-     6237, 6240, 9896, 9896, 6248, 9896, 6256, 9896, 9896, 6275,
-     6278, 6286, 6289, 6299, 6304, 6312, 6317, 6320, 6330, 6335,
-     9896, 9896, 6343, 6348, 9896, 9896, 6356, 6365, 9896, 9896,
-     6376, 6379, 6387, 6394, 6405, 9896, 9896, 6413, 9896, 9896,
-     6421, 1698, 6424, 6427, 6435, 9896, 9896, 6443, 9896, 6501,
-
-     1733, 6446, 9896, 9896, 6454, 6458, 6466, 6472, 6475, 6478,
-     6486, 6505, 9896, 9896, 6493, 6496, 6539, 6547, 9896, 9896,
-     6514, 6555, 6563, 9896, 9896, 6571, 6574, 1711, 6577, 6580,
-     9896, 9896, 6588, 6591, 6594, 6597, 6600, 6606, 6618, 6624,
-     6628, 6651, 6631, 6660, 9896, 9896, 6668, 9896, 9896, 6676,
-     9896, 9896, 6684, 6689, 9896, 9896, 6697, 6702, 6705, 6708,
-     9896, 9896, 6717, 9896, 9896, 6725, 6728, 1708, 6736, 9896,
-     9896, 6744, 1803, 1993, 1875, 1804, 2051, 2035, 1960, 2028,
-     1974, 2246, 2010, 2052, 2064, 2090, 6751, 9896, 9896, 6759,
-     6763, 6766, 6774, 9896, 9896, 6782, 6785, 6788, 6797, 9896,
-
-     9896, 6805, 9896, 9896, 1719, 6813, 6816, 6819, 6822, 6825,
-     6828, 6834, 6848, 9896, 6852, 6855, 9896, 9896, 6863, 6870,
-     6873, 6876, 6881, 6884, 9896, 9896, 6895, 6899, 9896, 1857,
-     2059, 2067, 2054, 2109, 2153, 2108, 2116, 2092, 2129, 2173,
-     2155, 2123, 2023, 2181, 2199, 2214, 6902, 9896, 9896, 6913,
-     9896, 6919, 9896, 9896, 1710, 6927, 6932, 6940, 9896, 6945,
-     6948, 6959, 6963, 6971, 6977, 6985, 6989, 6992, 6996, 7010,
-     7013, 7021, 7024, 7032, 7035, 7043, 7046, 7050, 7058, 7064,
-     2238, 1987, 2121, 2250, 2231, 2168, 2244, 2212, 2215, 2270,
-     2274, 2299, 2282, 2331, 2285, 2305, 7072, 7076, 7080, 9896,
-
-     9896, 7091, 9896, 9896, 7099, 9896, 9896, 7107, 9896, 9896,
-     7115, 7118, 7126, 7129, 7137, 9896, 9896, 7145, 9896, 9896,
-     7153, 9896, 9896, 7161, 9896, 9896, 7169, 7172, 9896, 9896,
-     7181, 9896, 9896, 2300, 2316, 2332, 2348, 2349, 7189, 2346,
-     2361, 2364, 2402, 2405, 2407, 2409, 7192, 2431, 2335, 7195,
-     7198, 7217, 7221, 9896, 9896, 7229, 9896, 9896, 7237, 2180,
-     2438, 2429, 2463, 7240, 7243, 7246, 7249, 2491, 2496, 2534,
-     2474, 2499, 7252, 7271, 2497, 7277, 7300, 7340, 7290, 9896,
-     7311, 7330, 7333, 2412, 7352, 2573, 7361, 7364, 7371, 2516,
-     2489, 2551, 7374, 2590, 7386, 2580, 7398, 7421, 7461, 7411,
-
-     7451, 7454, 2367, 2605, 2494, 2622, 2644, 7473, 2514, 2581,
-     2615, 7492, 2568, 2654, 2664, 7495, 2631, 2665, 2689, 2704,
-     7432, 2709, 2714, 2725, 2763, 2758, 7500, 2712, 2492, 2801,
-     2806, 2837, 2821, 2809, 2854, 2860, 2862, 7503, 2878, 2653,
-     2899, 2902, 2895, 7514, 2755, 7522, 2920, 2829, 2921, 7533,
-     2938, 2940, 2945, 2982, 3057, 2983, 2218, 2990, 3021, 3024,
-     3088, 2681, 7537, 3053, 2859, 3095, 7541, 3099, 3120, 3125,
-     3132, 3026, 2993, 7544, 3096, 3166, 3168, 3205, 2955, 3185,
-     3173, 7548, 3230, 3210, 3202, 3238, 3308, 3310, 3118, 7563,
-     7571, 7567, 7582, 3311, 3215, 7586, 3250, 3340, 7590, 7601,
-
-     3256, 3353, 7605, 7609, 7612, 3257, 7624, 2673, 2765, 7632,
-     7644, 7620, 3301, 7652, 3374, 7655, 3029, 3397, 7659, 3410,
-     7674, 7679, 7687, 7699, 3396, 3432, 3482, 2732, 2867, 3493,
-     3583, 3594, 3613, 7707, 3436, 3328, 3433, 7719, 3117, 3207,
-     3616, 3652, 3472, 7727, 3673, 3682, 3709, 3751, 3755, 3819,
-     7738, 3375, 3408, 2757, 3450, 3532, 3655, 3691, 3745, 3823,
-     3825, 7741, 3348, 3481, 3846, 3855, 3553, 3557, 3801, 3881,
-     3497, 3887, 3888, 3890, 3908, 3910, 3962, 3998, 4019, 7746,
-     3564, 3633, 2909, 3005, 3672, 3697, 3725, 3766, 4026, 4034,
-     7761, 3752, 7769, 4066, 4090, 3030, 3521, 3818, 3972, 7772,
-
-     4094, 4099, 4017, 4025, 4032, 4048, 4103, 4121, 3937, 4100,
-     4170, 4204, 1872, 2629, 4238, 4252, 4258, 4309, 4123, 4130,
-     4102, 4257, 3490, 7776, 4172, 4211, 2670, 3281, 4310, 4333,
-     7784, 4283, 4286, 4367, 4425, 4451, 4459, 4464, 4465, 4324,
-     4360, 4022, 4218, 3776, 3894, 4221, 4523, 4545, 4553, 4473,
-     4475, 4372, 4533, 3619, 4269, 4336, 4476, 4580, 3952, 4169,
-     4604, 4607, 4456, 4621, 4597, 4614, 4675, 4689, 4696, 4734,
-     4752, 4758, 4288, 4293, 4314, 4375, 3240, 3703, 4531, 4534,
-     4632, 4695, 4760, 4820, 4296, 4462, 7795, 4644, 4690, 4888,
-     4928, 4633, 4705, 4713, 4769, 4741, 4782, 4963, 5009, 4805,
-
-     4843, 4861, 4874, 4893, 4972, 4693, 4739, 4969, 5048, 5016,
-     5022, 5102, 5114, 5120, 5122, 5043, 5128, 4799, 4873, 7799,
-     4707, 4754, 5162, 5207, 5220, 5226, 5143, 5145, 4942, 5108,
-     5254, 5288, 5150, 5255, 5274, 5333, 5341, 5352, 5042, 5054,
-     5331, 5388, 3341, 4817, 5409, 5440, 5461, 5497, 5367, 5411,
-     5214, 5445, 4842, 4914, 4887, 5002, 5442, 5479, 4141, 5123,
-     5580, 5615, 5225, 5247, 5508, 5526, 5632, 5638, 5657, 5696,
-     5714, 5727, 5729, 5730, 5265, 5295, 7807, 5408, 5463, 5597,
-     5527, 5757, 5763, 5764, 5783, 5310, 5549, 5688, 5817, 5790,
-     5810, 7810, 5612, 5616, 5820, 5840, 5852, 5864, 5627, 5915,
-
-     5833, 5924, 5863, 5927, 5709, 5777, 7814, 7818, 9896, 7821,
-     7829, 5962, 5980, 5861, 5903, 5361, 5453, 5941, 5998, 5997,
-     6015, 7833, 9896, 7840, 6025, 6039, 6060, 6081, 7843, 7848,
-     7852, 6102, 6121, 7855, 9896, 7862, 9896, 7867, 9896, 7874,
-     6177, 6184, 5562, 5577, 5908, 6048, 7877, 7881, 9896, 6062,
-     6089, 7886, 7889, 9896, 7896, 9896, 7900, 9896, 6134, 6118,
-     7908, 9896, 6225, 6147, 5907, 6099, 6227, 6228, 7911, 9896,
-     6255, 6265, 7915, 9896, 7919, 7922, 6284, 6291, 6249, 6148,
-     6277, 6185, 7930, 9896, 7934, 9896, 6237, 6266, 7941, 7944,
-     6320, 6328, 7949, 9896, 7953, 9896, 6336, 6254, 7956, 7963,
-
-     9896, 9896, 7983, 7992, 8001, 8010, 8019, 8028, 8037, 8046,
-     8055, 8064, 8073, 8082, 8091, 8100, 8109, 8118, 8127, 8136,
-     8145, 8154, 8163, 8172, 8181, 8190, 8199, 8208, 8217, 8226,
-     8235, 8244, 8253, 8262, 8271, 8278, 8285, 8292, 8299, 8306,
-     8313, 8320, 8327, 8334, 8341, 8348, 8355, 8362, 8369, 8376,
-     8383, 8390, 8399, 8404, 8409, 8414, 8419, 8424, 8429, 8434,
-     8439, 8444, 8449, 8454, 8459, 8464, 8471, 8476, 8483, 8488,
-     8495, 8500, 8507, 8512, 8521, 8527, 8534, 8542, 8549, 8557,
-     8564, 8572, 8579, 8587, 8594, 8602, 8609, 8617, 8624, 8632,
-     8640, 8647, 8655, 8662, 8670, 8677, 8685, 8692, 8700, 8707,
-
-     8715, 8722, 8730, 8737, 8745, 8752, 8760, 8767, 8775, 8784,
-     8790, 8797, 8805, 8812, 8820, 8827, 8835, 8842, 8850, 8857,
-     8865, 8872, 8880, 8887, 8895, 8903, 8910, 8918, 8926, 8934,
-     8941, 8949, 8956, 8964, 8971, 8979, 8987, 8995, 9003, 9011,
-     9018, 9026, 9033, 9041, 9050, 9059, 9067, 9075, 9082, 9090,
-     9098, 9106, 9114, 9122, 9129, 9137, 9144, 9152, 9159, 9167,
-     9175, 9182, 9190, 9198, 9206, 9214, 9222, 9229, 9237, 9244,
-     9252, 9259, 9267, 9274, 9282, 9290, 9298, 9305, 9313, 9322,
-     9331, 9338, 9346, 9353, 9361, 9369, 9377, 9385, 9393, 9401,
-     9408, 9416, 9424, 9432, 9440, 9447, 9455, 9462, 9470, 9477,
-
-     9485, 9493, 9501, 9508, 9516, 9523, 9531, 9538, 9546, 9553,
-     9561, 9568, 9576, 9585, 9594, 9601, 9609, 9616, 9624, 9632,
-     9639, 9647, 9655, 9662, 9670, 9677, 9685, 9693, 9700, 9708,
-     9716, 9724, 9732, 9740, 9748, 9756, 9764, 9772, 9780, 9788,
-     9796, 9804, 9812, 9819, 9827, 9836, 9845, 9853, 9860, 9868,
-     9877, 9886
-    } ;
-
-static yyconst short int yy_def[3053] =
-    {   0,
-     2803, 2803, 2804, 2804, 2804, 2804, 2805, 2805, 2806, 2806,
-     2807, 2807, 2808, 2808, 2808, 2808, 2809, 2809, 2810, 2810,
-     2811, 2811, 2810, 2810, 2812, 2812, 2810, 2810, 2812, 2812,
-     2812, 2812, 2810, 2810, 2813, 2813, 2814, 2814, 2810, 2810,
-     2815, 2815, 2816, 2816, 2810, 2810, 2802,   47, 2817, 2817,
-     2810, 2810, 2818, 2818, 2819, 2819, 2810, 2810, 2802,   59,
-     2810, 2810, 2810, 2810, 2820, 2820, 2820, 2820, 2810, 2810,
-     2821, 2821, 2810, 2810, 2822, 2822, 2810, 2810, 2823, 2823,
-     2810, 2810, 2810, 2810, 2824, 2824, 2824, 2824, 2810, 2810,
-     2825, 2825, 2826, 2826, 2810, 2810, 2802,   97, 2827, 2827,
-
-     2810, 2810, 2802,  103, 2828, 2828, 2810, 2810, 2802,  109,
-     2829, 2829, 2810, 2810, 2802,  115, 2830, 2830, 2810, 2810,
-     2802,  121, 2831, 2831, 2810, 2810, 2802,  127, 2832, 2832,
-     2810, 2810, 2802,  133, 2833, 2833, 2810, 2810, 2802,  139,
-     2810, 2810, 2834, 2834, 2835, 2835, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2836, 2802,
-     2802, 2836, 2836, 2836, 2836, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2837, 2802, 2802, 2837, 2837,
-
-     2837, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2838, 2802,
-     2802, 2838, 2838, 2838, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2839, 2802, 2802, 2839, 2839, 2839, 2839, 2839, 2802,
-     2802, 2802, 2802, 2802, 2802, 2840, 2802, 2802, 2840, 2840,
-     2840, 2840, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2841,
-     2802, 2802, 2841, 2841, 2841, 2841, 2841, 2841, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2842, 2802, 2802, 2842,
-     2842, 2842, 2842, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2843, 2802, 2802, 2843, 2843, 2802, 2802, 2802,  286, 2802,
-     2802, 2802, 2802, 2802, 2844, 2802, 2802, 2844, 2844, 2844,
-
-     2844, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2845, 2802,
-     2802, 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2845, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2846, 2802, 2802, 2846,
-     2846, 2846, 2846, 2846, 2846, 2846, 2846, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2847, 2802, 2802, 2847, 2847, 2847,
-     2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2848, 2802, 2802, 2848, 2848,
-     2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848, 2848,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2849, 2802, 2802,
-     2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849, 2849,
-
-     2849, 2849, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2850,
-     2802, 2802, 2850, 2850, 2850, 2850, 2850, 2850, 2850, 2850,
-     2850, 2850, 2850, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2851, 2802, 2802, 2851, 2851, 2851, 2851, 2851, 2851, 2851,
-     2851, 2851, 2851, 2851, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2852, 2802, 2802, 2852, 2852, 2852, 2852, 2852, 2852,
-     2852, 2852, 2852, 2852, 2852, 2852, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2853, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2836, 2836, 2836, 2836, 2836, 2836, 2802, 2854,
-
-     2802, 2802, 2802, 2802, 2802, 2837, 2837, 2837, 2837, 2855,
-     2802, 2838, 2838, 2838, 2838, 2856, 2802, 2839, 2839, 2839,
-     2839, 2839, 2839, 2839, 2857, 2802, 2840, 2840, 2840, 2840,
-     2840, 2858, 2802, 2841, 2841, 2841, 2841, 2841, 2802, 2802,
-     2802, 2802, 2802, 2859, 2802, 2842, 2842, 2842, 2842, 2842,
-     2842, 2802, 2860, 2802, 2843, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2861, 2802, 2844,
-     2844, 2844, 2802, 2802, 2802, 2802, 2862, 2802, 2845, 2845,
-     2845, 2845, 2845, 2845, 2845, 2845, 2802, 2802, 2802, 2802,
-     2863, 2802, 2802, 2846, 2846, 2802, 2802, 2846, 2846, 2846,
-
-     2846, 2802, 2802, 2802, 2802, 2802, 2802, 2864, 2802, 2847,
-     2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2847, 2802,
-     2802, 2802, 2802, 2865, 2802, 2848, 2848, 2848, 2848, 2848,
-     2848, 2848, 2848, 2848, 2848, 2848, 2802, 2802, 2802, 2802,
-     2866, 2802, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867,
-     2867, 2867, 2867, 2867, 2867, 2802, 2802, 2802, 2802, 2868,
-     2802, 2802, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2869,
-     2869, 2869, 2869, 2869, 2802, 2802, 2802, 2802, 2870, 2802,
-     2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871, 2871,
-     2802, 2802, 2802, 2802, 2872, 2802, 2873, 2873, 2873, 2873,
-
-     2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2873, 2802,
-     2802, 2802, 2802, 2874, 2802, 2802, 2875, 2802, 2875, 2802,
-     2802, 2802, 2876, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2877, 2877, 2877, 2877, 2877, 2802, 2878, 2878, 2802, 2802,
-     2802, 2802, 2879, 2879, 2802, 2802, 2880, 2880, 2881, 2802,
-     2802, 2881, 2882, 2882, 2883, 2883, 2802, 2802, 2883, 2883,
-     2883, 2884, 2884, 2885, 2885, 2885, 2885, 2886, 2886, 2887,
-     2802, 2802, 2887, 2887, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2888, 2888, 2889, 2802, 2802, 2889, 2889, 2889, 2802,
-     2890, 2890, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2891, 2891, 2892,
-     2892, 2802, 2802, 2802, 2802, 2802, 2802, 2893, 2893, 2894,
-     2802, 2802, 2894, 2894, 2894, 2894, 2894, 2802, 2802, 2802,
-     2802, 2802, 2802, 2895, 2895, 2896, 2802, 2802, 2802, 2896,
-     2802, 2802, 2896, 2896, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2897, 2897, 2898, 2898, 2898, 2802, 2802,
-     2898, 2898, 2898, 2898, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2899, 2899, 2900, 2900, 2900, 2802, 2802, 2900,
-     2900, 2900, 2900, 2900, 2900, 2900, 2802, 2802, 2802, 2802,
-     2802, 2802, 2901, 2901, 2902, 2902, 2802, 2802, 2902, 2902,
-
-     2902, 2902, 2902, 2902, 2802, 2802, 2902, 2902, 2802, 2802,
-     2802, 2802, 2802, 2802, 2903, 2903, 2904, 2802, 2802, 2904,
-     2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2802, 2802,
-     2802, 2802, 2802, 2802, 2905, 2905, 2906, 2906, 2906, 2906,
-     2802, 2802, 2906, 2906, 2906, 2906, 2802, 2802, 2802, 2802,
-     2802, 2802, 2907, 2907, 2908, 2908, 2908, 2908, 2908, 2802,
-     2802, 2908, 2908, 2908, 2908, 2908, 2908, 2908, 2802, 2802,
-     2802, 2802, 2802, 2802, 2909, 2909, 2802, 2802, 2910, 2802,
-     2802, 2910, 2802, 2802, 2911, 2802, 2802, 2802, 2802, 2802,
-     2802, 2912, 2912, 2912, 2912, 2912, 2802, 2802, 2913, 2802,
-
-     2913, 2802, 2802, 2802, 2802, 2914, 2914, 2802, 2802, 2802,
-     2802, 2915, 2802, 2915, 2916, 2802, 2802, 2802, 2802, 2802,
-     2802, 2917, 2802, 2917, 2918, 2918, 2802, 2802, 2802, 2918,
-     2918, 2918, 2802, 2919, 2802, 2919, 2920, 2920, 2920, 2920,
-     2802, 2921, 2802, 2921, 2922, 2802, 2802, 2802, 2922, 2922,
-     2802, 2802, 2923, 2802, 2923, 2924, 2802, 2802, 2802, 2924,
-     2924, 2924, 2924, 2924, 2802, 2802, 2925, 2802, 2925, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2926,
-     2802, 2926, 2927, 2927, 2802, 2928, 2802, 2928, 2929, 2802,
-     2802, 2802, 2929, 2929, 2929, 2929, 2929, 2802, 2930, 2802,
-
-     2930, 2931, 2931, 2802, 2802, 2802, 2931, 2931, 2802, 2932,
-     2802, 2932, 2933, 2933, 2933, 2802, 2802, 2802, 2933, 2933,
-     2933, 2933, 2802, 2802, 2802, 2802, 2934, 2802, 2934, 2935,
-     2935, 2935, 2802, 2802, 2802, 2935, 2935, 2935, 2935, 2935,
-     2802, 2802, 2802, 2802, 2802, 2936, 2802, 2936, 2937, 2937,
-     2802, 2802, 2802, 2937, 2937, 2937, 2937, 2937, 2937, 2802,
-     2802, 2802, 2937, 2937, 2802, 2938, 2802, 2938, 2939, 2802,
-     2802, 2802, 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2939,
-     2939, 2802, 2940, 2802, 2940, 2941, 2941, 2941, 2941, 2802,
-     2802, 2802, 2941, 2941, 2941, 2941, 2802, 2942, 2802, 2942,
-
-     2943, 2943, 2943, 2943, 2943, 2802, 2802, 2802, 2943, 2943,
-     2943, 2943, 2802, 2802, 2943, 2943, 2802, 2944, 2802, 2944,
-     2802, 2945, 2946, 2802, 2802, 2802, 2802, 2802, 2947, 2947,
-     2947, 2947, 2947, 2802, 2948, 2802, 2802, 2802, 2802, 2949,
-     2802, 2802, 2950, 2951, 2802, 2802, 2802, 2952, 2953, 2802,
-     2802, 2953, 2802, 2802, 2953, 2954, 2955, 2955, 2802, 2802,
-     2955, 2956, 2957, 2957, 2957, 2802, 2958, 2959, 2959, 2959,
-     2959, 2959, 2959, 2802, 2960, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2961, 2962, 2962, 2963, 2802, 2802,
-     2964, 2964, 2964, 2964, 2964, 2965, 2966, 2802, 2802, 2966,
-
-     2966, 2967, 2968, 2802, 2802, 2802, 2802, 2968, 2802, 2802,
-     2968, 2968, 2969, 2970, 2970, 2970, 2802, 2802, 2970, 2970,
-     2970, 2970, 2970, 2970, 2802, 2802, 2802, 2802, 2802, 2802,
-     2971, 2802, 2802, 2802, 2802, 2972, 2802, 2802, 2972, 2972,
-     2972, 2972, 2972, 2972, 2973, 2802, 2802, 2974, 2974, 2974,
-     2974, 2974, 2974, 2974, 2974, 2974, 2975, 2976, 2976, 2802,
-     2802, 2802, 2802, 2976, 2802, 2802, 2976, 2976, 2977, 2978,
-     2978, 2802, 2802, 2978, 2802, 2802, 2978, 2978, 2978, 2978,
-     2802, 2802, 2802, 2978, 2978, 2979, 2802, 2980, 2981, 2981,
-     2802, 2981, 2802, 2802, 2802, 2802, 2802, 2982, 2982, 2982,
-
-     2982, 2802, 2983, 2802, 2802, 2802, 2802, 2984, 2802, 2802,
-     2802, 2985, 2802, 2802, 2986, 2802, 2802, 2802, 2802, 2802,
-     2987, 2802, 2802, 2802, 2987, 2988, 2989, 2802, 2802, 2802,
-     2802, 2802, 2989, 2990, 2991, 2991, 2991, 2802, 2992, 2993,
-     2993, 2993, 2993, 2993, 2802, 2802, 2802, 2994, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2995, 2996, 2802,
-     2802, 2997, 2802, 2802, 2802, 2802, 2802, 2998, 2998, 2998,
-     2998, 2999, 2802, 2802, 2802, 2802, 2802, 3000, 3000, 3001,
-     3002, 2802, 2802, 2802, 2802, 2802, 2802, 3002, 2802, 2802,
-     2802, 3002, 3002, 3003, 3004, 2802, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 3004, 2802, 2802, 2802, 2802, 3004, 2802, 2802,
-     3004, 3005, 2802, 2802, 2802, 2802, 2802, 2802, 3006, 2802,
-     2802, 2802, 3006, 3006, 3006, 3006, 2802, 2802, 3006, 3007,
-     2802, 2802, 2802, 3008, 3008, 3008, 3008, 3008, 3008, 3008,
-     2802, 2802, 3008, 3009, 2802, 2802, 3010, 2802, 2802, 2802,
-     2802, 2802, 2802, 3010, 2802, 2802, 2802, 3010, 2802, 2802,
-     3011, 3012, 3012, 2802, 2802, 2802, 3012, 2802, 2802, 2802,
-     3012, 3012, 3012, 3012, 3012, 2802, 2802, 3013, 2802, 3014,
-     3015, 2802, 2802, 2802, 2802, 2802, 3016, 2802, 2802, 3016,
-     3016, 2802, 3017, 2802, 2802, 2802, 3018, 3019, 2802, 2802,
-
-     2802, 3020, 2802, 2802, 2802, 2802, 2802, 3021, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3022, 3023, 3024, 3024, 3024,
-     2802, 3025, 2802, 2802, 3026, 3026, 3026, 3026, 2802, 2802,
-     2802, 2802, 3027, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 3028, 3029, 2802, 2802, 2802, 3030, 2802, 2802, 2802,
-     3031, 3031, 3031, 3031, 3032, 2802, 2802, 2802, 3033, 3033,
-     3034, 2802, 2802, 3035, 3035, 3035, 3036, 3037, 3037, 2802,
-     2802, 2802, 2802, 2802, 2802, 3037, 2802, 2802, 2802, 2802,
-     2802, 2802, 3037, 2802, 2802, 2802, 3037, 3038, 3039, 2802,
-     2802, 3039, 3039, 3039, 2802, 2802, 2802, 3039, 3040, 3041,
-
-     3041, 3041, 3041, 3041, 3041, 3041, 2802, 2802, 2802, 3041,
-     3042, 2802, 2802, 2802, 3043, 2802, 2802, 3043, 3043, 2802,
-     2802, 2802, 2802, 2802, 3044, 3044, 2802, 2802, 3044, 3044,
-     3044, 3044, 3044, 2802, 2802, 2802, 3045, 2802, 3046, 3047,
-     3048, 2802, 2802, 2802, 3048, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 3049, 3050, 2802, 2802, 2802, 2802, 2802, 3021,
-     2802, 2802, 2802, 2802, 2802, 3023, 3024, 3024, 2802, 2802,
-     2802, 3025, 2802, 2802, 2802, 3026, 3026, 3026, 3026, 3027,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 3029,
-     3030, 2802, 2802, 2802, 2802, 3031, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 3034, 2802, 2802, 2802, 2802, 2802,
-     3035, 3035, 3036, 2802, 2802, 2802, 2802, 2802, 2802, 3037,
-     3037, 3038, 2802, 2802, 2802, 2802, 2802, 3039, 3039, 3039,
-     2802, 2802, 3040, 2802, 2802, 3041, 3041, 3041, 3041, 3041,
-     3041, 2802, 2802, 3042, 2802, 2802, 2802, 2802, 2802, 3043,
-     2802, 2802, 3044, 3044, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 3044, 3044, 3044, 2802, 2802, 3045, 2802, 3046, 3047,
-     2802, 2802, 3048, 2802, 2802, 2802, 2802, 3049, 2802, 2802,
-     3021, 2802, 2802, 2802, 3023, 2802, 2802, 3024, 2802, 2802,
-     2802, 2802, 2802, 3026, 2802, 2802, 3026, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3031, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3034, 2802, 2802, 2802, 3035,
-     3035, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 3037, 3037, 3038, 2802, 2802, 2802, 3039, 3039,
-     3039, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3041, 2802, 2802, 3041, 2802,
-     2802, 2802, 3042, 2802, 2802, 2802, 3043, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     3044, 3044, 2802, 2802, 2802, 2802, 2802, 3045, 2802, 3046,
-
-     3047, 2802, 2802, 2802, 2802, 2802, 2802, 3049, 2802, 2802,
-     3023, 2802, 2802, 2802, 3024, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 3031, 3034, 3035, 3035, 3037, 3037, 3038, 3039,
-     2802, 2802, 3039, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 3041, 2802, 2802, 2802, 3041, 3042, 3043, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 3044, 2802, 2802,
-     2802, 3045, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3047, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3023, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 3031, 3034, 3035, 3035,
-     3037, 3037, 2802, 2802, 3039, 2802, 2802, 2802, 3039, 3041,
-     3041, 3042, 3043, 2802, 2802, 2802, 3044, 2802, 2802, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3047, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3037, 3037, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 3042, 2802, 2802, 2802, 2802,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3047, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 3042, 2802, 2802, 2802,
-     2802, 2802, 2802, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3047,
-     3047, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 3042, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3047, 3051, 3052, 2802, 2802,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3051, 3052, 3046,
-
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3047, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 2802, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 2802, 3046, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 2802, 3046, 2802, 3046, 2802, 3046,
-     3046, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 2802, 3046,
-     3046, 3046, 3046, 2802, 3046, 2802, 3046, 2802, 3046, 3046,
-     3046, 2802, 3046, 3046, 3046, 3046, 3046, 3046, 3046, 2802,
-     3046, 3046, 3046, 2802, 3046, 3046, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 2802, 3046, 2802, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 2802, 3046, 2802, 3046, 3046, 3046, 3046,
-
-     2802,    0, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802
-    } ;
-
-static yyconst short int yy_nxt[9962] =
-    {   0,
-     2802,  150,  151,  150,  150,  151,  150,  150,  151,  150,
-      150,  151,  150,  155,  151,  155,  161,  152,  158,  161,
-      152,  158, 2802,  153, 2802,  159,  153,  718,  159,  156,
-      155,  151,  155,  477,  162,  164,  165,  162,  164,  165,
-      166,  167,  719,  166,  167,  477,  156,  171,  172,  478,
-      168,  164,  165,  168,  169,  480,  166,  164,  165,  651,
-      169,  479,  166,  171,  172,  652,  168,  151,  151,  151,
-      980,  479,  168,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  549,  175,  173,  476,  476,  476, 1580,  175,
-      550,  581,  186,  885,  886,  186,  476,  476,  476,  582,
-
-      173,  176,  177,  151,  177,  176,  176,  176,  176,  176,
-      176,  176,  178,  176,  176,  176, 1587,  176,  180,  176,
-      181,  176,  188,  151,  188, 1590,  188,  151,  188,  151,
-      151,  151,  151,  151,  151,  188,  151,  188,  189,  176,
-      176,  182,  189,  480, 1591,  190,  183,  496,  190, 1315,
-     1316,  189,  184,  476,  476,  476,  476,  476,  476,  479,
-      497,  185,  176,  177,  151,  177,  176,  176,  176,  176,
-      176,  176,  176,  178,  176,  176,  176, 1592,  176,  180,
-      176,  181,  176,  188,  151,  188, 1594,  188,  151,  188,
-      188,  151,  188,  151,  151,  151,  151,  151,  151,  189,
-
-      176,  176,  182,  191,  480,  480,  191,  183,  958,  192,
-      959,  500,  192,  184,  476,  476,  476,  476,  476,  476,
-      479,  479,  185,  193,  194,  151,  194,  193,  193,  193,
-      193,  193,  193,  193,  195,  193,  193,  193, 1596,  193,
-      197,  193,  198,  193,  203,  151,  203, 1597,  203,  151,
-      203,  151,  151,  151,  151,  151,  151,  476,  476,  476,
-      204,  193,  193,  199,  204, 1618,  724,  205,  200,  725,
-      205,  201,  193,  194,  151,  194,  193,  193,  193,  193,
-      193,  193,  193,  195,  193,  193,  193, 1619,  193,  197,
-      193,  198,  193,  216,  151,  216, 1620,  216,  151,  216,
-
-      151,  151,  151,  151,  151,  151,  476,  476,  476,  217,
-      193,  193,  199,  217,  804, 1621,  218,  200,  805,  218,
-      201,  206,  207,  151,  207,  206,  206,  206,  206,  206,
-      206,  206,  208,  206,  206,  206, 1634,  206,  210,  206,
-      211,  206,  231,  151,  231,  231,  151,  231,  151,  151,
-      151,  151,  151,  151,  476,  476,  476, 1635,  232,  206,
-      206,  232,  980, 1636,  186,  212, 1222,  186, 1638,  213,
-      214,  206,  207,  151,  207,  206,  206,  206,  206,  206,
-      206,  206,  208,  206,  206,  206, 1639,  206,  210,  206,
-      211,  206,  244,  151,  244,  244,  151,  244,  151,  151,
-
-      151,  151,  151,  151,  476,  476,  476, 1640,  245,  206,
-      206,  245, 1320, 1321,  246,  212, 1641,  246, 1643,  213,
-      214,  219,  220,  151,  220,  219,  219,  219,  219,  219,
-      219,  219,  221,  219,  219,  219,  222,  219,  223,  219,
-      224,  219,  222,  222,  222,  222,  222,  222,  222,  222,
-      222,  222,  222,  222,  222,  222,  222,  222,  222,  219,
-      219,  222,  222,  225,  222,  222,  226,  222,  222,  227,
-      222,  222,  222,  222,  222,  222,  222,  222,  228,  222,
-      229,  222,  222,  222,  222,  222,  233,  234,  151,  234,
-      233,  233,  233,  233,  233,  233,  233,  235,  233,  233,
-
-      233, 1651,  233,  237,  233,  238,  233,  151,  151,  151,
-     1652,  151,  151,  151,  654,  151,  151,  151,  151,  151,
-      151,  480,  655,  259,  233,  233,  239,  259,  480,  480,
-      240,  259, 1060, 1653,  259,  510,  699,  479,  241,  501,
-      476,  476,  476,  700,  479,  479, 1061,  242,  233,  234,
-      151,  234,  233,  233,  233,  233,  233,  233,  233,  235,
-      233,  233,  233, 1654,  233,  237,  233,  238,  233,  261,
-      151,  261, 1659,  261,  151,  261,  667,  261,  151,  261,
-      261,  151,  261,  480,  668,  262,  233,  233,  239,  262,
-      480,  480,  240,  263, 1062, 1660,  263,  516, 1676,  479,
-
-      241,  476,  476,  476,  502, 1683,  479,  479, 1063,  242,
-      247,  248,  151,  248,  247,  247,  247,  247,  247,  247,
-      247,  249,  247,  247,  247,  250,  247,  251,  247,  252,
-      247,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-      250,  250,  250,  250,  250,  250,  250,  250,  247,  247,
-      250,  250,  250,  253,  250,  250,  250,  250,  254,  250,
-      250,  250,  250,  250,  255,  250,  250,  250,  250,  250,
-      256,  250,  257,  258,  250,  151,  151,  151,  151,  151,
-      151,  476,  476,  476,  476,  476,  476,  476,  476,  476,
-     1687,  259, 1668, 1669,  259,  264,  265,  151,  265,  264,
-
-      264,  264,  264,  264,  264,  264,  266,  264,  264,  264,
-     1689,  264,  268,  264,  269,  264,  151,  151,  151,  151,
-      151,  151,  276,  151,  276,  276,  151,  276,  151,  151,
-      151,  480,  274,  264,  264,  274,  521,  673,  277,  480,
-      980,  277,  270,  271,  274,  674,  272,  479,  476,  476,
-      476,  522,  982,  503, 1692,  479,  273,  264,  265,  151,
-      265,  264,  264,  264,  264,  264,  264,  264,  266,  264,
-      264,  264, 1693,  264,  268,  264,  269,  264,  151,  151,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  151,  151,  480,  274,  264,  264,  286,  480,  707,
-
-      286, 1694, 1698,  286,  270,  271,  286,  708,  272,  479,
-      476,  476,  476, 1700,  479,  476,  476,  476,  273,  278,
-      279,  151,  279,  278,  278,  278,  278,  278,  278,  278,
-      280,  278,  278,  278, 1701,  278,  282,  278,  283,  278,
-      288,  151,  288,  288,  151,  288,  288,  151,  288,  288,
-      151,  288,  151,  151,  151,  480,  289,  278,  278,  289,
-      480,  480,  290,  480, 1702,  290, 1703,  525,  291, 1704,
-      532,  479,  476,  476,  476, 1705,  479,  479, 1706,  479,
-      543,  284,  285,  278,  279,  151,  279,  278,  278,  278,
-      278,  278,  278,  278,  280,  278,  278,  278, 1710,  278,
-
-      282,  278,  283,  278,  151,  151,  151,  303,  151,  303,
-      303,  151,  303,  151,  151,  151,  151,  151,  151,  480,
-      291,  278,  278,  304,  480,  480,  304,  480,  480,  305,
-     1715,  544,  305, 1719,  553,  479,  476,  476,  476, 1725,
-      479,  479,  552,  479,  479,  284,  285,  292,  293,  151,
-      293,  292,  292,  292,  292,  292,  292,  292,  294,  292,
-      292,  292, 1726,  292,  296,  292,  297,  292,  321,  151,
-      321,  321,  151,  321,  151,  151,  151,  151,  151,  151,
-      339,  151,  339,  480,  322,  292,  292,  322,  480, 1729,
-      323, 1730,  480,  323, 1731,  568,  340, 1732, 1733,  479,
-
-      560,  298, 1738,  299,  479,  476,  476,  476,  479,  300,
-      301,  292,  293,  151,  293,  292,  292,  292,  292,  292,
-      292,  292,  294,  292,  292,  292, 1741,  292,  296,  292,
-      297,  292,  339,  151,  339,  151,  151,  151,  151,  151,
-      151,  360,  151,  360,  360,  151,  360,  480,  340,  292,
-      292,  341,  480,  480,  341, 1745,  480,  361, 1748,  577,
-      361, 1753, 1760,  479, 1767,  298, 1768,  299,  479,  479,
-     1776,  563,  479,  300,  301,  306,  307,  151,  307,  306,
-      306,  306,  306,  306,  306,  306,  308,  306,  306,  306,
-      309,  306,  310,  306,  311,  306,  309,  309,  309,  309,
-
-      309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
-      309,  309,  309,  306,  306,  309,  309,  309,  309,  309,
-      309,  309,  312,  313,  309,  314,  309,  309,  315,  309,
-      309,  316,  309,  309,  309,  317,  309,  318,  319,  309,
-      324,  325,  151,  325,  324,  324,  324,  324,  324,  324,
-      324,  326,  324,  324,  324,  327,  324,  328,  324,  329,
-      324,  327,  327,  327,  327,  327,  327,  327,  327,  327,
-      327,  327,  327,  327,  327,  327,  327,  327,  324,  324,
-      327,  327,  330,  327,  327,  327,  327,  331,  332,  327,
-      327,  327,  327,  333,  327,  327,  327,  327,  327,  327,
-
-      334,  335,  336,  337,  327,  342,  343,  151,  343,  342,
-      342,  342,  342,  342,  342,  342,  344,  342,  342,  342,
-      345,  342,  346,  342,  347,  342,  345,  345,  345,  345,
-      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
-      345,  345,  345,  342,  342,  348,  345,  345,  349,  345,
-      345,  345,  350,  351,  345,  352,  345,  345,  353,  345,
-      345,  354,  345,  355,  356,  345,  345,  357,  358,  345,
-      151,  151,  151,  151,  151,  151,  476,  476,  476,  476,
-      476,  476,  476,  476,  476, 1777,  362, 1778, 1779,  362,
-      363,  364,  151,  364,  363,  363,  363,  363,  363,  363,
-
-      363,  365,  363,  363,  363,  366,  363,  367,  363,  368,
-      363,  366,  366,  366,  366,  366,  366,  366,  366,  366,
-      366,  366,  366,  366,  366,  366,  366,  366,  363,  363,
-      369,  366,  366,  370,  366,  366,  366,  371,  372,  366,
-      373,  366,  366,  374,  366,  366,  375,  376,  377,  378,
-      366,  366,  379,  380,  366,  382,  151,  382,  382,  151,
-      382,  151,  151,  151,  151,  151,  151,  476,  476,  476,
-     1783,  383, 1784, 1785,  383, 1786, 1790,  384, 1853, 1854,
-      384,  385,  386,  151,  386,  385,  385,  385,  385,  385,
-      385,  385,  387,  385,  385,  385,  388,  385,  389,  385,
-
-      390,  385,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  385,
-      385,  388,  388,  388,  391,  388,  388,  388,  392,  393,
-      388,  394,  388,  388,  395,  396,  388,  397,  388,  398,
-      399,  400,  388,  401,  402,  388,  404,  151,  404,  404,
-      151,  404,  151,  151,  151,  151,  151,  151,  476,  476,
-      476, 1862,  405, 1863, 1864,  405, 1868, 1877,  406, 1878,
-     1881,  406,  407,  408,  151,  408,  407,  407,  407,  407,
-      407,  407,  407,  409,  407,  407,  407,  410,  407,  411,
-      407,  412,  407,  410,  410,  410,  410,  410,  410,  410,
-
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
-      407,  407,  410,  410,  410,  410,  410,  410,  410,  413,
-      414,  410,  415,  416,  417,  410,  410,  410,  418,  419,
-      420,  410,  421,  410,  422,  423,  410,  425,  151,  425,
-      425,  151,  425,  151,  151,  151,  151,  151,  151,  476,
-      476,  476,  980,  426, 1888, 1894,  426, 1897, 1869,  427,
-     1902, 1903,  427,  428,  429,  151,  429,  428,  428,  428,
-      428,  428,  428,  428,  430,  428,  428,  428,  431,  428,
-      432,  428,  433,  428,  431,  431,  431,  431,  431,  431,
-      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
-
-      431,  428,  428,  434,  431,  431,  435,  431,  436,  431,
-      437,  438,  431,  431,  431,  431,  431,  431,  431,  431,
-      439,  440,  431,  441,  442,  443,  444,  431,  446,  151,
-      446,  446,  151,  446,  151,  151,  151,  151,  151,  151,
-      476,  476,  476, 1904,  447, 1905, 1991,  447, 1992, 1999,
-      448, 2007, 2008,  448,  449,  450,  151,  450,  449,  449,
-      449,  449,  449,  449,  449,  451,  449,  449,  449,  452,
-      449,  453,  449,  454,  449,  452,  452,  452,  452,  452,
-      452,  452,  452,  452,  452,  452,  452,  452,  452,  452,
-      452,  452,  449,  449,  452,  455,  452,  452,  452,  456,
-
-      452,  457,  458,  452,  459,  452,  452,  452,  460,  452,
-      461,  462,  452,  452,  463,  464,  465,  466,  452,  151,
-      151,  151,  151,  151,  151,  468,  151,  468,  468,  151,
-      468,  471,  472,  485,  480,  384,  473, 2015,  384,  480,
-      480,  469,  471,  472,  469, 2028,  474,  473,  480, 2029,
-      479, 2068, 1391,  480, 2105,  479,  479,  474,  501, 2127,
-      500,  502,  503, 2155,  479,  491, 2198,  486,  475,  479,
-      499,  501,  504,  487,  502,  503,  480,  488, 1582,  475,
-      504, 2086,  489,  544,  480,  504,  539,  539,  539,  541,
-      541,  541,  479,  556,  556,  556,  558,  558,  558,  480,
-
-      479,  543,  561,  540,  480,  480,  542,  573,  573,  573,
-      557,  591,  608,  559,  480,  479,  980,  575,  575,  575,
-      479,  479,  980,  980,  574,  476,  476,  476,  592, 1739,
-      479,  560,  561,  562,  576, 1391, 1391,  552,  563,  587,
-      587,  587,  564,  565,  566,  567,  589,  589,  589,  596,
-      596,  596,  602,  602,  602, 2130,  588,  604,  604,  604,
-      606,  606,  606,  590, 2134,  480,  597,  480,  480,  603,
-      620,  620,  620, 1870,  605,  624,  980,  607,  622,  622,
-      622,  479, 2544,  479,  479,  480,  562,  621,  637,  637,
-      637,  980,  598,  480,  980,  623,  639,  639,  639, 2181,
-
-      641,  479,  476,  476,  476,  638,  656,  656,  656,  479,
-      658,  658,  658,  640,  480,  566,  476,  476,  476,  480,
-      480,  660, 2133,  657,  476,  476,  476,  659,  480,  480,
-      479,  480,  675,  675,  675,  479,  479,  677,  677,  677,
-      476,  476,  476,  480,  479,  479, 1579,  479,  661,  676,
-      679,  476,  476,  476,  678,  691,  691,  691, 1575,  479,
-      567,  693,  693,  693,  476,  476,  476,  480,  480,  476,
-      476,  476,  692,  485,  695,  710,  710,  710,  694,  980,
-      712,  712,  712,  479,  479,  476,  476,  476,  480,  476,
-      476,  476,  711,  980, 1391,  714,  564,  713,  722,  722,
-
-      722,  745,  745,  745,  479, 1391,  980,  486,  750,  750,
-      750, 2137,  980,  487,  757,  757,  757,  488,  746,  771,
-      771,  771,  489,  980, 2139,  751,  539,  539,  539,  980,
-     1740,  758, 2001,  775,  775,  775,  772,  776, 2235, 1388,
-      777, 2131,  980,  540,  541,  541,  541,  980,  723,  778,
-      778,  778, 2132,  779,  980, 1574,  780,  785,  785,  785,
-     2142,  542,  556,  556,  556,  793,  793,  793, 2138,  794,
-      980,  980,  795,  980,  786,  558,  558,  558,  980,  557,
-      796,  796,  796,  980,  797, 2194,  980,  798,  573,  573,
-      573, 2136,  559,  812,  812,  812, 2143,  813, 2184, 2144,
-
-      814,  575,  575,  575, 2135,  574,  815,  815,  815, 1391,
-      816,  980, 2145,  817,  821,  821,  821, 2182,  576,  587,
-      587,  587,  828,  828,  828, 2183,  829,  980,  980,  830,
-     1573,  822,  589,  589,  589,  980,  588,  831,  831,  831,
-      980,  832,  980, 2146,  833,  596,  596,  596,  980,  590,
-      837,  837,  837, 2185,  838, 2189, 2188,  839,  841,  841,
-      841, 2187,  597,  602,  602,  602,  845,  845,  845, 2190,
-      846, 2193,  980,  847,  980,  842,  604,  604,  604, 2236,
-      603,  848,  848,  848, 1572,  849, 1571,  980,  850,  606,
-      606,  606,  980,  605,  851,  851,  851, 2192,  852,  980,
-
-      980,  853,  859,  859,  859, 2186,  607,  865,  865,  865,
-      620,  620,  620,  867,  867,  867, 2191,  868,  980,  860,
-      869,  622,  622,  622,  866, 2195, 2239,  621,  870,  870,
-      870,  980,  871, 1391,  980,  872, 2281,  980,  623,  878,
-      878,  878,  637,  637,  637,  887,  887,  887, 2374,  888,
-      980, 2196,  889,  639,  639,  639,  879,  980, 2241,  638,
-      890,  890,  890,  980,  891,  980, 2197,  892, 2242,  980,
-      640,  897,  897,  897,  905,  905,  905,  656,  656,  656,
-      909,  909,  909, 2238,  910, 2234, 2140,  911,  898,  980,
-     2141,  906, 2237,  980,  657,  658,  658,  658,  912,  912,
-
-      912,  980,  913, 2240,  980,  914,  918,  918,  918,  675,
-      675,  675,  659,  929,  929,  929, 1567,  930,  980,  980,
-      931, 1563, 2244,  919,  980, 2246,  676,  677,  677,  677,
-      932,  932,  932, 2243,  933,  980, 2248,  934,  941,  941,
-      941,  691,  691,  691,  678,  947,  947,  947, 2249,  948,
-      980,  980,  949, 2260,  980,  942, 2261, 2245,  692,  693,
-      693,  693,  950,  950,  950,  980,  951,  980,  980,  952,
-      960,  960,  960,  710,  710,  710,  694,  969,  969,  969,
-      980,  970, 1562,  980,  971, 2262,  980,  961, 2275, 2247,
-      711,  712,  712,  712,  972,  972,  972, 2263,  973, 1543,
-
-     2266,  974,  722,  722,  722, 2267,  984, 2264,  713,  998,
-      998,  998,  998,  998,  998,  745,  745,  745, 1008, 1008,
-     1008,  980, 1009, 2268,  980, 1010,  980, 1000,  980, 2321,
-     1000,  980,  746, 1011, 1011, 1011, 1011, 1011, 1011,  750,
-      750,  750, 1016, 1016, 1016, 2270, 1017, 2271,  980, 1018,
-      980, 1013, 2269, 2272, 1013, 1540,  751,  980, 1001, 1019,
-     1019, 1019, 1021, 1021, 1021, 2303, 1021, 1021, 1021,  757,
-      757,  757, 1033, 1033, 1033, 2274, 1020, 1033, 1033, 1033,
-     1023, 2283,  980, 1014, 1023, 2284,  758, 1027, 1027, 1027,
-     1035, 1028, 2282,  980, 1029, 1035, 1041, 1041, 1041, 1041,
-
-     1041, 1041,  771,  771,  771, 1046, 1046, 1046,  980, 1047,
-      980,  980, 1048,  980, 1043,  980,  980, 1043,  980,  772,
-      775,  775,  775, 2310,  776, 1024, 2292,  777, 2323, 1036,
-      778,  778,  778,  980,  779,  980, 2346,  780, 1052, 1052,
-     1052, 1052, 1052, 1052, 2290, 1044,  785,  785,  785, 2289,
-     1057, 1057, 1057,  980, 1058, 2293, 1054, 1059, 2297, 1054,
-     1066, 1066, 1066,  786, 1066, 1066, 1066,  793,  793,  793,
-      980,  794, 2327, 2309,  795, 1079, 1079, 1079, 1068,  796,
-      796,  796, 1068,  797, 2291, 1539,  798,  980, 1055, 1079,
-     1079, 1079,  980, 1081,  812,  812,  812, 2311,  813,  980,
-
-      980,  814, 2331, 1069,  815,  815,  815, 1081,  816,  980,
-     2305,  817, 1085, 1085, 1085, 1085, 1085, 1085,  821,  821,
-      821, 1090, 1090, 1090,  980, 1091, 1538, 2313, 1092, 1537,
-     1087, 2328, 2315, 1087,  980,  822,  828,  828,  828, 2545,
-      829,  980, 2322,  830, 1082,  831,  831,  831,  980,  832,
-     1391, 1392,  833, 1098, 1098, 1098, 1098, 1098, 1098, 2324,
-      837,  837,  837,  980,  838, 2329, 1088,  839,  841,  841,
-      841, 1100,  980,  980, 1100, 1104, 1104, 1104, 2357, 1105,
-     2559, 2325, 1106,  980,  980,  842,  845,  845,  845,  980,
-      846, 2332,  980,  847,  848,  848,  848, 1536,  849, 1535,
-
-      980,  850, 2335,  851,  851,  851, 1101,  852,  980, 2333,
-      853, 1109, 1109, 1109, 1109, 1109, 1109,  859,  859,  859,
-     1116, 1116, 1116,  980, 1117, 2379, 2336, 1118,  980, 1111,
-     2428,  980, 1111,  980,  860,  865,  865,  865, 1123, 1123,
-     1123, 2337, 1124, 2339,  980, 1125,  867,  867,  867, 2340,
-      868,  980,  866,  869,  870,  870,  870, 1112,  871, 2341,
-     2345,  872, 1126, 1126, 1126, 1126, 1126, 1126,  878,  878,
-      878, 1133, 1133, 1133,  980, 1134,  980,  980, 1135, 1534,
-     1128, 2454,  980, 1128,  980,  879, 1141, 1141, 1141, 1143,
-     1143, 1143,  887,  887,  887, 2343,  888, 2342, 2362,  889,
-
-      890,  890,  890, 1142,  891, 2483, 1144,  892, 1145, 1145,
-     1145, 1145, 1145, 1145,  897,  897,  897, 1151, 1151, 1151,
-      980, 1152, 2429, 1129, 1153,  980, 1147, 1529,  980, 1147,
-     1526,  898,  905,  905,  905, 1160, 1160, 1160, 2347, 1161,
-      980, 2348, 1162,  909,  909,  909, 2351,  910,  980,  906,
-      911,  912,  912,  912, 2365,  913,  980, 1148,  914, 1165,
-     1165, 1165, 1165, 1165, 1165,  918,  918,  918, 1170, 1170,
-     1170, 2349, 1171,  980, 2350, 1172, 1525, 1167,  980,  980,
-     1167,  980,  919,  929,  929,  929,  980,  930, 2352, 2382,
-      931,  932,  932,  932, 2353,  933, 2354,  980,  934, 1182,
-
-     1182, 1182, 1182, 1182, 1182,  941,  941,  941, 1190, 1190,
-     1190, 1168, 1191, 2356,  980, 1192, 2455, 1184,  980, 1524,
-     1184,  980,  942,  947,  947,  947, 1523,  948,  980, 2360,
-      949,  950,  950,  950, 2358,  951, 1519, 2359,  952,  980,
-      980, 1185, 1197, 1197, 1197, 1197, 1197, 1197,  960,  960,
-      960, 1206, 1206, 1206, 2364, 1207, 2366,  980, 1208,  980,
-     1199, 2513, 1511, 1199,  980,  961, 1213, 1213, 1213,  969,
-      969,  969, 2368,  970,  980, 2369,  971,  972,  972,  972,
-     2370,  973, 1508, 1214,  974, 1217, 1217, 1217, 1200, 1217,
-     1217, 1217,  998,  998,  998,  998,  998,  998,  998,  998,
-
-      998,  980,  980, 1219, 1241, 1241, 1241, 1219, 2373,  980,
-     1000, 2396,  980, 1000, 1503, 2375, 1000, 2371, 1008, 1008,
-     1008, 1242, 1009, 2390,  980, 1010, 1011, 1011, 1011, 1011,
-     1011, 1011, 1011, 1011, 1011, 1016, 1016, 1016, 1220, 1017,
-      980, 1235, 1018,  980, 1013,  980, 2376, 1013,  980,  980,
-     1013, 1019, 1019, 1019, 1245, 1245, 1245, 2514, 1246, 2377,
-     2389, 1247, 1021, 1021, 1021, 1021, 1021, 1021, 1020, 1021,
-     1021, 1021,  980, 1250, 1250, 1250,  980, 1027, 1027, 1027,
-     1023, 1028, 2527, 1023, 1029, 1495, 2439, 1023, 2381, 1243,
-     1251, 1253, 1253, 1253, 2372, 1033, 1033, 1033, 1033, 1033,
-
-     1033, 1033, 1033, 1033, 1259, 1259, 1259,  980, 1254, 1041,
-     1041, 1041, 1248, 1035,  980,  980, 1035, 1493,  980, 1035,
-     2383, 1260, 1041, 1041, 1041, 2378, 2392, 1043, 1041, 1041,
-     1041, 1046, 1046, 1046, 2385, 1047,  980,  980, 1048,  980,
-     1043, 1052, 1052, 1052,  980, 2386, 1043, 1052, 1052, 1052,
-     2387,  980, 1256, 2406, 1052, 1052, 1052, 2388, 1492, 1054,
-     1057, 1057, 1057, 1488, 1058, 1054, 2467, 1059, 1066, 1066,
-     1066, 1262, 1054, 1066, 1066, 1066, 1066, 1066, 1066, 1079,
-     1079, 1079, 1079, 1079, 1079,  980, 1068,  980, 1079, 1079,
-     1079, 1068,  980, 2394, 1068, 1481, 2393, 1081, 2398, 1459,
-
-     1081, 1085, 1085, 1085,  980, 1267, 1081, 1085, 1085, 1085,
-     1085, 1085, 1085, 1289, 1289, 1289, 1090, 1090, 1090, 1087,
-     1091,  980, 2397, 1092,  980, 1087,  980, 2402, 1087,  980,
-     1290, 2802, 2802, 2802,  980, 2802, 2802, 2802, 1275, 2395,
-     1285, 2802, 2802, 2802, 2802, 2802, 2802, 2401, 2802,  980,
-     2413, 1288, 2802, 2802, 2802, 2802, 2468,  980, 2802,  980,
-     2400, 2802, 1098, 1098, 1098, 1098, 1098, 1098, 2403,  980,
-     2802, 1098, 1098, 1098, 1291,  980,  980, 1298, 1298, 1298,
-     1100, 1456, 2425, 1100, 2415, 1109, 1109, 1109, 1293, 1100,
-     2420, 2560, 1292, 1295, 1299, 1104, 1104, 1104, 2610, 1105,
-
-      980, 1294, 1106, 1111, 1109, 1109, 1109, 1109, 1109, 1109,
-     1296, 1304, 1304, 1304, 1306, 1306, 1306, 1116, 1116, 1116,
-      980, 1117, 1111, 1455, 1118, 1111, 2435,  980, 1305,  980,
-      980, 1307, 1309, 1309, 1309, 1123, 1123, 1123, 2404, 1124,
-     2405, 2412, 1125, 1126, 1126, 1126, 2677,  980, 1302, 1310,
-     1126, 1126, 1126, 1126, 1126, 1126, 1317, 1317, 1317,  980,
-      980, 1128, 1133, 1133, 1133, 2463, 1134,  980, 1128, 1135,
-     2416, 1128,  980, 1318, 1141, 1141, 1141, 1325, 1325, 1325,
-     1454, 1326, 2492, 2421, 1327, 1143, 1143, 1143, 1328, 1328,
-     1328, 1142, 1329,  980,  980, 1330, 1145, 1145, 1145, 1145,
-
-     1145, 1145, 1144, 1145, 1145, 1145, 1332, 1332, 1332, 2437,
-     1313, 1334, 1334, 1334, 1147,  980,  980, 1147, 1151, 1151,
-     1151, 1147, 1152, 1333, 2481, 1153, 2451,  980, 1335,  980,
-     2802, 2802, 2802, 1337, 1337, 1337, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2443, 1331, 2802, 1453, 1452,
-     1338,  980,  980, 2802, 2440,  980, 2802, 2482, 2464, 2802,
-     2802, 2802, 2802, 1160, 1160, 1160, 2462, 1161, 1451,  980,
-     1162, 2802, 2802, 2802, 1165, 1165, 1165, 2802, 2802, 2802,
-     2802, 1165, 1165, 1165, 1165, 1165, 1165, 1336, 2802, 2452,
-     1341,  980, 1167, 1339, 1450, 2802, 1340, 2471, 2484, 1167,
-
-      980,  980, 1167, 1346, 1346, 1346, 1170, 1170, 1170,  980,
-     1171, 2493,  980, 1172, 1343, 2554,  980, 1342, 1344, 1449,
-     1347, 2802, 2802, 2802, 2802, 2802, 2802, 2500, 2802, 2802,
-     2802, 1345, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2453,
-      980, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2456,  980, 2802, 2802, 2802, 2802, 1182, 1182, 1182, 2802,
-     2802, 2802, 2802, 2802, 1182, 1182, 1182, 1360, 1360, 1360,
-     2802, 1351,  980, 2528, 1184, 1349,  980, 2802, 1348, 1350,
-     1447, 2485, 1184,  980, 1361, 1353, 1182, 1182, 1182, 1362,
-     1362, 1362, 1352, 1365, 1365, 1365, 1355, 1197, 1197, 1197,
-
-     1356, 2496,  980, 1354, 1184, 2497, 1363, 1190, 1190, 1190,
-     1366, 1191, 2511,  980, 1192, 1199, 1197, 1197, 1197, 1197,
-     1197, 1197, 1372, 1372, 1372, 1375, 1375, 1375, 1357, 1206,
-     1206, 1206,  980, 1207, 1199,  980, 1208, 1199,  980, 1373,
-     2457, 1444, 1376, 1213, 1213, 1213, 1381, 1381, 1381, 2587,
-     1382, 2458,  980, 1383, 1217, 1217, 1217, 1217, 1217, 1217,
-     1214, 1217, 1217, 1217, 1390, 1390, 1390, 1396, 1396, 1396,
-     2459,  980, 1219, 2469,  980, 1219, 2802, 2802, 2802, 1219,
-     1369, 2512, 1391, 1392, 1397, 2802, 2802, 2802, 2802, 2802,
-     2802,  980,  980, 2802, 2802, 2802, 2802,  998,  998,  998,
-
-     1386,  980, 2802, 1443, 2486, 2802, 1406, 1406, 1406, 2470,
-      980, 2802, 1241, 1241, 1241, 1000,  980, 1409, 1409, 1409,
-     2515, 1410,  980, 1398, 1411, 1011, 1011, 1011,  980, 1242,
-     2474, 1413, 1413, 1413, 1245, 1245, 1245, 1400, 1246, 2475,
-     2487, 1247, 1399, 1013,  980, 2516, 1401, 1403, 1414, 1021,
-     1021, 1021, 1416, 1416, 1416, 1250, 1250, 1250, 1418, 1418,
-     1418, 2611, 1419, 1442,  980, 1420, 2476, 1023, 1441, 1417,
-      980,  980, 1251, 2517,  980, 1412, 2802, 2802, 2802, 1253,
-     1253, 1253, 1422, 1422, 1422,  980, 1423, 2523, 1440, 1424,
-     2802, 2802, 2802, 2802, 2488,  980, 1254, 1033, 1033, 1033,
-
-     1415, 1428, 1428, 1428, 1259, 1259, 1259, 2802, 2477, 1430,
-     1430, 1430, 2478, 1431, 2518, 1035, 1432, 1421, 1429, 2577,
-      980, 1260, 1041, 1041, 1041, 1052, 1052, 1052, 1445, 1445,
-     1445, 1066, 1066, 1066, 1457, 1457, 1457,  980,  980, 1425,
-     1043, 1438,  980, 1054,  980, 1446, 1079, 1079, 1079, 1068,
-     2498, 1460, 1460, 1460, 1426, 1085, 1085, 1085, 1289, 1289,
-     1289, 1583, 1583, 1583, 1081,  980, 2529, 1439, 1461, 1466,
-     1466, 1466, 1434, 1087,  980, 1290, 2479, 1463, 1463, 1463,
-     2489, 1464, 2490, 1448, 1465, 1437, 1467, 1436, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-
-      980, 1462, 1435, 2494, 1458, 2802,  980,  980, 2802,  980,
-     1433, 2802, 2495,  980, 2802, 1098, 1098, 1098, 1473, 1473,
-     1473, 1298, 1298, 1298, 1475, 1475, 1475,  980, 1476,  980,
-     2499, 1477, 1469, 1100, 1470, 1474, 1427, 2578, 1299, 2503,
-     1468, 2802, 2802, 2802, 2501, 2502, 1471, 2802, 2802, 2802,
-     1109, 1109, 1109, 1304, 1304, 1304,  980, 2504, 2802, 2505,
-     1472, 1306, 1306, 1306, 2802, 1482, 1482, 1482, 1111, 1483,
-     1305,  980, 1484, 1485, 1485, 1485, 1408, 1486, 1307, 1407,
-     1487,  980, 1478, 1309, 1309, 1309, 1489, 1489, 1489, 1405,
-     1490,  980, 1404, 1491, 2540, 2592, 1479, 1126, 1126, 1126,
-
-     1310, 1496, 1496, 1496, 1498, 1498, 1498, 1480, 1317, 1317,
-     1317, 2506, 1500, 1500, 1500, 1128, 1501,  980, 1497, 1502,
-     2530, 1499, 1504, 1504, 1504, 1318, 1506, 1506, 1506, 1509,
-     1509, 1509, 2575, 1325, 1325, 1325,  980, 1326,  980, 1505,
-     1327,  980, 1402, 1507,  980,  980, 1510, 2507, 1328, 1328,
-     1328,  980, 1329,  980, 1494, 1330, 1145, 1145, 1145, 1332,
-     1332, 1332, 1513, 1513, 1513, 2534, 1514,  980, 2508, 1515,
-     1334, 1334, 1334, 2535, 1147, 2519, 1333, 1516, 1516, 1516,
-     2536, 1517, 1395, 2520, 1518,  980, 1394, 1335, 1337, 1337,
-     1337, 1520, 1520, 1520, 1393, 1521, 2537, 1512, 1522, 1527,
-
-     1527, 1527, 1165, 1165, 1165, 1338, 1346, 1346, 1346,  980,
-     1531, 1531, 1531,  980, 1532, 2525, 1528, 1533,  980,  980,
-     1167,  980,  980, 1347, 1541, 1541, 1541, 1182, 1182, 1182,
-     1545, 1545, 1545, 2802, 2802, 2802, 1360, 1360, 1360, 2526,
-      980, 1542,  980, 2532, 1530, 1184, 2692, 1546, 2533,  980,
-     2802, 2538, 1387, 1361, 1548, 1548, 1548, 2541, 1549, 2552,
-      980, 1550, 1362, 1362, 1362, 1385, 1551, 1551, 1551, 2539,
-     1552, 2550, 1547, 1553, 1544, 2802, 2802, 2802, 2551, 1363,
-     1365, 1365, 1365, 1555, 1555, 1555, 1384, 1556,  980,  980,
-     1557,  980, 2802, 2802, 2802, 2802, 1380, 1366, 1559, 1559,
-
-     1559, 1197, 1197, 1197, 1372, 1372, 1372, 1564, 1564, 1564,
-     2802, 1565, 2593, 1379, 1566, 1560, 1375, 1375, 1375, 1199,
-     2557, 1373, 2542,  980, 1554, 1568, 1568, 1568, 2576, 1569,
-      980, 2579, 1570, 1376, 1381, 1381, 1381,  980, 1382, 1378,
-      980, 1383, 1558, 1576, 1576, 1576, 1217, 1217, 1217, 1377,
-     1390, 1390, 1390, 1396, 1396, 1396, 2543,  980, 1561, 2558,
-     1577, 1588, 1588, 1588, 1219, 1584, 1584, 1584, 1391, 1585,
-     1397,  980, 1586,  998,  998,  998,  980,  980, 1589, 1595,
-     1595, 1595, 1406, 1406, 1406, 1409, 1409, 1409,  980, 1410,
-     2546, 1000, 1411, 1011, 1011, 1011, 1413, 1413, 1413, 1599,
-
-     1599, 1599,  980, 1600, 2547,  980, 1601,  980, 1578, 1581,
-     2548, 1013,  980, 1414, 2553,  980, 1593, 1021, 1021, 1021,
-     1416, 1416, 1416, 1603, 1603, 1603, 2588, 1604,  980,  980,
-     1605, 2565, 1598,  980, 2566, 1023, 2606, 1417, 1418, 1418,
-     1418, 2607, 1419,  980, 2618, 1420, 1606, 1606, 1606, 1422,
-     1422, 1422,  980, 1423, 1374,  980, 1424, 2608, 2802, 2802,
-     2802, 2549, 2561, 1607, 1609, 1609, 1609, 1611, 1611, 1611,
-     1428, 1428, 1428, 2573, 1602, 2802, 1613, 1613, 1613,  980,
-     1614, 1371, 1610, 1615, 1612, 2562,  980, 1429, 1430, 1430,
-     1430,  980, 1431, 2589,  980, 1432, 2802, 2802, 2802, 1041,
-
-     1041, 1041, 1052, 1052, 1052, 1608, 1623, 1623, 1623, 2574,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 1043, 2609, 2567,
-     1054, 2585, 1370, 1624, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 1445, 1445, 1445, 1368, 1629, 1629, 1629, 1616,
-     1630, 2802, 1617, 1631,  980, 2802, 1632, 1632, 1632, 1446,
-     1066, 1066, 1066, 1367, 1622, 1625, 1637, 1637, 1637, 1457,
-     1457, 1457, 1079, 1079, 1079, 1460, 1460, 1460, 1068, 1627,
-      980, 1626, 1644, 1644, 1644,  980, 1645, 2568,  980, 1646,
-     1081,  980, 1461,  980,  980, 1628, 1085, 1085, 1085, 1463,
-     1463, 1463,  980, 1464,  980,  980, 1465, 1466, 1466, 1466,
-
-     1098, 1098, 1098, 2569, 1087, 1648, 1648, 1648, 1633, 1649,
-     2619, 2570, 1650, 2596, 1467, 1642, 2571, 2572, 1100, 1473,
-     1473, 1473, 1656, 1656, 1656, 2583, 1657, 2584, 2590, 1658,
-     1475, 1475, 1475, 2580, 1476, 1364, 1474, 1477, 1647, 1109,
-     1109, 1109,  980, 1655, 1662, 1662, 1662, 1482, 1482, 1482,
-      980, 1483,  980,  980, 1484, 2581, 1359, 1111, 1485, 1485,
-     1485, 1663, 1486, 2582,  980, 1487, 2802, 2802, 2802, 1489,
-     1489, 1489,  980, 1490, 2612, 1358, 1491, 2613, 1661, 2802,
-     2802, 2802, 2586, 2802, 2802, 2802, 2802, 1126, 1126, 1126,
-     1496, 1496, 1496, 1670, 1670, 1670, 2802, 1671, 1324,  980,
-
-     1672, 2802, 1583, 1583, 1583, 1128, 1323, 1497, 1498, 1498,
-     1498, 1673, 1673, 1673, 2594, 1674,  980, 2595, 1675, 1664,
-     1500, 1500, 1500,  980, 1501, 1499,  980, 1502, 1504, 1504,
-     1504, 1665, 2591,  980, 1677, 1677, 1677, 1666, 1678, 1667,
-      980, 1679, 1506, 1506, 1506, 1505, 1680, 1680, 1680, 2598,
-     1681,  980,  980, 1682, 1509, 1509, 1509, 1322, 1319, 1507,
-     1684, 1684, 1684,  980, 1685, 1314, 2599, 1686, 1145, 1145,
-     1145, 1510, 1513, 1513, 1513, 2614, 1514, 1312, 2597, 1515,
-     1516, 1516, 1516, 1311, 1517, 2600, 1147, 1518, 1520, 1520,
-     1520, 2625, 1521, 2621,  980, 1522, 1690, 1690, 1690, 2601,
-
-     1527, 1527, 1527, 1695, 1695, 1695, 2602, 1696,  980,  980,
-     1697, 1308,  980, 1691,  980,  980, 1688, 1528, 1165, 1165,
-     1165, 1531, 1531, 1531,  980, 1532,  980, 1303, 1533, 1541,
-     1541, 1541,  980, 1707, 1707, 1707, 1167, 1708, 2615, 2622,
-     1709, 1182, 1182, 1182, 2603, 2639, 1542, 1545, 1545, 1545,
-     1712, 1712, 1712,  980, 1713, 2655, 2627, 1714,  980, 1184,
-      980, 1699, 2604, 2626, 1546, 1548, 1548, 1548, 2605, 1549,
-     2616,  980, 1550,  980, 1551, 1551, 1551,  980, 1552,  980,
-     1711, 1553, 1716, 1716, 1716, 1555, 1555, 1555,  980, 1556,
-     2629, 2640, 1557, 1559, 1559, 1559, 1720, 1720, 1720, 1717,
-
-     1721,  980, 2656, 1722, 1723, 1723, 1723, 1564, 1564, 1564,
-     1560, 1565, 2628, 1301, 1566, 1727, 1727, 1727,  980, 1568,
-     1568, 1568, 1724, 1569,  980, 2677, 1570, 1576, 1576, 1576,
-     2617, 2630, 1728, 1734, 1734, 1734,  980, 1735, 1718,  980,
-     1736, 1217, 1217, 1217, 1577, 1584, 1584, 1584, 2633, 1585,
-     1300, 2651, 1586, 1588, 1588, 1588, 1742, 1742, 1742, 1219,
-     1743,  980,  980, 1744, 1746, 1746, 1746, 1749, 1749, 1749,
-     1589, 1751, 1751, 1751, 1595, 1595, 1595, 1752, 1752, 1752,
-      980, 1747, 1011, 1011, 1011, 1750, 2634, 1599, 1599, 1599,
-     1737, 1600,  980,  980, 1601, 1755, 1755, 1755, 2623, 2686,
-
-     1013, 1603, 1603, 1603, 2635, 1604,  980,  980, 1605, 1606,
-     1606, 1606,  980, 1756, 1757, 1757, 1757, 2636, 1758, 1297,
-     1287, 1759, 1609, 1609, 1609, 2652, 1607, 1611, 1611, 1611,
-     1761, 1761, 1761,  980, 1762, 1754, 2637, 1763, 2624, 2688,
-     1610, 1613, 1613, 1613, 1612, 1614, 1286,  980, 1615, 1764,
-     1764, 1764, 1041, 1041, 1041, 1769, 1769, 1769, 1771, 1771,
-     1771,  980, 1052, 1052, 1052, 1284, 1765, 1623, 1623, 1623,
-     1043, 2687, 1770, 2631, 1773, 1773, 1773, 1283, 1774, 1766,
-     1054, 1775,  980, 1282, 1624, 1629, 1629, 1629,  980, 1630,
-     2663,  980, 1631, 1632, 1632, 1632, 1066, 1066, 1066, 1781,
-
-     1781, 1781, 1782, 1782, 1782, 1637, 1637, 1637, 1787, 1787,
-     1787, 1788, 1788, 1788, 1068, 2638, 1644, 1644, 1644, 2632,
-     1645,  980, 1772, 1646, 1085, 1085, 1085, 2641,  980, 1789,
-     1648, 1648, 1648, 1281, 1649,  980, 1280, 1650, 1792, 1792,
-     1792,  980, 1087, 1794, 1794, 1794, 2802, 2802, 2802, 1797,
-     1797, 1797, 2673, 1780, 2689, 1793, 1799, 1799, 1799, 2643,
-     1795,  980,  980, 2802, 2674, 2644, 1798,  980, 1656, 1656,
-     1656, 1279, 1657,  980, 1800, 1658, 1801, 1801, 1801, 1791,
-     1803, 1803, 1803, 1109, 1109, 1109, 2649, 1662, 1662, 1662,
-     1809, 1809, 1809, 1802, 2802, 2802, 2802, 1804, 1806, 1806,
-
-     1806, 1111, 1807, 1796, 1663, 1808, 2642, 1810, 2802, 2802,
-     2802, 2802, 1126, 1126, 1126, 1814, 1814, 1814, 1816, 1816,
-     1816,  980, 1670, 1670, 1670, 2802, 1671,  980, 1278, 1672,
-     1128, 2692, 1815,  980, 1805, 1817, 1673, 1673, 1673,  980,
-     1674,  980,  980, 1675, 1818, 1818, 1818,  980, 1677, 1677,
-     1677, 1811, 1678, 1277, 1276, 1679, 2664, 2802, 2802, 2802,
-     2645, 1819,  980, 1813,  980, 1812, 1680, 1680, 1680,  980,
-     1681, 2650, 2646, 1682, 2802, 1684, 1684, 1684, 2647, 1685,
-     2648,  980, 1686, 2802, 2802, 2802, 1145, 1145, 1145, 1823,
-     1823, 1823, 1690, 1690, 1690, 1825, 1825, 1825, 1274, 1826,
-
-     2802, 2661, 1827, 2662, 1147, 2657, 1824, 1822, 2667, 1691,
-     2802, 2802, 2802, 1273, 1820, 2802, 2802, 2802, 2802, 2802,
-     2802, 1695, 1695, 1695, 2684, 1696,  980, 2802, 1697, 1831,
-     1831, 1831, 2802,  980, 1272, 2802, 1165, 1165, 1165,  980,
-     1821, 1834, 1834, 1834,  980,  980, 1832, 2802, 2802, 2802,
-     2658, 2802, 2802, 2802, 1167, 2802, 2802, 2802, 1835, 2802,
-     2802, 2802, 1271, 2659, 2802, 1270,  980, 1828, 2802, 2660,
-     2707, 1829, 2802,  980,  980, 1830, 2802, 2695, 2802, 2802,
-     2802, 2802, 2802, 2802,  980, 1707, 1707, 1707, 1269, 1708,
-     1836, 1833, 1709,  980, 1837, 2802, 1268, 2665, 2802, 2696,
-
-     1842, 1842, 1842, 2707, 1182, 1182, 1182,  980, 1712, 1712,
-     1712, 1838, 1713, 2668,  980, 1714, 1839, 1843, 1845, 1845,
-     1845, 1840, 1184, 1716, 1716, 1716, 1847, 1847, 1847,  980,
-     1848, 2666, 2669, 1849, 1266, 1846, 1265, 1264, 1841, 1263,
-     1717, 2802, 2802, 2802, 1851, 1851, 1851, 1720, 1720, 1720,
-      980, 1721,  980, 1844, 1722, 1723, 1723, 1723, 2802, 2716,
-      980, 1852, 1855, 1855, 1855, 1727, 1727, 1727, 1857, 1857,
-     1857,  980, 1858, 1724, 2675, 1859, 1860, 1860, 1860, 1856,
-      980, 1261, 1728, 1865, 1865, 1865,  980, 1258, 1734, 1734,
-     1734, 2670, 1735, 1861, 1850, 1736, 1217, 1217, 1217, 2671,
-
-     1866, 1871, 1871, 1871, 1742, 1742, 1742,  980, 1743, 2743,
-     2672, 1744, 1257, 2710, 1219, 2802, 2802, 2802, 1872, 1746,
-     1746, 1746, 1874, 1874, 1874, 2682, 1875,  980,  980, 1876,
-      980, 2676, 2802, 1749, 1749, 1749, 1747, 1751, 1751, 1751,
-     1752, 1752, 1752, 1867, 1879, 1879, 1879, 1755, 1755, 1755,
-     1255, 1750, 2678, 1252, 1873, 2685, 1757, 1757, 1757,  980,
-     1758,  980, 1880, 1759,  980, 1756, 1761, 1761, 1761, 2683,
-     1762, 2710,  980, 1763, 1764, 1764, 1764, 1882, 1882, 1882,
-      980, 1883,  980, 2679, 1884, 1041, 1041, 1041, 1886, 1886,
-     1886, 1765, 1769, 1769, 1769, 1889, 1889, 1889,  980, 1890,
-
-     2690, 2744, 1891, 1043, 2680, 1887, 1771, 1771, 1771, 1770,
-     1892, 1892, 1892, 1773, 1773, 1773,  980, 1774, 1249, 1244,
-     1775, 1895, 1895, 1895, 1898, 1898, 1898,  980, 1893, 1900,
-     1900, 1900, 1781, 1781, 1781, 2711, 1885, 2691, 1896, 1240,
-     2681, 1899, 1782, 1782, 1782,  980,  980, 1901, 1787, 1787,
-     1787, 1788, 1788, 1788, 1906, 1906, 1906, 1908, 1908, 1908,
-     1792, 1792, 1792, 1910, 1910, 1910, 2697, 1911,  980, 1789,
-     1912, 1907, 1794, 1794, 1794, 1909, 1239, 1793, 1913, 1913,
-     1913,  980, 1914, 1238, 2698, 1915, 2802, 2802, 2802, 1795,
-     1797, 1797, 1797, 1917, 1917, 1917,  980, 1918, 2717,  980,
-
-     1919, 1237, 2711, 2802, 1799, 1799, 1799, 1798, 1801, 1801,
-     1801, 1920, 1920, 1920, 2765, 1921,  980, 2724, 1922, 1803,
-     1803, 1803, 1800, 2693, 2724, 1802, 1923, 1923, 1923, 2766,
-     1924,  980, 2729, 1925,  980,  980, 1804, 1109, 1109, 1109,
-     1806, 1806, 1806, 1916, 1807, 1236,  980, 1808, 1809, 1809,
-     1809,  980, 1927, 1927, 1927, 1111, 1928,  980, 2694, 1929,
-     2802, 2802, 2802, 1234, 1233, 1810, 2802, 2802, 2802, 1932,
-     1932, 1932, 1814, 1814, 1814, 2699,  980, 2802, 1816, 1816,
-     1816, 2700, 1926, 2802, 1934, 1934, 1934, 1933, 1935, 1815,
-     1232, 1936, 1937, 1937, 1937, 1817, 1938, 1231, 2718, 1939,
-
-     2701, 1818, 1818, 1818, 1940, 1940, 1940,  980, 1941, 1931,
-     1230, 1942, 2802, 2802, 2802,  980, 1229, 1930, 1819, 2802,
-     2802, 2802, 1145, 1145, 1145, 1823, 1823, 1823,  980, 2802,
-     1946, 1946, 1946,  980, 1947, 1228, 2802, 1948, 1227, 2702,
-     1147, 1226, 1824, 1825, 1825, 1825,  980, 1826,  980,  980,
-     1827, 2802, 2802, 2802, 2802, 2802, 2802, 2703, 2802, 2802,
-     2802, 1225, 1944, 1831, 1831, 1831, 1224, 2732, 2802, 1943,
-     2704, 2802, 2705, 2706, 1945, 2802,  980, 1952, 1952, 1952,
-     1832, 1953,  980,  980, 1954, 1955, 1955, 1955, 1834, 1834,
-     1834, 1957, 1957, 1957, 1223, 1958,  980,  980, 1959, 1221,
-
-     2712, 1951,  980, 1956, 1216, 1835, 2713, 2714, 1949,  980,
-     1950, 1960, 1960, 1960, 1962, 1962, 1962, 1964, 1964, 1964,
-     2802, 2802, 2802, 1967, 1967, 1967, 2715, 2719, 1961,  980,
-     2725, 1963, 1215, 2720, 1965, 2733,  980, 2802, 2730,  980,
-     1968, 2802, 2802, 2802, 1842, 1842, 1842, 1970, 1970, 1970,
-     2726, 1971,  980, 2721, 1972, 1182, 1182, 1182, 2802,  980,
-     1212, 1843, 1845, 1845, 1845, 1974, 1974, 1974, 2731, 1975,
-     1211,  980, 1976, 1184, 1847, 1847, 1847, 1966, 1848, 1846,
-      980, 1849,  980,  980, 1969, 2802, 2802, 2802, 1973, 1851,
-     1851, 1851, 1978, 1978, 1978, 2727, 1979, 1210, 1209, 1980,
-
-     1205, 1204, 2802, 1981, 1981, 1981, 1852, 2728, 1983, 1983,
-     1983, 1855, 1855, 1855, 1985, 1985, 1985, 2777, 1986, 2741,
-     1982, 1987,  980, 2729, 1977, 1984,  980,  980, 1856, 1857,
-     1857, 1857, 2730, 1858,  980, 2731, 1859, 1860, 1860, 1860,
-     1988, 1988, 1988,  980, 1989, 1203,  980, 1990, 1993, 1993,
-     1993, 1865, 1865, 1865, 1861, 1995, 1995, 1995, 1202, 1996,
-      980, 2742, 1997, 1201, 1196, 1994, 2767, 2740, 1866, 1217,
-     1217, 1217, 2000, 2000, 2000, 1871, 1871, 1871, 2002, 2002,
-     2002,  980, 2003, 1195, 2745, 2004, 1194, 1219, 2740, 1193,
-      980, 1189, 1872, 2005, 2005, 2005, 1874, 1874, 1874,  980,
-
-     1875, 1188, 2747, 1876, 1879, 1879, 1879, 2009, 2009, 2009,
-     2006, 1882, 1882, 1882, 1187, 1883,  980,  980, 1884, 1041,
-     1041, 1041, 1880, 2747, 2010, 1998, 1886, 1886, 1886, 2012,
-     2012, 2012, 1186, 2013,  980, 1181, 2014, 1043, 1889, 1889,
-     1889, 2746, 1890, 1887,  980, 1891, 1892, 1892, 1892, 2016,
-     2016, 2016, 1895, 1895, 1895, 2018, 2018, 2018,  980, 2019,
-     1180, 1179, 2020, 2011, 1893, 2752, 2017,  980, 2750, 1896,
-     2021, 2021, 2021, 1898, 1898, 1898, 2023, 2023, 2023,  980,
-     2024,  980, 2751, 2025, 1900, 1900, 1900, 2022, 1178, 2752,
-     1899, 2026, 2026, 2026, 2027, 2027, 2027, 1906, 1906, 1906,
-
-      980, 1177, 1901, 2030, 2030, 2030, 2768, 2031,  980, 2778,
-     2032, 1908, 1908, 1908, 1907, 1910, 1910, 1910,  980, 1911,
-     2771,  980, 1912, 1913, 1913, 1913, 2775, 1914, 1176, 1909,
-     1915, 2802, 2802, 2802, 1917, 1917, 1917,  980, 1918, 2775,
-      980, 1919, 1920, 1920, 1920, 2759, 1921, 2772, 2802, 1922,
-     1923, 1923, 1923,  980, 1924, 2776, 2789, 1925, 1109, 1109,
-     1109, 1927, 1927, 1927, 2760, 1928,  980,  980, 1929, 2802,
-     2802, 2802, 2802, 2802, 2802, 1175, 1111, 1932, 1932, 1932,
-     1934, 1934, 1934, 2033, 1935, 1174, 2802, 1936, 1173, 2802,
-     1937, 1937, 1937, 2790, 1938, 1933,  980, 1939, 1940, 1940,
-
-     1940, 1169, 1941,  980,  980, 1942, 1164, 2034, 2802, 2802,
-     2802, 2802, 2802, 2802, 1145, 1145, 1145, 2802, 2802, 2802,
-     2763, 2035, 1946, 1946, 1946, 2802, 1947, 2764, 2802, 1948,
-     2776, 1163, 1147, 2036, 2802, 2041, 2041, 2041, 2802, 2802,
-     2802, 1952, 1952, 1952,  980, 1953,  980,  980, 1954, 1955,
-     1955, 1955, 2042, 1159, 2789, 2802,  980, 1957, 1957, 1957,
-     2037, 1958, 2799, 1158, 1959, 1157, 1156, 1956,  980, 2040,
-     2779, 2780, 2038,  980,  980, 2039, 1960, 1960, 1960, 2044,
-     2044, 2044, 2790, 2045,  980,  980, 2046, 1962, 1962, 1962,
-     2047, 2047, 2047, 1961, 2048, 2791,  980, 2049, 2781, 2043,
-
-     1964, 1964, 1964,  980, 1963, 2050, 2050, 2050, 2782, 2051,
-      980, 1155, 2052, 2802, 2802, 2802, 1154, 1965, 1967, 1967,
-     1967, 2054, 2054, 2054, 2792, 2055, 1150, 2787, 2056, 1149,
-     2802, 2802, 2802, 2802, 2788, 1968, 1970, 1970, 1970,  980,
-     1971, 2799, 1140, 1972, 1182, 1182, 1182,  980, 2802, 1974,
-     1974, 1974, 1139, 1975, 1138,  980, 1976, 2802, 2802, 2802,
-     1137, 1136, 1184, 2797, 1132, 2053, 1978, 1978, 1978, 1131,
-     1979, 2798, 1130, 1980, 2802, 1122, 1121, 1981, 1981, 1981,
-     2060, 2060, 2060, 1120, 2061, 1119, 1115, 2062, 1983, 1983,
-     1983, 1114, 2057, 2058, 1982, 2063, 2063, 2063, 2059, 2064,
-
-     1113, 1108, 2065, 1107, 1103, 1984, 1985, 1985, 1985, 1102,
-     1986, 1097, 1096, 1987, 1988, 1988, 1988, 1095, 1989, 1094,
-     1093, 1990, 2066, 2066, 2066, 1993, 1993, 1993, 2069, 2069,
-     2069, 1089, 2070, 1084, 1083, 2071, 1995, 1995, 1995, 2067,
-     1996, 1078, 1994, 1997, 1217, 1217, 1217, 2002, 2002, 2002,
-     1077, 2003, 1076, 1075, 2004, 2005, 2005, 2005, 1074, 2087,
-     2087, 2087, 1219, 2088, 1073, 1072, 2089, 2090, 2090, 2090,
-     1071, 1070, 2006, 2091, 2091, 2091, 2009, 2009, 2009, 2093,
-     2093, 2093, 1065, 2094, 1064, 1056, 2095, 1041, 1041, 1041,
-     2092, 1051, 1050, 2010, 2097, 2097, 2097, 2016, 2016, 2016,
-
-     1049, 2072, 2000, 2000, 2000, 1043, 2012, 2012, 2012, 1045,
-     2013, 2098, 1040, 2014, 2017, 2021, 2021, 2021, 1039, 1038,
-      980, 1037, 2073, 2074, 2075, 1032, 2076, 2077, 2078, 2079,
-     2080, 1031, 2022, 2081, 2082, 2083, 2084, 2085, 1030, 2096,
-     2099, 2099, 2099, 1026, 2100, 1025, 1015, 2101, 2018, 2018,
-     2018, 1007, 2019, 1006, 1005, 2020, 2102, 2102, 2102, 1004,
-     2103, 1003, 1002, 2104, 2023, 2023, 2023,  997, 2024,  996,
-      995, 2025, 2026, 2026, 2026, 2027, 2027, 2027, 2106, 2106,
-     2106, 2030, 2030, 2030,  994, 2031,  993,  992, 2032, 2802,
-     2802, 2802, 1109, 1109, 1109, 2802, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802,  991,  990, 2802, 2802, 2802, 2802,
-     1111,  989, 2802,  988,  987, 2802,  986,  983, 2802, 2113,
-     2113, 2113,  981,  980, 2802, 2802, 2802, 2802,  978, 2041,
-     2041, 2041, 2802, 2802, 2802, 2108,  977, 2114,  976, 2107,
-      968,  967, 2802,  966,  965, 2109, 2042,  964,  963, 2802,
-      962, 2111, 2116, 2116, 2116, 2110, 2117,  957,  956, 2118,
-      955, 2044, 2044, 2044, 2112, 2045,  954,  946, 2046, 2047,
-     2047, 2047,  945, 2048,  944, 2115, 2049, 2050, 2050, 2050,
-      943, 2051,  940,  939, 2052, 2802, 2802, 2802,  938, 2119,
-     2054, 2054, 2054,  937, 2055,  936,  928, 2056, 2802, 2802,
-
-     2802,  927, 2802, 1182, 1182, 1182, 2802, 2802, 2802, 2060,
-     2060, 2060,  926, 2061,  925, 2802, 2062,  924, 2063, 2063,
-     2063, 1184, 2064, 2802,  923, 2065, 2066, 2066, 2066, 2124,
-     2124, 2124,  922, 2125,  921, 2120, 2126, 2069, 2069, 2069,
-      920, 2070,  917, 2067, 2071, 2128, 2128, 2128,  804, 2123,
-     2122,  916, 2087, 2087, 2087, 2121, 2088,  908,  907, 2089,
-     2090, 2090, 2090, 2129, 2091, 2091, 2091, 2147, 2147, 2147,
-      904, 2148,  903,  902, 2149, 2093, 2093, 2093,  901, 2094,
-      900, 2092, 2095, 2150, 2150, 2150, 2097, 2097, 2097, 2152,
-     2152, 2152,  899, 2153,  896,  895, 2154,  894, 2099, 2099,
-
-     2099, 2151, 2100, 2098,  884, 2101, 2102, 2102, 2102,  883,
-     2103,  882,  881, 2104, 2106, 2106, 2106, 2156, 2156, 2156,
-     2158, 2158, 2158, 2160, 2160, 2160, 2162, 2162, 2162, 2164,
-     2164, 2164,  880,  877, 2157, 2802, 2802, 2802, 2159,  876,
-     2161,  875,  874, 2163,  864,  863, 2165, 2166, 2167, 2113,
-     2113, 2113, 2802, 2168, 2168, 2168, 2116, 2116, 2116,  862,
-     2117,  861,  858, 2118, 2170, 2170, 2170, 2114,  857,  856,
-     2169, 2172, 2172, 2172, 2174, 2174, 2174, 1182, 1182, 1182,
-      855, 2171, 2177, 2177, 2177, 2124, 2124, 2124, 2173, 2125,
-      844, 2175, 2126,  843,  840, 1184, 2179, 2179, 2179, 2178,
-
-     2128, 2128, 2128, 2147, 2147, 2147,  836, 2148,  805,  835,
-     2149,  827,  826, 2180, 2150, 2150, 2150,  825, 2129, 2176,
-     2152, 2152, 2152,  824, 2153,  823,  820, 2154, 2156, 2156,
-     2156,  819, 2151, 2199, 2199, 2199,  811, 2200,  810,  809,
-     2201, 2158, 2158, 2158,  807, 2157, 2160, 2160, 2160, 2202,
-     2202, 2202,  806, 2203,  803,  802, 2204,  801,  800, 2159,
-     2162, 2162, 2162, 2161, 2205, 2205, 2205,  799, 2206,  792,
-      790, 2207, 2164, 2164, 2164,  789,  788, 2163, 2208, 2208,
-     2208,  787, 2209,  784,  783, 2210, 2211, 2211, 2211, 2165,
-     2213, 2213, 2213, 2168, 2168, 2168,  781, 2215, 2215, 2215,
-
-      774, 2216,  773, 2212, 2217,  770,  769, 2214,  767,  766,
-     2169, 2170, 2170, 2170, 2218, 2218, 2218,  765, 2219,  764,
-      763, 2220, 2172, 2172, 2172, 2221, 2221, 2221, 2171, 2222,
-      761,  760, 2223, 2174, 2174, 2174, 2224, 2224, 2224, 2173,
-     2225,  759,  756, 2226, 1182, 1182, 1182, 2177, 2177, 2177,
-     2175, 2228, 2228, 2228,  755, 2229,  754,  752, 2230, 2179,
-     2179, 2179, 1184,  749, 2178, 2231, 2231, 2231,  748, 2232,
-      744,  743, 2233, 2250, 2250, 2250, 2180, 2252, 2252, 2252,
-      742, 2199, 2199, 2199,  741, 2200,  740, 2227, 2201,  739,
-     2251, 1391, 2202, 2202, 2202,  738, 2203,  736,  735, 2204,
-
-     2205, 2205, 2205,  734, 2206,  733,  732, 2207, 2208, 2208,
-     2208,  731, 2209,  730,  729, 2210, 2211, 2211, 2211, 2253,
-     2253, 2253,  728, 2254,  727,  726, 2255, 2213, 2213, 2213,
-     2256, 2256, 2256, 2212, 2257,  721,  718, 2258, 2215, 2215,
-     2215,  720, 2216,  716, 2214, 2217, 2218, 2218, 2218,  715,
-     2219,  484,  483, 2220, 2221, 2221, 2221,  709, 2222,  706,
-      705, 2223, 2224, 2224, 2224,  704, 2225,  703,  702, 2226,
-     1182, 1182, 1182, 2228, 2228, 2228,  701, 2229,  698,  696,
-     2230,  690, 2231, 2231, 2231,  689, 2232,  688, 1184, 2233,
-     2265, 2265, 2265, 2273, 2273, 2273, 2250, 2250, 2250, 2276,
-
-     2276, 2276,  687, 2277,  686,  685, 2278,  684,  980,  683,
-      682,  980,  680, 2251, 1391,  672,  671, 1391, 2252, 2252,
-     2252,  670, 2253, 2253, 2253, 2259, 2254,  669,  666, 2255,
-     2256, 2256, 2256,  665, 2257,  664,  662, 2258, 2279, 2279,
-     2279, 2285, 2285, 2285, 2265, 2265, 2265, 2287, 2287, 2287,
-     2288, 2288, 2288, 2273, 2273, 2273, 2280,  653,  650,  980,
-      649,  648,  980,  647,  646,  980,  645,  644,  980,  642,
-      636,  980, 2295, 2295, 2295,  635,  634, 2286, 2276, 2276,
-     2276,  633, 2277,  632,  631, 2278, 2294,  630,  629,  628,
-      980, 2279, 2279, 2279,  627,  625, 1391,  619,  618, 2296,
-
-     1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 2280,
-      617, 1389, 2300, 2300, 2300,  616, 1389, 1389, 1389, 1391,
-     1389,  615,  614,  613,  612,  611,  609,  601,  600,  599,
-      980, 2301, 2301, 2301, 2302, 2302, 2302,  595, 1389, 1389,
-     1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,  980,
-      593, 1389,  980, 2285, 2285, 2285, 1389, 1389, 1389, 1391,
-     1389,  586, 2287, 2287, 2287, 2288, 2288, 2288,  585,  584,
-      583,  980, 2308, 2308, 2308, 2312, 2312, 2312, 1389, 1389,
-      980,  580,  578,  980,  572,  571, 2304, 2295, 2295, 2295,
-      980,  569,  568,  980,  554, 2306,  551,  548, 2307, 2316,
-
-     2316, 2316,  547,  545,  538,  980,  537,  536,  535,  533,
-      531,  530, 2300, 2300, 2300,  529,  528,  980,  526,  524,
-     2314, 1389, 1389, 1389, 1389, 1389, 2317, 1389, 1389, 1389,
-      980,  523, 1389, 2338, 2338, 2338,  520, 1389, 1389, 1389,
-     1391, 1389,  519,  517,  515, 2318,  514,  513,  511,  509,
-      508,  980, 2301, 2301, 2301, 2302, 2302, 2302,  507, 1389,
-     1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 2317,
-      980,  505, 1389,  980, 2308, 2308, 2308, 1389, 1389, 1389,
-     1391, 1389,  498,  495,  494, 2319,  492,  490, 2320,  484,
-      483,  484,  980, 2312, 2312, 2312, 2316, 2316, 2316, 1389,
-
-     1389, 2344, 2344, 2344, 2338, 2338, 2338, 2326,  483,  482,
-      481,  980, 2802, 2802,  980, 2344, 2344, 2344, 2802,  980,
-     2802, 2802,  980, 2363, 2363, 2363, 2330, 2802, 2802, 2334,
-     2802, 2802, 2802,  980, 2367, 2367, 2367, 2355, 2363, 2363,
-     2363,  980, 2367, 2367, 2367, 2391, 2391, 2391, 2361, 2399,
-     2399, 2399,  980, 2802, 2802, 2802,  980, 2802, 2802, 2802,
-      980, 2802, 2802,  980, 2407, 2407, 2407,  980, 2410, 2410,
-     2410, 2380, 2391, 2391, 2391, 2384, 2408, 2802, 2802, 2409,
-     2802, 2802,  980, 2411, 2411, 2411,  980, 2414, 2414, 2414,
-      980, 2399, 2399, 2399, 2802, 2417, 2802, 2802, 2418, 2802,
-
-     2802,  980, 2419, 2419, 2419,  980, 2422, 2422, 2422,  980,
-     2423, 2423, 2423, 2424, 2424, 2424, 2802, 2802, 2802, 2802,
-      980, 2434, 2434, 2434,  980, 2407, 2407, 2407,  980, 2426,
-     2802,  980, 2427, 2410, 2410, 2410, 2802, 2430, 2802,  980,
-     2431, 2802, 2802,  980, 2802, 2411, 2411, 2411, 2802, 2432,
-     2802,  980, 2433, 2414, 2414, 2414, 2438, 2438, 2438, 2802,
-     2419, 2419, 2419,  980, 2441, 2802, 2802, 2442, 2802, 2802,
-     2802,  980, 2802, 2802,  980, 2444, 2444, 2444,  980, 2802,
-     2422, 2422, 2422, 2802, 2445, 2802, 2436, 2446, 2423, 2423,
-     2423, 2802, 2447,  980, 2802, 2448, 2802, 2802,  980, 2802,
-
-     2424, 2424, 2424, 2802, 2449, 2802,  980, 2450, 2434, 2434,
-     2434, 2802, 2460, 2802, 2802, 2461, 2802, 2802,  980, 2802,
-     2438, 2438, 2438, 2802, 2465, 2802,  980, 2466, 2444, 2444,
-     2444, 2802, 2472, 2802, 2802, 2473, 2802, 2802,  980, 2480,
-     2480, 2480, 2491, 2491, 2491, 2802,  980, 2480, 2480, 2480,
-     2802, 2509, 2802, 2802, 2510, 2802, 2802,  980, 2802, 2802,
-      980, 2802, 2491, 2491, 2491,  980, 2521, 2802, 2802, 2522,
-     2524, 2524, 2524, 2531, 2531, 2531, 2802, 2524, 2524, 2524,
-      980, 2555, 2802, 2802, 2556, 2531, 2531, 2531,  980, 2563,
-     2802,  980, 2564, 2802, 2802,  980, 2620, 2620, 2620, 2802,
-
-     2620, 2620, 2620,  980, 2653, 2802, 2802, 2654, 2708, 2708,
-     2708, 2722, 2722, 2722,  980, 2734, 2734, 2734,  980, 2708,
-     2708, 2708, 2736, 2736, 2736, 2802, 2709, 2802, 2802, 2723,
-     2738, 2738, 2738, 2735, 2722, 2722, 2722, 2709, 2802, 2802,
-     2737, 2748, 2748, 2748, 2753, 2753, 2753, 2802, 2739, 2755,
-     2755, 2755, 2723, 2757, 2757, 2757, 2734, 2734, 2734, 2749,
-     2802, 2802, 2754, 2736, 2736, 2736, 2802, 2756, 2738, 2738,
-     2738, 2758, 2802, 2802, 2735, 2761, 2761, 2761, 2769, 2769,
-     2769, 2737, 2748, 2748, 2748, 2802, 2739, 2773, 2773, 2773,
-     2753, 2753, 2753, 2762, 2802, 2802, 2770, 2755, 2755, 2755,
-
-     2749, 2757, 2757, 2757, 2802, 2774, 2802, 2802, 2754, 2761,
-     2761, 2761, 2769, 2769, 2769, 2756, 2773, 2773, 2773, 2758,
-     2783, 2783, 2783, 2785, 2785, 2785, 2802, 2762, 2802, 2802,
-     2770, 2783, 2783, 2783, 2774, 2785, 2785, 2785, 2784, 2802,
-     2802, 2786, 2793, 2793, 2793, 2795, 2795, 2795, 2802, 2784,
-     2793, 2793, 2793, 2786, 2795, 2795, 2795, 2800, 2800, 2800,
-     2794, 2802, 2802, 2796, 2800, 2800, 2800, 2802, 2794, 2802,
-     2802, 2802, 2796, 2802, 2802, 2801, 2802, 2802, 2802, 2802,
-     2802, 2802, 2801,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  149,  149,  149,  149,  149,  149,  149,  149,
-
-      149,  154,  154,  154,  154,  154,  154,  154,  154,  154,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  160,
-      160,  160,  160,  160,  160,  160,  160,  160,  163,  163,
-      163,  163,  163,  163,  163,  163,  163,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  179,  179,  179,  179,  179,
-      179,  179,  179,  179,  187,  187,  187,  187,  187,  187,
-      187,  187,  187,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  202,  202,  202,  202,  202,  202,  202,  202,
-      202,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-
-      215,  215,  215,  215,  215,  215,  215,  215,  215,  230,
-      230,  230,  230,  230,  230,  230,  230,  230,  236,  236,
-      236,  236,  236,  236,  236,  236,  236,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  260,  260,  260,  260,
-      260,  260,  260,  260,  260,  267,  267,  267,  267,  267,
-      267,  267,  267,  267,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  281,  281,  281,  281,  281,  281,  281,
-      281,  281,  287,  287,  287,  287,  287,  287,  287,  287,
-      287,  295,  295,  295,  295,  295,  295,  295,  295,  295,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  320,
-
-      320,  320,  320,  320,  320,  320,  320,  320,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  381,  381,  381,  381,
-      381,  381,  381,  381,  381,  403,  403,  403,  403,  403,
-      403,  403,  403,  403,  424,  424,  424,  424,  424,  424,
-      424,  424,  424,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  467,  467,  467,  467,  467,  467,  467,  467,
-      467,  470,  470,  470,  470,  470,  470,  470,  470,  470,
-      493,  493,  493, 2802, 2802, 2802,  493,  506,  506,  506,
-     2802, 2802, 2802,  506,  512,  512,  512, 2802, 2802, 2802,
-
-      512,  518,  518,  518, 2802, 2802, 2802,  518,  527,  527,
-      527, 2802, 2802, 2802,  527,  534,  534,  534, 2802, 2802,
-     2802,  534,  546,  546,  546, 2802, 2802, 2802,  546,  555,
-      555,  555, 2802, 2802, 2802,  555,  570,  570,  570, 2802,
-     2802, 2802,  570,  579,  579,  579, 2802, 2802, 2802,  579,
-      594,  594,  594, 2802, 2802, 2802,  594,  610,  610,  610,
-     2802, 2802, 2802,  610,  626,  626,  626, 2802, 2802, 2802,
-      626,  643,  643,  643, 2802, 2802, 2802,  643,  663,  663,
-      663, 2802, 2802, 2802,  663,  681,  681,  681, 2802, 2802,
-     2802,  681,  697,  697,  697, 2802, 2802, 2802,  697,  717,
-
-      717,  717,  717,  717,  717,  717, 2802,  717,  737, 2802,
-     2802, 2802,  737,  747, 2802, 2802, 2802,  747,  753, 2802,
-     2802, 2802,  753,  762, 2802, 2802, 2802,  762,  768, 2802,
-     2802, 2802,  768,  782, 2802, 2802, 2802,  782,  791, 2802,
-     2802, 2802,  791,  808, 2802, 2802, 2802,  808,  818, 2802,
-     2802, 2802,  818,  834, 2802, 2802, 2802,  834,  854, 2802,
-     2802, 2802,  854,  873, 2802, 2802, 2802,  873,  893, 2802,
-     2802, 2802,  893,  643,  643,  643, 2802, 2802, 2802,  643,
-      915, 2802, 2802, 2802,  915,  663,  663,  663, 2802, 2802,
-     2802,  663,  935, 2802, 2802, 2802,  935,  681,  681,  681,
-
-     2802, 2802, 2802,  681,  953, 2802, 2802, 2802,  953,  697,
-      697,  697, 2802, 2802, 2802,  697,  975, 2802, 2802, 2802,
-      975,  979,  979,  979,  979,  979,  979,  979,  979,  979,
-      985, 2802, 2802, 2802, 2802,  985,  493,  493,  493, 2802,
-     2802, 2802,  493,  999,  999,  999,  999, 2802, 2802,  999,
-      999,  506,  506,  506, 2802, 2802, 2802,  506, 1012, 1012,
-     1012, 1012, 2802, 2802, 1012, 1012,  512,  512,  512, 2802,
-     2802, 2802,  512, 1022, 1022, 1022, 1022, 2802, 2802, 1022,
-     1022,  518,  518,  518, 2802, 2802, 2802,  518, 1034, 1034,
-     1034, 1034, 2802, 2802, 1034, 1034,  527,  527,  527, 2802,
-
-     2802, 2802,  527, 1042, 1042, 1042, 1042, 2802, 2802, 1042,
-     1042,  534,  534,  534, 2802, 2802, 2802,  534, 1053, 1053,
-     1053, 1053, 2802, 2802, 1053, 1053,  546,  546,  546, 2802,
-     2802, 2802,  546, 1067, 1067, 1067, 1067, 2802, 2802, 1067,
-     1067, 1080, 1080, 1080, 1080, 2802, 2802, 1080, 1080,  570,
-      570,  570, 2802, 2802, 2802,  570, 1086, 1086, 1086, 1086,
-     2802, 2802, 1086, 1086,  579,  579,  579, 2802, 2802, 2802,
-      579, 1099, 1099, 1099, 1099, 2802, 2802, 1099, 1099,  594,
-      594,  594, 2802, 2802, 2802,  594, 1110, 1110, 1110, 1110,
-     2802, 2802, 1110, 1110,  610,  610,  610, 2802, 2802, 2802,
-
-      610, 1127, 1127, 1127, 1127, 2802, 2802, 1127, 1127,  626,
-      626,  626, 2802, 2802, 2802,  626, 1146, 1146, 1146, 1146,
-     2802, 2802, 1146, 1146,  643,  643,  643, 2802, 2802, 2802,
-      643, 1166, 1166, 1166, 1166, 2802, 2802, 1166, 1166,  663,
-      663,  663, 2802, 2802, 2802,  663, 1183, 1183, 1183, 1183,
-     2802, 2802, 1183, 1183,  681,  681,  681, 2802, 2802, 2802,
-      681, 1198, 1198, 1198, 1198, 2802, 2802, 1198, 1198,  697,
-      697,  697, 2802, 2802, 2802,  697, 1218, 1218, 1218, 1218,
-     2802, 2802, 1218, 1218,  979,  979,  979,  979,  979,  979,
-      979,  979,  979,  985, 2802,  985, 2802, 2802,  985,  493,
-
-      493,  493, 2802, 2802, 2802,  493,  999,  999,  999,  999,
-     2802, 2802,  999,  999,  506,  506,  506, 2802, 2802, 2802,
-      506, 1012, 1012, 1012, 1012, 2802, 2802, 1012, 1012,  512,
-      512,  512, 2802, 2802, 2802,  512, 1022, 1022, 1022, 1022,
-     2802, 2802, 1022, 1022,  518,  518,  518, 2802, 2802, 2802,
-      518, 1034, 1034, 1034, 1034, 2802, 2802, 1034, 1034,  527,
-      527,  527, 2802, 2802, 2802,  527, 1042, 1042, 1042, 1042,
-     2802, 2802, 1042, 1042,  534,  534,  534, 2802, 2802, 2802,
-      534, 1053, 1053, 1053, 1053, 2802, 2802, 1053, 1053,  546,
-      546,  546, 2802, 2802, 2802,  546, 1067, 1067, 1067, 1067,
-
-     2802, 2802, 1067, 1067, 1080, 1080, 1080, 1080, 2802, 2802,
-     1080, 1080,  570,  570,  570, 2802, 2802, 2802,  570, 1086,
-     1086, 1086, 1086, 2802, 2802, 1086, 1086,  579,  579,  579,
-      579, 2802,  579, 2802,  579, 1099, 1099, 1099, 1099, 2802,
-     2802, 1099, 1099,  594,  594,  594, 2802, 2802, 2802,  594,
-     1110, 1110, 1110, 1110, 2802, 2802, 1110, 1110,  610,  610,
-      610, 2802, 2802, 2802,  610, 1127, 1127, 1127, 1127, 2802,
-     2802, 1127, 1127,  626,  626,  626, 2802, 2802, 2802,  626,
-     1146, 1146, 1146, 1146, 2802, 2802, 1146, 1146,  643,  643,
-      643,  643, 2802,  643, 2802,  643, 1166, 1166, 1166, 1166,
-
-     2802, 2802, 1166, 1166,  663,  663,  663,  663, 2802,  663,
-     2802,  663, 1183, 1183, 1183, 1183, 2802, 2802, 1183, 1183,
-      681,  681,  681, 2802, 2802, 2802,  681, 1198, 1198, 1198,
-     1198, 2802, 2802, 1198, 1198,  697,  697,  697, 2802, 2802,
-     2802,  697, 1218, 1218, 1218, 1218, 2802, 2802, 1218, 1218,
-      979,  979,  979,  979,  979,  979,  979,  979,  979, 1389,
-     1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,  493,  493,
-      493,  493, 2802,  493, 2802,  493,  999,  999,  999,  999,
-     2802, 2802,  999,  999,  506,  506,  506, 2802, 2802, 2802,
-      506, 1012, 1012, 1012, 1012, 2802, 2802, 1012, 1012,  512,
-
-      512,  512,  512, 2802,  512, 2802,  512, 1022, 1022, 1022,
-     1022, 2802, 2802, 1022, 1022,  518,  518,  518,  518, 2802,
-      518, 2802,  518, 1034, 1034, 1034, 1034, 2802, 2802, 1034,
-     1034,  527,  527,  527, 2802, 2802, 2802,  527, 1042, 1042,
-     1042, 1042, 2802, 2802, 1042, 1042,  534,  534,  534, 2802,
-     2802, 2802,  534, 1053, 1053, 1053, 1053, 2802, 2802, 1053,
-     1053,  546,  546,  546, 2802, 2802, 2802,  546, 1067, 1067,
-     1067, 1067, 2802, 2802, 1067, 1067, 1080, 1080, 1080, 1080,
-     2802, 2802, 1080, 1080,  570,  570,  570, 2802, 2802, 2802,
-      570, 1086, 1086, 1086, 1086, 2802, 2802, 1086, 1086,  579,
-
-      579,  579,  579, 2802,  579, 2802,  579, 1099, 1099, 1099,
-     1099, 2802, 2802, 1099, 1099,  594,  594,  594,  594, 2802,
-      594, 2802,  594, 1110, 1110, 1110, 1110, 2802, 2802, 1110,
-     1110,  610,  610,  610, 2802, 2802, 2802,  610, 1127, 1127,
-     1127, 1127, 2802, 2802, 1127, 1127,  626,  626,  626, 2802,
-     2802, 2802,  626, 1146, 1146, 1146, 1146, 2802, 2802, 1146,
-     1146,  643,  643,  643, 2802, 2802, 2802,  643, 1166, 1166,
-     1166, 1166, 2802, 2802, 1166, 1166,  663,  663,  663, 2802,
-     2802, 2802,  663, 1183, 1183, 1183, 1183, 2802, 2802, 1183,
-     1183,  681,  681,  681,  681, 2802,  681, 2802,  681, 1198,
-
-     1198, 1198, 1198, 2802, 2802, 1198, 1198,  697,  697,  697,
-     2802, 2802, 2802,  697, 1218, 1218, 1218, 1218, 2802, 2802,
-     1218, 1218,  979,  979,  979,  979,  979,  979,  979,  979,
-      979, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
-      493,  493,  493, 2802, 2802, 2802,  493,  999,  999,  999,
-      999, 2802, 2802,  999,  999,  506,  506,  506, 2802, 2802,
-     2802,  506, 1012, 1012, 1012, 1012, 2802, 2802, 1012, 1012,
-     1022, 1022, 1022, 1022, 2802, 2802, 1022, 1022,  518,  518,
-      518,  518, 2802,  518, 2802,  518, 1034, 1034, 1034, 1034,
-     2802, 2802, 1034, 1034,  527,  527,  527,  527, 2802,  527,
-
-     2802,  527, 1042, 1042, 1042, 1042, 2802, 2802, 1042, 1042,
-      534,  534,  534, 2802, 2802, 2802,  534, 1053, 1053, 1053,
-     1053, 2802, 2802, 1053, 1053,  546,  546,  546,  546, 2802,
-      546, 2802,  546, 1067, 1067, 1067, 1067, 2802, 2802, 1067,
-     1067, 1080, 1080, 1080, 1080, 2802, 2802, 1080, 1080,  570,
-      570,  570, 2802, 2802, 2802,  570, 1086, 1086, 1086, 1086,
-     2802, 2802, 1086, 1086,  579,  579,  579, 2802, 2802, 2802,
-      579, 1099, 1099, 1099, 1099, 2802, 2802, 1099, 1099,  594,
-      594,  594, 2802, 2802, 2802,  594, 1110, 1110, 1110, 1110,
-     2802, 2802, 1110, 1110,  610,  610,  610,  610, 2802,  610,
-
-     2802,  610, 1127, 1127, 1127, 1127, 2802, 2802, 1127, 1127,
-      626,  626,  626, 2802, 2802, 2802,  626, 1146, 1146, 1146,
-     1146, 2802, 2802, 1146, 1146,  643,  643,  643, 2802, 2802,
-     2802,  643, 1166, 1166, 1166, 1166, 2802, 2802, 1166, 1166,
-      663,  663,  663, 2802, 2802, 2802,  663, 1183, 1183, 1183,
-     1183, 2802, 2802, 1183, 1183,  681,  681,  681, 2802, 2802,
-     2802,  681, 1198, 1198, 1198, 1198, 2802, 2802, 1198, 1198,
-      697,  697,  697, 2802, 2802, 2802,  697, 1218, 1218, 1218,
-     1218, 2802, 2802, 1218, 1218,  979,  979,  979,  979,  979,
-      979,  979,  979,  979, 1389, 1389, 1389, 1389, 1389, 1389,
-
-     1389, 1389, 1389,  493,  493,  493, 2802, 2802, 2802,  493,
-      999,  999,  999,  999, 2802, 2802,  999,  999,  506,  506,
-      506, 2802, 2802, 2802,  506, 1012, 1012, 1012, 1012, 2802,
-     2802, 1012, 1012, 1022, 1022, 1022, 1022, 2802, 2802, 1022,
-     1022,  518,  518,  518, 2802, 2802, 2802,  518,  527,  527,
-      527,  527, 2802,  527, 2802,  527, 1042, 1042, 1042, 1042,
-     2802, 2802, 1042, 1042,  534,  534,  534, 2802, 2802, 2802,
-      534, 1053, 1053, 1053, 1053, 2802, 2802, 1053, 1053,  546,
-      546,  546, 2802, 2802, 2802,  546, 1067, 1067, 1067, 1067,
-     2802, 2802, 1067, 1067, 1080, 1080, 1080, 1080, 2802, 2802,
-
-     1080, 1080,  570,  570,  570, 2802, 2802, 2802,  570, 1086,
-     1086, 1086, 1086, 2802, 2802, 1086, 1086,  579,  579,  579,
-      579, 2802,  579, 2802,  579, 1099, 1099, 1099, 1099, 2802,
-     2802, 1099, 1099,  594,  594,  594,  594, 2802,  594, 2802,
-      594, 1110, 1110, 1110, 1110, 2802, 2802, 1110, 1110,  610,
-      610,  610,  610, 2802,  610, 2802,  610, 1127, 1127, 1127,
-     1127, 2802, 2802, 1127, 1127,  626,  626,  626,  626, 2802,
-      626, 2802,  626, 1146, 1146, 1146, 1146, 2802, 2802, 1146,
-     1146,  643,  643,  643,  643, 2802,  643, 2802,  643, 1166,
-     1166, 1166, 1166, 2802, 2802, 1166, 1166,  663,  663,  663,
-
-      663, 2802,  663, 2802,  663, 1183, 1183, 1183, 1183, 2802,
-     2802, 1183, 1183,  681,  681,  681,  681, 2802,  681, 2802,
-      681,  697,  697,  697, 2802, 2802, 2802,  697, 1218, 1218,
-     1218, 1218, 2802, 2802, 1218, 1218,  979,  979,  979,  979,
-      979,  979,  979,  979,  979, 1389, 1389, 1389, 1389, 1389,
-     1389, 1389, 1389, 1389,  493,  493,  493,  493, 2802,  493,
-     2802,  493,  506,  506,  506, 2802, 2802, 2802,  506, 1012,
-     1012, 1012, 1012, 2802, 2802, 1012, 1012, 2298, 2298, 2298,
-     2298, 2298, 2298, 2298, 2298, 2298, 2299, 2299, 2299, 2299,
-     2299, 2299, 2299, 2299, 2299,  147, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802
-    } ;
-
-static yyconst short int yy_chk[9962] =
-    {   0,
-        0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
-        6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
-        4,   10,    0,    5,    0,    9,    6,  477,   10,    7,
-        8,    8,    8,  152,   11,   13,   13,   12,   14,   14,
-       13,   13,  477,   14,   14,  153,    8,   17,   17,  152,
-       13,   15,   15,   14,   15,  156,   15,   16,   16,  398,
-       16,  153,   16,   18,   18,  398,   15,   19,   19,   19,
-     1388,  156,   16,   20,   20,   20,   23,   23,   23,   24,
-       24,   24,  272,   19,   17,  150,  150,  150, 1388,   20,
-      272,  313,   23,  636,  636,   24,  151,  151,  151,  313,
-
-       18,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21, 1398,   21,   21,   21,
-       21,   21,   25,   25,   25, 1400,   26,   26,   26,   27,
-       27,   27,   28,   28,   28,   29,   29,   29,   25,   21,
-       21,   21,   26,  180, 1401,   27,   21,  184,   28, 1131,
-     1131,   29,   21,  155,  155,  155,  177,  177,  177,  180,
-      184,   21,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,   22, 1402,   22,   22,
-       22,   22,   22,   30,   30,   30, 1404,   31,   31,   31,
-       32,   32,   32,   33,   33,   33,   34,   34,   34,   30,
-
-       22,   22,   22,   31,  191,  197,   32,   22,  701,   33,
-      701,  191,   34,   22,  188,  188,  188,  194,  194,  194,
-      191,  197,   22,   35,   35,   35,   35,   35,   35,   35,
-       35,   35,   35,   35,   35,   35,   35,   35, 1407,   35,
-       35,   35,   35,   35,   37,   37,   37, 1408,   38,   38,
-       38,   39,   39,   39,   40,   40,   40,  203,  203,  203,
-       37,   35,   35,   35,   38, 1435,  486,   39,   35,  486,
-       40,   35,   36,   36,   36,   36,   36,   36,   36,   36,
-       36,   36,   36,   36,   36,   36,   36, 1436,   36,   36,
-       36,   36,   36,   43,   43,   43, 1437,   44,   44,   44,
-
-       45,   45,   45,   46,   46,   46,  207,  207,  207,   43,
-       36,   36,   36,   44,  565, 1438,   45,   36,  565,   46,
-       36,   41,   41,   41,   41,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41, 1449,   41,   41,   41,
-       41,   41,   49,   49,   49,   50,   50,   50,   51,   51,
-       51,   52,   52,   52,  216,  216,  216, 1450,   49,   41,
-       41,   50,  982, 1451,   51,   41,  982,   52, 1453,   41,
-       41,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,   42, 1454,   42,   42,   42,
-       42,   42,   55,   55,   55,   56,   56,   56,   57,   57,
-
-       57,   58,   58,   58,  220,  220,  220, 1455,   55,   42,
-       42,   56, 1137, 1137,   57,   42, 1456,   58, 1459,   42,
-       42,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   53,   53,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-
-       53, 1468,   53,   53,   53,   53,   53,   61,   61,   61,
-     1469,   62,   62,   62,  400,   63,   63,   63,   64,   64,
-       64,  192,  400,   61,   53,   53,   53,   62,  204,  210,
-       53,   63,  787, 1470,   64,  204,  456,  192,   53,  192,
-      231,  231,  231,  456,  204,  210,  787,   53,   54,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54, 1471,   54,   54,   54,   54,   54,   65,
-       65,   65, 1478,   66,   66,   66,  416,   67,   67,   67,
-       68,   68,   68,  205,  416,   65,   54,   54,   54,   66,
-      217,  223,   54,   67,  788, 1479,   68,  217, 1503,  205,
-
-       54,  234,  234,  234,  205, 1508,  217,  223,  788,   54,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   69,   69,   69,   70,   70,
-       70,  244,  244,  244,  248,  248,  248,  261,  261,  261,
-     1511,   69, 1495, 1495,   70,   71,   71,   71,   71,   71,
-
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-     1519,   71,   71,   71,   71,   71,   73,   73,   73,   74,
-       74,   74,   75,   75,   75,   76,   76,   76,   77,   77,
-       77,  218,   73,   71,   71,   74,  227,  421,   75,  237,
-      719,   76,   71,   71,   77,  421,   71,  218,  265,  265,
-      265,  227,  719,  218, 1524,  237,   71,   72,   72,   72,
-       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72, 1525,   72,   72,   72,   72,   72,   78,   78,
-       78,   81,   81,   81,   82,   82,   82,   83,   83,   83,
-       84,   84,   84,  251,   78,   72,   72,   81,  268,  463,
-
-       82, 1526, 1529,   83,   72,   72,   84,  463,   72,  251,
-      276,  276,  276, 1534,  268,  279,  279,  279,   72,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
-       79,   79,   79,   79, 1535,   79,   79,   79,   79,   79,
-       85,   85,   85,   86,   86,   86,   87,   87,   87,   88,
-       88,   88,   89,   89,   89,  259,   85,   79,   79,   86,
-      232,  282,   87,  245, 1536,   88, 1537,  232,   89, 1538,
-      245,  259,  288,  288,  288, 1539,  232,  282, 1540,  245,
-      259,   79,   79,   80,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80,   80,   80,   80,   80, 1543,   80,
-
-       80,   80,   80,   80,   90,   90,   90,   93,   93,   93,
-       94,   94,   94,   95,   95,   95,   96,   96,   96,  274,
-       90,   80,   80,   93,  263,  296,   94,  277,  310,   95,
-     1547,  263,   96, 1558,  277,  274,  293,  293,  293, 1562,
-      263,  296,  274,  277,  310,   80,   80,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91, 1563,   91,   91,   91,   91,   91,   99,   99,
-       99,  100,  100,  100,  101,  101,  101,  102,  102,  102,
-      105,  105,  105,  291,   99,   91,   91,  100,  290, 1571,
-      101, 1572,  328,  102, 1573,  290,  105, 1574, 1575,  291,
-
-      291,   91, 1579,   91,  290,  303,  303,  303,  328,   91,
-       91,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   92, 1587,   92,   92,   92,
-       92,   92,  106,  106,  106,  107,  107,  107,  108,  108,
-      108,  111,  111,  111,  112,  112,  112,  305,  106,   92,
-       92,  107,  304,  346,  108, 1590,  367,  111, 1592,  304,
-      112, 1597, 1608,  305, 1618,   92, 1619,   92,  304,  346,
-     1625,  305,  367,   92,   92,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-
-      103,  103,  103,  103,  103,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      113,  113,  113,  114,  114,  114,  307,  307,  307,  321,
-      321,  321,  325,  325,  325, 1626,  113, 1627, 1628,  114,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  117,  117,  117,  118,  118,
-      118,  119,  119,  119,  120,  120,  120,  339,  339,  339,
-     1636,  117, 1638, 1639,  118, 1640, 1643,  119, 1725, 1725,
-      120,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  123,  123,  123,  124,
-      124,  124,  125,  125,  125,  126,  126,  126,  343,  343,
-      343, 1730,  123, 1731, 1732,  124, 1738, 1748,  125, 1753,
-     1760,  126,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  129,  129,  129,
-      130,  130,  130,  131,  131,  131,  132,  132,  132,  360,
-      360,  360, 1739,  129, 1768, 1776,  130, 1778, 1739,  131,
-     1783, 1784,  132,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  133,  133,  133,  135,  135,
-      135,  136,  136,  136,  137,  137,  137,  138,  138,  138,
-      364,  364,  364, 1785,  135, 1786, 1862,  136, 1863, 1868,
-      137, 1877, 1878,  138,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
-      139,  139,  139,  139,  139,  139,  139,  139,  139,  141,
-      141,  141,  142,  142,  142,  143,  143,  143,  144,  144,
-      144,  145,  145,  166,  175,  141,  145, 1888,  142,  186,
-      190,  143,  146,  146,  144, 1904,  145,  146,  246, 1905,
-      175, 1992, 2001,  189, 2028,  186,  190,  146,  190, 2068,
-      189,  190,  190, 2105,  246,  175, 2155,  166,  145,  189,
-      186,  189,  190,  166,  189,  189,  262,  166, 1392,  146,
-      246, 2001,  166,  262,  341,  189,  257,  257,  257,  258,
-      258,  258,  262,  284,  284,  284,  285,  285,  285,  323,
-
-      341,  262,  341,  257,  322,  340,  258,  300,  300,  300,
-      284,  322,  340,  285,  286,  323, 1580,  301,  301,  301,
-      322,  340, 2073, 2076,  300,  382,  382,  382,  323, 1580,
-      286,  286,  286,  286,  301, 1389, 1740,  286,  286,  318,
-      318,  318,  286,  286,  286,  286,  319,  319,  319,  331,
-      331,  331,  335,  335,  335, 2073,  318,  336,  336,  336,
-      337,  337,  337,  319, 2076,  389,  331,  362,  361,  335,
-      357,  357,  357, 1740,  336,  361, 2130,  337,  358,  358,
-      358,  389, 2513,  362,  361,  384,  362,  357,  379,  379,
-      379, 2513,  331,  383, 2075,  358,  380,  380,  380, 2130,
-
-      383,  384,  386,  386,  386,  379,  401,  401,  401,  383,
-      402,  402,  402,  380,  405,  384,  404,  404,  404,  406,
-      411,  405, 2075,  401,  408,  408,  408,  402,  432,  427,
-      405,  453,  422,  422,  422,  406,  411,  423,  423,  423,
-      425,  425,  425,  426,  432,  427, 1387,  453,  406,  422,
-      426,  429,  429,  429,  423,  443,  443,  443, 1384,  426,
-      427,  444,  444,  444,  446,  446,  446,  447,  448,  450,
-      450,  450,  443,  473,  447,  465,  465,  465,  444, 2079,
-      466,  466,  466,  447,  448,  468,  468,  468,  469,  476,
-      476,  476,  465, 2081, 1870,  469,  448,  466,  485,  485,
-
-      485,  509,  509,  509,  469, 1581, 2182,  473,  514,  514,
-      514, 2079, 2074,  473,  521,  521,  521,  473,  509,  536,
-      536,  536,  473, 1222, 2081,  514,  539,  539,  539, 2083,
-     1581,  521, 1870,  540,  540,  540,  536,  540, 2182, 1222,
-      540, 2074, 2143,  539,  541,  541,  541, 2080,  485,  542,
-      542,  542, 2074,  542, 2078, 1380,  542,  548,  548,  548,
-     2083,  541,  556,  556,  556,  557,  557,  557, 2080,  557,
-     2077, 2084,  557, 2133,  548,  558,  558,  558, 2131,  556,
-      559,  559,  559, 2085,  559, 2143, 2132,  559,  573,  573,
-      573, 2078,  558,  574,  574,  574, 2084,  574, 2133, 2084,
-
-      574,  575,  575,  575, 2077,  573,  576,  576,  576, 2086,
-      576, 2138, 2085,  576,  581,  581,  581, 2131,  575,  587,
-      587,  587,  588,  588,  588, 2132,  588, 2136, 2134,  588,
-     1379,  581,  589,  589,  589, 2137,  587,  590,  590,  590,
-     2183,  590, 2142, 2086,  590,  596,  596,  596, 2139,  589,
-      597,  597,  597, 2134,  597, 2138, 2137,  597,  599,  599,
-      599, 2136,  596,  602,  602,  602,  603,  603,  603, 2139,
-      603, 2142, 2135,  603, 2141,  599,  604,  604,  604, 2183,
-      602,  605,  605,  605, 1378,  605, 1377, 2186,  605,  606,
-      606,  606, 2140,  604,  607,  607,  607, 2141,  607, 2260,
-
-     2144,  607,  614,  614,  614, 2135,  606,  619,  619,  619,
-      620,  620,  620,  621,  621,  621, 2140,  621, 2145,  614,
-      621,  622,  622,  622,  619, 2144, 2186,  620,  623,  623,
-      623, 2188,  623, 2146, 2189,  623, 2260, 2357,  622,  630,
-      630,  630,  637,  637,  637,  638,  638,  638, 2357,  638,
-     2185, 2145,  638,  639,  639,  639,  630, 2181, 2188,  637,
-      640,  640,  640, 2187,  640, 2082, 2146,  640, 2189, 2184,
-      639,  646,  646,  646,  653,  653,  653,  656,  656,  656,
-      657,  657,  657, 2185,  657, 2181, 2082,  657,  646, 2190,
-     2082,  653, 2184, 2191,  656,  658,  658,  658,  659,  659,
-
-      659, 2193,  659, 2187, 2195,  659,  665,  665,  665,  675,
-      675,  675,  658,  676,  676,  676, 1374,  676, 2192, 2234,
-      676, 1371, 2191,  665, 2196, 2193,  675,  677,  677,  677,
-      678,  678,  678, 2190,  678, 2235, 2195,  678,  686,  686,
-      686,  691,  691,  691,  677,  692,  692,  692, 2196,  692,
-     2194, 2236,  692, 2234, 2249,  686, 2235, 2192,  691,  693,
-      693,  693,  694,  694,  694, 2240,  694, 2237, 2238,  694,
-      702,  702,  702,  710,  710,  710,  693,  711,  711,  711,
-     2241,  711, 1370, 2242,  711, 2236, 2303,  702, 2249, 2194,
-      710,  712,  712,  712,  713,  713,  713, 2237,  713, 1356,
-
-     2240,  713,  722,  722,  722, 2241,  722, 2238,  712,  737,
-      737,  737,  738,  738,  738,  745,  745,  745,  746,  746,
-      746, 2243,  746, 2242, 2244,  746, 2245,  737, 2246, 2303,
-      738, 2284,  745,  747,  747,  747,  748,  748,  748,  750,
-      750,  750,  751,  751,  751, 2244,  751, 2245, 2262,  751,
-     2248,  747, 2243, 2246,  748, 1354,  750, 2261,  738,  752,
-      752,  752,  753,  753,  753, 2284,  754,  754,  754,  757,
-      757,  757,  762,  762,  762, 2248,  752,  763,  763,  763,
-      753, 2262, 2263,  748,  754, 2263,  757,  758,  758,  758,
-      762,  758, 2261, 2271,  758,  763,  768,  768,  768,  769,
-
-      769,  769,  771,  771,  771,  772,  772,  772, 2291,  772,
-     2268, 2329,  772, 2305,  768, 2269, 2275,  769, 2272,  771,
-      775,  775,  775, 2291,  775,  754, 2271,  775, 2305,  763,
-      778,  778,  778, 2309,  778, 2290, 2329,  778,  782,  782,
-      782,  783,  783,  783, 2269,  769,  785,  785,  785, 2268,
-      786,  786,  786, 2270,  786, 2272,  782,  786, 2275,  783,
-      791,  791,  791,  785,  792,  792,  792,  793,  793,  793,
-     2292,  793, 2309, 2290,  793,  808,  808,  808,  791,  796,
-      796,  796,  792,  796, 2270, 1353,  796, 2313,  783,  809,
-      809,  809, 2286,  808,  812,  812,  812, 2292,  812, 2296,
-
-     2310,  812, 2313,  792,  815,  815,  815,  809,  815, 2294,
-     2286,  815,  818,  818,  818,  819,  819,  819,  821,  821,
-      821,  822,  822,  822, 2304,  822, 1352, 2294,  822, 1351,
-      818, 2310, 2296,  819, 2311,  821,  828,  828,  828, 2514,
-      828, 2306, 2304,  828,  809,  831,  831,  831, 2514,  831,
-     2317, 2317,  831,  834,  834,  834,  835,  835,  835, 2306,
-      837,  837,  837, 2307,  837, 2311,  819,  837,  841,  841,
-      841,  834, 2340, 2314,  835,  842,  842,  842, 2340,  842,
-     2527, 2307,  842, 2315, 2318,  841,  845,  845,  845, 2527,
-      845, 2314, 2408,  845,  848,  848,  848, 1350,  848, 1349,
-
-     2362,  848, 2318,  851,  851,  851,  835,  851, 2319, 2315,
-      851,  854,  854,  854,  855,  855,  855,  859,  859,  859,
-      860,  860,  860, 2320,  860, 2362, 2319,  860, 2322,  854,
-     2408, 2328,  855, 2323,  859,  865,  865,  865,  866,  866,
-      866, 2320,  866, 2322, 2324,  866,  867,  867,  867, 2323,
-      867, 2428,  865,  867,  870,  870,  870,  855,  870, 2324,
-     2328,  870,  873,  873,  873,  874,  874,  874,  878,  878,
-      878,  879,  879,  879, 2345,  879, 2454, 2326,  879, 1348,
-      873, 2428, 2325,  874, 2409,  878,  885,  885,  885,  886,
-      886,  886,  887,  887,  887, 2326,  887, 2325, 2345,  887,
-
-      890,  890,  890,  885,  890, 2454,  886,  890,  893,  893,
-      893,  894,  894,  894,  897,  897,  897,  898,  898,  898,
-     2330,  898, 2409,  874,  898, 2331,  893, 1344, 2334,  894,
-     1342,  897,  905,  905,  905,  906,  906,  906, 2330,  906,
-     2333, 2331,  906,  909,  909,  909, 2334,  909, 2348,  905,
-      909,  912,  912,  912, 2348,  912, 2332,  894,  912,  915,
-      915,  915,  916,  916,  916,  918,  918,  918,  919,  919,
-      919, 2332,  919, 2335, 2333,  919, 1341,  915, 2365, 2336,
-      916, 2337,  918,  929,  929,  929, 2429,  929, 2335, 2365,
-      929,  932,  932,  932, 2336,  932, 2337, 2339,  932,  935,
-
-      935,  935,  936,  936,  936,  941,  941,  941,  942,  942,
-      942,  916,  942, 2339, 2343,  942, 2429,  935, 2341, 1340,
-      936, 2342,  941,  947,  947,  947, 1339,  947, 2483, 2343,
-      947,  950,  950,  950, 2341,  950, 1336, 2342,  950, 2347,
-     2349,  936,  953,  953,  953,  954,  954,  954,  960,  960,
-      960,  961,  961,  961, 2347,  961, 2349, 2351,  961, 2352,
-      953, 2483, 1324,  954, 2353,  960,  966,  966,  966,  969,
-      969,  969, 2351,  969, 2379, 2352,  969,  972,  972,  972,
-     2353,  972, 1322,  966,  972,  975,  975,  975,  954,  976,
-      976,  976,  998,  998,  998,  999,  999,  999, 1001, 1001,
-
-     1001, 2354, 2356,  975, 1007, 1007, 1007,  976, 2356, 2358,
-      998, 2379, 2373,  999, 1319, 2358, 1001, 2354, 1008, 1008,
-     1008, 1007, 1008, 2373, 2484, 1008, 1011, 1011, 1011, 1012,
-     1012, 1012, 1014, 1014, 1014, 1016, 1016, 1016,  976, 1016,
-     2359, 1001, 1016, 2360, 1011, 2372, 2359, 1012, 2417, 2496,
-     1014, 1019, 1019, 1019, 1020, 1020, 1020, 2484, 1020, 2360,
-     2372, 1020, 1021, 1021, 1021, 1022, 1022, 1022, 1019, 1024,
-     1024, 1024, 2364, 1026, 1026, 1026, 2355, 1027, 1027, 1027,
-     1021, 1027, 2496, 1022, 1027, 1314, 2417, 1024, 2364, 1014,
-     1026, 1031, 1031, 1031, 2355, 1033, 1033, 1033, 1034, 1034,
-
-     1034, 1036, 1036, 1036, 1039, 1039, 1039, 2361, 1031, 1041,
-     1041, 1041, 1024, 1033, 2366, 2375, 1034, 1312, 2368, 1036,
-     2366, 1039, 1042, 1042, 1042, 2361, 2375, 1041, 1044, 1044,
-     1044, 1046, 1046, 1046, 2368, 1046, 2439, 2389, 1046, 2369,
-     1042, 1052, 1052, 1052, 2370, 2369, 1044, 1053, 1053, 1053,
-     2370, 2371, 1036, 2389, 1055, 1055, 1055, 2371, 1311, 1052,
-     1057, 1057, 1057, 1308, 1057, 1053, 2439, 1057, 1066, 1066,
-     1066, 1044, 1055, 1067, 1067, 1067, 1069, 1069, 1069, 1079,
-     1079, 1079, 1080, 1080, 1080, 2376, 1066, 2377, 1082, 1082,
-     1082, 1067, 2381, 2377, 1069, 1303, 2376, 1079, 2381, 1286,
-
-     1080, 1085, 1085, 1085, 2380, 1055, 1082, 1086, 1086, 1086,
-     1088, 1088, 1088, 1089, 1089, 1089, 1090, 1090, 1090, 1085,
-     1090, 2385, 2380, 1090, 2378, 1086, 2440, 2385, 1088, 2384,
-     1089, 1093, 1093, 1093, 2395, 1094, 1094, 1094, 1069, 2378,
-     1082, 1095, 1095, 1095, 1096, 1096, 1096, 2384, 1093, 2383,
-     2395, 1088, 1094, 1097, 1097, 1097, 2440, 2386, 1095, 2577,
-     2383, 1096, 1098, 1098, 1098, 1099, 1099, 1099, 2386, 2397,
-     1097, 1101, 1101, 1101, 1093, 2401, 2406, 1103, 1103, 1103,
-     1098, 1283, 2406, 1099, 2397, 1109, 1109, 1109, 1095, 1101,
-     2401, 2528, 1094, 1097, 1103, 1104, 1104, 1104, 2577, 1104,
-
-     2528, 1096, 1104, 1109, 1110, 1110, 1110, 1112, 1112, 1112,
-     1101, 1114, 1114, 1114, 1115, 1115, 1115, 1116, 1116, 1116,
-     2413, 1116, 1110, 1282, 1116, 1112, 2413, 2387, 1114, 2388,
-     2394, 1115, 1120, 1120, 1120, 1123, 1123, 1123, 2387, 1123,
-     2388, 2394, 1123, 1126, 1126, 1126, 2643, 2436, 1112, 1120,
-     1127, 1127, 1127, 1129, 1129, 1129, 1132, 1132, 1132, 2398,
-     2643, 1126, 1133, 1133, 1133, 2436, 1133, 2463, 1127, 1133,
-     2398, 1129, 2402, 1132, 1141, 1141, 1141, 1142, 1142, 1142,
-     1281, 1142, 2463, 2402, 1142, 1143, 1143, 1143, 1144, 1144,
-     1144, 1141, 1144, 2415, 2452, 1144, 1145, 1145, 1145, 1146,
-
-     1146, 1146, 1143, 1148, 1148, 1148, 1149, 1149, 1149, 2415,
-     1129, 1150, 1150, 1150, 1145, 2425, 2418, 1146, 1151, 1151,
-     1151, 1148, 1151, 1149, 2452, 1151, 2425, 2453, 1150, 2420,
-     1154, 1154, 1154, 1155, 1155, 1155, 1156, 1156, 1156, 1157,
-     1157, 1157, 1158, 1158, 1158, 2420, 1148, 1154, 1280, 1279,
-     1155, 2426, 2437, 1156, 2418, 2435, 1157, 2453, 2437, 1158,
-     1159, 1159, 1159, 1160, 1160, 1160, 2435, 1160, 1278, 2455,
-     1160, 1163, 1163, 1163, 1165, 1165, 1165, 1159, 1164, 1164,
-     1164, 1166, 1166, 1166, 1168, 1168, 1168, 1154, 1163, 2426,
-     1158, 2443, 1165, 1156, 1277, 1164, 1157, 2443, 2455, 1166,
-
-     2464, 2427, 1168, 1169, 1169, 1169, 1170, 1170, 1170, 2523,
-     1170, 2464, 2430, 1170, 1163, 2523, 2471, 1159, 1164, 1276,
-     1169, 1173, 1173, 1173, 1174, 1174, 1174, 2471, 1175, 1175,
-     1175, 1168, 1176, 1176, 1176, 1177, 1177, 1177, 1173, 2427,
-     2497, 1174, 1178, 1178, 1178, 1175, 1179, 1179, 1179, 1176,
-     2430, 2456, 1177, 1180, 1180, 1180, 1182, 1182, 1182, 1178,
-     1181, 1181, 1181, 1179, 1183, 1183, 1183, 1188, 1188, 1188,
-     1180, 1176, 2467, 2497, 1182, 1174, 2468, 1181, 1173, 1175,
-     1274, 2456, 1183, 2481, 1188, 1178, 1185, 1185, 1185, 1189,
-     1189, 1189, 1177, 1194, 1194, 1194, 1180, 1197, 1197, 1197,
-
-     1181, 2467, 2431, 1179, 1185, 2468, 1189, 1190, 1190, 1190,
-     1194, 1190, 2481, 2432, 1190, 1197, 1198, 1198, 1198, 1200,
-     1200, 1200, 1203, 1203, 1203, 1205, 1205, 1205, 1185, 1206,
-     1206, 1206, 2433, 1206, 1198, 2441, 1206, 1200, 2554, 1203,
-     2431, 1272, 1205, 1213, 1213, 1213, 1214, 1214, 1214, 2554,
-     1214, 2432, 2482, 1214, 1217, 1217, 1217, 1218, 1218, 1218,
-     1213, 1220, 1220, 1220, 1223, 1223, 1223, 1229, 1229, 1229,
-     2433, 2442, 1217, 2441, 2457, 1218, 1230, 1230, 1230, 1220,
-     1200, 2482, 1223, 1223, 1229, 1231, 1231, 1231, 1232, 1232,
-     1232, 2485, 2445, 1230, 1233, 1233, 1233, 1235, 1235, 1235,
-
-     1220, 2446, 1231, 1271, 2457, 1232, 1238, 1238, 1238, 2442,
-     2458, 1233, 1241, 1241, 1241, 1235, 2486, 1242, 1242, 1242,
-     2485, 1242, 2578, 1230, 1242, 1243, 1243, 1243, 2447, 1241,
-     2445, 1244, 1244, 1244, 1245, 1245, 1245, 1232, 1245, 2446,
-     2458, 1245, 1231, 1243, 2487, 2486, 1233, 1235, 1244, 1248,
-     1248, 1248, 1249, 1249, 1249, 1250, 1250, 1250, 1251, 1251,
-     1251, 2578, 1251, 1270, 2459, 1251, 2447, 1248, 1269, 1249,
-     2448, 2492, 1250, 2487, 2449, 1243, 1252, 1252, 1252, 1253,
-     1253, 1253, 1254, 1254, 1254, 2488, 1254, 2492, 1268, 1254,
-     1255, 1255, 1255, 1252, 2459, 2544, 1253, 1256, 1256, 1256,
-
-     1248, 1258, 1258, 1258, 1259, 1259, 1259, 1255, 2448, 1260,
-     1260, 1260, 2449, 1260, 2488, 1256, 1260, 1252, 1258, 2544,
-     2469, 1259, 1262, 1262, 1262, 1267, 1267, 1267, 1273, 1273,
-     1273, 1275, 1275, 1275, 1284, 1284, 1284, 2498, 2450, 1255,
-     1262, 1266, 2460, 1267, 2461, 1273, 1285, 1285, 1285, 1275,
-     2469, 1287, 1287, 1287, 1256, 1288, 1288, 1288, 1289, 1289,
-     1289, 1395, 1395, 1395, 1285, 2465, 2498, 1267, 1287, 1291,
-     1291, 1291, 1262, 1288, 2466, 1289, 2450, 1290, 1290, 1290,
-     2460, 1290, 2461, 1275, 1290, 1265, 1291, 1264, 1292, 1292,
-     1292, 1293, 1293, 1293, 1294, 1294, 1294, 1295, 1295, 1295,
-
-     2470, 1288, 1263, 2465, 1285, 1292, 2472, 2473, 1293, 2474,
-     1261, 1294, 2466, 2545, 1295, 1296, 1296, 1296, 1297, 1297,
-     1297, 1298, 1298, 1298, 1299, 1299, 1299, 2475, 1299, 2476,
-     2470, 1299, 1293, 1296, 1294, 1297, 1257, 2545, 1298, 2474,
-     1292, 1300, 1300, 1300, 2472, 2473, 1295, 1301, 1301, 1301,
-     1302, 1302, 1302, 1304, 1304, 1304, 2509, 2475, 1300, 2476,
-     1296, 1306, 1306, 1306, 1301, 1305, 1305, 1305, 1302, 1305,
-     1304, 2559, 1305, 1307, 1307, 1307, 1240, 1307, 1306, 1239,
-     1307, 2477, 1300, 1309, 1309, 1309, 1310, 1310, 1310, 1237,
-     1310, 2499, 1236, 1310, 2509, 2559, 1301, 1313, 1313, 1313,
-
-     1309, 1315, 1315, 1315, 1316, 1316, 1316, 1302, 1317, 1317,
-     1317, 2477, 1318, 1318, 1318, 1313, 1318, 2478, 1315, 1318,
-     2499, 1316, 1320, 1320, 1320, 1317, 1321, 1321, 1321, 1323,
-     1323, 1323, 2542, 1325, 1325, 1325, 2503, 1325, 2479, 1320,
-     1325, 2542, 1234, 1321, 2504, 2489, 1323, 2478, 1328, 1328,
-     1328, 2505, 1328, 2490, 1313, 1328, 1331, 1331, 1331, 1332,
-     1332, 1332, 1333, 1333, 1333, 2503, 1333, 2506, 2479, 1333,
-     1334, 1334, 1334, 2504, 1331, 2489, 1332, 1335, 1335, 1335,
-     2505, 1335, 1228, 2490, 1335, 2494, 1227, 1334, 1337, 1337,
-     1337, 1338, 1338, 1338, 1226, 1338, 2506, 1331, 1338, 1343,
-
-     1343, 1343, 1345, 1345, 1345, 1337, 1346, 1346, 1346, 2495,
-     1347, 1347, 1347, 2501, 1347, 2494, 1343, 1347, 2502, 2510,
-     1345, 2521, 2507, 1346, 1355, 1355, 1355, 1357, 1357, 1357,
-     1358, 1358, 1358, 1359, 1359, 1359, 1360, 1360, 1360, 2495,
-     2508, 1355, 2519, 2501, 1345, 1357, 2659, 1358, 2502, 2520,
-     1359, 2507, 1221, 1360, 1361, 1361, 1361, 2510, 1361, 2521,
-     2659, 1361, 1362, 1362, 1362, 1216, 1363, 1363, 1363, 2508,
-     1363, 2519, 1359, 1363, 1357, 1364, 1364, 1364, 2520, 1362,
-     1365, 1365, 1365, 1366, 1366, 1366, 1215, 1366, 2560, 2511,
-     1366, 2525, 1364, 1367, 1367, 1367, 1212, 1365, 1368, 1368,
-
-     1368, 1369, 1369, 1369, 1372, 1372, 1372, 1373, 1373, 1373,
-     1367, 1373, 2560, 1211, 1373, 1368, 1375, 1375, 1375, 1369,
-     2525, 1372, 2511, 2512, 1364, 1376, 1376, 1376, 2543, 1376,
-     2526, 2546, 1376, 1375, 1381, 1381, 1381, 2543, 1381, 1210,
-     2546, 1381, 1367, 1385, 1385, 1385, 1386, 1386, 1386, 1209,
-     1390, 1390, 1390, 1396, 1396, 1396, 2512, 2515, 1369, 2526,
-     1385, 1399, 1399, 1399, 1386, 1397, 1397, 1397, 1390, 1397,
-     1396, 2516, 1397, 1403, 1403, 1403, 2522, 2517, 1399, 1405,
-     1405, 1405, 1406, 1406, 1406, 1409, 1409, 1409, 2555, 1409,
-     2515, 1403, 1409, 1412, 1412, 1412, 1413, 1413, 1413, 1414,
-
-     1414, 1414, 2532, 1414, 2516, 2533, 1414, 2573, 1386, 1390,
-     2517, 1412, 2574, 1413, 2522, 2585, 1403, 1415, 1415, 1415,
-     1416, 1416, 1416, 1417, 1417, 1417, 2555, 1417, 2518, 2529,
-     1417, 2532, 1412, 2575, 2533, 1415, 2573, 1416, 1418, 1418,
-     1418, 2574, 1418, 2540, 2585, 1418, 1421, 1421, 1421, 1422,
-     1422, 1422, 2530, 1422, 1204, 2556, 1422, 2575, 1425, 1425,
-     1425, 2518, 2529, 1421, 1426, 1426, 1426, 1427, 1427, 1427,
-     1428, 1428, 1428, 2540, 1415, 1425, 1429, 1429, 1429, 2541,
-     1429, 1202, 1426, 1429, 1427, 2530, 2534, 1428, 1430, 1430,
-     1430, 2552, 1430, 2556, 2576, 1430, 1433, 1433, 1433, 1434,
-
-     1434, 1434, 1439, 1439, 1439, 1425, 1440, 1440, 1440, 2541,
-     1441, 1441, 1441, 1433, 1442, 1442, 1442, 1434, 2576, 2534,
-     1439, 2552, 1201, 1440, 1443, 1443, 1443, 1441, 1444, 1444,
-     1444, 1442, 1445, 1445, 1445, 1196, 1446, 1446, 1446, 1433,
-     1446, 1443, 1434, 1446, 2535, 1444, 1447, 1447, 1447, 1445,
-     1448, 1448, 1448, 1195, 1439, 1441, 1452, 1452, 1452, 1457,
-     1457, 1457, 1458, 1458, 1458, 1460, 1460, 1460, 1448, 1443,
-     2536, 1442, 1461, 1461, 1461, 2563, 1461, 2535, 2537, 1461,
-     1458, 2586, 1460, 2538, 2539, 1444, 1462, 1462, 1462, 1463,
-     1463, 1463, 2550, 1463, 2551, 2557, 1463, 1466, 1466, 1466,
-
-     1472, 1472, 1472, 2536, 1462, 1467, 1467, 1467, 1448, 1467,
-     2586, 2537, 1467, 2563, 1466, 1458, 2538, 2539, 1472, 1473,
-     1473, 1473, 1474, 1474, 1474, 2550, 1474, 2551, 2557, 1474,
-     1475, 1475, 1475, 2547, 1475, 1193, 1473, 1475, 1462, 1480,
-     1480, 1480, 2547, 1472, 1481, 1481, 1481, 1482, 1482, 1482,
-     2579, 1482, 2553, 2580, 1482, 2548, 1187, 1480, 1485, 1485,
-     1485, 1481, 1485, 2549, 2548, 1485, 1488, 1488, 1488, 1489,
-     1489, 1489, 2549, 1489, 2579, 1186, 1489, 2580, 1480, 1492,
-     1492, 1492, 2553, 1488, 1493, 1493, 1493, 1494, 1494, 1494,
-     1496, 1496, 1496, 1497, 1497, 1497, 1492, 1497, 1140, 2558,
-
-     1497, 1493, 1583, 1583, 1583, 1494, 1139, 1496, 1498, 1498,
-     1498, 1499, 1499, 1499, 2561, 1499, 2565, 2562, 1499, 1488,
-     1500, 1500, 1500, 2561, 1500, 1498, 2562, 1500, 1504, 1504,
-     1504, 1492, 2558, 2566, 1505, 1505, 1505, 1493, 1505, 1494,
-     2564, 1505, 1506, 1506, 1506, 1504, 1507, 1507, 1507, 2565,
-     1507, 2581, 2592, 1507, 1509, 1509, 1509, 1138, 1136, 1506,
-     1510, 1510, 1510, 2588, 1510, 1130, 2566, 1510, 1512, 1512,
-     1512, 1509, 1513, 1513, 1513, 2581, 1513, 1122, 2564, 1513,
-     1516, 1516, 1516, 1121, 1516, 2567, 1512, 1516, 1520, 1520,
-     1520, 2592, 1520, 2588, 2567, 1520, 1523, 1523, 1523, 2568,
-
-     1527, 1527, 1527, 1528, 1528, 1528, 2569, 1528, 2568, 2589,
-     1528, 1119, 2606, 1523, 2582, 2569, 1512, 1527, 1530, 1530,
-     1530, 1531, 1531, 1531, 2593, 1531, 2621, 1113, 1531, 1541,
-     1541, 1541, 2594, 1542, 1542, 1542, 1530, 1542, 2582, 2589,
-     1542, 1544, 1544, 1544, 2570, 2606, 1541, 1545, 1545, 1545,
-     1546, 1546, 1546, 2570, 1546, 2621, 2594, 1546, 2607, 1544,
-     2596, 1530, 2571, 2593, 1545, 1548, 1548, 1548, 2572, 1548,
-     2583, 2571, 1548, 2622, 1551, 1551, 1551, 2572, 1551, 2583,
-     1544, 1551, 1554, 1554, 1554, 1555, 1555, 1555, 2595, 1555,
-     2596, 2607, 1555, 1559, 1559, 1559, 1560, 1560, 1560, 1554,
-
-     1560, 2597, 2622, 1560, 1561, 1561, 1561, 1564, 1564, 1564,
-     1559, 1564, 2595, 1108, 1564, 1567, 1567, 1567, 2618, 1568,
-     1568, 1568, 1561, 1568, 2600, 2644, 1568, 1576, 1576, 1576,
-     2584, 2597, 1567, 1577, 1577, 1577, 2644, 1577, 1554, 2584,
-     1577, 1578, 1578, 1578, 1576, 1584, 1584, 1584, 2600, 1584,
-     1107, 2618, 1584, 1588, 1588, 1588, 1589, 1589, 1589, 1578,
-     1589, 2653, 2601, 1589, 1591, 1591, 1591, 1593, 1593, 1593,
-     1588, 1594, 1594, 1594, 1595, 1595, 1595, 1596, 1596, 1596,
-     2602, 1591, 1598, 1598, 1598, 1593, 2601, 1599, 1599, 1599,
-     1578, 1599, 2619, 2603, 1599, 1602, 1602, 1602, 2590, 2653,
-
-     1598, 1603, 1603, 1603, 2602, 1603, 2655, 2590, 1603, 1606,
-     1606, 1606, 2604, 1602, 1607, 1607, 1607, 2603, 1607, 1102,
-     1084, 1607, 1609, 1609, 1609, 2619, 1606, 1611, 1611, 1611,
-     1612, 1612, 1612, 2654, 1612, 1598, 2604, 1612, 2591, 2655,
-     1609, 1613, 1613, 1613, 1611, 1613, 1083, 2591, 1613, 1616,
-     1616, 1616, 1617, 1617, 1617, 1620, 1620, 1620, 1621, 1621,
-     1621, 2629, 1622, 1622, 1622, 1078, 1616, 1623, 1623, 1623,
-     1617, 2654, 1620, 2598, 1624, 1624, 1624, 1077, 1624, 1617,
-     1622, 1624, 2598, 1076, 1623, 1629, 1629, 1629, 2608, 1629,
-     2629, 2605, 1629, 1632, 1632, 1632, 1633, 1633, 1633, 1634,
-
-     1634, 1634, 1635, 1635, 1635, 1637, 1637, 1637, 1641, 1641,
-     1641, 1642, 1642, 1642, 1633, 2605, 1644, 1644, 1644, 2599,
-     1644, 2656, 1622, 1644, 1647, 1647, 1647, 2608, 2599, 1642,
-     1648, 1648, 1648, 1075, 1648, 2610, 1074, 1648, 1651, 1651,
-     1651, 2611, 1647, 1652, 1652, 1652, 1653, 1653, 1653, 1654,
-     1654, 1654, 2639, 1633, 2656, 1651, 1655, 1655, 1655, 2610,
-     1652, 2639, 2616, 1653, 2640, 2611, 1654, 2609, 1656, 1656,
-     1656, 1073, 1656, 2640, 1655, 1656, 1659, 1659, 1659, 1647,
-     1660, 1660, 1660, 1661, 1661, 1661, 2616, 1662, 1662, 1662,
-     1664, 1664, 1664, 1659, 1665, 1665, 1665, 1660, 1663, 1663,
-
-     1663, 1661, 1663, 1653, 1662, 1663, 2609, 1664, 1666, 1666,
-     1666, 1665, 1667, 1667, 1667, 1668, 1668, 1668, 1669, 1669,
-     1669, 2612, 1670, 1670, 1670, 1666, 1670, 2630, 1072, 1670,
-     1667, 2660, 1668, 2613, 1661, 1669, 1673, 1673, 1673, 2614,
-     1673, 2615, 2660, 1673, 1676, 1676, 1676, 2617, 1677, 1677,
-     1677, 1665, 1677, 1071, 1070, 1677, 2630, 1683, 1683, 1683,
-     2612, 1676, 2627, 1667, 2628, 1666, 1680, 1680, 1680, 2633,
-     1680, 2617, 2613, 1680, 1683, 1684, 1684, 1684, 2614, 1684,
-     2615, 2623, 1684, 1687, 1687, 1687, 1688, 1688, 1688, 1689,
-     1689, 1689, 1690, 1690, 1690, 1691, 1691, 1691, 1065, 1691,
-
-     1687, 2627, 1691, 2628, 1688, 2623, 1689, 1688, 2633, 1690,
-     1692, 1692, 1692, 1064, 1683, 1693, 1693, 1693, 1694, 1694,
-     1694, 1695, 1695, 1695, 2651, 1695, 2624, 1692, 1695, 1698,
-     1698, 1698, 1693, 2651, 1063, 1694, 1699, 1699, 1699, 2625,
-     1687, 1700, 1700, 1700, 2663, 2626, 1698, 1701, 1701, 1701,
-     2624, 1702, 1702, 1702, 1699, 1703, 1703, 1703, 1700, 1704,
-     1704, 1704, 1062, 2625, 1701, 1061, 2664, 1692, 1702, 2626,
-     2675, 1693, 1703, 2631, 2634, 1694, 1704, 2663, 1705, 1705,
-     1705, 1706, 1706, 1706, 2675, 1707, 1707, 1707, 1060, 1707,
-     1701, 1699, 1707, 2635, 1702, 1705, 1056, 2631, 1706, 2664,
-
-     1710, 1710, 1710, 2676, 1711, 1711, 1711, 2632, 1712, 1712,
-     1712, 1703, 1712, 2634, 2676, 1712, 1704, 1710, 1715, 1715,
-     1715, 1705, 1711, 1716, 1716, 1716, 1717, 1717, 1717, 2686,
-     1717, 2632, 2635, 1717, 1051, 1715, 1050, 1049, 1706, 1045,
-     1716, 1718, 1718, 1718, 1719, 1719, 1719, 1720, 1720, 1720,
-     2641, 1720, 2636, 1711, 1720, 1723, 1723, 1723, 1718, 2686,
-     2637, 1719, 1726, 1726, 1726, 1727, 1727, 1727, 1728, 1728,
-     1728, 2638, 1728, 1723, 2641, 1728, 1729, 1729, 1729, 1726,
-     2716, 1040, 1727, 1733, 1733, 1733, 2649, 1038, 1734, 1734,
-     1734, 2636, 1734, 1729, 1718, 1734, 1737, 1737, 1737, 2637,
-
-     1733, 1741, 1741, 1741, 1742, 1742, 1742, 2642, 1742, 2716,
-     2638, 1742, 1037, 2678, 1737, 1745, 1745, 1745, 1741, 1746,
-     1746, 1746, 1747, 1747, 1747, 2649, 1747, 2678, 2645, 1747,
-     2650, 2642, 1745, 1749, 1749, 1749, 1746, 1751, 1751, 1751,
-     1752, 1752, 1752, 1737, 1754, 1754, 1754, 1755, 1755, 1755,
-     1032, 1749, 2645, 1030, 1745, 2652, 1757, 1757, 1757, 2646,
-     1757, 2657, 1754, 1757, 2652, 1755, 1761, 1761, 1761, 2650,
-     1761, 2679, 2717, 1761, 1764, 1764, 1764, 1765, 1765, 1765,
-     2647, 1765, 2679, 2646, 1765, 1766, 1766, 1766, 1767, 1767,
-     1767, 1764, 1769, 1769, 1769, 1770, 1770, 1770, 2658, 1770,
-
-     2657, 2717, 1770, 1766, 2647, 1767, 1771, 1771, 1771, 1769,
-     1772, 1772, 1772, 1773, 1773, 1773, 2648, 1773, 1025, 1015,
-     1773, 1777, 1777, 1777, 1779, 1779, 1779, 2665, 1772, 1780,
-     1780, 1780, 1781, 1781, 1781, 2681, 1766, 2658, 1777, 1006,
-     2648, 1779, 1782, 1782, 1782, 2666, 2681, 1780, 1787, 1787,
-     1787, 1788, 1788, 1788, 1790, 1790, 1790, 1791, 1791, 1791,
-     1792, 1792, 1792, 1793, 1793, 1793, 2665, 1793, 2687, 1788,
-     1793, 1790, 1794, 1794, 1794, 1791, 1005, 1792, 1795, 1795,
-     1795, 2743, 1795, 1004, 2666, 1795, 1796, 1796, 1796, 1794,
-     1797, 1797, 1797, 1798, 1798, 1798, 2744, 1798, 2687, 2661,
-
-     1798, 1003, 2680, 1796, 1799, 1799, 1799, 1797, 1801, 1801,
-     1801, 1802, 1802, 1802, 2743, 1802, 2680, 2693, 1802, 1803,
-     1803, 1803, 1799, 2661, 2694, 1801, 1804, 1804, 1804, 2744,
-     1804, 2693, 2699, 1804, 2662, 2694, 1803, 1805, 1805, 1805,
-     1806, 1806, 1806, 1796, 1806, 1002, 2699, 1806, 1809, 1809,
-     1809, 2667, 1810, 1810, 1810, 1805, 1810, 2668, 2662, 1810,
-     1811, 1811, 1811,  997,  996, 1809, 1812, 1812, 1812, 1813,
-     1813, 1813, 1814, 1814, 1814, 2667, 2669, 1811, 1816, 1816,
-     1816, 2668, 1805, 1812, 1815, 1815, 1815, 1813, 1815, 1814,
-      995, 1815, 1817, 1817, 1817, 1816, 1817,  994, 2688, 1817,
-
-     2669, 1818, 1818, 1818, 1819, 1819, 1819, 2688, 1819, 1812,
-      993, 1819, 1820, 1820, 1820, 2670,  992, 1811, 1818, 1821,
-     1821, 1821, 1822, 1822, 1822, 1823, 1823, 1823, 2705, 1820,
-     1824, 1824, 1824, 2671, 1824,  991, 1821, 1824,  990, 2670,
-     1822,  987, 1823, 1825, 1825, 1825, 2672, 1825, 2673, 2674,
-     1825, 1828, 1828, 1828, 1829, 1829, 1829, 2671, 1830, 1830,
-     1830,  986, 1821, 1831, 1831, 1831,  985, 2705, 1828, 1820,
-     2672, 1829, 2673, 2674, 1822, 1830, 2682, 1832, 1832, 1832,
-     1831, 1832, 2683, 2684, 1832, 1833, 1833, 1833, 1834, 1834,
-     1834, 1835, 1835, 1835,  983, 1835, 2706,  979, 1835,  977,
-
-     2682, 1830, 2685, 1833,  968, 1834, 2683, 2684, 1828, 2690,
-     1829, 1836, 1836, 1836, 1837, 1837, 1837, 1838, 1838, 1838,
-     1839, 1839, 1839, 1840, 1840, 1840, 2685, 2689, 1836, 2691,
-     2695, 1837,  967, 2690, 1838, 2706, 2689, 1839, 2701, 2695,
-     1840, 1841, 1841, 1841, 1842, 1842, 1842, 1843, 1843, 1843,
-     2696, 1843, 2701, 2691, 1843, 1844, 1844, 1844, 1841, 2696,
-      965, 1842, 1845, 1845, 1845, 1846, 1846, 1846, 2703, 1846,
-      964, 2697, 1846, 1844, 1847, 1847, 1847, 1839, 1847, 1845,
-     2714, 1847, 2703, 2698, 1841, 1850, 1850, 1850, 1844, 1851,
-     1851, 1851, 1852, 1852, 1852, 2697, 1852,  963,  962, 1852,
-
-      959,  958, 1850, 1853, 1853, 1853, 1851, 2698, 1854, 1854,
-     1854, 1855, 1855, 1855, 1856, 1856, 1856, 2765, 1856, 2714,
-     1853, 1856, 2715, 2700, 1850, 1854, 2765, 2745, 1855, 1857,
-     1857, 1857, 2702, 1857, 2700, 2704, 1857, 1860, 1860, 1860,
-     1861, 1861, 1861, 2702, 1861,  957, 2704, 1861, 1864, 1864,
-     1864, 1865, 1865, 1865, 1860, 1866, 1866, 1866,  956, 1866,
-     2718, 2715, 1866,  955,  946, 1864, 2745, 2712, 1865, 1867,
-     1867, 1867, 1869, 1869, 1869, 1871, 1871, 1871, 1872, 1872,
-     1872, 2712, 1872,  945, 2718, 1872,  944, 1867, 2713,  943,
-     1869,  940, 1871, 1873, 1873, 1873, 1874, 1874, 1874, 2713,
-
-     1874,  939, 2720, 1874, 1879, 1879, 1879, 1881, 1881, 1881,
-     1873, 1882, 1882, 1882,  938, 1882, 2720, 2719, 1882, 1885,
-     1885, 1885, 1879, 2721, 1881, 1867, 1886, 1886, 1886, 1887,
-     1887, 1887,  937, 1887, 2721,  928, 1887, 1885, 1889, 1889,
-     1889, 2719, 1889, 1886, 2725, 1889, 1892, 1892, 1892, 1894,
-     1894, 1894, 1895, 1895, 1895, 1896, 1896, 1896, 2726, 1896,
-      927,  926, 1896, 1885, 1892, 2727, 1894, 2746, 2725, 1895,
-     1897, 1897, 1897, 1898, 1898, 1898, 1899, 1899, 1899, 2727,
-     1899, 2750, 2726, 1899, 1900, 1900, 1900, 1897,  925, 2728,
-     1898, 1902, 1902, 1902, 1903, 1903, 1903, 1906, 1906, 1906,
-
-     2728,  924, 1900, 1907, 1907, 1907, 2746, 1907, 2751, 2766,
-     1907, 1908, 1908, 1908, 1906, 1910, 1910, 1910, 2766, 1910,
-     2750, 2732, 1910, 1913, 1913, 1913, 2760, 1913,  923, 1908,
-     1913, 1916, 1916, 1916, 1917, 1917, 1917, 2760, 1917, 2759,
-     2733, 1917, 1920, 1920, 1920, 2732, 1920, 2751, 1916, 1920,
-     1923, 1923, 1923, 2759, 1923, 2764, 2780, 1923, 1926, 1926,
-     1926, 1927, 1927, 1927, 2733, 1927, 2764, 2780, 1927, 1930,
-     1930, 1930, 1931, 1931, 1931,  922, 1926, 1932, 1932, 1932,
-     1934, 1934, 1934, 1916, 1934,  921, 1930, 1934,  920, 1931,
-     1937, 1937, 1937, 2782, 1937, 1932, 2741, 1937, 1940, 1940,
-
-     1940,  917, 1940, 2742, 2782, 1940,  908, 1926, 1943, 1943,
-     1943, 1944, 1944, 1944, 1945, 1945, 1945, 1949, 1949, 1949,
-     2741, 1930, 1946, 1946, 1946, 1943, 1946, 2742, 1944, 1946,
-     2763,  907, 1945, 1931, 1949, 1950, 1950, 1950, 1951, 1951,
-     1951, 1952, 1952, 1952, 2763, 1952, 2767, 2768, 1952, 1955,
-     1955, 1955, 1950,  904, 2779, 1951, 2787, 1957, 1957, 1957,
-     1943, 1957, 2798,  903, 1957,  902,  901, 1955, 2779, 1949,
-     2767, 2768, 1944, 2798, 2771, 1945, 1960, 1960, 1960, 1961,
-     1961, 1961, 2781, 1961, 2772, 2788, 1961, 1962, 1962, 1962,
-     1963, 1963, 1963, 1960, 1963, 2787, 2781, 1963, 2771, 1951,
-
-     1964, 1964, 1964, 2777, 1962, 1965, 1965, 1965, 2772, 1965,
-     2778,  900, 1965, 1966, 1966, 1966,  899, 1964, 1967, 1967,
-     1967, 1968, 1968, 1968, 2788, 1968,  896, 2777, 1968,  895,
-     1966, 1969, 1969, 1969, 2778, 1967, 1970, 1970, 1970, 2791,
-     1970, 2797,  884, 1970, 1973, 1973, 1973, 2792, 1969, 1974,
-     1974, 1974,  883, 1974,  882, 2797, 1974, 1977, 1977, 1977,
-      881,  880, 1973, 2791,  877, 1966, 1978, 1978, 1978,  876,
-     1978, 2792,  875, 1978, 1977,  864,  863, 1981, 1981, 1981,
-     1982, 1982, 1982,  862, 1982,  861,  858, 1982, 1983, 1983,
-     1983,  857, 1969, 1973, 1981, 1984, 1984, 1984, 1977, 1984,
-
-      856,  844, 1984,  843,  840, 1983, 1985, 1985, 1985,  836,
-     1985,  827,  826, 1985, 1988, 1988, 1988,  825, 1988,  824,
-      823, 1988, 1991, 1991, 1991, 1993, 1993, 1993, 1994, 1994,
-     1994,  820, 1994,  811,  810, 1994, 1995, 1995, 1995, 1991,
-     1995,  807, 1993, 1995, 1998, 1998, 1998, 2002, 2002, 2002,
-      806, 2002,  805,  804, 2002, 2005, 2005, 2005,  803, 2006,
-     2006, 2006, 1998, 2006,  802,  801, 2006, 2007, 2007, 2007,
-      800,  799, 2005, 2008, 2008, 2008, 2009, 2009, 2009, 2010,
-     2010, 2010,  790, 2010,  789,  784, 2010, 2011, 2011, 2011,
-     2008,  781,  774, 2009, 2015, 2015, 2015, 2016, 2016, 2016,
-
-      773, 1998, 2000, 2000, 2000, 2011, 2012, 2012, 2012,  770,
-     2012, 2015,  767, 2012, 2016, 2021, 2021, 2021,  766,  765,
-     2000,  764, 2000, 2000, 2000,  761, 2000, 2000, 2000, 2000,
-     2000,  760, 2021, 2000, 2000, 2000, 2000, 2000,  759, 2011,
-     2017, 2017, 2017,  756, 2017,  755,  749, 2017, 2018, 2018,
-     2018,  744, 2018,  743,  742, 2018, 2022, 2022, 2022,  741,
-     2022,  740,  739, 2022, 2023, 2023, 2023,  736, 2023,  735,
-      734, 2023, 2026, 2026, 2026, 2027, 2027, 2027, 2029, 2029,
-     2029, 2030, 2030, 2030,  733, 2030,  732,  731, 2030, 2033,
-     2033, 2033, 2034, 2034, 2034, 2035, 2035, 2035, 2036, 2036,
-
-     2036, 2037, 2037, 2037,  730,  728, 2033, 2038, 2038, 2038,
-     2034,  727, 2035,  726,  725, 2036,  724,  720, 2037, 2039,
-     2039, 2039,  718,  717, 2038, 2040, 2040, 2040,  716, 2041,
-     2041, 2041, 2043, 2043, 2043, 2034,  715, 2039,  714, 2033,
-      709,  708, 2040,  707,  706, 2035, 2041,  705,  704, 2043,
-      703, 2037, 2042, 2042, 2042, 2036, 2042,  700,  699, 2042,
-      698, 2044, 2044, 2044, 2038, 2044,  695,  690, 2044, 2047,
-     2047, 2047,  689, 2047,  688, 2040, 2047, 2050, 2050, 2050,
-      687, 2050,  685,  684, 2050, 2053, 2053, 2053,  683, 2043,
-     2054, 2054, 2054,  682, 2054,  679,  674, 2054, 2057, 2057,
-
-     2057,  673, 2053, 2058, 2058, 2058, 2059, 2059, 2059, 2060,
-     2060, 2060,  672, 2060,  671, 2057, 2060,  670, 2063, 2063,
-     2063, 2058, 2063, 2059,  669, 2063, 2066, 2066, 2066, 2067,
-     2067, 2067,  668, 2067,  667, 2053, 2067, 2069, 2069, 2069,
-      666, 2069,  664, 2066, 2069, 2072, 2072, 2072,  661, 2059,
-     2058,  660, 2087, 2087, 2087, 2057, 2087,  655,  654, 2087,
-     2090, 2090, 2090, 2072, 2091, 2091, 2091, 2092, 2092, 2092,
-      652, 2092,  651,  650, 2092, 2093, 2093, 2093,  649, 2093,
-      648, 2091, 2093, 2096, 2096, 2096, 2097, 2097, 2097, 2098,
-     2098, 2098,  647, 2098,  645,  644, 2098,  641, 2099, 2099,
-
-     2099, 2096, 2099, 2097,  635, 2099, 2102, 2102, 2102,  634,
-     2102,  633,  632, 2102, 2106, 2106, 2106, 2107, 2107, 2107,
-     2108, 2108, 2108, 2109, 2109, 2109, 2110, 2110, 2110, 2111,
-     2111, 2111,  631,  629, 2107, 2112, 2112, 2112, 2108,  628,
-     2109,  627,  624, 2110,  618,  617, 2111, 2112, 2112, 2113,
-     2113, 2113, 2112, 2115, 2115, 2115, 2116, 2116, 2116,  616,
-     2116,  615,  613, 2116, 2119, 2119, 2119, 2113,  612,  611,
-     2115, 2120, 2120, 2120, 2121, 2121, 2121, 2122, 2122, 2122,
-      608, 2119, 2123, 2123, 2123, 2124, 2124, 2124, 2120, 2124,
-      601, 2121, 2124,  600,  598, 2122, 2127, 2127, 2127, 2123,
-
-     2128, 2128, 2128, 2147, 2147, 2147,  595, 2147,  592,  591,
-     2147,  586,  585, 2127, 2150, 2150, 2150,  584, 2128, 2122,
-     2152, 2152, 2152,  583, 2152,  582,  580, 2152, 2156, 2156,
-     2156,  577, 2150, 2157, 2157, 2157,  572, 2157,  571,  568,
-     2157, 2158, 2158, 2158,  567, 2156, 2160, 2160, 2160, 2161,
-     2161, 2161,  566, 2161,  564,  563, 2161,  562,  561, 2158,
-     2162, 2162, 2162, 2160, 2163, 2163, 2163,  560, 2163,  553,
-      552, 2163, 2164, 2164, 2164,  551,  550, 2162, 2165, 2165,
-     2165,  549, 2165,  547,  544, 2165, 2166, 2166, 2166, 2164,
-     2167, 2167, 2167, 2168, 2168, 2168,  543, 2169, 2169, 2169,
-
-      538, 2169,  537, 2166, 2169,  535,  532, 2167,  531,  530,
-     2168, 2170, 2170, 2170, 2171, 2171, 2171,  529, 2171,  528,
-      525, 2171, 2172, 2172, 2172, 2173, 2173, 2173, 2170, 2173,
-      524,  523, 2173, 2174, 2174, 2174, 2175, 2175, 2175, 2172,
-     2175,  522,  520, 2175, 2176, 2176, 2176, 2177, 2177, 2177,
-     2174, 2178, 2178, 2178,  519, 2178,  516,  515, 2178, 2179,
-     2179, 2179, 2176,  513, 2177, 2180, 2180, 2180,  510, 2180,
-      508,  507, 2180, 2197, 2197, 2197, 2179, 2198, 2198, 2198,
-      504, 2199, 2199, 2199,  503, 2199,  502, 2176, 2199,  501,
-     2197, 2197, 2202, 2202, 2202,  500, 2202,  499,  498, 2202,
-
-     2205, 2205, 2205,  497, 2205,  496,  495, 2205, 2208, 2208,
-     2208,  494, 2208,  491,  490, 2208, 2211, 2211, 2211, 2212,
-     2212, 2212,  489, 2212,  488,  487, 2212, 2213, 2213, 2213,
-     2214, 2214, 2214, 2211, 2214,  481,  480, 2214, 2215, 2215,
-     2215,  478, 2215,  475, 2213, 2215, 2218, 2218, 2218,  474,
-     2218,  472,  471, 2218, 2221, 2221, 2221,  464, 2221,  462,
-      461, 2221, 2224, 2224, 2224,  460, 2224,  459,  458, 2224,
-     2227, 2227, 2227, 2228, 2228, 2228,  457, 2228,  455,  451,
-     2228,  442, 2231, 2231, 2231,  441, 2231,  440, 2227, 2231,
-     2239, 2239, 2239, 2247, 2247, 2247, 2250, 2250, 2250, 2251,
-
-     2251, 2251,  439, 2251,  438,  437, 2251,  436, 2239,  435,
-      434, 2247,  430, 2250, 2250,  420,  419, 2251, 2252, 2252,
-     2252,  418, 2253, 2253, 2253, 2227, 2253,  417,  415, 2253,
-     2256, 2256, 2256,  414, 2256,  413,  409, 2256, 2259, 2259,
-     2259, 2264, 2264, 2264, 2265, 2265, 2265, 2266, 2266, 2266,
-     2267, 2267, 2267, 2273, 2273, 2273, 2259,  399,  397, 2264,
-      396,  395, 2265,  394,  393, 2266,  392,  391, 2267,  387,
-      378, 2273, 2274, 2274, 2274,  377,  376, 2265, 2276, 2276,
-     2276,  375, 2276,  374,  373, 2276, 2273,  372,  371,  370,
-     2274, 2279, 2279, 2279,  369,  365, 2276,  356,  355, 2274,
-
-     2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2277, 2279,
-      354, 2277, 2281, 2281, 2281,  353, 2277, 2277, 2277, 2277,
-     2277,  352,  351,  350,  349,  348,  344,  334,  333,  332,
-     2281, 2282, 2282, 2282, 2283, 2283, 2283,  330, 2277, 2277,
-     2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2278, 2282,
-      326, 2278, 2283, 2285, 2285, 2285, 2278, 2278, 2278, 2278,
-     2278,  317, 2287, 2287, 2287, 2288, 2288, 2288,  316,  315,
-      314, 2285, 2289, 2289, 2289, 2293, 2293, 2293, 2278, 2278,
-     2287,  312,  308, 2288,  299,  298, 2285, 2295, 2295, 2295,
-     2289,  294,  289, 2293,  280, 2287,  273,  271, 2288, 2297,
-
-     2297, 2297,  270,  266,  256, 2295,  255,  254,  253,  249,
-      242,  241, 2300, 2300, 2300,  240,  239, 2297,  235,  229,
-     2295, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298, 2298,
-     2300,  228, 2298, 2321, 2321, 2321,  226, 2298, 2298, 2298,
-     2298, 2298,  225,  221,  214, 2300,  213,  212,  208,  201,
-      200, 2321, 2301, 2301, 2301, 2302, 2302, 2302,  199, 2298,
-     2298, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299, 2299,
-     2301,  195, 2299, 2302, 2308, 2308, 2308, 2299, 2299, 2299,
-     2299, 2299,  185,  183,  182, 2301,  178,  173, 2302,  172,
-      171,  165, 2308, 2312, 2312, 2312, 2316, 2316, 2316, 2299,
-
-     2299, 2327, 2327, 2327, 2338, 2338, 2338, 2308,  164,  162,
-      159, 2312,  147,    0, 2316, 2344, 2344, 2344,    0, 2327,
-        0,    0, 2338, 2346, 2346, 2346, 2312,    0,    0, 2316,
-        0,    0,    0, 2344, 2350, 2350, 2350, 2338, 2363, 2363,
-     2363, 2346, 2367, 2367, 2367, 2374, 2374, 2374, 2344, 2382,
-     2382, 2382, 2350,    0,    0,    0, 2363,    0,    0,    0,
-     2367,    0,    0, 2374, 2390, 2390, 2390, 2382, 2392, 2392,
-     2392, 2363, 2391, 2391, 2391, 2367, 2391,    0,    0, 2391,
-        0,    0, 2390, 2393, 2393, 2393, 2392, 2396, 2396, 2396,
-     2391, 2399, 2399, 2399,    0, 2399,    0,    0, 2399,    0,
-
-        0, 2393, 2400, 2400, 2400, 2396, 2403, 2403, 2403, 2399,
-     2404, 2404, 2404, 2405, 2405, 2405,    0,    0,    0,    0,
-     2400, 2412, 2412, 2412, 2403, 2407, 2407, 2407, 2404, 2407,
-        0, 2405, 2407, 2410, 2410, 2410,    0, 2410,    0, 2412,
-     2410,    0,    0, 2407,    0, 2411, 2411, 2411,    0, 2411,
-        0, 2410, 2411, 2414, 2414, 2414, 2416, 2416, 2416,    0,
-     2419, 2419, 2419, 2411, 2419,    0,    0, 2419,    0,    0,
-        0, 2414,    0,    0, 2416, 2421, 2421, 2421, 2419,    0,
-     2422, 2422, 2422,    0, 2422,    0, 2414, 2422, 2423, 2423,
-     2423,    0, 2423, 2421,    0, 2423,    0,    0, 2422,    0,
-
-     2424, 2424, 2424,    0, 2424,    0, 2423, 2424, 2434, 2434,
-     2434,    0, 2434,    0,    0, 2434,    0,    0, 2424,    0,
-     2438, 2438, 2438,    0, 2438,    0, 2434, 2438, 2444, 2444,
-     2444,    0, 2444,    0,    0, 2444,    0,    0, 2438, 2451,
-     2451, 2451, 2462, 2462, 2462,    0, 2444, 2480, 2480, 2480,
-        0, 2480,    0,    0, 2480,    0,    0, 2451,    0,    0,
-     2462,    0, 2491, 2491, 2491, 2480, 2491,    0,    0, 2491,
-     2493, 2493, 2493, 2500, 2500, 2500,    0, 2524, 2524, 2524,
-     2491, 2524,    0,    0, 2524, 2531, 2531, 2531, 2493, 2531,
-        0, 2500, 2531,    0,    0, 2524, 2587, 2587, 2587,    0,
-
-     2620, 2620, 2620, 2531, 2620,    0,    0, 2620, 2677, 2677,
-     2677, 2692, 2692, 2692, 2587, 2707, 2707, 2707, 2620, 2708,
-     2708, 2708, 2710, 2710, 2710,    0, 2677,    0,    0, 2692,
-     2711, 2711, 2711, 2707, 2722, 2722, 2722, 2708,    0,    0,
-     2710, 2724, 2724, 2724, 2729, 2729, 2729,    0, 2711, 2730,
-     2730, 2730, 2722, 2731, 2731, 2731, 2734, 2734, 2734, 2724,
-        0,    0, 2729, 2736, 2736, 2736,    0, 2730, 2738, 2738,
-     2738, 2731,    0,    0, 2734, 2740, 2740, 2740, 2747, 2747,
-     2747, 2736, 2748, 2748, 2748,    0, 2738, 2752, 2752, 2752,
-     2753, 2753, 2753, 2740,    0,    0, 2747, 2755, 2755, 2755,
-
-     2748, 2757, 2757, 2757,    0, 2752,    0,    0, 2753, 2761,
-     2761, 2761, 2769, 2769, 2769, 2755, 2773, 2773, 2773, 2757,
-     2775, 2775, 2775, 2776, 2776, 2776,    0, 2761,    0,    0,
-     2769, 2783, 2783, 2783, 2773, 2785, 2785, 2785, 2775,    0,
-        0, 2776, 2789, 2789, 2789, 2790, 2790, 2790,    0, 2783,
-     2793, 2793, 2793, 2785, 2795, 2795, 2795, 2799, 2799, 2799,
-     2789,    0,    0, 2790, 2800, 2800, 2800,    0, 2793,    0,
-        0,    0, 2795,    0,    0, 2799,    0,    0,    0,    0,
-        0,    0, 2800, 2803, 2803, 2803, 2803, 2803, 2803, 2803,
-     2803, 2803, 2804, 2804, 2804, 2804, 2804, 2804, 2804, 2804,
-
-     2804, 2805, 2805, 2805, 2805, 2805, 2805, 2805, 2805, 2805,
-     2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2807,
-     2807, 2807, 2807, 2807, 2807, 2807, 2807, 2807, 2808, 2808,
-     2808, 2808, 2808, 2808, 2808, 2808, 2808, 2809, 2809, 2809,
-     2809, 2809, 2809, 2809, 2809, 2809, 2810, 2810, 2810, 2810,
-     2810, 2810, 2810, 2810, 2810, 2811, 2811, 2811, 2811, 2811,
-     2811, 2811, 2811, 2811, 2812, 2812, 2812, 2812, 2812, 2812,
-     2812, 2812, 2812, 2813, 2813, 2813, 2813, 2813, 2813, 2813,
-     2813, 2813, 2814, 2814, 2814, 2814, 2814, 2814, 2814, 2814,
-     2814, 2815, 2815, 2815, 2815, 2815, 2815, 2815, 2815, 2815,
-
-     2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2817,
-     2817, 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2818, 2818,
-     2818, 2818, 2818, 2818, 2818, 2818, 2818, 2819, 2819, 2819,
-     2819, 2819, 2819, 2819, 2819, 2819, 2820, 2820, 2820, 2820,
-     2820, 2820, 2820, 2820, 2820, 2821, 2821, 2821, 2821, 2821,
-     2821, 2821, 2821, 2821, 2822, 2822, 2822, 2822, 2822, 2822,
-     2822, 2822, 2822, 2823, 2823, 2823, 2823, 2823, 2823, 2823,
-     2823, 2823, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824,
-     2824, 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825, 2825,
-     2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2827,
-
-     2827, 2827, 2827, 2827, 2827, 2827, 2827, 2827, 2828, 2828,
-     2828, 2828, 2828, 2828, 2828, 2828, 2828, 2829, 2829, 2829,
-     2829, 2829, 2829, 2829, 2829, 2829, 2830, 2830, 2830, 2830,
-     2830, 2830, 2830, 2830, 2830, 2831, 2831, 2831, 2831, 2831,
-     2831, 2831, 2831, 2831, 2832, 2832, 2832, 2832, 2832, 2832,
-     2832, 2832, 2832, 2833, 2833, 2833, 2833, 2833, 2833, 2833,
-     2833, 2833, 2834, 2834, 2834, 2834, 2834, 2834, 2834, 2834,
-     2834, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835, 2835,
-     2836, 2836, 2836,    0,    0,    0, 2836, 2837, 2837, 2837,
-        0,    0,    0, 2837, 2838, 2838, 2838,    0,    0,    0,
-
-     2838, 2839, 2839, 2839,    0,    0,    0, 2839, 2840, 2840,
-     2840,    0,    0,    0, 2840, 2841, 2841, 2841,    0,    0,
-        0, 2841, 2842, 2842, 2842,    0,    0,    0, 2842, 2843,
-     2843, 2843,    0,    0,    0, 2843, 2844, 2844, 2844,    0,
-        0,    0, 2844, 2845, 2845, 2845,    0,    0,    0, 2845,
-     2846, 2846, 2846,    0,    0,    0, 2846, 2847, 2847, 2847,
-        0,    0,    0, 2847, 2848, 2848, 2848,    0,    0,    0,
-     2848, 2849, 2849, 2849,    0,    0,    0, 2849, 2850, 2850,
-     2850,    0,    0,    0, 2850, 2851, 2851, 2851,    0,    0,
-        0, 2851, 2852, 2852, 2852,    0,    0,    0, 2852, 2853,
-
-     2853, 2853, 2853, 2853, 2853, 2853,    0, 2853, 2854,    0,
-        0,    0, 2854, 2855,    0,    0,    0, 2855, 2856,    0,
-        0,    0, 2856, 2857,    0,    0,    0, 2857, 2858,    0,
-        0,    0, 2858, 2859,    0,    0,    0, 2859, 2860,    0,
-        0,    0, 2860, 2861,    0,    0,    0, 2861, 2862,    0,
-        0,    0, 2862, 2863,    0,    0,    0, 2863, 2864,    0,
-        0,    0, 2864, 2865,    0,    0,    0, 2865, 2866,    0,
-        0,    0, 2866, 2867, 2867, 2867,    0,    0,    0, 2867,
-     2868,    0,    0,    0, 2868, 2869, 2869, 2869,    0,    0,
-        0, 2869, 2870,    0,    0,    0, 2870, 2871, 2871, 2871,
-
-        0,    0,    0, 2871, 2872,    0,    0,    0, 2872, 2873,
-     2873, 2873,    0,    0,    0, 2873, 2874,    0,    0,    0,
-     2874, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875, 2875,
-     2876,    0,    0,    0,    0, 2876, 2877, 2877, 2877,    0,
-        0,    0, 2877, 2878, 2878, 2878, 2878,    0,    0, 2878,
-     2878, 2879, 2879, 2879,    0,    0,    0, 2879, 2880, 2880,
-     2880, 2880,    0,    0, 2880, 2880, 2881, 2881, 2881,    0,
-        0,    0, 2881, 2882, 2882, 2882, 2882,    0,    0, 2882,
-     2882, 2883, 2883, 2883,    0,    0,    0, 2883, 2884, 2884,
-     2884, 2884,    0,    0, 2884, 2884, 2885, 2885, 2885,    0,
-
-        0,    0, 2885, 2886, 2886, 2886, 2886,    0,    0, 2886,
-     2886, 2887, 2887, 2887,    0,    0,    0, 2887, 2888, 2888,
-     2888, 2888,    0,    0, 2888, 2888, 2889, 2889, 2889,    0,
-        0,    0, 2889, 2890, 2890, 2890, 2890,    0,    0, 2890,
-     2890, 2891, 2891, 2891, 2891,    0,    0, 2891, 2891, 2892,
-     2892, 2892,    0,    0,    0, 2892, 2893, 2893, 2893, 2893,
-        0,    0, 2893, 2893, 2894, 2894, 2894,    0,    0,    0,
-     2894, 2895, 2895, 2895, 2895,    0,    0, 2895, 2895, 2896,
-     2896, 2896,    0,    0,    0, 2896, 2897, 2897, 2897, 2897,
-        0,    0, 2897, 2897, 2898, 2898, 2898,    0,    0,    0,
-
-     2898, 2899, 2899, 2899, 2899,    0,    0, 2899, 2899, 2900,
-     2900, 2900,    0,    0,    0, 2900, 2901, 2901, 2901, 2901,
-        0,    0, 2901, 2901, 2902, 2902, 2902,    0,    0,    0,
-     2902, 2903, 2903, 2903, 2903,    0,    0, 2903, 2903, 2904,
-     2904, 2904,    0,    0,    0, 2904, 2905, 2905, 2905, 2905,
-        0,    0, 2905, 2905, 2906, 2906, 2906,    0,    0,    0,
-     2906, 2907, 2907, 2907, 2907,    0,    0, 2907, 2907, 2908,
-     2908, 2908,    0,    0,    0, 2908, 2909, 2909, 2909, 2909,
-        0,    0, 2909, 2909, 2910, 2910, 2910, 2910, 2910, 2910,
-     2910, 2910, 2910, 2911,    0, 2911,    0,    0, 2911, 2912,
-
-     2912, 2912,    0,    0,    0, 2912, 2913, 2913, 2913, 2913,
-        0,    0, 2913, 2913, 2914, 2914, 2914,    0,    0,    0,
-     2914, 2915, 2915, 2915, 2915,    0,    0, 2915, 2915, 2916,
-     2916, 2916,    0,    0,    0, 2916, 2917, 2917, 2917, 2917,
-        0,    0, 2917, 2917, 2918, 2918, 2918,    0,    0,    0,
-     2918, 2919, 2919, 2919, 2919,    0,    0, 2919, 2919, 2920,
-     2920, 2920,    0,    0,    0, 2920, 2921, 2921, 2921, 2921,
-        0,    0, 2921, 2921, 2922, 2922, 2922,    0,    0,    0,
-     2922, 2923, 2923, 2923, 2923,    0,    0, 2923, 2923, 2924,
-     2924, 2924,    0,    0,    0, 2924, 2925, 2925, 2925, 2925,
-
-        0,    0, 2925, 2925, 2926, 2926, 2926, 2926,    0,    0,
-     2926, 2926, 2927, 2927, 2927,    0,    0,    0, 2927, 2928,
-     2928, 2928, 2928,    0,    0, 2928, 2928, 2929, 2929, 2929,
-     2929,    0, 2929,    0, 2929, 2930, 2930, 2930, 2930,    0,
-        0, 2930, 2930, 2931, 2931, 2931,    0,    0,    0, 2931,
-     2932, 2932, 2932, 2932,    0,    0, 2932, 2932, 2933, 2933,
-     2933,    0,    0,    0, 2933, 2934, 2934, 2934, 2934,    0,
-        0, 2934, 2934, 2935, 2935, 2935,    0,    0,    0, 2935,
-     2936, 2936, 2936, 2936,    0,    0, 2936, 2936, 2937, 2937,
-     2937, 2937,    0, 2937,    0, 2937, 2938, 2938, 2938, 2938,
-
-        0,    0, 2938, 2938, 2939, 2939, 2939, 2939,    0, 2939,
-        0, 2939, 2940, 2940, 2940, 2940,    0,    0, 2940, 2940,
-     2941, 2941, 2941,    0,    0,    0, 2941, 2942, 2942, 2942,
-     2942,    0,    0, 2942, 2942, 2943, 2943, 2943,    0,    0,
-        0, 2943, 2944, 2944, 2944, 2944,    0,    0, 2944, 2944,
-     2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2946,
-     2946, 2946, 2946, 2946, 2946, 2946, 2946, 2946, 2947, 2947,
-     2947, 2947,    0, 2947,    0, 2947, 2948, 2948, 2948, 2948,
-        0,    0, 2948, 2948, 2949, 2949, 2949,    0,    0,    0,
-     2949, 2950, 2950, 2950, 2950,    0,    0, 2950, 2950, 2951,
-
-     2951, 2951, 2951,    0, 2951,    0, 2951, 2952, 2952, 2952,
-     2952,    0,    0, 2952, 2952, 2953, 2953, 2953, 2953,    0,
-     2953,    0, 2953, 2954, 2954, 2954, 2954,    0,    0, 2954,
-     2954, 2955, 2955, 2955,    0,    0,    0, 2955, 2956, 2956,
-     2956, 2956,    0,    0, 2956, 2956, 2957, 2957, 2957,    0,
-        0,    0, 2957, 2958, 2958, 2958, 2958,    0,    0, 2958,
-     2958, 2959, 2959, 2959,    0,    0,    0, 2959, 2960, 2960,
-     2960, 2960,    0,    0, 2960, 2960, 2961, 2961, 2961, 2961,
-        0,    0, 2961, 2961, 2962, 2962, 2962,    0,    0,    0,
-     2962, 2963, 2963, 2963, 2963,    0,    0, 2963, 2963, 2964,
-
-     2964, 2964, 2964,    0, 2964,    0, 2964, 2965, 2965, 2965,
-     2965,    0,    0, 2965, 2965, 2966, 2966, 2966, 2966,    0,
-     2966,    0, 2966, 2967, 2967, 2967, 2967,    0,    0, 2967,
-     2967, 2968, 2968, 2968,    0,    0,    0, 2968, 2969, 2969,
-     2969, 2969,    0,    0, 2969, 2969, 2970, 2970, 2970,    0,
-        0,    0, 2970, 2971, 2971, 2971, 2971,    0,    0, 2971,
-     2971, 2972, 2972, 2972,    0,    0,    0, 2972, 2973, 2973,
-     2973, 2973,    0,    0, 2973, 2973, 2974, 2974, 2974,    0,
-        0,    0, 2974, 2975, 2975, 2975, 2975,    0,    0, 2975,
-     2975, 2976, 2976, 2976, 2976,    0, 2976,    0, 2976, 2977,
-
-     2977, 2977, 2977,    0,    0, 2977, 2977, 2978, 2978, 2978,
-        0,    0,    0, 2978, 2979, 2979, 2979, 2979,    0,    0,
-     2979, 2979, 2980, 2980, 2980, 2980, 2980, 2980, 2980, 2980,
-     2980, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981, 2981,
-     2982, 2982, 2982,    0,    0,    0, 2982, 2983, 2983, 2983,
-     2983,    0,    0, 2983, 2983, 2984, 2984, 2984,    0,    0,
-        0, 2984, 2985, 2985, 2985, 2985,    0,    0, 2985, 2985,
-     2986, 2986, 2986, 2986,    0,    0, 2986, 2986, 2987, 2987,
-     2987, 2987,    0, 2987,    0, 2987, 2988, 2988, 2988, 2988,
-        0,    0, 2988, 2988, 2989, 2989, 2989, 2989,    0, 2989,
-
-        0, 2989, 2990, 2990, 2990, 2990,    0,    0, 2990, 2990,
-     2991, 2991, 2991,    0,    0,    0, 2991, 2992, 2992, 2992,
-     2992,    0,    0, 2992, 2992, 2993, 2993, 2993, 2993,    0,
-     2993,    0, 2993, 2994, 2994, 2994, 2994,    0,    0, 2994,
-     2994, 2995, 2995, 2995, 2995,    0,    0, 2995, 2995, 2996,
-     2996, 2996,    0,    0,    0, 2996, 2997, 2997, 2997, 2997,
-        0,    0, 2997, 2997, 2998, 2998, 2998,    0,    0,    0,
-     2998, 2999, 2999, 2999, 2999,    0,    0, 2999, 2999, 3000,
-     3000, 3000,    0,    0,    0, 3000, 3001, 3001, 3001, 3001,
-        0,    0, 3001, 3001, 3002, 3002, 3002, 3002,    0, 3002,
-
-        0, 3002, 3003, 3003, 3003, 3003,    0,    0, 3003, 3003,
-     3004, 3004, 3004,    0,    0,    0, 3004, 3005, 3005, 3005,
-     3005,    0,    0, 3005, 3005, 3006, 3006, 3006,    0,    0,
-        0, 3006, 3007, 3007, 3007, 3007,    0,    0, 3007, 3007,
-     3008, 3008, 3008,    0,    0,    0, 3008, 3009, 3009, 3009,
-     3009,    0,    0, 3009, 3009, 3010, 3010, 3010,    0,    0,
-        0, 3010, 3011, 3011, 3011, 3011,    0,    0, 3011, 3011,
-     3012, 3012, 3012,    0,    0,    0, 3012, 3013, 3013, 3013,
-     3013,    0,    0, 3013, 3013, 3014, 3014, 3014, 3014, 3014,
-     3014, 3014, 3014, 3014, 3015, 3015, 3015, 3015, 3015, 3015,
-
-     3015, 3015, 3015, 3016, 3016, 3016,    0,    0,    0, 3016,
-     3017, 3017, 3017, 3017,    0,    0, 3017, 3017, 3018, 3018,
-     3018,    0,    0,    0, 3018, 3019, 3019, 3019, 3019,    0,
-        0, 3019, 3019, 3020, 3020, 3020, 3020,    0,    0, 3020,
-     3020, 3021, 3021, 3021,    0,    0,    0, 3021, 3022, 3022,
-     3022, 3022,    0, 3022,    0, 3022, 3023, 3023, 3023, 3023,
-        0,    0, 3023, 3023, 3024, 3024, 3024,    0,    0,    0,
-     3024, 3025, 3025, 3025, 3025,    0,    0, 3025, 3025, 3026,
-     3026, 3026,    0,    0,    0, 3026, 3027, 3027, 3027, 3027,
-        0,    0, 3027, 3027, 3028, 3028, 3028, 3028,    0,    0,
-
-     3028, 3028, 3029, 3029, 3029,    0,    0,    0, 3029, 3030,
-     3030, 3030, 3030,    0,    0, 3030, 3030, 3031, 3031, 3031,
-     3031,    0, 3031,    0, 3031, 3032, 3032, 3032, 3032,    0,
-        0, 3032, 3032, 3033, 3033, 3033, 3033,    0, 3033,    0,
-     3033, 3034, 3034, 3034, 3034,    0,    0, 3034, 3034, 3035,
-     3035, 3035, 3035,    0, 3035,    0, 3035, 3036, 3036, 3036,
-     3036,    0,    0, 3036, 3036, 3037, 3037, 3037, 3037,    0,
-     3037,    0, 3037, 3038, 3038, 3038, 3038,    0,    0, 3038,
-     3038, 3039, 3039, 3039, 3039,    0, 3039,    0, 3039, 3040,
-     3040, 3040, 3040,    0,    0, 3040, 3040, 3041, 3041, 3041,
-
-     3041,    0, 3041,    0, 3041, 3042, 3042, 3042, 3042,    0,
-        0, 3042, 3042, 3043, 3043, 3043, 3043,    0, 3043,    0,
-     3043, 3044, 3044, 3044,    0,    0,    0, 3044, 3045, 3045,
-     3045, 3045,    0,    0, 3045, 3045, 3046, 3046, 3046, 3046,
-     3046, 3046, 3046, 3046, 3046, 3047, 3047, 3047, 3047, 3047,
-     3047, 3047, 3047, 3047, 3048, 3048, 3048, 3048,    0, 3048,
-        0, 3048, 3049, 3049, 3049,    0,    0,    0, 3049, 3050,
-     3050, 3050, 3050,    0,    0, 3050, 3050, 3051, 3051, 3051,
-     3051, 3051, 3051, 3051, 3051, 3051, 3052, 3052, 3052, 3052,
-     3052, 3052, 3052, 3052, 3052, 2802, 2802, 2802, 2802, 2802,
-
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802,
-     2802
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#define INITIAL 0
-/* Validating XML processor for skin.dtd.
- * Generated 2004/01/03 15:23:36.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-/* Version strings. */
-const char rcs_flexml_skeleton[] =
- "$" "Id: skel,v 1.16 1999/12/09 04:01:51 krisrose Exp $";
-const char rcs_flexml[] =
- "$" "Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp $";
-
-/* ANSI headers. */
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <ctype.h>
-
-/* Generated definitions. */
-#define FLEXML_BUFFERSTACKSIZE 100000
-
-/* XML processor api. */
-#include "skin.h"
-
-/* FleXML-provided data. */
-char* pcdata;
-AT_Text_id A_Text_id;
-AT_ThemeInfo_author A_ThemeInfo_author;
-AT_Playlist_fgcolor A_Playlist_fgcolor;
-AT_CheckBox_down2 A_CheckBox_down2;
-AT_Image_lefttop A_Image_lefttop;
-AT_Slider_visible A_Slider_visible;
-AT_CheckBox_down1 A_CheckBox_down1;
-AT_Image_rightbottom A_Image_rightbottom;
-AT_Event_id A_Event_id;
-AT_Rectangle_h A_Rectangle_h;
-AT_Slider_lefttop A_Slider_lefttop;
-AT_Slider_over A_Slider_over;
-AT_Window_id A_Window_id;
-AT_Theme_alpha A_Theme_alpha;
-AT_Text_text A_Text_text;
-AT_Playlist_rightbottom A_Playlist_rightbottom;
-AT_Event_event A_Event_event;
-AT_Slider_value A_Slider_value;
-AT_Font_underline A_Font_underline;
-AT_Image_onclick A_Image_onclick;
-AT_Anchor_priority A_Anchor_priority;
-AT_Font_italic A_Font_italic;
-AT_Button_y A_Button_y;
-AT_RadialSlider_sequence A_RadialSlider_sequence;
-AT_Playlist_var A_Playlist_var;
-AT_CheckBox_y A_CheckBox_y;
-AT_Window_playondrop A_Window_playondrop;
-AT_RadialSlider_minangle A_RadialSlider_minangle;
-AT_RadialSlider_visible A_RadialSlider_visible;
-AT_Playlist_playcolor A_Playlist_playcolor;
-AT_Anchor_range A_Anchor_range;
-AT_Theme_fadetime A_Theme_fadetime;
-AT_CheckBox_x A_CheckBox_x;
-AT_Bitmap_file A_Bitmap_file;
-AT_Slider_down A_Slider_down;
-AT_CheckBox_over2 A_CheckBox_over2;
-AT_Slider_y A_Slider_y;
-AT_Slider_id A_Slider_id;
-AT_Window_dragdrop A_Window_dragdrop;
-AT_Text_x A_Text_x;
-AT_Image_y A_Image_y;
-AT_Font_color A_Font_color;
-AT_Slider_rightbottom A_Slider_rightbottom;
-AT_Group_y A_Group_y;
-AT_Text_font A_Text_font;
-AT_Button_over A_Button_over;
-AT_Theme_version A_Theme_version;
-AT_Image_id A_Image_id;
-AT_CheckBox_lefttop A_CheckBox_lefttop;
-AT_Text_scrollspace A_Text_scrollspace;
-AT_Button_action A_Button_action;
-AT_Button_lefttop A_Button_lefttop;
-AT_Button_id A_Button_id;
-AT_Rectangle_visible A_Rectangle_visible;
-AT_Rectangle_color A_Rectangle_color;
-AT_Playlist_width A_Playlist_width;
-AT_RadialSlider_maxangle A_RadialSlider_maxangle;
-AT_Window_y A_Window_y;
-AT_Slider_help A_Slider_help;
-AT_Text_width A_Text_width;
-AT_Slider_points A_Slider_points;
-AT_CheckBox_up1 A_CheckBox_up1;
-AT_Theme_magnet A_Theme_magnet;
-AT_Theme_movealpha A_Theme_movealpha;
-AT_RadialSlider_lefttop A_RadialSlider_lefttop;
-AT_Button_up A_Button_up;
-AT_RadialSlider_y A_RadialSlider_y;
-AT_CheckBox_action1 A_CheckBox_action1;
-AT_Playlist_id A_Playlist_id;
-AT_Text_align A_Text_align;
-AT_CheckBox_tooltiptext1 A_CheckBox_tooltiptext1;
-AT_Group_x A_Group_x;
-AT_Text_display A_Text_display;
-AT_Bitmap_id A_Bitmap_id;
-AT_Playlist_y A_Playlist_y;
-AT_Text_scroll A_Text_scroll;
-AT_Playlist_lefttop A_Playlist_lefttop;
-AT_Rectangle_x A_Rectangle_x;
-AT_Layout_minheight A_Layout_minheight;
-AT_Button_rightbottom A_Button_rightbottom;
-AT_Slider_thickness A_Slider_thickness;
-AT_RadialSlider_tooltiptext A_RadialSlider_tooltiptext;
-AT_RadialSlider_value A_RadialSlider_value;
-AT_Text_visible A_Text_visible;
-AT_Slider_tooltiptext A_Slider_tooltiptext;
-AT_Rectangle_onclick A_Rectangle_onclick;
-AT_Layout_width A_Layout_width;
-AT_Rectangle_help A_Rectangle_help;
-AT_CheckBox_tooltiptext2 A_CheckBox_tooltiptext2;
-AT_Layout_maxheight A_Layout_maxheight;
-AT_RadialSlider_help A_RadialSlider_help;
-AT_Playlist_font A_Playlist_font;
-AT_Rectangle_id A_Rectangle_id;
-AT_CheckBox_help A_CheckBox_help;
-AT_Image_help A_Image_help;
-AT_Playlist_bgcolor1 A_Playlist_bgcolor1;
-AT_Bitmap_alphacolor A_Bitmap_alphacolor;
-AT_Image_image A_Image_image;
-AT_Font_id A_Font_id;
-AT_Button_x A_Button_x;
-AT_CheckBox_id A_CheckBox_id;
-AT_Layout_id A_Layout_id;
-AT_Event_key A_Event_key;
-AT_CheckBox_over1 A_CheckBox_over1;
-AT_Slider_up A_Slider_up;
-AT_Layout_minwidth A_Layout_minwidth;
-AT_CheckBox_rightbottom A_CheckBox_rightbottom;
-AT_Anchor_x A_Anchor_x;
-AT_Font_font A_Font_font;
-AT_Layout_maxwidth A_Layout_maxwidth;
-AT_Playlist_help A_Playlist_help;
-AT_Playlist_visible A_Playlist_visible;
-AT_Slider_x A_Slider_x;
-AT_CheckBox_up2 A_CheckBox_up2;
-AT_Text_help A_Text_help;
-AT_CheckBox_action2 A_CheckBox_action2;
-AT_CheckBox_state A_CheckBox_state;
-AT_Font_size A_Font_size;
-AT_ThemeInfo_webpage A_ThemeInfo_webpage;
-AT_RadialSlider_x A_RadialSlider_x;
-AT_Button_tooltiptext A_Button_tooltiptext;
-AT_Image_visible A_Image_visible;
-AT_Window_visible A_Window_visible;
-AT_RadialSlider_id A_RadialSlider_id;
-AT_Anchor_y A_Anchor_y;
-AT_RadialSlider_nbimages A_RadialSlider_nbimages;
-AT_Playlist_bgcolor2 A_Playlist_bgcolor2;
-AT_Playlist_x A_Playlist_x;
-AT_ThemeInfo_email A_ThemeInfo_email;
-AT_Window_x A_Window_x;
-AT_Button_down A_Button_down;
-AT_Playlist_height A_Playlist_height;
-AT_Layout_height A_Layout_height;
-AT_ThemeInfo_name A_ThemeInfo_name;
-AT_Button_help A_Button_help;
-AT_Text_y A_Text_y;
-AT_Rectangle_w A_Rectangle_w;
-AT_Image_x A_Image_x;
-AT_Rectangle_y A_Rectangle_y;
-AT_Playlist_selcolor A_Playlist_selcolor;
-AT_RadialSlider_rightbottom A_RadialSlider_rightbottom;
-
-/* XML state. */
-#ifdef FLEX_DEBUG
-# define ENTER(state)  debug_enter(state,#state)
-# define LEAVE         debug_leave()
-# define SET(state)    debug_set(state,#state)
-  static void debug_enter(int, char*);
-  static void debug_leave(void);
-  static void debug_set(int, char*);
-#else
-# define ENTER(state)  (yy_push_state(state))
-# define LEAVE         (yy_pop_state())
-# define SET(state)    BEGIN(state)
-#endif
-
-/* Generic actions. */
-#define SKIP   /*skip*/
-#define SUCCEED        return 0
-
-#define FAIL   return fail
-static int fail(const char*, ...);
-
-/* Text buffer stack handling. */
-char bufferstack[FLEXML_BUFFERSTACKSIZE];
-char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE;
-typedef struct BufferLast_s {
-  struct BufferLast_s *old; char* saved; char new[1];
-} BufferLast;
-BufferLast* last = (BufferLast*)0;
-char* next = bufferstack;
-
-#define BUFFERSET(P)  (P = next)
-#define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
-#define BUFFERDONE    (BUFFERPUTC('\0'))
-
-#define BUFFERLITERAL(C,P) bufferliteral(C,&(P),yytext)
-static void bufferliteral(char c, char** pp, char* text)
-{
-  char *s = strchr(text,c), *e = strrchr(text,c);
-  assert(s <= e); BUFFERSET(*pp);
-  while (++s<e) {
-    if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
-    else BUFFERPUTC(*s);
-  } 
-  BUFFERDONE;
-}
-
-#ifdef FLEXML_HasMixed
-static void pushbuffer(char* p)
-{
-  BufferLast* l = (BufferLast*)next;
-  assert(next < limit);
-  l->old = last;
-  l->saved = p;
-  next = l->new;
-  last = l;
-}
-
-static char* popbuffer(void)
-{
-  BufferLast* l = last;
-  assert(last != (BufferLast*)0);
-  last = l->old;
-  next = (char*)l;
-  return l->saved;
-}
-#endif
-
-/* General internal entities are `unput' back onto the input stream... */
-#define ENTITYTEXT(T) \
-  { char *s = (T), *e = s+strlen(s);\
-    while (--e >= s) { unput(*e); }}
-/* Flex standard options. */
-#define YY_STACK_USED 1
-#define YY_NO_TOP_STATE 1
-#define YY_NO_INPUT 1
-/* Flex user-requested options. */
-#define YY_NO_UNPUT 1
-/* XML character classes (currently restricted to ASCII). */
-/* "Common syntactic structures." */
-/* "Names and Tokens." */
-/* Miscellaneous. */
-/* Parser states (flex `exclusive start conditions'):
- *
- * PROLOG      the XML prolog of the document before <?xml...>
- * DOCTYPE     the XML prolog of the document after <?xml...>
- * EPILOG      after the root element
- * INCOMMENT   inside an XML comment <!--....-->
- * INPI                inside an XML PI <?...?>
- * VALUE1      inside a '...'-delimited literal
- * VALUE2      inside a "..."-delimited literal
- * CDATA       inside a <![CDATA[...]]> section.
- * ROOT_<tag>  expect root element <tag>
- * AL_<tag>    inside the attribute list for <tag>
- * IN_<tag>    inside a <tag> with element contents (ready for end tag)
- * IMPOSSIBLE  dummy to permit disabling rules; must be last
- */
-#define PROLOG 1
-#define DOCTYPE 2
-#define EPILOG 3
-#define INCOMMENT 4
-#define INPI 5
-#define VALUE1 6
-#define VALUE2 7
-#define CDATA 8
-
-#define ROOT_Theme 9
-#define AL_Theme 10
-#define S_Theme 11
-#define S_Theme_1 12
-#define S_Theme_2 13
-#define S_Theme_3 14
-#define E_Theme 15
-
-#define ROOT_Bitmap 16
-#define AL_Bitmap 17
-#define E_Bitmap 18
-
-#define ROOT_Event 19
-#define AL_Event 20
-#define E_Event 21
-
-#define ROOT_Font 22
-#define AL_Font 23
-#define E_Font 24
-
-#define ROOT_ThemeInfo 25
-#define AL_ThemeInfo 26
-#define E_ThemeInfo 27
-
-#define ROOT_Window 28
-#define AL_Window 29
-#define S_Window 30
-#define S_Window_1 31
-#define S_Window_2 32
-#define E_Window 33
-
-#define ROOT_Layout 34
-#define AL_Layout 35
-#define S_Layout 36
-#define E_Layout 37
-
-#define ROOT_Group 38
-#define AL_Group 39
-#define S_Group 40
-#define S_Group_1 41
-#define S_Group_2 42
-#define E_Group 43
-
-#define ROOT_Anchor 44
-#define AL_Anchor 45
-#define E_Anchor 46
-
-#define ROOT_Image 47
-#define AL_Image 48
-#define E_Image 49
-
-#define ROOT_Rectangle 50
-#define AL_Rectangle 51
-#define E_Rectangle 52
-
-#define ROOT_Button 53
-#define AL_Button 54
-#define E_Button 55
-
-#define ROOT_CheckBox 56
-#define AL_CheckBox 57
-#define E_CheckBox 58
-
-#define ROOT_Slider 59
-#define AL_Slider 60
-#define E_Slider 61
-
-#define ROOT_RadialSlider 62
-#define AL_RadialSlider 63
-#define E_RadialSlider 64
-
-#define ROOT_Text 65
-#define AL_Text 66
-#define E_Text 67
-
-#define ROOT_Playlist 68
-#define AL_Playlist 69
-#define S_Playlist 70
-#define E_Playlist 71
-
-#define IMPOSSIBLE 72
-
-/* State names. */
-char* statenames[IMPOSSIBLE];
-
-void FleXML_init(void)
-{
-  statenames[PROLOG] = NULL;
-  statenames[DOCTYPE] = NULL;
-  statenames[EPILOG] = NULL;
-  statenames[INCOMMENT] = NULL;
-  statenames[INPI] = NULL;
-  statenames[VALUE1] = NULL;
-  statenames[VALUE2] = NULL;
-  statenames[CDATA] = NULL;
-  statenames[ROOT_Theme] = NULL;
-  statenames[AL_Theme] = NULL;
-  statenames[S_Theme] = "Theme";
-  statenames[S_Theme_1] = "Theme";
-  statenames[S_Theme_2] = "Theme";
-  statenames[S_Theme_3] = "Theme";
-  statenames[E_Theme] = "Theme";
-  statenames[ROOT_Bitmap] = NULL;
-  statenames[AL_Bitmap] = NULL;
-  statenames[E_Bitmap] = "Bitmap";
-  statenames[ROOT_Event] = NULL;
-  statenames[AL_Event] = NULL;
-  statenames[E_Event] = "Event";
-  statenames[ROOT_Font] = NULL;
-  statenames[AL_Font] = NULL;
-  statenames[E_Font] = "Font";
-  statenames[ROOT_ThemeInfo] = NULL;
-  statenames[AL_ThemeInfo] = NULL;
-  statenames[E_ThemeInfo] = "ThemeInfo";
-  statenames[ROOT_Window] = NULL;
-  statenames[AL_Window] = NULL;
-  statenames[S_Window] = "Window";
-  statenames[S_Window_1] = "Window";
-  statenames[S_Window_2] = "Window";
-  statenames[E_Window] = "Window";
-  statenames[ROOT_Layout] = NULL;
-  statenames[AL_Layout] = NULL;
-  statenames[S_Layout] = "Layout";
-  statenames[E_Layout] = "Layout";
-  statenames[ROOT_Group] = NULL;
-  statenames[AL_Group] = NULL;
-  statenames[S_Group] = "Group";
-  statenames[S_Group_1] = "Group";
-  statenames[S_Group_2] = "Group";
-  statenames[E_Group] = "Group";
-  statenames[ROOT_Anchor] = NULL;
-  statenames[AL_Anchor] = NULL;
-  statenames[E_Anchor] = "Anchor";
-  statenames[ROOT_Image] = NULL;
-  statenames[AL_Image] = NULL;
-  statenames[E_Image] = "Image";
-  statenames[ROOT_Rectangle] = NULL;
-  statenames[AL_Rectangle] = NULL;
-  statenames[E_Rectangle] = "Rectangle";
-  statenames[ROOT_Button] = NULL;
-  statenames[AL_Button] = NULL;
-  statenames[E_Button] = "Button";
-  statenames[ROOT_CheckBox] = NULL;
-  statenames[AL_CheckBox] = NULL;
-  statenames[E_CheckBox] = "CheckBox";
-  statenames[ROOT_Slider] = NULL;
-  statenames[AL_Slider] = NULL;
-  statenames[E_Slider] = "Slider";
-  statenames[ROOT_RadialSlider] = NULL;
-  statenames[AL_RadialSlider] = NULL;
-  statenames[E_RadialSlider] = "RadialSlider";
-  statenames[ROOT_Text] = NULL;
-  statenames[AL_Text] = NULL;
-  statenames[E_Text] = "Text";
-  statenames[ROOT_Playlist] = NULL;
-  statenames[AL_Playlist] = NULL;
-  statenames[S_Playlist] = "Playlist";
-  statenames[E_Playlist] = "Playlist";
-}
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-       if ( yy_current_buffer->yy_is_interactive ) \
-               { \
-               int c = '*', n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
-                       YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
-               } \
-       else \
-               { \
-               errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-                       { \
-                       if( errno != EINTR) \
-                               { \
-                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                               break; \
-                               } \
-                       errno=0; \
-                       clearerr(yyin); \
-                       } \
-               }
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-       YY_USER_ACTION
-
-YY_DECL
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
-
-
-
- /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
- SET(PROLOG); FleXML_init();
-
- /* COMMENTS and PIs: handled uniformly for efficiency. */
-
-
-       if ( yy_init )
-               {
-               yy_init = 0;
-
-#ifdef YY_USER_INIT
-               YY_USER_INIT;
-#endif
-
-               if ( ! yy_start )
-                       yy_start = 1;   /* first start state */
-
-               if ( ! yyin )
-                       yyin = stdin;
-
-               if ( ! yyout )
-                       yyout = stdout;
-
-               if ( ! yy_current_buffer )
-                       yy_current_buffer =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
-
-               yy_load_buffer_state();
-               }
-
-       while ( 1 )             /* loops until end-of-file is reached */
-               {
-               yy_cp = yy_c_buf_p;
-
-               /* Support of yytext. */
-               *yy_cp = yy_hold_char;
-
-               /* yy_bp points to the position in yy_ch_buf of the start of
-                * the current run.
-                */
-               yy_bp = yy_cp;
-
-               yy_current_state = yy_start;
-yy_match:
-               do
-                       {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-                       if ( yy_accept[yy_current_state] )
-                               {
-                               yy_last_accepting_state = yy_current_state;
-                               yy_last_accepting_cpos = yy_cp;
-                               }
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 2803 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-                       ++yy_cp;
-                       }
-               while ( yy_current_state != 2802 );
-               yy_cp = yy_last_accepting_cpos;
-               yy_current_state = yy_last_accepting_state;
-
-yy_find_action:
-               yy_act = yy_accept[yy_current_state];
-
-               YY_DO_BEFORE_ACTION;
-
-
-do_action:     /* This label is used only to access EOF actions. */
-
-
-               switch ( yy_act )
-       { /* beginning of action switch */
-                       case 0: /* must back up */
-                       /* undo the effects of YY_DO_BEFORE_ACTION */
-                       *yy_cp = yy_hold_char;
-                       yy_cp = yy_last_accepting_cpos;
-                       yy_current_state = yy_last_accepting_state;
-                       goto yy_find_action;
-
-
-case 1:
-YY_RULE_SETUP
-ENTER(INCOMMENT);
-       YY_BREAK
-case 2:
-YY_RULE_SETUP
-ENTER(INPI);
-       YY_BREAK
-
-
-case 3:
-YY_RULE_SETUP
-LEAVE;
-       YY_BREAK
-case 4:
-case 5:
-case 6:
-YY_RULE_SETUP
-SKIP;
-       YY_BREAK
-case YY_STATE_EOF(INCOMMENT):
-FAIL("EOF in comment.");
-       YY_BREAK
-
-
-case 7:
-YY_RULE_SETUP
-LEAVE;
-       YY_BREAK
-case 8:
-case 9:
-YY_RULE_SETUP
-SKIP;
-       YY_BREAK
-case YY_STATE_EOF(INPI):
-FAIL("EOF in PI (processing instruction).");
-       YY_BREAK
-
-/* SPACES: skipped uniformly */
-case 10:
-YY_RULE_SETUP
-SKIP;
-       YY_BREAK
-/* PROLOG: determine root element and process it. */
-
-case 11:
-YY_RULE_SETUP
-SET(DOCTYPE);
-       YY_BREAK
-case 12:
-YY_RULE_SETUP
-FAIL("Bad declaration %s.",yytext);
-       YY_BREAK
-
-
-case 13:
-YY_RULE_SETUP
-SET(ROOT_Layout);
-       YY_BREAK
-case 14:
-YY_RULE_SETUP
-SET(ROOT_Event);
-       YY_BREAK
-case 15:
-YY_RULE_SETUP
-SET(ROOT_Image);
-       YY_BREAK
-case 16:
-YY_RULE_SETUP
-SET(ROOT_Playlist);
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-SET(ROOT_Text);
-       YY_BREAK
-case 18:
-YY_RULE_SETUP
-SET(ROOT_Rectangle);
-       YY_BREAK
-case 19:
-YY_RULE_SETUP
-SET(ROOT_Anchor);
-       YY_BREAK
-case 20:
-YY_RULE_SETUP
-SET(ROOT_Group);
-       YY_BREAK
-case 21:
-YY_RULE_SETUP
-SET(ROOT_Theme);
-       YY_BREAK
-case 22:
-YY_RULE_SETUP
-SET(ROOT_Font);
-       YY_BREAK
-case 23:
-YY_RULE_SETUP
-SET(ROOT_RadialSlider);
-       YY_BREAK
-case 24:
-YY_RULE_SETUP
-SET(ROOT_ThemeInfo);
-       YY_BREAK
-case 25:
-YY_RULE_SETUP
-SET(ROOT_Slider);
-       YY_BREAK
-case 26:
-YY_RULE_SETUP
-SET(ROOT_CheckBox);
-       YY_BREAK
-case 27:
-YY_RULE_SETUP
-SET(ROOT_Button);
-       YY_BREAK
-case 28:
-YY_RULE_SETUP
-SET(ROOT_Bitmap);
-       YY_BREAK
-case 29:
-YY_RULE_SETUP
-SET(ROOT_Window);
-       YY_BREAK
-case 30:
-YY_RULE_SETUP
-FAIL("Bad declaration %s.",yytext);
-       YY_BREAK
-case 31:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in prolog.", yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(PROLOG):
-case YY_STATE_EOF(DOCTYPE):
-FAIL("EOF in prolog.");
-       YY_BREAK
-
-/* RULES DERIVED FROM DTD. */
-/* <!--
-  * -->  */
-/*         version     CDATA   "1.0"
-  *         magnet      CDATA   "15"
-  *         alpha       CDATA   "255"
-  *         movealpha   CDATA   "255"
-  *         fadetime    CDATA   "400"
-  *     >  */
-case 32:
-YY_RULE_SETUP
-{
-  A_Theme_version = "1.0";
-  A_Theme_magnet = "15";
-  A_Theme_alpha = "255";
-  A_Theme_movealpha = "255";
-  A_Theme_fadetime = "400";
-  ENTER(AL_Theme);
-}
-       YY_BREAK
-
-case 33:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Theme_version);
-       YY_BREAK
-case 34:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Theme_version);
-       YY_BREAK
-case 35:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Theme_magnet);
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Theme_magnet);
-       YY_BREAK
-case 37:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Theme_alpha);
-       YY_BREAK
-case 38:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Theme_alpha);
-       YY_BREAK
-case 39:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Theme_movealpha);
-       YY_BREAK
-case 40:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Theme_movealpha);
-       YY_BREAK
-case 41:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Theme_fadetime);
-       YY_BREAK
-case 42:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Theme_fadetime);
-       YY_BREAK
-case 43:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Theme(pContext); pcdata = NULL; ENTER(S_Theme);
- }
-       YY_BREAK
-case 44:
-YY_RULE_SETUP
-FAIL("`Theme' element cannot be empty.");
-       YY_BREAK
-case 45:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Theme element.", yytext[0]);
-       YY_BREAK
-case 46:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Theme' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Theme):
-FAIL("EOF in attribute list of `Theme' element.");
-       YY_BREAK
-
-
-case 47:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Theme(pContext);
-  switch (YY_START) {
-   case ROOT_Theme: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 48:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Theme>' expected.",yytext);
-       YY_BREAK
-case 49:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Theme>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Theme):
-case YY_STATE_EOF(S_Theme_1):
-case YY_STATE_EOF(S_Theme_3):
-FAIL("Premature EOF: `</Theme>' expected.");
-       YY_BREAK
-
-/* <!-- main elements -->  */
-/*         id          CDATA   #REQUIRED
-  *         file        CDATA   #REQUIRED
-  *         alphacolor  CDATA   #REQUIRED
-  *     >  */
-case 50:
-YY_RULE_SETUP
-{
-  A_Bitmap_id = NULL;
-  A_Bitmap_file = NULL;
-  A_Bitmap_alphacolor = NULL;
-  ENTER(AL_Bitmap);
-}
-       YY_BREAK
-
-case 51:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Bitmap_id);
-       YY_BREAK
-case 52:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Bitmap_id);
-       YY_BREAK
-case 53:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Bitmap_file);
-       YY_BREAK
-case 54:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Bitmap_file);
-       YY_BREAK
-case 55:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Bitmap_alphacolor);
-       YY_BREAK
-case 56:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Bitmap_alphacolor);
-       YY_BREAK
-case 57:
-YY_RULE_SETUP
-{
-  if (!A_Bitmap_id) FAIL("Required attribute `id' not set for `Bitmap' element.");
-  if (!A_Bitmap_file) FAIL("Required attribute `file' not set for `Bitmap' element.");
-  if (!A_Bitmap_alphacolor) FAIL("Required attribute `alphacolor' not set for `Bitmap' element.");
-  LEAVE; STag_Bitmap(pContext); pcdata = NULL; ENTER(E_Bitmap);
- }
-       YY_BREAK
-case 58:
-YY_RULE_SETUP
-{
-  if (!A_Bitmap_id) FAIL("Required attribute `id' not set for `Bitmap' element.");
-  if (!A_Bitmap_file) FAIL("Required attribute `file' not set for `Bitmap' element.");
-  if (!A_Bitmap_alphacolor) FAIL("Required attribute `alphacolor' not set for `Bitmap' element.");
-  LEAVE; STag_Bitmap(pContext); pcdata = NULL; ETag_Bitmap(pContext);
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Bitmap: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 59:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Bitmap element.", yytext[0]);
-       YY_BREAK
-case 60:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Bitmap' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Bitmap):
-FAIL("EOF in attribute list of `Bitmap' element.");
-       YY_BREAK
-
-
-case 61:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Bitmap(pContext);
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Bitmap: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 62:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Bitmap>' expected.",yytext);
-       YY_BREAK
-case 63:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Bitmap>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Bitmap):
-FAIL("Premature EOF: `</Bitmap>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   #REQUIRED
-  *         event       CDATA   #REQUIRED
-  *         key         CDATA   "none"
-  *     >  */
-case 64:
-YY_RULE_SETUP
-{
-  A_Event_id = NULL;
-  A_Event_event = NULL;
-  A_Event_key = "none";
-  ENTER(AL_Event);
-}
-       YY_BREAK
-
-case 65:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Event_id);
-       YY_BREAK
-case 66:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Event_id);
-       YY_BREAK
-case 67:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Event_event);
-       YY_BREAK
-case 68:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Event_event);
-       YY_BREAK
-case 69:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Event_key);
-       YY_BREAK
-case 70:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Event_key);
-       YY_BREAK
-case 71:
-YY_RULE_SETUP
-{
-  if (!A_Event_id) FAIL("Required attribute `id' not set for `Event' element.");
-  if (!A_Event_event) FAIL("Required attribute `event' not set for `Event' element.");
-  LEAVE; STag_Event(pContext); pcdata = NULL; ENTER(E_Event);
- }
-       YY_BREAK
-case 72:
-YY_RULE_SETUP
-{
-  if (!A_Event_id) FAIL("Required attribute `id' not set for `Event' element.");
-  if (!A_Event_event) FAIL("Required attribute `event' not set for `Event' element.");
-  LEAVE; STag_Event(pContext); pcdata = NULL; ETag_Event(pContext);
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Event: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 73:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Event element.", yytext[0]);
-       YY_BREAK
-case 74:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Event' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Event):
-FAIL("EOF in attribute list of `Event' element.");
-       YY_BREAK
-
-
-case 75:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Event(pContext);
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Event: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 76:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Event>' expected.",yytext);
-       YY_BREAK
-case 77:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Event>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Event):
-FAIL("Premature EOF: `</Event>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   #REQUIRED
-  *         font        CDATA   "arial"
-  *         size        CDATA   "12"
-  *         color       CDATA   "#000000"
-  *         italic      CDATA   "false"
-  *         underline   CDATA   "false"
-  *     >  */
-case 78:
-YY_RULE_SETUP
-{
-  A_Font_id = NULL;
-  A_Font_font = "arial";
-  A_Font_size = "12";
-  A_Font_color = "#000000";
-  A_Font_italic = "false";
-  A_Font_underline = "false";
-  ENTER(AL_Font);
-}
-       YY_BREAK
-
-case 79:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_id);
-       YY_BREAK
-case 80:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_id);
-       YY_BREAK
-case 81:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_font);
-       YY_BREAK
-case 82:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_font);
-       YY_BREAK
-case 83:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_size);
-       YY_BREAK
-case 84:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_size);
-       YY_BREAK
-case 85:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_color);
-       YY_BREAK
-case 86:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_color);
-       YY_BREAK
-case 87:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_italic);
-       YY_BREAK
-case 88:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_italic);
-       YY_BREAK
-case 89:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Font_underline);
-       YY_BREAK
-case 90:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Font_underline);
-       YY_BREAK
-case 91:
-YY_RULE_SETUP
-{
-  if (!A_Font_id) FAIL("Required attribute `id' not set for `Font' element.");
-  LEAVE; STag_Font(pContext); pcdata = NULL; ENTER(E_Font);
- }
-       YY_BREAK
-case 92:
-YY_RULE_SETUP
-{
-  if (!A_Font_id) FAIL("Required attribute `id' not set for `Font' element.");
-  LEAVE; STag_Font(pContext); pcdata = NULL; ETag_Font(pContext);
-  switch (YY_START) {
-   case ROOT_Font: SET(EPILOG); break;
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 93:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Font element.", yytext[0]);
-       YY_BREAK
-case 94:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Font' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Font):
-FAIL("EOF in attribute list of `Font' element.");
-       YY_BREAK
-
-
-case 95:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Font(pContext);
-  switch (YY_START) {
-   case ROOT_Font: SET(EPILOG); break;
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 96:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Font>' expected.",yytext);
-       YY_BREAK
-case 97:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Font>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Font):
-FAIL("Premature EOF: `</Font>' expected.");
-       YY_BREAK
-
-/*         name        CDATA   #IMPLIED
-  *         author      CDATA   #IMPLIED
-  *         email       CDATA   #IMPLIED
-  *         webpage     CDATA   #IMPLIED
-  *     >  */
-case 98:
-YY_RULE_SETUP
-{
-  A_ThemeInfo_name = NULL;
-  A_ThemeInfo_author = NULL;
-  A_ThemeInfo_email = NULL;
-  A_ThemeInfo_webpage = NULL;
-  ENTER(AL_ThemeInfo);
-}
-       YY_BREAK
-
-case 99:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_name);
-       YY_BREAK
-case 100:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_name);
-       YY_BREAK
-case 101:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_author);
-       YY_BREAK
-case 102:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_author);
-       YY_BREAK
-case 103:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_email);
-       YY_BREAK
-case 104:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_email);
-       YY_BREAK
-case 105:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_ThemeInfo_webpage);
-       YY_BREAK
-case 106:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_ThemeInfo_webpage);
-       YY_BREAK
-case 107:
-YY_RULE_SETUP
-{
-  LEAVE; STag_ThemeInfo(pContext); pcdata = NULL; ENTER(E_ThemeInfo);
- }
-       YY_BREAK
-case 108:
-YY_RULE_SETUP
-{
-  LEAVE; STag_ThemeInfo(pContext); pcdata = NULL; ETag_ThemeInfo(pContext);
-  switch (YY_START) {
-   case S_Theme: SET(S_Theme_1); break;
-   case ROOT_ThemeInfo: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 109:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of ThemeInfo element.", yytext[0]);
-       YY_BREAK
-case 110:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `ThemeInfo' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_ThemeInfo):
-FAIL("EOF in attribute list of `ThemeInfo' element.");
-       YY_BREAK
-
-
-case 111:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_ThemeInfo(pContext);
-  switch (YY_START) {
-   case S_Theme: SET(S_Theme_1); break;
-   case ROOT_ThemeInfo: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 112:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</ThemeInfo>' expected.",yytext);
-       YY_BREAK
-case 113:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</ThemeInfo>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_ThemeInfo):
-FAIL("Premature EOF: `</ThemeInfo>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   #REQUIRED
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         dragdrop    CDATA   "true"
-  *         playondrop  CDATA   "true"
-  *     >  */
-case 114:
-YY_RULE_SETUP
-{
-  A_Window_id = NULL;
-  A_Window_visible = "true";
-  A_Window_x = "\0";
-  A_Window_y = "\0";
-  A_Window_dragdrop = "true";
-  A_Window_playondrop = "true";
-  ENTER(AL_Window);
-}
-       YY_BREAK
-
-case 115:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_id);
-       YY_BREAK
-case 116:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_id);
-       YY_BREAK
-case 117:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_visible);
-       YY_BREAK
-case 118:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_visible);
-       YY_BREAK
-case 119:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_x);
-       YY_BREAK
-case 120:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_x);
-       YY_BREAK
-case 121:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_y);
-       YY_BREAK
-case 122:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_y);
-       YY_BREAK
-case 123:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_dragdrop);
-       YY_BREAK
-case 124:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_dragdrop);
-       YY_BREAK
-case 125:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Window_playondrop);
-       YY_BREAK
-case 126:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Window_playondrop);
-       YY_BREAK
-case 127:
-YY_RULE_SETUP
-{
-  if (!A_Window_id) FAIL("Required attribute `id' not set for `Window' element.");
-  LEAVE; STag_Window(pContext); pcdata = NULL; ENTER(S_Window);
- }
-       YY_BREAK
-case 128:
-YY_RULE_SETUP
-FAIL("`Window' element cannot be empty.");
-       YY_BREAK
-case 129:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Window element.", yytext[0]);
-       YY_BREAK
-case 130:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Window' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Window):
-FAIL("EOF in attribute list of `Window' element.");
-       YY_BREAK
-
-
-case 131:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Window(pContext);
-  switch (YY_START) {
-   case ROOT_Window: SET(EPILOG); break;
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
-       YY_BREAK
-case 132:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Window>' expected.",yytext);
-       YY_BREAK
-case 133:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Window>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(S_Window_2):
-case YY_STATE_EOF(E_Window):
-FAIL("Premature EOF: `</Window>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         width       CDATA   #REQUIRED
-  *         height      CDATA   #REQUIRED
-  *         minwidth    CDATA   "-1"
-  *         maxwidth    CDATA   "-1"
-  *         minheight   CDATA   "-1"
-  *         maxheight   CDATA   "-1"
-  *     >  */
-case 134:
-YY_RULE_SETUP
-{
-  A_Layout_id = "none";
-  A_Layout_width = NULL;
-  A_Layout_height = NULL;
-  A_Layout_minwidth = "-1";
-  A_Layout_maxwidth = "-1";
-  A_Layout_minheight = "-1";
-  A_Layout_maxheight = "-1";
-  ENTER(AL_Layout);
-}
-       YY_BREAK
-
-case 135:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_id);
-       YY_BREAK
-case 136:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_id);
-       YY_BREAK
-case 137:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_width);
-       YY_BREAK
-case 138:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_width);
-       YY_BREAK
-case 139:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_height);
-       YY_BREAK
-case 140:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_height);
-       YY_BREAK
-case 141:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_minwidth);
-       YY_BREAK
-case 142:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_minwidth);
-       YY_BREAK
-case 143:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_maxwidth);
-       YY_BREAK
-case 144:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_maxwidth);
-       YY_BREAK
-case 145:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_minheight);
-       YY_BREAK
-case 146:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_minheight);
-       YY_BREAK
-case 147:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Layout_maxheight);
-       YY_BREAK
-case 148:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Layout_maxheight);
-       YY_BREAK
-case 149:
-YY_RULE_SETUP
-{
-  if (!A_Layout_width) FAIL("Required attribute `width' not set for `Layout' element.");
-  if (!A_Layout_height) FAIL("Required attribute `height' not set for `Layout' element.");
-  LEAVE; STag_Layout(pContext); pcdata = NULL; ENTER(S_Layout);
- }
-       YY_BREAK
-case 150:
-YY_RULE_SETUP
-FAIL("`Layout' element cannot be empty.");
-       YY_BREAK
-case 151:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Layout element.", yytext[0]);
-       YY_BREAK
-case 152:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Layout' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Layout):
-FAIL("EOF in attribute list of `Layout' element.");
-       YY_BREAK
-
-
-case 153:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Layout(pContext);
-  switch (YY_START) {
-   case S_Window: case S_Window_1: case S_Window_2: SET(S_Window_2); break;
-   case ROOT_Layout: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 154:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Layout>' expected.",yytext);
-       YY_BREAK
-case 155:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Layout>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Layout):
-FAIL("Premature EOF: `</Layout>' expected.");
-       YY_BREAK
-
-/*                  Rectangle|Anchor)+>  */
-/*         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *     >  */
-case 156:
-YY_RULE_SETUP
-{
-  A_Group_x = "\0";
-  A_Group_y = "\0";
-  ENTER(AL_Group);
-}
-       YY_BREAK
-
-case 157:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Group_x);
-       YY_BREAK
-case 158:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Group_x);
-       YY_BREAK
-case 159:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Group_y);
-       YY_BREAK
-case 160:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Group_y);
-       YY_BREAK
-case 161:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Group(pContext); pcdata = NULL; ENTER(S_Group);
- }
-       YY_BREAK
-case 162:
-YY_RULE_SETUP
-FAIL("`Group' element cannot be empty.");
-       YY_BREAK
-case 163:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Group element.", yytext[0]);
-       YY_BREAK
-case 164:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Group' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Group):
-FAIL("EOF in attribute list of `Group' element.");
-       YY_BREAK
-
-
-case 165:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Group(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case S_Layout: SET(E_Layout); break;
-   case ROOT_Group: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 166:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Group>' expected.",yytext);
-       YY_BREAK
-case 167:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Group>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(S_Group_2):
-case YY_STATE_EOF(E_Group):
-FAIL("Premature EOF: `</Group>' expected.");
-       YY_BREAK
-
-/* <!-- Anchors -->  */
-/*         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         priority    CDATA   #REQUIRED
-  *         range       CDATA   "10"
-  *     >  */
-case 168:
-YY_RULE_SETUP
-{
-  A_Anchor_x = "\0";
-  A_Anchor_y = "\0";
-  A_Anchor_priority = NULL;
-  A_Anchor_range = "10";
-  ENTER(AL_Anchor);
-}
-       YY_BREAK
-
-case 169:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_x);
-       YY_BREAK
-case 170:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_x);
-       YY_BREAK
-case 171:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_y);
-       YY_BREAK
-case 172:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_y);
-       YY_BREAK
-case 173:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_priority);
-       YY_BREAK
-case 174:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_priority);
-       YY_BREAK
-case 175:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Anchor_range);
-       YY_BREAK
-case 176:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Anchor_range);
-       YY_BREAK
-case 177:
-YY_RULE_SETUP
-{
-  if (!A_Anchor_priority) FAIL("Required attribute `priority' not set for `Anchor' element.");
-  LEAVE; STag_Anchor(pContext); pcdata = NULL; ENTER(E_Anchor);
- }
-       YY_BREAK
-case 178:
-YY_RULE_SETUP
-{
-  if (!A_Anchor_priority) FAIL("Required attribute `priority' not set for `Anchor' element.");
-  LEAVE; STag_Anchor(pContext); pcdata = NULL; ETag_Anchor(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Anchor: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 179:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Anchor element.", yytext[0]);
-       YY_BREAK
-case 180:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Anchor' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Anchor):
-FAIL("EOF in attribute list of `Anchor' element.");
-       YY_BREAK
-
-
-case 181:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Anchor(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Anchor: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 182:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Anchor>' expected.",yytext);
-       YY_BREAK
-case 183:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Anchor>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Anchor):
-FAIL("Premature EOF: `</Anchor>' expected.");
-       YY_BREAK
-
-/* <!-- Controls -->  */
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         image       CDATA   #REQUIRED
-  *         onclick     CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-case 184:
-YY_RULE_SETUP
-{
-  A_Image_id = "none";
-  A_Image_visible = "true";
-  A_Image_x = "\0";
-  A_Image_y = "\0";
-  A_Image_lefttop = "lefttop";
-  A_Image_rightbottom = "lefttop";
-  A_Image_image = NULL;
-  A_Image_onclick = "none";
-  A_Image_help = "\0";
-  ENTER(AL_Image);
-}
-       YY_BREAK
-
-case 185:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_id);
-       YY_BREAK
-case 186:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_id);
-       YY_BREAK
-case 187:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_visible);
-       YY_BREAK
-case 188:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_visible);
-       YY_BREAK
-case 189:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_x);
-       YY_BREAK
-case 190:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_x);
-       YY_BREAK
-case 191:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_y);
-       YY_BREAK
-case 192:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_y);
-       YY_BREAK
-case 193:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_lefttop);
-       YY_BREAK
-case 194:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_lefttop);
-       YY_BREAK
-case 195:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_rightbottom);
-       YY_BREAK
-case 196:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_rightbottom);
-       YY_BREAK
-case 197:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_image);
-       YY_BREAK
-case 198:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_image);
-       YY_BREAK
-case 199:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_onclick);
-       YY_BREAK
-case 200:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_onclick);
-       YY_BREAK
-case 201:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Image_help);
-       YY_BREAK
-case 202:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Image_help);
-       YY_BREAK
-case 203:
-YY_RULE_SETUP
-{
-  if (!A_Image_image) FAIL("Required attribute `image' not set for `Image' element.");
-  LEAVE; STag_Image(pContext); pcdata = NULL; ENTER(E_Image);
- }
-       YY_BREAK
-case 204:
-YY_RULE_SETUP
-{
-  if (!A_Image_image) FAIL("Required attribute `image' not set for `Image' element.");
-  LEAVE; STag_Image(pContext); pcdata = NULL; ETag_Image(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Image: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 205:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Image element.", yytext[0]);
-       YY_BREAK
-case 206:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Image' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Image):
-FAIL("EOF in attribute list of `Image' element.");
-       YY_BREAK
-
-
-case 207:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Image(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Image: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 208:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Image>' expected.",yytext);
-       YY_BREAK
-case 209:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Image>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Image):
-FAIL("Premature EOF: `</Image>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         w           CDATA   "50"
-  *         h           CDATA   "50"
-  *         color       CDATA   "#C0C0C0"
-  *         onclick     CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-case 210:
-YY_RULE_SETUP
-{
-  A_Rectangle_id = "none";
-  A_Rectangle_visible = "true";
-  A_Rectangle_x = "\0";
-  A_Rectangle_y = "\0";
-  A_Rectangle_w = "50";
-  A_Rectangle_h = "50";
-  A_Rectangle_color = "#C0C0C0";
-  A_Rectangle_onclick = "none";
-  A_Rectangle_help = "\0";
-  ENTER(AL_Rectangle);
-}
-       YY_BREAK
-
-case 211:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_id);
-       YY_BREAK
-case 212:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_id);
-       YY_BREAK
-case 213:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_visible);
-       YY_BREAK
-case 214:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_visible);
-       YY_BREAK
-case 215:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_x);
-       YY_BREAK
-case 216:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_x);
-       YY_BREAK
-case 217:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_y);
-       YY_BREAK
-case 218:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_y);
-       YY_BREAK
-case 219:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_w);
-       YY_BREAK
-case 220:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_w);
-       YY_BREAK
-case 221:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_h);
-       YY_BREAK
-case 222:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_h);
-       YY_BREAK
-case 223:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_color);
-       YY_BREAK
-case 224:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_color);
-       YY_BREAK
-case 225:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_onclick);
-       YY_BREAK
-case 226:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_onclick);
-       YY_BREAK
-case 227:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Rectangle_help);
-       YY_BREAK
-case 228:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Rectangle_help);
-       YY_BREAK
-case 229:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Rectangle(pContext); pcdata = NULL; ENTER(E_Rectangle);
- }
-       YY_BREAK
-case 230:
-YY_RULE_SETUP
-{
-  LEAVE; STag_Rectangle(pContext); pcdata = NULL; ETag_Rectangle(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Rectangle: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 231:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Rectangle element.", yytext[0]);
-       YY_BREAK
-case 232:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Rectangle' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Rectangle):
-FAIL("EOF in attribute list of `Rectangle' element.");
-       YY_BREAK
-
-
-case 233:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Rectangle(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Rectangle: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 234:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Rectangle>' expected.",yytext);
-       YY_BREAK
-case 235:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Rectangle>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Rectangle):
-FAIL("Premature EOF: `</Rectangle>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         up          CDATA   #REQUIRED
-  *         down        CDATA   "none"
-  *         over        CDATA   "none"
-  *         action      CDATA   "none"
-  *         tooltiptext CDATA   "\0"
-  *         help        CDATA   "\0"
-  *     >  */
-case 236:
-YY_RULE_SETUP
-{
-  A_Button_id = "none";
-  A_Button_x = "\0";
-  A_Button_y = "\0";
-  A_Button_lefttop = "lefttop";
-  A_Button_rightbottom = "lefttop";
-  A_Button_up = NULL;
-  A_Button_down = "none";
-  A_Button_over = "none";
-  A_Button_action = "none";
-  A_Button_tooltiptext = "\0";
-  A_Button_help = "\0";
-  ENTER(AL_Button);
-}
-       YY_BREAK
-
-case 237:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_id);
-       YY_BREAK
-case 238:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_id);
-       YY_BREAK
-case 239:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_x);
-       YY_BREAK
-case 240:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_x);
-       YY_BREAK
-case 241:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_y);
-       YY_BREAK
-case 242:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_y);
-       YY_BREAK
-case 243:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_lefttop);
-       YY_BREAK
-case 244:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_lefttop);
-       YY_BREAK
-case 245:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_rightbottom);
-       YY_BREAK
-case 246:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_rightbottom);
-       YY_BREAK
-case 247:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_up);
-       YY_BREAK
-case 248:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_up);
-       YY_BREAK
-case 249:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_down);
-       YY_BREAK
-case 250:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_down);
-       YY_BREAK
-case 251:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_over);
-       YY_BREAK
-case 252:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_over);
-       YY_BREAK
-case 253:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_action);
-       YY_BREAK
-case 254:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_action);
-       YY_BREAK
-case 255:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_tooltiptext);
-       YY_BREAK
-case 256:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_tooltiptext);
-       YY_BREAK
-case 257:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Button_help);
-       YY_BREAK
-case 258:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Button_help);
-       YY_BREAK
-case 259:
-YY_RULE_SETUP
-{
-  if (!A_Button_up) FAIL("Required attribute `up' not set for `Button' element.");
-  LEAVE; STag_Button(pContext); pcdata = NULL; ENTER(E_Button);
- }
-       YY_BREAK
-case 260:
-YY_RULE_SETUP
-{
-  if (!A_Button_up) FAIL("Required attribute `up' not set for `Button' element.");
-  LEAVE; STag_Button(pContext); pcdata = NULL; ETag_Button(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Button: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 261:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Button element.", yytext[0]);
-       YY_BREAK
-case 262:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Button' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Button):
-FAIL("EOF in attribute list of `Button' element.");
-       YY_BREAK
-
-
-case 263:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Button(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Button: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 264:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Button>' expected.",yytext);
-       YY_BREAK
-case 265:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Button>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Button):
-FAIL("Premature EOF: `</Button>' expected.");
-       YY_BREAK
-
-/*         id           CDATA   "none"
-  *         x            CDATA   "\0"
-  *         y            CDATA   "\0"
-  *         lefttop      CDATA   "lefttop"
-  *         rightbottom  CDATA   "lefttop"
-  *         up1          CDATA   #REQUIRED
-  *         down1        CDATA   "none"
-  *         over1        CDATA   "none"
-  *         up2          CDATA   #REQUIRED
-  *         down2        CDATA   "none"
-  *         over2        CDATA   "none"
-  *         state        CDATA   #REQUIRED
-  *         action1      CDATA   "none"
-  *         action2      CDATA   "none"
-  *         tooltiptext1 CDATA   "\0"
-  *         tooltiptext2 CDATA   "\0"
-  *         help         CDATA   "\0"
-  *     >  */
-case 266:
-YY_RULE_SETUP
-{
-  A_CheckBox_id = "none";
-  A_CheckBox_x = "\0";
-  A_CheckBox_y = "\0";
-  A_CheckBox_lefttop = "lefttop";
-  A_CheckBox_rightbottom = "lefttop";
-  A_CheckBox_up1 = NULL;
-  A_CheckBox_down1 = "none";
-  A_CheckBox_over1 = "none";
-  A_CheckBox_up2 = NULL;
-  A_CheckBox_down2 = "none";
-  A_CheckBox_over2 = "none";
-  A_CheckBox_state = NULL;
-  A_CheckBox_action1 = "none";
-  A_CheckBox_action2 = "none";
-  A_CheckBox_tooltiptext1 = "\0";
-  A_CheckBox_tooltiptext2 = "\0";
-  A_CheckBox_help = "\0";
-  ENTER(AL_CheckBox);
-}
-       YY_BREAK
-
-case 267:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_id);
-       YY_BREAK
-case 268:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_id);
-       YY_BREAK
-case 269:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_x);
-       YY_BREAK
-case 270:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_x);
-       YY_BREAK
-case 271:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_y);
-       YY_BREAK
-case 272:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_y);
-       YY_BREAK
-case 273:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_lefttop);
-       YY_BREAK
-case 274:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_lefttop);
-       YY_BREAK
-case 275:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_rightbottom);
-       YY_BREAK
-case 276:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_rightbottom);
-       YY_BREAK
-case 277:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_up1);
-       YY_BREAK
-case 278:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_up1);
-       YY_BREAK
-case 279:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_down1);
-       YY_BREAK
-case 280:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_down1);
-       YY_BREAK
-case 281:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_over1);
-       YY_BREAK
-case 282:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_over1);
-       YY_BREAK
-case 283:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_up2);
-       YY_BREAK
-case 284:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_up2);
-       YY_BREAK
-case 285:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_down2);
-       YY_BREAK
-case 286:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_down2);
-       YY_BREAK
-case 287:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_over2);
-       YY_BREAK
-case 288:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_over2);
-       YY_BREAK
-case 289:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_state);
-       YY_BREAK
-case 290:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_state);
-       YY_BREAK
-case 291:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_action1);
-       YY_BREAK
-case 292:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_action1);
-       YY_BREAK
-case 293:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_action2);
-       YY_BREAK
-case 294:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_action2);
-       YY_BREAK
-case 295:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_tooltiptext1);
-       YY_BREAK
-case 296:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_tooltiptext1);
-       YY_BREAK
-case 297:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_tooltiptext2);
-       YY_BREAK
-case 298:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_tooltiptext2);
-       YY_BREAK
-case 299:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_CheckBox_help);
-       YY_BREAK
-case 300:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_CheckBox_help);
-       YY_BREAK
-case 301:
-YY_RULE_SETUP
-{
-  if (!A_CheckBox_up1) FAIL("Required attribute `up1' not set for `CheckBox' element.");
-  if (!A_CheckBox_up2) FAIL("Required attribute `up2' not set for `CheckBox' element.");
-  if (!A_CheckBox_state) FAIL("Required attribute `state' not set for `CheckBox' element.");
-  LEAVE; STag_CheckBox(pContext); pcdata = NULL; ENTER(E_CheckBox);
- }
-       YY_BREAK
-case 302:
-YY_RULE_SETUP
-{
-  if (!A_CheckBox_up1) FAIL("Required attribute `up1' not set for `CheckBox' element.");
-  if (!A_CheckBox_up2) FAIL("Required attribute `up2' not set for `CheckBox' element.");
-  if (!A_CheckBox_state) FAIL("Required attribute `state' not set for `CheckBox' element.");
-  LEAVE; STag_CheckBox(pContext); pcdata = NULL; ETag_CheckBox(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_CheckBox: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 303:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of CheckBox element.", yytext[0]);
-       YY_BREAK
-case 304:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `CheckBox' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_CheckBox):
-FAIL("EOF in attribute list of `CheckBox' element.");
-       YY_BREAK
-
-
-case 305:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_CheckBox(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_CheckBox: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 306:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</CheckBox>' expected.",yytext);
-       YY_BREAK
-case 307:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</CheckBox>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_CheckBox):
-FAIL("Premature EOF: `</CheckBox>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         up          CDATA   #REQUIRED
-  *         down        CDATA   "none"
-  *         over        CDATA   "none"
-  *         points      CDATA   #REQUIRED
-  *         thickness   CDATA   "10"
-  *         value       CDATA   "none"
-  *         tooltiptext CDATA   "\0"
-  *         help        CDATA   "\0"
-  *     >  */
-case 308:
-YY_RULE_SETUP
-{
-  A_Slider_id = "none";
-  A_Slider_visible = "true";
-  A_Slider_x = "\0";
-  A_Slider_y = "\0";
-  A_Slider_lefttop = "lefttop";
-  A_Slider_rightbottom = "lefttop";
-  A_Slider_up = NULL;
-  A_Slider_down = "none";
-  A_Slider_over = "none";
-  A_Slider_points = NULL;
-  A_Slider_thickness = "10";
-  A_Slider_value = "none";
-  A_Slider_tooltiptext = "\0";
-  A_Slider_help = "\0";
-  ENTER(AL_Slider);
-}
-       YY_BREAK
-
-case 309:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_id);
-       YY_BREAK
-case 310:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_id);
-       YY_BREAK
-case 311:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_visible);
-       YY_BREAK
-case 312:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_visible);
-       YY_BREAK
-case 313:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_x);
-       YY_BREAK
-case 314:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_x);
-       YY_BREAK
-case 315:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_y);
-       YY_BREAK
-case 316:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_y);
-       YY_BREAK
-case 317:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_lefttop);
-       YY_BREAK
-case 318:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_lefttop);
-       YY_BREAK
-case 319:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_rightbottom);
-       YY_BREAK
-case 320:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_rightbottom);
-       YY_BREAK
-case 321:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_up);
-       YY_BREAK
-case 322:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_up);
-       YY_BREAK
-case 323:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_down);
-       YY_BREAK
-case 324:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_down);
-       YY_BREAK
-case 325:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_over);
-       YY_BREAK
-case 326:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_over);
-       YY_BREAK
-case 327:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_points);
-       YY_BREAK
-case 328:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_points);
-       YY_BREAK
-case 329:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_thickness);
-       YY_BREAK
-case 330:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_thickness);
-       YY_BREAK
-case 331:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_value);
-       YY_BREAK
-case 332:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_value);
-       YY_BREAK
-case 333:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_tooltiptext);
-       YY_BREAK
-case 334:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_tooltiptext);
-       YY_BREAK
-case 335:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Slider_help);
-       YY_BREAK
-case 336:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Slider_help);
-       YY_BREAK
-case 337:
-YY_RULE_SETUP
-{
-  if (!A_Slider_up) FAIL("Required attribute `up' not set for `Slider' element.");
-  if (!A_Slider_points) FAIL("Required attribute `points' not set for `Slider' element.");
-  LEAVE; STag_Slider(pContext); pcdata = NULL; ENTER(E_Slider);
- }
-       YY_BREAK
-case 338:
-YY_RULE_SETUP
-{
-  if (!A_Slider_up) FAIL("Required attribute `up' not set for `Slider' element.");
-  if (!A_Slider_points) FAIL("Required attribute `points' not set for `Slider' element.");
-  LEAVE; STag_Slider(pContext); pcdata = NULL; ETag_Slider(pContext);
-  switch (YY_START) {
-   case S_Playlist: SET(E_Playlist); break;
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Slider: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 339:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Slider element.", yytext[0]);
-       YY_BREAK
-case 340:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Slider' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Slider):
-FAIL("EOF in attribute list of `Slider' element.");
-       YY_BREAK
-
-
-case 341:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Slider(pContext);
-  switch (YY_START) {
-   case S_Playlist: SET(E_Playlist); break;
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Slider: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 342:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Slider>' expected.",yytext);
-       YY_BREAK
-case 343:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Slider>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Slider):
-FAIL("Premature EOF: `</Slider>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         sequence    CDATA   #REQUIRED
-  *         nbimages    CDATA   #REQUIRED
-  *         minangle    CDATA   "\0"
-  *         maxangle    CDATA   "360"
-  *         value       CDATA   "none"
-  *         tooltiptext CDATA   "\0"
-  *         help        CDATA   "\0"
-  *     >  */
-case 344:
-YY_RULE_SETUP
-{
-  A_RadialSlider_id = "none";
-  A_RadialSlider_visible = "true";
-  A_RadialSlider_x = "\0";
-  A_RadialSlider_y = "\0";
-  A_RadialSlider_lefttop = "lefttop";
-  A_RadialSlider_rightbottom = "lefttop";
-  A_RadialSlider_sequence = NULL;
-  A_RadialSlider_nbimages = NULL;
-  A_RadialSlider_minangle = "\0";
-  A_RadialSlider_maxangle = "360";
-  A_RadialSlider_value = "none";
-  A_RadialSlider_tooltiptext = "\0";
-  A_RadialSlider_help = "\0";
-  ENTER(AL_RadialSlider);
-}
-       YY_BREAK
-
-case 345:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_id);
-       YY_BREAK
-case 346:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_id);
-       YY_BREAK
-case 347:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_visible);
-       YY_BREAK
-case 348:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_visible);
-       YY_BREAK
-case 349:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_x);
-       YY_BREAK
-case 350:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_x);
-       YY_BREAK
-case 351:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_y);
-       YY_BREAK
-case 352:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_y);
-       YY_BREAK
-case 353:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_lefttop);
-       YY_BREAK
-case 354:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_lefttop);
-       YY_BREAK
-case 355:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_rightbottom);
-       YY_BREAK
-case 356:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_rightbottom);
-       YY_BREAK
-case 357:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_sequence);
-       YY_BREAK
-case 358:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_sequence);
-       YY_BREAK
-case 359:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_nbimages);
-       YY_BREAK
-case 360:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_nbimages);
-       YY_BREAK
-case 361:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_minangle);
-       YY_BREAK
-case 362:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_minangle);
-       YY_BREAK
-case 363:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_maxangle);
-       YY_BREAK
-case 364:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_maxangle);
-       YY_BREAK
-case 365:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_value);
-       YY_BREAK
-case 366:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_value);
-       YY_BREAK
-case 367:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_tooltiptext);
-       YY_BREAK
-case 368:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_tooltiptext);
-       YY_BREAK
-case 369:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_RadialSlider_help);
-       YY_BREAK
-case 370:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_RadialSlider_help);
-       YY_BREAK
-case 371:
-YY_RULE_SETUP
-{
-  if (!A_RadialSlider_sequence) FAIL("Required attribute `sequence' not set for `RadialSlider' element.");
-  if (!A_RadialSlider_nbimages) FAIL("Required attribute `nbimages' not set for `RadialSlider' element.");
-  LEAVE; STag_RadialSlider(pContext); pcdata = NULL; ENTER(E_RadialSlider);
- }
-       YY_BREAK
-case 372:
-YY_RULE_SETUP
-{
-  if (!A_RadialSlider_sequence) FAIL("Required attribute `sequence' not set for `RadialSlider' element.");
-  if (!A_RadialSlider_nbimages) FAIL("Required attribute `nbimages' not set for `RadialSlider' element.");
-  LEAVE; STag_RadialSlider(pContext); pcdata = NULL; ETag_RadialSlider(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_RadialSlider: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 373:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of RadialSlider element.", yytext[0]);
-       YY_BREAK
-case 374:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `RadialSlider' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_RadialSlider):
-FAIL("EOF in attribute list of `RadialSlider' element.");
-       YY_BREAK
-
-
-case 375:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_RadialSlider(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_RadialSlider: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 376:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</RadialSlider>' expected.",yytext);
-       YY_BREAK
-case 377:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</RadialSlider>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_RadialSlider):
-FAIL("Premature EOF: `</RadialSlider>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         text        CDATA   ""
-  *         font        CDATA   #REQUIRED
-  *         align       CDATA   "left"
-  *         width       CDATA   "\0"
-  *         display     CDATA   "none"
-  *         scroll      CDATA   "true"
-  *         scrollspace CDATA   "20"
-  *         help        CDATA   "\0"
-  *     >  */
-case 378:
-YY_RULE_SETUP
-{
-  A_Text_id = "none";
-  A_Text_visible = "true";
-  A_Text_x = "\0";
-  A_Text_y = "\0";
-  A_Text_text = NULL;
-  A_Text_font = NULL;
-  A_Text_align = "left";
-  A_Text_width = "\0";
-  A_Text_display = "none";
-  A_Text_scroll = "true";
-  A_Text_scrollspace = "20";
-  A_Text_help = "\0";
-  ENTER(AL_Text);
-}
-       YY_BREAK
-
-case 379:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_id);
-       YY_BREAK
-case 380:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_id);
-       YY_BREAK
-case 381:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_visible);
-       YY_BREAK
-case 382:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_visible);
-       YY_BREAK
-case 383:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_x);
-       YY_BREAK
-case 384:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_x);
-       YY_BREAK
-case 385:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_y);
-       YY_BREAK
-case 386:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_y);
-       YY_BREAK
-case 387:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_text);
-       YY_BREAK
-case 388:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_text);
-       YY_BREAK
-case 389:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_font);
-       YY_BREAK
-case 390:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_font);
-       YY_BREAK
-case 391:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_align);
-       YY_BREAK
-case 392:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_align);
-       YY_BREAK
-case 393:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_width);
-       YY_BREAK
-case 394:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_width);
-       YY_BREAK
-case 395:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_display);
-       YY_BREAK
-case 396:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_display);
-       YY_BREAK
-case 397:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_scroll);
-       YY_BREAK
-case 398:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_scroll);
-       YY_BREAK
-case 399:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_scrollspace);
-       YY_BREAK
-case 400:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_scrollspace);
-       YY_BREAK
-case 401:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Text_help);
-       YY_BREAK
-case 402:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Text_help);
-       YY_BREAK
-case 403:
-YY_RULE_SETUP
-{
-  if (!A_Text_font) FAIL("Required attribute `font' not set for `Text' element.");
-  LEAVE; STag_Text(pContext); pcdata = NULL; ENTER(E_Text);
- }
-       YY_BREAK
-case 404:
-YY_RULE_SETUP
-{
-  if (!A_Text_font) FAIL("Required attribute `font' not set for `Text' element.");
-  LEAVE; STag_Text(pContext); pcdata = NULL; ETag_Text(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Text: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 405:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Text element.", yytext[0]);
-       YY_BREAK
-case 406:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Text' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Text):
-FAIL("EOF in attribute list of `Text' element.");
-       YY_BREAK
-
-
-case 407:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Text(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Text: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 408:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Text>' expected.",yytext);
-       YY_BREAK
-case 409:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Text>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Text):
-FAIL("Premature EOF: `</Text>' expected.");
-       YY_BREAK
-
-/*         id          CDATA   #REQUIRED
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         width       CDATA   "\0"
-  *         height      CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         font        CDATA   #REQUIRED
-  *         var         CDATA   "playlist"
-  *         fgcolor     CDATA   "#000000"
-  *         playcolor   CDATA   "#FF0000"
-  *         bgcolor1    CDATA   "#FFFFFF"
-  *         bgcolor2    CDATA   "#FFFFFF"
-  *         selcolor    CDATA   "#0000FF"
-  *         help        CDATA   "\0"
-  *     >  */
-case 410:
-YY_RULE_SETUP
-{
-  A_Playlist_id = NULL;
-  A_Playlist_visible = "true";
-  A_Playlist_x = "\0";
-  A_Playlist_y = "\0";
-  A_Playlist_width = "\0";
-  A_Playlist_height = "\0";
-  A_Playlist_lefttop = "lefttop";
-  A_Playlist_rightbottom = "lefttop";
-  A_Playlist_font = NULL;
-  A_Playlist_var = "playlist";
-  A_Playlist_fgcolor = "#000000";
-  A_Playlist_playcolor = "#FF0000";
-  A_Playlist_bgcolor1 = "#FFFFFF";
-  A_Playlist_bgcolor2 = "#FFFFFF";
-  A_Playlist_selcolor = "#0000FF";
-  A_Playlist_help = "\0";
-  ENTER(AL_Playlist);
-}
-       YY_BREAK
-
-case 411:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_id);
-       YY_BREAK
-case 412:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_id);
-       YY_BREAK
-case 413:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_visible);
-       YY_BREAK
-case 414:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_visible);
-       YY_BREAK
-case 415:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_x);
-       YY_BREAK
-case 416:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_x);
-       YY_BREAK
-case 417:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_y);
-       YY_BREAK
-case 418:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_y);
-       YY_BREAK
-case 419:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_width);
-       YY_BREAK
-case 420:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_width);
-       YY_BREAK
-case 421:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_height);
-       YY_BREAK
-case 422:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_height);
-       YY_BREAK
-case 423:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_lefttop);
-       YY_BREAK
-case 424:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_lefttop);
-       YY_BREAK
-case 425:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_rightbottom);
-       YY_BREAK
-case 426:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_rightbottom);
-       YY_BREAK
-case 427:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_font);
-       YY_BREAK
-case 428:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_font);
-       YY_BREAK
-case 429:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_var);
-       YY_BREAK
-case 430:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_var);
-       YY_BREAK
-case 431:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_fgcolor);
-       YY_BREAK
-case 432:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_fgcolor);
-       YY_BREAK
-case 433:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_playcolor);
-       YY_BREAK
-case 434:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_playcolor);
-       YY_BREAK
-case 435:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_bgcolor1);
-       YY_BREAK
-case 436:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_bgcolor1);
-       YY_BREAK
-case 437:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_bgcolor2);
-       YY_BREAK
-case 438:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_bgcolor2);
-       YY_BREAK
-case 439:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_selcolor);
-       YY_BREAK
-case 440:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_selcolor);
-       YY_BREAK
-case 441:
-YY_RULE_SETUP
-ENTER(VALUE1); BUFFERSET(A_Playlist_help);
-       YY_BREAK
-case 442:
-YY_RULE_SETUP
-ENTER(VALUE2); BUFFERSET(A_Playlist_help);
-       YY_BREAK
-case 443:
-YY_RULE_SETUP
-{
-  if (!A_Playlist_id) FAIL("Required attribute `id' not set for `Playlist' element.");
-  if (!A_Playlist_font) FAIL("Required attribute `font' not set for `Playlist' element.");
-  LEAVE; STag_Playlist(pContext); pcdata = NULL; ENTER(S_Playlist);
- }
-       YY_BREAK
-case 444:
-YY_RULE_SETUP
-FAIL("`Playlist' element cannot be empty.");
-       YY_BREAK
-case 445:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' in attribute list of Playlist element.", yytext[0]);
-       YY_BREAK
-case 446:
-YY_RULE_SETUP
-FAIL("Bad attribute `%s' in `Playlist' element start tag.",yytext);
-       YY_BREAK
-case YY_STATE_EOF(AL_Playlist):
-FAIL("EOF in attribute list of `Playlist' element.");
-       YY_BREAK
-
-
-case 447:
-YY_RULE_SETUP
-{
-  LEAVE;
-  ETag_Playlist(pContext);
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Playlist: SET(EPILOG); break;
-  }
- }
-       YY_BREAK
-case 448:
-YY_RULE_SETUP
-FAIL("Unexpected end-tag `%s': `</Playlist>' expected.",yytext);
-       YY_BREAK
-case 449:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c': `</Playlist>' expected.",yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(E_Playlist):
-FAIL("Premature EOF: `</Playlist>' expected.");
-       YY_BREAK
-
-/* EPILOG: after the root element. */
-
-case 450:
-YY_RULE_SETUP
-FAIL("Unexpected character `%c' after document.", yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(EPILOG):
-SUCCEED;
-       YY_BREAK
-
-/* CHARACTER DATA. */
-
-/* Non-defined standard entities... */
-case 451:
-YY_RULE_SETUP
-BUFFERPUTC('&');
-       YY_BREAK
-case 452:
-YY_RULE_SETUP
-BUFFERPUTC('<');
-       YY_BREAK
-case 453:
-YY_RULE_SETUP
-BUFFERPUTC('>');
-       YY_BREAK
-case 454:
-YY_RULE_SETUP
-BUFFERPUTC('\'');
-       YY_BREAK
-case 455:
-YY_RULE_SETUP
-BUFFERPUTC('"');
-       YY_BREAK
-/* Character entities. */
-case 456:
-YY_RULE_SETUP
-BUFFERPUTC((unsigned char)atoi(yytext+2));
-       YY_BREAK
-case 457:
-YY_RULE_SETUP
-BUFFERPUTC((unsigned char)strtol(yytext+3,NULL,16));
-       YY_BREAK
-
-
-case 458:
-case 459:
-case 460:
-case 461:
-YY_RULE_SETUP
-BUFFERPUTC('\n');
-       YY_BREAK
-
-
-case 462:
-YY_RULE_SETUP
-ENTER(CDATA);
-       YY_BREAK
-case 463:
-YY_RULE_SETUP
-FAIL("Unexpected `]]>' in character data.");
-       YY_BREAK
-
-
-case 464:
-YY_RULE_SETUP
-BUFFERDONE; LEAVE;
-       YY_BREAK
-case YY_STATE_EOF(VALUE1):
-FAIL("EOF in literal (\"'\" expected).");
-       YY_BREAK
-
-
-case 465:
-YY_RULE_SETUP
-BUFFERDONE; LEAVE;
-       YY_BREAK
-case YY_STATE_EOF(VALUE2):
-FAIL("EOF in literal (`\"' expected).");
-       YY_BREAK
-
-
-case 466:
-YY_RULE_SETUP
-BUFFERPUTC(yytext[0]);
-       YY_BREAK
-case 467:
-YY_RULE_SETUP
-FAIL("Spurious `%c' in character data.",yytext[0]);
-       YY_BREAK
-
-
-case 468:
-YY_RULE_SETUP
-LEAVE;
-       YY_BREAK
-case 469:
-YY_RULE_SETUP
-BUFFERPUTC(yytext[0]); BUFFERPUTC(yytext[1]);
-       YY_BREAK
-case 470:
-YY_RULE_SETUP
-BUFFERPUTC(yytext[0]);
-       YY_BREAK
-case YY_STATE_EOF(CDATA):
-FAIL("EOF in CDATA section.");
-       YY_BREAK
-
-/* Impossible rules to avoid warnings from flex(1). */
-
-case 471:
-YY_RULE_SETUP
-FAIL("The Impossible Happened: INITIAL or IMPOSSIBLE state entered?");
-       YY_BREAK
-
-case 472:
-YY_RULE_SETUP
-YY_FATAL_ERROR( "flex scanner jammed" );
-       YY_BREAK
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(ROOT_Theme):
-case YY_STATE_EOF(S_Theme):
-case YY_STATE_EOF(S_Theme_2):
-case YY_STATE_EOF(ROOT_Bitmap):
-case YY_STATE_EOF(ROOT_Event):
-case YY_STATE_EOF(ROOT_Font):
-case YY_STATE_EOF(ROOT_ThemeInfo):
-case YY_STATE_EOF(ROOT_Window):
-case YY_STATE_EOF(S_Window):
-case YY_STATE_EOF(S_Window_1):
-case YY_STATE_EOF(ROOT_Layout):
-case YY_STATE_EOF(S_Layout):
-case YY_STATE_EOF(ROOT_Group):
-case YY_STATE_EOF(S_Group):
-case YY_STATE_EOF(S_Group_1):
-case YY_STATE_EOF(ROOT_Anchor):
-case YY_STATE_EOF(ROOT_Image):
-case YY_STATE_EOF(ROOT_Rectangle):
-case YY_STATE_EOF(ROOT_Button):
-case YY_STATE_EOF(ROOT_CheckBox):
-case YY_STATE_EOF(ROOT_Slider):
-case YY_STATE_EOF(ROOT_RadialSlider):
-case YY_STATE_EOF(ROOT_Text):
-case YY_STATE_EOF(ROOT_Playlist):
-case YY_STATE_EOF(S_Playlist):
-case YY_STATE_EOF(IMPOSSIBLE):
-       yyterminate();
-
-       case YY_END_OF_BUFFER:
-               {
-               /* Amount of text matched not including the EOB char. */
-               int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-               /* Undo the effects of YY_DO_BEFORE_ACTION. */
-               *yy_cp = yy_hold_char;
-               YY_RESTORE_YY_MORE_OFFSET
-
-               if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-                       {
-                       /* We're scanning a new file or input source.  It's
-                        * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
-                        * consistency between yy_current_buffer and our
-                        * globals.  Here is the right place to do so, because
-                        * this is the first action (other than possibly a
-                        * back-up) that will match for the new input source.
-                        */
-                       yy_n_chars = yy_current_buffer->yy_n_chars;
-                       yy_current_buffer->yy_input_file = yyin;
-                       yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-                       }
-
-               /* Note that here we test for yy_c_buf_p "<=" to the position
-                * of the first EOB in the buffer, since yy_c_buf_p will
-                * already have been incremented past the NUL character
-                * (since all states make transitions on EOB to the
-                * end-of-buffer state).  Contrast this with the test
-                * in input().
-                */
-               if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       { /* This was really a NUL. */
-                       yy_state_type yy_next_state;
-
-                       yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-                       yy_current_state = yy_get_previous_state();
-
-                       /* Okay, we're now positioned to make the NUL
-                        * transition.  We couldn't have
-                        * yy_get_previous_state() go ahead and do it
-                        * for us because it doesn't know how to deal
-                        * with the possibility of jamming (and we don't
-                        * want to build jamming into it because then it
-                        * will run more slowly).
-                        */
-
-                       yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-                       yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-                       if ( yy_next_state )
-                               {
-                               /* Consume the NUL. */
-                               yy_cp = ++yy_c_buf_p;
-                               yy_current_state = yy_next_state;
-                               goto yy_match;
-                               }
-
-                       else
-                               {
-                               yy_cp = yy_last_accepting_cpos;
-                               yy_current_state = yy_last_accepting_state;
-                               goto yy_find_action;
-                               }
-                       }
-
-               else switch ( yy_get_next_buffer() )
-                       {
-                       case EOB_ACT_END_OF_FILE:
-                               {
-                               yy_did_buffer_switch_on_eof = 0;
-
-                               if ( yywrap() )
-                                       {
-                                       /* Note: because we've taken care in
-                                        * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
-                                        * yy_c_buf_p so that if some total
-                                        * hoser (like flex itself) wants to
-                                        * call the scanner after we return the
-                                        * YY_NULL, it'll still work - another
-                                        * YY_NULL will get returned.
-                                        */
-                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-                                       yy_act = YY_STATE_EOF(YY_START);
-                                       goto do_action;
-                                       }
-
-                               else
-                                       {
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-                                       }
-                               break;
-                               }
-
-                       case EOB_ACT_CONTINUE_SCAN:
-                               yy_c_buf_p =
-                                       yytext_ptr + yy_amount_of_matched_text;
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_match;
-
-                       case EOB_ACT_LAST_MATCH:
-                               yy_c_buf_p =
-                               &yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-                               yy_current_state = yy_get_previous_state();
-
-                               yy_cp = yy_c_buf_p;
-                               yy_bp = yytext_ptr + YY_MORE_ADJ;
-                               goto yy_find_action;
-                       }
-               break;
-               }
-
-       default:
-               YY_FATAL_ERROR(
-                       "fatal flex scanner internal error--no action found" );
-       } /* end of action switch */
-               } /* end of scanning one token */
-       } /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *     EOB_ACT_LAST_MATCH -
- *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *     EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-       {
-       register char *dest = yy_current_buffer->yy_ch_buf;
-       register char *source = yytext_ptr;
-       register int number_to_move, i;
-       int ret_val;
-
-       if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-               YY_FATAL_ERROR(
-               "fatal flex scanner internal error--end of buffer missed" );
-
-       if ( yy_current_buffer->yy_fill_buffer == 0 )
-               { /* Don't try to fill the buffer, so this is an EOF. */
-               if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-                       {
-                       /* We matched a single character, the EOB, so
-                        * treat this as a final EOF.
-                        */
-                       return EOB_ACT_END_OF_FILE;
-                       }
-
-               else
-                       {
-                       /* We matched some text prior to the EOB, first
-                        * process it.
-                        */
-                       return EOB_ACT_LAST_MATCH;
-                       }
-               }
-
-       /* Try to read more data. */
-
-       /* First move last chars to start of buffer. */
-       number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-       for ( i = 0; i < number_to_move; ++i )
-               *(dest++) = *(source++);
-
-       if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-               /* don't do the read, it's not guaranteed to return an EOF,
-                * just force an EOF
-                */
-               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
-       else
-               {
-               int num_to_read =
-                       yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-               while ( num_to_read <= 0 )
-                       { /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-                       YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-                       /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = yy_current_buffer;
-
-                       int yy_c_buf_p_offset =
-                               (int) (yy_c_buf_p - b->yy_ch_buf);
-
-                       if ( b->yy_is_our_buffer )
-                               {
-                               int new_size = b->yy_buf_size * 2;
-
-                               if ( new_size <= 0 )
-                                       b->yy_buf_size += b->yy_buf_size / 8;
-                               else
-                                       b->yy_buf_size *= 2;
-
-                               b->yy_ch_buf = (char *)
-                                       /* Include room in for 2 EOB chars. */
-                                       yy_flex_realloc( (void *) b->yy_ch_buf,
-                                                        b->yy_buf_size + 2 );
-                               }
-                       else
-                               /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
-
-                       if ( ! b->yy_ch_buf )
-                               YY_FATAL_ERROR(
-                               "fatal error - scanner input buffer overflow" );
-
-                       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-                       num_to_read = yy_current_buffer->yy_buf_size -
-                                               number_to_move - 1;
-#endif
-                       }
-
-               if ( num_to_read > YY_READ_BUF_SIZE )
-                       num_to_read = YY_READ_BUF_SIZE;
-
-               /* Read in more data. */
-               YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-                       yy_n_chars, num_to_read );
-
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       if ( yy_n_chars == 0 )
-               {
-               if ( number_to_move == YY_MORE_ADJ )
-                       {
-                       ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin );
-                       }
-
-               else
-                       {
-                       ret_val = EOB_ACT_LAST_MATCH;
-                       yy_current_buffer->yy_buffer_status =
-                               YY_BUFFER_EOF_PENDING;
-                       }
-               }
-
-       else
-               ret_val = EOB_ACT_CONTINUE_SCAN;
-
-       yy_n_chars += number_to_move;
-       yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-       yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-       yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-       return ret_val;
-       }
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-       {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
-
-       yy_current_state = yy_start;
-
-       for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-               {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-               if ( yy_accept[yy_current_state] )
-                       {
-                       yy_last_accepting_state = yy_current_state;
-                       yy_last_accepting_cpos = yy_cp;
-                       }
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 2803 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-               }
-
-       return yy_current_state;
-       }
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *     next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-       {
-       register int yy_is_jam;
-       register char *yy_cp = yy_c_buf_p;
-
-       register YY_CHAR yy_c = 1;
-       if ( yy_accept[yy_current_state] )
-               {
-               yy_last_accepting_state = yy_current_state;
-               yy_last_accepting_cpos = yy_cp;
-               }
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-               {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 2803 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
-               }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 2802);
-
-       return yy_is_jam ? 0 : yy_current_state;
-       }
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-       {
-       register char *yy_cp = yy_c_buf_p;
-
-       /* undo effects of setting up yytext */
-       *yy_cp = yy_hold_char;
-
-       if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-               { /* need to shift things up to make room */
-               /* +2 for EOB chars. */
-               register int number_to_move = yy_n_chars + 2;
-               register char *dest = &yy_current_buffer->yy_ch_buf[
-                                       yy_current_buffer->yy_buf_size + 2];
-               register char *source =
-                               &yy_current_buffer->yy_ch_buf[number_to_move];
-
-               while ( source > yy_current_buffer->yy_ch_buf )
-                       *--dest = *--source;
-
-               yy_cp += (int) (dest - source);
-               yy_bp += (int) (dest - source);
-               yy_current_buffer->yy_n_chars =
-                       yy_n_chars = yy_current_buffer->yy_buf_size;
-
-               if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-                       YY_FATAL_ERROR( "flex scanner push-back overflow" );
-               }
-
-       *--yy_cp = (char) c;
-
-
-       yytext_ptr = yy_bp;
-       yy_hold_char = *yy_cp;
-       yy_c_buf_p = yy_cp;
-       }
-#endif /* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-       {
-       int c;
-
-       *yy_c_buf_p = yy_hold_char;
-
-       if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-               {
-               /* yy_c_buf_p now points to the character we want to return.
-                * If this occurs *before* the EOB characters, then it's a
-                * valid NUL; if not, then we've hit the end of the buffer.
-                */
-               if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-                       /* This was really a NUL. */
-                       *yy_c_buf_p = '\0';
-
-               else
-                       { /* need more input */
-                       int offset = yy_c_buf_p - yytext_ptr;
-                       ++yy_c_buf_p;
-
-                       switch ( yy_get_next_buffer() )
-                               {
-                               case EOB_ACT_LAST_MATCH:
-                                       /* This happens because yy_g_n_b()
-                                        * sees that we've accumulated a
-                                        * token and flags that we need to
-                                        * try matching the token before
-                                        * proceeding.  But for input(),
-                                        * there's no matching to consider.
-                                        * So convert the EOB_ACT_LAST_MATCH
-                                        * to EOB_ACT_END_OF_FILE.
-                                        */
-
-                                       /* Reset buffer status. */
-                                       yyrestart( yyin );
-
-                                       /* fall through */
-
-                               case EOB_ACT_END_OF_FILE:
-                                       {
-                                       if ( yywrap() )
-                                               return EOF;
-
-                                       if ( ! yy_did_buffer_switch_on_eof )
-                                               YY_NEW_FILE;
-#ifdef __cplusplus
-                                       return yyinput();
-#else
-                                       return input();
-#endif
-                                       }
-
-                               case EOB_ACT_CONTINUE_SCAN:
-                                       yy_c_buf_p = yytext_ptr + offset;
-                                       break;
-                               }
-                       }
-               }
-
-       c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
-       *yy_c_buf_p = '\0';     /* preserve yytext */
-       yy_hold_char = *++yy_c_buf_p;
-
-
-       return c;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-       {
-       if ( ! yy_current_buffer )
-               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-       yy_init_buffer( yy_current_buffer, input_file );
-       yy_load_buffer_state();
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-       {
-       if ( yy_current_buffer == new_buffer )
-               return;
-
-       if ( yy_current_buffer )
-               {
-               /* Flush out information for old buffer. */
-               *yy_c_buf_p = yy_hold_char;
-               yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-               yy_current_buffer->yy_n_chars = yy_n_chars;
-               }
-
-       yy_current_buffer = new_buffer;
-       yy_load_buffer_state();
-
-       /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
-        * to go ahead and always set it.
-        */
-       yy_did_buffer_switch_on_eof = 1;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-       {
-       yy_n_chars = yy_current_buffer->yy_n_chars;
-       yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-       yyin = yy_current_buffer->yy_input_file;
-       yy_hold_char = *yy_c_buf_p;
-       }
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_buf_size = size;
-
-       /* yy_ch_buf has to be 2 characters longer than the size given because
-        * we need to put in 2 end-of-buffer characters.
-        */
-       b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-       if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-       b->yy_is_our_buffer = 1;
-
-       yy_init_buffer( b, file );
-
-       return b;
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-       {
-       if ( ! b )
-               return;
-
-       if ( b == yy_current_buffer )
-               yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-       if ( b->yy_is_our_buffer )
-               yy_flex_free( (void *) b->yy_ch_buf );
-
-       yy_flex_free( (void *) b );
-       }
-
-
-#ifndef _WIN32
-#include <unistd.h>
-#else
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-       {
-       yy_flush_buffer( b );
-
-       b->yy_input_file = file;
-       b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-       b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-       b->yy_is_interactive = 0;
-#else
-       b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-       }
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-       {
-       if ( ! b )
-               return;
-
-       b->yy_n_chars = 0;
-
-       /* We always need two end-of-buffer characters.  The first causes
-        * a transition to the end-of-buffer state.  The second causes
-        * a jam in that state.
-        */
-       b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-       b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-       b->yy_buf_pos = &b->yy_ch_buf[0];
-
-       b->yy_at_bol = 1;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       if ( b == yy_current_buffer )
-               yy_load_buffer_state();
-       }
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-       {
-       YY_BUFFER_STATE b;
-
-       if ( size < 2 ||
-            base[size-2] != YY_END_OF_BUFFER_CHAR ||
-            base[size-1] != YY_END_OF_BUFFER_CHAR )
-               /* They forgot to leave room for the EOB's. */
-               return 0;
-
-       b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-       if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
-       b->yy_buf_pos = b->yy_ch_buf = base;
-       b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
-       b->yy_n_chars = b->yy_buf_size;
-       b->yy_is_interactive = 0;
-       b->yy_at_bol = 1;
-       b->yy_fill_buffer = 0;
-       b->yy_buffer_status = YY_BUFFER_NEW;
-
-       yy_switch_to_buffer( b );
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
-       {
-       int len;
-       for ( len = 0; yy_str[len]; ++len )
-               ;
-
-       return yy_scan_bytes( yy_str, len );
-       }
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-       {
-       YY_BUFFER_STATE b;
-       char *buf;
-       yy_size_t n;
-       int i;
-
-       /* Get memory for full buffer, including space for trailing EOB's. */
-       n = len + 2;
-       buf = (char *) yy_flex_alloc( n );
-       if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-       for ( i = 0; i < len; ++i )
-               buf[i] = bytes[i];
-
-       buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-       b = yy_scan_buffer( buf, n );
-       if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-       /* It's okay to grow etc. this buffer, and we should throw it
-        * away when we're done.
-        */
-       b->yy_is_our_buffer = 1;
-
-       return b;
-       }
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-       {
-       if ( yy_start_stack_ptr >= yy_start_stack_depth )
-               {
-               yy_size_t new_size;
-
-               yy_start_stack_depth += YY_START_STACK_INCR;
-               new_size = yy_start_stack_depth * sizeof( int );
-
-               if ( ! yy_start_stack )
-                       yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-               else
-                       yy_start_stack = (int *) yy_flex_realloc(
-                                       (void *) yy_start_stack, new_size );
-
-               if ( ! yy_start_stack )
-                       YY_FATAL_ERROR(
-                       "out of memory expanding start-condition stack" );
-               }
-
-       yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-       BEGIN(new_state);
-       }
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-       {
-       if ( --yy_start_stack_ptr < 0 )
-               YY_FATAL_ERROR( "start-condition stack underflow" );
-
-       BEGIN(yy_start_stack[yy_start_stack_ptr]);
-       }
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-       {
-       return yy_start_stack[yy_start_stack_ptr - 1];
-       }
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-       {
-       (void) fprintf( stderr, "%s\n", msg );
-       exit( YY_EXIT_FAILURE );
-       }
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-       do \
-               { \
-               /* Undo effects of setting up yytext. */ \
-               yytext[yyleng] = yy_hold_char; \
-               yy_c_buf_p = yytext + n; \
-               yy_hold_char = *yy_c_buf_p; \
-               *yy_c_buf_p = '\0'; \
-               yyleng = n; \
-               } \
-       while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-       {
-       register int i;
-       for ( i = 0; i < n; ++i )
-               s1[i] = s2[i];
-       }
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-       {
-       register int n;
-       for ( n = 0; s[n]; ++n )
-               ;
-
-       return n;
-       }
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-       {
-       return (void *) malloc( size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-       {
-       /* The cast to (char *) in the following accommodates both
-        * implementations that use char* generic pointers, and those
-        * that use void* generic pointers.  It works with the latter
-        * because both ANSI C and C++ allow castless assignment from
-        * any pointer type to void*, and deal with argument conversions
-        * as though doing an assignment.
-        */
-       return (void *) realloc( (char *) ptr, size );
-       }
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-       {
-       free( ptr );
-       }
-
-#if YY_MAIN
-int main()
-       {
-       yylex();
-       return 0;
-       }
-#endif
-
-
-/* Element context stack lookup. */
-int element_context(int i)
-{
-  return (0<i && i<yy_start_stack_depth
-         ? yy_start_stack[yy_start_stack_ptr - i]
-         : 0);
-}
-
-#ifdef FLEX_DEBUG
-void print_yy_stack(char* fmt, ...)
-{
-  int i = 0; va_list ap; va_start(ap, fmt);
-  vfprintf(stderr, fmt, ap);
-  for (i=1; i<yy_start_stack_ptr; i++)
-    fprintf(stderr, "%s/", statenames[yy_start_stack[i]]);
-  fprintf(stderr,"%s\n", statenames[YY_START]);
-  va_end(ap);
-}
-
-static void debug_enter(int state, char* statename) {
-  yy_push_state(state);
-  if (yy_flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
-}
-
-static void debug_leave(void) {
-  if (yy_flex_debug) print_yy_stack("--LEAVE : ");
-  yy_pop_state();
-}
-
-static void debug_set(int state, char* statename) {
-  BEGIN(state);
-  if (yy_flex_debug) print_yy_stack("--SET(%s) : ",statename);
-}
-#endif
-
-
-static int fail(const char* fmt, ...)
-{
-  va_list ap; va_start(ap, fmt);
-#ifdef FLEXML_yylineno
-  fprintf(stderr, "Invalid XML (XML input line %d, state %d): ", yylineno, YY_START);
-#else
-  fprintf(stderr, "Invalid XML (state %d): ",YY_START);
-#endif
-  vfprintf(stderr, fmt, ap);
-  fprintf(stderr, "\n");
-  va_end(ap);
-  return 1;
-}
diff --git a/modules/gui/skins2/parser/gen.sh b/modules/gui/skins2/parser/gen.sh
deleted file mode 100755 (executable)
index 09ecbb8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-flexml -SH -a skin.act skin.dtd
-
-sed -e 's/\([SE]Tag_.*\)(void)/\1(void *pContext)/' \
-    -e 's/int main().*//' skin.c > skin.c.new && mv -f skin.c.new skin.c
-sed -e 's/\([SE]Tag_.*\)(void)/\1(void*)/' \
-    -e 's/extern int yylex(void)/extern int yylex(void*)/' \
-    -e 's/\/\* XML processor entry point. \*\//#define YY_DECL int yylex(void *pContext)/' skin.h > skin.h.new && mv -f skin.h.new skin.h
-
-
-flex -oflex.c -B -L skin.l
-sed -e 's/\([SE]Tag_[^()]*\)()/\1(pContext)/g' flex.c > flex.c.new && mv -f flex.c.new flex.c 
diff --git a/modules/gui/skins2/parser/skin.act b/modules/gui/skins2/parser/skin.act
deleted file mode 100644 (file)
index 85056bc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-<!-- vim: set filetype=xml : -->
-
-<!DOCTYPE actions SYSTEM "flexml-act.dtd">
-<actions>
-    <top>
-        <![CDATA[
-            #include <vlc/vlc.h>
-            #include <vlc/intf.h>
-            #include "parser/wrappers.h"
-        ]]>
-    </top>
-    <start tag="Bitmap">
-        <![CDATA[
-            AddBitmap( pContext, {id}, {file}, {alphacolor} );
-        ]]>
-    </start>
-    <start tag="Event">
-        <![CDATA[
-            AddEvent( pContext, {id}, {event}, {key} );
-        ]]>
-    </start>
-    <start tag="Font">
-        <![CDATA[
-            AddFont( pContext, {id}, {font}, {size}, {color},
-                     {italic}, {underline} );
-        ]]>
-    </start>
-    <start tag="ThemeInfo">
-        <![CDATA[
-            AddThemeInfo( pContext, {name}, {author}, {email}, {webpage} );
-        ]]>
-    </start>
-    <start tag="Window">
-        <![CDATA[
-            StartWindow( pContext, {id}, {x}, {y}, {visible}, {dragdrop},
-                         {playondrop} );
-        ]]>
-    </start>
-    <end tag="Window">
-        <![CDATA[
-            EndWindow( pContext );
-        ]]>
-    </end>
-    <start tag="Layout">
-        <![CDATA[
-            StartLayout( pContext, {id}, {width}, {height}, {minwidth},
-                         {maxwidth}, {minheight}, {maxheight} );
-        ]]>
-    </start>
-    <end tag="Layout">
-        <![CDATA[
-            EndLayout( pContext );
-        ]]>
-    </end>
-
-    <start tag="Group">
-        <![CDATA[
-            StartGroup( pContext, {x}, {y} );
-        ]]>
-    </start>
-    <end tag="Group">
-        <![CDATA[
-            EndGroup( pContext );
-        ]]>
-    </end>
-    <start tag="Anchor">
-        <![CDATA[
-            AddAnchor( pContext, {x}, {y}, {range}, {priority} );
-        ]]>
-    </start>
-    <start tag="Image">
-        <![CDATA[
-            AddImage( pContext, {id}, {visible}, {x}, {y}, {lefttop},
-                      {rightbottom}, {image}, {onclick}, {help} );
-        ]]>
-    </start>
-    <start tag="Rectangle">
-        <![CDATA[
-            AddRectangle( pContext, {id}, {visible}, {x}, {y}, {w}, {h},
-                          {color}, {onclick}, {help} );
-        ]]>
-    </start>
-    <start tag="Button">
-        <![CDATA[
-            AddButton( pContext, {id}, {x}, {y}, {lefttop}, {rightbottom},
-                      {up}, {down}, {over}, {action}, {tooltiptext}, {help} );
-        ]]>
-    </start>
-    <start tag="CheckBox">
-        <![CDATA[
-            AddCheckBox( pContext, {id},
-                         {x}, {y}, {lefttop}, {rightbottom},
-                         {up1}, {down1}, {over1}, {up2}, {down2}, {over2},
-                         {state}, {action1}, {action2}, {tooltiptext1},
-                         {tooltiptext2}, {help} );
-        ]]>
-    </start>
-    <start tag="Slider">
-        <![CDATA[
-            AddSlider( pContext, {id}, {visible}, {x}, {y},
-                       {lefttop}, {rightbottom}, {up}, {down},
-                       {over}, {points}, {thickness}, {value}, {tooltiptext},
-                       {help} );
-        ]]>
-    </start>
-    <start tag="RadialSlider">
-        <![CDATA[
-            AddRadialSlider( pContext, {id}, {visible}, {x}, {y},
-                             {lefttop}, {rightbottom}, {sequence}, {nbimages},
-                             {minangle}, {maxangle}, {value}, {tooltiptext},
-                             {help} );
-        ]]>
-    </start>
-    <start tag="Text">
-        <![CDATA[
-            AddText( pContext, {id}, {visible}, {x}, {y}, {text}, {font},
-                     {align}, {width}, {display}, {scroll}, {scrollspace},
-                     {help} );
-        ]]>
-    </start>
-    <start tag="Playlist">
-        <![CDATA[
-            AddPlaylist( pContext, {id}, {visible}, {x}, {y}, {width},
-                        {height}, {lefttop}, {rightbottom}, {font}, {var},
-                        {fgcolor}, {playcolor}, {bgcolor1}, {bgcolor2},
-                        {selcolor}, {help} );
-        ]]>
-    </start>
-    <end tag="Playlist">
-        <![CDATA[
-            AddPlaylistEnd( pContext );
-        ]]>
-    </end>
-    <start tag="Theme">
-        <![CDATA[
-            StartTheme( pContext, {version}, {magnet}, {alpha}, {movealpha}, {fadetime} );
-        ]]>
-    </start>
-    <end tag="Theme">
-        <![CDATA[
-            EndTheme( pContext );
-        ]]>
-    </end>
-</actions>
diff --git a/modules/gui/skins2/parser/skin.c b/modules/gui/skins2/parser/skin.c
deleted file mode 100644 (file)
index ce6743a..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/* XML application for skin.dtd.
- * Includes actions from skin.act.
- * Generated 2004/01/03 15:23:36.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-#include "skin.h"
-
-
-#line 5 "skin.act"
-
-        
-            #include <vlc/vlc.h>
-            #include <vlc/intf.h>
-            #include "parser/wrappers.h"
-        
-    
-void STag_Bitmap(void *pContext)
-{
-#line 12 "skin.act"
-
-        
-            AddBitmap( pContext, A_Bitmap_id, A_Bitmap_file, A_Bitmap_alphacolor );
-        
-    
-} /* STag_Bitmap */
-
-void STag_Event(void *pContext)
-{
-#line 17 "skin.act"
-
-        
-            AddEvent( pContext, A_Event_id, A_Event_event, A_Event_key );
-        
-    
-} /* STag_Event */
-
-void STag_Font(void *pContext)
-{
-#line 22 "skin.act"
-
-        
-            AddFont( pContext, A_Font_id, A_Font_font, A_Font_size, A_Font_color,
-                     A_Font_italic, A_Font_underline );
-        
-    
-} /* STag_Font */
-
-void STag_ThemeInfo(void *pContext)
-{
-#line 28 "skin.act"
-
-        
-            AddThemeInfo( pContext, A_ThemeInfo_name, A_ThemeInfo_author, A_ThemeInfo_email, A_ThemeInfo_webpage );
-        
-    
-} /* STag_ThemeInfo */
-
-void STag_Window(void *pContext)
-{
-#line 33 "skin.act"
-
-        
-            StartWindow( pContext, A_Window_id, A_Window_x, A_Window_y, A_Window_visible, A_Window_dragdrop,
-                         A_Window_playondrop );
-        
-    
-} /* STag_Window */
-
-void ETag_Window(void *pContext)
-{
-#line 39 "skin.act"
-
-        
-            EndWindow( pContext );
-        
-    
-} /* ETag_Window */
-
-void STag_Layout(void *pContext)
-{
-#line 44 "skin.act"
-
-        
-            StartLayout( pContext, A_Layout_id, A_Layout_width, A_Layout_height, A_Layout_minwidth,
-                         A_Layout_maxwidth, A_Layout_minheight, A_Layout_maxheight );
-        
-    
-} /* STag_Layout */
-
-void ETag_Layout(void *pContext)
-{
-#line 50 "skin.act"
-
-        
-            EndLayout( pContext );
-        
-    
-} /* ETag_Layout */
-
-void STag_Group(void *pContext)
-{
-#line 56 "skin.act"
-
-        
-            StartGroup( pContext, A_Group_x, A_Group_y );
-        
-    
-} /* STag_Group */
-
-void ETag_Group(void *pContext)
-{
-#line 61 "skin.act"
-
-        
-            EndGroup( pContext );
-        
-    
-} /* ETag_Group */
-
-void STag_Anchor(void *pContext)
-{
-#line 66 "skin.act"
-
-        
-            AddAnchor( pContext, A_Anchor_x, A_Anchor_y, A_Anchor_range, A_Anchor_priority );
-        
-    
-} /* STag_Anchor */
-
-void STag_Image(void *pContext)
-{
-#line 71 "skin.act"
-
-        
-            AddImage( pContext, A_Image_id, A_Image_visible, A_Image_x, A_Image_y, A_Image_lefttop,
-                      A_Image_rightbottom, A_Image_image, A_Image_onclick, A_Image_help );
-        
-    
-} /* STag_Image */
-
-void STag_Rectangle(void *pContext)
-{
-#line 77 "skin.act"
-
-        
-            AddRectangle( pContext, A_Rectangle_id, A_Rectangle_visible, A_Rectangle_x, A_Rectangle_y, A_Rectangle_w, A_Rectangle_h,
-                          A_Rectangle_color, A_Rectangle_onclick, A_Rectangle_help );
-        
-    
-} /* STag_Rectangle */
-
-void STag_Button(void *pContext)
-{
-#line 83 "skin.act"
-
-        
-            AddButton( pContext, A_Button_id, A_Button_x, A_Button_y, A_Button_lefttop, A_Button_rightbottom,
-                      A_Button_up, A_Button_down, A_Button_over, A_Button_action, A_Button_tooltiptext, A_Button_help );
-        
-    
-} /* STag_Button */
-
-void STag_CheckBox(void *pContext)
-{
-#line 89 "skin.act"
-
-        
-            AddCheckBox( pContext, A_CheckBox_id,
-                         A_CheckBox_x, A_CheckBox_y, A_CheckBox_lefttop, A_CheckBox_rightbottom,
-                         A_CheckBox_up1, A_CheckBox_down1, A_CheckBox_over1, A_CheckBox_up2, A_CheckBox_down2, A_CheckBox_over2,
-                         A_CheckBox_state, A_CheckBox_action1, A_CheckBox_action2, A_CheckBox_tooltiptext1,
-                         A_CheckBox_tooltiptext2, A_CheckBox_help );
-        
-    
-} /* STag_CheckBox */
-
-void STag_Slider(void *pContext)
-{
-#line 98 "skin.act"
-
-        
-            AddSlider( pContext, A_Slider_id, A_Slider_visible, A_Slider_x, A_Slider_y,
-                       A_Slider_lefttop, A_Slider_rightbottom, A_Slider_up, A_Slider_down,
-                       A_Slider_over, A_Slider_points, A_Slider_thickness, A_Slider_value, A_Slider_tooltiptext,
-                       A_Slider_help );
-        
-    
-} /* STag_Slider */
-
-void STag_RadialSlider(void *pContext)
-{
-#line 106 "skin.act"
-
-        
-            AddRadialSlider( pContext, A_RadialSlider_id, A_RadialSlider_visible, A_RadialSlider_x, A_RadialSlider_y,
-                             A_RadialSlider_lefttop, A_RadialSlider_rightbottom, A_RadialSlider_sequence, A_RadialSlider_nbimages,
-                             A_RadialSlider_minangle, A_RadialSlider_maxangle, A_RadialSlider_value, A_RadialSlider_tooltiptext,
-                             A_RadialSlider_help );
-        
-    
-} /* STag_RadialSlider */
-
-void STag_Text(void *pContext)
-{
-#line 114 "skin.act"
-
-        
-            AddText( pContext, A_Text_id, A_Text_visible, A_Text_x, A_Text_y, A_Text_text, A_Text_font,
-                     A_Text_align, A_Text_width, A_Text_display, A_Text_scroll, A_Text_scrollspace,
-                     A_Text_help );
-        
-    
-} /* STag_Text */
-
-void STag_Playlist(void *pContext)
-{
-#line 121 "skin.act"
-
-        
-            AddPlaylist( pContext, A_Playlist_id, A_Playlist_visible, A_Playlist_x, A_Playlist_y, A_Playlist_width,
-                        A_Playlist_height, A_Playlist_lefttop, A_Playlist_rightbottom, A_Playlist_font, A_Playlist_var,
-                        A_Playlist_fgcolor, A_Playlist_playcolor, A_Playlist_bgcolor1, A_Playlist_bgcolor2,
-                        A_Playlist_selcolor, A_Playlist_help );
-        
-    
-} /* STag_Playlist */
-
-void ETag_Playlist(void *pContext)
-{
-#line 129 "skin.act"
-
-        
-            AddPlaylistEnd( pContext );
-        
-    
-} /* ETag_Playlist */
-
-void STag_Theme(void *pContext)
-{
-#line 134 "skin.act"
-
-        
-            StartTheme( pContext, A_Theme_version, A_Theme_magnet, A_Theme_alpha, A_Theme_movealpha, A_Theme_fadetime );
-        
-    
-} /* STag_Theme */
-
-void ETag_Theme(void *pContext)
-{
-#line 139 "skin.act"
-
-        
-            EndTheme( pContext );
-        
-    
-} /* ETag_Theme */
-
-/* Dummy main: filter XML from stdin. */
-
-
-/* XML application entry points. */
-void ETag_Bitmap(void *pContext) {}
-void ETag_Event(void *pContext) {}
-void ETag_Font(void *pContext) {}
-void ETag_ThemeInfo(void *pContext) {}
-void ETag_Anchor(void *pContext) {}
-void ETag_Image(void *pContext) {}
-void ETag_Rectangle(void *pContext) {}
-void ETag_Button(void *pContext) {}
-void ETag_CheckBox(void *pContext) {}
-void ETag_Slider(void *pContext) {}
-void ETag_RadialSlider(void *pContext) {}
-void ETag_Text(void *pContext) {}
diff --git a/modules/gui/skins2/parser/skin.dtd b/modules/gui/skins2/parser/skin.dtd
deleted file mode 100644 (file)
index ca9197a..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-<!--
--->
-
-
-<!ELEMENT Theme (ThemeInfo,(Bitmap|Font|Window|Event)*)>
-    <!ATTLIST Theme
-        version     CDATA   "1.0"
-        magnet      CDATA   "15"
-        alpha       CDATA   "255"
-        movealpha   CDATA   "255"
-        fadetime    CDATA   "400"
-    >
-
-<!-- main elements -->
-<!ELEMENT Bitmap EMPTY>
-    <!ATTLIST Bitmap
-        id          CDATA   #REQUIRED
-        file        CDATA   #REQUIRED
-        alphacolor  CDATA   #REQUIRED
-    >
-<!ELEMENT Event EMPTY>
-    <!ATTLIST Event
-        id          CDATA   #REQUIRED
-        event       CDATA   #REQUIRED
-        key         CDATA   "none"
-    >
-<!ELEMENT Font EMPTY>
-    <!ATTLIST Font
-        id          CDATA   #REQUIRED
-        font        CDATA   "arial"
-        size        CDATA   "12"
-        color       CDATA   "#000000"
-        italic      CDATA   "false"
-        underline   CDATA   "false"
-    >
-<!ELEMENT ThemeInfo EMPTY>
-    <!ATTLIST ThemeInfo
-        name        CDATA   #IMPLIED
-        author      CDATA   #IMPLIED
-        email       CDATA   #IMPLIED
-        webpage     CDATA   #IMPLIED
-    >
-<!ELEMENT Window (Layout)+>
-    <!ATTLIST Window
-        id          CDATA   #REQUIRED
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        dragdrop    CDATA   "true"
-        playondrop  CDATA   "true"
-    >
-
-<!ELEMENT Layout (Group)>
-    <!ATTLIST Layout
-        id          CDATA   "none"
-        width       CDATA   #REQUIRED
-        height      CDATA   #REQUIRED
-        minwidth    CDATA   "-1"
-        maxwidth    CDATA   "-1"
-        minheight   CDATA   "-1"
-        maxheight   CDATA   "-1"
-    >
-<!ELEMENT Group (Group|Image|Button|Playlist|Slider|RadialSlider|Text|CheckBox|
-                 Rectangle|Anchor)+>
-    <!ATTLIST Group
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-    >
-
-<!-- Anchors -->
-<!ELEMENT Anchor EMPTY>
-    <!ATTLIST Anchor
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        priority    CDATA   #REQUIRED
-        range       CDATA   "10"
-    >
-
-<!-- Controls -->
-<!ELEMENT Image EMPTY>
-    <!ATTLIST Image
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        lefttop     CDATA   "lefttop"
-        rightbottom CDATA   "lefttop"
-        image       CDATA   #REQUIRED
-        onclick     CDATA   "none"
-        help        CDATA   "\0"
-    >
-<!ELEMENT Rectangle EMPTY>
-    <!ATTLIST Rectangle
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        w           CDATA   "50"
-        h           CDATA   "50"
-        color       CDATA   "#C0C0C0"
-        onclick     CDATA   "none"
-        help        CDATA   "\0"
-    >
-<!ELEMENT Button EMPTY>
-    <!ATTLIST Button
-        id          CDATA   "none"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        lefttop     CDATA   "lefttop"
-        rightbottom CDATA   "lefttop"
-        up          CDATA   #REQUIRED
-        down        CDATA   "none"
-        over        CDATA   "none"
-        action      CDATA   "none"
-        tooltiptext CDATA   "\0"
-        help        CDATA   "\0"
-    >
-<!ELEMENT CheckBox EMPTY>
-    <!ATTLIST CheckBox
-        id           CDATA   "none"
-        x            CDATA   "\0"
-        y            CDATA   "\0"
-        lefttop      CDATA   "lefttop"
-        rightbottom  CDATA   "lefttop"
-        up1          CDATA   #REQUIRED
-        down1        CDATA   "none"
-        over1        CDATA   "none"
-        up2          CDATA   #REQUIRED
-        down2        CDATA   "none"
-        over2        CDATA   "none"
-        state        CDATA   #REQUIRED
-        action1      CDATA   "none"
-        action2      CDATA   "none"
-        tooltiptext1 CDATA   "\0"
-        tooltiptext2 CDATA   "\0"
-        help         CDATA   "\0"
-    >
-<!ELEMENT Slider EMPTY>
-    <!ATTLIST Slider
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        lefttop     CDATA   "lefttop"
-        rightbottom CDATA   "lefttop"
-        up          CDATA   #REQUIRED
-        down        CDATA   "none"
-        over        CDATA   "none"
-        points      CDATA   #REQUIRED
-        thickness   CDATA   "10"
-        value       CDATA   "none"
-        tooltiptext CDATA   "\0"
-        help        CDATA   "\0"
-    >
-<!ELEMENT RadialSlider EMPTY>
-    <!ATTLIST RadialSlider
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        lefttop     CDATA   "lefttop"
-        rightbottom CDATA   "lefttop"
-        sequence    CDATA   #REQUIRED
-        nbimages    CDATA   #REQUIRED
-        minangle    CDATA   "\0"
-        maxangle    CDATA   "360"
-        value       CDATA   "none"
-        tooltiptext CDATA   "\0"
-        help        CDATA   "\0"
-    >
-<!ELEMENT Text EMPTY>
-    <!ATTLIST Text
-        id          CDATA   "none"
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        text        CDATA   ""
-        font        CDATA   #REQUIRED
-        align       CDATA   "left"
-        width       CDATA   "\0"
-        display     CDATA   "none"
-        scroll      CDATA   "true"
-        scrollspace CDATA   "20"
-        help        CDATA   "\0"
-    >
-<!ELEMENT Playlist Slider>
-    <!ATTLIST Playlist
-        id          CDATA   #REQUIRED
-        visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        width       CDATA   "\0"
-        height      CDATA   "\0"
-        lefttop     CDATA   "lefttop"
-        rightbottom CDATA   "lefttop"
-        font        CDATA   #REQUIRED
-        var         CDATA   "playlist"
-        fgcolor     CDATA   "#000000"
-        playcolor   CDATA   "#FF0000"
-        bgcolor1    CDATA   "#FFFFFF"
-        bgcolor2    CDATA   "#FFFFFF"
-        selcolor    CDATA   "#0000FF"
-        help        CDATA   "\0"
-    >
diff --git a/modules/gui/skins2/parser/skin.h b/modules/gui/skins2/parser/skin.h
deleted file mode 100644 (file)
index 998f7ee..0000000
+++ /dev/null
@@ -1,496 +0,0 @@
-/* XML processor/application API for skin.dtd.
- * Generated 2004/01/03 15:23:36.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-#ifndef _FLEXML_skin_H
-
-/* XML application entry points. */
-extern void STag_Theme(void*);
-extern void ETag_Theme(void*);
-extern void STag_Bitmap(void*);
-extern void ETag_Bitmap(void*);
-extern void STag_Event(void*);
-extern void ETag_Event(void*);
-extern void STag_Font(void*);
-extern void ETag_Font(void*);
-extern void STag_ThemeInfo(void*);
-extern void ETag_ThemeInfo(void*);
-extern void STag_Window(void*);
-extern void ETag_Window(void*);
-extern void STag_Layout(void*);
-extern void ETag_Layout(void*);
-extern void STag_Group(void*);
-extern void ETag_Group(void*);
-extern void STag_Anchor(void*);
-extern void ETag_Anchor(void*);
-extern void STag_Image(void*);
-extern void ETag_Image(void*);
-extern void STag_Rectangle(void*);
-extern void ETag_Rectangle(void*);
-extern void STag_Button(void*);
-extern void ETag_Button(void*);
-extern void STag_CheckBox(void*);
-extern void ETag_CheckBox(void*);
-extern void STag_Slider(void*);
-extern void ETag_Slider(void*);
-extern void STag_RadialSlider(void*);
-extern void ETag_RadialSlider(void*);
-extern void STag_Text(void*);
-extern void ETag_Text(void*);
-extern void STag_Playlist(void*);
-extern void ETag_Playlist(void*);
-
-/* XML application data. */
-typedef char* AT_Text_id;
-#define AU_Text_id NULL
-typedef char* AT_ThemeInfo_author;
-#define AU_ThemeInfo_author NULL
-typedef char* AT_Playlist_fgcolor;
-#define AU_Playlist_fgcolor NULL
-typedef char* AT_CheckBox_down2;
-#define AU_CheckBox_down2 NULL
-typedef char* AT_Image_lefttop;
-#define AU_Image_lefttop NULL
-typedef char* AT_Slider_visible;
-#define AU_Slider_visible NULL
-typedef char* AT_CheckBox_down1;
-#define AU_CheckBox_down1 NULL
-typedef char* AT_Image_rightbottom;
-#define AU_Image_rightbottom NULL
-typedef char* AT_Event_id;
-#define AU_Event_id NULL
-typedef char* AT_Rectangle_h;
-#define AU_Rectangle_h NULL
-typedef char* AT_Slider_lefttop;
-#define AU_Slider_lefttop NULL
-typedef char* AT_Slider_over;
-#define AU_Slider_over NULL
-typedef char* AT_Window_id;
-#define AU_Window_id NULL
-typedef char* AT_Theme_alpha;
-#define AU_Theme_alpha NULL
-typedef char* AT_Text_text;
-#define AU_Text_text NULL
-typedef char* AT_Playlist_rightbottom;
-#define AU_Playlist_rightbottom NULL
-typedef char* AT_Event_event;
-#define AU_Event_event NULL
-typedef char* AT_Slider_value;
-#define AU_Slider_value NULL
-typedef char* AT_Font_underline;
-#define AU_Font_underline NULL
-typedef char* AT_Image_onclick;
-#define AU_Image_onclick NULL
-typedef char* AT_Anchor_priority;
-#define AU_Anchor_priority NULL
-typedef char* AT_Font_italic;
-#define AU_Font_italic NULL
-typedef char* AT_Button_y;
-#define AU_Button_y NULL
-typedef char* AT_RadialSlider_sequence;
-#define AU_RadialSlider_sequence NULL
-typedef char* AT_Playlist_var;
-#define AU_Playlist_var NULL
-typedef char* AT_CheckBox_y;
-#define AU_CheckBox_y NULL
-typedef char* AT_Window_playondrop;
-#define AU_Window_playondrop NULL
-typedef char* AT_RadialSlider_minangle;
-#define AU_RadialSlider_minangle NULL
-typedef char* AT_RadialSlider_visible;
-#define AU_RadialSlider_visible NULL
-typedef char* AT_Playlist_playcolor;
-#define AU_Playlist_playcolor NULL
-typedef char* AT_Anchor_range;
-#define AU_Anchor_range NULL
-typedef char* AT_Theme_fadetime;
-#define AU_Theme_fadetime NULL
-typedef char* AT_CheckBox_x;
-#define AU_CheckBox_x NULL
-typedef char* AT_Bitmap_file;
-#define AU_Bitmap_file NULL
-typedef char* AT_Slider_down;
-#define AU_Slider_down NULL
-typedef char* AT_CheckBox_over2;
-#define AU_CheckBox_over2 NULL
-typedef char* AT_Slider_y;
-#define AU_Slider_y NULL
-typedef char* AT_Slider_id;
-#define AU_Slider_id NULL
-typedef char* AT_Window_dragdrop;
-#define AU_Window_dragdrop NULL
-typedef char* AT_Text_x;
-#define AU_Text_x NULL
-typedef char* AT_Image_y;
-#define AU_Image_y NULL
-typedef char* AT_Font_color;
-#define AU_Font_color NULL
-typedef char* AT_Slider_rightbottom;
-#define AU_Slider_rightbottom NULL
-typedef char* AT_Group_y;
-#define AU_Group_y NULL
-typedef char* AT_Text_font;
-#define AU_Text_font NULL
-typedef char* AT_Button_over;
-#define AU_Button_over NULL
-typedef char* AT_Theme_version;
-#define AU_Theme_version NULL
-typedef char* AT_Image_id;
-#define AU_Image_id NULL
-typedef char* AT_CheckBox_lefttop;
-#define AU_CheckBox_lefttop NULL
-typedef char* AT_Text_scrollspace;
-#define AU_Text_scrollspace NULL
-typedef char* AT_Button_action;
-#define AU_Button_action NULL
-typedef char* AT_Button_lefttop;
-#define AU_Button_lefttop NULL
-typedef char* AT_Button_id;
-#define AU_Button_id NULL
-typedef char* AT_Rectangle_visible;
-#define AU_Rectangle_visible NULL
-typedef char* AT_Rectangle_color;
-#define AU_Rectangle_color NULL
-typedef char* AT_Playlist_width;
-#define AU_Playlist_width NULL
-typedef char* AT_RadialSlider_maxangle;
-#define AU_RadialSlider_maxangle NULL
-typedef char* AT_Window_y;
-#define AU_Window_y NULL
-typedef char* AT_Slider_help;
-#define AU_Slider_help NULL
-typedef char* AT_Text_width;
-#define AU_Text_width NULL
-typedef char* AT_Slider_points;
-#define AU_Slider_points NULL
-typedef char* AT_CheckBox_up1;
-#define AU_CheckBox_up1 NULL
-typedef char* AT_Theme_magnet;
-#define AU_Theme_magnet NULL
-typedef char* AT_Theme_movealpha;
-#define AU_Theme_movealpha NULL
-typedef char* AT_RadialSlider_lefttop;
-#define AU_RadialSlider_lefttop NULL
-typedef char* AT_Button_up;
-#define AU_Button_up NULL
-typedef char* AT_RadialSlider_y;
-#define AU_RadialSlider_y NULL
-typedef char* AT_CheckBox_action1;
-#define AU_CheckBox_action1 NULL
-typedef char* AT_Playlist_id;
-#define AU_Playlist_id NULL
-typedef char* AT_Text_align;
-#define AU_Text_align NULL
-typedef char* AT_CheckBox_tooltiptext1;
-#define AU_CheckBox_tooltiptext1 NULL
-typedef char* AT_Group_x;
-#define AU_Group_x NULL
-typedef char* AT_Text_display;
-#define AU_Text_display NULL
-typedef char* AT_Bitmap_id;
-#define AU_Bitmap_id NULL
-typedef char* AT_Playlist_y;
-#define AU_Playlist_y NULL
-typedef char* AT_Text_scroll;
-#define AU_Text_scroll NULL
-typedef char* AT_Playlist_lefttop;
-#define AU_Playlist_lefttop NULL
-typedef char* AT_Rectangle_x;
-#define AU_Rectangle_x NULL
-typedef char* AT_Layout_minheight;
-#define AU_Layout_minheight NULL
-typedef char* AT_Button_rightbottom;
-#define AU_Button_rightbottom NULL
-typedef char* AT_Slider_thickness;
-#define AU_Slider_thickness NULL
-typedef char* AT_RadialSlider_tooltiptext;
-#define AU_RadialSlider_tooltiptext NULL
-typedef char* AT_RadialSlider_value;
-#define AU_RadialSlider_value NULL
-typedef char* AT_Text_visible;
-#define AU_Text_visible NULL
-typedef char* AT_Slider_tooltiptext;
-#define AU_Slider_tooltiptext NULL
-typedef char* AT_Rectangle_onclick;
-#define AU_Rectangle_onclick NULL
-typedef char* AT_Layout_width;
-#define AU_Layout_width NULL
-typedef char* AT_Rectangle_help;
-#define AU_Rectangle_help NULL
-typedef char* AT_CheckBox_tooltiptext2;
-#define AU_CheckBox_tooltiptext2 NULL
-typedef char* AT_Layout_maxheight;
-#define AU_Layout_maxheight NULL
-typedef char* AT_RadialSlider_help;
-#define AU_RadialSlider_help NULL
-typedef char* AT_Playlist_font;
-#define AU_Playlist_font NULL
-typedef char* AT_Rectangle_id;
-#define AU_Rectangle_id NULL
-typedef char* AT_CheckBox_help;
-#define AU_CheckBox_help NULL
-typedef char* AT_Image_help;
-#define AU_Image_help NULL
-typedef char* AT_Playlist_bgcolor1;
-#define AU_Playlist_bgcolor1 NULL
-typedef char* AT_Bitmap_alphacolor;
-#define AU_Bitmap_alphacolor NULL
-typedef char* AT_Image_image;
-#define AU_Image_image NULL
-typedef char* AT_Font_id;
-#define AU_Font_id NULL
-typedef char* AT_Button_x;
-#define AU_Button_x NULL
-typedef char* AT_CheckBox_id;
-#define AU_CheckBox_id NULL
-typedef char* AT_Layout_id;
-#define AU_Layout_id NULL
-typedef char* AT_Event_key;
-#define AU_Event_key NULL
-typedef char* AT_CheckBox_over1;
-#define AU_CheckBox_over1 NULL
-typedef char* AT_Slider_up;
-#define AU_Slider_up NULL
-typedef char* AT_Layout_minwidth;
-#define AU_Layout_minwidth NULL
-typedef char* AT_CheckBox_rightbottom;
-#define AU_CheckBox_rightbottom NULL
-typedef char* AT_Anchor_x;
-#define AU_Anchor_x NULL
-typedef char* AT_Font_font;
-#define AU_Font_font NULL
-typedef char* AT_Layout_maxwidth;
-#define AU_Layout_maxwidth NULL
-typedef char* AT_Playlist_help;
-#define AU_Playlist_help NULL
-typedef char* AT_Playlist_visible;
-#define AU_Playlist_visible NULL
-typedef char* AT_Slider_x;
-#define AU_Slider_x NULL
-typedef char* AT_CheckBox_up2;
-#define AU_CheckBox_up2 NULL
-typedef char* AT_Text_help;
-#define AU_Text_help NULL
-typedef char* AT_CheckBox_action2;
-#define AU_CheckBox_action2 NULL
-typedef char* AT_CheckBox_state;
-#define AU_CheckBox_state NULL
-typedef char* AT_Font_size;
-#define AU_Font_size NULL
-typedef char* AT_ThemeInfo_webpage;
-#define AU_ThemeInfo_webpage NULL
-typedef char* AT_RadialSlider_x;
-#define AU_RadialSlider_x NULL
-typedef char* AT_Button_tooltiptext;
-#define AU_Button_tooltiptext NULL
-typedef char* AT_Image_visible;
-#define AU_Image_visible NULL
-typedef char* AT_Window_visible;
-#define AU_Window_visible NULL
-typedef char* AT_RadialSlider_id;
-#define AU_RadialSlider_id NULL
-typedef char* AT_Anchor_y;
-#define AU_Anchor_y NULL
-typedef char* AT_RadialSlider_nbimages;
-#define AU_RadialSlider_nbimages NULL
-typedef char* AT_Playlist_bgcolor2;
-#define AU_Playlist_bgcolor2 NULL
-typedef char* AT_Playlist_x;
-#define AU_Playlist_x NULL
-typedef char* AT_ThemeInfo_email;
-#define AU_ThemeInfo_email NULL
-typedef char* AT_Window_x;
-#define AU_Window_x NULL
-typedef char* AT_Button_down;
-#define AU_Button_down NULL
-typedef char* AT_Playlist_height;
-#define AU_Playlist_height NULL
-typedef char* AT_Layout_height;
-#define AU_Layout_height NULL
-typedef char* AT_ThemeInfo_name;
-#define AU_ThemeInfo_name NULL
-typedef char* AT_Button_help;
-#define AU_Button_help NULL
-typedef char* AT_Text_y;
-#define AU_Text_y NULL
-typedef char* AT_Rectangle_w;
-#define AU_Rectangle_w NULL
-typedef char* AT_Image_x;
-#define AU_Image_x NULL
-typedef char* AT_Rectangle_y;
-#define AU_Rectangle_y NULL
-typedef char* AT_Playlist_selcolor;
-#define AU_Playlist_selcolor NULL
-typedef char* AT_RadialSlider_rightbottom;
-#define AU_RadialSlider_rightbottom NULL
-
-/* FleXML-provided data. */
-extern char* pcdata;
-extern AT_Text_id A_Text_id;
-extern AT_ThemeInfo_author A_ThemeInfo_author;
-extern AT_Playlist_fgcolor A_Playlist_fgcolor;
-extern AT_CheckBox_down2 A_CheckBox_down2;
-extern AT_Image_lefttop A_Image_lefttop;
-extern AT_Slider_visible A_Slider_visible;
-extern AT_CheckBox_down1 A_CheckBox_down1;
-extern AT_Image_rightbottom A_Image_rightbottom;
-extern AT_Event_id A_Event_id;
-extern AT_Rectangle_h A_Rectangle_h;
-extern AT_Slider_lefttop A_Slider_lefttop;
-extern AT_Slider_over A_Slider_over;
-extern AT_Window_id A_Window_id;
-extern AT_Theme_alpha A_Theme_alpha;
-extern AT_Text_text A_Text_text;
-extern AT_Playlist_rightbottom A_Playlist_rightbottom;
-extern AT_Event_event A_Event_event;
-extern AT_Slider_value A_Slider_value;
-extern AT_Font_underline A_Font_underline;
-extern AT_Image_onclick A_Image_onclick;
-extern AT_Anchor_priority A_Anchor_priority;
-extern AT_Font_italic A_Font_italic;
-extern AT_Button_y A_Button_y;
-extern AT_RadialSlider_sequence A_RadialSlider_sequence;
-extern AT_Playlist_var A_Playlist_var;
-extern AT_CheckBox_y A_CheckBox_y;
-extern AT_Window_playondrop A_Window_playondrop;
-extern AT_RadialSlider_minangle A_RadialSlider_minangle;
-extern AT_RadialSlider_visible A_RadialSlider_visible;
-extern AT_Playlist_playcolor A_Playlist_playcolor;
-extern AT_Anchor_range A_Anchor_range;
-extern AT_Theme_fadetime A_Theme_fadetime;
-extern AT_CheckBox_x A_CheckBox_x;
-extern AT_Bitmap_file A_Bitmap_file;
-extern AT_Slider_down A_Slider_down;
-extern AT_CheckBox_over2 A_CheckBox_over2;
-extern AT_Slider_y A_Slider_y;
-extern AT_Slider_id A_Slider_id;
-extern AT_Window_dragdrop A_Window_dragdrop;
-extern AT_Text_x A_Text_x;
-extern AT_Image_y A_Image_y;
-extern AT_Font_color A_Font_color;
-extern AT_Slider_rightbottom A_Slider_rightbottom;
-extern AT_Group_y A_Group_y;
-extern AT_Text_font A_Text_font;
-extern AT_Button_over A_Button_over;
-extern AT_Theme_version A_Theme_version;
-extern AT_Image_id A_Image_id;
-extern AT_CheckBox_lefttop A_CheckBox_lefttop;
-extern AT_Text_scrollspace A_Text_scrollspace;
-extern AT_Button_action A_Button_action;
-extern AT_Button_lefttop A_Button_lefttop;
-extern AT_Button_id A_Button_id;
-extern AT_Rectangle_visible A_Rectangle_visible;
-extern AT_Rectangle_color A_Rectangle_color;
-extern AT_Playlist_width A_Playlist_width;
-extern AT_RadialSlider_maxangle A_RadialSlider_maxangle;
-extern AT_Window_y A_Window_y;
-extern AT_Slider_help A_Slider_help;
-extern AT_Text_width A_Text_width;
-extern AT_Slider_points A_Slider_points;
-extern AT_CheckBox_up1 A_CheckBox_up1;
-extern AT_Theme_magnet A_Theme_magnet;
-extern AT_Theme_movealpha A_Theme_movealpha;
-extern AT_RadialSlider_lefttop A_RadialSlider_lefttop;
-extern AT_Button_up A_Button_up;
-extern AT_RadialSlider_y A_RadialSlider_y;
-extern AT_CheckBox_action1 A_CheckBox_action1;
-extern AT_Playlist_id A_Playlist_id;
-extern AT_Text_align A_Text_align;
-extern AT_CheckBox_tooltiptext1 A_CheckBox_tooltiptext1;
-extern AT_Group_x A_Group_x;
-extern AT_Text_display A_Text_display;
-extern AT_Bitmap_id A_Bitmap_id;
-extern AT_Playlist_y A_Playlist_y;
-extern AT_Text_scroll A_Text_scroll;
-extern AT_Playlist_lefttop A_Playlist_lefttop;
-extern AT_Rectangle_x A_Rectangle_x;
-extern AT_Layout_minheight A_Layout_minheight;
-extern AT_Button_rightbottom A_Button_rightbottom;
-extern AT_Slider_thickness A_Slider_thickness;
-extern AT_RadialSlider_tooltiptext A_RadialSlider_tooltiptext;
-extern AT_RadialSlider_value A_RadialSlider_value;
-extern AT_Text_visible A_Text_visible;
-extern AT_Slider_tooltiptext A_Slider_tooltiptext;
-extern AT_Rectangle_onclick A_Rectangle_onclick;
-extern AT_Layout_width A_Layout_width;
-extern AT_Rectangle_help A_Rectangle_help;
-extern AT_CheckBox_tooltiptext2 A_CheckBox_tooltiptext2;
-extern AT_Layout_maxheight A_Layout_maxheight;
-extern AT_RadialSlider_help A_RadialSlider_help;
-extern AT_Playlist_font A_Playlist_font;
-extern AT_Rectangle_id A_Rectangle_id;
-extern AT_CheckBox_help A_CheckBox_help;
-extern AT_Image_help A_Image_help;
-extern AT_Playlist_bgcolor1 A_Playlist_bgcolor1;
-extern AT_Bitmap_alphacolor A_Bitmap_alphacolor;
-extern AT_Image_image A_Image_image;
-extern AT_Font_id A_Font_id;
-extern AT_Button_x A_Button_x;
-extern AT_CheckBox_id A_CheckBox_id;
-extern AT_Layout_id A_Layout_id;
-extern AT_Event_key A_Event_key;
-extern AT_CheckBox_over1 A_CheckBox_over1;
-extern AT_Slider_up A_Slider_up;
-extern AT_Layout_minwidth A_Layout_minwidth;
-extern AT_CheckBox_rightbottom A_CheckBox_rightbottom;
-extern AT_Anchor_x A_Anchor_x;
-extern AT_Font_font A_Font_font;
-extern AT_Layout_maxwidth A_Layout_maxwidth;
-extern AT_Playlist_help A_Playlist_help;
-extern AT_Playlist_visible A_Playlist_visible;
-extern AT_Slider_x A_Slider_x;
-extern AT_CheckBox_up2 A_CheckBox_up2;
-extern AT_Text_help A_Text_help;
-extern AT_CheckBox_action2 A_CheckBox_action2;
-extern AT_CheckBox_state A_CheckBox_state;
-extern AT_Font_size A_Font_size;
-extern AT_ThemeInfo_webpage A_ThemeInfo_webpage;
-extern AT_RadialSlider_x A_RadialSlider_x;
-extern AT_Button_tooltiptext A_Button_tooltiptext;
-extern AT_Image_visible A_Image_visible;
-extern AT_Window_visible A_Window_visible;
-extern AT_RadialSlider_id A_RadialSlider_id;
-extern AT_Anchor_y A_Anchor_y;
-extern AT_RadialSlider_nbimages A_RadialSlider_nbimages;
-extern AT_Playlist_bgcolor2 A_Playlist_bgcolor2;
-extern AT_Playlist_x A_Playlist_x;
-extern AT_ThemeInfo_email A_ThemeInfo_email;
-extern AT_Window_x A_Window_x;
-extern AT_Button_down A_Button_down;
-extern AT_Playlist_height A_Playlist_height;
-extern AT_Layout_height A_Layout_height;
-extern AT_ThemeInfo_name A_ThemeInfo_name;
-extern AT_Button_help A_Button_help;
-extern AT_Text_y A_Text_y;
-extern AT_Rectangle_w A_Rectangle_w;
-extern AT_Image_x A_Image_x;
-extern AT_Rectangle_y A_Rectangle_y;
-extern AT_Playlist_selcolor A_Playlist_selcolor;
-extern AT_RadialSlider_rightbottom A_RadialSlider_rightbottom;
-
-/* XML application utilities. */
-extern int element_context(int);
-
-#define YY_DECL int yylex(void *pContext)
-extern int yylex(void*);
-
-#endif
diff --git a/modules/gui/skins2/parser/skin.l b/modules/gui/skins2/parser/skin.l
deleted file mode 100644 (file)
index 9eb494d..0000000
+++ /dev/null
@@ -1,1919 +0,0 @@
-/* Validating XML processor for skin.dtd.
- * Generated 2004/01/03 15:23:36.
- *
- * This program was generated with the FleXML XML processor generator,
- * (Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp).
- * Copyright © 1999 Kristoffer Rose.  All rights reserved.
- *
- * You can redistribute and/or modify this program provided the following
- * two conditions hold:
- *
- * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
- *    FleXML; without even the implied warranty of MERCHANTABILITY or
- *    FITNESS FOR A PARTICULAR PURPOSE.
- *
- * 2. The program distribution conditions do not in any way affect the
- *    distribution conditions of the FleXML system used to generate this
- *    file or any version of FleXML derived from that system.
- *
- * Notice that these are explicit rights granted to you for files
- * generated by the FleXML system.  For your rights in connection with
- * the FleXML system itself please consult the GNU General Public License.
- */
-
-%{
-
-/* Version strings. */
-const char rcs_flexml_skeleton[] =
- "$" "Id: skel,v 1.16 1999/12/09 04:01:51 krisrose Exp $";
-const char rcs_flexml[] =
- "$" "Id: flexml.pl,v 1.24 1999/12/13 16:18:30 krisrose Exp $";
-
-/* ANSI headers. */
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <stdarg.h>
-#include <ctype.h>
-
-/* Generated definitions. */
-#define FLEXML_BUFFERSTACKSIZE 100000
-
-/* XML processor api. */
-#include "skin.h"
-
-/* FleXML-provided data. */
-char* pcdata;
-AT_Text_id A_Text_id;
-AT_ThemeInfo_author A_ThemeInfo_author;
-AT_Playlist_fgcolor A_Playlist_fgcolor;
-AT_CheckBox_down2 A_CheckBox_down2;
-AT_Image_lefttop A_Image_lefttop;
-AT_Slider_visible A_Slider_visible;
-AT_CheckBox_down1 A_CheckBox_down1;
-AT_Image_rightbottom A_Image_rightbottom;
-AT_Event_id A_Event_id;
-AT_Rectangle_h A_Rectangle_h;
-AT_Slider_lefttop A_Slider_lefttop;
-AT_Slider_over A_Slider_over;
-AT_Window_id A_Window_id;
-AT_Theme_alpha A_Theme_alpha;
-AT_Text_text A_Text_text;
-AT_Playlist_rightbottom A_Playlist_rightbottom;
-AT_Event_event A_Event_event;
-AT_Slider_value A_Slider_value;
-AT_Font_underline A_Font_underline;
-AT_Image_onclick A_Image_onclick;
-AT_Anchor_priority A_Anchor_priority;
-AT_Font_italic A_Font_italic;
-AT_Button_y A_Button_y;
-AT_RadialSlider_sequence A_RadialSlider_sequence;
-AT_Playlist_var A_Playlist_var;
-AT_CheckBox_y A_CheckBox_y;
-AT_Window_playondrop A_Window_playondrop;
-AT_RadialSlider_minangle A_RadialSlider_minangle;
-AT_RadialSlider_visible A_RadialSlider_visible;
-AT_Playlist_playcolor A_Playlist_playcolor;
-AT_Anchor_range A_Anchor_range;
-AT_Theme_fadetime A_Theme_fadetime;
-AT_CheckBox_x A_CheckBox_x;
-AT_Bitmap_file A_Bitmap_file;
-AT_Slider_down A_Slider_down;
-AT_CheckBox_over2 A_CheckBox_over2;
-AT_Slider_y A_Slider_y;
-AT_Slider_id A_Slider_id;
-AT_Window_dragdrop A_Window_dragdrop;
-AT_Text_x A_Text_x;
-AT_Image_y A_Image_y;
-AT_Font_color A_Font_color;
-AT_Slider_rightbottom A_Slider_rightbottom;
-AT_Group_y A_Group_y;
-AT_Text_font A_Text_font;
-AT_Button_over A_Button_over;
-AT_Theme_version A_Theme_version;
-AT_Image_id A_Image_id;
-AT_CheckBox_lefttop A_CheckBox_lefttop;
-AT_Text_scrollspace A_Text_scrollspace;
-AT_Button_action A_Button_action;
-AT_Button_lefttop A_Button_lefttop;
-AT_Button_id A_Button_id;
-AT_Rectangle_visible A_Rectangle_visible;
-AT_Rectangle_color A_Rectangle_color;
-AT_Playlist_width A_Playlist_width;
-AT_RadialSlider_maxangle A_RadialSlider_maxangle;
-AT_Window_y A_Window_y;
-AT_Slider_help A_Slider_help;
-AT_Text_width A_Text_width;
-AT_Slider_points A_Slider_points;
-AT_CheckBox_up1 A_CheckBox_up1;
-AT_Theme_magnet A_Theme_magnet;
-AT_Theme_movealpha A_Theme_movealpha;
-AT_RadialSlider_lefttop A_RadialSlider_lefttop;
-AT_Button_up A_Button_up;
-AT_RadialSlider_y A_RadialSlider_y;
-AT_CheckBox_action1 A_CheckBox_action1;
-AT_Playlist_id A_Playlist_id;
-AT_Text_align A_Text_align;
-AT_CheckBox_tooltiptext1 A_CheckBox_tooltiptext1;
-AT_Group_x A_Group_x;
-AT_Text_display A_Text_display;
-AT_Bitmap_id A_Bitmap_id;
-AT_Playlist_y A_Playlist_y;
-AT_Text_scroll A_Text_scroll;
-AT_Playlist_lefttop A_Playlist_lefttop;
-AT_Rectangle_x A_Rectangle_x;
-AT_Layout_minheight A_Layout_minheight;
-AT_Button_rightbottom A_Button_rightbottom;
-AT_Slider_thickness A_Slider_thickness;
-AT_RadialSlider_tooltiptext A_RadialSlider_tooltiptext;
-AT_RadialSlider_value A_RadialSlider_value;
-AT_Text_visible A_Text_visible;
-AT_Slider_tooltiptext A_Slider_tooltiptext;
-AT_Rectangle_onclick A_Rectangle_onclick;
-AT_Layout_width A_Layout_width;
-AT_Rectangle_help A_Rectangle_help;
-AT_CheckBox_tooltiptext2 A_CheckBox_tooltiptext2;
-AT_Layout_maxheight A_Layout_maxheight;
-AT_RadialSlider_help A_RadialSlider_help;
-AT_Playlist_font A_Playlist_font;
-AT_Rectangle_id A_Rectangle_id;
-AT_CheckBox_help A_CheckBox_help;
-AT_Image_help A_Image_help;
-AT_Playlist_bgcolor1 A_Playlist_bgcolor1;
-AT_Bitmap_alphacolor A_Bitmap_alphacolor;
-AT_Image_image A_Image_image;
-AT_Font_id A_Font_id;
-AT_Button_x A_Button_x;
-AT_CheckBox_id A_CheckBox_id;
-AT_Layout_id A_Layout_id;
-AT_Event_key A_Event_key;
-AT_CheckBox_over1 A_CheckBox_over1;
-AT_Slider_up A_Slider_up;
-AT_Layout_minwidth A_Layout_minwidth;
-AT_CheckBox_rightbottom A_CheckBox_rightbottom;
-AT_Anchor_x A_Anchor_x;
-AT_Font_font A_Font_font;
-AT_Layout_maxwidth A_Layout_maxwidth;
-AT_Playlist_help A_Playlist_help;
-AT_Playlist_visible A_Playlist_visible;
-AT_Slider_x A_Slider_x;
-AT_CheckBox_up2 A_CheckBox_up2;
-AT_Text_help A_Text_help;
-AT_CheckBox_action2 A_CheckBox_action2;
-AT_CheckBox_state A_CheckBox_state;
-AT_Font_size A_Font_size;
-AT_ThemeInfo_webpage A_ThemeInfo_webpage;
-AT_RadialSlider_x A_RadialSlider_x;
-AT_Button_tooltiptext A_Button_tooltiptext;
-AT_Image_visible A_Image_visible;
-AT_Window_visible A_Window_visible;
-AT_RadialSlider_id A_RadialSlider_id;
-AT_Anchor_y A_Anchor_y;
-AT_RadialSlider_nbimages A_RadialSlider_nbimages;
-AT_Playlist_bgcolor2 A_Playlist_bgcolor2;
-AT_Playlist_x A_Playlist_x;
-AT_ThemeInfo_email A_ThemeInfo_email;
-AT_Window_x A_Window_x;
-AT_Button_down A_Button_down;
-AT_Playlist_height A_Playlist_height;
-AT_Layout_height A_Layout_height;
-AT_ThemeInfo_name A_ThemeInfo_name;
-AT_Button_help A_Button_help;
-AT_Text_y A_Text_y;
-AT_Rectangle_w A_Rectangle_w;
-AT_Image_x A_Image_x;
-AT_Rectangle_y A_Rectangle_y;
-AT_Playlist_selcolor A_Playlist_selcolor;
-AT_RadialSlider_rightbottom A_RadialSlider_rightbottom;
-
-/* XML state. */
-#ifdef FLEX_DEBUG
-# define ENTER(state)  debug_enter(state,#state)
-# define LEAVE         debug_leave()
-# define SET(state)    debug_set(state,#state)
-  static void debug_enter(int, char*);
-  static void debug_leave(void);
-  static void debug_set(int, char*);
-#else
-# define ENTER(state)  (yy_push_state(state))
-# define LEAVE         (yy_pop_state())
-# define SET(state)    BEGIN(state)
-#endif
-
-/* Generic actions. */
-#define SKIP   /*skip*/
-#define SUCCEED        return 0
-
-#define FAIL   return fail
-static int fail(const char*, ...);
-
-/* Text buffer stack handling. */
-char bufferstack[FLEXML_BUFFERSTACKSIZE];
-char* limit = bufferstack + FLEXML_BUFFERSTACKSIZE;
-typedef struct BufferLast_s {
-  struct BufferLast_s *old; char* saved; char new[1];
-} BufferLast;
-BufferLast* last = (BufferLast*)0;
-char* next = bufferstack;
-
-#define BUFFERSET(P)  (P = next)
-#define BUFFERPUTC(C) (assert(next<limit), *(next++) = (C))
-#define BUFFERDONE    (BUFFERPUTC('\0'))
-
-#define BUFFERLITERAL(C,P) bufferliteral(C,&(P),yytext)
-static void bufferliteral(char c, char** pp, char* text)
-{
-  char *s = strchr(text,c), *e = strrchr(text,c);
-  assert(s <= e); BUFFERSET(*pp);
-  while (++s<e) {
-    if (isspace(*s)) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
-    else BUFFERPUTC(*s);
-  } 
-  BUFFERDONE;
-}
-
-#ifdef FLEXML_HasMixed
-static void pushbuffer(char* p)
-{
-  BufferLast* l = (BufferLast*)next;
-  assert(next < limit);
-  l->old = last;
-  l->saved = p;
-  next = l->new;
-  last = l;
-}
-
-static char* popbuffer(void)
-{
-  BufferLast* l = last;
-  assert(last != (BufferLast*)0);
-  last = l->old;
-  next = (char*)l;
-  return l->saved;
-}
-#endif
-
-/* General internal entities are `unput' back onto the input stream... */
-#define ENTITYTEXT(T) \
-  { char *s = (T), *e = s+strlen(s);\
-    while (--e >= s) { unput(*e); }}
-%}
-
-/* Flex standard options. */
-%option stack
-%option noyy_top_state
-%option noinput
-%option noreject
-%option noyymore
-%option noyywrap
-
-/* Flex user-requested options. */
-%option nounput
-
-/* XML character classes (currently restricted to ASCII). */
-
-/* "Common syntactic structures." */
-S              [ \t\n\r\f]+
-s              [ \t\n\r\f]*
-
-/* "Names and Tokens." */
-NameChar       [A-Za-z0-9.:_-]
-Name           [A-Za-z_:]{NameChar}*
-Names          {Name}({S}{Name})*
-Nmtoken                ({NameChar})+
-Nmtokens       {Nmtoken}({S}{Nmtoken})*
-
-/* Miscellaneous. */
-VersionNum     [a-zA-Z0-9_.:-]+
-Eq             {s}"="{s}
-Literal                \'[^'']*\'|\"[^""]*\"
-
-/* Parser states (flex `exclusive start conditions'):
- *
- * PROLOG      the XML prolog of the document before <?xml...>
- * DOCTYPE     the XML prolog of the document after <?xml...>
- * EPILOG      after the root element
- * INCOMMENT   inside an XML comment <!--....-->
- * INPI                inside an XML PI <?...?>
- * VALUE1      inside a '...'-delimited literal
- * VALUE2      inside a "..."-delimited literal
- * CDATA       inside a <![CDATA[...]]> section.
- * ROOT_<tag>  expect root element <tag>
- * AL_<tag>    inside the attribute list for <tag>
- * IN_<tag>    inside a <tag> with element contents (ready for end tag)
- * IMPOSSIBLE  dummy to permit disabling rules; must be last
- */
-%x PROLOG DOCTYPE EPILOG INCOMMENT INPI VALUE1 VALUE2 CDATA
-%x ROOT_Theme AL_Theme S_Theme S_Theme_1 S_Theme_2 S_Theme_3 E_Theme
-%x ROOT_Bitmap AL_Bitmap E_Bitmap
-%x ROOT_Event AL_Event E_Event
-%x ROOT_Font AL_Font E_Font
-%x ROOT_ThemeInfo AL_ThemeInfo E_ThemeInfo
-%x ROOT_Window AL_Window S_Window S_Window_1 S_Window_2 E_Window
-%x ROOT_Layout AL_Layout S_Layout E_Layout
-%x ROOT_Group AL_Group S_Group S_Group_1 S_Group_2 E_Group
-%x ROOT_Anchor AL_Anchor E_Anchor
-%x ROOT_Image AL_Image E_Image
-%x ROOT_Rectangle AL_Rectangle E_Rectangle
-%x ROOT_Button AL_Button E_Button
-%x ROOT_CheckBox AL_CheckBox E_CheckBox
-%x ROOT_Slider AL_Slider E_Slider
-%x ROOT_RadialSlider AL_RadialSlider E_RadialSlider
-%x ROOT_Text AL_Text E_Text
-%x ROOT_Playlist AL_Playlist S_Playlist E_Playlist
-%x IMPOSSIBLE
-
-%{
-/* State names. */
-char* statenames[IMPOSSIBLE];
-
-void FleXML_init(void)
-{
-  statenames[PROLOG] = NULL;
-  statenames[DOCTYPE] = NULL;
-  statenames[EPILOG] = NULL;
-  statenames[INCOMMENT] = NULL;
-  statenames[INPI] = NULL;
-  statenames[VALUE1] = NULL;
-  statenames[VALUE2] = NULL;
-  statenames[CDATA] = NULL;
-  statenames[ROOT_Theme] = NULL;
-  statenames[AL_Theme] = NULL;
-  statenames[S_Theme] = "Theme";
-  statenames[S_Theme_1] = "Theme";
-  statenames[S_Theme_2] = "Theme";
-  statenames[S_Theme_3] = "Theme";
-  statenames[E_Theme] = "Theme";
-  statenames[ROOT_Bitmap] = NULL;
-  statenames[AL_Bitmap] = NULL;
-  statenames[E_Bitmap] = "Bitmap";
-  statenames[ROOT_Event] = NULL;
-  statenames[AL_Event] = NULL;
-  statenames[E_Event] = "Event";
-  statenames[ROOT_Font] = NULL;
-  statenames[AL_Font] = NULL;
-  statenames[E_Font] = "Font";
-  statenames[ROOT_ThemeInfo] = NULL;
-  statenames[AL_ThemeInfo] = NULL;
-  statenames[E_ThemeInfo] = "ThemeInfo";
-  statenames[ROOT_Window] = NULL;
-  statenames[AL_Window] = NULL;
-  statenames[S_Window] = "Window";
-  statenames[S_Window_1] = "Window";
-  statenames[S_Window_2] = "Window";
-  statenames[E_Window] = "Window";
-  statenames[ROOT_Layout] = NULL;
-  statenames[AL_Layout] = NULL;
-  statenames[S_Layout] = "Layout";
-  statenames[E_Layout] = "Layout";
-  statenames[ROOT_Group] = NULL;
-  statenames[AL_Group] = NULL;
-  statenames[S_Group] = "Group";
-  statenames[S_Group_1] = "Group";
-  statenames[S_Group_2] = "Group";
-  statenames[E_Group] = "Group";
-  statenames[ROOT_Anchor] = NULL;
-  statenames[AL_Anchor] = NULL;
-  statenames[E_Anchor] = "Anchor";
-  statenames[ROOT_Image] = NULL;
-  statenames[AL_Image] = NULL;
-  statenames[E_Image] = "Image";
-  statenames[ROOT_Rectangle] = NULL;
-  statenames[AL_Rectangle] = NULL;
-  statenames[E_Rectangle] = "Rectangle";
-  statenames[ROOT_Button] = NULL;
-  statenames[AL_Button] = NULL;
-  statenames[E_Button] = "Button";
-  statenames[ROOT_CheckBox] = NULL;
-  statenames[AL_CheckBox] = NULL;
-  statenames[E_CheckBox] = "CheckBox";
-  statenames[ROOT_Slider] = NULL;
-  statenames[AL_Slider] = NULL;
-  statenames[E_Slider] = "Slider";
-  statenames[ROOT_RadialSlider] = NULL;
-  statenames[AL_RadialSlider] = NULL;
-  statenames[E_RadialSlider] = "RadialSlider";
-  statenames[ROOT_Text] = NULL;
-  statenames[AL_Text] = NULL;
-  statenames[E_Text] = "Text";
-  statenames[ROOT_Playlist] = NULL;
-  statenames[AL_Playlist] = NULL;
-  statenames[S_Playlist] = "Playlist";
-  statenames[E_Playlist] = "Playlist";
-}
-%}
-
-%%
-
- /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
- SET(PROLOG); FleXML_init();
-
- /* COMMENTS and PIs: handled uniformly for efficiency. */
-
-<ROOT_Theme,AL_Theme,S_Theme,S_Theme_1,S_Theme_2,S_Theme_3,E_Theme,ROOT_Bitmap,AL_Bitmap,E_Bitmap,ROOT_Event,AL_Event,E_Event,ROOT_Font,AL_Font,E_Font,ROOT_ThemeInfo,AL_ThemeInfo,E_ThemeInfo,ROOT_Window,AL_Window,S_Window,S_Window_1,S_Window_2,E_Window,ROOT_Layout,AL_Layout,S_Layout,E_Layout,ROOT_Group,AL_Group,S_Group,S_Group_1,S_Group_2,E_Group,ROOT_Anchor,AL_Anchor,E_Anchor,ROOT_Image,AL_Image,E_Image,ROOT_Rectangle,AL_Rectangle,E_Rectangle,ROOT_Button,AL_Button,E_Button,ROOT_CheckBox,AL_CheckBox,E_CheckBox,ROOT_Slider,AL_Slider,E_Slider,ROOT_RadialSlider,AL_RadialSlider,E_RadialSlider,ROOT_Text,AL_Text,E_Text,ROOT_Playlist,AL_Playlist,S_Playlist,E_Playlist,PROLOG,DOCTYPE,EPILOG>{
- "<!--" ENTER(INCOMMENT);
- "<?" ENTER(INPI);
-}
-<INCOMMENT>{
- "-->"         LEAVE;
- "--"          |
- .             |
- \n            SKIP;
- <<EOF>>       FAIL("EOF in comment.");
-}
-<INPI>{
- "?>"          LEAVE;
- .             |
- \n            SKIP;
- <<EOF>>       FAIL("EOF in PI (processing instruction).");
-}
-
- /* SPACES: skipped uniformly */
-
-<ROOT_Theme,AL_Theme,S_Theme,S_Theme_1,S_Theme_2,S_Theme_3,E_Theme,ROOT_Bitmap,AL_Bitmap,E_Bitmap,ROOT_Event,AL_Event,E_Event,ROOT_Font,AL_Font,E_Font,ROOT_ThemeInfo,AL_ThemeInfo,E_ThemeInfo,ROOT_Window,AL_Window,S_Window,S_Window_1,S_Window_2,E_Window,ROOT_Layout,AL_Layout,S_Layout,E_Layout,ROOT_Group,AL_Group,S_Group,S_Group_1,S_Group_2,E_Group,ROOT_Anchor,AL_Anchor,E_Anchor,ROOT_Image,AL_Image,E_Image,ROOT_Rectangle,AL_Rectangle,E_Rectangle,ROOT_Button,AL_Button,E_Button,ROOT_CheckBox,AL_CheckBox,E_CheckBox,ROOT_Slider,AL_Slider,E_Slider,ROOT_RadialSlider,AL_RadialSlider,E_RadialSlider,ROOT_Text,AL_Text,E_Text,ROOT_Playlist,AL_Playlist,S_Playlist,E_Playlist,PROLOG,DOCTYPE,EPILOG>{S} SKIP;
-
- /* PROLOG: determine root element and process it. */
-
-<PROLOG>{
- "<?xml"({S}version{Eq}(\'{VersionNum}\'|\"{VersionNum}\"))?"?>" SET(DOCTYPE);
- "<?xml"[^>]*">" FAIL("Bad declaration %s.",yytext);
-}
-
-<PROLOG,DOCTYPE>{
- "<!DOCTYPE"{S}"Layout"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Layout);
- "<!DOCTYPE"{S}"Event"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Event);
- "<!DOCTYPE"{S}"Image"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Image);
- "<!DOCTYPE"{S}"Playlist"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Playlist);
- "<!DOCTYPE"{S}"Text"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Text);
- "<!DOCTYPE"{S}"Rectangle"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Rectangle);
- "<!DOCTYPE"{S}"Anchor"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Anchor);
- "<!DOCTYPE"{S}"Group"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Group);
- "<!DOCTYPE"{S}"Theme"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Theme);
- "<!DOCTYPE"{S}"Font"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Font);
- "<!DOCTYPE"{S}"RadialSlider"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_RadialSlider);
- "<!DOCTYPE"{S}"ThemeInfo"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_ThemeInfo);
- "<!DOCTYPE"{S}"Slider"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Slider);
- "<!DOCTYPE"{S}"CheckBox"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_CheckBox);
- "<!DOCTYPE"{S}"Button"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Button);
- "<!DOCTYPE"{S}"Bitmap"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Bitmap);
- "<!DOCTYPE"{S}"Window"{S}SYSTEM{S}("'skin.dtd'"|"\"skin.dtd\""){s}">" SET(ROOT_Window);
- "<!"[^>-][^>]*">" FAIL("Bad declaration %s.",yytext);
- .             FAIL("Unexpected character `%c' in prolog.", yytext[0]);
- <<EOF>>       FAIL("EOF in prolog.");
-}
-
- /* RULES DERIVED FROM DTD. */
-
- /* <!--
-  * -->  */
-
- /*         version     CDATA   "1.0"
-  *         magnet      CDATA   "15"
-  *         alpha       CDATA   "255"
-  *         movealpha   CDATA   "255"
-  *         fadetime    CDATA   "400"
-  *     >  */
-
-<ROOT_Theme>"<Theme"{s} {
-  A_Theme_version = "1.0";
-  A_Theme_magnet = "15";
-  A_Theme_alpha = "255";
-  A_Theme_movealpha = "255";
-  A_Theme_fadetime = "400";
-  ENTER(AL_Theme);
-}
-
-<AL_Theme>{
- "version"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Theme_version);
- "version"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Theme_version);
-
- "magnet"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Theme_magnet);
- "magnet"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Theme_magnet);
-
- "alpha"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Theme_alpha);
- "alpha"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Theme_alpha);
-
- "movealpha"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Theme_movealpha);
- "movealpha"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Theme_movealpha);
-
- "fadetime"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Theme_fadetime);
- "fadetime"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Theme_fadetime);
-
- ">" {
-  LEAVE; STag_Theme(); pcdata = NULL; ENTER(S_Theme);
- }
- "/>" FAIL("`Theme' element cannot be empty.");
- .       FAIL("Unexpected character `%c' in attribute list of Theme element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Theme' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Theme' element.");
-}
-
-<E_Theme,S_Theme_1,S_Theme_3>{
- "</Theme"{s}">" {
-  LEAVE;
-  ETag_Theme();
-  switch (YY_START) {
-   case ROOT_Theme: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Theme>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Theme>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Theme>' expected.");
-}
-
- /* <!-- main elements -->  */
-
- /*         id          CDATA   #REQUIRED
-  *         file        CDATA   #REQUIRED
-  *         alphacolor  CDATA   #REQUIRED
-  *     >  */
-
-<ROOT_Bitmap,S_Theme_2,S_Theme_1,S_Theme_3>"<Bitmap"{s} {
-  A_Bitmap_id = NULL;
-  A_Bitmap_file = NULL;
-  A_Bitmap_alphacolor = NULL;
-  ENTER(AL_Bitmap);
-}
-
-<AL_Bitmap>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Bitmap_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Bitmap_id);
-
- "file"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Bitmap_file);
- "file"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Bitmap_file);
-
- "alphacolor"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Bitmap_alphacolor);
- "alphacolor"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Bitmap_alphacolor);
-
- ">" {
-  if (!A_Bitmap_id) FAIL("Required attribute `id' not set for `Bitmap' element.");
-  if (!A_Bitmap_file) FAIL("Required attribute `file' not set for `Bitmap' element.");
-  if (!A_Bitmap_alphacolor) FAIL("Required attribute `alphacolor' not set for `Bitmap' element.");
-  LEAVE; STag_Bitmap(); pcdata = NULL; ENTER(E_Bitmap);
- }
- "/>" {
-  if (!A_Bitmap_id) FAIL("Required attribute `id' not set for `Bitmap' element.");
-  if (!A_Bitmap_file) FAIL("Required attribute `file' not set for `Bitmap' element.");
-  if (!A_Bitmap_alphacolor) FAIL("Required attribute `alphacolor' not set for `Bitmap' element.");
-  LEAVE; STag_Bitmap(); pcdata = NULL; ETag_Bitmap();
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Bitmap: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Bitmap element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Bitmap' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Bitmap' element.");
-}
-
-<E_Bitmap>{
- "</Bitmap"{s}">" {
-  LEAVE;
-  ETag_Bitmap();
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Bitmap: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Bitmap>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Bitmap>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Bitmap>' expected.");
-}
-
- /*         id          CDATA   #REQUIRED
-  *         event       CDATA   #REQUIRED
-  *         key         CDATA   "none"
-  *     >  */
-
-<ROOT_Event,S_Theme_2,S_Theme_1,S_Theme_3>"<Event"{s} {
-  A_Event_id = NULL;
-  A_Event_event = NULL;
-  A_Event_key = "none";
-  ENTER(AL_Event);
-}
-
-<AL_Event>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Event_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Event_id);
-
- "event"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Event_event);
- "event"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Event_event);
-
- "key"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Event_key);
- "key"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Event_key);
-
- ">" {
-  if (!A_Event_id) FAIL("Required attribute `id' not set for `Event' element.");
-  if (!A_Event_event) FAIL("Required attribute `event' not set for `Event' element.");
-  LEAVE; STag_Event(); pcdata = NULL; ENTER(E_Event);
- }
- "/>" {
-  if (!A_Event_id) FAIL("Required attribute `id' not set for `Event' element.");
-  if (!A_Event_event) FAIL("Required attribute `event' not set for `Event' element.");
-  LEAVE; STag_Event(); pcdata = NULL; ETag_Event();
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Event: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Event element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Event' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Event' element.");
-}
-
-<E_Event>{
- "</Event"{s}">" {
-  LEAVE;
-  ETag_Event();
-  switch (YY_START) {
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-   case ROOT_Event: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Event>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Event>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Event>' expected.");
-}
-
- /*         id          CDATA   #REQUIRED
-  *         font        CDATA   "arial"
-  *         size        CDATA   "12"
-  *         color       CDATA   "#000000"
-  *         italic      CDATA   "false"
-  *         underline   CDATA   "false"
-  *     >  */
-
-<ROOT_Font,S_Theme_2,S_Theme_1,S_Theme_3>"<Font"{s} {
-  A_Font_id = NULL;
-  A_Font_font = "arial";
-  A_Font_size = "12";
-  A_Font_color = "#000000";
-  A_Font_italic = "false";
-  A_Font_underline = "false";
-  ENTER(AL_Font);
-}
-
-<AL_Font>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Font_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Font_id);
-
- "font"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Font_font);
- "font"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Font_font);
-
- "size"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Font_size);
- "size"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Font_size);
-
- "color"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Font_color);
- "color"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Font_color);
-
- "italic"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Font_italic);
- "italic"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Font_italic);
-
- "underline"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Font_underline);
- "underline"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Font_underline);
-
- ">" {
-  if (!A_Font_id) FAIL("Required attribute `id' not set for `Font' element.");
-  LEAVE; STag_Font(); pcdata = NULL; ENTER(E_Font);
- }
- "/>" {
-  if (!A_Font_id) FAIL("Required attribute `id' not set for `Font' element.");
-  LEAVE; STag_Font(); pcdata = NULL; ETag_Font();
-  switch (YY_START) {
-   case ROOT_Font: SET(EPILOG); break;
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Font element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Font' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Font' element.");
-}
-
-<E_Font>{
- "</Font"{s}">" {
-  LEAVE;
-  ETag_Font();
-  switch (YY_START) {
-   case ROOT_Font: SET(EPILOG); break;
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Font>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Font>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Font>' expected.");
-}
-
- /*         name        CDATA   #IMPLIED
-  *         author      CDATA   #IMPLIED
-  *         email       CDATA   #IMPLIED
-  *         webpage     CDATA   #IMPLIED
-  *     >  */
-
-<ROOT_ThemeInfo,S_Theme>"<ThemeInfo"{s} {
-  A_ThemeInfo_name = NULL;
-  A_ThemeInfo_author = NULL;
-  A_ThemeInfo_email = NULL;
-  A_ThemeInfo_webpage = NULL;
-  ENTER(AL_ThemeInfo);
-}
-
-<AL_ThemeInfo>{
- "name"{Eq}\' ENTER(VALUE1); BUFFERSET(A_ThemeInfo_name);
- "name"{Eq}\" ENTER(VALUE2); BUFFERSET(A_ThemeInfo_name);
-
- "author"{Eq}\' ENTER(VALUE1); BUFFERSET(A_ThemeInfo_author);
- "author"{Eq}\" ENTER(VALUE2); BUFFERSET(A_ThemeInfo_author);
-
- "email"{Eq}\' ENTER(VALUE1); BUFFERSET(A_ThemeInfo_email);
- "email"{Eq}\" ENTER(VALUE2); BUFFERSET(A_ThemeInfo_email);
-
- "webpage"{Eq}\' ENTER(VALUE1); BUFFERSET(A_ThemeInfo_webpage);
- "webpage"{Eq}\" ENTER(VALUE2); BUFFERSET(A_ThemeInfo_webpage);
-
- ">" {
-  LEAVE; STag_ThemeInfo(); pcdata = NULL; ENTER(E_ThemeInfo);
- }
- "/>" {
-  LEAVE; STag_ThemeInfo(); pcdata = NULL; ETag_ThemeInfo();
-  switch (YY_START) {
-   case S_Theme: SET(S_Theme_1); break;
-   case ROOT_ThemeInfo: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of ThemeInfo element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `ThemeInfo' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `ThemeInfo' element.");
-}
-
-<E_ThemeInfo>{
- "</ThemeInfo"{s}">" {
-  LEAVE;
-  ETag_ThemeInfo();
-  switch (YY_START) {
-   case S_Theme: SET(S_Theme_1); break;
-   case ROOT_ThemeInfo: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</ThemeInfo>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</ThemeInfo>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</ThemeInfo>' expected.");
-}
-
- /*         id          CDATA   #REQUIRED
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         dragdrop    CDATA   "true"
-  *         playondrop  CDATA   "true"
-  *     >  */
-
-<ROOT_Window,S_Theme_2,S_Theme_1,S_Theme_3>"<Window"{s} {
-  A_Window_id = NULL;
-  A_Window_visible = "true";
-  A_Window_x = "\0";
-  A_Window_y = "\0";
-  A_Window_dragdrop = "true";
-  A_Window_playondrop = "true";
-  ENTER(AL_Window);
-}
-
-<AL_Window>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Window_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Window_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Window_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Window_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Window_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Window_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Window_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Window_y);
-
- "dragdrop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Window_dragdrop);
- "dragdrop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Window_dragdrop);
-
- "playondrop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Window_playondrop);
- "playondrop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Window_playondrop);
-
- ">" {
-  if (!A_Window_id) FAIL("Required attribute `id' not set for `Window' element.");
-  LEAVE; STag_Window(); pcdata = NULL; ENTER(S_Window);
- }
- "/>" FAIL("`Window' element cannot be empty.");
- .       FAIL("Unexpected character `%c' in attribute list of Window element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Window' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Window' element.");
-}
-
-<S_Window_2,E_Window>{
- "</Window"{s}">" {
-  LEAVE;
-  ETag_Window();
-  switch (YY_START) {
-   case ROOT_Window: SET(EPILOG); break;
-   case S_Theme_2: case S_Theme_1: case S_Theme_3: SET(S_Theme_3); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Window>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Window>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Window>' expected.");
-}
-
- /*         id          CDATA   "none"
-  *         width       CDATA   #REQUIRED
-  *         height      CDATA   #REQUIRED
-  *         minwidth    CDATA   "-1"
-  *         maxwidth    CDATA   "-1"
-  *         minheight   CDATA   "-1"
-  *         maxheight   CDATA   "-1"
-  *     >  */
-
-<ROOT_Layout,S_Window,S_Window_1,S_Window_2>"<Layout"{s} {
-  A_Layout_id = "none";
-  A_Layout_width = NULL;
-  A_Layout_height = NULL;
-  A_Layout_minwidth = "-1";
-  A_Layout_maxwidth = "-1";
-  A_Layout_minheight = "-1";
-  A_Layout_maxheight = "-1";
-  ENTER(AL_Layout);
-}
-
-<AL_Layout>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_id);
-
- "width"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_width);
- "width"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_width);
-
- "height"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_height);
- "height"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_height);
-
- "minwidth"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_minwidth);
- "minwidth"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_minwidth);
-
- "maxwidth"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_maxwidth);
- "maxwidth"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_maxwidth);
-
- "minheight"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_minheight);
- "minheight"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_minheight);
-
- "maxheight"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Layout_maxheight);
- "maxheight"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Layout_maxheight);
-
- ">" {
-  if (!A_Layout_width) FAIL("Required attribute `width' not set for `Layout' element.");
-  if (!A_Layout_height) FAIL("Required attribute `height' not set for `Layout' element.");
-  LEAVE; STag_Layout(); pcdata = NULL; ENTER(S_Layout);
- }
- "/>" FAIL("`Layout' element cannot be empty.");
- .       FAIL("Unexpected character `%c' in attribute list of Layout element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Layout' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Layout' element.");
-}
-
-<E_Layout>{
- "</Layout"{s}">" {
-  LEAVE;
-  ETag_Layout();
-  switch (YY_START) {
-   case S_Window: case S_Window_1: case S_Window_2: SET(S_Window_2); break;
-   case ROOT_Layout: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Layout>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Layout>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Layout>' expected.");
-}
-
- /*                  Rectangle|Anchor)+>  */
-
- /*         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *     >  */
-
-<ROOT_Group,S_Group_2,S_Layout,S_Group_1,S_Group>"<Group"{s} {
-  A_Group_x = "\0";
-  A_Group_y = "\0";
-  ENTER(AL_Group);
-}
-
-<AL_Group>{
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Group_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Group_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Group_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Group_y);
-
- ">" {
-  LEAVE; STag_Group(); pcdata = NULL; ENTER(S_Group);
- }
- "/>" FAIL("`Group' element cannot be empty.");
- .       FAIL("Unexpected character `%c' in attribute list of Group element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Group' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Group' element.");
-}
-
-<S_Group_2,E_Group>{
- "</Group"{s}">" {
-  LEAVE;
-  ETag_Group();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case S_Layout: SET(E_Layout); break;
-   case ROOT_Group: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Group>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Group>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Group>' expected.");
-}
-
- /* <!-- Anchors -->  */
-
- /*         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         priority    CDATA   #REQUIRED
-  *         range       CDATA   "10"
-  *     >  */
-
-<ROOT_Anchor,S_Group_2,S_Group_1,S_Group>"<Anchor"{s} {
-  A_Anchor_x = "\0";
-  A_Anchor_y = "\0";
-  A_Anchor_priority = NULL;
-  A_Anchor_range = "10";
-  ENTER(AL_Anchor);
-}
-
-<AL_Anchor>{
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Anchor_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Anchor_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Anchor_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Anchor_y);
-
- "priority"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Anchor_priority);
- "priority"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Anchor_priority);
-
- "range"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Anchor_range);
- "range"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Anchor_range);
-
- ">" {
-  if (!A_Anchor_priority) FAIL("Required attribute `priority' not set for `Anchor' element.");
-  LEAVE; STag_Anchor(); pcdata = NULL; ENTER(E_Anchor);
- }
- "/>" {
-  if (!A_Anchor_priority) FAIL("Required attribute `priority' not set for `Anchor' element.");
-  LEAVE; STag_Anchor(); pcdata = NULL; ETag_Anchor();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Anchor: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Anchor element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Anchor' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Anchor' element.");
-}
-
-<E_Anchor>{
- "</Anchor"{s}">" {
-  LEAVE;
-  ETag_Anchor();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Anchor: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Anchor>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Anchor>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Anchor>' expected.");
-}
-
- /* <!-- Controls -->  */
-
- /*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         image       CDATA   #REQUIRED
-  *         onclick     CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_Image,S_Group_2,S_Group_1,S_Group>"<Image"{s} {
-  A_Image_id = "none";
-  A_Image_visible = "true";
-  A_Image_x = "\0";
-  A_Image_y = "\0";
-  A_Image_lefttop = "lefttop";
-  A_Image_rightbottom = "lefttop";
-  A_Image_image = NULL;
-  A_Image_onclick = "none";
-  A_Image_help = "\0";
-  ENTER(AL_Image);
-}
-
-<AL_Image>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_y);
-
- "lefttop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_lefttop);
- "lefttop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_lefttop);
-
- "rightbottom"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_rightbottom);
- "rightbottom"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_rightbottom);
-
- "image"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_image);
- "image"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_image);
-
- "onclick"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_onclick);
- "onclick"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_onclick);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Image_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Image_help);
-
- ">" {
-  if (!A_Image_image) FAIL("Required attribute `image' not set for `Image' element.");
-  LEAVE; STag_Image(); pcdata = NULL; ENTER(E_Image);
- }
- "/>" {
-  if (!A_Image_image) FAIL("Required attribute `image' not set for `Image' element.");
-  LEAVE; STag_Image(); pcdata = NULL; ETag_Image();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Image: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Image element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Image' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Image' element.");
-}
-
-<E_Image>{
- "</Image"{s}">" {
-  LEAVE;
-  ETag_Image();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Image: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Image>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Image>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Image>' expected.");
-}
-
- /*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         w           CDATA   "50"
-  *         h           CDATA   "50"
-  *         color       CDATA   "#C0C0C0"
-  *         onclick     CDATA   "none"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_Rectangle,S_Group_2,S_Group_1,S_Group>"<Rectangle"{s} {
-  A_Rectangle_id = "none";
-  A_Rectangle_visible = "true";
-  A_Rectangle_x = "\0";
-  A_Rectangle_y = "\0";
-  A_Rectangle_w = "50";
-  A_Rectangle_h = "50";
-  A_Rectangle_color = "#C0C0C0";
-  A_Rectangle_onclick = "none";
-  A_Rectangle_help = "\0";
-  ENTER(AL_Rectangle);
-}
-
-<AL_Rectangle>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_y);
-
- "w"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_w);
- "w"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_w);
-
- "h"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_h);
- "h"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_h);
-
- "color"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_color);
- "color"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_color);
-
- "onclick"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_onclick);
- "onclick"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_onclick);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Rectangle_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Rectangle_help);
-
- ">" {
-  LEAVE; STag_Rectangle(); pcdata = NULL; ENTER(E_Rectangle);
- }
- "/>" {
-  LEAVE; STag_Rectangle(); pcdata = NULL; ETag_Rectangle();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Rectangle: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Rectangle element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Rectangle' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Rectangle' element.");
-}
-
-<E_Rectangle>{
- "</Rectangle"{s}">" {
-  LEAVE;
-  ETag_Rectangle();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Rectangle: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Rectangle>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Rectangle>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Rectangle>' expected.");
-}
-
- /*         id          CDATA   "none"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         up          CDATA   #REQUIRED
-  *         down        CDATA   "none"
-  *         over        CDATA   "none"
-  *         action      CDATA   "none"
-  *         tooltiptext CDATA   "\0"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_Button,S_Group_2,S_Group_1,S_Group>"<Button"{s} {
-  A_Button_id = "none";
-  A_Button_x = "\0";
-  A_Button_y = "\0";
-  A_Button_lefttop = "lefttop";
-  A_Button_rightbottom = "lefttop";
-  A_Button_up = NULL;
-  A_Button_down = "none";
-  A_Button_over = "none";
-  A_Button_action = "none";
-  A_Button_tooltiptext = "\0";
-  A_Button_help = "\0";
-  ENTER(AL_Button);
-}
-
-<AL_Button>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_id);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_y);
-
- "lefttop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_lefttop);
- "lefttop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_lefttop);
-
- "rightbottom"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_rightbottom);
- "rightbottom"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_rightbottom);
-
- "up"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_up);
- "up"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_up);
-
- "down"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_down);
- "down"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_down);
-
- "over"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_over);
- "over"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_over);
-
- "action"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_action);
- "action"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_action);
-
- "tooltiptext"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_tooltiptext);
- "tooltiptext"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_tooltiptext);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Button_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Button_help);
-
- ">" {
-  if (!A_Button_up) FAIL("Required attribute `up' not set for `Button' element.");
-  LEAVE; STag_Button(); pcdata = NULL; ENTER(E_Button);
- }
- "/>" {
-  if (!A_Button_up) FAIL("Required attribute `up' not set for `Button' element.");
-  LEAVE; STag_Button(); pcdata = NULL; ETag_Button();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Button: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Button element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Button' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Button' element.");
-}
-
-<E_Button>{
- "</Button"{s}">" {
-  LEAVE;
-  ETag_Button();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Button: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Button>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Button>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Button>' expected.");
-}
-
- /*         id           CDATA   "none"
-  *         x            CDATA   "\0"
-  *         y            CDATA   "\0"
-  *         lefttop      CDATA   "lefttop"
-  *         rightbottom  CDATA   "lefttop"
-  *         up1          CDATA   #REQUIRED
-  *         down1        CDATA   "none"
-  *         over1        CDATA   "none"
-  *         up2          CDATA   #REQUIRED
-  *         down2        CDATA   "none"
-  *         over2        CDATA   "none"
-  *         state        CDATA   #REQUIRED
-  *         action1      CDATA   "none"
-  *         action2      CDATA   "none"
-  *         tooltiptext1 CDATA   "\0"
-  *         tooltiptext2 CDATA   "\0"
-  *         help         CDATA   "\0"
-  *     >  */
-
-<ROOT_CheckBox,S_Group_2,S_Group_1,S_Group>"<CheckBox"{s} {
-  A_CheckBox_id = "none";
-  A_CheckBox_x = "\0";
-  A_CheckBox_y = "\0";
-  A_CheckBox_lefttop = "lefttop";
-  A_CheckBox_rightbottom = "lefttop";
-  A_CheckBox_up1 = NULL;
-  A_CheckBox_down1 = "none";
-  A_CheckBox_over1 = "none";
-  A_CheckBox_up2 = NULL;
-  A_CheckBox_down2 = "none";
-  A_CheckBox_over2 = "none";
-  A_CheckBox_state = NULL;
-  A_CheckBox_action1 = "none";
-  A_CheckBox_action2 = "none";
-  A_CheckBox_tooltiptext1 = "\0";
-  A_CheckBox_tooltiptext2 = "\0";
-  A_CheckBox_help = "\0";
-  ENTER(AL_CheckBox);
-}
-
-<AL_CheckBox>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_id);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_y);
-
- "lefttop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_lefttop);
- "lefttop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_lefttop);
-
- "rightbottom"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_rightbottom);
- "rightbottom"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_rightbottom);
-
- "up1"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_up1);
- "up1"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_up1);
-
- "down1"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_down1);
- "down1"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_down1);
-
- "over1"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_over1);
- "over1"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_over1);
-
- "up2"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_up2);
- "up2"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_up2);
-
- "down2"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_down2);
- "down2"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_down2);
-
- "over2"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_over2);
- "over2"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_over2);
-
- "state"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_state);
- "state"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_state);
-
- "action1"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_action1);
- "action1"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_action1);
-
- "action2"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_action2);
- "action2"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_action2);
-
- "tooltiptext1"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_tooltiptext1);
- "tooltiptext1"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_tooltiptext1);
-
- "tooltiptext2"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_tooltiptext2);
- "tooltiptext2"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_tooltiptext2);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_CheckBox_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_CheckBox_help);
-
- ">" {
-  if (!A_CheckBox_up1) FAIL("Required attribute `up1' not set for `CheckBox' element.");
-  if (!A_CheckBox_up2) FAIL("Required attribute `up2' not set for `CheckBox' element.");
-  if (!A_CheckBox_state) FAIL("Required attribute `state' not set for `CheckBox' element.");
-  LEAVE; STag_CheckBox(); pcdata = NULL; ENTER(E_CheckBox);
- }
- "/>" {
-  if (!A_CheckBox_up1) FAIL("Required attribute `up1' not set for `CheckBox' element.");
-  if (!A_CheckBox_up2) FAIL("Required attribute `up2' not set for `CheckBox' element.");
-  if (!A_CheckBox_state) FAIL("Required attribute `state' not set for `CheckBox' element.");
-  LEAVE; STag_CheckBox(); pcdata = NULL; ETag_CheckBox();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_CheckBox: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of CheckBox element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `CheckBox' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `CheckBox' element.");
-}
-
-<E_CheckBox>{
- "</CheckBox"{s}">" {
-  LEAVE;
-  ETag_CheckBox();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_CheckBox: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</CheckBox>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</CheckBox>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</CheckBox>' expected.");
-}
-
- /*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         up          CDATA   #REQUIRED
-  *         down        CDATA   "none"
-  *         over        CDATA   "none"
-  *         points      CDATA   #REQUIRED
-  *         thickness   CDATA   "10"
-  *         value       CDATA   "none"
-  *         tooltiptext CDATA   "\0"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_Slider,S_Playlist,S_Group_2,S_Group_1,S_Group>"<Slider"{s} {
-  A_Slider_id = "none";
-  A_Slider_visible = "true";
-  A_Slider_x = "\0";
-  A_Slider_y = "\0";
-  A_Slider_lefttop = "lefttop";
-  A_Slider_rightbottom = "lefttop";
-  A_Slider_up = NULL;
-  A_Slider_down = "none";
-  A_Slider_over = "none";
-  A_Slider_points = NULL;
-  A_Slider_thickness = "10";
-  A_Slider_value = "none";
-  A_Slider_tooltiptext = "\0";
-  A_Slider_help = "\0";
-  ENTER(AL_Slider);
-}
-
-<AL_Slider>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_y);
-
- "lefttop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_lefttop);
- "lefttop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_lefttop);
-
- "rightbottom"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_rightbottom);
- "rightbottom"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_rightbottom);
-
- "up"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_up);
- "up"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_up);
-
- "down"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_down);
- "down"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_down);
-
- "over"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_over);
- "over"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_over);
-
- "points"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_points);
- "points"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_points);
-
- "thickness"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_thickness);
- "thickness"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_thickness);
-
- "value"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_value);
- "value"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_value);
-
- "tooltiptext"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_tooltiptext);
- "tooltiptext"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_tooltiptext);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Slider_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Slider_help);
-
- ">" {
-  if (!A_Slider_up) FAIL("Required attribute `up' not set for `Slider' element.");
-  if (!A_Slider_points) FAIL("Required attribute `points' not set for `Slider' element.");
-  LEAVE; STag_Slider(); pcdata = NULL; ENTER(E_Slider);
- }
- "/>" {
-  if (!A_Slider_up) FAIL("Required attribute `up' not set for `Slider' element.");
-  if (!A_Slider_points) FAIL("Required attribute `points' not set for `Slider' element.");
-  LEAVE; STag_Slider(); pcdata = NULL; ETag_Slider();
-  switch (YY_START) {
-   case S_Playlist: SET(E_Playlist); break;
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Slider: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Slider element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Slider' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Slider' element.");
-}
-
-<E_Slider>{
- "</Slider"{s}">" {
-  LEAVE;
-  ETag_Slider();
-  switch (YY_START) {
-   case S_Playlist: SET(E_Playlist); break;
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Slider: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Slider>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Slider>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Slider>' expected.");
-}
-
- /*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         sequence    CDATA   #REQUIRED
-  *         nbimages    CDATA   #REQUIRED
-  *         minangle    CDATA   "\0"
-  *         maxangle    CDATA   "360"
-  *         value       CDATA   "none"
-  *         tooltiptext CDATA   "\0"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_RadialSlider,S_Group_2,S_Group_1,S_Group>"<RadialSlider"{s} {
-  A_RadialSlider_id = "none";
-  A_RadialSlider_visible = "true";
-  A_RadialSlider_x = "\0";
-  A_RadialSlider_y = "\0";
-  A_RadialSlider_lefttop = "lefttop";
-  A_RadialSlider_rightbottom = "lefttop";
-  A_RadialSlider_sequence = NULL;
-  A_RadialSlider_nbimages = NULL;
-  A_RadialSlider_minangle = "\0";
-  A_RadialSlider_maxangle = "360";
-  A_RadialSlider_value = "none";
-  A_RadialSlider_tooltiptext = "\0";
-  A_RadialSlider_help = "\0";
-  ENTER(AL_RadialSlider);
-}
-
-<AL_RadialSlider>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_y);
-
- "lefttop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_lefttop);
- "lefttop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_lefttop);
-
- "rightbottom"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_rightbottom);
- "rightbottom"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_rightbottom);
-
- "sequence"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_sequence);
- "sequence"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_sequence);
-
- "nbimages"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_nbimages);
- "nbimages"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_nbimages);
-
- "minangle"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_minangle);
- "minangle"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_minangle);
-
- "maxangle"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_maxangle);
- "maxangle"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_maxangle);
-
- "value"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_value);
- "value"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_value);
-
- "tooltiptext"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_tooltiptext);
- "tooltiptext"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_tooltiptext);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_RadialSlider_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_RadialSlider_help);
-
- ">" {
-  if (!A_RadialSlider_sequence) FAIL("Required attribute `sequence' not set for `RadialSlider' element.");
-  if (!A_RadialSlider_nbimages) FAIL("Required attribute `nbimages' not set for `RadialSlider' element.");
-  LEAVE; STag_RadialSlider(); pcdata = NULL; ENTER(E_RadialSlider);
- }
- "/>" {
-  if (!A_RadialSlider_sequence) FAIL("Required attribute `sequence' not set for `RadialSlider' element.");
-  if (!A_RadialSlider_nbimages) FAIL("Required attribute `nbimages' not set for `RadialSlider' element.");
-  LEAVE; STag_RadialSlider(); pcdata = NULL; ETag_RadialSlider();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_RadialSlider: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of RadialSlider element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `RadialSlider' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `RadialSlider' element.");
-}
-
-<E_RadialSlider>{
- "</RadialSlider"{s}">" {
-  LEAVE;
-  ETag_RadialSlider();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_RadialSlider: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</RadialSlider>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</RadialSlider>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</RadialSlider>' expected.");
-}
-
- /*         id          CDATA   "none"
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         text        CDATA   ""
-  *         font        CDATA   #REQUIRED
-  *         align       CDATA   "left"
-  *         width       CDATA   "\0"
-  *         display     CDATA   "none"
-  *         scroll      CDATA   "true"
-  *         scrollspace CDATA   "20"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_Text,S_Group_2,S_Group_1,S_Group>"<Text"{s} {
-  A_Text_id = "none";
-  A_Text_visible = "true";
-  A_Text_x = "\0";
-  A_Text_y = "\0";
-  A_Text_text = NULL;
-  A_Text_font = NULL;
-  A_Text_align = "left";
-  A_Text_width = "\0";
-  A_Text_display = "none";
-  A_Text_scroll = "true";
-  A_Text_scrollspace = "20";
-  A_Text_help = "\0";
-  ENTER(AL_Text);
-}
-
-<AL_Text>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_y);
-
- "text"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_text);
- "text"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_text);
-
- "font"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_font);
- "font"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_font);
-
- "align"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_align);
- "align"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_align);
-
- "width"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_width);
- "width"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_width);
-
- "display"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_display);
- "display"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_display);
-
- "scroll"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_scroll);
- "scroll"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_scroll);
-
- "scrollspace"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_scrollspace);
- "scrollspace"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_scrollspace);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Text_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Text_help);
-
- ">" {
-  if (!A_Text_font) FAIL("Required attribute `font' not set for `Text' element.");
-  LEAVE; STag_Text(); pcdata = NULL; ENTER(E_Text);
- }
- "/>" {
-  if (!A_Text_font) FAIL("Required attribute `font' not set for `Text' element.");
-  LEAVE; STag_Text(); pcdata = NULL; ETag_Text();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Text: SET(EPILOG); break;
-  }
- }
- .       FAIL("Unexpected character `%c' in attribute list of Text element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Text' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Text' element.");
-}
-
-<E_Text>{
- "</Text"{s}">" {
-  LEAVE;
-  ETag_Text();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Text: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Text>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Text>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Text>' expected.");
-}
-
- /*         id          CDATA   #REQUIRED
-  *         visible     CDATA   "true"
-  *         x           CDATA   "\0"
-  *         y           CDATA   "\0"
-  *         width       CDATA   "\0"
-  *         height      CDATA   "\0"
-  *         lefttop     CDATA   "lefttop"
-  *         rightbottom CDATA   "lefttop"
-  *         font        CDATA   #REQUIRED
-  *         var         CDATA   "playlist"
-  *         fgcolor     CDATA   "#000000"
-  *         playcolor   CDATA   "#FF0000"
-  *         bgcolor1    CDATA   "#FFFFFF"
-  *         bgcolor2    CDATA   "#FFFFFF"
-  *         selcolor    CDATA   "#0000FF"
-  *         help        CDATA   "\0"
-  *     >  */
-
-<ROOT_Playlist,S_Group_2,S_Group_1,S_Group>"<Playlist"{s} {
-  A_Playlist_id = NULL;
-  A_Playlist_visible = "true";
-  A_Playlist_x = "\0";
-  A_Playlist_y = "\0";
-  A_Playlist_width = "\0";
-  A_Playlist_height = "\0";
-  A_Playlist_lefttop = "lefttop";
-  A_Playlist_rightbottom = "lefttop";
-  A_Playlist_font = NULL;
-  A_Playlist_var = "playlist";
-  A_Playlist_fgcolor = "#000000";
-  A_Playlist_playcolor = "#FF0000";
-  A_Playlist_bgcolor1 = "#FFFFFF";
-  A_Playlist_bgcolor2 = "#FFFFFF";
-  A_Playlist_selcolor = "#0000FF";
-  A_Playlist_help = "\0";
-  ENTER(AL_Playlist);
-}
-
-<AL_Playlist>{
- "id"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_id);
- "id"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_id);
-
- "visible"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_visible);
- "visible"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_visible);
-
- "x"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_x);
- "x"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_x);
-
- "y"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_y);
- "y"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_y);
-
- "width"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_width);
- "width"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_width);
-
- "height"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_height);
- "height"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_height);
-
- "lefttop"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_lefttop);
- "lefttop"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_lefttop);
-
- "rightbottom"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_rightbottom);
- "rightbottom"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_rightbottom);
-
- "font"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_font);
- "font"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_font);
-
- "var"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_var);
- "var"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_var);
-
- "fgcolor"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_fgcolor);
- "fgcolor"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_fgcolor);
-
- "playcolor"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_playcolor);
- "playcolor"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_playcolor);
-
- "bgcolor1"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_bgcolor1);
- "bgcolor1"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_bgcolor1);
-
- "bgcolor2"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_bgcolor2);
- "bgcolor2"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_bgcolor2);
-
- "selcolor"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_selcolor);
- "selcolor"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_selcolor);
-
- "help"{Eq}\' ENTER(VALUE1); BUFFERSET(A_Playlist_help);
- "help"{Eq}\" ENTER(VALUE2); BUFFERSET(A_Playlist_help);
-
- ">" {
-  if (!A_Playlist_id) FAIL("Required attribute `id' not set for `Playlist' element.");
-  if (!A_Playlist_font) FAIL("Required attribute `font' not set for `Playlist' element.");
-  LEAVE; STag_Playlist(); pcdata = NULL; ENTER(S_Playlist);
- }
- "/>" FAIL("`Playlist' element cannot be empty.");
- .       FAIL("Unexpected character `%c' in attribute list of Playlist element.", yytext[0]);
- {Name} FAIL("Bad attribute `%s' in `Playlist' element start tag.",yytext);
- <<EOF>> FAIL("EOF in attribute list of `Playlist' element.");
-}
-
-<E_Playlist>{
- "</Playlist"{s}">" {
-  LEAVE;
-  ETag_Playlist();
-  switch (YY_START) {
-   case S_Group_2: case S_Group_1: case S_Group: SET(S_Group_2); break;
-   case ROOT_Playlist: SET(EPILOG); break;
-  }
- }
- "</"{Name}{s}">" FAIL("Unexpected end-tag `%s': `</Playlist>' expected.",yytext);
- .       FAIL("Unexpected character `%c': `</Playlist>' expected.",yytext[0]);
- <<EOF>> FAIL("Premature EOF: `</Playlist>' expected.");
-}
-
- /* EPILOG: after the root element. */
-
-<EPILOG>{
- .             FAIL("Unexpected character `%c' after document.", yytext[0]);
- <<EOF>>       SUCCEED;
-}
-
- /* CHARACTER DATA. */
-
-<IMPOSSIBLE,VALUE1,VALUE2>{
- /* Non-defined standard entities... */
-"&amp;"  BUFFERPUTC('&');
-"&lt;"   BUFFERPUTC('<');
-"&gt;"   BUFFERPUTC('>');
-"&apos;" BUFFERPUTC('\'');
-"&quot;" BUFFERPUTC('"');
-
- /* Character entities. */
- "&#"[[:digit:]]+";"   BUFFERPUTC((unsigned char)atoi(yytext+2));
- "&#x"[[:xdigit:]]+";" BUFFERPUTC((unsigned char)strtol(yytext+3,NULL,16));
-}
-
-<IMPOSSIBLE,VALUE1,VALUE2,CDATA>{
- "\n"          |
- "\r"          |
- "\r\n"                |
- "\n\r"                BUFFERPUTC('\n');
-}
-
-<IMPOSSIBLE>{
- "<![CDATA["   ENTER(CDATA);
- "]]>"         FAIL("Unexpected `]]>' in character data.");
-}
-
-<VALUE1>{
- \'            BUFFERDONE; LEAVE;
- <<EOF>>       FAIL("EOF in literal (\"'\" expected).");
-}
-
-<VALUE2>{
- \"            BUFFERDONE; LEAVE;
- <<EOF>>       FAIL("EOF in literal (`\"' expected).");
-}
-
-<IMPOSSIBLE,VALUE1,VALUE2>{
- [^<&]         BUFFERPUTC(yytext[0]);
- [<&]          FAIL("Spurious `%c' in character data.",yytext[0]);
-}
-
-<CDATA>{
- "]]>"         LEAVE;
- "]]"          BUFFERPUTC(yytext[0]); BUFFERPUTC(yytext[1]);
- .             BUFFERPUTC(yytext[0]);
- <<EOF>>       FAIL("EOF in CDATA section.");
-}
-
- /* Impossible rules to avoid warnings from flex(1). */
-
-<INITIAL,IMPOSSIBLE>{
- .|[\n] FAIL("The Impossible Happened: INITIAL or IMPOSSIBLE state entered?");
-}
-
-%%
-
-/* Element context stack lookup. */
-int element_context(int i)
-{
-  return (0<i && i<yy_start_stack_depth
-         ? yy_start_stack[yy_start_stack_ptr - i]
-         : 0);
-}
-
-#ifdef FLEX_DEBUG
-void print_yy_stack(char* fmt, ...)
-{
-  int i = 0; va_list ap; va_start(ap, fmt);
-  vfprintf(stderr, fmt, ap);
-  for (i=1; i<yy_start_stack_ptr; i++)
-    fprintf(stderr, "%s/", statenames[yy_start_stack[i]]);
-  fprintf(stderr,"%s\n", statenames[YY_START]);
-  va_end(ap);
-}
-
-static void debug_enter(int state, char* statename) {
-  yy_push_state(state);
-  if (yy_flex_debug) print_yy_stack("--ENTER(%s) : ",statename);
-}
-
-static void debug_leave(void) {
-  if (yy_flex_debug) print_yy_stack("--LEAVE : ");
-  yy_pop_state();
-}
-
-static void debug_set(int state, char* statename) {
-  BEGIN(state);
-  if (yy_flex_debug) print_yy_stack("--SET(%s) : ",statename);
-}
-#endif
-
-
-static int fail(const char* fmt, ...)
-{
-  va_list ap; va_start(ap, fmt);
-#ifdef FLEXML_yylineno
-  fprintf(stderr, "Invalid XML (XML input line %d, state %d): ", yylineno, YY_START);
-#else
-  fprintf(stderr, "Invalid XML (state %d): ",YY_START);
-#endif
-  vfprintf(stderr, fmt, ap);
-  fprintf(stderr, "\n");
-  va_end(ap);
-  return 1;
-}
diff --git a/modules/gui/skins2/parser/skin_parser.cpp b/modules/gui/skins2/parser/skin_parser.cpp
new file mode 100644 (file)
index 0000000..d355836
--- /dev/null
@@ -0,0 +1,235 @@
+/*****************************************************************************
+ * skin_parser.cpp
+ *****************************************************************************
+ * Copyright (C) 2004 VideoLAN
+ * $Id: skin_parser.cpp,v 1.1 2004/01/25 11:44:19 asmax Exp $
+ *
+ * Authors: Cyril Deguet     <asmax@via.ecp.fr>
+ *
+ * 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, USA.
+ *****************************************************************************/
+
+#include "skin_parser.hpp"
+#include <math.h>
+
+// Current DTD version
+#define SKINS_DTD_VERSION "2.0"
+
+
+SkinParser::SkinParser( intf_thread_t *pIntf, const string &rFileName ):
+    XMLParser( pIntf, rFileName ), m_xOffset( 0 ), m_yOffset( 0 )
+{
+}
+
+
+void SkinParser::handleBeginElement( const string &rName, AttrList_t &attr )
+{
+    if( rName == "Anchor" )
+    {
+        const BuilderData::Anchor anchor( atoi( attr["x"] ) + m_xOffset,
+                atoi( attr["y"] ) + m_yOffset, atoi( attr["range"] ),
+                atoi( attr["priority"] ), m_curWindowId );
+        m_data.m_listAnchor.push_back( anchor );
+    }
+
+    else if( rName == "Bitmap" )
+    {
+        const BuilderData::Bitmap bitmap( attr["id"], attr["file"],
+                ConvertColor( attr["alphacolor"] ) );
+        m_data.m_listBitmap.push_back( bitmap );
+    }
+
+    else if( rName == "Button" )
+    {
+        const BuilderData::Button button( attr["id"], atoi( attr["x"] ) +
+                m_xOffset, atoi( attr["y"] ) + m_yOffset, attr["lefttop"],
+                attr["rightbottom"], attr["up"], attr["down"], attr["over"],
+                attr["action"], attr["tooltiptext"], attr["help"], m_curLayer,
+                m_curWindowId, m_curLayoutId );
+        m_curLayer++;
+        m_data.m_listButton.push_back( button );
+    }
+
+    else if( rName == "CheckBox" )
+    {
+        const BuilderData::Checkbox checkbox( attr["id"], atoi( attr["x"] ) +
+                m_xOffset, atoi( attr["y"] ) + m_yOffset, attr["lefttop"],
+                attr["rightbottom"], attr["up1"], attr["down1"], attr["over1"],
+                attr["up2"], attr["down2"], attr["over2"], attr["state"],
+                attr["action1"], attr["action2"], attr["tooltiptext1"],
+                attr["tooltiptext2"], attr["help"], m_curLayer, m_curWindowId,
+                m_curLayoutId );
+        m_curLayer++;
+        m_data.m_listCheckbox.push_back( checkbox );
+    }
+
+    else if( rName == "Font" )
+    {
+        const BuilderData::Font fontData( attr["id"], attr["font"],
+                atoi( attr["size"] ) );
+        m_data.m_listFont.push_back( fontData );
+    }
+
+    else if( rName == "Group" )
+    {
+        m_xOffset += atoi( attr["x"] );
+        m_yOffset += atoi( attr["y"] );
+        m_xOffsetList.push_back( atoi( attr["x"] ) );
+        m_yOffsetList.push_back( atoi( attr["y"] ) );
+    }
+
+    else if( rName == "Image" )
+    {
+        const BuilderData::Image imageData( attr["id"], atoi( attr["x"] ) +
+                m_xOffset, atoi( attr["y"] ) + m_yOffset, attr["lefttop"],
+                attr["rightbottom"], ConvertBoolean( attr["visible"] ),
+                attr["image"], attr["onclick"], attr["help"], m_curLayer,
+                m_curWindowId, m_curLayoutId );
+        m_curLayer++;
+        m_data.m_listImage.push_back( imageData );
+    }
+
+    else if( rName == "Layout" )
+    {
+        const BuilderData::Layout layout( attr["id"], atoi( attr["width"] ),
+                atoi( attr["height"] ), atoi( attr["minwidth"] ),
+                atoi( attr["maxwidth"] ), atoi( attr["minheight"] ),
+                atoi( attr["maxheight"] ), m_curWindowId );
+        m_data.m_listLayout.push_back( layout );
+        m_curLayoutId = attr["id"];
+        m_curLayer = 0;
+    }
+
+    else if( rName == "Playlist" )
+    {
+        const BuilderData::List listData( attr["id"], atoi( attr["x"] ) +
+                m_xOffset, atoi( attr["y"] ) + m_yOffset, atoi( attr["width"]),
+                atoi( attr["height"] ), attr["lefttop"], attr["rightbottom"],
+                attr["font"], attr["var"], ConvertColor( attr["fgcolor"] ),
+                ConvertColor( attr["playcolor"] ),
+                ConvertColor( attr["bgcolor1"] ),
+                ConvertColor( attr["bgcolor2"] ),
+                ConvertColor( attr["selcolor"] ), attr["help"],
+                m_curLayer, m_curWindowId, m_curLayoutId );
+        m_curLayer++;
+        m_curListId = attr["id"];
+        m_data.m_listList.push_back( listData );
+    }
+
+    else if( rName == "RadialSlider" )
+    {
+        const BuilderData::RadialSlider radial( attr["id"], attr["visible"],
+                atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,
+                attr["lefttop"], attr["rightbottom"], attr["sequence"],
+                atoi( attr["nbImages"] ), atof( attr["minAngle"] ) * M_PI / 180,
+                atof( attr["maxAngle"] ) * M_PI / 180, attr["value"],
+                attr["tooltiptext"], attr["help"], m_curLayer, m_curWindowId,
+                m_curLayoutId );
+        m_curLayer++;
+        m_data.m_listRadialSlider.push_back( radial );
+    }
+
+    else if( rName == "Slider" )
+    {
+        string newValue = attr["value"];
+        if( m_curListId != "" )
+        {
+            // Slider associated to a list
+            newValue = "playlist.slider";
+        }
+        const BuilderData::Slider slider( attr["id"], attr["visible"],
+                atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,
+                attr["lefttop"], attr["rightbottom"], attr["up"], attr["down"],
+                attr["over"], attr["points"], atoi( attr["thickness"] ),
+                newValue, attr["tooltiptext"], attr["help"], m_curLayer,
+                m_curWindowId, m_curLayoutId );
+        m_curLayer++;
+        m_data.m_listSlider.push_back( slider );
+    }
+
+    else if( rName == "Text" )
+    {
+        const BuilderData::Text textData( attr["id"], atoi( attr["x"] ) +
+                m_xOffset, atoi( attr["y"] ) + m_yOffset, attr["font"],
+                attr["text"], atoi( attr["width"] ), attr["help"], m_curLayer,
+                m_curWindowId, m_curLayoutId );
+        m_curLayer++;
+        m_data.m_listText.push_back( textData );
+    }
+
+    else if( rName == "Theme" )
+    {
+        // Check the version
+        if( strcmp( attr["version"], SKINS_DTD_VERSION ) )
+        {
+            msg_Err( getIntf(), "Bad theme version : %s (you need version %s)",
+                     attr["version"], SKINS_DTD_VERSION );
+        }
+        const BuilderData::Theme theme( atoi( attr["magnet"] ),
+                atoi( attr["alpha"] ), atoi( attr["movealpha"] ),
+                atoi( attr["fadetime"] ) );
+        m_data.m_listTheme.push_back( theme );
+    }
+
+    else if( rName == "ThemeInfo" )
+    {
+        msg_Warn( getIntf(), "skin: %s  author: %s", attr["name"],
+                  attr["author"] );
+    }
+
+    else if( rName == "Window" )
+    {
+        const BuilderData::Window window( attr["id"],
+                atoi( attr["x"] ) + m_xOffset, atoi( attr["y"] ) + m_yOffset,
+                ConvertBoolean( attr["visible"] ),
+                ConvertBoolean( attr["dragdrop"] ),
+                ConvertBoolean( attr["playondrop"] ) );
+        m_data.m_listWindow.push_back( window );
+        m_curWindowId = attr["id"];
+    }
+}
+
+
+void SkinParser::handleEndElement( const string &rName )
+{
+    if( rName == "Group" )
+    {
+        m_xOffset -= m_xOffsetList.back();
+        m_yOffset -= m_yOffsetList.back();
+        m_xOffsetList.pop_back();
+        m_yOffsetList.pop_back();
+    }
+
+    else if( rName == "Playlist" )
+    {
+        m_curListId = "";
+    }
+}
+
+
+bool SkinParser::ConvertBoolean( const char *value ) const
+{
+    return strcmp( value, "true" ) == 0;
+}
+
+
+int SkinParser::ConvertColor( const char *transcolor ) const
+{
+    unsigned long iRed, iGreen, iBlue;
+    iRed = iGreen = iBlue = 0;
+    sscanf( transcolor, "#%2lX%2lX%2lX", &iRed, &iGreen, &iBlue );
+    return ( iRed << 16 | iGreen << 8 | iBlue );
+}
+
similarity index 66%
rename from modules/gui/skins2/parser/parser_context.hpp
rename to modules/gui/skins2/parser/skin_parser.hpp
index 6f2e9e242010b171d008bbd104d8d99e550aba9f..6b5f89dfe8a7eeea493246e9844a843b65c8ca86 100644 (file)
@@ -1,11 +1,10 @@
 /*****************************************************************************
- * parser_context.hpp
+ * skin_parser.hpp
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: parser_context.hpp,v 1.1 2004/01/03 23:31:33 asmax Exp $
+ * Copyright (C) 2004 VideoLAN
+ * $Id: skin_parser.hpp,v 1.1 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
  *
  * 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
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  *****************************************************************************/
 
-#ifndef PARSER_CONTEXT_HPP
-#define PARSER_CONTEXT_HPP
+#ifndef SKIN_PARSER_HPP
+#define SKIN_PARSER_HPP
 
-#include <vlc/intf.h>
+#include "xmlparser.hpp"
 #include "builder_data.hpp"
-#include <list>
 
 
-/// Context for the FLEX parser
-class ParserContext
+/// Parser for the skin DTD
+class SkinParser: public XMLParser
 {
     public:
-        ParserContext( intf_thread_t *pIntf ):
-            m_pIntf( pIntf ), m_xOffset( 0 ), m_yOffset( 0 ) {}
+        SkinParser( intf_thread_t *pIntf, const string &rFileName );
+        virtual ~SkinParser() {}
 
-        intf_thread_t *m_pIntf;
+        const BuilderData &getData() const { return m_data; }
 
+    private:
         /// Container for mapping data from the XML
         BuilderData m_data;
-
         /// Current IDs
         string m_curWindowId;
         string m_curLayoutId;
         string m_curListId;
-
         /// Current offset of the controls
         int m_xOffset, m_yOffset;
         list<int> m_xOffsetList, m_yOffsetList;
-
         /// Layer of the current control in the layout
         int m_curLayer;
+
+        /// Callbacks
+        virtual void handleBeginElement( const string &rName, AttrList_t &attr );
+        virtual void handleEndElement( const string &rName );
+
+        /// Helper functions
+        bool ConvertBoolean( const char *value ) const;
+        int ConvertColor( const char *transcolor ) const;
 };
 
 #endif
diff --git a/modules/gui/skins2/parser/wrappers.cpp b/modules/gui/skins2/parser/wrappers.cpp
deleted file mode 100644 (file)
index b6aef88..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/*****************************************************************************
- * wrappers.cpp
- *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: wrappers.cpp,v 1.1 2004/01/03 23:31:33 asmax Exp $
- *
- * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
- *
- * 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, USA.
- *****************************************************************************/
-
-#include <math.h>
-#include "wrappers.h"
-#include "parser_context.hpp"
-
-// Current DTD version
-#define SKINS_DTD_VERSION "2.0"
-
-// Local functions
-static bool ConvertBoolean( const char *value );
-static int  ConvertColor( const char *transcolor );
-
-// Useful macros
-#define DATA ((ParserContext*)pContext)->m_data
-#define WIN_ID ((ParserContext*)pContext)->m_curWindowId
-#define LAY_ID ((ParserContext*)pContext)->m_curLayoutId
-#define CUR_LIST ((ParserContext*)pContext)->m_curListId
-#define X_OFFSET ((ParserContext*)pContext)->m_xOffset
-#define Y_OFFSET ((ParserContext*)pContext)->m_yOffset
-#define LAYER ((ParserContext*)pContext)->m_curLayer
-
-
-void AddBitmap( void *pContext, char *name, char *file,
-                char *transcolor )
-{
-    const BuilderData::Bitmap bitmap( name, file,
-                                      ConvertColor( transcolor ) );
-    DATA.m_listBitmap.push_back( bitmap );
-}
-
-
-void AddEvent( void *pContext, char *name, char *event, char *key )
-{
-//    const BuilderData:: Command( name, event, key );
-}
-
-
-void AddFont( void *pContext, char *name, char *font, char *size,
-              char *color, char *italic, char *underline )
-{
-    const BuilderData::Font fontData( name, font, atoi( size ) );
-    DATA.m_listFont.push_back( fontData );
-}
-
-
-void AddThemeInfo( void *pContext, char *name, char *author,
-                   char *email, char *webpage )
-{
-    msg_Warn( ((ParserContext*)pContext)->m_pIntf,
-              "skin: %s  author: %s", name, author );
-}
-
-
-void StartWindow( void *pContext, char *name, char *x, char *y,
-                  char *visible, char *dragdrop, char *playOnDrop )
-{
-    const BuilderData::Window window( name, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, ConvertBoolean( visible ),
-        ConvertBoolean( dragdrop ), ConvertBoolean( playOnDrop ));
-    DATA.m_listWindow.push_back( window );
-    WIN_ID = name;
-}
-
-
-void EndWindow( void *pContext )
-{
-//    ((Builder*)pContext)->endWindow();
-}
-
-
-void StartLayout( void *pContext, char *id, char *width, char *height,
-                  char *minwidth, char *maxwidth, char *minheight,
-                  char *maxheight )
-{
-    const BuilderData::Layout layout( id, atoi( width ), atoi( height ),
-                                      atoi( minwidth ), atoi( maxwidth ),
-                                      atoi( minheight ), atoi( maxheight ),
-                                      WIN_ID );
-    DATA.m_listLayout.push_back( layout );
-    LAY_ID = id;
-    LAYER = 0;
-}
-
-
-void EndLayout( void *pContext )
-{
-//    ((Builder*)pContext)->endLayout();
-}
-
-
-void StartTheme( void *pContext, char *version, char *magnet,
-                 char *alpha, char *movealpha, char *fadetime )
-{
-    // Check the version
-    if( strcmp( version, SKINS_DTD_VERSION ) )
-    {
-        msg_Err( ((ParserContext*)pContext)->m_pIntf, "Bad theme version :"
-                 " %s (you need version %s)", version, SKINS_DTD_VERSION );
-    }
-    const BuilderData::Theme theme( atoi( magnet ),
-        atoi( alpha ), atoi( movealpha ), atoi( fadetime ) );
-    DATA.m_listTheme.push_back( theme );
-}
-
-
-void EndTheme( void *pContext )
-{
- //   ((Builder*)pContext)->endTheme();
-}
-
-
-void StartGroup( void *pContext, char *x, char *y )
-{
-    X_OFFSET += atoi( x );
-    Y_OFFSET += atoi( y );
-    ((ParserContext*)pContext)->m_xOffsetList.push_back( atoi( x ) );
-    ((ParserContext*)pContext)->m_yOffsetList.push_back( atoi( y ) );
-}
-
-
-void EndGroup( void *pContext )
-{
-    X_OFFSET -= ((ParserContext*)pContext)->m_xOffsetList.back();
-    Y_OFFSET -= ((ParserContext*)pContext)->m_yOffsetList.back();
-    ((ParserContext*)pContext)->m_xOffsetList.pop_back();
-    ((ParserContext*)pContext)->m_yOffsetList.pop_back();
-}
-
-
-void AddAnchor( void *pContext, char *x, char *y, char *len,
-                char *priority )
-{
-    const BuilderData::Anchor anchor( atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, atoi( len ), atoi( priority ), WIN_ID );
-    DATA.m_listAnchor.push_back( anchor );
-}
-
-
-//---------------------------------------------------------------------------
-// CONTROLS
-//---------------------------------------------------------------------------
-void AddImage( void *pContext, char *id, char *visible, char *x,
-               char *y, char *lefttop, char *rightbottom, char *image,
-               char *event, char *help )
-{
-    const BuilderData::Image imageData( id, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, lefttop, rightbottom, ConvertBoolean( visible ),
-        image, event, help, LAYER, WIN_ID, LAY_ID );
-    LAYER++;
-    DATA.m_listImage.push_back( imageData );
-}
-
-
-void AddRectangle( void *pContext, char *id, char *visible, char *x,
-                   char *y, char *w, char *h, char *color, char *event,
-                   char *help )
-{
-//    msg_Warn( ((Builder*)pContext)->getIntf(), "Do we _really_ need a Rectangle control?" );
-}
-
-
-void AddButton( void *pContext,
-    char *id,
-    char *x, char *y, char *lefttop, char *rightbottom,
-    char *up, char *down, char *over,
-    char *action, char *tooltiptext, char *help )
-{
-    const BuilderData::Button button( id, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, lefttop, rightbottom, up, down, over, action,
-        tooltiptext, help, LAYER, WIN_ID, LAY_ID );
-    LAYER++;
-    DATA.m_listButton.push_back( button );
-}
-
-
-void AddCheckBox( void *pContext, char *id,
-                  char *x, char *y, char *lefttop, char *rightbottom,
-                  char *up1, char *down1, char *over1, char *up2,
-                  char *down2, char *over2, char *state, char *action1,
-                  char *action2, char *tooltiptext1, char *tooltiptext2,
-                  char *help )
-{
-    const BuilderData::Checkbox checkbox( id, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, lefttop, rightbottom, up1, down1, over1, up2,
-        down2, over2, state, action1, action2, tooltiptext1, tooltiptext2,
-        help, LAYER, WIN_ID, LAY_ID );
-    LAYER++;
-    DATA.m_listCheckbox.push_back( checkbox );
-}
-
-
-void AddSlider( void *pContext, char *id, char *visible, char *x, char *y,
-                char *lefttop, char *rightbottom,
-                char *up, char *down, char *over, char *points,
-                char *thickness, char *value, char *tooltiptext, char *help )
-{
-    string newValue = value;
-    if( CUR_LIST != "" )
-    {
-        // Slider associated to a list
-        // XXX
-        newValue = "playlist.slider";
-    }
-    const BuilderData::Slider slider( id, visible, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, lefttop, rightbottom, up, down, over, points,
-        atoi( thickness ), newValue, tooltiptext, help, LAYER, WIN_ID, LAY_ID );
-    LAYER++;
-    DATA.m_listSlider.push_back( slider );
-}
-
-
-void AddRadialSlider( void *pContext, char *id, char *visible, char *x, char *y,
-                      char *lefttop, char *rightbottom, char *sequence,
-                      char *nbImages, char *minAngle, char *maxAngle,
-                      char *value, char *tooltiptext, char *help )
-{
-    const BuilderData::RadialSlider radial( id, visible, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, lefttop, rightbottom, sequence, atoi( nbImages ),
-        atof( minAngle ) * M_PI / 180, atof( maxAngle ) * M_PI / 180, value,
-        tooltiptext, help, LAYER, WIN_ID, LAY_ID );
-    LAYER++;
-    DATA.m_listRadialSlider.push_back( radial );
-}
-
-
-void AddPlaylist( void *pContext, char *id, char *visible, char *x,
-                  char *y, char *width, char *height, char *lefttop,
-                  char *rightbottom, char *font, char *var, char *fgcolor,
-                  char *playcolor, char *bgcolor1, char *bgcolor2,
-                  char *selcolor, char *help )
-{
-    const BuilderData::List listData( id, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, atoi( width), atoi( height ), lefttop,
-        rightbottom, font, var, ConvertColor( fgcolor ),
-        ConvertColor( playcolor ), ConvertColor( bgcolor1 ),
-        ConvertColor( bgcolor2 ), ConvertColor( selcolor ), help, LAYER,
-        WIN_ID, LAY_ID );
-    LAYER++;
-    CUR_LIST = id;
-    DATA.m_listList.push_back( listData );
-}
-
-
-void AddPlaylistEnd( void *pContext )
-{
-    CUR_LIST = "";
-}
-
-
-void AddText( void *pContext, char *id, char *visible, char *x,
-              char *y, char *text, char *font, char *align, char *width,
-              char *display, char *scroll, char *scrollspace, char *help )
-{
-    const BuilderData::Text textData( id, atoi( x ) + X_OFFSET,
-        atoi( y ) + Y_OFFSET, font, text, atoi( width ), help, LAYER, WIN_ID,
-        LAY_ID );
-    LAYER++;
-    DATA.m_listText.push_back( textData );
-}
-
-
-
-
-//---------------------------------------------------------------------------
-// Useful functions
-//---------------------------------------------------------------------------
-
-static bool ConvertBoolean( const char *value )
-{
-    return strcmp( value, "true" ) == 0;
-}
-
-
-static int ConvertColor( const char *transcolor )
-{
-    unsigned long iRed, iGreen, iBlue;
-    iRed = iGreen = iBlue = 0;
-    sscanf( transcolor, "#%2lX%2lX%2lX", &iRed, &iGreen, &iBlue );
-    return ( iRed << 16 | iGreen << 8 | iBlue );
-}
-
diff --git a/modules/gui/skins2/parser/wrappers.h b/modules/gui/skins2/parser/wrappers.h
deleted file mode 100644 (file)
index 641d481..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-//---------------------------------------------------------------------------
-// Divers
-//---------------------------------------------------------------------------
-void AddAnchor( void *pContext, char *x, char *y, char *len,
-                char *priority );
-void AddBitmap( void *pContext, char *name, char *file,
-                char *transcolor );
-void AddEvent( void *pContext, char *name, char *event, char *key );
-void AddFont( void *pContext, char *name, char *font, char *size,
-              char *color, char *italic, char *underline );
-void StartGroup( void *pContext, char *x, char *y );
-void EndGroup( void *pContext );
-
-//---------------------------------------------------------------------------
-// Theme
-//---------------------------------------------------------------------------
-void AddThemeInfo( void *pContext, char *name, char *author,
-                   char *email, char *webpage );
-void StartTheme( void *pContext, char *version, char *magnet,
-                 char *alpha, char *movealpha, char *fadetime );
-void EndTheme( void *pContext );
-
-//---------------------------------------------------------------------------
-// Window
-//---------------------------------------------------------------------------
-void StartWindow( void *pContext, char *name, char *x, char *y,
-                  char *visible, char *dragdrop, char *playOnDrop );
-void EndWindow( void *pContext );
-
-//---------------------------------------------------------------------------
-// Layout
-//---------------------------------------------------------------------------
-void StartLayout( void *pContext, char *id, char *width, char *height,
-                  char *minwidth, char *maxwidth, char *minheight,
-                  char *maxheight );
-void EndLayout( void *pContext );
-
-//---------------------------------------------------------------------------
-// Control
-//---------------------------------------------------------------------------
-void AddImage( void *pContext, char *id, char *visible, char *x,
-               char *y, char *lefttop, char *rightbottom, char *image,
-               char *event, char *help );
-
-void AddRectangle( void *pContext, char *id, char *visible, char *x,
-                   char *y, char *w, char *h, char *color, char *event,
-                   char *help );
-
-void AddButton( void *pContext, char *id,
-                char *x, char *y, char *lefttop, char *rightbottom,
-                char *up, char *down, char *over,
-                char *action, char *tooltiptext, char *help );
-
-void AddCheckBox( void *pContext, char *id,
-                  char *x, char *y, char *lefttop, char *rightbottom,
-                  char *up1, char *down1, char *over1, char *up2,
-                  char *down2, char *over2, char *state, char *action1,
-                  char *action2, char *tooltiptext1, char *tooltiptext2,
-                  char *help );
-
-void AddSlider( void *pContext, char *id, char *visible, char *x, char *y,
-                char *lefttop, char *rightbottom,
-                char *up, char *down, char *over, char *points,
-                char *thickness, char *value, char *tooltiptext, char *help );
-
-void AddRadialSlider( void *pContext, char *id, char *visible, char *x, char *y,
-                      char *lefttop, char *rightbottom, char *sequence,
-                      char *nbImages, char *minAngle, char *maxAngle,
-                      char *value, char *tooltiptext, char *help );
-
-void AddText( void *pContext, char *id, char *visible, char *x, char *y,
-              char *text, char *font, char *align, char *width, char *display,
-              char *scroll, char *scrollspace, char *help );
-
-void AddPlaylist( void *pContext, char *id, char *visible, char *x,
-              char *y, char *width, char *height, char *lefttop,
-              char *rightbottom, char *font, char *var, char *fgcolor,
-              char *playcolor, char *bgcolor1, char *bgcolor2, char *selcolor,
-              char *help );
-
-void AddPlaylistEnd( void *pContext );
-//---------------------------------------------------------------------------
-
-#if defined(__cplusplus)
-}
-#endif
index a20edaf57d84ed55615e1c5ebb83f4e34a190c7e..694cdb1f9f98cf4d74765f4a3921f225e5deda52 100644 (file)
@@ -2,10 +2,9 @@
  * xmlparser.cpp
  *****************************************************************************
  * Copyright (C) 2004 VideoLAN
- * $Id: xmlparser.cpp,v 1.2 2004/01/24 14:25:16 asmax Exp $
+ * $Id: xmlparser.cpp,v 1.3 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
  *
  * 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
@@ -34,7 +33,12 @@ XMLParser::XMLParser( intf_thread_t *pIntf, const string &rFileName ):
                  rFileName.c_str() );
     }
 
+    // Activate DTD validation
+    xmlTextReaderSetParserProp( m_pReader, XML_PARSER_DEFAULTATTRS, 1 );
     xmlTextReaderSetParserProp( m_pReader, XML_PARSER_VALIDATE, 1 );
+
+    // Set the error handler
+    xmlTextReaderSetErrorHandler( m_pReader, handleError, this );
 }
 
 
@@ -47,13 +51,15 @@ XMLParser::~XMLParser()
 }
 
 
-int XMLParser::parse()
+bool XMLParser::parse()
 {
     if( !m_pReader )
     {
         return -1;
     }
 
+    m_errors = false;
+
     int ret = xmlTextReaderRead( m_pReader );
     while (ret == 1)
     {
@@ -104,23 +110,17 @@ int XMLParser::parse()
         }
         ret = xmlTextReaderRead( m_pReader );
     }
-    return 0;
+    return (ret == 0 && !m_errors );
 }
 
 
-void XMLParser::handleBeginElement( const string &rName,
-                                    AttrList_t &attributes )
+void XMLParser::handleError( void *pArg,  const char *pMsg,
+                             xmlParserSeverities severity,
+                             xmlTextReaderLocatorPtr locator)
 {
-    fprintf(stderr,"%s\n", rName.c_str());
-    AttrList_t::const_iterator it;
-    for (it = attributes.begin(); it != attributes.end(); it++)
-    {
-        fprintf(stderr,"  %s = %s\n", (*it).first, (*it).second);
-    }
+    XMLParser *pThis = (XMLParser*)pArg;
+    int line = xmlTextReaderLocatorLineNumber( locator );
+    msg_Err( pThis->getIntf(), "XML parser error (line %d) : %s", line, pMsg );
+    pThis->m_errors = true;
 }
-
-
-void XMLParser::handleEndElement( const string &rName )
-{
-    fprintf(stderr,"--> %s\n", rName.c_str());
-} 
index d79958a2f3c2e023401675c1bb28af54839c1cd4..f64302b7fbca5610bf7d0627368c5b264e568789 100644 (file)
@@ -2,10 +2,9 @@
  * xmlparser.hpp
  *****************************************************************************
  * Copyright (C) 2004 VideoLAN
- * $Id: xmlparser.hpp,v 1.2 2004/01/24 14:25:16 asmax Exp $
+ * $Id: xmlparser.hpp,v 1.3 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
- *          Olivier Teulière <ipkiss@via.ecp.fr>
  *
  * 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
@@ -38,9 +37,10 @@ class XMLParser: public SkinObject
         XMLParser( intf_thread_t *pIntf, const string &rFileName );
         virtual ~XMLParser();
 
-        int parse();
+        /// Parse the file. Returns true on success
+        bool parse();
 
-    private:
+    protected:
         // Key comparison function for type "const char*"
         struct ltstr
         {
@@ -52,11 +52,20 @@ class XMLParser: public SkinObject
         /// Type for attribute lists
         typedef map<const char*, const char*, ltstr> AttrList_t;
 
+        /// Callbacks
+        virtual void handleBeginElement( const string &rName, AttrList_t &attr ) {}
+        virtual void handleEndElement( const string &rName ) {}
+
+    private:
         /// Reader context
         xmlTextReaderPtr m_pReader;
+        /// Flag for validation errors
+        bool m_errors;
 
-        void handleBeginElement( const string &rName, AttrList_t &attributes );
-        void handleEndElement( const string &rName );
+        /// Callback for validation errors
+        static void handleError( void *pArg,  const char *pMsg,
+                                 xmlParserSeverities severity,
+                                 xmlTextReaderLocatorPtr locator);
 };
 
 #endif
index 78f29e1634ceb53f9332c86163e72a0be579c89c..a74c02cae0cd02160eba78713a89b8e11415bb94 100755 (executable)
@@ -2,7 +2,7 @@
  * theme_loader.cpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: theme_loader.cpp,v 1.6 2004/01/24 14:25:16 asmax Exp $
+ * $Id: theme_loader.cpp,v 1.7 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -25,8 +25,7 @@
 #include "theme_loader.hpp"
 #include "theme.hpp"
 #include "../parser/builder.hpp"
-#include "../parser/parser_context.hpp"
-#include "../parser/xmlparser.hpp"
+#include "../parser/skin_parser.hpp"
 #include "../src/os_factory.hpp"
 #include "../src/window_manager.hpp"
 
@@ -54,12 +53,6 @@ int tar_close       ( TAR *t );
 
 #define DEFAULT_XML_FILE "theme.xml"
 
-extern "C"
-{
-    extern FILE *yyin;
-    int yylex( void *pContext );
-    void yyrestart( FILE *input_file );
-}
 
 bool ThemeLoader::load( const string &fileName )
 {
@@ -166,20 +159,6 @@ void ThemeLoader::deleteTempFiles( const string &path )
 
 bool ThemeLoader::parse( const string &xmlFile )
 {
-    XMLParser parser( getIntf(), xmlFile );
-    parser.parse();
-
-    // Set the file to parse
-    FILE *file = fopen( xmlFile.c_str(), "r" );
-    if( file == NULL )
-    {
-        // Skin cannot be opened
-        msg_Err( getIntf(), "Cannot open the specified skin file: %s",
-                 xmlFile.c_str() );
-        return false;
-    }
-    yyrestart( file );
-
     // File loaded
     msg_Dbg( getIntf(), "Using skin file: %s", xmlFile.c_str() );
 
@@ -197,22 +176,19 @@ bool ThemeLoader::parse( const string &xmlFile )
     }
 
     // Start the parser
-    ParserContext context( getIntf() );
-    int lex = yylex( &context );
-    fclose( file );
-
-    if( lex )
+    SkinParser parser( getIntf(), xmlFile );
+    bool ret = parser.parse();
+    if( !ret )
     {
+        msg_Err( getIntf(), "Failed to parse %s", xmlFile.c_str() );
         // Set old working directory to current
         chdir( cwd );
         delete[] cwd;
-
-        msg_Warn( getIntf(), "yylex failed: %i", lex );
         return false;
     }
 
     // Build and store the theme
-    Builder builder( getIntf(), context.m_data );
+    Builder builder( getIntf(), parser.getData() );
     getIntf()->p_sys->p_theme = builder.build();
 
     // Set old working directory to current.
index 6c2dc76d768e6dfc10aeaae2c136b6e256fc64b9..2d8b455585277dc2b9ce6a9cfb46ffe62b33bddf 100644 (file)
@@ -2,7 +2,7 @@
  * tooltip.cpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: tooltip.cpp,v 1.2 2004/01/11 17:12:17 asmax Exp $
+ * $Id: tooltip.cpp,v 1.3 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -48,7 +48,7 @@ Tooltip::Tooltip( intf_thread_t *pIntf, const GenericFont &rFont, int delay ):
 
 Tooltip::~Tooltip()
 {
//   VarManager::instance( getIntf() )->getTooltipText().delObserver( this );
+    VarManager::instance( getIntf() )->getTooltipText().delObserver( this );
     SKINS_DELETE( m_pTimer );
     SKINS_DELETE( m_pOsTooltip );
     if( m_pImage )
index 201db379d7d7acea01324b4826850e871b363935..64b8e793dcaf9240f37bd11b6e91c1194e451667 100755 (executable)
@@ -2,7 +2,7 @@
  * window_manager.cpp
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: window_manager.cpp,v 1.3 2004/01/18 00:50:24 asmax Exp $
+ * $Id: window_manager.cpp,v 1.4 2004/01/25 11:44:19 asmax Exp $
  *
  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
  *          Olivier Teulière <ipkiss@via.ecp.fr>
@@ -143,8 +143,12 @@ void WindowManager::raise( GenericWindow *pWindow )
     WinSet_t::const_iterator it;
     for( it = m_allWindows.begin(); it != m_allWindows.end(); it++ )
     {
-        (*it)->raise();
+        if( *it !=  pWindow )
+        {
+            (*it)->raise();
+        }
     }
+    pWindow->raise();
 }
 
 
index 3dd1bc9a4b752f5b947f027d6da01f953badfc3b..c2753c8e0e2544191cbee2487b68e43be0a05992 100644 (file)
@@ -44,8 +44,8 @@
     <!ATTLIST Window
         id          CDATA   #REQUIRED
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         dragdrop    CDATA   "true"
         playondrop  CDATA   "true"
     >
 <!ELEMENT Group (Group|Image|Button|Playlist|Slider|RadialSlider|Text|CheckBox|
                  Rectangle|Anchor)+>
     <!ATTLIST Group
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
     >
 
 <!-- Anchors -->
 <!ELEMENT Anchor EMPTY>
     <!ATTLIST Anchor
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         priority    CDATA   #REQUIRED
         range       CDATA   "10"
     >
@@ -81,8 +81,8 @@
     <!ATTLIST Image
         id          CDATA   "none"
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         lefttop     CDATA   "lefttop"
         rightbottom CDATA   "lefttop"
         image       CDATA   #REQUIRED
@@ -93,8 +93,8 @@
     <!ATTLIST Rectangle
         id          CDATA   "none"
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         w           CDATA   "50"
         h           CDATA   "50"
         color       CDATA   "#C0C0C0"
 <!ELEMENT Button EMPTY>
     <!ATTLIST Button
         id          CDATA   "none"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         lefttop     CDATA   "lefttop"
         rightbottom CDATA   "lefttop"
         up          CDATA   #REQUIRED
 <!ELEMENT CheckBox EMPTY>
     <!ATTLIST CheckBox
         id           CDATA   "none"
-        x            CDATA   "\0"
-        y            CDATA   "\0"
+        x            CDATA   "0"
+        y            CDATA   "0"
         lefttop      CDATA   "lefttop"
         rightbottom  CDATA   "lefttop"
         up1          CDATA   #REQUIRED
     <!ATTLIST Slider
         id          CDATA   "none"
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         lefttop     CDATA   "lefttop"
         rightbottom CDATA   "lefttop"
         up          CDATA   #REQUIRED
     <!ATTLIST RadialSlider
         id          CDATA   "none"
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
         lefttop     CDATA   "lefttop"
         rightbottom CDATA   "lefttop"
         sequence    CDATA   #REQUIRED
         nbimages    CDATA   #REQUIRED
-        minangle    CDATA   "\0"
+        minangle    CDATA   "0"
         maxangle    CDATA   "360"
         value       CDATA   "none"
         tooltiptext CDATA   "\0"
     <!ATTLIST Text
         id          CDATA   "none"
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        text        CDATA   ""
+        x           CDATA   "0"
+        y           CDATA   "0"
+        text        CDATA   "\0"
         font        CDATA   #REQUIRED
         align       CDATA   "left"
-        width       CDATA   "\0"
+        width       CDATA   "0"
         display     CDATA   "none"
         scroll      CDATA   "true"
         scrollspace CDATA   "20"
     <!ATTLIST Playlist
         id          CDATA   #REQUIRED
         visible     CDATA   "true"
-        x           CDATA   "\0"
-        y           CDATA   "\0"
-        width       CDATA   "\0"
-        height      CDATA   "\0"
+        x           CDATA   "0"
+        y           CDATA   "0"
+        width       CDATA   "0"
+        height      CDATA   "0"
         lefttop     CDATA   "lefttop"
         rightbottom CDATA   "lefttop"
         font        CDATA   #REQUIRED