develooper Front page | perl.cvs.parrot | Postings from December 2008

[svn:parrot] r34048 - in branches/rakudoreg: . compilers/bcg compilers/imcc compilers/pirc/new config/auto config/auto/aio config/gen config/gen/makefiles docs docs/book docs/dev docs/pdds docs/pdds/draft docs/project include/parrot languages/lua/src/pmc

From:
jonathan
Date:
December 17, 2008 13:32
Subject:
[svn:parrot] r34048 - in branches/rakudoreg: . compilers/bcg compilers/imcc compilers/pirc/new config/auto config/auto/aio config/gen config/gen/makefiles docs docs/book docs/dev docs/pdds docs/pdds/draft docs/project include/parrot languages/lua/src/pmc
Message ID:
20081217213158.2C8CECBA12@x12.develooper.com
Author: jonathan
Date: Wed Dec 17 13:31:52 2008
New Revision: 34048

Added:
   branches/rakudoreg/languages/perl6/src/classes/Callable.pir
      - copied unchanged from r34047, /trunk/languages/perl6/src/classes/Callable.pir
Removed:
   branches/rakudoreg/compilers/bcg/
   branches/rakudoreg/config/auto/aio/
   branches/rakudoreg/config/auto/aio.pm
   branches/rakudoreg/config/gen/makefiles/bcg.in
   branches/rakudoreg/t/steps/auto_aio-01.t
Modified:
   branches/rakudoreg/   (props changed)
   branches/rakudoreg/CREDITS
   branches/rakudoreg/ChangeLog
   branches/rakudoreg/Configure.pl
   branches/rakudoreg/DEPRECATED.pod
   branches/rakudoreg/MANIFEST
   branches/rakudoreg/MANIFEST.generated
   branches/rakudoreg/META.yml
   branches/rakudoreg/NEWS
   branches/rakudoreg/PLATFORMS
   branches/rakudoreg/README
   branches/rakudoreg/VERSION
   branches/rakudoreg/compilers/imcc/imcc.l
   branches/rakudoreg/compilers/imcc/imcc.y
   branches/rakudoreg/compilers/imcc/imclexer.c
   branches/rakudoreg/compilers/imcc/imcparser.c
   branches/rakudoreg/compilers/imcc/parser_util.c
   branches/rakudoreg/compilers/imcc/pbc.c
   branches/rakudoreg/compilers/pirc/new/pir.y
   branches/rakudoreg/compilers/pirc/new/piremit.c
   branches/rakudoreg/compilers/pirc/new/pirparser.c
   branches/rakudoreg/config/gen/makefiles.pm
   branches/rakudoreg/config/gen/makefiles/root.in
   branches/rakudoreg/docs/book/ch07_testing_and_debugging.pod   (props changed)
   branches/rakudoreg/docs/book/ch08_architecture.pod   (props changed)
   branches/rakudoreg/docs/book/ch09_pct.pod   (props changed)
   branches/rakudoreg/docs/book/ch10_hlls.pod   (props changed)
   branches/rakudoreg/docs/book/ch11_pmcs.pod   (props changed)
   branches/rakudoreg/docs/book/ch12_opcodes.pod   (props changed)
   branches/rakudoreg/docs/book/ch13_reference.pod   (props changed)
   branches/rakudoreg/docs/dev/c_functions.pod   (props changed)
   branches/rakudoreg/docs/parrothist.pod
   branches/rakudoreg/docs/pdds/draft/pdd14_numbers.pod
   branches/rakudoreg/docs/pdds/pdd19_pir.pod
   branches/rakudoreg/docs/project/release_manager_guide.pod
   branches/rakudoreg/include/parrot/hash.h
   branches/rakudoreg/include/parrot/interpreter.h
   branches/rakudoreg/include/parrot/string_funcs.h
   branches/rakudoreg/languages/lua/src/pmc/luatable.pmc
   branches/rakudoreg/languages/lua/t/test/bisect-output-win32.txt   (props changed)
   branches/rakudoreg/languages/perl6/config/makefiles/root.in
   branches/rakudoreg/languages/perl6/docs/spectest-progress.csv
   branches/rakudoreg/languages/perl6/src/builtins/any-str.pir
   branches/rakudoreg/languages/perl6/src/builtins/guts.pir
   branches/rakudoreg/languages/perl6/src/classes/Code.pir
   branches/rakudoreg/languages/perl6/src/classes/Int.pir
   branches/rakudoreg/languages/perl6/src/classes/List.pir
   branches/rakudoreg/languages/perl6/src/classes/Mapping.pir
   branches/rakudoreg/languages/perl6/src/classes/Num.pir
   branches/rakudoreg/languages/perl6/src/classes/Object.pir
   branches/rakudoreg/languages/perl6/src/classes/Role.pir
   branches/rakudoreg/languages/perl6/src/classes/Str.pir
   branches/rakudoreg/languages/perl6/src/parser/actions.pm
   branches/rakudoreg/languages/perl6/src/pmc/perl6multisub.pmc
   branches/rakudoreg/languages/perl6/t/pmc/perl6multisub-type.t
   branches/rakudoreg/languages/pipp/ROADMAP   (props changed)
   branches/rakudoreg/languages/pipp/docs/pipp.pod   (props changed)
   branches/rakudoreg/languages/pipp/src/pipp_hash.c
   branches/rakudoreg/lib/Parrot/Configure/Step/List.pm
   branches/rakudoreg/lib/Parrot/Docs/Section/Compilers.pm
   branches/rakudoreg/parrot.spec
   branches/rakudoreg/src/hash.c
   branches/rakudoreg/src/pmc/addrregistry.pmc
   branches/rakudoreg/src/pmc/lexinfo.pmc
   branches/rakudoreg/src/pmc/object.pmc
   branches/rakudoreg/src/string.c
   branches/rakudoreg/t/compilers/imcc/syn/macro.t
   branches/rakudoreg/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/rakudoreg/t/configure/testlib/adefectivefoobar
   branches/rakudoreg/t/configure/testlib/bdefectivefoobar
   branches/rakudoreg/t/configure/testlib/cdefectivefoobar
   branches/rakudoreg/t/configure/testlib/ddefectivefoobar
   branches/rakudoreg/t/configure/testlib/verbosefoobar
   branches/rakudoreg/t/native_pbc/integer_1.pbc
   branches/rakudoreg/t/native_pbc/integer_2.pbc
   branches/rakudoreg/t/native_pbc/integer_3.pbc
   branches/rakudoreg/t/native_pbc/integer_4.pbc
   branches/rakudoreg/t/native_pbc/number_1.pbc
   branches/rakudoreg/t/native_pbc/number_2.pbc
   branches/rakudoreg/t/native_pbc/number_3.pbc
   branches/rakudoreg/t/native_pbc/number_4.pbc
   branches/rakudoreg/t/native_pbc/number_5.pbc
   branches/rakudoreg/t/native_pbc/string_1.pbc
   branches/rakudoreg/t/native_pbc/string_2.pbc
   branches/rakudoreg/t/oo/new.t
   branches/rakudoreg/t/perl/Parrot_Distribution.t
   branches/rakudoreg/t/pmc/iterator.t
   branches/rakudoreg/t/pmc/orderedhash.t
   branches/rakudoreg/t/steps/auto_snprintf-01.t
   branches/rakudoreg/tools/util/release.json
   branches/rakudoreg/xconf/samples/testfoobar
   branches/rakudoreg/xconf/samples/yourfoobar

Log:
[rakudo] Sync up branch with trunk.

Modified: branches/rakudoreg/CREDITS
==============================================================================
--- branches/rakudoreg/CREDITS	(original)
+++ branches/rakudoreg/CREDITS	Wed Dec 17 13:31:52 2008
@@ -73,8 +73,9 @@
 E: yDNA@cpan.org
 
 N: Andrew Whitworth
-D: PDD09 Garbage Collector
+D: Internals development
 D: Documentation
+D: Release manager for 0.8.2
 E: wknight8111@gmail.com
 
 N: Andy Dougherty

Modified: branches/rakudoreg/ChangeLog
==============================================================================
--- branches/rakudoreg/ChangeLog	(original)
+++ branches/rakudoreg/ChangeLog	Wed Dec 17 13:31:52 2008
@@ -1,5 +1,9 @@
 #1 $Id$
 
+2008.12.16    Whiteknight
+        * Released 0.8.2
+        See NEWS for more.
+
 2008.11.18    chromatic
 	* Released 0.8.1
 	See NEWS for more.

Modified: branches/rakudoreg/Configure.pl
==============================================================================
--- branches/rakudoreg/Configure.pl	(original)
+++ branches/rakudoreg/Configure.pl	Wed Dec 17 13:31:52 2008
@@ -168,7 +168,7 @@
 
 =item C<--ask>
 
-This turns on the user prompts during configuraion.  Available only in
+This turns on the user prompts during configuration.  Available only in
 Command-Line interface.  Not available in Configuration-File interface.
 
 =item C<--test>
@@ -606,7 +606,6 @@
     auto::signal
     auto::socklen_t
     auto::env
-    auto::aio
     auto::gmp
     auto::readline
     auto::gdbm

Modified: branches/rakudoreg/DEPRECATED.pod
==============================================================================
--- branches/rakudoreg/DEPRECATED.pod	(original)
+++ branches/rakudoreg/DEPRECATED.pod	Wed Dec 17 13:31:52 2008
@@ -93,18 +93,6 @@
 
 =over 4
 
-=item * String indexing [post 0.8.2]
-
-String indexing sugar is deprecated. This means you can no longer write
-
-  $S0[1]
-
-to mean substr, $S0, 1, 1. Use the C<substr> op instead.
-
-=item * C<.namespace [ "a" .. "b" ]> [post 0.5.0]
-
-See RT #46715.
-
 =item * Assignment syntax with opcodes [post 0.8.2]
 
 See RT #36283.  When the first argument of an opcode is C<OUT>, then

Modified: branches/rakudoreg/MANIFEST
==============================================================================
--- branches/rakudoreg/MANIFEST	(original)
+++ branches/rakudoreg/MANIFEST	Wed Dec 17 13:31:52 2008
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Tue Dec 16 22:45:43 2008 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Dec 17 03:21:14 2008 UT
 #
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
@@ -35,21 +35,6 @@
 apps/p3/p3p.html                                            [apps/p3]
 apps/p3/parrot_small.png                                    [apps/p3]
 apps/p3/slides.js                                           [apps/p3]
-compilers/bcg/include/bcg.h                                 []
-compilers/bcg/src/bcg.c                                     []
-compilers/bcg/src/bcg_emitter.h                             []
-compilers/bcg/src/bcg_emitter_pasm.c                        []
-compilers/bcg/src/bcg_logger.c                              []
-compilers/bcg/src/bcg_logger.h                              []
-compilers/bcg/src/bcg_op.c                                  []
-compilers/bcg/src/bcg_private.h                             []
-compilers/bcg/src/bcg_reg_alloc.h                           []
-compilers/bcg/src/bcg_reg_alloc_vanilla.c                   []
-compilers/bcg/src/bcg_unit.c                                []
-compilers/bcg/src/bcg_utils.c                               []
-compilers/bcg/src/bcg_utils.h                               []
-compilers/bcg/src/pmc/bcg.pmc                               []
-compilers/bcg/t/BCG.t                                       []
 compilers/imcc/ChangeLog                                    []
 compilers/imcc/cfg.c                                        []
 compilers/imcc/cfg.h                                        []
@@ -235,8 +220,6 @@
 compilers/tge/TGE/Rule.pir                                  []
 compilers/tge/TGE/Tree.pir                                  []
 compilers/tge/tgc.pir                                       []
-config/auto/aio.pm                                          []
-config/auto/aio/aio.in                                      []
 config/auto/alignptrs.pm                                    []
 config/auto/alignptrs/test_c.in                             []
 config/auto/arch.pm                                         []
@@ -344,7 +327,6 @@
 config/gen/languages.pm                                     []
 config/gen/makefiles.pm                                     []
 config/gen/makefiles/CFLAGS.in                              []
-config/gen/makefiles/bcg.in                                 []
 config/gen/makefiles/docs.in                                []
 config/gen/makefiles/dynoplibs.in                           []
 config/gen/makefiles/dynoplibs_pl.in                        []
@@ -2129,6 +2111,7 @@
 languages/perl6/src/classes/Associative.pir                 [perl6]
 languages/perl6/src/classes/Block.pir                       [perl6]
 languages/perl6/src/classes/Bool.pir                        [perl6]
+languages/perl6/src/classes/Callable.pir                    [perl6]
 languages/perl6/src/classes/Capture.pir                     [perl6]
 languages/perl6/src/classes/Code.pir                        [perl6]
 languages/perl6/src/classes/Complex.pir                     [perl6]
@@ -3610,7 +3593,6 @@
 t/src/exit.t                                                []
 t/src/extend.t                                              []
 t/src/warnings.t                                            []
-t/steps/auto_aio-01.t                                       []
 t/steps/auto_alignptrs-01.t                                 []
 t/steps/auto_alignptrs-02.t                                 []
 t/steps/auto_arch-01.t                                      []

Modified: branches/rakudoreg/MANIFEST.generated
==============================================================================
--- branches/rakudoreg/MANIFEST.generated	(original)
+++ branches/rakudoreg/MANIFEST.generated	Wed Dec 17 13:31:52 2008
@@ -2,11 +2,11 @@
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
 # Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.0.8.1.dylib                    [main]lib
+blib/lib/libparrot.0.8.2.dylib                    [main]lib
 blib/lib/libparrot.a                              [main]lib
 blib/lib/libparrot.dylib                          [main]lib
 blib/lib/libparrot.so                             [main]lib
-blib/lib/libparrot.so.0.8.1                       [main]lib
+blib/lib/libparrot.so.0.8.2                       [main]lib
 compilers/imcc/imclexer.c                         [main]
 compilers/json/JSON.pbc                           [main]
 compilers/json/JSON/grammar.pbc                   [main]

Modified: branches/rakudoreg/META.yml
==============================================================================
--- branches/rakudoreg/META.yml	(original)
+++ branches/rakudoreg/META.yml	Wed Dec 17 13:31:52 2008
@@ -4,7 +4,7 @@
 # See http://module-build.sourceforge.net/META-spec-current.html for details.
 ---
 name: parrot
-version: 0.8.1
+version: 0.8.2
 author: parrot-dev@parrot.org
 abstract: a virtual machine designed for dynamic languages
 license: artistic2

Modified: branches/rakudoreg/NEWS
==============================================================================
--- branches/rakudoreg/NEWS	(original)
+++ branches/rakudoreg/NEWS	Wed Dec 17 13:31:52 2008
@@ -1,10 +1,24 @@
 # $Id$
 
-New in December 2008 Release
+New in January 2009 release
+- Compilers
+  + IMCC
+    - removed keyed string indexing, e.g. $S0[1].
+    - removed slice syntax, e.g. $P0[1..2]
+    - removed .namespace <ident>/.endnamespace <ident> pair
+  + PIRC
+    - refactoring of data structures
+    - various bug fixes and updates
+
+New in 0.8.2
 - Implementation
   + fixed lexical semantics
   + added the 'capture_lex' opcode
   + added automatic resume for nonfatal exceptions
+  + added multidispatch cache
+  + applied miscellaneous performance improvements, including startup time
+  + fixed several bugs and leaks found by Coverity Scan
+  + removed race conditions from parallel testing
 - Compilers
   + IMCC
     - removed undocumented .param int <stringc> => <ident> syntax
@@ -40,10 +54,12 @@
     - warn
   + Lua
     - added complex & mathx libraries
-    - merge LuaClosure & LuaFunction PMC
+    - merged LuaClosure & LuaFunction PMC
   + Pipp
     - added support for a return value from user defined functions
     - added incomplete implemention of 'require_once'
+  + Ecmascript
+    - parser fixes, parses spidermonkey's top level test/shell.js
 - Deprecations
   + PARROT_API is now PARROT_EXPORT
   + PIR

Modified: branches/rakudoreg/PLATFORMS
==============================================================================
--- branches/rakudoreg/PLATFORMS	(original)
+++ branches/rakudoreg/PLATFORMS	Wed Dec 17 13:31:52 2008
@@ -13,29 +13,23 @@
 Platform                     B8    Runloops      Feature Comp Test Inst YYYYMMDD
                                 CGoto JIT EXEC   Thr Sig
 --------------------------------------------------------------------------------
-cygwin1.5.24-x86-gcc3.4.4     4   Y    Y    -     -   -   Y    Y/6*1 ?  20071016
 cygwin1.5.25-x86-gcc3.4.4     4   Y    Y    -     -   -   Y    Y/6*1 ?  20080513
-darwin8.8.0-ppc-gcc4.0.1     B    Y/2  ?    ?     ?   ?   Y    Y     ?  20070116
-darwin8.8.1-x86-gcc4.0.1          Y/2  ?    ?     ?   ?   Y    Y     ?  20070116
-darwin8.11.1-x86-gcc4.0.1         Y    ?    ?     ?   ?   Y    Y/7   ?  20080220
+darwin8.11.1-x86-gcc4.0.1    ??   ?    ?    ?     ?   ?   Y    Y/1*3 ?  20081216
 freebsd-x86-gcc-3.4.6             Y    ?    ?     ?   ?   Y    Y     ?  20080519
-linux-x86-gcc3.3.3.20040412       Y/2  ?    ?     ?   ?   Y    Y     ?  20070116
-linux-x86-gcc3.4.5                Y    Y    Y     ?   ?   Y    Y     ?  20071016
 linux-x86-gcc4.1.2                Y    Y    ?     Y   Y   Y    Y     ?  20080617
 linux-x86-gcc4.1.3                Y    Y    ?     Y   Y   Y    Y     ?  20080414
 linux-x86-gcc4.2.3                Y    Y    ?     Y   Y   Y    Y     ?  20080715
 linux-x86-gcc4.2.4                Y    Y    ?     Y   Y   Y    Y     ?  20081023
 linux-x86-gcc4.3.2                Y    Y    ?     Y   Y   Y    Y     ?  20081030
-linux-x86-icc9.1                  Y    Y    Y     ?   ?   Y    Y     ?  20071014
 linux-x86-llvm-gcc-4.2            Y    Y    ?     ?   ?   Y    Y     ?  20080801
 sol8-sparc-cc                B    -    -    -     -   -   -    Y/85  ?  20080818
 sol8-sparc-gcc_4.1.0         B    -    -    -     -   -   -    Y/87  ?  20080818
-sol10-sparc-cc_5.9           B4*3 Y    -    -     Y   Y   Y    Y     ?  20080510
+sol10-sparc-cc_5.9           B4*2 Y    -    -     Y   Y   Y    Y     ?  20080510
 sol10-sparc-cc_5.9           B8   Y    -    -     Y   Y   Y    Y/2   ?  20080518
-sol10-sparc-gcc_4.0.2        B4*3 Y    -    -     Y   Y   Y    Y/1   ?  20080510
+sol10-sparc-gcc_4.0.2        B4*2 Y    -    -     Y   Y   Y    Y/1   ?  20080510
 sol10-sparc-gcc_4.0.2        B8   Y    -    -     Y   Y   Y    Y/2   ?  20080518
-win32-x86-mingw_gcc3.4.5          Y    Y    -     -   -   Y    Y     Y  20080917
-win32-x86-msvc_9.0                -    Y    -     Y   -   Y    Y/4   ?  20081203
+win32-x86-mingw_gcc3.4.5          Y    Y    -     -   -   Y    Y     Y  20081216
+win32-x86-msvc_9.0                -    Y    -     Y   -   Y    Y     ?  20081216
 
 
 Extra Platforms:
@@ -44,21 +38,15 @@
                                 CGoto JIT EXEC   Thr Sig
 --------------------------------------------------------------------------------
 aix5.3-power-gcc4.2          B8   -    -    -             Y    ?     ?  20080510
-freebsd-amd64-gcc3.4.6            Y    Y*2  ?     ?   ?   Y    Y     ?  20071008
 freebsd-x86-gcc-3.4.6             Y    ?    ?     ?   ?   Y    Y     ?  20080519
 linux-ppc-gcc3.4.5                Y    Y    Y     ?   ?   Y    Y     ?  20080519
-linux-ps3-gcc4.1.1           B    Y    Y    Y     Y   Y   Y    Y/3   -  20070308
 linux-s390x-gcc4.1.2         B4   ?    -    -     Y   Y   Y    Y/2   ?  20080908
-linux-x86_64-gcc4.1.0         8   Y    -    -     Y   Y   Y    Y     ?  20070116
 linux-x86_64-gcc4.1.2         8   Y    -    -     Y   Y   Y    Y     ?  20080220
 linux-x86_64-gcc4.3.2         8   Y    -    -     Y   Y   Y    Y     ?  20081118
-openbsd-zaurus-gcc3.3.5           Y    -    -     Y   Y   Y    ?     ?  20070309
-sol10-x86-cc_5.9              4   -    -    -     -   -   Y    Y     ?  20071010
-sol11-x86-cc_5.8                  -    -    -     -   -   -    Y/121 ?  20070821
 opensolaris-x86-gcc_4.0.3     4   Y    Y    ?     ?   ?   Y    Y/2   ?  20080325
 win32-x86-mingw_gcc4.3.0          Y    Y    -     -   -   Y    Y/88  ?  20081203
 win32-x64-msvc_9.0            8   -    N    -     -   -   Y    Y/51  ?  20081203
-
+win32-x64-mingw_gcc3.4.5      8   Y    Y    ?     ?   ?   Y    Y     ?  20081216       
 
 Legend:
 ?   ... unknown or untested
@@ -87,8 +75,8 @@
 
 Remarks:
 *1 need PATH=$PATH:$PWD/blib/lib to locate DLL
-*2 You must run Configure.pl with --jitcapable
-*3 gcc and cc defaults to 32bits on solaris
+*2 gcc and cc defaults to 32bits on solaris
+*3 http://rt.perl.org/rt3/Ticket/Display.html?id=60926
 
 The following configurations are also working on x86/linux (and possibly
 other platforms):

Modified: branches/rakudoreg/README
==============================================================================
--- branches/rakudoreg/README	(original)
+++ branches/rakudoreg/README	Wed Dec 17 13:31:52 2008
@@ -1,4 +1,4 @@
-This is Parrot, version 0.8.1
+This is Parrot, version 0.8.2
 ------------------------------
 
 Parrot is Copyright (C) 2001-2008, The Perl Foundation.

Modified: branches/rakudoreg/VERSION
==============================================================================
--- branches/rakudoreg/VERSION	(original)
+++ branches/rakudoreg/VERSION	Wed Dec 17 13:31:52 2008
@@ -1 +1 @@
-0.8.1
+0.8.2

Modified: branches/rakudoreg/compilers/imcc/imcc.l
==============================================================================
--- branches/rakudoreg/compilers/imcc/imcc.l	(original)
+++ branches/rakudoreg/compilers/imcc/imcc.l	Wed Dec 17 13:31:52 2008
@@ -384,7 +384,7 @@
 
 {WS}+"."{WS}+          return CONCAT;
 "."                    return DOT;
-<emit,INITIAL>".."     return DOTDOT;
+
 "+="                   return PLUS_ASSIGN;
 "-="                   return MINUS_ASSIGN;
 "*="                   return MUL_ASSIGN;

Modified: branches/rakudoreg/compilers/imcc/imcc.y
==============================================================================
--- branches/rakudoreg/compilers/imcc/imcc.y	(original)
+++ branches/rakudoreg/compilers/imcc/imcc.y	Wed Dec 17 13:31:52 2008
@@ -475,11 +475,6 @@
 iINDEXFETCH(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
         ARGIN(SymReg *r2))
 {
-    if (r0->set == 'S' && r1->set == 'S' && r2->set == 'I') {
-        SymReg * const r3 = mk_const(interp, "1", 'I');
-        return MK_I(interp, unit, "substr %s, %s, %s, 1", 4, r0, r1, r2, r3);
-    }
-
     IMCC_INFO(interp) -> keyvec |= KEY_BIT(2);
     return MK_I(interp, unit, "set %s, %s[%s]", 3, r0, r1, r2);
 }
@@ -493,11 +488,7 @@
 iINDEXSET(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
         ARGIN(SymReg *r2))
 {
-    if (r0->set == 'S' && r1->set == 'I' && r2->set == 'S') {
-        SymReg * const r3 = mk_const(interp, "1", 'I');
-        MK_I(interp, unit, "substr %s, %s, %s, %s", 4, r0, r1, r3, r2);
-    }
-    else if (r0->set == 'P') {
+    if (r0->set == 'P') {
         IMCC_INFO(interp)->keyvec |= KEY_BIT(1);
         MK_I(interp, unit, "set %s[%s], %s", 3, r0, r1, r2);
     }
@@ -2020,12 +2011,6 @@
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = $3;
            $$ = IMCC_INFO(interp)->keys[0];
          }
-   | _keylist COMMA            { IMCC_INFO(interp)->in_slice = 1; }
-     key
-         {
-           IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = $4;
-           $$ = IMCC_INFO(interp)->keys[0];
-         }
    ;
 
 key:
@@ -2035,15 +2020,6 @@
                $1->type |= VT_START_SLICE | VT_END_SLICE;
            $$ = $1;
          }
-   | var DOTDOT var
-         {
-           $1->type |= VT_START_SLICE;
-           $3->type |= VT_END_SLICE;
-           IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = $1;
-           $$ = $3;
-         }
-   | DOTDOT var                { $2->type |= VT_START_ZERO | VT_END_SLICE; $$ = $2; }
-   | var DOTDOT                { $1->type |= VT_START_SLICE | VT_END_INF; $$ = $1; }
    ;
 
 reg:

Modified: branches/rakudoreg/compilers/imcc/imclexer.c
==============================================================================
--- branches/rakudoreg/compilers/imcc/imclexer.c	(original)
+++ branches/rakudoreg/compilers/imcc/imclexer.c	Wed Dec 17 13:31:52 2008
@@ -30,7 +30,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 33
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -52,7 +52,7 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#if __STDC_VERSION__ >= 199901L
 
 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  * if you want the limit (max/min) macros for int types.
@@ -115,12 +115,11 @@
 
 #else   /* ! __cplusplus */
 
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
+#if __STDC__
 
 #define YY_USE_CONST
 
-#endif  /* defined (__STDC__) */
+#endif  /* __STDC__ */
 #endif  /* ! __cplusplus */
 
 #ifdef YY_USE_CONST
@@ -156,6 +155,8 @@
 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
 #define yy_flex_debug yyg->yy_flex_debug_r
 
+int yylex_init (yyscan_t* scanner);
+
 /* 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.
@@ -213,9 +214,14 @@
 
 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
 
+/* 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).
+ */
+
 #ifndef YY_TYPEDEF_YY_SIZE_T
 #define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
+typedef unsigned int yy_size_t;
 #endif
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -367,8 +373,8 @@
     *yy_cp = '\0'; \
     yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 148
-#define YY_END_OF_BUFFER 149
+#define YY_NUM_RULES 147
+#define YY_END_OF_BUFFER 148
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -376,123 +382,123 @@
     flex_int32_t yy_verify;
     flex_int32_t yy_nxt;
     };
-static yyconst flex_int16_t yy_accept[1048] =
+static yyconst flex_int16_t yy_accept[1047] =
     {   0,
         0,    0,    0,    0,    0,    0,   15,   15,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        3,    3,  149,  135,  134,   10,  134,  135,  135,   11,
-      135,  135,  135,  135,  135,  135,  115,  135,   94,  135,
-      119,  119,  135,   86,  135,   88,  133,  133,  133,  133,
-      133,  133,  133,  133,  135,  135,   13,  134,  134,  135,
-      135,  135,  135,  133,   13,  147,  142,  137,  142,  147,
-      147,  147,  147,  147,  119,  119,  147,  145,  145,  145,
-      141,  141,   13,   15,   16,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,  148,  135,    8,    8,
-
-      135,  135,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,  135,    9,  135,  135,  135,  135,  135,
-      119,  119,  135,  135,  135,  135,   12,  135,  135,  135,
-      135,  135,  119,  119,  135,  135,  135,  148,    1,  148,
-      148,  148,  148,  148,  119,  119,  148,  148,  148,    3,
+        3,    3,  148,  134,  133,   10,  133,  134,  134,   11,
+      134,  134,  134,  134,  134,  134,  114,  134,   94,  134,
+      118,  118,  134,   86,  134,   88,  132,  132,  132,  132,
+      132,  132,  132,  132,  134,  134,   13,  133,  133,  134,
+      134,  134,  134,  132,   13,  146,  141,  136,  141,  146,
+      146,  146,  146,  146,  118,  118,  146,  144,  144,  144,
+      140,  140,   13,   15,   16,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,  147,  134,    8,    8,
+
+      134,  134,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    5,  134,    9,  134,  134,  134,  134,  134,
+      118,  118,  134,  134,  134,  134,   12,  134,  134,  134,
+      134,  134,  118,  118,  134,  134,  134,  147,    1,  147,
+      147,  147,  147,  147,  118,  118,  147,  147,  147,    3,
         2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,  134,    0,   10,   91,    0,  124,    0,  131,  131,
-      131,  131,  131,  100,   83,  103,    0,   92,   98,    0,
-      119,   96,   97,   95,  118,  109,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+        3,  133,    0,   10,   91,    0,  123,    0,  130,  130,
+      130,  130,  130,   99,   83,  102,    0,   92,   97,    0,
+      118,   95,   96,  117,  108,  116,  116,  116,  116,  116,
+      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
 
-      117,  117,  101,   99,  118,    0,    0,  123,    0,    0,
+      116,  100,   98,  117,    0,    0,  122,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   80,   87,   90,   62,   89,   81,  114,    0,  133,
-      116,  132,  133,   72,  133,  133,  133,  133,  133,  133,
-      133,  104,   84,  105,   85,  134,  117,  117,  117,  117,
-      117,  117,    0,    0,    0,    0,  142,  137,  142,    0,
-        0,    0,  146,  146,  146,  146,  145,    0,  143,  145,
-      141,  141,   15,   16,   15,   15,   15,   15,   15,   15,
+       80,   87,   90,   62,   89,   81,  113,    0,  132,  115,
+      131,  132,   72,  132,  132,  132,  132,  132,  132,  132,
+      103,   84,  104,   85,  133,  116,  116,  116,  116,  116,
+      116,    0,    0,    0,    0,  141,  136,  141,    0,    0,
+        0,  145,  145,  145,  145,  144,    0,  142,  144,  140,
+      140,   15,   16,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,    0,    0,    8,    0,    4,    4,
+       15,   15,   15,    0,    0,    8,    0,    4,    4,    4,
 
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    0,    9,    0,    0,
-        0,  124,    0,    0,    0,    0,  119,  118,    0,    0,
-      118,    0,    0,  123,    0,    0,    0,    0,    0,    0,
-        0,   12,    0,    0,    0,  124,    0,    0,    0,    0,
-      119,  118,    0,    0,  118,    0,    0,  123,    0,    0,
-        0,    0,    0,    0,    0,    1,    0,    0,    0,  124,
-        0,    0,    0,    0,  119,  118,    0,    0,  118,    0,
-        0,  123,    0,    0,    0,    0,    0,    0,    3,    2,
+        4,    4,    4,    4,    4,    0,    9,    0,    0,    0,
+      123,    0,    0,    0,    0,  118,  117,    0,    0,  117,
+        0,    0,  122,    0,    0,    0,    0,    0,    0,    0,
+       12,    0,    0,    0,  123,    0,    0,    0,    0,  118,
+      117,    0,    0,  117,    0,    0,  122,    0,    0,    0,
+        0,    0,    0,    0,    1,    0,    0,    0,  123,    0,
+        0,    0,    0,  118,  117,    0,    0,  117,    0,    0,
+      122,    0,    0,    0,    0,    0,    0,    3,    2,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
-        3,    3,    3,    3,    3,    3,    3,    3,    3,   93,
-      127,  128,  130,  129,    0,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  102,
-      118,  121,    0,  118,  122,  120,    0,    0,    0,    0,
+        3,    3,    3,    3,    3,    3,    3,    3,   93,  126,
+      127,  129,  128,    0,  116,  116,  116,  116,  116,  116,
+      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
+      116,  116,  116,  116,  116,  116,  116,  116,  101,  117,
+      120,    0,  117,  121,  119,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  107,  106,   82,  113,
-        0,    0,  132,  133,   75,   77,  133,   76,   78,  133,
-      133,  133,  117,  117,    0,    0,  138,  144,  140,  146,
-      146,  146,  146,  146,  145,   15,   15,   15,   15,   15,
+        0,    0,    0,    0,    0,  106,  105,   82,  112,    0,
+        0,  131,  132,   75,   77,  132,   76,   78,  132,  132,
+      132,  116,  116,    0,    0,  137,  143,  139,  145,  145,
+      145,  145,  145,  144,   15,   15,   15,   15,   15,   15,
+
+       15,   15,   15,   15,   15,   15,   15,   15,   15,    0,
+        0,    0,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    0,    0,    0,  117,  120,    0,
+      117,  121,  119,    0,    0,    0,    0,    0,    0,    0,
+        0,  117,  120,    0,  117,  121,  119,    0,    0,    0,
+        0,    0,    0,    0,    0,  117,  120,    0,  117,  121,
+      119,    0,    0,    0,    0,    0,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        0,  117,   65,  116,  116,  116,   22,  116,  116,  116,
+      116,  116,   19,  116,  116,  116,  116,  116,  116,  116,
 
+      116,  116,  116,  116,   21,  116,  116,    0,    0,    0,
+        0,    0,    0,   43,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  124,    0,
+        0,  107,    0,  125,    0,    0,    0,   71,   74,  132,
+      132,  132,  132,  139,  145,  145,  145,  145,  144,  144,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-        0,    0,    0,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    0,    0,    0,  118,  121,
-        0,  118,  122,  120,    0,    0,    0,    0,    0,    0,
-        0,    0,  118,  121,    0,  118,  122,  120,    0,    0,
-        0,    0,    0,    0,    0,    0,  118,  121,    0,  118,
-      122,  120,    0,    0,    0,    0,    0,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    0,  118,   65,  117,  117,  117,   22,  117,  117,
-      117,  117,  117,   19,  117,  117,  117,  117,  117,  117,
+       15,   15,   15,   15,   15,   15,    0,    0,    0,    0,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        0,  117,    0,    0,    0,    0,  124,    0,    0,    0,
+        0,    0,  125,    0,    0,    0,    0,    0,    0,  117,
 
-      117,  117,  117,  117,  117,   21,  117,  117,    0,    0,
-        0,    0,    0,    0,   43,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  125,
-        0,    0,  108,    0,  126,    0,    0,    0,   71,   74,
-      133,  133,  133,  133,  140,  146,  146,  146,  146,  145,
-      145,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,    0,    0,    0,
-        0,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    0,  118,    0,    0,    0,    0,  125,    0,    0,
-        0,    0,    0,  126,    0,    0,    0,    0,    0,    0,
-
-      118,    0,    0,    0,    0,  125,    0,    0,    0,    0,
-        0,  126,    0,    0,    0,    0,    0,    0,  118,    0,
-        0,    0,    0,  125,    0,    0,    0,    0,    0,  126,
-        0,    0,    0,    0,    0,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-      117,  117,   25,  117,  117,   18,  117,  117,  117,  117,
-       17,  117,  117,  117,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,   41,   57,    0,   38,    0,    0,   37,
-       36,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  133,  133,  133,  133,  136,   18,  146,
-
-       17,  145,  145,   15,   15,   15,   15,   14,   15,   18,
-       17,    0,    0,    4,    4,    4,    4,   18,   17,    0,
-        0,   18,   17,    0,    0,   18,   17,    0,    0,    3,
-        3,    3,    3,  117,  117,   68,  117,  117,  117,  117,
-      117,  117,  117,  117,   67,  111,  117,  117,  117,   70,
-      117,  117,  117,  117,  117,  117,   51,    0,    0,    0,
-        0,   35,   61,    0,    0,    0,   42,    0,    0,   48,
-        0,    0,  133,  133,   79,   73,  146,  145,  145,   15,
-       15,    0,    0,    4,    4,    0,    0,    0,    0,    0,
-        0,    3,    3,  117,  117,  117,  117,  117,  117,  117,
-
-      117,  117,  117,  117,  117,  117,  117,  117,   53,  117,
-      117,  117,  117,    0,    0,    0,   34,    0,    0,    0,
-        0,   58,    0,   44,  133,  133,  139,  145,  145,   15,
-       15,    0,    0,    4,    4,    0,    0,    0,    0,    0,
-        0,    3,    3,   66,  117,  117,  117,  117,  117,  117,
-      117,  117,  112,  117,   56,  117,  117,  117,  117,   29,
-       20,  117,  117,  117,    0,    0,    0,   45,    0,    0,
-        0,    0,    0,    7,   15,    7,    4,    4,    0,    7,
-        0,    7,    0,    7,    3,    3,  117,  117,  117,   24,
-      117,  117,  117,  117,   28,  117,  117,  117,   26,  117,
-
-      117,   55,    0,    0,   63,   60,   59,   40,    0,    6,
-        6,    6,    6,    6,    3,  117,  117,  117,  117,   33,
-      117,  117,  117,   27,   64,  117,   52,   39,    0,    0,
-       23,  117,  117,   31,   49,  117,  117,   54,   47,   46,
-      117,   32,   50,   69,  110,   30,    0
+        0,    0,    0,    0,  124,    0,    0,    0,    0,    0,
+      125,    0,    0,    0,    0,    0,    0,  117,    0,    0,
+        0,    0,  124,    0,    0,    0,    0,    0,  125,    0,
+        0,    0,    0,    0,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,  116,
+      116,   25,  116,  116,   18,  116,  116,  116,  116,   17,
+      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
+      116,  116,   41,   57,    0,   38,    0,    0,   37,   36,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  132,  132,  132,  132,  135,   18,  145,   17,
+
+      144,  144,   15,   15,   15,   15,   14,   15,   18,   17,
+        0,    0,    4,    4,    4,    4,   18,   17,    0,    0,
+       18,   17,    0,    0,   18,   17,    0,    0,    3,    3,
+        3,    3,  116,  116,   68,  116,  116,  116,  116,  116,
+      116,  116,  116,   67,  110,  116,  116,  116,   70,  116,
+      116,  116,  116,  116,  116,   51,    0,    0,    0,    0,
+       35,   61,    0,    0,    0,   42,    0,    0,   48,    0,
+        0,  132,  132,   79,   73,  145,  144,  144,   15,   15,
+        0,    0,    4,    4,    0,    0,    0,    0,    0,    0,
+        3,    3,  116,  116,  116,  116,  116,  116,  116,  116,
+
+      116,  116,  116,  116,  116,  116,  116,   53,  116,  116,
+      116,  116,    0,    0,    0,   34,    0,    0,    0,    0,
+       58,    0,   44,  132,  132,  138,  144,  144,   15,   15,
+        0,    0,    4,    4,    0,    0,    0,    0,    0,    0,
+        3,    3,   66,  116,  116,  116,  116,  116,  116,  116,
+      116,  111,  116,   56,  116,  116,  116,  116,   29,   20,
+      116,  116,  116,    0,    0,    0,   45,    0,    0,    0,
+        0,    0,    7,   15,    7,    4,    4,    0,    7,    0,
+        7,    0,    7,    3,    3,  116,  116,  116,   24,  116,
+      116,  116,  116,   28,  116,  116,  116,   26,  116,  116,
+
+       55,    0,    0,   63,   60,   59,   40,    0,    6,    6,
+        6,    6,    6,    3,  116,  116,  116,  116,   33,  116,
+      116,  116,   27,   64,  116,   52,   39,    0,    0,   23,
+      116,  116,   31,   49,  116,  116,   54,   47,   46,  116,
+       32,   50,   69,  109,   30,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -538,281 +544,281 @@
        10,   10,   10,   10,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1205] =
+static yyconst flex_int16_t yy_base[1204] =
     {   0,
-        0, 4201,   65, 4200,  131,   82,  197, 4199,  263,    0,
+        0, 4200,   65, 4199,  131,   82,  197, 4198,  263,    0,
       329,    0,   73,   78,  395,    0,  461,    0,  527,    0,
-      593,    0, 4223, 7508,   99, 7508,  107, 4197,   65, 7508,
-       84, 4196,  103, 4208,   83,  643, 7508,  650,  659,  648,
-      707,  735,  740,   49,  101,  657,  716,  755,  726,  750,
-      763,  790,  795,  735,  720,  674,  705,  758,  812,  805,
-      830,  778, 4195,  829, 7508, 7508,  832, 7508,  844,  727,
-      823, 4206,  845,  850,    0,  883, 4193,  773,  899,  861,
-      888,  906, 7508,    0, 7508, 4213,  800, 4203,  906,  911,
-      946,  906, 4190, 1009, 1075, 4169, 7508,  932,  917, 1020,
-
-     4189,   83,    0,    0,  943,  974,  951, 1125,  945, 4187,
-     1188, 1254,  803,  744, 7508,  780,  937,  944, 1026, 1092,
-     1318, 1094,  983, 1381, 1447,  847, 7508,  895, 1054, 1000,
-     1048, 1105, 1511, 1124, 1114, 1574, 1640, 1002, 7508, 1052,
-     1125, 1059, 1204, 1282, 1704, 1141, 1206, 1767, 1833,    0,
-     7508, 4207,  846, 4197, 1085, 1196, 1883, 1198, 4184, 1946,
-     2012, 1227, 1170, 7508, 7508,  872, 7508,    0,    0, 1229,
-     1254, 1262, 1268, 7508, 7508, 7508, 4195, 7508, 7508, 1276,
-     1296, 7508, 7508, 7508, 1381, 7508,    0, 4172, 4159,  936,
-     4150, 4152,  687, 4148, 1112,  766,  777,  872, 4154,  897,
-
-     4157, 4148, 4172, 7508, 1393, 1040, 1346, 7508, 1115,    0,
-     4143, 4144, 1020,  631, 1263,  986,  808, 4140,   17, 4140,
-     4133, 1299, 7508, 7508, 7508, 7508, 1094, 4168, 4163, 1160,
-     4178, 1354, 1408, 1318, 1409, 1335, 1327, 1419, 1410, 1420,
-     1465, 7508, 7508, 7508, 7508, 1231, 4130, 4130, 1192, 4138,
-     4116, 4113, 1097, 4098, 4095,  952, 1480, 7508, 1487, 4131,
-     1475,    0,    0, 4100, 4102, 1131, 1015, 4144, 1483, 1421,
-     1505, 1515,    0, 7508, 1057,    0,    0, 4138, 1502, 1585,
-     1516, 4099, 4098, 1590, 1166, 1539,    0, 1272, 2060, 1233,
-     2107, 2173, 2239, 4084, 4093, 4092, 1651,  938,    0, 1522,
-
-        0, 1547, 1657, 1674, 4091, 4090, 1709, 1200, 1602,    0,
-     1389, 2287, 1300, 2334, 2400, 2466, 1328, 7508, 1342, 1622,
-     1695, 1352, 1437, 1539, 1560, 1697, 2530, 1783, 1523, 1545,
-     1850, 1733, 1795, 1472, 1741, 2574, 1815, 2621, 2687, 2753,
-     1475, 7508, 1497, 1706, 1708, 1567, 1590, 1657, 1680, 1862,
-     2817, 1888, 1738, 1760, 1962, 1857, 1911, 1624, 1920, 2861,
-     1882, 2908, 2974, 3040, 1629, 7508, 1631, 1871, 1970, 1634,
-     1685, 1753, 1932, 1975, 3104, 1985, 1817, 1917, 2029, 2036,
-     2050, 1791, 2041, 3148, 2080, 3195, 3261, 3327,    0, 7508,
-     1504,    0,    0, 4123, 1804, 2118, 2123, 4084, 4083, 2239,
-
-     1777, 2077,    0, 1843, 3375, 1589, 3422, 3488, 3554, 1826,
-     1979, 2107, 2135, 2139, 2252,    0, 4098, 4083, 4079, 4076,
-     4083, 4076, 4067, 4071,  992, 4061, 4070, 1266, 4078, 3992,
-     3998, 3999, 3991, 4003, 3987, 3986, 4001, 3993, 3996, 7508,
-     2256, 1781, 2146, 2261, 2022,    0, 3987, 3998, 3987, 2007,
-     3975, 3995, 3986, 3976, 3983, 3981, 3986, 3972, 3971, 3971,
-     3968, 3983, 3975, 3982, 1848, 4011, 7508, 7508, 3997, 7508,
-     1861, 3998, 2278, 2287, 2302, 2303, 2304, 2305, 2345, 2347,
-     2477, 2478, 3976, 3977, 3968, 3994, 7508, 2269,    0,    0,
-     3971, 3964, 3971, 3956, 2346, 2357, 3957, 3954, 2345, 1923,
-
-     2361, 2365, 2130, 3602, 1888, 3994, 1909, 3649, 3715, 3944,
-     3930, 3927, 1302, 2483, 3928, 3925, 2489, 1956, 2493, 2501,
-     2303, 3763, 2533, 3810, 3876, 2551, 2043, 2070, 2637, 2538,
-     2565, 2578, 2571, 3940, 2602, 2159, 2608, 3987, 4053, 2649,
-     2492, 2513, 2769, 2777, 2781, 2803, 2807, 4117, 2791, 2525,
-     2801, 4164, 4230, 2839, 2559, 2535, 2924, 2810, 2853, 2865,
-     2829, 4294, 2889, 2669, 2895, 4341, 4407, 2936, 3926, 3923,
-     2917, 1971, 2655, 2857, 2369, 4455, 2027, 3963, 2094, 4502,
-     4568, 2940, 2945, 3933, 3923, 3921, 3913, 3926, 3920, 3924,
-     3921, 3912, 3904,    0, 3911, 3911, 3913, 3897, 3904, 3906,
-
-     3910, 3908, 3908, 3888, 3906,    0, 3895, 3894, 3830, 3815,
-     3827, 3813, 3812, 3816, 7508, 3824, 3815, 3818, 3807, 3819,
-     3811, 1081, 3817, 3803, 3804, 3810, 3803, 3815, 2260, 7508,
-        0, 3845, 7508, 2478, 7508,    0, 3833, 3848, 3051, 3052,
-     3053, 3061, 3062, 3070,    0, 3802, 3807, 3806, 3805, 2530,
-     2759, 3068, 3075, 3803, 3802, 2519,    0,    0, 3835, 2549,
-        0,    0, 4634, 3839, 4700, 4766, 1999, 3799, 3798, 1567,
-     1580, 3097, 3110, 3797, 3796, 2648,    0, 4832, 3834, 4898,
-     4964, 3136, 3140, 2604, 2842, 3097, 3106, 2082, 2392, 2937,
-     3069, 3176, 3182, 2610, 2675, 5030, 2863, 5096, 3790, 3144,
-
-     3211, 3138, 3171, 3351, 3358, 2681, 2783, 3079, 3169, 3366,
-     3368, 2813, 2891, 5162, 2965, 5228, 3789, 3220, 3224, 3343,
-     3353, 3373, 3375, 2897, 3132, 3222, 3244, 3446, 3451, 3150,
-     3184, 5294, 3246, 5360, 3788, 3390, 3422, 3791, 3786, 2642,
-        0,    0, 3819, 2890,    0,    0, 5426, 3823, 5492, 5558,
-     3777, 3773,    0, 3758, 3194,    0, 3747, 3761, 3742, 3757,
-        0, 3749, 3748, 3744, 3756, 3738, 3751, 3742, 3732, 3732,
-     3195, 3744, 3742, 7508, 7508, 3741, 7508, 3676, 3669, 7508,
-     7508, 3658, 3661, 3665, 3650, 3661, 3653, 3649, 3661, 3649,
-     3658, 3642, 3650, 3365, 3565, 3566, 3567,    0,    0, 3648,
-
-        0, 3575, 3576,    0,    0, 5624, 5690, 7508, 3690, 7508,
-     7508,  883, 1736,    0,    0, 5756, 5822, 3251, 3345, 5888,
-     1318, 3356, 3360, 3333,  752, 3397, 3448, 3406, 1606,    0,
-        0, 3409, 1701, 3629, 3629,    0, 3626, 3597, 3588, 3590,
-     3576, 3567, 3567, 3558,    0, 3546, 3541, 3518, 3515,    0,
-     3419, 3423, 3368, 3361, 3352, 3348,    0, 3337, 3332, 3326,
-     3298, 7508, 7508, 3200, 3185, 3176, 7508, 3157, 3118, 7508,
-     3125, 3103, 3587, 3588, 3452, 3454, 3462, 1922, 3570, 1057,
-     1392, 1644, 1760, 1629, 1844, 1562, 1676, 1370, 1384, 1506,
-     1762, 2247, 2249, 3090, 3421, 3082, 3068, 3076, 3062, 3070,
-
-     3066, 3049, 3055, 3048, 3017, 3014, 2920, 2899,    0, 2876,
-     2812, 2816, 2793, 2793, 2739, 2721, 7508, 2705, 2638, 2624,
-     2602, 7508, 2602, 7508, 3660, 3672, 3467, 3579, 3612, 1217,
-     1975, 1709, 2525, 2787, 3361, 2090, 2095, 1309, 3433, 3565,
-     3602, 3632, 3634,    0, 2595, 2555, 2533, 2528, 2501, 2493,
-     2447, 2444,    0, 2429,    0, 2428, 2422, 2348, 2321,    0,
-        0, 2293, 2299, 2233, 2211, 2209, 2183, 7508, 2128, 2119,
-     2081, 2053, 1980, 2071, 2657, 2058, 2847, 2004, 3477, 3637,
-     3687, 3675, 3693, 3682, 2946, 1988, 1911, 1847, 1847,    0,
-     1830, 1807, 1798, 1713,    0, 1696, 1488, 1440,    0, 1409,
-
-     1377,    0, 1334, 1274, 7508, 7508, 7508, 7508, 1253, 7508,
-        0, 3470, 3597, 3602,    0, 1188, 1122, 1100, 1063,    0,
-     1032, 1020,  967,    0,    0,  948,    0, 7508,  877,  847,
-        0,  800,  799,    0,  710,  615,  602,    0, 7508, 7508,
-       49,    0,    0,    0,    0,    0, 7508, 5954, 5960, 5970,
-     5978, 5982, 5990, 5997, 6008, 6019, 6030, 6041, 6048, 6059,
-     6070, 6081, 6092, 6103, 6114, 6125, 6136, 6147, 6158, 6169,
-     6180, 6191, 6202, 6213, 6224, 6235, 6246, 6257, 6263, 6273,
-     6279, 6285, 6290, 6298, 6307, 6313, 6317, 6323, 6330, 6341,
-     6352, 6363, 6374, 6385, 6396, 6407, 6418, 6429, 6440, 6451,
-
-     6462, 6473, 6484, 6495, 6506, 6517, 6528, 6539, 6550, 6561,
-     6572, 6583, 6589, 6594, 6600, 6609, 6620, 6631, 6638, 6646,
-     6652, 6658, 6664, 6671, 6682, 6693, 6704, 6715, 6726, 6733,
-     6744, 6755, 6766, 6777, 6788, 6799, 6810, 6821, 6832, 6843,
-     6854, 6865, 6876, 6887, 6898, 6909, 6920, 6931, 6942, 6953,
-     6964, 6975, 6986, 6992, 7003, 7014, 7025, 7032, 7040, 7046,
-     7052, 7059, 7070, 7081, 7092, 7103, 7114, 7125, 7132, 7143,
-     7154, 7165, 7176, 7187, 7198, 7209, 7220, 7231, 7242, 7253,
-     7264, 7275, 7286, 7297, 7308, 7319, 7330, 7341, 7352, 7363,
-     7374, 7385, 7396, 7407, 7413, 7421, 7427, 7434, 7445, 7456,
+      593,    0, 4222, 7506,   99, 7506,  107, 4196,   65, 7506,
+       84, 4195,  103, 4207,   83,  643, 7506,  650,  657,  648,
+      705,  733,  738,   49,  101,  655,  714,  753,  724,  748,
+      761,  788,  793,  733,  718,  672,  703,  756,  810,  803,
+      828,  776, 4194,  827, 7506, 7506,  830, 7506,  842,  725,
+      821, 4205,  843,  848,    0,  881, 4192,  771,  897,  859,
+      886,  904, 7506,    0, 7506, 4212,  798, 4202,  904,  909,
+      944,  904, 4189, 1007, 1073, 4168, 7506,  930,  915, 1018,
+
+     4188,   83,    0,    0,  941,  972,  949, 1123,  943, 4186,
+     1186, 1252,  801,  742, 7506,  778,  935,  942, 1024, 1090,
+     1316, 1092,  981, 1379, 1445,  845, 7506,  893, 1052,  998,
+     1046, 1103, 1509, 1122, 1112, 1572, 1638, 1000, 7506, 1050,
+     1123, 1057, 1202, 1280, 1702, 1139, 1204, 1765, 1831,    0,
+     7506, 4206,  844, 4196, 1083, 1194, 1881, 1196, 4183, 1944,
+     2010, 1225, 1168, 7506, 7506,  870, 7506,    0,    0, 1227,
+     1252, 1260, 1266, 7506, 7506, 7506, 4194, 7506, 7506, 1274,
+     1294, 7506, 7506, 1379, 7506,    0, 4171, 4158,  934, 4150,
+     4151,  685, 4147, 1110,  764,  775,  870, 4153,  895, 4156,
+
+     4147, 4171, 7506, 1391, 1038, 1344, 7506, 1113,    0, 4142,
+     4143, 1018,  980, 1261, 1059,  806, 4139,   17, 4139, 4132,
+     1297, 7506, 7506, 7506, 7506, 1122, 4167, 4166, 1158, 4177,
+     1352, 1406, 1316, 1407, 1333, 1325, 1417, 1408, 1418, 1463,
+     7506, 7506, 7506, 7506, 1229, 4129, 4129, 1190, 4139, 4136,
+     4112, 1127, 4097, 4094,  950, 1478, 7506, 1485, 4130, 1473,
+        0,    0, 4099, 4101, 1247, 1013, 4143, 1481, 1419, 1503,
+     1513,    0, 7506, 1055,    0,    0, 4137, 1500, 1583, 1514,
+     4098, 4097, 1588, 1164, 1537,    0, 1387, 2058, 1231, 2105,
+     2171, 2237, 4086, 4092, 4091, 1649,  936,    0, 1520,    0,
+
+     1545, 1655, 1672, 4090, 4089, 1707, 1198, 1600,    0, 1521,
+     2285, 1298, 2332, 2398, 2464, 1287, 7506, 1326, 1620, 1693,
+     1340, 1350, 1558, 1589, 1695, 2528, 1781, 1521, 1565, 1848,
+     1731, 1793, 1435, 1739, 2572, 1813, 2619, 2685, 2751, 1470,
+     7506, 1473, 1704, 1706, 1495, 1543, 1655, 1678, 1860, 2815,
+     1886, 1736, 1758, 1960, 1855, 1909, 1546, 1918, 2859, 1880,
+     2906, 2972, 3038, 1622, 7506, 1627, 1869, 1968, 1629, 1632,
+     1751, 1930, 1973, 3102, 1983, 1815, 1915, 2027, 2034, 2048,
+     1683, 2039, 3146, 2078, 3193, 3259, 3325,    0, 7506, 1786,
+        0,    0, 4126, 1802, 2116, 2121, 4083, 4082, 2237, 1775,
+
+     2075,    0, 1841, 3373, 1587, 3420, 3486, 3552, 1994, 2105,
+     2133, 2137, 2144, 2250,    0, 4097, 4082, 4078, 4075, 4082,
+     4075, 4066, 4070, 1176, 4060, 4069, 1076, 4077, 4061, 3997,
+     3998, 3990, 4002, 3986, 3985, 4000, 3992, 3995, 7506, 2254,
+     1779, 2259, 2266, 2020,    0, 3986, 3997, 3986, 1939, 3974,
+     3994, 3985, 3975, 3982, 3980, 3985, 3971, 3970, 3970, 3967,
+     3983, 3974, 3981, 1846, 4010, 7506, 7506, 3996, 7506, 1859,
+     3997, 2285, 2300, 2301, 2302, 2343, 2303, 2344, 2475, 2477,
+     2487, 3975, 3976, 3967, 3993, 7506, 2270,    0,    0, 3970,
+     3963, 3970, 3959, 2345, 2355, 3956, 3953, 2343, 1809, 2359,
+
+     2363, 2128, 3600, 1886, 3993, 1907, 3647, 3713, 3945, 3950,
+     3926, 1300, 2492, 3927, 3924, 2498, 1921, 2515, 2519, 2278,
+     3761, 1971, 3808, 3874, 2549, 2041, 2068, 2635, 2553, 2563,
+     2576, 2584, 3938, 2606, 2062, 2775, 3985, 4051, 2647, 2491,
+     2317, 2767, 2780, 2801, 2805, 2827, 4115, 2789, 2157, 2799,
+     4162, 4228, 2837, 2556, 2498, 2922, 2851, 2863, 2871, 2930,
+     4292, 3062, 2383, 3067, 4339, 4405, 2656, 3925, 3922, 2917,
+     2064, 2875, 2934, 2628, 4453, 2092, 3962, 2476, 4500, 4566,
+     2938, 2945, 3932, 3922, 3920, 3912, 3928, 3919, 3923, 3920,
+     3911, 3907,    0, 3910, 3910, 3912, 3896, 3903, 3905, 3909,
+
+     3907, 3907, 3887, 3905,    0, 3894, 3893, 3890, 3822, 3826,
+     3812, 3811, 3815, 7506, 3823, 3814, 3817, 3806, 3818, 3810,
+      633, 3816, 3802, 3803, 3809, 3802, 3814, 2485, 7506,    0,
+     3844, 7506, 2514, 7506,    0, 3832, 3847, 3059, 3063, 3064,
+     3067, 3072, 3068,    0, 3801, 3806, 3805, 3804, 2757, 2778,
+     3038, 3079, 3803, 3801, 2571,    0,    0, 3834, 2601,    0,
+        0, 4632, 3838, 4698, 4764, 2387, 3798, 3797, 1697, 1702,
+     3089, 3108, 3796, 3795, 2574,    0, 4830, 3833, 4896, 4962,
+     3134, 3138, 2840, 2924, 3140, 3174, 2586, 2649, 2670, 2861,
+     3180, 3349, 2676, 2808, 5028, 2865, 5094, 3789, 3142, 3209,
+
+     3089, 3136, 3356, 3364, 2873, 2895, 3167, 3220, 3366, 3371,
+     2958, 3109, 5160, 3218, 5226, 3788, 3223, 3231, 3169, 3341,
+     3373, 3444, 3112, 3130, 3234, 3236, 3449, 3576, 3148, 3182,
+     5292, 3351, 5358, 3787, 3235, 3378, 3790, 3789, 2774,    0,
+        0, 3818, 3078,    0,    0, 5424, 3822, 5490, 5556, 3776,
+     3774,    0, 3765, 3322,    0, 3758, 3760, 3741, 3756,    0,
+     3748, 3747, 3743, 3755, 3737, 3750, 3741, 3734, 3731, 3397,
+     3743, 3741, 7506, 7506, 3740, 7506, 3742, 3672, 7506, 7506,
+     3657, 3660, 3664, 3649, 3660, 3652, 3648, 3660, 3648, 3657,
+     3641, 3649, 3572, 3573, 3577, 3575,    0,    0, 3643,    0,
+
+     1741, 1920,    0,    0, 5622, 5688, 7506, 3679, 7506, 7506,
+      881, 2040,    0,    0, 5754, 5820, 3343, 3358, 5886, 1255,
+     3378, 3404, 3359,  750, 3437, 3446, 3407, 1538,    0,    0,
+     3412, 1604, 3639, 3609,    0, 3599, 3593, 3584, 3585, 3564,
+     3569, 3561, 3549,    0, 3544, 3530, 3500, 3428,    0, 3395,
+     3389, 3357, 3366, 3355, 3346,    0, 3335, 3330, 3330, 3319,
+     7506, 7506, 3300, 3290, 3188, 7506, 3182, 3145, 7506, 3123,
+     3085, 3578, 3581, 3450, 3455, 3463, 3586, 3589, 1390, 1627,
+     1642, 1758, 1842, 2553, 1560, 2088, 1368, 1382, 1760, 2459,
+     2612, 2614, 3065, 3619, 3038, 3008, 3008, 2911, 2904, 2894,
+
+     2882, 2879, 2816, 2800, 2796, 2782, 2755,    0, 2747, 2731,
+     2739, 2721, 2725, 2627, 2587, 7506, 2497, 2504, 2501, 2472,
+     7506, 2458, 7506, 3669, 3670, 3470, 3661, 3675, 2002, 2502,
+     1707, 2492, 2559, 2630, 2093, 3418, 1307, 1459, 2343, 2895,
+     3431, 3563,    0, 2443, 2434, 2421, 2337, 2291, 2288, 2262,
+     2241,    0, 2223,    0, 2214, 2214, 2209, 2189,    0,    0,
+     2114, 2117, 2057, 2002, 1986, 1967, 7506, 1953, 1940, 1933,
+     1928, 1362, 1961, 2845, 1955, 3089, 1899, 3603, 3568, 3633,
+     3664, 3692, 3685, 3242, 1886, 1834, 1791, 1801,    0, 1730,
+     1704, 1577, 1501,    0, 1484, 1433, 1374,    0, 1321, 1281,
+
+        0, 1222, 1117, 7506, 7506, 7506, 7506, 1103, 7506,    0,
+     3473, 3476, 3479,    0, 1078, 1054, 1057, 1036,    0, 1017,
+      993,  984,    0,    0,  970,    0, 7506,  952,  874,    0,
+      836,  810,    0,  784,  707,  602,    0, 7506, 7506,   49,
+        0,    0,    0,    0,    0, 7506, 5952, 5958, 5968, 5976,
+     5980, 5988, 5995, 6006, 6017, 6028, 6039, 6046, 6057, 6068,
+     6079, 6090, 6101, 6112, 6123, 6134, 6145, 6156, 6167, 6178,
+     6189, 6200, 6211, 6222, 6233, 6244, 6255, 6261, 6271, 6277,
+     6283, 6288, 6296, 6305, 6311, 6315, 6321, 6328, 6339, 6350,
+     6361, 6372, 6383, 6394, 6405, 6416, 6427, 6438, 6449, 6460,
+
+     6471, 6482, 6493, 6504, 6515, 6526, 6537, 6548, 6559, 6570,
+     6581, 6587, 6592, 6598, 6607, 6618, 6629, 6636, 6644, 6650,
+     6656, 6662, 6669, 6680, 6691, 6702, 6713, 6724, 6731, 6742,
+     6753, 6764, 6775, 6786, 6797, 6808, 6819, 6830, 6841, 6852,
+     6863, 6874, 6885, 6896, 6907, 6918, 6929, 6940, 6951, 6962,
+     6973, 6984, 6990, 7001, 7012, 7023, 7030, 7038, 7044, 7050,
+     7057, 7068, 7079, 7090, 7101, 7112, 7123, 7130, 7141, 7152,
+     7163, 7174, 7185, 7196, 7207, 7218, 7229, 7240, 7251, 7262,
+     7273, 7284, 7295, 7306, 7317, 7328, 7339, 7350, 7361, 7372,
+     7383, 7394, 7405, 7411, 7419, 7425, 7432, 7443, 7454, 7461,
 
-     7463, 7474, 7485, 7496
+     7472, 7483, 7494
     } ;
 
-static yyconst flex_int16_t yy_def[1205] =
+static yyconst flex_int16_t yy_def[1204] =
     {   0,
-     1047,    1,    1,    3, 1047,    5, 1047,    7, 1047,    9,
-     1047,   11,    9,    9, 1047,   15, 1047,   17, 1047,   19,
-     1047,   21, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1047,
-     1049, 1047, 1047, 1050, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1047, 1047, 1047, 1047, 1047, 1047,
-       39, 1047, 1047, 1051, 1047, 1047, 1047, 1047, 1047, 1048,
-     1052, 1050, 1047, 1053,   41, 1047, 1047, 1054, 1054, 1054,
-     1047, 1047, 1047, 1055, 1047, 1055, 1056, 1057, 1055, 1055,
-     1055,   91, 1055, 1058, 1058, 1055, 1047, 1047,   41, 1047,
-
-     1059, 1059, 1060, 1060, 1061, 1060, 1060, 1060,  108, 1060,
-     1062, 1062, 1048, 1063, 1047, 1063, 1064, 1065, 1063, 1063,
-     1063,  121, 1063, 1066, 1066, 1067, 1047, 1067, 1068, 1069,
-     1067, 1067, 1067,  133, 1067, 1070, 1070, 1071, 1047, 1071,
-     1072, 1073, 1071, 1071, 1071,  145, 1071, 1074, 1074, 1075,
-     1047, 1075, 1076, 1077, 1075, 1075, 1075,  157, 1075, 1078,
-     1078, 1047, 1047, 1047, 1047, 1048, 1047, 1048, 1079, 1079,
-     1079, 1079, 1079, 1047, 1047, 1047, 1080, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1081, 1081, 1081, 1081,
-     1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
-
-     1081, 1081, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1082,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1083, 1084,
-     1085, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
-     1084, 1047, 1047, 1047, 1047, 1047, 1081, 1081, 1081, 1081,
-     1081, 1081, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1086,
-     1086, 1087, 1088, 1088, 1088, 1088, 1089, 1085, 1089, 1089,
-     1047, 1047, 1090, 1047, 1091, 1090, 1091, 1092, 1090, 1090,
-     1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
-     1093, 1047, 1093, 1090, 1047, 1047, 1047, 1083, 1094, 1095,
-
-     1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
-     1094, 1094, 1094, 1096, 1047, 1096, 1097, 1047, 1097, 1098,
-     1098, 1097, 1098, 1099, 1099, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1100, 1047, 1100,
-     1101, 1047, 1101, 1102, 1102, 1101, 1102, 1103, 1103, 1101,
-     1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
-     1101, 1104, 1047, 1104, 1105, 1047, 1105, 1106, 1106, 1105,
-     1106, 1107, 1107, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
-     1105, 1105, 1105, 1105, 1105, 1108, 1047, 1108, 1109, 1047,
-     1110, 1109, 1110, 1111, 1109, 1109, 1109, 1109, 1109, 1109,
-
-     1109, 1109, 1109, 1109, 1109, 1109, 1112, 1047, 1112, 1047,
-     1113, 1113, 1113, 1113, 1047, 1114, 1114, 1114, 1114, 1114,
-     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-     1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1047,
-     1047, 1047, 1047, 1047, 1047, 1115, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1116, 1117, 1047, 1047, 1047, 1047,
-     1118, 1119, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1114, 1114, 1047, 1121, 1047, 1121, 1122, 1123,
-     1123, 1123, 1123, 1123, 1124, 1125, 1125, 1125, 1125, 1125,
-
-     1125, 1125, 1125, 1125, 1126, 1127, 1128, 1129, 1047, 1125,
-     1047, 1047, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
-     1131, 1131, 1132, 1133, 1047, 1134, 1134, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1135, 1136, 1137, 1138, 1047, 1139,
-     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1141,
-     1142, 1143, 1047, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
-     1144, 1144, 1145, 1146, 1147, 1148, 1047, 1149, 1149, 1149,
-     1149, 1149, 1149, 1149, 1149, 1149, 1150, 1151, 1152, 1153,
-     1047, 1047, 1047, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-
-     1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1155, 1047,
-     1155, 1156, 1047, 1157, 1047, 1157, 1158, 1047, 1159, 1159,
-     1159, 1159, 1159, 1159, 1160, 1161, 1161, 1161, 1161, 1162,
-     1162, 1163, 1163, 1163, 1163, 1164, 1163, 1164, 1165, 1166,
-     1163, 1166, 1167, 1163, 1168, 1168, 1163, 1047, 1047, 1169,
-     1169, 1170, 1170, 1170, 1170, 1171, 1170, 1172, 1170, 1173,
-     1173, 1174, 1174, 1174, 1174, 1175, 1175, 1174, 1175, 1176,
-     1176, 1177, 1177, 1174, 1177, 1178, 1174, 1047,  698, 1179,
-
-     1179, 1179, 1179, 1180, 1180, 1179, 1180, 1181, 1181, 1182,
-     1182, 1179, 1182, 1183, 1179, 1047,  716, 1184, 1184, 1184,
-     1184, 1185, 1185, 1184, 1185, 1186, 1186, 1187, 1187, 1184,
-     1187, 1188, 1184, 1047,  734, 1189, 1189, 1189, 1189, 1190,
-     1189, 1190, 1191, 1192, 1189, 1192, 1193, 1189, 1194, 1194,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1196, 1196, 1196, 1196, 1197, 1197, 1197,
-
-     1197, 1198, 1198, 1199, 1199, 1200, 1200, 1047, 1199, 1047,
-     1047, 1201, 1201, 1202, 1202, 1203, 1203, 1204, 1204, 1047,
-      820, 1179, 1179,  716,  716, 1184, 1184,  734,  734, 1189,
-     1189,  750,  750, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1196, 1196, 1196, 1196, 1197, 1198, 1198,  807,
-      807, 1201, 1201,  817,  817,  820,  820,  716,  716,  734,
-      734,  750,  750, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1196, 1196, 1047, 1198, 1198,  807,
-      807, 1201, 1201,  817,  817,  820,  820,  716,  716,  734,
-      734,  750,  750, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1199, 1199, 1202, 1202, 1204, 1204,
-     1179, 1179, 1184, 1184, 1189, 1189, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
-
-     1195, 1195, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1199, 1204, 1179, 1184, 1189, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1047, 1047, 1047,
-     1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1047, 1047,
-     1195, 1195, 1195, 1195, 1195, 1195,    0, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
+     1046,    1,    1,    3, 1046,    5, 1046,    7, 1046,    9,
+     1046,   11,    9,    9, 1046,   15, 1046,   17, 1046,   19,
+     1046,   21, 1046, 1046, 1046, 1046, 1046, 1046, 1047, 1046,
+     1048, 1046, 1046, 1049, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1050, 1050, 1050, 1050,
+     1050, 1050, 1050, 1050, 1046, 1046, 1046, 1046, 1046, 1046,
+       39, 1046, 1046, 1050, 1046, 1046, 1046, 1046, 1046, 1047,
+     1051, 1049, 1046, 1052,   41, 1046, 1046, 1053, 1053, 1053,
+     1046, 1046, 1046, 1054, 1046, 1054, 1055, 1056, 1054, 1054,
+     1054,   91, 1054, 1057, 1057, 1054, 1046, 1046,   41, 1046,
+
+     1058, 1058, 1059, 1059, 1060, 1059, 1059, 1059,  108, 1059,
+     1061, 1061, 1047, 1062, 1046, 1062, 1063, 1064, 1062, 1062,
+     1062,  121, 1062, 1065, 1065, 1066, 1046, 1066, 1067, 1068,
+     1066, 1066, 1066,  133, 1066, 1069, 1069, 1070, 1046, 1070,
+     1071, 1072, 1070, 1070, 1070,  145, 1070, 1073, 1073, 1074,
+     1046, 1074, 1075, 1076, 1074, 1074, 1074,  157, 1074, 1077,
+     1077, 1046, 1046, 1046, 1046, 1047, 1046, 1047, 1078, 1078,
+     1078, 1078, 1078, 1046, 1046, 1046, 1079, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+
+     1080, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1081, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1082, 1083, 1084,
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,
+     1046, 1046, 1046, 1046, 1046, 1080, 1080, 1080, 1080, 1080,
+     1080, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1085, 1085,
+     1086, 1087, 1087, 1087, 1087, 1088, 1084, 1088, 1088, 1046,
+     1046, 1089, 1046, 1090, 1089, 1090, 1091, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1092,
+     1046, 1092, 1089, 1046, 1046, 1046, 1082, 1093, 1094, 1093,
+
+     1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
+     1093, 1093, 1095, 1046, 1095, 1096, 1046, 1096, 1097, 1097,
+     1096, 1097, 1098, 1098, 1096, 1096, 1096, 1096, 1096, 1096,
+     1096, 1096, 1096, 1096, 1096, 1096, 1099, 1046, 1099, 1100,
+     1046, 1100, 1101, 1101, 1100, 1101, 1102, 1102, 1100, 1100,
+     1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+     1103, 1046, 1103, 1104, 1046, 1104, 1105, 1105, 1104, 1105,
+     1106, 1106, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+     1104, 1104, 1104, 1104, 1107, 1046, 1107, 1108, 1046, 1109,
+     1108, 1109, 1110, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+
+     1108, 1108, 1108, 1108, 1108, 1111, 1046, 1111, 1046, 1112,
+     1112, 1112, 1112, 1046, 1113, 1113, 1113, 1113, 1113, 1113,
+     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1046, 1046,
+     1046, 1046, 1046, 1046, 1114, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1115, 1116, 1046, 1046, 1046, 1046, 1117,
+     1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
+     1119, 1113, 1113, 1046, 1120, 1046, 1120, 1121, 1122, 1122,
+     1122, 1122, 1122, 1123, 1124, 1124, 1124, 1124, 1124, 1124,
+
+     1124, 1124, 1124, 1125, 1126, 1127, 1128, 1046, 1124, 1046,
+     1046, 1129, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130,
+     1130, 1131, 1132, 1046, 1133, 1133, 1133, 1133, 1133, 1133,
+     1133, 1133, 1133, 1134, 1135, 1136, 1137, 1046, 1138, 1138,
+     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1140, 1141,
+     1142, 1046, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
+     1143, 1144, 1145, 1146, 1147, 1046, 1148, 1148, 1148, 1148,
+     1148, 1148, 1148, 1148, 1148, 1149, 1150, 1151, 1152, 1046,
+     1046, 1046, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+
+     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1154, 1046, 1154,
+     1155, 1046, 1156, 1046, 1156, 1157, 1046, 1158, 1158, 1158,
+     1158, 1158, 1158, 1159, 1160, 1160, 1160, 1160, 1161, 1161,
+     1162, 1162, 1162, 1162, 1163, 1162, 1163, 1164, 1165, 1162,
+     1165, 1166, 1162, 1167, 1167, 1162, 1046, 1046, 1168, 1168,
+     1169, 1169, 1169, 1169, 1170, 1169, 1171, 1169, 1172, 1172,
+     1173, 1173, 1173, 1173, 1174, 1174, 1173, 1174, 1175, 1175,
+     1176, 1176, 1173, 1176, 1177, 1173, 1046,  697, 1178, 1178,
+
+     1178, 1178, 1179, 1179, 1178, 1179, 1180, 1180, 1181, 1181,
+     1178, 1181, 1182, 1178, 1046,  715, 1183, 1183, 1183, 1183,
+     1184, 1184, 1183, 1184, 1185, 1185, 1186, 1186, 1183, 1186,
+     1187, 1183, 1046,  733, 1188, 1188, 1188, 1188, 1189, 1188,
+     1189, 1190, 1191, 1188, 1191, 1192, 1188, 1193, 1193, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1195, 1195, 1195, 1195, 1196, 1196, 1196, 1196,
+
+     1197, 1197, 1198, 1198, 1199, 1199, 1046, 1198, 1046, 1046,
+     1200, 1200, 1201, 1201, 1202, 1202, 1203, 1203, 1046,  819,
+     1178, 1178,  715,  715, 1183, 1183,  733,  733, 1188, 1188,
+      749,  749, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1195, 1195, 1195, 1195, 1196, 1197, 1197,  806,  806,
+     1200, 1200,  816,  816,  819,  819,  715,  715,  733,  733,
+      749,  749, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1195, 1195, 1046, 1197, 1197,  806,  806,
+     1200, 1200,  816,  816,  819,  819,  715,  715,  733,  733,
+      749,  749, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1198, 1198, 1201, 1201, 1203, 1203, 1178,
+     1178, 1183, 1183, 1188, 1188, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+
+     1194, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1198,
+     1203, 1178, 1183, 1188, 1194, 1194, 1194, 1194, 1194, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1046, 1046, 1046, 1194,
+     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1046, 1046, 1194,
+     1194, 1194, 1194, 1194, 1194,    0, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
 
-     1047, 1047, 1047, 1047
+     1046, 1046, 1046
     } ;
 
-static yyconst flex_int16_t yy_nxt[7575] =
+static yyconst flex_int16_t yy_nxt[7573] =
     {   0,
        24,   25,   26,   27,   25,   28,   29,   30,   31,   32,
        33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
@@ -820,14 +826,14 @@
        47,   47,   48,   47,   48,   47,   48,   48,   47,   24,
        47,   47,   47,   47,   47,   47,   47,   49,   47,   50,
        47,   47,   51,   47,   52,   47,   47,   53,   47,   54,
-       47,   47,   47,   47,   55,   56,   58,  461,   59,   58,
-       24,  167,  222,  223,   24,   24,  462,   24,   60,  113,
+       47,   47,   47,   47,   55,   56,   58,  460,   59,   58,
+       24,  167,  221,  222,   24,   24,  461,   24,   60,  113,
        60,   61,   24,   81,  113,   82,   81,   62,   63,   24,
        24,   41,   42,   42,   42,  178,   41,   42,   42,   42,
 
-      162, 1046,  162,  162,  168,  268,   83,  179,  162,  164,
+      162, 1045,  162,  162,  168,  267,   83,  179,  162,  164,
       162,  162,   47,  175,   47,  163,  170,   47,  171,   47,
-      172,  173,   64,  163,   47,  224,  225,  176,  298,   24,
+      172,  173,   64,  163,   47,  223,  224,  176,  297,   24,
        24,   66,   67,   68,   69,   67,   66,   70,   66,   71,
        66,   66,   72,   66,   73,   66,   73,   74,   66,   75,
        76,   76,   76,   66,   77,   66,   66,   78,   78,   78,
@@ -886,770 +892,770 @@
       160,  160,  150,  160,  160,  160,  160,  160,  160,  160,
       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
       161,  160,  160,  160,  160,  160,  160,  150,  150,  180,
-     1045,  181,  181,  181,  181,  203,  180,  182,  181,  181,
-      181,  181,  204, 1044,  183,  184,  451,  185,  185,  185,
-      185,  226,  227,  186,  452,  187,  187,  187,  187,  187,
-      188,  187,  187,  187,  187,  187,  187,  187,  244,  187,
-
-      187,  189,  190,  187,  191,  192,  193,  187,  194,  195,
-      196,  197,  187,  198,  187,  199,  200,  201,  187,  187,
-      187,  187,  202,  205,  228,  181,  181,  181,  181,  224,
-      225,  229,  423,  167,  228,  206,  207,  424,  231,  245,
-      208,  229,  209,  228,  242,  210,  318,  319,  231,  206,
-      229,  205,  207,  181,  181,  181,  181,  231,  228,  246,
-      209,  246,  246,  228,  207,  229,  168, 1043,  208,  210,
-      229,  228,  231,  232,  232,  232,  232,  231,  229,  233,
-      207,  211,  318,  319,  243,  231,  212,  241,  229,  213,
-      214,  215,  216,  217,  218,  268,  234,  219,  228,  220,
-
-      221,  362,  235,  228,  889,  229,  276,  429,  236,  167,
-      229,  430,  231,  246,  164,  246,  246,  231,  431,  211,
-      432,  180,  237,  181,  181,  181,  181,  253,  214,  215,
-      254,  255,  218,  257,  258,  259,  257,  228,  221,  277,
-      239,  238,  168, 1042,  229,  257,  258,  259,  257,  342,
-      343,  231,  392,  240, 1047,  261, 1041,  261,  262,  261,
-      261,  180,  458,  181,  181,  181,  181,  459,  185,  185,
-      185,  185,  187,  247,  239,  187,  229,  187,  167,  248,
-      249,  250,  251,  268,  252,  393,  187,  187,  187,  271,
-      258,  272,  271,  187, 1040,  264,  265,  342,  343,  205,
-
-      266,  181,  181,  181,  181,  268,  270,  271,  258,  272,
-      271,  168,  207,  433,  229,  434,  208,  269,  269,  269,
-      269,  268,  279, 1039,  280,  280,  280,  280,  207,  281,
-      281,  281,  281,  882,  273,  297,  297,  297,  297,  318,
-      321,  273,  436,  322,  273,  299,  318,  325,  273,  177,
-      185,  185,  185,  185,  301,  322,  437,  282,  465,  273,
-      268,  283,  284,  466,  280,  280,  280,  280,  273,  304,
-      304,  304,  304,  299,  285,  286,  323,  419,  295,  287,
-      299,  288,  296,  299,  289,  318,  319,  299,  285,  420,
-      302,  286,  303,  303,  303,  303,  513,  305,  299,  288,
-
-     1038,  306,  342,  349,  366,  367,  337,  299,  289,  273,
-      273,  346,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273, 1037,  273,  273,  456,  318,  319,
-      229,  292,  273,  273,  273,  592,  205,  268,  297,  297,
-      297,  297,  326,  457,  327,  327,  327,  327,  273,  207,
-      342,  343,  593,  208,  366,  367,  342,  345,  442,  442,
-      346,  366,  373,  276,  350,  207,  351,  351,  351,  351,
-      370,  449,  450,  273,  273,  273,  273, 1036,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-     1035,  273,  273,  347,  318,  319,  277,  292,  273,  273,
-
-      273,  395,  930,  396,  396,  396,  396,  342,  343,  291,
-      328,  328,  328,  328,  273, 1034,  342,  343,  468,  469,
-      293,  786,  317,  352,  352,  352,  352,  366,  369,  317,
-      787,  370,  317,  445,  445,  445,  317,  361,  329,  273,
-      273,  307,  330,  303,  303,  303,  303,  317,  449,  485,
-     1033,  353,  341,  308,  309,  354,  317,  426,  310,  341,
-      311,  427,  341,  312,  371,  428,  341,  308,  228,  365,
-      309,  410,  493,  410,  410,  229,  365,  341,  311,  365,
-      494, 1032,  231,  365,  500,  500,  341,  312,  299,  299,
-      299,  299,  299,  299,  365,  299,  299,  299,  299,  299,
-
-      299,  299,  299,  365,  299,  299,  366,  367,  366,  367,
-      315,  299,  299,  299,  397,  397,  397,  397,  518,  518,
-      374,  975,  375,  375,  375,  375,  389,  299,  162,  385,
-      162,  162,  246,  389,  246,  246,  389,  426, 1031,  505,
-      389,  427,  398,  163,  506,  484,  399,  411,  411,  411,
-      411,  389,  299,  299,  299,  299,  299,  299,  299,  299,
-      389,  299,  299,  299,  299,  299,  299,  299,  299,  291,
-      299,  299,  412,  412,  412,  412,  315,  299,  299,  299,
-      413,  413,  413,  413,  366,  367,  414,  414,  414,  414,
-      503,  503,  503,  299,  185,  185,  185,  185, 1030,  316,
-
-      376,  376,  376,  376,  453,  465,  465,  596,  454,  597,
-      466,  523,  205,  981,  181,  181,  181,  181,  299,  299,
-      318,  319,  455,  467,  268,  207,  228, 1029,  377,  208,
-      318,  319,  378,  229,  331,  228,  327,  327,  327,  327,
-      231,  207,  229,  228,  318,  319,  332,  333,  670,  231,
-      229,  334,  671,  335,  318,  319,  336,  231,  362,  443,
-      332,  443,  228,  333,  444,  444,  444,  444,  338,  229,
-      887,  335,  473,  473,  473,  473,  231,  477,  478, 1028,
-      336,  317,  317,  318,  319,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  476,  317,  317,  185,
-
-      185,  185,  185,  339,  317,  317,  317,  521,  521,  521,
-      415,  441,  441,  441,  441,  938,  228,  228,  228,  362,
-      317, 1027,  415,  229,  229,  229,  415,  228,  228,  939,
-      231,  231,  231,  362,  229,  229,  229,  931,  415,  318,
-      321,  231,  231,  268,  291,  317,  317,  317,  317,  318,
-      319,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  479,  317,  317, 1026,  474,  475,  480,  339,
-      317,  317,  317,  228,  318,  319,  481,  342,  343,  495,
-      229,  257,  258,  259,  257, 1025,  317,  231,  257,  258,
-      259,  257,  340,  488,  488,  488,  488,  487,  229,  342,
-
-      343,  269,  269,  269,  269,  268,  271,  258,  272,  271,
-      392,  317,  317,  342,  343,  482,  271,  258,  272,  271,
-      281,  281,  281,  281,  299,  318,  319,  355,  177,  351,
-      351,  351,  351,  301,  281,  281,  281,  281, 1024,  356,
-      357,  318,  325,  393,  358,  496,  359,  318,  319,  360,
-      322,  940,  501,  356,  501,  386,  357,  502,  502,  502,
-      502,  496,  318,  325,  359,  304,  304,  304,  304,  342,
-      343,  322,  527,  360,  341,  341,  342,  343,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  268,
-      341,  341,  342,  345,  528,  577,  363,  341,  341,  341,
-
-      578,  284,  268,  280,  280,  280,  280,  936,  499,  499,
-      499,  499,  338,  341,  286,  519,  812,  519,  287,  496,
-      520,  520,  520,  520,  318,  321,  342,  343,  322,  813,
-      286,  366,  367,  366,  367,  496,  366,  367,  341,  341,
-      341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  386,  341,  341,  891,  342,
-      349,  323,  363,  341,  341,  341,  268,  205,  346,  297,
-      297,  297,  297,  307,  934,  303,  303,  303,  303,  341,
-      207,  314,  342,  349,  208,  364,  309,  366,  369,  932,
-      310,  346,  304,  304,  304,  304,  207,  318,  321,  318,
-
-      319,  322,  309,  514,  341,  341,  366,  367,  342,  345,
-      342,  345,  346,  973,  346,  328,  328,  328,  328,  514,
-      379,  937,  375,  375,  375,  375,  338,  517,  517,  517,
-      517,  268,  380,  381,  323,  318,  319,  382,  514,  383,
-      342,  343,  384,  318,  319,  347,  380,  347, 1023,  381,
-      407,  530,  530,  893,  514,  366,  373,  383,  268,  533,
-      533,  533,  342,  343,  370, 1022,  384,  365,  365,  366,
-      367,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  268,  365,  365,  318,  319,  541,  883,  387,
-      365,  365,  365,  366,  367,  572,  572,  318,  319,  442,
-
-      442,  328,  328,  328,  328,  933,  365,  941,  531,  542,
-      531,  386,  526,  532,  532,  532,  532,  318,  319,  366,
-      367,  535,  397,  397,  397,  397,  536,  410,  526,  410,
-      410,  365,  365,  365,  365,  366,  367,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365, 1021,  365,
-      365, 1020,  318,  319,  630,  387,  365,  365,  365,  342,
-      343,  575,  575,  575,  342,  343,  555,  635,  529,  529,
-      529,  529,  365,  366,  369,  544,  544,  370,  388,  526,
-      352,  352,  352,  352,  342,  343, 1019,  631,  549,  935,
-      342,  343, 1018,  550,  657,  526,  314,  365,  365,  400,
-
-      636,  396,  396,  396,  396, 1017,  352,  352,  352,  352,
-      371,  401,  402,  342,  343,  661,  403,  540,  404,  366,
-      367,  405,  342,  343,  545,  401,  545,  658,  402,  546,
-      546,  546,  546,  540,  366,  373,  404,  229,  547,  547,
-      547,  500,  500,  370,  268,  405,  389,  389,  662,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389, 1016,  389,  389,  342,  343,  556,  928,  408,  389,
-      389,  389,  366,  369,  518,  518,  370,  366,  367,  976,
-      543,  543,  543,  543,  973,  389, 1010,  366,  367,  572,
-      572,  540,  986,  376,  376,  376,  376,  411,  411,  411,
-
-      411,  808,  809,  376,  376,  376,  376,  540,  978,  371,
-      389,  389,  389,  389,  554,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  291,  389,  389,
-      554,  366,  367,  741,  408,  389,  389,  389,  366,  367,
-      445,  445,  445,  366,  367,  318,  319,  557,  557,  557,
-      557,  389,  366,  367,  558,  558,  612,  409,  554,  561,
-      561,  561,  976,  559,  613,  559,  742,  614,  560,  560,
-      560,  560,  318,  319,  554,  974,  389,  389,  504,  504,
-      504,  504,  366,  367,  318,  319,  563,  504,  504,  504,
-      573,  564,  573,  684,  979,  574,  574,  574,  574,  980,
-
-      745,  504,  504,  504,  504,  504,  504,  273,  273, 1009,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  685,  273,  273,  412,  412,  412,  412,  292,
-      273,  273,  273,  746,  400, 1008,  396,  396,  396,  396,
-      338,  397,  397,  397,  397,  338,  273,  402,  503,  503,
-      503,  403,  568,  413,  413,  413,  413,  414,  414,  414,
-      414,  318,  691,  402,  444,  444,  444,  444,  568, 1007,
-      688,  273,  273,  273,  273, 1006,  273,  273,  273,  507,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  508,
-
-      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
-      508,  508,  273,  508,  508,  508,  508,  508,  508,  508,
-      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
-      508,  508,  508,  508,  508,  508,  508,  273,  273,  273,
-      273, 1005,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273, 1004,  273,  273,  571,  571,  571,
-      571,  292,  273,  273,  273,  582,  630,  582,  568, 1003,
-      583,  583,  583,  583,  441,  441,  441,  441,  273,  444,
-      444,  444,  444, 1002,  568,  415,  228,  488,  488,  488,
-      488,  487,  942,  229,  943,  228,  407,  509,  407,  631,
-
-      231,  415,  229,  273,  273,  522,  522,  522,  522,  231,
-      228,  228,  228,  228,  522,  522,  522,  229,  229,  229,
-      229,  521,  521,  521,  231,  231,  231,  231,  522,  522,
-      522,  522,  522,  522,  299,  299,  299,  299,  299,  299,
-      639,  299,  299,  299,  299,  299,  299,  299,  299, 1001,
-      299,  299, 1000,  228,  640,  228,  315,  299,  299,  299,
-      229,  229,  229,  499,  499,  499,  499,  231,  268,  231,
-      652,  999,  652,  299,  496,  653,  653,  653,  653,  502,
-      502,  502,  502,  502,  502,  502,  502,  575,  575,  575,
-      496,  998,  650,  641,  318,  687,  651,  642,  299,  299,
-
-      299,  299,  299,  299,  299,  299,  471,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  299,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
-      524,  524,  524,  524,  299,  299,  299,  299,  299,  299,
-      299,  299,  997,  299,  299,  299,  299,  299,  299,  299,
-      299,  996,  299,  299,  635,  228,  228,  995,  315,  299,
-      299,  299,  229,  229,  342,  343,  672,  994,  672,  231,
-
-      231,  673,  673,  673,  673,  299,  993,  517,  517,  517,
-      517,  520,  520,  520,  520,  342,  343,  636,  514,  520,
-      520,  520,  520,  644,  525,  657,  643,  342,  709,  974,
-      299,  299,  318,  319,  514,  299,  706,  366,  367,  632,
-      318,  319,  702,  992,  677,  229,  331,  268,  327,  327,
-      327,  327,  268,  318,  319,  661,  530,  530,  658,  333,
-      991,  366,  367,  334,  682,  703,  682,  318,  319,  683,
-      683,  683,  683,  318,  319,  333,  318,  319,  990,  802,
-      318,  319,  989,  532,  532,  532,  532,  721,  662,  533,
-      533,  533,  534,  534,  534,  534,  532,  532,  532,  532,
-
-      988,  534,  534,  534,  318,  687,  318,  319,  688,  720,
-      318,  693,  318,  319,  694,  534,  534,  534,  534,  534,
-      534,  317,  317,  318,  319,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  987,  317,  317,  318,
-      319,  689,  972,  339,  317,  317,  317,  695,  741,  818,
-      299,  342,  343,  971,  632,  529,  529,  529,  529,  677,
-      317,  975,  700, 1011,  700,  970,  526,  701,  701,  701,
-      701,  366,  727,  574,  574,  574,  574,  318,  693,  969,
-      724,  742,  526,  342,  343,  317,  317,  317,  317,  318,
-      319,  317,  317,  537,  317,  317,  317,  317,  317,  317,
-
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  538,  538,  538,  538,  538,  538,  538,
-      538,  538,  538,  538,  538,  538,  317,  538,  538,  538,
-      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
-      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
-      538,  317,  317,  317,  317,  318,  319,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  968,  317,
-      317,  342,  343,  967,  229,  339,  317,  317,  317,  342,
-      343,  268,  966,  342,  343,  342,  705,  543,  543,  543,
-      543,  977,  317,  342,  705,  544,  544,  706,  540,  546,
-
-      546,  546,  546,  342,  711,  342,  343,  712,  803,  342,
-      343,  539,  366,  367,  540,  342,  343,  317,  317,  342,
-      343,  546,  546,  546,  546,  547,  547,  547,  558,  558,
-      707,  366,  367,  355,  965,  351,  351,  351,  351,  314,
-      713,  366,  367,  964,  318,  319,  357,  561,  561,  561,
-      358,  977,  718, 1010,  718,  366,  367,  719,  719,  719,
-      719,  963,  357,  342,  343,  318,  319,  366,  367,  537,
-      962,  560,  560,  560,  560,  574,  574,  574,  574,  548,
-      548,  548,  548,  560,  560,  560,  560,  819,  548,  548,
-      548,  366,  723,  342,  711,  724,  745,  366,  729,  366,
-
-      367,  730,  548,  548,  548,  548,  548,  548,  341,  341,
-      342,  343,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  961,  341,  341,  366,  367,  725,  746,
-      363,  341,  341,  341,  731,  571,  571,  571,  571,  318,
-      691,  960,  557,  557,  557,  557,  568,  341,  688,  736,
-      985,  736, 1015,  554,  737,  737,  737,  737,  583,  583,
-      583,  583,  568,  583,  583,  583,  583,  342,  343,  554,
-      959,  551,  341,  341,  341,  341,  342,  343,  341,  341,
-      551,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-
-      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
-      552,  552,  552,  341,  552,  552,  552,  552,  552,  552,
-      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
-      552,  552,  552,  552,  552,  552,  552,  552,  341,  341,
-      341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  958,  341,  341,  957,  228,
-      228,  228,  363,  341,  341,  341,  229,  229,  229,  228,
-      228,  318,  691,  231,  231,  231,  229,  229,  228,  341,
-      688,  342,  709,  231,  231,  229,  653,  653,  653,  653,
-      706,  956,  231,  653,  653,  653,  653,  955,  553,  318,
-
-      687,  954,  794,  688,  341,  341,  366,  367,  318,  687,
-      795,  953,  688,  952,  796,  673,  673,  673,  673,  951,
-      379,  950,  375,  375,  375,  375,  949,  797,  673,  673,
-      673,  673,  948,  381,  366,  723,  689,  382,  318,  319,
-      342,  343,  318,  319,  944,  689,  342,  343,  924,  381,
-      366,  367,  366,  367,  683,  683,  683,  683,  683,  683,
-      683,  683,  701,  701,  701,  701,  562,  562,  562,  562,
-      923,  342,  709,  342,  343,  562,  562,  562,  318,  693,
-      706,  922,  694,  822,  318,  693,  366,  729,  694,  562,
-      562,  562,  562,  562,  562,  365,  365,  366,  367,  365,
-
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      921,  365,  365,  342,  343,  695,  823,  387,  365,  365,
-      365,  695,  366,  367,  366,  727,  366,  367,  920,  701,
-      701,  701,  701,  724,  365,  919,  853,  837,  719,  719,
-      719,  719,  719,  719,  719,  719,  366,  727,  366,  367,
-      838,  854,  565,  318,  319,  724,  918,  839,  855,  365,
-      365,  365,  365,  366,  367,  365,  365,  565,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  566,  566,  566,
-      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
-
-      365,  566,  566,  566,  566,  566,  566,  566,  566,  566,
-      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
-      566,  566,  566,  566,  566,  365,  365,  365,  365,  366,
-      367,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  917,  365,  365,  366,  367,  318,  319,  387,
-      365,  365,  365,  342,  705,  366,  367,  706,  342,  343,
-      342,  705,  342,  343,  706,  978,  365,  916,  342,  711,
-      342,  711,  712,  228,  712,  366,  723,  366,  723,  724,
-      229,  724,  362,  888,  915,  567,  914,  231,  826,  913,
-      707,  365,  365,  576,  576,  576,  576,  707,  827,  366,
-
-      367,  912,  576,  576,  576,  713,  911,  713,  737,  737,
-      737,  737,  725,  314,  725,  873,  576,  576,  576,  576,
-      576,  576,  389,  389,  910,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  982,  389,  389,
-      737,  737,  737,  737,  408,  389,  389,  389,  366,  729,
-      366,  367,  730,  366,  729,  386,  890,  730,  407,  892,
-      228,  389,  228,  927,  945,  927,  927,  229,  927,  229,
-      927,  927,  318,  319,  231,  909,  231,  946,  908,  318,
-      319,  979,  362, 1012,  947,  731,  389,  389,  389,  389,
-      731,  389,  389,  389,  579,  389,  389,  389,  389,  389,
-
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  580,  580,  580,  580,  580,  580,
-      580,  580,  580,  580,  580,  580,  580,  389,  580,  580,
-      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
-      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
-      580,  580,  389,  389,  389,  389,  907,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  983,
-      389,  389,  906,  228,  228,  228,  408,  389,  389,  389,
-      229,  229,  229,  973,  905,  229,  904,  231,  231,  231,
-      229,  229,  268,  389,  229,  228,  228,  268,  268,  342,
-
-      343,  268,  229,  229,  366,  367,  984,  903,  902,  231,
-      231,  901,  581,  875,  386,  929,  974,  874,  389,  389,
-      504,  504,  504,  504,  876,  878,  900,  229,  879,  504,
-      504,  504,  925,  926,  268,  899,  985,  898,  986,  318,
-      319,  980,  897,  504,  504,  504,  504,  504,  504,  273,
-      273,  386,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  973,  273,  273,  896,  228,  895,
-      894,  664,  273,  273,  273,  229,  974,  342,  343,  982,
-      228,  407,  231,  407,  366,  367,  984,  229,  273,  342,
-      343,  981,  808, 1013,  231,  366,  367,  983,  877, 1014,
-
-      872,  871,  870,  869,  868,  867,  866,  865,  864,  863,
-      862,  861,  860,  273,  273,  273,  273,  859,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      291,  273,  273,  291,  291,  291,  291,  292,  273,  273,
-      273,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      291,  291,  291,  291,  273,  291,  291,  291,  291,  291,
-      291,  665,  291,  291,  291,  666,  291,  291,  291,  291,
-      291,  291,  291,  291,  291,  291,  291,  291,  291,  273,
-      273,  522,  522,  522,  522,  858,  857,  856,  852,  851,
-      522,  522,  522,  850,  849,  848,  847,  846,  845,  844,
-
-      843,  842,  841,  840,  522,  522,  522,  522,  522,  522,
-      299,  299,  299,  299,  299,  299,  836,  299,  299,  299,
-      299,  299,  299,  299,  299,  835,  299,  299,  834,  579,
-      741,  831,  679,  299,  299,  299,  830,  829,  825,  821,
-      471,  815,  814,  811,  810,  507,  657,  805,  804,  299,
-      801,  800,  799,  798,  471,  638,  630,  793,  792,  791,
-      790,  789,  788,  785,  784,  783,  782,  781,  780,  779,
-      778,  777,  776,  775,  299,  299,  299,  299,  299,  299,
-      299,  299,  774,  299,  299,  299,  299,  299,  299,  299,
-      299,  314,  299,  299,  314,  314,  314,  314,  315,  299,
-
-      299,  299,  314,  314,  314,  314,  314,  314,  314,  314,
-      314,  314,  314,  314,  314,  299,  314,  314,  314,  314,
-      314,  314,  680,  314,  314,  314,  681,  314,  314,  314,
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
-      299,  299,  318,  319,  773,  772,  771,  770,  769,  768,
-      767,  766,  765,  764,  763,  762,  761,  760,  534,  534,
-      534,  534,  759,  758,  757,  756,  755,  534,  534,  534,
-      754,  753,  752,  751,  741,  739,  738,  675,  674,  669,
-      668,  534,  534,  534,  534,  534,  534,  317,  317,  318,
-      319,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-
-      317,  317,  667,  317,  317,  657,  655,  654,  649,  697,
-      317,  317,  317,  648,  647,  646,  487,  612,  596,  592,
-      638,  633,  630,  628,  627,  626,  317,  625,  624,  623,
-      622,  621,  620,  619,  618,  617,  616,  615,  611,  610,
-      609,  608,  607,  606,  605,  604,  603,  602,  601,  600,
-      599,  317,  317,  317,  317,  318,  319,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  338,  317,
-      317,  338,  338,  338,  338,  339,  317,  317,  317,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  317,  338,  338,  338,  338,  338,  338,  698,
+     1044,  181,  181,  181,  181,  202,  180,  182,  181,  181,
+      181,  181,  203,  785,  183,  184,  184,  184,  184,  225,
+      226,  185,  786,  186,  186,  186,  186,  186,  187,  186,
+      186,  186,  186,  186,  186,  186,  243,  186,  186,  188,
+
+      189,  186,  190,  191,  192,  186,  193,  194,  195,  196,
+      186,  197,  186,  198,  199,  200,  186,  186,  186,  186,
+      201,  204,  227,  181,  181,  181,  181,  223,  224,  228,
+      422,  167,  227,  205,  206,  423,  230,  244,  207,  228,
+      208,  227,  241,  209,  317,  318,  230,  205,  228,  204,
+      206,  181,  181,  181,  181,  230,  227,  245,  208,  245,
+      245,  227,  206,  228,  168, 1043,  207,  209,  228,  227,
+      230,  231,  231,  231,  231,  230,  228,  232,  206,  210,
+      317,  318,  242,  230,  211,  240,  228,  212,  213,  214,
+      215,  216,  217,  267,  233,  218,  227,  219,  220,  361,
+
+      234,  227,  888,  228,  275,  428,  235,  167,  228,  429,
+      230,  245,  164,  245,  245,  230,  430,  210,  431,  180,
+      236,  181,  181,  181,  181,  252,  213,  214,  253,  254,
+      217,  256,  257,  258,  256,  227,  220,  276,  238,  237,
+      168, 1042,  228,  256,  257,  258,  256,  341,  342,  230,
+      391,  239, 1046,  260, 1041,  260,  261,  260,  260,  180,
+      457,  181,  181,  181,  181,  458,  184,  184,  184,  184,
+      186,  246,  238,  186,  228,  186,  167,  247,  248,  249,
+      250,  267,  251,  392,  186,  186,  186,  270,  257,  271,
+      270,  186, 1040,  263,  264,  341,  342,  204,  265,  181,
+
+      181,  181,  181,  267,  269,  270,  257,  271,  270,  168,
+      206,  432,  228,  433,  207,  268,  268,  268,  268,  267,
+      278, 1039,  279,  279,  279,  279,  206,  280,  280,  280,
+      280,  881,  272,  296,  296,  296,  296,  317,  320,  272,
+      435,  321,  272,  298,  317,  324,  272,  177,  184,  184,
+      184,  184,  300,  321,  436,  281,  464,  272,  267,  282,
+      283,  465,  279,  279,  279,  279,  272,  303,  303,  303,
+      303,  298,  284,  285,  322,  418,  294,  286,  298,  287,
+      295,  298,  288,  317,  318,  298,  284,  419,  301,  285,
+      302,  302,  302,  302,  512,  304,  298,  287, 1038,  305,
+
+      341,  348,  365,  366,  336,  298,  288,  272,  272,  345,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  272, 1037,  272,  272,  450,  317,  318,  228,  291,
+      272,  272,  272,  451,  204,  267,  296,  296,  296,  296,
+      325, 1036,  326,  326,  326,  326,  272,  206,  341,  342,
+     1035,  207,  365,  366,  341,  344,  441,  441,  345,  365,
+      372,  275,  349,  206,  350,  350,  350,  350,  369,  448,
+      449,  272,  272,  272,  272, 1034,  272,  272,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  272, 1033,  272,
+      272,  346,  317,  318,  276,  291,  272,  272,  272,  394,
+
+      455,  395,  395,  395,  395,  341,  342, 1032,  327,  327,
+      327,  327,  272, 1031,  341,  342,  456,  595,  292,  596,
+      316,  351,  351,  351,  351,  365,  368,  316, 1030,  369,
+      316,  444,  444,  444,  316,  360,  328,  272,  272,  306,
+      329,  302,  302,  302,  302,  316,  467,  468, 1029,  352,
+      340,  307,  308,  353,  316,  425,  309,  340,  310,  426,
+      340,  311,  370,  427,  340,  307,  227,  364,  308,  409,
+     1028,  409,  409,  228,  364,  340,  310,  364,  448,  484,
+      230,  364,  499,  499,  340,  311,  298,  298,  298,  298,
+      298,  298,  364,  298,  298,  298,  298,  298,  298,  298,
+
+      298,  364,  298,  298,  365,  366,  365,  366,  314,  298,
+      298,  298,  396,  396,  396,  396,  517,  517,  373,  591,
+      374,  374,  374,  374,  388,  298,  162,  384,  162,  162,
+      245,  388,  245,  245,  388,  425,  592,  504,  388,  426,
+      397,  163,  505,  483,  398,  410,  410,  410,  410,  388,
+      298,  298,  298,  298,  298,  298,  298,  298,  388,  298,
+      298,  298,  298,  298,  298,  298,  298, 1027,  298,  298,
+      411,  411,  411,  411,  314,  298,  298,  298,  412,  412,
+      412,  412,  365,  366,  413,  413,  413,  413,  492,  317,
+      318,  298,  184,  184,  184,  184,  493,  315,  375,  375,
+
+      375,  375,  452,  464,  464,  337,  453,  886,  465,  522,
+      204,  980,  181,  181,  181,  181,  298,  298,  317,  318,
+      454,  466,  267,  206,  227, 1026,  376,  207,  317,  318,
+      377,  228,  330,  227,  326,  326,  326,  326,  230,  206,
+      228,  227,  317,  318,  331,  332,  669,  230,  228,  333,
+      670,  334,  317,  320,  335,  230,  361,  442,  331,  442,
+      227,  332,  443,  443,  443,  443,  972,  228, 1009,  334,
+      472,  472,  472,  472,  230,  476,  477, 1025,  335,  316,
+      316,  317,  318,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  475,  316,  316,  184,  184,  184,
+
+      184,  338,  316,  316,  316,  502,  502,  502,  414,  440,
+      440,  440,  440,  937,  227,  227,  227,  361,  316, 1024,
+      414,  228,  228,  228,  414,  227,  227,  938,  230,  230,
+      230,  361,  228,  228,  228,  929,  414,  317,  318,  230,
+      230,  267,  290,  316,  316,  316,  316,  317,  318,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      478,  316,  316,  981,  473,  474,  479,  338,  316,  316,
+      316,  227,  341,  342,  480,  341,  342,  494,  228,  256,
+      257,  258,  256, 1023,  316,  230,  256,  257,  258,  256,
+      339,  487,  487,  487,  487,  486,  228,  341,  342,  268,
+
+      268,  268,  268,  267,  270,  257,  271,  270,  361,  316,
+      316,  341,  342,  481,  270,  257,  271,  270,  280,  280,
+      280,  280,  298,  317,  318,  354,  177,  350,  350,  350,
+      350,  300,  280,  280,  280,  280, 1022,  355,  356,  520,
+      520,  520,  357,  495,  358,  341,  344,  359,  341,  342,
+      500,  355,  500, 1021,  356,  501,  501,  501,  501,  495,
+      317,  324,  358,  303,  303,  303,  303,  317,  318,  321,
+      526,  359,  340,  340,  341,  342,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  385,  340,  340,
+      890,  317,  324,  576,  362,  340,  340,  340,  577,  283,
+
+      321,  279,  279,  279,  279,  935,  498,  498,  498,  498,
+      337,  340,  285,  518,  527,  518,  286,  495,  519,  519,
+      519,  519,  317,  320,  365,  366,  321, 1020,  285,  365,
+      366,  365,  366,  495,  365,  368,  340,  340,  340,  340,
+      341,  342,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  406,  340,  340,  892,  341,  348,  322,
+      362,  340,  340,  340,  267,  204,  345,  296,  296,  296,
+      296,  306,  930,  302,  302,  302,  302,  340,  206,  290,
+      341,  348,  207,  363,  308,  365,  366,  931,  309,  345,
+      303,  303,  303,  303,  206,  317,  320,  317,  318,  321,
+
+      308,  513,  340,  340,  365,  366,  341,  344,  341,  344,
+      345,  972,  345,  327,  327,  327,  327,  513,  378,  267,
+      374,  374,  374,  374,  267,  516,  516,  516,  516,  267,
+      379,  380,  322,  317,  318,  381,  513,  382,  341,  342,
+      383,  317,  318,  346,  379,  346,  811,  380, 1019,  529,
+      529,  812,  513,  365,  372,  382,  228,  532,  532,  532,
+      341,  342,  369,  267,  383,  364,  364,  365,  366,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      267,  364,  364,  317,  318,  540, 1018,  386,  364,  364,
+      364,  877,  391,  571,  571,  317,  318,  441,  441,  327,
 
-      338,  338,  338,  699,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  317,  317,  342,
-      343,  598,  595,  594,  591,  590,  589,  588,  587,  586,
-      585,  584,  570,  569,  392,  548,  548,  548,  548,  516,
-      515,  512,  511,  510,  548,  548,  548,  498,  497,  276,
-      471,  492,  491,  487,  459,  457,  434,  431,  548,  548,
-      548,  548,  548,  548,  341,  341,  342,  343,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  429,
-      341,  341,  483,  420,  471,  268,  715,  341,  341,  341,
-      470,  464,  463,  460,  448,  447,  440,  439,  438,  435,
-
-      425,  422,  421,  341,  418,  417,  167,  406,  392,  390,
-      313,  268,  294,  290,  276,  274,  256,  167,  256,  167,
-      174,  165, 1047,   96,   65,   57, 1047, 1047,  341,  341,
-      341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  362,  341,  341,  362,  362,
-      362,  362,  363,  341,  341,  341,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  341,
-      362,  362,  362,  362,  362,  362,  716,  362,  362,  362,
-      717,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  362,  341,  341,  366,  367, 1047, 1047,
-
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047,  562,  562,  562,  562, 1047, 1047, 1047, 1047,
-     1047,  562,  562,  562, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047,  562,  562,  562,  562,  562,
-      562,  365,  365,  366,  367,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365, 1047,  365,  365, 1047,
-     1047, 1047, 1047,  733,  365,  365,  365, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-      365, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
-     1047, 1047, 1047, 1047, 1047,  365,  365,  365,  365,  366,
-      367,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  386,  365,  365,  386,  386,  386,  386,  387,
-      365,  365,  365,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  386,  386,  365,  386,  386,  386,
-      386,  386,  386,  734,  386,  386,  386,  735,  386,  386,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  365,  365,  576,  576,  576,  576, 1047, 1047, 1047,
-     1047, 1047,  576,  576,  576, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047,  576,  576,  576,  576,
-
-      576,  576,  389,  389, 1047,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389, 1047,  389,  389,
-     1047, 1047, 1047, 1047,  748,  389,  389,  389, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047,  389, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047,  389,  389,  389,  389,
-     1047,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  407,  389,  389,  407,  407,  407,  407,
-      408,  389,  389,  389,  407,  407,  407,  407,  407,  407,
+      327,  327,  327,  932,  364,  939,  530,  541,  530,  385,
+      525,  531,  531,  531,  531,  317,  318,  365,  366,  534,
+      396,  396,  396,  396,  535,  392,  525,  499,  499,  364,
+      364,  364,  364,  365,  366,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364, 1017,  364,  364, 1016,
+      317,  318,  629,  386,  364,  364,  364,  341,  342,  574,
+      574,  574,  341,  342,  554,  634,  528,  528,  528,  528,
+      364,  365,  368,  543,  543,  369,  387,  525,  351,  351,
+      351,  351,  341,  342, 1015,  630,  548,  933,  341,  342,
+      985,  549,  656,  525,  313,  364,  364,  399,  635,  395,
+
+      395,  395,  395,  977,  351,  351,  351,  351,  370,  400,
+      401,  341,  342,  660,  402,  539,  403,  365,  366,  404,
+      341,  342,  544,  400,  544,  657,  401,  545,  545,  545,
+      545,  539,  365,  372,  403,  228,  546,  546,  546,  517,
+      517,  369,  267,  404,  388,  388,  661,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  975,
+      388,  388,  341,  342,  555,  973,  407,  388,  388,  388,
+      365,  368,  878,  298,  369,  365,  366,  631,  542,  542,
+      542,  542,  676,  388, 1008,  365,  366, 1007,  611,  539,
+     1006,  375,  375,  375,  375,  409,  612,  409,  409,  613,
+
+     1005,  375,  375,  375,  375,  539,  974,  370,  388,  388,
+      388,  388,  553,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388, 1004,  388,  388,  553,  365,
+      366, 1003,  407,  388,  388,  388,  365,  366,  444,  444,
+      444,  365,  366,  317,  318,  556,  556,  556,  556,  388,
+      365,  366,  557,  557,  290,  408,  553,  560,  560,  560,
+     1002,  558,  267,  558,  317,  690,  559,  559,  559,  559,
+      317,  318,  553,  687,  388,  388,  503,  503,  503,  503,
+      365,  366,  571,  571,  562,  503,  503,  503,  572,  563,
+      572,  683,  882,  573,  573,  573,  573,  978,  740,  503,
+
+      503,  503,  503,  503,  503,  272,  272, 1001,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      684,  272,  272,  410,  410,  410,  410,  291,  272,  272,
+      272,  741,  399,  936,  395,  395,  395,  395,  337,  396,
+      396,  396,  396,  337,  272,  401,  502,  502,  502,  402,
+      567,  411,  411,  411,  411,  412,  412,  412,  412,  341,
+      708,  401,  413,  413,  413,  413,  567, 1000,  705,  272,
+      272,  272,  272,  999,  272,  272,  272,  506,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  507,  507,  507,
+
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      272,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  507,  507,  507,  272,  272,  272,  272,  998,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  272,  997,  272,  272,  570,  570,  570,  570,  291,
+      272,  272,  272,  581,  996,  581,  567,  995,  582,  582,
+      582,  582,  440,  440,  440,  440,  272,  443,  443,  443,
+      443,  994,  567,  414,  443,  443,  443,  443,  487,  487,
+      487,  487,  486,  227,  993,  508,  520,  520,  520,  414,
+
+      228,  272,  272,  521,  521,  521,  521,  230,  227,  227,
+      227,  227,  521,  521,  521,  228,  228,  228,  228,  341,
+      342,  992,  230,  230,  230,  230,  521,  521,  521,  521,
+      521,  521,  298,  298,  298,  298,  298,  298,  991,  298,
+      298,  298,  298,  298,  298,  298,  298,  982,  298,  298,
+      990,  227,  227,  638,  314,  298,  298,  298,  228,  228,
+      228,  498,  498,  498,  498,  230,  230,  267,  651,  702,
+      651,  298,  495,  652,  652,  652,  652,  501,  501,  501,
+      501,  501,  501,  501,  501,  365,  726,  989,  495,  807,
+      808,  649,  385,  639,  723,  650,  298,  298,  298,  298,
+
+      298,  298,  298,  298,  470,  298,  298,  298,  298,  298,
+      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+      298,  298,  298,  298,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  298,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
+      523,  523,  298,  298,  298,  298,  298,  298,  298,  298,
+      988,  298,  298,  298,  298,  298,  298,  298,  298,  987,
+      298,  298,  744,  227,  986,  227,  314,  298,  298,  298,
+      228,  629,  228,  341,  342,  227,  973,  230,  971,  230,
+
+      365,  366,  228,  298,  940,  671,  975,  671,  385,  230,
+      672,  672,  672,  672,  267,  745,  516,  516,  516,  516,
+      634,  640,  524,  970,  630,  641,  642,  513,  298,  298,
+      317,  318,  643,  519,  519,  519,  519,  519,  519,  519,
+      519,  701,  969,  513,  330,  968,  326,  326,  326,  326,
+      720,  317,  318,  635,  290,  317,  318,  332,  365,  366,
+      967,  333,  681,  976,  681,  317,  318,  682,  682,  682,
+      682,  529,  529,  332,  317,  318,  298,  656,  317,  318,
+      631,  531,  531,  531,  531,  676,  317,  318,  317,  318,
+      533,  533,  533,  533,  531,  531,  531,  531,  934,  533,
+
+      533,  533,  532,  532,  532,  313,  719,  660,  317,  686,
+      657,  313,  687,  533,  533,  533,  533,  533,  533,  316,
+      316,  317,  318,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  977,  316,  316,  317,  318,  966,
+      661,  338,  316,  316,  316,  688,  574,  574,  574,  341,
+      342,  317,  686,  528,  528,  528,  528,  941,  316,  942,
+      699,  406,  699,  406,  525,  700,  700,  700,  700,  735,
+      965,  735,  317,  690,  736,  736,  736,  736,  317,  318,
+      525,  687,  313,  316,  316,  316,  316,  317,  318,  316,
+      316,  536,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  316,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  316,
+      316,  316,  316,  317,  318,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  964,  316,  316,  341,
+      342,  963,  228,  338,  316,  316,  316,  317,  692,  267,
+      740,  693,  341,  342,  962,  542,  542,  542,  542,  961,
+      316,  341,  704,  228,  960,  705,  539,  959,  543,  543,
+
+      267,  341,  710,  341,  342,  711,  801,  341,  342,  538,
+      317,  692,  539,  741,  694,  316,  316,  341,  342,  545,
+      545,  545,  545,  545,  545,  545,  545,  802,  706,  341,
+      342,  354,  958,  350,  350,  350,  350,  957,  712,  365,
+      366,  956,  317,  318,  356,  546,  546,  546,  357,  974,
+      717, 1010,  717,  365,  366,  718,  718,  718,  718,  955,
+      356,  341,  342,  317,  690,  365,  366,  317,  318,  557,
+      557,  536,  687,  365,  366,  341,  342,  547,  547,  547,
+      547,  559,  559,  559,  559,  817,  547,  547,  547,  559,
+      559,  559,  559,  573,  573,  573,  573,  341,  704,  983,
+
+      547,  547,  547,  547,  547,  547,  340,  340,  341,  342,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  954,  340,  340,  365,  366,  317,  318,  362,  340,
+      340,  340,  365,  366,  953,  570,  570,  570,  570,  952,
+      556,  556,  556,  556,  385,  340,  567,  951,  560,  560,
+      560,  553,  573,  573,  573,  573,  582,  582,  582,  582,
+      341,  342,  567,  582,  582,  582,  582,  553,  950,  818,
+      340,  340,  340,  340,  341,  342,  340,  340,  550,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  551,  551,
+
+      551,  551,  551,  551,  551,  551,  551,  551,  551,  551,
+      551,  340,  551,  551,  551,  551,  551,  551,  551,  551,
+      551,  551,  551,  551,  551,  551,  551,  551,  551,  551,
+      551,  551,  551,  551,  551,  551,  340,  340,  340,  340,
+      341,  342,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  949,  340,  340,  652,  652,  652,  652,
+      362,  340,  340,  340,  365,  722,  948,  227,  723,  365,
+      728,  227,  227,  729,  228,  227,  227,  340,  228,  228,
+      227,  230,  228,  228,  744,  230,  230,  228,  947,  230,
+      230,  341,  342,  976,  230, 1009,  552,  652,  652,  652,
+
+      652,  724,  340,  340,  365,  366,  730,  672,  672,  672,
+      672,  341,  710,  793,  365,  366,  794,  745,  378,  943,
+      374,  374,  374,  374,  795,  796,  672,  672,  672,  672,
+      923,  380,  365,  722,  821,  381,  317,  318,  341,  342,
+      317,  318,  317,  686,  341,  342,  687,  380,  365,  366,
+      365,  366,  682,  682,  682,  682,  682,  682,  682,  682,
+      700,  700,  700,  700,  561,  561,  561,  561,  922,  341,
+      708,  365,  366,  561,  561,  561,  317,  686,  705,  688,
+      687,  822,  317,  692,  365,  728,  693,  561,  561,  561,
+      561,  561,  561,  364,  364,  365,  366,  364,  364,  364,
+
+      364,  364,  364,  364,  364,  364,  364,  364,  921,  364,
+      364,  341,  342,  688,  825,  386,  364,  364,  364,  694,
+      341,  342,  341,  708,  550,  365,  366,  700,  700,  700,
+      700,  705,  364,  365,  366,  920,  365,  726,  365,  726,
+      919,  718,  718,  718,  718,  723,  984,  723, 1014,  718,
+      718,  718,  718,  736,  736,  736,  736,  364,  364,  364,
+      364,  365,  366,  364,  364,  564,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  565,  565,  565,  565,  565,
+      565,  565,  565,  565,  565,  565,  565,  565,  364,  565,
 
-      407,  407,  407,  407,  407,  407,  407,  389,  407,  407,
-      407,  407,  407,  407,  749,  407,  407,  407,  750,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  389,  389,  273,  273, 1047,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273, 1047,
-      273,  273, 1047, 1047, 1047, 1047,  664,  273,  273,  273,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047,  273, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,  273,
-
-      273,  273, 1047,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273, 1047,  273,  273, 1047, 1047,
-     1047, 1047,  292,  273,  273,  273, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  806,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047,  273,  273,  273,  273, 1047,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273, 1047,  273,  273, 1047, 1047, 1047, 1047,  292,  273,
-      273,  273, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
-     1047, 1047, 1047, 1047, 1047,  273, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047,  807, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-      273,  273,  299,  299,  299,  299,  299,  299, 1047,  299,
-      299,  299,  299,  299,  299,  299,  299, 1047,  299,  299,
-     1047, 1047, 1047, 1047,  679,  299,  299,  299, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047,  299, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047,  299,  299,  299,  299,
-
-      299,  299,  299,  299, 1047,  299,  299,  299,  299,  299,
-      299,  299,  299, 1047,  299,  299, 1047, 1047, 1047, 1047,
-      315,  299,  299,  299, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047,  299, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047,  816, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047,  299,  299,  299,  299,  299,  299,  299,  299,
-     1047,  299,  299,  299,  299,  299,  299,  299,  299, 1047,
-      299,  299, 1047, 1047, 1047, 1047,  315,  299,  299,  299,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
-     1047, 1047, 1047,  299, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047,  817, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  299,  299,
-      317,  317,  318,  319,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317, 1047,  317,  317, 1047, 1047,
-     1047, 1047,  697,  317,  317,  317, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  317,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047,  317,  317,  317,  317,  318,  319,
-
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  338,  317,  317,  338,  338,  338,  338,  339,  317,
-      317,  317,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  317,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  820,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      317,  317,  341,  341,  342,  343,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341, 1047,  341,  341,
-     1047, 1047, 1047, 1047,  715,  341,  341,  341, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-
-     1047,  341, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047,  341,  341,  341,  341,
-      342,  343,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  362,  341,  341,  362,  362,  362,  362,
-      363,  341,  341,  341,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  341,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  824,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  341,  341,  365,  365,  366,  367,  365,  365,
+      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
+      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
+      565,  565,  565,  364,  364,  364,  364,  365,  366,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      918,  364,  364,  365,  366,  317,  318,  386,  364,  364,
+      364,  317,  692,  365,  366,  693,  917,  564,  341,  704,
+      317,  318,  705,  916,  364,  836,  341,  704,  341,  710,
+      705,  915,  711,  341,  710,  365,  722,  711,  837,  723,
+      341,  342,  914,  566,  913,  838,  826,  912,  694,  364,
+      364,  575,  575,  575,  575,  706,  736,  736,  736,  736,
+
+      575,  575,  575,  706,  911,  712,  341,  342,  361,  887,
+      712,  910,  724,  909,  575,  575,  575,  575,  575,  575,
+      388,  388,  979,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  984,  388,  388,  852,  365,
+      366,  908,  407,  388,  388,  388,  365,  722,  365,  366,
+      723,  365,  728,  853,  907,  729,  385,  889,  227,  388,
+      854,  406,  891,  227,  926,  228,  926,  926,  337,  906,
+      228,  926,  230,  926,  926,  317,  318,  230,  341,  342,
+      406,  365,  366,  724,  388,  388,  388,  388,  730,  388,
+      388,  388,  578,  388,  388,  388,  388,  388,  388,  388,
 
-      365,  365,  365,  365,  365,  365,  365,  365,  365, 1047,
-      365,  365, 1047, 1047, 1047, 1047,  733,  365,  365,  365,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047,  365, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  365,  365,
-      365,  365,  366,  367,  365,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  386,  365,  365,  386,  386,
-      386,  386,  387,  365,  365,  365,  386,  386,  386,  386,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  365,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  579,  579,  579,  579,  579,  579,  579,  579,
+      579,  579,  579,  579,  579,  388,  579,  579,  579,  579,
+      579,  579,  579,  579,  579,  579,  579,  579,  579,  579,
+      579,  579,  579,  579,  579,  579,  579,  579,  579,  579,
+      388,  388,  388,  388,  905,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  985,  388,  388,
+      317,  318,  979,  904,  407,  388,  388,  388,  365,  728,
+      227,  227,  729,  227,  903,  227,  227,  228,  228,  227,
+      228,  388,  228,  228,  230,  230,  228,  230,  902,  230,
+
+      230,  228,  901,  230,  228,  317,  318,  978,  267, 1011,
+      580,  267,  406,  900,  899,  730,  388,  388,  503,  503,
+      503,  503,  872,  924,  874,  873,  925,  503,  503,  503,
+      898,  927,  875,  897,  928,  341,  342,  980,  896, 1012,
+      895,  503,  503,  503,  503,  503,  503,  272,  272,  894,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  272,  944,  272,  272,  972,  341,  342,  981,  663,
+      272,  272,  272,  972,  973,  945,  228,  227,  227,  973,
+      893,  807,  946,  267,  228,  228,  272,  365,  366,  983,
+      228,  230,  230,  876,  365,  366,  982,  267, 1013,  871,
+
+      870,  869,  868,  867,  866,  865,  864,  863,  862,  861,
+      860,  272,  272,  272,  272,  859,  272,  272,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  272,  290,  272,
+      272,  290,  290,  290,  290,  291,  272,  272,  272,  290,
+      290,  290,  290,  290,  290,  290,  290,  290,  290,  290,
+      290,  290,  272,  290,  290,  290,  290,  290,  290,  664,
+      290,  290,  290,  665,  290,  290,  290,  290,  290,  290,
+      290,  290,  290,  290,  290,  290,  290,  272,  272,  521,
+      521,  521,  521,  858,  857,  856,  855,  851,  521,  521,
+      521,  850,  849,  848,  847,  846,  845,  844,  843,  842,
+
+      841,  840,  521,  521,  521,  521,  521,  521,  298,  298,
+      298,  298,  298,  298,  839,  298,  298,  298,  298,  298,
+      298,  298,  298,  835,  298,  298,  834,  833,  578,  740,
+      678,  298,  298,  298,  830,  829,  828,  824,  820,  470,
+      814,  813,  810,  809,  506,  656,  804,  298,  803,  800,
+      799,  798,  797,  470,  637,  629,  792,  791,  790,  789,
+      788,  787,  784,  783,  782,  781,  780,  779,  778,  777,
+      776,  775,  298,  298,  298,  298,  298,  298,  298,  298,
+      774,  298,  298,  298,  298,  298,  298,  298,  298,  313,
+      298,  298,  313,  313,  313,  313,  314,  298,  298,  298,
+
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  298,  313,  313,  313,  313,  313,  313,
+      679,  313,  313,  313,  680,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  298,  298,
+      317,  318,  773,  772,  771,  770,  769,  768,  767,  766,
+      765,  764,  763,  762,  761,  760,  533,  533,  533,  533,
+      759,  758,  757,  756,  755,  533,  533,  533,  754,  753,
+      752,  751,  750,  740,  738,  737,  674,  673,  668,  533,
+      533,  533,  533,  533,  533,  316,  316,  317,  318,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      667,  316,  316,  666,  656,  654,  653,  696,  316,  316,
+      316,  648,  647,  646,  645,  486,  611,  595,  591,  637,
+      632,  629,  627,  626,  316,  625,  624,  623,  622,  621,
+      620,  619,  618,  617,  616,  615,  614,  610,  609,  608,
+      607,  606,  605,  604,  603,  602,  601,  600,  599,  316,
+      316,  316,  316,  317,  318,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  337,  316,  316,  337,
+      337,  337,  337,  338,  316,  316,  316,  337,  337,  337,
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      316,  337,  337,  337,  337,  337,  337,  697,  337,  337,
+
+      337,  698,  337,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  337,  316,  316,  341,  342,  598,
+      597,  594,  593,  590,  589,  588,  587,  586,  585,  584,
+      583,  569,  568,  547,  547,  547,  547,  391,  515,  514,
+      511,  510,  547,  547,  547,  509,  497,  496,  275,  470,
+      491,  490,  486,  458,  456,  433,  547,  547,  547,  547,
+      547,  547,  340,  340,  341,  342,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  430,  340,  340,
+      428,  482,  419,  470,  714,  340,  340,  340,  267,  469,
+      463,  462,  459,  447,  446,  439,  438,  437,  434,  424,
+
+      421,  340,  420,  417,  416,  167,  405,  391,  389,  312,
+      267,  293,  289,  275,  273,  255,  167,  255,  167,  174,
+      165, 1046,   96,   65,   57, 1046,  340,  340,  340,  340,
+      341,  342,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  361,  340,  340,  361,  361,  361,  361,
+      362,  340,  340,  340,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  340,  361,  361,
+      361,  361,  361,  361,  715,  361,  361,  361,  716,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  340,  340,  365,  366, 1046, 1046, 1046, 1046,
+
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+      561,  561,  561,  561, 1046, 1046, 1046, 1046, 1046,  561,
+      561,  561, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046,  561,  561,  561,  561,  561,  561,  364,
+      364,  365,  366,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364, 1046,  364,  364, 1046, 1046, 1046,
+     1046,  732,  364,  364,  364, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  364, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
 
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  828,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  365,  365,  389,  389, 1047,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389, 1047,  389,  389, 1047, 1047, 1047, 1047,  748,  389,
-      389,  389, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047,  389, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-      389,  389,  389,  389, 1047,  389,  389,  389,  389,  389,
-
-      389,  389,  389,  389,  389,  389,  389, 1047,  389,  389,
-     1047, 1047, 1047, 1047,  408,  389,  389,  389, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047,  389, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047,  832, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047,  389,  389,  389,  389,
-     1047,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389, 1047,  389,  389, 1047, 1047, 1047, 1047,
-      408,  389,  389,  389, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047,  389, 1047, 1047,
-
-     1047, 1047, 1047, 1047, 1047, 1047, 1047,  833, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047,  389,  389,  273,  273, 1047,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273, 1047,
-      273,  273, 1047, 1047, 1047, 1047,  292,  273,  273,  273,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047,  273, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047,  880, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,  273,
-      273,  273, 1047,  273,  273,  273,  273,  273,  273,  273,
-
-      273,  273,  273,  273,  273, 1047,  273,  273, 1047, 1047,
-     1047, 1047,  292,  273,  273,  273, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,  273,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047,  881, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047,  273,  273,  299,  299,  299,  299,
-      299,  299, 1047,  299,  299,  299,  299,  299,  299,  299,
-      299, 1047,  299,  299, 1047, 1047, 1047, 1047,  315,  299,
-      299,  299, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047,  299, 1047, 1047, 1047, 1047,
-
-     1047, 1047, 1047, 1047, 1047, 1047,  884, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-      299,  299,  299,  299,  299,  299,  299,  299, 1047,  299,
-      299,  299,  299,  299,  299,  299,  299, 1047,  299,  299,
-     1047, 1047, 1047, 1047,  315,  299,  299,  299, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047,  299, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047,  885, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047,  299,  299,  317,  317,
-      318,  319,  317,  317,  317,  317,  317,  317,  317,  317,
-
-      317,  317,  317,  338,  317,  317,  338,  338,  338,  338,
-      339,  317,  317,  317,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  317,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  886,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  317,  317,  166, 1047,  166,  166,  166,  166,
-      166,  166,  166,  166,  166,  169, 1047, 1047,  169,  169,
-      177, 1047,  177,  177,  177,  177,  177,  177,  177,  177,
-      177,  230,  230,  230,  230,  230,  230,  230,  230,  260,
-      260,  260,  260,  263, 1047,  263, 1047,  263,  263,  263,
-
-      263,  267,  267,  267,  267,  267,  267,  267,  273, 1047,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  275,
-     1047,  275,  275,  275,  275,  275,  275,  275,  275,  275,
-      278, 1047,  278,  278,  278,  278,  278,  278,  278,  278,
-      278,  291, 1047,  291,  291,  291,  291,  291,  291,  291,
-      291,  291,  229,  229,  229,  229,  229,  229,  229,  299,
-      299, 1047,  299,  299,  299,  299,  299,  299,  299,  299,
-      300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
-      300,  314,  314, 1047,  314,  314,  314,  314,  314,  314,
-      314,  314,  317,  317,  317,  317,  317,  317,  317,  317,
-
-      317,  317,  317,  320,  320,  320,  320,  320,  320,  320,
-      320,  320,  320,  320,  324,  324,  324,  324,  324,  324,
-      324,  324,  324,  324,  324,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  344,  344,  344,
-      344,  344,  344,  344,  344,  344,  344,  344,  348,  348,
-      348,  348,  348,  348,  348,  348,  348,  348,  348,  362,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+     1046, 1046, 1046,  364,  364,  364,  364,  365,  366,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      385,  364,  364,  385,  385,  385,  385,  386,  364,  364,
+      364,  385,  385,  385,  385,  385,  385,  385,  385,  385,
+      385,  385,  385,  385,  364,  385,  385,  385,  385,  385,
+      385,  733,  385,  385,  385,  734,  385,  385,  385,  385,
+      385,  385,  385,  385,  385,  385,  385,  385,  385,  364,
+      364,  575,  575,  575,  575, 1046, 1046, 1046, 1046, 1046,
+      575,  575,  575, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046,  575,  575,  575,  575,  575,  575,
+
+      388,  388, 1046,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388, 1046,  388,  388, 1046, 1046,
+     1046, 1046,  747,  388,  388,  388, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  388,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046,  388,  388,  388,  388, 1046,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  406,  388,  388,  406,  406,  406,  406,  407,  388,
+      388,  388,  406,  406,  406,  406,  406,  406,  406,  406,
 
-      368,  368,  372,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  389, 1047,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  391, 1047,  391,  391,  391,
-      391,  391,  391,  391,  391,  391,  394, 1047,  394,  394,
-      394,  394,  394,  394,  394,  394,  394,  407, 1047,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  169, 1047,
-     1047,  169,  169,  177, 1047,  177,  177,  177,  177,  177,
-      177,  177,  177,  177,  416, 1047, 1047,  416,  416,  416,
-      446, 1047, 1047,  446,  229,  229,  229,  229,  229,  229,
-
-      229,  230,  230,  230,  230,  230,  230,  230,  230,  472,
-     1047, 1047, 1047, 1047,  472,  472,  472,  472,  486,  486,
-      486,  486,  486,  486,  489,  489,  489,  489,  490, 1047,
-      490,  490,  490,  490,  267,  267,  267,  267,  267,  267,
-      267,  273, 1047,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  275, 1047,  275,  275,  275,  275,  275,  275,
-      275,  275,  275,  278, 1047,  278,  278,  278,  278,  278,
-      278,  278,  278,  278,  291, 1047,  291,  291,  291,  291,
-      291,  291,  291,  291,  291,  299,  299, 1047,  299,  299,
-      299,  299,  299,  299,  299,  299,  300,  300,  300,  300,
-
-      300,  300,  300,  300,  300,  300,  300,  314,  314, 1047,
-      314,  314,  314,  314,  314,  314,  314,  314,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  320,
-      320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
-      324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
-      324,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  344,  344,  344,  344,  344,  344,  344,
-      344,  344,  344,  344,  348,  348,  348,  348,  348,  348,
-      348,  348,  348,  348,  348,  362,  362,  362,  362,  362,
-
-      362,  362,  362,  362,  362,  362,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  368,  368,  368,
-      368,  368,  368,  368,  368,  368,  368,  368,  372,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  386,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      389, 1047,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  391, 1047,  391,  391,  391,  391,  391,  391,  391,
-      391,  391,  394, 1047,  394,  394,  394,  394,  394,  394,
-      394,  394,  394,  407, 1047,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  169, 1047, 1047,  169,  169,  416,
-
-     1047, 1047,  416,  416,  416,  446, 1047, 1047,  446,  629,
-     1047,  629,  629,  629,  629,  629,  629,  629,  629,  629,
-      632, 1047,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  634, 1047,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  637,  637,  637,  637,  637,  637,  637,  230,
-      230,  230,  230,  230,  230,  230,  230,  486,  486,  486,
-      486,  486,  486,  645, 1047,  645,  645,  645,  645,  490,
-     1047,  490,  490,  490,  490,  267,  267,  267,  267,  267,
-      267,  267,  273, 1047,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  656, 1047,  656,  656,  656,  656,  656,
-
-      656,  656,  656,  656,  659, 1047,  659,  659,  659,  659,
-      659,  659,  659,  659,  659,  660, 1047,  660,  660,  660,
-      660,  660,  660,  660,  660,  660,  663, 1047,  663,  663,
-      663,  663,  663,  663,  663,  663,  663,  229,  229,  229,
-      229,  229,  229,  229,  299,  299, 1047,  299,  299,  299,
-      299,  299,  299,  299,  299,  676,  676,  676,  676,  676,
-      676,  676,  676,  676,  676,  676,  678,  678, 1047,  678,
-      678,  678,  678,  678,  678,  678,  678,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  686,  686,
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  690,
-
-      690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
-      692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
-      692,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  722,  722,
-
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  389, 1047,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  740, 1047,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  743, 1047,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  744, 1047,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  747, 1047,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  416, 1047, 1047,
-
-      416,  416,  416,  629, 1047,  629,  629,  629,  629,  629,
-      629,  629,  629,  629,  632, 1047,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  634, 1047,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  637,  637,  637,  637,
-      637,  637,  637,  230,  230,  230,  230,  230,  230,  230,
-      230,  645, 1047,  645,  645,  645,  645,  490, 1047,  490,
-      490,  490,  490,  267,  267,  267,  267,  267,  267,  267,
-      273, 1047,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  656, 1047,  656,  656,  656,  656,  656,  656,  656,
-      656,  656,  659, 1047,  659,  659,  659,  659,  659,  659,
-
-      659,  659,  659,  660, 1047,  660,  660,  660,  660,  660,
-      660,  660,  660,  660,  663, 1047,  663,  663,  663,  663,
-      663,  663,  663,  663,  663,  291, 1047,  291,  291,  291,
-      291,  291,  291,  291,  291,  291,  229,  229,  229,  229,
-      229,  229,  229,  299,  299, 1047,  299,  299,  299,  299,
-      299,  299,  299,  299,  676,  676,  676,  676,  676,  676,
-      676,  676,  676,  676,  676,  678,  678, 1047,  678,  678,
-      678,  678,  678,  678,  678,  678,  314,  314, 1047,  314,
-      314,  314,  314,  314,  314,  314,  314,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  686,  686,
-
-      686,  686,  686,  686,  686,  686,  686,  686,  686,  690,
-      690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
-      692,  692,  692,  692,  692,  692,  692,  692,  692,  692,
-      692,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  365,  365,  365,
-
-      365,  365,  365,  365,  365,  365,  365,  365,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  389, 1047,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  740, 1047,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  743, 1047,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  744, 1047,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  747, 1047,  747,  747,
-
-      747,  747,  747,  747,  747,  747,  747,  407, 1047,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  416, 1047,
-     1047,  416,  416,  416,  230,  230,  230,  230,  230,  230,
-      230,  230,  490, 1047,  490,  490,  490,  490,  267,  267,
-      267,  267,  267,  267,  267,  273, 1047,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  291, 1047,  291,  291,
-      291,  291,  291,  291,  291,  291,  291,  229,  229,  229,
-      229,  229,  229,  229,  299,  299, 1047,  299,  299,  299,
-      299,  299,  299,  299,  299,  314,  314, 1047,  314,  314,
-      314,  314,  314,  314,  314,  314,  317,  317,  317,  317,
-
-      317,  317,  317,  317,  317,  317,  317,   23, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047
+      406,  406,  406,  406,  406,  388,  406,  406,  406,  406,
+      406,  406,  748,  406,  406,  406,  749,  406,  406,  406,
+      406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
+      388,  388,  272,  272, 1046,  272,  272,  272,  272,  272,
+      272,  272,  272,  272,  272,  272,  272, 1046,  272,  272,
+     1046, 1046, 1046, 1046,  663,  272,  272,  272, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046,  272, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046,  272,  272,  272,  272,
+
+     1046,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  272,  272, 1046,  272,  272, 1046, 1046, 1046, 1046,
+      291,  272,  272,  272, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046,  272, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046,  805, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046,  272,  272,  272,  272, 1046,  272,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  272,  272, 1046,
+      272,  272, 1046, 1046, 1046, 1046,  291,  272,  272,  272,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+
+     1046, 1046, 1046,  272, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046,  806, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  272,  272,
+      298,  298,  298,  298,  298,  298, 1046,  298,  298,  298,
+      298,  298,  298,  298,  298, 1046,  298,  298, 1046, 1046,
+     1046, 1046,  678,  298,  298,  298, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  298,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046,  298,  298,  298,  298,  298,  298,
+
+      298,  298, 1046,  298,  298,  298,  298,  298,  298,  298,
+      298, 1046,  298,  298, 1046, 1046, 1046, 1046,  314,  298,
+      298,  298, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046,  298, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046,  815, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+      298,  298,  298,  298,  298,  298,  298,  298, 1046,  298,
+      298,  298,  298,  298,  298,  298,  298, 1046,  298,  298,
+     1046, 1046, 1046, 1046,  314,  298,  298,  298, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+
+     1046,  298, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046,  816, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046,  298,  298,  316,  316,
+      317,  318,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316, 1046,  316,  316, 1046, 1046, 1046, 1046,
+      696,  316,  316,  316, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046,  316, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046,  316,  316,  316,  316,  317,  318,  316,  316,
+
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  337,
+      316,  316,  337,  337,  337,  337,  338,  316,  316,  316,
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  316,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  819,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  337,  337,  337,  337,  316,  316,
+      340,  340,  341,  342,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340, 1046,  340,  340, 1046, 1046,
+     1046, 1046,  714,  340,  340,  340, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  340,
+
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046,  340,  340,  340,  340,  341,  342,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  361,  340,  340,  361,  361,  361,  361,  362,  340,
+      340,  340,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  340,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  823,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      340,  340,  364,  364,  365,  366,  364,  364,  364,  364,
+
+      364,  364,  364,  364,  364,  364,  364, 1046,  364,  364,
+     1046, 1046, 1046, 1046,  732,  364,  364,  364, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046,  364, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046,  364,  364,  364,  364,
+      365,  366,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  385,  364,  364,  385,  385,  385,  385,
+      386,  364,  364,  364,  385,  385,  385,  385,  385,  385,
+      385,  385,  385,  385,  385,  385,  385,  364,  385,  385,
+
+      385,  385,  385,  385,  385,  385,  385,  827,  385,  385,
+      385,  385,  385,  385,  385,  385,  385,  385,  385,  385,
+      385,  385,  364,  364,  388,  388, 1046,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388, 1046,
+      388,  388, 1046, 1046, 1046, 1046,  747,  388,  388,  388,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046,  388, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  388,  388,
+      388,  388, 1046,  388,  388,  388,  388,  388,  388,  388,
+
+      388,  388,  388,  388,  388, 1046,  388,  388, 1046, 1046,
+     1046, 1046,  407,  388,  388,  388, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  388,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  831,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046,  388,  388,  388,  388, 1046,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388, 1046,  388,  388, 1046, 1046, 1046, 1046,  407,  388,
+      388,  388, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046,  388, 1046, 1046, 1046, 1046,
+
+     1046, 1046, 1046, 1046, 1046,  832, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+      388,  388,  272,  272, 1046,  272,  272,  272,  272,  272,
+      272,  272,  272,  272,  272,  272,  272, 1046,  272,  272,
+     1046, 1046, 1046, 1046,  291,  272,  272,  272, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046,  272, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046,  879, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046,  272,  272,  272,  272,
+     1046,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+
+      272,  272,  272, 1046,  272,  272, 1046, 1046, 1046, 1046,
+      291,  272,  272,  272, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046,  272, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+      880, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046,  272,  272,  298,  298,  298,  298,  298,  298,
+     1046,  298,  298,  298,  298,  298,  298,  298,  298, 1046,
+      298,  298, 1046, 1046, 1046, 1046,  314,  298,  298,  298,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046,  298, 1046, 1046, 1046, 1046, 1046, 1046,
+
+     1046, 1046, 1046, 1046,  883, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  298,  298,
+      298,  298,  298,  298,  298,  298, 1046,  298,  298,  298,
+      298,  298,  298,  298,  298, 1046,  298,  298, 1046, 1046,
+     1046, 1046,  314,  298,  298,  298, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,  298,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046,  884, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046,  298,  298,  316,  316,  317,  318,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      316,  337,  316,  316,  337,  337,  337,  337,  338,  316,
+      316,  316,  337,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  337,  316,  337,  337,  337,  337,
+      337,  337,  337,  337,  337,  337,  885,  337,  337,  337,
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      316,  316,  166, 1046,  166,  166,  166,  166,  166,  166,
+      166,  166,  166,  169, 1046, 1046,  169,  169,  177, 1046,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  229,
+      229,  229,  229,  229,  229,  229,  229,  259,  259,  259,
+      259,  262, 1046,  262, 1046,  262,  262,  262,  262,  266,
+
+      266,  266,  266,  266,  266,  266,  272, 1046,  272,  272,
+      272,  272,  272,  272,  272,  272,  272,  274, 1046,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  277, 1046,
+      277,  277,  277,  277,  277,  277,  277,  277,  277,  290,
+     1046,  290,  290,  290,  290,  290,  290,  290,  290,  290,
+      228,  228,  228,  228,  228,  228,  228,  298,  298, 1046,
+      298,  298,  298,  298,  298,  298,  298,  298,  299,  299,
+      299,  299,  299,  299,  299,  299,  299,  299,  299,  313,
+      313, 1046,  313,  313,  313,  313,  313,  313,  313,  313,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      316,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  343,  343,  343,  343,  343,
+      343,  343,  343,  343,  343,  343,  347,  347,  347,  347,
+      347,  347,  347,  347,  347,  347,  347,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  367,
+      367,  367,  367,  367,  367,  367,  367,  367,  367,  367,
+
+      371,  371,  371,  371,  371,  371,  371,  371,  371,  371,
+      371,  385,  385,  385,  385,  385,  385,  385,  385,  385,
+      385,  385,  388, 1046,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  390, 1046,  390,  390,  390,  390,  390,
+      390,  390,  390,  390,  393, 1046,  393,  393,  393,  393,
+      393,  393,  393,  393,  393,  406, 1046,  406,  406,  406,
+      406,  406,  406,  406,  406,  406,  169, 1046, 1046,  169,
+      169,  177, 1046,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  415, 1046, 1046,  415,  415,  415,  445, 1046,
+     1046,  445,  228,  228,  228,  228,  228,  228,  228,  229,
+
+      229,  229,  229,  229,  229,  229,  229,  471, 1046, 1046,
+     1046, 1046,  471,  471,  471,  471,  485,  485,  485,  485,
+      485,  485,  488,  488,  488,  488,  489, 1046,  489,  489,
+      489,  489,  266,  266,  266,  266,  266,  266,  266,  272,
+     1046,  272,  272,  272,  272,  272,  272,  272,  272,  272,
+      274, 1046,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  277, 1046,  277,  277,  277,  277,  277,  277,  277,
+      277,  277,  290, 1046,  290,  290,  290,  290,  290,  290,
+      290,  290,  290,  298,  298, 1046,  298,  298,  298,  298,
+      298,  298,  298,  298,  299,  299,  299,  299,  299,  299,
+
+      299,  299,  299,  299,  299,  313,  313, 1046,  313,  313,
+      313,  313,  313,  313,  313,  313,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  337,
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  343,  343,  343,  343,  343,  343,  343,  343,  343,
+      343,  343,  347,  347,  347,  347,  347,  347,  347,  347,
+      347,  347,  347,  361,  361,  361,  361,  361,  361,  361,
+
+      361,  361,  361,  361,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  367,  367,  367,  367,  367,
+      367,  367,  367,  367,  367,  367,  371,  371,  371,  371,
+      371,  371,  371,  371,  371,  371,  371,  385,  385,  385,
+      385,  385,  385,  385,  385,  385,  385,  385,  388, 1046,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  390,
+     1046,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      393, 1046,  393,  393,  393,  393,  393,  393,  393,  393,
+      393,  406, 1046,  406,  406,  406,  406,  406,  406,  406,
+      406,  406,  169, 1046, 1046,  169,  169,  415, 1046, 1046,
+
+      415,  415,  415,  445, 1046, 1046,  445,  628, 1046,  628,
+      628,  628,  628,  628,  628,  628,  628,  628,  631, 1046,
+      631,  631,  631,  631,  631,  631,  631,  631,  631,  633,
+     1046,  633,  633,  633,  633,  633,  633,  633,  633,  633,
+      636,  636,  636,  636,  636,  636,  636,  229,  229,  229,
+      229,  229,  229,  229,  229,  485,  485,  485,  485,  485,
+      485,  644, 1046,  644,  644,  644,  644,  489, 1046,  489,
+      489,  489,  489,  266,  266,  266,  266,  266,  266,  266,
+      272, 1046,  272,  272,  272,  272,  272,  272,  272,  272,
+      272,  655, 1046,  655,  655,  655,  655,  655,  655,  655,
+
+      655,  655,  658, 1046,  658,  658,  658,  658,  658,  658,
+      658,  658,  658,  659, 1046,  659,  659,  659,  659,  659,
+      659,  659,  659,  659,  662, 1046,  662,  662,  662,  662,
+      662,  662,  662,  662,  662,  228,  228,  228,  228,  228,
+      228,  228,  298,  298, 1046,  298,  298,  298,  298,  298,
+      298,  298,  298,  675,  675,  675,  675,  675,  675,  675,
+      675,  675,  675,  675,  677,  677, 1046,  677,  677,  677,
+      677,  677,  677,  677,  677,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  685,  685,  685,  685,
+      685,  685,  685,  685,  685,  685,  685,  689,  689,  689,
+
+      689,  689,  689,  689,  689,  689,  689,  689,  691,  691,
+      691,  691,  691,  691,  691,  691,  691,  691,  691,  695,
+      695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  703,  703,  703,  703,  703,  703,  703,  703,  703,
+      703,  703,  707,  707,  707,  707,  707,  707,  707,  707,
+      707,  707,  707,  709,  709,  709,  709,  709,  709,  709,
+      709,  709,  709,  709,  713,  713,  713,  713,  713,  713,
+      713,  713,  713,  713,  713,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  721,  721,  721,  721,
+
+      721,  721,  721,  721,  721,  721,  721,  725,  725,  725,
+      725,  725,  725,  725,  725,  725,  725,  725,  727,  727,
+      727,  727,  727,  727,  727,  727,  727,  727,  727,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      388, 1046,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  739, 1046,  739,  739,  739,  739,  739,  739,  739,
+      739,  739,  742, 1046,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  743, 1046,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  746, 1046,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  415, 1046, 1046,  415,  415,
+
+      415,  628, 1046,  628,  628,  628,  628,  628,  628,  628,
+      628,  628,  631, 1046,  631,  631,  631,  631,  631,  631,
+      631,  631,  631,  633, 1046,  633,  633,  633,  633,  633,
+      633,  633,  633,  633,  636,  636,  636,  636,  636,  636,
+      636,  229,  229,  229,  229,  229,  229,  229,  229,  644,
+     1046,  644,  644,  644,  644,  489, 1046,  489,  489,  489,
+      489,  266,  266,  266,  266,  266,  266,  266,  272, 1046,
+      272,  272,  272,  272,  272,  272,  272,  272,  272,  655,
+     1046,  655,  655,  655,  655,  655,  655,  655,  655,  655,
+      658, 1046,  658,  658,  658,  658,  658,  658,  658,  658,
+
+      658,  659, 1046,  659,  659,  659,  659,  659,  659,  659,
+      659,  659,  662, 1046,  662,  662,  662,  662,  662,  662,
+      662,  662,  662,  290, 1046,  290,  290,  290,  290,  290,
+      290,  290,  290,  290,  228,  228,  228,  228,  228,  228,
+      228,  298,  298, 1046,  298,  298,  298,  298,  298,  298,
+      298,  298,  675,  675,  675,  675,  675,  675,  675,  675,
+      675,  675,  675,  677,  677, 1046,  677,  677,  677,  677,
+      677,  677,  677,  677,  313,  313, 1046,  313,  313,  313,
+      313,  313,  313,  313,  313,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  685,  685,  685,  685,
+
+      685,  685,  685,  685,  685,  685,  685,  689,  689,  689,
+      689,  689,  689,  689,  689,  689,  689,  689,  691,  691,
+      691,  691,  691,  691,  691,  691,  691,  691,  691,  695,
+      695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  703,  703,  703,  703,  703,  703,  703,  703,  703,
+      703,  703,  707,  707,  707,  707,  707,  707,  707,  707,
+      707,  707,  707,  709,  709,  709,  709,  709,  709,  709,
+      709,  709,  709,  709,  713,  713,  713,  713,  713,  713,
+      713,  713,  713,  713,  713,  364,  364,  364,  364,  364,
+
+      364,  364,  364,  364,  364,  364,  721,  721,  721,  721,
+      721,  721,  721,  721,  721,  721,  721,  725,  725,  725,
+      725,  725,  725,  725,  725,  725,  725,  725,  727,  727,
+      727,  727,  727,  727,  727,  727,  727,  727,  727,  731,
+      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
+      388, 1046,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  739, 1046,  739,  739,  739,  739,  739,  739,  739,
+      739,  739,  742, 1046,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  743, 1046,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  746, 1046,  746,  746,  746,  746,
+
+      746,  746,  746,  746,  746,  406, 1046,  406,  406,  406,
+      406,  406,  406,  406,  406,  406,  415, 1046, 1046,  415,
+      415,  415,  229,  229,  229,  229,  229,  229,  229,  229,
+      489, 1046,  489,  489,  489,  489,  266,  266,  266,  266,
+      266,  266,  266,  272, 1046,  272,  272,  272,  272,  272,
+      272,  272,  272,  272,  290, 1046,  290,  290,  290,  290,
+      290,  290,  290,  290,  290,  228,  228,  228,  228,  228,
+      228,  228,  298,  298, 1046,  298,  298,  298,  298,  298,
+      298,  298,  298,  313,  313, 1046,  313,  313,  313,  313,
+      313,  313,  313,  313,  316,  316,  316,  316,  316,  316,
+
+      316,  316,  316,  316,  316,   23, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046
     } ;
 
-static yyconst flex_int16_t yy_chk[7575] =
+static yyconst flex_int16_t yy_chk[7573] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1657,12 +1663,12 @@
         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,    3,  219,    3,    3,
-        3,   29,   44,   44,    3,    3,  219,    3,    3,   13,
+        1,    1,    1,    1,    1,    1,    3,  218,    3,    3,
+        3,   29,   44,   44,    3,    3,  218,    3,    3,   13,
         3,    3,    3,    6,   14,    6,    6,    3,    3,    3,
         3,   13,   13,   13,   13,   35,   14,   14,   14,   14,
 
-       25, 1041,   25,   25,   29,  102,    6,   35,   27,   27,
+       25, 1040,   25,   25,   29,  102,    6,   35,   27,   27,
        27,   27,    3,   33,    3,   25,   31,    3,   31,    3,
        31,   31,    3,   27,    3,   45,   45,   33,  102,    3,
         3,    5,    5,    5,    5,    5,    5,    5,    5,    5,
@@ -1723,767 +1729,767 @@
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   36,
-     1037,   36,   36,   36,   36,   40,   38,   36,   38,   38,
-       38,   38,   40, 1036,   38,   39,  214,   39,   39,   39,
-       39,   46,   46,   39,  214,   39,   39,   39,   39,   39,
-       39,   39,   39,   39,   39,   39,   39,   39,   56,   39,
+     1036,   36,   36,   36,   36,   40,   38,   36,   38,   38,
+       38,   38,   40,  621,   38,   39,   39,   39,   39,   46,
+       46,   39,  621,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   56,   39,   39,   39,
 
        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
-       39,   39,   39,   41,   47,   41,   41,   41,   41,   57,
-       57,   47,  193,   70,   49,   41,   41,  193,   47,   56,
-       41,   49,   41,   54,   55,   41,  114,  114,   49,   41,
-       54,   42,   41,   42,   42,   42,   42,   54,   50,   58,
-       41,   58,   58,   48,   42,   50,   70, 1035,   42,   41,
-       48,   51,   50,   48,   48,   48,   48,   48,   51,   49,
-       42,   43,  116,  116,   55,   51,   43,   54,   78,   43,
-       43,   43,   43,   43,   43,   78,   50,   43,   52,   43,
-
-       43,  825,   50,   53,  825,   52,   87,  196,   51,  113,
-       53,  196,   52,   59,   59,   59,   59,   53,  197,   62,
-      197,   60,   51,   60,   60,   60,   60,   62,   62,   62,
-       62,   62,   62,   67,   67,   67,   67,   64,   62,   87,
-       53,   52,  113, 1033,   64,   69,   69,   69,   69,  126,
-      126,   64,  153,   53,   61,   71, 1032,   71,   74,   71,
-       71,   73,  217,   73,   73,   73,   73,  217,   74,   74,
-       74,   74,   61,   61,   64,   61,   80,   61,  166,   61,
-       61,   61,   61,   80,   61,  153,   61,   61,   61,   81,
-       81,   81,   81,   61, 1030,   74,   74,  128,  128,   76,
-
-       74,   76,   76,   76,   76,  812,   80,   82,   82,   82,
-       82,  166,   76,  198,   79,  198,   76,   79,   79,   79,
-       79,   79,   89, 1029,   89,   89,   89,   89,   76,   90,
-       90,   90,   90,  812,   92,   99,   99,   99,   99,  117,
-      117,   92,  200,  117,   92,  105,  118,  118,   92,  105,
-       98,   98,   98,   98,  105,  118,  200,   90,  256,   92,
-      298,   90,   91,  256,   91,   91,   91,   91,   92,  107,
-      107,  107,  107,  109,   91,   91,  117,  190,   98,   91,
-      109,   91,   98,  109,   91,  123,  123,  109,   91,  190,
-      106,   91,  106,  106,  106,  106,  298,  107,  109,   91,
-
-     1026,  107,  130,  130,  138,  138,  123,  109,   91,   94,
-       94,  130,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94, 1023,   94,   94,  216,  119,  119,
-      267,   94,   94,   94,   94,  425,  100,  267,  100,  100,
-      100,  100,  119,  216,  119,  119,  119,  119,   94,  100,
-      131,  131,  425,  100,  140,  140,  129,  129,  206,  206,
-      129,  142,  142,  275,  131,  100,  131,  131,  131,  131,
-      142,  213,  213,   94,   94,   95,   95, 1022,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-     1021,   95,   95,  129,  120,  120,  275,   95,   95,   95,
-
-       95,  155,  880,  155,  155,  155,  155,  132,  132,  880,
-      120,  120,  120,  120,   95, 1019,  135,  135,  227,  227,
-       95,  622,  122,  132,  132,  132,  132,  141,  141,  122,
-      622,  141,  122,  209,  209,  209,  122,  135,  120,   95,
-       95,  108,  120,  108,  108,  108,  108,  122,  253,  253,
-     1018,  132,  134,  108,  108,  132,  122,  195,  108,  134,
-      108,  195,  134,  108,  141,  195,  134,  108,  230,  146,
-      108,  163,  266,  163,  163,  230,  146,  134,  108,  146,
-      266, 1017,  230,  146,  285,  285,  134,  108,  111,  111,
-      111,  111,  111,  111,  146,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  146,  111,  111,  143,  143,  147,  147,
-      111,  111,  111,  111,  156,  156,  156,  156,  308,  308,
-      143,  930,  143,  143,  143,  143,  158,  111,  162,  147,
-      162,  162,  246,  158,  246,  246,  158,  249, 1016,  290,
-      158,  249,  156,  162,  290,  249,  156,  170,  170,  170,
-      170,  158,  111,  111,  112,  112,  112,  112,  112,  112,
-      158,  112,  112,  112,  112,  112,  112,  112,  112,  930,
-      112,  112,  171,  171,  171,  171,  112,  112,  112,  112,
-      172,  172,  172,  172,  144,  144,  173,  173,  173,  173,
-      288,  288,  288,  112,  180,  180,  180,  180, 1009,  112,
-
-      144,  144,  144,  144,  215,  222,  313,  428,  215,  428,
-      222,  313,  181,  938,  181,  181,  181,  181,  112,  112,
-      121,  121,  215,  222,  513,  181,  234, 1004,  144,  181,
-      317,  317,  144,  234,  121,  237,  121,  121,  121,  121,
-      234,  181,  237,  236,  319,  319,  121,  121,  513,  237,
-      236,  121,  513,  121,  322,  322,  121,  236,  938,  207,
-      121,  207,  232,  121,  207,  207,  207,  207,  821,  232,
-      821,  121,  232,  232,  232,  232,  232,  237,  237, 1003,
-      121,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  236,  124,  124,  185,
-
-      185,  185,  185,  124,  124,  124,  124,  311,  311,  311,
-      185,  205,  205,  205,  205,  888,  233,  235,  239,  888,
-      124, 1001,  205,  233,  235,  239,  185,  238,  240,  889,
-      233,  235,  239,  889,  238,  240,  270,  881,  205,  323,
-      323,  238,  240,  270,  881,  124,  124,  125,  125,  125,
+       39,   41,   47,   41,   41,   41,   41,   57,   57,   47,
+      192,   70,   49,   41,   41,  192,   47,   56,   41,   49,
+       41,   54,   55,   41,  114,  114,   49,   41,   54,   42,
+       41,   42,   42,   42,   42,   54,   50,   58,   41,   58,
+       58,   48,   42,   50,   70, 1035,   42,   41,   48,   51,
+       50,   48,   48,   48,   48,   48,   51,   49,   42,   43,
+      116,  116,   55,   51,   43,   54,   78,   43,   43,   43,
+       43,   43,   43,   78,   50,   43,   52,   43,   43,  824,
+
+       50,   53,  824,   52,   87,  195,   51,  113,   53,  195,
+       52,   59,   59,   59,   59,   53,  196,   62,  196,   60,
+       51,   60,   60,   60,   60,   62,   62,   62,   62,   62,
+       62,   67,   67,   67,   67,   64,   62,   87,   53,   52,
+      113, 1034,   64,   69,   69,   69,   69,  126,  126,   64,
+      153,   53,   61,   71, 1032,   71,   74,   71,   71,   73,
+      216,   73,   73,   73,   73,  216,   74,   74,   74,   74,
+       61,   61,   64,   61,   80,   61,  166,   61,   61,   61,
+       61,   80,   61,  153,   61,   61,   61,   81,   81,   81,
+       81,   61, 1031,   74,   74,  128,  128,   76,   74,   76,
+
+       76,   76,   76,  811,   80,   82,   82,   82,   82,  166,
+       76,  197,   79,  197,   76,   79,   79,   79,   79,   79,
+       89, 1029,   89,   89,   89,   89,   76,   90,   90,   90,
+       90,  811,   92,   99,   99,   99,   99,  117,  117,   92,
+      199,  117,   92,  105,  118,  118,   92,  105,   98,   98,
+       98,   98,  105,  118,  199,   90,  255,   92,  297,   90,
+       91,  255,   91,   91,   91,   91,   92,  107,  107,  107,
+      107,  109,   91,   91,  117,  189,   98,   91,  109,   91,
+       98,  109,   91,  123,  123,  109,   91,  189,  106,   91,
+      106,  106,  106,  106,  297,  107,  109,   91, 1028,  107,
+
+      130,  130,  138,  138,  123,  109,   91,   94,   94,  130,
+       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+       94,   94, 1025,   94,   94,  213,  119,  119,  266,   94,
+       94,   94,   94,  213,  100,  266,  100,  100,  100,  100,
+      119, 1022,  119,  119,  119,  119,   94,  100,  131,  131,
+     1021,  100,  140,  140,  129,  129,  205,  205,  129,  142,
+      142,  274,  131,  100,  131,  131,  131,  131,  142,  212,
+      212,   94,   94,   95,   95, 1020,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95, 1018,   95,
+       95,  129,  120,  120,  274,   95,   95,   95,   95,  155,
+
+      215,  155,  155,  155,  155,  132,  132, 1017,  120,  120,
+      120,  120,   95, 1016,  135,  135,  215,  427,   95,  427,
+      122,  132,  132,  132,  132,  141,  141,  122, 1015,  141,
+      122,  208,  208,  208,  122,  135,  120,   95,   95,  108,
+      120,  108,  108,  108,  108,  122,  226,  226, 1008,  132,
+      134,  108,  108,  132,  122,  194,  108,  134,  108,  194,
+      134,  108,  141,  194,  134,  108,  229,  146,  108,  163,
+     1003,  163,  163,  229,  146,  134,  108,  146,  252,  252,
+      229,  146,  284,  284,  134,  108,  111,  111,  111,  111,
+      111,  111,  146,  111,  111,  111,  111,  111,  111,  111,
+
+      111,  146,  111,  111,  143,  143,  147,  147,  111,  111,
+      111,  111,  156,  156,  156,  156,  307,  307,  143,  424,
+      143,  143,  143,  143,  158,  111,  162,  147,  162,  162,
+      245,  158,  245,  245,  158,  248,  424,  289,  158,  248,
+      156,  162,  289,  248,  156,  170,  170,  170,  170,  158,
+      111,  111,  112,  112,  112,  112,  112,  112,  158,  112,
+      112,  112,  112,  112,  112,  112,  112, 1002,  112,  112,
+      171,  171,  171,  171,  112,  112,  112,  112,  172,  172,
+      172,  172,  144,  144,  173,  173,  173,  173,  265,  316,
+      316,  112,  180,  180,  180,  180,  265,  112,  144,  144,
+
+      144,  144,  214,  221,  312,  820,  214,  820,  221,  312,
+      181,  937,  181,  181,  181,  181,  112,  112,  121,  121,
+      214,  221,  512,  181,  233, 1000,  144,  181,  318,  318,
+      144,  233,  121,  236,  121,  121,  121,  121,  233,  181,
+      236,  235,  321,  321,  121,  121,  512,  236,  235,  121,
+      512,  121,  322,  322,  121,  235,  937,  206,  121,  206,
+      231,  121,  206,  206,  206,  206,  972,  231,  972,  121,
+      231,  231,  231,  231,  231,  236,  236,  999,  121,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  235,  124,  124,  184,  184,  184,
+
+      184,  124,  124,  124,  124,  287,  287,  287,  184,  204,
+      204,  204,  204,  887,  232,  234,  238,  887,  124,  997,
+      204,  232,  234,  238,  184,  237,  239,  888,  232,  234,
+      238,  888,  237,  239,  269,  879,  204,  333,  333,  237,
+      239,  269,  879,  124,  124,  125,  125,  125,  125,  125,
       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-      125,  125,  238,  125,  125, 1000,  233,  235,  239,  125,
-      125,  125,  125,  241,  334,  334,  240,  341,  341,  270,
-      241,  257,  257,  257,  257,  998,  125,  241,  259,  259,
-      259,  259,  125,  261,  261,  261,  261,  261,  269,  343,
-
-      343,  269,  269,  269,  269,  269,  271,  271,  271,  271,
-      391,  125,  125,  133,  133,  241,  272,  272,  272,  272,
-      279,  279,  279,  279,  300,  329,  329,  133,  300,  133,
-      133,  133,  133,  300,  281,  281,  281,  281,  997,  133,
-      133,  324,  324,  391,  133,  281,  133,  330,  330,  133,
-      324,  890,  286,  133,  286,  890,  133,  286,  286,  286,
-      286,  281,  325,  325,  133,  302,  302,  302,  302,  346,
-      346,  325,  329,  133,  136,  136,  136,  136,  136,  136,
-      136,  136,  136,  136,  136,  136,  136,  136,  136,  670,
-      136,  136,  347,  347,  330,  406,  136,  136,  136,  136,
-
-      406,  280,  671,  280,  280,  280,  280,  886,  284,  284,
-      284,  284,  886,  136,  280,  309,  670,  309,  280,  284,
-      309,  309,  309,  309,  320,  320,  358,  358,  320,  671,
-      280,  365,  365,  367,  367,  284,  370,  370,  136,  136,
+      237,  125,  125,  938,  232,  234,  238,  125,  125,  125,
+      125,  240,  340,  340,  239,  342,  342,  269,  240,  256,
+      256,  256,  256,  996,  125,  240,  258,  258,  258,  258,
+      125,  260,  260,  260,  260,  260,  268,  345,  345,  268,
+
+      268,  268,  268,  268,  270,  270,  270,  270,  938,  125,
+      125,  133,  133,  240,  271,  271,  271,  271,  278,  278,
+      278,  278,  299,  328,  328,  133,  299,  133,  133,  133,
+      133,  299,  280,  280,  280,  280,  995,  133,  133,  310,
+      310,  310,  133,  280,  133,  346,  346,  133,  357,  357,
+      285,  133,  285,  993,  133,  285,  285,  285,  285,  280,
+      323,  323,  133,  301,  301,  301,  301,  329,  329,  323,
+      328,  133,  136,  136,  136,  136,  136,  136,  136,  136,
+      136,  136,  136,  136,  136,  136,  136,  828,  136,  136,
+      828,  324,  324,  405,  136,  136,  136,  136,  405,  279,
+
+      324,  279,  279,  279,  279,  885,  283,  283,  283,  283,
+      885,  136,  279,  308,  329,  308,  279,  283,  308,  308,
+      308,  308,  319,  319,  364,  364,  319,  992,  279,  366,
+      366,  369,  369,  283,  370,  370,  136,  136,  137,  137,
       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  137,  829,  137,  137,  829,  348,
-      348,  320,  137,  137,  137,  137,  882,  297,  348,  297,
-      297,  297,  297,  303,  884,  303,  303,  303,  303,  137,
-      297,  884,  349,  349,  297,  137,  303,  371,  371,  882,
-      303,  349,  304,  304,  304,  304,  297,  321,  321,  326,
-
-      326,  321,  303,  304,  137,  137,  145,  145,  344,  344,
-      345,  345,  344,  932,  345,  326,  326,  326,  326,  304,
-      145,  887,  145,  145,  145,  145,  887,  307,  307,  307,
-      307,  932,  145,  145,  321,  332,  332,  145,  307,  145,
-      353,  353,  145,  335,  335,  344,  145,  345,  996,  145,
-      833,  332,  332,  833,  307,  372,  372,  145,  813,  335,
-      335,  335,  354,  354,  372,  994,  145,  148,  148,  148,
+      137,  137,  137,  832,  137,  137,  832,  347,  347,  319,
+      137,  137,  137,  137,  881,  296,  347,  296,  296,  296,
+      296,  302,  880,  302,  302,  302,  302,  137,  296,  880,
+      348,  348,  296,  137,  302,  381,  381,  881,  302,  348,
+      303,  303,  303,  303,  296,  320,  320,  325,  325,  320,
+
+      302,  303,  137,  137,  145,  145,  343,  343,  344,  344,
+      343,  931,  344,  325,  325,  325,  325,  303,  145,  669,
+      145,  145,  145,  145,  670,  306,  306,  306,  306,  931,
+      145,  145,  320,  331,  331,  145,  306,  145,  352,  352,
+      145,  334,  334,  343,  145,  344,  669,  145,  991,  331,
+      331,  670,  306,  371,  371,  145,  801,  334,  334,  334,
+      353,  353,  371,  801,  145,  148,  148,  148,  148,  148,
       148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  883,  148,  148,  328,  328,  353,  813,  148,
-      148,  148,  148,  382,  382,  401,  401,  333,  333,  442,
+      882,  148,  148,  327,  327,  352,  990,  148,  148,  148,
+      148,  801,  390,  400,  400,  332,  332,  441,  441,  327,
 
-      442,  328,  328,  328,  328,  883,  148,  891,  333,  354,
-      333,  891,  328,  333,  333,  333,  333,  337,  337,  377,
-      377,  337,  395,  395,  395,  395,  337,  410,  328,  410,
-      410,  148,  148,  149,  149,  149,  149,  149,  149,  149,
-      149,  149,  149,  149,  149,  149,  149,  149,  993,  149,
-      149,  992,  331,  331,  465,  149,  149,  149,  149,  356,
-      356,  404,  404,  404,  350,  350,  377,  471,  331,  331,
-      331,  331,  149,  368,  368,  356,  356,  368,  149,  331,
-      350,  350,  350,  350,  361,  361,  991,  465,  361,  885,
-      352,  352,  989,  361,  505,  331,  885,  149,  149,  157,
-
-      471,  157,  157,  157,  157,  988,  352,  352,  352,  352,
-      368,  157,  157,  357,  357,  507,  157,  352,  157,  378,
-      378,  157,  359,  359,  357,  157,  357,  505,  157,  357,
-      357,  357,  357,  352,  373,  373,  157,  878,  359,  359,
-      359,  500,  500,  373,  878,  157,  160,  160,  507,  160,
-      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  987,  160,  160,  355,  355,  378,  878,  160,  160,
-      160,  160,  369,  369,  518,  518,  369,  374,  374,  931,
-      355,  355,  355,  355,  973,  160,  973,  376,  376,  572,
-      572,  355,  986,  374,  374,  374,  374,  411,  411,  411,
-
-      411,  667,  667,  376,  376,  376,  376,  355,  978,  369,
-      160,  160,  161,  161,  376,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  931,  161,  161,
-      376,  379,  379,  577,  161,  161,  161,  161,  380,  380,
-      445,  445,  445,  383,  383,  527,  527,  379,  379,  379,
-      379,  161,  381,  381,  380,  380,  450,  161,  379,  383,
-      383,  383,  976,  381,  450,  381,  577,  450,  381,  381,
-      381,  381,  528,  528,  379,  974,  161,  161,  289,  289,
-      289,  289,  385,  385,  688,  688,  385,  289,  289,  289,
-      402,  385,  402,  527,  936,  402,  402,  402,  402,  937,
+      327,  327,  327,  882,  148,  889,  332,  353,  332,  889,
+      327,  332,  332,  332,  332,  336,  336,  376,  376,  336,
+      394,  394,  394,  394,  336,  390,  327,  499,  499,  148,
+      148,  149,  149,  149,  149,  149,  149,  149,  149,  149,
+      149,  149,  149,  149,  149,  149,  988,  149,  149,  987,
+      330,  330,  464,  149,  149,  149,  149,  355,  355,  403,
+      403,  403,  349,  349,  376,  470,  330,  330,  330,  330,
+      149,  367,  367,  355,  355,  367,  149,  330,  349,  349,
+      349,  349,  360,  360,  986,  464,  360,  883,  351,  351,
+      985,  360,  504,  330,  883,  149,  149,  157,  470,  157,
+
+      157,  157,  157,  977,  351,  351,  351,  351,  367,  157,
+      157,  356,  356,  506,  157,  351,  157,  377,  377,  157,
+      358,  358,  356,  157,  356,  504,  157,  356,  356,  356,
+      356,  351,  372,  372,  157,  802,  358,  358,  358,  517,
+      517,  372,  802,  157,  160,  160,  506,  160,  160,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  975,
+      160,  160,  354,  354,  377,  973,  160,  160,  160,  160,
+      368,  368,  802,  522,  368,  373,  373,  522,  354,  354,
+      354,  354,  522,  160,  971,  375,  375,  970,  449,  354,
+      969,  373,  373,  373,  373,  409,  449,  409,  409,  449,
+
+      968,  375,  375,  375,  375,  354,  929,  368,  160,  160,
+      161,  161,  375,  161,  161,  161,  161,  161,  161,  161,
+      161,  161,  161,  161,  161,  966,  161,  161,  375,  378,
+      378,  965,  161,  161,  161,  161,  379,  379,  444,  444,
+      444,  382,  382,  526,  526,  378,  378,  378,  378,  161,
+      380,  380,  379,  379,  929,  161,  378,  382,  382,  382,
+      964,  380,  812,  380,  535,  535,  380,  380,  380,  380,
+      527,  527,  378,  535,  161,  161,  288,  288,  288,  288,
+      384,  384,  571,  571,  384,  288,  288,  288,  401,  384,
+      401,  526,  812,  401,  401,  401,  401,  935,  576,  288,
+
+      288,  288,  288,  288,  288,  290,  290,  963,  290,  290,
+      290,  290,  290,  290,  290,  290,  290,  290,  290,  290,
+      527,  290,  290,  410,  410,  410,  410,  290,  290,  290,
+      290,  576,  395,  886,  395,  395,  395,  395,  886,  396,
+      396,  396,  396,  935,  290,  395,  502,  502,  502,  395,
+      396,  411,  411,  411,  411,  412,  412,  412,  412,  549,
+      549,  395,  413,  413,  413,  413,  396,  962,  549,  290,
+      290,  291,  291,  961,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
 
-      579,  289,  289,  289,  289,  289,  289,  291,  291,  972,
       291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      291,  291,  528,  291,  291,  412,  412,  412,  412,  291,
-      291,  291,  291,  579,  396,  971,  396,  396,  396,  396,
-      936,  397,  397,  397,  397,  937,  291,  396,  503,  503,
-      503,  396,  397,  413,  413,  413,  413,  414,  414,  414,
-      414,  536,  536,  396,  443,  443,  443,  443,  397,  970,
-      536,  291,  291,  292,  292,  969,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  292,  292,  958,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  957,  292,  292,  399,  399,  399,  399,  292,
+      292,  292,  292,  414,  956,  414,  399,  955,  414,  414,
+      414,  414,  440,  440,  440,  440,  292,  442,  442,  442,
+      442,  953,  399,  440,  443,  443,  443,  443,  487,  487,
+      487,  487,  487,  472,  951,  292,  520,  520,  520,  440,
+
+      472,  292,  292,  311,  311,  311,  311,  472,  473,  474,
+      475,  477,  311,  311,  311,  473,  474,  475,  477,  541,
+      541,  950,  473,  474,  475,  477,  311,  311,  311,  311,
+      311,  311,  313,  313,  313,  313,  313,  313,  949,  313,
+      313,  313,  313,  313,  313,  313,  313,  939,  313,  313,
+      948,  476,  478,  473,  313,  313,  313,  313,  476,  478,
+      494,  498,  498,  498,  498,  476,  478,  494,  495,  541,
+      495,  313,  498,  495,  495,  495,  495,  500,  500,  500,
+      500,  501,  501,  501,  501,  563,  563,  947,  498,  666,
+      666,  494,  939,  476,  563,  494,  313,  313,  314,  314,
 
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  293,
-      293,  967,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  966,  293,  293,  400,  400,  400,
-      400,  293,  293,  293,  293,  415,  629,  415,  400,  965,
-      415,  415,  415,  415,  441,  441,  441,  441,  293,  444,
-      444,  444,  444,  964,  400,  441,  473,  488,  488,  488,
-      488,  488,  892,  473,  893,  474,  892,  293,  893,  629,
-
-      473,  441,  474,  293,  293,  312,  312,  312,  312,  474,
-      475,  476,  477,  478,  312,  312,  312,  475,  476,  477,
-      478,  521,  521,  521,  475,  476,  477,  478,  312,  312,
-      312,  312,  312,  312,  314,  314,  314,  314,  314,  314,
-      474,  314,  314,  314,  314,  314,  314,  314,  314,  963,
-      314,  314,  962,  479,  477,  480,  314,  314,  314,  314,
-      479,  495,  480,  499,  499,  499,  499,  479,  495,  480,
-      496,  959,  496,  314,  499,  496,  496,  496,  496,  501,
-      501,  501,  501,  502,  502,  502,  502,  575,  575,  575,
-      499,  958,  495,  480,  689,  689,  495,  480,  314,  314,
-
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  316,  316,  316,  316,
-      316,  316,  957,  316,  316,  316,  316,  316,  316,  316,
-      316,  956,  316,  316,  634,  481,  482,  954,  316,  316,
-      316,  316,  481,  482,  541,  541,  514,  952,  514,  481,
-
-      482,  514,  514,  514,  514,  316,  951,  517,  517,  517,
-      517,  519,  519,  519,  519,  542,  542,  634,  517,  520,
-      520,  520,  520,  482,  316,  656,  481,  550,  550,  933,
-      316,  316,  327,  327,  517,  523,  550,  556,  556,  523,
-      530,  530,  541,  950,  523,  650,  327,  933,  327,  327,
-      327,  327,  650,  526,  526,  660,  530,  530,  656,  327,
-      949,  555,  555,  327,  526,  542,  526,  531,  531,  526,
-      526,  526,  526,  533,  533,  327,  336,  336,  948,  650,
-      532,  532,  947,  531,  531,  531,  531,  556,  660,  533,
-      533,  533,  336,  336,  336,  336,  532,  532,  532,  532,
-
-      946,  336,  336,  336,  535,  535,  684,  684,  535,  555,
-      537,  537,  694,  694,  537,  336,  336,  336,  336,  336,
-      336,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  945,  338,  338,  529,
-      529,  535,  923,  338,  338,  338,  338,  537,  740,  684,
-      676,  540,  540,  921,  676,  529,  529,  529,  529,  676,
-      338,  975,  540,  975,  540,  920,  529,  540,  540,  540,
-      540,  564,  564,  573,  573,  573,  573,  695,  695,  919,
-      564,  740,  529,  706,  706,  338,  338,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  918,  340,
-      340,  543,  543,  916,  651,  340,  340,  340,  340,  544,
-      544,  651,  915,  545,  545,  707,  707,  543,  543,  543,
-      543,  934,  340,  549,  549,  544,  544,  549,  543,  545,
-
-      545,  545,  545,  551,  551,  546,  546,  551,  651,  547,
-      547,  340,  558,  558,  543,  712,  712,  340,  340,  351,
-      351,  546,  546,  546,  546,  547,  547,  547,  558,  558,
-      549,  561,  561,  351,  914,  351,  351,  351,  351,  934,
-      551,  554,  554,  913,  685,  685,  351,  561,  561,  561,
-      351,  977,  554,  977,  554,  559,  559,  554,  554,  554,
-      554,  912,  351,  360,  360,  697,  697,  560,  560,  697,
-      911,  559,  559,  559,  559,  574,  574,  574,  574,  360,
-      360,  360,  360,  560,  560,  560,  560,  685,  360,  360,
-      360,  563,  563,  713,  713,  563,  744,  565,  565,  724,
+      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
+      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
+      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
+      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
+      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
+      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
+      314,  314,  314,  314,  315,  315,  315,  315,  315,  315,
+      946,  315,  315,  315,  315,  315,  315,  315,  315,  945,
+      315,  315,  578,  479,  944,  480,  315,  315,  315,  315,
+      479,  628,  480,  540,  540,  481,  932,  479,  922,  480,
+
+      555,  555,  481,  315,  890,  513,  930,  513,  890,  481,
+      513,  513,  513,  513,  932,  578,  516,  516,  516,  516,
+      633,  479,  315,  920,  628,  479,  480,  516,  315,  315,
+      326,  326,  481,  518,  518,  518,  518,  519,  519,  519,
+      519,  540,  919,  516,  326,  918,  326,  326,  326,  326,
+      555,  525,  525,  633,  930,  529,  529,  326,  554,  554,
+      917,  326,  525,  933,  525,  530,  530,  525,  525,  525,
+      525,  529,  529,  326,  335,  335,  675,  655,  531,  531,
+      675,  530,  530,  530,  530,  675,  532,  532,  687,  687,
+      335,  335,  335,  335,  531,  531,  531,  531,  884,  335,
+
+      335,  335,  532,  532,  532,  884,  554,  659,  534,  534,
+      655,  933,  534,  335,  335,  335,  335,  335,  335,  337,
+      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
+      337,  337,  337,  337,  934,  337,  337,  528,  528,  915,
+      659,  337,  337,  337,  337,  534,  574,  574,  574,  539,
+      539,  688,  688,  528,  528,  528,  528,  891,  337,  892,
+      539,  891,  539,  892,  528,  539,  539,  539,  539,  567,
+      914,  567,  689,  689,  567,  567,  567,  567,  693,  693,
+      528,  689,  934,  337,  337,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
 
-      724,  565,  360,  360,  360,  360,  360,  360,  362,  362,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  913,  339,  339,  542,
+      542,  912,  649,  339,  339,  339,  339,  536,  536,  649,
+      739,  536,  543,  543,  911,  542,  542,  542,  542,  910,
+      339,  548,  548,  650,  909,  548,  542,  907,  543,  543,
+
+      650,  550,  550,  544,  544,  550,  649,  545,  545,  339,
+      694,  694,  542,  739,  536,  339,  339,  350,  350,  544,
+      544,  544,  544,  545,  545,  545,  545,  650,  548,  546,
+      546,  350,  906,  350,  350,  350,  350,  905,  550,  553,
+      553,  904,  683,  683,  350,  546,  546,  546,  350,  974,
+      553,  974,  553,  557,  557,  553,  553,  553,  553,  903,
+      350,  359,  359,  690,  690,  558,  558,  696,  696,  557,
+      557,  696,  690,  559,  559,  705,  705,  359,  359,  359,
+      359,  558,  558,  558,  558,  683,  359,  359,  359,  559,
+      559,  559,  559,  572,  572,  572,  572,  706,  706,  940,
+
+      359,  359,  359,  359,  359,  359,  361,  361,  361,  361,
+      361,  361,  361,  361,  361,  361,  361,  361,  361,  361,
+      361,  902,  361,  361,  556,  556,  684,  684,  361,  361,
+      361,  361,  560,  560,  901,  570,  570,  570,  570,  900,
+      556,  556,  556,  556,  940,  361,  570,  899,  560,  560,
+      560,  556,  573,  573,  573,  573,  581,  581,  581,  581,
+      711,  711,  570,  582,  582,  582,  582,  556,  898,  684,
+      361,  361,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  910,  362,  362,  557,  557,  563,  744,
-      362,  362,  362,  362,  565,  571,  571,  571,  571,  690,
-      690,  908,  557,  557,  557,  557,  571,  362,  690,  568,
-      985,  568,  985,  557,  568,  568,  568,  568,  582,  582,
-      582,  582,  571,  583,  583,  583,  583,  715,  715,  557,
-      907,  715,  362,  362,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
 
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
+      362,  362,  362,  362,  362,  362,  362,  362,  363,  363,
       363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  906,  364,  364,  905,  639,
-      640,  641,  364,  364,  364,  364,  639,  640,  641,  642,
-      643,  691,  691,  639,  640,  641,  642,  643,  644,  364,
-      691,  708,  708,  642,  643,  644,  652,  652,  652,  652,
-      708,  904,  644,  653,  653,  653,  653,  903,  364,  686,
-
-      686,  902,  641,  686,  364,  364,  375,  375,  687,  687,
-      642,  901,  687,  900,  643,  672,  672,  672,  672,  899,
-      375,  898,  375,  375,  375,  375,  897,  644,  673,  673,
-      673,  673,  896,  375,  725,  725,  686,  375,  682,  682,
-      702,  702,  683,  683,  894,  687,  700,  700,  872,  375,
-      384,  384,  730,  730,  682,  682,  682,  682,  683,  683,
-      683,  683,  700,  700,  700,  700,  384,  384,  384,  384,
-      871,  709,  709,  703,  703,  384,  384,  384,  692,  692,
-      709,  869,  692,  702,  693,  693,  731,  731,  693,  384,
-      384,  384,  384,  384,  384,  386,  386,  386,  386,  386,
+      363,  363,  363,  897,  363,  363,  651,  651,  651,  651,
+      363,  363,  363,  363,  562,  562,  896,  638,  562,  564,
+      564,  639,  640,  564,  638,  641,  643,  363,  639,  640,
+      642,  638,  641,  643,  743,  639,  640,  642,  895,  641,
+      643,  701,  701,  976,  642,  976,  363,  652,  652,  652,
+
+      652,  562,  363,  363,  374,  374,  564,  671,  671,  671,
+      671,  712,  712,  640,  723,  723,  641,  743,  374,  893,
+      374,  374,  374,  374,  642,  643,  672,  672,  672,  672,
+      871,  374,  724,  724,  701,  374,  681,  681,  702,  702,
+      682,  682,  685,  685,  699,  699,  685,  374,  383,  383,
+      729,  729,  681,  681,  681,  681,  682,  682,  682,  682,
+      699,  699,  699,  699,  383,  383,  383,  383,  870,  707,
+      707,  719,  719,  383,  383,  383,  686,  686,  707,  685,
+      686,  702,  691,  691,  730,  730,  691,  383,  383,  383,
+      383,  383,  383,  385,  385,  385,  385,  385,  385,  385,
+
+      385,  385,  385,  385,  385,  385,  385,  385,  868,  385,
+      385,  700,  700,  686,  719,  385,  385,  385,  385,  691,
+      714,  714,  708,  708,  714,  717,  717,  700,  700,  700,
+      700,  708,  385,  718,  718,  867,  725,  725,  726,  726,
+      865,  717,  717,  717,  717,  725,  984,  726,  984,  718,
+      718,  718,  718,  735,  735,  735,  735,  385,  385,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
 
       386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      868,  386,  386,  701,  701,  692,  703,  386,  386,  386,
-      386,  693,  718,  718,  726,  726,  719,  719,  866,  701,
-      701,  701,  701,  726,  386,  865,  771,  755,  718,  718,
-      718,  718,  719,  719,  719,  719,  727,  727,  733,  733,
-      755,  771,  733,  818,  818,  727,  864,  755,  771,  386,
-      386,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
+      386,  386,  386,  386,  386,  387,  387,  387,  387,  387,
       387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      864,  387,  387,  720,  720,  817,  817,  387,  387,  387,
+      387,  692,  692,  732,  732,  692,  863,  732,  703,  703,
+      818,  818,  703,  860,  387,  754,  704,  704,  709,  709,
+      704,  859,  709,  710,  710,  721,  721,  710,  754,  721,
+      821,  821,  858,  387,  857,  754,  720,  855,  692,  387,
+      387,  404,  404,  404,  404,  703,  736,  736,  736,  736,
+
+      404,  404,  404,  704,  854,  709,  822,  822,  823,  823,
+      710,  853,  721,  852,  404,  404,  404,  404,  404,  404,
+      406,  406,  936,  406,  406,  406,  406,  406,  406,  406,
+      406,  406,  406,  406,  406,  941,  406,  406,  770,  825,
+      825,  851,  406,  406,  406,  406,  722,  722,  826,  826,
+      722,  727,  727,  770,  850,  727,  827,  827,  874,  406,
+      770,  831,  831,  875,  876,  874,  876,  876,  936,  848,
+      875,  926,  874,  926,  926, 1011, 1011,  875, 1012, 1012,
+      941, 1013, 1013,  722,  406,  406,  407,  407,  727,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
 
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
-      388,  388,  861,  388,  388,  720,  720,  819,  819,  388,
-      388,  388,  388,  704,  704,  721,  721,  704,  822,  822,
-      705,  705,  823,  823,  705,  935,  388,  860,  710,  710,
-      711,  711,  710,  794,  711,  722,  722,  723,  723,  722,
-      794,  723,  824,  824,  859,  388,  858,  794,  720,  856,
-      704,  388,  388,  405,  405,  405,  405,  705,  721,  826,
-
-      826,  855,  405,  405,  405,  710,  854,  711,  736,  736,
-      736,  736,  722,  935,  723,  794,  405,  405,  405,  405,
-      405,  405,  407,  407,  853,  407,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  939,  407,  407,
-      737,  737,  737,  737,  407,  407,  407,  407,  728,  728,
-      827,  827,  728,  729,  729,  828,  828,  729,  832,  832,
-      875,  407,  876,  877,  895,  877,  877,  875,  927,  876,
-      927,  927, 1012, 1012,  875,  852,  876,  895,  851,  979,
-      979,  979,  939,  979,  895,  728,  407,  407,  408,  408,
-      729,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  409,  409,  849,  409,  409,  409,
-      409,  409,  409,  409,  409,  409,  409,  409,  409,  940,
-      409,  409,  848,  795,  796,  797,  409,  409,  409,  409,
-      795,  796,  797,  928,  847,  879,  846,  795,  796,  797,
-      802,  803,  879,  409,  928,  873,  874,  802,  803, 1013,
-
-     1013,  928,  873,  874, 1014, 1014,  941,  844,  843,  873,
-      874,  842,  409,  796,  940,  879,  929,  795,  409,  409,
-      504,  504,  504,  504,  797,  802,  841,  929,  803,  504,
-      504,  504,  873,  874,  929,  840,  942,  839,  943,  980,
-      980,  980,  838,  504,  504,  504,  504,  504,  504,  508,
-      508,  941,  508,  508,  508,  508,  508,  508,  508,  508,
-      508,  508,  508,  508,  925,  508,  508,  837,  925,  835,
-      834,  508,  508,  508,  508,  925,  926,  982,  982,  982,
-      926,  942,  925,  943,  984,  984,  984,  926,  508,  981,
-      981,  981,  809,  981,  926,  983,  983,  983,  800,  983,
-
-      793,  792,  791,  790,  789,  788,  787,  786,  785,  784,
-      783,  782,  779,  508,  508,  509,  509,  778,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  522,  522,  522,  522,  776,  773,  772,  770,  769,
-      522,  522,  522,  768,  767,  766,  765,  764,  763,  762,
-
-      760,  759,  758,  757,  522,  522,  522,  522,  522,  522,
-      524,  524,  524,  524,  524,  524,  754,  524,  524,  524,
-      524,  524,  524,  524,  524,  752,  524,  524,  751,  748,
-      743,  739,  524,  524,  524,  524,  738,  735,  717,  699,
-      679,  675,  674,  669,  668,  664,  659,  655,  654,  524,
-      649,  648,  647,  646,  638,  637,  632,  628,  627,  626,
-      625,  624,  623,  621,  620,  619,  618,  617,  616,  614,
-      613,  612,  611,  610,  524,  524,  525,  525,  525,  525,
-      525,  525,  609,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  534,  534,  608,  607,  605,  604,  603,  602,
-      601,  600,  599,  598,  597,  596,  595,  593,  534,  534,
-      534,  534,  592,  591,  590,  589,  588,  534,  534,  534,
-      587,  586,  585,  584,  578,  570,  569,  516,  515,  512,
-      511,  534,  534,  534,  534,  534,  534,  538,  538,  538,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
+      407,  407,  408,  408,  847,  408,  408,  408,  408,  408,
+      408,  408,  408,  408,  408,  408,  408,  942,  408,  408,
+      979,  979,  979,  846,  408,  408,  408,  408,  728,  728,
+      793,  794,  728,  796,  845,  795,  872,  793,  794,  873,
+      796,  408,  795,  872,  793,  794,  873,  796,  843,  795,
+
+      872,  877,  842,  873,  878,  978,  978,  978,  877,  978,
+      408,  878,  942,  841,  840,  728,  408,  408,  503,  503,
+      503,  503,  793,  872,  795,  794,  873,  503,  503,  503,
+      839,  877,  796,  838,  878,  980,  980,  980,  837,  980,
+      836,  503,  503,  503,  503,  503,  503,  507,  507,  834,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  507,
+      507,  507,  894,  507,  507,  927,  981,  981,  981,  507,
+      507,  507,  507,  924,  925,  894,  927,  924,  925,  928,
+      833,  808,  894,  927,  924,  925,  507,  983,  983,  983,
+      928,  924,  925,  799,  982,  982,  982,  928,  982,  792,
+
+      791,  790,  789,  788,  787,  786,  785,  784,  783,  782,
+      781,  507,  507,  508,  508,  778,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  508,
+      508,  508,  508,  508,  508,  508,  508,  508,  508,  521,
+      521,  521,  521,  777,  775,  772,  771,  769,  521,  521,
+      521,  768,  767,  766,  765,  764,  763,  762,  761,  759,
+
+      758,  757,  521,  521,  521,  521,  521,  521,  523,  523,
+      523,  523,  523,  523,  756,  523,  523,  523,  523,  523,
+      523,  523,  523,  753,  523,  523,  751,  750,  747,  742,
+      523,  523,  523,  523,  738,  737,  734,  716,  698,  678,
+      674,  673,  668,  667,  663,  658,  654,  523,  653,  648,
+      647,  646,  645,  637,  636,  631,  627,  626,  625,  624,
+      623,  622,  620,  619,  618,  617,  616,  615,  613,  612,
+      611,  610,  523,  523,  524,  524,  524,  524,  524,  524,
+      609,  524,  524,  524,  524,  524,  524,  524,  524,  524,
+      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
+
+      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
+      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
+      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
+      524,  524,  524,  524,  524,  524,  524,  524,  524,  524,
+      533,  533,  608,  607,  606,  604,  603,  602,  601,  600,
+      599,  598,  597,  596,  595,  594,  533,  533,  533,  533,
+      592,  591,  590,  589,  588,  533,  533,  533,  587,  586,
+      585,  584,  583,  577,  569,  568,  515,  514,  511,  533,
+      533,  533,  533,  533,  533,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+
+      510,  537,  537,  509,  505,  497,  496,  537,  537,  537,
+      537,  493,  492,  491,  490,  485,  484,  483,  482,  471,
+      468,  465,  463,  462,  537,  461,  460,  459,  458,  457,
+      456,  455,  454,  453,  452,  451,  450,  448,  447,  446,
+      438,  437,  436,  435,  434,  433,  432,  431,  430,  537,
+      537,  538,  538,  538,  538,  538,  538,  538,  538,  538,
+      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
+      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
+      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
       538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
 
-      538,  538,  510,  538,  538,  506,  498,  497,  494,  538,
-      538,  538,  538,  493,  492,  491,  486,  485,  484,  483,
-      472,  469,  466,  464,  463,  462,  538,  461,  460,  459,
-      458,  457,  456,  455,  454,  453,  452,  451,  449,  448,
-      447,  439,  438,  437,  436,  435,  434,  433,  432,  431,
-      430,  538,  538,  539,  539,  539,  539,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  548,
-      548,  429,  427,  426,  424,  423,  422,  421,  420,  419,
-      418,  417,  399,  398,  394,  548,  548,  548,  548,  306,
-      305,  296,  295,  294,  548,  548,  548,  283,  282,  278,
-      268,  265,  264,  260,  255,  254,  252,  251,  548,  548,
-      548,  548,  548,  548,  552,  552,  552,  552,  552,  552,
-      552,  552,  552,  552,  552,  552,  552,  552,  552,  250,
-      552,  552,  248,  247,  231,  229,  552,  552,  552,  552,
-      228,  221,  220,  218,  212,  211,  203,  202,  201,  199,
-
-      194,  192,  191,  552,  189,  188,  177,  159,  154,  152,
-      110,  101,   96,   93,   88,   86,   77,   72,   63,   34,
-       32,   28,   23,    8,    4,    2,    0,    0,  552,  552,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  562,  562,    0,    0,
+      538,  538,  538,  538,  538,  538,  538,  538,  538,  538,
+      538,  538,  538,  538,  538,  538,  538,  547,  547,  429,
+      428,  426,  425,  423,  422,  421,  420,  419,  418,  417,
+      416,  398,  397,  547,  547,  547,  547,  393,  305,  304,
+      295,  294,  547,  547,  547,  293,  282,  281,  277,  267,
+      264,  263,  259,  254,  253,  251,  547,  547,  547,  547,
+      547,  547,  551,  551,  551,  551,  551,  551,  551,  551,
+      551,  551,  551,  551,  551,  551,  551,  250,  551,  551,
+      249,  247,  246,  230,  551,  551,  551,  551,  228,  227,
+      220,  219,  217,  211,  210,  202,  201,  200,  198,  193,
+
+      191,  551,  190,  188,  187,  177,  159,  154,  152,  110,
+      101,   96,   93,   88,   86,   77,   72,   63,   34,   32,
+       28,   23,    8,    4,    2,    0,  551,  551,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  552,  552,  552,  552,  552,  552,  552,
+      552,  552,  552,  552,  561,  561,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  562,  562,  562,  562,    0,    0,    0,    0,
-        0,  562,  562,  562,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  562,  562,  562,  562,  562,
-      562,  566,  566,  566,  566,  566,  566,  566,  566,  566,
-      566,  566,  566,  566,  566,  566,    0,  566,  566,    0,
-        0,    0,    0,  566,  566,  566,  566,    0,    0,    0,
+      561,  561,  561,  561,    0,    0,    0,    0,    0,  561,
+      561,  561,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  561,  561,  561,  561,  561,  561,  565,
+      565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
+      565,  565,  565,  565,    0,  565,  565,    0,    0,    0,
+        0,  565,  565,  565,  565,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  565,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      566,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,  566,  566,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  576,  576,  576,  576,    0,    0,    0,
-        0,    0,  576,  576,  576,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  576,  576,  576,  576,
-
-      576,  576,  580,  580,    0,  580,  580,  580,  580,  580,
-      580,  580,  580,  580,  580,  580,  580,    0,  580,  580,
-        0,    0,    0,    0,  580,  580,  580,  580,    0,    0,
+        0,    0,    0,  565,  565,  566,  566,  566,  566,  566,
+      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
+      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
+      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
+      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
+      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
+      566,  566,  566,  566,  566,  566,  566,  566,  566,  566,
+      566,  575,  575,  575,  575,    0,    0,    0,    0,    0,
+      575,  575,  575,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  575,  575,  575,  575,  575,  575,
+
+      579,  579,    0,  579,  579,  579,  579,  579,  579,  579,
+      579,  579,  579,  579,  579,    0,  579,  579,    0,    0,
+        0,    0,  579,  579,  579,  579,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  579,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  580,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  580,  580,  581,  581,
-        0,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  581,  581,  663,  663,    0,  663,  663,  663,
-      663,  663,  663,  663,  663,  663,  663,  663,  663,    0,
-      663,  663,    0,    0,    0,    0,  663,  663,  663,  663,
+        0,    0,    0,    0,  579,  579,  580,  580,    0,  580,
+      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
+      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
+      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
+
+      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
+      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
+      580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
+      580,  580,  662,  662,    0,  662,  662,  662,  662,  662,
+      662,  662,  662,  662,  662,  662,  662,    0,  662,  662,
+        0,    0,    0,    0,  662,  662,  662,  662,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  663,    0,    0,    0,    0,    0,    0,
+        0,  662,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  663,  663,
+        0,    0,    0,    0,    0,    0,  662,  662,  664,  664,
 
-      665,  665,    0,  665,  665,  665,  665,  665,  665,  665,
-      665,  665,  665,  665,  665,    0,  665,  665,    0,    0,
-        0,    0,  665,  665,  665,  665,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  665,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  665,
+        0,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      664,  664,  664,    0,  664,  664,    0,    0,    0,    0,
+      664,  664,  664,  664,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  664,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  664,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  665,  665,  666,  666,    0,  666,
-      666,  666,  666,  666,  666,  666,  666,  666,  666,  666,
-      666,    0,  666,  666,    0,    0,    0,    0,  666,  666,
-      666,  666,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,  666,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  666,    0,    0,    0,    0,
+        0,    0,  664,  664,  665,  665,    0,  665,  665,  665,
+      665,  665,  665,  665,  665,  665,  665,  665,  665,    0,
+      665,  665,    0,    0,    0,    0,  665,  665,  665,  665,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      666,  666,  678,  678,  678,  678,  678,  678,    0,  678,
-      678,  678,  678,  678,  678,  678,  678,    0,  678,  678,
-        0,    0,    0,    0,  678,  678,  678,  678,    0,    0,
+
+        0,    0,    0,  665,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  665,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  665,  665,
+      677,  677,  677,  677,  677,  677,    0,  677,  677,  677,
+      677,  677,  677,  677,  677,    0,  677,  677,    0,    0,
+        0,    0,  677,  677,  677,  677,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  677,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  678,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  678,  678,  680,  680,
+        0,    0,    0,    0,  677,  677,  679,  679,  679,  679,
 
-      680,  680,  680,  680,    0,  680,  680,  680,  680,  680,
-      680,  680,  680,    0,  680,  680,    0,    0,    0,    0,
-      680,  680,  680,  680,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  680,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  680,    0,    0,
+      679,  679,    0,  679,  679,  679,  679,  679,  679,  679,
+      679,    0,  679,  679,    0,    0,    0,    0,  679,  679,
+      679,  679,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  679,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  679,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  680,  680,  681,  681,  681,  681,  681,  681,
-        0,  681,  681,  681,  681,  681,  681,  681,  681,    0,
-      681,  681,    0,    0,    0,    0,  681,  681,  681,  681,
+      679,  679,  680,  680,  680,  680,  680,  680,    0,  680,
+      680,  680,  680,  680,  680,  680,  680,    0,  680,  680,
+        0,    0,    0,    0,  680,  680,  680,  680,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  681,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  681,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  681,  681,
-      696,  696,  696,  696,  696,  696,  696,  696,  696,  696,
-      696,  696,  696,  696,  696,    0,  696,  696,    0,    0,
-        0,    0,  696,  696,  696,  696,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  696,
+        0,  680,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  680,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  680,  680,  695,  695,
+      695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
+      695,  695,  695,    0,  695,  695,    0,    0,    0,    0,
+      695,  695,  695,  695,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  695,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  696,  696,  698,  698,  698,  698,
+        0,    0,  695,  695,  697,  697,  697,  697,  697,  697,
 
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
-      698,  698,  698,  698,  698,  698,  698,  698,  698,  698,
-      698,  698,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,    0,  714,  714,
-        0,    0,    0,    0,  714,  714,  714,  714,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
+      697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
+      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
+      713,  713,  713,  713,  713,    0,  713,  713,    0,    0,
+        0,    0,  713,  713,  713,  713,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  713,
 
-        0,  714,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  714,  714,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  732,  732,  732,  732,  732,  732,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  713,  713,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
+      715,  715,  731,  731,  731,  731,  731,  731,  731,  731,
 
-      732,  732,  732,  732,  732,  732,  732,  732,  732,    0,
-      732,  732,    0,    0,    0,    0,  732,  732,  732,  732,
+      731,  731,  731,  731,  731,  731,  731,    0,  731,  731,
+        0,    0,    0,    0,  731,  731,  731,  731,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  732,    0,    0,    0,    0,    0,    0,
+        0,  731,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  732,  732,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  747,  747,    0,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
-      747,    0,  747,  747,    0,    0,    0,    0,  747,  747,
-      747,  747,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  747,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  731,  731,  733,  733,
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
+      733,  733,  733,  733,  746,  746,    0,  746,  746,  746,
+      746,  746,  746,  746,  746,  746,  746,  746,  746,    0,
+      746,  746,    0,    0,    0,    0,  746,  746,  746,  746,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  746,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      747,  747,  749,  749,    0,  749,  749,  749,  749,  749,
+        0,    0,    0,    0,    0,    0,    0,    0,  746,  746,
+      748,  748,    0,  748,  748,  748,  748,  748,  748,  748,
 
-      749,  749,  749,  749,  749,  749,  749,    0,  749,  749,
-        0,    0,    0,    0,  749,  749,  749,  749,    0,    0,
+      748,  748,  748,  748,  748,    0,  748,  748,    0,    0,
+        0,    0,  748,  748,  748,  748,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  748,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  748,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  749,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  749,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  749,  749,  750,  750,
-        0,  750,  750,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  750,    0,  750,  750,    0,    0,    0,    0,
-      750,  750,  750,  750,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  750,    0,    0,
+        0,    0,    0,    0,  748,  748,  749,  749,    0,  749,
+      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
+      749,    0,  749,  749,    0,    0,    0,    0,  749,  749,
+      749,  749,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  749,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  750,    0,    0,
+        0,    0,    0,    0,    0,  749,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  750,  750,  806,  806,    0,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,    0,
-      806,  806,    0,    0,    0,    0,  806,  806,  806,  806,
+      749,  749,  805,  805,    0,  805,  805,  805,  805,  805,
+      805,  805,  805,  805,  805,  805,  805,    0,  805,  805,
+        0,    0,    0,    0,  805,  805,  805,  805,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  806,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  806,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  806,  806,
-      807,  807,    0,  807,  807,  807,  807,  807,  807,  807,
-
-      807,  807,  807,  807,  807,    0,  807,  807,    0,    0,
-        0,    0,  807,  807,  807,  807,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  807,
+        0,  805,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  805,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  805,  805,  806,  806,
+        0,  806,  806,  806,  806,  806,  806,  806,  806,  806,
+
+      806,  806,  806,    0,  806,  806,    0,    0,    0,    0,
+      806,  806,  806,  806,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  806,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  807,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  807,  807,  816,  816,  816,  816,
-      816,  816,    0,  816,  816,  816,  816,  816,  816,  816,
-      816,    0,  816,  816,    0,    0,    0,    0,  816,  816,
-      816,  816,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  816,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,  816,    0,    0,    0,
+      806,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  806,  806,  815,  815,  815,  815,  815,  815,
+        0,  815,  815,  815,  815,  815,  815,  815,  815,    0,
+      815,  815,    0,    0,    0,    0,  815,  815,  815,  815,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      816,  816,  817,  817,  817,  817,  817,  817,    0,  817,
-      817,  817,  817,  817,  817,  817,  817,    0,  817,  817,
-        0,    0,    0,    0,  817,  817,  817,  817,    0,    0,
+        0,    0,    0,  815,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,  815,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  815,  815,
+      816,  816,  816,  816,  816,  816,    0,  816,  816,  816,
+      816,  816,  816,  816,  816,    0,  816,  816,    0,    0,
+        0,    0,  816,  816,  816,  816,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  816,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  817,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  817,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  817,  817,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820, 1048,    0, 1048, 1048, 1048, 1048,
-     1048, 1048, 1048, 1048, 1048, 1049,    0,    0, 1049, 1049,
-     1050,    0, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
-     1050, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1052,
-     1052, 1052, 1052, 1053,    0, 1053,    0, 1053, 1053, 1053,
-
-     1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1055,    0,
-     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,
-        0, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1057,    0, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
-     1057, 1058,    0, 1058, 1058, 1058, 1058, 1058, 1058, 1058,
-     1058, 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060,
-     1060,    0, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
-     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1061, 1062, 1062,    0, 1062, 1062, 1062, 1062, 1062, 1062,
-     1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
-
-     1063, 1063, 1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
-     1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067,
-     1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068,
-     1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069,
-     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
-     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
+        0,    0,  816,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  816,  816,  819,  819,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+      819,  819,  819,  819,  819,  819,  819,  819,  819,  819,
+      819,  819, 1047,    0, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1047, 1048,    0,    0, 1048, 1048, 1049,    0,
+     1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1050,
+     1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051, 1051,
+     1051, 1052,    0, 1052,    0, 1052, 1052, 1052, 1052, 1053,
+
+     1053, 1053, 1053, 1053, 1053, 1053, 1054,    0, 1054, 1054,
+     1054, 1054, 1054, 1054, 1054, 1054, 1054, 1055,    0, 1055,
+     1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056,    0,
+     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1057,
+        0, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059,    0,
+     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060,
+     1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061,
+     1061,    0, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
+
+     1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
+     1064, 1064, 1064, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
+     1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066, 1066,
+     1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067,
+     1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068,
+     1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069, 1069,
+     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070,
+     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071,
      1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071,
-     1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
 
-     1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
-     1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
-     1074, 1074, 1074, 1074, 1075,    0, 1075, 1075, 1075, 1075,
-     1075, 1075, 1075, 1075, 1075, 1076,    0, 1076, 1076, 1076,
-     1076, 1076, 1076, 1076, 1076, 1076, 1077,    0, 1077, 1077,
-     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1078,    0, 1078,
-     1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079,    0,
-        0, 1079, 1079, 1080,    0, 1080, 1080, 1080, 1080, 1080,
-     1080, 1080, 1080, 1080, 1081,    0,    0, 1081, 1081, 1081,
-     1082,    0,    0, 1082, 1083, 1083, 1083, 1083, 1083, 1083,
-
-     1083, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085,
-        0,    0,    0,    0, 1085, 1085, 1085, 1085, 1086, 1086,
-     1086, 1086, 1086, 1086, 1087, 1087, 1087, 1087, 1088,    0,
-     1088, 1088, 1088, 1088, 1089, 1089, 1089, 1089, 1089, 1089,
-     1089, 1090,    0, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
-     1090, 1090, 1091,    0, 1091, 1091, 1091, 1091, 1091, 1091,
-     1091, 1091, 1091, 1092,    0, 1092, 1092, 1092, 1092, 1092,
-     1092, 1092, 1092, 1092, 1093,    0, 1093, 1093, 1093, 1093,
-     1093, 1093, 1093, 1093, 1093, 1094, 1094,    0, 1094, 1094,
-     1094, 1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095,
-
-     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1096, 1096,    0,
-     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
-     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
+     1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
+     1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1074,    0, 1074, 1074, 1074, 1074, 1074, 1074,
+     1074, 1074, 1074, 1075,    0, 1075, 1075, 1075, 1075, 1075,
+     1075, 1075, 1075, 1075, 1076,    0, 1076, 1076, 1076, 1076,
+     1076, 1076, 1076, 1076, 1076, 1077,    0, 1077, 1077, 1077,
+     1077, 1077, 1077, 1077, 1077, 1077, 1078,    0,    0, 1078,
+     1078, 1079,    0, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1080,    0,    0, 1080, 1080, 1080, 1081,    0,
+        0, 1081, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083,
+
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084,    0,    0,
+        0,    0, 1084, 1084, 1084, 1084, 1085, 1085, 1085, 1085,
+     1085, 1085, 1086, 1086, 1086, 1086, 1087,    0, 1087, 1087,
+     1087, 1087, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1089,
+        0, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089, 1089,
+     1090,    0, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
+     1090, 1091,    0, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1091, 1092,    0, 1092, 1092, 1092, 1092, 1092, 1092,
+     1092, 1092, 1092, 1093, 1093,    0, 1093, 1093, 1093, 1093,
+     1093, 1093, 1093, 1093, 1094, 1094, 1094, 1094, 1094, 1094,
+
+     1094, 1094, 1094, 1094, 1094, 1095, 1095,    0, 1095, 1095,
+     1095, 1095, 1095, 1095, 1095, 1095, 1096, 1096, 1096, 1096,
+     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1097, 1097, 1097,
+     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098, 1098,
+     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,
      1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1099,
-     1099, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
-     1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
-     1101, 1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102,
-     1102, 1102, 1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103,
-     1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104, 1104, 1104,
-
-     1104, 1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105,
-     1105, 1105, 1105, 1105, 1105, 1105, 1105, 1106, 1106, 1106,
-     1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1107, 1107,
-     1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108,
-     1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
-     1109,    0, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
-     1109, 1110,    0, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
-     1110, 1110, 1111,    0, 1111, 1111, 1111, 1111, 1111, 1111,
-     1111, 1111, 1111, 1112,    0, 1112, 1112, 1112, 1112, 1112,
-     1112, 1112, 1112, 1112, 1113,    0,    0, 1113, 1113, 1114,
-
-        0,    0, 1114, 1114, 1114, 1115,    0,    0, 1115, 1116,
-        0, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
-     1117,    0, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
-     1117, 1118,    0, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
-     1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121, 1121, 1121,
-     1121, 1121, 1121, 1122,    0, 1122, 1122, 1122, 1122, 1123,
-        0, 1123, 1123, 1123, 1123, 1124, 1124, 1124, 1124, 1124,
-     1124, 1124, 1125,    0, 1125, 1125, 1125, 1125, 1125, 1125,
-     1125, 1125, 1125, 1126,    0, 1126, 1126, 1126, 1126, 1126,
-
-     1126, 1126, 1126, 1126, 1127,    0, 1127, 1127, 1127, 1127,
-     1127, 1127, 1127, 1127, 1127, 1128,    0, 1128, 1128, 1128,
-     1128, 1128, 1128, 1128, 1128, 1128, 1129,    0, 1129, 1129,
-     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1130, 1130, 1130,
-     1130, 1130, 1130, 1130, 1131, 1131,    0, 1131, 1131, 1131,
-     1131, 1131, 1131, 1131, 1131, 1132, 1132, 1132, 1132, 1132,
-     1132, 1132, 1132, 1132, 1132, 1132, 1133, 1133,    0, 1133,
-     1133, 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134,
-     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1135, 1135,
-     1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136,
+     1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
+     1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
+     1101, 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102,
+     1102, 1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
+
+     1103, 1103, 1103, 1103, 1104, 1104, 1104, 1104, 1104, 1104,
+     1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105, 1105,
+     1105, 1105, 1105, 1105, 1105, 1105, 1106, 1106, 1106, 1106,
+     1106, 1106, 1106, 1106, 1106, 1106, 1106, 1107, 1107, 1107,
+     1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108,    0,
+     1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109,
+        0, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109,
+     1110,    0, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
+     1110, 1111,    0, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
+     1111, 1111, 1112,    0,    0, 1112, 1112, 1113,    0,    0,
+
+     1113, 1113, 1113, 1114,    0,    0, 1114, 1115,    0, 1115,
+     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116,    0,
+     1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117,
+        0, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
+     1118, 1118, 1118, 1118, 1118, 1118, 1118, 1119, 1119, 1119,
+     1119, 1119, 1119, 1119, 1119, 1120, 1120, 1120, 1120, 1120,
+     1120, 1121,    0, 1121, 1121, 1121, 1121, 1122,    0, 1122,
+     1122, 1122, 1122, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
+     1124,    0, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
+     1124, 1125,    0, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+
+     1125, 1125, 1126,    0, 1126, 1126, 1126, 1126, 1126, 1126,
+     1126, 1126, 1126, 1127,    0, 1127, 1127, 1127, 1127, 1127,
+     1127, 1127, 1127, 1127, 1128,    0, 1128, 1128, 1128, 1128,
+     1128, 1128, 1128, 1128, 1128, 1129, 1129, 1129, 1129, 1129,
+     1129, 1129, 1130, 1130,    0, 1130, 1130, 1130, 1130, 1130,
+     1130, 1130, 1130, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
+     1131, 1131, 1131, 1131, 1132, 1132,    0, 1132, 1132, 1132,
+     1132, 1132, 1132, 1132, 1132, 1133, 1133, 1133, 1133, 1133,
+     1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134, 1134,
+     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1135, 1135, 1135,
 
-     1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
+     1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136,
+     1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1137,
      1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
-     1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
-     1138, 1138, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
-     1139, 1139, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
-     1140, 1140, 1140, 1140, 1141, 1141, 1141, 1141, 1141, 1141,
-     1141, 1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142, 1142,
-     1142, 1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1143,
-     1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144,
-     1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145, 1145,
-
-     1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1146,
-     1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
+     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
+     1138, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
+     1139, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
+     1140, 1140, 1140, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
+     1141, 1141, 1141, 1141, 1142, 1142, 1142, 1142, 1142, 1142,
+     1142, 1142, 1142, 1142, 1142, 1143, 1143, 1143, 1143, 1143,
+     1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1144,
+
+     1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145, 1145, 1145,
+     1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1146, 1146,
+     1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1147,
      1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
-     1147, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
-     1148, 1148, 1149,    0, 1149, 1149, 1149, 1149, 1149, 1149,
-     1149, 1149, 1149, 1150,    0, 1150, 1150, 1150, 1150, 1150,
-     1150, 1150, 1150, 1150, 1151,    0, 1151, 1151, 1151, 1151,
-     1151, 1151, 1151, 1151, 1151, 1152,    0, 1152, 1152, 1152,
-     1152, 1152, 1152, 1152, 1152, 1152, 1153,    0, 1153, 1153,
-     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154,    0,    0,
-
-     1154, 1154, 1154, 1155,    0, 1155, 1155, 1155, 1155, 1155,
-     1155, 1155, 1155, 1155, 1156,    0, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1156, 1157,    0, 1157, 1157, 1157,
-     1157, 1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158,
-     1158, 1158, 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
-     1159, 1160,    0, 1160, 1160, 1160, 1160, 1161,    0, 1161,
-     1161, 1161, 1161, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
-     1163,    0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
-     1163, 1164,    0, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
-     1164, 1164, 1165,    0, 1165, 1165, 1165, 1165, 1165, 1165,
-
-     1165, 1165, 1165, 1166,    0, 1166, 1166, 1166, 1166, 1166,
-     1166, 1166, 1166, 1166, 1167,    0, 1167, 1167, 1167, 1167,
-     1167, 1167, 1167, 1167, 1167, 1168,    0, 1168, 1168, 1168,
-     1168, 1168, 1168, 1168, 1168, 1168, 1169, 1169, 1169, 1169,
-     1169, 1169, 1169, 1170, 1170,    0, 1170, 1170, 1170, 1170,
-     1170, 1170, 1170, 1170, 1171, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1171, 1172, 1172,    0, 1172, 1172,
-     1172, 1172, 1172, 1172, 1172, 1172, 1173, 1173,    0, 1173,
-     1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174, 1174, 1174,
-     1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175, 1175,
-
-     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176,
-     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
+     1148,    0, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
+     1148, 1149,    0, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
+     1149, 1149, 1150,    0, 1150, 1150, 1150, 1150, 1150, 1150,
+     1150, 1150, 1150, 1151,    0, 1151, 1151, 1151, 1151, 1151,
+     1151, 1151, 1151, 1151, 1152,    0, 1152, 1152, 1152, 1152,
+     1152, 1152, 1152, 1152, 1152, 1153,    0,    0, 1153, 1153,
+
+     1153, 1154,    0, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
+     1154, 1154, 1155,    0, 1155, 1155, 1155, 1155, 1155, 1155,
+     1155, 1155, 1155, 1156,    0, 1156, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1159,
+        0, 1159, 1159, 1159, 1159, 1160,    0, 1160, 1160, 1160,
+     1160, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162,    0,
+     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1163,
+        0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+     1164,    0, 1164, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+
+     1164, 1165,    0, 1165, 1165, 1165, 1165, 1165, 1165, 1165,
+     1165, 1165, 1166,    0, 1166, 1166, 1166, 1166, 1166, 1166,
+     1166, 1166, 1166, 1167,    0, 1167, 1167, 1167, 1167, 1167,
+     1167, 1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168,
+     1168, 1169, 1169,    0, 1169, 1169, 1169, 1169, 1169, 1169,
+     1169, 1169, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1170,
+     1170, 1170, 1170, 1171, 1171,    0, 1171, 1171, 1171, 1171,
+     1171, 1171, 1171, 1171, 1172, 1172,    0, 1172, 1172, 1172,
+     1172, 1172, 1172, 1172, 1172, 1173, 1173, 1173, 1173, 1173,
+     1173, 1173, 1173, 1173, 1173, 1173, 1174, 1174, 1174, 1174,
+
+     1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175, 1175, 1175,
+     1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1176, 1176,
+     1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177,
      1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
-     1177, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
-     1178, 1178, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
-     1179, 1179, 1179, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
-     1180, 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181,
-     1181, 1181, 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182,
-     1182, 1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183, 1183,
-     1183, 1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184, 1184,
-
-     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185,
-     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1186,
-     1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
+     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
+     1178, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+     1179, 1179, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1180, 1180, 1180, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182,
+     1182, 1182, 1182, 1182, 1182, 1183, 1183, 1183, 1183, 1183,
+
+     1183, 1183, 1183, 1183, 1183, 1183, 1184, 1184, 1184, 1184,
+     1184, 1184, 1184, 1184, 1184, 1184, 1184, 1185, 1185, 1185,
+     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1186, 1186,
+     1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1186, 1187,
      1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187,
-     1187, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
-     1188, 1188, 1189,    0, 1189, 1189, 1189, 1189, 1189, 1189,
-     1189, 1189, 1189, 1190,    0, 1190, 1190, 1190, 1190, 1190,
-     1190, 1190, 1190, 1190, 1191,    0, 1191, 1191, 1191, 1191,
-     1191, 1191, 1191, 1191, 1191, 1192,    0, 1192, 1192, 1192,
-     1192, 1192, 1192, 1192, 1192, 1192, 1193,    0, 1193, 1193,
-
-     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1194,    0, 1194,
-     1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1195,    0,
-        0, 1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196,
-     1196, 1196, 1197,    0, 1197, 1197, 1197, 1197, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1199,    0, 1199, 1199, 1199,
-     1199, 1199, 1199, 1199, 1199, 1199, 1200,    0, 1200, 1200,
-     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201, 1201, 1201,
-     1201, 1201, 1201, 1201, 1202, 1202,    0, 1202, 1202, 1202,
-     1202, 1202, 1202, 1202, 1202, 1203, 1203,    0, 1203, 1203,
-     1203, 1203, 1203, 1203, 1203, 1203, 1204, 1204, 1204, 1204,
-
-     1204, 1204, 1204, 1204, 1204, 1204, 1204, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
-     1047, 1047, 1047, 1047
+     1188,    0, 1188, 1188, 1188, 1188, 1188, 1188, 1188, 1188,
+     1188, 1189,    0, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
+     1189, 1189, 1190,    0, 1190, 1190, 1190, 1190, 1190, 1190,
+     1190, 1190, 1190, 1191,    0, 1191, 1191, 1191, 1191, 1191,
+     1191, 1191, 1191, 1191, 1192,    0, 1192, 1192, 1192, 1192,
+
+     1192, 1192, 1192, 1192, 1192, 1193,    0, 1193, 1193, 1193,
+     1193, 1193, 1193, 1193, 1193, 1193, 1194,    0,    0, 1194,
+     1194, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1196,    0, 1196, 1196, 1196, 1196, 1197, 1197, 1197, 1197,
+     1197, 1197, 1197, 1198,    0, 1198, 1198, 1198, 1198, 1198,
+     1198, 1198, 1198, 1198, 1199,    0, 1199, 1199, 1199, 1199,
+     1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200, 1200, 1200,
+     1200, 1200, 1201, 1201,    0, 1201, 1201, 1201, 1201, 1201,
+     1201, 1201, 1201, 1202, 1202,    0, 1202, 1202, 1202, 1202,
+     1202, 1202, 1202, 1202, 1203, 1203, 1203, 1203, 1203, 1203,
+
+     1203, 1203, 1203, 1203, 1203, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046,
+     1046, 1046
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2592,7 +2598,7 @@
 
 
 
-#line 2596 "compilers/imcc/imclexer.c"
+#line 2602 "compilers/imcc/imclexer.c"
 
 #define INITIAL 0
 #define emit 1
@@ -2654,10 +2660,6 @@
 
 static int yy_init_globals (yyscan_t yyscanner );
 
-int yylex_init (yyscan_t* scanner);
-
-int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
-
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
@@ -2735,7 +2737,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -2746,7 +2748,7 @@
     if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
         { \
         int c = '*'; \
-        int n; \
+        size_t n; \
         for ( n = 0; n < max_size && \
                  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
             buf[n] = (char) c; \
@@ -2851,7 +2853,7 @@
             return 0;
         }
 
-#line 2855 "compilers/imcc/imclexer.c"
+#line 2857 "compilers/imcc/imclexer.c"
 
     if ( !yyg->yy_init )
         {
@@ -2905,13 +2907,13 @@
             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 >= 1048 )
+                if ( yy_current_state >= 1047 )
                     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 != 1047 );
+        while ( yy_current_state != 1046 );
         yy_cp = yyg->yy_last_accepting_cpos;
         yy_current_state = yyg->yy_last_accepting_state;
 
@@ -3509,80 +3511,75 @@
     YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 387 "compilers/imcc/imcc.l"
-return DOTDOT;
-    YY_BREAK
-case 96:
-YY_RULE_SETUP
 #line 388 "compilers/imcc/imcc.l"
 return PLUS_ASSIGN;
     YY_BREAK
-case 97:
+case 96:
 YY_RULE_SETUP
 #line 389 "compilers/imcc/imcc.l"
 return MINUS_ASSIGN;
     YY_BREAK
-case 98:
+case 97:
 YY_RULE_SETUP
 #line 390 "compilers/imcc/imcc.l"
 return MUL_ASSIGN;
     YY_BREAK
-case 99:
+case 98:
 YY_RULE_SETUP
 #line 391 "compilers/imcc/imcc.l"
 return DIV_ASSIGN;
     YY_BREAK
-case 100:
+case 99:
 YY_RULE_SETUP
 #line 392 "compilers/imcc/imcc.l"
 return MOD_ASSIGN;
     YY_BREAK
-case 101:
+case 100:
 YY_RULE_SETUP
 #line 393 "compilers/imcc/imcc.l"
 return FDIV;
     YY_BREAK
-case 102:
+case 101:
 YY_RULE_SETUP
 #line 394 "compilers/imcc/imcc.l"
 return FDIV_ASSIGN;
     YY_BREAK
-case 103:
+case 102:
 YY_RULE_SETUP
 #line 395 "compilers/imcc/imcc.l"
 return BAND_ASSIGN;
     YY_BREAK
-case 104:
+case 103:
 YY_RULE_SETUP
 #line 396 "compilers/imcc/imcc.l"
 return BOR_ASSIGN;
     YY_BREAK
-case 105:
+case 104:
 YY_RULE_SETUP
 #line 397 "compilers/imcc/imcc.l"
 return BXOR_ASSIGN;
     YY_BREAK
-case 106:
+case 105:
 YY_RULE_SETUP
 #line 398 "compilers/imcc/imcc.l"
 return SHR_ASSIGN;
     YY_BREAK
-case 107:
+case 106:
 YY_RULE_SETUP
 #line 399 "compilers/imcc/imcc.l"
 return SHL_ASSIGN;
     YY_BREAK
-case 108:
+case 107:
 YY_RULE_SETUP
 #line 400 "compilers/imcc/imcc.l"
 return SHR_U_ASSIGN;
     YY_BREAK
-case 109:
+case 108:
 YY_RULE_SETUP
 #line 401 "compilers/imcc/imcc.l"
 return CONCAT_ASSIGN;
     YY_BREAK
-case 110:
+case 109:
 YY_RULE_SETUP
 #line 403 "compilers/imcc/imcc.l"
 {
@@ -3615,14 +3612,14 @@
         return MACRO;
     }
     YY_BREAK
-case 111:
+case 110:
 YY_RULE_SETUP
 #line 433 "compilers/imcc/imcc.l"
 {
         return read_macro(valp, interp, yyscanner);
     }
     YY_BREAK
-case 112:
+case 111:
 YY_RULE_SETUP
 #line 437 "compilers/imcc/imcc.l"
 {
@@ -3634,7 +3631,7 @@
         include_file(interp, yytext + 1, yyscanner);
     }
     YY_BREAK
-case 113:
+case 112:
 YY_RULE_SETUP
 #line 446 "compilers/imcc/imcc.l"
 {
@@ -3659,7 +3656,7 @@
         return LABEL;
     }
     YY_BREAK
-case 114:
+case 113:
 YY_RULE_SETUP
 #line 468 "compilers/imcc/imcc.l"
 {
@@ -3684,12 +3681,12 @@
         return IDENTIFIER;
      }
     YY_BREAK
-case 115:
+case 114:
 YY_RULE_SETUP
 #line 490 "compilers/imcc/imcc.l"
 return COMMA;
     YY_BREAK
-case 116:
+case 115:
 YY_RULE_SETUP
 #line 492 "compilers/imcc/imcc.l"
 {
@@ -3702,7 +3699,7 @@
         return LABEL;
     }
     YY_BREAK
-case 117:
+case 116:
 YY_RULE_SETUP
 #line 502 "compilers/imcc/imcc.l"
 {
@@ -3714,32 +3711,32 @@
         }
     }
     YY_BREAK
-case 118:
+case 117:
 YY_RULE_SETUP
 #line 513 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, FLOATC);
     YY_BREAK
-case 119:
+case 118:
 YY_RULE_SETUP
 #line 514 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 120:
+case 119:
 YY_RULE_SETUP
 #line 515 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 121:
+case 120:
 YY_RULE_SETUP
 #line 516 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 122:
+case 121:
 YY_RULE_SETUP
 #line 517 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, INTC);
     YY_BREAK
-case 123:
+case 122:
 YY_RULE_SETUP
 #line 519 "compilers/imcc/imcc.l"
 {
@@ -3752,7 +3749,7 @@
         return STRINGC;
     }
     YY_BREAK
-case 124:
+case 123:
 YY_RULE_SETUP
 #line 529 "compilers/imcc/imcc.l"
 {
@@ -3762,7 +3759,7 @@
         return STRINGC;
     }
     YY_BREAK
-case 125:
+case 124:
 YY_RULE_SETUP
 #line 536 "compilers/imcc/imcc.l"
 {
@@ -3793,7 +3790,7 @@
         yy_push_state(heredoc1, yyscanner);
     }
     YY_BREAK
-case 126:
+case 125:
 YY_RULE_SETUP
 #line 564 "compilers/imcc/imcc.l"
 {
@@ -3804,7 +3801,7 @@
         return USTRINGC;
     }
     YY_BREAK
-case 127:
+case 126:
 YY_RULE_SETUP
 #line 572 "compilers/imcc/imcc.l"
 {
@@ -3815,7 +3812,7 @@
         return IREG;
     }
     YY_BREAK
-case 128:
+case 127:
 YY_RULE_SETUP
 #line 580 "compilers/imcc/imcc.l"
 {
@@ -3826,7 +3823,7 @@
         return NREG;
     }
     YY_BREAK
-case 129:
+case 128:
 YY_RULE_SETUP
 #line 588 "compilers/imcc/imcc.l"
 {
@@ -3837,7 +3834,7 @@
         return SREG;
     }
     YY_BREAK
-case 130:
+case 129:
 YY_RULE_SETUP
 #line 596 "compilers/imcc/imcc.l"
 {
@@ -3848,7 +3845,7 @@
         return PREG;
     }
     YY_BREAK
-case 131:
+case 130:
 YY_RULE_SETUP
 #line 604 "compilers/imcc/imcc.l"
 {
@@ -3856,7 +3853,7 @@
             "'%s' is not a valid register name", yytext);
     }
     YY_BREAK
-case 132:
+case 131:
 YY_RULE_SETUP
 #line 609 "compilers/imcc/imcc.l"
 {
@@ -3870,7 +3867,7 @@
         return REG;
     }
     YY_BREAK
-case 133:
+case 132:
 YY_RULE_SETUP
 #line 620 "compilers/imcc/imcc.l"
 {
@@ -3901,12 +3898,12 @@
         return (!is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
     }
     YY_BREAK
-case 134:
+case 133:
 YY_RULE_SETUP
 #line 649 "compilers/imcc/imcc.l"
 /* skip */;
     YY_BREAK
-case 135:
+case 134:
 YY_RULE_SETUP
 #line 651 "compilers/imcc/imcc.l"
 {
@@ -3931,13 +3928,13 @@
 #line 667 "compilers/imcc/imcc.l"
 yyterminate();
     YY_BREAK
-case 136:
+case 135:
 YY_RULE_SETUP
 #line 669 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, ENDM);
     YY_BREAK
-case 137:
-/* rule 137 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
 #line 671 "compilers/imcc/imcc.l"
 {
@@ -3945,12 +3942,12 @@
         DUP_AND_RET(valp, '\n');
     }
     YY_BREAK
-case 138:
+case 137:
 YY_RULE_SETUP
 #line 676 "compilers/imcc/imcc.l"
 return LABEL;
     YY_BREAK
-case 139:
+case 138:
 YY_RULE_SETUP
 #line 678 "compilers/imcc/imcc.l"
 {
@@ -3976,7 +3973,7 @@
         return LABEL;
     }
     YY_BREAK
-case 140:
+case 139:
 YY_RULE_SETUP
 #line 701 "compilers/imcc/imcc.l"
 {
@@ -3993,37 +3990,37 @@
         return IDENTIFIER;
     }
     YY_BREAK
-case 141:
+case 140:
 YY_RULE_SETUP
 #line 715 "compilers/imcc/imcc.l"
 /* skip leading ws */;
     YY_BREAK
-case 142:
+case 141:
 YY_RULE_SETUP
 #line 716 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, ' ');
     YY_BREAK
-case 143:
+case 142:
 YY_RULE_SETUP
 #line 717 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, REG);
     YY_BREAK
-case 144:
+case 143:
 YY_RULE_SETUP
 #line 718 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, REG);
     YY_BREAK
-case 145:
+case 144:
 YY_RULE_SETUP
 #line 719 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, IDENTIFIER);
     YY_BREAK
-case 146:
+case 145:
 YY_RULE_SETUP
 #line 720 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, MACRO);
     YY_BREAK
-case 147:
+case 146:
 YY_RULE_SETUP
 #line 721 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, yytext[0]);
@@ -4032,12 +4029,12 @@
 #line 722 "compilers/imcc/imcc.l"
 yyterminate();
     YY_BREAK
-case 148:
+case 147:
 YY_RULE_SETUP
 #line 724 "compilers/imcc/imcc.l"
 ECHO;
     YY_BREAK
-#line 4041 "compilers/imcc/imclexer.c"
+#line 4038 "compilers/imcc/imclexer.c"
 case YY_STATE_EOF(pod):
 case YY_STATE_EOF(cmt1):
 case YY_STATE_EOF(cmt2):
@@ -4277,7 +4274,7 @@
 
         /* Read in more data. */
         YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-            yyg->yy_n_chars, (size_t) num_to_read );
+            yyg->yy_n_chars, num_to_read );
 
         YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
         }
@@ -4301,14 +4298,6 @@
     else
         ret_val = EOB_ACT_CONTINUE_SCAN;
 
-    if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-        /* Extend the array by 50%, plus the number we really need. */
-        yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
-        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
-        if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-            YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-    }
-
     yyg->yy_n_chars += number_to_move;
     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
     YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
@@ -4340,7 +4329,7 @@
         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 >= 1048 )
+            if ( yy_current_state >= 1047 )
                 yy_c = yy_meta[(unsigned int) yy_c];
             }
         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4369,11 +4358,11 @@
     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 >= 1048 )
+        if ( yy_current_state >= 1047 )
             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 == 1047);
+    yy_is_jam = (yy_current_state == 1046);
 
     return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4736,8 +4725,6 @@
         yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc
                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
                                 , yyscanner);
-        if ( ! yyg->yy_buffer_stack )
-            YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
         memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 
@@ -4756,8 +4743,6 @@
                                 (yyg->yy_buffer_stack,
                                 num_to_alloc * sizeof(struct yy_buffer_state*)
                                 , yyscanner);
-        if ( ! yyg->yy_buffer_stack )
-            YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
         /* zero only the new slots.*/
         memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -4802,7 +4787,7 @@
 
 /** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
+ * @param str a NUL-terminated string to scan
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
@@ -4868,7 +4853,8 @@
             yyg->yy_start_stack = (int *) yyrealloc((void *) yyg->yy_start_stack,new_size ,yyscanner );
 
         if ( ! yyg->yy_start_stack )
-            YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
+            YY_FATAL_ERROR(
+            "out of memory expanding start-condition stack" );
         }
 
     yyg->yy_start_stack[yyg->yy_start_stack_ptr++] = YY_START;
@@ -5092,42 +5078,6 @@
     return yy_init_globals ( *ptr_yy_globals );
 }
 
-/* yylex_init_extra has the same functionality as yylex_init, but follows the
- * convention of taking the scanner as the last argument. Note however, that
- * this is a *pointer* to a scanner, as it will be allocated by this call (and
- * is the reason, too, why this function also must handle its own declaration).
- * The user defined value in the first argument will be available to yyalloc in
- * the yyextra field.
- */
-
-int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
-
-{
-    struct yyguts_t dummy_yyguts;
-
-    yyset_extra (yy_user_defined, &dummy_yyguts);
-
-    if (ptr_yy_globals == NULL){
-        errno = EINVAL;
-        return 1;
-    }
-
-    *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
-
-    if (*ptr_yy_globals == NULL){
-        errno = ENOMEM;
-        return 1;
-    }
-
-    /* By setting to 0xAA, we expose bugs in
-    yy_init_globals. Leave at 0x00 for releases. */
-    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
-
-    yyset_extra (yy_user_defined, *ptr_yy_globals);
-
-    return yy_init_globals ( *ptr_yy_globals );
-}
-
 static int yy_init_globals (yyscan_t yyscanner)
 {
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

Modified: branches/rakudoreg/compilers/imcc/imcparser.c
==============================================================================
--- branches/rakudoreg/compilers/imcc/imcparser.c	(original)
+++ branches/rakudoreg/compilers/imcc/imcparser.c	Wed Dec 17 13:31:52 2008
@@ -1,14 +1,3 @@
-/* ex: set ro ft=c:
- * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
- *
- * This file is generated automatically from 'compilers/imcc/imcc.y'
- * by tools/build/fixup_gen_file.pl.
- *
- * Any changes made here will be lost!
- *
- */
-/* HEADERIZER HFILE: none */
-/* HEADERIZER STOP */
 /* A Bison parser, made by GNU Bison 2.3.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
@@ -799,11 +788,6 @@
 iINDEXFETCH(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
         ARGIN(SymReg *r2))
 {
-    if (r0->set == 'S' && r1->set == 'S' && r2->set == 'I') {
-        SymReg * const r3 = mk_const(interp, "1", 'I');
-        return MK_I(interp, unit, "substr %s, %s, %s, 1", 4, r0, r1, r2, r3);
-    }
-
     IMCC_INFO(interp) -> keyvec |= KEY_BIT(2);
     return MK_I(interp, unit, "set %s, %s[%s]", 3, r0, r1, r2);
 }
@@ -817,11 +801,7 @@
 iINDEXSET(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(SymReg *r0), ARGIN(SymReg *r1),
         ARGIN(SymReg *r2))
 {
-    if (r0->set == 'S' && r1->set == 'I' && r2->set == 'S') {
-        SymReg * const r3 = mk_const(interp, "1", 'I');
-        MK_I(interp, unit, "substr %s, %s, %s, %s", 4, r0, r1, r3, r2);
-    }
-    else if (r0->set == 'P') {
+    if (r0->set == 'P') {
         IMCC_INFO(interp)->keyvec |= KEY_BIT(1);
         MK_I(interp, unit, "set %s[%s], %s", 3, r0, r1, r2);
     }
@@ -1028,7 +1008,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 687 "compilers/imcc/imcc.y"
+#line 678 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;
@@ -1037,7 +1017,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1030 "compilers/imcc/imcparser.c"
+#line 1021 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1050,7 +1030,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1043 "compilers/imcc/imcparser.c"
+#line 1034 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1265,16 +1245,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  33
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   713
+#define YYLAST   706
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  137
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  126
+#define YYNNTS  125
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  346
+#define YYNRULES  341
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  558
+#define YYNSTATES  551
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -1364,8 +1344,8 @@
      903,   905,   907,   909,   911,   913,   915,   917,   919,   920,
      922,   926,   928,   930,   935,   939,   941,   943,   945,   947,
      949,   951,   953,   955,   957,   959,   961,   962,   965,   966,
-     969,   971,   975,   976,   981,   983,   987,   990,   993,   995,
-     997,   999,  1001,  1003,  1005,  1007,  1009
+     969,   971,   975,   977,   979,   981,   983,   985,   987,   989,
+     991,   993
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -1376,7 +1356,7 @@
       -1,   141,    -1,   142,    -1,     4,    -1,   143,     4,    -1,
       96,   112,     4,    -1,     8,   113,    71,   112,     4,    -1,
        9,   112,     4,    -1,     6,   112,    -1,     7,   112,   122,
-     112,    -1,    -1,    31,   145,   220,   108,   122,   262,    -1,
+     112,    -1,    -1,    31,   145,   220,   108,   122,   261,    -1,
       -1,    31,   147,   113,   252,   122,   149,    -1,    -1,    31,
      148,   112,   252,   122,   149,    -1,   112,    -1,   115,    -1,
      151,    -1,   150,   151,    -1,   209,   152,     4,    -1,   110,
@@ -1422,8 +1402,8 @@
        1,     4,    -1,   214,    -1,   213,    71,   214,    -1,   108,
      215,    -1,    -1,   100,    -1,   222,    -1,   240,    -1,    -1,
       29,   217,   220,   213,    -1,    30,   112,    71,   245,    -1,
-      -1,    31,   218,   220,   108,   122,   262,    -1,   146,    -1,
-      -1,    34,   219,   220,   108,   122,   262,    -1,    64,   232,
+      -1,    31,   218,   220,   108,   122,   261,    -1,   146,    -1,
+      -1,    34,   219,   220,   108,   122,   261,    -1,    64,   232,
       -1,    10,   251,    -1,   116,   246,    -1,    14,   253,    -1,
      232,    -1,   179,    -1,   194,    -1,   196,    -1,    -1,    51,
       -1,    52,    -1,    53,    -1,    54,    -1,   108,    -1,   245,
@@ -1462,57 +1442,55 @@
       -1,    12,   253,   243,   251,    -1,    12,   253,   244,   253,
       10,   251,    -1,    12,    14,   253,    10,   251,    -1,    71,
       -1,    10,    -1,    56,    -1,    57,    -1,    58,    -1,    59,
-      -1,    60,    -1,    61,    -1,   117,    -1,   261,    -1,    -1,
+      -1,    60,    -1,    61,    -1,   117,    -1,   260,    -1,    -1,
      247,    -1,   247,    71,   248,    -1,   248,    -1,   252,    -1,
      245,   123,   254,   124,    -1,   123,   256,   124,    -1,   250,
       -1,   112,    -1,   115,    -1,   108,    -1,   116,    -1,   108,
-      -1,   116,    -1,   251,    -1,   253,    -1,   245,    -1,   262,
-      -1,    -1,   255,   258,    -1,    -1,   257,   258,    -1,   260,
-      -1,   258,   136,   260,    -1,    -1,   258,    71,   259,   260,
-      -1,   253,    -1,   253,    73,   253,    -1,    73,   253,    -1,
-     253,    73,    -1,   104,    -1,   105,    -1,   106,    -1,   107,
-      -1,   109,    -1,   113,    -1,   114,    -1,   112,    -1,   115,
-      -1
+      -1,   116,    -1,   251,    -1,   253,    -1,   245,    -1,   261,
+      -1,    -1,   255,   258,    -1,    -1,   257,   258,    -1,   259,
+      -1,   258,   136,   259,    -1,   253,    -1,   104,    -1,   105,
+      -1,   106,    -1,   107,    -1,   109,    -1,   113,    -1,   114,
+      -1,   112,    -1,   115,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   781,   781,   785,   786,   790,   791,   792,   798,   804,
-     805,   806,   807,   811,   812,   821,   826,   834,   843,   861,
-     861,   870,   870,   876,   876,   883,   884,   888,   889,   893,
-     894,   895,   896,   897,   898,   899,   902,   902,   911,   910,
-     922,   926,   934,   938,   942,   942,   954,   956,   960,   975,
-     983,   988,   992,   996,   987,  1008,  1009,  1010,  1023,  1023,
-    1027,  1041,  1045,  1051,  1060,  1066,  1075,  1081,  1090,  1096,
-    1105,  1113,  1118,  1129,  1132,  1137,  1145,  1146,  1147,  1148,
-    1149,  1160,  1171,  1174,  1176,  1181,  1180,  1213,  1214,  1218,
-    1219,  1223,  1224,  1228,  1229,  1233,  1234,  1235,  1236,  1237,
-    1238,  1239,  1240,  1241,  1242,  1243,  1244,  1245,  1246,  1250,
-    1255,  1259,  1264,  1268,  1272,  1277,  1286,  1287,  1291,  1296,
-    1297,  1305,  1306,  1306,  1321,  1322,  1326,  1327,  1328,  1329,
-    1330,  1331,  1336,  1336,  1339,  1347,  1347,  1353,  1354,  1359,
-    1367,  1368,  1373,  1381,  1385,  1390,  1389,  1402,  1403,  1407,
-    1408,  1418,  1422,  1432,  1440,  1441,  1453,  1457,  1459,  1460,
-    1461,  1462,  1466,  1467,  1471,  1472,  1476,  1485,  1486,  1497,
-    1504,  1513,  1523,  1524,  1529,  1530,  1531,  1531,  1547,  1551,
-    1551,  1558,  1559,  1559,  1565,  1571,  1572,  1584,  1585,  1586,
-    1587,  1588,  1589,  1593,  1594,  1595,  1596,  1600,  1613,  1615,
-    1617,  1619,  1621,  1623,  1625,  1627,  1629,  1631,  1633,  1635,
-    1637,  1641,  1643,  1645,  1648,  1655,  1654,  1663,  1664,  1665,
-    1666,  1674,  1675,  1676,  1680,  1681,  1682,  1683,  1684,  1685,
-    1686,  1687,  1688,  1689,  1690,  1691,  1692,  1693,  1694,  1695,
-    1696,  1697,  1698,  1699,  1700,  1701,  1702,  1708,  1707,  1719,
-    1726,  1727,  1728,  1729,  1730,  1731,  1732,  1733,  1734,  1735,
-    1736,  1737,  1738,  1743,  1754,  1755,  1756,  1757,  1763,  1775,
-    1781,  1787,  1786,  1795,  1796,  1806,  1816,  1822,  1831,  1835,
-    1836,  1840,  1841,  1844,  1848,  1852,  1862,  1867,  1877,  1882,
-    1886,  1887,  1891,  1895,  1899,  1906,  1910,  1914,  1921,  1922,
-    1926,  1927,  1928,  1929,  1930,  1931,  1935,  1936,  1940,  1941,
-    1945,  1946,  1950,  1951,  1958,  1965,  1966,  1967,  1971,  1972,
-    1976,  1977,  1981,  1982,  1986,  1987,  1991,  1991,  2004,  2004,
-    2017,  2018,  2023,  2023,  2032,  2038,  2045,  2046,  2050,  2051,
-    2052,  2053,  2054,  2058,  2059,  2060,  2061
+       0,   772,   772,   776,   777,   781,   782,   783,   789,   795,
+     796,   797,   798,   802,   803,   812,   817,   825,   834,   852,
+     852,   861,   861,   867,   867,   874,   875,   879,   880,   884,
+     885,   886,   887,   888,   889,   890,   893,   893,   902,   901,
+     913,   917,   925,   929,   933,   933,   945,   947,   951,   966,
+     974,   979,   983,   987,   978,   999,  1000,  1001,  1014,  1014,
+    1018,  1032,  1036,  1042,  1051,  1057,  1066,  1072,  1081,  1087,
+    1096,  1104,  1109,  1120,  1123,  1128,  1136,  1137,  1138,  1139,
+    1140,  1151,  1162,  1165,  1167,  1172,  1171,  1204,  1205,  1209,
+    1210,  1214,  1215,  1219,  1220,  1224,  1225,  1226,  1227,  1228,
+    1229,  1230,  1231,  1232,  1233,  1234,  1235,  1236,  1237,  1241,
+    1246,  1250,  1255,  1259,  1263,  1268,  1277,  1278,  1282,  1287,
+    1288,  1296,  1297,  1297,  1312,  1313,  1317,  1318,  1319,  1320,
+    1321,  1322,  1327,  1327,  1330,  1338,  1338,  1344,  1345,  1350,
+    1358,  1359,  1364,  1372,  1376,  1381,  1380,  1393,  1394,  1398,
+    1399,  1409,  1413,  1423,  1431,  1432,  1444,  1448,  1450,  1451,
+    1452,  1453,  1457,  1458,  1462,  1463,  1467,  1476,  1477,  1488,
+    1495,  1504,  1514,  1515,  1520,  1521,  1522,  1522,  1538,  1542,
+    1542,  1549,  1550,  1550,  1556,  1562,  1563,  1575,  1576,  1577,
+    1578,  1579,  1580,  1584,  1585,  1586,  1587,  1591,  1604,  1606,
+    1608,  1610,  1612,  1614,  1616,  1618,  1620,  1622,  1624,  1626,
+    1628,  1632,  1634,  1636,  1639,  1646,  1645,  1654,  1655,  1656,
+    1657,  1665,  1666,  1667,  1671,  1672,  1673,  1674,  1675,  1676,
+    1677,  1678,  1679,  1680,  1681,  1682,  1683,  1684,  1685,  1686,
+    1687,  1688,  1689,  1690,  1691,  1692,  1693,  1699,  1698,  1710,
+    1717,  1718,  1719,  1720,  1721,  1722,  1723,  1724,  1725,  1726,
+    1727,  1728,  1729,  1734,  1745,  1746,  1747,  1748,  1754,  1766,
+    1772,  1778,  1777,  1786,  1787,  1797,  1807,  1813,  1822,  1826,
+    1827,  1831,  1832,  1835,  1839,  1843,  1853,  1858,  1868,  1873,
+    1877,  1878,  1882,  1886,  1890,  1897,  1901,  1905,  1912,  1913,
+    1917,  1918,  1919,  1920,  1921,  1922,  1926,  1927,  1931,  1932,
+    1936,  1937,  1941,  1942,  1949,  1956,  1957,  1958,  1962,  1963,
+    1967,  1968,  1972,  1973,  1977,  1978,  1982,  1982,  1995,  1995,
+    2008,  2009,  2017,  2026,  2027,  2028,  2029,  2030,  2034,  2035,
+    2036,  2037
 };
 #endif
 
@@ -1564,7 +1542,7 @@
   "unless_statement", "if_statement", "comma_or_goto", "relop", "target",
   "vars", "_vars", "_var_or_i", "sub_label_op_c", "sub_label_op",
   "label_op", "var_or_i", "var", "keylist", "@22", "keylist_force", "@23",
-  "_keylist", "@24", "key", "reg", "const", 0
+  "_keylist", "key", "reg", "const", 0
 };
 #endif
 
@@ -1626,8 +1604,8 @@
      244,   244,   244,   244,   244,   244,   245,   245,   246,   246,
      247,   247,   248,   248,   248,   249,   249,   249,   250,   250,
      251,   251,   252,   252,   253,   253,   255,   254,   257,   256,
-     258,   258,   259,   258,   260,   260,   260,   260,   261,   261,
-     261,   261,   261,   262,   262,   262,   262
+     258,   258,   259,   260,   260,   260,   260,   260,   261,   261,
+     261,   261
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1666,8 +1644,8 @@
        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
        3,     1,     1,     4,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     0,     2,     0,     2,
-       1,     3,     0,     4,     1,     3,     2,     2,     1,     1,
-       1,     1,     1,     1,     1,     1,     1
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1682,154 +1660,154 @@
        0,     0,    48,   318,   316,   317,   319,    52,   315,   193,
      194,   195,   196,     0,    14,    21,   166,     0,    32,    31,
       35,    34,   162,    27,     0,    33,    36,   163,   165,    18,
-       0,    49,     0,   338,   339,   340,   341,   342,   345,   343,
-     344,   346,   306,   324,   334,   327,   330,   307,   325,    91,
-       0,     0,     0,    30,    28,    45,     0,     0,    38,     0,
-       0,   164,    15,   336,   337,   332,     0,    97,    95,    96,
-      98,    99,    66,   100,     0,   101,     0,    64,     0,    71,
-      68,   102,   103,   104,   105,   106,   107,   108,     0,    92,
-      93,     0,     0,     0,    40,     0,    91,    29,   308,   335,
-       0,   331,     0,     0,    73,     0,     0,     0,     0,    53,
-      94,    20,   320,   321,   322,     0,   323,     0,     0,     0,
-     328,    37,   324,    43,   309,   311,   312,   333,    25,    26,
-       0,     0,     0,    76,    77,    79,    78,    80,    81,   326,
-       0,    75,     0,     0,     0,     0,    55,     0,     0,    41,
-      39,     0,     0,   326,     0,    67,    63,    62,     0,     0,
-      61,    65,    70,    72,    69,    56,   156,    22,    24,   314,
-     329,     0,   310,    82,    74,    58,     0,   160,   159,   161,
-       0,     0,   156,     0,   154,   313,     0,   158,    57,    54,
-     155,     0,   192,   157,    59,     0,   168,     0,     0,     0,
-       0,     0,   176,     0,   179,   182,   147,     0,   148,   247,
-       0,     0,     0,   264,   265,   266,   308,   215,   181,   189,
-     190,   191,   134,     0,     0,   174,   217,   218,   219,   271,
-     188,   175,   291,   290,   267,   124,   185,     0,     0,     0,
-       0,   187,     0,     0,     0,     0,     0,   184,   267,     0,
-      85,   132,   135,   186,   289,   145,   167,     0,   250,   251,
-     252,   253,   256,   257,   258,   259,   255,   254,   260,   261,
-     262,     0,     0,   326,     0,    60,     0,   299,   300,   301,
-     302,   303,   304,   305,   298,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   289,   116,   137,   140,     0,
-     287,     0,   124,   149,   273,   269,   270,   268,   220,     0,
-     345,   346,   308,   221,   222,   223,     0,   214,   324,   198,
-       0,   249,   126,   127,   128,   129,   131,   125,     0,   295,
-       0,     0,   294,     0,   211,   172,   177,   169,   178,     0,
-       0,     0,    89,     0,     0,     0,     0,     0,   284,   345,
-       0,   150,   279,   345,     0,   275,   197,   207,   205,   206,
-     263,   199,   229,   238,   239,   243,   232,   233,   234,   235,
-     236,   237,   230,   240,   241,   242,   231,   326,   246,   224,
-     225,   226,   227,   228,   244,   245,     0,     0,     0,   297,
-       0,   293,     0,     0,   326,   173,   171,     0,     0,     0,
-     248,     0,     0,     0,     0,   138,     0,   133,     0,   141,
-       0,   136,     0,   288,     0,   285,     0,     0,     0,   146,
-     278,     0,     0,   272,     0,     0,   326,     0,   326,     0,
-     200,     0,     0,   296,   292,   212,     0,   170,   180,   183,
-     118,     0,     0,     0,     0,    87,   117,   279,   139,   279,
-     142,     0,     0,   151,   345,   152,   281,   282,   280,   277,
-     345,   274,   208,   203,     0,   209,     0,   201,   202,   130,
-     213,    90,     0,     0,     0,     0,   119,     0,   143,   144,
-     286,   273,     0,     0,     0,   204,   210,   110,     0,   111,
-     113,     0,   112,     0,     0,    88,     0,   153,     0,   276,
-       0,     0,     0,   122,     0,    86,     0,   216,   283,   109,
-     115,   114,     0,   124,   120,     0,   121,   123
+       0,    49,   333,   334,   335,   336,   337,   340,   338,   339,
+     341,   306,   324,   332,   327,   330,   307,   325,    91,     0,
+       0,     0,    30,    28,    45,     0,     0,    38,     0,     0,
+     164,    15,     0,    97,    95,    96,    98,    99,    66,   100,
+       0,   101,     0,    64,     0,    71,    68,   102,   103,   104,
+     105,   106,   107,   108,     0,    92,    93,     0,     0,     0,
+      40,     0,    91,    29,   308,   331,     0,     0,    73,     0,
+       0,     0,     0,    53,    94,    20,   320,   321,   322,     0,
+     323,     0,     0,     0,   328,    37,   324,    43,   309,   311,
+     312,    25,    26,     0,     0,     0,    76,    77,    79,    78,
+      80,    81,   326,     0,    75,     0,     0,     0,     0,    55,
+       0,     0,    41,    39,     0,     0,   326,     0,    67,    63,
+      62,     0,     0,    61,    65,    70,    72,    69,    56,   156,
+      22,    24,   314,   329,     0,   310,    82,    74,    58,     0,
+     160,   159,   161,     0,     0,   156,     0,   154,   313,     0,
+     158,    57,    54,   155,     0,   192,   157,    59,     0,   168,
+       0,     0,     0,     0,     0,   176,     0,   179,   182,   147,
+       0,   148,   247,     0,     0,     0,   264,   265,   266,   308,
+     215,   181,   189,   190,   191,   134,     0,     0,   174,   217,
+     218,   219,   271,   188,   175,   291,   290,   267,   124,   185,
+       0,     0,     0,     0,   187,     0,     0,     0,     0,     0,
+     184,   267,     0,    85,   132,   135,   186,   289,   145,   167,
+       0,   250,   251,   252,   253,   256,   257,   258,   259,   255,
+     254,   260,   261,   262,     0,     0,   326,     0,    60,     0,
+     299,   300,   301,   302,   303,   304,   305,   298,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   289,   116,
+     137,   140,     0,   287,     0,   124,   149,   273,   269,   270,
+     268,   220,     0,   340,   341,   308,   221,   222,   223,     0,
+     214,   324,   198,     0,   249,   126,   127,   128,   129,   131,
+     125,     0,   295,     0,     0,   294,     0,   211,   172,   177,
+     169,   178,     0,     0,     0,    89,     0,     0,     0,     0,
+       0,   284,   340,     0,   150,   279,   340,     0,   275,   197,
+     207,   205,   206,   263,   199,   229,   238,   239,   243,   232,
+     233,   234,   235,   236,   237,   230,   240,   241,   242,   231,
+     326,   246,   224,   225,   226,   227,   228,   244,   245,     0,
+       0,     0,   297,     0,   293,     0,     0,   326,   173,   171,
+       0,     0,     0,   248,     0,     0,     0,     0,   138,     0,
+     133,     0,   141,     0,   136,     0,   288,     0,   285,     0,
+       0,     0,   146,   278,     0,     0,   272,     0,     0,   326,
+       0,   326,     0,   200,     0,     0,   296,   292,   212,     0,
+     170,   180,   183,   118,     0,     0,     0,     0,    87,   117,
+     279,   139,   279,   142,     0,     0,   151,   340,   152,   281,
+     282,   280,   277,   340,   274,   208,   203,     0,   209,     0,
+     201,   202,   130,   213,    90,     0,     0,     0,     0,   119,
+       0,   143,   144,   286,   273,     0,     0,     0,   204,   210,
+     110,     0,   111,   113,     0,   112,     0,     0,    88,     0,
+     153,     0,   276,     0,     0,     0,   122,     0,    86,     0,
+     216,   283,   109,   115,   114,     0,   124,   120,     0,   121,
+     123
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    12,    13,    14,    15,    16,    17,    18,    29,    61,
-      91,    92,   170,    62,    63,    99,   100,   136,   161,    19,
-      31,    64,    20,    27,    21,    28,    89,   186,   206,   220,
-     226,   234,   121,   122,   123,   124,   125,   126,   127,   180,
-     181,   221,   259,   336,   516,   443,   128,   129,   130,   485,
-     382,   444,   534,   546,   552,   315,   367,   260,   337,   261,
-     338,   383,   384,   448,   452,   262,   343,   263,   390,   222,
-     223,   224,    66,    67,    68,   233,   376,   377,   436,   264,
-     283,   285,   286,    53,   398,   265,   294,   356,   426,   266,
-     289,   267,   314,   268,   269,   270,   297,   394,   395,   460,
-     498,   340,   341,   271,   272,   273,   325,   326,    83,   163,
-     164,   165,    47,    48,   154,   166,   156,    40,    41,   191,
-     192,    85,   140,    86,    87,    88
+      90,    91,   163,    62,    63,    98,    99,   132,   155,    19,
+      31,    64,    20,    27,    21,    28,    88,   179,   199,   213,
+     219,   227,   117,   118,   119,   120,   121,   122,   123,   173,
+     174,   214,   252,   329,   509,   436,   124,   125,   126,   478,
+     375,   437,   527,   539,   545,   308,   360,   253,   330,   254,
+     331,   376,   377,   441,   445,   255,   336,   256,   383,   215,
+     216,   217,    66,    67,    68,   226,   369,   370,   429,   257,
+     276,   278,   279,    53,   391,   258,   287,   349,   419,   259,
+     282,   260,   307,   261,   262,   263,   290,   387,   388,   453,
+     491,   333,   334,   264,   265,   266,   318,   319,    82,   157,
+     158,   159,    47,    48,   148,   160,   150,    40,    41,   184,
+     185,    84,    85,    86,    87
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -428
+#define YYPACT_NINF -444
 static const yytype_int16 yypact[] =
 {
-      50,  -428,   -73,   -67,   -65,    -4,    -9,  -428,  -428,     8,
-    -428,   154,   184,    50,  -428,  -428,  -428,   183,  -428,  -428,
-    -428,  -428,  -428,    70,   123,   191,    85,   206,   110,   197,
-     217,    63,  -428,  -428,  -428,  -428,   111,   116,  -428,  -428,
-      93,   274,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,   124,  -428,   117,  -428,   227,  -428,  -428,
-    -428,  -428,    67,  -428,   130,  -428,     5,   134,  -428,  -428,
-     235,  -428,   462,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,   167,   -60,  -428,  -428,  -428,   530,
-     120,   131,   140,  -428,  -428,  -428,   462,   143,  -428,   253,
-     144,  -428,  -428,  -428,   462,  -428,   274,  -428,  -428,  -428,
-    -428,  -428,   136,  -428,   141,  -428,   147,   149,   150,   158,
-     159,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   255,   530,
-    -428,   241,   526,   526,  -428,   194,   530,  -428,   447,  -428,
-     274,  -428,   -85,   -40,    -1,   156,   170,   -85,   -85,  -428,
-    -428,  -428,  -428,  -428,  -428,   164,  -428,   165,   160,   192,
-    -428,  -428,   171,  -428,   224,  -428,  -428,  -428,  -428,  -428,
-     174,   175,   178,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-     -46,  -428,   179,   180,   186,   188,   312,   -85,   -85,  -428,
-    -428,   199,   274,  -428,   447,  -428,  -428,  -428,   205,    -1,
-    -428,  -428,  -428,  -428,  -428,  -428,     7,  -428,  -428,  -428,
-     -60,   207,  -428,  -428,  -428,  -428,   317,  -428,  -428,  -428,
-     328,   263,    38,   233,  -428,  -428,   197,  -428,  -428,  -428,
-    -428,   332,   433,  -428,  -428,   236,  -428,    53,   213,   256,
-     462,    84,  -428,   231,    92,  -428,  -428,   367,  -428,  -428,
-     342,   347,   353,  -428,  -428,  -428,   447,  -428,  -428,  -428,
-    -428,  -428,  -428,   239,   362,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,   413,  -428,  -428,   462,   220,   462,
-     220,  -428,   296,   197,   301,   197,   197,  -428,   254,   250,
-    -428,  -428,  -428,  -428,   107,  -428,  -428,   251,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,   290,    26,  -428,   462,     2,   372,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,    53,   462,   374,    53,   462,
-     462,   269,    84,   282,   285,   107,  -428,  -428,  -428,   381,
-    -428,   -39,  -428,   540,   554,  -428,  -428,  -428,  -428,   491,
-     279,   283,   447,  -428,  -428,  -428,   462,  -428,    82,   459,
-     286,  -428,  -428,  -428,  -428,   288,  -428,  -428,    53,  -428,
-     401,    53,  -428,   404,   -38,   315,   351,  -428,  -428,   303,
-     305,   -30,    -6,    14,    10,    84,   327,   306,     2,   396,
-     -29,  -428,  -428,   407,   -10,  -428,  -428,   364,   -37,   -11,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,   462,   316,   325,  -428,
-      53,  -428,    53,   462,  -428,  -428,  -428,   269,   241,   241,
-    -428,   462,   462,    89,   436,  -428,   462,  -428,   461,  -428,
-     462,  -428,   464,  -428,   444,  -428,   367,   462,   568,  -428,
-     157,   462,   582,  -428,   462,   462,  -428,   462,  -428,   345,
-    -428,   462,   344,  -428,  -428,  -428,   354,  -428,  -428,  -428,
-    -428,   473,   462,   462,   596,   134,  -428,  -428,  -428,  -428,
-    -428,    84,   360,  -428,   466,  -428,  -428,   361,  -428,  -428,
-     467,  -428,  -428,  -428,   369,  -428,   370,  -428,  -428,  -428,
-    -428,  -428,    24,   487,    32,    34,  -428,   496,   157,   157,
-    -428,   554,   462,   383,   462,  -428,  -428,  -428,   462,  -428,
-    -428,   462,  -428,   462,   121,  -428,    19,  -428,   375,  -428,
-     499,   500,   501,  -428,    84,  -428,   502,  -428,  -428,  -428,
-    -428,  -428,   197,  -428,  -428,   269,     2,  -428
+     177,  -444,   -74,   -67,   -57,   -65,   -19,  -444,  -444,   -54,
+    -444,    76,    82,   177,  -444,  -444,  -444,   127,  -444,  -444,
+    -444,  -444,  -444,    24,    86,   160,    55,   178,   129,   223,
+     185,   120,  -444,  -444,  -444,  -444,    83,   102,  -444,  -444,
+      91,   455,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,   110,  -444,   107,  -444,   221,  -444,  -444,
+    -444,  -444,   261,  -444,   119,  -444,    11,   139,  -444,  -444,
+     224,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,   113,  -444,  -444,  -444,   523,   105,
+     130,   144,  -444,  -444,  -444,   455,   145,  -444,   256,   153,
+    -444,  -444,   455,  -444,  -444,  -444,  -444,  -444,   147,  -444,
+     155,  -444,   158,   159,   163,   164,   172,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,   266,   523,  -444,    85,   519,   519,
+    -444,   214,   523,  -444,   440,  -444,    59,   -27,   182,   186,
+     187,    59,    59,  -444,  -444,  -444,  -444,  -444,  -444,   180,
+    -444,   181,   191,   203,  -444,  -444,   183,  -444,   236,  -444,
+    -444,  -444,  -444,   192,   193,   194,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,   -47,  -444,   195,   202,   208,   210,   333,
+      59,    59,  -444,  -444,   220,   455,  -444,   440,  -444,  -444,
+    -444,   226,   182,  -444,  -444,  -444,  -444,  -444,  -444,    22,
+    -444,  -444,  -444,   113,   235,  -444,  -444,  -444,  -444,   338,
+    -444,  -444,  -444,   356,   291,    44,   426,  -444,  -444,   223,
+    -444,  -444,  -444,  -444,   361,   146,  -444,  -444,   259,  -444,
+     -72,   218,   234,   455,    61,  -444,   257,    17,  -444,  -444,
+     360,  -444,  -444,   364,   366,   368,  -444,  -444,  -444,   440,
+    -444,  -444,  -444,  -444,  -444,  -444,   248,   370,  -444,  -444,
+    -444,  -444,  -444,  -444,  -444,  -444,  -444,    30,  -444,  -444,
+     455,   255,   455,   255,  -444,   304,   223,   305,   223,   223,
+    -444,   262,   252,  -444,  -444,  -444,  -444,   249,  -444,  -444,
+     258,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,   283,     6,  -444,   455,    -8,   371,
+    -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,   -72,   455,
+     374,   -72,   455,   455,   278,    61,   288,   289,   249,  -444,
+    -444,  -444,   379,  -444,   -43,  -444,   533,   547,  -444,  -444,
+    -444,  -444,   484,   279,   281,   440,  -444,  -444,  -444,   455,
+    -444,   -61,   452,   284,  -444,  -444,  -444,  -444,   282,  -444,
+    -444,   -72,  -444,   393,   -72,  -444,   401,   -50,   315,   347,
+    -444,  -444,   298,   299,   -39,     5,    18,    10,    61,   341,
+     300,    -8,   402,   -31,  -444,  -444,   403,   -28,  -444,  -444,
+     355,   -20,   -14,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,   455,
+     306,   317,  -444,   -72,  -444,   -72,   455,  -444,  -444,  -444,
+     278,    85,    85,  -444,   455,   455,   -34,   427,  -444,   455,
+    -444,   428,  -444,   455,  -444,   429,  -444,   415,  -444,   360,
+     455,   561,  -444,   126,   455,   575,  -444,   455,   455,  -444,
+     455,  -444,   318,  -444,   455,   325,  -444,  -444,  -444,   319,
+    -444,  -444,  -444,  -444,   437,   455,   455,   589,   139,  -444,
+    -444,  -444,  -444,  -444,    61,   327,  -444,   422,  -444,  -444,
+     329,  -444,  -444,   439,  -444,  -444,  -444,   335,  -444,   339,
+    -444,  -444,  -444,  -444,  -444,    13,   458,    15,    19,  -444,
+     466,   126,   126,  -444,   547,   455,   359,   455,  -444,  -444,
+    -444,   455,  -444,  -444,   455,  -444,   455,   132,  -444,   -25,
+    -444,   352,  -444,   475,   477,   478,  -444,    61,  -444,   480,
+    -444,  -444,  -444,  -444,  -444,   223,  -444,  -444,   278,    -8,
+    -444
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -428,  -428,  -428,   497,    87,   -93,  -428,  -428,  -428,   280,
-    -428,  -428,  -104,  -428,   460,  -428,  -428,  -428,   169,  -428,
-    -428,  -428,   105,   176,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-     324,  -428,  -428,  -428,  -428,  -428,   388,  -428,   402,  -428,
-    -428,  -428,  -428,  -428,  -428,  -338,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,   308,   309,  -428,   -66,  -428,  -428,  -427,  -428,  -428,
-    -428,  -428,  -428,  -219,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,    78,  -223,  -428,    22,  -335,  -368,
-    -428,   161,   209,  -428,  -428,  -428,   266,   277,  -132,   322,
-    -428,   371,  -428,   261,  -224,    43,   -41,  -176,  -428,  -428,
-    -428,   389,  -428,   -69,  -428,  -129
+    -444,  -444,  -444,   473,    74,  -165,  -444,  -444,  -444,   263,
+    -444,  -444,     7,  -444,   425,  -444,  -444,  -444,   148,  -444,
+    -444,  -444,    75,   152,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+     307,  -444,  -444,  -444,  -444,  -444,   365,  -444,   373,  -444,
+    -444,  -444,  -444,  -444,  -444,  -329,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,   290,   280,  -444,   -66,  -444,  -444,  -423,  -444,  -444,
+    -444,  -444,  -444,  -216,  -444,  -444,  -444,  -444,  -444,  -444,
+    -444,  -444,  -444,  -444,    54,  -205,  -444,     0,  -327,  -443,
+    -444,   136,   188,  -444,  -444,  -444,   244,   245,  -132,   274,
+    -444,   337,  -444,   222,  -222,    77,   -41,  -168,  -444,  -444,
+    -444,   340,   434,  -444,  -122
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1839,154 +1817,152 @@
 #define YYTABLE_NINF -268
 static const yytype_int16 yytable[] =
 {
-      84,   101,   151,   198,   388,   441,   162,   235,   391,   -42,
-     477,   105,   215,   276,   449,     4,     5,   211,   445,    96,
-     362,   363,   364,   365,   287,   199,   450,   168,   527,   446,
-     169,   103,   386,   433,   465,    97,   530,   141,   532,    22,
-     348,   386,   458,   184,   185,    23,     4,     5,    24,   349,
-     173,   174,   175,   176,     1,   134,     2,     3,     4,     5,
-     467,   462,   162,   139,   331,    84,   333,   334,   171,     2,
-       3,   167,   172,     2,     3,     6,   106,     7,   442,   -83,
-     200,     8,    98,   207,   208,   434,   466,   387,     6,   357,
-     462,   451,     6,   447,    55,   528,   440,   459,    55,    84,
-     274,   369,   366,   531,   372,   533,   480,   177,    25,   282,
-     -84,   178,   468,   219,    26,   288,   463,   216,    60,   518,
-      30,   519,   179,   495,   162,   217,   218,   501,   557,   219,
-      73,    74,    75,    76,   253,    77,    65,   360,   350,    79,
-      80,   351,   352,    82,   429,   547,     9,   431,   216,    60,
-     543,    84,    10,   353,   354,   355,   217,   218,    32,     9,
-      11,   152,   342,     9,    56,   482,   -46,    65,    56,   153,
-     -47,   483,   484,    57,   496,   155,   157,    57,   497,   346,
-     358,    58,    59,   544,    33,    58,    59,    35,    73,    74,
-      75,    76,    36,    77,    37,    38,   545,   278,   280,   281,
-     378,    82,   311,   342,   -23,   -21,   473,  -267,   474,    39,
-      42,    73,    74,    75,    76,   556,    77,    71,    43,   339,
-     162,    54,    44,    69,    82,    45,    46,   277,    70,   -23,
-     317,    93,    90,    95,   231,    56,   316,  -162,   327,   102,
-     104,   469,   131,  -162,   132,  -162,  -162,  -162,    49,    50,
-      51,    52,   133,   453,   342,   135,  -162,   137,   476,   149,
-     138,   142,  -162,  -162,  -162,   158,   143,  -162,   182,   189,
-     279,   359,   144,   361,   145,   146,   318,   319,   320,   321,
-     322,   323,   183,   147,   148,   370,   187,   188,   373,   374,
-     504,   324,   506,   190,   193,   194,  -162,  -162,  -162,  -162,
-     195,   196,   392,   392,   197,   201,   202,  -162,   399,   478,
-     479,  -162,   203,  -162,   204,   401,   205,    73,    74,    75,
-      76,   227,    77,   209,   288,    78,    79,    80,    81,   213,
-      82,   225,   228,   555,    56,   229,   236,  -162,  -162,  -162,
-    -162,  -162,  -162,   284,   275,  -162,   290,    72,  -162,  -162,
-    -162,   291,   515,    78,    79,    80,    81,   292,  -162,   520,
-      73,    74,    75,    76,   295,    77,   296,   330,    78,    79,
-      80,    81,   332,    82,   311,   335,   344,   375,    73,    74,
-      75,    76,   368,    77,   371,   470,    78,    79,    80,    81,
-     379,    82,   475,   380,    73,    74,    75,    76,    43,    77,
-     392,   481,   345,   385,  -265,   487,    46,    82,  -266,   489,
-     427,   430,   553,   428,   432,   435,   493,   392,   457,   517,
-     499,   392,   437,   502,   503,   438,   505,   439,   456,   461,
-     508,    73,    74,    75,    76,   464,    77,   472,   471,   454,
-     486,   512,   513,   237,    82,   238,   239,   240,   298,   299,
-     300,   301,   302,   303,   304,   305,   241,   306,   307,   308,
-     309,   310,   242,   243,   244,   488,   491,   245,   490,   507,
-     509,    73,    74,    75,    76,   253,    77,   511,   510,   254,
-     392,   537,   255,   539,    82,   521,   523,   540,   522,   524,
-     541,   529,   542,   525,   526,   538,   246,   247,   248,   249,
-     535,   548,   402,   549,   550,   551,   554,   250,   403,   404,
-      34,   251,   258,   252,   405,   406,   407,   408,   409,   410,
-     411,   400,    94,   214,   159,   397,   412,   413,   414,   415,
-     230,   150,   232,   311,   492,   312,   313,    73,    74,    75,
-      76,   253,    77,   536,   381,   254,   328,   455,   255,   256,
-      82,    73,    74,    75,    76,   152,    77,   329,   257,    78,
-      79,    80,    81,   153,    82,   212,    73,    74,    75,    76,
-     160,    77,   347,     0,    78,    79,    80,    81,   293,    82,
-     416,   210,   417,     0,     0,     0,     0,   418,   419,   420,
-     421,   422,   423,   424,   425,    73,    74,    75,    76,   396,
-      77,     0,     0,    78,    79,    80,    81,     0,    82,     0,
-       0,     0,     0,     0,    26,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,     0,   118,   119,   120,
-      73,    74,    75,    76,   152,    77,     0,     0,    78,    79,
-      80,    81,   153,    82,    73,    74,    75,    76,     0,    77,
-       0,     0,   389,    79,    80,    81,     0,    82,    73,    74,
-      75,    76,     0,    77,     0,     0,   393,    79,    80,    81,
-       0,    82,    73,    74,    75,    76,     0,    77,     0,     0,
-     494,    79,    80,    81,     0,    82,    73,    74,    75,    76,
-       0,    77,     0,     0,   500,    79,    80,    81,     0,    82,
-      73,    74,    75,    76,     0,    77,     0,     0,   514,     0,
-       0,     0,     0,    82
+      83,   100,   156,   228,   191,   145,   381,   470,   269,   384,
+     355,   356,   357,   358,   442,   -42,   434,   520,   204,   523,
+     341,   426,   438,   525,   192,    95,   443,   208,   379,   342,
+       4,     5,   379,   439,   212,   280,   146,   511,    22,   512,
+     451,    96,   475,   455,   147,    23,   455,    25,   476,   477,
+     212,   458,     4,     5,   130,   156,    24,   460,    30,   304,
+     324,    83,   326,   327,  -267,   291,   292,   293,   294,   295,
+     296,   297,   298,   427,   299,   300,   301,   302,   303,   193,
+      32,   164,    33,   380,   521,   165,   524,   433,    97,   435,
+     526,   444,   359,   267,   -83,   452,   362,   440,   456,   365,
+     350,   540,   275,   459,    26,    60,    65,   473,   281,   461,
+      72,    73,    74,    75,   246,    76,   -84,   156,   343,    78,
+      79,   344,   345,    81,   488,   550,     2,     3,   494,   -23,
+     -21,    35,   209,   346,   347,   348,    60,    65,   353,   422,
+     210,   211,   424,   489,    83,     6,    36,   490,   177,   178,
+     304,    55,   305,   306,   209,   335,   230,    37,   231,   232,
+     233,   536,   210,   211,    38,    72,    73,    74,    75,   234,
+      76,   161,   339,   351,   162,   235,   236,   237,    81,    39,
+     238,     1,    42,     2,     3,     4,     5,   200,   201,    54,
+     271,   273,   274,   371,   537,    69,   335,    77,    78,    79,
+      80,   466,     6,   467,     7,   149,   151,   538,     8,   239,
+     240,   241,   242,   156,    70,    71,     9,   549,    89,   -23,
+     243,    56,    94,   -46,   244,    92,   245,   127,   101,   309,
+      57,   320,   270,   166,   167,   168,   169,    43,    58,    59,
+      56,    44,   462,   128,    45,    46,   446,   335,   272,   102,
+      72,    73,    74,    75,   246,    76,   129,   131,   247,   469,
+     133,   248,   249,    81,   352,   310,   354,     2,     3,   134,
+     143,   250,   136,     9,    49,    50,    51,    52,   363,    10,
+     137,   366,   367,   138,   139,   152,     6,    11,   140,   141,
+     170,   497,    55,   499,   171,   385,   385,   142,   175,   176,
+     182,   392,   180,   181,   183,   172,   186,   187,   394,   471,
+     472,   311,   312,   313,   314,   315,   316,   281,   188,   189,
+     190,   194,    72,    73,    74,    75,   317,    76,   195,   548,
+      77,    78,    79,    80,   196,    81,   197,   198,    72,    73,
+      74,    75,   220,    76,   202,   508,    77,    78,    79,    80,
+     206,    81,   513,    72,    73,    74,    75,     9,    76,   218,
+     221,   332,    56,   222,   -47,   229,    81,   268,   283,   277,
+     284,    57,   285,   288,   289,   323,   325,   328,   463,    58,
+      59,   361,   304,   337,   364,   468,   368,    72,    73,    74,
+      75,    43,    76,   385,   474,   338,   372,   373,   480,    46,
+      81,   378,   482,   423,  -265,   546,  -266,   421,   420,   486,
+     385,   425,   510,   492,   385,   428,   495,   496,   430,   498,
+     431,   432,   449,   501,   450,   454,   457,   224,   464,   465,
+    -162,   479,   481,   483,   505,   506,  -162,   484,  -162,  -162,
+    -162,   504,   500,   503,   515,    72,    73,    74,    75,  -162,
+      76,   502,   514,   447,   516,  -162,  -162,  -162,    81,   518,
+    -162,   517,   522,   519,    72,    73,    74,    75,   246,    76,
+     528,   531,   247,   385,   530,   248,   532,    81,   541,   542,
+     533,   543,   544,   534,   547,   535,    34,    93,   251,  -162,
+    -162,  -162,  -162,   393,   390,   395,   225,   153,   144,   207,
+    -162,   396,   397,   485,  -162,   223,  -162,   398,   399,   400,
+     401,   402,   403,   404,   529,   448,   374,   321,   322,   405,
+     406,   407,   408,   286,   205,   203,   340,    56,     0,     0,
+    -162,  -162,  -162,  -162,  -162,  -162,   135,     0,  -162,     0,
+       0,  -162,  -162,  -162,    72,    73,    74,    75,   146,    76,
+       0,  -162,    77,    78,    79,    80,   147,    81,     0,    72,
+      73,    74,    75,   154,    76,     0,     0,    77,    78,    79,
+      80,     0,    81,   409,     0,   410,     0,     0,     0,     0,
+     411,   412,   413,   414,   415,   416,   417,   418,    72,    73,
+      74,    75,   389,    76,     0,     0,    77,    78,    79,    80,
+       0,    81,     0,     0,     0,     0,     0,    26,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,   112,   113,     0,
+     114,   115,   116,    72,    73,    74,    75,   146,    76,     0,
+       0,    77,    78,    79,    80,   147,    81,    72,    73,    74,
+      75,     0,    76,     0,     0,   382,    78,    79,    80,     0,
+      81,    72,    73,    74,    75,     0,    76,     0,     0,   386,
+      78,    79,    80,     0,    81,    72,    73,    74,    75,     0,
+      76,     0,     0,   487,    78,    79,    80,     0,    81,    72,
+      73,    74,    75,     0,    76,     0,     0,   493,    78,    79,
+      80,     0,    81,    72,    73,    74,    75,     0,    76,     0,
+       0,   507,     0,     0,     0,     0,    81
 };
 
 static const yytype_int16 yycheck[] =
 {
-      41,    67,   131,   179,   342,    11,   138,   226,   343,     4,
-     437,    71,     5,   237,     4,     8,     9,   193,     4,    14,
-      18,    19,    20,    21,   247,    71,    16,   112,     4,    15,
-     115,    72,    71,    71,    71,    30,     4,   106,     4,   112,
-      14,    71,    71,   147,   148,   112,     8,     9,   113,    23,
-      51,    52,    53,    54,     4,    96,     6,     7,     8,     9,
-      71,    71,   194,   104,   283,   106,   285,   286,   108,     6,
-       7,   140,   112,     6,     7,    25,   136,    27,    84,    72,
-     126,    31,    77,   187,   188,   123,   123,   126,    25,   312,
-      71,    81,    25,    79,    31,    71,   126,   126,    31,   140,
-     232,   325,   100,    71,   328,    71,   441,   108,   112,   241,
-      72,   112,   123,   206,   123,   247,   126,   110,    31,   487,
-     112,   489,   123,   458,   256,   118,   119,   462,   555,   222,
-     104,   105,   106,   107,   108,   109,    31,   313,   112,   113,
-     114,   115,   116,   117,   368,   126,    96,   371,   110,    62,
-      29,   192,   102,   127,   128,   129,   118,   119,     4,    96,
-     110,   108,   294,    96,   101,    76,   103,    62,   101,   116,
-     103,    82,    83,   110,    17,   132,   133,   110,    21,   311,
-     312,   118,   119,    62,     0,   118,   119,     4,   104,   105,
-     106,   107,   122,   109,    71,     4,    75,   238,   239,   240,
-     332,   117,   120,   335,   112,   113,   430,   125,   432,   124,
-       4,   104,   105,   106,   107,   553,   109,   124,   108,   112,
-     352,     4,   112,   112,   117,   115,   116,    14,   112,   112,
-      10,     4,   108,   103,     1,   101,   277,     4,   279,     4,
-      73,   417,   122,    10,   113,    12,    13,    14,    51,    52,
-      53,    54,   112,   385,   386,   112,    23,     4,   434,     4,
-     116,   125,    29,    30,    31,    71,   125,    34,   112,   109,
-      14,   312,   125,   314,   125,   125,    56,    57,    58,    59,
-      60,    61,   112,   125,   125,   326,   122,   122,   329,   330,
-     466,    71,   468,   101,   123,    71,    63,    64,    65,    66,
-     126,   126,   343,   344,   126,   126,   126,    74,   349,   438,
-     439,    78,   126,    80,   126,   356,     4,   104,   105,   106,
-     107,     4,   109,   124,   456,   112,   113,   114,   115,   124,
-     117,   124,     4,   552,   101,    72,     4,   104,   105,   106,
-     107,   108,   109,   112,   108,   112,     4,    73,   115,   116,
-     117,     4,   484,   112,   113,   114,   115,     4,   125,   491,
-     104,   105,   106,   107,   125,   109,     4,    71,   112,   113,
-     114,   115,    71,   117,   120,   125,   125,   108,   104,   105,
-     106,   107,    10,   109,    10,   426,   112,   113,   114,   115,
-     108,   117,   433,   108,   104,   105,   106,   107,   108,   109,
-     441,   442,   112,    22,   125,   446,   116,   117,   125,   450,
-     124,    10,   544,   125,    10,   100,   457,   458,    22,   485,
-     461,   462,    71,   464,   465,   122,   467,   122,   122,    22,
-     471,   104,   105,   106,   107,    71,   109,   112,   122,   112,
-       4,   482,   483,    10,   117,    12,    13,    14,    35,    36,
-      37,    38,    39,    40,    41,    42,    23,    44,    45,    46,
-      47,    48,    29,    30,    31,     4,    22,    34,     4,   124,
-     126,   104,   105,   106,   107,   108,   109,     4,   124,   112,
-     521,   522,   115,   524,   117,   125,   125,   528,    22,    22,
-     531,     4,   533,   124,   124,   112,    63,    64,    65,    66,
-       4,   126,    43,     4,     4,     4,     4,    74,    49,    50,
-      13,    78,   232,    80,    55,    56,    57,    58,    59,    60,
-      61,   352,    62,   199,   136,   349,    67,    68,    69,    70,
-     222,   129,   223,   120,   456,   122,   123,   104,   105,   106,
-     107,   108,   109,   521,   335,   112,   280,   386,   115,   116,
-     117,   104,   105,   106,   107,   108,   109,   280,   125,   112,
-     113,   114,   115,   116,   117,   194,   104,   105,   106,   107,
-     123,   109,   311,    -1,   112,   113,   114,   115,   256,   117,
-     121,   192,   123,    -1,    -1,    -1,    -1,   128,   129,   130,
-     131,   132,   133,   134,   135,   104,   105,   106,   107,   108,
-     109,    -1,    -1,   112,   113,   114,   115,    -1,   117,    -1,
-      -1,    -1,    -1,    -1,   123,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    95,    -1,    97,    98,    99,
-     104,   105,   106,   107,   108,   109,    -1,    -1,   112,   113,
-     114,   115,   116,   117,   104,   105,   106,   107,    -1,   109,
-      -1,    -1,   112,   113,   114,   115,    -1,   117,   104,   105,
-     106,   107,    -1,   109,    -1,    -1,   112,   113,   114,   115,
-      -1,   117,   104,   105,   106,   107,    -1,   109,    -1,    -1,
-     112,   113,   114,   115,    -1,   117,   104,   105,   106,   107,
-      -1,   109,    -1,    -1,   112,   113,   114,   115,    -1,   117,
-     104,   105,   106,   107,    -1,   109,    -1,    -1,   112,    -1,
-      -1,    -1,    -1,   117
+      41,    67,   134,   219,   172,   127,   335,   430,   230,   336,
+      18,    19,    20,    21,     4,     4,    11,     4,   186,     4,
+      14,    71,     4,     4,    71,    14,    16,     5,    71,    23,
+       8,     9,    71,    15,   199,   240,   108,   480,   112,   482,
+      71,    30,    76,    71,   116,   112,    71,   112,    82,    83,
+     215,    71,     8,     9,    95,   187,   113,    71,   112,   120,
+     276,   102,   278,   279,   125,    35,    36,    37,    38,    39,
+      40,    41,    42,   123,    44,    45,    46,    47,    48,   126,
+       4,   108,     0,   126,    71,   112,    71,   126,    77,    84,
+      71,    81,   100,   225,    72,   126,   318,    79,   126,   321,
+     305,   126,   234,   123,   123,    31,    31,   434,   240,   123,
+     104,   105,   106,   107,   108,   109,    72,   249,   112,   113,
+     114,   115,   116,   117,   451,   548,     6,     7,   455,   112,
+     113,     4,   110,   127,   128,   129,    62,    62,   306,   361,
+     118,   119,   364,    17,   185,    25,   122,    21,   141,   142,
+     120,    31,   122,   123,   110,   287,    10,    71,    12,    13,
+      14,    29,   118,   119,     4,   104,   105,   106,   107,    23,
+     109,   112,   304,   305,   115,    29,    30,    31,   117,   124,
+      34,     4,     4,     6,     7,     8,     9,   180,   181,     4,
+     231,   232,   233,   325,    62,   112,   328,   112,   113,   114,
+     115,   423,    25,   425,    27,   128,   129,    75,    31,    63,
+      64,    65,    66,   345,   112,   124,    96,   546,   108,   112,
+      74,   101,   103,   103,    78,     4,    80,   122,     4,   270,
+     110,   272,    14,    51,    52,    53,    54,   108,   118,   119,
+     101,   112,   410,   113,   115,   116,   378,   379,    14,   136,
+     104,   105,   106,   107,   108,   109,   112,   112,   112,   427,
+       4,   115,   116,   117,   305,    10,   307,     6,     7,   116,
+       4,   125,   125,    96,    51,    52,    53,    54,   319,   102,
+     125,   322,   323,   125,   125,    71,    25,   110,   125,   125,
+     108,   459,    31,   461,   112,   336,   337,   125,   112,   112,
+     109,   342,   122,   122,   101,   123,   123,    71,   349,   431,
+     432,    56,    57,    58,    59,    60,    61,   449,   126,   126,
+     126,   126,   104,   105,   106,   107,    71,   109,   126,   545,
+     112,   113,   114,   115,   126,   117,   126,     4,   104,   105,
+     106,   107,     4,   109,   124,   477,   112,   113,   114,   115,
+     124,   117,   484,   104,   105,   106,   107,    96,   109,   124,
+       4,   112,   101,    72,   103,     4,   117,   108,     4,   112,
+       4,   110,     4,   125,     4,    71,    71,   125,   419,   118,
+     119,    10,   120,   125,    10,   426,   108,   104,   105,   106,
+     107,   108,   109,   434,   435,   112,   108,   108,   439,   116,
+     117,    22,   443,    10,   125,   537,   125,   125,   124,   450,
+     451,    10,   478,   454,   455,   100,   457,   458,    71,   460,
+     122,   122,   122,   464,    22,    22,    71,     1,   122,   112,
+       4,     4,     4,     4,   475,   476,    10,    22,    12,    13,
+      14,     4,   124,   124,    22,   104,   105,   106,   107,    23,
+     109,   126,   125,   112,   125,    29,    30,    31,   117,   124,
+      34,    22,     4,   124,   104,   105,   106,   107,   108,   109,
+       4,   112,   112,   514,   515,   115,   517,   117,   126,     4,
+     521,     4,     4,   524,     4,   526,    13,    62,   225,    63,
+      64,    65,    66,   345,   342,    43,   216,   132,   125,   192,
+      74,    49,    50,   449,    78,   215,    80,    55,    56,    57,
+      58,    59,    60,    61,   514,   379,   328,   273,   273,    67,
+      68,    69,    70,   249,   187,   185,   304,   101,    -1,    -1,
+     104,   105,   106,   107,   108,   109,   102,    -1,   112,    -1,
+      -1,   115,   116,   117,   104,   105,   106,   107,   108,   109,
+      -1,   125,   112,   113,   114,   115,   116,   117,    -1,   104,
+     105,   106,   107,   123,   109,    -1,    -1,   112,   113,   114,
+     115,    -1,   117,   121,    -1,   123,    -1,    -1,    -1,    -1,
+     128,   129,   130,   131,   132,   133,   134,   135,   104,   105,
+     106,   107,   108,   109,    -1,    -1,   112,   113,   114,   115,
+      -1,   117,    -1,    -1,    -1,    -1,    -1,   123,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    -1,
+      97,    98,    99,   104,   105,   106,   107,   108,   109,    -1,
+      -1,   112,   113,   114,   115,   116,   117,   104,   105,   106,
+     107,    -1,   109,    -1,    -1,   112,   113,   114,   115,    -1,
+     117,   104,   105,   106,   107,    -1,   109,    -1,    -1,   112,
+     113,   114,   115,    -1,   117,   104,   105,   106,   107,    -1,
+     109,    -1,    -1,   112,   113,   114,   115,    -1,   117,   104,
+     105,   106,   107,    -1,   109,    -1,    -1,   112,   113,   114,
+     115,    -1,   117,   104,   105,   106,   107,    -1,   109,    -1,
+      -1,   112,    -1,    -1,    -1,    -1,   117
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2000,55 +1976,55 @@
      254,   255,     4,   108,   112,   115,   116,   249,   250,    51,
       52,    53,    54,   220,     4,    31,   101,   110,   118,   119,
      141,   146,   150,   151,   158,   159,   209,   210,   211,   112,
-     112,   124,    73,   104,   105,   106,   107,   109,   112,   113,
-     114,   115,   117,   245,   253,   258,   260,   261,   262,   163,
-     108,   147,   148,     4,   151,   103,    14,    30,    77,   152,
-     153,   211,     4,   253,    73,    71,   136,    85,    86,    87,
-      88,    89,    90,    91,    92,    93,    94,    95,    97,    98,
-      99,   169,   170,   171,   172,   173,   174,   175,   183,   184,
-     185,   122,   113,   112,   253,   112,   154,     4,   116,   253,
-     259,   260,   125,   125,   125,   125,   125,   125,   125,     4,
-     185,   262,   108,   116,   251,   252,   253,   252,    71,   183,
-     123,   155,   245,   246,   247,   248,   252,   260,   112,   115,
-     149,   108,   112,    51,    52,    53,    54,   108,   112,   123,
-     176,   177,   112,   112,   149,   149,   164,   122,   122,   109,
-     101,   256,   257,   123,    71,   126,   126,   126,   254,    71,
-     126,   126,   126,   126,   126,     4,   165,   149,   149,   124,
-     258,   254,   248,   124,   177,     5,   110,   118,   119,   142,
-     166,   178,   206,   207,   208,   124,   167,     4,     4,    72,
-     208,     1,   209,   212,   168,   220,     4,    10,    12,    13,
-      14,    23,    29,    30,    31,    34,    63,    64,    65,    66,
-      74,    78,    80,   108,   112,   115,   116,   125,   146,   179,
-     194,   196,   202,   204,   216,   222,   226,   228,   230,   231,
-     232,   240,   241,   242,   245,   108,   251,    14,   253,    14,
-     253,   253,   245,   217,   112,   218,   219,   232,   245,   227,
-       4,     4,     4,   246,   223,   125,     4,   233,    35,    36,
-      37,    38,    39,    40,    41,    42,    44,    45,    46,    47,
-      48,   120,   122,   123,   229,   192,   253,    10,    56,    57,
-      58,    59,    60,    61,    71,   243,   244,   253,   243,   244,
-      71,   220,    71,   220,   220,   125,   180,   195,   197,   112,
-     238,   239,   245,   203,   125,   112,   245,   250,    14,    23,
-     112,   115,   116,   127,   128,   129,   224,   232,   245,   253,
-     254,   253,    18,    19,    20,    21,   100,   193,    10,   251,
-     253,    10,   251,   253,   253,   108,   213,   214,   245,   108,
-     108,   239,   187,   198,   199,    22,    71,   126,   192,   112,
-     205,   235,   253,   112,   234,   235,   108,   160,   221,   253,
-     155,   253,    43,    49,    50,    55,    56,    57,    58,    59,
-      60,    61,    67,    68,    69,    70,   121,   123,   128,   129,
-     130,   131,   132,   133,   134,   135,   225,   124,   125,   251,
-      10,   251,    10,    71,   123,   100,   215,    71,   122,   122,
-     126,    11,    84,   182,   188,     4,    15,    79,   200,     4,
-      16,    81,   201,   245,   112,   238,   122,    22,    71,   126,
-     236,    22,    71,   126,    71,    71,   123,    71,   123,   254,
-     253,   122,   112,   251,   251,   253,   254,   214,   262,   262,
-     235,   253,    76,    82,    83,   186,     4,   253,     4,   253,
-       4,    22,   231,   253,   112,   235,    17,    21,   237,   253,
-     112,   235,   253,   253,   254,   253,   254,   124,   253,   126,
-     124,     4,   253,   253,   112,   245,   181,   211,   236,   236,
-     245,   125,    22,   125,    22,   124,   124,     4,    71,     4,
-       4,    71,     4,    71,   189,     4,   234,   253,   112,   253,
-     253,   253,   253,    29,    62,    75,   190,   126,   126,     4,
-       4,     4,   191,   245,     4,   220,   192,   214
+     112,   124,   104,   105,   106,   107,   109,   112,   113,   114,
+     115,   117,   245,   253,   258,   259,   260,   261,   163,   108,
+     147,   148,     4,   151,   103,    14,    30,    77,   152,   153,
+     211,     4,   136,    85,    86,    87,    88,    89,    90,    91,
+      92,    93,    94,    95,    97,    98,    99,   169,   170,   171,
+     172,   173,   174,   175,   183,   184,   185,   122,   113,   112,
+     253,   112,   154,     4,   116,   259,   125,   125,   125,   125,
+     125,   125,   125,     4,   185,   261,   108,   116,   251,   252,
+     253,   252,    71,   183,   123,   155,   245,   246,   247,   248,
+     252,   112,   115,   149,   108,   112,    51,    52,    53,    54,
+     108,   112,   123,   176,   177,   112,   112,   149,   149,   164,
+     122,   122,   109,   101,   256,   257,   123,    71,   126,   126,
+     126,   254,    71,   126,   126,   126,   126,   126,     4,   165,
+     149,   149,   124,   258,   254,   248,   124,   177,     5,   110,
+     118,   119,   142,   166,   178,   206,   207,   208,   124,   167,
+       4,     4,    72,   208,     1,   209,   212,   168,   220,     4,
+      10,    12,    13,    14,    23,    29,    30,    31,    34,    63,
+      64,    65,    66,    74,    78,    80,   108,   112,   115,   116,
+     125,   146,   179,   194,   196,   202,   204,   216,   222,   226,
+     228,   230,   231,   232,   240,   241,   242,   245,   108,   251,
+      14,   253,    14,   253,   253,   245,   217,   112,   218,   219,
+     232,   245,   227,     4,     4,     4,   246,   223,   125,     4,
+     233,    35,    36,    37,    38,    39,    40,    41,    42,    44,
+      45,    46,    47,    48,   120,   122,   123,   229,   192,   253,
+      10,    56,    57,    58,    59,    60,    61,    71,   243,   244,
+     253,   243,   244,    71,   220,    71,   220,   220,   125,   180,
+     195,   197,   112,   238,   239,   245,   203,   125,   112,   245,
+     250,    14,    23,   112,   115,   116,   127,   128,   129,   224,
+     232,   245,   253,   254,   253,    18,    19,    20,    21,   100,
+     193,    10,   251,   253,    10,   251,   253,   253,   108,   213,
+     214,   245,   108,   108,   239,   187,   198,   199,    22,    71,
+     126,   192,   112,   205,   235,   253,   112,   234,   235,   108,
+     160,   221,   253,   155,   253,    43,    49,    50,    55,    56,
+      57,    58,    59,    60,    61,    67,    68,    69,    70,   121,
+     123,   128,   129,   130,   131,   132,   133,   134,   135,   225,
+     124,   125,   251,    10,   251,    10,    71,   123,   100,   215,
+      71,   122,   122,   126,    11,    84,   182,   188,     4,    15,
+      79,   200,     4,    16,    81,   201,   245,   112,   238,   122,
+      22,    71,   126,   236,    22,    71,   126,    71,    71,   123,
+      71,   123,   254,   253,   122,   112,   251,   251,   253,   254,
+     214,   261,   261,   235,   253,    76,    82,    83,   186,     4,
+     253,     4,   253,     4,    22,   231,   253,   112,   235,    17,
+      21,   237,   253,   112,   235,   253,   253,   254,   253,   254,
+     124,   253,   126,   124,     4,   253,   253,   112,   245,   181,
+     211,   236,   236,   245,   125,    22,   125,    22,   124,   124,
+       4,    71,     4,     4,    71,     4,    71,   189,     4,   234,
+     253,   112,   253,   253,   253,   253,    29,    62,    75,   190,
+     126,   126,     4,     4,     4,   191,   245,     4,   220,   192,
+     214
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2876,89 +2852,89 @@
   switch (yyn)
     {
         case 2:
-#line 781 "compilers/imcc/imcc.y"
-    { if (yynerrs) YYABORT; (yyval.i) = 0; }
+#line 772 "compilers/imcc/imcc.y"
+    { if (yynerrs) YYABORT; (yyval.i) = 0; ;}
     break;
 
   case 5:
-#line 790 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 781 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 6:
-#line 791 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 782 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 7:
-#line 793 "compilers/imcc/imcc.y"
+#line 784 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = 0;
-         }
+         ;}
     break;
 
   case 8:
-#line 799 "compilers/imcc/imcc.y"
+#line 790 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = 0;
-         }
+         ;}
     break;
 
   case 9:
-#line 804 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 795 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 10:
-#line 805 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 796 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 11:
-#line 806 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 797 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 12:
-#line 807 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 798 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 13:
-#line 811 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 802 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 14:
-#line 813 "compilers/imcc/imcc.y"
+#line 804 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
            mem_sys_free((yyvsp[(2) - (3)].s));
-         }
+         ;}
     break;
 
   case 15:
-#line 822 "compilers/imcc/imcc.y"
+#line 813 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            set_filename(interp, (yyvsp[(4) - (5)].s));
-         }
+         ;}
     break;
 
   case 16:
-#line 827 "compilers/imcc/imcc.y"
+#line 818 "compilers/imcc/imcc.y"
     {
            set_filename(interp, (yyvsp[(2) - (3)].s));
-         }
+         ;}
     break;
 
   case 17:
-#line 835 "compilers/imcc/imcc.y"
+#line 826 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = string_unescape_cstring(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             CONTEXT(interp)->current_HLL =
@@ -2966,11 +2942,11 @@
 
             IMCC_INFO(interp)->cur_namespace = NULL;
             (yyval.t) = 0;
-         }
+         ;}
     break;
 
   case 18:
-#line 844 "compilers/imcc/imcc.y"
+#line 835 "compilers/imcc/imcc.y"
     {
             Parrot_Context *ctx           = CONTEXT(interp);
             STRING * const  built_in_name =
@@ -2984,148 +2960,148 @@
             Parrot_register_HLL_type(interp, ctx->current_HLL,
                 built_in_type, language_type);
             (yyval.t) = 0;
-         }
+         ;}
     break;
 
   case 19:
-#line 861 "compilers/imcc/imcc.y"
-    { is_def = 1; }
+#line 852 "compilers/imcc/imcc.y"
+    { is_def = 1; ;}
     break;
 
   case 20:
-#line 862 "compilers/imcc/imcc.y"
+#line 853 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
              mem_sys_free((yyvsp[(4) - (6)].s));
              is_def = 0;
-         }
+         ;}
     break;
 
   case 21:
-#line 870 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 861 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 22:
-#line 871 "compilers/imcc/imcc.y"
+#line 862 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            is_def = 0;
-         }
+         ;}
     break;
 
   case 23:
-#line 876 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 867 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 24:
-#line 877 "compilers/imcc/imcc.y"
+#line 868 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
            is_def = 0;
-         }
+         ;}
     break;
 
   case 29:
-#line 893 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  }
+#line 884 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  ;}
     break;
 
   case 30:
-#line 894 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  }
+#line 885 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  ;}
     break;
 
   case 31:
-#line 895 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  }
+#line 886 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  ;}
     break;
 
   case 32:
-#line 896 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;  }
+#line 887 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;  ;}
     break;
 
   case 33:
-#line 897 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 888 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 36:
-#line 902 "compilers/imcc/imcc.y"
-    { clear_state(interp); }
+#line 893 "compilers/imcc/imcc.y"
+    { clear_state(interp); ;}
     break;
 
   case 37:
-#line 904 "compilers/imcc/imcc.y"
+#line 895 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
                     IMCC_INFO(interp)->nargs, IMCC_INFO(interp) -> keyvec, 1);
            /* XXX: can't seem to mem_sys_free($1) here */
-         }
+         ;}
     break;
 
   case 38:
-#line 911 "compilers/imcc/imcc.y"
+#line 902 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
-         }
+         ;}
     break;
 
   case 39:
-#line 916 "compilers/imcc/imcc.y"
+#line 907 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
                     mk_sub_label(interp, (yyvsp[(4) - (4)].s)));
            IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(3) - (4)].t);
-         }
+         ;}
     break;
 
   case 40:
-#line 923 "compilers/imcc/imcc.y"
+#line 914 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
-         }
+         ;}
     break;
 
   case 41:
-#line 927 "compilers/imcc/imcc.y"
+#line 918 "compilers/imcc/imcc.y"
     {
            SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
            set_lexical(interp, r, (yyvsp[(2) - (4)].s));
            (yyval.i) = 0;
            mem_sys_free((yyvsp[(2) - (4)].s));
            mem_sys_free((yyvsp[(4) - (4)].s));
-         }
+         ;}
     break;
 
   case 42:
-#line 934 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;}
+#line 925 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;;}
     break;
 
   case 44:
-#line 942 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
+#line 933 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); ;}
     break;
 
   case 45:
-#line 945 "compilers/imcc/imcc.y"
+#line 936 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
                          emit_flush(interp);
            */
            (yyval.i) = 0;
-         }
+         ;}
     break;
 
   case 48:
-#line 961 "compilers/imcc/imcc.y"
+#line 952 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3136,67 +3112,67 @@
            IMCC_INFO(interp)->cur_namespace = (yyvsp[(2) - (3)].sr);
            if (re_open)
                IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
-         }
+         ;}
     break;
 
   case 49:
-#line 976 "compilers/imcc/imcc.y"
+#line 967 "compilers/imcc/imcc.y"
     {
             if (IMCC_INFO(interp)->in_slice)
                 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Slice not allowed in namespace.");
 
             (yyval.sr) = (yyvsp[(2) - (3)].sr);
-        }
+        ;}
     break;
 
   case 50:
-#line 983 "compilers/imcc/imcc.y"
-    { (yyval.sr) = NULL; }
+#line 974 "compilers/imcc/imcc.y"
+    { (yyval.sr) = NULL; ;}
     break;
 
   case 51:
-#line 988 "compilers/imcc/imcc.y"
+#line 979 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
-         }
+         ;}
     break;
 
   case 52:
-#line 992 "compilers/imcc/imcc.y"
+#line 983 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 53:
-#line 996 "compilers/imcc/imcc.y"
+#line 987 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
           if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
             IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup(
             IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->name);
           }
-        }
+        ;}
     break;
 
   case 54:
-#line 1004 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
+#line 995 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
     break;
 
   case 55:
-#line 1008 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 999 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 56:
-#line 1009 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1000 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 57:
-#line 1011 "compilers/imcc/imcc.y"
+#line 1002 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3205,21 +3181,21 @@
            }
            else
                add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         }
+         ;}
     break;
 
   case 58:
-#line 1023 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 1014 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 59:
-#line 1023 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }
+#line 1014 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; ;}
     break;
 
   case 60:
-#line 1028 "compilers/imcc/imcc.y"
+#line 1019 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
                (yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
@@ -3227,157 +3203,157 @@
                (yyval.sr) = mk_ident(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
            (yyval.sr)->type |= (yyvsp[(3) - (3)].t);
            mem_sys_free((yyvsp[(2) - (3)].s));
-          }
+          ;}
     break;
 
   case 61:
-#line 1041 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1032 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 62:
-#line 1046 "compilers/imcc/imcc.y"
+#line 1037 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
            mem_sys_free((yyvsp[(3) - (4)].s));
-         }
+         ;}
     break;
 
   case 63:
-#line 1052 "compilers/imcc/imcc.y"
+#line 1043 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
            mem_sys_free((yyvsp[(3) - (4)].s));
-         }
+         ;}
     break;
 
   case 64:
-#line 1061 "compilers/imcc/imcc.y"
+#line 1052 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
            IMCC_INFO(interp)->cur_unit->is_vtable_method = 1;
-         }
+         ;}
     break;
 
   case 65:
-#line 1067 "compilers/imcc/imcc.y"
+#line 1058 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
            IMCC_INFO(interp)->cur_unit->is_vtable_method = 1;
-         }
+         ;}
     break;
 
   case 66:
-#line 1076 "compilers/imcc/imcc.y"
+#line 1067 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
            IMCC_INFO(interp)->cur_unit->is_method = 1;
-         }
+         ;}
     break;
 
   case 67:
-#line 1082 "compilers/imcc/imcc.y"
+#line 1073 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
            IMCC_INFO(interp)->cur_unit->is_method = 1;
-         }
+         ;}
     break;
 
   case 68:
-#line 1091 "compilers/imcc/imcc.y"
+#line 1082 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
            IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
-         }
+         ;}
     break;
 
   case 69:
-#line 1097 "compilers/imcc/imcc.y"
+#line 1088 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
            IMCC_INFO(interp)->cur_unit->has_ns_entry_name = 1;
-         }
+         ;}
     break;
 
   case 70:
-#line 1106 "compilers/imcc/imcc.y"
+#line 1097 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
-         }
+         ;}
     break;
 
   case 71:
-#line 1114 "compilers/imcc/imcc.y"
+#line 1105 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
-         }
+         ;}
     break;
 
   case 72:
-#line 1119 "compilers/imcc/imcc.y"
+#line 1110 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
            IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid = str_dup_remove_quotes((yyvsp[(3) - (4)].s));
            mem_sys_free((yyvsp[(3) - (4)].s));
-         }
+         ;}
     break;
 
   case 73:
-#line 1129 "compilers/imcc/imcc.y"
+#line 1120 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
-         }
+         ;}
     break;
 
   case 74:
-#line 1133 "compilers/imcc/imcc.y"
+#line 1124 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 75:
-#line 1138 "compilers/imcc/imcc.y"
+#line 1129 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-         }
+         ;}
     break;
 
   case 76:
-#line 1145 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
+#line 1136 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); ;}
     break;
 
   case 77:
-#line 1146 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
+#line 1137 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); ;}
     break;
 
   case 78:
-#line 1147 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
+#line 1138 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "PMC",      'S'); ;}
     break;
 
   case 79:
-#line 1148 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
+#line 1139 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, "STRING",   'S'); ;}
     break;
 
   case 80:
-#line 1150 "compilers/imcc/imcc.y"
+#line 1141 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3387,11 +3363,11 @@
            }
            mem_sys_free((yyvsp[(1) - (1)].s));
            (yyval.sr) = r;
-         }
+         ;}
     break;
 
   case 81:
-#line 1161 "compilers/imcc/imcc.y"
+#line 1152 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3401,16 +3377,16 @@
            }
            mem_sys_free((yyvsp[(1) - (1)].s));
            (yyval.sr) = r;
-         }
+         ;}
     break;
 
   case 82:
-#line 1171 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
+#line 1162 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); ;}
     break;
 
   case 85:
-#line 1181 "compilers/imcc/imcc.y"
+#line 1172 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3433,177 +3409,177 @@
            r1 = IMCC_INFO(interp)->cur_unit->instructions->symregs[0];
            if (r1 && r1->pcc_sub)
                r1->pcc_sub->calls_a_sub |= 1;
-         }
+         ;}
     break;
 
   case 86:
-#line 1209 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
+#line 1200 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
     break;
 
   case 87:
-#line 1213 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
+#line 1204 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; ;}
     break;
 
   case 88:
-#line 1214 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
+#line 1205 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; ;}
     break;
 
   case 89:
-#line 1218 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; }
+#line 1209 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; ;}
     break;
 
   case 90:
-#line 1219 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
+#line 1210 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); ;}
     break;
 
   case 91:
-#line 1223 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1214 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 93:
-#line 1228 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (1)].t); }
+#line 1219 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (1)].t); ;}
     break;
 
   case 94:
-#line 1229 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
+#line 1220 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 95:
-#line 1233 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_LOAD; }
+#line 1224 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_LOAD; ;}
     break;
 
   case 96:
-#line 1234 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_INIT; }
+#line 1225 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_INIT; ;}
     break;
 
   case 97:
-#line 1235 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_MAIN; }
+#line 1226 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_MAIN; ;}
     break;
 
   case 98:
-#line 1236 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_IMMEDIATE; }
+#line 1227 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_IMMEDIATE; ;}
     break;
 
   case 99:
-#line 1237 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_POSTCOMP; }
+#line 1228 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_POSTCOMP; ;}
     break;
 
   case 100:
-#line 1238 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_ANON; }
+#line 1229 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_ANON; ;}
     break;
 
   case 101:
-#line 1239 "compilers/imcc/imcc.y"
-    { (yyval.t) = P_NEED_LEX; }
+#line 1230 "compilers/imcc/imcc.y"
+    { (yyval.t) = P_NEED_LEX; ;}
     break;
 
   case 109:
-#line 1251 "compilers/imcc/imcc.y"
+#line 1242 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
-         }
+         ;}
     break;
 
   case 110:
-#line 1256 "compilers/imcc/imcc.y"
+#line 1247 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         }
+         ;}
     break;
 
   case 111:
-#line 1260 "compilers/imcc/imcc.y"
+#line 1251 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
-         }
+         ;}
     break;
 
   case 112:
-#line 1265 "compilers/imcc/imcc.y"
+#line 1256 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         }
+         ;}
     break;
 
   case 113:
-#line 1269 "compilers/imcc/imcc.y"
+#line 1260 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
-         }
+         ;}
     break;
 
   case 114:
-#line 1273 "compilers/imcc/imcc.y"
+#line 1264 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
-         }
+         ;}
     break;
 
   case 115:
-#line 1278 "compilers/imcc/imcc.y"
+#line 1269 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
-         }
+         ;}
     break;
 
   case 116:
-#line 1286 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1277 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 117:
-#line 1287 "compilers/imcc/imcc.y"
-    { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
+#line 1278 "compilers/imcc/imcc.y"
+    { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;}
     break;
 
   case 118:
-#line 1291 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
+#line 1282 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (2)].sr); ;}
     break;
 
   case 119:
-#line 1296 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1287 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 120:
-#line 1298 "compilers/imcc/imcc.y"
+#line 1289 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
-         }
+         ;}
     break;
 
   case 121:
-#line 1305 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
+#line 1296 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
     break;
 
   case 122:
-#line 1306 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 1297 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 123:
-#line 1307 "compilers/imcc/imcc.y"
+#line 1298 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3614,162 +3590,162 @@
            UNUSED(ignored);
            is_def=0;
            (yyval.sr)=0;
-         }
+         ;}
     break;
 
   case 124:
-#line 1321 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1312 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 125:
-#line 1322 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
+#line 1313 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 126:
-#line 1326 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_FLAT;   }
+#line 1317 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_FLAT;   ;}
     break;
 
   case 127:
-#line 1327 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_OPTIONAL; }
+#line 1318 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_OPTIONAL; ;}
     break;
 
   case 128:
-#line 1328 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_OPT_FLAG; }
+#line 1319 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_OPT_FLAG; ;}
     break;
 
   case 129:
-#line 1329 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_NAMED; }
+#line 1320 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_NAMED; ;}
     break;
 
   case 130:
-#line 1330 "compilers/imcc/imcc.y"
-    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
+#line 1321 "compilers/imcc/imcc.y"
+    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
     break;
 
   case 131:
-#line 1331 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_UNIQUE_REG; }
+#line 1322 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_UNIQUE_REG; ;}
     break;
 
   case 132:
-#line 1336 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 0); }
+#line 1327 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 0); ;}
     break;
 
   case 133:
-#line 1338 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
+#line 1329 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
     break;
 
   case 134:
-#line 1340 "compilers/imcc/imcc.y"
+#line 1331 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
-         }
+         ;}
     break;
 
   case 135:
-#line 1347 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 1); }
+#line 1338 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 1); ;}
     break;
 
   case 136:
-#line 1349 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
+#line 1340 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
     break;
 
   case 137:
-#line 1353 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1344 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 138:
-#line 1355 "compilers/imcc/imcc.y"
+#line 1346 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
-         }
+         ;}
     break;
 
   case 139:
-#line 1360 "compilers/imcc/imcc.y"
+#line 1351 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
-         }
+         ;}
     break;
 
   case 140:
-#line 1367 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1358 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 141:
-#line 1369 "compilers/imcc/imcc.y"
+#line 1360 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
-         }
+         ;}
     break;
 
   case 142:
-#line 1374 "compilers/imcc/imcc.y"
+#line 1365 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
-         }
+         ;}
     break;
 
   case 143:
-#line 1381 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
+#line 1372 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
     break;
 
   case 144:
-#line 1385 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
+#line 1376 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
     break;
 
   case 145:
-#line 1390 "compilers/imcc/imcc.y"
+#line 1381 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
-        }
+        ;}
     break;
 
   case 146:
-#line 1395 "compilers/imcc/imcc.y"
+#line 1386 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
-        }
+        ;}
     break;
 
   case 147:
-#line 1402 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1393 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 148:
-#line 1403 "compilers/imcc/imcc.y"
-    { (yyval.t) = 1; }
+#line 1394 "compilers/imcc/imcc.y"
+    { (yyval.t) = 1; ;}
     break;
 
   case 149:
-#line 1407 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 1398 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 150:
-#line 1409 "compilers/imcc/imcc.y"
+#line 1400 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3778,18 +3754,18 @@
            }
            else
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (1)].sr));
-         }
+         ;}
     break;
 
   case 151:
-#line 1419 "compilers/imcc/imcc.y"
+#line 1410 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 152:
-#line 1423 "compilers/imcc/imcc.y"
+#line 1414 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3798,119 +3774,119 @@
              }
              else
                  add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 153:
-#line 1433 "compilers/imcc/imcc.y"
+#line 1424 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
-         }
+         ;}
     break;
 
   case 156:
-#line 1453 "compilers/imcc/imcc.y"
-    { clear_state(interp); }
+#line 1444 "compilers/imcc/imcc.y"
+    { clear_state(interp); ;}
     break;
 
   case 157:
-#line 1458 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (2)].i); }
+#line 1449 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(2) - (2)].i); ;}
     break;
 
   case 158:
-#line 1459 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 1450 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 159:
-#line 1460 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 1451 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 160:
-#line 1461 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 1452 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 161:
-#line 1462 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 1453 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 162:
-#line 1466 "compilers/imcc/imcc.y"
-    { (yyval.i) = NULL; }
+#line 1457 "compilers/imcc/imcc.y"
+    { (yyval.i) = NULL; ;}
     break;
 
   case 166:
-#line 1477 "compilers/imcc/imcc.y"
+#line 1468 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
-         }
+         ;}
     break;
 
   case 167:
-#line 1485 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (3)].i); }
+#line 1476 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(2) - (3)].i); ;}
     break;
 
   case 168:
-#line 1487 "compilers/imcc/imcc.y"
+#line 1478 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
                YYABORT;
            }
            yyerrok;
-         }
+         ;}
     break;
 
   case 169:
-#line 1498 "compilers/imcc/imcc.y"
+#line 1489 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
            (yyval.idlist) = l;
-         }
+         ;}
     break;
 
   case 170:
-#line 1505 "compilers/imcc/imcc.y"
+#line 1496 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
            (yyval.idlist) = l;
-         }
+         ;}
     break;
 
   case 171:
-#line 1514 "compilers/imcc/imcc.y"
+#line 1505 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
            l->unique_reg   = (yyvsp[(2) - (2)].t);
            (yyval.idlist) = l;
-         }
+         ;}
     break;
 
   case 172:
-#line 1523 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1514 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 173:
-#line 1524 "compilers/imcc/imcc.y"
-    { (yyval.t) = 1; }
+#line 1515 "compilers/imcc/imcc.y"
+    { (yyval.t) = 1; ;}
     break;
 
   case 176:
-#line 1531 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 1522 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 177:
-#line 1532 "compilers/imcc/imcc.y"
+#line 1523 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -3925,60 +3901,60 @@
                mem_sys_free(l1);
            }
            is_def=0; (yyval.i)=0;
-         }
+         ;}
     break;
 
   case 178:
-#line 1548 "compilers/imcc/imcc.y"
+#line 1539 "compilers/imcc/imcc.y"
     {
            set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
-         }
+         ;}
     break;
 
   case 179:
-#line 1551 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 1542 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 180:
-#line 1552 "compilers/imcc/imcc.y"
+#line 1543 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            is_def=0;
            mem_sys_free((yyvsp[(4) - (6)].s));
-         }
+         ;}
     break;
 
   case 182:
-#line 1559 "compilers/imcc/imcc.y"
-    { is_def=1; }
+#line 1550 "compilers/imcc/imcc.y"
+    { is_def=1; ;}
     break;
 
   case 183:
-#line 1560 "compilers/imcc/imcc.y"
+#line 1551 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            is_def=0;
            mem_sys_free((yyvsp[(4) - (6)].s));
-         }
+         ;}
     break;
 
   case 184:
-#line 1566 "compilers/imcc/imcc.y"
+#line 1557 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
            IMCC_INFO(interp)->cur_call = NULL;
-         }
+         ;}
     break;
 
   case 185:
-#line 1571 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
+#line 1562 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); ;}
     break;
 
   case 186:
-#line 1573 "compilers/imcc/imcc.y"
+#line 1564 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3989,51 +3965,51 @@
                     IMCC_INFO(interp)->keyvec,
                     1);
            mem_sys_free((yyvsp[(1) - (2)].s));
-         }
+         ;}
     break;
 
   case 187:
-#line 1584 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
+#line 1575 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); ;}
     break;
 
   case 188:
-#line 1585 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
+#line 1576 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
     break;
 
   case 189:
-#line 1586 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+#line 1577 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; ;}
     break;
 
   case 192:
-#line 1589 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;}
+#line 1580 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;;}
     break;
 
   case 193:
-#line 1593 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'I'; }
+#line 1584 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'I'; ;}
     break;
 
   case 194:
-#line 1594 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'N'; }
+#line 1585 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'N'; ;}
     break;
 
   case 195:
-#line 1595 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'S'; }
+#line 1586 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'S'; ;}
     break;
 
   case 196:
-#line 1596 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'P'; }
+#line 1587 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'P'; ;}
     break;
 
   case 197:
-#line 1601 "compilers/imcc/imcc.y"
+#line 1592 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a str_dup() here, but the lexer already
             * copied the string, so it's safe to use directly */
@@ -4042,373 +4018,373 @@
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s));
            }
-         }
+         ;}
     break;
 
   case 198:
-#line 1614 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
+#line 1605 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  ;}
     break;
 
   case 199:
-#line 1616 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
+#line 1607 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  ;}
     break;
 
   case 200:
-#line 1618 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));  }
+#line 1609 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));  ;}
     break;
 
   case 201:
-#line 1620 "compilers/imcc/imcc.y"
-    { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
+#line 1611 "compilers/imcc/imcc.y"
+    { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); ;}
     break;
 
   case 202:
-#line 1622 "compilers/imcc/imcc.y"
-    { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
+#line 1613 "compilers/imcc/imcc.y"
+    { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
     break;
 
   case 203:
-#line 1624 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); }
+#line 1615 "compilers/imcc/imcc.y"
+    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].s), (yyvsp[(6) - (6)].sr), 1); ;}
     break;
 
   case 204:
-#line 1626 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
+#line 1617 "compilers/imcc/imcc.y"
+    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); ;}
     break;
 
   case 205:
-#line 1628 "compilers/imcc/imcc.y"
-    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); }
+#line 1619 "compilers/imcc/imcc.y"
+    { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].s), NULL, 1); ;}
     break;
 
   case 206:
-#line 1630 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
+#line 1621 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
     break;
 
   case 207:
-#line 1632 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
+#line 1623 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
     break;
 
   case 208:
-#line 1634 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
+#line 1625 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
     break;
 
   case 209:
-#line 1636 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
+#line 1627 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
     break;
 
   case 210:
-#line 1638 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
+#line 1629 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); ;}
     break;
 
   case 211:
-#line 1642 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); }
+#line 1633 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); ;}
     break;
 
   case 212:
-#line 1644 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
+#line 1635 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); ;}
     break;
 
   case 213:
-#line 1646 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); }
+#line 1637 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "new", 3, (yyvsp[(2) - (7)].sr), (yyvsp[(4) - (7)].sr), (yyvsp[(6) - (7)].sr)); ;}
     break;
 
   case 214:
-#line 1649 "compilers/imcc/imcc.y"
+#line 1640 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
            (yyval.i) = 0;
-         }
+         ;}
     break;
 
   case 215:
-#line 1655 "compilers/imcc/imcc.y"
+#line 1646 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
-         }
+         ;}
     break;
 
   case 216:
-#line 1659 "compilers/imcc/imcc.y"
+#line 1650 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
-         }
+         ;}
     break;
 
   case 220:
-#line 1667 "compilers/imcc/imcc.y"
+#line 1658 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
-         }
+         ;}
     break;
 
   case 221:
-#line 1674 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"not"; }
+#line 1665 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"not"; ;}
     break;
 
   case 222:
-#line 1675 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bnot"; }
+#line 1666 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"bnot"; ;}
     break;
 
   case 223:
-#line 1676 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"neg"; }
+#line 1667 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"neg"; ;}
     break;
 
   case 224:
-#line 1680 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"sub"; }
+#line 1671 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"sub"; ;}
     break;
 
   case 225:
-#line 1681 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"add"; }
+#line 1672 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"add"; ;}
     break;
 
   case 226:
-#line 1682 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mul"; }
+#line 1673 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"mul"; ;}
     break;
 
   case 227:
-#line 1683 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"div"; }
+#line 1674 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"div"; ;}
     break;
 
   case 228:
-#line 1684 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mod"; }
+#line 1675 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"mod"; ;}
     break;
 
   case 229:
-#line 1685 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"fdiv"; }
+#line 1676 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"fdiv"; ;}
     break;
 
   case 230:
-#line 1686 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"pow"; }
+#line 1677 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"pow"; ;}
     break;
 
   case 231:
-#line 1687 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"concat"; }
+#line 1678 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"concat"; ;}
     break;
 
   case 232:
-#line 1688 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"iseq"; }
+#line 1679 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"iseq"; ;}
     break;
 
   case 233:
-#line 1689 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isne"; }
+#line 1680 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"isne"; ;}
     break;
 
   case 234:
-#line 1690 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isgt"; }
+#line 1681 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"isgt"; ;}
     break;
 
   case 235:
-#line 1691 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isge"; }
+#line 1682 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"isge"; ;}
     break;
 
   case 236:
-#line 1692 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"islt"; }
+#line 1683 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"islt"; ;}
     break;
 
   case 237:
-#line 1693 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isle"; }
+#line 1684 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"isle"; ;}
     break;
 
   case 238:
-#line 1694 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shl"; }
+#line 1685 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"shl"; ;}
     break;
 
   case 239:
-#line 1695 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shr"; }
+#line 1686 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"shr"; ;}
     break;
 
   case 240:
-#line 1696 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lsr"; }
+#line 1687 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"lsr"; ;}
     break;
 
   case 241:
-#line 1697 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"and"; }
+#line 1688 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"and"; ;}
     break;
 
   case 242:
-#line 1698 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"or"; }
+#line 1689 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"or"; ;}
     break;
 
   case 243:
-#line 1699 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"xor"; }
+#line 1690 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"xor"; ;}
     break;
 
   case 244:
-#line 1700 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"band"; }
+#line 1691 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"band"; ;}
     break;
 
   case 245:
-#line 1701 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bor"; }
+#line 1692 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"bor"; ;}
     break;
 
   case 246:
-#line 1702 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bxor"; }
+#line 1693 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"bxor"; ;}
     break;
 
   case 247:
-#line 1708 "compilers/imcc/imcc.y"
+#line 1699 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
            (yyval.i)->type |= ITRESULT;
-         }
+         ;}
     break;
 
   case 248:
-#line 1713 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; }
+#line 1704 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; ;}
     break;
 
   case 249:
-#line 1720 "compilers/imcc/imcc.y"
+#line 1711 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 250:
-#line 1726 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"add"; }
+#line 1717 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"add"; ;}
     break;
 
   case 251:
-#line 1727 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"sub"; }
+#line 1718 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"sub"; ;}
     break;
 
   case 252:
-#line 1728 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mul"; }
+#line 1719 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"mul"; ;}
     break;
 
   case 253:
-#line 1729 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"div"; }
+#line 1720 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"div"; ;}
     break;
 
   case 254:
-#line 1730 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mod"; }
+#line 1721 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"mod"; ;}
     break;
 
   case 255:
-#line 1731 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"fdiv"; }
+#line 1722 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"fdiv"; ;}
     break;
 
   case 256:
-#line 1732 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"concat"; }
+#line 1723 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"concat"; ;}
     break;
 
   case 257:
-#line 1733 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"band"; }
+#line 1724 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"band"; ;}
     break;
 
   case 258:
-#line 1734 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bor"; }
+#line 1725 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"bor"; ;}
     break;
 
   case 259:
-#line 1735 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bxor"; }
+#line 1726 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"bxor"; ;}
     break;
 
   case 260:
-#line 1736 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shr"; }
+#line 1727 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"shr"; ;}
     break;
 
   case 261:
-#line 1737 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shl"; }
+#line 1728 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"shl"; ;}
     break;
 
   case 262:
-#line 1738 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lsr"; }
+#line 1729 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"lsr"; ;}
     break;
 
   case 263:
-#line 1744 "compilers/imcc/imcc.y"
+#line 1735 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
                       IMCC_INFO(interp) -> regs,
                       IMCC_INFO(interp) -> nargs,
                       IMCC_INFO(interp) -> keyvec, 1);
          mem_sys_free((yyvsp[(3) - (4)].s));
-       }
+       ;}
     break;
 
   case 264:
-#line 1754 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1745 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 265:
-#line 1755 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1746 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 266:
-#line 1756 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1747 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 267:
-#line 1758 "compilers/imcc/imcc.y"
+#line 1749 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "Sub isn't a PMC");
-         }
+         ;}
     break;
 
   case 268:
-#line 1764 "compilers/imcc/imcc.y"
+#line 1755 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4419,43 +4395,43 @@
 
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = (yyvsp[(3) - (3)].sr);
-        }
+        ;}
     break;
 
   case 269:
-#line 1776 "compilers/imcc/imcc.y"
+#line 1767 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
             mem_sys_free((yyvsp[(3) - (3)].s));
-         }
+         ;}
     break;
 
   case 270:
-#line 1781 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
+#line 1772 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); ;}
     break;
 
   case 271:
-#line 1787 "compilers/imcc/imcc.y"
+#line 1778 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
-         }
+         ;}
     break;
 
   case 272:
-#line 1791 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (5)].i); }
+#line 1782 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(2) - (5)].i); ;}
     break;
 
   case 273:
-#line 1795 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1786 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 274:
-#line 1797 "compilers/imcc/imcc.y"
+#line 1788 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4464,11 +4440,11 @@
            }
            else
                add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 275:
-#line 1807 "compilers/imcc/imcc.y"
+#line 1798 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4477,64 +4453,64 @@
            }
            else
                add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-         }
+         ;}
     break;
 
   case 276:
-#line 1817 "compilers/imcc/imcc.y"
+#line 1808 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
-         }
+         ;}
     break;
 
   case 277:
-#line 1823 "compilers/imcc/imcc.y"
+#line 1814 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
-         }
+         ;}
     break;
 
   case 278:
-#line 1831 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
+#line 1822 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 279:
-#line 1835 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1826 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 280:
-#line 1836 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
+#line 1827 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 281:
-#line 1840 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_FLAT; }
+#line 1831 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_FLAT; ;}
     break;
 
   case 282:
-#line 1841 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_NAMED; }
+#line 1832 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_NAMED; ;}
     break;
 
   case 283:
-#line 1844 "compilers/imcc/imcc.y"
-    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
+#line 1835 "compilers/imcc/imcc.y"
+    { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
     break;
 
   case 284:
-#line 1848 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
+#line 1839 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 285:
-#line 1853 "compilers/imcc/imcc.y"
+#line 1844 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4543,19 +4519,19 @@
            }
            else
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
-         }
+         ;}
     break;
 
   case 286:
-#line 1863 "compilers/imcc/imcc.y"
+#line 1854 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
-         }
+         ;}
     break;
 
   case 287:
-#line 1868 "compilers/imcc/imcc.y"
+#line 1859 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4564,319 +4540,286 @@
            }
            else
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
-         }
+         ;}
     break;
 
   case 288:
-#line 1878 "compilers/imcc/imcc.y"
+#line 1869 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
-         }
+         ;}
     break;
 
   case 289:
-#line 1882 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
+#line 1873 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; ;}
     break;
 
   case 290:
-#line 1886 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 1877 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 291:
-#line 1887 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 1878 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 292:
-#line 1892 "compilers/imcc/imcc.y"
+#line 1883 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
-         }
+         ;}
     break;
 
   case 293:
-#line 1896 "compilers/imcc/imcc.y"
+#line 1887 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
-         }
+         ;}
     break;
 
   case 294:
-#line 1900 "compilers/imcc/imcc.y"
+#line 1891 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
-         }
+         ;}
     break;
 
   case 295:
-#line 1907 "compilers/imcc/imcc.y"
+#line 1898 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
-         }
+         ;}
     break;
 
   case 296:
-#line 1911 "compilers/imcc/imcc.y"
+#line 1902 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
-         }
+         ;}
     break;
 
   case 297:
-#line 1915 "compilers/imcc/imcc.y"
+#line 1906 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
-         }
+         ;}
     break;
 
   case 298:
-#line 1921 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1912 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 299:
-#line 1922 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 1913 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; ;}
     break;
 
   case 300:
-#line 1926 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"eq"; }
+#line 1917 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"eq"; ;}
     break;
 
   case 301:
-#line 1927 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"ne"; }
+#line 1918 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"ne"; ;}
     break;
 
   case 302:
-#line 1928 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"gt"; }
+#line 1919 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"gt"; ;}
     break;
 
   case 303:
-#line 1929 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"ge"; }
+#line 1920 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"ge"; ;}
     break;
 
   case 304:
-#line 1930 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lt"; }
+#line 1921 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"lt"; ;}
     break;
 
   case 305:
-#line 1931 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"le"; }
+#line 1922 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"le"; ;}
     break;
 
   case 308:
-#line 1940 "compilers/imcc/imcc.y"
-    { (yyval.sr) = NULL; }
+#line 1931 "compilers/imcc/imcc.y"
+    { (yyval.sr) = NULL; ;}
     break;
 
   case 309:
-#line 1941 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
+#line 1932 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (1)].sr); ;}
     break;
 
   case 310:
-#line 1945 "compilers/imcc/imcc.y"
-    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
+#line 1936 "compilers/imcc/imcc.y"
+    { (yyval.sr) = IMCC_INFO(interp)->regs[0]; ;}
     break;
 
   case 312:
-#line 1950 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
+#line 1941 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); ;}
     break;
 
   case 313:
-#line 1952 "compilers/imcc/imcc.y"
+#line 1943 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
            IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(3) - (4)].sr);
            (yyval.sr) = (yyvsp[(1) - (4)].sr);
-         }
+         ;}
     break;
 
   case 314:
-#line 1959 "compilers/imcc/imcc.y"
+#line 1950 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
-         }
+         ;}
     break;
 
   case 316:
-#line 1966 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1957 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 317:
-#line 1967 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1958 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 318:
-#line 1971 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1962 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 319:
-#line 1972 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1963 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 320:
-#line 1976 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1967 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 321:
-#line 1977 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 1968 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 326:
-#line 1991 "compilers/imcc/imcc.y"
+#line 1982 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
-         }
+         ;}
     break;
 
   case 327:
-#line 1996 "compilers/imcc/imcc.y"
+#line 1987 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
                           IMCC_INFO(interp)->keys, 0);
-         }
+         ;}
     break;
 
   case 328:
-#line 2004 "compilers/imcc/imcc.y"
+#line 1995 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
-         }
+         ;}
     break;
 
   case 329:
-#line 2009 "compilers/imcc/imcc.y"
+#line 2000 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
                           IMCC_INFO(interp)->keys, 1);
-         }
+         ;}
     break;
 
   case 330:
-#line 2017 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
+#line 2008 "compilers/imcc/imcc.y"
+    { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); ;}
     break;
 
   case 331:
-#line 2019 "compilers/imcc/imcc.y"
+#line 2010 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
-         }
+         ;}
     break;
 
   case 332:
-#line 2023 "compilers/imcc/imcc.y"
-    { IMCC_INFO(interp)->in_slice = 1; }
+#line 2018 "compilers/imcc/imcc.y"
+    {
+           if (IMCC_INFO(interp)->in_slice)
+               (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
+           (yyval.sr) = (yyvsp[(1) - (1)].sr);
+         ;}
     break;
 
   case 333:
-#line 2025 "compilers/imcc/imcc.y"
-    {
-           IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(4) - (4)].sr);
-           (yyval.sr) = IMCC_INFO(interp)->keys[0];
-         }
+#line 2026 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); ;}
     break;
 
   case 334:
-#line 2033 "compilers/imcc/imcc.y"
-    {
-           if (IMCC_INFO(interp)->in_slice)
-               (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
-           (yyval.sr) = (yyvsp[(1) - (1)].sr);
-         }
+#line 2027 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); ;}
     break;
 
   case 335:
-#line 2039 "compilers/imcc/imcc.y"
-    {
-           (yyvsp[(1) - (3)].sr)->type |= VT_START_SLICE;
-           (yyvsp[(3) - (3)].sr)->type |= VT_END_SLICE;
-           IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (3)].sr);
-           (yyval.sr) = (yyvsp[(3) - (3)].sr);
-         }
+#line 2028 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); ;}
     break;
 
   case 336:
-#line 2045 "compilers/imcc/imcc.y"
-    { (yyvsp[(2) - (2)].sr)->type |= VT_START_ZERO | VT_END_SLICE; (yyval.sr) = (yyvsp[(2) - (2)].sr); }
+#line 2029 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); ;}
     break;
 
   case 337:
-#line 2046 "compilers/imcc/imcc.y"
-    { (yyvsp[(1) - (2)].sr)->type |= VT_START_SLICE | VT_END_INF; (yyval.sr) = (yyvsp[(1) - (2)].sr); }
+#line 2030 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 338:
-#line 2050 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
+#line 2034 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 339:
-#line 2051 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
+#line 2035 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 340:
-#line 2052 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
+#line 2036 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 341:
-#line 2053 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
-    break;
-
-  case 342:
-#line 2054 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
-    break;
-
-  case 343:
-#line 2058 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
-    break;
-
-  case 344:
-#line 2059 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
-    break;
-
-  case 345:
-#line 2060 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
-    break;
-
-  case 346:
-#line 2061 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2037 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 4869 "compilers/imcc/imcparser.c"
+#line 4823 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5090,7 +5033,7 @@
 }
 
 
-#line 2067 "compilers/imcc/imcc.y"
+#line 2043 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: branches/rakudoreg/compilers/imcc/parser_util.c
==============================================================================
--- branches/rakudoreg/compilers/imcc/parser_util.c	(original)
+++ branches/rakudoreg/compilers/imcc/parser_util.c	Wed Dec 17 13:31:52 2008
@@ -360,12 +360,6 @@
     ||  (STREQ(name, "set_returns")))
         return var_arg_ins(interp, unit, name, r, n, emit);
 
-#if 0
-    ins = multi_keyed(interp, unit, name, r, n, keyvec, emit);
-    if (ins)
-        return ins;
-#endif
-
     op_fullname(fullname, name, r, n, keyvec);
     op = interp->op_lib->op_code(fullname, 1);
 
@@ -1202,120 +1196,6 @@
     return NULL;
 }
 
-/*
-
-=item C<Instruction * multi_keyed>
-
-TODO: Needs to be documented!!!
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-Instruction *
-multi_keyed(PARROT_INTERP, ARGMOD(IMC_Unit *unit), ARGIN(const char *name),
-            ARGIN(SymReg **r), int nr, int keyvec, int emit)
-{
-    int i, keyf, n;
-    SymReg      *preg[3];    /* px, py, pz */
-    SymReg      *nreg[3];
-    Instruction *ins       = 0;
-    Instruction *unused_ins = 0;
-    static      int p       = 0;
-
-    /* count keys in keyvec */
-    int kv = keyvec;
-
-    for (i = keyf = 0; i < nr; i++, kv >>= 1)
-        if (kv & 1)
-            keyf++;
-
-    if (keyf <= 1)
-        return NULL;
-
-    /* XXX what to do, if we don't emit instruction? */
-    PARROT_ASSERT(emit);
-    UNUSED(emit);
-
-    /* OP  _p_k    _p_k_p_k =>
-     * set      py, p_k
-     * set      pz,     p_k
-     * new px, .Undef
-     * OP  px, py, pz
-     * set _p_k_px
-     */
-
-    kv = keyvec;
-    for (i = n = 0; i < nr; i++, kv >>= 1, n++) {
-        char buf[16];
-
-        if (kv & 1)
-            IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "illegal key operand\n");
-
-        /* make a new P symbol */
-        do {
-            snprintf(buf, sizeof (buf), "$P%d", ++p);
-        } while (get_sym(interp, buf));
-
-        preg[n] = mk_symreg(interp, buf, 'P');
-        kv    >>= 1;
-
-        if (kv & 1) {
-            /* we have a keyed operand */
-            if (r[i]->set != 'P')
-                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "not an aggregate\n");
-
-            /* don't emit LHS yet */
-            if (i == 0) {
-                nreg[0] = r[i];
-                nreg[1] = r[i+1];
-                nreg[2] = preg[n];
-
-                /* set p_k px */
-                ins     = INS(interp, unit, "set", 0, nreg, 3, KEY_BIT(1), 0);
-            }
-            else {
-                nreg[0] = preg[n];
-                nreg[1] = r[i];
-                nreg[2] = r[i+1];
-
-                /* set py|z p_k */
-                INS(interp, unit, "set", 0, nreg, 3, KEY_BIT(2), 1);
-            }
-
-            i++;
-        }
-        /* non keyed */
-        else {
-            if (i == 0) {
-                nreg[0] = r[i];
-                nreg[1] = preg[n];
-
-                /* set n, px */
-                ins     = INS(interp, unit, "set", 0, nreg, 2, 0, 0);
-            }
-            else {
-                nreg[0] = preg[n];
-                nreg[1] = r[i];
-
-                /* set px, n */
-                INS(interp, unit, "set", 0, nreg, 2, 0, 1);
-            }
-        }
-    }
-    /* make a new undef */
-    unused_ins = iNEW(interp, unit, preg[0], str_dup("Undef"), NULL, 1);
-    UNUSED(unused_ins);
-
-    /* emit the operand */
-    INS(interp, unit, name, 0, preg, 3, 0, 1);
-
-    /* emit the LHS op */
-    emitb(interp, unit, ins);
-
-    return ins;
-}
 
 /*
 

Modified: branches/rakudoreg/compilers/imcc/pbc.c
==============================================================================
--- branches/rakudoreg/compilers/imcc/pbc.c	(original)
+++ branches/rakudoreg/compilers/imcc/pbc.c	Wed Dec 17 13:31:52 2008
@@ -697,13 +697,6 @@
         if (r && (r->subid && (strcmp(r->subid, lookup) == 0)))
             return s;
 
-        /* if names and namespaces are matching - ok */
-        if (r && r->name && (strcmp(r->name, lookup) == 0)
-                && ((sym->unit->_namespace && s->unit->_namespace
-                        && (strcmp(sym->unit->_namespace->name, s->unit->_namespace->name) == 0))
-                    || (!sym->unit->_namespace && !s->unit->_namespace)))
-            return s;
-
         *pc += s->size;
     }
     return NULL;

Modified: branches/rakudoreg/compilers/pirc/new/pir.y
==============================================================================
--- branches/rakudoreg/compilers/pirc/new/pir.y	(original)
+++ branches/rakudoreg/compilers/pirc/new/pir.y	Wed Dec 17 13:31:52 2008
@@ -740,7 +740,7 @@
                   ;
 
 parameter_list    : parameters
-                         { /* XXX */
+                         {
                            /* if there are parameters, then emit a get_params instruction. */
                            if ($1 > 0) {
 
@@ -753,7 +753,6 @@
                                update_op(lexer, CURRENT_INSTRUCTION(lexer),
                                          PARROT_OP_get_params_pc);
                            }
-
                          }
                   ;
 
@@ -1282,10 +1281,8 @@
                           else
                               set_instrf(lexer, opnames[$4], "%T%T%E", $1, $3, $5);
 
-                          /* XXX this do_strength_reduction() doesn't work properly yet. */
-                          do_strength_reduction(yyscanner);
-
                           get_opinfo(yyscanner);
+                          do_strength_reduction(yyscanner);
                         }
                   | keyword keylist '=' expression
                         {
@@ -3092,6 +3089,7 @@
     if (newop == -1)
         return;
 
+
     /* if there's more than 2 operands, do strength reduction. op_count also
      * counts the operand itself, so compare with 3, not 2.
      */
@@ -3213,12 +3211,14 @@
     if (!CURRENT_INSTRUCTION(lexer)->opinfo->dirs)
         fprintf(stderr, "no opinfo->dirs!\n");
     else {
-        op_info_t *opinfo =     CURRENT_INSTRUCTION(lexer)->opinfo;
-        if (opinfo)
+        op_info_t *opinfo = CURRENT_INSTRUCTION(lexer)->opinfo;
 
+        if (opinfo)
             dir_first_arg = CURRENT_INSTRUCTION(lexer)->opinfo->dirs[0];
-        else
+        else {
             fprintf(stderr, " no opinfo!\n");
+            return;
+        }
     }
 
     /* direction cannot be IN or INOUT */

Modified: branches/rakudoreg/compilers/pirc/new/piremit.c
==============================================================================
--- branches/rakudoreg/compilers/pirc/new/piremit.c	(original)
+++ branches/rakudoreg/compilers/pirc/new/piremit.c	Wed Dec 17 13:31:52 2008
@@ -92,15 +92,7 @@
 */
 void
 print_target(lexer_state *lexer, target * const t) {
-
-    if (TEST_FLAG(t->flags, TARGET_FLAG_IS_REG)) {
-        if (t->info == NULL)
-            fprintf(stderr, "reg target has no pir_reg ptr!\n");
-
-        fprintf(out, "%c%d", pir_register_types[t->info->type], t->info->color);
-    }
-    else
-        fprintf(out, "%c%d", pir_register_types[t->info->type], t->info->color);
+    fprintf(out, "%c%d", pir_register_types[t->info->type], t->info->color);
 
     /* if the target has a key, print that too */
     if (t->key)
@@ -431,10 +423,7 @@
 */
 static void
 emit_pbc_target_arg(lexer_state * const lexer, target * const t) {
-    if (TEST_FLAG(t->flags, TARGET_FLAG_IS_REG))
-        emit_int_arg(lexer->bc, t->info->color);
-    else
-        emit_int_arg(lexer->bc, t->info->color);
+    emit_int_arg(lexer->bc, t->info->color);
 }
 
 /*

Modified: branches/rakudoreg/compilers/pirc/new/pirparser.c
==============================================================================
--- branches/rakudoreg/compilers/pirc/new/pirparser.c	(original)
+++ branches/rakudoreg/compilers/pirc/new/pirparser.c	Wed Dec 17 13:31:52 2008
@@ -1066,31 +1066,31 @@
     1006,  1013,  1015,  1020,  1022,  1026,  1049,  1053,  1055,  1064,
     1075,  1087,  1097,  1100,  1109,  1118,  1123,  1128,  1149,  1189,
     1207,  1214,  1219,  1230,  1241,  1252,  1263,  1268,  1273,  1278,
-    1290,  1309,  1343,  1345,  1347,  1349,  1351,  1353,  1355,  1357,
-    1362,  1371,  1373,  1375,  1377,  1379,  1381,  1383,  1385,  1387,
-    1389,  1401,  1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,
-    1422,  1424,  1426,  1428,  1430,  1461,  1487,  1495,  1504,  1513,
-    1515,  1517,  1519,  1521,  1525,  1530,  1532,  1537,  1538,  1541,
-    1542,  1545,  1546,  1549,  1557,  1561,  1563,  1567,  1571,  1572,
-    1575,  1590,  1594,  1595,  1598,  1611,  1612,  1616,  1618,  1622,
-    1626,  1628,  1630,  1636,  1637,  1642,  1643,  1647,  1649,  1658,
-    1660,  1664,  1668,  1672,  1676,  1682,  1683,  1686,  1714,  1721,
-    1723,  1732,  1749,  1751,  1753,  1757,  1766,  1771,  1776,  1777,
-    1781,  1783,  1787,  1792,  1793,  1797,  1799,  1801,  1803,  1813,
-    1817,  1818,  1819,  1820,  1823,  1828,  1839,  1846,  1851,  1852,
-    1856,  1858,  1862,  1863,  1866,  1870,  1874,  1878,  1887,  1897,
-    1898,  1903,  1905,  1910,  1915,  1916,  1920,  1922,  1926,  1932,
-    1933,  1937,  1939,  1947,  1948,  1952,  1956,  1959,  1960,  1963,
-    1967,  1971,  1973,  1975,  1977,  1985,  1986,  1990,  1991,  1992,
-    1995,  1996,  1997,  1998,  1999,  2000,  2003,  2004,  2005,  2006,
-    2014,  2017,  2018,  2031,  2032,  2033,  2034,  2038,  2039,  2042,
-    2043,  2044,  2045,  2046,  2047,  2048,  2049,  2052,  2053,  2054,
-    2057,  2058,  2059,  2060,  2061,  2062,  2063,  2064,  2065,  2066,
-    2067,  2068,  2069,  2070,  2071,  2072,  2073,  2074,  2075,  2076,
-    2077,  2078,  2079,  2085,  2086,  2087,  2088,  2089,  2090,  2091,
-    2092,  2093,  2094,  2095,  2096,  2108,  2116,  2120,  2121,  2124,
-    2125,  2126,  2127,  2128,  2129,  2132,  2134,  2135,  2138,  2139,
-    2142,  2146,  2151
+    1288,  1307,  1341,  1343,  1345,  1347,  1349,  1351,  1353,  1355,
+    1360,  1369,  1371,  1373,  1375,  1377,  1379,  1381,  1383,  1385,
+    1387,  1399,  1404,  1406,  1408,  1410,  1412,  1414,  1416,  1418,
+    1420,  1422,  1424,  1426,  1428,  1459,  1485,  1493,  1502,  1511,
+    1513,  1515,  1517,  1519,  1523,  1528,  1530,  1535,  1536,  1539,
+    1540,  1543,  1544,  1547,  1555,  1559,  1561,  1565,  1569,  1570,
+    1573,  1588,  1592,  1593,  1596,  1609,  1610,  1614,  1616,  1620,
+    1624,  1626,  1628,  1634,  1635,  1640,  1641,  1645,  1647,  1656,
+    1658,  1662,  1666,  1670,  1674,  1680,  1681,  1684,  1712,  1719,
+    1721,  1730,  1747,  1749,  1751,  1755,  1764,  1769,  1774,  1775,
+    1779,  1781,  1785,  1790,  1791,  1795,  1797,  1799,  1801,  1811,
+    1815,  1816,  1817,  1818,  1821,  1826,  1837,  1844,  1849,  1850,
+    1854,  1856,  1860,  1861,  1864,  1868,  1872,  1876,  1885,  1895,
+    1896,  1901,  1903,  1908,  1913,  1914,  1918,  1920,  1924,  1930,
+    1931,  1935,  1937,  1945,  1946,  1950,  1954,  1957,  1958,  1961,
+    1965,  1969,  1971,  1973,  1975,  1983,  1984,  1988,  1989,  1990,
+    1993,  1994,  1995,  1996,  1997,  1998,  2001,  2002,  2003,  2004,
+    2012,  2015,  2016,  2029,  2030,  2031,  2032,  2036,  2037,  2040,
+    2041,  2042,  2043,  2044,  2045,  2046,  2047,  2050,  2051,  2052,
+    2055,  2056,  2057,  2058,  2059,  2060,  2061,  2062,  2063,  2064,
+    2065,  2066,  2067,  2068,  2069,  2070,  2071,  2072,  2073,  2074,
+    2075,  2076,  2077,  2083,  2084,  2085,  2086,  2087,  2088,  2089,
+    2090,  2091,  2092,  2093,  2094,  2106,  2114,  2118,  2119,  2122,
+    2123,  2124,  2125,  2126,  2127,  2130,  2132,  2133,  2136,  2137,
+    2140,  2144,  2149
 };
 #endif
 
@@ -3343,15 +3343,13 @@
                           else
                               set_instrf(lexer, opnames[(yyvsp[(4) - (5)].ival)], "%T%T%E", (yyvsp[(1) - (5)].targ), (yyvsp[(3) - (5)].targ), (yyvsp[(5) - (5)].expr));
 
-                          /* XXX this do_strength_reduction() doesn't work properly yet. */
-                          do_strength_reduction(yyscanner);
-
                           get_opinfo(yyscanner);
+                          do_strength_reduction(yyscanner);
                         ;}
     break;
 
   case 170:
-#line 1291 "pir.y"
+#line 1289 "pir.y"
     {
                           symbol *sym = find_symbol(lexer, (yyvsp[(1) - (4)].sval));
                           target *t;
@@ -3373,7 +3371,7 @@
     break;
 
   case 171:
-#line 1310 "pir.y"
+#line 1308 "pir.y"
     {
                           target *preg = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (4)].ival));
                           set_target_key(preg, (yyvsp[(2) - (4)].key));
@@ -3383,97 +3381,97 @@
     break;
 
   case 172:
-#line 1344 "pir.y"
+#line 1342 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%i%T", (yyvsp[(1) - (3)].ival), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 173:
-#line 1346 "pir.y"
+#line 1344 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%n%T", (yyvsp[(1) - (3)].dval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 174:
-#line 1348 "pir.y"
+#line 1346 "pir.y"
     { set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%s%T", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 175:
-#line 1350 "pir.y"
+#line 1348 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_s_s(yyscanner, (yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval))); ;}
     break;
 
   case 176:
-#line 1352 "pir.y"
+#line 1350 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_i(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
   case 177:
-#line 1354 "pir.y"
+#line 1352 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_n(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
   case 178:
-#line 1356 "pir.y"
+#line 1354 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_i_n(yyscanner, (yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval))); ;}
     break;
 
   case 179:
-#line 1358 "pir.y"
+#line 1356 "pir.y"
     { set_instrf(lexer, "set", "%C", fold_n_i(yyscanner, (yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival))); ;}
     break;
 
   case 180:
-#line 1363 "pir.y"
+#line 1361 "pir.y"
     { get_opinfo(yyscanner); ;}
     break;
 
   case 181:
-#line 1372 "pir.y"
+#line 1370 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 182:
-#line 1374 "pir.y"
+#line 1372 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "int", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 183:
-#line 1376 "pir.y"
+#line 1374 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "num", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 184:
-#line 1378 "pir.y"
+#line 1376 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "pmc", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 185:
-#line 1380 "pir.y"
+#line 1378 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "string", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 186:
-#line 1382 "pir.y"
+#line 1380 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "if", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 187:
-#line 1384 "pir.y"
+#line 1382 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "unless", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 188:
-#line 1386 "pir.y"
+#line 1384 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "goto", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 189:
-#line 1388 "pir.y"
+#line 1386 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (5)].ival), 1, "null", (yyvsp[(5) - (5)].sval)); ;}
     break;
 
   case 190:
-#line 1390 "pir.y"
+#line 1388 "pir.y"
     {
                           int istrue = evaluate_c(lexer, (yyvsp[(2) - (4)].cval));
                           /* if "unless", invert the true-ness */
@@ -3488,7 +3486,7 @@
     break;
 
   case 191:
-#line 1402 "pir.y"
+#line 1400 "pir.y"
     {
                           set_instrf(lexer, (yyvsp[(1) - (5)].ival) ? "unless_null" : "if_null", "%T%I",
                                      new_reg(lexer, PMC_TYPE, (yyvsp[(3) - (5)].ival)), (yyvsp[(5) - (5)].sval));
@@ -3496,67 +3494,67 @@
     break;
 
   case 192:
-#line 1407 "pir.y"
+#line 1405 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 193:
-#line 1409 "pir.y"
+#line 1407 "pir.y"
     { set_instrf(lexer, (yyvsp[(1) - (4)].ival) ? "unless" : "if", "%T%I", (yyvsp[(2) - (4)].targ), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 194:
-#line 1411 "pir.y"
+#line 1409 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "int", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 195:
-#line 1413 "pir.y"
+#line 1411 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "num", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 196:
-#line 1415 "pir.y"
+#line 1413 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "pmc", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 197:
-#line 1417 "pir.y"
+#line 1415 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "string", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 198:
-#line 1419 "pir.y"
+#line 1417 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "if", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 199:
-#line 1421 "pir.y"
+#line 1419 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "unless", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 200:
-#line 1423 "pir.y"
+#line 1421 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 201:
-#line 1425 "pir.y"
+#line 1423 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "goto", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 202:
-#line 1427 "pir.y"
+#line 1425 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 203:
-#line 1429 "pir.y"
+#line 1427 "pir.y"
     { create_if_instr(yyscanner, lexer, (yyvsp[(1) - (4)].ival), 0, "null", (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 204:
-#line 1431 "pir.y"
+#line 1429 "pir.y"
     {
                           if ((yyvsp[(2) - (4)].ival) == COMPUTE_DURING_RUNTIME) {
                              if ((yyvsp[(1) - (4)].ival) == NEED_INVERT_OPNAME) /* "unless" */
@@ -3584,7 +3582,7 @@
     break;
 
   case 205:
-#line 1462 "pir.y"
+#line 1460 "pir.y"
     {
                           /* the instructions "gt" and "ge" are converted to "lt" and "le".
                            * if so, then the arguments must be reversed as well. "lt" and
@@ -3613,7 +3611,7 @@
     break;
 
   case 206:
-#line 1488 "pir.y"
+#line 1486 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%i", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].ival));
@@ -3624,7 +3622,7 @@
     break;
 
   case 207:
-#line 1496 "pir.y"
+#line 1494 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival) + 1], "%T%n", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].dval));
@@ -3636,7 +3634,7 @@
     break;
 
   case 208:
-#line 1505 "pir.y"
+#line 1503 "pir.y"
     {
                           if (((yyvsp[(0) - (3)].ival) != NEED_INVERT_OPNAME) && ((yyvsp[(2) - (3)].ival) == OP_GE || (yyvsp[(2) - (3)].ival) == OP_GT))
                               set_instrf(lexer, opnames[(yyvsp[(2) - (3)].ival)], "%T%s", (yyvsp[(3) - (3)].targ), (yyvsp[(1) - (3)].sval));
@@ -3648,32 +3646,32 @@
     break;
 
   case 209:
-#line 1514 "pir.y"
+#line 1512 "pir.y"
     { (yyval.ival) = evaluate_i_i((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 210:
-#line 1516 "pir.y"
+#line 1514 "pir.y"
     { (yyval.ival) = evaluate_i_n((yyvsp[(1) - (3)].ival), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
   case 211:
-#line 1518 "pir.y"
+#line 1516 "pir.y"
     { (yyval.ival) = evaluate_n_i((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].ival)); ;}
     break;
 
   case 212:
-#line 1520 "pir.y"
+#line 1518 "pir.y"
     { (yyval.ival) = evaluate_n_n((yyvsp[(1) - (3)].dval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].dval)); ;}
     break;
 
   case 213:
-#line 1522 "pir.y"
+#line 1520 "pir.y"
     { (yyval.ival) = evaluate_s_s((yyvsp[(1) - (3)].sval), (yyvsp[(2) - (3)].ival), (yyvsp[(3) - (3)].sval)); ;}
     break;
 
   case 214:
-#line 1526 "pir.y"
+#line 1524 "pir.y"
     {
                           yypirerror(yyscanner, lexer, "cannot compare string to %s",
                                      (yyvsp[(3) - (3)].ival) == INT_TYPE ? "integer" : "number");
@@ -3681,37 +3679,37 @@
     break;
 
   case 215:
-#line 1531 "pir.y"
+#line 1529 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare integer to string"); ;}
     break;
 
   case 216:
-#line 1533 "pir.y"
+#line 1531 "pir.y"
     { yypirerror(yyscanner, lexer, "cannot compare number to string"); ;}
     break;
 
   case 217:
-#line 1537 "pir.y"
+#line 1535 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 218:
-#line 1538 "pir.y"
+#line 1536 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 219:
-#line 1541 "pir.y"
+#line 1539 "pir.y"
     { (yyval.ival) = DONT_INVERT_OPNAME; /* no need to invert */ ;}
     break;
 
   case 220:
-#line 1542 "pir.y"
+#line 1540 "pir.y"
     { (yyval.ival) = NEED_INVERT_OPNAME; /* yes, invert opname */ ;}
     break;
 
   case 223:
-#line 1550 "pir.y"
+#line 1548 "pir.y"
     {
                           set_instrf(lexer, "branch", "%I", (yyvsp[(2) - (3)].sval));
                           set_op_labelflag(lexer, BIT(0)); /* bit 0 means: "1 << 0" */
@@ -3720,37 +3718,37 @@
     break;
 
   case 224:
-#line 1558 "pir.y"
+#line 1556 "pir.y"
     { declare_local(lexer, (yyvsp[(2) - (4)].ival), (yyvsp[(3) - (4)].symb)); ;}
     break;
 
   case 225:
-#line 1562 "pir.y"
+#line 1560 "pir.y"
     { (yyval.symb) = (yyvsp[(1) - (1)].symb); ;}
     break;
 
   case 226:
-#line 1564 "pir.y"
+#line 1562 "pir.y"
     { (yyval.symb) = add_local((yyvsp[(1) - (3)].symb), (yyvsp[(3) - (3)].symb)); ;}
     break;
 
   case 227:
-#line 1568 "pir.y"
+#line 1566 "pir.y"
     { (yyval.symb) = new_local(lexer, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 228:
-#line 1571 "pir.y"
+#line 1569 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 229:
-#line 1572 "pir.y"
+#line 1570 "pir.y"
     { (yyval.ival) = 1; ;}
     break;
 
   case 230:
-#line 1576 "pir.y"
+#line 1574 "pir.y"
     { /* if $4 is not a register, it must be a declared symbol */
                           if (!TEST_FLAG((yyvsp[(4) - (5)].targ)->flags, TARGET_FLAG_IS_REG)) {
 
@@ -3763,12 +3761,12 @@
     break;
 
   case 231:
-#line 1591 "pir.y"
+#line 1589 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
   case 234:
-#line 1603 "pir.y"
+#line 1601 "pir.y"
     { /* $4 contains an invocation object */
                               set_invocation_args((yyvsp[(4) - (8)].invo), (yyvsp[(3) - (8)].argm));
                               set_invocation_results((yyvsp[(4) - (8)].invo), (yyvsp[(6) - (8)].targ));
@@ -3777,72 +3775,72 @@
     break;
 
   case 235:
-#line 1611 "pir.y"
+#line 1609 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 236:
-#line 1613 "pir.y"
+#line 1611 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 237:
-#line 1617 "pir.y"
+#line 1615 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 238:
-#line 1619 "pir.y"
+#line 1617 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 239:
-#line 1623 "pir.y"
+#line 1621 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 240:
-#line 1627 "pir.y"
+#line 1625 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(2) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 241:
-#line 1629 "pir.y"
+#line 1627 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_NCI, (yyvsp[(2) - (2)].targ)); ;}
     break;
 
   case 242:
-#line 1632 "pir.y"
+#line 1630 "pir.y"
     { (yyval.invo) = invoke(lexer, CALL_METHOD, (yyvsp[(2) - (5)].targ), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 243:
-#line 1636 "pir.y"
+#line 1634 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 244:
-#line 1638 "pir.y"
+#line 1636 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (2)].targ); ;}
     break;
 
   case 245:
-#line 1642 "pir.y"
+#line 1640 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 246:
-#line 1644 "pir.y"
+#line 1642 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 247:
-#line 1648 "pir.y"
+#line 1646 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 248:
-#line 1650 "pir.y"
+#line 1648 "pir.y"
     {
                                if ((yyvsp[(2) - (2)].targ))
                                    (yyval.targ) = add_target(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].targ));
@@ -3852,38 +3850,38 @@
     break;
 
   case 249:
-#line 1659 "pir.y"
+#line 1657 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 250:
-#line 1661 "pir.y"
+#line 1659 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 252:
-#line 1669 "pir.y"
+#line 1667 "pir.y"
     { set_invocation_results((yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ));
                              (yyval.invo) = (yyvsp[(3) - (3)].invo);
                            ;}
     break;
 
   case 253:
-#line 1673 "pir.y"
+#line 1671 "pir.y"
     { set_invocation_results((yyvsp[(3) - (3)].invo), (yyvsp[(1) - (3)].targ));
                              (yyval.invo) = (yyvsp[(3) - (3)].invo);
                            ;}
     break;
 
   case 254:
-#line 1677 "pir.y"
+#line 1675 "pir.y"
     { set_invocation_results((yyvsp[(1) - (1)].invo), NULL);
                              (yyval.invo) = (yyvsp[(1) - (1)].invo);
                            ;}
     break;
 
   case 257:
-#line 1687 "pir.y"
+#line 1685 "pir.y"
     {
                              target *invocant;
 
@@ -3912,7 +3910,7 @@
     break;
 
   case 258:
-#line 1715 "pir.y"
+#line 1713 "pir.y"
     {
                              (yyval.invo) = invoke(lexer, CALL_PCC, (yyvsp[(1) - (2)].targ), NULL);
                              set_invocation_args((yyval.invo), (yyvsp[(2) - (2)].argm));
@@ -3920,12 +3918,12 @@
     break;
 
   case 259:
-#line 1722 "pir.y"
+#line 1720 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 260:
-#line 1724 "pir.y"
+#line 1722 "pir.y"
     {
                                symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                                if (sym == NULL)
@@ -3935,7 +3933,7 @@
     break;
 
   case 261:
-#line 1733 "pir.y"
+#line 1731 "pir.y"
     { /* check that this identifier was declared */
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
 
@@ -3955,22 +3953,22 @@
     break;
 
   case 262:
-#line 1750 "pir.y"
+#line 1748 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
   case 263:
-#line 1752 "pir.y"
+#line 1750 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival))); ;}
     break;
 
   case 264:
-#line 1754 "pir.y"
+#line 1752 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval))); ;}
     break;
 
   case 265:
-#line 1758 "pir.y"
+#line 1756 "pir.y"
     {
                              symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                              if (sym == NULL)
@@ -3982,67 +3980,67 @@
     break;
 
   case 266:
-#line 1767 "pir.y"
+#line 1765 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 267:
-#line 1772 "pir.y"
+#line 1770 "pir.y"
     { (yyval.targ) = (yyvsp[(2) - (3)].targ); ;}
     break;
 
   case 268:
-#line 1776 "pir.y"
+#line 1774 "pir.y"
     { (yyval.targ) = NULL; ;}
     break;
 
   case 269:
-#line 1778 "pir.y"
+#line 1776 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 270:
-#line 1782 "pir.y"
+#line 1780 "pir.y"
     { (yyval.targ) = (yyvsp[(1) - (1)].targ); ;}
     break;
 
   case 271:
-#line 1784 "pir.y"
+#line 1782 "pir.y"
     { (yyval.targ) = add_target(lexer, (yyvsp[(1) - (3)].targ), (yyvsp[(3) - (3)].targ)); ;}
     break;
 
   case 272:
-#line 1788 "pir.y"
+#line 1786 "pir.y"
     { (yyval.targ) = set_param_flag(lexer, (yyvsp[(1) - (2)].targ), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 273:
-#line 1792 "pir.y"
+#line 1790 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 274:
-#line 1794 "pir.y"
+#line 1792 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 275:
-#line 1798 "pir.y"
+#line 1796 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPTIONAL; ;}
     break;
 
   case 276:
-#line 1800 "pir.y"
+#line 1798 "pir.y"
     { (yyval.ival) = TARGET_FLAG_OPT_FLAG; ;}
     break;
 
   case 277:
-#line 1802 "pir.y"
+#line 1800 "pir.y"
     { (yyval.ival) = TARGET_FLAG_SLURPY; ;}
     break;
 
   case 278:
-#line 1804 "pir.y"
+#line 1802 "pir.y"
     {
                              (yyval.ival) = TARGET_FLAG_NAMED;
                              set_param_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4050,12 +4048,12 @@
     break;
 
   case 279:
-#line 1814 "pir.y"
+#line 1812 "pir.y"
     { convert_inv_to_instr(lexer, (yyvsp[(1) - (1)].invo)); ;}
     break;
 
   case 284:
-#line 1824 "pir.y"
+#line 1822 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args((yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4063,7 +4061,7 @@
     break;
 
   case 285:
-#line 1829 "pir.y"
+#line 1827 "pir.y"
     { /* was the invocation a method call? then it becomes a method tail
                                * call, otherwise it's just a normal (sub) tail call.
                                */
@@ -4075,7 +4073,7 @@
     break;
 
   case 286:
-#line 1840 "pir.y"
+#line 1838 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args((yyval.invo), (yyvsp[(2) - (3)].argm));
@@ -4083,47 +4081,47 @@
     break;
 
   case 287:
-#line 1847 "pir.y"
+#line 1845 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 288:
-#line 1851 "pir.y"
+#line 1849 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 289:
-#line 1853 "pir.y"
+#line 1851 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 290:
-#line 1857 "pir.y"
+#line 1855 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 291:
-#line 1859 "pir.y"
+#line 1857 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (3)].argm), (yyvsp[(3) - (3)].argm)); ;}
     break;
 
   case 294:
-#line 1867 "pir.y"
+#line 1865 "pir.y"
     { (yyval.argm) = set_arg_alias(lexer, (yyvsp[(1) - (3)].sval)); ;}
     break;
 
   case 295:
-#line 1871 "pir.y"
+#line 1869 "pir.y"
     { (yyval.argm) = set_arg_flag((yyval.argm), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 296:
-#line 1875 "pir.y"
+#line 1873 "pir.y"
     { (yyval.argm) = set_curarg(lexer, new_argument(lexer, (yyvsp[(1) - (1)].expr)));  ;}
     break;
 
   case 297:
-#line 1881 "pir.y"
+#line 1879 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_RETURN);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4131,7 +4129,7 @@
     break;
 
   case 298:
-#line 1890 "pir.y"
+#line 1888 "pir.y"
     {
                               (yyval.invo) = invoke(lexer, CALL_YIELD);
                               set_invocation_args((yyval.invo), (yyvsp[(3) - (5)].argm));
@@ -4139,72 +4137,72 @@
     break;
 
   case 299:
-#line 1897 "pir.y"
+#line 1895 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 300:
-#line 1899 "pir.y"
+#line 1897 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 301:
-#line 1904 "pir.y"
+#line 1902 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 302:
-#line 1906 "pir.y"
+#line 1904 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 303:
-#line 1911 "pir.y"
+#line 1909 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 304:
-#line 1915 "pir.y"
+#line 1913 "pir.y"
     { (yyval.argm) = NULL; ;}
     break;
 
   case 305:
-#line 1917 "pir.y"
+#line 1915 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 306:
-#line 1921 "pir.y"
+#line 1919 "pir.y"
     { (yyval.argm) = (yyvsp[(1) - (1)].argm); ;}
     break;
 
   case 307:
-#line 1923 "pir.y"
+#line 1921 "pir.y"
     { (yyval.argm) = add_arg((yyvsp[(1) - (2)].argm), (yyvsp[(2) - (2)].argm)); ;}
     break;
 
   case 308:
-#line 1927 "pir.y"
+#line 1925 "pir.y"
     { (yyval.argm) = (yyvsp[(2) - (3)].argm); ;}
     break;
 
   case 309:
-#line 1932 "pir.y"
+#line 1930 "pir.y"
     { (yyval.ival) = 0; ;}
     break;
 
   case 310:
-#line 1934 "pir.y"
+#line 1932 "pir.y"
     { SET_FLAG((yyval.ival), (yyvsp[(2) - (2)].ival)); ;}
     break;
 
   case 311:
-#line 1938 "pir.y"
+#line 1936 "pir.y"
     { (yyval.ival) = ARG_FLAG_FLAT; ;}
     break;
 
   case 312:
-#line 1940 "pir.y"
+#line 1938 "pir.y"
     {
                                (yyval.ival) = ARG_FLAG_NAMED;
                                set_arg_alias(lexer, (yyvsp[(2) - (2)].sval));
@@ -4212,132 +4210,132 @@
     break;
 
   case 313:
-#line 1947 "pir.y"
+#line 1945 "pir.y"
     { (yyval.sval) = NULL; ;}
     break;
 
   case 314:
-#line 1949 "pir.y"
+#line 1947 "pir.y"
     { (yyval.sval) = (yyvsp[(1) - (1)].sval); ;}
     break;
 
   case 315:
-#line 1953 "pir.y"
+#line 1951 "pir.y"
     { (yyval.sval) = (yyvsp[(2) - (3)].sval); ;}
     break;
 
   case 319:
-#line 1964 "pir.y"
+#line 1962 "pir.y"
     { store_global_constant(lexer, (yyvsp[(2) - (2)].cval)); ;}
     break;
 
   case 320:
-#line 1968 "pir.y"
+#line 1966 "pir.y"
     { /* XXX is .globalconst to be kept? */ ;}
     break;
 
   case 321:
-#line 1972 "pir.y"
+#line 1970 "pir.y"
     { (yyval.cval) = new_named_const(lexer, INT_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].ival)); ;}
     break;
 
   case 322:
-#line 1974 "pir.y"
+#line 1972 "pir.y"
     { (yyval.cval) = new_named_const(lexer, NUM_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].dval)); ;}
     break;
 
   case 323:
-#line 1976 "pir.y"
+#line 1974 "pir.y"
     { (yyval.cval) = new_named_const(lexer, STRING_TYPE, (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].sval)); ;}
     break;
 
   case 324:
-#line 1978 "pir.y"
+#line 1976 "pir.y"
     { (yyval.cval) = new_pmc_const((yyvsp[(1) - (4)].sval), (yyvsp[(2) - (4)].sval), (yyvsp[(4) - (4)].cval)); ;}
     break;
 
   case 325:
-#line 1985 "pir.y"
+#line 1983 "pir.y"
     { (yyval.expr) = expr_from_target(lexer, (yyvsp[(1) - (1)].targ)); ;}
     break;
 
   case 326:
-#line 1986 "pir.y"
+#line 1984 "pir.y"
     { (yyval.expr) = expr_from_const(lexer, (yyvsp[(1) - (1)].cval)); ;}
     break;
 
   case 327:
-#line 1990 "pir.y"
+#line 1988 "pir.y"
     { (yyval.cval) = new_const(lexer, STRING_TYPE, (yyvsp[(1) - (1)].sval)); ;}
     break;
 
   case 328:
-#line 1991 "pir.y"
+#line 1989 "pir.y"
     { (yyval.cval) = new_const(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 329:
-#line 1992 "pir.y"
+#line 1990 "pir.y"
     { (yyval.cval) = new_const(lexer, NUM_TYPE, (yyvsp[(1) - (1)].dval)); ;}
     break;
 
   case 330:
-#line 1995 "pir.y"
+#line 1993 "pir.y"
     { (yyval.ival) = OP_NE; ;}
     break;
 
   case 331:
-#line 1996 "pir.y"
+#line 1994 "pir.y"
     { (yyval.ival) = OP_EQ; ;}
     break;
 
   case 332:
-#line 1997 "pir.y"
+#line 1995 "pir.y"
     { (yyval.ival) = OP_LT; ;}
     break;
 
   case 333:
-#line 1998 "pir.y"
+#line 1996 "pir.y"
     { (yyval.ival) = OP_LE; ;}
     break;
 
   case 334:
-#line 1999 "pir.y"
+#line 1997 "pir.y"
     { (yyval.ival) = OP_GE; ;}
     break;
 
   case 335:
-#line 2000 "pir.y"
+#line 1998 "pir.y"
     { (yyval.ival) = OP_GT; ;}
     break;
 
   case 336:
-#line 2003 "pir.y"
+#line 2001 "pir.y"
     { (yyval.ival) = INT_TYPE; ;}
     break;
 
   case 337:
-#line 2004 "pir.y"
+#line 2002 "pir.y"
     { (yyval.ival) = NUM_TYPE; ;}
     break;
 
   case 338:
-#line 2005 "pir.y"
+#line 2003 "pir.y"
     { (yyval.ival) = PMC_TYPE; ;}
     break;
 
   case 339:
-#line 2006 "pir.y"
+#line 2004 "pir.y"
     { (yyval.ival) = STRING_TYPE; ;}
     break;
 
   case 340:
-#line 2014 "pir.y"
+#line 2012 "pir.y"
     { set_curtarget(lexer, (yyvsp[(1) - (1)].targ));  ;}
     break;
 
   case 342:
-#line 2018 "pir.y"
+#line 2016 "pir.y"
     { /* a symbol must have been declared; check that at this point. */
                            symbol *sym = find_symbol(lexer, (yyvsp[(1) - (1)].sval));
                            if (sym == NULL) {
@@ -4352,277 +4350,277 @@
     break;
 
   case 343:
-#line 2031 "pir.y"
+#line 2029 "pir.y"
     { (yyval.targ) = new_reg(lexer, PMC_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 344:
-#line 2032 "pir.y"
+#line 2030 "pir.y"
     { (yyval.targ) = new_reg(lexer, NUM_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 345:
-#line 2033 "pir.y"
+#line 2031 "pir.y"
     { (yyval.targ) = new_reg(lexer, INT_TYPE, (yyvsp[(1) - (1)].ival));    ;}
     break;
 
   case 346:
-#line 2034 "pir.y"
+#line 2032 "pir.y"
     { (yyval.targ) = new_reg(lexer, STRING_TYPE, (yyvsp[(1) - (1)].ival)); ;}
     break;
 
   case 349:
-#line 2042 "pir.y"
+#line 2040 "pir.y"
     { (yyval.sval) = "if"; ;}
     break;
 
   case 350:
-#line 2043 "pir.y"
+#line 2041 "pir.y"
     { (yyval.sval) = "unless"; ;}
     break;
 
   case 351:
-#line 2044 "pir.y"
+#line 2042 "pir.y"
     { (yyval.sval) = "goto"; ;}
     break;
 
   case 352:
-#line 2045 "pir.y"
+#line 2043 "pir.y"
     { (yyval.sval) = "int"; ;}
     break;
 
   case 353:
-#line 2046 "pir.y"
+#line 2044 "pir.y"
     { (yyval.sval) = "num"; ;}
     break;
 
   case 354:
-#line 2047 "pir.y"
+#line 2045 "pir.y"
     { (yyval.sval) = "string"; ;}
     break;
 
   case 355:
-#line 2048 "pir.y"
+#line 2046 "pir.y"
     { (yyval.sval) = "pmc"; ;}
     break;
 
   case 356:
-#line 2049 "pir.y"
+#line 2047 "pir.y"
     { (yyval.sval) = "null"; ;}
     break;
 
   case 357:
-#line 2052 "pir.y"
+#line 2050 "pir.y"
     { (yyval.sval) = "neg"; ;}
     break;
 
   case 358:
-#line 2053 "pir.y"
+#line 2051 "pir.y"
     { (yyval.sval) = "not"; ;}
     break;
 
   case 359:
-#line 2054 "pir.y"
+#line 2052 "pir.y"
     { (yyval.sval) = "bnot"; ;}
     break;
 
   case 360:
-#line 2057 "pir.y"
+#line 2055 "pir.y"
     { (yyval.ival) = OP_ADD; ;}
     break;
 
   case 361:
-#line 2058 "pir.y"
+#line 2056 "pir.y"
     { (yyval.ival) = OP_SUB; ;}
     break;
 
   case 362:
-#line 2059 "pir.y"
+#line 2057 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 363:
-#line 2060 "pir.y"
+#line 2058 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 364:
-#line 2061 "pir.y"
+#line 2059 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 365:
-#line 2062 "pir.y"
+#line 2060 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 366:
-#line 2063 "pir.y"
+#line 2061 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 367:
-#line 2064 "pir.y"
+#line 2062 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 368:
-#line 2065 "pir.y"
+#line 2063 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
   case 369:
-#line 2066 "pir.y"
+#line 2064 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 370:
-#line 2067 "pir.y"
+#line 2065 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 371:
-#line 2068 "pir.y"
+#line 2066 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 372:
-#line 2069 "pir.y"
+#line 2067 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 373:
-#line 2070 "pir.y"
+#line 2068 "pir.y"
     { (yyval.ival) = OP_OR; ;}
     break;
 
   case 374:
-#line 2071 "pir.y"
+#line 2069 "pir.y"
     { (yyval.ival) = OP_AND; ;}
     break;
 
   case 375:
-#line 2072 "pir.y"
+#line 2070 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 376:
-#line 2073 "pir.y"
+#line 2071 "pir.y"
     { (yyval.ival) = OP_XOR; ;}
     break;
 
   case 377:
-#line 2074 "pir.y"
+#line 2072 "pir.y"
     { (yyval.ival) = OP_ISEQ; ;}
     break;
 
   case 378:
-#line 2075 "pir.y"
+#line 2073 "pir.y"
     { (yyval.ival) = OP_ISLE; ;}
     break;
 
   case 379:
-#line 2076 "pir.y"
+#line 2074 "pir.y"
     { (yyval.ival) = OP_ISLT; ;}
     break;
 
   case 380:
-#line 2077 "pir.y"
+#line 2075 "pir.y"
     { (yyval.ival) = OP_ISGE; ;}
     break;
 
   case 381:
-#line 2078 "pir.y"
+#line 2076 "pir.y"
     { (yyval.ival) = OP_ISGT; ;}
     break;
 
   case 382:
-#line 2079 "pir.y"
+#line 2077 "pir.y"
     { (yyval.ival) = OP_ISNE; ;}
     break;
 
   case 383:
-#line 2085 "pir.y"
+#line 2083 "pir.y"
     { (yyval.ival) = OP_MUL; ;}
     break;
 
   case 384:
-#line 2086 "pir.y"
+#line 2084 "pir.y"
     { (yyval.ival) = OP_MOD; ;}
     break;
 
   case 385:
-#line 2087 "pir.y"
+#line 2085 "pir.y"
     { (yyval.ival) = OP_POW; ;}
     break;
 
   case 386:
-#line 2088 "pir.y"
+#line 2086 "pir.y"
     { (yyval.ival) = OP_DIV; ;}
     break;
 
   case 387:
-#line 2089 "pir.y"
+#line 2087 "pir.y"
     { (yyval.ival) = OP_FDIV; ;}
     break;
 
   case 388:
-#line 2090 "pir.y"
+#line 2088 "pir.y"
     { (yyval.ival) = OP_BOR; ;}
     break;
 
   case 389:
-#line 2091 "pir.y"
+#line 2089 "pir.y"
     { (yyval.ival) = OP_BAND; ;}
     break;
 
   case 390:
-#line 2092 "pir.y"
+#line 2090 "pir.y"
     { (yyval.ival) = OP_BXOR; ;}
     break;
 
   case 391:
-#line 2093 "pir.y"
+#line 2091 "pir.y"
     { (yyval.ival) = OP_CONCAT; ;}
     break;
 
   case 392:
-#line 2094 "pir.y"
+#line 2092 "pir.y"
     { (yyval.ival) = OP_SHR; ;}
     break;
 
   case 393:
-#line 2095 "pir.y"
+#line 2093 "pir.y"
     { (yyval.ival) = OP_SHL; ;}
     break;
 
   case 394:
-#line 2096 "pir.y"
+#line 2094 "pir.y"
     { (yyval.ival) = OP_LSR; ;}
     break;
 
   case 396:
-#line 2117 "pir.y"
+#line 2115 "pir.y"
     { new_subr(lexer, "@start"); ;}
     break;
 
   case 405:
-#line 2133 "pir.y"
+#line 2131 "pir.y"
     { set_label(lexer, (yyvsp[(1) - (2)].sval)); ;}
     break;
 
   case 410:
-#line 2143 "pir.y"
+#line 2141 "pir.y"
     { set_sub_name(lexer, (yyvsp[(3) - (3)].sval)); ;}
     break;
 
   case 411:
-#line 2147 "pir.y"
+#line 2145 "pir.y"
     { new_subr(lexer, NULL); ;}
     break;
 
   case 412:
-#line 2152 "pir.y"
+#line 2150 "pir.y"
     {
                                   if (is_parrot_op(lexer, (yyvsp[(1) - (3)].sval)))
                                       get_opinfo(yyscanner);
@@ -4634,7 +4632,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4638 "pirparser.c"
+#line 4636 "pirparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -4848,7 +4846,7 @@
 }
 
 
-#line 2163 "pir.y"
+#line 2161 "pir.y"
 
 
 
@@ -5781,6 +5779,7 @@
     if (newop == -1)
         return;
 
+
     /* if there's more than 2 operands, do strength reduction. op_count also
      * counts the operand itself, so compare with 3, not 2.
      */
@@ -5902,12 +5901,14 @@
     if (!CURRENT_INSTRUCTION(lexer)->opinfo->dirs)
         fprintf(stderr, "no opinfo->dirs!\n");
     else {
-        op_info_t *opinfo =     CURRENT_INSTRUCTION(lexer)->opinfo;
-        if (opinfo)
+        op_info_t *opinfo = CURRENT_INSTRUCTION(lexer)->opinfo;
 
+        if (opinfo)
             dir_first_arg = CURRENT_INSTRUCTION(lexer)->opinfo->dirs[0];
-        else
+        else {
             fprintf(stderr, " no opinfo!\n");
+            return;
+        }
     }
 
     /* direction cannot be IN or INOUT */

Modified: branches/rakudoreg/config/gen/makefiles.pm
==============================================================================
--- branches/rakudoreg/config/gen/makefiles.pm	(original)
+++ branches/rakudoreg/config/gen/makefiles.pm	Wed Dec 17 13:31:52 2008
@@ -46,8 +46,6 @@
             { SOURCE => 'config/gen/makefiles/pge.in' },
         'compilers/tge/Makefile'     =>
             { SOURCE => 'config/gen/makefiles/tge.in' },
-        'compilers/bcg/Makefile'     =>
-            { SOURCE => 'config/gen/makefiles/bcg.in' },
         'compilers/json/Makefile'    =>
             { SOURCE => 'config/gen/makefiles/json.in' },
         'compilers/pirc/Makefile'    =>

Modified: branches/rakudoreg/config/gen/makefiles/root.in
==============================================================================
--- branches/rakudoreg/config/gen/makefiles/root.in	(original)
+++ branches/rakudoreg/config/gen/makefiles/root.in	Wed Dec 17 13:31:52 2008
@@ -139,7 +139,6 @@
 GEN_MAKEFILES = \
     Makefile \
 #CONDITIONED_LINE(has_perldoc):    docs/Makefile \
-    compilers/bcg/Makefile \
     compilers/json/Makefile \
     compilers/ncigen/Makefile \
     compilers/nqp/Makefile \

Modified: branches/rakudoreg/docs/parrothist.pod
==============================================================================
--- branches/rakudoreg/docs/parrothist.pod	(original)
+++ branches/rakudoreg/docs/parrothist.pod	Wed Dec 17 13:31:52 2008
@@ -44,90 +44,92 @@
 
 =head1 THE RECORDS
 
- Pump-  Release         Date            Release name
+ Pump-       Release        Date            Release name
  king
  ===========================================================================
 
- Simon     0.0.1          2001-Sep-10     n/a
-           0.0.2          2001-Oct-05     n/a
-           0.0.3          2001-Dec-08     n/a
-           0.0.4          2002-Mar-19     n/a
+ Simon       0.0.1          2001-Sep-10     n/a
+             0.0.2          2001-Oct-05     n/a
+             0.0.3          2001-Dec-08     n/a
+             0.0.4          2002-Mar-19     n/a
 
- Jeff      0.0.5          2002-Apr-16     n/a
-           0.0.6          2002-Jun-04     n/a
-           0.0.7          2002-Jul-18     "Percy"
-           0.0.8          2002-Sep-01     "Octarine"
-           0.0.8.1        2002-Sep-01     (bugfix release)
+ Jeff        0.0.5          2002-Apr-16     n/a
+             0.0.6          2002-Jun-04     n/a
+             0.0.7          2002-Jul-18     "Percy"
+             0.0.8          2002-Sep-01     "Octarine"
+             0.0.8.1        2002-Sep-01     (bugfix release)
 
- Steve     0.0.9          2002-Dec-19     "Nazgul"
-           0.0.10         2003-Mar-16     "Juice"
-           0.0.11         2003-Sep-20     "Dubloon"
-           0.0.11.2       2003-Sep-22     (bugfix release)
+ Steve       0.0.9          2002-Dec-19     "Nazgul"
+             0.0.10         2003-Mar-16     "Juice"
+             0.0.11         2003-Sep-20     "Dubloon"
+             0.0.11.2       2003-Sep-22     (bugfix release)
 
- Leo       0.0.13         2003-Oct-31     "Screaming Pumpkin"
-           0.1.0          2004-Feb-29     "Leaping Kakapo"
-           0.1.1          2004-Oct-09     "Poicephalus"
-           0.1.2          2005-Mar-06     "Phoenix"
-           0.2.0          2005-May-08     "NLnet"
-           0.2.1          2005-Jun-04     "APW"
-           0.2.2          2005-Jul-03     "Geeksunite"
-           0.2.3          2005-Aug-05     "Serenity"
-           0.3.0          2005-Oct-01     "Alex"
-           0.3.1          2005-Nov-06     "Wart"
-           0.4.0          2005-Dec-04     "Luthor"
-           0.4.1          2006-Jan-08     "Foghorn Leghorn"
-           0.4.2          2006-Feb-22     "GPW"
-           0.4.3          2006-Apr-02     "Cold Conure"
-           0.4.4          2006-May-14     "Feather"
-           0.4.5          2006-Jun-19     n/a
+ Leo         0.0.13         2003-Oct-31     "Screaming Pumpkin"
+             0.1.0          2004-Feb-29     "Leaping Kakapo"
+             0.1.1          2004-Oct-09     "Poicephalus"
+             0.1.2          2005-Mar-06     "Phoenix"
+             0.2.0          2005-May-08     "NLnet"
+             0.2.1          2005-Jun-04     "APW"
+             0.2.2          2005-Jul-03     "Geeksunite"
+             0.2.3          2005-Aug-05     "Serenity"
+             0.3.0          2005-Oct-01     "Alex"
+             0.3.1          2005-Nov-06     "Wart"
+             0.4.0          2005-Dec-04     "Luthor"
+             0.4.1          2006-Jan-08     "Foghorn Leghorn"
+             0.4.2          2006-Feb-22     "GPW"
+             0.4.3          2006-Apr-02     "Cold Conure"
+             0.4.4          2006-May-14     "Feather"
+             0.4.5          2006-Jun-19     n/a
 
- Chip      0.4.6          2006-Aug-08     n/a
-           0.4.7          2006-Nov-14     "Caique"
+ Chip        0.4.6          2006-Aug-08     n/a
+             0.4.7          2006-Nov-14     "Caique"
 
- Jerry     0.4.8b         2007-Jan-16     "Eponymous"
+ Jerry       0.4.8b         2007-Jan-16     "Eponymous"
 
- Patrick   0.4.9          2007-Feb-22     "Socorro"
+ Patrick     0.4.9          2007-Feb-22     "Socorro"
 
- Will      0.4.10         2007-Mar-20     "Release Formerly Known as Prince"
+ Will        0.4.10         2007-Mar-20     "Release Formerly Known as Prince"
 
- Matt      0.4.11         2007-Apr-17     "Tax Bird"
+ Matt        0.4.11         2007-Apr-17     "Tax Bird"
 
- chromatic 0.4.12         2007-May-15     "Of The Caribbean"
+ chromatic   0.4.12         2007-May-15     "Of The Caribbean"
 
- Allison   0.4.13         2007-Jun-19     "Clifton"
+ Allison     0.4.13         2007-Jun-19     "Clifton"
 
- Jerry     0.4.14         2007-Jul-17     "Now, with Seat Belts!"
+ Jerry       0.4.14         2007-Jul-17     "Now, with Seat Belts!"
 
- Patrick   0.4.15         2007-Aug-22     "Augean Stable"
+ Patrick     0.4.15         2007-Aug-22     "Augean Stable"
 
- Jerry     0.4.16         2007-Sep-18     "A Farewell to Alex"
+ Jerry       0.4.16         2007-Sep-18     "A Farewell to Alex"
 
- Will      0.4.17         2007-Oct-17     "Two for Finching"
+ Will        0.4.17         2007-Oct-17     "Two for Finching"
 
- chromatic 0.5.0          2007-Nov-20     "Caulked Snack"
+ chromatic   0.5.0          2007-Nov-20     "Caulked Snack"
 
- Jonathan  0.5.1          2007-Dec-18     "Hatachi"
+ Jonathan    0.5.1          2007-Dec-18     "Hatachi"
 
- Bob       0.5.2          2008-Jan-15     "P.e. nipalensis"
+ Bob         0.5.2          2008-Jan-15     "P.e. nipalensis"
 
- Patrick   0.5.3          2008-Feb-20     "Way of the Parrot"
+ Patrick     0.5.3          2008-Feb-20     "Way of the Parrot"
 
- Barney    0.6.0          2008-Mar-18     "P&P"
+ Barney      0.6.0          2008-Mar-18     "P&P"
 
- Jerry     0.6.1          2008-Apr-15     "Bird of Paradise"
+ Jerry       0.6.1          2008-Apr-15     "Bird of Paradise"
 
- chromatic 0.6.2          2008-May-20     "Reverse Sublimation"
+ chromatic   0.6.2          2008-May-20     "Reverse Sublimation"
 
- smash     0.6.3          2008-Jun-17     "Beautiful Parrot"
+ smash       0.6.3          2008-Jun-17     "Beautiful Parrot"
 
- Barney    0.6.4          2008-Jul-15     "St. Vincent Amazon"
+ Barney      0.6.4          2008-Jul-15     "St. Vincent Amazon"
 
- Bob       0.7.0          2008-Aug-19     "Severe Macaw"
+ Bob         0.7.0          2008-Aug-19     "Severe Macaw"
 
- Patrick   0.7.1          2008-Sep-16     "Manu Aloha"
+ Patrick     0.7.1          2008-Sep-16     "Manu Aloha"
 
- particle  0.8.0          2008-Oct-21     "Pareto Principle"
+ particle    0.8.0          2008-Oct-21     "Pareto Principle"
 
- chromatic 0.8.1          2008-Nov-18     "Tio Richie"
+ chromatic   0.8.1          2008-Nov-18     "Tio Richie"
+
+ Whiteknight 0.8.2          2008-Dec-16     "Feliz Loro"
 
 =cut

Modified: branches/rakudoreg/docs/pdds/draft/pdd14_numbers.pod
==============================================================================
--- branches/rakudoreg/docs/pdds/draft/pdd14_numbers.pod	(original)
+++ branches/rakudoreg/docs/pdds/draft/pdd14_numbers.pod	Wed Dec 17 13:31:52 2008
@@ -582,8 +582,8 @@
 
 =head1 REFERENCES
 
-IBM's Standard Decimal Arithmetic, with tests (sadly, link appears to have
-disappeared)
+IBM's Standard Decimal Arithmetic, with tests
+(L<http://speleotrove.com/decimal/>)
 
 The Perl modules Math::BigInt and Math::BigFloat.
 

Modified: branches/rakudoreg/docs/pdds/pdd19_pir.pod
==============================================================================
--- branches/rakudoreg/docs/pdds/pdd19_pir.pod	(original)
+++ branches/rakudoreg/docs/pdds/pdd19_pir.pod	Wed Dec 17 13:31:52 2008
@@ -734,42 +734,16 @@
 
 =item <var> = <var> [ <var> ]
 
-A keyed C<set> operation for PMCs or a substring operation for string
-arguments and an integer key.
+A keyed C<set> operation for PMCs to retrieve a value from an aggregate.
+This maps to:
 
-{{ DEPRECATION NOTE: The substring operation for string arguments is
-   deprecated, and will be removed after the 0.8.2 release. }}
-
-=item <var> = <var> [ <key> ]
-
-{{ NOTE: keyed assignment is still valid in PIR, but the C<..> notation in
-keys is deprecated [See RT #48561], so this syntactic sugar for slices is also
-deprecated. See the (currently experimental) C<slice> opcode instead, but
-this, too, is deprecated. }}
-
-where C<key> is:
-
- <var1> .. <var2>
-
-returns a slice defined starting at C<var1> and ending at C<var2>.
-
- .. <var2>
-
-returns a slice starting at the first element, and ending at C<var2>.
-
- <var1> ..
-
-returns a slice starting at C<var1> to the end of the array.
-
-see src/pmc/slice.pmc
-and t/pmc/slice.t.
+  set <var>, <var> [ <var> ]
 
 =item <var> [ <var> ] = <var>
 
-A keyed C<set> operation.
+A keyed C<set> operation to set a value in an aggregate. This maps to:
 
-{{ DEPRECATION NOTE: this syntactic sugar will no longer be used for the
-assign C<substr> op with a length of 1. }}
+  set <var> [ <var> ], <var>
 
 =item <var> = <opcode> <arguments>
 

Modified: branches/rakudoreg/docs/project/release_manager_guide.pod
==============================================================================
--- branches/rakudoreg/docs/project/release_manager_guide.pod	(original)
+++ branches/rakudoreg/docs/project/release_manager_guide.pod	Wed Dec 17 13:31:52 2008
@@ -198,10 +198,22 @@
 SSH to ftp-osl.osuosl.org. (If you don't have the necessary login information,
 get it from one of the previous release managers.)
 
-Make a new directory for the new release named "a.b.c" after the version
-number. If the release is in the stable series (1.0, 1.5, 2.0, 2.5, etc) create
-the new directory in F<ftp/releases/stable>, if the release is a monthly
-release between stable versions, create the directory in F<ftp/releases/devel>.
+ $ ssh -l <USERNAME> ftp-osl-osuosl.org
+ $ cd /data/ftp/.2/parrot/releases
+
+If the release is a monthly point release, create a new directory under
+F<ftp/devel>.
+
+ $ cd devel
+ $ mkdir a.b.c
+ $ cd a.b.c
+
+If the release is in the stable series (1.0, 1.5, 2.0, 2.5, etc) create
+the new directory in F<ftp/releases/stable> instead.
+
+ $ cd stable
+ $ mkdir a.b.c
+ $ cd a.b.c
 
 Copy the tarball into the new directory. (Using C<scp> or C<wget> or whatever
 tool you prefer.)
@@ -403,7 +415,6 @@
 determined each month, and will depend on the features actually present in
 that release.
 
- - December 16th, 2008  - Andrew Whitworth
  - January 20th, 2009   - chromatic
 
 =cut

Modified: branches/rakudoreg/include/parrot/hash.h
==============================================================================
--- branches/rakudoreg/include/parrot/hash.h	(original)
+++ branches/rakudoreg/include/parrot/hash.h	Wed Dec 17 13:31:52 2008
@@ -225,25 +225,29 @@
         FUNC_MODIFIES(*hash);
 
 void parrot_new_hash_x(
+    PARROT_INTERP,
     ARGOUT(Hash **hptr),
     PARROT_DATA_TYPE val_type,
     Hash_key_type hkey_type,
     NOTNULL(hash_comp_fn compare),
     NOTNULL(hash_hash_key_fn keyhash))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(4)
+        __attribute__nonnull__(2)
         __attribute__nonnull__(5)
+        __attribute__nonnull__(6)
         FUNC_MODIFIES(*hptr);
 
 void parrot_new_pmc_hash_x(
+    PARROT_INTERP,
     ARGMOD(PMC *container),
     PARROT_DATA_TYPE val_type,
     Hash_key_type hkey_type,
     NOTNULL(hash_comp_fn compare),
     NOTNULL(hash_hash_key_fn keyhash))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(4)
+        __attribute__nonnull__(2)
         __attribute__nonnull__(5)
+        __attribute__nonnull__(6)
         FUNC_MODIFIES(*container);
 
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */

Modified: branches/rakudoreg/include/parrot/interpreter.h
==============================================================================
--- branches/rakudoreg/include/parrot/interpreter.h	(original)
+++ branches/rakudoreg/include/parrot/interpreter.h	Wed Dec 17 13:31:52 2008
@@ -377,6 +377,8 @@
     /* per interpreter global vars */
     INTVAL world_inited;                      /* world_init_once() is done */
 
+    UINTVAL hash_seed;                        /* STRING hash seed */
+
     PMC *iglobals;                            /* SArray of PMCs, containing: */
     /* 0:   PMC *Parrot_base_classname_hash; hash containing name->base_type */
     /* 1:   PMC *Parrot_compreg_hash;    hash containing assembler/compilers */

Modified: branches/rakudoreg/include/parrot/string_funcs.h
==============================================================================
--- branches/rakudoreg/include/parrot/string_funcs.h	(original)
+++ branches/rakudoreg/include/parrot/string_funcs.h	Wed Dec 17 13:31:52 2008
@@ -291,7 +291,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-size_t string_hash(PARROT_INTERP, ARGMOD_NULLOK(STRING *s), size_t seed)
+size_t string_hash(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
         __attribute__nonnull__(1);
 
 PARROT_EXPORT

Modified: branches/rakudoreg/languages/lua/src/pmc/luatable.pmc
==============================================================================
--- branches/rakudoreg/languages/lua/src/pmc/luatable.pmc	(original)
+++ branches/rakudoreg/languages/lua/src/pmc/luatable.pmc	Wed Dec 17 13:31:52 2008
@@ -101,7 +101,7 @@
         h = PMC_int_val(key);
     }
     else if (PMC_type(key) == dynpmc_LuaString) {
-        h = string_hash(interp, VTABLE_get_string(interp, key), 3793);
+        h = string_hash(interp, VTABLE_get_string(interp, key));
     }
     else {
         h = (unsigned long)PMC_struct_val(key);
@@ -117,7 +117,7 @@
 /* specialized version for strings */
 static PMC** lua_getstr(PARROT_INTERP, const LuaHash *t, STRING *key)
 {
-    unsigned long h = string_hash(interp, key, 3793);
+    unsigned long h = string_hash(interp, key);
     Node         *n = &t->node[h&(t->size-1)];
 
     do {

Modified: branches/rakudoreg/languages/perl6/config/makefiles/root.in
==============================================================================
--- branches/rakudoreg/languages/perl6/config/makefiles/root.in	(original)
+++ branches/rakudoreg/languages/perl6/config/makefiles/root.in	Wed Dec 17 13:31:52 2008
@@ -55,6 +55,7 @@
   src/classes/Protoobject.pir \
   src/classes/Positional.pir \
   src/classes/Associative.pir \
+  src/classes/Callable.pir \
   src/classes/Any.pir \
   src/classes/Bool.pir \
   src/classes/Str.pir \

Modified: branches/rakudoreg/languages/perl6/docs/spectest-progress.csv
==============================================================================
--- branches/rakudoreg/languages/perl6/docs/spectest-progress.csv	(original)
+++ branches/rakudoreg/languages/perl6/docs/spectest-progress.csv	Wed Dec 17 13:31:52 2008
@@ -208,3 +208,4 @@
 "2008-12-14 00:00",33844,5005,0,410,1480,6895,9356,240
 "2008-12-15 00:00",33898,5101,0,383,1485,6969,9435,249
 "2008-12-16 00:00",33949,5139,0,357,1473,6969,9435,249
+"2008-12-17 00:00",34009,5170,0,350,1462,6982,9448,250

Modified: branches/rakudoreg/languages/perl6/src/builtins/any-str.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/builtins/any-str.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/builtins/any-str.pir	Wed Dec 17 13:31:52 2008
@@ -517,8 +517,10 @@
     len = self.'chars'()
   have_len:
     if len >= 0 goto len_done
+    if start < 0 goto neg_start
     $I0 = self.'chars'()
     len += $I0
+  neg_start:
     len -= start
   len_done:
     $S0 = self

Modified: branches/rakudoreg/languages/perl6/src/builtins/guts.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/builtins/guts.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/builtins/guts.pir	Wed Dec 17 13:31:52 2008
@@ -409,18 +409,10 @@
 
 .sub '!keyword_grammar'
     .param string name
-    .local pmc info, grammar
+    .local pmc grammar
 
-    # Need to make sure it ends up attached to the right
-    # namespace.
-    info = new 'Hash'
-    info['name'] = name
-    $P0 = new 'ResizablePMCArray'
-    $P0[0] = name
-    info['namespace'] = $P0
-
-    # Create grammar class..
-    grammar = new 'Class', info
+    $P0 = split "::", name
+    grammar = newclass $P0
 
     .return(grammar)
 .end

Modified: branches/rakudoreg/languages/perl6/src/classes/Code.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Code.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Code.pir	Wed Dec 17 13:31:52 2008
@@ -17,6 +17,8 @@
     .local pmc p6meta, codeproto
     p6meta = get_hll_global ['Perl6Object'], '$!P6META'
     codeproto = p6meta.'new_class'('Code', 'parent'=>'Any')
+    $P0 = get_hll_global 'Callable'
+    p6meta.'add_role'($P0, 'to'=>codeproto)
     codeproto.'!IMMUTABLE'()
     p6meta.'register'('Sub', 'parent'=>codeproto, 'protoobject'=>codeproto)
 .end

Modified: branches/rakudoreg/languages/perl6/src/classes/Int.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Int.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Int.pir	Wed Dec 17 13:31:52 2008
@@ -37,6 +37,12 @@
 .end
 
 
+.sub 'abs' :method :multi('Integer')
+    $P0 = n_abs self
+    .return ($P0)
+.end
+
+
 =item ACCEPTS()
 
 =cut
@@ -47,6 +53,7 @@
 .end
 
 
+
 =item perl()
 
 Returns a Perl representation of the Int.
@@ -59,8 +66,21 @@
 .end
 
 
-.sub 'abs' :method :multi('Integer')
-    $P0 = n_abs self
+=item succ and pred
+
+Increment and Decrement Methods
+
+=cut
+
+.sub 'pred' :method
+    $P0 = clone self
+    dec $P0
+    .return ($P0)
+.end
+
+.sub 'succ' :method
+    $P0 = clone self
+    inc $P0
     .return ($P0)
 .end
 

Modified: branches/rakudoreg/languages/perl6/src/classes/List.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/List.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/List.pir	Wed Dec 17 13:31:52 2008
@@ -23,6 +23,90 @@
 
 =over
 
+=item ACCEPTS
+
+Smart-matches against the list.
+
+=cut
+
+.namespace ['List']
+.sub 'ACCEPTS' :method
+    .param pmc topic
+
+    # What do we have?
+    $I0 = isa topic, 'List' # Catches Array too
+    if $I0 goto array
+    goto default
+
+    # Array. Need to DWIM on *s.
+  array:
+    .local pmc whatever
+    whatever = get_hll_global 'Whatever'
+    .local pmc it_a, it_b, cur_a, cur_b
+    it_a = iter self
+    it_b = iter topic
+    unless it_a goto it_loop_end
+    unless it_b goto it_loop_end
+    cur_a = shift it_a
+  it_loop:
+    unless it_b goto it_loop_end
+    cur_b = shift it_b
+
+    # If there curent thing is Whatever, need special handling.
+    $I0 = isa cur_a, whatever
+    unless $I0 goto not_whatever
+    
+    # If we don't have anything left other than the Whatever, it matches any
+    # ending. Otherwise, we see what we're next looking for, and keep pulling
+    # from the topic until we see it, or until we run out of topic in which
+    # case we can't get no satisfaction.
+  handle_whatever:
+    unless it_a goto true
+    .local pmc looking_for
+    looking_for = shift it_a
+  whatever_loop:
+    $P0 = 'infix:==='(looking_for, cur_b)
+    if $P0 goto found_looking_for
+    unless it_b goto false
+    cur_b = shift it_b
+    goto whatever_loop
+  found_looking_for:
+    unless it_a goto it_loop_end
+    cur_a = shift it_a
+    goto it_loop
+
+  not_whatever:
+    # Not whatever - check a against b, and pull another a for the next time
+    # around the loop, unless we've run out of b (note that if it's a whatever
+    # then it doesn't matter if we ran out of b; if it's not and we ran out of
+    # list b then we fail).
+    $I0 = 'infix:==='(cur_a, cur_b)
+    unless $I0 goto false
+    unless it_a goto it_loop_end
+    cur_a = shift it_a
+    $I0 = isa cur_a, whatever
+    if $I0 goto handle_whatever
+    unless it_b goto false
+    goto it_loop
+  it_loop_end:
+    if it_a goto false
+    if it_b goto false
+  true:
+    $P0 = get_hll_global [ 'Bool' ], 'True'
+    .return ($P0)
+  false:
+    $P0 = get_hll_global [ 'Bool' ], 'False'
+    .return ($P0)
+
+    # Something else. Just do a hyper ===, and check all the values are matches.
+  default:
+    topic = topic.'list'()
+    $P0 = '!HYPEROP'('infix:===', self, topic, 0, 0)
+    $P0 = 'all'($P0)
+    .tailcall 'prefix:?'($P0)
+.end
+
+
 =item item
 
 A List in item context becomes an Array.

Modified: branches/rakudoreg/languages/perl6/src/classes/Mapping.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Mapping.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Mapping.pir	Wed Dec 17 13:31:52 2008
@@ -37,21 +37,20 @@
 .end
 
 
-.sub 'get_string' :method :vtable
-    $S0 = ''
+.sub '' :vtable('get_string') :method
+    .local string result
+    result = ''
+    $P0 = self.'pairs'()
     .local pmc it
-    it = iter self
-  loop:
-    unless it goto end
-    $S1 = shift it
-    $S2 = it[$S1]
-    $S0 = concat $S0, $S1
-    concat $S0, "\t"
-    concat $S0, $S2
-    concat $S0, "\n"
-    goto loop
-  end:
-    .return ($S0)
+    it = iter $P0
+  it_loop:
+    unless it goto it_done
+    $S0 = shift it
+    result .= $S0
+    result .= "\n"
+    goto it_loop
+  it_done:
+    .return (result)
 .end
 
 

Modified: branches/rakudoreg/languages/perl6/src/classes/Num.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Num.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Num.pir	Wed Dec 17 13:31:52 2008
@@ -67,6 +67,25 @@
 .end
 
 
+=item succ and pred
+
+Increment and Decrement Methods
+
+=cut
+
+.sub 'pred' :method
+    $P0 = clone self
+    dec $P0
+    .return ($P0)
+.end
+
+.sub 'succ' :method
+    $P0 = clone self
+    inc $P0
+    .return ($P0)
+.end
+
+
 =item WHICH()
 
 Returns the identify value.

Modified: branches/rakudoreg/languages/perl6/src/classes/Object.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Object.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Object.pir	Wed Dec 17 13:31:52 2008
@@ -28,6 +28,46 @@
 
 =over 4
 
+=item clone()
+
+Returns a copy of the object.
+
+NOTE: Don't copy what this method does; it's a tad inside-out. We should be
+overriding the clone vtable method to call .clone() really. But if we do that,
+we can't current get at the Object PMC's clone method, so for now we do it
+like this.
+
+=cut
+
+.namespace ['Perl6Object']
+.sub 'clone' :method
+    .param pmc new_attrs :slurpy :named
+
+    # Make a clone.
+    .local pmc result
+    $I0 = isa self, 'ObjectRef'
+    unless $I0 goto do_clone
+    self = deref self
+  do_clone:
+    result = clone self
+
+    # Set any new attributes.
+    .local pmc it
+    it = iter new_attrs
+  it_loop:
+    unless it goto it_loop_end
+    $S0 = shift it
+    $P0 = new_attrs[$S0]
+    $S0 = concat '!', $S0
+    $P1 = result.$S0()
+    'infix:='($P1, $P0)
+    goto it_loop
+  it_loop_end:
+
+    .return (result)
+.end
+
+
 =item defined()
 
 Return true if the object is defined.

Modified: branches/rakudoreg/languages/perl6/src/classes/Role.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Role.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Role.pir	Wed Dec 17 13:31:52 2008
@@ -28,6 +28,14 @@
 
 .sub 'ACCEPTS' :method
     .param pmc topic
+
+    # Since we aren't re-blessing code objects yet, need to get and test their
+    # proto-object instead.
+    $I0 = topic.'isa'('Code')
+    unless $I0 goto no_proto
+    topic = topic.'WHAT'()
+  no_proto:
+
     $I0 = does topic, self
     $P0 = 'prefix:?'($I0)
     .return ($P0)

Modified: branches/rakudoreg/languages/perl6/src/classes/Str.pir
==============================================================================
--- branches/rakudoreg/languages/perl6/src/classes/Str.pir	(original)
+++ branches/rakudoreg/languages/perl6/src/classes/Str.pir	Wed Dec 17 13:31:52 2008
@@ -113,6 +113,24 @@
     .return ($P0)
 .end
 
+=item succ and pred
+
+Increment and Decrement Methods
+
+=cut
+
+.sub 'pred' :method
+    $P0 = clone self
+    dec $P0
+    .return ($P0)
+.end
+
+.sub 'succ' :method
+    $P0 = clone self
+    inc $P0
+    .return ($P0)
+.end
+
 
 =item WHICH()
 

Modified: branches/rakudoreg/languages/perl6/src/parser/actions.pm
==============================================================================
--- branches/rakudoreg/languages/perl6/src/parser/actions.pm	(original)
+++ branches/rakudoreg/languages/perl6/src/parser/actions.pm	Wed Dec 17 13:31:52 2008
@@ -1215,13 +1215,15 @@
         my $separator := $_[0];
         my $is_invocant := 0;
 
+        # If it has & sigil, strip it off, but record it was a sub.
+        my $is_callable := 0;
+        if substr($parameter.name(), 0, 1) eq '&' {
+            $parameter.name(substr($parameter.name(), 1));
+            $is_callable := 1;
+        }
+
         # Add parameter declaration to the block, if we're producing one.
         unless $?SIG_BLOCK_NOT_NEEDED {
-            # If it has & sigil, strip it off.
-            if substr($parameter.name(), 0, 1) eq '&' {
-                $parameter.name(substr($parameter.name(), 1));
-            }
-
             # Register symbol and put parameter PAST into the node.
             $block_past.symbol($parameter.name(), :scope('lexical'));
             $params.push($parameter);
@@ -1364,6 +1366,19 @@
             $cur_param_types.push($type_obj);
         }
 
+        # Also any constraint from the sigil.
+        if $is_callable {
+            $cur_param_types.push(PAST::Op.new(
+                :pasttype('call'),
+                :name('!TYPECHECKPARAM'),
+                PAST::Var.new( :name('Callable'), :scope('package') ),
+                PAST::Var.new(
+                    :name($parameter.name()),
+                    :scope('lexical')
+                )
+            ));
+        }
+
         # For blocks, we just collect the check into the list of all checks.
         unless $?SIG_BLOCK_NOT_NEEDED {
             $type_check.push($cur_param_types);
@@ -1585,11 +1600,13 @@
             $past.name('!' ~ $past.name());
         }
         elsif $methodop<quote> {
-            $past[0] := PAST::Op.new(
-                :pasttype('call'),
-                :name('infix:~'),
-                PAST::Val.new( :value('!') ),
-                $past[0]
+            $past.name(
+                PAST::Op.new(
+                    :pasttype('call'),
+                    :name('infix:~'),
+                    '!',
+                    $past.name()
+                )
             );
         }
     }
@@ -2389,9 +2406,13 @@
         }
     }
 
+    # Generate private accessor.
+    my $accessor := make_accessor($/, '!' ~ ~$variable_name, $name, 1, 'attribute');
+    $class_def.push(add_method_to_class($accessor));
+
     # Twigil handling.
     if $variable_twigil eq '.' {
-        # We have a . twigil, so we need to generate an accessor.
+        # We have a . twigil, so we need to generate a public accessor.
         my $accessor := make_accessor($/, ~$variable_name, $name, $rw, 'attribute');
         $class_def.push(add_method_to_class($accessor));
     }

Modified: branches/rakudoreg/languages/perl6/src/pmc/perl6multisub.pmc
==============================================================================
--- branches/rakudoreg/languages/perl6/src/pmc/perl6multisub.pmc	(original)
+++ branches/rakudoreg/languages/perl6/src/pmc/perl6multisub.pmc	Wed Dec 17 13:31:52 2008
@@ -562,6 +562,11 @@
             possibles       = constraint_free;
             possibles_count = constraint_free_count;
         }
+        else {
+            possibles_count = 0;
+            mem_sys_free(matching);
+            mem_sys_free(constraint_free);
+        }
     }
 
     /* Check is default trait if we still have multiple options. */

Modified: branches/rakudoreg/languages/perl6/t/pmc/perl6multisub-type.t
==============================================================================
--- branches/rakudoreg/languages/perl6/t/pmc/perl6multisub-type.t	(original)
+++ branches/rakudoreg/languages/perl6/t/pmc/perl6multisub-type.t	Wed Dec 17 13:31:52 2008
@@ -73,17 +73,18 @@
     push $P0, $P1
 
     # Couple of classes that do the roles.
-    .local pmc C1, C2
-    C1 = new 'Class'
-    addrole C1, R1
-    C2 = new 'Class'
-    addrole C2, R2
+    .local pmc C1, C2, p6meta
+    p6meta = get_hll_global ['Perl6Object'], '$!P6META'
+    C1 = p6meta.'new_class'('C1', 'parent'=>'Any')
+    p6meta.'add_role'(R1, 'to'=>C1)
+    C2 = p6meta.'new_class'('C2', 'parent'=>'Any')
+    p6meta.'add_role'(R2, 'to'=>C2)
 
     # Tests
-    $P1 = new C1
+    $P1 = C1.'new'()
     $I0 = $P0($P1)
     is($I0, 1, 'dispatch on a role')
-    $P1 = new C2
+    $P1 = C2.'new'()
     $I0 = $P0($P1)
     is($I0, 2, 'dispatch on a role')
 .end

Modified: branches/rakudoreg/languages/pipp/src/pipp_hash.c
==============================================================================
--- branches/rakudoreg/languages/pipp/src/pipp_hash.c	(original)
+++ branches/rakudoreg/languages/pipp/src/pipp_hash.c	Wed Dec 17 13:31:52 2008
@@ -374,7 +374,7 @@
     INTVAL key_hash, bucket_idx;
     PippBucket *bucket;
 
-    key_hash = string_hash(interp, key, PIPP_HASH_SEED);
+    key_hash = string_hash(interp, key);
     bucket   = ht->buckets[key_hash & ht->hashMask];
     dprintf("pipp_hash_get_bucket called with key '%Ss', has hash 0x%X\n",
             key, key_hash);
@@ -427,7 +427,7 @@
     PippBucket *first_bucket, *curr_bucket;
     INTVAL      key_hash, bucket_idx;
 
-    key_hash     = string_hash(interp, key, PIPP_HASH_SEED);
+    key_hash     = string_hash(interp, key);
     bucket_idx   = key_hash & ht->hashMask;
     curr_bucket  = ht->buckets[bucket_idx];
     first_bucket = curr_bucket;
@@ -563,7 +563,7 @@
     }
 
     s_key    = string_from_int(interp, ht->nextIndex);
-    key_hash = string_hash(interp, s_key, PIPP_HASH_SEED);
+    key_hash = string_hash(interp, s_key);
     bkt      = mem_allocate_zeroed_typed(PippBucket);
 
     bkt->key       = s_key;
@@ -640,7 +640,7 @@
     }
 
     s_key    = string_from_int(interp, 0);
-    key_hash = string_hash(interp, s_key, PIPP_HASH_SEED);
+    key_hash = string_hash(interp, s_key);
     bkt      = mem_allocate_zeroed_typed(PippBucket);
 
     bkt->key       = s_key;

Modified: branches/rakudoreg/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/rakudoreg/lib/Parrot/Configure/Step/List.pm	(original)
+++ branches/rakudoreg/lib/Parrot/Configure/Step/List.pm	Wed Dec 17 13:31:52 2008
@@ -51,7 +51,6 @@
     auto::signal
     auto::socklen_t
     auto::env
-    auto::aio
     auto::gmp
     auto::readline
     auto::gdbm

Modified: branches/rakudoreg/lib/Parrot/Docs/Section/Compilers.pm
==============================================================================
--- branches/rakudoreg/lib/Parrot/Docs/Section/Compilers.pm	(original)
+++ branches/rakudoreg/lib/Parrot/Docs/Section/Compilers.pm	Wed Dec 17 13:31:52 2008
@@ -45,7 +45,6 @@
         $self->new_group( 'PGE',  'the Parrot Grammar Engine',                 'compilers/pge' ),
         $self->new_group( 'TGE',  'the Tree Grammar Engine',                   'compilers/tge' ),
         $self->new_group( 'PCT',  'Parrot Compiler Toolkit',    'compilers/pct' ),
-        $self->new_group( 'BCG',  'Byte Code Generation',       'compilers/bcg' ),
         $self->new_group( 'JSON', 'JavaScript Object Notation', 'compilers/json' ),
         $self->new_group( 'PIRC', 'a PIR Compiler',             'compilers/pirc' ),
         $self->new_group( 'NCIGEN', 'Native Call Interface Generator', 'compilers/ncigen' ),

Modified: branches/rakudoreg/parrot.spec
==============================================================================
--- branches/rakudoreg/parrot.spec	(original)
+++ branches/rakudoreg/parrot.spec	Wed Dec 17 13:31:52 2008
@@ -1,5 +1,5 @@
 Name:           parrot
-Version:        0.8.1
+Version:        0.8.2
 Release:        1%{?dist}
 Summary:        Parrot Virtual Machine
 License:        Artistic 2.0
@@ -132,6 +132,9 @@
 %{_libdir}/pkgconfig/*
 
 %changelog
+* Tue Dec 16 2008 Whiteknight <wknight8111@gmail.com> 0.8.2
+- updated to 0.8.2
+
 * Tue Nov 18 2008 chromatic <chromatic@parrot.org> 0.8.1
 - updated to 0.8.1
 

Modified: branches/rakudoreg/src/hash.c
==============================================================================
--- branches/rakudoreg/src/hash.c	(original)
+++ branches/rakudoreg/src/hash.c	Wed Dec 17 13:31:52 2008
@@ -31,7 +31,7 @@
 
 #define INITIAL_BUCKETS 16
 
-#define N_BUCKETS(n) ((n) - (n)/4)
+#define N_BUCKETS(n) (n)
 #define HASH_ALLOC_SIZE(n) (N_BUCKETS(n) * sizeof (HashBucket) + \
                              (n) * sizeof (HashBucket *))
 
@@ -44,12 +44,14 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_MALLOC
 static Hash * create_hash(
+    PARROT_INTERP,
     PARROT_DATA_TYPE val_type,
     Hash_key_type hkey_type,
     ARGIN(hash_comp_fn compare),
     ARGIN(hash_hash_key_fn keyhash))
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(4)
+        __attribute__nonnull__(5);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_PURE_FUNCTION
@@ -146,11 +148,11 @@
 static size_t
 key_hash_STRING(PARROT_INTERP, ARGMOD(STRING *s), size_t seed)
 {
-    if (s->hashval) {
-        return s->hashval;
+    if (PObj_is_shared_TEST(s) || s->hashval == 0) {
+        return string_hash(interp, s);
     }
 
-    return string_hash(interp, s, seed);
+    return s->hashval;
 }
 
 /*
@@ -730,9 +732,10 @@
 
 PARROT_EXPORT
 void
-parrot_new_hash(SHIM_INTERP, ARGOUT(Hash **hptr))
+parrot_new_hash(PARROT_INTERP, ARGOUT(Hash **hptr))
 {
-    parrot_new_hash_x(hptr,
+    parrot_new_hash_x(interp,
+            hptr,
             enum_type_PMC,
             Hash_key_type_STRING,
             STRING_compare,     /* STRING compare */
@@ -751,9 +754,10 @@
 
 PARROT_EXPORT
 void
-parrot_new_pmc_hash(SHIM_INTERP, ARGOUT(PMC *container))
+parrot_new_pmc_hash(PARROT_INTERP, ARGOUT(PMC *container))
 {
-    parrot_new_pmc_hash_x(container,
+    parrot_new_pmc_hash_x(interp,
+            container,
             enum_type_PMC,
             Hash_key_type_STRING,
             STRING_compare,     /* STRING compare */
@@ -772,9 +776,10 @@
 
 PARROT_EXPORT
 void
-parrot_new_cstring_hash(SHIM_INTERP, ARGOUT(Hash **hptr))
+parrot_new_cstring_hash(PARROT_INTERP, ARGOUT(Hash **hptr))
 {
-    parrot_new_hash_x(hptr,
+    parrot_new_hash_x(interp,
+            hptr,
             enum_type_PMC,
             Hash_key_type_cstring,
             (hash_comp_fn)cstring_compare,     /* cstring compare */
@@ -799,7 +804,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_MALLOC
 static Hash *
-create_hash(PARROT_DATA_TYPE val_type, Hash_key_type hkey_type,
+create_hash(PARROT_INTERP, PARROT_DATA_TYPE val_type, Hash_key_type hkey_type,
         ARGIN(hash_comp_fn compare), ARGIN(hash_hash_key_fn keyhash))
 {
     size_t      i;
@@ -812,8 +817,7 @@
     hash->entry_type = val_type;
     hash->key_type   = hkey_type;
 
-    /* RT #59472 - randomize */
-    hash->seed = 3793;
+    hash->seed = interp->hash_seed;
 
     PARROT_ASSERT(INITIAL_BUCKETS % 4 == 0);
 
@@ -952,13 +956,14 @@
 */
 
 void
-parrot_new_hash_x(ARGOUT(Hash **hptr),
+parrot_new_hash_x(PARROT_INTERP,
+        ARGOUT(Hash **hptr),
         PARROT_DATA_TYPE val_type,
         Hash_key_type hkey_type,
         NOTNULL(hash_comp_fn compare),
         NOTNULL(hash_hash_key_fn keyhash))
 {
-    *hptr = create_hash(val_type, hkey_type, compare, keyhash);
+    *hptr = create_hash(interp, val_type, hkey_type, compare, keyhash);
 }
 
 /*
@@ -974,13 +979,14 @@
 */
 
 void
-parrot_new_pmc_hash_x(ARGMOD(PMC *container),
+parrot_new_pmc_hash_x(PARROT_INTERP,
+        ARGMOD(PMC *container),
         PARROT_DATA_TYPE val_type,
         Hash_key_type hkey_type,
         NOTNULL(hash_comp_fn compare),
         NOTNULL(hash_hash_key_fn keyhash))
 {
-    Hash * const hash = create_hash(val_type, hkey_type, compare, keyhash);
+    Hash * const hash = create_hash(interp, val_type, hkey_type, compare, keyhash);
     PMC_struct_val(container) = hash;
     hash->container = container;
 }
@@ -997,9 +1003,9 @@
 
 PARROT_EXPORT
 void
-parrot_new_pointer_hash(SHIM_INTERP, ARGOUT(Hash **hptr))
+parrot_new_pointer_hash(PARROT_INTERP, ARGOUT(Hash **hptr))
 {
-    parrot_new_hash_x(hptr, enum_type_ptr, Hash_key_type_ptr, pointer_compare, key_hash_pointer);
+    parrot_new_hash_x(interp, hptr, enum_type_ptr, Hash_key_type_ptr, pointer_compare, key_hash_pointer);
 }
 
 /*
@@ -1024,7 +1030,8 @@
             ? constant_pmc_new_noinit(interp, enum_class_Hash)
             : pmc_new_noinit(interp, enum_class_Hash);
 
-    parrot_new_pmc_hash_x(h, enum_type_INTVAL, Hash_key_type_int, int_compare, key_hash_int);
+    parrot_new_pmc_hash_x(interp, h, enum_type_INTVAL, Hash_key_type_int,
+            int_compare, key_hash_int);
     PObj_active_destroy_SET(h);
     return h;
 }

Modified: branches/rakudoreg/src/pmc/addrregistry.pmc
==============================================================================
--- branches/rakudoreg/src/pmc/addrregistry.pmc	(original)
+++ branches/rakudoreg/src/pmc/addrregistry.pmc	Wed Dec 17 13:31:52 2008
@@ -55,7 +55,7 @@
         PMC_data(SELF)      = addr_registry;
         PObj_custom_mark_destroy_SETALL(SELF);
 
-        parrot_new_pmc_hash_x(SELF, enum_type_int, Hash_key_type_PMC,
+        parrot_new_pmc_hash_x(INTERP, SELF, enum_type_int, Hash_key_type_PMC,
                               int_compare, key_hash_int);
 
         registry            = (Hash *)PMC_struct_val(SELF);

Modified: branches/rakudoreg/src/pmc/lexinfo.pmc
==============================================================================
--- branches/rakudoreg/src/pmc/lexinfo.pmc	(original)
+++ branches/rakudoreg/src/pmc/lexinfo.pmc	Wed Dec 17 13:31:52 2008
@@ -65,7 +65,7 @@
         PARROT_ASSERT(PObj_constant_TEST(SELF));
         PMC_pmc_val(SELF) = sub;
 
-        parrot_new_pmc_hash_x(SELF,
+        parrot_new_pmc_hash_x(INTERP, SELF,
             (PARROT_DATA_TYPE)enum_hash_int,
             Hash_key_type_STRING,
             (hash_comp_fn)string_equal,     /* STRING compare */

Modified: branches/rakudoreg/src/pmc/object.pmc
==============================================================================
--- branches/rakudoreg/src/pmc/object.pmc	(original)
+++ branches/rakudoreg/src/pmc/object.pmc	Wed Dec 17 13:31:52 2008
@@ -654,7 +654,7 @@
 
         /* See if we have a custom override of the method first. */
         const int num_classes = VTABLE_elements(interp, _class->all_parents);
-        int i;
+        int i, num_attrs;
         for (i = 0; i < num_classes; i++) {
             /* Get the class. */
             PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
@@ -681,6 +681,14 @@
         cloned_guts->_class       = obj->_class;
         cloned_guts->attrib_store = VTABLE_clone(INTERP, obj->attrib_store);
         PMC_data(cloned)          = cloned_guts;
+        num_attrs                 = VTABLE_elements(INTERP, cloned_guts->attrib_store);
+        for (i = 0; i < num_attrs; i++) {
+            PMC *to_clone = VTABLE_get_pmc_keyed_int(INTERP, cloned_guts->attrib_store, i);
+            if (!PMC_IS_NULL(to_clone)) {
+                VTABLE_set_pmc_keyed_int(INTERP, cloned_guts->attrib_store, i,
+                        VTABLE_clone(INTERP, to_clone));
+            }
+        }
 
         /* Some of the attributes may have been the PMCs providing storage for any
          * PMCs we inherited from; also need to clone those. */

Modified: branches/rakudoreg/src/string.c
==============================================================================
--- branches/rakudoreg/src/string.c	(original)
+++ branches/rakudoreg/src/string.c	Wed Dec 17 13:31:52 2008
@@ -283,6 +283,13 @@
     const size_t n_parrot_cstrings =
         sizeof (parrot_cstrings) / sizeof (parrot_cstrings[0]);
 
+    /* TODO: hash_seed should be randomized on a per-interp basis.  Before this
+     * can happen, shared STRINGs need to always be marked as such.  
+     * See RT #59810 and #59472
+     */
+    interp->hash_seed = 3793;
+    /*interp->hash_seed = Parrot_uint_rand(0);*/
+
     /* Set up the cstring cache, then load the basic encodings and charsets */
     if (!interp->parent_interpreter) {
         parrot_new_cstring_hash(interp, &const_cstring_hash);
@@ -2279,11 +2286,11 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 size_t
-string_hash(PARROT_INTERP, ARGMOD_NULLOK(STRING *s), size_t seed)
+string_hash(PARROT_INTERP, ARGMOD_NULLOK(STRING *s))
 {
     register size_t h;
+    UINTVAL         seed = interp->hash_seed;
 
-    /* TODO: #59810 (using seed != 3793 breaks things) */
     if (!s)
         return seed;
 

Modified: branches/rakudoreg/t/compilers/imcc/syn/macro.t
==============================================================================
--- branches/rakudoreg/t/compilers/imcc/syn/macro.t	(original)
+++ branches/rakudoreg/t/compilers/imcc/syn/macro.t	Wed Dec 17 13:31:52 2008
@@ -326,7 +326,8 @@
 /End of file reached/
 OUTPUT
 
-pir_error_output_like( <<'CODE', <<'OUTPUT', 'unterminated macro 2' );
+my @todo = (($^O =~ /darwin/i) ? (todo => 'Darwin segfault -- RT #60926') : ());
+pir_error_output_like( <<'CODE', <<'OUTPUT', 'unterminated macro 2', @todo );
 .sub test :main
 .macro M(A, B)
   print .A

Modified: branches/rakudoreg/t/configure/testlib/adefectivefoobar
==============================================================================
--- branches/rakudoreg/t/configure/testlib/adefectivefoobar	(original)
+++ branches/rakudoreg/t/configure/testlib/adefectivefoobar	Wed Dec 17 13:31:52 2008
@@ -47,7 +47,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm

Modified: branches/rakudoreg/t/configure/testlib/bdefectivefoobar
==============================================================================
--- branches/rakudoreg/t/configure/testlib/bdefectivefoobar	(original)
+++ branches/rakudoreg/t/configure/testlib/bdefectivefoobar	Wed Dec 17 13:31:52 2008
@@ -57,7 +57,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm

Modified: branches/rakudoreg/t/configure/testlib/cdefectivefoobar
==============================================================================
--- branches/rakudoreg/t/configure/testlib/cdefectivefoobar	(original)
+++ branches/rakudoreg/t/configure/testlib/cdefectivefoobar	Wed Dec 17 13:31:52 2008
@@ -58,7 +58,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm

Modified: branches/rakudoreg/t/configure/testlib/ddefectivefoobar
==============================================================================
--- branches/rakudoreg/t/configure/testlib/ddefectivefoobar	(original)
+++ branches/rakudoreg/t/configure/testlib/ddefectivefoobar	Wed Dec 17 13:31:52 2008
@@ -49,7 +49,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm

Modified: branches/rakudoreg/t/configure/testlib/verbosefoobar
==============================================================================
--- branches/rakudoreg/t/configure/testlib/verbosefoobar	(original)
+++ branches/rakudoreg/t/configure/testlib/verbosefoobar	Wed Dec 17 13:31:52 2008
@@ -51,7 +51,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm

Modified: branches/rakudoreg/t/native_pbc/integer_1.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/integer_2.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/integer_3.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/integer_4.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/number_1.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/number_2.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/number_3.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/number_4.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/number_5.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/string_1.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/native_pbc/string_2.pbc
==============================================================================
Binary files. No diff available.

Modified: branches/rakudoreg/t/oo/new.t
==============================================================================
--- branches/rakudoreg/t/oo/new.t	(original)
+++ branches/rakudoreg/t/oo/new.t	Wed Dec 17 13:31:52 2008
@@ -6,7 +6,7 @@
 use warnings;
 use lib qw( . lib ../lib ../../lib );
 use Test::More;
-use Parrot::Test tests => 24;
+use Parrot::Test tests => 23;
 
 =head1 NAME
 
@@ -626,17 +626,6 @@
 Class isn't defined.
 OUT
 
-pir_error_output_like( <<'CODE', <<'OUT', 'Cannot instantiate class from slice key' );
-.sub 'main' :main
-    $P0 = new 'String'
-    $P0 = "something bad happened"
-    $P1 = new ['parrot','exception'], $P0  # note the comma
-    throw $P1
-.end
-CODE
-/Slice not allowed in namespace/
-OUT
-
 pir_error_output_like(<<'CODE', <<'OUT', 'Instantiate class from invalid key');
 .sub 'main' :main
     $P0 = new [ 'Foo'; 'Bar'; 'Baz' ]

Modified: branches/rakudoreg/t/perl/Parrot_Distribution.t
==============================================================================
--- branches/rakudoreg/t/perl/Parrot_Distribution.t	(original)
+++ branches/rakudoreg/t/perl/Parrot_Distribution.t	Wed Dec 17 13:31:52 2008
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 use lib qw( . lib ../lib ../../lib );
-use Test::More tests => 32;
+use Test::More tests => 31;
 use File::Spec;
 
 =head1 NAME
@@ -51,7 +51,7 @@
 my %pmc_source_file_directories = map { $_->path => 1 } $d->pmc_source_file_directories();
 
 my @old_directory_list = (
-    'compilers/bcg/src/pmc',   'languages/APL/src/pmc',
+    'languages/APL/src/pmc',
     'languages/WMLScript/pmc',
     'languages/dotnet/pmc',    'languages/lua/src/pmc',
     'languages/perl6/src/pmc',

Modified: branches/rakudoreg/t/pmc/iterator.t
==============================================================================
--- branches/rakudoreg/t/pmc/iterator.t	(original)
+++ branches/rakudoreg/t/pmc/iterator.t	Wed Dec 17 13:31:52 2008
@@ -7,7 +7,7 @@
 use lib qw( . lib ../lib ../../lib );
 
 use Test::More;
-use Parrot::Test tests => 44;
+use Parrot::Test tests => 22;
 
 =head1 NAME
 
@@ -580,556 +580,7 @@
 OUTPUT
 }
 
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice syntax" );
-   new P0, 'ResizablePMCArray'
-   slice P2, P0[2 .. 3, 4, 5 ..6]
-   slice P2, P0[10 ..]
-   slice P2, P0[.. 11]
-   slice P2, P0[I1..3]
-   new P1, 'Hash'
-   slice P2, P1["0","a".."b","c"]
-   print "ok\n"
-   end
-CODE
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice creates an iterator" );
-   new P0, 'ResizablePMCArray'
-   slice P2, P0[2 .. 3, 4, 5 ..6]
-   typeof S0, P2
-   print S0
-   print "\n"
-   end
-CODE
-Iterator
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter simple array elements" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   push P0, 600
-   slice P2, P0[0, 1, 4]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-   print "ok\n"
-   end
-CODE
-100
-200
-500
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter simple array elements - repeat" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   slice P2, P0[2, 4]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-
-   slice P2, P0[2, 4]        # this is the same PF constant
-   set P2, .ITERATE_FROM_START
-lp2:
-   unless P2, ex2
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp2
-ex2:
-   print "ok\n"
-   end
-CODE
-300
-500
-300
-500
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter string" );
-    .include "iterator.pasm"
-    new P2, 'String'
-    set P2, "parrot"
-    slice P1, P2[0,1,4,5]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end        # while (entries) ...
-    shift S1, P1
-    print S1
-    branch iter_loop
-iter_end:
-    print "\n"
-    print P2
-    print "\n"
-    end
-CODE
-paot
-parrot
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter start range" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   slice P2, P0[..2]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-   print "ok\n"
-   end
-CODE
-100
-200
-300
-ok
-OUTPUT
 
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter end range" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   slice P2, P0[2 ..]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-   print "ok\n"
-   end
-CODE
-300
-400
-500
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter start range, value" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   push P0, 600
-   slice P2, P0[..2, 4]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-   print "ok\n"
-   end
-CODE
-100
-200
-300
-500
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter range, value" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   push P0, 600
-   push P0, 700
-   slice P2, P0[1 ..3,6]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-   print "ok\n"
-   end
-CODE
-200
-300
-400
-700
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<'OUTPUT', "slice iter range, range" );
-   .include "iterator.pasm"
-   new P0, 'ResizablePMCArray'
-   push P0, 100
-   push P0, 200
-   push P0, 300
-   push P0, 400
-   push P0, 500
-   push P0, 600
-   push P0, 700
-   push P0, 800
-   slice P2, P0[1 ..3, 5 ..]
-   set P2, .ITERATE_FROM_START
-lp:
-   unless P2, ex
-   shift I0, P2
-   print I0
-   print "\n"
-   branch lp
-ex:
-   print "ok\n"
-   end
-CODE
-200
-300
-400
-600
-700
-800
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter string range" );
-    .include "iterator.pasm"
-    new P2, 'String'
-    set P2, "parrot rocks"
-    slice P1, P2[1 ..3 ,5, 8 ..9]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    branch iter_loop
-iter_end:
-    print "\n"
-    print P2
-    print "\n"
-    end
-CODE
-arrtoc
-parrot rocks
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter string range 2" );
-    .include "iterator.pasm"
-    new P2, 'String'
-    set P2, "parrot rocks"
-    slice P1, P2[ ..3 ,5, 8 ..]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    branch iter_loop
-iter_end:
-    print "\n"
-    print P2
-    print "\n"
-    end
-CODE
-parrtocks
-parrot rocks
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter string variable range" );
-    .include "iterator.pasm"
-    new P2, 'String'
-    set P2, "parrot rocks"
-    set I0, 1
-    set I1, 3
-    set I2, 8
-    set I3, 9
-    slice P1, P2[I0 ..I1 ,5, I2 ..I3]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    branch iter_loop
-iter_end:
-    print "\n"
-    print P2
-    print "\n"
-    end
-CODE
-arrtoc
-parrot rocks
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter hash values" );
-    .include "iterator.pasm"
-    new P2, 'Hash'
-    set P2["a"], 100
-    set P2["b"], 200
-    set P2["c"], 300
-    set P2["d"], 400
-    slice P1, P2["b", "c"]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-CODE
-200
-300
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter hash values 2" );
-    .include "iterator.pasm"
-    new P2, 'Hash'
-    set P2["a"], 100
-    set P2["b"], 200
-    set P2["c"], 300
-    set P2["d"], 400
-    set P2["e"], 500
-    slice P1, P2["b", "c", "a", "a", "e"]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-CODE
-200
-300
-100
-100
-500
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter range" );
-    .include "iterator.pasm"
-    new P2, 'Hash'
-    set P2["a"], 10
-    set P2["b"], 20
-    set P2["c"], 30
-    set P2["d"], 40
-    set P2["e"], 50
-    slice P1, P2["a".. "c"]
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-CODE
-10
-20
-30
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter range 2" );
-    .include "iterator.pasm"
-    new P2, 'Hash'
-    set P2["a"], 10
-    set P2["b"], 20
-    set P2["c"], 30
-    set P2["d"], 40
-    set P2["e"], 50
-    set P2["A"], 11
-    set P2["B"], 21
-    set P2["C"], 31
-    set P2["D"], 41
-    set P2["E"], 51
-    slice P1, P2["a".. "c", 'C' .. 'E']
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S1, P1
-    print S1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-CODE
-10
-20
-30
-31
-41
-51
-ok
-OUTPUT
-
-pasm_output_is( <<'CODE', <<OUTPUT, "slice iter range - vars" );
-    .include "iterator.pasm"
-    new P2, 'Hash'
-    set P2["a"], 10
-    set P2["b"], 20
-    set P2["c"], 30
-    set P2["d"], 40
-    set P2["e"], 50
-    set P2["A"], 11
-    set P2["B"], 21
-    set P2["C"], 31
-    set P2["D"], 41
-    set P2["E"], 51
-    set S0, 'a'
-    set S1, 'c'
-    set S2, 'C'
-    set S3, 'E'
-    slice P1, P2[S0 .. S1, S2 .. S3, 'A']
-    set P1, .ITERATE_FROM_START
-iter_loop:
-        unless P1, iter_end
-    shift S10, P1
-    print S10
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-CODE
-10
-20
-30
-31
-41
-51
-11
-ok
-OUTPUT
-
-pir_output_is( <<'CODE', <<'OUTPUT', "xrange iterator" );
-
-.sub main
-    .include "iterator.pasm"
-        # xrange(10, 14)
-    new $P2, 'Slice' [10 .. 14]
-    new $P1, 'Iterator',  $P2
-
-    set $P1, .ITERATE_FROM_START
-#    I0 = P1."len"()
-iter_loop:
-        unless $P1, iter_end
-    shift $I1, $P1
-    print $I1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-.end
-CODE
-10
-11
-12
-13
-ok
-OUTPUT
-
-pir_output_is( <<'CODE', <<'OUTPUT', "xrange iterator ..n" );
-
-.sub main
-    .include "iterator.pasm"
-        # xrange(4)
-    new $P2, 'Slice' [ .. 4]
-    new $P1, 'Iterator',  $P2
-
-    set $P1, .ITERATE_FROM_START
-#    I0 = P1."len"()
-iter_loop:
-        unless $P1, iter_end
-    shift $I1, $P1
-    print $I1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-.end
-CODE
-0
-1
-2
-3
-ok
-OUTPUT
-
-pir_output_is( <<'CODE', <<'OUTPUT', "slice, get strings from array" );
-
-.sub main :main
-    .include "iterator.pasm"
-    .local pmc ar
-    ar = new 'ResizablePMCArray'
-    push ar, "a"
-    push ar, "b"
-    push ar, "c"
-    push ar, "d"
-    push ar, "e"
-    .local pmc iter
-    iter = slice ar[1 ..]
-    iter = .ITERATE_FROM_START
-iter_loop:
-    unless iter, iter_end        # while (entries) ...
-    $S0 = shift iter
-    print $S0
-    goto iter_loop
-iter_end:
-    print "ok\n"
-.end
-CODE
-bcdeok
-OUTPUT
 
 pasm_output_is( <<'CODE', <<'OUTPUT', "iter vtable" );
    .include "iterator.pasm"
@@ -1221,31 +672,7 @@
 ok 2
 OUTPUT
 
-pir_output_is( <<'CODE', <<'OUTPUT', 'xrange iterator, get_iter' );
 
-.sub main
-    .include "iterator.pasm"
-        # xrange(10, 14)
-    new $P2, 'Slice' [10 .. 14]
-    $P1 = iter  $P2
-#    I0 = P1."len"()
-iter_loop:
-        unless $P1, iter_end
-    shift $I1, $P1
-    print $I1
-    print "\n"
-    branch iter_loop
-iter_end:
-    print "ok\n"
-    end
-.end
-CODE
-10
-11
-12
-13
-ok
-OUTPUT
 
 TODO: {
     local $TODO = "adding keys during iteration";

Modified: branches/rakudoreg/t/pmc/orderedhash.t
==============================================================================
--- branches/rakudoreg/t/pmc/orderedhash.t	(original)
+++ branches/rakudoreg/t/pmc/orderedhash.t	Wed Dec 17 13:31:52 2008
@@ -651,10 +651,6 @@
     print "--\n"
     set P2, P0[0]
     print P2
-    set P2, P0[1, 'foo']
-    print P2
-    set P2, P0[1, 'quux']
-    print P2
     end
 CODE
 bar
@@ -662,8 +658,6 @@
 xyzzy
 --
 Foo
-baz
-xyzzy
 OUTPUT
 
 pasm_output_is( <<'CODE', <<'OUTPUT', "exists compound key" );
@@ -732,7 +726,7 @@
     exists I0, P0[2]
     print I0
     print "\n--\n"
-    delete P0[1, 'quux']
+    delete P0[1; 'quux']
     exists I0, P0['b'; 'quux']
     print I0
     exists I0, P0[1; 'quux']

Modified: branches/rakudoreg/t/steps/auto_snprintf-01.t
==============================================================================
--- branches/rakudoreg/t/steps/auto_snprintf-01.t	(original)
+++ branches/rakudoreg/t/steps/auto_snprintf-01.t	Wed Dec 17 13:31:52 2008
@@ -5,13 +5,12 @@
 
 use strict;
 use warnings;
-use Test::More tests => 38;
+use Test::More tests => 33;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::init::defaults');
 use_ok('config::init::hints');
 use_ok('config::auto::attributes');
-use_ok('config::auto::aio');
 use_ok('config::auto::snprintf');
 use Parrot::Configure;
 use Parrot::Configure::Options qw( process_options );
@@ -34,7 +33,6 @@
 test_step_thru_runstep($conf, q{init::defaults}, $args);
 test_step_thru_runstep($conf, q{init::hints}, $args);
 test_step_thru_runstep($conf, q{auto::attributes}, $args);
-test_step_thru_runstep($conf, q{auto::aio}, $args);
 
 my $pkg = q{auto::snprintf};
 

Modified: branches/rakudoreg/tools/util/release.json
==============================================================================
--- branches/rakudoreg/tools/util/release.json	(original)
+++ branches/rakudoreg/tools/util/release.json	Wed Dec 17 13:31:52 2008
@@ -1,9 +1,9 @@
 {
-    "release.version"  : "0.8.1",
-    "release.name"     : "Tio Richie",
+    "release.version"  : "0.8.2",
+    "release.name"     : "Feliz Loro",
     "release.day"      : "Tuesday",
-    "release.date"     : "18 Nov 2008",
-    "release.nextdate" : "16 Dec 2008",
+    "release.date"     : "16 Dec 2008",
+    "release.nextdate" : "20 January 2009",
 
     "web.root"         : "http://parrotcode.org/",
     "web.source"       : "source.html",
@@ -11,10 +11,10 @@
     "web.repository"   : "https://svn.perl.org/parrot/trunk/",
 
     "bugday.day"       : "Saturday",
-    "bugday.date"      : "13 Dec 2008",
+    "bugday.date"      : "17 Jan 2009",
 
     "wiki.root"        : "http://www.perlfoundation.org/parrot/index.cgi?",
-    "wiki.bugday"      : "bug_day_2008_12_13",
+    "wiki.bugday"      : "bug_day_2009_01_17",
 
     "cpan.search"      : "http://search.cpan.org/dist/parrot",
     "subversion.root"  : "http://subversion.tigris.org/",

Modified: branches/rakudoreg/xconf/samples/testfoobar
==============================================================================
--- branches/rakudoreg/xconf/samples/testfoobar	(original)
+++ branches/rakudoreg/xconf/samples/testfoobar	Wed Dec 17 13:31:52 2008
@@ -49,7 +49,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm

Modified: branches/rakudoreg/xconf/samples/yourfoobar
==============================================================================
--- branches/rakudoreg/xconf/samples/yourfoobar	(original)
+++ branches/rakudoreg/xconf/samples/yourfoobar	Wed Dec 17 13:31:52 2008
@@ -57,7 +57,6 @@
 auto::signal
 auto::socklen_t
 auto::env
-auto::aio
 auto::gmp
 auto::readline
 auto::gdbm



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About