diff --git a/src/main/jay/grammars/php.jay b/src/main/jay/grammars/php.jay index 6c564c07c..73368577b 100644 --- a/src/main/jay/grammars/php.jay +++ b/src/main/jay/grammars/php.jay @@ -76,11 +76,12 @@ use xp\compiler\ast\DynamicInstanceOfNode; use xp\compiler\ast\DynamicVariableReferenceNode; use xp\compiler\ast\NoopNode; use xp\compiler\ast\YieldNode; +use xp\compiler\ast\YieldFromNode; %} %left ',' %left '(' ')' -%right T_YIELD +%right T_YIELD T_YIELD_FROM %left T_BOOLEAN_OR %left T_BOOLEAN_AND %right '=' T_ADD_EQUAL T_SUB_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_SHR T_SHL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL @@ -147,6 +148,7 @@ use xp\compiler\ast\YieldNode; %token T_BREAK 365 %token T_CONTINUE 366 %token T_YIELD 367 +%token T_YIELD_FROM 368 %token T_IF 370 %token T_ELSE 371 @@ -615,6 +617,9 @@ expression: | T_YIELD expression T_DOUBLE_ARROW expression { $$= $yyLex->create(new YieldNode($4, $2)); } + | T_YIELD_FROM expression { + $$= $yyLex->create(new YieldFromNode($2)); + } | assignment { $$= $yyLex->create(new AssignmentNode($1)); } diff --git a/src/main/jay/grammars/xp.jay b/src/main/jay/grammars/xp.jay index 4bf48ec7a..e1e6e98e6 100644 --- a/src/main/jay/grammars/xp.jay +++ b/src/main/jay/grammars/xp.jay @@ -71,11 +71,12 @@ use xp\compiler\ast\WithNode; use xp\compiler\ast\ArmNode; use xp\compiler\ast\BracedExpressionNode; use xp\compiler\ast\YieldNode; +use xp\compiler\ast\YieldFromNode; %} %left ',' %nonassoc T_ARROW -%right T_YIELD +%right T_YIELD T_YIELD_FROM %left T_BOOLEAN_OR %left T_BOOLEAN_AND %right '=' T_ADD_EQUAL T_SUB_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL @@ -147,6 +148,7 @@ use xp\compiler\ast\YieldNode; %token T_BREAK 365 %token T_CONTINUE 366 %token T_YIELD 367 +%token T_YIELD_FROM 368 %token T_IF 370 %token T_ELSE 371 @@ -838,6 +840,9 @@ expression: | T_YIELD expression ':' expression { $$= $yyLex->create(new YieldNode($4, $2)); } + | T_YIELD_FROM expression { + $$= $yyLex->create(new YieldFromNode($2)); + } | expression T_AS paramtyperef { $$= $yyLex->create(new CastNode(array_merge($3, array('expression' => $1)))); } diff --git a/src/main/php/xp/compiler/ast/Visitor.class.php b/src/main/php/xp/compiler/ast/Visitor.class.php index d5b243dd4..576696977 100644 --- a/src/main/php/xp/compiler/ast/Visitor.class.php +++ b/src/main/php/xp/compiler/ast/Visitor.class.php @@ -712,7 +712,28 @@ protected function visitBracedExpression(BracedExpressionNode $node) { $node->expression= $this->visitOne($node->expression); return $node; } - + + /** + * Visit a yield statement + * + * @param xp.compiler.ast.Node node + */ + protected function visitYield(YieldNode $node) { + $node->key && $node->key= $this->visitOne($node->key); + $node->value && $node->value= $this->visitOne($node->value); + return $node; + } + + /** + * Visit a yield statement + * + * @param xp.compiler.ast.Node node + */ + protected function visitYieldFrom(YieldFromNode $node) { + $node->expr= $this->visitOne($node->expr); + return $node; + } + /** * Visit a node. Delegates to visit*() methods * diff --git a/src/main/php/xp/compiler/ast/YieldFromNode.class.php b/src/main/php/xp/compiler/ast/YieldFromNode.class.php new file mode 100755 index 000000000..ccb919b60 --- /dev/null +++ b/src/main/php/xp/compiler/ast/YieldFromNode.class.php @@ -0,0 +1,21 @@ +expr= $expr; + } + + /** + * Returns a hashcode + * + * @return string + */ + public function hashCode() { + return 'yield from '.$this->expr->hashCode(); + } +} \ No newline at end of file diff --git a/src/main/php/xp/compiler/emit/Emitter.class.php b/src/main/php/xp/compiler/emit/Emitter.class.php index ca01be22c..9eb497355 100644 --- a/src/main/php/xp/compiler/emit/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/Emitter.class.php @@ -697,7 +697,15 @@ protected abstract function emitSilenceOperator($b, $silenced); * @param xp.compiler.ast.YieldNode yield */ protected abstract function emitYield($b, $yield); - + + /** + * Emit a yield node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.YieldFromNode yield + */ + protected abstract function emitYieldFrom($b, $yield); + /** * Emit a single node * diff --git a/src/main/php/xp/compiler/emit/php/Emitter.class.php b/src/main/php/xp/compiler/emit/php/Emitter.class.php index 0e85245a4..40c6d935a 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -2327,6 +2327,16 @@ protected function emitYield($b, $yield) { $this->error('V505', 'Yield not supported in '.$this->getClassName()); } + /** + * Emit a yield from node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.YieldFromNode yield + */ + protected function emitYieldFrom($b, $yield) { + $this->error('V505', 'Yield not supported in '.$this->getClassName()); + } + /** * Emit all given nodes * @@ -2450,6 +2460,8 @@ protected function emitTry($b, $try) { V54Emitter::emitTry($b, $try); } }'); + } else if (version_compare(PHP_VERSION, '7.0.0', 'gt')) { + return new V70Emitter(); } else if (version_compare(PHP_VERSION, '5.5.0', 'gt')) { return new V55Emitter(); } else { diff --git a/src/main/php/xp/compiler/emit/php/V55Emitter.class.php b/src/main/php/xp/compiler/emit/php/V55Emitter.class.php index 3db692c3e..c16fab3df 100755 --- a/src/main/php/xp/compiler/emit/php/V55Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V55Emitter.class.php @@ -26,6 +26,52 @@ protected function emitYield($b, $yield) { } } + /** + * Emit a yield from node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.YieldFromNode yield + */ + protected function emitYieldFrom($b, $yield) { + static $shim= ' + if ($iter instanceof \\Generator) { + defined(\'HHVM_VERSION\') && $iter->next(); + $send= eval(\'return function() use($iter) { + $recv= null; + $send= true; + while ($iter->valid()) { + $next= $iter->current(); + $send ? $iter->send($recv) : $iter->throw($recv); + try { + $recv= \'.(defined(\'HHVM_VERSION\') ? \'yield $next\' : \'(yield $next)\').\'; + $send= true; + } catch (\\Exception $e) { + $recv= $e; + $send= false; + } + } + };\'); + foreach ($send() as $next) { yield $next; } + } else { + foreach ($iter as $next) { yield $next; } + } + '; + + $iter= $this->tempVar(); + $b->append($iter)->append('='); + $this->emitOne($b, $yield->expr); + $b->append(';'); + + $b->append(strtr($shim, [ + "\n" => '', + ' ' => '', + '$iter' => $iter, + '$recv' => $this->tempVar(), + '$send' => $this->tempVar(), + '$next' => $this->tempVar() + ])); + } + /** * Emit a try / catch block * diff --git a/src/main/php/xp/compiler/emit/php/V70Emitter.class.php b/src/main/php/xp/compiler/emit/php/V70Emitter.class.php new file mode 100755 index 000000000..409a24b66 --- /dev/null +++ b/src/main/php/xp/compiler/emit/php/V70Emitter.class.php @@ -0,0 +1,18 @@ +append('yield from '); + $this->emitOne($b, $yield->expr); + } +} \ No newline at end of file diff --git a/src/main/php/xp/compiler/syntax/php/Lexer.class.php b/src/main/php/xp/compiler/syntax/php/Lexer.class.php index 9cb7d02a1..6ebb3c766 100644 --- a/src/main/php/xp/compiler/syntax/php/Lexer.class.php +++ b/src/main/php/xp/compiler/syntax/php/Lexer.class.php @@ -49,7 +49,6 @@ class Lexer extends \text\parser\generic\AbstractLexer { 'while' => Parser::T_WHILE, 'break' => Parser::T_BREAK, 'continue' => Parser::T_CONTINUE, - 'yield' => Parser::T_YIELD, 'if' => Parser::T_IF, 'else' => Parser::T_ELSE, @@ -66,7 +65,6 @@ class Lexer extends \text\parser\generic\AbstractLexer { '.' => array('.=' => Parser::T_CONCAT_EQUAL), '+' => array('+=' => Parser::T_ADD_EQUAL, '++' => Parser::T_INC), '*' => array('*=' => Parser::T_MUL_EQUAL), - '/' => array('/=' => Parser::T_DIV_EQUAL), '%' => array('%=' => Parser::T_MOD_EQUAL), '=' => array('==' => Parser::T_EQUALS, '=>' => Parser::T_DOUBLE_ARROW), '!' => array('!=' => Parser::T_NOT_EQUALS), @@ -74,7 +72,8 @@ class Lexer extends \text\parser\generic\AbstractLexer { '|' => array('||' => Parser::T_BOOLEAN_OR, '|=' => Parser::T_OR_EQUAL), '&' => array('&&' => Parser::T_BOOLEAN_AND, '&=' => Parser::T_AND_EQUAL), '^' => array('^=' => Parser::T_XOR_EQUAL), - '?' => array('?>' => -1) + '?' => array('?>' => -1), + 'yield' => array('yield from' => Parser::T_YIELD_FROM, 'yield' => Parser::T_YIELD) ); const @@ -212,6 +211,28 @@ public function advance() { } else if ('$' === $token{0}) { $this->token= Parser::T_VARIABLE; $this->value= substr($token, 1); + } else if (isset(self::$lookahead[$token])) { + $ahead= $token; + $p= true; + foreach (self::$lookahead[$token] as $candidate => $id) { + $l= strlen($candidate); + while (strlen($ahead) < $l && $this->tokenizer->hasMoreTokens()) { + $ahead.= $this->nextToken(); + } + if (0 === strncmp($candidate, $ahead, $l)) { + if (0 === $id) break; + $this->token= $id; + $this->value= $candidate; + $this->pushBack(substr($ahead, $l)); + $p= false; + break; + } + } + if ($p) { + $this->pushBack(substr($ahead, 1)); + $this->token= ord($token); + $this->value= $token; + } } else if (isset(self::$keywords[$token])) { $this->token= self::$keywords[$token]; $this->value= $token; @@ -241,17 +262,6 @@ public function advance() { $this->value= $token; $this->pushBack($ahead); } - } else if (isset(self::$lookahead[$token])) { - $ahead= $this->nextToken(); - $combined= $token.$ahead; - if (isset(self::$lookahead[$token][$combined])) { - $this->token= self::$lookahead[$token][$combined]; - $this->value= $combined; - } else { - $this->token= ord($token); - $this->value= $token; - $this->pushBack($ahead); - } } else if (false !== strpos(self::DELIMITERS, $token) && 1 == strlen($token)) { $this->token= ord($token); $this->value= $token; diff --git a/src/main/php/xp/compiler/syntax/php/Parser.class.php b/src/main/php/xp/compiler/syntax/php/Parser.class.php index 2a9b2b865..2d3e123b4 100644 --- a/src/main/php/xp/compiler/syntax/php/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/php/Parser.class.php @@ -77,13 +77,15 @@ use xp\compiler\ast\DynamicVariableReferenceNode; use xp\compiler\ast\NoopNode; use xp\compiler\ast\YieldNode; -#line 81 "-" +use xp\compiler\ast\YieldFromNode; +#line 82 "-" /** * Generated parser class */ class Parser extends \text\parser\generic\AbstractParser { const T_YIELD= 367; + const T_YIELD_FROM= 368; const T_BOOLEAN_OR= 414; const T_BOOLEAN_AND= 415; const T_ADD_EQUAL= 404; @@ -166,16 +168,16 @@ class Parser extends \text\parser\generic\AbstractParser { 72, 72, 72, 72, 26, 74, 26, 75, 26, 76, 26, 77, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 83, 83, 85, 85, 86, 84, 84, 38, - 88, 38, 89, 38, 25, 25, 25, 25, 25, 25, - 87, 87, 87, 87, 90, 90, 92, 92, 91, 78, + 26, 26, 26, 83, 83, 85, 85, 86, 84, 84, + 38, 88, 38, 89, 38, 25, 25, 25, 25, 25, + 25, 87, 87, 87, 87, 90, 90, 92, 92, 91, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 79, 79, 79, 79, 79, 79, 79, 79, 80, + 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 81, 81, 81, 81, 81, 81, 82, 82, 73, 73, - 93, 93, 95, 94, 96, 94, 94, 94, 94, 97, - 94, 98, 94, 31, 31, 10, 99, 17, 17, 33, - 33, 100, 100, 101, 101, 101, 101, 101, 101, + 80, 81, 81, 81, 81, 81, 81, 82, 82, 73, + 73, 93, 93, 95, 94, 96, 94, 94, 94, 94, + 97, 94, 98, 94, 31, 31, 10, 99, 17, 17, + 33, 33, 100, 100, 101, 101, 101, 101, 101, 101, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 3, 1, @@ -191,1135 +193,1151 @@ class Parser extends \text\parser\generic\AbstractParser { 0, 4, 1, 3, 0, 0, 3, 1, 1, 2, 0, 9, 0, 1, 1, 3, 0, 1, 4, 4, 1, 4, 1, 1, 2, 0, 3, 0, 3, 0, - 5, 0, 6, 2, 1, 2, 4, 1, 1, 1, - 1, 1, 5, 3, 3, 3, 3, 4, 4, 2, - 8, 4, 0, 1, 1, 3, 2, 0, 4, 1, - 0, 4, 0, 5, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 3, 0, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, + 5, 0, 6, 2, 1, 2, 4, 2, 1, 1, + 1, 1, 1, 5, 3, 3, 3, 3, 4, 4, + 2, 8, 4, 0, 1, 1, 3, 2, 0, 4, + 1, 0, 4, 0, 5, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 3, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, - 1, 2, 0, 4, 0, 4, 2, 2, 4, 0, - 6, 0, 4, 1, 1, 1, 1, 1, 3, 0, - 1, 1, 2, 1, 1, 1, 1, 1, 1, + 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 1, 1, 2, 0, 4, 0, 4, 2, 2, 4, + 0, 6, 0, 4, 1, 1, 1, 1, 1, 3, + 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 244, 246, 245, 247, 249, 248, 0, 1, 0, - 42, 241, 0, 8, 0, 4, 9, 0, 14, 16, - 243, 11, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 236, 0, 0, 13, 0, 41, 44, 0, - 0, 0, 0, 161, 0, 0, 170, 166, 169, 167, - 168, 0, 0, 0, 160, 0, 0, 0, 52, 19, - 0, 0, 0, 23, 25, 0, 0, 0, 0, 163, + 0, 245, 247, 246, 248, 250, 249, 0, 1, 0, + 42, 242, 0, 8, 0, 4, 9, 0, 14, 16, + 244, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 237, 0, 0, 13, 0, 41, 44, 0, + 0, 0, 0, 162, 0, 0, 171, 167, 170, 168, + 169, 0, 0, 0, 161, 0, 0, 0, 52, 19, + 0, 0, 0, 23, 25, 0, 0, 0, 0, 164, 0, 46, 47, 0, 21, 25, 0, 0, 0, 0, - 172, 0, 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 126, 0, 0, 0, 0, 138, 139, 140, - 141, 142, 0, 0, 175, 0, 0, 50, 51, 0, - 54, 56, 55, 0, 49, 0, 239, 0, 17, 0, - 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 150, 132, 0, 0, - 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 0, 0, 0, 128, 0, + 0, 0, 0, 126, 0, 0, 0, 0, 139, 140, + 141, 142, 143, 0, 0, 176, 0, 0, 50, 51, + 0, 54, 56, 55, 0, 49, 0, 240, 0, 17, + 0, 24, 26, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 151, 132, + 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 218, 232, 223, 0, 225, 125, - 220, 0, 0, 162, 0, 0, 0, 0, 0, 15, - 0, 27, 0, 0, 0, 0, 29, 0, 0, 0, - 0, 237, 0, 234, 0, 129, 235, 0, 0, 0, - 0, 155, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 218, 219, 233, 224, 0, + 226, 125, 221, 0, 0, 163, 0, 0, 0, 0, + 0, 15, 0, 27, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 238, 0, 235, 0, 129, 236, 0, + 0, 0, 0, 156, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 147, 146, 0, 0, 0, 228, 0, 0, 222, 116, - 0, 178, 176, 53, 164, 0, 0, 31, 0, 0, - 33, 0, 30, 0, 0, 152, 0, 0, 0, 0, - 157, 0, 0, 0, 124, 121, 0, 0, 0, 0, - 0, 0, 0, 0, 230, 0, 0, 165, 34, 32, - 37, 0, 0, 0, 0, 0, 0, 156, 0, 131, - 0, 233, 224, 0, 229, 226, 0, 120, 119, 133, - 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, - 69, 0, 89, 73, 77, 79, 75, 85, 87, 71, - 81, 92, 0, 0, 0, 66, 0, 103, 122, 231, - 64, 0, 0, 0, 159, 0, 83, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 91, 151, 68, - 0, 0, 63, 62, 0, 0, 0, 0, 0, 0, - 0, 86, 88, 0, 0, 104, 40, 57, 0, 38, - 70, 0, 90, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 58, 111, 84, - 108, 0, 0, 78, 0, 0, 0, 0, 0, 0, - 110, 0, 0, 0, 0, 106, 72, 99, 101, 0, - 96, 0, 0, 0, 80, 94, 76, 0, 0, 0, - 82, 98, 0, 0, 107, 0, 0, 0, 74, 0, - 102, 0, 100, 0, 0, 112, + 0, 0, 148, 147, 0, 0, 0, 229, 0, 0, + 223, 116, 0, 179, 177, 53, 165, 0, 0, 31, + 0, 0, 33, 0, 30, 0, 0, 153, 0, 0, + 0, 0, 158, 0, 0, 0, 124, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 0, 166, + 34, 32, 37, 0, 0, 0, 0, 0, 0, 157, + 0, 131, 0, 234, 225, 0, 230, 227, 0, 120, + 119, 133, 0, 0, 0, 0, 0, 0, 0, 60, + 0, 0, 69, 0, 89, 73, 77, 79, 75, 85, + 87, 71, 81, 92, 0, 0, 0, 66, 0, 103, + 122, 232, 64, 0, 0, 0, 160, 0, 83, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 152, 68, 0, 0, 63, 62, 0, 0, 0, 0, + 0, 0, 0, 86, 88, 0, 0, 104, 40, 57, + 0, 38, 70, 0, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, + 111, 84, 108, 0, 0, 78, 0, 0, 0, 0, + 0, 0, 110, 0, 0, 0, 0, 106, 72, 99, + 101, 0, 96, 0, 0, 0, 80, 94, 76, 0, + 0, 0, 82, 98, 0, 0, 107, 0, 0, 0, + 74, 0, 102, 0, 100, 0, 0, 112, ); protected static $yyDgoto= array(2, - 3, 6, 19, 10, 4, 7, 8, 104, 130, 214, - 36, 51, 72, 88, 37, 53, 74, 131, 132, 202, - 133, 134, 203, 281, 65, 354, 336, 327, 382, 400, - 337, 34, 21, 35, 66, 67, 68, 106, 197, 355, - 338, 339, 356, 357, 358, 242, 366, 375, 437, 369, - 372, 427, 370, 371, 376, 440, 386, 420, 373, 374, - 368, 441, 442, 449, 450, 448, 421, 422, 430, 198, - 216, 297, 190, 150, 145, 224, 218, 108, 109, 110, - 111, 112, 220, 317, 221, 222, 113, 76, 120, 114, - 115, 273, 191, 192, 264, 268, 324, 263, 217, 22, + 3, 6, 19, 10, 4, 7, 8, 105, 131, 216, + 36, 51, 72, 88, 37, 53, 74, 132, 133, 204, + 134, 135, 205, 283, 65, 356, 338, 329, 384, 402, + 339, 34, 21, 35, 66, 67, 68, 107, 199, 357, + 340, 341, 358, 359, 360, 244, 368, 377, 439, 371, + 374, 429, 372, 373, 378, 442, 388, 422, 375, 376, + 370, 443, 444, 451, 452, 450, 423, 424, 432, 200, + 218, 299, 192, 152, 147, 226, 220, 109, 110, 111, + 112, 113, 222, 319, 223, 224, 114, 76, 121, 115, + 116, 275, 193, 194, 266, 270, 326, 265, 219, 22, 23, ); protected static $yySindex = array( -285, - 0, 0, -277, -212, -212, 75, -277, 0, -14, -7, - -2, 0, 0, 0, 0, 0, 0, -1, 0, -75, - 0, 0, 239, 0, -212, 0, 0, 80, 0, 0, - 0, 0, -80, 44, 105, -80, -80, 0, -212, 148, - 239, 80, 0, -120, -115, 0, 1082, 0, 0, -80, - -119, -80, 76, 0, -80, 181, 0, 0, 0, 0, - 0, 230, 257, -102, 0, 289, 294, 296, 0, 0, - -80, 222, 310, 0, 0, 3890, 321, 729, 729, 0, - -171, 0, 0, -127, 0, 0, -80, 175, 4280, 4288, - 0, 4288, 4288, 4288, 4288, 4288, 4288, 0, 4288, 4288, - 327, 329, 0, -37, 1316, 36, 333, 0, 0, 0, - 0, 0, 293, 347, 0, 4288, 0, 0, 0, 3890, - 0, 0, 0, 181, 0, 219, 0, 132, 0, -166, - 0, 0, 0, 192, 194, 262, 1360, 1399, -98, -98, - -284, -98, -98, -98, -17, 0, 0, 0, 55, 36, - 0, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, - 3153, 4171, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, - 4258, 4266, 4288, 4288, 4288, 4288, 4288, 4288, 4288, 4288, - 4288, 4288, -77, 0, 0, 0, 0, -103, 0, 0, - 0, 36, 4288, 0, 4288, 2447, 364, 333, 366, 0, - 350, 0, 234, 152, 352, 75, 0, 4288, 4288, 36, - 4288, 0, 375, 0, 378, 0, 0, 4288, 352, 379, - 377, 0, 0, -159, 2474, 2501, 2501, 2501, 2501, 2501, - 2501, 2501, 2501, 4288, 2501, 4288, 2501, 2501, 2501, 2501, - 2447, 361, 2447, 3303, -13, 2584, 4288, 51, 4288, 51, - -6, -6, -6, -6, -6, 14, 14, -284, -284, -284, - 0, 0, 4288, 4288, 391, 0, 4288, 4288, 0, 0, - 1316, 0, 0, 0, 0, 280, 132, 0, 404, 4288, - 0, 109, 0, 2447, 2447, 0, 3266, 4288, 4288, 409, - 0, 124, 55, 421, 0, 0, 36, 2501, 2501, 4288, - 2501, 2501, 443, 392, 0, 1426, 1562, 0, 0, 0, - 0, 2447, 453, 454, 36, 457, 382, 0, 4288, 0, - 3266, 0, 0, 4288, 0, 0, 69, 0, 0, 0, - 55, 3913, 465, 467, 352, 468, 172, 0, 469, 107, - 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3913, 1816, 389, 0, 3913, 0, 0, 0, - 0, 470, 352, 69, 0, 4288, 0, 4288, 475, 487, - 3913, 496, 478, 479, 512, 513, 430, 0, 0, 0, - -19, 11, 0, 0, 497, 3913, 1860, 4288, 4288, 207, - 4288, 0, 0, 4288, 4288, 0, 0, 0, 3913, 0, - 0, 432, 0, 510, 1896, 543, 1961, 1997, 2026, 459, - 251, 4288, 3913, 4288, 256, 3913, 485, 0, 0, 0, - 0, 251, 551, 0, 2062, 198, 574, 245, -56, 578, - 0, 4288, 560, 281, 3913, 0, 0, 0, 0, 495, - 0, -56, -80, 581, 0, 0, 0, 3913, 4288, 565, - 0, 0, 285, 3913, 0, 2297, 3913, 583, 0, 3913, - 0, 503, 0, 3913, 511, 0, + 0, 0, -262, -172, -172, 77, -262, 0, 5, 62, + 127, 0, 0, 0, 0, 0, 0, 48, 0, 41, + 0, 0, -44, 0, -172, 0, 0, 150, 0, 0, + 0, 0, -79, 125, 172, -79, -79, 0, -172, 187, + -44, 150, 0, -45, -27, 0, 1084, 0, 0, -79, + 8, -79, 205, 0, -79, 234, 0, 0, 0, 0, + 0, 271, 297, -47, 0, 333, 336, 340, 0, 0, + -79, 257, 342, 0, 0, 3979, 354, 731, 731, 0, + -249, 0, 0, -115, 0, 0, -79, 21, 4359, 4375, + 4375, 0, 4375, 4375, 4375, 4375, 4375, 4375, 0, 4375, + 4375, 357, 375, 0, 7, 1318, -34, 374, 0, 0, + 0, 0, 0, 326, 377, 0, 4375, 0, 0, 0, + 3979, 0, 0, 0, 234, 0, 221, 0, 162, 0, + -303, 0, 0, 0, 123, 307, 327, 1362, 1401, 2449, + -20, -20, -273, -20, -20, -20, 71, 0, 0, 0, + 83, -34, 0, 4375, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4103, 4226, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4263, 4350, 4375, 4375, 4375, 4375, 4375, 4375, + 4375, 4375, 4375, 4375, -32, 0, 0, 0, 0, -87, + 0, 0, 0, -34, 4375, 0, 4375, 2449, 392, 374, + 405, 0, 391, 0, 153, 197, 397, 77, 0, 4375, + 4375, -34, 4375, 0, 419, 0, 421, 0, 0, 4375, + 397, 422, 418, 0, 0, -197, 2476, 2503, 2503, 2503, + 2503, 2503, 2503, 2503, 2503, 4375, 2503, 4375, 2503, 2503, + 2503, 2503, 2449, 428, 2449, -13, 3449, 2586, 4375, 53, + 4375, 53, 95, 95, 95, 95, 95, 6, 6, -273, + -273, -273, 0, 0, 4375, 4375, 447, 0, 4375, 4375, + 0, 0, 1318, 0, 0, 0, 0, 247, 162, 0, + 451, 4375, 0, 154, 0, 2449, 2449, 0, 3305, 4375, + 4375, 454, 0, 175, 83, 459, 0, 0, -34, 2503, + 2503, 4375, 2503, 2503, 472, 423, 0, 1428, 1564, 0, + 0, 0, 0, 2449, 473, 474, -34, 477, 399, 0, + 4375, 0, 3305, 0, 0, 4375, 0, 0, 80, 0, + 0, 0, 83, 3912, 482, 483, 397, 485, 189, 0, + 486, 110, 0, 416, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3912, 1818, 415, 0, 3912, 0, + 0, 0, 0, 484, 397, 80, 0, 4375, 0, 4375, + 504, 505, 3912, 506, 488, 495, 515, 517, 433, 0, + 0, 0, -17, -49, 0, 0, 500, 3912, 1862, 4375, + 4375, 182, 4375, 0, 0, 4375, 4375, 0, 0, 0, + 3912, 0, 0, 445, 0, 512, 1898, 546, 1963, 1999, + 2028, 487, 253, 4375, 3912, 4375, 258, 3912, 494, 0, + 0, 0, 0, 253, 551, 0, 2064, 200, 577, 248, + 19, 580, 0, 4375, 562, 282, 3912, 0, 0, 0, + 0, 498, 0, 19, -79, 583, 0, 0, 0, 3912, + 4375, 567, 0, 0, 287, 3912, 0, 2299, 3912, 585, + 0, 3912, 0, 516, 0, 3912, 513, 0, ); - protected static $yyRindex= array( -25, - 0, 0, 100, 0, 0, 49, 461, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 544, 0, 0, 0, 0, 35, - 449, 0, 0, -118, 528, 0, 0, 0, 0, 0, - 529, 0, 0, 0, 0, -40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 619, 0, 0, - 0, 0, 538, 0, 0, 570, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -125, 0, 1262, + protected static $yyRindex= array( 503, + 0, 0, -23, 0, 0, 100, 550, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 0, 9, 227, 2, 0, 0, 0, - 0, 0, 0, 45, 0, 623, -35, 0, 0, 624, - 0, 0, 0, 0, 0, -125, 0, 0, 0, 0, - 0, 0, 0, 0, 1289, 0, 0, 917, 612, 639, - 874, 666, 710, 820, 0, 0, 0, 0, 625, 227, + 0, 0, -165, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 535, 0, 0, 0, 0, -16, + 51, 0, 0, -96, 530, 0, 0, 0, 0, 0, + 531, 0, 0, 0, 0, -40, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 621, 0, 0, + 0, 0, 540, 0, 0, 571, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -160, 0, 1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 620, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 11, 229, -1, 0, 0, + 0, 0, 0, 0, 103, 0, 624, -39, 0, 0, + 625, 0, 0, 0, 0, 0, -160, 0, 0, 0, + 0, 0, 0, 0, 0, 1291, 0, 0, 120, 285, + 614, 641, 876, 668, 712, 822, 0, 0, 0, 0, + 626, 229, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 488, 123, 0, 98, 284, 0, 111, 0, 0, - 0, 0, 0, 0, 248, 339, 0, 0, 0, 227, - 0, 0, 0, 0, 0, 0, 0, 623, 135, 0, - 648, 0, 0, 0, 1271, 33, 73, 254, 278, 734, - 1203, 1326, 1536, 0, 2039, 0, 2089, 2117, 2197, 2456, - 119, 0, 121, 3190, 3167, 3098, 0, 3122, 0, 3146, - 2690, 2714, 2988, 3030, 2597, 2529, 2556, 1098, 1125, 1152, - 0, 0, 623, 597, 159, 0, 0, 0, 0, 0, + 0, 0, 0, 490, 286, 0, 149, 118, 0, 112, + 0, 0, 0, 0, 0, 0, 250, 341, 0, 0, + 0, 229, 0, 0, 0, 0, 0, 0, 0, 624, + 331, 0, 639, 0, 0, 0, 1273, 35, 75, 256, + 280, 736, 1205, 1328, 1538, 0, 2041, 0, 2091, 2119, + 2199, 2458, 151, 0, 276, 3192, 3169, 3100, 0, 3124, + 0, 3148, 2692, 2716, 2990, 3032, 2599, 2531, 2558, 1100, + 1127, 1154, 0, 0, 624, 596, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 283, 3605, 0, 3214, 623, 623, 0, - 0, 571, 0, 186, 0, 0, 227, 2702, 3258, 0, - 3294, 3330, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 448, 0, 0, 227, 0, 0, 0, 623, 0, - 3237, 0, 0, 623, 0, 0, 654, 0, 0, 0, - 0, 589, 0, 0, 135, 0, 0, 0, 674, 0, + 0, 0, 0, 0, 0, 3722, 3731, 0, 3216, 624, + 624, 0, 0, 568, 0, 188, 0, 0, 229, 2704, + 3264, 0, 3287, 3718, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 266, 0, 0, 229, 0, 0, 0, + 624, 0, 3239, 0, 0, 624, 0, 0, 649, 0, + 0, 0, 0, 572, 0, 0, 331, 0, 0, 0, + 651, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 572, 0, 0, 0, -110, 0, + 0, 0, 0, -43, 331, 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 589, 0, 0, 0, -112, 0, 0, 0, - 0, 13, 135, 0, 0, 657, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 572, 0, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 589, 0, 658, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 589, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3761, 0, 0, 0, 678, 0, 3826, 595, 0, - 0, 623, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 596, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -107, 0, 0, -107, - 0, 0, 0, 589, 0, 0, + 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 657, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3753, 0, 0, 0, 676, 0, 3847, + 593, 0, 0, 624, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 594, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, + 0, -105, 0, 0, 0, 572, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, 276, 0, 0, 715, -33, 5, -29, - 0, 0, 0, 644, 0, 0, -16, 0, 525, 458, - 0, 0, 0, -192, 462, 3600, 0, 0, 0, 0, - -143, 697, 699, 0, 287, 681, 0, 161, 399, 381, - 394, 0, 417, -241, 0, -177, 0, 0, 0, 0, + 0, 0, 0, 145, 0, 0, 713, -33, 3, -29, + 0, 0, 0, 635, 0, 0, 130, 0, 514, 444, + 0, 0, 0, -171, 446, 3572, 0, 0, 0, 0, + -103, 683, 691, 0, 324, 653, 0, -6, 1605, 59, + 367, 0, 381, 363, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 324, 0, 0, 0, 0, 354, 0, 0, 64, - 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 486, 661, 0, 0, 0, - 587, 0, 592, 0, 0, 0, 0, 0, 0, 762, + 0, 298, 0, 0, 0, 0, 317, 0, 0, 55, + 0, 0, -134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 410, 449, 627, 0, 0, 0, + 548, 0, 552, 0, 0, 0, 0, 0, 0, 724, 0, ); protected static $yyTable = array(40, - 165, 215, 43, 43, 18, 165, 44, 45, 165, 2, - 20, 39, 67, 64, 39, 270, 43, 65, 43, 267, - 70, 43, 73, 182, 170, 77, 291, 183, 180, 178, - 182, 179, 177, 181, 1, 180, 178, 43, 179, 177, - 181, 73, 173, 5, 64, 64, 173, 9, 175, 115, - 182, 26, 115, 43, 85, 180, 27, 73, 10, 10, - 181, 10, 10, 10, 10, 10, 10, 10, 10, 398, - 127, 39, 39, 145, 39, 186, 145, 25, 45, 10, - 10, 10, 10, 10, 10, 174, 304, 182, 121, 28, - 145, 145, 180, 178, 173, 179, 177, 181, 165, 165, - 294, 115, 165, 165, 165, 165, 165, 165, 165, 18, - 173, 43, 175, 180, 10, 10, 180, 184, 185, 165, - 165, 165, 165, 165, 165, 145, 187, 45, 122, 390, - 180, 180, 124, 399, 5, 39, 41, 174, 177, 107, - 295, 177, 361, 33, 10, 10, 10, 365, 42, 43, - 293, 114, 165, 262, 165, 165, 265, 145, 189, 118, - 39, 179, 118, 117, 179, 180, 117, 204, 123, 114, - 383, 424, 62, 205, 428, 35, 118, 118, 35, 38, - 296, 117, 38, 107, 165, 165, 165, 47, 385, 50, - 177, 71, 18, 447, 52, 227, 227, 180, 75, 227, - 227, 227, 227, 227, 227, 227, 455, 69, 240, 18, - 282, 118, 459, 179, 240, 117, 227, 227, 227, 227, - 227, 227, 123, 123, 29, 30, 123, 123, 123, 123, - 123, 123, 123, 148, 208, 206, 266, 397, 69, 69, - 38, 78, 38, 123, 123, 123, 123, 123, 123, 227, - 207, 227, 227, 18, 2, 2, 2, 2, 2, 2, - 67, 67, 261, 219, 219, 65, 65, 219, 219, 219, - 219, 219, 219, 219, 2, 2, 123, 277, 123, 123, - 11, 227, 227, 227, 219, 219, 219, 219, 219, 219, - 79, 35, 278, 43, 181, 2, 80, 181, 183, 129, - 32, 80, 209, 184, 185, 183, 35, 81, 123, 123, - 123, 181, 181, 212, 46, 212, 438, 439, 182, 219, - 219, 182, 213, 148, 115, 183, 148, 115, 38, 82, - 43, 10, 10, 10, 83, 182, 182, 242, 242, 84, - 148, 148, 115, 200, 86, 223, 181, 43, 240, 240, - 219, 219, 10, 87, 12, 13, 14, 15, 16, 17, - 116, 10, 183, 145, 118, 119, 148, 188, 149, 12, - 182, 242, 151, 165, 12, 148, 193, 242, 181, 5, - 5, 5, 5, 5, 5, 194, 176, 174, 184, 185, - 195, 201, 165, 165, 219, 184, 185, 171, 172, 5, - 5, 212, 182, 180, 274, 286, 275, 148, 335, 43, - 276, 279, 280, 453, 288, 184, 185, 289, 300, 292, - 293, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 305, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 311, 316, 145, 145, 145, 205, 315, - 176, 174, 184, 185, 12, 13, 14, 15, 16, 17, - 319, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 227, 12, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 322, 323, 180, 180, 180, 36, 227, - 227, 36, 320, 328, 329, 6, 331, 123, 12, 13, - 14, 15, 16, 17, 332, 359, 36, 360, 362, 128, - 330, 363, 364, 379, 388, 367, 123, 123, 12, 13, - 14, 15, 16, 17, 221, 221, 389, 381, 221, 221, - 221, 221, 221, 221, 221, 391, 392, 393, 219, 308, - 57, 58, 59, 60, 61, 221, 221, 221, 221, 221, - 221, 394, 395, 128, 396, 401, 411, 219, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 406, 412, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 221, 221, 414, 418, 181, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 419, 426, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 429, 182, 432, - 434, 221, 221, 148, 435, 436, 290, 443, 445, 451, - 446, 454, 457, 462, 458, 464, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 466, 43, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 213, 213, - 22, 20, 213, 213, 213, 213, 213, 213, 213, 48, - 238, 303, 171, 113, 171, 153, 181, 181, 181, 213, - 213, 213, 213, 213, 213, 214, 214, 117, 240, 214, - 214, 214, 214, 214, 214, 214, 313, 314, 154, 117, - 182, 182, 182, 158, 59, 148, 214, 214, 214, 214, - 214, 214, 212, 212, 213, 213, 212, 212, 212, 212, - 212, 212, 212, 65, 61, 117, 113, 333, 93, 95, - 97, 24, 334, 212, 212, 212, 212, 212, 212, 126, - 283, 214, 214, 377, 310, 213, 213, 309, 49, 48, - 6, 6, 6, 6, 6, 6, 215, 215, 240, 240, - 215, 215, 215, 215, 215, 215, 215, 384, 212, 212, - 6, 6, 214, 214, 125, 452, 402, 215, 215, 215, - 215, 215, 215, 380, 183, 431, 340, 183, 318, 410, - 199, 272, 240, 269, 31, 0, 404, 0, 240, 212, - 212, 183, 183, 0, 0, 0, 0, 0, 0, 221, - 0, 0, 215, 215, 0, 0, 0, 0, 0, 0, - 423, 0, 0, 0, 0, 0, 0, 0, 221, 54, - 39, 0, 0, 0, 0, 0, 183, 0, 0, 0, - 444, 0, 0, 215, 215, 0, 0, 461, 0, 0, - 463, 0, 0, 0, 465, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 216, 216, 183, 0, - 216, 216, 216, 216, 216, 216, 216, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 216, 216, 216, - 216, 216, 216, 0, 0, 0, 0, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 0, 0, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 0, - 211, 211, 216, 216, 211, 211, 211, 211, 211, 211, - 211, 0, 0, 213, 0, 0, 0, 0, 0, 0, - 0, 211, 211, 211, 211, 211, 211, 0, 0, 0, - 0, 0, 213, 216, 216, 0, 0, 0, 0, 0, - 214, 0, 0, 0, 0, 0, 0, 136, 0, 0, - 136, 0, 0, 0, 0, 0, 211, 211, 0, 214, - 0, 0, 0, 0, 136, 136, 0, 212, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 57, - 58, 59, 60, 61, 0, 0, 212, 211, 211, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, - 0, 213, 213, 0, 0, 213, 213, 213, 213, 213, - 0, 215, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 0, 0, 0, 0, 0, 214, 214, - 215, 136, 214, 214, 214, 214, 214, 0, 0, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 0, 63, 0, 0, 183, 212, 212, 0, 0, 212, - 212, 212, 212, 212, 55, 0, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 0, 0, 0, + 166, 166, 43, 43, 166, 188, 44, 45, 20, 400, + 122, 5, 39, 64, 67, 39, 43, 225, 43, 65, + 70, 43, 73, 184, 172, 77, 18, 45, 182, 180, + 206, 181, 179, 183, 1, 269, 207, 43, 185, 174, + 69, 73, 184, 217, 64, 64, 175, 182, 177, 293, + 123, 115, 183, 43, 115, 18, 189, 73, 5, 39, + 10, 10, 296, 10, 10, 10, 10, 10, 10, 10, + 10, 69, 69, 401, 39, 146, 45, 288, 146, 39, + 171, 10, 10, 10, 10, 10, 10, 9, 191, 184, + 124, 174, 146, 146, 182, 180, 25, 181, 179, 183, + 166, 166, 297, 115, 166, 166, 166, 166, 166, 166, + 166, 18, 175, 43, 177, 181, 10, 10, 181, 272, + 26, 166, 166, 166, 166, 166, 166, 146, 186, 187, + 108, 184, 181, 181, 243, 243, 182, 180, 28, 181, + 179, 183, 298, 175, 125, 130, 10, 10, 10, 11, + 367, 43, 114, 295, 166, 264, 166, 166, 115, 146, + 136, 115, 39, 136, 322, 363, 208, 181, 243, 32, + 114, 39, 267, 241, 243, 108, 115, 136, 136, 241, + 38, 209, 332, 46, 62, 27, 166, 166, 166, 178, + 306, 118, 178, 385, 118, 175, 279, 228, 228, 181, + 85, 228, 228, 228, 228, 228, 228, 228, 118, 118, + 284, 280, 136, 33, 18, 42, 128, 41, 228, 228, + 228, 228, 228, 228, 123, 123, 47, 38, 123, 123, + 123, 123, 123, 123, 123, 12, 13, 14, 15, 16, + 17, 178, 38, 118, 136, 123, 123, 123, 123, 123, + 123, 228, 268, 228, 228, 18, 5, 5, 5, 5, + 5, 5, 67, 67, 50, 220, 220, 65, 65, 220, + 220, 220, 220, 220, 220, 220, 5, 5, 123, 399, + 123, 123, 52, 228, 228, 228, 220, 220, 220, 220, + 220, 220, 387, 35, 78, 43, 182, 190, 185, 182, + 12, 13, 14, 15, 16, 17, 36, 263, 35, 36, + 123, 123, 123, 182, 182, 214, 180, 185, 71, 180, + 183, 220, 220, 183, 36, 138, 117, 75, 138, 117, + 38, 79, 43, 10, 10, 10, 80, 183, 183, 38, + 29, 30, 138, 138, 117, 202, 150, 210, 182, 43, + 241, 241, 220, 220, 10, 129, 12, 13, 14, 15, + 16, 17, 81, 10, 185, 146, 80, 211, 180, 12, + 12, 35, 183, 82, 35, 166, 83, 138, 117, 86, + 182, 186, 187, 84, 241, 87, 178, 176, 186, 187, + 241, 440, 441, 117, 166, 166, 150, 173, 174, 241, + 241, 119, 120, 214, 183, 181, 185, 186, 187, 138, + 215, 43, 214, 379, 151, 455, 153, 195, 196, 337, + 197, 203, 221, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 276, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 277, 404, 146, 146, 146, + 136, 278, 178, 176, 186, 187, 281, 282, 290, 412, + 291, 295, 294, 166, 166, 166, 166, 166, 166, 166, + 166, 166, 228, 12, 166, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 302, 307, 181, 181, 181, + 313, 228, 228, 207, 317, 318, 186, 187, 321, 123, + 12, 13, 14, 15, 16, 17, 310, 57, 58, 59, + 60, 61, 324, 330, 331, 325, 333, 463, 123, 123, + 465, 334, 361, 362, 467, 364, 222, 222, 365, 366, + 222, 222, 222, 222, 222, 222, 222, 2, 369, 381, + 220, 383, 408, 390, 391, 393, 394, 222, 222, 222, + 222, 222, 222, 395, 396, 129, 397, 398, 403, 220, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 413, + 414, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 222, 222, 6, 416, 182, 123, 123, 123, + 123, 123, 123, 123, 123, 123, 421, 428, 123, 123, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 434, + 183, 420, 436, 222, 222, 138, 431, 437, 438, 445, + 447, 448, 453, 456, 459, 464, 460, 43, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 468, 466, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 214, 214, 22, 20, 214, 214, 214, 214, 214, 214, + 214, 48, 239, 172, 113, 172, 154, 117, 182, 182, + 182, 214, 214, 214, 214, 214, 214, 215, 215, 155, + 241, 215, 215, 215, 215, 215, 215, 215, 117, 59, + 159, 61, 183, 183, 183, 117, 65, 138, 215, 215, + 215, 215, 215, 215, 213, 213, 214, 214, 213, 213, + 213, 213, 213, 213, 213, 113, 93, 95, 97, 24, + 127, 285, 312, 311, 49, 213, 213, 213, 213, 213, + 213, 48, 386, 215, 215, 392, 126, 214, 214, 382, + 433, 454, 342, 320, 274, 271, 31, 201, 216, 216, + 0, 0, 216, 216, 216, 216, 216, 216, 216, 0, + 213, 213, 0, 0, 215, 215, 0, 0, 0, 216, + 216, 216, 216, 216, 216, 0, 184, 426, 0, 184, + 430, 0, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 213, 213, 184, 184, 0, 0, 0, 0, 449, + 0, 222, 2, 2, 216, 216, 0, 0, 0, 0, + 0, 0, 457, 0, 0, 0, 0, 0, 461, 0, + 222, 54, 39, 2, 0, 0, 0, 0, 184, 6, + 6, 6, 6, 6, 6, 216, 216, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 6, 0, 0, 0, 0, 0, 0, 0, 217, 217, + 184, 0, 217, 217, 217, 217, 217, 217, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, + 217, 217, 217, 217, 217, 0, 0, 0, 0, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 0, 0, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 0, 212, 212, 217, 217, 212, 212, 212, 212, + 212, 212, 212, 0, 0, 214, 0, 0, 0, 0, + 0, 0, 0, 212, 212, 212, 212, 212, 212, 0, + 0, 0, 0, 0, 214, 217, 217, 0, 0, 0, + 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 212, 212, + 0, 215, 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, - 215, 0, 0, 215, 215, 215, 215, 215, 0, 0, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 216, 0, 0, 202, 202, 0, 0, 202, 202, - 202, 202, 202, 202, 202, 0, 183, 183, 183, 0, - 216, 0, 0, 0, 0, 202, 202, 202, 202, 202, - 202, 203, 203, 0, 0, 203, 203, 203, 203, 203, - 203, 203, 54, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 203, 203, 203, 203, 203, 203, 204, 204, - 202, 202, 204, 204, 204, 204, 204, 204, 204, 0, - 0, 0, 0, 0, 211, 0, 0, 0, 0, 204, - 204, 204, 204, 204, 204, 0, 0, 203, 203, 216, - 216, 202, 202, 216, 216, 216, 216, 216, 0, 0, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 0, 0, 184, 204, 204, 184, 136, 203, 203, + 118, 57, 58, 59, 60, 61, 0, 0, 213, 212, + 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 214, 214, 0, 0, 214, 214, 214, + 214, 214, 0, 216, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 0, 0, 0, 0, 0, + 215, 215, 216, 0, 215, 215, 215, 215, 215, 0, + 0, 215, 215, 215, 215, 215, 215, 215, 215, 215, + 215, 215, 0, 63, 0, 0, 184, 213, 213, 0, + 0, 213, 213, 213, 213, 213, 55, 0, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 184, 184, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 211, 204, 204, 211, 211, 211, - 211, 211, 0, 0, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 184, 0, 0, 135, 135, - 0, 0, 135, 135, 0, 135, 0, 135, 135, 0, - 0, 144, 0, 0, 144, 0, 0, 0, 0, 135, - 135, 135, 135, 135, 135, 165, 165, 184, 144, 144, - 165, 165, 0, 165, 165, 165, 0, 0, 0, 0, - 0, 56, 57, 58, 59, 60, 61, 0, 165, 165, - 165, 165, 182, 170, 135, 135, 0, 180, 178, 0, - 179, 177, 181, 144, 0, 0, 186, 0, 0, 186, - 0, 0, 0, 0, 0, 173, 154, 175, 166, 165, - 0, 62, 165, 186, 186, 135, 135, 0, 0, 0, - 0, 0, 0, 0, 0, 144, 182, 170, 0, 0, - 210, 180, 178, 0, 179, 177, 181, 0, 0, 169, - 0, 165, 165, 0, 63, 0, 0, 0, 186, 173, - 154, 175, 166, 0, 0, 0, 0, 55, 202, 0, - 0, 0, 0, 0, 0, 182, 170, 0, 0, 168, - 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, - 186, 0, 0, 169, 0, 203, 0, 0, 173, 154, - 175, 166, 182, 170, 0, 0, 0, 180, 178, 0, - 179, 177, 181, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 204, 168, 0, 173, 154, 175, 166, 0, - 0, 0, 169, 0, 0, 0, 0, 202, 202, 0, - 0, 202, 202, 202, 202, 202, 0, 0, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 169, - 0, 0, 168, 0, 203, 203, 0, 0, 203, 203, - 203, 203, 203, 184, 0, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 0, 0, 0, 168, - 325, 204, 204, 0, 0, 204, 204, 204, 204, 204, - 0, 0, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 135, 0, 0, 185, 0, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 185, 185, 0, 0, 0, 182, 170, - 165, 144, 0, 180, 178, 0, 179, 177, 181, 0, - 0, 0, 0, 0, 0, 184, 184, 184, 0, 0, - 165, 173, 154, 175, 166, 0, 0, 183, 185, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 169, 186, 0, 0, 0, - 185, 135, 135, 0, 0, 135, 135, 135, 135, 135, - 0, 183, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 144, 144, 168, 326, 0, 165, 165, - 165, 165, 165, 165, 165, 165, 165, 0, 12, 165, - 165, 0, 165, 165, 165, 165, 165, 165, 165, 165, - 183, 0, 0, 0, 0, 176, 174, 184, 185, 155, - 156, 157, 158, 160, 0, 0, 171, 172, 167, 152, - 153, 159, 164, 163, 165, 161, 162, 183, 186, 186, + 0, 216, 216, 0, 0, 216, 216, 216, 216, 216, + 0, 0, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 217, 0, 0, 203, 203, 0, 0, + 203, 203, 203, 203, 203, 203, 203, 0, 184, 184, + 184, 0, 217, 0, 0, 0, 0, 203, 203, 203, + 203, 203, 203, 204, 204, 0, 0, 204, 204, 204, + 204, 204, 204, 204, 54, 39, 0, 0, 0, 0, + 0, 0, 0, 0, 204, 204, 204, 204, 204, 204, + 205, 205, 203, 203, 205, 205, 205, 205, 205, 205, + 205, 0, 0, 0, 0, 0, 212, 0, 0, 0, + 0, 205, 205, 205, 205, 205, 205, 0, 0, 204, + 204, 217, 217, 203, 203, 217, 217, 217, 217, 217, + 0, 0, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 0, 0, 185, 205, 205, 185, 0, + 204, 204, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 185, 185, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 212, 212, 205, 205, 212, + 212, 212, 212, 212, 0, 0, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 185, 0, 0, + 135, 135, 0, 0, 135, 135, 0, 135, 0, 135, + 135, 0, 0, 145, 0, 0, 145, 0, 0, 0, + 0, 135, 135, 135, 135, 135, 135, 166, 166, 185, + 145, 145, 166, 166, 0, 166, 166, 166, 0, 0, + 0, 0, 0, 56, 57, 58, 59, 60, 61, 0, + 166, 166, 166, 166, 184, 172, 135, 135, 0, 182, + 180, 0, 181, 179, 183, 145, 0, 0, 187, 0, + 0, 187, 0, 0, 0, 0, 0, 175, 156, 177, + 168, 166, 0, 62, 166, 187, 187, 135, 135, 0, + 0, 0, 0, 0, 0, 0, 0, 145, 184, 172, + 0, 0, 212, 182, 180, 0, 181, 179, 183, 0, + 0, 171, 0, 166, 166, 0, 63, 0, 0, 0, + 187, 175, 156, 177, 168, 0, 0, 0, 0, 55, + 203, 0, 0, 0, 0, 0, 0, 184, 172, 0, + 0, 170, 182, 180, 0, 181, 179, 183, 0, 0, + 0, 0, 187, 0, 0, 171, 0, 204, 0, 0, + 175, 156, 177, 168, 184, 172, 0, 0, 0, 182, + 180, 0, 181, 179, 183, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 205, 170, 0, 175, 156, 177, + 168, 0, 0, 0, 171, 0, 0, 0, 0, 203, + 203, 0, 0, 203, 203, 203, 203, 203, 0, 0, + 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 203, 171, 0, 0, 170, 0, 204, 204, 0, 0, + 204, 204, 204, 204, 204, 185, 0, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 0, 0, + 0, 170, 327, 205, 205, 0, 0, 205, 205, 205, + 205, 205, 0, 0, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 135, 0, 0, 186, 0, + 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 135, 186, 186, 0, 0, 0, + 184, 172, 166, 145, 0, 182, 180, 0, 181, 179, + 183, 0, 0, 0, 0, 0, 0, 185, 185, 185, + 0, 0, 166, 175, 156, 177, 168, 0, 0, 185, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, - 174, 184, 185, 155, 156, 157, 158, 160, 0, 0, - 171, 172, 0, 152, 153, 159, 164, 163, 165, 161, - 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 176, 174, - 184, 185, 155, 156, 157, 158, 160, 0, 0, 171, - 172, 211, 152, 153, 159, 164, 163, 165, 161, 162, - 0, 0, 0, 0, 0, 176, 174, 184, 185, 155, - 156, 157, 158, 160, 0, 0, 171, 172, 0, 152, - 153, 159, 164, 163, 165, 161, 162, 0, 0, 0, - 0, 0, 182, 170, 0, 0, 0, 180, 178, 0, - 179, 177, 181, 0, 0, 0, 185, 0, 0, 0, - 0, 0, 0, 183, 378, 173, 154, 175, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 182, 170, 0, 0, - 0, 180, 178, 0, 179, 177, 181, 0, 0, 169, - 0, 0, 0, 0, 0, 0, 0, 0, 403, 173, - 154, 175, 166, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 182, 170, 0, 0, 413, 180, 178, 168, - 179, 177, 181, 0, 0, 0, 0, 0, 185, 185, - 185, 0, 0, 169, 0, 173, 154, 175, 166, 0, - 0, 176, 174, 184, 185, 155, 156, 157, 158, 160, - 0, 0, 171, 172, 0, 152, 153, 159, 164, 163, - 165, 161, 162, 168, 0, 0, 0, 0, 0, 169, - 0, 0, 0, 0, 0, 0, 0, 182, 170, 0, - 0, 0, 180, 178, 0, 179, 177, 181, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, - 173, 154, 175, 166, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 170, 0, 0, 416, 180, 178, - 0, 179, 177, 181, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 169, 0, 173, 154, 175, 166, - 0, 0, 182, 170, 0, 0, 417, 180, 178, 0, - 179, 177, 181, 0, 0, 0, 0, 0, 0, 209, - 0, 0, 209, 0, 168, 173, 154, 175, 166, 0, - 169, 0, 0, 0, 0, 0, 209, 209, 182, 170, - 0, 0, 433, 180, 178, 0, 179, 177, 181, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, - 168, 173, 154, 175, 166, 0, 0, 183, 0, 210, - 0, 209, 210, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 210, 210, 0, 168, - 0, 0, 0, 0, 0, 169, 0, 187, 0, 0, - 187, 0, 0, 209, 0, 0, 0, 0, 0, 0, - 0, 183, 0, 0, 187, 187, 0, 0, 0, 0, - 0, 210, 0, 0, 0, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 171, 187, 0, + 0, 0, 186, 135, 135, 0, 0, 135, 135, 135, + 135, 135, 0, 185, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 145, 145, 170, 328, 0, + 166, 166, 166, 166, 166, 166, 166, 166, 166, 0, + 12, 166, 166, 0, 166, 166, 166, 166, 166, 166, + 166, 166, 185, 0, 0, 0, 0, 178, 176, 186, + 187, 157, 158, 159, 160, 162, 0, 0, 173, 174, + 169, 154, 155, 161, 166, 165, 167, 163, 164, 185, + 187, 187, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 183, 0, 187, - 0, 0, 0, 210, 0, 176, 174, 184, 185, 155, - 156, 157, 158, 160, 0, 0, 171, 172, 0, 152, - 153, 159, 164, 163, 165, 161, 162, 188, 0, 0, - 188, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 188, 0, 0, 0, 176, - 174, 184, 185, 155, 156, 157, 158, 160, 0, 0, - 171, 172, 183, 152, 153, 159, 164, 163, 165, 161, - 162, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 0, 415, 0, 0, 0, 176, 174, 184, 185, 155, - 156, 157, 158, 160, 0, 0, 171, 172, 183, 152, - 153, 159, 164, 163, 165, 161, 162, 0, 0, 0, - 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 170, 0, 0, 183, 180, 178, - 0, 179, 177, 181, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 460, 0, 173, 154, 175, 166, - 176, 174, 184, 185, 155, 156, 157, 158, 160, 209, - 0, 171, 172, 183, 152, 153, 159, 164, 163, 165, - 161, 162, 0, 0, 0, 0, 0, 0, 0, 0, - 169, 0, 0, 0, 0, 0, 176, 174, 184, 185, - 155, 156, 157, 158, 160, 0, 0, 171, 172, 0, - 152, 153, 159, 164, 163, 165, 161, 162, 0, 210, - 168, 0, 0, 0, 0, 176, 174, 184, 185, 155, - 156, 157, 158, 160, 0, 0, 171, 172, 0, 152, - 153, 159, 164, 163, 165, 161, 162, 187, 0, 0, - 0, 209, 209, 209, 0, 0, 0, 0, 0, 0, - 0, 176, 174, 184, 185, 155, 156, 157, 158, 160, - 0, 0, 171, 172, 0, 152, 153, 159, 164, 163, - 165, 161, 162, 182, 170, 0, 0, 0, 180, 178, - 0, 179, 177, 181, 0, 0, 189, 0, 0, 189, - 0, 210, 210, 210, 0, 0, 173, 154, 175, 166, - 182, 170, 0, 189, 189, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 0, 0, 0, 188, 0, 187, - 187, 187, 0, 173, 154, 175, 166, 182, 170, 0, - 169, 0, 180, 178, 0, 179, 177, 181, 189, 0, + 0, 178, 176, 186, 187, 157, 158, 159, 160, 162, + 0, 0, 173, 174, 0, 154, 155, 161, 166, 165, + 167, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 173, 154, 175, 166, 0, 0, 200, 169, 0, 200, - 168, 200, 200, 200, 200, 0, 0, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 200, 200, 200, 200, - 200, 200, 0, 201, 169, 0, 201, 168, 201, 201, - 201, 201, 0, 0, 0, 0, 0, 0, 183, 188, - 188, 188, 0, 201, 201, 201, 201, 201, 201, 0, - 182, 200, 200, 0, 168, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 205, 0, 0, 205, 0, 0, - 205, 0, 0, 173, 0, 175, 0, 0, 201, 201, - 0, 0, 200, 200, 205, 205, 205, 205, 205, 205, + 178, 176, 186, 187, 157, 158, 159, 160, 162, 0, + 0, 173, 174, 213, 154, 155, 161, 166, 165, 167, + 163, 164, 0, 0, 292, 0, 0, 178, 176, 186, + 187, 157, 158, 159, 160, 162, 0, 0, 173, 174, + 0, 154, 155, 161, 166, 165, 167, 163, 164, 0, + 0, 0, 0, 0, 184, 172, 0, 0, 0, 182, + 180, 0, 181, 179, 183, 0, 0, 0, 186, 305, + 0, 0, 0, 0, 0, 185, 380, 175, 156, 177, + 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 315, 316, 0, 0, 184, 172, + 0, 0, 0, 182, 180, 0, 181, 179, 183, 0, + 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, + 405, 175, 156, 177, 168, 335, 0, 0, 0, 0, + 336, 0, 0, 0, 184, 172, 0, 0, 415, 182, + 180, 170, 181, 179, 183, 0, 0, 0, 0, 0, + 186, 186, 186, 0, 0, 171, 0, 175, 156, 177, + 168, 0, 0, 178, 176, 186, 187, 157, 158, 159, + 160, 162, 0, 0, 173, 174, 0, 154, 155, 161, + 166, 165, 167, 163, 164, 170, 0, 0, 0, 0, + 0, 171, 0, 0, 406, 0, 0, 0, 0, 184, + 172, 0, 0, 0, 182, 180, 0, 181, 179, 183, + 0, 0, 0, 0, 0, 0, 0, 0, 425, 0, + 0, 170, 175, 156, 177, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 184, 172, 0, 446, 418, + 182, 180, 0, 181, 179, 183, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 171, 0, 175, 156, + 177, 168, 0, 0, 184, 172, 0, 0, 419, 182, + 180, 0, 181, 179, 183, 0, 0, 0, 0, 0, + 0, 210, 0, 0, 210, 0, 170, 175, 156, 177, + 168, 0, 171, 0, 0, 0, 0, 0, 210, 210, + 184, 172, 0, 0, 435, 182, 180, 0, 181, 179, + 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 171, 170, 175, 156, 177, 168, 0, 0, 185, + 0, 211, 0, 210, 211, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 211, + 0, 170, 0, 0, 0, 0, 0, 171, 0, 188, + 0, 0, 188, 0, 0, 210, 0, 0, 0, 0, + 0, 0, 0, 185, 0, 0, 188, 188, 0, 0, + 0, 0, 0, 211, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, - 201, 0, 0, 0, 0, 0, 0, 0, 0, 205, - 205, 0, 0, 0, 0, 0, 176, 174, 184, 185, - 155, 156, 157, 158, 160, 0, 0, 171, 172, 0, - 152, 153, 159, 164, 163, 165, 161, 162, 0, 0, - 205, 205, 0, 0, 0, 0, 0, 192, 0, 0, - 192, 0, 0, 192, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 0, 0, 190, 0, 192, 192, 0, - 192, 194, 192, 0, 194, 0, 0, 194, 183, 190, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, + 0, 188, 0, 0, 0, 211, 0, 178, 176, 186, + 187, 157, 158, 159, 160, 162, 0, 0, 173, 174, + 0, 154, 155, 161, 166, 165, 167, 163, 164, 189, + 0, 0, 189, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 189, 0, 0, + 0, 178, 176, 186, 187, 157, 158, 159, 160, 162, + 0, 0, 173, 174, 185, 154, 155, 161, 166, 165, + 167, 163, 164, 0, 0, 0, 0, 0, 0, 0, + 0, 189, 0, 417, 0, 0, 0, 178, 176, 186, + 187, 157, 158, 159, 160, 162, 0, 0, 173, 174, + 185, 154, 155, 161, 166, 165, 167, 163, 164, 0, + 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 184, 172, 0, 0, 185, + 182, 180, 0, 181, 179, 183, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 462, 0, 175, 156, + 177, 168, 178, 176, 186, 187, 157, 158, 159, 160, + 162, 210, 0, 173, 174, 185, 154, 155, 161, 166, + 165, 167, 163, 164, 0, 0, 0, 0, 0, 0, + 0, 0, 171, 0, 0, 0, 0, 0, 178, 176, + 186, 187, 157, 158, 159, 160, 162, 0, 0, 173, + 174, 0, 154, 155, 161, 166, 165, 167, 163, 164, + 0, 211, 170, 0, 0, 0, 0, 178, 176, 186, + 187, 157, 158, 159, 160, 162, 0, 0, 173, 174, + 0, 154, 155, 161, 166, 165, 167, 163, 164, 188, + 0, 0, 0, 210, 210, 210, 0, 0, 0, 0, + 0, 0, 0, 178, 176, 186, 187, 157, 158, 159, + 160, 162, 0, 0, 173, 174, 0, 154, 155, 161, + 166, 165, 167, 163, 164, 184, 172, 0, 0, 0, + 182, 180, 0, 181, 179, 183, 0, 0, 190, 0, + 0, 190, 0, 211, 211, 211, 0, 0, 175, 156, + 177, 168, 184, 172, 0, 190, 190, 182, 180, 0, + 181, 179, 183, 0, 0, 0, 0, 0, 0, 189, + 0, 188, 188, 188, 0, 175, 156, 177, 168, 184, + 172, 0, 171, 0, 182, 180, 0, 181, 179, 183, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 194, 194, 0, 194, 0, 194, 0, 0, 0, - 0, 0, 192, 192, 0, 183, 189, 0, 0, 0, - 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 194, 194, 0, 0, - 0, 0, 183, 192, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 194, 194, 0, - 0, 0, 0, 0, 0, 0, 176, 174, 184, 185, - 155, 156, 157, 158, 160, 0, 0, 171, 172, 200, - 152, 153, 159, 164, 163, 165, 161, 162, 189, 189, - 189, 0, 0, 176, 174, 184, 185, 155, 156, 157, - 158, 160, 0, 0, 171, 172, 201, 0, 153, 159, - 164, 163, 165, 161, 162, 183, 0, 0, 0, 0, - 176, 174, 184, 185, 155, 156, 157, 158, 160, 0, - 0, 171, 172, 0, 0, 0, 159, 164, 163, 165, - 161, 162, 0, 0, 0, 0, 0, 205, 200, 200, - 0, 0, 200, 200, 200, 200, 200, 0, 0, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 0, 0, 0, 0, 0, 201, 201, 0, 0, 201, - 201, 201, 201, 201, 0, 0, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 0, 0, 0, - 0, 0, 0, 176, 174, 184, 185, 0, 0, 0, - 0, 0, 0, 0, 171, 172, 205, 205, 0, 0, - 205, 205, 205, 205, 205, 0, 0, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 0, 0, - 192, 0, 0, 0, 0, 193, 0, 0, 193, 0, - 0, 193, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 194, 193, 193, 0, 193, 0, - 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, - 195, 0, 0, 195, 0, 0, 0, 0, 0, 0, - 193, 193, 0, 0, 0, 0, 0, 195, 195, 0, - 195, 0, 195, 192, 192, 192, 192, 192, 0, 0, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 193, 193, 0, 190, 190, 190, 194, 194, 194, - 194, 194, 195, 195, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 207, 0, 0, 207, 0, - 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 195, 207, 207, 0, 207, 196, - 207, 0, 196, 0, 0, 196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, - 196, 0, 196, 197, 196, 94, 197, 0, 0, 197, - 207, 207, 89, 0, 0, 92, 0, 93, 0, 0, - 0, 0, 0, 197, 197, 0, 197, 208, 197, 0, - 208, 0, 0, 234, 196, 196, 100, 0, 0, 0, - 0, 207, 207, 0, 208, 208, 0, 208, 0, 208, - 206, 0, 0, 206, 0, 0, 0, 0, 197, 197, - 0, 0, 0, 54, 39, 196, 196, 206, 206, 0, - 206, 0, 206, 0, 137, 0, 0, 137, 0, 208, - 208, 0, 0, 0, 0, 0, 0, 0, 0, 197, - 197, 137, 137, 0, 137, 0, 137, 143, 95, 0, - 143, 0, 206, 0, 0, 0, 0, 0, 0, 0, - 208, 208, 0, 0, 143, 143, 0, 143, 191, 143, - 0, 191, 182, 170, 0, 0, 137, 180, 178, 0, - 179, 177, 181, 206, 206, 191, 191, 0, 193, 0, - 0, 0, 0, 0, 0, 173, 0, 175, 0, 143, - 0, 0, 0, 0, 198, 0, 0, 198, 137, 182, - 170, 0, 0, 0, 180, 178, 0, 179, 177, 181, - 191, 198, 198, 0, 0, 0, 0, 0, 0, 169, - 195, 143, 173, 0, 175, 0, 0, 0, 0, 0, - 199, 0, 0, 199, 0, 0, 0, 0, 0, 0, - 0, 0, 191, 0, 0, 0, 198, 199, 199, 168, - 0, 193, 193, 193, 193, 193, 169, 0, 193, 193, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 0, - 0, 0, 101, 57, 58, 59, 60, 61, 198, 0, - 0, 0, 199, 0, 0, 0, 0, 0, 207, 0, - 0, 0, 0, 195, 195, 195, 195, 195, 0, 0, - 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 0, 196, 0, 199, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, - 0, 0, 0, 0, 0, 63, 102, 0, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 208, 98, 0, - 0, 207, 207, 207, 207, 207, 0, 0, 0, 0, - 207, 207, 207, 207, 207, 207, 207, 207, 207, 90, - 206, 0, 0, 0, 0, 196, 196, 196, 196, 196, - 0, 0, 0, 0, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 0, 137, 0, 0, 0, 0, 197, - 197, 197, 197, 197, 96, 97, 0, 0, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 143, 0, 0, - 208, 208, 208, 208, 208, 0, 0, 183, 0, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 191, 0, - 0, 0, 0, 206, 206, 206, 206, 206, 0, 0, - 0, 0, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 0, 0, 0, 183, 0, 0, 137, 137, 137, - 137, 137, 0, 0, 198, 0, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 0, 0, 0, 0, 0, - 143, 143, 143, 143, 143, 149, 0, 0, 149, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 0, 0, - 199, 0, 149, 149, 0, 176, 174, 184, 185, 0, - 191, 191, 191, 0, 0, 105, 171, 172, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 137, 138, - 0, 139, 140, 141, 142, 143, 144, 149, 146, 147, - 0, 0, 176, 174, 184, 185, 198, 198, 198, 0, - 0, 0, 0, 171, 172, 196, 0, 0, 0, 105, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 199, 199, 199, 0, 0, 0, 0, 0, - 0, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 235, 237, 238, 239, 240, 241, 243, 244, 245, 246, - 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 109, 271, 0, 0, 0, 0, 0, - 109, 0, 0, 109, 0, 109, 0, 284, 285, 0, - 287, 0, 0, 0, 0, 0, 0, 196, 0, 109, - 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, - 0, 0, 0, 298, 0, 299, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 301, 0, 302, 0, - 0, 109, 109, 0, 0, 0, 0, 0, 105, 0, - 0, 0, 196, 241, 0, 105, 306, 307, 105, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 0, 0, 109, 105, 109, 109, 196, 196, 105, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 105, 196, 0, - 0, 0, 94, 196, 0, 0, 0, 0, 0, 89, - 0, 0, 92, 0, 93, 149, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 94, 0, 91, 105, 0, - 105, 105, 89, 100, 0, 92, 0, 93, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 387, 0, 0, - 0, 352, 0, 0, 0, 0, 100, 0, 0, 0, - 54, 39, 0, 0, 0, 0, 0, 196, 405, 0, - 407, 0, 0, 408, 409, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 39, 0, 0, 0, 0, 0, - 0, 196, 0, 425, 0, 95, 0, 149, 0, 0, - 109, 109, 109, 109, 109, 109, 0, 0, 0, 0, - 0, 196, 0, 0, 0, 353, 0, 0, 95, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 456, 0, + 0, 0, 175, 156, 177, 168, 0, 0, 201, 171, + 0, 201, 170, 201, 201, 201, 201, 0, 0, 0, + 0, 0, 190, 0, 0, 0, 0, 0, 201, 201, + 201, 201, 201, 201, 0, 202, 171, 0, 202, 170, + 202, 202, 202, 202, 0, 0, 0, 0, 0, 0, + 185, 189, 189, 189, 0, 202, 202, 202, 202, 202, + 202, 0, 184, 201, 201, 0, 170, 182, 180, 0, + 181, 179, 183, 0, 0, 0, 206, 0, 0, 206, + 0, 0, 206, 0, 0, 175, 0, 177, 0, 0, + 202, 202, 0, 0, 201, 201, 206, 206, 206, 206, + 206, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 202, 0, 0, 0, 0, 0, 0, 0, + 0, 206, 206, 0, 0, 0, 0, 0, 178, 176, + 186, 187, 157, 158, 159, 160, 162, 0, 0, 173, + 174, 0, 154, 155, 161, 166, 165, 167, 163, 164, + 0, 0, 206, 206, 0, 0, 0, 0, 0, 193, + 0, 0, 193, 0, 0, 193, 0, 0, 0, 0, + 0, 0, 0, 0, 191, 0, 0, 191, 0, 193, + 193, 0, 193, 195, 193, 0, 195, 0, 0, 195, + 185, 191, 191, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 195, 195, 0, 195, 0, 195, 0, + 0, 0, 0, 0, 193, 193, 0, 185, 190, 0, + 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 195, + 0, 0, 0, 0, 185, 193, 193, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 195, 0, 0, 0, 0, 0, 0, 0, 178, 176, + 186, 187, 157, 158, 159, 160, 162, 0, 0, 173, + 174, 201, 154, 155, 161, 166, 165, 167, 163, 164, + 190, 190, 190, 0, 0, 178, 176, 186, 187, 157, + 158, 159, 160, 162, 0, 0, 173, 174, 202, 0, + 155, 161, 166, 165, 167, 163, 164, 185, 0, 0, + 0, 0, 178, 176, 186, 187, 157, 158, 159, 160, + 162, 0, 0, 173, 174, 0, 0, 0, 161, 166, + 165, 167, 163, 164, 0, 0, 0, 0, 0, 206, + 201, 201, 0, 0, 201, 201, 201, 201, 201, 0, + 0, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 0, 0, 0, 0, 0, 202, 202, 0, + 0, 202, 202, 202, 202, 202, 0, 0, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 0, + 0, 0, 0, 0, 0, 178, 176, 186, 187, 0, + 0, 0, 0, 0, 0, 0, 173, 174, 206, 206, + 0, 0, 206, 206, 206, 206, 206, 0, 0, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 0, 0, 193, 0, 0, 0, 0, 194, 0, 0, + 194, 0, 0, 194, 191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 194, 194, 0, + 194, 0, 194, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 0, 0, 196, 0, 0, 196, 0, 0, 0, 0, + 0, 0, 194, 194, 0, 0, 0, 0, 0, 196, + 196, 0, 196, 0, 196, 193, 193, 193, 193, 193, + 0, 0, 193, 193, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 194, 194, 0, 191, 191, 191, 195, + 195, 195, 195, 195, 196, 196, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 208, 0, 0, + 208, 0, 0, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 196, 196, 208, 208, 0, + 208, 197, 208, 0, 197, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 105, 105, 105, 105, - 105, 0, 0, 109, 109, 0, 0, 0, 0, 0, - 109, 109, 109, 109, 0, 0, 109, 0, 0, 0, + 0, 197, 197, 0, 197, 198, 197, 0, 198, 0, + 0, 198, 208, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 198, 0, 198, 209, + 198, 0, 209, 0, 0, 0, 197, 197, 0, 0, + 0, 0, 0, 208, 208, 0, 209, 209, 0, 209, + 0, 209, 207, 0, 0, 207, 0, 0, 0, 0, + 198, 198, 0, 0, 0, 0, 0, 197, 197, 207, + 207, 0, 207, 0, 207, 0, 137, 0, 0, 137, + 0, 209, 209, 0, 0, 0, 0, 0, 0, 0, + 0, 198, 198, 137, 137, 0, 137, 0, 137, 144, + 0, 0, 144, 0, 207, 0, 0, 0, 0, 0, + 0, 0, 209, 209, 0, 0, 144, 144, 0, 144, + 0, 144, 0, 0, 192, 0, 0, 192, 137, 0, + 0, 0, 0, 0, 0, 207, 207, 0, 0, 0, + 194, 192, 192, 0, 0, 0, 0, 199, 0, 0, + 199, 144, 0, 0, 0, 0, 0, 0, 0, 0, + 137, 184, 172, 0, 199, 199, 182, 180, 0, 181, + 179, 183, 0, 0, 0, 0, 192, 0, 0, 0, + 0, 0, 196, 144, 175, 0, 177, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, + 0, 0, 0, 194, 194, 194, 194, 194, 171, 0, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 199, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, + 208, 0, 0, 0, 0, 196, 196, 196, 196, 196, + 0, 0, 196, 196, 196, 196, 196, 196, 196, 196, + 196, 196, 196, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 109, 109, 109, 0, 109, 109, 109, 0, 0, - 109, 109, 109, 109, 109, 0, 0, 0, 105, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 57, 58, 59, 60, 61, 0, 0, 0, 105, 105, - 0, 0, 109, 109, 0, 105, 105, 105, 105, 0, - 0, 105, 101, 57, 58, 59, 60, 61, 0, 0, - 0, 0, 0, 0, 0, 105, 105, 105, 105, 0, - 105, 105, 105, 0, 0, 105, 0, 105, 105, 105, - 0, 0, 99, 94, 0, 0, 0, 0, 0, 0, - 89, 0, 0, 92, 0, 93, 0, 0, 0, 0, - 0, 0, 63, 102, 0, 99, 0, 105, 105, 103, - 0, 236, 0, 0, 100, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 63, 102, 0, 0, 0, - 0, 0, 103, 341, 342, 343, 90, 0, 98, 0, - 0, 54, 39, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 344, 345, 346, 347, 0, 348, 349, 90, - 0, 0, 350, 0, 351, 0, 0, 0, 0, 0, - 94, 96, 97, 0, 0, 0, 95, 89, 94, 0, - 92, 0, 93, 0, 0, 89, 0, 0, 92, 0, - 93, 0, 94, 0, 96, 97, 0, 0, 247, 89, - 94, 100, 92, 0, 93, 0, 249, 89, 0, 100, - 92, 0, 93, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 54, 39, - 0, 100, 0, 0, 0, 0, 54, 39, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, + 0, 0, 0, 0, 0, 184, 172, 0, 0, 0, + 182, 180, 0, 181, 179, 183, 0, 0, 0, 209, + 0, 0, 0, 208, 208, 208, 208, 208, 175, 0, + 177, 0, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 0, 207, 0, 0, 0, 0, 197, 197, 197, + 197, 197, 0, 0, 0, 0, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 0, 137, 0, 0, 0, + 0, 198, 198, 198, 198, 198, 0, 0, 0, 0, + 198, 198, 198, 198, 198, 198, 198, 198, 198, 144, + 0, 0, 209, 209, 209, 209, 209, 0, 0, 0, + 0, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 0, 0, 0, 0, 192, 207, 207, 207, 207, 207, + 0, 0, 0, 0, 207, 207, 207, 207, 207, 207, + 207, 207, 207, 0, 0, 0, 185, 199, 0, 137, + 137, 137, 137, 137, 0, 0, 0, 0, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 0, 0, 0, + 0, 0, 144, 144, 144, 144, 144, 106, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 138, 139, 140, 0, 141, 142, 143, 144, 145, 146, + 0, 148, 149, 0, 0, 0, 192, 192, 192, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, + 0, 0, 106, 0, 0, 0, 0, 0, 0, 199, + 199, 199, 0, 0, 178, 176, 186, 187, 0, 0, + 0, 0, 0, 0, 0, 173, 174, 0, 0, 0, + 0, 0, 0, 0, 0, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 237, 239, 240, 241, 242, 243, + 245, 246, 247, 248, 250, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 0, 0, 200, 0, + 185, 200, 149, 0, 0, 149, 243, 0, 273, 0, + 0, 150, 0, 0, 150, 200, 200, 0, 0, 149, + 149, 286, 287, 0, 289, 109, 0, 0, 150, 150, + 0, 198, 109, 0, 0, 109, 0, 109, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 0, 301, + 200, 109, 0, 0, 149, 0, 109, 0, 0, 0, + 303, 0, 304, 150, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 198, 243, 0, 0, + 308, 309, 200, 109, 109, 0, 149, 0, 178, 176, + 186, 187, 0, 314, 0, 150, 0, 0, 0, 173, + 174, 198, 198, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 323, 0, 109, 0, 109, 109, 105, + 0, 0, 0, 0, 0, 0, 105, 0, 0, 105, + 0, 105, 198, 0, 0, 0, 0, 198, 0, 0, + 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 39, 0, 0, 0, 0, 0, 0, 54, 39, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 105, 243, + 0, 389, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 89, 0, 0, 93, 0, 94, 0, 0, 0, + 0, 198, 407, 0, 409, 0, 0, 410, 411, 105, + 354, 105, 105, 0, 0, 101, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 0, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 57, 58, 59, 60, 61, 0, 0, 0, 0, + 0, 0, 54, 39, 0, 198, 0, 0, 0, 0, + 0, 95, 109, 109, 109, 109, 109, 109, 89, 0, + 0, 93, 458, 94, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 355, 0, 92, 96, 0, 0, + 0, 0, 101, 0, 0, 0, 0, 0, 200, 0, + 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, + 0, 150, 0, 0, 0, 109, 0, 0, 0, 54, + 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 109, 0, 0, 0, + 0, 0, 109, 109, 109, 109, 0, 0, 109, 0, + 0, 0, 0, 0, 96, 0, 105, 105, 105, 105, + 105, 105, 109, 109, 109, 109, 0, 109, 109, 109, + 109, 0, 109, 109, 109, 109, 109, 0, 0, 0, + 200, 200, 200, 0, 149, 95, 0, 0, 0, 0, + 0, 0, 89, 150, 0, 93, 0, 94, 0, 0, + 0, 0, 0, 0, 109, 109, 0, 0, 0, 105, + 0, 0, 0, 236, 0, 0, 101, 0, 0, 0, + 0, 102, 57, 58, 59, 60, 61, 0, 0, 105, + 105, 0, 0, 0, 0, 0, 105, 105, 105, 105, + 0, 0, 105, 54, 39, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 105, 105, 105, 105, + 0, 105, 105, 105, 105, 0, 105, 0, 105, 105, + 105, 0, 0, 0, 100, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 102, 57, + 58, 59, 60, 61, 63, 103, 0, 0, 105, 105, + 0, 104, 343, 344, 345, 0, 0, 99, 95, 0, + 0, 0, 0, 0, 0, 89, 0, 0, 93, 0, + 94, 346, 347, 348, 349, 0, 350, 351, 90, 91, + 0, 352, 0, 353, 0, 0, 238, 0, 0, 101, + 0, 100, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 0, 89, 0, 0, 93, 0, 94, 0, 0, + 0, 63, 103, 97, 98, 0, 54, 39, 104, 0, + 0, 0, 0, 249, 99, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 0, 0, 0, + 0, 96, 0, 54, 39, 0, 0, 0, 0, 0, + 0, 0, 102, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 98, 95, 0, 0, 0, 0, 0, 96, 89, + 0, 95, 93, 0, 94, 0, 0, 0, 89, 0, + 0, 93, 0, 94, 0, 0, 0, 95, 0, 0, + 251, 0, 0, 101, 89, 100, 0, 93, 0, 94, + 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 103, 0, 101, 0, + 54, 39, 104, 0, 0, 0, 0, 0, 99, 54, + 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 39, 0, 0, 90, + 91, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 102, 57, 58, 59, 60, + 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 102, 57, 58, 59, 60, 61, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 63, 103, + 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 0, 99, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 102, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 0, 98, 101, 57, 58, - 59, 60, 61, 0, 0, 101, 57, 58, 59, 60, - 61, 0, 0, 0, 0, 0, 0, 90, 0, 135, - 57, 58, 59, 60, 61, 0, 0, 101, 57, 58, - 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 0, 63, 103, 0, 0, 0, + 0, 0, 104, 0, 0, 0, 0, 0, 99, 102, + 57, 58, 59, 60, 61, 0, 0, 0, 136, 57, + 58, 59, 60, 61, 0, 0, 0, 97, 98, 90, + 91, 0, 0, 0, 102, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 0, 96, 97, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 63, 102, 99, 0, 0, 0, 0, 103, 63, 102, - 99, 0, 0, 98, 0, 103, 0, 0, 0, 0, - 0, 98, 136, 102, 0, 0, 0, 0, 0, 103, - 63, 102, 0, 0, 90, 98, 0, 103, 0, 0, - 0, 0, 90, 98, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 90, 0, 0, 0, 0, 96, - 97, 0, 0, 0, 0, 0, 0, 96, 97, 0, + 0, 0, 100, 0, 97, 98, 0, 0, 0, 0, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 63, 103, 0, 0, 0, 100, 0, 104, + 0, 137, 103, 0, 0, 99, 0, 0, 104, 0, + 0, 0, 0, 0, 99, 0, 0, 63, 103, 0, + 0, 0, 0, 0, 104, 0, 90, 91, 0, 0, + 99, 0, 0, 0, 0, 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 0, 0, 0, 0, 0, 0, 96, - 97, + 0, 90, 91, 0, 0, 0, 0, 0, 0, 0, + 0, 97, 98, 0, 0, 0, 0, 0, 0, 0, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 97, 98, ); protected static $yyCheck = array(33, - 41, 145, 36, 37, 123, 41, 36, 37, 44, 35, - 6, 92, 125, 47, 92, 193, 50, 125, 52, 123, - 50, 55, 52, 37, 38, 55, 219, 312, 42, 43, - 37, 45, 46, 47, 320, 42, 43, 71, 45, 46, - 47, 71, 41, 321, 78, 79, 60, 260, 62, 41, - 37, 59, 44, 87, 71, 42, 59, 87, 37, 38, - 47, 40, 41, 42, 43, 44, 45, 46, 47, 59, - 87, 59, 92, 41, 92, 40, 44, 92, 44, 58, - 59, 60, 61, 62, 63, 41, 264, 37, 260, 91, - 58, 59, 42, 43, 93, 45, 46, 47, 37, 38, - 260, 93, 41, 42, 43, 44, 45, 46, 47, 35, - 60, 145, 62, 41, 93, 94, 44, 402, 403, 58, - 59, 60, 61, 62, 63, 93, 91, 93, 300, 371, - 58, 59, 260, 123, 35, 123, 93, 93, 41, 76, - 300, 44, 335, 64, 123, 124, 125, 41, 44, 183, - 44, 41, 91, 183, 93, 94, 260, 125, 123, 41, - 92, 41, 44, 41, 44, 93, 44, 334, 340, 59, - 363, 413, 300, 340, 416, 41, 58, 59, 44, 260, - 340, 59, 260, 120, 123, 124, 125, 40, 366, 310, - 93, 311, 311, 435, 310, 37, 38, 125, 123, 41, - 42, 43, 44, 45, 46, 47, 448, 47, 334, 35, - 206, 93, 454, 93, 340, 93, 58, 59, 60, 61, - 62, 63, 37, 38, 300, 301, 41, 42, 43, 44, - 45, 46, 47, 40, 41, 44, 340, 381, 78, 79, - 260, 61, 260, 58, 59, 60, 61, 62, 63, 91, - 59, 93, 94, 35, 280, 281, 282, 283, 284, 285, - 373, 374, 340, 37, 38, 373, 374, 41, 42, 43, - 44, 45, 46, 47, 300, 301, 91, 44, 93, 94, - 5, 123, 124, 125, 58, 59, 60, 61, 62, 63, - 61, 44, 59, 327, 41, 321, 40, 44, 312, 125, - 25, 40, 41, 402, 403, 312, 59, 410, 123, 124, - 125, 58, 59, 333, 39, 333, 373, 374, 41, 93, - 94, 44, 340, 41, 41, 312, 44, 44, 260, 41, - 364, 310, 311, 312, 41, 58, 59, 300, 301, 44, - 58, 59, 59, 125, 123, 150, 93, 381, 300, 301, - 124, 125, 331, 44, 280, 281, 282, 283, 284, 285, - 40, 340, 312, 331, 78, 79, 40, 332, 40, 410, - 93, 334, 410, 312, 410, 93, 44, 340, 125, 280, - 281, 282, 283, 284, 285, 93, 400, 401, 402, 403, - 44, 260, 331, 332, 340, 402, 403, 411, 412, 300, - 301, 333, 125, 331, 41, 210, 41, 125, 340, 443, - 61, 260, 61, 443, 40, 402, 403, 40, 58, 41, - 44, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 40, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 40, 321, 413, 414, 415, 340, 41, - 400, 401, 402, 403, 280, 281, 282, 283, 284, 285, - 40, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 41, 93, 413, 414, 415, 41, 331, - 332, 44, 297, 41, 41, 35, 40, 312, 280, 281, - 282, 283, 284, 285, 123, 41, 59, 41, 41, 335, - 315, 340, 44, 125, 40, 123, 331, 332, 280, 281, - 282, 283, 284, 285, 37, 38, 40, 58, 41, 42, - 43, 44, 45, 46, 47, 40, 59, 59, 312, 260, - 261, 262, 263, 264, 265, 58, 59, 60, 61, 62, - 63, 40, 40, 335, 125, 59, 125, 331, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 361, 59, 411, + 41, 41, 36, 37, 44, 40, 36, 37, 6, 59, + 260, 35, 92, 47, 125, 59, 50, 152, 52, 125, + 50, 55, 52, 37, 38, 55, 123, 44, 42, 43, + 334, 45, 46, 47, 320, 123, 340, 71, 312, 41, + 47, 71, 37, 147, 78, 79, 60, 42, 62, 221, + 300, 41, 47, 87, 44, 35, 91, 87, 321, 92, + 37, 38, 260, 40, 41, 42, 43, 44, 45, 46, + 47, 78, 79, 123, 92, 41, 93, 212, 44, 123, + 94, 58, 59, 60, 61, 62, 63, 260, 123, 37, + 340, 93, 58, 59, 42, 43, 92, 45, 46, 47, + 37, 38, 300, 93, 41, 42, 43, 44, 45, 46, + 47, 35, 60, 147, 62, 41, 93, 94, 44, 195, + 59, 58, 59, 60, 61, 62, 63, 93, 402, 403, + 76, 37, 58, 59, 300, 301, 42, 43, 91, 45, + 46, 47, 340, 41, 260, 125, 123, 124, 125, 5, + 41, 185, 41, 44, 91, 185, 93, 94, 41, 125, + 41, 44, 92, 44, 299, 337, 44, 93, 334, 25, + 59, 92, 260, 334, 340, 121, 59, 58, 59, 340, + 260, 59, 317, 39, 300, 59, 123, 124, 125, 41, + 266, 41, 44, 365, 44, 93, 44, 37, 38, 125, + 71, 41, 42, 43, 44, 45, 46, 47, 58, 59, + 208, 59, 93, 64, 311, 44, 87, 93, 58, 59, + 60, 61, 62, 63, 37, 38, 40, 260, 41, 42, + 43, 44, 45, 46, 47, 280, 281, 282, 283, 284, + 285, 93, 260, 93, 125, 58, 59, 60, 61, 62, + 63, 91, 340, 93, 94, 35, 280, 281, 282, 283, + 284, 285, 373, 374, 310, 37, 38, 373, 374, 41, + 42, 43, 44, 45, 46, 47, 300, 301, 91, 383, + 93, 94, 310, 123, 124, 125, 58, 59, 60, 61, + 62, 63, 368, 44, 61, 329, 41, 332, 312, 44, + 280, 281, 282, 283, 284, 285, 41, 340, 59, 44, + 123, 124, 125, 58, 59, 333, 41, 312, 311, 44, + 41, 93, 94, 44, 59, 41, 41, 123, 44, 44, + 260, 61, 366, 310, 311, 312, 40, 58, 59, 260, + 300, 301, 58, 59, 59, 125, 40, 41, 93, 383, + 300, 301, 124, 125, 331, 335, 280, 281, 282, 283, + 284, 285, 410, 340, 312, 331, 40, 41, 93, 410, + 410, 41, 93, 41, 44, 312, 41, 93, 93, 123, + 125, 402, 403, 44, 334, 44, 400, 401, 402, 403, + 340, 373, 374, 40, 331, 332, 40, 411, 412, 300, + 301, 78, 79, 333, 125, 331, 312, 402, 403, 125, + 340, 445, 333, 355, 40, 445, 410, 44, 93, 340, + 44, 260, 340, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 41, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 41, 388, 413, 414, 415, + 331, 61, 400, 401, 402, 403, 260, 61, 40, 401, + 40, 44, 41, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 312, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 58, 40, 413, 414, 415, + 40, 331, 332, 340, 41, 321, 402, 403, 40, 312, + 280, 281, 282, 283, 284, 285, 260, 261, 262, 263, + 264, 265, 41, 41, 41, 93, 40, 459, 331, 332, + 462, 123, 41, 41, 466, 41, 37, 38, 340, 44, + 41, 42, 43, 44, 45, 46, 47, 35, 123, 125, + 312, 58, 361, 40, 40, 40, 59, 58, 59, 60, + 61, 62, 63, 59, 40, 335, 40, 125, 59, 331, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 125, + 59, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 93, 94, 35, 40, 331, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 344, 340, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 59, + 331, 125, 413, 124, 125, 331, 123, 41, 371, 40, + 59, 340, 125, 41, 58, 41, 340, 93, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 125, 123, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 93, 94, 40, 125, 331, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 344, 340, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 123, 331, 59, - 413, 124, 125, 331, 41, 371, 218, 40, 59, 125, - 340, 41, 58, 41, 340, 123, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 125, 93, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 37, 38, - 123, 123, 41, 42, 43, 44, 45, 46, 47, 41, - 123, 263, 93, 41, 41, 41, 413, 414, 415, 58, - 59, 60, 61, 62, 63, 37, 38, 58, 340, 41, - 42, 43, 44, 45, 46, 47, 288, 289, 41, 93, - 413, 414, 415, 123, 41, 413, 58, 59, 60, 61, - 62, 63, 37, 38, 93, 94, 41, 42, 43, 44, - 45, 46, 47, 125, 41, 59, 59, 319, 41, 125, - 125, 7, 324, 58, 59, 60, 61, 62, 63, 86, - 206, 93, 94, 353, 277, 124, 125, 276, 42, 41, - 280, 281, 282, 283, 284, 285, 37, 38, 300, 301, - 41, 42, 43, 44, 45, 46, 47, 364, 93, 94, - 300, 301, 124, 125, 84, 442, 386, 58, 59, 60, - 61, 62, 63, 357, 41, 422, 331, 44, 293, 399, - 120, 195, 334, 192, 23, -1, 388, -1, 340, 124, - 125, 58, 59, -1, -1, -1, -1, -1, -1, 312, - -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, - 412, -1, -1, -1, -1, -1, -1, -1, 331, 91, - 92, -1, -1, -1, -1, -1, 93, -1, -1, -1, - 432, -1, -1, 124, 125, -1, -1, 457, -1, -1, - 460, -1, -1, -1, 464, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, 125, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 37, 38, 123, 123, 41, 42, 43, 44, 45, 46, + 47, 41, 123, 93, 41, 41, 41, 58, 413, 414, + 415, 58, 59, 60, 61, 62, 63, 37, 38, 41, + 340, 41, 42, 43, 44, 45, 46, 47, 93, 41, + 123, 41, 413, 414, 415, 59, 125, 413, 58, 59, + 60, 61, 62, 63, 37, 38, 93, 94, 41, 42, + 43, 44, 45, 46, 47, 59, 41, 125, 125, 7, + 86, 208, 279, 278, 42, 58, 59, 60, 61, 62, + 63, 41, 366, 93, 94, 373, 84, 124, 125, 359, + 424, 444, 333, 295, 197, 194, 23, 121, 37, 38, + -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, + 93, 94, -1, -1, 124, 125, -1, -1, -1, 58, + 59, 60, 61, 62, 63, -1, 41, 415, -1, 44, + 418, -1, 280, 281, 282, 283, 284, 285, -1, -1, + -1, 124, 125, 58, 59, -1, -1, -1, -1, 437, + -1, 312, 300, 301, 93, 94, -1, -1, -1, -1, + -1, -1, 450, -1, -1, -1, -1, -1, 456, -1, + 331, 91, 92, 321, -1, -1, -1, -1, 93, 280, + 281, 282, 283, 284, 285, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, + 301, -1, -1, -1, -1, -1, -1, -1, 37, 38, + 125, -1, 41, 42, 43, 44, 45, 46, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, 60, 61, 62, 63, -1, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, 37, 38, 93, 94, 41, 42, 43, 44, + 45, 46, 47, -1, -1, 312, -1, -1, -1, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, 331, 124, 125, -1, -1, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, 331, -1, -1, -1, -1, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 260, 261, 262, 263, 264, 265, -1, -1, 331, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, + 400, 401, 331, -1, 404, 405, 406, 407, 408, -1, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, 333, -1, -1, 331, 400, 401, -1, + -1, 404, 405, 406, 407, 408, 346, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, - 37, 38, 93, 94, 41, 42, 43, 44, 45, 46, - 47, -1, -1, 312, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, - -1, -1, 331, 124, 125, -1, -1, -1, -1, -1, - 312, -1, -1, -1, -1, -1, -1, 41, -1, -1, - 44, -1, -1, -1, -1, -1, 93, 94, -1, 331, - -1, -1, -1, -1, 58, 59, -1, 312, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, 331, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, - -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, 312, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, 400, 401, - 331, 125, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - -1, 333, -1, -1, 331, 400, 401, -1, -1, 404, - 405, 406, 407, 408, 346, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 312, -1, -1, 37, 38, -1, -1, + 41, 42, 43, 44, 45, 46, 47, -1, 413, 414, + 415, -1, 331, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 91, 92, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + 37, 38, 93, 94, 41, 42, 43, 44, 45, 46, + 47, -1, -1, -1, -1, -1, 331, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, -1, -1, 93, + 94, 400, 401, 124, 125, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, 41, 93, 94, 44, -1, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, 124, 125, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 93, -1, -1, + 37, 38, -1, -1, 41, 42, -1, 44, -1, 46, + 47, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, 37, 38, 125, + 58, 59, 42, 43, -1, 45, 46, 47, -1, -1, + -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, + 60, 61, 62, 63, 37, 38, 93, 94, -1, 42, + 43, -1, 45, 46, 47, 93, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, 60, 61, 62, + 63, 91, -1, 300, 94, 58, 59, 124, 125, -1, + -1, -1, -1, -1, -1, -1, -1, 125, 37, 38, + -1, -1, 41, 42, 43, -1, 45, 46, 47, -1, + -1, 94, -1, 123, 124, -1, 333, -1, -1, -1, + 93, 60, 61, 62, 63, -1, -1, -1, -1, 346, + 331, -1, -1, -1, -1, -1, -1, 37, 38, -1, + -1, 124, 42, 43, -1, 45, 46, 47, -1, -1, + -1, -1, 125, -1, -1, 94, -1, 331, -1, -1, + 60, 61, 62, 63, 37, 38, -1, -1, -1, 42, + 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 331, 124, -1, 60, 61, 62, + 63, -1, -1, -1, 94, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 312, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, 46, 47, -1, 413, 414, 415, -1, - 331, -1, -1, -1, -1, 58, 59, 60, 61, 62, - 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 91, 92, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, 60, 61, 62, 63, 37, 38, - 93, 94, 41, 42, 43, 44, 45, 46, 47, -1, - -1, -1, -1, -1, 331, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, -1, -1, 93, 94, 400, - 401, 124, 125, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, 41, 93, 94, 44, 331, 124, 125, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, 124, 125, 404, 405, 406, + 421, 94, -1, -1, 124, -1, 400, 401, -1, -1, + 404, 405, 406, 407, 408, 331, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + -1, 124, 125, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 93, -1, -1, 37, 38, - -1, -1, 41, 42, -1, 44, -1, 46, 47, -1, - -1, 41, -1, -1, 44, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, 37, 38, 125, 58, 59, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - -1, 260, 261, 262, 263, 264, 265, -1, 60, 61, - 62, 63, 37, 38, 93, 94, -1, 42, 43, -1, - 45, 46, 47, 93, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 91, - -1, 300, 94, 58, 59, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, 125, 37, 38, -1, -1, - 41, 42, 43, -1, 45, 46, 47, -1, -1, 94, - -1, 123, 124, -1, 333, -1, -1, -1, 93, 60, - 61, 62, 63, -1, -1, -1, -1, 346, 331, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 124, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - 125, -1, -1, 94, -1, 331, -1, -1, 60, 61, - 62, 63, 37, 38, -1, -1, -1, 42, 43, -1, - 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, 124, -1, 60, 61, 62, 63, -1, - -1, -1, 94, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 94, - -1, -1, 124, -1, 400, 401, -1, -1, 404, 405, - 406, 407, 408, 331, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, 124, - 125, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 312, -1, -1, 41, -1, -1, 44, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, 58, 59, -1, -1, -1, 37, 38, - 312, 331, -1, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, 413, 414, 415, -1, -1, - 332, 60, 61, 62, 63, -1, -1, 312, 93, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 417, 418, 419, 420, 421, 312, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 331, 58, 59, -1, -1, -1, + 37, 38, 312, 331, -1, 42, 43, -1, 45, 46, + 47, -1, -1, -1, -1, -1, -1, 413, 414, 415, + -1, -1, 332, 60, 61, 62, 63, -1, -1, 312, + 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 94, 331, -1, -1, -1, - 125, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, 312, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 413, 414, 124, 125, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, 410, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, - 312, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 312, 413, 414, - 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, - -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, - 45, 46, 47, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, 312, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, 94, 331, -1, + -1, -1, 125, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, 312, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 413, 414, 124, 125, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, 312, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 312, + 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, - -1, 42, 43, -1, 45, 46, 47, -1, -1, 94, - -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, - 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 124, - 45, 46, 47, -1, -1, -1, -1, -1, 413, 414, - 415, -1, -1, 94, -1, 60, 61, 62, 63, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, 124, -1, -1, -1, -1, -1, 94, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, -1, 42, 43, -1, 45, 46, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - -1, 45, 46, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 94, -1, 60, 61, 62, 63, - -1, -1, 37, 38, -1, -1, 41, 42, 43, -1, - 45, 46, 47, -1, -1, -1, -1, -1, -1, 41, - -1, -1, 44, -1, 124, 60, 61, 62, 63, -1, - 94, -1, -1, -1, -1, -1, 58, 59, 37, 38, - -1, -1, 41, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, - 124, 60, 61, 62, 63, -1, -1, 312, -1, 41, - -1, 93, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, 124, - -1, -1, -1, -1, -1, 94, -1, 41, -1, -1, - 44, -1, -1, 125, -1, -1, -1, -1, -1, -1, - -1, 312, -1, -1, 58, 59, -1, -1, -1, -1, - -1, 93, -1, -1, -1, 124, -1, -1, -1, -1, + 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 312, -1, 93, - -1, -1, -1, 125, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, 41, -1, -1, - 44, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 312, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, -1, -1, -1, -1, 93, - -1, 331, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 312, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, - -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 312, 42, 43, - -1, 45, 46, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, -1, 60, 61, 62, 63, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 331, - -1, 411, 412, 312, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, - 94, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, -1, 331, - 124, -1, -1, -1, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, 420, 421, 331, -1, -1, - -1, 413, 414, 415, -1, -1, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, 37, 38, -1, -1, -1, 42, 43, - -1, 45, 46, 47, -1, -1, 41, -1, -1, 44, - -1, 413, 414, 415, -1, -1, 60, 61, 62, 63, - 37, 38, -1, 58, 59, 42, 43, -1, 45, 46, - 47, -1, -1, -1, -1, -1, -1, 331, -1, 413, - 414, 415, -1, 60, 61, 62, 63, 37, 38, -1, - 94, -1, 42, 43, -1, 45, 46, 47, 93, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 220, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, + 43, -1, 45, 46, 47, -1, -1, -1, 331, 265, + -1, -1, -1, -1, -1, 312, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 290, 291, -1, -1, 37, 38, + -1, -1, -1, 42, 43, -1, 45, 46, 47, -1, + -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, + 59, 60, 61, 62, 63, 321, -1, -1, -1, -1, + 326, -1, -1, -1, 37, 38, -1, -1, 41, 42, + 43, 124, 45, 46, 47, -1, -1, -1, -1, -1, + 413, 414, 415, -1, -1, 94, -1, 60, 61, 62, + 63, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, 124, -1, -1, -1, -1, + -1, 94, -1, -1, 390, -1, -1, -1, -1, 37, + 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, -1, -1, -1, -1, -1, -1, -1, 414, -1, + -1, 124, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, 434, 41, + 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 94, -1, 60, 61, + 62, 63, -1, -1, 37, 38, -1, -1, 41, 42, + 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, + -1, 41, -1, -1, 44, -1, 124, 60, 61, 62, + 63, -1, 94, -1, -1, -1, -1, -1, 58, 59, + 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 94, 124, 60, 61, 62, 63, -1, -1, 312, + -1, 41, -1, 93, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 124, -1, -1, -1, -1, -1, 94, -1, 41, + -1, -1, 44, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, 312, -1, -1, 58, 59, -1, -1, + -1, -1, -1, 93, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 60, 61, 62, 63, -1, -1, 38, 94, -1, 41, - 124, 43, 44, 45, 46, -1, -1, -1, -1, -1, - 125, -1, -1, -1, -1, -1, 58, 59, 60, 61, - 62, 63, -1, 38, 94, -1, 41, 124, 43, 44, - 45, 46, -1, -1, -1, -1, -1, -1, 312, 413, - 414, 415, -1, 58, 59, 60, 61, 62, 63, -1, - 37, 93, 94, -1, 124, 42, 43, -1, 45, 46, - 47, -1, -1, -1, 38, -1, -1, 41, -1, -1, - 44, -1, -1, 60, -1, 62, -1, -1, 93, 94, - -1, -1, 124, 125, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, + -1, 93, -1, -1, -1, 125, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 41, + -1, -1, 44, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 312, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, + -1, 93, -1, 331, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 312, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, 312, + 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, -1, 60, 61, + 62, 63, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 331, -1, 411, 412, 312, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, + -1, -1, 94, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, 331, 124, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 331, + -1, -1, -1, 413, 414, 415, -1, -1, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 420, 421, 37, 38, -1, -1, -1, + 42, 43, -1, 45, 46, 47, -1, -1, 41, -1, + -1, 44, -1, 413, 414, 415, -1, -1, 60, 61, + 62, 63, 37, 38, -1, 58, 59, 42, 43, -1, + 45, 46, 47, -1, -1, -1, -1, -1, -1, 331, + -1, 413, 414, 415, -1, 60, 61, 62, 63, 37, + 38, -1, 94, -1, 42, 43, -1, 45, 46, 47, + 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, 63, -1, -1, 38, 94, + -1, 41, 124, 43, 44, 45, 46, -1, -1, -1, + -1, -1, 125, -1, -1, -1, -1, -1, 58, 59, + 60, 61, 62, 63, -1, 38, 94, -1, 41, 124, + 43, 44, 45, 46, -1, -1, -1, -1, -1, -1, + 312, 413, 414, 415, -1, 58, 59, 60, 61, 62, + 63, -1, 37, 93, 94, -1, 124, 42, 43, -1, + 45, 46, 47, -1, -1, -1, 38, -1, -1, 41, + -1, -1, 44, -1, -1, 60, -1, 62, -1, -1, + 93, 94, -1, -1, 124, 125, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, 93, 94, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, 124, 125, -1, -1, -1, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, 41, -1, -1, 44, -1, 58, + 59, -1, 61, 38, 63, -1, 41, -1, -1, 44, + 312, 58, 59, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, -1, 61, -1, 63, -1, + -1, -1, -1, -1, 93, 94, -1, 312, 331, -1, + -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + -1, -1, -1, -1, 312, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, -1, -1, -1, -1, -1, -1, -1, -1, 93, - 94, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - 124, 125, -1, -1, -1, -1, -1, 38, -1, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, -1, 41, -1, -1, 44, -1, 58, 59, -1, - 61, 38, 63, -1, 41, -1, -1, 44, 312, 58, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, - -1, -1, 93, 94, -1, 312, 331, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, - -1, -1, 312, 124, 125, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 331, - 414, 415, 416, 417, 418, 419, 420, 421, 413, 414, - 415, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 331, -1, 415, 416, - 417, 418, 419, 420, 421, 312, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, -1, -1, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, 331, 400, 401, + 125, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, 331, 414, 415, 416, 417, 418, 419, 420, 421, + 413, 414, 415, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 331, -1, + 415, 416, 417, 418, 419, 420, 421, 312, -1, -1, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, -1, -1, 416, 417, + 418, 419, 420, 421, -1, -1, -1, -1, -1, 331, + 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, -1, -1, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, -1, + -1, -1, -1, -1, -1, -1, 411, 412, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, - 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, -1, -1, -1, - -1, -1, -1, -1, 411, 412, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - 331, -1, -1, -1, -1, 38, -1, -1, 41, -1, - -1, 44, 331, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 331, 58, 59, -1, 61, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, -1, 58, 59, -1, - 61, -1, 63, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 124, 125, -1, 413, 414, 415, 404, 405, 406, - 407, 408, 93, 94, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 38, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, 125, 58, 59, -1, 61, 38, - 63, -1, 41, -1, -1, 44, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, -1, 61, 38, 63, 33, 41, -1, -1, 44, - 93, 94, 40, -1, -1, 43, -1, 45, -1, -1, - -1, -1, -1, 58, 59, -1, 61, 41, 63, -1, - 44, -1, -1, 61, 93, 94, 64, -1, -1, -1, - -1, 124, 125, -1, 58, 59, -1, 61, -1, 63, - 41, -1, -1, 44, -1, -1, -1, -1, 93, 94, - -1, -1, -1, 91, 92, 124, 125, 58, 59, -1, - 61, -1, 63, -1, 41, -1, -1, 44, -1, 93, - 94, -1, -1, -1, -1, -1, -1, -1, -1, 124, - 125, 58, 59, -1, 61, -1, 63, 41, 126, -1, - 44, -1, 93, -1, -1, -1, -1, -1, -1, -1, - 124, 125, -1, -1, 58, 59, -1, 61, 41, 63, - -1, 44, 37, 38, -1, -1, 93, 42, 43, -1, - 45, 46, 47, 124, 125, 58, 59, -1, 331, -1, - -1, -1, -1, -1, -1, 60, -1, 62, -1, 93, - -1, -1, -1, -1, 41, -1, -1, 44, 125, 37, - 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, - 93, 58, 59, -1, -1, -1, -1, -1, -1, 94, - 331, 125, 60, -1, 62, -1, -1, -1, -1, -1, + -1, -1, 331, -1, -1, -1, -1, 38, -1, -1, + 41, -1, -1, 44, 331, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 331, 58, 59, -1, + 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, 58, + 59, -1, 61, -1, 63, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 124, 125, -1, 413, 414, 415, 404, + 405, 406, 407, 408, 93, 94, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, -1, 125, -1, -1, -1, 93, 58, 59, 124, - -1, 404, 405, 406, 407, 408, 94, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, 260, 261, 262, 263, 264, 265, 125, -1, - -1, -1, 93, -1, -1, -1, -1, -1, 331, -1, - -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, -1, -1, -1, 124, 125, 58, 59, -1, + 61, 38, 63, -1, 41, -1, -1, 44, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 61, 38, 63, -1, 41, -1, + -1, 44, 93, 94, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, 41, + 63, -1, 44, -1, -1, -1, 93, 94, -1, -1, + -1, -1, -1, 124, 125, -1, 58, 59, -1, 61, + -1, 63, 41, -1, -1, 44, -1, -1, -1, -1, + 93, 94, -1, -1, -1, -1, -1, 124, 125, 58, + 59, -1, 61, -1, 63, -1, 41, -1, -1, 44, + -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, 58, 59, -1, 61, -1, 63, 41, + -1, -1, 44, -1, 93, -1, -1, -1, -1, -1, + -1, -1, 124, 125, -1, -1, 58, 59, -1, 61, + -1, 63, -1, -1, 41, -1, -1, 44, 93, -1, + -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, + 331, 58, 59, -1, -1, -1, -1, 41, -1, -1, + 44, 93, -1, -1, -1, -1, -1, -1, -1, -1, + 125, 37, 38, -1, 58, 59, 42, 43, -1, 45, + 46, 47, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, 331, 125, 60, -1, 62, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, + -1, -1, -1, 404, 405, 406, 407, 408, 94, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, 331, -1, 125, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, -1, -1, 333, 334, -1, -1, -1, - -1, -1, 340, -1, -1, -1, -1, 331, 346, -1, - -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 367, + 421, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, 331, -1, -1, -1, -1, 404, 405, 406, 407, 408, - -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, - 419, 420, 421, -1, 331, -1, -1, -1, -1, 404, - 405, 406, 407, 408, 402, 403, -1, -1, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 331, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 312, -1, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 331, -1, - -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, - -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, 312, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 331, -1, 413, 414, 415, 416, - 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, - 404, 405, 406, 407, 408, 41, -1, -1, 44, 413, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, - 331, -1, 58, 59, -1, 400, 401, 402, 403, -1, - 413, 414, 415, -1, -1, 76, 411, 412, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, - -1, 92, 93, 94, 95, 96, 97, 93, 99, 100, - -1, -1, 400, 401, 402, 403, 413, 414, 415, -1, - -1, -1, -1, 411, 412, 116, -1, -1, -1, 120, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 125, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 413, 414, 415, -1, -1, -1, -1, -1, - -1, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 193, 33, 195, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, 208, 209, -1, - 211, -1, -1, -1, -1, -1, -1, 218, -1, 59, - -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, - -1, -1, -1, 234, -1, 236, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 247, -1, 249, -1, - -1, 91, 92, -1, -1, -1, -1, -1, 33, -1, - -1, -1, 263, 264, -1, 40, 267, 268, 43, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, -1, -1, 123, 59, 125, 126, 288, 289, 64, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 300, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, 92, 319, -1, - -1, -1, 33, 324, -1, -1, -1, -1, -1, 40, - -1, -1, 43, -1, 45, 331, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 33, -1, 58, 123, -1, - 125, 126, 40, 64, -1, 43, -1, 45, -1, -1, - -1, -1, -1, -1, -1, 366, -1, 368, -1, -1, - -1, 59, -1, -1, -1, -1, 64, -1, -1, -1, - 91, 92, -1, -1, -1, -1, -1, 388, 389, -1, - 391, -1, -1, 394, 395, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, -1, -1, -1, -1, -1, - -1, 412, -1, 414, -1, 126, -1, 413, -1, -1, - 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, - -1, 432, -1, -1, -1, 123, -1, -1, 126, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 449, -1, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, -1, + 42, 43, -1, 45, 46, 47, -1, -1, -1, 331, + -1, -1, -1, 404, 405, 406, 407, 408, 60, -1, + 62, -1, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, 331, -1, -1, -1, -1, 404, 405, 406, + 407, 408, -1, -1, -1, -1, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, 331, -1, -1, -1, + -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 331, + -1, -1, 404, 405, 406, 407, 408, -1, -1, -1, + -1, 413, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, -1, -1, 331, 404, 405, 406, 407, 408, + -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, 312, 331, -1, 404, + 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, + -1, -1, 404, 405, 406, 407, 408, 76, -1, -1, + -1, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 89, 90, 91, -1, 93, 94, 95, 96, 97, 98, + -1, 100, 101, -1, -1, -1, 413, 414, 415, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, + -1, -1, 121, -1, -1, -1, -1, -1, -1, 413, + 414, 415, -1, -1, 400, 401, 402, 403, -1, -1, + -1, -1, -1, -1, -1, 411, 412, -1, -1, -1, + -1, -1, -1, -1, -1, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, -1, -1, 41, -1, + 312, 44, 41, -1, -1, 44, 195, -1, 197, -1, + -1, 41, -1, -1, 44, 58, 59, -1, -1, 58, + 59, 210, 211, -1, 213, 33, -1, -1, 58, 59, + -1, 220, 40, -1, -1, 43, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 236, -1, 238, + 93, 59, -1, -1, 93, -1, 64, -1, -1, -1, + 249, -1, 251, 93, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 265, 266, -1, -1, + 269, 270, 125, 91, 92, -1, 125, -1, 400, 401, + 402, 403, -1, 282, -1, 125, -1, -1, -1, 411, + 412, 290, 291, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 302, -1, 123, -1, 125, 126, 33, + -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, + -1, 45, 321, -1, -1, -1, -1, 326, -1, -1, + -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, - 265, -1, -1, 333, 334, -1, -1, -1, -1, -1, - 340, 341, 342, 343, -1, -1, 346, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 91, 92, 368, + -1, 370, -1, -1, 33, -1, -1, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, + -1, 390, 391, -1, 393, -1, -1, 396, 397, 123, + 59, 125, 126, -1, -1, 64, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 414, -1, 416, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 360, 361, 362, 363, -1, 365, 366, 367, -1, -1, - 370, 371, 372, 373, 374, -1, -1, -1, 313, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, - 261, 262, 263, 264, 265, -1, -1, -1, 333, 334, - -1, -1, 402, 403, -1, 340, 341, 342, 343, -1, - -1, 346, 260, 261, 262, 263, 264, 265, -1, -1, - -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, - 365, 366, 367, -1, -1, 370, -1, 372, 373, 374, - -1, -1, 313, 33, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - -1, -1, 333, 334, -1, 313, -1, 402, 403, 340, - -1, 61, -1, -1, 64, 346, -1, -1, -1, -1, + -1, -1, 91, 92, -1, 434, -1, -1, -1, -1, + -1, 33, 260, 261, 262, 263, 264, 265, 40, -1, + -1, 43, 451, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, 58, 126, -1, -1, + -1, -1, 64, -1, -1, -1, -1, -1, 331, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -1, -1, -1, 313, -1, -1, -1, 91, + 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 333, 334, -1, -1, -1, - -1, -1, 340, 341, 342, 343, 367, -1, 346, -1, - -1, 91, 92, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 360, 361, 362, 363, -1, 365, 366, 367, - -1, -1, 370, -1, 372, -1, -1, -1, -1, -1, - 33, 402, 403, -1, -1, -1, 126, 40, 33, -1, - 43, -1, 45, -1, -1, 40, -1, -1, 43, -1, - 45, -1, 33, -1, 402, 403, -1, -1, 61, 40, - 33, 64, 43, -1, 45, -1, 61, 40, -1, 64, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, -1, -1, -1, -1, 91, 92, - -1, 64, -1, -1, -1, -1, 91, 92, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 91, 92, -1, -1, -1, -1, -1, -1, 91, 92, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, - -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, + -1, -1, 340, 341, 342, 343, -1, -1, 346, -1, + -1, -1, -1, -1, 126, -1, 260, 261, 262, 263, + 264, 265, 360, 361, 362, 363, -1, 365, 366, 367, + 368, -1, 370, 371, 372, 373, 374, -1, -1, -1, + 413, 414, 415, -1, 413, 33, -1, -1, -1, -1, + -1, -1, 40, 413, -1, 43, -1, 45, -1, -1, + -1, -1, -1, -1, 402, 403, -1, -1, -1, 313, + -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, + -1, 260, 261, 262, 263, 264, 265, -1, -1, 333, + 334, -1, -1, -1, -1, -1, 340, 341, 342, 343, + -1, -1, 346, 91, 92, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, + -1, 365, 366, 367, 368, -1, 370, -1, 372, 373, + 374, -1, -1, -1, 313, -1, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 260, 261, + 262, 263, 264, 265, 333, 334, -1, -1, 402, 403, + -1, 340, 341, 342, 343, -1, -1, 346, 33, -1, + -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, 360, 361, 362, 363, -1, 365, 366, 367, 368, + -1, 370, -1, 372, -1, -1, 61, -1, -1, 64, + -1, 313, -1, -1, -1, 33, -1, -1, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, + -1, 333, 334, 402, 403, -1, 91, 92, 340, -1, + -1, -1, -1, 61, 346, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 367, 368, -1, -1, -1, + -1, 126, -1, 91, 92, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 402, 403, 33, -1, -1, -1, -1, -1, 126, 40, + -1, 33, 43, -1, 45, -1, -1, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, 33, -1, -1, + 61, -1, -1, 64, 40, 313, -1, 43, -1, 45, + -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 333, 334, -1, 64, -1, + 91, 92, 340, -1, -1, -1, -1, -1, 346, 91, + 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, 92, -1, -1, 367, + 368, -1, -1, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, -1, 126, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 126, -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 333, 334, + -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, + -1, 346, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 333, 334, -1, -1, -1, -1, -1, - 340, -1, -1, -1, -1, -1, 346, 260, 261, 262, - 263, 264, 265, -1, -1, 260, 261, 262, 263, 264, - 265, -1, -1, -1, -1, -1, -1, 367, -1, 260, - 261, 262, 263, 264, 265, -1, -1, 260, 261, 262, - 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 367, 368, -1, 333, 334, -1, -1, -1, + -1, -1, 340, -1, -1, -1, -1, -1, 346, 260, + 261, 262, 263, 264, 265, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, -1, -1, 402, 403, 367, + 368, -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 313, -1, 402, 403, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 333, 334, 313, -1, -1, -1, -1, 340, 333, 334, - 313, -1, -1, 346, -1, 340, -1, -1, -1, -1, - -1, 346, 333, 334, -1, -1, -1, -1, -1, 340, - 333, 334, -1, -1, 367, 346, -1, 340, -1, -1, - -1, -1, 367, 346, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 367, -1, -1, -1, - -1, -1, -1, -1, 367, -1, -1, -1, -1, 402, - 403, -1, -1, -1, -1, -1, -1, 402, 403, -1, + -1, -1, 313, -1, 402, 403, -1, -1, -1, -1, + -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 333, 334, -1, -1, -1, 313, -1, 340, + -1, 333, 334, -1, -1, 346, -1, -1, 340, -1, + -1, -1, -1, -1, 346, -1, -1, 333, 334, -1, + -1, -1, -1, -1, 340, -1, 367, 368, -1, -1, + 346, -1, -1, -1, -1, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 402, 403, -1, -1, -1, -1, -1, -1, 402, - 403, + -1, 367, 368, -1, -1, -1, -1, -1, -1, -1, + -1, 402, 403, -1, -1, -1, -1, -1, -1, -1, + 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1353,14 +1371,15 @@ class Parser extends \text\parser\generic\AbstractParser { 'T_ARRAY', 'T_FUNCTION', 'T_CONST', NULL, NULL, NULL, NULL, 'T_VARIABLE', 'T_RETURN', 'T_TRY', 'T_THROW', 'T_CATCH', NULL, 'T_NEW', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_FOR', 'T_WHILE', - 'T_DO', 'T_FOREACH', 'T_IN', 'T_BREAK', 'T_CONTINUE', 'T_YIELD', NULL, NULL, - 'T_IF', 'T_ELSE', 'T_SWITCH', 'T_CASE', 'T_DEFAULT', NULL, NULL, NULL, NULL, + 'T_DO', 'T_FOREACH', 'T_IN', 'T_BREAK', 'T_CONTINUE', 'T_YIELD', + 'T_YIELD_FROM', NULL, 'T_IF', 'T_ELSE', 'T_SWITCH', 'T_CASE', 'T_DEFAULT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_GE', 'T_SE', 'T_INC', 'T_DEC', - 'T_ADD_EQUAL', 'T_SUB_EQUAL', 'T_MUL_EQUAL', 'T_DIV_EQUAL', 'T_MOD_EQUAL', - NULL, 'T_DOUBLE_COLON', 'T_EQUALS', 'T_NOT_EQUALS', 'T_DOUBLE_ARROW', - 'T_BOOLEAN_OR', 'T_BOOLEAN_AND', 'T_CONCAT_EQUAL', 'T_OR_EQUAL', - 'T_AND_EQUAL', 'T_XOR_EQUAL', 'T_SHR', 'T_SHL', + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_GE', 'T_SE', + 'T_INC', 'T_DEC', 'T_ADD_EQUAL', 'T_SUB_EQUAL', 'T_MUL_EQUAL', + 'T_DIV_EQUAL', 'T_MOD_EQUAL', NULL, 'T_DOUBLE_COLON', 'T_EQUALS', + 'T_NOT_EQUALS', 'T_DOUBLE_ARROW', 'T_BOOLEAN_OR', 'T_BOOLEAN_AND', + 'T_CONCAT_EQUAL', 'T_OR_EQUAL', 'T_AND_EQUAL', 'T_XOR_EQUAL', 'T_SHR', + 'T_SHL', ); protected static $yyTableCount= 0, $yyNameCount= 0; @@ -1515,7 +1534,7 @@ public function yyparse($yyLex) { // Actions switch ($yyN) { - case 1: #line 182 "src/main/jay/grammars/php.jay" + case 1: #line 184 "src/main/jay/grammars/php.jay" { $yyVal= new ParseTree(); $yyVal->origin= $yyLex->fileName; @@ -1527,35 +1546,35 @@ public function yyparse($yyLex) { } } break; - case 3: #line 197 "src/main/jay/grammars/php.jay" + case 3: #line 199 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new PackageNode()); } break; - case 4: #line 197 "src/main/jay/grammars/php.jay" + case 4: #line 199 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->name= $yyVals[-1+$yyTop]; } break; - case 7: #line 208 "src/main/jay/grammars/php.jay" + case 7: #line 210 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 8: #line 209 "src/main/jay/grammars/php.jay" + case 8: #line 211 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 9: #line 213 "src/main/jay/grammars/php.jay" + case 9: #line 215 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ImportNode(array('name' => $yyVals[-1+$yyTop]))); } break; - case 11: #line 220 "src/main/jay/grammars/php.jay" + case 11: #line 222 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 13: #line 225 "src/main/jay/grammars/php.jay" + case 13: #line 227 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 14: #line 231 "src/main/jay/grammars/php.jay" + case 14: #line 233 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ClassNode(), TRUE); } break; - case 15: #line 231 "src/main/jay/grammars/php.jay" + case 15: #line 233 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1566,10 +1585,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 16: #line 240 "src/main/jay/grammars/php.jay" + case 16: #line 242 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InterfaceNode(), TRUE); } break; - case 17: #line 240 "src/main/jay/grammars/php.jay" + case 17: #line 242 "src/main/jay/grammars/php.jay" { $yyVals[-6+$yyTop]->modifiers= $yyVals[-7+$yyTop][0]; $yyVals[-6+$yyTop]->annotations= $yyVals[-7+$yyTop][1]; @@ -1579,52 +1598,52 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-6+$yyTop]; } break; - case 18: #line 251 "src/main/jay/grammars/php.jay" + case 18: #line 253 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 19: #line 252 "src/main/jay/grammars/php.jay" + case 19: #line 254 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 20: #line 256 "src/main/jay/grammars/php.jay" + case 20: #line 258 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 21: #line 257 "src/main/jay/grammars/php.jay" + case 21: #line 259 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 22: #line 261 "src/main/jay/grammars/php.jay" + case 22: #line 263 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 23: #line 262 "src/main/jay/grammars/php.jay" + case 23: #line 264 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 24: #line 266 "src/main/jay/grammars/php.jay" + case 24: #line 268 "src/main/jay/grammars/php.jay" { $yyVal= array_merge((array)$yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 25: #line 267 "src/main/jay/grammars/php.jay" + case 25: #line 269 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 26: #line 271 "src/main/jay/grammars/php.jay" + case 26: #line 273 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 27: #line 272 "src/main/jay/grammars/php.jay" + case 27: #line 274 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 28: #line 273 "src/main/jay/grammars/php.jay" + case 28: #line 275 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 29: #line 277 "src/main/jay/grammars/php.jay" + case 29: #line 279 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 30: #line 278 "src/main/jay/grammars/php.jay" + case 30: #line 280 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 31: #line 282 "src/main/jay/grammars/php.jay" + case 31: #line 284 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 32: #line 283 "src/main/jay/grammars/php.jay" + case 32: #line 285 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 33: #line 289 "src/main/jay/grammars/php.jay" + case 33: #line 291 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new FieldNode()); $yyVal->modifiers= $yyVals[-2+$yyTop][0]; $yyVal->annotations= $yyVals[-2+$yyTop][1]; @@ -1633,21 +1652,21 @@ public function yyparse($yyLex) { $yyVal->initialization= $yyVals[0+$yyTop]; } break; - case 34: #line 299 "src/main/jay/grammars/php.jay" + case 34: #line 301 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ClassConstantNode($yyVals[-2+$yyTop], TypeName::$VAR, $yyVals[0+$yyTop])); } break; - case 35: #line 305 "src/main/jay/grammars/php.jay" + case 35: #line 307 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 36: #line 306 "src/main/jay/grammars/php.jay" + case 36: #line 308 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 37: #line 312 "src/main/jay/grammars/php.jay" + case 37: #line 314 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create('__construct' == $yyVals[-1+$yyTop] ? new ConstructorNode() : new MethodNode(), TRUE); } break; - case 38: #line 312 "src/main/jay/grammars/php.jay" + case 38: #line 314 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1660,57 +1679,57 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 39: #line 326 "src/main/jay/grammars/php.jay" + case 39: #line 328 "src/main/jay/grammars/php.jay" { $yyVal= TypeName::$VAR; } break; - case 40: #line 327 "src/main/jay/grammars/php.jay" + case 40: #line 329 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 41: #line 332 "src/main/jay/grammars/php.jay" + case 41: #line 334 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[-2+$yyTop]); } break; - case 42: #line 333 "src/main/jay/grammars/php.jay" + case 42: #line 335 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 43: #line 337 "src/main/jay/grammars/php.jay" + case 43: #line 339 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 44: #line 338 "src/main/jay/grammars/php.jay" + case 44: #line 340 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 45: #line 342 "src/main/jay/grammars/php.jay" + case 45: #line 344 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[0+$yyTop]; } break; - case 46: #line 346 "src/main/jay/grammars/php.jay" + case 46: #line 348 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[-3+$yyTop]; $yyVals[-1+$yyTop] && $yyVal->parameters= array('default' => $yyVals[-1+$yyTop]); } break; - case 47: #line 351 "src/main/jay/grammars/php.jay" + case 47: #line 353 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 48: #line 359 "src/main/jay/grammars/php.jay" + case 48: #line 361 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 49: #line 360 "src/main/jay/grammars/php.jay" + case 49: #line 362 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 50: #line 364 "src/main/jay/grammars/php.jay" + case 50: #line 366 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 51: #line 365 "src/main/jay/grammars/php.jay" + case 51: #line 367 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 53: #line 370 "src/main/jay/grammars/php.jay" + case 53: #line 372 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; @@ -1718,76 +1737,76 @@ public function yyparse($yyLex) { $yyVal->body= NULL; } break; - case 54: #line 376 "src/main/jay/grammars/php.jay" + case 54: #line 378 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 55: #line 379 "src/main/jay/grammars/php.jay" + case 55: #line 381 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 56: #line 382 "src/main/jay/grammars/php.jay" + case 56: #line 384 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ClassNameAccessNode(new TypeName($yyVals[-2+$yyTop]))); } break; - case 57: #line 389 "src/main/jay/grammars/php.jay" + case 57: #line 391 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 58: #line 390 "src/main/jay/grammars/php.jay" + case 58: #line 392 "src/main/jay/grammars/php.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 59: #line 394 "src/main/jay/grammars/php.jay" + case 59: #line 396 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 60: #line 395 "src/main/jay/grammars/php.jay" + case 60: #line 397 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 61: #line 399 "src/main/jay/grammars/php.jay" + case 61: #line 401 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 62: #line 400 "src/main/jay/grammars/php.jay" + case 62: #line 402 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 63: #line 404 "src/main/jay/grammars/php.jay" + case 63: #line 406 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => $yyVals[-2+$yyTop], 'check' => TRUE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 64: #line 405 "src/main/jay/grammars/php.jay" + case 64: #line 407 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => new TypeName('var'), 'check' => FALSE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 65: #line 413 "src/main/jay/grammars/php.jay" + case 65: #line 415 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 67: #line 418 "src/main/jay/grammars/php.jay" + case 67: #line 420 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 68: #line 419 "src/main/jay/grammars/php.jay" + case 68: #line 421 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 69: #line 423 "src/main/jay/grammars/php.jay" + case 69: #line 425 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 70: #line 423 "src/main/jay/grammars/php.jay" + case 70: #line 425 "src/main/jay/grammars/php.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 71: #line 426 "src/main/jay/grammars/php.jay" + case 71: #line 428 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 72: #line 426 "src/main/jay/grammars/php.jay" + case 72: #line 428 "src/main/jay/grammars/php.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 73: #line 431 "src/main/jay/grammars/php.jay" + case 73: #line 433 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 74: #line 431 "src/main/jay/grammars/php.jay" + case 74: #line 433 "src/main/jay/grammars/php.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -1799,180 +1818,180 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 75: #line 441 "src/main/jay/grammars/php.jay" + case 75: #line 443 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 76: #line 441 "src/main/jay/grammars/php.jay" + case 76: #line 443 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 77: #line 446 "src/main/jay/grammars/php.jay" + case 77: #line 448 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 78: #line 446 "src/main/jay/grammars/php.jay" + case 78: #line 448 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 79: #line 450 "src/main/jay/grammars/php.jay" + case 79: #line 452 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 80: #line 450 "src/main/jay/grammars/php.jay" + case 80: #line 452 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 81: #line 454 "src/main/jay/grammars/php.jay" + case 81: #line 456 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 82: #line 454 "src/main/jay/grammars/php.jay" + case 82: #line 456 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 83: #line 458 "src/main/jay/grammars/php.jay" + case 83: #line 460 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 84: #line 458 "src/main/jay/grammars/php.jay" + case 84: #line 460 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 85: #line 463 "src/main/jay/grammars/php.jay" + case 85: #line 465 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 87: #line 464 "src/main/jay/grammars/php.jay" + case 87: #line 466 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 89: #line 465 "src/main/jay/grammars/php.jay" + case 89: #line 467 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 90: #line 465 "src/main/jay/grammars/php.jay" + case 90: #line 467 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 92: #line 469 "src/main/jay/grammars/php.jay" + case 92: #line 471 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new NoopNode()); } break; - case 93: #line 473 "src/main/jay/grammars/php.jay" + case 93: #line 475 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => NULL, 'value' => $yyVals[0+$yyTop]); } break; - case 94: #line 474 "src/main/jay/grammars/php.jay" + case 94: #line 476 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 95: #line 478 "src/main/jay/grammars/php.jay" + case 95: #line 480 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 97: #line 483 "src/main/jay/grammars/php.jay" + case 97: #line 485 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 98: #line 484 "src/main/jay/grammars/php.jay" + case 98: #line 486 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 99: #line 488 "src/main/jay/grammars/php.jay" + case 99: #line 490 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 100: #line 488 "src/main/jay/grammars/php.jay" + case 100: #line 490 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 101: #line 492 "src/main/jay/grammars/php.jay" + case 101: #line 494 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 102: #line 492 "src/main/jay/grammars/php.jay" + case 102: #line 494 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 103: #line 498 "src/main/jay/grammars/php.jay" + case 103: #line 500 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 104: #line 499 "src/main/jay/grammars/php.jay" + case 104: #line 501 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 105: #line 503 "src/main/jay/grammars/php.jay" + case 105: #line 505 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 106: #line 504 "src/main/jay/grammars/php.jay" + case 106: #line 506 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 107: #line 504 "src/main/jay/grammars/php.jay" + case 107: #line 506 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 109: #line 513 "src/main/jay/grammars/php.jay" + case 109: #line 515 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 110: #line 514 "src/main/jay/grammars/php.jay" + case 110: #line 516 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 111: #line 518 "src/main/jay/grammars/php.jay" + case 111: #line 520 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CatchNode()); } break; - case 112: #line 518 "src/main/jay/grammars/php.jay" + case 112: #line 520 "src/main/jay/grammars/php.jay" { $yyVals[-8+$yyTop]->type= $yyVals[-5+$yyTop]; $yyVals[-8+$yyTop]->variable= $yyVals[-4+$yyTop]; $yyVals[-8+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 113: #line 528 "src/main/jay/grammars/php.jay" + case 113: #line 530 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 115: #line 533 "src/main/jay/grammars/php.jay" + case 115: #line 535 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 116: #line 534 "src/main/jay/grammars/php.jay" + case 116: #line 536 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 117: #line 538 "src/main/jay/grammars/php.jay" + case 117: #line 540 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 119: #line 543 "src/main/jay/grammars/php.jay" + case 119: #line 545 "src/main/jay/grammars/php.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 120: #line 548 "src/main/jay/grammars/php.jay" + case 120: #line 550 "src/main/jay/grammars/php.jay" { $yyVal= new DynamicInstanceCreationNode(); $yyVal->variable= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 121: #line 556 "src/main/jay/grammars/php.jay" + case 121: #line 558 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 122: #line 559 "src/main/jay/grammars/php.jay" + case 122: #line 561 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 123: #line 562 "src/main/jay/grammars/php.jay" + case 123: #line 564 "src/main/jay/grammars/php.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 124: #line 565 "src/main/jay/grammars/php.jay" + case 124: #line 567 "src/main/jay/grammars/php.jay" { $yyVal= new ClassNameAccessNode(NULL); } break; - case 125: #line 571 "src/main/jay/grammars/php.jay" + case 125: #line 573 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -1980,10 +1999,10 @@ public function yyparse($yyLex) { } } break; - case 126: #line 577 "src/main/jay/grammars/php.jay" + case 126: #line 579 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 127: #line 577 "src/main/jay/grammars/php.jay" + case 127: #line 579 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -1991,19 +2010,19 @@ public function yyparse($yyLex) { } } break; - case 128: #line 583 "src/main/jay/grammars/php.jay" + case 128: #line 585 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 129: #line 583 "src/main/jay/grammars/php.jay" + case 129: #line 585 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]->position= $p; $yyVal= $yyVals[0+$yyTop]; } break; - case 130: #line 587 "src/main/jay/grammars/php.jay" + case 130: #line 589 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 131: #line 587 "src/main/jay/grammars/php.jay" + case 131: #line 589 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2015,10 +2034,10 @@ public function yyparse($yyLex) { } } break; - case 132: #line 597 "src/main/jay/grammars/php.jay" + case 132: #line 599 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 133: #line 597 "src/main/jay/grammars/php.jay" + case 133: #line 599 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2029,53 +2048,58 @@ public function yyparse($yyLex) { } } break; - case 134: #line 606 "src/main/jay/grammars/php.jay" + case 134: #line 608 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 135: #line 609 "src/main/jay/grammars/php.jay" + case 135: #line 611 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode()); } break; - case 136: #line 612 "src/main/jay/grammars/php.jay" + case 136: #line 614 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop])); } break; - case 137: #line 615 "src/main/jay/grammars/php.jay" + case 137: #line 617 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop], $yyVals[-2+$yyTop])); } break; - case 138: #line 618 "src/main/jay/grammars/php.jay" + case 138: #line 620 "src/main/jay/grammars/php.jay" + { + $yyVal= $yyLex->create(new YieldFromNode($yyVals[0+$yyTop])); + } break; + + case 139: #line 623 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 139: #line 621 "src/main/jay/grammars/php.jay" + case 140: #line 626 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 140: #line 624 "src/main/jay/grammars/php.jay" + case 141: #line 629 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 141: #line 627 "src/main/jay/grammars/php.jay" + case 142: #line 632 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 142: #line 630 "src/main/jay/grammars/php.jay" + case 143: #line 635 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 143: #line 634 "src/main/jay/grammars/php.jay" + case 144: #line 639 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2083,7 +2107,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 144: #line 640 "src/main/jay/grammars/php.jay" + case 145: #line 645 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2091,7 +2115,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 145: #line 646 "src/main/jay/grammars/php.jay" + case 146: #line 651 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2099,41 +2123,41 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 146: #line 652 "src/main/jay/grammars/php.jay" + case 147: #line 657 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 147: #line 657 "src/main/jay/grammars/php.jay" + case 148: #line 662 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicInstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->variable= $yyVals[0+$yyTop]; } break; - case 148: #line 662 "src/main/jay/grammars/php.jay" + case 149: #line 667 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 149: #line 665 "src/main/jay/grammars/php.jay" + case 150: #line 670 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName('var[]'), 'expression' => $yyVals[0+$yyTop]))); } break; - case 150: #line 668 "src/main/jay/grammars/php.jay" + case 151: #line 673 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new SilenceOperatorNode($yyVals[0+$yyTop])); } break; - case 151: #line 671 "src/main/jay/grammars/php.jay" + case 152: #line 676 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new LambdaNode($yyVals[-5+$yyTop], (array)$yyVals[-1+$yyTop], $yyVals[-3+$yyTop])); } break; - case 152: #line 674 "src/main/jay/grammars/php.jay" + case 153: #line 679 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2143,37 +2167,37 @@ public function yyparse($yyLex) { } } break; - case 153: #line 685 "src/main/jay/grammars/php.jay" + case 154: #line 690 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 155: #line 690 "src/main/jay/grammars/php.jay" + case 156: #line 695 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 156: #line 691 "src/main/jay/grammars/php.jay" + case 157: #line 696 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 157: #line 695 "src/main/jay/grammars/php.jay" + case 158: #line 700 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 158: #line 699 "src/main/jay/grammars/php.jay" + case 159: #line 704 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 159: #line 700 "src/main/jay/grammars/php.jay" + case 160: #line 705 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 161: #line 705 "src/main/jay/grammars/php.jay" + case 162: #line 710 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 162: #line 705 "src/main/jay/grammars/php.jay" + case 163: #line 710 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 163: #line 706 "src/main/jay/grammars/php.jay" + case 164: #line 711 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 164: #line 706 "src/main/jay/grammars/php.jay" + case 165: #line 711 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 165: #line 710 "src/main/jay/grammars/php.jay" + case 166: #line 715 "src/main/jay/grammars/php.jay" { switch (strtolower($yyVals[0+$yyTop])) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2181,268 +2205,268 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 166: #line 716 "src/main/jay/grammars/php.jay" + case 167: #line 721 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 167: #line 717 "src/main/jay/grammars/php.jay" + case 168: #line 722 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 168: #line 718 "src/main/jay/grammars/php.jay" + case 169: #line 723 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 169: #line 719 "src/main/jay/grammars/php.jay" + case 170: #line 724 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 170: #line 720 "src/main/jay/grammars/php.jay" + case 171: #line 725 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 171: #line 724 "src/main/jay/grammars/php.jay" + case 172: #line 729 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => NULL))); } break; - case 172: #line 727 "src/main/jay/grammars/php.jay" + case 173: #line 732 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => NULL))); } break; - case 173: #line 730 "src/main/jay/grammars/php.jay" + case 174: #line 735 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => $yyVals[0+$yyTop]))); } break; - case 174: #line 733 "src/main/jay/grammars/php.jay" + case 175: #line 738 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => $yyVals[0+$yyTop]))); } break; - case 175: #line 739 "src/main/jay/grammars/php.jay" + case 176: #line 744 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 176: #line 740 "src/main/jay/grammars/php.jay" + case 177: #line 745 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 177: #line 744 "src/main/jay/grammars/php.jay" + case 178: #line 749 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 179: #line 749 "src/main/jay/grammars/php.jay" + case 180: #line 754 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 180: #line 753 "src/main/jay/grammars/php.jay" + case 181: #line 758 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 181: #line 754 "src/main/jay/grammars/php.jay" + case 182: #line 759 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 182: #line 755 "src/main/jay/grammars/php.jay" + case 183: #line 760 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 183: #line 756 "src/main/jay/grammars/php.jay" + case 184: #line 761 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 184: #line 757 "src/main/jay/grammars/php.jay" + case 185: #line 762 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 185: #line 758 "src/main/jay/grammars/php.jay" + case 186: #line 763 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 186: #line 759 "src/main/jay/grammars/php.jay" + case 187: #line 764 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => '~='); } break; - case 187: #line 760 "src/main/jay/grammars/php.jay" + case 188: #line 765 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 188: #line 761 "src/main/jay/grammars/php.jay" + case 189: #line 766 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 189: #line 762 "src/main/jay/grammars/php.jay" + case 190: #line 767 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 190: #line 763 "src/main/jay/grammars/php.jay" + case 191: #line 768 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 191: #line 764 "src/main/jay/grammars/php.jay" + case 192: #line 769 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 192: #line 768 "src/main/jay/grammars/php.jay" + case 193: #line 773 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 193: #line 769 "src/main/jay/grammars/php.jay" + case 194: #line 774 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 194: #line 770 "src/main/jay/grammars/php.jay" + case 195: #line 775 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 195: #line 771 "src/main/jay/grammars/php.jay" + case 196: #line 776 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 196: #line 772 "src/main/jay/grammars/php.jay" + case 197: #line 777 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 197: #line 773 "src/main/jay/grammars/php.jay" + case 198: #line 778 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 198: #line 774 "src/main/jay/grammars/php.jay" + case 199: #line 779 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 199: #line 775 "src/main/jay/grammars/php.jay" + case 200: #line 780 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 200: #line 779 "src/main/jay/grammars/php.jay" + case 201: #line 784 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 201: #line 780 "src/main/jay/grammars/php.jay" + case 202: #line 785 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 202: #line 781 "src/main/jay/grammars/php.jay" + case 203: #line 786 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 203: #line 782 "src/main/jay/grammars/php.jay" + case 204: #line 787 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 204: #line 783 "src/main/jay/grammars/php.jay" + case 205: #line 788 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 205: #line 784 "src/main/jay/grammars/php.jay" + case 206: #line 789 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 206: #line 785 "src/main/jay/grammars/php.jay" + case 207: #line 790 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 207: #line 786 "src/main/jay/grammars/php.jay" + case 208: #line 791 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 208: #line 787 "src/main/jay/grammars/php.jay" + case 209: #line 792 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 209: #line 788 "src/main/jay/grammars/php.jay" + case 210: #line 793 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 210: #line 789 "src/main/jay/grammars/php.jay" + case 211: #line 794 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 211: #line 793 "src/main/jay/grammars/php.jay" + case 212: #line 798 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 212: #line 794 "src/main/jay/grammars/php.jay" + case 213: #line 799 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 213: #line 795 "src/main/jay/grammars/php.jay" + case 214: #line 800 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 214: #line 796 "src/main/jay/grammars/php.jay" + case 215: #line 801 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 215: #line 797 "src/main/jay/grammars/php.jay" + case 216: #line 802 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 216: #line 798 "src/main/jay/grammars/php.jay" + case 217: #line 803 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 217: #line 802 "src/main/jay/grammars/php.jay" + case 218: #line 807 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 218: #line 803 "src/main/jay/grammars/php.jay" + case 219: #line 808 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 219: #line 808 "src/main/jay/grammars/php.jay" + case 220: #line 813 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 221: #line 813 "src/main/jay/grammars/php.jay" + case 222: #line 818 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 222: #line 814 "src/main/jay/grammars/php.jay" + case 223: #line 819 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 223: #line 818 "src/main/jay/grammars/php.jay" + case 224: #line 823 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 224: #line 818 "src/main/jay/grammars/php.jay" + case 225: #line 823 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 225: #line 821 "src/main/jay/grammars/php.jay" + case 226: #line 826 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 226: #line 821 "src/main/jay/grammars/php.jay" + case 227: #line 826 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 227: #line 824 "src/main/jay/grammars/php.jay" + case 228: #line 829 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 228: #line 827 "src/main/jay/grammars/php.jay" + case 229: #line 832 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, new VariableNode($yyVals[0+$yyTop]))); } break; - case 229: #line 830 "src/main/jay/grammars/php.jay" + case 230: #line 835 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, $yyVals[-1+$yyTop])); } break; - case 230: #line 833 "src/main/jay/grammars/php.jay" + case 231: #line 838 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 231: #line 833 "src/main/jay/grammars/php.jay" + case 232: #line 838 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 232: #line 836 "src/main/jay/grammars/php.jay" + case 233: #line 841 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } break; - case 233: #line 836 "src/main/jay/grammars/php.jay" + case 234: #line 841 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 236: #line 849 "src/main/jay/grammars/php.jay" + case 237: #line 854 "src/main/jay/grammars/php.jay" { $yyVal= 'callable' === $yyVals[0+$yyTop] ? new TypeName('->var', null) : new TypeName($yyVals[0+$yyTop]); } break; - case 237: #line 853 "src/main/jay/grammars/php.jay" + case 238: #line 858 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName('var[]'); } break; - case 238: #line 857 "src/main/jay/grammars/php.jay" + case 239: #line 862 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 239: #line 858 "src/main/jay/grammars/php.jay" + case 240: #line 863 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 240: #line 864 "src/main/jay/grammars/php.jay" + case 241: #line 869 "src/main/jay/grammars/php.jay" { $yyVal= 0; } break; - case 241: #line 865 "src/main/jay/grammars/php.jay" + case 242: #line 870 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 242: #line 869 "src/main/jay/grammars/php.jay" + case 243: #line 874 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 243: #line 870 "src/main/jay/grammars/php.jay" + case 244: #line 875 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 244: #line 874 "src/main/jay/grammars/php.jay" + case 245: #line 879 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 245: #line 875 "src/main/jay/grammars/php.jay" + case 246: #line 880 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 246: #line 876 "src/main/jay/grammars/php.jay" + case 247: #line 881 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 247: #line 877 "src/main/jay/grammars/php.jay" + case 248: #line 882 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_STATIC; } break; - case 248: #line 878 "src/main/jay/grammars/php.jay" + case 249: #line 883 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 249: #line 879 "src/main/jay/grammars/php.jay" + case 250: #line 884 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_FINAL; } break; -#line 2446 "-" +#line 2470 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/main/php/xp/compiler/syntax/xp/Lexer.class.php b/src/main/php/xp/compiler/syntax/xp/Lexer.class.php index 95635aaf8..2aadfd7c3 100644 --- a/src/main/php/xp/compiler/syntax/xp/Lexer.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Lexer.class.php @@ -83,6 +83,7 @@ class Lexer extends \text\parser\generic\AbstractLexer { '&' => array('&&' => Parser::T_BOOLEAN_AND, '&=' => Parser::T_AND_EQUAL), '^' => array('^=' => Parser::T_XOR_EQUAL), '?' => array('?..' => 0, '?.' => Parser::T_NAV), // "T?..." = non-checked vararg of T + 'yield' => array('yield from' => Parser::T_YIELD_FROM, 'yield' => Parser::T_YIELD) ); const DELIMITERS = " ^|&?!.:;,@%~=<>(){}[]#+-*/\\\"'\r\n\t\$`"; @@ -213,6 +214,28 @@ public function advance() { } else if ('$' === $token{0}) { $this->token= Parser::T_VARIABLE; $this->value= $this->nextToken(); + } else if (isset(self::$lookahead[$token])) { + $ahead= $token; + $p= true; + foreach (self::$lookahead[$token] as $candidate => $id) { + $l= strlen($candidate); + while (strlen($ahead) < $l && $this->tokenizer->hasMoreTokens()) { + $ahead.= $this->nextToken(); + } + if (0 === strncmp($candidate, $ahead, $l)) { + if (0 === $id) break; + $this->token= $id; + $this->value= $candidate; + $this->pushBack(substr($ahead, $l)); + $p= false; + break; + } + } + if ($p) { + $this->pushBack(substr($ahead, 1)); + $this->token= ord($token); + $this->value= $token; + } } else if (isset(self::$keywords[$token])) { $this->token= self::$keywords[$token]; $this->value= $token; @@ -242,28 +265,6 @@ public function advance() { $this->value= $token; $this->pushBack($ahead); } - } else if (isset(self::$lookahead[$token])) { - $ahead= $token; - $p= true; - foreach (self::$lookahead[$token] as $candidate => $id) { - $l= strlen($candidate); - while (strlen($ahead) < $l) { - $ahead.= $this->nextToken(); - } - if (0 === strncmp($candidate, $ahead, $l)) { - if (0 === $id) break; - $this->token= $id; - $this->value= $candidate; - $this->pushBack(substr($ahead, $l)); - $p= false; - break; - } - } - if ($p) { - $this->pushBack(substr($ahead, 1)); - $this->token= ord($token); - $this->value= $token; - } } else if (false !== strpos(self::DELIMITERS, $token) && 1 === $length) { $this->token= ord($token); $this->value= $token; diff --git a/src/main/php/xp/compiler/syntax/xp/Parser.class.php b/src/main/php/xp/compiler/syntax/xp/Parser.class.php index 497af31f9..3d1b4e769 100644 --- a/src/main/php/xp/compiler/syntax/xp/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Parser.class.php @@ -72,7 +72,8 @@ use xp\compiler\ast\ArmNode; use xp\compiler\ast\BracedExpressionNode; use xp\compiler\ast\YieldNode; -#line 76 "-" +use xp\compiler\ast\YieldFromNode; +#line 77 "-" /** * Generated parser class @@ -80,6 +81,7 @@ class Parser extends \text\parser\generic\AbstractParser { const T_ARROW= 257; const T_YIELD= 367; + const T_YIELD_FROM= 368; const T_BOOLEAN_OR= 414; const T_BOOLEAN_AND= 415; const T_ADD_EQUAL= 404; @@ -174,18 +176,18 @@ class Parser extends \text\parser\generic\AbstractParser { 98, 98, 98, 98, 100, 31, 102, 31, 31, 31, 31, 104, 31, 105, 31, 106, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 112, 31, 99, 99, 103, 103, 113, 113, 114, - 114, 36, 116, 36, 36, 36, 36, 36, 36, 115, - 115, 97, 97, 117, 117, 119, 119, 118, 118, 107, + 31, 31, 112, 31, 99, 99, 103, 103, 113, 113, + 114, 114, 36, 116, 36, 36, 36, 36, 36, 36, + 115, 115, 97, 97, 117, 117, 119, 119, 118, 118, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, + 107, 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 110, 110, 110, 110, 110, 110, 111, 111, 101, - 101, 120, 120, 122, 121, 121, 124, 121, 125, 121, - 123, 123, 10, 10, 10, 32, 32, 32, 32, 12, - 12, 95, 96, 127, 127, 128, 128, 129, 129, 129, - 129, 126, 126, 21, 21, 49, 49, 130, 130, 131, - 131, 131, 131, 131, 131, 131, 131, + 109, 109, 110, 110, 110, 110, 110, 110, 111, 111, + 101, 101, 120, 120, 122, 121, 121, 124, 121, 125, + 121, 123, 123, 10, 10, 10, 32, 32, 32, 32, + 12, 12, 95, 96, 127, 127, 128, 128, 129, 129, + 129, 129, 126, 126, 21, 21, 49, 49, 130, 130, + 131, 131, 131, 131, 131, 131, 131, 131, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 5, 6, @@ -208,1462 +210,1479 @@ class Parser extends \text\parser\generic\AbstractParser { 5, 0, 1, 1, 3, 0, 1, 5, 4, 4, 1, 4, 1, 1, 0, 3, 0, 3, 4, 4, 2, 0, 4, 0, 5, 0, 6, 2, 1, 2, - 4, 3, 1, 1, 1, 1, 1, 5, 3, 3, - 3, 0, 7, 2, 4, 0, 1, 1, 3, 1, - 3, 1, 0, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 0, 1, 3, 3, 3, + 4, 2, 3, 1, 1, 1, 1, 1, 5, 3, + 3, 3, 0, 7, 2, 4, 0, 1, 1, 3, + 1, 3, 1, 0, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 0, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, - 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 0, - 1, 1, 2, 0, 4, 2, 0, 6, 0, 4, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 3, 4, 1, 3, 1, 3, 2, 1, 3, - 5, 5, 5, 1, 3, 0, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, + 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 1, 1, 2, 0, 4, 2, 0, 6, 0, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 3, 4, 1, 3, 1, 3, 2, 1, + 3, 5, 5, 5, 1, 3, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, ); protected static $yyDefRed= array(0, 3, 0, 0, 0, 0, 0, 0, 7, 0, 0, - 0, 293, 0, 0, 295, 294, 0, 15, 0, 320, - 322, 321, 324, 326, 325, 327, 323, 1, 0, 68, - 0, 318, 8, 0, 0, 4, 0, 0, 0, 0, - 0, 69, 20, 24, 22, 319, 18, 19, 0, 0, + 0, 294, 0, 0, 296, 295, 0, 15, 0, 321, + 323, 322, 325, 327, 326, 328, 324, 1, 0, 68, + 0, 319, 8, 0, 0, 4, 0, 0, 0, 0, + 0, 69, 20, 24, 22, 320, 18, 19, 0, 0, 0, 14, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 9, 0, 0, 0, 70, 67, 0, 0, 0, 0, 11, 12, 10, - 74, 75, 223, 0, 0, 229, 225, 228, 226, 227, + 74, 75, 224, 0, 0, 230, 226, 229, 227, 228, 0, 0, 81, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 73, - 0, 0, 0, 296, 0, 297, 298, 299, 0, 304, - 27, 0, 0, 0, 31, 35, 0, 0, 232, 0, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 230, 0, 231, 203, 204, - 205, 206, 207, 0, 0, 234, 0, 0, 79, 80, - 83, 84, 0, 78, 0, 0, 0, 0, 0, 0, - 0, 0, 301, 29, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 198, 0, 196, + 0, 0, 0, 297, 0, 298, 299, 300, 0, 305, + 27, 0, 0, 0, 31, 35, 0, 0, 0, 233, + 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 231, 0, 232, 204, + 205, 206, 207, 208, 0, 0, 235, 0, 0, 79, + 80, 83, 84, 0, 78, 0, 0, 0, 0, 0, + 0, 0, 0, 302, 29, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 218, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 279, 280, 0, 285, + 293, 292, 290, 191, 282, 0, 0, 0, 225, 0, + 0, 308, 0, 0, 309, 0, 0, 0, 303, 306, + 0, 316, 0, 0, 25, 0, 34, 36, 37, 0, + 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 186, 188, 0, 100, 0, 0, 0, + 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 278, 279, 0, 284, 292, 291, - 289, 191, 281, 0, 0, 0, 224, 0, 0, 307, - 0, 0, 308, 0, 0, 0, 302, 305, 0, 315, - 0, 0, 25, 0, 34, 36, 37, 0, 0, 0, - 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 186, 188, 0, 100, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 211, 0, 202, 0, - 0, 283, 0, 175, 0, 0, 237, 235, 82, 303, - 0, 310, 0, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 35, 0, 0, 193, 0, 0, - 0, 0, 0, 189, 0, 221, 190, 219, 0, 0, - 184, 181, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 287, 312, 0, 313, 113, 0, 131, 117, - 121, 123, 119, 127, 129, 115, 125, 0, 0, 0, - 0, 111, 0, 63, 0, 0, 0, 0, 0, 0, - 35, 45, 0, 43, 0, 0, 0, 0, 0, 0, - 0, 212, 0, 195, 0, 285, 290, 0, 311, 0, - 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 38, 137, 112, 0, 0, 61, 59, 103, - 104, 105, 106, 107, 108, 0, 0, 0, 0, 0, - 0, 0, 179, 180, 197, 215, 0, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 0, 155, 0, - 0, 128, 130, 0, 0, 0, 0, 142, 222, 0, - 0, 93, 0, 0, 0, 0, 0, 65, 0, 48, - 0, 0, 53, 33, 0, 178, 213, 182, 288, 114, - 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 50, 0, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 55, - 0, 49, 54, 47, 0, 0, 139, 0, 0, 0, - 156, 0, 0, 0, 0, 0, 0, 143, 0, 0, - 0, 0, 94, 96, 95, 0, 0, 0, 0, 0, - 164, 170, 134, 0, 161, 162, 0, 0, 122, 0, - 146, 0, 0, 0, 0, 97, 102, 0, 85, 0, - 64, 0, 0, 0, 56, 0, 0, 160, 169, 163, - 135, 0, 0, 0, 158, 116, 151, 153, 0, 0, - 149, 136, 0, 0, 62, 60, 0, 0, 0, 0, - 124, 120, 0, 0, 0, 126, 150, 87, 86, 66, - 166, 0, 0, 0, 159, 0, 0, 0, 0, 171, - 118, 0, 154, 167, 0, 152, 0, 0, 165, + 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, + 203, 0, 0, 284, 0, 175, 0, 0, 238, 236, + 82, 304, 0, 311, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 35, 0, 0, 193, + 0, 0, 0, 0, 0, 189, 0, 222, 190, 220, + 0, 0, 184, 181, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 288, 313, 0, 314, 113, 0, + 131, 117, 121, 123, 119, 127, 129, 115, 125, 0, + 0, 0, 0, 111, 0, 63, 0, 0, 0, 0, + 0, 0, 35, 45, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 213, 0, 195, 0, 286, 291, 0, + 312, 0, 133, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 137, 112, 0, 0, 61, + 59, 103, 104, 105, 106, 107, 108, 0, 0, 0, + 0, 0, 0, 0, 179, 180, 197, 216, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, + 155, 0, 0, 128, 130, 0, 0, 0, 0, 142, + 223, 0, 0, 93, 0, 0, 0, 0, 0, 65, + 0, 48, 0, 0, 53, 33, 0, 178, 214, 182, + 289, 114, 0, 0, 0, 0, 132, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, + 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 55, 0, 49, 54, 47, 0, 0, 139, 0, + 0, 0, 156, 0, 0, 0, 0, 0, 0, 143, + 0, 0, 0, 0, 94, 96, 95, 0, 0, 0, + 0, 0, 164, 170, 134, 0, 161, 162, 0, 0, + 122, 0, 146, 0, 0, 0, 0, 97, 102, 0, + 85, 0, 64, 0, 0, 0, 56, 0, 0, 160, + 169, 163, 135, 0, 0, 0, 158, 116, 151, 153, + 0, 0, 149, 136, 0, 0, 62, 60, 0, 0, + 0, 0, 124, 120, 0, 0, 0, 126, 150, 87, + 86, 66, 166, 0, 0, 0, 159, 0, 0, 0, + 0, 171, 118, 0, 154, 167, 0, 152, 0, 0, + 165, ); protected static $yyDgoto= array(2, - 3, 6, 28, 143, 4, 7, 8, 17, 53, 18, - 264, 114, 61, 99, 123, 177, 63, 269, 62, 101, - 125, 412, 265, 266, 267, 399, 270, 271, 351, 352, - 400, 198, 366, 410, 502, 145, 492, 503, 535, 497, - 562, 591, 496, 493, 447, 456, 538, 41, 30, 42, - 58, 94, 95, 96, 146, 494, 495, 401, 402, 305, - 430, 440, 480, 606, 434, 437, 521, 435, 436, 441, - 609, 438, 439, 433, 471, 573, 473, 487, 474, 488, - 610, 611, 624, 625, 623, 574, 598, 575, 576, 596, - 632, 597, 147, 275, 116, 117, 148, 373, 282, 192, - 242, 193, 200, 187, 291, 279, 149, 150, 151, 152, - 153, 467, 201, 202, 154, 103, 155, 156, 338, 243, - 244, 330, 245, 428, 331, 118, 119, 120, 170, 31, + 3, 6, 28, 144, 4, 7, 8, 17, 53, 18, + 266, 114, 61, 99, 123, 178, 63, 271, 62, 101, + 125, 414, 267, 268, 269, 401, 272, 273, 353, 354, + 402, 200, 368, 412, 504, 146, 494, 505, 537, 499, + 564, 593, 498, 495, 449, 458, 540, 41, 30, 42, + 58, 94, 95, 96, 147, 496, 497, 403, 404, 307, + 432, 442, 482, 608, 436, 439, 523, 437, 438, 443, + 611, 440, 441, 435, 473, 575, 475, 489, 476, 490, + 612, 613, 626, 627, 625, 576, 600, 577, 578, 598, + 634, 599, 148, 277, 116, 117, 149, 375, 284, 194, + 244, 195, 202, 189, 293, 281, 150, 151, 152, 153, + 154, 469, 203, 204, 155, 103, 156, 157, 340, 245, + 246, 332, 247, 430, 333, 118, 119, 120, 171, 31, 32, ); - protected static $yySindex = array( -282, - 0, 0, -234, -78, -186, 1781, -234, 0, 35, 144, - 106, 0, -185, -185, 0, 0, 205, 0, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, - 849, 0, 0, -78, -78, 0, -35, 221, -23, -143, - 151, 0, 0, 0, 0, 0, 0, 0, -23, -23, - -23, 0, 284, 0, 307, 266, 0, 318, 189, 849, - -78, -78, -78, 311, 0, 323, 361, 0, -78, -78, - 812, 0, 0, 349, 126, 131, 126, 0, 0, 0, - 0, 0, 0, -78, 108, 0, 0, 0, 0, 0, - 402, 55, 0, 426, 354, 0, 403, -78, 158, -78, - 363, 158, 5272, 444, -6, -6, -177, 0, 88, 0, - 187, 441, 664, 0, 417, 0, 0, 0, 287, 0, - 0, -78, 387, 468, 0, 0, 410, 5623, 0, 5623, - 5623, 5623, 5623, 5623, 5623, 0, 5623, 498, 479, 0, - 5434, 430, 129, 3858, -30, 0, 529, 0, 0, 0, - 0, 0, 0, 500, 541, 0, 5623, 35, 0, 0, - 0, 0, 535, 0, -78, 463, 343, 381, 417, 346, - 512, 403, 0, 0, 0, -78, 1319, 362, 377, 2955, - -121, -121, -70, -121, -121, -121, 463, 0, 5623, 0, - 5623, 367, -30, 441, 0, -51, 2785, -9, 289, 592, - 600, 0, 382, 0, 5623, 5623, 5623, 5623, 5623, 5623, - 5623, 5623, 5623, 5623, 5623, 5623, 5623, 5623, 5623, 5623, - 5462, 5479, 5180, 5623, 5225, 5623, 5623, 5623, 5623, 5623, - 5623, 5623, -78, 5623, 0, 0, 463, 0, 0, 0, - 0, 0, 0, -30, -185, 5623, 0, 350, 608, 0, - 145, 463, 0, 135, 609, 463, 0, 0, 1347, 0, - 538, 406, 0, 107, 0, 0, 0, 0, 568, 112, - 0, 5623, 654, 417, -30, 574, 575, 3858, 5623, 3858, - 5589, 0, 0, -30, 0, 642, 367, 382, 0, 367, - -112, 4019, 4054, 4054, 4054, 4054, 4054, 4054, 4054, 4054, - 4054, 4054, 4054, 3858, 647, 309, 342, 828, 5623, 440, - 5623, 440, 5623, 5623, 4, 4, 5623, 5623, 4, 4, - 159, 159, 119, 119, 119, -70, 0, -121, 0, 5623, - 5623, 0, 666, 0, 655, 479, 0, 0, 0, 0, - -12, 0, 463, 50, 0, 573, 456, 384, 458, -57, - 596, 684, 0, 362, 0, 26, 5623, 0, 5623, -14, - 687, 573, 3858, 0, 5623, 0, 0, 0, 610, 685, - 0, 0, -30, 5623, 4054, 4054, 4, 4, 4, 4, - 643, 696, 0, 0, 171, 0, 0, -11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 698, 614, 2982, - 573, 0, 680, 0, 706, 707, 97, 657, 642, 628, - 0, 0, 5623, 0, 1395, 720, 639, 640, -30, 645, - 3858, 0, 5623, 0, 26, 0, 0, 5623, 0, 5623, - 0, 427, 5623, 732, 733, 539, 734, 716, 725, 745, - 751, 453, 0, 0, 0, 327, 400, 0, 0, 0, - 0, 0, 0, 0, 0, 755, 400, 735, 536, 1386, - 3009, 596, 0, 0, 0, 0, -30, 756, 774, 758, - 573, 759, 364, 0, 3174, 5623, 5623, 573, 0, 460, - 486, 0, 0, 5623, 5623, 763, 375, 0, 0, 780, - 139, 0, 803, 804, -54, 243, 243, 0, 757, 0, - -33, -93, 0, 0, 596, 0, 0, 0, 0, 0, - 722, 5623, 427, 726, 0, 792, 3394, 728, 814, 811, - 494, 3421, 3559, 5623, 453, 741, 0, 606, 0, 546, - 400, 516, 642, 400, 827, 804, 831, 400, 0, 0, - 573, 0, 0, 0, 275, 3858, 0, 573, 5623, 539, - 0, 5623, 534, 5623, 539, 746, 3858, 0, 573, 642, - -78, -36, 0, 0, 0, 804, 546, 546, 835, 753, - 0, 0, 0, 275, 0, 0, 762, 824, 0, 3586, - 0, 3613, 513, 265, 766, 0, 0, 5623, 0, 573, - 0, -36, -36, 546, 0, 857, 775, 0, 0, 0, - 0, 5623, 848, 539, 0, 0, 0, 0, 783, 265, - 0, 0, 3723, 785, 0, 0, -36, -78, 573, 871, - 0, 0, 539, 5623, 859, 0, 0, 0, 0, 0, - 0, -106, 793, 539, 0, 3821, 573, -78, 879, 0, - 0, 573, 0, 0, 798, 0, 573, 797, 0, + protected static $yySindex = array( -275, + 0, 0, -214, 120, 385, 593, -214, 0, 89, 160, + 187, 0, -237, -237, 0, 0, 220, 0, 87, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, + 635, 0, 0, 120, 120, 0, -31, 227, -30, -147, + -7, 0, 0, 0, 0, 0, 0, 0, -30, -30, + -30, 0, 218, 0, -11, 110, 0, 249, 87, 635, + 120, 120, 120, 270, 0, 283, 328, 0, 120, 120, + 331, 0, 0, 311, 121, 159, 121, 0, 0, 0, + 0, 0, 0, 120, 346, 0, 0, 0, 0, 0, + 336, 106, 0, 438, 164, 0, 109, 120, 215, 120, + 405, 215, 5278, 491, 628, 628, -184, 0, -157, 0, + 236, 506, 58, 0, 477, 0, 0, 0, 82, 0, + 0, 120, 448, 531, 0, 0, 449, 5688, 5688, 0, + 5688, 5688, 5688, 5688, 5688, 5688, 0, 5688, 456, 519, + 0, 5423, 455, 172, 3671, -36, 0, 543, 0, 0, + 0, 0, 0, 0, 505, 555, 0, 5688, 89, 0, + 0, 0, 0, 540, 0, 120, 297, 345, 383, 477, + 358, 525, 109, 0, 0, 0, 120, 877, 375, 464, + 2780, 3671, -43, -43, -78, -43, -43, -43, 297, 0, + 5688, 0, 5688, 381, -36, 506, 0, -49, 2931, 310, + 300, 600, 598, 0, -62, 0, 5688, 5688, 5688, 5688, + 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, + 5688, 5688, 5322, 5432, 5038, 5688, 5248, 5688, 5688, 5688, + 5688, 5688, 5688, 5688, 120, 5688, 0, 0, 297, 0, + 0, 0, 0, 0, 0, -36, -237, 5688, 0, -114, + 603, 0, 414, 297, 0, 43, 602, 297, 0, 0, + 1300, 0, 533, 402, 0, 105, 0, 0, 0, 0, + 538, 360, 0, 5688, 625, 477, -36, 547, 549, 3671, + 5688, 3671, 5532, 0, 0, -36, 0, 605, 381, -62, + 0, 381, -208, 3879, 3916, 3916, 3916, 3916, 3916, 3916, + 3916, 3916, 3916, 3916, 3916, 3671, 616, 4056, 1229, 27, + 5688, 137, 5688, 137, 5688, 5688, 69, 69, 5688, 5688, + 69, 69, 31, 31, -51, -51, -51, -78, 0, -43, + 0, 5688, 5688, 0, 636, 0, 617, 519, 0, 0, + 0, 0, 29, 0, 297, 242, 0, 663, 428, 479, + 431, -72, 569, 653, 0, 375, 0, 439, 5688, 0, + 5688, -17, 654, 663, 3671, 0, 5688, 0, 0, 0, + 572, 659, 0, 0, -36, 5688, 3916, 3916, 69, 69, + 69, 69, 601, 660, 0, 0, 92, 0, 0, -26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 662, + 575, 3009, 663, 0, 644, 0, 667, 672, 710, 622, + 605, 591, 0, 0, 5688, 0, 1505, 675, 597, 609, + -36, 623, 3671, 0, 5688, 0, 439, 0, 0, 5688, + 0, 5688, 0, 410, 5688, 716, 722, 541, 723, 706, + 707, 728, 729, 432, 0, 0, 0, 475, 149, 0, + 0, 0, 0, 0, 0, 0, 0, 731, 149, 714, + 515, 1481, 3052, 569, 0, 0, 0, 0, -36, 741, + 746, 734, 663, 733, 309, 0, 3165, 5688, 5688, 663, + 0, 435, 457, 0, 0, 5688, 5688, 739, 399, 0, + 0, 751, 451, 0, 774, 773, -55, -73, -73, 0, + 730, 0, -32, -100, 0, 0, 569, 0, 0, 0, + 0, 0, 697, 5688, 410, 701, 0, 766, 3192, 705, + 786, 787, 468, 3232, 3438, 5688, 432, 712, 0, 577, + 0, 517, 149, 509, 605, 149, 804, 773, 805, 149, + 0, 0, 663, 0, 0, 0, 190, 3671, 0, 663, + 5688, 541, 0, 5688, 512, 5688, 541, 732, 3671, 0, + 663, 605, 120, -15, 0, 0, 0, 773, 517, 517, + 815, 736, 0, 0, 0, 190, 0, 0, 737, 798, + 0, 3465, 0, 3493, 487, 37, 740, 0, 0, 5688, + 0, 663, 0, -15, -15, 517, 0, 819, 743, 0, + 0, 0, 0, 5688, 808, 541, 0, 0, 0, 0, + 744, 37, 0, 0, 3617, 745, 0, 0, -15, 120, + 663, 823, 0, 0, 541, 5688, 813, 0, 0, 0, + 0, 0, 0, -103, 747, 541, 0, 3644, 663, 120, + 844, 0, 0, 663, 0, 0, 763, 0, 663, 769, + 0, ); - protected static $yyRindex= array( 1755, - 0, 0, 924, 0, 0, 263, 1934, 0, 769, 0, + protected static $yyRindex= array( 1547, + 0, 0, 323, 0, 0, 312, 1704, 0, 892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -24, 109, 0, 0, 298, 0, 805, + 0, 0, 0, -33, 55, 0, 0, 158, 0, 982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 943, -84, 800, -84, 0, 0, 0, - 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 806, 0, - 0, 806, 834, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, - 0, 0, 0, -32, 0, 0, 0, 2529, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2048, 1927, 1001, - 890, 0, 0, 484, 1719, 0, 667, 0, 0, 0, - 0, 0, 0, 0, -41, 0, 891, -29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 689, 0, - 0, 0, 0, 0, 0, 0, 249, 823, 1154, 62, - 2119, 2227, 2750, 2312, 2349, 2450, 0, 0, 0, 0, - 0, 0, 1719, 5609, 1787, -13, 0, 1598, 0, 0, - -8, 0, 692, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 893, 0, 0, 0, + 0, 0, 0, 919, -91, 776, -91, 0, 0, 0, + 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 782, 0, + 0, 782, 817, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 99, 0, 0, 0, 2368, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2032, 1920, + 683, 856, 0, 0, 486, 1620, 0, 526, 0, 0, + 0, 0, 0, 0, 0, 101, 0, 857, -35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 655, + 0, 0, 0, 0, 0, 0, 0, 86, 796, 1016, + 111, 674, 2059, 2101, 2616, 2129, 2331, 2514, 0, 0, + 0, 0, 0, 0, 1620, 5624, 1647, -12, 0, 1495, + 0, 0, -19, 0, 684, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1898, 0, 1069, 0, 33, 0, 0, - 0, 0, 0, 909, 0, 0, 0, 0, 249, 0, - 861, 0, 0, 0, 0, 0, 0, 492, 0, 830, - 0, 0, 846, 0, 1719, 865, 866, 45, 891, 67, - 0, 0, 0, 1719, 0, -16, 0, 0, 0, 0, - 0, 764, 64, 66, 319, 511, 673, 1109, 1202, 1240, - 1451, 1459, 1579, 991, 0, 4768, 903, 4961, 0, 4977, - 0, 5004, 0, 0, 3085, 4451, 0, 0, 4510, 4539, - 4317, 4354, 4124, 4243, 4280, 2858, 0, 2558, 0, 867, - 891, 0, 1390, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 833, 0, 114, 0, 0, - 220, 0, 0, 0, 0, 5020, 891, 0, 838, 0, - 0, 833, 1727, 0, 0, 0, 0, 0, 0, 1488, - 0, 0, 1719, 0, 1729, 1826, 4578, 4747, 4784, 4838, + 0, 0, 0, 0, 0, 1799, 0, 1219, 0, 146, + 0, 0, 0, 0, 0, 901, 0, 0, 0, 0, + 86, 0, 1713, 0, 0, 0, 0, 0, 0, 41, + 0, 821, 0, 0, 867, 0, 1620, 874, 878, 339, + 857, 392, 0, 0, 0, 1620, 0, -24, 0, 0, + 0, 0, 0, 66, 78, 296, 429, 770, 775, 1085, + 1133, 1345, 1409, 2271, 2438, 1176, 0, 5003, 4982, 4768, + 0, 4813, 0, 4837, 0, 0, 4302, 4318, 0, 0, + 4345, 4560, 1877, 4136, 4082, 4110, 4178, 2753, 0, 2542, + 0, 854, 857, 0, 1316, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 845, 0, 85, + 0, 0, -10, 0, 0, 0, 0, 4861, 857, 0, + 848, 0, 0, 845, 754, 0, 0, 0, 0, 0, + 0, 1468, 0, 0, 1620, 0, 2445, 2571, 4576, 4603, + 4728, 4744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -109, 0, 0, 0, 0, 825, 0, 0, + 916, 0, 0, 0, 0, 0, 122, 0, 0, 0, + 1620, 0, 12, 0, 857, 0, 5028, 0, 0, 857, + 0, 920, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 943, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -108, 0, 0, 0, 0, 836, 0, 0, 906, 0, - 0, 0, 0, 0, 337, 0, 0, 0, 1719, 0, - 87, 0, 891, 0, 5046, 0, 0, 891, 0, 908, + 0, 86, 0, 1075, 0, 0, 0, 0, 1620, 0, + 0, 0, 845, 421, 0, 0, 0, 929, 0, 845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 927, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, - 0, 1332, 0, 0, 0, 0, 1719, 0, 0, 0, - 833, 414, 0, 0, 0, 911, 0, 833, 0, 0, + 0, 0, 243, 0, 0, 948, 0, 949, 949, 0, + 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 178, 0, 0, 930, 0, 931, 931, 0, 0, 0, - 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 613, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 0, 0, 178, 0, 0, 932, 0, 927, 0, 0, - 833, 0, 0, 0, 0, 454, 0, 833, 911, 0, - 0, 0, 0, 0, 0, 0, 473, 0, 833, 178, - 0, 0, 0, 0, 0, 933, 13, 13, 0, 0, - 0, 0, 0, 285, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 853, 0, 0, 0, 0, 0, 833, - 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, - 0, 891, 0, 0, 0, 0, 0, 0, 0, 854, - 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -105, 0, 0, 0, - 0, -105, 0, 0, 0, 0, 833, 0, 0, + 0, 627, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 133, 0, 0, 243, 0, 0, 951, 0, 943, + 0, 0, 845, 0, 0, 0, 0, 434, 0, 845, + 929, 0, 0, 0, 0, 0, 0, 0, 480, 0, + 845, 243, 0, 0, 0, 0, 0, 952, 133, 133, + 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, + 0, 0, 0, 0, 418, 869, 0, 0, 0, 0, + 0, 845, 0, 0, 0, 133, 0, 0, 0, 0, + 0, 0, 0, 857, 0, 0, 0, 0, 0, 0, + 0, 871, 0, 0, 0, 0, 0, 0, 0, 0, + 845, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -92, 0, + 0, 0, 0, -92, 0, 0, 0, 0, 845, 0, + 0, ); protected static $yyGindex= array(0, - 0, 0, 0, -4, 0, 0, 975, 661, 633, 425, - 983, -60, 0, 914, 892, -161, 0, 0, 0, 0, - -116, -407, 0, 0, 0, 53, 0, 638, 0, 0, - 83, -21, -356, 0, 0, -63, -412, 491, 501, 0, - -79, -256, 0, 457, 0, 0, 0, 0, 939, 941, - 0, 586, 0, 898, -150, -64, -104, 0, 682, -198, - 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 495, 485, - 0, 399, 0, 0, 0, 0, 0, 437, 438, 0, - 0, 0, 0, 0, 826, 829, 658, 0, 312, 0, - -180, 0, 816, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 729, 0, 0, 0, 772, 0, 778, - 0, 0, 0, 0, 0, 0, 0, 851, 856, 0, - 994, + 0, 0, 0, -4, 0, 0, 990, 528, 571, 91, + 992, -60, 0, 922, 898, -130, 0, 0, 0, 0, + -117, -419, 0, 0, 0, 2227, 0, 645, 0, 0, + 83, 2951, -283, 0, 0, -63, -355, 503, 521, 0, + -113, -128, 0, 482, 0, 0, 0, 0, 974, 977, + 0, 450, 0, 899, -104, -150, 221, 0, 415, -209, + 0, 0, -475, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 522, 511, + 0, 427, 0, 0, 0, 0, 0, 465, 470, 0, + 0, 0, 0, 0, 858, 859, 687, 0, 231, 0, + -28, 0, 847, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 760, 0, 0, 0, 806, 0, 809, + 0, 0, 0, 0, 0, 0, 0, 889, 895, 0, + 1036, ); protected static $yyTable = array(11, - 75, 76, 77, 222, 234, 174, 249, 93, 97, 241, - 50, 222, 283, 259, 222, 240, 110, 638, 52, 109, - 1, 16, 589, 104, 57, 540, 314, 57, 432, 47, - 48, 542, 217, 171, 13, 57, 199, 121, 26, 124, - 231, 93, 93, 129, 499, 229, 227, 334, 228, 300, - 230, 233, 458, 285, 506, 234, 74, 74, 74, 260, - 238, 124, 231, 220, 81, 82, 92, 229, 227, 5, - 228, 101, 230, 12, 12, 115, 236, 300, 171, 74, - 34, 171, 161, 233, 83, 223, 590, 225, 238, 541, - 314, 169, 74, 74, 358, 74, 13, 544, 199, 14, - 92, 92, 200, 364, 210, 200, 240, 210, 74, 240, - 239, 431, 384, 15, 15, 124, 55, 74, 563, 219, - 200, 210, 210, 240, 240, 236, 273, 58, 361, 234, - 58, 381, 329, 454, 529, 101, 196, 238, 452, 450, - 171, 451, 10, 453, 251, 58, 254, 370, 17, 218, - 115, 234, 17, 34, 200, 354, 210, 236, 240, 239, - 250, 74, 162, 74, 36, 274, 501, 74, 105, 238, - 355, 74, 327, 17, 386, 342, 565, 16, 16, 58, - 382, 9, 74, 199, 528, 144, 200, 371, 210, 35, - 240, 239, 424, 415, 59, 231, 56, 112, 74, 365, - 229, 17, 406, 586, 17, 230, 416, 10, 417, 237, - 180, 429, 181, 182, 183, 184, 185, 186, 57, 188, - 588, 57, 455, 197, 314, 171, 26, 372, 74, 113, - 341, 470, 74, 639, 344, 171, 12, 340, 465, 144, - 57, 233, 350, 60, 234, 335, 336, 74, 217, 460, - 39, 74, 40, 158, 86, 87, 88, 89, 90, 74, - 237, 171, 407, 32, 110, 110, 51, 109, 109, 101, - 57, 278, 468, 280, 408, 532, 15, 469, 32, 10, - 235, 236, 409, 74, 234, 533, 507, 292, 293, 294, + 75, 76, 77, 243, 175, 223, 223, 93, 223, 242, + 97, 52, 16, 434, 50, 110, 57, 112, 172, 57, + 640, 218, 12, 104, 544, 13, 542, 1, 112, 47, + 48, 26, 109, 32, 34, 57, 59, 121, 336, 124, + 130, 93, 93, 591, 508, 261, 69, 236, 32, 113, + 301, 372, 58, 251, 240, 58, 74, 74, 74, 262, + 113, 124, 15, 233, 81, 82, 92, 233, 231, 229, + 58, 230, 231, 232, 236, 162, 581, 232, 301, 74, + 46, 585, 236, 344, 44, 60, 225, 546, 227, 5, + 543, 373, 74, 74, 17, 74, 433, 169, 17, 44, + 92, 92, 164, 501, 58, 233, 210, 592, 74, 210, + 231, 229, 55, 230, 32, 232, 124, 74, 211, 172, + 168, 211, 383, 210, 210, 173, 16, 460, 275, 54, + 624, 374, 431, 172, 34, 211, 211, 198, 10, 65, + 54, 54, 91, 174, 17, 337, 338, 17, 112, 637, + 40, 200, 236, 386, 200, 163, 236, 315, 210, 503, + 643, 252, 74, 44, 74, 44, 285, 70, 74, 200, + 211, 111, 74, 233, 329, 17, 363, 565, 231, 229, + 113, 230, 172, 232, 74, 145, 9, 408, 307, 237, + 210, 101, 56, 234, 236, 112, 225, 9, 227, 112, + 74, 71, 211, 200, 110, 35, 307, 109, 317, 531, + 181, 182, 10, 183, 184, 185, 186, 187, 188, 26, + 190, 315, 472, 10, 199, 234, 417, 113, 384, 12, + 74, 113, 57, 235, 74, 200, 641, 218, 237, 112, + 145, 590, 337, 338, 317, 36, 39, 409, 360, 74, + 71, 567, 239, 74, 418, 101, 419, 366, 536, 410, + 235, 74, 236, 110, 110, 39, 493, 411, 58, 15, + 237, 113, 51, 280, 534, 282, 68, 291, 588, 239, + 109, 109, 462, 57, 535, 74, 57, 239, 71, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 306, 307, 308, 310, 312, 315, 316, 319, 320, 321, - 322, 323, 324, 325, 326, 233, 328, 168, 200, 168, - 210, 385, 240, 70, 168, 516, 300, 168, 304, 168, - 172, 235, 236, 112, 237, 615, 616, 233, 74, 84, - 16, 71, 68, 58, 32, 231, 220, 163, 173, 306, - 229, 227, 34, 228, 356, 230, 237, 71, 204, 241, - 630, 144, 241, 363, 69, 113, 348, 306, 223, 78, - 225, 316, 17, 17, 49, 168, 241, 241, 231, 220, - 17, 79, 490, 229, 227, 16, 228, 91, 230, 239, - 71, 375, 10, 376, 110, 377, 378, 109, 578, 379, - 380, 223, 219, 225, 514, 235, 236, 513, 97, 168, - 168, 241, 304, 144, 420, 526, 190, 83, 525, 80, - 168, 253, 34, 404, 232, 226, 224, 235, 236, 34, - 233, 536, 536, 17, 234, 98, 221, 222, 349, 144, - 100, 144, 74, 241, 587, 17, 232, 421, 157, 237, - 157, 620, 74, 17, 140, 157, 425, 140, 157, 316, - 157, 39, 106, 54, 107, 111, 108, 234, 122, 566, - 233, 112, 112, 65, 54, 54, 231, 210, 210, 240, - 240, 229, 227, 157, 228, 126, 230, 592, 593, 237, - 112, 74, 74, 112, 141, 461, 165, 141, 166, 223, - 124, 225, 9, 113, 113, 144, 157, 171, 316, 175, - 144, 176, 304, 144, 617, 475, 144, 43, 44, 45, - 235, 236, 113, 511, 174, 113, 74, 174, 10, 74, - 518, 46, 178, 74, 316, 44, 191, 190, 204, 232, - 157, 157, 174, 34, 168, 168, 168, 168, 168, 168, - 44, 242, 203, 112, 242, 189, 74, 631, 144, 517, - 235, 236, 316, 316, 316, 234, 522, 523, 242, 242, - 168, 132, 246, 142, 534, 241, 174, 644, 141, 232, - 316, 130, 491, 131, 248, 113, 489, 86, 87, 88, - 89, 90, 247, 570, 546, 105, 316, 168, 367, 252, - 577, 369, 256, 242, 257, 132, 557, 142, 174, 335, - 336, 585, 141, 74, 44, 130, 44, 131, 571, 572, - 233, 268, 316, 281, 168, 168, 168, 168, 286, 83, - 168, 144, 287, 74, 580, 242, 582, 607, 608, 237, - 9, 9, 614, 288, 168, 168, 168, 168, 339, 168, - 168, 168, 343, 233, 168, 168, 168, 168, 168, 9, - 346, 478, 9, 83, 133, 347, 10, 10, 316, 333, - 613, 633, 237, 37, 38, 157, 157, 157, 157, 157, - 157, 64, 66, 67, 144, 10, 168, 168, 10, 643, - 159, 160, 353, 357, 646, 579, 359, 360, 133, 648, - 583, 157, 365, 168, 374, 383, 636, 173, 226, 224, - 235, 236, 189, 243, 168, 403, 243, 405, 411, 221, - 222, 289, 9, 413, 423, 173, 167, 419, 157, 232, - 243, 243, 241, 241, 422, 426, 427, 442, 443, 491, - 446, 226, 224, 235, 236, 448, 449, 457, 10, 622, - 459, 233, 221, 222, 112, 157, 157, 157, 157, 173, - 462, 157, 232, 463, 464, 243, 472, 242, 635, 466, - 237, 476, 477, 481, 482, 157, 157, 157, 157, 641, - 157, 157, 157, 483, 484, 157, 113, 157, 157, 157, - 485, 173, 486, 500, 498, 501, 508, 243, 179, 86, - 87, 88, 89, 90, 209, 17, 17, 209, 17, 17, - 17, 17, 17, 17, 509, 17, 510, 157, 157, 512, - 519, 209, 209, 524, 10, 520, 17, 17, 17, 17, - 17, 17, 179, 86, 87, 88, 89, 90, 527, 226, - 224, 235, 236, 530, 317, 157, 545, 531, 548, 539, - 549, 137, 551, 552, 553, 564, 209, 554, 10, 17, - 232, 17, 17, 559, 231, 560, 561, 567, 584, 229, - 227, 568, 228, 581, 230, 594, 317, 595, 140, 387, - 388, 389, 602, 605, 136, 137, 601, 223, 209, 225, - 612, 17, 17, 17, 17, 316, 618, 619, 390, 391, - 392, 393, 83, 394, 395, 128, 621, 626, 396, 629, - 397, 634, 140, 387, 388, 389, 637, 640, 136, 645, - 647, 649, 30, 9, 242, 242, 172, 316, 28, 243, - 216, 172, 390, 391, 392, 393, 296, 394, 395, 128, - 134, 135, 396, 268, 397, 309, 268, 41, 216, 10, - 176, 324, 309, 234, 40, 297, 298, 109, 51, 176, - 268, 268, 172, 268, 57, 268, 176, 91, 398, 172, - 92, 88, 90, 89, 134, 135, 145, 147, 148, 300, - 300, 33, 300, 300, 300, 300, 300, 300, 29, 300, - 102, 414, 543, 127, 569, 268, 268, 537, 73, 72, - 300, 300, 398, 300, 300, 300, 164, 547, 627, 558, - 599, 600, 276, 317, 5, 277, 368, 418, 290, 337, - 209, 332, 258, 255, 46, 17, 268, 268, 17, 0, - 0, 177, 0, 300, 177, 300, 300, 187, 187, 317, - 187, 187, 187, 187, 187, 187, 187, 187, 177, 177, - 0, 0, 0, 317, 317, 317, 0, 0, 187, 187, - 187, 187, 187, 187, 316, 300, 300, 300, 300, 0, - 0, 85, 86, 87, 88, 89, 90, 0, 17, 17, - 17, 0, 445, 177, 0, 317, 243, 243, 17, 0, - 316, 187, 0, 187, 187, 0, 0, 10, 17, 17, - 17, 0, 0, 0, 316, 316, 316, 0, 17, 176, - 0, 91, 176, 0, 0, 177, 0, 479, 0, 0, - 324, 0, 0, 0, 187, 187, 187, 176, 20, 21, - 22, 23, 24, 25, 0, 26, 316, 0, 0, 233, - 324, 324, 324, 324, 324, 324, 324, 324, 0, 244, - 0, 27, 244, 0, 0, 0, 0, 84, 237, 268, - 0, 176, 0, 324, 0, 0, 244, 244, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 209, 17, 17, - 17, 0, 17, 17, 17, 17, 17, 17, 0, 17, - 222, 222, 324, 176, 222, 222, 222, 222, 222, 300, - 222, 244, 300, 5, 5, 5, 5, 5, 5, 0, - 5, 222, 222, 17, 222, 222, 17, 0, 0, 0, - 0, 0, 0, 5, 5, 5, 5, 226, 224, 235, - 236, 479, 0, 244, 0, 0, 479, 0, 221, 222, - 0, 0, 246, 0, 17, 246, 222, 222, 232, 0, - 0, 0, 300, 300, 300, 0, 0, 185, 0, 246, - 246, 0, 300, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 300, 300, 300, 0, 0, 222, 222, 222, - 245, 0, 300, 245, 0, 479, 0, 0, 0, 0, - 0, 0, 0, 0, 246, 0, 0, 245, 245, 0, - 0, 0, 0, 0, 479, 0, 268, 268, 268, 268, - 268, 0, 187, 0, 0, 479, 268, 268, 268, 268, - 268, 268, 0, 0, 0, 0, 246, 0, 0, 0, - 0, 187, 245, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 0, 0, 300, 300, 0, 300, 300, 300, 300, - 300, 300, 0, 300, 245, 244, 0, 0, 32, 32, - 0, 32, 32, 32, 32, 32, 32, 32, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, - 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 19, - 222, 187, 187, 0, 187, 187, 187, 187, 187, 187, - 187, 187, 32, 0, 32, 32, 286, 286, 0, 0, - 286, 286, 286, 286, 286, 286, 286, 19, 0, 0, - 0, 0, 0, 263, 0, 0, 0, 286, 286, 286, - 286, 286, 286, 0, 0, 32, 32, 32, 246, 0, - 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, - 0, 345, 0, 0, 0, 0, 19, 0, 0, 0, - 286, 0, 286, 286, 222, 19, 0, 0, 0, 0, - 0, 247, 0, 17, 247, 0, 245, 0, 0, 248, - 0, 0, 248, 0, 0, 0, 0, 0, 247, 247, - 504, 0, 0, 286, 286, 286, 248, 248, 0, 0, - 0, 0, 244, 244, 183, 183, 0, 0, 183, 183, + 305, 306, 308, 309, 310, 312, 314, 317, 318, 321, + 322, 323, 324, 325, 326, 327, 328, 9, 330, 168, + 470, 168, 210, 237, 238, 471, 168, 301, 78, 168, + 306, 168, 172, 16, 211, 57, 241, 335, 235, 241, + 74, 79, 235, 10, 17, 317, 426, 538, 538, 516, + 237, 238, 515, 241, 241, 315, 358, 239, 237, 238, + 206, 239, 201, 145, 350, 365, 388, 200, 9, 234, + 97, 317, 287, 518, 17, 17, 16, 168, 49, 9, + 235, 317, 239, 241, 492, 568, 80, 112, 241, 101, + 10, 34, 467, 377, 10, 378, 106, 379, 380, 239, + 172, 381, 382, 356, 17, 10, 105, 317, 9, 609, + 610, 168, 168, 5, 306, 145, 17, 317, 357, 113, + 241, 83, 169, 255, 17, 201, 228, 226, 237, 238, + 98, 239, 237, 238, 10, 240, 351, 223, 224, 528, + 509, 145, 527, 145, 74, 589, 580, 234, 235, 423, + 157, 234, 157, 317, 74, 594, 595, 157, 427, 331, + 157, 140, 157, 239, 140, 617, 618, 239, 100, 242, + 237, 238, 242, 112, 141, 233, 222, 141, 108, 210, + 231, 229, 619, 230, 240, 232, 242, 242, 493, 234, + 632, 211, 211, 74, 74, 192, 530, 463, 225, 622, + 227, 34, 124, 192, 172, 113, 342, 145, 157, 34, + 201, 367, 145, 191, 306, 107, 240, 477, 406, 369, + 144, 242, 371, 144, 34, 122, 174, 126, 74, 174, + 158, 74, 221, 573, 574, 74, 228, 226, 237, 238, + 37, 38, 157, 157, 174, 166, 168, 168, 168, 168, + 168, 168, 241, 242, 160, 161, 9, 234, 74, 633, + 145, 519, 220, 167, 236, 83, 173, 172, 524, 525, + 176, 179, 168, 133, 177, 143, 193, 205, 174, 646, + 142, 206, 10, 131, 173, 132, 248, 43, 44, 45, + 85, 86, 87, 88, 89, 90, 548, 249, 250, 168, + 105, 254, 5, 5, 5, 5, 5, 5, 559, 5, + 174, 317, 317, 317, 258, 74, 10, 259, 173, 64, + 66, 67, 5, 5, 5, 5, 168, 168, 168, 168, + 91, 83, 168, 145, 270, 74, 582, 283, 584, 288, + 289, 290, 9, 341, 12, 345, 168, 168, 168, 168, + 173, 168, 168, 168, 168, 348, 168, 168, 168, 168, + 168, 349, 355, 480, 359, 367, 134, 13, 10, 361, + 14, 362, 615, 376, 191, 385, 84, 157, 157, 157, + 157, 157, 157, 19, 15, 242, 145, 405, 168, 168, + 407, 413, 415, 428, 421, 133, 424, 143, 425, 445, + 429, 444, 142, 157, 448, 131, 450, 132, 638, 241, + 241, 451, 459, 461, 202, 464, 168, 202, 83, 187, + 187, 465, 187, 187, 187, 187, 187, 187, 187, 187, + 157, 202, 202, 466, 491, 86, 87, 88, 89, 90, + 187, 187, 187, 187, 187, 187, 456, 468, 16, 474, + 235, 454, 452, 83, 453, 478, 455, 157, 157, 157, + 157, 479, 483, 157, 484, 485, 202, 486, 487, 239, + 500, 488, 502, 187, 503, 187, 187, 157, 157, 157, + 157, 510, 157, 157, 157, 157, 511, 157, 134, 157, + 157, 157, 512, 514, 215, 521, 522, 215, 202, 526, + 180, 86, 87, 88, 89, 90, 187, 187, 187, 529, + 243, 215, 215, 243, 532, 244, 533, 447, 244, 157, + 157, 547, 541, 550, 551, 554, 10, 243, 243, 553, + 555, 556, 244, 244, 561, 457, 562, 563, 228, 226, + 237, 238, 242, 242, 569, 570, 215, 157, 566, 223, + 224, 583, 481, 138, 586, 596, 604, 607, 620, 234, + 597, 603, 243, 636, 614, 621, 623, 244, 628, 631, + 639, 642, 20, 21, 22, 23, 24, 25, 215, 26, + 141, 389, 390, 391, 647, 649, 137, 159, 86, 87, + 88, 89, 90, 651, 243, 27, 217, 172, 30, 244, + 392, 393, 394, 395, 28, 396, 397, 128, 129, 172, + 398, 310, 399, 10, 20, 21, 22, 23, 24, 25, + 41, 26, 180, 86, 87, 88, 89, 90, 17, 17, + 202, 17, 17, 17, 17, 17, 17, 27, 17, 185, + 217, 176, 135, 136, 310, 40, 176, 51, 10, 17, + 17, 17, 17, 17, 17, 301, 301, 297, 301, 301, + 301, 301, 301, 301, 298, 301, 481, 19, 299, 109, + 400, 481, 172, 84, 57, 138, 301, 301, 176, 301, + 301, 301, 17, 91, 17, 17, 318, 172, 92, 88, + 145, 90, 89, 147, 187, 148, 33, 29, 102, 127, + 416, 265, 141, 389, 390, 391, 545, 165, 137, 301, + 215, 301, 301, 187, 17, 17, 17, 17, 318, 539, + 481, 571, 392, 393, 394, 395, 243, 396, 397, 128, + 129, 244, 398, 73, 399, 72, 549, 560, 629, 481, + 601, 301, 301, 301, 301, 602, 278, 279, 420, 370, + 481, 292, 223, 223, 334, 339, 223, 223, 223, 223, + 223, 260, 223, 257, 135, 136, 46, 0, 0, 0, + 0, 0, 317, 223, 223, 17, 223, 223, 17, 0, + 0, 0, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 0, 400, 187, 187, 0, 187, 187, 187, 187, + 187, 187, 187, 187, 317, 0, 17, 0, 223, 223, + 0, 32, 32, 0, 32, 32, 32, 32, 32, 32, + 32, 32, 0, 0, 0, 245, 0, 0, 245, 0, + 0, 0, 32, 32, 32, 32, 32, 32, 0, 223, + 223, 223, 245, 245, 0, 0, 0, 0, 17, 0, + 0, 17, 0, 0, 0, 318, 20, 21, 22, 263, + 24, 25, 0, 26, 0, 32, 0, 32, 32, 0, + 0, 0, 0, 247, 0, 301, 247, 245, 301, 27, + 0, 318, 0, 243, 243, 0, 0, 0, 244, 244, + 247, 247, 0, 0, 0, 318, 318, 318, 32, 32, + 32, 17, 17, 17, 0, 0, 0, 0, 0, 245, + 264, 17, 0, 0, 0, 0, 177, 0, 0, 177, + 0, 17, 17, 17, 0, 247, 0, 318, 301, 301, + 301, 17, 0, 177, 177, 0, 0, 0, 301, 0, + 0, 317, 0, 0, 0, 0, 0, 0, 301, 301, + 301, 0, 0, 0, 0, 0, 0, 247, 301, 176, + 0, 0, 176, 0, 0, 233, 222, 317, 177, 0, + 231, 229, 223, 230, 0, 232, 0, 176, 0, 0, + 0, 317, 317, 317, 0, 0, 0, 0, 225, 0, + 227, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 177, 17, 17, 17, 0, 17, 17, 17, 17, 17, + 17, 176, 17, 317, 0, 0, 0, 0, 301, 301, + 301, 301, 301, 301, 301, 301, 301, 223, 0, 301, + 301, 32, 301, 301, 301, 301, 301, 301, 0, 301, + 0, 245, 0, 176, 0, 0, 223, 0, 0, 0, + 0, 0, 287, 287, 236, 17, 287, 287, 287, 287, + 287, 287, 287, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 287, 287, 287, 287, 287, 287, 0, + 0, 0, 0, 0, 0, 246, 32, 0, 246, 247, + 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 246, 246, 0, 32, 287, 0, 287, 287, + 0, 0, 0, 0, 0, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 347, 17, 223, 223, 0, 223, + 223, 223, 223, 223, 223, 223, 223, 246, 0, 287, + 287, 287, 0, 0, 0, 0, 0, 0, 0, 248, + 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 248, 0, 246, + 0, 0, 0, 0, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 0, 0, 32, 32, 0, 32, 32, + 32, 32, 32, 32, 32, 32, 0, 0, 245, 245, + 0, 248, 0, 0, 183, 183, 0, 0, 183, 183, 183, 183, 183, 183, 183, 0, 0, 0, 0, 0, - 0, 0, 0, 247, 0, 183, 183, 183, 183, 183, - 183, 248, 0, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 0, 17, 222, 222, 0, 222, 222, 222, - 222, 222, 222, 222, 222, 247, 0, 0, 183, 0, - 183, 183, 0, 248, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, - 22, 261, 24, 25, 0, 26, 0, 0, 0, 0, - 0, 183, 183, 183, 0, 246, 246, 0, 0, 249, - 0, 27, 249, 0, 0, 0, 20, 21, 22, 261, - 24, 25, 0, 26, 99, 99, 249, 249, 99, 99, - 99, 99, 99, 32, 99, 0, 286, 0, 0, 27, - 0, 0, 262, 245, 245, 99, 99, 99, 99, 99, - 0, 0, 32, 0, 0, 20, 21, 22, 261, 24, - 25, 249, 26, 0, 20, 21, 22, 261, 24, 25, - 262, 26, 0, 0, 0, 0, 0, 0, 27, 0, - 99, 99, 0, 0, 0, 0, 0, 27, 0, 0, - 0, 286, 0, 249, 0, 0, 0, 247, 0, 0, - 0, 0, 0, 0, 0, 248, 0, 0, 0, 262, - 286, 99, 99, 99, 0, 0, 0, 0, 262, 0, - 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 0, 0, 32, 32, 183, 32, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 280, 280, 0, 0, 280, - 280, 280, 280, 280, 0, 280, 0, 214, 0, 258, - 214, 0, 258, 0, 0, 0, 280, 280, 280, 280, - 280, 280, 0, 0, 214, 214, 258, 258, 0, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 0, 183, - 286, 286, 0, 286, 286, 286, 286, 286, 286, 286, - 286, 280, 280, 0, 0, 0, 0, 0, 183, 214, - 0, 258, 0, 187, 187, 0, 187, 187, 187, 187, - 220, 187, 187, 187, 0, 249, 0, 0, 0, 0, - 0, 0, 280, 280, 280, 2, 187, 187, 187, 187, - 0, 214, 0, 258, 99, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 247, 247, 259, 0, 0, 259, - 0, 19, 248, 248, 0, 0, 0, 187, 0, 0, - 187, 0, 0, 259, 259, 0, 0, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 0, 0, 183, 183, - 0, 183, 183, 183, 183, 183, 183, 183, 183, 99, - 187, 0, 187, 0, 0, 0, 0, 0, 259, 0, - 0, 0, 0, 0, 0, 0, 0, 99, 99, 0, - 0, 0, 0, 0, 282, 282, 0, 99, 282, 282, - 282, 282, 282, 0, 282, 0, 0, 0, 0, 0, - 259, 0, 0, 0, 0, 282, 282, 282, 282, 282, - 282, 0, 0, 229, 229, 0, 229, 0, 229, 229, - 229, 229, 229, 229, 0, 280, 0, 0, 0, 0, - 0, 0, 0, 214, 0, 258, 229, 229, 229, 229, - 282, 282, 249, 249, 0, 0, 0, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 0, 0, 99, 99, - 0, 99, 99, 99, 99, 99, 99, 229, 99, 229, - 229, 282, 282, 282, 6, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 2, 2, 2, 2, 2, 2, - 0, 2, 0, 185, 0, 0, 0, 0, 0, 280, - 229, 0, 229, 0, 2, 2, 2, 0, 2, 0, - 20, 21, 22, 23, 24, 25, 0, 26, 0, 0, + 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, + 183, 99, 99, 248, 0, 99, 99, 99, 99, 99, + 235, 99, 0, 0, 0, 0, 247, 247, 0, 0, + 0, 0, 99, 99, 99, 99, 99, 0, 183, 239, + 183, 183, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 19, 287, 0, 0, 0, 0, 0, 0, 20, + 21, 22, 263, 24, 25, 0, 26, 99, 99, 0, + 0, 183, 183, 183, 0, 19, 0, 0, 0, 0, + 0, 246, 27, 0, 0, 506, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 99, + 99, 0, 0, 0, 0, 0, 0, 287, 228, 226, + 237, 238, 0, 264, 0, 0, 0, 2, 0, 223, + 224, 0, 0, 0, 0, 0, 287, 0, 0, 234, + 0, 0, 0, 0, 0, 0, 281, 281, 0, 0, + 281, 281, 281, 281, 281, 248, 281, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 281, 281, 281, + 281, 281, 281, 187, 187, 0, 187, 187, 187, 187, + 221, 187, 187, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 187, 187, 187, 187, + 0, 0, 281, 281, 0, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 183, 0, 287, 287, 0, 287, + 287, 287, 287, 287, 287, 287, 287, 187, 0, 0, + 187, 0, 0, 281, 281, 281, 0, 0, 0, 0, + 0, 99, 0, 0, 0, 0, 0, 0, 246, 246, + 20, 21, 22, 263, 24, 25, 0, 26, 0, 0, + 187, 0, 187, 0, 0, 0, 0, 0, 0, 183, + 0, 0, 0, 27, 20, 21, 22, 263, 24, 25, + 0, 26, 0, 0, 6, 0, 0, 0, 183, 0, + 0, 0, 0, 325, 0, 0, 99, 27, 0, 0, + 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, + 0, 0, 248, 248, 99, 99, 2, 2, 2, 2, + 2, 2, 0, 2, 99, 283, 283, 0, 264, 283, + 283, 283, 283, 283, 0, 283, 2, 2, 2, 0, + 2, 0, 0, 0, 0, 0, 283, 283, 283, 283, + 283, 283, 0, 0, 0, 0, 0, 183, 183, 183, + 183, 183, 183, 183, 183, 183, 281, 0, 183, 183, + 0, 183, 183, 183, 183, 183, 183, 183, 183, 0, + 0, 283, 283, 0, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 185, 0, 99, 99, 0, 99, 99, + 99, 99, 99, 99, 261, 99, 0, 261, 0, 261, + 261, 261, 283, 283, 283, 0, 0, 0, 0, 0, + 0, 281, 0, 0, 261, 261, 261, 261, 261, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 259, 27, 222, 222, 0, 0, 0, 222, - 222, 222, 222, 0, 222, 0, 0, 0, 187, 0, - 0, 0, 0, 0, 0, 0, 0, 222, 222, 222, - 222, 0, 0, 0, 0, 0, 0, 187, 280, 280, - 280, 280, 280, 280, 280, 280, 280, 0, 0, 280, - 280, 0, 280, 280, 280, 280, 280, 280, 222, 280, - 222, 222, 258, 258, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 282, 274, 274, 0, 0, 274, - 274, 274, 274, 274, 0, 274, 0, 0, 0, 0, - 0, 222, 0, 222, 0, 0, 274, 274, 274, 274, - 274, 274, 0, 0, 0, 0, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 0, 0, 187, 187, 0, - 187, 187, 187, 187, 187, 187, 187, 187, 0, 282, - 0, 274, 274, 6, 6, 6, 6, 6, 6, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 282, 0, - 0, 0, 0, 6, 6, 6, 6, 0, 229, 259, - 259, 0, 274, 274, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, - 0, 0, 0, 275, 275, 0, 0, 275, 275, 275, - 275, 275, 0, 275, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 275, 275, 275, 275, 275, 275, - 0, 0, 0, 0, 0, 0, 0, 282, 282, 282, - 282, 282, 282, 282, 282, 282, 0, 0, 282, 282, - 0, 282, 282, 282, 282, 282, 282, 0, 282, 275, - 275, 0, 0, 0, 0, 0, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 0, 0, 229, 229, 0, - 229, 229, 229, 229, 229, 229, 229, 229, 273, 273, - 275, 275, 273, 273, 273, 273, 273, 0, 273, 222, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, - 273, 273, 273, 273, 273, 274, 0, 0, 222, 0, - 0, 0, 0, 0, 0, 276, 276, 0, 0, 276, - 276, 276, 276, 276, 0, 276, 0, 0, 0, 0, - 0, 0, 0, 0, 273, 273, 276, 276, 276, 276, - 276, 276, 0, 0, 0, 0, 0, 0, 0, 0, + 281, 0, 0, 0, 0, 0, 230, 230, 187, 230, + 0, 230, 230, 230, 230, 230, 230, 0, 0, 261, + 261, 0, 325, 0, 0, 0, 0, 187, 0, 230, + 230, 230, 230, 6, 6, 6, 6, 6, 6, 0, + 6, 0, 325, 325, 325, 325, 325, 325, 325, 325, + 261, 261, 0, 6, 6, 6, 6, 0, 0, 0, + 230, 0, 230, 230, 0, 325, 0, 0, 0, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 0, 0, + 281, 281, 0, 281, 281, 281, 281, 281, 281, 0, + 281, 0, 0, 230, 325, 230, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 283, 0, 187, 187, 0, + 187, 187, 187, 187, 187, 187, 187, 187, 223, 223, + 0, 0, 0, 223, 223, 223, 223, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 274, 0, 0, 0, 0, 273, 273, 0, 0, 0, - 0, 276, 276, 0, 0, 0, 0, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 0, 17, 222, 222, - 0, 222, 222, 222, 222, 222, 222, 222, 222, 0, - 0, 0, 276, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 275, 0, 0, 277, 277, 0, 0, - 277, 277, 277, 277, 277, 0, 277, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 277, 277, 277, - 277, 277, 277, 0, 0, 0, 0, 0, 274, 274, - 0, 0, 274, 274, 274, 274, 274, 0, 0, 274, - 274, 0, 274, 274, 274, 274, 274, 274, 275, 274, - 0, 0, 277, 277, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 199, 199, 0, 273, 199, - 199, 0, 199, 277, 277, 199, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 199, 199, 199, 199, - 199, 199, 0, 0, 265, 265, 0, 0, 265, 265, - 265, 265, 265, 0, 265, 276, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 265, 265, 265, 265, 265, - 265, 199, 199, 273, 0, 0, 275, 275, 0, 0, - 275, 275, 275, 275, 275, 0, 0, 275, 275, 0, - 275, 275, 275, 275, 275, 275, 0, 275, 0, 0, - 265, 265, 199, 199, 0, 0, 0, 0, 0, 0, - 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 223, 223, 223, 223, 275, 275, 0, 0, 275, + 275, 275, 275, 275, 0, 275, 0, 0, 0, 0, + 283, 0, 0, 0, 0, 0, 275, 275, 275, 275, + 275, 275, 223, 0, 223, 223, 0, 0, 0, 283, + 0, 0, 0, 261, 0, 0, 0, 276, 276, 0, + 0, 276, 276, 276, 276, 276, 0, 276, 0, 0, + 0, 275, 275, 0, 0, 223, 0, 223, 276, 276, + 276, 276, 276, 276, 0, 274, 274, 0, 0, 274, + 274, 274, 274, 274, 0, 274, 0, 0, 0, 0, + 0, 0, 275, 275, 0, 0, 274, 274, 274, 274, + 274, 274, 0, 276, 276, 0, 0, 0, 283, 283, + 283, 283, 283, 283, 283, 283, 283, 0, 0, 283, + 283, 0, 283, 283, 283, 283, 283, 283, 0, 283, + 0, 274, 274, 0, 276, 276, 0, 0, 0, 0, + 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 265, 0, 0, 0, 0, 0, 0, 0, + 230, 0, 274, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 277, 0, 0, 0, - 0, 273, 273, 0, 0, 273, 273, 273, 273, 273, - 0, 0, 273, 273, 0, 273, 273, 273, 273, 273, - 273, 0, 273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 276, 276, - 0, 0, 276, 276, 276, 276, 276, 0, 0, 276, - 276, 277, 276, 276, 276, 276, 276, 276, 0, 276, + 0, 0, 0, 0, 0, 0, 261, 261, 0, 0, + 261, 261, 261, 261, 261, 0, 0, 261, 261, 0, + 261, 261, 261, 261, 261, 261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 199, 272, 272, 0, 0, - 272, 272, 272, 272, 272, 0, 272, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 272, 272, 272, - 272, 272, 272, 0, 265, 0, 0, 0, 0, 0, - 0, 231, 220, 0, 0, 284, 229, 227, 0, 228, - 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, - 199, 0, 272, 272, 223, 207, 225, 217, 0, 277, - 277, 0, 0, 277, 277, 277, 277, 277, 0, 199, - 277, 277, 0, 277, 277, 277, 277, 277, 277, 265, - 277, 0, 0, 272, 272, 0, 0, 0, 219, 0, + 0, 249, 0, 0, 249, 275, 0, 0, 0, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 249, 249, + 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, + 230, 0, 0, 223, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 276, 0, 0, + 0, 0, 223, 249, 0, 0, 0, 277, 277, 0, + 275, 277, 277, 277, 277, 277, 0, 277, 0, 0, + 0, 0, 0, 0, 0, 274, 0, 0, 277, 277, + 277, 277, 277, 277, 0, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 199, 199, 0, 0, 199, 199, + 0, 199, 276, 0, 199, 0, 0, 0, 0, 0, + 0, 0, 0, 277, 277, 199, 199, 199, 199, 199, + 199, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 274, 17, 223, 223, 0, 223, 223, 223, 223, 223, + 223, 223, 223, 0, 277, 277, 0, 0, 275, 275, + 199, 199, 275, 275, 275, 275, 275, 0, 0, 275, + 275, 0, 275, 275, 275, 275, 275, 275, 250, 275, + 0, 250, 0, 0, 0, 259, 0, 0, 259, 0, + 0, 199, 199, 0, 0, 250, 250, 0, 0, 0, + 276, 276, 259, 259, 276, 276, 276, 276, 276, 0, + 0, 276, 276, 0, 276, 276, 276, 276, 276, 276, + 0, 276, 0, 0, 0, 0, 0, 249, 274, 274, + 250, 0, 274, 274, 274, 274, 274, 259, 0, 274, + 274, 0, 274, 274, 274, 274, 274, 274, 0, 274, + 278, 278, 0, 0, 278, 278, 278, 278, 278, 0, + 278, 0, 250, 0, 0, 0, 0, 0, 0, 259, + 0, 278, 278, 278, 278, 278, 278, 0, 266, 266, + 0, 0, 266, 266, 266, 266, 266, 277, 266, 0, + 422, 0, 0, 0, 0, 0, 0, 0, 0, 266, + 266, 266, 266, 266, 266, 0, 278, 278, 0, 0, + 0, 260, 0, 0, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 199, 0, 0, 0, 260, 260, + 0, 0, 0, 0, 266, 266, 0, 278, 278, 0, + 0, 0, 277, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 273, 273, 0, 0, 273, 273, 273, 273, + 273, 0, 273, 260, 0, 266, 266, 0, 0, 0, + 0, 0, 0, 273, 273, 273, 273, 273, 273, 199, + 0, 0, 0, 0, 249, 249, 0, 0, 0, 0, + 0, 0, 0, 0, 250, 260, 0, 0, 199, 513, + 0, 259, 0, 0, 0, 0, 520, 0, 273, 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 271, 271, 0, 0, 271, 271, - 271, 271, 271, 0, 271, 0, 0, 0, 218, 0, - 234, 0, 0, 0, 0, 271, 271, 271, 271, 271, - 271, 0, 0, 0, 0, 0, 0, 0, 199, 199, - 0, 0, 199, 199, 199, 199, 199, 0, 0, 199, - 199, 0, 199, 199, 199, 199, 199, 199, 0, 199, - 271, 271, 0, 0, 0, 0, 0, 265, 265, 0, - 0, 265, 265, 265, 265, 265, 0, 0, 265, 265, - 0, 265, 265, 265, 265, 265, 265, 0, 265, 0, - 0, 271, 271, 0, 0, 0, 0, 0, 0, 0, - 0, 231, 220, 0, 0, 0, 229, 227, 0, 228, - 0, 230, 0, 0, 0, 0, 272, 0, 0, 0, - 0, 0, 272, 0, 223, 207, 225, 217, 231, 220, - 0, 0, 0, 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 444, 223, 207, 225, 217, 231, 220, 0, 219, 505, - 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 207, - 225, 217, 0, 0, 0, 219, 0, 0, 218, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, - 0, 0, 219, 0, 0, 218, 0, 234, 0, 0, - 0, 0, 0, 0, 271, 237, 0, 0, 0, 0, - 0, 0, 252, 0, 0, 252, 0, 0, 252, 0, - 0, 0, 218, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 252, 252, 0, 252, 0, 252, 0, 272, - 272, 0, 0, 272, 272, 272, 272, 272, 0, 0, - 272, 272, 0, 272, 272, 272, 272, 272, 272, 0, - 272, 0, 0, 0, 0, 0, 0, 252, 252, 0, - 0, 0, 0, 0, 226, 224, 235, 236, 208, 209, - 210, 211, 213, 0, 0, 221, 222, 0, 205, 206, - 212, 215, 214, 216, 0, 232, 0, 0, 252, 252, - 231, 220, 0, 0, 0, 229, 227, 0, 228, 0, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 515, 223, 207, 225, 217, 0, 0, 0, + 277, 277, 0, 0, 277, 277, 277, 277, 277, 273, + 273, 277, 277, 0, 277, 277, 277, 277, 277, 277, + 0, 277, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 199, 199, 572, + 278, 199, 199, 199, 199, 199, 579, 0, 199, 199, + 0, 199, 199, 199, 199, 199, 199, 587, 199, 272, + 272, 0, 0, 272, 272, 272, 272, 272, 266, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 271, 271, 0, - 0, 271, 271, 271, 271, 271, 233, 219, 271, 271, - 0, 271, 271, 271, 271, 271, 271, 0, 271, 0, - 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, - 0, 0, 0, 233, 0, 0, 0, 218, 0, 234, + 272, 272, 272, 272, 272, 272, 233, 222, 616, 0, + 0, 231, 229, 0, 230, 278, 232, 260, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 274, 0, 225, + 209, 227, 219, 0, 0, 272, 272, 635, 0, 0, + 0, 250, 250, 266, 0, 0, 0, 0, 259, 259, + 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, + 648, 0, 273, 221, 0, 650, 272, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, - 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 226, 224, 235, 236, 208, 209, - 210, 211, 213, 0, 0, 221, 222, 0, 205, 206, - 212, 215, 214, 216, 0, 232, 0, 0, 0, 0, - 0, 226, 224, 235, 236, 208, 209, 210, 211, 213, - 0, 0, 221, 222, 0, 205, 206, 212, 215, 214, - 216, 0, 232, 0, 0, 0, 0, 0, 226, 224, - 235, 236, 208, 209, 210, 211, 213, 0, 0, 221, - 222, 0, 205, 206, 212, 215, 214, 216, 0, 232, - 231, 220, 0, 0, 550, 229, 227, 0, 228, 0, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 223, 207, 225, 217, 231, 220, 0, - 0, 555, 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 223, 207, 225, 217, 0, 233, 0, 219, 252, 252, - 252, 252, 252, 0, 0, 252, 252, 0, 252, 252, - 252, 252, 252, 252, 237, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 0, 218, 0, 234, + 0, 0, 0, 220, 0, 236, 0, 0, 0, 0, + 0, 0, 0, 278, 278, 0, 0, 278, 278, 278, + 278, 278, 0, 0, 278, 278, 0, 278, 278, 278, + 278, 278, 278, 0, 278, 0, 0, 0, 0, 0, + 0, 266, 266, 0, 0, 266, 266, 266, 266, 266, + 0, 0, 266, 266, 0, 266, 266, 266, 266, 266, + 266, 0, 266, 0, 0, 0, 0, 233, 222, 0, + 0, 286, 231, 229, 0, 230, 0, 232, 0, 0, + 0, 0, 0, 0, 260, 260, 0, 0, 0, 0, + 225, 209, 227, 219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, + 0, 0, 0, 0, 0, 273, 273, 0, 0, 273, + 273, 273, 273, 273, 221, 0, 273, 273, 0, 273, + 273, 273, 273, 273, 273, 0, 273, 0, 0, 0, + 0, 0, 0, 0, 0, 233, 222, 115, 0, 0, + 231, 229, 0, 230, 220, 232, 236, 0, 0, 0, + 0, 0, 0, 170, 0, 0, 0, 446, 225, 209, + 227, 219, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 233, 222, + 0, 235, 507, 231, 229, 0, 230, 0, 232, 0, + 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, + 239, 225, 209, 227, 219, 0, 0, 253, 0, 256, + 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 220, 0, 236, 0, 0, 0, 0, 276, + 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, + 0, 0, 272, 272, 0, 0, 272, 272, 272, 272, + 272, 0, 0, 272, 272, 0, 272, 272, 272, 272, + 272, 272, 0, 272, 0, 220, 0, 236, 0, 228, + 226, 237, 238, 210, 211, 212, 213, 215, 0, 0, + 223, 224, 0, 207, 208, 214, 217, 216, 218, 0, + 234, 233, 222, 0, 343, 0, 231, 229, 346, 230, + 0, 232, 0, 0, 0, 0, 352, 0, 0, 0, + 0, 0, 0, 517, 225, 209, 227, 219, 233, 222, + 0, 0, 552, 231, 229, 0, 230, 0, 232, 0, + 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, + 0, 225, 209, 227, 219, 0, 0, 0, 221, 0, + 0, 239, 0, 0, 0, 0, 0, 0, 233, 222, + 0, 0, 557, 231, 229, 0, 230, 0, 232, 0, + 0, 0, 0, 0, 0, 221, 0, 0, 220, 0, + 236, 225, 209, 227, 219, 387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 0, 236, 0, 0, + 235, 0, 0, 0, 0, 221, 0, 0, 0, 0, + 228, 226, 237, 238, 210, 211, 212, 213, 215, 239, + 0, 223, 224, 0, 207, 208, 214, 217, 216, 218, + 0, 234, 0, 0, 0, 220, 0, 236, 0, 0, + 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 218, 0, 234, 0, 0, 0, + 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 226, + 237, 238, 210, 211, 212, 213, 215, 0, 0, 223, + 224, 0, 207, 208, 214, 217, 216, 218, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 226, 224, 235, 236, 208, 209, 210, - 211, 213, 0, 0, 221, 222, 0, 205, 206, 212, - 215, 214, 216, 0, 232, 231, 220, 0, 0, 556, - 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 207, - 225, 217, 231, 220, 0, 0, 603, 229, 227, 0, - 228, 0, 230, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 223, 207, 225, 217, 231, - 220, 0, 219, 604, 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 223, 207, 225, 217, 0, 0, 0, 219, - 0, 0, 218, 0, 234, 0, 0, 0, 0, 0, + 0, 228, 226, 237, 238, 210, 211, 212, 213, 215, + 0, 0, 223, 224, 0, 207, 208, 214, 217, 216, + 218, 0, 234, 0, 233, 222, 235, 0, 558, 231, + 229, 0, 230, 0, 232, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 239, 0, 225, 209, 227, + 219, 233, 222, 235, 0, 605, 231, 229, 0, 230, + 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 239, 0, 225, 209, 227, 219, 0, 233, + 222, 221, 0, 606, 231, 229, 0, 230, 0, 232, + 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, + 0, 0, 225, 209, 227, 219, 0, 0, 221, 0, + 0, 220, 239, 236, 228, 226, 237, 238, 210, 211, + 212, 213, 215, 0, 0, 223, 224, 0, 207, 208, + 214, 217, 216, 218, 0, 234, 221, 0, 220, 0, + 236, 228, 226, 237, 238, 210, 211, 212, 213, 215, + 0, 0, 223, 224, 0, 207, 208, 214, 217, 216, + 218, 0, 234, 0, 0, 0, 220, 0, 236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 233, 219, 0, 0, 218, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 0, 233, 0, 0, 0, 218, 0, 234, 0, + 0, 228, 226, 237, 238, 210, 211, 212, 213, 215, + 0, 0, 223, 224, 0, 207, 208, 214, 217, 216, + 218, 0, 234, 233, 222, 0, 0, 0, 231, 229, + 0, 230, 0, 232, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 630, 225, 209, 227, 219, + 233, 222, 0, 0, 0, 231, 229, 0, 230, 0, + 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 644, 0, 225, 209, 227, 219, 233, 222, 0, + 221, 0, 231, 229, 0, 230, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 237, 0, 0, 0, 0, 0, 0, 0, 231, - 220, 0, 0, 0, 229, 227, 0, 228, 0, 230, + 225, 209, 227, 219, 0, 0, 0, 221, 0, 0, + 220, 0, 236, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 628, 223, 207, 225, 217, 0, 0, 0, 0, - 0, 0, 0, 226, 224, 235, 236, 208, 209, 210, - 211, 213, 0, 0, 221, 222, 0, 205, 206, 212, - 215, 214, 216, 0, 232, 0, 219, 0, 0, 0, - 226, 224, 235, 236, 208, 209, 210, 211, 213, 0, - 0, 221, 222, 0, 205, 206, 212, 215, 214, 216, - 0, 232, 0, 0, 0, 0, 218, 0, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 231, 220, 0, - 0, 0, 229, 227, 0, 228, 0, 230, 0, 0, - 233, 0, 0, 0, 0, 0, 0, 0, 642, 0, - 223, 207, 225, 217, 0, 0, 0, 0, 0, 237, - 0, 0, 0, 0, 231, 220, 0, 233, 0, 229, - 227, 0, 228, 0, 230, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 219, 0, 237, 223, 207, 225, - 217, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 221, 0, 0, 220, 239, 236, + 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 237, 218, 0, 234, 0, 0, 0, - 0, 219, 0, 0, 0, 0, 0, 0, 226, 224, - 235, 236, 208, 209, 210, 211, 213, 0, 0, 221, - 222, 0, 205, 206, 212, 215, 214, 216, 0, 232, - 0, 218, 0, 234, 0, 226, 224, 235, 236, 208, - 209, 210, 211, 213, 0, 0, 221, 222, 0, 205, - 206, 212, 215, 214, 216, 0, 232, 0, 0, 0, - 0, 0, 226, 224, 235, 236, 208, 209, 210, 211, - 213, 0, 0, 221, 222, 0, 205, 206, 212, 215, - 214, 216, 0, 232, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 220, 239, 236, 0, 0, 0, + 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 237, 0, 231, 220, 0, 0, 0, - 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 207, - 225, 217, 0, 0, 0, 0, 0, 0, 0, 0, - 231, 220, 0, 0, 0, 229, 227, 0, 228, 0, - 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 219, 223, 207, 225, 217, 0, 0, 0, - 0, 0, 226, 224, 235, 236, 208, 209, 210, 211, - 213, 0, 233, 221, 222, 0, 205, 206, 212, 215, - 214, 216, 218, 232, 234, 0, 0, 219, 0, 0, - 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, - 262, 262, 0, 0, 262, 262, 262, 262, 262, 233, - 262, 0, 0, 0, 0, 0, 0, 218, 0, 234, - 0, 262, 262, 262, 262, 262, 262, 0, 237, 0, + 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 226, 237, + 238, 210, 211, 212, 213, 215, 0, 0, 223, 224, + 0, 207, 208, 214, 217, 216, 218, 0, 234, 0, + 0, 0, 0, 0, 228, 226, 237, 238, 210, 211, + 212, 213, 215, 0, 0, 223, 224, 0, 207, 208, + 214, 217, 216, 218, 0, 234, 0, 0, 0, 0, + 0, 0, 228, 226, 237, 238, 210, 211, 212, 213, + 215, 0, 0, 223, 224, 0, 207, 208, 214, 217, + 216, 218, 0, 234, 0, 233, 222, 0, 0, 0, + 231, 229, 0, 230, 0, 232, 0, 0, 235, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 225, 209, + 227, 219, 0, 0, 0, 0, 0, 239, 0, 0, + 0, 0, 233, 222, 0, 235, 0, 231, 229, 0, + 230, 0, 232, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 221, 0, 239, 225, 209, 227, 219, 0, + 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 239, 220, 0, 236, 0, 0, 0, 0, 221, + 0, 0, 0, 0, 0, 0, 228, 226, 237, 238, + 210, 211, 212, 213, 215, 0, 0, 223, 224, 0, + 207, 208, 214, 217, 216, 218, 0, 234, 0, 220, + 0, 236, 0, 228, 226, 237, 238, 210, 211, 212, + 213, 215, 0, 0, 223, 224, 0, 207, 208, 214, + 217, 216, 218, 0, 234, 0, 0, 0, 0, 0, + 228, 226, 237, 238, 210, 211, 212, 213, 215, 0, + 0, 223, 224, 0, 207, 208, 214, 217, 216, 218, + 0, 234, 233, 222, 0, 0, 0, 231, 229, 0, + 230, 0, 232, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 0, 227, 263, 263, + 0, 0, 263, 263, 263, 263, 263, 0, 263, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 263, 263, 263, 263, 263, 0, 264, 264, 0, 221, + 264, 264, 264, 264, 264, 0, 264, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 264, 264, 264, + 264, 264, 264, 262, 263, 263, 262, 0, 262, 262, + 262, 236, 0, 0, 0, 0, 0, 0, 0, 0, + 235, 0, 0, 262, 262, 262, 262, 262, 262, 0, + 0, 0, 264, 264, 0, 263, 263, 0, 0, 239, + 0, 0, 0, 0, 265, 265, 0, 0, 265, 265, + 265, 265, 265, 0, 265, 0, 0, 235, 262, 262, + 0, 0, 0, 264, 264, 265, 265, 265, 265, 265, + 265, 0, 0, 0, 0, 0, 239, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 265, 265, 0, 0, 0, 0, 0, 0, 228, 226, + 237, 238, 210, 211, 212, 213, 215, 0, 0, 223, + 224, 0, 0, 208, 214, 217, 216, 218, 0, 234, + 0, 265, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 226, 237, 238, 210, + 211, 212, 213, 215, 0, 0, 223, 224, 0, 0, + 0, 214, 217, 216, 218, 0, 234, 0, 263, 253, + 0, 0, 253, 0, 0, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 0, 0, 255, 253, + 253, 255, 253, 0, 253, 0, 264, 235, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 0, 255, 0, + 255, 0, 254, 0, 0, 254, 239, 0, 254, 0, + 0, 0, 262, 0, 253, 253, 0, 0, 0, 0, + 0, 0, 254, 254, 0, 254, 0, 254, 0, 0, + 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 253, 253, 0, 0, 0, + 0, 0, 0, 0, 265, 0, 0, 254, 254, 0, + 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 226, 237, 238, 0, + 0, 0, 0, 0, 0, 0, 223, 224, 254, 254, + 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, + 0, 263, 263, 0, 0, 263, 263, 263, 263, 263, + 0, 0, 263, 263, 0, 263, 263, 263, 263, 263, + 263, 0, 0, 0, 0, 0, 0, 0, 0, 264, + 264, 0, 0, 264, 264, 264, 264, 264, 0, 0, + 264, 264, 0, 264, 264, 264, 264, 264, 264, 0, + 0, 0, 0, 0, 0, 262, 262, 0, 0, 262, + 262, 262, 262, 262, 0, 0, 262, 262, 0, 262, + 262, 262, 262, 262, 262, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 262, 262, 0, 0, - 226, 224, 235, 236, 208, 209, 210, 211, 213, 0, - 0, 221, 222, 0, 205, 206, 212, 215, 214, 216, - 0, 232, 0, 0, 0, 0, 0, 262, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 226, 224, 235, - 236, 208, 209, 210, 211, 213, 0, 0, 221, 222, - 0, 205, 206, 212, 215, 214, 216, 0, 232, 263, - 263, 0, 0, 263, 263, 263, 263, 263, 0, 263, + 0, 0, 0, 0, 255, 0, 0, 265, 265, 0, + 0, 265, 265, 265, 265, 265, 0, 0, 265, 265, + 0, 265, 265, 265, 265, 265, 265, 256, 0, 0, + 256, 254, 0, 256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 271, 0, 0, 271, 256, 256, 271, + 256, 0, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 271, 271, 0, 271, 0, 271, 0, + 252, 0, 0, 252, 0, 0, 252, 0, 0, 0, + 0, 0, 256, 256, 0, 0, 0, 0, 0, 0, + 252, 252, 0, 252, 0, 252, 0, 0, 271, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 263, 263, 263, 263, 263, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 264, 264, 0, 0, - 264, 264, 264, 264, 264, 0, 264, 0, 0, 0, - 233, 0, 0, 0, 0, 263, 263, 264, 264, 264, - 264, 264, 264, 0, 0, 0, 0, 0, 0, 237, - 0, 0, 0, 0, 260, 0, 0, 260, 0, 260, - 260, 260, 0, 0, 0, 233, 263, 263, 0, 0, - 0, 0, 264, 264, 260, 260, 260, 260, 260, 260, - 262, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 261, 0, 0, 261, 0, 261, 261, 261, 0, - 0, 0, 0, 264, 264, 0, 0, 0, 0, 260, - 260, 261, 261, 261, 261, 261, 261, 0, 226, 224, - 235, 236, 208, 209, 210, 211, 213, 0, 0, 221, - 222, 0, 0, 206, 212, 215, 214, 216, 0, 232, - 260, 260, 0, 0, 0, 0, 261, 261, 0, 0, - 0, 0, 0, 226, 224, 235, 236, 208, 209, 210, - 211, 213, 0, 0, 221, 222, 0, 0, 0, 212, - 215, 214, 216, 0, 232, 0, 0, 261, 261, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, - 0, 254, 0, 0, 254, 0, 0, 0, 0, 263, + 0, 0, 0, 256, 256, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 252, 252, 0, 0, 271, + 271, 0, 0, 0, 0, 253, 253, 253, 253, 253, + 0, 0, 253, 253, 0, 253, 253, 253, 253, 253, + 253, 255, 255, 255, 255, 255, 252, 252, 255, 255, + 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, - 0, 254, 0, 254, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 262, 262, 0, 0, 262, 262, 262, - 262, 262, 0, 0, 262, 262, 264, 262, 262, 262, - 262, 262, 262, 254, 254, 0, 0, 253, 0, 0, - 253, 0, 0, 253, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 253, 253, 0, - 253, 0, 253, 260, 254, 254, 255, 0, 0, 255, - 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, - 0, 255, 253, 253, 0, 0, 0, 0, 0, 0, - 261, 0, 0, 0, 0, 270, 0, 0, 270, 0, + 254, 254, 254, 0, 0, 254, 254, 0, 254, 254, + 254, 254, 254, 254, 0, 270, 0, 0, 270, 0, 0, 270, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 255, 255, 253, 253, 270, 270, 0, 270, 0, - 270, 0, 263, 263, 0, 0, 263, 263, 263, 263, - 263, 0, 0, 263, 263, 0, 263, 263, 263, 263, - 263, 263, 255, 255, 0, 0, 0, 0, 0, 0, - 270, 270, 0, 0, 0, 0, 0, 0, 0, 264, - 264, 0, 0, 264, 264, 264, 264, 264, 0, 0, - 264, 264, 0, 264, 264, 264, 264, 264, 264, 0, - 0, 270, 270, 0, 0, 0, 0, 254, 0, 0, - 0, 0, 0, 0, 0, 0, 260, 260, 0, 0, - 260, 260, 260, 260, 260, 0, 0, 260, 260, 0, - 260, 260, 260, 260, 260, 260, 0, 0, 0, 0, + 0, 251, 0, 0, 251, 270, 270, 251, 270, 0, + 270, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 251, 251, 0, 251, 268, 251, 0, 268, 0, + 0, 268, 0, 0, 0, 0, 256, 0, 0, 0, + 270, 270, 0, 0, 0, 268, 268, 0, 268, 0, + 268, 0, 271, 0, 0, 0, 251, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 261, 261, 0, 0, 261, 261, 261, - 261, 261, 0, 0, 261, 261, 253, 261, 261, 261, - 261, 261, 261, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 251, 0, 0, 251, 0, 0, - 251, 0, 0, 0, 0, 255, 0, 0, 0, 0, - 0, 0, 0, 0, 251, 251, 0, 251, 266, 251, - 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 269, 0, 0, 269, 266, 266, 269, 266, 0, - 266, 0, 0, 0, 270, 0, 0, 0, 0, 251, - 251, 269, 269, 0, 269, 0, 269, 0, 0, 0, - 0, 0, 0, 0, 254, 254, 254, 254, 254, 0, - 266, 254, 254, 0, 254, 254, 254, 254, 254, 254, - 251, 251, 0, 0, 0, 250, 269, 269, 250, 0, - 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 266, 266, 0, 0, 250, 250, 0, 250, 0, - 250, 0, 0, 0, 0, 0, 0, 269, 269, 0, - 0, 0, 0, 253, 253, 253, 253, 253, 0, 0, - 253, 253, 0, 253, 253, 253, 253, 253, 253, 0, - 250, 250, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 255, 255, 255, 255, 255, 0, 0, 255, - 255, 0, 255, 255, 255, 255, 255, 255, 0, 0, - 0, 250, 250, 0, 0, 0, 0, 0, 0, 0, + 257, 270, 270, 257, 0, 0, 257, 0, 0, 252, + 268, 268, 0, 0, 0, 0, 0, 251, 251, 0, + 257, 257, 0, 257, 258, 257, 0, 258, 0, 0, + 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 268, 268, 0, 258, 258, 0, 258, 0, 258, + 0, 201, 0, 0, 201, 257, 257, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 201, 201, + 0, 201, 0, 201, 0, 0, 0, 0, 0, 258, + 258, 0, 0, 0, 0, 0, 257, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, + 258, 258, 0, 256, 256, 256, 256, 256, 0, 0, + 256, 256, 0, 256, 256, 256, 256, 256, 256, 271, + 271, 271, 271, 271, 270, 201, 271, 271, 0, 271, + 271, 271, 271, 271, 271, 0, 0, 0, 0, 0, + 251, 0, 0, 0, 0, 0, 252, 252, 252, 252, + 252, 0, 0, 252, 252, 0, 252, 252, 252, 252, + 252, 252, 269, 0, 268, 269, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, + 269, 0, 269, 267, 269, 0, 267, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 267, 267, 0, 267, 0, 267, 0, 0, 209, 257, + 133, 209, 143, 0, 269, 269, 0, 142, 0, 0, + 131, 0, 132, 0, 0, 209, 209, 0, 209, 0, + 209, 0, 0, 258, 0, 267, 0, 315, 0, 0, + 0, 0, 0, 0, 0, 269, 269, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, + 209, 0, 0, 0, 0, 0, 267, 267, 83, 0, 0, 270, 270, 270, 270, 270, 0, 0, 270, 270, - 0, 270, 270, 270, 270, 270, 270, 0, 267, 0, - 0, 267, 0, 251, 267, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 256, 0, 0, 256, 267, 267, - 256, 267, 0, 267, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 256, 256, 0, 256, 0, 256, - 269, 257, 0, 0, 257, 0, 0, 257, 0, 0, - 0, 0, 0, 267, 267, 0, 0, 0, 0, 0, - 201, 257, 257, 201, 257, 0, 257, 0, 0, 256, - 256, 0, 0, 0, 0, 0, 0, 201, 201, 0, - 201, 0, 201, 0, 267, 267, 208, 0, 0, 208, - 0, 0, 0, 0, 250, 0, 257, 257, 0, 0, - 256, 256, 0, 208, 208, 0, 208, 0, 208, 0, - 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 257, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, - 0, 0, 0, 0, 201, 0, 0, 0, 0, 0, - 251, 251, 251, 251, 251, 0, 0, 251, 251, 0, - 251, 251, 251, 251, 251, 251, 0, 0, 0, 0, - 208, 266, 266, 266, 266, 266, 0, 0, 0, 0, - 0, 266, 266, 266, 266, 266, 266, 269, 269, 269, - 269, 269, 0, 0, 269, 269, 0, 269, 269, 269, - 269, 269, 269, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 132, 0, 142, 0, 0, 267, 0, 141, - 0, 0, 130, 0, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 256, 0, 0, 0, 0, 0, 313, - 0, 250, 250, 250, 250, 250, 0, 0, 250, 250, - 0, 250, 250, 250, 250, 250, 250, 132, 0, 142, - 257, 0, 0, 0, 141, 0, 0, 130, 0, 131, - 83, 0, 0, 0, 0, 0, 201, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, + 0, 270, 270, 270, 270, 270, 270, 251, 251, 251, + 251, 251, 209, 0, 251, 251, 0, 251, 251, 251, + 251, 251, 251, 134, 0, 0, 0, 0, 0, 0, + 0, 268, 268, 268, 268, 268, 0, 0, 0, 0, + 0, 268, 268, 268, 268, 268, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 208, 0, 132, 133, 142, 0, 0, 0, - 0, 141, 0, 0, 130, 83, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 257, 257, 257, 257, + 257, 0, 0, 0, 0, 0, 257, 257, 257, 257, + 257, 257, 0, 0, 0, 0, 0, 0, 269, 0, + 258, 258, 258, 258, 258, 0, 0, 0, 0, 0, + 258, 258, 258, 258, 258, 258, 0, 0, 0, 267, + 0, 0, 0, 0, 201, 201, 201, 201, 201, 0, + 0, 0, 0, 0, 201, 201, 201, 201, 201, 201, + 133, 0, 143, 0, 209, 0, 0, 142, 0, 0, + 131, 0, 132, 0, 0, 0, 0, 180, 86, 87, + 88, 89, 90, 0, 0, 0, 0, 0, 0, 319, + 133, 0, 143, 0, 0, 0, 0, 142, 0, 0, + 131, 0, 132, 10, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 83, 0, 267, 267, 267, 267, 267, 0, - 0, 0, 0, 0, 267, 267, 267, 267, 267, 267, - 256, 256, 256, 256, 256, 0, 0, 0, 0, 0, - 256, 256, 256, 256, 256, 256, 0, 133, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 257, 257, - 257, 257, 0, 0, 0, 0, 0, 257, 257, 257, - 257, 257, 257, 201, 201, 201, 201, 201, 0, 0, - 0, 0, 0, 201, 201, 201, 201, 201, 201, 179, - 86, 87, 88, 89, 90, 0, 0, 0, 0, 208, - 208, 208, 208, 208, 0, 0, 0, 0, 0, 208, - 208, 208, 208, 208, 208, 10, 132, 0, 142, 0, - 0, 0, 0, 141, 0, 0, 130, 0, 131, 0, - 0, 0, 0, 0, 179, 86, 87, 88, 89, 90, - 0, 0, 137, 0, 132, 0, 142, 0, 0, 0, - 0, 141, 0, 0, 130, 0, 131, 0, 0, 0, - 10, 132, 0, 142, 0, 0, 0, 0, 141, 140, - 0, 130, 309, 131, 194, 136, 0, 0, 0, 0, - 0, 138, 139, 87, 88, 89, 90, 137, 0, 311, - 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 113, 10, 0, 133, - 0, 0, 0, 0, 140, 0, 0, 0, 0, 83, - 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 314, 134, 135, 0, 137, 0, 0, 133, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, - 0, 140, 0, 0, 0, 0, 0, 136, 0, 0, - 0, 132, 0, 142, 318, 0, 134, 135, 141, 0, - 0, 130, 0, 131, 0, 0, 0, 0, 128, 0, - 0, 223, 0, 223, 0, 0, 0, 0, 223, 0, - 0, 223, 0, 223, 0, 132, 0, 142, 0, 0, - 0, 0, 141, 0, 0, 130, 0, 131, 0, 0, - 0, 0, 0, 134, 135, 0, 0, 0, 0, 83, + 138, 0, 0, 0, 133, 0, 143, 0, 0, 0, + 0, 142, 0, 0, 131, 0, 132, 0, 83, 0, + 0, 0, 0, 134, 0, 0, 0, 141, 0, 0, + 0, 0, 311, 137, 0, 269, 269, 269, 269, 269, + 0, 0, 0, 0, 0, 269, 269, 269, 269, 269, + 269, 0, 0, 134, 128, 129, 267, 267, 267, 267, + 267, 0, 83, 0, 0, 0, 267, 267, 267, 267, + 267, 267, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 209, 209, 209, 209, 209, 0, 0, 316, 135, + 136, 209, 209, 209, 209, 209, 209, 134, 0, 0, + 0, 0, 0, 0, 0, 133, 0, 143, 0, 0, + 0, 0, 142, 0, 133, 131, 143, 132, 0, 0, + 0, 142, 0, 0, 131, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 179, 86, 87, 88, 89, 90, 223, - 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 362, 0, 83, 133, 0, 0, 0, 0, 10, - 0, 179, 86, 87, 88, 89, 90, 0, 0, 0, - 0, 0, 0, 0, 223, 0, 0, 0, 179, 86, - 87, 88, 89, 90, 0, 0, 137, 10, 133, 0, + 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 180, 86, 87, + 88, 89, 90, 196, 0, 0, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 139, 140, 87, + 88, 89, 90, 0, 0, 113, 0, 0, 134, 0, + 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, + 138, 0, 0, 10, 133, 0, 143, 0, 0, 0, + 0, 142, 0, 0, 131, 0, 132, 0, 0, 0, + 0, 180, 86, 87, 88, 89, 90, 141, 0, 0, + 138, 0, 0, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 128, 129, 0, 141, 0, 0, + 0, 0, 83, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 129, 0, 320, 0, 135, + 136, 0, 0, 0, 364, 0, 224, 134, 224, 0, + 0, 141, 0, 224, 0, 0, 224, 137, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, 0, 180, 86, 87, 88, 89, 90, 128, 129, + 0, 180, 86, 87, 88, 89, 90, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 224, 0, 224, 10, 0, 0, + 133, 0, 143, 135, 136, 0, 0, 142, 0, 0, + 131, 0, 132, 0, 0, 138, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 137, 0, 0, 0, 0, 136, + 0, 0, 197, 0, 0, 0, 0, 0, 137, 0, + 0, 141, 0, 0, 0, 0, 0, 137, 83, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, + 129, 180, 86, 87, 88, 89, 90, 0, 128, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 140, 0, 0, 0, 0, 0, 136, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, - 0, 0, 0, 0, 136, 0, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 134, 135, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 0, 0, 179, 86, - 87, 88, 89, 90, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 134, 135, 0, 0, 0, 223, 223, - 223, 223, 223, 223, 10, 0, 0, 0, 0, 0, - 134, 135, 179, 86, 87, 88, 89, 90, 0, 0, - 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, - 0, 137, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 134, 0, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 135, 136, 0, 0, 0, 0, + 0, 0, 0, 135, 136, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 223, 0, 0, 0, 0, 0, 0, 140, 0, - 0, 0, 0, 0, 136, 137, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, - 0, 0, 0, 0, 223, 128, 0, 0, 0, 0, - 0, 0, 140, 0, 0, 0, 0, 0, 136, 0, - 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, - 134, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 223, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 135, + 0, 141, 0, 0, 0, 0, 0, 137, 0, 0, + 0, 0, 0, 224, 224, 224, 224, 224, 224, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 129, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 135, 136, 0, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 180, 86, 87, + 88, 89, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 224, 0, 0, 0, 0, 0, 224, + 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, + 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 224, 224, 141, 0, 0, + 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 128, 129, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 136, ); protected static $yyCheck = array(4, - 61, 62, 63, 41, 126, 122, 157, 71, 60, 40, - 46, 41, 193, 175, 44, 46, 125, 124, 42, 125, - 303, 46, 59, 84, 41, 59, 59, 44, 40, 34, - 35, 125, 41, 91, 59, 40, 141, 98, 123, 100, - 37, 105, 106, 58, 457, 42, 43, 246, 45, 63, - 47, 93, 409, 63, 462, 126, 61, 62, 63, 176, - 91, 122, 37, 38, 69, 70, 71, 42, 43, 304, - 45, 59, 47, 260, 260, 97, 44, 91, 91, 84, - 46, 91, 260, 125, 91, 60, 123, 62, 44, 123, - 123, 113, 97, 98, 275, 100, 283, 505, 203, 286, - 105, 106, 41, 284, 41, 44, 41, 44, 113, 44, - 44, 123, 125, 300, 300, 176, 260, 122, 531, 94, - 59, 58, 59, 58, 59, 93, 187, 41, 279, 126, - 44, 330, 237, 37, 491, 123, 141, 93, 42, 43, - 91, 45, 286, 47, 166, 59, 168, 260, 40, 124, - 172, 126, 44, 46, 93, 44, 93, 125, 93, 93, - 165, 166, 340, 168, 59, 187, 260, 172, 61, 125, - 59, 176, 233, 60, 125, 41, 533, 364, 364, 93, - 331, 260, 187, 288, 46, 103, 125, 300, 125, 46, - 125, 125, 373, 355, 44, 37, 340, 91, 203, 61, - 42, 93, 260, 560, 91, 47, 357, 286, 359, 331, - 128, 41, 130, 131, 132, 133, 134, 135, 41, 137, - 257, 44, 126, 141, 257, 91, 311, 340, 233, 123, - 252, 430, 237, 340, 256, 91, 260, 93, 419, 157, - 257, 312, 264, 93, 126, 260, 261, 252, 257, 411, - 46, 256, 64, 260, 261, 262, 263, 264, 265, 264, - 331, 91, 320, 44, 373, 374, 46, 373, 374, 257, - 93, 189, 423, 191, 332, 330, 300, 428, 59, 286, - 402, 403, 340, 288, 126, 340, 467, 205, 206, 207, + 61, 62, 63, 40, 122, 41, 41, 71, 44, 46, + 60, 42, 46, 40, 46, 125, 41, 91, 91, 44, + 124, 41, 260, 84, 125, 59, 59, 303, 91, 34, + 35, 123, 125, 44, 46, 40, 44, 98, 248, 100, + 58, 105, 106, 59, 464, 176, 58, 126, 59, 123, + 63, 260, 41, 158, 91, 44, 61, 62, 63, 177, + 123, 122, 300, 37, 69, 70, 71, 37, 42, 43, + 59, 45, 42, 47, 126, 260, 552, 47, 91, 84, + 40, 557, 126, 41, 44, 93, 60, 507, 62, 304, + 123, 300, 97, 98, 40, 100, 123, 40, 44, 59, + 105, 106, 260, 459, 93, 37, 41, 123, 113, 44, + 42, 43, 260, 45, 125, 47, 177, 122, 41, 91, + 63, 44, 332, 58, 59, 44, 364, 411, 189, 39, + 606, 340, 41, 91, 46, 58, 59, 142, 286, 49, + 50, 51, 300, 62, 60, 260, 261, 93, 91, 625, + 64, 41, 126, 125, 44, 340, 126, 59, 93, 260, + 636, 166, 167, 123, 169, 125, 195, 58, 173, 59, + 93, 63, 177, 37, 235, 91, 281, 533, 42, 43, + 123, 45, 91, 47, 189, 103, 260, 260, 44, 44, + 125, 59, 340, 93, 126, 91, 60, 260, 62, 91, + 205, 44, 125, 93, 41, 46, 62, 44, 123, 493, + 128, 129, 286, 131, 132, 133, 134, 135, 136, 311, + 138, 123, 432, 286, 142, 125, 357, 123, 333, 260, + 235, 123, 257, 312, 239, 125, 340, 257, 93, 91, + 158, 257, 260, 261, 123, 59, 125, 320, 277, 254, + 93, 535, 331, 258, 359, 123, 361, 286, 332, 332, + 312, 266, 126, 373, 374, 46, 340, 340, 257, 300, + 125, 123, 46, 191, 330, 193, 59, 340, 562, 331, + 373, 374, 413, 41, 340, 290, 44, 331, 40, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 312, 234, 33, 257, 35, - 257, 343, 257, 58, 40, 476, 340, 43, 246, 45, - 44, 402, 403, 91, 331, 592, 593, 312, 343, 346, - 364, 44, 59, 257, 125, 37, 38, 260, 62, 44, - 42, 43, 46, 45, 272, 47, 331, 40, 410, 41, - 617, 279, 44, 281, 58, 123, 260, 62, 60, 59, - 62, 123, 410, 260, 410, 91, 58, 59, 37, 38, - 410, 59, 446, 42, 43, 410, 45, 300, 47, 420, - 93, 309, 286, 311, 41, 313, 314, 44, 549, 317, - 318, 60, 94, 62, 41, 402, 403, 44, 60, 125, - 126, 93, 330, 331, 362, 41, 40, 91, 44, 59, - 40, 41, 46, 40, 421, 400, 401, 402, 403, 46, - 312, 496, 497, 320, 126, 310, 411, 412, 332, 357, - 310, 359, 447, 125, 561, 332, 421, 365, 33, 331, - 35, 602, 457, 340, 41, 40, 374, 44, 43, 123, - 45, 125, 61, 39, 410, 63, 41, 126, 311, 534, - 312, 91, 91, 49, 50, 51, 37, 414, 415, 414, - 415, 42, 43, 40, 45, 123, 47, 567, 568, 331, - 91, 496, 497, 91, 41, 413, 310, 44, 58, 60, - 561, 62, 260, 123, 123, 423, 91, 91, 260, 123, - 428, 44, 430, 41, 594, 433, 44, 300, 301, 302, - 402, 403, 123, 471, 41, 123, 531, 44, 286, 534, - 478, 40, 123, 538, 286, 44, 58, 40, 410, 421, - 125, 126, 59, 46, 260, 261, 262, 263, 264, 265, - 59, 41, 123, 91, 44, 58, 561, 618, 476, 477, - 402, 403, 300, 301, 302, 126, 484, 485, 58, 59, - 286, 33, 44, 35, 332, 257, 93, 638, 40, 421, - 332, 43, 340, 45, 44, 123, 260, 261, 262, 263, - 264, 265, 93, 541, 512, 61, 260, 313, 287, 257, - 548, 290, 257, 93, 93, 33, 524, 35, 125, 260, - 261, 559, 40, 618, 123, 43, 125, 45, 344, 345, - 312, 260, 286, 257, 340, 341, 342, 343, 340, 91, - 346, 549, 41, 638, 552, 125, 554, 373, 374, 331, - 260, 260, 590, 44, 360, 361, 362, 363, 41, 365, - 366, 367, 44, 312, 370, 371, 372, 373, 374, 260, - 123, 123, 260, 91, 126, 260, 286, 286, 332, 245, - 588, 619, 331, 13, 14, 260, 261, 262, 263, 264, - 265, 49, 50, 51, 602, 286, 402, 403, 286, 637, - 105, 106, 125, 40, 642, 550, 123, 123, 126, 647, - 555, 286, 61, 40, 58, 40, 624, 41, 400, 401, - 402, 403, 58, 41, 430, 260, 44, 260, 123, 411, - 412, 340, 260, 40, 40, 59, 63, 41, 313, 421, - 58, 59, 414, 415, 125, 93, 41, 40, 125, 340, - 61, 400, 401, 402, 403, 40, 40, 91, 286, 604, - 123, 312, 411, 412, 91, 340, 341, 342, 343, 93, - 41, 346, 421, 125, 125, 93, 340, 257, 623, 125, - 331, 40, 40, 40, 59, 360, 361, 362, 363, 634, - 365, 366, 367, 59, 40, 370, 123, 372, 373, 374, - 40, 125, 340, 59, 40, 260, 41, 125, 260, 261, - 262, 263, 264, 265, 41, 37, 38, 44, 40, 41, - 42, 43, 44, 45, 41, 47, 59, 402, 403, 61, - 361, 58, 59, 61, 286, 340, 58, 59, 60, 61, - 62, 63, 260, 261, 262, 263, 264, 265, 59, 400, - 401, 402, 403, 41, 91, 430, 125, 44, 123, 93, - 59, 313, 125, 40, 44, 340, 93, 364, 286, 91, - 421, 93, 94, 123, 37, 260, 321, 41, 123, 42, - 43, 41, 45, 340, 47, 41, 123, 125, 340, 341, - 342, 343, 59, 371, 346, 313, 125, 60, 125, 62, - 125, 123, 124, 125, 126, 91, 40, 123, 360, 361, - 362, 363, 91, 365, 366, 367, 59, 125, 370, 125, - 372, 41, 340, 341, 342, 343, 58, 125, 346, 41, - 123, 125, 123, 260, 414, 415, 93, 123, 123, 257, - 41, 41, 360, 361, 362, 363, 91, 365, 366, 367, - 402, 403, 370, 41, 372, 257, 44, 125, 257, 286, - 58, 91, 44, 126, 125, 91, 91, 125, 123, 93, - 58, 59, 125, 61, 59, 63, 59, 41, 430, 59, - 41, 41, 41, 41, 402, 403, 364, 125, 125, 37, - 38, 7, 40, 41, 42, 43, 44, 45, 6, 47, - 77, 354, 502, 102, 538, 93, 94, 497, 60, 59, - 58, 59, 430, 61, 62, 63, 109, 513, 610, 525, - 574, 574, 187, 260, 91, 187, 288, 360, 203, 248, - 257, 244, 172, 168, 31, 257, 124, 125, 260, -1, - -1, 41, -1, 91, 44, 93, 94, 37, 38, 286, - 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, - -1, -1, -1, 300, 301, 302, -1, -1, 58, 59, - 60, 61, 62, 63, 260, 123, 124, 125, 126, -1, - -1, 260, 261, 262, 263, 264, 265, -1, 310, 311, - 312, -1, 401, 93, -1, 332, 414, 415, 320, -1, - 286, 91, -1, 93, 94, -1, -1, 286, 330, 331, - 332, -1, -1, -1, 300, 301, 302, -1, 340, 41, - -1, 300, 44, -1, -1, 125, -1, 436, -1, -1, - 260, -1, -1, -1, 124, 125, 126, 59, 280, 281, - 282, 283, 284, 285, -1, 287, 332, -1, -1, 312, - 280, 281, 282, 283, 284, 285, 286, 287, -1, 41, - -1, 303, 44, -1, -1, -1, -1, 346, 331, 257, - -1, 93, -1, 303, -1, -1, 58, 59, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 414, 410, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - 37, 38, 332, 125, 41, 42, 43, 44, 45, 257, - 47, 93, 260, 280, 281, 282, 283, 284, 285, -1, - 287, 58, 59, 60, 61, 62, 63, -1, -1, -1, - -1, -1, -1, 300, 301, 302, 303, 400, 401, 402, - 403, 550, -1, 125, -1, -1, 555, -1, 411, 412, - -1, -1, 41, -1, 91, 44, 93, 94, 421, -1, - -1, -1, 310, 311, 312, -1, -1, 257, -1, 58, - 59, -1, 320, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 330, 331, 332, -1, -1, 124, 125, 126, - 41, -1, 340, 44, -1, 604, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, 58, 59, -1, - -1, -1, -1, -1, 623, -1, 404, 405, 406, 407, - 408, -1, 312, -1, -1, 634, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, 125, -1, -1, -1, - -1, 331, 93, -1, -1, -1, -1, -1, -1, -1, + 228, 229, 230, 231, 232, 233, 234, 260, 236, 33, + 425, 35, 257, 402, 403, 430, 40, 340, 59, 43, + 248, 45, 91, 364, 257, 93, 41, 247, 312, 44, + 345, 59, 312, 286, 260, 260, 375, 498, 499, 41, + 402, 403, 44, 58, 59, 257, 274, 331, 402, 403, + 410, 331, 142, 281, 260, 283, 125, 257, 260, 421, + 60, 286, 63, 478, 410, 410, 410, 91, 410, 260, + 312, 260, 44, 420, 448, 536, 59, 91, 93, 257, + 286, 46, 421, 311, 286, 313, 61, 315, 316, 331, + 91, 319, 320, 44, 320, 286, 61, 286, 260, 373, + 374, 125, 126, 91, 332, 333, 332, 332, 59, 123, + 125, 91, 40, 41, 340, 205, 400, 401, 402, 403, + 310, 93, 402, 403, 286, 44, 332, 411, 412, 41, + 469, 359, 44, 361, 449, 563, 551, 421, 312, 367, + 33, 421, 35, 332, 459, 569, 570, 40, 376, 239, + 43, 41, 45, 125, 44, 594, 595, 331, 310, 41, + 402, 403, 44, 91, 41, 37, 38, 44, 41, 414, + 42, 43, 596, 45, 93, 47, 58, 59, 340, 421, + 619, 414, 415, 498, 499, 40, 46, 415, 60, 604, + 62, 46, 563, 40, 91, 123, 93, 425, 91, 46, + 290, 61, 430, 58, 432, 410, 125, 435, 40, 289, + 41, 93, 292, 44, 46, 311, 41, 123, 533, 44, + 40, 536, 94, 344, 345, 540, 400, 401, 402, 403, + 13, 14, 125, 126, 59, 310, 260, 261, 262, 263, + 264, 265, 257, 125, 105, 106, 260, 421, 563, 620, + 478, 479, 124, 58, 126, 91, 41, 91, 486, 487, + 123, 123, 286, 33, 44, 35, 58, 123, 93, 640, + 40, 410, 286, 43, 59, 45, 44, 300, 301, 302, + 260, 261, 262, 263, 264, 265, 514, 93, 44, 313, + 61, 257, 280, 281, 282, 283, 284, 285, 526, 287, + 125, 300, 301, 302, 257, 620, 286, 93, 93, 49, + 50, 51, 300, 301, 302, 303, 340, 341, 342, 343, + 300, 91, 346, 551, 260, 640, 554, 257, 556, 340, + 41, 44, 260, 41, 260, 44, 360, 361, 362, 363, + 125, 365, 366, 367, 368, 123, 370, 371, 372, 373, + 374, 260, 125, 123, 40, 61, 126, 283, 286, 123, + 286, 123, 590, 58, 58, 40, 346, 260, 261, 262, + 263, 264, 265, 91, 300, 257, 604, 260, 402, 403, + 260, 123, 40, 93, 41, 33, 125, 35, 40, 125, + 41, 40, 40, 286, 61, 43, 40, 45, 626, 414, + 415, 40, 91, 123, 41, 41, 430, 44, 91, 37, + 38, 125, 40, 41, 42, 43, 44, 45, 46, 47, + 313, 58, 59, 125, 260, 261, 262, 263, 264, 265, + 58, 59, 60, 61, 62, 63, 37, 125, 364, 340, + 312, 42, 43, 91, 45, 40, 47, 340, 341, 342, + 343, 40, 40, 346, 59, 59, 93, 40, 40, 331, + 40, 340, 59, 91, 260, 93, 94, 360, 361, 362, + 363, 41, 365, 366, 367, 368, 41, 370, 126, 372, + 373, 374, 59, 61, 41, 361, 340, 44, 125, 61, + 260, 261, 262, 263, 264, 265, 124, 125, 126, 59, + 41, 58, 59, 44, 41, 41, 44, 403, 44, 402, + 403, 125, 93, 123, 59, 40, 286, 58, 59, 125, + 44, 364, 58, 59, 123, 126, 260, 321, 400, 401, + 402, 403, 414, 415, 41, 41, 93, 430, 340, 411, + 412, 340, 438, 313, 123, 41, 59, 371, 40, 421, + 125, 125, 93, 41, 125, 123, 59, 93, 125, 125, + 58, 125, 280, 281, 282, 283, 284, 285, 125, 287, + 340, 341, 342, 343, 41, 123, 346, 260, 261, 262, + 263, 264, 265, 125, 125, 303, 41, 41, 123, 125, + 360, 361, 362, 363, 123, 365, 366, 367, 368, 93, + 370, 257, 372, 286, 280, 281, 282, 283, 284, 285, + 125, 287, 260, 261, 262, 263, 264, 265, 37, 38, + 257, 40, 41, 42, 43, 44, 45, 303, 47, 257, + 257, 58, 402, 403, 44, 125, 93, 123, 286, 58, + 59, 60, 61, 62, 63, 37, 38, 91, 40, 41, + 42, 43, 44, 45, 91, 47, 552, 91, 91, 125, + 430, 557, 125, 346, 59, 313, 58, 59, 59, 61, + 62, 63, 91, 41, 93, 94, 91, 59, 41, 41, + 364, 41, 41, 125, 312, 125, 7, 6, 77, 102, + 356, 125, 340, 341, 342, 343, 504, 109, 346, 91, + 257, 93, 94, 331, 123, 124, 125, 126, 123, 499, + 606, 540, 360, 361, 362, 363, 257, 365, 366, 367, + 368, 257, 370, 60, 372, 59, 515, 527, 612, 625, + 576, 123, 124, 125, 126, 576, 189, 189, 362, 290, + 636, 205, 37, 38, 246, 250, 41, 42, 43, 44, + 45, 173, 47, 169, 402, 403, 31, -1, -1, -1, + -1, -1, 91, 58, 59, 60, 61, 62, 63, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, 125, 257, -1, -1, 37, 38, - -1, 40, 41, 42, 43, 44, 45, 46, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 91, - 257, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 420, 421, 91, -1, 93, 94, 37, 38, -1, -1, - 41, 42, 43, 44, 45, 46, 47, 91, -1, -1, - -1, -1, -1, 125, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, 124, 125, 126, 257, -1, - -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, - -1, 125, -1, -1, -1, -1, 91, -1, -1, -1, - 91, -1, 93, 94, 331, 91, -1, -1, -1, -1, - -1, 41, -1, 340, 44, -1, 257, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, 58, 59, - 125, -1, -1, 124, 125, 126, 58, 59, -1, -1, - -1, -1, 414, 415, 37, 38, -1, -1, 41, 42, + 408, -1, 430, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 420, 421, 123, -1, 91, -1, 93, 94, + -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, + 46, 47, -1, -1, -1, 41, -1, -1, 44, -1, + -1, -1, 58, 59, 60, 61, 62, 63, -1, 124, + 125, 126, 58, 59, -1, -1, -1, -1, 257, -1, + -1, 260, -1, -1, -1, 260, 280, 281, 282, 283, + 284, 285, -1, 287, -1, 91, -1, 93, 94, -1, + -1, -1, -1, 41, -1, 257, 44, 93, 260, 303, + -1, 286, -1, 414, 415, -1, -1, -1, 414, 415, + 58, 59, -1, -1, -1, 300, 301, 302, 124, 125, + 126, 310, 311, 312, -1, -1, -1, -1, -1, 125, + 334, 320, -1, -1, -1, -1, 41, -1, -1, 44, + -1, 330, 331, 332, -1, 93, -1, 332, 310, 311, + 312, 340, -1, 58, 59, -1, -1, -1, 320, -1, + -1, 260, -1, -1, -1, -1, -1, -1, 330, 331, + 332, -1, -1, -1, -1, -1, -1, 125, 340, 41, + -1, -1, 44, -1, -1, 37, 38, 286, 93, -1, + 42, 43, 257, 45, -1, 47, -1, 59, -1, -1, + -1, 300, 301, 302, -1, -1, -1, -1, 60, -1, + 62, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 125, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 93, 421, 332, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 312, -1, 411, + 412, 257, 414, 415, 416, 417, 418, 419, -1, 421, + -1, 257, -1, 125, -1, -1, 331, -1, -1, -1, + -1, -1, 37, 38, 126, 340, 41, 42, 43, 44, + 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, -1, -1, -1, 41, 312, -1, 44, 257, + 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 331, 91, -1, 93, 94, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 125, 410, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, 93, -1, 124, + 125, 126, -1, -1, -1, -1, -1, -1, -1, 41, + -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 125, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, 414, 415, + -1, 93, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, - -1, -1, -1, 93, -1, 58, 59, 60, 61, 62, - 63, 93, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, 410, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 420, 421, 125, -1, -1, 91, -1, - 93, 94, -1, 125, -1, -1, -1, -1, 257, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, 281, - 282, 283, 284, 285, -1, 287, -1, -1, -1, -1, - -1, 124, 125, 126, -1, 414, 415, -1, -1, 41, - -1, 303, 44, -1, -1, -1, 280, 281, 282, 283, - 284, 285, -1, 287, 37, 38, 58, 59, 41, 42, - 43, 44, 45, 312, 47, -1, 257, -1, -1, 303, - -1, -1, 334, 414, 415, 58, 59, 60, 61, 62, - -1, -1, 331, -1, -1, 280, 281, 282, 283, 284, - 285, 93, 287, -1, 280, 281, 282, 283, 284, 285, - 334, 287, -1, -1, -1, -1, -1, -1, 303, -1, - 93, 94, -1, -1, -1, -1, -1, 303, -1, -1, - -1, 312, -1, 125, -1, -1, -1, 257, -1, -1, - -1, -1, -1, -1, -1, 257, -1, -1, -1, 334, - 331, 124, 125, 126, -1, -1, -1, -1, 334, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, -1, 411, 412, 257, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, 37, 38, -1, -1, 41, - 42, 43, 44, 45, -1, 47, -1, 41, -1, 41, - 44, -1, 44, -1, -1, -1, 58, 59, 60, 61, - 62, 63, -1, -1, 58, 59, 58, 59, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, 312, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, - 421, 93, 94, -1, -1, -1, -1, -1, 331, 93, - -1, 93, -1, 37, 38, -1, 40, 41, 42, 43, - 44, 45, 46, 47, -1, 257, -1, -1, -1, -1, - -1, -1, 124, 125, 126, 91, 60, 61, 62, 63, - -1, 125, -1, 125, 257, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 414, 415, 41, -1, -1, 44, - -1, 91, 414, 415, -1, -1, -1, 91, -1, -1, - 94, -1, -1, 58, 59, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 420, 421, 312, - 124, -1, 126, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, -1, -1, 330, 331, -1, - -1, -1, -1, -1, 37, 38, -1, 340, 41, 42, - 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, - 125, -1, -1, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, 37, 38, -1, 40, -1, 42, 43, - 44, 45, 46, 47, -1, 257, -1, -1, -1, -1, - -1, -1, -1, 257, -1, 257, 60, 61, 62, 63, - 93, 94, 414, 415, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 91, 421, 93, - 94, 124, 125, 126, 91, -1, -1, -1, -1, -1, - 312, -1, -1, -1, 280, 281, 282, 283, 284, 285, - -1, 287, -1, 257, -1, -1, -1, -1, -1, 331, - 124, -1, 126, -1, 300, 301, 302, -1, 304, -1, + -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, 37, 38, 125, -1, 41, 42, 43, 44, 45, + 312, 47, -1, -1, -1, -1, 414, 415, -1, -1, + -1, -1, 58, 59, 60, 61, 62, -1, 91, 331, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 91, 257, -1, -1, -1, -1, -1, -1, 280, + 281, 282, 283, 284, 285, -1, 287, 93, 94, -1, + -1, 124, 125, 126, -1, 91, -1, -1, -1, -1, + -1, 257, 303, -1, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, + 126, -1, -1, -1, -1, -1, -1, 312, 400, 401, + 402, 403, -1, 334, -1, -1, -1, 91, -1, 411, + 412, -1, -1, -1, -1, -1, 331, -1, -1, 421, + -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, + 41, 42, 43, 44, 45, 257, 47, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, 37, 38, -1, 40, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, + -1, -1, 93, 94, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 257, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, 91, -1, -1, + 94, -1, -1, 124, 125, 126, -1, -1, -1, -1, + -1, 257, -1, -1, -1, -1, -1, -1, 414, 415, 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, + 124, -1, 126, -1, -1, -1, -1, -1, -1, 312, + -1, -1, -1, 303, 280, 281, 282, 283, 284, 285, + -1, 287, -1, -1, 91, -1, -1, -1, 331, -1, + -1, -1, -1, 91, -1, -1, 312, 303, -1, -1, + -1, -1, -1, -1, 334, -1, -1, -1, -1, -1, + -1, -1, 414, 415, 330, 331, 280, 281, 282, 283, + 284, 285, -1, 287, 340, 37, 38, -1, 334, 41, + 42, 43, 44, 45, -1, 47, 300, 301, 302, -1, + 304, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 257, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, 93, 94, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 257, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, 38, 421, -1, 41, -1, 43, + 44, 45, 124, 125, 126, -1, -1, -1, -1, -1, + -1, 312, -1, -1, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 257, 303, 37, 38, -1, -1, -1, 42, - 43, 44, 45, -1, 47, -1, -1, -1, 312, -1, - -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, 331, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 91, 421, - 93, 94, 414, 415, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 257, 37, 38, -1, -1, 41, - 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, - -1, 124, -1, 126, -1, -1, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, -1, 312, - -1, 93, 94, 280, 281, 282, 283, 284, 285, -1, - 287, -1, -1, -1, -1, -1, -1, -1, 331, -1, - -1, -1, -1, 300, 301, 302, 303, -1, 312, 414, - 415, -1, 124, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, 93, - 94, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 331, -1, -1, -1, -1, -1, 37, 38, 312, 40, + -1, 42, 43, 44, 45, 46, 47, -1, -1, 93, + 94, -1, 260, -1, -1, -1, -1, 331, -1, 60, + 61, 62, 63, 280, 281, 282, 283, 284, 285, -1, + 287, -1, 280, 281, 282, 283, 284, 285, 286, 287, + 124, 125, -1, 300, 301, 302, 303, -1, -1, -1, + 91, -1, 93, 94, -1, 303, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + 421, -1, -1, 124, 332, 126, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 257, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 37, 38, - 124, 125, 41, 42, 43, 44, 45, -1, 47, 312, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, 61, 62, 63, 257, -1, -1, 331, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, + -1, -1, -1, 42, 43, 44, 45, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + 312, -1, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, 91, -1, 93, 94, -1, -1, -1, 331, + -1, -1, -1, 257, -1, -1, -1, 37, 38, -1, + -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, + -1, 93, 94, -1, -1, 124, -1, 126, 58, 59, + 60, 61, 62, 63, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, + -1, -1, 124, 125, -1, -1, 58, 59, 60, 61, + 62, 63, -1, 93, 94, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, + -1, 93, 94, -1, 124, 125, -1, -1, -1, -1, + -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 312, -1, -1, -1, -1, 124, 125, -1, -1, -1, - -1, 93, 94, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, 410, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 257, -1, -1, 37, 38, -1, -1, - 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, 312, 421, - -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + 331, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, 257, 41, - 42, -1, 44, 124, 125, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, - 62, 63, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, -1, 47, 257, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, - 63, 93, 94, 312, -1, -1, 400, 401, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, - 93, 94, 124, 125, -1, -1, -1, -1, -1, -1, - 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 257, -1, -1, -1, - -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, - -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 312, 414, 415, 416, 417, 418, 419, -1, 421, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 257, 37, 38, -1, -1, - 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, 257, -1, -1, -1, -1, -1, - -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - 312, -1, 93, 94, 60, 61, 62, 63, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, 331, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 312, - 421, -1, -1, 124, 125, -1, -1, -1, 94, -1, + 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 41, -1, -1, 44, 257, -1, -1, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 58, 59, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, -1, -1, 312, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 257, -1, -1, + -1, -1, 331, 93, -1, -1, -1, 37, 38, -1, + 312, 41, 42, 43, 44, 45, -1, 47, -1, -1, + -1, -1, -1, -1, -1, 257, -1, -1, 58, 59, + 60, 61, 62, 63, -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, - 43, 44, 45, -1, 47, -1, -1, -1, 124, -1, - 126, -1, -1, -1, -1, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, + -1, 44, 312, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 94, 58, 59, 60, 61, 62, + 63, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 312, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, -1, 124, 125, -1, -1, 400, 401, + 93, 94, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 41, 421, + -1, 44, -1, -1, -1, 41, -1, -1, 44, -1, + -1, 124, 125, -1, -1, 58, 59, -1, -1, -1, + 400, 401, 58, 59, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + -1, 421, -1, -1, -1, -1, -1, 257, 400, 401, + 93, -1, 404, 405, 406, 407, 408, 93, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - 93, 94, -1, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, - -1, 47, -1, -1, -1, -1, 257, -1, -1, -1, - -1, -1, 58, -1, 60, 61, 62, 63, 37, 38, - -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, + 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, + 47, -1, 125, -1, -1, -1, -1, -1, -1, 125, + -1, 58, 59, 60, 61, 62, 63, -1, 37, 38, + -1, -1, 41, 42, 43, 44, 45, 257, 47, -1, + 364, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, 60, 61, 62, 63, -1, 93, 94, -1, -1, + -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 257, -1, -1, -1, 58, 59, + -1, -1, -1, -1, 93, 94, -1, 124, 125, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, -1, 47, 93, -1, 124, 125, -1, -1, -1, + -1, -1, -1, 58, 59, 60, 61, 62, 63, 312, + -1, -1, -1, -1, 414, 415, -1, -1, -1, -1, + -1, -1, -1, -1, 257, 125, -1, -1, 331, 473, + -1, 257, -1, -1, -1, -1, 480, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 59, 60, 61, 62, 63, 37, 38, -1, 94, 41, - 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, -1, -1, -1, 94, -1, -1, 124, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, - -1, -1, 94, -1, -1, 124, -1, 126, -1, -1, - -1, -1, -1, -1, 257, 331, -1, -1, -1, -1, - -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, - -1, -1, 58, 59, -1, 61, -1, 63, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - 421, -1, -1, -1, -1, -1, -1, 93, 94, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, 124, 125, - 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, 404, 405, 406, 407, 408, 312, 94, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, - -1, -1, -1, 312, -1, -1, -1, 124, -1, 126, + 400, 401, -1, -1, 404, 405, 406, 407, 408, 124, + 125, 411, 412, -1, 414, 415, 416, 417, 418, 419, + -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 543, + 257, 404, 405, 406, 407, 408, 550, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 561, 421, 37, + 38, -1, -1, 41, 42, 43, 44, 45, 257, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, - 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 58, 59, 60, 61, 62, 63, 37, 38, 592, -1, + -1, 42, 43, -1, 45, 312, 47, 257, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, -1, 60, + 61, 62, 63, -1, -1, 93, 94, 621, -1, -1, + -1, 414, 415, 312, -1, -1, -1, -1, 414, 415, + -1, -1, -1, -1, -1, 639, -1, -1, -1, -1, + 644, -1, 257, 94, -1, 649, 124, 125, -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, 124, -1, 126, -1, -1, -1, -1, + -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, + -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, -1, 421, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, 61, 62, 63, 37, 38, -1, + 419, -1, 421, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 414, 415, -1, -1, -1, -1, + 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, 94, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, 97, -1, -1, + 42, 43, -1, 45, 124, 47, 126, -1, -1, -1, + -1, -1, -1, 113, -1, -1, -1, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 312, 41, 42, 43, -1, 45, -1, 47, -1, + -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, + 331, 60, 61, 62, 63, -1, -1, 167, -1, 169, + -1, -1, -1, 173, -1, -1, -1, -1, -1, -1, + -1, -1, 124, -1, 126, -1, -1, -1, -1, 189, + -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, + -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, -1, 421, -1, 124, -1, 126, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, + 421, 37, 38, -1, 254, -1, 42, 43, 258, 45, + -1, 47, -1, -1, -1, -1, 266, -1, -1, -1, + -1, -1, -1, 59, 60, 61, 62, 63, 37, 38, + -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, 63, -1, -1, -1, 94, -1, + -1, 331, -1, -1, -1, -1, -1, -1, 37, 38, + -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, + -1, -1, -1, -1, -1, 94, -1, -1, 124, -1, + 126, 60, 61, 62, 63, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 60, 61, 62, 63, -1, 312, -1, 94, 404, 405, - 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, - 416, 417, 418, 419, 331, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 94, -1, -1, 124, -1, 126, + -1, -1, -1, -1, -1, 124, -1, 126, -1, -1, + 312, -1, -1, -1, -1, 94, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 331, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + -1, 421, -1, -1, -1, 124, -1, 126, -1, -1, + -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 124, -1, 126, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 421, 37, 38, -1, -1, 41, - 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, 37, 38, -1, -1, 41, 42, 43, -1, - 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 60, 61, 62, 63, 37, - 38, -1, 94, 41, 42, 43, -1, 45, -1, 47, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 421, -1, 37, 38, 312, -1, 41, 42, + 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, 60, 61, 62, + 63, 37, 38, 312, -1, 41, 42, 43, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 331, -1, 60, 61, 62, 63, -1, 37, + 38, 94, -1, 41, 42, 43, -1, 45, -1, 47, + -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, 63, -1, -1, 94, -1, + -1, 124, 331, 126, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, 421, 94, -1, 124, -1, + 126, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 421, -1, -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, -1, -1, -1, 94, - -1, -1, 124, -1, 126, -1, -1, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, 421, 37, 38, -1, -1, -1, 42, 43, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 59, 60, 61, 62, 63, + 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, -1, 60, 61, 62, 63, 37, 38, -1, + 94, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 312, 94, -1, -1, 124, - -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, - -1, -1, 312, -1, -1, -1, 124, -1, 126, -1, + 60, 61, 62, 63, -1, -1, -1, 94, -1, -1, + 124, -1, 126, -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, -1, -1, -1, -1, -1, -1, 37, - 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, + -1, -1, -1, -1, 94, -1, -1, 124, 331, 126, + -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, 421, -1, 94, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, 421, -1, -1, -1, -1, 124, -1, 126, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, - 312, -1, -1, -1, -1, -1, -1, -1, 58, -1, - 60, 61, 62, 63, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, 37, 38, -1, 312, -1, 42, - 43, -1, 45, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 94, -1, 331, 60, 61, 62, - 63, -1, -1, -1, 312, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 124, 331, 126, -1, -1, -1, + -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, 124, -1, 126, -1, -1, -1, - -1, 94, -1, -1, -1, -1, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, 421, - -1, 124, -1, 126, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, - 415, 416, 417, 418, 419, -1, 421, -1, -1, -1, + -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, + -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, -1, 421, 312, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, -1, 37, 38, -1, -1, -1, - 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, + 418, 419, -1, 421, -1, 37, 38, -1, -1, -1, + 42, 43, -1, 45, -1, 47, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, - 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 94, 60, 61, 62, 63, -1, -1, -1, - -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, 312, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 124, 421, 126, -1, -1, 94, -1, -1, - -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 312, - 47, -1, -1, -1, -1, -1, -1, 124, -1, 126, - -1, 58, 59, 60, 61, 62, 63, -1, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 62, 63, -1, -1, -1, -1, -1, 331, -1, -1, + -1, -1, 37, 38, -1, 312, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 94, -1, 331, 60, 61, 62, 63, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, + -1, 331, 124, -1, 126, -1, -1, -1, -1, 94, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, + 414, 415, 416, 417, 418, 419, -1, 421, -1, 124, + -1, 126, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - -1, 421, -1, -1, -1, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 421, 37, - 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, + -1, 421, 37, 38, -1, -1, -1, 42, 43, -1, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 60, -1, 62, 37, 38, + -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, 60, 61, 62, 63, -1, 37, 38, -1, 94, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - 312, -1, -1, -1, -1, 93, 94, 58, 59, 60, - 61, 62, 63, -1, -1, -1, -1, -1, -1, 331, - -1, -1, -1, -1, 38, -1, -1, 41, -1, 43, - 44, 45, -1, -1, -1, 312, 124, 125, -1, -1, - -1, -1, 93, 94, 58, 59, 60, 61, 62, 63, - 257, -1, -1, -1, 331, -1, -1, -1, -1, -1, - -1, 38, -1, -1, 41, -1, 43, 44, 45, -1, - -1, -1, -1, 124, 125, -1, -1, -1, -1, 93, - 94, 58, 59, 60, 61, 62, 63, -1, 400, 401, + -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, 38, 93, 94, 41, -1, 43, 44, + 45, 126, -1, -1, -1, -1, -1, -1, -1, -1, + 312, -1, -1, 58, 59, 60, 61, 62, 63, -1, + -1, -1, 93, 94, -1, 124, 125, -1, -1, 331, + -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, + 43, 44, 45, -1, 47, -1, -1, 312, 93, 94, + -1, -1, -1, 124, 125, 58, 59, 60, 61, 62, + 63, -1, -1, -1, -1, -1, 331, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, -1, 415, 416, 417, 418, 419, -1, 421, - 124, 125, -1, -1, -1, -1, 93, 94, -1, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, -1, -1, 416, - 417, 418, 419, -1, 421, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, - -1, 41, -1, -1, 44, -1, -1, -1, -1, 257, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 257, 414, 415, 416, - 417, 418, 419, 93, 94, -1, -1, 38, -1, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, - 61, -1, 63, 257, 124, 125, 38, -1, -1, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, - -1, 63, 93, 94, -1, -1, -1, -1, -1, -1, - 257, -1, -1, -1, -1, 38, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 94, 124, 125, 58, 59, -1, 61, -1, - 63, -1, 400, 401, -1, -1, 404, 405, 406, 407, - 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 124, 125, -1, -1, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 400, + -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, -1, + -1, 416, 417, 418, 419, -1, 421, -1, 257, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, + 59, 44, 61, -1, 63, -1, 257, 312, -1, -1, + -1, -1, -1, -1, -1, 58, 59, -1, 61, -1, + 63, -1, 38, -1, -1, 41, 331, -1, 44, -1, + -1, -1, 257, -1, 93, 94, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, -1, 257, -1, -1, 93, 94, -1, + -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, 402, 403, -1, + -1, -1, -1, -1, -1, -1, 411, 412, 124, 125, + -1, -1, -1, -1, -1, -1, 421, -1, -1, -1, + -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, 124, 125, -1, -1, -1, -1, 257, -1, -1, - -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 257, 414, 415, 416, - 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 38, -1, -1, 41, -1, -1, - 44, -1, -1, -1, -1, 257, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 61, 41, 63, + -1, -1, -1, -1, 257, -1, -1, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 38, -1, -1, + 41, 257, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 38, -1, -1, 41, 58, 59, 44, + 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, -1, 61, -1, 63, -1, + 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + 58, 59, -1, 61, -1, 63, -1, -1, 93, 94, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, -1, -1, 124, + 125, -1, -1, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 404, 405, 406, 407, 408, 124, 125, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, + 416, 417, 418, 419, -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, 41, 58, 59, 44, 61, -1, - 63, -1, -1, -1, 257, -1, -1, -1, -1, 93, - 94, 58, 59, -1, 61, -1, 63, -1, -1, -1, - -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, - 93, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 124, 125, -1, -1, -1, 38, 93, 94, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, 58, 59, -1, 61, -1, - 63, -1, -1, -1, -1, -1, -1, 124, 125, -1, - -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, - 412, -1, 414, 415, 416, 417, 418, 419, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, -1, 61, 38, 63, -1, 41, -1, + -1, 44, -1, -1, -1, -1, 257, -1, -1, -1, + 93, 94, -1, -1, -1, 58, 59, -1, 61, -1, + 63, -1, 257, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, -1, 38, -1, - -1, 41, -1, 257, 44, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 38, -1, -1, 41, 58, 59, - 44, 61, -1, 63, 257, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, - 257, 38, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, - 41, 58, 59, 44, 61, -1, 63, -1, -1, 93, - 94, -1, -1, -1, -1, -1, -1, 58, 59, -1, - 61, -1, 63, -1, 124, 125, 41, -1, -1, 44, - -1, -1, -1, -1, 257, -1, 93, 94, -1, -1, - 124, 125, -1, 58, 59, -1, 61, -1, 63, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, - 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - 125, 404, 405, 406, 407, 408, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, - 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 33, -1, 35, -1, -1, 257, -1, 40, - -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, 257, -1, -1, -1, -1, -1, 60, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - -1, 414, 415, 416, 417, 418, 419, 33, -1, 35, - 257, -1, -1, -1, 40, -1, -1, 43, -1, 45, - 91, -1, -1, -1, -1, -1, 257, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, + 38, 124, 125, 41, -1, -1, 44, -1, -1, 257, + 93, 94, -1, -1, -1, -1, -1, 124, 125, -1, + 58, 59, -1, 61, 38, 63, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, -1, 58, 59, -1, 61, -1, 63, + -1, 41, -1, -1, 44, 93, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 61, -1, 63, -1, -1, -1, -1, -1, 93, + 94, -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 257, -1, 33, 126, 35, -1, -1, -1, - -1, 40, -1, -1, 43, 91, 45, -1, -1, -1, + -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, + 124, 125, -1, 404, 405, 406, 407, 408, -1, -1, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 404, + 405, 406, 407, 408, 257, 125, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, + 257, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 41, -1, 257, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, 61, 41, 63, -1, 44, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 58, 59, -1, 61, -1, 63, -1, -1, 41, 257, + 33, 44, 35, -1, 93, 94, -1, 40, -1, -1, + 43, -1, 45, -1, -1, 58, 59, -1, 61, -1, + 63, -1, -1, 257, -1, 93, -1, 60, -1, -1, + -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 257, -1, -1, + 93, -1, -1, -1, -1, -1, 124, 125, 91, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 404, 405, 406, + 407, 408, 125, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 126, -1, -1, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 91, -1, 404, 405, 406, 407, 408, -1, - -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, -1, -1, 257, -1, 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - 414, 415, 416, 417, 418, 419, -1, 126, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, - 407, 408, -1, -1, -1, -1, -1, 414, 415, 416, - 417, 418, 419, 404, 405, 406, 407, 408, -1, -1, - -1, -1, -1, 414, 415, 416, 417, 418, 419, 260, - 261, 262, 263, 264, 265, -1, -1, -1, -1, 404, - 405, 406, 407, 408, -1, -1, -1, -1, -1, 414, - 415, 416, 417, 418, 419, 286, 33, -1, 35, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, - -1, -1, 313, -1, 33, -1, 35, -1, -1, -1, + 414, 415, 416, 417, 418, 419, -1, -1, -1, 257, + -1, -1, -1, -1, 404, 405, 406, 407, 408, -1, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + 33, -1, 35, -1, 257, -1, -1, 40, -1, -1, + 43, -1, 45, -1, -1, -1, -1, 260, 261, 262, + 263, 264, 265, -1, -1, -1, -1, -1, -1, 62, + 33, -1, 35, -1, -1, -1, -1, 40, -1, -1, + 43, -1, 45, 286, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, -1, -1, 91, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 313, -1, -1, -1, 33, -1, 35, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, 91, -1, + -1, -1, -1, 126, -1, -1, -1, 340, -1, -1, + -1, -1, 61, 346, -1, 404, 405, 406, 407, 408, + -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, + 419, -1, -1, 126, 367, 368, 404, 405, 406, 407, + 408, -1, 91, -1, -1, -1, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 401, 402, + 403, 414, 415, 416, 417, 418, 419, 126, -1, -1, + -1, -1, -1, -1, -1, 33, -1, 35, -1, -1, + -1, -1, 40, -1, 33, 43, 35, 45, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, - 286, 33, -1, 35, -1, -1, -1, -1, 40, 340, - -1, 43, 61, 45, 91, 346, -1, -1, -1, -1, - -1, 260, 261, 262, 263, 264, 265, 313, -1, 61, - -1, -1, -1, -1, -1, -1, 367, -1, -1, -1, - -1, -1, 91, -1, -1, -1, 123, 286, -1, 126, - -1, -1, -1, -1, 340, -1, -1, -1, -1, 91, - 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 401, 402, 403, -1, 313, -1, -1, 126, -1, -1, - -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, - -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, - -1, 33, -1, 35, 400, -1, 402, 403, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, 367, -1, - -1, 33, -1, 35, -1, -1, -1, -1, 40, -1, - -1, 43, -1, 45, -1, 33, -1, 35, -1, -1, - -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, - -1, -1, -1, 402, 403, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 260, 261, 262, 263, 264, 265, 91, - -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, -1, 91, 126, -1, -1, -1, -1, 286, + -1, -1, 61, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 260, 261, 262, + 263, 264, 265, 91, -1, -1, -1, -1, -1, -1, + -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 286, -1, -1, -1, 260, 261, 262, + 263, 264, 265, -1, -1, 123, -1, -1, 126, -1, + -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, + 313, -1, -1, 286, 33, -1, 35, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, + -1, 260, 261, 262, 263, 264, 265, 340, -1, -1, + 313, -1, -1, 346, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 286, -1, -1, + -1, -1, -1, -1, 367, 368, -1, 340, -1, -1, + -1, -1, 91, 346, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 367, 368, -1, 400, -1, 402, + 403, -1, -1, -1, 123, -1, 33, 126, 35, -1, + -1, 340, -1, 40, -1, -1, 43, 346, 45, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, + 403, -1, 260, 261, 262, 263, 264, 265, 367, 368, -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, - -1, -1, -1, -1, 126, -1, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, 313, 286, 126, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, - -1, -1, -1, 340, 313, -1, -1, -1, -1, 346, + -1, -1, -1, -1, -1, -1, -1, -1, 286, -1, + -1, -1, -1, -1, 91, -1, 93, 286, -1, -1, + 33, -1, 35, 402, 403, -1, -1, 40, -1, -1, + 43, -1, 45, -1, -1, 313, -1, -1, -1, -1, + -1, -1, -1, -1, 313, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, - 367, 340, -1, -1, -1, -1, -1, 346, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, - -1, -1, -1, -1, 346, -1, -1, -1, 367, -1, - -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, - -1, -1, -1, -1, -1, 367, -1, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 402, 403, -1, -1, -1, 260, 261, - 262, 263, 264, 265, 286, -1, -1, -1, -1, -1, - 402, 403, 260, 261, 262, 263, 264, 265, -1, -1, - -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, -1, 286, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 313, -1, -1, -1, -1, -1, -1, 340, -1, - -1, -1, -1, -1, 346, 313, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, - -1, -1, -1, -1, 346, 367, -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, - -1, -1, -1, -1, -1, 367, -1, -1, -1, -1, + -1, 340, -1, -1, -1, -1, -1, 346, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 367, - 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, + 368, 260, 261, 262, 263, 264, 265, -1, 367, 368, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 126, -1, -1, -1, 286, -1, -1, + -1, -1, -1, -1, 402, 403, -1, -1, -1, -1, + -1, -1, -1, 402, 403, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 313, -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, 340, -1, -1, -1, -1, -1, 346, -1, -1, + -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 367, 368, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 402, 403, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 402, 403, -1, 313, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 260, 261, 262, + 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, + -1, -1, -1, 286, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, + 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 402, 403, 340, -1, -1, + -1, -1, -1, 346, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 367, 368, -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, 402, + 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1698,10 +1717,10 @@ class Parser extends \text\parser\generic\AbstractParser { 'T_VARIABLE', 'T_RETURN', 'T_TRY', 'T_THROW', 'T_CATCH', 'T_FINALLY', 'T_NEW', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'T_FOR', 'T_WHILE', 'T_DO', 'T_FOREACH', 'T_IN', 'T_BREAK', - 'T_CONTINUE', 'T_YIELD', NULL, NULL, 'T_IF', 'T_ELSE', 'T_SWITCH', 'T_CASE', - 'T_DEFAULT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + 'T_CONTINUE', 'T_YIELD', 'T_YIELD_FROM', NULL, 'T_IF', 'T_ELSE', 'T_SWITCH', + 'T_CASE', 'T_DEFAULT', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - 'T_GE', 'T_SE', 'T_INC', 'T_DEC', 'T_ADD_EQUAL', 'T_SUB_EQUAL', + NULL, NULL, 'T_GE', 'T_SE', 'T_INC', 'T_DEC', 'T_ADD_EQUAL', 'T_SUB_EQUAL', 'T_MUL_EQUAL', 'T_DIV_EQUAL', 'T_MOD_EQUAL', NULL, 'T_DOUBLE_COLON', 'T_EQUALS', 'T_NOT_EQUALS', 'T_DOUBLE_ARROW', 'T_BOOLEAN_OR', 'T_BOOLEAN_AND', 'T_CONCAT_EQUAL', 'T_OR_EQUAL', 'T_AND_EQUAL', @@ -1861,7 +1880,7 @@ public function yyparse($yyLex) { // Actions switch ($yyN) { - case 1: #line 188 "src/main/jay/grammars/xp.jay" + case 1: #line 190 "src/main/jay/grammars/xp.jay" { $yyVal= new ParseTree(); $yyVal->origin= $yyLex->fileName; @@ -1870,54 +1889,54 @@ public function yyparse($yyLex) { $yyVal->declaration= $yyVals[0+$yyTop]; } break; - case 3: #line 200 "src/main/jay/grammars/xp.jay" + case 3: #line 202 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new PackageNode()); } break; - case 4: #line 200 "src/main/jay/grammars/xp.jay" + case 4: #line 202 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->name= $yyVals[-1+$yyTop]; } break; - case 7: #line 211 "src/main/jay/grammars/xp.jay" + case 7: #line 213 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 8: #line 212 "src/main/jay/grammars/xp.jay" + case 8: #line 214 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 9: #line 216 "src/main/jay/grammars/xp.jay" + case 9: #line 218 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 10: #line 219 "src/main/jay/grammars/xp.jay" + case 10: #line 221 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new NativeImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 11: #line 222 "src/main/jay/grammars/xp.jay" + case 11: #line 224 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StaticImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 12: #line 225 "src/main/jay/grammars/xp.jay" + case 12: #line 227 "src/main/jay/grammars/xp.jay" { $this->error(E_WARNING, 'Deprecated static import form used', array($yyVals[-3+$yyTop].'::'.$yyVals[-1+$yyTop])); $yyVal= $yyLex->create(new StaticImportNode(array('name' => $yyVals[-3+$yyTop].'.'.$yyVals[-1+$yyTop]))); } break; - case 16: #line 238 "src/main/jay/grammars/xp.jay" + case 16: #line 240 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 18: #line 243 "src/main/jay/grammars/xp.jay" + case 18: #line 245 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 19: #line 244 "src/main/jay/grammars/xp.jay" + case 19: #line 246 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 20: #line 250 "src/main/jay/grammars/xp.jay" + case 20: #line 252 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ClassNode(), TRUE); } break; - case 21: #line 250 "src/main/jay/grammars/xp.jay" + case 21: #line 252 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1928,10 +1947,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 22: #line 259 "src/main/jay/grammars/xp.jay" + case 22: #line 261 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new EnumNode(), TRUE); } break; - case 23: #line 259 "src/main/jay/grammars/xp.jay" + case 23: #line 261 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1942,10 +1961,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 24: #line 268 "src/main/jay/grammars/xp.jay" + case 24: #line 270 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InterfaceNode(), TRUE); } break; - case 25: #line 268 "src/main/jay/grammars/xp.jay" + case 25: #line 270 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->modifiers= $yyVals[-7+$yyTop][0]; $yyVals[-6+$yyTop]->annotations= $yyVals[-7+$yyTop][1]; @@ -1955,78 +1974,78 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-6+$yyTop]; } break; - case 26: #line 279 "src/main/jay/grammars/xp.jay" + case 26: #line 281 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 27: #line 280 "src/main/jay/grammars/xp.jay" + case 27: #line 282 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 28: #line 284 "src/main/jay/grammars/xp.jay" + case 28: #line 286 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 29: #line 285 "src/main/jay/grammars/xp.jay" + case 29: #line 287 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 30: #line 289 "src/main/jay/grammars/xp.jay" + case 30: #line 291 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 31: #line 290 "src/main/jay/grammars/xp.jay" + case 31: #line 292 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 32: #line 294 "src/main/jay/grammars/xp.jay" + case 32: #line 296 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 33: #line 295 "src/main/jay/grammars/xp.jay" + case 33: #line 297 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 34: #line 299 "src/main/jay/grammars/xp.jay" + case 34: #line 301 "src/main/jay/grammars/xp.jay" { $yyVal[]= $yyVals[0+$yyTop]; } break; - case 35: #line 300 "src/main/jay/grammars/xp.jay" + case 35: #line 302 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 36: #line 304 "src/main/jay/grammars/xp.jay" + case 36: #line 306 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 37: #line 305 "src/main/jay/grammars/xp.jay" + case 37: #line 307 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 38: #line 306 "src/main/jay/grammars/xp.jay" + case 38: #line 308 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StaticInitializerNode($yyVals[-1+$yyTop])); } break; - case 39: #line 310 "src/main/jay/grammars/xp.jay" + case 39: #line 312 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 40: #line 311 "src/main/jay/grammars/xp.jay" + case 40: #line 313 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 41: #line 312 "src/main/jay/grammars/xp.jay" + case 41: #line 314 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 42: #line 316 "src/main/jay/grammars/xp.jay" + case 42: #line 318 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 43: #line 317 "src/main/jay/grammars/xp.jay" + case 43: #line 319 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 44: #line 321 "src/main/jay/grammars/xp.jay" + case 44: #line 323 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new EnumMemberNode(array('name' => $yyVals[0+$yyTop]))); } break; - case 45: #line 321 "src/main/jay/grammars/xp.jay" + case 45: #line 323 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]->body= $yyVals[0+$yyTop]; } break; - case 46: #line 324 "src/main/jay/grammars/xp.jay" + case 46: #line 326 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new EnumMemberNode(array('name' => $yyVals[0+$yyTop]))); } break; - case 47: #line 324 "src/main/jay/grammars/xp.jay" + case 47: #line 326 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->value= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->body= $yyVals[0+$yyTop]; } break; - case 48: #line 334 "src/main/jay/grammars/xp.jay" + case 48: #line 336 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new FieldNode()); $yyVal->modifiers= $yyVals[-4+$yyTop][0]; $yyVal->annotations= $yyVals[-4+$yyTop][1]; @@ -2035,7 +2054,7 @@ public function yyparse($yyLex) { $yyVal->initialization= $yyVals[-1+$yyTop]; } break; - case 49: #line 341 "src/main/jay/grammars/xp.jay" + case 49: #line 343 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->modifiers= $yyVals[-5+$yyTop][0]; $yyVals[-3+$yyTop]->annotations= $yyVals[-5+$yyTop][1]; @@ -2044,39 +2063,39 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-3+$yyTop]; } break; - case 50: #line 348 "src/main/jay/grammars/xp.jay" + case 50: #line 350 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ClassConstantNode($yyVals[-3+$yyTop], new TypeName($yyVals[-4+$yyTop]), $yyVals[-1+$yyTop])); } break; - case 51: #line 354 "src/main/jay/grammars/xp.jay" + case 51: #line 356 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new PropertyNode(array('name' => $yyVals[0+$yyTop]))); } break; - case 52: #line 355 "src/main/jay/grammars/xp.jay" + case 52: #line 357 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new IndexerNode(array('parameter' => $yyVals[-1+$yyTop]))); } break; - case 53: #line 359 "src/main/jay/grammars/xp.jay" + case 53: #line 361 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 54: #line 360 "src/main/jay/grammars/xp.jay" + case 54: #line 362 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 55: #line 364 "src/main/jay/grammars/xp.jay" + case 55: #line 366 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-1+$yyTop]=> NULL); } break; - case 56: #line 365 "src/main/jay/grammars/xp.jay" + case 56: #line 367 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-3+$yyTop] => $yyVals[-1+$yyTop]); } break; - case 57: #line 369 "src/main/jay/grammars/xp.jay" + case 57: #line 371 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 58: #line 370 "src/main/jay/grammars/xp.jay" + case 58: #line 372 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 59: #line 376 "src/main/jay/grammars/xp.jay" + case 59: #line 378 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new MethodNode(), TRUE); } break; - case 60: #line 376 "src/main/jay/grammars/xp.jay" + case 60: #line 378 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -2089,10 +2108,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 61: #line 387 "src/main/jay/grammars/xp.jay" + case 61: #line 389 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new MethodNode(), TRUE); } break; - case 62: #line 387 "src/main/jay/grammars/xp.jay" + case 62: #line 389 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -2105,10 +2124,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 63: #line 398 "src/main/jay/grammars/xp.jay" + case 63: #line 400 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 64: #line 398 "src/main/jay/grammars/xp.jay" + case 64: #line 400 "src/main/jay/grammars/xp.jay" { /* Assert only certain methods are allowed here. This could be done by making*/ /* __construct and friends keywords - or this way!*/ @@ -2135,10 +2154,10 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 65: #line 423 "src/main/jay/grammars/xp.jay" + case 65: #line 425 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new OperatorNode(), TRUE); } break; - case 66: #line 423 "src/main/jay/grammars/xp.jay" + case 66: #line 425 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-9+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-9+$yyTop][1]; @@ -2150,68 +2169,68 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 67: #line 436 "src/main/jay/grammars/xp.jay" + case 67: #line 438 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[-2+$yyTop]); } break; - case 68: #line 437 "src/main/jay/grammars/xp.jay" + case 68: #line 439 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 69: #line 441 "src/main/jay/grammars/xp.jay" + case 69: #line 443 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 70: #line 442 "src/main/jay/grammars/xp.jay" + case 70: #line 444 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 71: #line 446 "src/main/jay/grammars/xp.jay" + case 71: #line 448 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 72: #line 449 "src/main/jay/grammars/xp.jay" + case 72: #line 451 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop] && $yyVals[-3+$yyTop]->parameters= array('default' => $yyVals[-1+$yyTop]); $yyVal= $yyVals[-3+$yyTop]; } break; - case 73: #line 453 "src/main/jay/grammars/xp.jay" + case 73: #line 455 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->parameters= $yyVals[-1+$yyTop]; $yyVal= $yyVals[-3+$yyTop]; } break; - case 74: #line 460 "src/main/jay/grammars/xp.jay" + case 74: #line 462 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->target= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 75: #line 465 "src/main/jay/grammars/xp.jay" + case 75: #line 467 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->target= '$'.$yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 76: #line 470 "src/main/jay/grammars/xp.jay" + case 76: #line 472 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[0+$yyTop]; } break; - case 77: #line 477 "src/main/jay/grammars/xp.jay" + case 77: #line 479 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 78: #line 478 "src/main/jay/grammars/xp.jay" + case 78: #line 480 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 79: #line 482 "src/main/jay/grammars/xp.jay" + case 79: #line 484 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 80: #line 483 "src/main/jay/grammars/xp.jay" + case 80: #line 485 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 82: #line 488 "src/main/jay/grammars/xp.jay" + case 82: #line 490 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; @@ -2219,101 +2238,101 @@ public function yyparse($yyLex) { $yyVal->body= NULL; } break; - case 83: #line 494 "src/main/jay/grammars/xp.jay" + case 83: #line 496 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 84: #line 497 "src/main/jay/grammars/xp.jay" + case 84: #line 499 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 85: #line 503 "src/main/jay/grammars/xp.jay" + case 85: #line 505 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 86: #line 504 "src/main/jay/grammars/xp.jay" + case 86: #line 506 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 87: #line 505 "src/main/jay/grammars/xp.jay" + case 87: #line 507 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyLex->create(new ReturnNode($yyVals[-1+$yyTop]))); } break; - case 88: #line 509 "src/main/jay/grammars/xp.jay" + case 88: #line 511 "src/main/jay/grammars/xp.jay" { $yyVal= array(NULL, NULL); } break; - case 89: #line 510 "src/main/jay/grammars/xp.jay" + case 89: #line 512 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop][0]['type']); } break; - case 90: #line 511 "src/main/jay/grammars/xp.jay" + case 90: #line 513 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 91: #line 515 "src/main/jay/grammars/xp.jay" + case 91: #line 517 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 92: #line 516 "src/main/jay/grammars/xp.jay" + case 92: #line 518 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 93: #line 520 "src/main/jay/grammars/xp.jay" + case 93: #line 522 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 94: #line 521 "src/main/jay/grammars/xp.jay" + case 94: #line 523 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 95: #line 525 "src/main/jay/grammars/xp.jay" + case 95: #line 527 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[-1+$yyTop]), $yyVals[-2+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 96: #line 526 "src/main/jay/grammars/xp.jay" + case 96: #line 528 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[0+$yyTop], 'vararg' => TRUE), $yyVals[-2+$yyTop]); } break; - case 97: #line 527 "src/main/jay/grammars/xp.jay" + case 97: #line 529 "src/main/jay/grammars/xp.jay" { $yyVal= array('assign' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 98: #line 528 "src/main/jay/grammars/xp.jay" + case 98: #line 530 "src/main/jay/grammars/xp.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => TypeName::$VAR, 'check' => FALSE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 99: #line 532 "src/main/jay/grammars/xp.jay" + case 99: #line 534 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[0+$yyTop], 'check' => TRUE); } break; - case 100: #line 533 "src/main/jay/grammars/xp.jay" + case 100: #line 535 "src/main/jay/grammars/xp.jay" { $yyVal= array('type' => $yyVals[-1+$yyTop], 'check' => FALSE); } break; - case 101: #line 537 "src/main/jay/grammars/xp.jay" + case 101: #line 539 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 102: #line 538 "src/main/jay/grammars/xp.jay" + case 102: #line 540 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 109: #line 557 "src/main/jay/grammars/xp.jay" + case 109: #line 559 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 111: #line 562 "src/main/jay/grammars/xp.jay" + case 111: #line 564 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 112: #line 563 "src/main/jay/grammars/xp.jay" + case 112: #line 565 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 113: #line 567 "src/main/jay/grammars/xp.jay" + case 113: #line 569 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 114: #line 567 "src/main/jay/grammars/xp.jay" + case 114: #line 569 "src/main/jay/grammars/xp.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 115: #line 570 "src/main/jay/grammars/xp.jay" + case 115: #line 572 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 116: #line 570 "src/main/jay/grammars/xp.jay" + case 116: #line 572 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->condition= $yyVals[-3+$yyTop]; $yyVals[-6+$yyTop]->statements= $yyVals[-1+$yyTop]; $yyVals[-6+$yyTop]->otherwise= $yyVals[0+$yyTop]; } break; - case 117: #line 575 "src/main/jay/grammars/xp.jay" + case 117: #line 577 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 118: #line 575 "src/main/jay/grammars/xp.jay" + case 118: #line 577 "src/main/jay/grammars/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2325,168 +2344,168 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 119: #line 585 "src/main/jay/grammars/xp.jay" + case 119: #line 587 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 120: #line 585 "src/main/jay/grammars/xp.jay" + case 120: #line 587 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->assignment= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 121: #line 590 "src/main/jay/grammars/xp.jay" + case 121: #line 592 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 122: #line 590 "src/main/jay/grammars/xp.jay" + case 122: #line 592 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 123: #line 594 "src/main/jay/grammars/xp.jay" + case 123: #line 596 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 124: #line 594 "src/main/jay/grammars/xp.jay" + case 124: #line 596 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 125: #line 598 "src/main/jay/grammars/xp.jay" + case 125: #line 600 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 126: #line 598 "src/main/jay/grammars/xp.jay" + case 126: #line 600 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 127: #line 602 "src/main/jay/grammars/xp.jay" + case 127: #line 604 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 129: #line 603 "src/main/jay/grammars/xp.jay" + case 129: #line 605 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 131: #line 604 "src/main/jay/grammars/xp.jay" + case 131: #line 606 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 132: #line 604 "src/main/jay/grammars/xp.jay" + case 132: #line 606 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 133: #line 607 "src/main/jay/grammars/xp.jay" + case 133: #line 609 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 134: #line 607 "src/main/jay/grammars/xp.jay" + case 134: #line 609 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->handling= $yyVals[0+$yyTop]; $yyVal= $yyVals[-4+$yyTop]; } break; - case 135: #line 612 "src/main/jay/grammars/xp.jay" + case 135: #line 614 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArmNode($yyVals[-4+$yyTop]['i'], $yyVals[-4+$yyTop]['v'], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 136: #line 615 "src/main/jay/grammars/xp.jay" + case 136: #line 617 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new WithNode($yyVals[-4+$yyTop], $yyVals[-1+$yyTop] ? $yyVals[-1+$yyTop] : array())); } break; - case 138: #line 622 "src/main/jay/grammars/xp.jay" + case 138: #line 624 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 139: #line 623 "src/main/jay/grammars/xp.jay" + case 139: #line 625 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge_recursive($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 140: #line 627 "src/main/jay/grammars/xp.jay" + case 140: #line 629 "src/main/jay/grammars/xp.jay" { $yyVal= array('i' => array(), 'v' => array(new VariableNode($yyVals[0+$yyTop]))); } break; - case 141: #line 630 "src/main/jay/grammars/xp.jay" + case 141: #line 632 "src/main/jay/grammars/xp.jay" { $v= new VariableNode($yyVals[-2+$yyTop]); $yyVal= array('i' => array($yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => $v, 'expression' => $yyVals[0+$yyTop])))), 'v' => array($v)); } break; - case 142: #line 637 "src/main/jay/grammars/xp.jay" + case 142: #line 639 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 143: #line 638 "src/main/jay/grammars/xp.jay" + case 143: #line 640 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 144: #line 642 "src/main/jay/grammars/xp.jay" + case 144: #line 644 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode(array('op' => '=', 'variable' => new VariableNode($yyVals[-2+$yyTop]), 'expression' => $yyVals[0+$yyTop]))); } break; - case 145: #line 648 "src/main/jay/grammars/xp.jay" + case 145: #line 650 "src/main/jay/grammars/xp.jay" { $yyVal= array('value' => $yyVals[0+$yyTop]); } break; - case 146: #line 649 "src/main/jay/grammars/xp.jay" + case 146: #line 651 "src/main/jay/grammars/xp.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 147: #line 653 "src/main/jay/grammars/xp.jay" + case 147: #line 655 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 149: #line 658 "src/main/jay/grammars/xp.jay" + case 149: #line 660 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 150: #line 659 "src/main/jay/grammars/xp.jay" + case 150: #line 661 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 151: #line 663 "src/main/jay/grammars/xp.jay" + case 151: #line 665 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 152: #line 663 "src/main/jay/grammars/xp.jay" + case 152: #line 665 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 153: #line 667 "src/main/jay/grammars/xp.jay" + case 153: #line 669 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 154: #line 667 "src/main/jay/grammars/xp.jay" + case 154: #line 669 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 155: #line 673 "src/main/jay/grammars/xp.jay" + case 155: #line 675 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 156: #line 674 "src/main/jay/grammars/xp.jay" + case 156: #line 676 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 157: #line 678 "src/main/jay/grammars/xp.jay" + case 157: #line 680 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 158: #line 679 "src/main/jay/grammars/xp.jay" + case 158: #line 681 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 159: #line 679 "src/main/jay/grammars/xp.jay" + case 159: #line 681 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 160: #line 684 "src/main/jay/grammars/xp.jay" + case 160: #line 686 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop] === NULL || $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 161: #line 685 "src/main/jay/grammars/xp.jay" + case 161: #line 687 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 162: #line 689 "src/main/jay/grammars/xp.jay" + case 162: #line 691 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 163: #line 690 "src/main/jay/grammars/xp.jay" + case 163: #line 692 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 164: #line 694 "src/main/jay/grammars/xp.jay" + case 164: #line 696 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 165: #line 694 "src/main/jay/grammars/xp.jay" + case 165: #line 696 "src/main/jay/grammars/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2499,36 +2518,36 @@ public function yyparse($yyLex) { } } break; - case 166: #line 708 "src/main/jay/grammars/xp.jay" + case 166: #line 710 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 167: #line 709 "src/main/jay/grammars/xp.jay" + case 167: #line 711 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 168: #line 713 "src/main/jay/grammars/xp.jay" + case 168: #line 715 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 170: #line 718 "src/main/jay/grammars/xp.jay" + case 170: #line 720 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new FinallyNode()); } break; - case 171: #line 718 "src/main/jay/grammars/xp.jay" + case 171: #line 720 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; - case 172: #line 726 "src/main/jay/grammars/xp.jay" + case 172: #line 728 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 174: #line 731 "src/main/jay/grammars/xp.jay" + case 174: #line 733 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 175: #line 732 "src/main/jay/grammars/xp.jay" + case 175: #line 734 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 176: #line 736 "src/main/jay/grammars/xp.jay" + case 176: #line 738 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 178: #line 741 "src/main/jay/grammars/xp.jay" + case 178: #line 743 "src/main/jay/grammars/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2536,52 +2555,52 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 179: #line 747 "src/main/jay/grammars/xp.jay" + case 179: #line 749 "src/main/jay/grammars/xp.jay" { $yyVal= new ArrayNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->values= (array)$yyVals[-1+$yyTop]; } break; - case 180: #line 752 "src/main/jay/grammars/xp.jay" + case 180: #line 754 "src/main/jay/grammars/xp.jay" { $yyVal= new MapNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->elements= (array)$yyVals[-1+$yyTop]; } break; - case 181: #line 760 "src/main/jay/grammars/xp.jay" + case 181: #line 762 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 182: #line 763 "src/main/jay/grammars/xp.jay" + case 182: #line 765 "src/main/jay/grammars/xp.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 183: #line 766 "src/main/jay/grammars/xp.jay" + case 183: #line 768 "src/main/jay/grammars/xp.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 184: #line 769 "src/main/jay/grammars/xp.jay" + case 184: #line 771 "src/main/jay/grammars/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 185: #line 775 "src/main/jay/grammars/xp.jay" + case 185: #line 777 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= array('name' => $yyVals[0+$yyTop]); } break; - case 186: #line 775 "src/main/jay/grammars/xp.jay" + case 186: #line 777 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new LambdaNode(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 187: #line 778 "src/main/jay/grammars/xp.jay" + case 187: #line 780 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 188: #line 778 "src/main/jay/grammars/xp.jay" + case 188: #line 780 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2589,7 +2608,7 @@ public function yyparse($yyLex) { } } break; - case 189: #line 784 "src/main/jay/grammars/xp.jay" + case 189: #line 786 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2599,12 +2618,12 @@ public function yyparse($yyLex) { } } break; - case 190: #line 792 "src/main/jay/grammars/xp.jay" + case 190: #line 794 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new LambdaNode($yyVals[-2+$yyTop], $yyVals[0+$yyTop])); } break; - case 191: #line 795 "src/main/jay/grammars/xp.jay" + case 191: #line 797 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2612,10 +2631,10 @@ public function yyparse($yyLex) { } } break; - case 192: #line 801 "src/main/jay/grammars/xp.jay" + case 192: #line 803 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 193: #line 801 "src/main/jay/grammars/xp.jay" + case 193: #line 803 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2626,10 +2645,10 @@ public function yyparse($yyLex) { } } break; - case 194: #line 810 "src/main/jay/grammars/xp.jay" + case 194: #line 812 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 195: #line 810 "src/main/jay/grammars/xp.jay" + case 195: #line 812 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2641,10 +2660,10 @@ public function yyparse($yyLex) { } } break; - case 196: #line 820 "src/main/jay/grammars/xp.jay" + case 196: #line 822 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 197: #line 820 "src/main/jay/grammars/xp.jay" + case 197: #line 822 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2655,58 +2674,63 @@ public function yyparse($yyLex) { } } break; - case 198: #line 829 "src/main/jay/grammars/xp.jay" + case 198: #line 831 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); } break; - case 199: #line 832 "src/main/jay/grammars/xp.jay" + case 199: #line 834 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode()); } break; - case 200: #line 835 "src/main/jay/grammars/xp.jay" + case 200: #line 837 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop])); } break; - case 201: #line 838 "src/main/jay/grammars/xp.jay" + case 201: #line 840 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop], $yyVals[-2+$yyTop])); } break; - case 202: #line 841 "src/main/jay/grammars/xp.jay" + case 202: #line 843 "src/main/jay/grammars/xp.jay" + { + $yyVal= $yyLex->create(new YieldFromNode($yyVals[0+$yyTop])); + } break; + + case 203: #line 846 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new CastNode(array_merge($yyVals[0+$yyTop], array('expression' => $yyVals[-2+$yyTop])))); } break; - case 203: #line 844 "src/main/jay/grammars/xp.jay" + case 204: #line 849 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 204: #line 847 "src/main/jay/grammars/xp.jay" + case 205: #line 852 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 205: #line 850 "src/main/jay/grammars/xp.jay" + case 206: #line 855 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 206: #line 853 "src/main/jay/grammars/xp.jay" + case 207: #line 858 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 207: #line 856 "src/main/jay/grammars/xp.jay" + case 208: #line 861 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 208: #line 860 "src/main/jay/grammars/xp.jay" + case 209: #line 865 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2714,7 +2738,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 209: #line 866 "src/main/jay/grammars/xp.jay" + case 210: #line 871 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2722,7 +2746,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 210: #line 872 "src/main/jay/grammars/xp.jay" + case 211: #line 877 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2730,17 +2754,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 211: #line 878 "src/main/jay/grammars/xp.jay" + case 212: #line 883 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceOfNode()); $yyVal->expression= $yyVals[-2+$yyTop]; $yyVal->type= $yyVals[0+$yyTop]; } break; - case 212: #line 883 "src/main/jay/grammars/xp.jay" + case 213: #line 888 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]= $yyLex->create(new LambdaNode($yyVals[-2+$yyTop], $yyVals[-1+$yyTop])); } break; - case 213: #line 883 "src/main/jay/grammars/xp.jay" + case 214: #line 888 "src/main/jay/grammars/xp.jay" { $this->error(E_WARNING, 'Deprecated lambda syntax used', array('#{ ... }')); if ($yyVals[0+$yyTop]) { @@ -2749,28 +2773,28 @@ public function yyparse($yyLex) { } } break; - case 214: #line 893 "src/main/jay/grammars/xp.jay" + case 215: #line 898 "src/main/jay/grammars/xp.jay" { $yyVal= array(new ReturnNode($yyVals[0+$yyTop])); } break; - case 215: #line 894 "src/main/jay/grammars/xp.jay" + case 216: #line 899 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 216: #line 898 "src/main/jay/grammars/xp.jay" + case 217: #line 903 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 218: #line 903 "src/main/jay/grammars/xp.jay" + case 219: #line 908 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 219: #line 904 "src/main/jay/grammars/xp.jay" + case 220: #line 909 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 220: #line 908 "src/main/jay/grammars/xp.jay" + case 221: #line 913 "src/main/jay/grammars/xp.jay" { $yyVal= array('name' => $yyVals[0+$yyTop]); } break; - case 221: #line 909 "src/main/jay/grammars/xp.jay" + case 222: #line 914 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array('name' => $yyVals[-1+$yyTop]), $yyVals[-2+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 222: #line 913 "src/main/jay/grammars/xp.jay" + case 223: #line 918 "src/main/jay/grammars/xp.jay" { switch ($yyVals[0+$yyTop]) { case 'true': $yyVal= $yyLex->create(new BooleanNode(TRUE)); break; case 'false': $yyVal= $yyLex->create(new BooleanNode(FALSE)); break; @@ -2778,300 +2802,300 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 223: #line 919 "src/main/jay/grammars/xp.jay" + case 224: #line 924 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 224: #line 919 "src/main/jay/grammars/xp.jay" + case 225: #line 924 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 225: #line 920 "src/main/jay/grammars/xp.jay" + case 226: #line 925 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 226: #line 921 "src/main/jay/grammars/xp.jay" + case 227: #line 926 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 227: #line 922 "src/main/jay/grammars/xp.jay" + case 228: #line 927 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 228: #line 923 "src/main/jay/grammars/xp.jay" + case 229: #line 928 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 229: #line 924 "src/main/jay/grammars/xp.jay" + case 230: #line 929 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 230: #line 928 "src/main/jay/grammars/xp.jay" + case 231: #line 933 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => (array)$yyVals[0+$yyTop]))); } break; - case 231: #line 931 "src/main/jay/grammars/xp.jay" + case 232: #line 936 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => (array)$yyVals[0+$yyTop]))); } break; - case 232: #line 937 "src/main/jay/grammars/xp.jay" + case 233: #line 942 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 234: #line 942 "src/main/jay/grammars/xp.jay" + case 235: #line 947 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 235: #line 943 "src/main/jay/grammars/xp.jay" + case 236: #line 948 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 236: #line 947 "src/main/jay/grammars/xp.jay" + case 237: #line 952 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 238: #line 952 "src/main/jay/grammars/xp.jay" + case 239: #line 957 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 239: #line 953 "src/main/jay/grammars/xp.jay" + case 240: #line 958 "src/main/jay/grammars/xp.jay" { $yyVal= array(new StringNode($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 240: #line 957 "src/main/jay/grammars/xp.jay" + case 241: #line 962 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 241: #line 958 "src/main/jay/grammars/xp.jay" + case 242: #line 963 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 242: #line 959 "src/main/jay/grammars/xp.jay" + case 243: #line 964 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 243: #line 960 "src/main/jay/grammars/xp.jay" + case 244: #line 965 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 244: #line 961 "src/main/jay/grammars/xp.jay" + case 245: #line 966 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 245: #line 962 "src/main/jay/grammars/xp.jay" + case 246: #line 967 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 246: #line 963 "src/main/jay/grammars/xp.jay" + case 247: #line 968 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 247: #line 964 "src/main/jay/grammars/xp.jay" + case 248: #line 969 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 248: #line 965 "src/main/jay/grammars/xp.jay" + case 249: #line 970 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 249: #line 966 "src/main/jay/grammars/xp.jay" + case 250: #line 971 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 250: #line 967 "src/main/jay/grammars/xp.jay" + case 251: #line 972 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 251: #line 968 "src/main/jay/grammars/xp.jay" + case 252: #line 973 "src/main/jay/grammars/xp.jay" { $yyVal= array('variable' => $yyVals[-3+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 252: #line 972 "src/main/jay/grammars/xp.jay" + case 253: #line 977 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 253: #line 973 "src/main/jay/grammars/xp.jay" + case 254: #line 978 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 254: #line 974 "src/main/jay/grammars/xp.jay" + case 255: #line 979 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 255: #line 975 "src/main/jay/grammars/xp.jay" + case 256: #line 980 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 256: #line 976 "src/main/jay/grammars/xp.jay" + case 257: #line 981 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 257: #line 977 "src/main/jay/grammars/xp.jay" + case 258: #line 982 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 258: #line 978 "src/main/jay/grammars/xp.jay" + case 259: #line 983 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 259: #line 979 "src/main/jay/grammars/xp.jay" + case 260: #line 984 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].'='); } break; - case 260: #line 983 "src/main/jay/grammars/xp.jay" + case 261: #line 988 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 261: #line 984 "src/main/jay/grammars/xp.jay" + case 262: #line 989 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 262: #line 985 "src/main/jay/grammars/xp.jay" + case 263: #line 990 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 263: #line 986 "src/main/jay/grammars/xp.jay" + case 264: #line 991 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 264: #line 987 "src/main/jay/grammars/xp.jay" + case 265: #line 992 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 265: #line 988 "src/main/jay/grammars/xp.jay" + case 266: #line 993 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 266: #line 989 "src/main/jay/grammars/xp.jay" + case 267: #line 994 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 267: #line 990 "src/main/jay/grammars/xp.jay" + case 268: #line 995 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 268: #line 991 "src/main/jay/grammars/xp.jay" + case 269: #line 996 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 269: #line 992 "src/main/jay/grammars/xp.jay" + case 270: #line 997 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 270: #line 993 "src/main/jay/grammars/xp.jay" + case 271: #line 998 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-3+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-2+$yyTop].$yyVals[-1+$yyTop]); } break; - case 271: #line 994 "src/main/jay/grammars/xp.jay" + case 272: #line 999 "src/main/jay/grammars/xp.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 272: #line 998 "src/main/jay/grammars/xp.jay" + case 273: #line 1003 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 273: #line 999 "src/main/jay/grammars/xp.jay" + case 274: #line 1004 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 274: #line 1000 "src/main/jay/grammars/xp.jay" + case 275: #line 1005 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 275: #line 1001 "src/main/jay/grammars/xp.jay" + case 276: #line 1006 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 276: #line 1002 "src/main/jay/grammars/xp.jay" + case 277: #line 1007 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 277: #line 1003 "src/main/jay/grammars/xp.jay" + case 278: #line 1008 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 278: #line 1007 "src/main/jay/grammars/xp.jay" + case 279: #line 1012 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 279: #line 1008 "src/main/jay/grammars/xp.jay" + case 280: #line 1013 "src/main/jay/grammars/xp.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 280: #line 1013 "src/main/jay/grammars/xp.jay" + case 281: #line 1018 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 282: #line 1018 "src/main/jay/grammars/xp.jay" + case 283: #line 1023 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 283: #line 1019 "src/main/jay/grammars/xp.jay" + case 284: #line 1024 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop][1]->target= $yyVals[-1+$yyTop]; $yyVal= array($yyVals[0+$yyTop][0], $yyVals[-1+$yyTop]); } break; - case 284: #line 1023 "src/main/jay/grammars/xp.jay" + case 285: #line 1028 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode(NULL)); } break; - case 285: #line 1023 "src/main/jay/grammars/xp.jay" + case 286: #line 1028 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 286: #line 1026 "src/main/jay/grammars/xp.jay" + case 287: #line 1031 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop], $yyVals[-1+$yyTop])); } break; - case 287: #line 1029 "src/main/jay/grammars/xp.jay" + case 288: #line 1034 "src/main/jay/grammars/xp.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop], NULL, $yyVals[-2+$yyTop])); } break; - case 288: #line 1029 "src/main/jay/grammars/xp.jay" + case 289: #line 1034 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 289: #line 1032 "src/main/jay/grammars/xp.jay" + case 290: #line 1037 "src/main/jay/grammars/xp.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } break; - case 290: #line 1032 "src/main/jay/grammars/xp.jay" + case 291: #line 1037 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 291: #line 1038 "src/main/jay/grammars/xp.jay" + case 292: #line 1043 "src/main/jay/grammars/xp.jay" { $yyVal= FALSE; } break; - case 292: #line 1039 "src/main/jay/grammars/xp.jay" + case 293: #line 1044 "src/main/jay/grammars/xp.jay" { $yyVal= TRUE; } break; - case 300: #line 1058 "src/main/jay/grammars/xp.jay" + case 301: #line 1063 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 301: #line 1059 "src/main/jay/grammars/xp.jay" + case 302: #line 1064 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 302: #line 1063 "src/main/jay/grammars/xp.jay" + case 303: #line 1068 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[-2+$yyTop]->compoundName().'[]'); } break; - case 303: #line 1067 "src/main/jay/grammars/xp.jay" + case 304: #line 1072 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName('[:'.$yyVals[-1+$yyTop]->compoundName().']'); } break; - case 304: #line 1071 "src/main/jay/grammars/xp.jay" + case 305: #line 1076 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 305: #line 1072 "src/main/jay/grammars/xp.jay" + case 306: #line 1077 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 307: #line 1077 "src/main/jay/grammars/xp.jay" + case 308: #line 1082 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 308: #line 1081 "src/main/jay/grammars/xp.jay" + case 309: #line 1086 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 309: #line 1082 "src/main/jay/grammars/xp.jay" + case 310: #line 1087 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 310: #line 1083 "src/main/jay/grammars/xp.jay" + case 311: #line 1088 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 311: #line 1084 "src/main/jay/grammars/xp.jay" + case 312: #line 1089 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge($yyVals[-3+$yyTop], array($yyVals[-1+$yyTop])); } break; - case 312: #line 1088 "src/main/jay/grammars/xp.jay" + case 313: #line 1093 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName('->'.$yyVals[-1+$yyTop]->compoundName(), null); } break; - case 313: #line 1089 "src/main/jay/grammars/xp.jay" + case 314: #line 1094 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName('->'.$yyVals[-1+$yyTop]->compoundName(), $yyVals[-3+$yyTop]); } break; - case 314: #line 1093 "src/main/jay/grammars/xp.jay" + case 315: #line 1098 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 315: #line 1094 "src/main/jay/grammars/xp.jay" + case 316: #line 1099 "src/main/jay/grammars/xp.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 316: #line 1100 "src/main/jay/grammars/xp.jay" + case 317: #line 1105 "src/main/jay/grammars/xp.jay" { $yyVal= 0; } break; - case 317: #line 1101 "src/main/jay/grammars/xp.jay" + case 318: #line 1106 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 318: #line 1105 "src/main/jay/grammars/xp.jay" + case 319: #line 1110 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 319: #line 1106 "src/main/jay/grammars/xp.jay" + case 320: #line 1111 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 320: #line 1110 "src/main/jay/grammars/xp.jay" + case 321: #line 1115 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 321: #line 1111 "src/main/jay/grammars/xp.jay" + case 322: #line 1116 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 322: #line 1112 "src/main/jay/grammars/xp.jay" + case 323: #line 1117 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 323: #line 1113 "src/main/jay/grammars/xp.jay" + case 324: #line 1118 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 324: #line 1114 "src/main/jay/grammars/xp.jay" + case 325: #line 1119 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 325: #line 1115 "src/main/jay/grammars/xp.jay" + case 326: #line 1120 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 326: #line 1116 "src/main/jay/grammars/xp.jay" + case 327: #line 1121 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 327: #line 1117 "src/main/jay/grammars/xp.jay" + case 328: #line 1122 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 3075 "-" +#line 3099 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php index 16f716ba0..61e52d0e8 100755 --- a/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/GeneratorTest.class.php @@ -36,4 +36,28 @@ public function yield_key_and_value() { iterator_to_array($this->run('yield "number" : 1;')) ); } + + #[@test] + public function yield_from_generator() { + $this->assertEquals( + [0, 1, 2, 3], + iterator_to_array($this->run('yield 0; yield from (() -> { yield 1; yield 2; })(); yield 3;')) + ); + } + + #[@test] + public function yield_from_iterator() { + $this->assertEquals( + [0, 1, 2, 3], + iterator_to_array($this->run('yield 0; yield from new php.ArrayIterator([1, 2]); yield 3;')) + ); + } + + #[@test] + public function yield_from_an_array() { + $this->assertEquals( + [0, 1, 2, 3], + iterator_to_array($this->run('yield 0; yield from [1, 2]; yield 3;')) + ); + } } \ No newline at end of file diff --git a/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php b/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php index 9094bf353..40e3c3934 100755 --- a/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/php/GeneratorTest.class.php @@ -1,8 +1,11 @@ parse('yield "number" => 1;') ); } + + #[@test] + public function yield_from() { + $this->assertEquals( + [new YieldFromNode(new StaticMethodCallNode(new TypeName('self'), 'values', []))], + $this->parse('yield from self::values();') + ); + } } \ No newline at end of file diff --git a/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php b/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php index e44ef9a9c..6bb5e32ff 100755 --- a/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php +++ b/src/test/php/net/xp_lang/tests/syntax/xp/GeneratorTest.class.php @@ -1,8 +1,11 @@ parse('yield "number" : 1;') ); } + + #[@test] + public function yield_from() { + $this->assertEquals( + [new YieldFromNode(new StaticMethodCallNode(new TypeName('self'), 'values', []))], + $this->parse('yield from self::values();') + ); + } } \ No newline at end of file