Index: ruby/trunk/adl_parser/lib/parser.rb
===================================================================
--- ruby/trunk/adl_parser/lib/parser.rb	(revision 4)
+++ ruby/trunk/adl_parser/lib/parser.rb	(revision 14)
@@ -21,5 +21,5 @@
     class Parser < Racc::Parser
 
-module_eval <<'..end lib/parser.y modeval..ida66f0a3b48', 'lib/parser.y', 624
+module_eval <<'..end lib/parser.y modeval..id7c96f38efa', 'lib/parser.y', 634
 ###----------/* keywords */ --------------------------------------------- 
 @@adl_reserved = {
@@ -304,4 +304,11 @@
       when /\A\<=/   # <=
         yield :SYM_LE, :SYM_LE
+      when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
+        @in_c_domain_type = true
+        @adl_type.push(:dadl)
+          yield :START_V_C_DOMAIN_TYPE_BLOCK, :START_V_C_DOMAIN_TYPE_BLOCK
+###         else
+###           raise
+###         end
       when /\A\</   # <
         if @in_interval
@@ -501,4 +508,9 @@
           @in_interval = false
           yield :SYM_GT, :SYM_GT
+        elsif @in_c_domain_type
+          @in_c_domain_type = false
+          adl_type = @adl_type.pop
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :END_V_C_DOMAIN_TYPE_BLOCK, :END_V_C_DOMAIN_TYPE_BLOCK
         else
           adl_type = @adl_type.pop
@@ -734,4 +746,5 @@
   @in_regexp = false
   @in_interval = false
+  @in_c_domain_type = false
   yyparse self, :scan
 end
@@ -758,5 +771,5 @@
 
 
-..end lib/parser.y modeval..ida66f0a3b48
+..end lib/parser.y modeval..id7c96f38efa
 
 ##### racc 1.4.5 generates ###
@@ -764,22 +777,19 @@
 racc_reduce_table = [
  0, 0, :racc_error,
- 2, 93, :_reduce_none,
- 1, 93, :_reduce_none,
- 8, 94, :_reduce_none,
- 2, 95, :_reduce_none,
- 2, 95, :_reduce_none,
- 1, 103, :_reduce_none,
- 2, 103, :_reduce_none,
- 3, 104, :_reduce_none,
- 1, 105, :_reduce_none,
- 3, 105, :_reduce_none,
- 3, 106, :_reduce_none,
- 1, 106, :_reduce_none,
- 0, 96, :_reduce_none,
+ 2, 94, :_reduce_none,
+ 1, 94, :_reduce_none,
+ 8, 95, :_reduce_none,
  2, 96, :_reduce_none,
  2, 96, :_reduce_none,
+ 1, 104, :_reduce_none,
+ 2, 104, :_reduce_none,
+ 3, 105, :_reduce_none,
+ 1, 106, :_reduce_none,
+ 3, 106, :_reduce_none,
+ 3, 107, :_reduce_none,
+ 1, 107, :_reduce_none,
+ 0, 97, :_reduce_none,
  2, 97, :_reduce_none,
  2, 97, :_reduce_none,
- 0, 98, :_reduce_none,
  2, 98, :_reduce_none,
  2, 98, :_reduce_none,
@@ -787,162 +797,132 @@
  2, 99, :_reduce_none,
  2, 99, :_reduce_none,
+ 0, 100, :_reduce_none,
  2, 100, :_reduce_none,
  2, 100, :_reduce_none,
- 1, 108, :_reduce_none,
- 1, 108, :_reduce_none,
- 5, 109, :_reduce_none,
- 5, 109, :_reduce_none,
- 2, 111, :_reduce_none,
+ 2, 101, :_reduce_none,
+ 2, 101, :_reduce_none,
+ 1, 109, :_reduce_none,
+ 1, 109, :_reduce_none,
+ 5, 110, :_reduce_none,
+ 5, 110, :_reduce_none,
+ 2, 112, :_reduce_none,
+ 1, 114, :_reduce_none,
+ 2, 114, :_reduce_none,
  1, 113, :_reduce_none,
- 2, 113, :_reduce_none,
- 1, 112, :_reduce_none,
- 1, 112, :_reduce_none,
+ 1, 113, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 1, 119, :_reduce_none,
+ 3, 126, :_reduce_none,
+ 1, 127, :_reduce_none,
+ 4, 120, :_reduce_none,
+ 3, 120, :_reduce_none,
+ 6, 121, :_reduce_none,
+ 2, 129, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 3, 132, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 1, 125, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 133, :_reduce_none,
+ 1, 117, :_reduce_none,
  1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 1, 118, :_reduce_none,
- 4, 119, :_reduce_none,
- 3, 119, :_reduce_none,
- 6, 120, :_reduce_none,
- 2, 126, :_reduce_none,
- 2, 129, :_reduce_none,
- 3, 129, :_reduce_none,
- 2, 129, :_reduce_none,
- 1, 124, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 130, :_reduce_none,
- 1, 116, :_reduce_none,
- 1, 117, :_reduce_none,
- 2, 117, :_reduce_none,
- 5, 139, :_reduce_none,
- 5, 139, :_reduce_none,
- 5, 139, :_reduce_none,
- 2, 140, :_reduce_none,
- 3, 140, :_reduce_none,
- 1, 141, :_reduce_none,
- 2, 141, :_reduce_none,
- 1, 141, :_reduce_none,
- 0, 127, :_reduce_none,
- 2, 127, :_reduce_none,
- 0, 128, :_reduce_none,
- 2, 128, :_reduce_none,
+ 2, 118, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 5, 142, :_reduce_none,
+ 2, 143, :_reduce_none,
+ 3, 143, :_reduce_none,
  1, 144, :_reduce_none,
  2, 144, :_reduce_none,
- 3, 145, :_reduce_none,
- 1, 145, :_reduce_none,
- 3, 145, :_reduce_none,
- 0, 101, :_reduce_none,
- 2, 101, :_reduce_none,
- 2, 101, :_reduce_none,
+ 1, 144, :_reduce_none,
+ 0, 130, :_reduce_none,
+ 2, 130, :_reduce_none,
+ 0, 131, :_reduce_none,
+ 2, 131, :_reduce_none,
+ 1, 147, :_reduce_none,
+ 2, 147, :_reduce_none,
+ 3, 148, :_reduce_none,
+ 1, 148, :_reduce_none,
+ 3, 148, :_reduce_none,
+ 0, 102, :_reduce_none,
  2, 102, :_reduce_none,
  2, 102, :_reduce_none,
- 1, 107, :_reduce_none,
- 1, 148, :_reduce_none,
- 1, 148, :_reduce_none,
- 1, 149, :_reduce_none,
- 2, 149, :_reduce_none,
- 3, 149, :_reduce_none,
- 3, 151, :_reduce_none,
+ 2, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
+ 1, 108, :_reduce_none,
+ 1, 151, :_reduce_none,
+ 1, 151, :_reduce_none,
  1, 152, :_reduce_none,
  2, 152, :_reduce_none,
+ 3, 152, :_reduce_none,
+ 3, 154, :_reduce_none,
+ 1, 155, :_reduce_none,
+ 2, 155, :_reduce_none,
+ 1, 156, :_reduce_none,
+ 1, 156, :_reduce_none,
  1, 153, :_reduce_none,
  1, 153, :_reduce_none,
- 1, 150, :_reduce_none,
- 1, 150, :_reduce_none,
- 1, 156, :_reduce_none,
- 2, 156, :_reduce_none,
- 3, 157, :_reduce_none,
- 1, 158, :_reduce_none,
  1, 159, :_reduce_none,
  2, 159, :_reduce_none,
  3, 160, :_reduce_none,
- 3, 161, :_reduce_none,
- 1, 155, :_reduce_none,
- 2, 155, :_reduce_none,
- 2, 163, :_reduce_none,
+ 1, 161, :_reduce_none,
+ 1, 162, :_reduce_none,
+ 2, 162, :_reduce_none,
  3, 163, :_reduce_none,
- 1, 164, :_reduce_none,
- 1, 154, :_reduce_none,
- 2, 154, :_reduce_none,
- 3, 165, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 166, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
- 1, 162, :_reduce_none,
+ 3, 164, :_reduce_none,
+ 1, 158, :_reduce_none,
+ 2, 158, :_reduce_none,
+ 2, 166, :_reduce_none,
+ 3, 166, :_reduce_none,
  1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 167, :_reduce_none,
- 1, 168, :_reduce_none,
- 1, 168, :_reduce_none,
- 1, 168, :_reduce_none,
- 1, 168, :_reduce_none,
- 1, 168, :_reduce_none,
- 1, 168, :_reduce_none,
- 1, 115, :_reduce_none,
- 1, 115, :_reduce_none,
+ 1, 157, :_reduce_none,
+ 2, 157, :_reduce_none,
+ 3, 168, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 169, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 165, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
  1, 171, :_reduce_none,
- 3, 181, :_reduce_none,
- 3, 181, :_reduce_none,
- 3, 181, :_reduce_none,
- 1, 172, :_reduce_none,
- 2, 172, :_reduce_none,
- 2, 172, :_reduce_none,
- 3, 182, :_reduce_none,
- 3, 182, :_reduce_none,
- 3, 182, :_reduce_none,
- 5, 190, :_reduce_none,
- 6, 190, :_reduce_none,
- 6, 190, :_reduce_none,
- 7, 190, :_reduce_none,
- 4, 190, :_reduce_none,
- 4, 190, :_reduce_none,
- 4, 190, :_reduce_none,
- 4, 190, :_reduce_none,
- 3, 190, :_reduce_none,
- 1, 173, :_reduce_none,
- 2, 173, :_reduce_none,
- 2, 173, :_reduce_none,
- 3, 183, :_reduce_none,
- 3, 183, :_reduce_none,
- 3, 183, :_reduce_none,
- 5, 191, :_reduce_none,
- 6, 191, :_reduce_none,
- 6, 191, :_reduce_none,
- 7, 191, :_reduce_none,
- 4, 191, :_reduce_none,
- 4, 191, :_reduce_none,
- 4, 191, :_reduce_none,
- 4, 191, :_reduce_none,
- 3, 191, :_reduce_none,
- 1, 174, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 116, :_reduce_none,
+ 1, 116, :_reduce_none,
  1, 174, :_reduce_none,
  3, 184, :_reduce_none,
@@ -950,24 +930,9 @@
  3, 184, :_reduce_none,
  1, 175, :_reduce_none,
+ 2, 175, :_reduce_none,
+ 2, 175, :_reduce_none,
  3, 185, :_reduce_none,
  3, 185, :_reduce_none,
  3, 185, :_reduce_none,
- 1, 176, :_reduce_none,
- 3, 186, :_reduce_none,
- 3, 186, :_reduce_none,
- 3, 186, :_reduce_none,
- 5, 192, :_reduce_none,
- 6, 192, :_reduce_none,
- 6, 192, :_reduce_none,
- 7, 192, :_reduce_none,
- 4, 192, :_reduce_none,
- 4, 192, :_reduce_none,
- 4, 192, :_reduce_none,
- 4, 192, :_reduce_none,
- 3, 192, :_reduce_none,
- 1, 177, :_reduce_none,
- 3, 187, :_reduce_none,
- 3, 187, :_reduce_none,
- 3, 187, :_reduce_none,
  5, 193, :_reduce_none,
  6, 193, :_reduce_none,
@@ -979,8 +944,10 @@
  4, 193, :_reduce_none,
  3, 193, :_reduce_none,
- 1, 178, :_reduce_none,
- 3, 188, :_reduce_none,
- 3, 188, :_reduce_none,
- 3, 188, :_reduce_none,
+ 1, 176, :_reduce_none,
+ 2, 176, :_reduce_none,
+ 2, 176, :_reduce_none,
+ 3, 186, :_reduce_none,
+ 3, 186, :_reduce_none,
+ 3, 186, :_reduce_none,
  5, 194, :_reduce_none,
  6, 194, :_reduce_none,
@@ -992,4 +959,13 @@
  4, 194, :_reduce_none,
  3, 194, :_reduce_none,
+ 1, 177, :_reduce_none,
+ 1, 177, :_reduce_none,
+ 3, 187, :_reduce_none,
+ 3, 187, :_reduce_none,
+ 3, 187, :_reduce_none,
+ 1, 178, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
  1, 179, :_reduce_none,
  3, 189, :_reduce_none,
@@ -1005,89 +981,110 @@
  4, 195, :_reduce_none,
  3, 195, :_reduce_none,
- 1, 169, :_reduce_none,
- 3, 170, :_reduce_none,
- 3, 170, :_reduce_none,
- 3, 170, :_reduce_none,
  1, 180, :_reduce_none,
- 1, 110, :_reduce_none,
- 2, 110, :_reduce_none,
+ 3, 190, :_reduce_none,
+ 3, 190, :_reduce_none,
+ 3, 190, :_reduce_none,
+ 5, 196, :_reduce_none,
+ 6, 196, :_reduce_none,
+ 6, 196, :_reduce_none,
+ 7, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
  3, 196, :_reduce_none,
- 1, 196, :_reduce_none,
- 3, 196, :_reduce_none,
- 1, 147, :_reduce_none,
- 1, 147, :_reduce_none,
- 2, 198, :_reduce_none,
- 2, 198, :_reduce_none,
+ 1, 181, :_reduce_none,
+ 3, 191, :_reduce_none,
+ 3, 191, :_reduce_none,
+ 3, 191, :_reduce_none,
+ 5, 197, :_reduce_none,
+ 6, 197, :_reduce_none,
+ 6, 197, :_reduce_none,
+ 7, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 3, 197, :_reduce_none,
+ 1, 182, :_reduce_none,
+ 3, 192, :_reduce_none,
+ 3, 192, :_reduce_none,
+ 3, 192, :_reduce_none,
  5, 198, :_reduce_none,
- 5, 198, :_reduce_none,
- 2, 198, :_reduce_none,
+ 6, 198, :_reduce_none,
+ 6, 198, :_reduce_none,
+ 7, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
  3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 198, :_reduce_none,
- 3, 197, :_reduce_none,
- 1, 197, :_reduce_none,
- 1, 197, :_reduce_none,
+ 1, 172, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 1, 183, :_reduce_none,
+ 1, 111, :_reduce_none,
+ 2, 111, :_reduce_none,
+ 3, 199, :_reduce_none,
+ 1, 199, :_reduce_none,
+ 3, 199, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 200, :_reduce_none,
  1, 200, :_reduce_none,
  1, 200, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 202, :_reduce_none,
- 3, 201, :_reduce_none,
- 1, 201, :_reduce_none,
- 1, 201, :_reduce_none,
- 1, 201, :_reduce_none,
- 1, 125, :_reduce_none,
- 2, 125, :_reduce_none,
- 1, 199, :_reduce_none,
- 3, 199, :_reduce_none,
- 2, 203, :_reduce_none,
  1, 203, :_reduce_none,
- 0, 142, :_reduce_none,
- 5, 142, :_reduce_none,
- 1, 204, :_reduce_none,
- 3, 204, :_reduce_none,
- 5, 143, :_reduce_none,
- 1, 205, :_reduce_none,
+ 1, 203, :_reduce_none,
  3, 205, :_reduce_none,
  3, 205, :_reduce_none,
  3, 205, :_reduce_none,
- 5, 205, :_reduce_none,
- 5, 205, :_reduce_none,
- 5, 205, :_reduce_none,
- 5, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 204, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 128, :_reduce_none,
+ 2, 128, :_reduce_none,
+ 1, 202, :_reduce_none,
+ 3, 202, :_reduce_none,
+ 2, 206, :_reduce_none,
+ 1, 206, :_reduce_none,
+ 0, 145, :_reduce_none,
+ 5, 145, :_reduce_none,
  1, 207, :_reduce_none,
- 1, 207, :_reduce_none,
- 0, 114, :_reduce_none,
- 5, 114, :_reduce_none,
- 2, 114, :_reduce_none,
- 1, 206, :_reduce_none,
- 3, 206, :_reduce_none,
+ 3, 207, :_reduce_none,
+ 5, 146, :_reduce_none,
  1, 208, :_reduce_none,
- 1, 208, :_reduce_none,
- 1, 208, :_reduce_none,
- 1, 131, :_reduce_none,
- 3, 131, :_reduce_none,
- 3, 131, :_reduce_none,
- 1, 209, :_reduce_none,
- 1, 209, :_reduce_none,
- 1, 209, :_reduce_none,
- 1, 132, :_reduce_none,
- 3, 132, :_reduce_none,
- 3, 132, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
  1, 210, :_reduce_none,
  1, 210, :_reduce_none,
- 1, 210, :_reduce_none,
- 1, 133, :_reduce_none,
- 3, 133, :_reduce_none,
- 3, 133, :_reduce_none,
+ 0, 115, :_reduce_none,
+ 5, 115, :_reduce_none,
+ 2, 115, :_reduce_none,
+ 1, 209, :_reduce_none,
+ 3, 209, :_reduce_none,
  1, 211, :_reduce_none,
  1, 211, :_reduce_none,
@@ -1103,5 +1100,4 @@
  3, 135, :_reduce_none,
  1, 213, :_reduce_none,
- 3, 213, :_reduce_none,
  1, 213, :_reduce_none,
  1, 213, :_reduce_none,
@@ -1109,497 +1105,524 @@
  3, 136, :_reduce_none,
  3, 136, :_reduce_none,
- 1, 215, :_reduce_none,
- 1, 215, :_reduce_none,
- 3, 215, :_reduce_none,
+ 1, 214, :_reduce_none,
+ 1, 214, :_reduce_none,
+ 1, 214, :_reduce_none,
  1, 137, :_reduce_none,
  3, 137, :_reduce_none,
  3, 137, :_reduce_none,
- 1, 216, :_reduce_none,
- 1, 216, :_reduce_none,
- 3, 216, :_reduce_none,
- 3, 216, :_reduce_none,
+ 1, 215, :_reduce_none,
+ 1, 215, :_reduce_none,
+ 1, 215, :_reduce_none,
  1, 138, :_reduce_none,
  3, 138, :_reduce_none,
  3, 138, :_reduce_none,
+ 1, 216, :_reduce_none,
+ 3, 216, :_reduce_none,
+ 1, 216, :_reduce_none,
+ 1, 216, :_reduce_none,
+ 1, 139, :_reduce_none,
+ 3, 139, :_reduce_none,
+ 3, 139, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 3, 218, :_reduce_none,
+ 1, 140, :_reduce_none,
+ 3, 140, :_reduce_none,
+ 3, 140, :_reduce_none,
+ 1, 219, :_reduce_none,
+ 1, 219, :_reduce_none,
+ 3, 219, :_reduce_none,
+ 3, 219, :_reduce_none,
+ 1, 141, :_reduce_none,
+ 3, 141, :_reduce_none,
+ 3, 141, :_reduce_none,
+ 1, 124, :_reduce_none,
+ 3, 124, :_reduce_none,
+ 3, 124, :_reduce_none,
+ 1, 220, :_reduce_none,
+ 3, 220, :_reduce_none,
+ 3, 221, :_reduce_none,
  1, 123, :_reduce_none,
- 3, 123, :_reduce_none,
- 3, 123, :_reduce_none,
- 1, 217, :_reduce_none,
- 3, 217, :_reduce_none,
- 3, 218, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 3, 222, :_reduce_none,
+ 0, 223, :_reduce_none,
+ 1, 223, :_reduce_none,
+ 2, 223, :_reduce_none,
  1, 122, :_reduce_none,
- 1, 122, :_reduce_none,
- 3, 219, :_reduce_none,
- 0, 220, :_reduce_none,
- 1, 220, :_reduce_none,
- 2, 220, :_reduce_none,
- 1, 121, :_reduce_none,
- 1, 146, :_reduce_none,
- 1, 146, :_reduce_none,
- 1, 214, :_reduce_none ]
-
-racc_reduce_n = 375
-
-racc_shift_n = 630
+ 1, 149, :_reduce_none,
+ 1, 149, :_reduce_none,
+ 1, 217, :_reduce_none ]
+
+racc_reduce_n = 377
+
+racc_shift_n = 634
 
 racc_action_table = [
-   537,   192,   490,   172,   488,    80,    83,   486,    63,   485,
-    93,   588,   243,   262,    59,   482,   409,   574,   185,   187,
-   323,   324,   465,    12,   443,   337,   133,   135,   549,   134,
-   136,   597,    82,    46,   242,    46,   558,   533,   535,   538,
-   385,   577,   471,    14,    53,   261,    80,    83,   576,   173,
-    40,    42,   376,   188,   579,    71,   145,   469,    76,   357,
-   362,   395,    85,    88,    91,    69,   550,    69,    91,   549,
-    88,    85,    69,    76,   575,    85,   129,   558,   533,   535,
-   538,   444,    80,    83,   372,   374,   377,   553,   190,   181,
-   349,    40,    42,   376,   196,   393,    71,   145,    69,    76,
-   357,   362,   467,    85,    88,    91,    69,   550,   497,   270,
-   185,   187,    91,   391,   110,   531,    91,    85,   528,    80,
-    83,   529,   530,   385,   386,   372,   374,   377,   553,   376,
-   236,   349,    71,   145,   130,    76,   357,   362,   624,    85,
-    88,    91,    69,    80,    83,   188,   323,   324,   501,    88,
-   475,   185,   187,   320,   322,   126,    88,   314,   130,   235,
-    89,   372,   374,   377,    40,    42,    85,   349,    69,    71,
-   259,    69,    76,   121,   123,    80,    83,   185,   187,   206,
-   190,   181,   113,   118,   185,   187,   188,   189,   191,   129,
-   130,   182,   178,    71,   183,   186,    76,   121,   123,    76,
-   267,   320,   322,    71,     1,   273,   113,   118,   316,    80,
-    83,   206,   188,   129,    88,   185,   187,   185,   187,   188,
-   141,   190,   181,     6,   248,    71,   185,   187,    76,   121,
-   123,    80,    83,   185,   187,   179,   189,   191,   113,   118,
-   182,   234,   267,   183,   186,   129,   248,   190,   181,   184,
-   188,    71,   188,   233,   190,   181,    80,    83,    16,    71,
-   504,   188,    76,    80,    83,    80,    83,   203,   188,   323,
-   324,   248,   323,   324,    80,    83,    17,   232,   248,   129,
-   248,    71,   503,  -372,    76,   190,   181,   190,   181,   130,
-    80,    83,    80,    83,   323,   324,   190,   181,   184,   323,
-   324,   129,    24,   190,   181,   248,    71,   248,   572,    76,
-   206,   320,   322,    71,   245,    71,    76,   238,    76,    80,
-    83,   329,    76,   389,    71,    76,   129,    76,   121,   123,
-    25,    80,    83,   129,   130,   129,   246,   113,   118,    98,
-    71,   239,    71,    76,   129,    76,   130,    76,   320,   322,
-   323,   324,    76,   197,   425,   126,    80,    83,    40,    42,
-   129,    71,   129,   232,    40,    42,   569,   206,   318,    71,
-   495,   248,    76,   121,   123,    80,    83,   320,   322,    40,
-    42,    71,   113,   118,    76,   121,   123,    80,    83,   129,
-   130,   206,   121,   123,   113,   118,   179,   326,    71,    80,
-    83,   129,   130,    76,   204,   312,    71,    98,   204,    76,
-   231,   126,   456,   410,   130,    91,   320,   322,    80,    83,
-    40,    42,   411,   206,  -373,    71,   129,   453,    76,   121,
-   123,    80,    83,   248,    20,   206,    21,    71,   113,   118,
-    76,   121,   123,    80,    83,   129,   130,    40,    42,    71,
-   113,   118,    76,   121,   123,   595,   596,   129,   130,    80,
-    83,   412,   113,   118,   320,   322,    71,   206,    71,   129,
-    67,    76,    80,    83,   248,   199,   200,   201,   202,   206,
-    31,    71,   320,   322,    76,   121,   123,   130,   129,   320,
-   322,   301,   302,    71,   113,   118,    76,   121,   123,   456,
-    20,   129,    21,   413,    80,    83,   113,   118,   126,    71,
-   268,    46,    76,   129,    71,    29,    30,    40,    42,   130,
-    40,    42,    71,    80,    83,    76,   121,   123,   334,   129,
-    80,    83,    71,    78,    79,   113,   118,   414,   248,    71,
-   126,   332,   129,   331,   415,   248,   287,   288,   103,    40,
-    42,    80,    83,   416,    71,   417,    59,    76,   121,   123,
-   199,   200,   201,   202,    78,    79,   130,   113,   118,    80,
-    83,   279,   280,    71,   129,    46,    76,   614,   615,   616,
-    71,   303,   304,    76,   418,    80,    83,   126,   199,   200,
-   201,   202,   419,   129,    40,    42,    40,    42,   277,   278,
-   129,    71,   275,   276,    76,   121,   123,    80,    83,    78,
-    79,   420,  -102,   421,   113,   118,   166,   628,   629,    71,
-   145,   129,    76,    78,    79,    82,    85,    88,    91,    69,
-   141,    73,    89,    80,    83,    71,   406,   407,    76,    78,
-    79,    82,    85,    88,    91,    69,    33,    73,    80,    83,
-   320,   322,   223,   240,   473,   217,    31,    71,   219,   220,
-    76,    80,    83,    31,    85,    88,    91,    69,   199,   200,
-   201,   202,    80,    83,   320,   322,   320,   322,   404,   405,
-   423,   402,   403,    71,   400,   401,    76,    46,   398,   399,
-    85,    88,    91,    69,    46,   230,    40,    42,    71,   229,
-    71,    76,   426,    40,    42,    85,    88,    91,    69,   456,
-   427,    71,   396,   397,    76,   428,   429,   430,    85,    88,
-    91,    69,    71,   431,   453,    76,    71,   133,   135,    85,
-    88,    91,    69,   199,   200,   201,   202,   199,   200,   201,
-   202,   199,   200,   201,   202,   199,   200,   201,   202,   199,
-   200,   201,   202,   134,   136,   432,   433,   434,   435,   436,
-   437,   438,   439,   440,   441,   442,   230,   228,   231,   232,
-   234,   445,   235,   446,   447,   386,   449,   450,   452,   227,
-   226,   458,    85,   460,    88,   462,    91,   225,   224,   213,
-   212,   211,   210,   476,    69,   478,   209,   480,   206,   196,
-   194,   180,   175,    98,   492,   493,    88,   496,   137,   499,
-    91,   104,    46,   505,   507,   508,    95,   510,   511,   512,
-   513,    85,   515,    88,   517,    91,   519,    69,   521,    66,
-   523,    62,   525,   526,   527,    61,   532,    31,   559,   560,
-    53,   562,   563,   564,   565,   566,   567,    69,    69,    69,
-    69,   568,  -102,   387,   203,   571,   339,    51,    50,   581,
-   582,   196,   584,   586,   587,    85,   590,   591,    28,    26,
-    82,   237,   598,   599,   141,   129,   569,   604,   605,   606,
-   607,   608,    18,    69,    15,   618,    10,   620,     9,   621,
-   622,   623,     8,     7,   626,   627,   318,   509 ]
+   574,   497,   475,   144,   409,    90,    96,   472,   467,   469,
+    24,   591,   572,   576,     1,   466,   376,    16,   152,   155,
+   323,   324,   108,    67,   368,    54,   162,   112,   524,   163,
+    67,   262,   124,     6,   236,    17,   536,   511,    25,   514,
+   516,   513,   543,    49,   571,   540,    90,    96,   541,   542,
+    49,    44,    46,   317,   156,   495,    78,   183,   112,    86,
+   294,   299,   410,   124,   126,   109,   112,   526,   112,   524,
+   573,   124,   109,   126,    86,   493,   443,   536,   511,    71,
+   514,   516,   273,    90,    96,   309,   314,   279,   532,   148,
+   149,   287,    44,    46,   317,   147,   435,    78,   183,   112,
+    86,   294,   299,   491,   124,   126,   109,   112,   526,   480,
+   160,   109,   152,   155,   431,   143,   628,   217,   463,   323,
+   324,    90,    96,   382,   383,   433,   309,   314,   279,   532,
+   126,   317,   287,   112,    78,   183,   100,    86,   294,   299,
+   230,   124,   126,   109,   112,    90,    96,   371,   156,   216,
+    88,    94,   109,   152,   155,   133,   126,   124,   138,   142,
+   100,    76,   127,   309,   314,   279,    90,    96,   124,   287,
+   152,   155,    78,    86,    78,    86,    88,    94,   152,   155,
+   126,   100,   138,   148,   149,    82,    85,   152,   155,   156,
+   157,   158,    71,   459,   150,   390,    78,   151,   153,    86,
+    88,    94,   134,    98,   152,   155,   156,   152,   155,    82,
+    85,   237,    44,    46,   156,   458,    71,    78,    90,    96,
+    86,    88,    94,   156,   148,   149,   129,   391,   323,   324,
+    82,    85,   568,   219,   382,   383,   274,    71,   323,   324,
+   156,   148,   149,   156,   152,   155,   211,   157,   158,   148,
+   149,   150,   393,   154,   151,   153,   382,   383,   148,   149,
+   236,    62,   165,   166,   167,   168,    90,    96,   212,    78,
+    12,   395,    86,   323,   324,   148,   149,   489,   148,   149,
+   156,   100,    86,    44,    46,    78,   215,    90,    96,    71,
+    14,   396,    86,   323,   324,   382,   383,   417,   102,    90,
+    96,   378,   100,   138,   341,   342,   164,    78,   214,   239,
+   154,    90,    96,   180,   100,   148,   149,    78,    90,    96,
+    86,    88,    94,  -374,   138,   397,   100,    86,   382,   383,
+    82,    85,   456,   219,    90,    96,   138,    71,    78,    44,
+    46,    86,    88,    94,    90,    96,    78,    86,   138,   219,
+    78,    82,    85,    86,    88,    94,    90,    96,    71,   100,
+   398,   329,    78,    82,    85,    86,    88,    94,   123,    78,
+    71,   100,    86,   374,    37,    82,    85,    90,    96,    78,
+   399,    98,    71,   109,    33,    78,    90,    96,    86,    71,
+    44,    46,   100,   138,    58,    78,   382,   383,    86,    88,
+    94,   219,    90,    96,   386,    71,   385,    78,    82,    85,
+    86,    88,    94,   400,    98,    71,    49,   219,   323,   324,
+    82,    85,    49,    44,    46,    44,    46,    71,    78,    90,
+    96,    86,    88,    94,   171,    90,    96,    78,   401,   209,
+    86,    82,    85,   380,   100,   479,   388,    78,    71,    33,
+   219,  -375,   402,    78,   382,   383,    86,    71,   403,    90,
+    96,    90,    96,   382,   383,    20,   138,    21,   322,   382,
+   383,   404,    86,    71,   219,   405,   100,    90,    96,   169,
+    78,    49,   170,    86,    88,    94,    78,    90,    96,    86,
+    44,    46,   219,    82,    85,   406,    90,    96,    98,   414,
+    71,   407,   100,    90,    96,    78,    71,    44,    46,   408,
+    78,   219,    78,    86,   413,    86,    88,    94,   219,   265,
+    78,    90,    96,   261,    98,    82,    85,    20,    78,    21,
+    71,    86,    71,    44,    46,   267,   219,   102,    78,   343,
+   344,    86,    88,    94,    90,    96,   268,    78,    71,   570,
+    86,    82,    85,   268,    78,    55,   266,    86,    71,   100,
+   382,   383,    90,    96,   260,    33,   259,    71,   163,    90,
+    96,   170,    78,   258,    71,    86,   264,   219,    44,    46,
+    33,    98,   165,   166,   167,   168,   180,    90,    96,   380,
+    44,    46,    71,   339,   340,    78,   414,    49,    86,    88,
+    94,    90,    96,   618,   619,   620,    44,    46,    82,    85,
+   265,    78,    49,    78,   266,    71,    86,   127,    90,    96,
+    78,    44,    46,    86,   119,   121,   123,   124,   126,   109,
+   112,  -104,   115,    71,   267,   202,    90,    96,    78,   183,
+   257,    86,   119,   121,   123,   124,   126,   109,   112,   180,
+   115,   256,    78,   382,   383,    86,   255,   498,   436,   124,
+   126,   109,   112,    90,    96,   382,   383,   252,   437,    78,
+   245,   438,    86,   249,   251,   439,   124,   126,   109,   112,
+    90,    96,   440,   326,   351,   352,   441,    78,   119,   121,
+    86,   599,   600,   254,   124,   126,   109,   112,    29,    30,
+   444,   414,   365,   366,    78,   165,   166,   167,   168,   165,
+   166,   167,   168,   445,    78,   446,   413,    86,   119,   121,
+   447,   124,   126,   109,   112,   165,   166,   167,   168,   273,
+   274,    78,    44,    46,    86,   119,   121,   448,   124,   126,
+   109,   112,   165,   166,   167,   168,   165,   166,   167,   168,
+   165,   166,   167,   168,   165,   166,   167,   168,   632,   633,
+   428,   429,   426,   427,   424,   425,   422,   423,   420,   421,
+   418,   419,   331,   332,   449,   450,   451,   452,   453,   454,
+   455,   243,   162,   169,   242,   460,   461,   241,   240,   239,
+   238,   471,   138,   474,   171,   478,   112,   142,   482,   268,
+   484,   485,   486,   207,   102,   161,   147,   141,   138,   136,
+   500,   124,   502,   126,   504,   109,   506,   112,    49,   509,
+   510,   131,   538,   539,    69,    68,   545,   546,    62,   548,
+   124,   550,   126,   552,   109,   554,   112,    33,   557,   558,
+   559,   560,   561,   562,   563,    57,   566,   109,   164,  -104,
+   263,   126,    51,   577,   579,   147,   581,   583,   112,   112,
+   112,    32,   584,   585,   586,   587,   588,   589,   590,   276,
+   593,   594,    28,   597,    27,   277,   601,   602,   603,   318,
+    71,   570,   607,   609,   610,   611,    18,   616,   124,    15,
+   622,    10,     9,   624,   625,   626,   627,     8,     7,   630,
+   631,   123,   112 ]
 
 racc_action_check = [
-   504,   113,   437,   104,   436,   504,   504,   435,    48,   434,
-    54,   570,   178,   196,    39,   433,   288,   544,   253,   253,
-   433,   433,   397,     6,   367,   239,    80,    83,   504,    80,
-    83,   582,   239,    39,   178,    48,   504,   504,   504,   504,
-   504,   545,   403,     6,    54,   196,   545,   545,   544,   104,
-   504,   504,   504,   253,   545,   504,   504,   401,   504,   504,
-   504,   280,   504,   504,   504,   504,   504,   437,   436,   545,
-   435,   434,   288,   433,   544,   397,   113,   545,   545,   545,
-   545,   367,   243,   243,   504,   504,   504,   504,   253,   253,
-   504,   545,   545,   545,   570,   278,   545,   545,   403,   545,
-   545,   545,   399,   545,   545,   545,   545,   545,   442,   210,
-   256,   256,   401,   276,    66,   493,   280,   210,   493,    66,
-    66,   493,   493,   245,   245,   545,   545,   545,   545,   243,
-   167,   545,   243,   243,    66,   243,   243,   243,   620,   243,
-   243,   243,   243,   620,   620,   256,   407,   407,   446,   278,
-   407,   258,   258,   446,   446,    66,   399,   226,   620,   166,
-   442,   243,   243,   243,    66,    66,   276,   243,   226,    66,
-   194,   493,    66,    66,    66,   194,   194,   251,   251,   620,
-   256,   256,    66,    66,   207,   207,   258,   207,   207,    66,
-   194,   207,   108,   620,   207,   207,   620,   620,   620,   407,
-   207,   575,   575,   446,     0,   212,   620,   620,   227,   183,
-   183,   194,   251,   620,   212,   249,   249,   250,   250,   207,
-   227,   258,   258,     0,   183,   194,   388,   388,   194,   194,
-   194,   248,   248,   111,   111,   108,   111,   111,   194,   194,
-   111,   164,   388,   111,   111,   194,   248,   251,   251,   207,
-   249,   575,   250,   163,   207,   207,   185,   185,    10,   183,
-   449,   388,   183,   182,   182,   186,   186,   122,   111,   425,
-   425,   185,   234,   234,   130,   130,    10,   161,   182,   183,
-   186,   248,   449,   122,   248,   249,   249,   250,   250,   130,
-   184,   184,   181,   181,   475,   475,   388,   388,   111,   231,
-   231,   248,    18,   111,   111,   184,   185,   181,   538,   185,
-   130,   576,   576,   182,   180,   186,   182,   169,   186,   604,
-   604,   234,   425,   261,   130,   234,   185,   130,   130,   130,
-    18,   202,   202,   182,   604,   186,   180,   130,   130,    95,
-   184,   170,   181,   184,   130,   181,   202,   475,   232,   232,
-   304,   304,   231,   118,   304,   604,   187,   187,   538,   538,
-   184,   576,   181,   534,   604,   604,   534,   202,   440,   604,
-   440,   187,   604,   604,   604,   107,   107,   586,   586,    95,
-    95,   202,   604,   604,   202,   202,   202,   201,   201,   604,
-   107,   179,   118,   118,   202,   202,   205,   232,   232,   200,
-   200,   202,   201,   304,   206,   225,   187,    62,   126,   187,
-   160,   107,   586,   289,   200,   225,   423,   423,   191,   191,
-   107,   107,   290,   201,   126,   107,   187,   586,   107,   107,
-   107,   199,   199,   191,    30,   200,    30,   201,   107,   107,
-   201,   201,   201,   197,   197,   107,   199,    62,    62,   200,
-   201,   201,   200,   200,   200,   580,   580,   201,   197,   190,
-   190,   291,   200,   200,   508,   508,   423,   199,   191,   200,
-    50,   191,   610,   610,   190,   613,   613,   613,   613,   197,
-    50,   199,   473,   473,   199,   199,   199,   610,   191,   230,
-   230,   221,   221,   197,   199,   199,   197,   197,   197,   508,
-    14,   199,    14,   292,   617,   617,   197,   197,   610,   190,
-   208,    50,   190,   197,   508,    22,    22,   610,   610,   617,
-    50,    50,   610,   189,   189,   610,   610,   610,   237,   190,
-   188,   188,   473,   237,   237,   610,   610,   293,   189,   230,
-   617,   235,   610,   235,   294,   188,   218,   218,    64,   617,
-   617,   608,   608,   295,   617,   296,    64,   617,   617,   617,
-   208,   208,   208,   208,   233,   233,   608,   617,   617,    98,
-    98,   216,   216,   189,   617,    64,   189,   607,   607,   607,
-   188,   222,   222,   188,   297,    53,    53,   608,   263,   263,
-   263,   263,   298,   189,   535,   535,   608,   608,   215,   215,
-   188,   608,   214,   214,   608,   608,   608,   217,   217,   444,
-   444,   299,    98,   300,   608,   608,    98,   623,   623,    98,
-    98,   608,    98,    98,    98,    98,    98,    98,    98,    98,
-    98,    98,    53,   223,   223,    53,   286,   286,    53,    53,
-    53,    53,    53,    53,    53,    53,    26,    53,   145,   145,
-   405,   405,   145,   175,   405,   145,    26,   217,   145,   145,
-   217,   219,   219,   175,   217,   217,   217,   217,   264,   264,
-   264,   264,   220,   220,   389,   389,   302,   302,   285,   285,
-   302,   284,   284,   223,   283,   283,   223,    26,   282,   282,
-   223,   223,   223,   223,   175,   158,    26,    26,   145,   156,
-   405,   145,   305,   175,   175,   145,   145,   145,   145,   389,
-   306,   219,   281,   281,   219,   307,   308,   309,   219,   219,
-   219,   219,   220,   310,   389,   220,   302,   320,   322,   220,
-   220,   220,   220,   266,   266,   266,   266,   260,   260,   260,
-   260,   119,   119,   119,   119,   265,   265,   265,   265,   625,
-   625,   625,   625,   323,   324,   339,   341,   344,   347,   351,
-   354,   357,   358,   360,   362,   363,   365,   155,   369,   370,
-   373,   375,   376,   378,   380,   383,   384,   386,   387,   153,
-   150,   390,   391,   392,   393,   394,   395,   147,   146,   144,
-   143,   142,   140,   408,   409,   422,   139,   424,   129,   115,
-   114,   109,   105,   100,   438,   439,   209,   441,    87,   443,
-   211,    65,    59,   450,   451,   453,    56,   459,   461,   463,
-   464,   465,   466,   467,   468,   469,   470,   471,   472,    49,
-   474,    47,   477,   479,   481,    46,   503,    37,   505,   507,
-    36,   514,   516,   518,   520,   522,   524,   528,   529,   530,
-   531,   532,    31,   246,   536,   537,   242,    28,    27,   553,
-   554,   556,   559,   560,   569,   238,   573,   574,    20,    19,
-   236,   168,   584,   585,   229,   589,   593,   597,   598,   600,
-   601,   603,    11,   224,     8,   609,     5,   612,     4,   614,
-   615,   616,     3,     2,   621,   622,   228,   455 ]
+   529,   427,   405,    82,   312,   529,   529,   403,   400,   401,
+    18,   567,   527,   529,     0,   399,   261,    10,   319,   319,
+   399,   399,    59,    47,   255,    31,    90,   261,   529,    90,
+    59,   196,   255,     0,   319,    10,   529,   529,    18,   529,
+   529,   459,   478,    47,   527,   478,   459,   459,   478,   478,
+    59,   529,   529,   529,   319,   425,   529,   529,   427,   529,
+   529,   529,   312,   529,   529,   529,   529,   529,   405,   459,
+   527,   400,   403,   401,   399,   423,   352,   459,   459,    82,
+   459,   459,   459,   215,   215,   529,   529,   529,   529,   319,
+   319,   529,   459,   459,   459,   567,   344,   459,   459,   478,
+   459,   459,   459,   421,   459,   459,   459,   459,   459,   408,
+    85,   425,   222,   222,   340,    81,   622,   147,   398,   267,
+   267,   622,   622,   398,   398,   342,   459,   459,   459,   459,
+   423,   215,   459,   352,   215,   215,   622,   215,   215,   215,
+   161,   215,   215,   215,   215,   161,   161,   257,   222,   147,
+    85,    85,   344,   225,   225,    69,   257,   421,   622,    81,
+   161,    54,   408,   215,   215,   215,    54,    54,   340,   215,
+   228,   228,   622,   267,   398,   622,   622,   622,   224,   224,
+   342,    54,   161,   222,   222,   622,   622,    84,    84,   225,
+    84,    84,   622,   390,    84,   269,   161,    84,    84,   161,
+   161,   161,    69,    54,   229,   229,   228,   221,   221,   161,
+   161,   173,    54,    54,   224,   390,   161,    54,   158,   158,
+    54,    54,    54,    84,   225,   225,    63,   270,   417,   417,
+    54,    54,   516,   158,   456,   456,   272,    54,   489,   489,
+   229,   228,   228,   221,   172,   172,   141,   172,   172,   224,
+   224,   172,   274,    84,   172,   172,   498,   498,    84,    84,
+   172,    63,   173,   173,   173,   173,   165,   165,   141,   158,
+     6,   276,   158,   419,   419,   229,   229,   419,   221,   221,
+   172,   165,   417,   516,   516,   456,   143,   168,   168,   158,
+     6,   277,   489,   332,   332,   573,   573,   332,    57,   167,
+   167,   262,   168,   165,   247,   247,    91,   498,   143,   280,
+   172,   166,   166,   262,   167,   172,   172,   165,   219,   219,
+   165,   165,   165,    91,   168,   281,   166,   419,   366,   366,
+   165,   165,   366,   219,   157,   157,   167,   165,   168,    57,
+    57,   168,   168,   168,   623,   623,   573,   332,   166,   157,
+   167,   168,   168,   167,   167,   167,   160,   160,   168,   623,
+   282,   243,   166,   167,   167,   166,   166,   166,   243,   219,
+   167,   160,   219,   260,    27,   166,   166,   616,   616,   366,
+   285,   623,   166,   260,    27,   157,   156,   156,   157,   219,
+   623,   623,   616,   160,    38,   623,   268,   268,   623,   623,
+   623,   156,   155,   155,   266,   157,   266,   160,   623,   623,
+   160,   160,   160,   289,   616,   623,    27,   155,   239,   239,
+   160,   160,    38,   616,   616,    27,    27,   160,   616,   100,
+   100,   616,   616,   616,    98,   154,   154,   156,   292,   136,
+   156,   616,   616,   407,   100,   407,   268,   268,   616,   136,
+   154,    98,   294,   155,   265,   265,   155,   156,   296,   153,
+   153,   612,   612,   318,   318,    14,   100,    14,   239,   571,
+   571,   299,   239,   155,   153,   300,   612,   148,   148,    96,
+   100,   136,    96,   100,   100,   100,   154,   607,   607,   154,
+   136,   136,   148,   100,   100,   303,   151,   151,   612,   318,
+   100,   305,   607,   150,   150,   265,   154,   612,   612,   307,
+   153,   151,   612,   153,   318,   612,   612,   612,   150,   310,
+   571,   149,   149,   193,   607,   612,   612,    30,   148,    30,
+   153,   148,   612,   607,   607,   315,   149,   131,   607,   248,
+   248,   607,   607,   607,    75,    75,   518,   151,   148,   518,
+   151,   607,   607,   316,   150,    32,   317,   150,   607,    75,
+   485,   485,   152,   152,   190,    32,   189,   151,   323,    62,
+    62,   324,   149,   188,   150,   149,   199,   152,   131,   131,
+   511,    75,   233,   233,   233,   233,   264,   102,   102,   263,
+    75,    75,   149,   246,   246,    75,   485,    32,    75,    75,
+    75,   251,   251,   610,   610,   610,    32,    32,    75,    75,
+   201,   485,   511,   152,   202,    75,   152,    62,   245,   245,
+    62,   511,   511,    62,    62,    62,    62,    62,    62,    62,
+    62,   102,    62,   152,   204,   102,   249,   249,   102,   102,
+   187,   102,   102,   102,   102,   102,   102,   102,   102,   102,
+   102,   186,   251,   429,   429,   251,   185,   429,   345,   251,
+   251,   251,   251,   183,   183,   583,   583,   183,   346,   245,
+   183,   347,   245,   183,   183,   348,   245,   245,   245,   245,
+   252,   252,   349,   241,   250,   250,   350,   249,   241,   241,
+   249,   578,   578,   184,   249,   249,   249,   249,    22,    22,
+   353,   583,   253,   253,   429,   231,   231,   231,   231,   232,
+   232,   232,   232,   354,   183,   355,   583,   183,   238,   238,
+   356,   183,   183,   183,   183,    95,    95,    95,    95,   211,
+   211,   252,   514,   514,   252,   410,   410,   357,   252,   252,
+   252,   252,   234,   234,   234,   234,   235,   235,   235,   235,
+   615,   615,   615,   615,   629,   629,   629,   629,   627,   627,
+   338,   338,   337,   337,   336,   336,   335,   335,   334,   334,
+   333,   333,   244,   244,   358,   359,   360,   361,   362,   363,
+   364,   182,   382,   383,   181,   393,   394,   179,   178,   176,
+   175,   402,   142,   404,   138,   406,   259,   137,   409,   205,
+   411,   413,   416,   111,   106,    89,    83,    79,    71,    70,
+   430,   431,   432,   433,   434,   435,   442,   443,    67,   457,
+   458,    65,   460,   461,    53,    49,   487,   488,    43,   490,
+   491,   492,   493,   494,   495,   496,   497,    41,   499,   501,
+   503,   505,   507,   508,   510,    36,   513,   256,   515,    33,
+   198,   254,    28,   532,   534,   537,   538,   539,   540,   541,
+   542,    26,   547,   549,   551,   553,   555,   556,   564,   212,
+   569,   570,    20,   572,    19,   214,   579,   581,   582,   216,
+   592,   596,   601,   602,   604,   605,    11,   608,   242,     8,
+   614,     5,     4,   617,   618,   619,   620,     3,     2,   625,
+   626,   240,   543 ]
 
 racc_action_pointer = [
-   203,   nil,   874,   892,   870,   859,    22,   nil,   884,   nil,
-   257,   854,   nil,   nil,   476,   nil,   nil,   nil,   301,   839,
-   860,   nil,   493,   nil,   nil,   nil,   645,   827,   832,   nil,
-   410,   803,   nil,   nil,   nil,   nil,   791,   826,   nil,    -9,
-   nil,   nil,   nil,   nil,   nil,   nil,   834,   823,    -7,   797,
-   469,   nil,   nil,   579,    -5,   nil,   808,   nil,   nil,   770,
-   nil,   nil,   396,   nil,   533,   765,   113,   nil,   nil,   nil,
+    13,   nil,   879,   897,   874,   864,   269,   nil,   889,   nil,
+    16,   858,   nil,   nil,   441,   nil,   nil,   nil,     9,   844,
+   864,   nil,   676,   nil,   nil,   nil,   830,   373,   827,   nil,
+   503,    -7,   554,   799,   nil,   nil,   837,   nil,   379,   nil,
+   nil,   826,   nil,   778,   nil,   nil,   nil,     0,   nil,   824,
+   nil,   nil,   nil,   777,   160,   nil,   nil,   287,   nil,     7,
+   nil,   nil,   563,   211,   nil,   813,   nil,   775,   nil,   154,
+   760,   765,   nil,   nil,   nil,   538,   nil,   nil,   nil,   774,
+   nil,    82,     2,   721,   181,    89,   nil,   nil,   nil,   759,
+   -31,   277,   nil,   nil,   nil,   652,   422,   nil,   405,   nil,
+   423,   nil,   581,   nil,   nil,   nil,   793,   nil,   nil,   nil,
+   nil,   752,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   -30,   nil,   nil,   -29,   nil,   nil,   nil,   758,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   328,   nil,   nil,   563,   nil,
-   792,   nil,   nil,   nil,     2,   754,   nil,   369,   159,   768,
-   nil,   227,   nil,     0,   755,   715,   nil,   nil,   332,   669,
-   nil,   nil,   238,   nil,   nil,   nil,   379,   nil,   nil,   756,
-   268,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   742,
-   738,   nil,   737,   736,   774,   642,   734,   733,   nil,   nil,
-   726,   nil,   nil,   725,   nil,   713,   645,   nil,   641,   nil,
-   356,   223,   nil,   199,   187,   nil,   105,    76,   817,   263,
-   287,   nil,   nil,   nil,   nil,   652,   nil,   nil,     0,   349,
-   302,   286,   257,   203,   284,   250,   259,   350,   524,   517,
-   453,   412,   nil,   nil,   169,   nil,    12,   437,   nil,   425,
-   393,   381,   325,   nil,   nil,   320,   375,   178,   488,   742,
-    54,   745,   150,   nil,   545,   541,   514,   601,   489,   655,
-   666,   434,   524,   627,   817,   350,   102,   153,   843,   807,
-   483,   293,   342,   504,   266,   488,   808,   473,   802,   -30,
-   nil,   nil,   821,    76,   nil,    82,   818,   nil,   225,   209,
-   211,   171,   nil,    12,   nil,   nil,   104,   nil,   145,   nil,
-   665,   311,   nil,   516,   596,   673,   661,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   103,   nil,    85,   nil,
-    51,   655,   631,   627,   624,   621,   579,   nil,     6,   356,
-   365,   404,   446,   480,   487,   496,   498,   527,   535,   554,
-   556,   nil,   670,   nil,   344,   645,   653,   658,   659,   660,
-   666,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   671,   nil,   672,   694,   695,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   719,
-   nil,   676,   nil,   nil,   677,   nil,   nil,   678,   nil,   nil,
-   nil,   679,   nil,   nil,   680,   nil,   nil,   707,   686,   nil,
-   709,   nil,   710,   685,   nil,   712,   nil,     1,   nil,   714,
-   715,   nil,   nil,   716,   nil,   757,   718,   nil,   693,   nil,
-   760,   nil,   nil,   733,   743,   nil,   699,   742,   220,   668,
-   724,   719,   726,   720,   728,   721,   nil,    12,   nil,    92,
-   nil,    47,   nil,    32,   nil,   644,   nil,   140,   736,   728,
+   nil,   526,   nil,   nil,   nil,   nil,   438,   720,   765,   nil,
+   nil,   234,   749,   274,   nil,   nil,   nil,   116,   471,   515,
+   497,   490,   556,   453,   429,   396,   380,   328,   212,   nil,
+   350,   139,   nil,   nil,   nil,   260,   305,   293,   281,   nil,
+   nil,   nil,   238,   189,   nil,   735,   734,   nil,   733,   732,
+   nil,   729,   726,   657,   638,   601,   596,   585,   558,   511,
+   509,   nil,   nil,   468,   nil,   nil,   -24,   nil,   795,   521,
+   nil,   555,   559,   nil,   579,   744,   nil,   nil,   nil,   nil,
+   nil,   687,   834,   nil,   840,    77,   867,   nil,   nil,   312,
+   nil,   201,   106,   nil,   172,   147,   nil,   nil,   164,   198,
+   nil,   632,   636,   509,   669,   673,   nil,   nil,   657,   412,
+   838,   627,   824,   305,   714,   612,   535,   246,   481,   630,
+   626,   595,   674,   644,   786,   -32,   781,    91,   nil,   729,
+   317,   -40,   245,   535,   518,   448,   350,   113,   390,   162,
+   213,   nil,   193,   nil,   173,   nil,   235,   255,   nil,   nil,
+   254,   311,   279,   nil,   nil,   299,   nil,   nil,   nil,   332,
+   nil,   nil,   357,   nil,   397,   nil,   377,   nil,   nil,   416,
+   394,   nil,   nil,   418,   nil,   446,   nil,   428,   nil,   nil,
+   464,   nil,   -19,   nil,   nil,   480,   498,   501,   457,    12,
+   nil,   nil,   nil,   508,   511,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   287,   712,   710,   708,   706,   704,   702,   nil,
+   104,   nil,   115,   nil,    86,   600,   610,   613,   617,   624,
+   628,   nil,    66,   642,   655,   657,   662,   679,   716,   717,
+   718,   719,   720,   721,   722,   nil,   322,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   738,   410,   740,   263,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    14,     8,     6,     3,     1,   743,   748,
-   315,   747,   107,   808,   549,   nil,   147,   nil,   nil,   248,
-   780,   735,   nil,   757,   nil,   883,   nil,   nil,   nil,   760,
-   nil,   761,   nil,   762,   763,   758,   765,   759,   767,   760,
-   769,   761,   771,   476,   773,   288,   nil,   775,   nil,   776,
-   nil,   777,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   105,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   801,    -1,   826,   nil,   806,   458,   nil,
-   nil,   nil,   nil,   nil,   784,   nil,   785,   nil,   786,   nil,
-   787,   nil,   788,   nil,   789,   nil,   nil,   nil,   781,   782,
-   783,   784,   815,   nil,   309,   543,   825,   841,   307,   nil,
-   nil,   nil,   nil,   nil,    -6,    40,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   769,   827,   nil,   777,   nil,   nil,   806,
-   851,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   797,
-    10,   nil,   nil,   837,   866,   195,   305,   nil,   nil,   nil,
-   366,   nil,    19,   nil,   814,   859,   371,   nil,   nil,   799,
-   nil,   nil,   nil,   819,   nil,   nil,   nil,   834,   822,   nil,
-   865,   800,   nil,   837,   313,   nil,   nil,   496,   545,   871,
-   466,   nil,   842,   403,   809,   810,   811,   498,   nil,   nil,
-   137,   811,   812,   536,   nil,   677,   nil,   nil,   nil,   nil ]
+   nil,   nil,   725,   726,   nil,   nil,   nil,   nil,   nil,   nil,
+   181,   nil,   nil,   752,   706,   nil,   nil,   nil,   117,    14,
+     7,     8,   729,     6,   732,     1,   737,   389,   108,   797,
+   674,   786,   nil,   742,   nil,   nil,   744,   222,   nil,   267,
+   nil,    93,   nil,    65,   nil,    45,   nil,    -9,   nil,   647,
+   752,   747,   754,   748,   756,   749,   nil,   nil,   nil,   nil,
+   nil,   nil,   758,   750,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   228,   761,   785,    40,
+   810,   790,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    32,   nil,
+   nil,   nil,   nil,   nil,   nil,   554,   nil,   768,   769,   232,
+   771,   766,   773,   767,   775,   768,   777,   769,   250,   780,
+   nil,   781,   nil,   782,   nil,   783,   nil,   784,   785,   nil,
+   808,   569,   nil,   832,   680,   819,   231,   nil,   491,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   -11,   nil,    -1,
+   nil,   nil,   762,   nil,   821,   nil,   nil,   770,   799,   845,
+   791,   792,   793,   835,   nil,   nil,   nil,   804,   nil,   805,
+   nil,   806,   nil,   807,   nil,   808,   809,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   829,   nil,   nil,    10,   nil,   841,
+   803,   463,   872,   289,   nil,   nil,   nil,   nil,   601,   864,
+   nil,   818,   864,   659,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   803,   nil,   nil,   nil,   823,   nil,   nil,   nil,
+   nil,   838,   826,   nil,   803,   871,   nil,   481,   842,   nil,
+   521,   nil,   455,   nil,   844,   677,   371,   879,   813,   814,
+   815,   nil,   115,   338,   nil,   815,   816,   676,   nil,   681,
+   nil,   nil,   nil,   nil ]
 
 racc_action_default = [
-  -375,    -2,  -375,  -375,  -375,   -13,    -6,    -4,  -375,    -1,
-  -375,  -375,    -5,    -7,  -375,   630,   -15,   -14,  -375,   -18,
-  -375,   -12,  -375,    -9,   -17,   -16,  -375,   -21,  -375,    -8,
-  -375,  -111,   -97,   -20,   -98,   -99,  -375,  -375,   -86,   -87,
-  -145,   -88,  -146,   -89,   -19,  -107,   -93,  -375,  -375,  -375,
-  -375,   -11,   -10,  -375,  -375,  -103,  -375,  -100,  -108,  -375,
-   -90,   -94,  -375,  -109,  -375,   -81,  -375,   -23,   -22,  -229,
-  -125,  -151,  -126,  -246,  -127,  -128,  -166,  -129,  -181,  -182,
-  -375,  -120,  -186,  -375,  -121,  -190,  -122,  -375,  -203,  -147,
-  -123,  -216,  -124,  -101,  -104,  -375,   -91,  -112,  -111,   -96,
-  -375,   -95,   -92,  -110,  -375,  -375,  -253,   -27,  -375,  -375,
-   -25,  -375,  -272,  -375,  -375,  -304,  -282,  -273,  -375,  -250,
-  -285,  -270,   -31,  -271,  -280,  -281,  -288,  -247,   -24,  -283,
-  -375,  -252,   -26,  -152,  -167,  -153,  -168,  -106,  -105,  -136,
-  -125,  -242,  -137,  -126,  -375,  -375,  -138,  -127,  -116,  -139,
-  -128,  -117,  -140,  -118,  -141,  -130,  -119,  -142,  -131,  -143,
-  -132,  -121,  -144,  -133,  -122,  -115,  -147,  -134,  -123,  -135,
-  -124,  -113,   -83,   -82,    -3,  -375,  -372,  -248,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -375,  -255,  -254,  -375,   -30,  -375,  -375,  -258,  -375,
-  -375,  -375,  -375,   -32,  -287,  -284,  -288,  -375,  -375,  -375,
-  -375,  -375,  -375,  -114,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
-   -85,   -84,  -375,  -375,  -286,  -375,  -375,  -278,  -375,  -262,
-  -263,  -259,  -274,  -264,  -275,  -276,  -260,  -277,  -261,  -251,
-  -249,  -375,  -306,  -265,  -266,  -267,  -268,  -279,  -269,  -205,
-  -193,  -191,  -218,  -206,  -204,  -202,  -375,  -215,  -375,  -228,
-  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -241,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -165,  -375,  -180,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -231,  -219,  -217,  -232,  -230,  -245,  -243,  -149,  -244,
-  -375,  -155,  -375,  -375,  -375,  -170,  -156,  -154,  -184,  -171,
-  -169,  -150,  -148,  -188,  -185,  -183,  -192,  -189,  -187,  -375,
-  -322,  -318,   -54,  -328,  -324,   -55,  -334,  -330,   -56,  -374,
-  -341,  -336,  -311,   -57,  -343,  -317,   -58,  -352,  -339,  -323,
-  -347,   -59,  -353,  -349,  -329,  -310,   -60,  -356,  -335,  -316,
-  -309,  -342,  -321,  -315,  -327,  -375,  -346,  -333,  -312,   -53,
-  -375,   -33,   -62,   -34,  -375,   -61,  -289,  -375,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -375,  -200,  -375,  -213,  -375,
-  -226,  -375,  -239,  -375,  -163,  -375,  -178,  -375,  -375,  -375,
-  -199,  -212,  -225,  -238,  -162,  -177,  -201,  -214,  -227,  -240,
-  -164,  -179,  -375,  -375,  -375,  -375,  -198,  -211,  -224,  -237,
-  -161,  -176,  -257,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -256,  -375,   -29,   -63,  -375,
-  -375,   -67,   -28,  -151,  -302,  -375,  -303,  -307,  -194,  -375,
-  -207,  -375,  -220,  -375,  -375,  -375,  -375,  -375,  -375,  -375,
-  -375,  -375,  -375,  -375,  -375,  -375,  -233,  -375,  -157,  -375,
-  -172,  -375,  -320,  -319,  -325,  -326,  -332,  -331,  -338,  -337,
-  -345,  -344,  -354,  -375,  -340,  -348,  -355,  -351,  -350,  -358,
-  -357,  -314,  -313,  -375,  -375,  -375,   -68,  -375,  -375,  -305,
-  -196,  -209,  -222,  -195,  -375,  -208,  -375,  -221,  -375,  -234,
-  -375,  -158,  -375,  -173,  -375,  -235,  -159,  -174,  -375,  -375,
-  -375,  -375,  -375,   -43,  -309,  -375,   -31,   -44,  -375,   -71,
-   -69,   -36,   -37,   -38,  -359,  -375,   -39,  -362,   -40,  -371,
-  -366,  -365,   -41,  -368,  -375,   -35,  -304,   -52,   -42,  -375,
-  -375,  -308,  -197,  -210,  -223,  -236,  -160,  -175,   -65,  -375,
-  -304,   -66,   -51,   -49,  -375,  -375,  -375,   -44,   -70,   -64,
-  -375,  -369,  -375,   -48,  -291,  -375,  -375,  -364,   -46,  -375,
-   -50,  -361,  -360,  -375,  -363,  -367,  -370,   -72,  -375,  -290,
-  -375,  -294,   -45,   -74,  -375,  -292,  -293,  -375,  -375,  -375,
-   -73,   -76,  -375,   -79,  -295,  -296,  -297,   -75,   -47,   -77,
-  -375,  -375,  -375,  -375,   -80,   -78,  -298,  -299,  -300,  -301 ]
+  -377,    -2,  -377,  -377,  -377,   -13,    -6,    -4,  -377,    -1,
+  -377,  -377,    -5,    -7,  -377,   634,   -15,   -14,  -377,   -18,
+  -377,   -12,  -377,    -9,   -17,   -16,   -21,  -377,  -377,    -8,
+  -377,  -377,  -377,  -113,   -91,  -109,  -377,   -20,  -377,   -99,
+  -100,  -377,  -101,  -377,  -147,   -88,  -148,   -89,   -19,   -95,
+   -90,   -11,   -10,   -83,  -377,   -23,   -22,  -377,  -111,  -377,
+  -110,  -102,  -377,  -377,  -105,  -377,   -92,  -377,   -96,  -377,
+  -377,  -285,  -283,   -26,  -249,   -27,   -25,  -254,  -153,  -377,
+  -255,  -377,  -377,  -306,  -377,  -377,  -168,  -274,  -272,  -377,
+  -377,   -31,  -284,  -275,  -273,  -252,  -377,  -287,  -290,  -282,
+  -377,   -24,  -113,   -94,  -114,   -98,  -377,   -97,  -112,  -218,
+  -124,  -377,  -231,  -125,  -126,  -248,  -127,  -128,  -129,  -183,
+  -130,  -184,  -131,  -188,  -192,  -122,  -205,  -149,  -123,  -103,
+  -106,  -377,   -93,   -85,   -84,    -3,  -377,  -286,  -290,  -250,
+  -374,  -377,  -377,  -377,  -257,  -256,   -30,  -377,  -377,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -260,
+  -377,  -377,  -154,  -169,   -32,  -377,  -377,  -377,  -377,  -155,
+  -170,  -289,  -377,  -377,  -146,  -135,  -124,  -117,  -136,  -125,
+  -244,  -137,  -126,  -377,  -138,  -127,  -139,  -128,  -377,  -140,
+  -129,  -118,  -141,  -130,  -119,  -142,  -120,  -143,  -132,  -121,
+  -144,  -133,  -149,  -145,  -134,  -123,  -115,  -108,  -107,   -87,
+   -86,  -377,  -377,  -288,  -377,  -377,  -377,  -308,  -279,  -377,
+  -280,  -264,  -265,  -276,  -266,  -261,  -277,  -278,  -262,  -263,
+  -253,  -251,  -267,  -268,  -269,  -270,  -281,  -271,  -377,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -116,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
+  -377,   -33,   -34,   -63,  -291,   -64,  -377,  -377,  -344,  -335,
+  -317,  -377,  -314,   -55,  -324,  -320,   -56,  -376,  -330,  -326,
+   -57,  -336,  -332,   -58,  -354,  -343,  -338,  -313,   -59,  -355,
+  -345,  -319,   -60,  -341,  -325,  -349,   -61,  -351,  -331,  -323,
+  -312,   -62,  -358,  -337,  -329,  -318,  -311,  -348,  -377,  -377,
+  -186,  -171,  -173,  -377,  -377,  -190,  -187,  -185,  -194,  -191,
+  -189,  -182,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -204,
+  -377,  -217,  -377,  -230,  -377,  -377,  -377,  -377,  -377,  -377,
+  -377,  -243,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
+  -377,  -377,  -377,  -377,  -377,  -167,  -377,  -207,  -195,  -193,
+  -220,  -208,  -206,  -233,  -221,  -219,  -234,  -232,  -247,  -245,
+  -151,  -246,  -377,  -377,  -157,  -152,  -150,  -172,  -158,  -156,
+  -377,   -29,   -65,  -377,   -69,   -28,  -259,  -258,  -377,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
+  -377,  -377,  -309,  -153,  -305,  -304,  -377,  -377,  -180,  -377,
+  -202,  -377,  -215,  -377,  -228,  -377,  -241,  -377,  -165,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -179,  -201,  -214,  -227,
+  -240,  -164,  -377,  -377,  -181,  -203,  -216,  -229,  -242,  -166,
+  -178,  -200,  -213,  -226,  -239,  -163,  -377,  -377,  -377,  -377,
+  -377,  -377,   -70,  -316,  -315,  -321,  -322,  -328,  -327,  -334,
+  -333,  -356,  -340,  -339,  -357,  -347,  -346,  -342,  -377,  -350,
+  -353,  -352,  -360,  -359,  -307,  -377,  -174,  -377,  -377,  -377,
+  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,  -377,
+  -196,  -377,  -209,  -377,  -222,  -377,  -235,  -377,  -377,  -159,
+  -377,  -377,   -54,   -44,  -377,   -31,  -377,   -73,  -311,   -71,
+   -36,   -37,   -38,   -39,  -373,   -40,  -368,  -361,   -41,  -377,
+  -364,   -42,  -370,  -367,  -377,   -35,   -43,  -306,  -377,  -377,
+  -377,  -377,  -377,  -377,  -310,  -176,  -175,  -377,  -197,  -377,
+  -210,  -377,  -223,  -377,  -236,  -377,  -377,  -160,  -198,  -211,
+  -224,  -237,  -161,   -67,  -377,   -46,   -68,  -306,   -53,   -51,
+  -377,  -377,  -377,  -377,   -44,   -72,   -66,  -371,  -377,  -377,
+   -50,  -293,  -377,  -377,  -177,  -199,  -212,  -225,  -238,  -162,
+   -45,   -48,  -377,   -52,  -366,  -365,  -377,  -363,  -362,  -369,
+  -372,   -74,  -377,  -292,  -296,  -377,   -47,  -377,   -76,  -294,
+  -377,  -295,   -75,   -78,  -377,   -81,  -377,  -377,  -297,  -298,
+  -299,   -79,  -377,   -77,   -49,  -377,  -377,  -377,   -82,   -80,
+  -300,  -301,  -302,  -303 ]
 
 racc_goto_table = [
-   119,    84,    37,   193,   195,   162,    86,   382,   381,    90,
-   455,    44,   153,    87,   207,    57,    58,    92,   127,   540,
-   102,    55,   114,    60,   101,   619,    37,     3,    23,   610,
-   451,    75,   619,   617,   545,    68,    64,   375,   100,    94,
-   609,   119,   122,    96,    52,   603,   161,    74,    60,   383,
-    54,   164,   380,   138,   168,   506,    72,   101,   165,   177,
-   578,    70,   170,   114,   208,   107,   249,   250,   251,   171,
-   253,   100,   144,   256,   148,   258,   150,   247,    57,    58,
-   151,   252,   132,   254,   255,   156,   257,   498,   128,    22,
-    13,     2,   147,   221,   174,   105,    65,    49,   222,   155,
-   158,   143,   160,   163,   167,   169,   140,   139,   142,   146,
-   149,   152,   154,   157,   159,    27,    19,   198,   205,    11,
-     5,   244,   585,   218,   600,     4,   561,   594,   260,   580,
-   nil,   208,   388,   263,   264,   265,   266,   nil,   nil,   216,
-   nil,   317,   nil,   319,   nil,   448,   nil,   nil,   215,   nil,
-   nil,    37,   nil,   214,   nil,   nil,   nil,   nil,   nil,   nil,
-   241,   nil,   nil,   nil,   nil,   285,   nil,   293,   299,   nil,
-   286,   309,   294,   300,   nil,   nil,   310,   nil,   321,   nil,
-   327,   nil,   nil,   nil,   325,   nil,   nil,   330,   nil,   328,
-   nil,   370,   nil,   335,   nil,   284,   373,   292,   298,   nil,
-   333,   308,   311,   338,   315,   272,   nil,   601,   nil,   nil,
-   nil,   283,   269,   291,   297,   274,   nil,   307,   271,   313,
-   282,   nil,   290,   296,   nil,   281,   306,   289,   295,   nil,
-   nil,   305,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   336,   nil,   nil,   nil,
-   422,   nil,   nil,   nil,   nil,   nil,   nil,   424,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   408,   539,   nil,   nil,
-   nil,   nil,   nil,   nil,   394,   nil,   nil,   nil,   nil,   nil,
-   nil,   392,   nil,   nil,   390,   nil,   nil,   nil,   nil,   nil,
+    95,   128,   146,   145,   113,   411,    41,    48,   271,   110,
+   174,    41,    56,   196,   172,   103,   114,   519,   107,   120,
+    61,    95,   275,    60,    74,   181,   111,    89,   621,   612,
+   118,   394,    64,    91,    23,    66,   106,   529,   623,   621,
+   117,   205,   281,    59,   179,   139,   173,    66,    89,   176,
+    52,   116,   130,   218,   220,   132,   182,   223,   617,   193,
+   226,   227,   608,   564,   221,   222,   177,   224,   225,   272,
+   190,   228,   229,    63,   270,    75,    73,   206,   188,   191,
+   187,   194,   101,   392,   199,    61,   481,   575,    60,   208,
+     3,   185,   107,    22,    13,     2,   135,    70,    53,    31,
+   198,   201,   204,   175,   178,   462,   173,   231,   184,   186,
+   106,   232,   233,   234,   235,    41,   210,   189,   192,   195,
+   197,   200,   253,   203,    26,    19,   159,   137,    11,     5,
+   244,   213,   582,   319,   605,     4,   544,   595,   578,   nil,
+   250,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   248,   nil,   nil,   316,   nil,   nil,   nil,   nil,   nil,
+   nil,   247,   280,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   246,   379,   nil,   381,   nil,   nil,   nil,   nil,
+   320,   nil,   nil,   327,   338,   nil,   321,   nil,   350,   nil,
+   358,   364,   333,   nil,   325,   nil,   345,   330,   353,   359,
+   nil,   nil,   337,   nil,   384,   nil,   349,   389,   357,   363,
+   nil,   nil,   nil,   336,   387,   nil,   373,   348,   377,   356,
+   362,   nil,   nil,   335,   370,   nil,   nil,   347,   375,   355,
+   361,   328,   367,   nil,   334,   372,   nil,   nil,   346,   nil,
+   354,   360,   nil,   nil,   369,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   517,   415,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   604,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   416,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   457,   nil,   nil,   nil,   442,
+   nil,   nil,   434,   nil,   477,   nil,   nil,   nil,   nil,   nil,
+   432,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   430,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   464,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   465,   nil,   nil,   nil,
+   nil,   nil,   483,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   476,   nil,   487,   nil,   488,   nil,   499,   nil,
+   nil,   473,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   470,
+   nil,   nil,   nil,   nil,   496,   nil,   nil,   nil,   nil,   468,
+   nil,   nil,   nil,   494,   nil,   508,   nil,   nil,   518,   nil,
+   507,   492,   nil,   505,   nil,   nil,   280,   nil,   nil,   nil,
+   490,   503,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   501,   nil,   nil,   nil,   415,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   250,   547,   556,   515,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   555,   nil,   580,   nil,   nil,   nil,
+   nil,   nil,   nil,   553,   nil,   nil,   nil,   nil,   518,   nil,
+   nil,   551,   nil,   nil,   nil,   nil,   280,   nil,   nil,   nil,
+   549,   nil,   nil,   nil,   nil,   nil,   592,   nil,   nil,   nil,
+    41,   565,   nil,   567,   nil,   569,   nil,   337,   349,   357,
+   363,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   515,   nil,
+   596,   nil,   598,   606,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   415,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   629 ]
+
+racc_goto_check = [
+    57,    82,    22,    35,    84,   116,    23,    15,    24,    83,
+   105,    23,    15,    79,   110,    63,    85,    26,    60,    89,
+    67,    57,    49,    73,   106,    96,    72,    56,    55,    54,
+    88,    52,    70,    23,    14,    61,    23,    51,    54,    55,
+    87,    82,    40,    59,    84,   106,    57,    61,    56,    83,
+    14,    86,    70,   111,   111,    61,    85,   111,    38,    89,
+   111,   111,    37,    34,   110,   110,    72,   110,   110,    25,
+    88,   110,   110,    69,    20,    18,    17,    75,    76,    77,
+    87,    78,    16,    49,    80,    67,    81,    26,    73,    63,
+     1,    86,    60,    13,    12,    11,    10,     9,     8,     7,
+    91,    92,    93,    94,    95,    53,    57,    57,    97,    98,
+    23,    57,    57,    57,    57,    23,    15,    99,   100,   101,
+   102,   103,    82,   104,     6,     5,   107,   109,     4,     3,
+    83,   113,   114,   110,   115,     2,   117,   128,   130,   nil,
+    89,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,    88,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,    87,    83,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    86,    79,   nil,    79,   nil,   nil,   nil,   nil,
+    84,   nil,   nil,    84,    82,   nil,    83,   nil,    82,   nil,
+    82,    82,    83,   nil,    85,   nil,    83,    85,    83,    83,
+   nil,   nil,    89,   nil,    82,   nil,    89,    82,    89,    89,
+   nil,   nil,   nil,    88,    83,   nil,    89,    88,    89,    88,
+    88,   nil,   nil,    87,    88,   nil,   nil,    87,    88,    87,
+    87,    86,    87,   nil,    86,    87,   nil,   nil,    86,   nil,
+    86,    86,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    24,    82,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   454,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   494,   nil,   nil,   nil,
-   nil,   nil,   nil,   472,   nil,   nil,   nil,   nil,   nil,   nil,
-   474,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   479,   nil,   nil,   nil,   nil,   nil,   nil,   481,   nil,
-   nil,   470,   nil,   nil,   nil,   nil,   483,   477,   nil,   463,
-   nil,   nil,   nil,   nil,   502,   468,   461,   nil,   nil,   459,
-   500,   nil,   466,   nil,   nil,   464,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   491,   nil,   nil,   nil,   nil,
-   nil,   522,   nil,   nil,   nil,   nil,   nil,   nil,   524,   nil,
-   489,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   487,   nil,
-   nil,   nil,   484,   nil,   nil,   583,   nil,   nil,   nil,   520,
-   nil,   nil,   534,   nil,   nil,   nil,   454,   373,   nil,   589,
-   nil,   nil,   nil,   518,   nil,   nil,   nil,   nil,   nil,   nil,
-   516,   218,   nil,   514,   nil,   nil,   nil,   nil,   nil,   602,
-   536,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   534,   nil,   nil,   nil,   nil,   373,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   284,   292,   298,   308,
-   nil,   570,   nil,   nil,   573,   nil,   nil,   nil,   nil,   nil,
-   nil,   536,   nil,   592,   593,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   454,   nil,   nil,   nil,   nil,   nil,
+   116,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    83,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   625 ]
-
-racc_goto_check = [
-    55,    80,    23,    33,    22,   103,    81,    47,    24,    82,
-   114,    15,    77,    70,   108,    65,    71,    83,   104,    26,
-    61,    68,    54,    59,    58,    53,    23,     1,    14,    52,
-    50,    87,    53,    52,    49,    15,    57,    38,    23,    68,
-    36,    55,    23,    59,    14,    35,    80,    86,    59,    25,
-    67,    81,    20,    61,    82,    51,    85,    58,    70,   104,
-    26,    84,    83,    54,    55,    18,   108,   108,   108,    73,
-   108,    23,    74,   108,    75,   108,    87,   109,    65,    71,
-    76,   109,    17,   109,   109,    78,   109,    79,    16,    13,
-    12,    11,    86,    80,    10,     9,     8,     7,    81,    89,
-    90,    85,    91,    92,    93,    94,    84,    95,    96,    97,
-    98,    99,   100,   101,   102,     6,     5,   105,   107,     4,
-     3,   111,   112,    87,   113,     2,   115,   126,    55,   128,
-   nil,    55,   108,    55,    55,    55,    55,   nil,   nil,    86,
-   nil,    77,   nil,    77,   nil,    47,   nil,   nil,    85,   nil,
-   nil,    23,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,
-    15,   nil,   nil,   nil,   nil,    80,   nil,    80,    80,   nil,
-    81,    80,    81,    81,   nil,   nil,    81,   nil,    80,   nil,
-    80,   nil,   nil,   nil,    81,   nil,   nil,    81,   nil,    82,
-   nil,    80,   nil,    82,   nil,    87,    81,    87,    87,   nil,
-    83,    87,    87,    83,    87,    86,   nil,   114,   nil,   nil,
-   nil,    86,    85,    86,    86,    85,   nil,    86,    84,    86,
-    85,   nil,    85,    85,   nil,    84,    85,    84,    84,   nil,
-   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    84,   nil,   nil,   nil,
-    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    87,    24,   nil,   nil,
-   nil,   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,
-   nil,    85,   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,   nil,    89,
+   nil,   nil,    88,   nil,   105,   nil,   nil,   nil,   nil,   nil,
+    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    86,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    82,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,
+   nil,   nil,    84,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    89,   nil,    83,   nil,    83,   nil,    82,   nil,
+   nil,    88,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,
+   nil,   nil,   nil,   nil,    89,   nil,   nil,   nil,   nil,    86,
+   nil,   nil,   nil,    88,   nil,    82,   nil,   nil,    82,   nil,
+    89,    87,   nil,    88,   nil,   nil,    83,   nil,   nil,   nil,
+    86,    87,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+    86,   nil,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    89,    83,    82,    23,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    89,   nil,    22,   nil,   nil,   nil,
+   nil,   nil,   nil,    88,   nil,   nil,   nil,   nil,    82,   nil,
+   nil,    87,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,
+    86,   nil,   nil,   nil,   nil,   nil,    22,   nil,   nil,   nil,
+    23,    15,   nil,    23,   nil,    23,   nil,    89,    89,    89,
+    89,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    23,   nil,
+    82,   nil,    82,    35,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,    80,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   103,   nil,   nil,   nil,
-   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,
-    81,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,
-   nil,    87,   nil,   nil,   nil,   nil,    81,    87,   nil,    86,
-   nil,   nil,   nil,   nil,    80,    86,    85,   nil,   nil,    84,
-    82,   nil,    85,   nil,   nil,    84,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,
-   nil,    80,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,
-    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    85,   nil,
-   nil,   nil,    84,   nil,   nil,    22,   nil,   nil,   nil,    87,
-   nil,   nil,    80,   nil,   nil,   nil,    80,    81,   nil,    22,
-   nil,   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,
-    85,    87,   nil,    84,   nil,   nil,   nil,   nil,   nil,    33,
-    23,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,    81,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,    87,    87,    87,    87,
-   nil,    23,   nil,   nil,    23,   nil,   nil,   nil,   nil,   nil,
-   nil,    23,   nil,    80,    80,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    80,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,    55 ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    57 ]
 
 racc_goto_pointer = [
-   nil,    27,   125,   120,   114,   105,    96,    70,    47,    30,
-   -11,    91,    84,    75,    14,   -15,    22,    16,    -1,   nil,
-  -193,   nil,  -111,   -24,  -237,  -196,  -485,   nil,   nil,   nil,
-   nil,   nil,   nil,  -110,   nil,  -552,  -563,   nil,  -206,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -238,   nil,  -470,
-  -356,  -396,  -575,  -585,   -44,   -66,   nil,   -12,   -38,   -16,
-   nil,   -42,   nil,   nil,   nil,   -22,   nil,    14,   -15,   nil,
-   -40,   -21,   nil,   -31,   -26,   -24,   -18,   -86,   -13,  -355,
-   -52,   -47,   -44,   -36,     8,     3,    -6,   -22,   nil,     1,
-     2,     4,     5,     6,     7,     9,    10,    11,    12,    13,
-    14,    15,    16,   -93,   -48,    -1,   nil,   -11,  -116,  -104,
-   nil,   -58,  -437,  -462,  -379,  -382,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,  -449,   nil,  -424 ]
+   nil,    90,   135,   129,   123,   114,   105,    73,    67,    44,
+    26,    95,    88,    79,    20,   -20,    28,    22,    21,   nil,
+  -137,   nil,   -81,   -21,  -203,  -142,  -442,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,  -448,   -79,   nil,  -539,  -550,   nil,
+  -173,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -189,
+   nil,  -422,  -243,  -289,  -578,  -584,   -27,   -54,   nil,     5,
+   -39,   -12,   nil,   -42,   nil,   nil,   nil,   -21,   nil,    30,
+   -11,   nil,   -36,   -18,   nil,   -29,   -24,   -23,   -21,   -89,
+   -18,  -322,   -61,   -53,   -58,   -46,   -11,   -22,   -32,   -43,
+   nil,    -2,    -1,     0,     1,     2,   -77,     6,     7,    15,
+    16,    17,    18,    19,    21,   -92,   -30,    41,   nil,    56,
+   -86,   -95,   nil,   -11,  -406,  -449,  -313,  -349,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -434,   nil,
+  -394 ]
 
 racc_goto_default = [
    nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
-   nil,   nil,   nil,   nil,   nil,   nil,   nil,   555,   nil,   109,
-   nil,   115,   nil,   176,   nil,   nil,   nil,   541,   542,   543,
-   546,   548,   552,   116,   554,   nil,   nil,   556,   557,   379,
-   342,   345,   348,   353,   356,   361,   366,   nil,   384,   nil,
-   nil,   nil,   nil,   611,   612,   613,    38,    39,    41,    43,
-    47,   nil,    99,    32,    34,    35,    36,   nil,   nil,    56,
-   nil,    45,    48,    97,   nil,   nil,   nil,   nil,   nil,    81,
-   124,   125,   nil,   nil,   340,   343,   346,   350,    77,   360,
-   365,   369,   nil,   nil,   nil,   nil,   nil,   nil,   352,   355,
-   359,   364,   368,   371,   nil,   131,   106,   108,   111,   112,
-   117,   120,   nil,   nil,   nil,   457,   378,   341,   344,   347,
-   351,   354,   358,   363,   367,   544,   547,   551,   nil ]
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   535,   nil,    79,
+   nil,    83,   nil,   140,   nil,   nil,   nil,   520,   521,   522,
+   523,   525,   528,   531,   nil,    92,   534,   nil,   nil,   537,
+   512,   283,   286,   290,   293,   298,   302,   306,   311,   nil,
+   269,   nil,   nil,   nil,   nil,   613,   614,   615,    45,    47,
+    50,    34,    36,   nil,   105,    39,    40,    42,    43,   nil,
+   nil,    65,   nil,    35,    38,   104,   nil,   nil,   nil,   nil,
+   nil,   125,    99,    72,   nil,   nil,   284,   288,   291,   295,
+   122,   305,   310,   315,   nil,   nil,   nil,   nil,   nil,   nil,
+   297,   301,   304,   308,   313,   278,   nil,    77,    80,    81,
+    84,    87,    93,    97,   nil,   nil,   nil,   412,   282,   285,
+   289,   292,   296,   300,   303,   307,   312,   527,   530,   533,
+   nil ]
 
 racc_token_table = {
@@ -1641,63 +1664,64 @@
  :REGEXP_BODY => 35,
  :END_REGEXP_BLOCK => 36,
- :V_C_DOMAIN_TYPE => 37,
- :ERR_C_DOMAIN_TYPE => 38,
- :SYM_USE_NODE => 39,
- :SYM_ALLOW_ARCHETYPE => 40,
- :Star_code => 41,
- :V_ATTRIBUTE_IDENTIFIER => 42,
- :SYM_INCLUDE => 43,
- :SYM_EXCLUDE => 44,
- ":" => 45,
- :SYM_INVARIANT => 46,
- :V_ASSERTION_TEXT => 47,
- :SYM_ONTOLOGY => 48,
- :Left_bracket_code => 49,
- :Right_bracket_code => 50,
- :V_TYPE_IDENTIFIER => 51,
- :V_GENERIC_TYPE_IDENTIFIER => 52,
- :V_STRING => 53,
- :Comma_code => 54,
- :SYM_LIST_CONTINUE => 55,
- :V_INTEGER => 56,
- :SYM_INTERVAL_DELIM => 57,
- :SYM_ELLIPSIS => 58,
- :V_REAL => 59,
- :SYM_TRUE => 60,
- :SYM_FALSE => 61,
- :V_CHARACTER => 62,
- :V_ISO8601_EXTENDED_DATE => 63,
- :V_ISO8601_EXTENDED_TIME => 64,
- :V_ISO8601_EXTENDED_DATE_TIME => 65,
- :V_ISO8601_DURATION => 66,
- :V_QUALIFIED_TERM_CODE_REF => 67,
- :V_URI => 68,
- :SYM_EXISTS => 69,
- :SYM_NOT => 70,
- "=" => 71,
- :SYM_AND => 72,
- :SYM_OR => 73,
- :SYM_XOR => 74,
- :SYM_IMPLIES => 75,
- :Slash_code => 76,
- "^" => 77,
- :SYM_EXISTENCE => 78,
- :SYM_CARDINALITY => 79,
- :Semicolon_code => 80,
- :SYM_ORDERED => 81,
- :SYM_UNORDERED => 82,
- :SYM_UNIQUE => 83,
- :SYM_OCCURRENCES => 84,
- :V_ISO8601_DATE_CONSTRAINT_PATTERN => 85,
- :V_ISO8601_TIME_CONSTRAINT_PATTERN => 86,
- :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 87,
- :START_TERM_CODE_CONSTRAINT => 88,
- :END_TERM_CODE_CONSTRAINT => 89,
- :TERM_CODE => 90,
- :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 91 }
+ :ERR_C_DOMAIN_TYPE => 37,
+ :START_V_C_DOMAIN_TYPE => 38,
+ :END_V_C_DOMAIN_TYPE => 39,
+ :SYM_USE_NODE => 40,
+ :SYM_ALLOW_ARCHETYPE => 41,
+ :Star_code => 42,
+ :V_ATTRIBUTE_IDENTIFIER => 43,
+ :SYM_INCLUDE => 44,
+ :SYM_EXCLUDE => 45,
+ ":" => 46,
+ :SYM_INVARIANT => 47,
+ :V_ASSERTION_TEXT => 48,
+ :SYM_ONTOLOGY => 49,
+ :Left_bracket_code => 50,
+ :Right_bracket_code => 51,
+ :V_TYPE_IDENTIFIER => 52,
+ :V_GENERIC_TYPE_IDENTIFIER => 53,
+ :V_STRING => 54,
+ :Comma_code => 55,
+ :SYM_LIST_CONTINUE => 56,
+ :V_INTEGER => 57,
+ :SYM_INTERVAL_DELIM => 58,
+ :SYM_ELLIPSIS => 59,
+ :V_REAL => 60,
+ :SYM_TRUE => 61,
+ :SYM_FALSE => 62,
+ :V_CHARACTER => 63,
+ :V_ISO8601_EXTENDED_DATE => 64,
+ :V_ISO8601_EXTENDED_TIME => 65,
+ :V_ISO8601_EXTENDED_DATE_TIME => 66,
+ :V_ISO8601_DURATION => 67,
+ :V_QUALIFIED_TERM_CODE_REF => 68,
+ :V_URI => 69,
+ :SYM_EXISTS => 70,
+ :SYM_NOT => 71,
+ "=" => 72,
+ :SYM_AND => 73,
+ :SYM_OR => 74,
+ :SYM_XOR => 75,
+ :SYM_IMPLIES => 76,
+ :Slash_code => 77,
+ "^" => 78,
+ :SYM_EXISTENCE => 79,
+ :SYM_CARDINALITY => 80,
+ :Semicolon_code => 81,
+ :SYM_ORDERED => 82,
+ :SYM_UNORDERED => 83,
+ :SYM_UNIQUE => 84,
+ :SYM_OCCURRENCES => 85,
+ :V_ISO8601_DATE_CONSTRAINT_PATTERN => 86,
+ :V_ISO8601_TIME_CONSTRAINT_PATTERN => 87,
+ :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 88,
+ :START_TERM_CODE_CONSTRAINT => 89,
+ :END_TERM_CODE_CONSTRAINT => 90,
+ :TERM_CODE => 91,
+ :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 92 }
 
 racc_use_result_var = true
 
-racc_nt_base = 92
+racc_nt_base = 93
 
 Racc_arg = [
@@ -1755,6 +1779,7 @@
 'REGEXP_BODY',
 'END_REGEXP_BLOCK',
-'V_C_DOMAIN_TYPE',
 'ERR_C_DOMAIN_TYPE',
+'START_V_C_DOMAIN_TYPE',
+'END_V_C_DOMAIN_TYPE',
 'SYM_USE_NODE',
 'SYM_ALLOW_ARCHETYPE',
@@ -1843,4 +1868,6 @@
 'c_ordinal',
 'c_primitive_object',
+'v_c_domain_type',
+'v_c_domain_type_body',
 'absolute_path',
 'c_archetype_slot_head',
@@ -2694,4 +2721,8 @@
  # reduce 374 omitted
 
+ # reduce 375 omitted
+
+ # reduce 376 omitted
+
  def _reduce_none( val, _values, result )
   result
