From 431f922ddb7b59161b2ddbcb7d1d4a6cb0a211db Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Sun, 20 Sep 2015 23:28:00 +0200 Subject: [PATCH 01/10] Part 1: Syntactical support --- src/main/jay/grammars/php.jay | 29 +- src/main/jay/grammars/xp.jay | 30 +- .../xp/compiler/syntax/php/Lexer.class.php | 27 +- .../xp/compiler/syntax/php/Parser.class.php | 2700 +++++++------- .../php/xp/compiler/syntax/xp/Lexer.class.php | 2 +- .../xp/compiler/syntax/xp/Parser.class.php | 3269 +++++++++-------- src/test/config/php-syntax.ini | 3 + src/test/config/xp-syntax.ini | 3 + .../execution/source/VarArgsTest.class.php | 17 +- 9 files changed, 3116 insertions(+), 2964 deletions(-) diff --git a/src/main/jay/grammars/php.jay b/src/main/jay/grammars/php.jay index d8404ce29..d0297bf02 100644 --- a/src/main/jay/grammars/php.jay +++ b/src/main/jay/grammars/php.jay @@ -76,6 +76,7 @@ use xp\compiler\ast\DynamicInstanceOfNode; use xp\compiler\ast\DynamicVariableReferenceNode; use xp\compiler\ast\NoopNode; use xp\compiler\ast\YieldNode; +use xp\compiler\ast\UnpackNode; %} %left ',' @@ -177,6 +178,7 @@ use xp\compiler\ast\YieldNode; %token T_SHR 420 %token T_SHL 421 %token T_EXP 422 +%token T_ELLIPSIS 423 %% @@ -369,7 +371,7 @@ annotationmember: annotationvalue: literal - | T_NEW typename '(' expressionlist_opt ')' { + | T_NEW typename '(' arguments ')' { $$= $yyLex->create(new InstanceCreationNode()); $$->type= $2; $$->parameters= $4; @@ -404,7 +406,9 @@ parameters: parameter: typeref T_VARIABLE initialization_opt { $$= array('name' => $2, 'type' => $1, 'check' => TRUE); $3 && $$['default']= $3; } + | typeref T_ELLIPSIS T_VARIABLE initialization_opt { $$= array('name' => $3, 'type' => $1, 'vararg' => TRUE, 'check' => TRUE); $4 && $$['default']= $4; } | T_VARIABLE initialization_opt { $$= array('name' => $1, 'type' => new TypeName('var'), 'check' => FALSE); $2 && $$['default']= $2; } + | T_ELLIPSIS T_VARIABLE initialization_opt { $$= array('name' => $2, 'type' => new TypeName('var'), 'vararg' => TRUE, 'check' => FALSE); $3 && $$['default']= $3; } ; // }}} @@ -525,6 +529,17 @@ catch: ; // }}} +arguments: + /* empty */ { $$= NULL; } + | argument { $$= [$1]; } + | argument ',' arguments { $$= $3 ? array_merge([$1], $3) : [$1]; } +; + +argument: + T_ELLIPSIS expression { $$= new UnpackNode($2); } + | expression { $$= $1; } +; + // {{{ Expressions expressionlist_opt: /* empty */ { $$= NULL; } @@ -542,12 +557,12 @@ expression_opt: ; instancecreation: - typeref '(' expressionlist_opt ')' { + typeref '(' arguments ')' { $$= new InstanceCreationNode(); $$->type= $1; $$->parameters= $3; } - | T_VARIABLE '(' expressionlist_opt ')' { + | T_VARIABLE '(' arguments ')' { $$= new DynamicInstanceCreationNode(); $$->variable= $1; $$->parameters= $3; @@ -558,7 +573,7 @@ staticmember: T_VARIABLE { $$= new StaticMemberAccessNode(NULL, $1); } - | T_WORD '(' expressionlist_opt ')' { + | T_WORD '(' arguments ')' { $$= new StaticMethodCallNode(NULL, $1, $3); } | T_WORD { @@ -596,7 +611,7 @@ expression: $$= $4; } } - | T_WORD '(' { $2= $yyLex->create(new InvocationNode($1)); } expressionlist_opt ')' chain_opt { + | T_WORD '(' { $2= $yyLex->create(new InvocationNode($1)); } arguments ')' chain_opt { $2->arguments= $4; if ($6) { $$= $6[0]; @@ -833,10 +848,10 @@ chain: | T_OBJECT_OPERATOR '{' expression '}' { $$= $yyLex->create(new DynamicVariableReferenceNode(NULL, $3)); } - | T_OBJECT_OPERATOR T_WORD '(' { $1= $yyLex->create(new MethodCallNode(NULL, $2)); } expressionlist_opt ')' { + | T_OBJECT_OPERATOR T_WORD '(' { $1= $yyLex->create(new MethodCallNode(NULL, $2)); } arguments ')' { $1->arguments= $5; } - | '(' { $1= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } expressionlist_opt ')' { + | '(' { $1= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } arguments ')' { $1->arguments= $3; } ; diff --git a/src/main/jay/grammars/xp.jay b/src/main/jay/grammars/xp.jay index 4bf48ec7a..8c1c1da5b 100644 --- a/src/main/jay/grammars/xp.jay +++ b/src/main/jay/grammars/xp.jay @@ -71,6 +71,7 @@ use xp\compiler\ast\WithNode; use xp\compiler\ast\ArmNode; use xp\compiler\ast\BracedExpressionNode; use xp\compiler\ast\YieldNode; +use xp\compiler\ast\UnpackNode; %} %left ',' @@ -126,7 +127,7 @@ use xp\compiler\ast\YieldNode; %token T_OPERATOR 320 %token T_THROWS 321 -%token T_DOTS 330 +%token T_ELLIPSIS 330 %token T_AS 331 %token T_THIS 332 %token T_CONST 334 @@ -485,7 +486,7 @@ annotationmember: annotationvalue: literal - | T_NEW typename '(' expressionlist_opt ')' { + | T_NEW typename '(' arguments ')' { $$= $yyLex->create(new InstanceCreationNode()); $$->type= $2; $$->parameters= $4; @@ -523,7 +524,7 @@ parameters: parameter: paramtyperef T_VARIABLE initialization_opt { $$= array_merge(array('name' => $2), $1); $3 && $$['default']= $3; } - | paramtyperef T_DOTS T_VARIABLE { $$= array_merge(array('name' => $3, 'vararg' => TRUE), $1); } + | paramtyperef T_ELLIPSIS T_VARIABLE { $$= array_merge(array('name' => $3, 'vararg' => TRUE), $1); } | T_VARIABLE '.' T_WORD initialization_opt { $$= array('assign' => $3); $4 && $$['default']= $4; } | T_VARIABLE initialization_opt { $$= array('name' => $1, 'type' => TypeName::$VAR, 'check' => FALSE); $2 && $$['default']= $2; } ; @@ -721,6 +722,17 @@ finally: ; // }}} +arguments: + /* empty */ { $$= NULL; } + | argument { $$= [$1]; } + | argument ',' arguments { $$= $3 ? array_merge([$1], $3) : [$1]; } +; + +argument: + T_ELLIPSIS expression { $$= new UnpackNode($2); } + | expression { $$= $1; } +; + // {{{ Expressions expressionlist_opt: /* empty */ { $$= NULL; } @@ -738,13 +750,13 @@ expression_opt: ; instancecreation: - typename '(' expressionlist_opt ')' classbody_opt { + typename '(' arguments ')' classbody_opt { $$= new InstanceCreationNode(); $$->type= $1; $$->parameters= $3; $$->body= $5; } - | arraytype '{' expressionlist_opt '}' { + | arraytype '{' arguments '}' { $$= new ArrayNode(); $$->type= $1; $$->values= (array)$3; @@ -760,7 +772,7 @@ staticmember: T_VARIABLE { $$= new StaticMemberAccessNode(NULL, $1); } - | T_WORD '(' expressionlist_opt ')' { + | T_WORD '(' arguments ')' { $$= new StaticMethodCallNode(NULL, $1, $3); } | T_WORD { @@ -817,7 +829,7 @@ expression: $$= $4; } } - | T_WORD '(' { $2= $yyLex->create(new InvocationNode($1)); } expressionlist_opt ')' chain_opt { + | T_WORD '(' { $2= $yyLex->create(new InvocationNode($1)); } arguments ')' chain_opt { $2->arguments= $4; if ($6) { $$= $6[0]; @@ -1026,10 +1038,10 @@ chain: | nav member { $$= $yyLex->create(new MemberAccessNode(NULL, $2, $1)); } - | nav member '(' { $1= $yyLex->create(new MethodCallNode(NULL, $2, NULL, $1)); } expressionlist_opt ')' { + | nav member '(' { $1= $yyLex->create(new MethodCallNode(NULL, $2, NULL, $1)); } arguments ')' { $1->arguments= $5; } - | '(' { $1= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } expressionlist_opt ')' { + | '(' { $1= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } arguments ')' { $1->arguments= $3; } ; 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 058f88e7f..b3e7a556e 100644 --- a/src/main/php/xp/compiler/syntax/php/Lexer.class.php +++ b/src/main/php/xp/compiler/syntax/php/Lexer.class.php @@ -63,7 +63,7 @@ class Lexer extends \text\parser\generic\AbstractLexer { '-' => array('-=' => Parser::T_SUB_EQUAL, '--' => Parser::T_DEC, '->' => Parser::T_OBJECT_OPERATOR), '>' => array('>=' => Parser::T_GE, '>>' => Parser::T_SHR), '<' => array('<=' => Parser::T_SE, '<<' => Parser::T_SHL), - '.' => array('.=' => Parser::T_CONCAT_EQUAL), + '.' => array('.=' => Parser::T_CONCAT_EQUAL, '...' => Parser::T_ELLIPSIS), '+' => array('+=' => Parser::T_ADD_EQUAL, '++' => Parser::T_INC), '*' => array('*=' => Parser::T_MUL_EQUAL, '**' => Parser::T_EXP), '/' => array('/=' => Parser::T_DIV_EQUAL), @@ -242,15 +242,26 @@ public function advance() { $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 { + $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; - $this->pushBack($ahead); } } else if (false !== strpos(self::DELIMITERS, $token) && 1 == strlen($token)) { $this->token= ord($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 f4899a011..73959fad4 100644 --- a/src/main/php/xp/compiler/syntax/php/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/php/Parser.class.php @@ -77,7 +77,8 @@ use xp\compiler\ast\DynamicVariableReferenceNode; use xp\compiler\ast\NoopNode; use xp\compiler\ast\YieldNode; -#line 81 "-" +use xp\compiler\ast\UnpackNode; +#line 82 "-" /** * Generated parser class @@ -149,6 +150,7 @@ class Parser extends \text\parser\generic\AbstractParser { const T_CASE= 373; const T_DEFAULT= 374; const T_DOUBLE_COLON= 410; + const T_ELLIPSIS= 423; const YY_ERRORCODE= 256; protected static $yyLhs= array(-1, @@ -158,25 +160,26 @@ class Parser extends \text\parser\generic\AbstractParser { 20, 20, 22, 23, 24, 24, 28, 21, 29, 29, 9, 9, 32, 32, 34, 34, 34, 36, 36, 37, 37, 35, 35, 35, 35, 35, 30, 30, 27, 27, - 41, 41, 42, 42, 40, 40, 43, 43, 47, 45, - 48, 45, 50, 45, 51, 45, 53, 45, 54, 45, - 55, 45, 57, 45, 59, 45, 60, 45, 61, 45, - 45, 45, 52, 52, 56, 56, 62, 62, 64, 63, - 65, 63, 44, 44, 49, 66, 49, 58, 67, 67, - 69, 68, 39, 39, 70, 70, 46, 46, 71, 71, - 72, 72, 72, 72, 26, 74, 26, 75, 26, 76, - 26, 77, 26, 26, 26, 26, 26, 26, 26, 26, + 41, 41, 42, 42, 42, 42, 40, 40, 43, 43, + 47, 45, 48, 45, 50, 45, 52, 45, 54, 45, + 55, 45, 56, 45, 58, 45, 60, 45, 61, 45, + 62, 45, 45, 45, 53, 53, 57, 57, 63, 63, + 65, 64, 66, 64, 44, 44, 49, 67, 49, 59, + 68, 68, 70, 69, 39, 39, 39, 71, 71, 51, + 51, 72, 72, 46, 46, 73, 73, 74, 74, 74, + 74, 26, 76, 26, 77, 26, 78, 26, 79, 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, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 79, 79, 79, 79, 79, 79, 79, 79, 80, - 80, 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, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 85, + 85, 87, 87, 88, 86, 86, 38, 90, 38, 91, + 38, 25, 25, 25, 25, 25, 25, 89, 89, 89, + 89, 92, 92, 94, 94, 93, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, + 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, + 83, 83, 83, 83, 84, 84, 75, 75, 95, 95, + 97, 96, 98, 96, 96, 96, 96, 99, 96, 100, + 96, 31, 31, 10, 101, 17, 17, 33, 33, 102, + 102, 103, 103, 103, 103, 103, 103, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 3, 1, @@ -185,1146 +188,1242 @@ class Parser extends \text\parser\generic\AbstractParser { 2, 3, 3, 3, 0, 2, 0, 9, 0, 2, 5, 1, 1, 3, 2, 5, 5, 1, 3, 3, 3, 1, 5, 3, 3, 3, 1, 3, 0, 1, - 1, 3, 3, 2, 0, 1, 1, 2, 0, 4, - 0, 7, 0, 10, 0, 8, 0, 6, 0, 8, - 0, 8, 0, 6, 0, 3, 0, 3, 0, 4, - 2, 1, 1, 3, 0, 1, 1, 2, 0, 5, - 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, - 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, + 1, 3, 3, 4, 2, 3, 0, 1, 1, 2, + 0, 4, 0, 7, 0, 10, 0, 8, 0, 6, + 0, 8, 0, 8, 0, 6, 0, 3, 0, 3, + 0, 4, 2, 1, 1, 3, 0, 1, 1, 2, + 0, 5, 0, 4, 1, 3, 0, 0, 3, 1, + 1, 2, 0, 9, 0, 1, 3, 2, 1, 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, 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, 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, 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, 252, 254, 253, 255, 257, 256, 0, 1, 0, + 42, 249, 0, 8, 0, 4, 9, 0, 14, 16, + 251, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 244, 0, 0, 13, 0, 41, 44, 0, + 0, 0, 0, 168, 0, 0, 177, 173, 176, 174, + 175, 0, 0, 0, 167, 0, 0, 0, 52, 19, + 0, 0, 0, 23, 25, 0, 0, 0, 0, 170, 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, 240, 0, 17, 0, + 179, 0, 0, 0, 0, 0, 0, 135, 0, 0, + 0, 0, 133, 0, 0, 0, 0, 145, 146, 147, + 148, 149, 0, 0, 182, 0, 0, 50, 51, 0, + 54, 56, 55, 0, 49, 0, 247, 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, 0, 0, 0, 0, 141, 157, 139, 0, 0, + 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 218, 219, 233, 224, 0, 226, - 125, 221, 0, 0, 162, 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, 155, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 225, 226, 240, 231, 0, 233, + 132, 228, 0, 0, 169, 0, 0, 0, 0, 0, + 0, 15, 0, 27, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 245, 0, 242, 0, 136, 243, 0, + 0, 0, 0, 162, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 229, 0, 0, - 223, 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, 231, 0, 0, 165, - 34, 32, 37, 0, 0, 0, 0, 0, 0, 156, - 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, 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, 0, 154, 153, 0, 0, 0, 236, 0, + 0, 230, 123, 0, 185, 183, 0, 53, 0, 171, + 0, 0, 31, 0, 0, 33, 0, 30, 0, 0, + 159, 0, 0, 0, 0, 164, 0, 0, 0, 131, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 238, + 0, 0, 117, 172, 34, 32, 37, 0, 0, 0, + 0, 0, 0, 163, 0, 138, 0, 241, 232, 0, + 237, 234, 0, 127, 126, 140, 0, 0, 0, 0, + 0, 0, 0, 0, 60, 0, 0, 71, 0, 91, + 75, 79, 81, 77, 87, 89, 73, 83, 94, 0, + 0, 0, 68, 0, 105, 129, 239, 65, 0, 0, + 0, 0, 0, 166, 0, 85, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 93, 158, 70, 66, + 0, 0, 63, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 88, 90, 0, 0, 106, 40, 57, 0, + 38, 64, 72, 0, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 58, 113, 86, 110, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 108, + 74, 101, 103, 0, 98, 0, 0, 0, 82, 96, + 78, 0, 0, 0, 84, 100, 0, 0, 109, 0, + 0, 0, 76, 0, 104, 0, 102, 0, 0, 114, ); protected static $yyDgoto= array(2, - 3, 6, 19, 10, 4, 7, 8, 104, 130, 215, - 36, 51, 72, 88, 37, 53, 74, 131, 132, 203, - 133, 134, 204, 283, 65, 356, 338, 329, 384, 402, - 339, 34, 21, 35, 66, 67, 68, 106, 198, 357, - 340, 341, 358, 359, 360, 243, 368, 377, 439, 371, - 374, 429, 372, 373, 378, 442, 388, 422, 375, 376, - 370, 443, 444, 451, 452, 450, 423, 424, 432, 199, - 217, 299, 191, 150, 145, 225, 219, 108, 109, 110, - 111, 112, 221, 319, 222, 223, 113, 76, 120, 114, - 115, 275, 192, 193, 266, 270, 326, 265, 218, 22, - 23, + 3, 6, 19, 10, 4, 7, 8, 104, 130, 216, + 36, 51, 72, 88, 37, 53, 74, 131, 132, 204, + 133, 134, 205, 286, 65, 361, 343, 333, 392, 411, + 344, 34, 21, 35, 66, 67, 68, 106, 199, 362, + 345, 346, 363, 364, 365, 244, 375, 384, 451, 378, + 417, 381, 441, 379, 380, 385, 454, 397, 434, 382, + 383, 377, 455, 456, 463, 464, 462, 435, 436, 444, + 200, 418, 218, 302, 191, 150, 145, 226, 220, 108, + 109, 110, 111, 112, 222, 323, 223, 224, 113, 76, + 120, 114, 115, 276, 192, 193, 267, 271, 330, 266, + 219, 22, 23, ); - protected static $yySindex = array( -289, - 0, 0, -273, -200, -200, 78, -273, 0, 28, 86, - 110, 0, 0, 0, 0, 0, 0, 41, 0, -203, - 0, 0, 270, 0, -200, 0, 0, 107, 0, 0, - 0, 0, -64, 57, 141, -64, -64, 0, -200, 152, - 270, 107, 0, -68, -38, 0, 1042, 0, 0, -64, - -112, -64, 169, 0, -64, 233, 0, 0, 0, 0, - 0, 241, 266, -101, 0, 274, 276, 284, 0, 0, - -64, 209, 302, 0, 0, 3913, 314, -36, -36, 0, - -247, 0, 0, -221, 0, 0, -64, 6, 4277, 4317, - 0, 4317, 4317, 4317, 4317, 4317, 4317, 0, 4317, 4317, - 326, 329, 0, -30, 1250, -34, 328, 0, 0, 0, - 0, 0, 288, 341, 0, 4317, 0, 0, 0, 3913, - 0, 0, 0, 233, 0, 222, 0, 131, 0, -162, - 0, 0, 0, -7, 168, 200, 1293, 1320, -132, -132, - -261, -132, -132, -132, -17, 0, 0, 0, 53, -34, - 0, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, - 4064, 4124, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, - 4222, 4309, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, - 4317, 4317, 4317, -65, 0, 0, 0, 0, -108, 0, - 0, 0, -34, 4317, 0, 4317, 2024, 355, 328, 359, - 0, 340, 0, 15, 142, 347, 78, 0, 4317, 4317, - -34, 4317, 0, 370, 0, 373, 0, 0, 4317, 347, - 374, 375, 0, 0, -224, 2051, 2078, 2078, 2078, 2078, - 2078, 2078, 2078, 2078, 4317, 2078, 4317, 2078, 2078, 2078, - 2078, 2024, 356, 2024, 2121, 2148, 2465, 4317, 258, 4317, - 258, 91, 91, 91, 91, 91, 93, 93, -209, -209, - -209, -261, 0, 0, 4317, 4317, 378, 0, 4317, 4317, - 0, 0, 1250, 0, 0, 0, 0, 462, 131, 0, - 380, 4317, 0, 81, 0, 2024, 2024, 0, -13, 4317, - 4317, 382, 0, 126, 53, 408, 0, 0, -34, 2078, - 2078, 4317, 2078, 2078, 413, 364, 0, 1347, 1390, 0, - 0, 0, 0, 2024, 418, 419, -34, 421, 365, 0, - 4317, 0, -13, 0, 0, 4317, 0, 0, -2, 0, - 0, 0, 53, 3936, 445, 446, 347, 448, 150, 0, - 453, 194, 0, 376, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3936, 1417, 383, 0, 3936, 0, - 0, 0, 0, 440, 347, -2, 0, 4317, 0, 4317, - 460, 461, 3936, 469, 451, 452, 472, 474, 391, 0, - 0, 0, -83, -24, 0, 0, 458, 3936, 1444, 4317, - 4317, 157, 4317, 0, 0, 4317, 4317, 0, 0, 0, - 3936, 0, 0, 394, 0, 485, 1830, 491, 1857, 1884, - 1927, 422, 202, 4317, 3936, 4317, 208, 3936, 433, 0, - 0, 0, 0, 202, 499, 0, 1954, 146, 528, 212, - -25, 544, 0, 4317, 529, 247, 3936, 0, 0, 0, - 0, 473, 0, -25, -64, 556, 0, 0, 0, 3936, - 4317, 541, 0, 0, 260, 3936, 0, 1981, 3936, 560, - 0, 3936, 0, 482, 0, 3936, 488, 0, + protected static $yySindex = array( -270, + 0, 0, -261, -173, -173, 121, -261, 0, 15, 70, + 80, 0, 0, 0, 0, 0, 0, 62, 0, 28, + 0, 0, 297, 0, -173, 0, 0, 100, 0, 0, + 0, 0, -26, 91, 144, -26, -26, 0, -173, 236, + 297, 100, 0, -79, -70, 0, 458, 0, 0, -26, + -49, -26, 151, 0, -26, 224, 0, 0, 0, 0, + 0, 253, 257, -127, 0, 254, 276, 277, 0, 0, + -26, 207, 305, 0, 0, 4322, 313, 576, 576, 0, + -231, 0, 0, -229, 0, 0, -26, 191, 4756, 4770, + 0, 4770, 4770, 4770, 4770, 4770, 4770, 0, 4770, 4770, + 317, 324, 0, -51, 1400, 22, 323, 0, 0, 0, + 0, 0, 268, 341, 0, -15, 0, 0, 0, 4322, + 0, 0, 0, 224, 0, 304, 0, 105, 0, -234, + 0, 0, 0, 30, 283, 292, 1638, 1704, -61, -61, + -253, -61, -61, -61, -27, 0, 0, 0, 46, 22, + 0, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4366, 4624, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4647, 4662, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, + 4770, 4770, 4770, -80, 0, 0, 0, 0, -108, 0, + 0, 0, 22, 4770, 0, 4770, 4770, 2485, 355, 353, + 357, 0, 346, 0, 119, 149, 354, 121, 0, 4770, + 4770, 22, 4770, 0, 374, 0, 380, 0, 0, -15, + 354, 386, 387, 0, 0, -197, 2674, 2785, 2785, 2785, + 2785, 2785, 2785, 2785, 2785, 4770, 2785, 4770, 2785, 2785, + 2785, 2785, 2485, 372, 2485, 10, 765, 1138, 4770, 36, + 4770, 36, 77, 77, 77, 77, 77, -3, -3, -276, + -276, -276, -253, 0, 0, -15, 4770, 393, 0, 4770, + 4770, 0, 0, 1400, 0, 0, 2485, 0, -15, 0, + 385, 105, 0, 394, 4770, 0, 95, 0, 2485, 2485, + 0, 48, -15, -15, 401, 0, 123, 46, 405, 0, + 0, 22, 2785, 2785, 4770, 2785, 2785, 411, 360, 0, + 1787, 1815, 0, 0, 0, 0, 0, 2485, 413, 420, + 22, 422, 342, 0, -15, 0, 48, 0, 0, -15, + 0, 0, -68, 0, 0, 0, 46, 4279, 423, 425, + 354, 128, 436, -335, 0, 438, 186, 0, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4279, + 1842, 358, 0, 4279, 0, 0, 0, 0, 354, 439, + 354, 158, -68, 0, 4770, 0, 4770, 460, 462, 4279, + 463, 454, 455, 482, 483, 399, 0, 0, 0, 0, + -91, -24, 0, 354, 0, 466, 4279, 1939, 4770, 4770, + 166, 4770, 0, 0, 4770, 4770, 0, 0, 0, 4279, + 0, 0, 0, 403, 0, 2485, 480, 323, 2040, 502, + 2238, 2273, 2339, 419, 204, 4770, 4279, 4770, 211, 4279, + 429, 0, 0, 0, 0, 204, 505, 0, 2374, 148, + 522, 195, -23, 529, 0, 4770, 514, 260, 4279, 0, + 0, 0, 0, 498, 0, -23, -26, 542, 0, 0, + 0, 4279, 4770, 549, 0, 0, 288, 4279, 0, 2450, + 4279, 583, 0, 4279, 0, 515, 0, 4279, 516, 0, ); - protected static $yyRindex= array( 561, - 0, 0, 510, 0, 0, 56, 639, 0, 24, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 521, 0, 0, 0, 0, 34, - 52, 0, 0, -111, 492, 0, 0, 0, 0, 0, - 493, 0, 0, 0, 0, -40, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 586, 0, 0, - 0, 0, 505, 0, 0, 552, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -124, 0, 1196, + protected static $yyRindex= array( 275, + 0, 0, 310, 0, 0, 43, 321, 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 63, 0, 0, 0, -1, 218, 3, 0, 0, 0, - 0, 0, 0, 22, 0, 605, -39, 0, 0, 613, - 0, 0, 0, 0, 0, -124, 0, 0, 0, 0, - 0, 0, 0, 0, 1223, 0, 0, 286, 606, 645, - 771, 674, 703, 742, 0, 0, 0, 0, 614, 218, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 547, 0, 0, 0, 0, -1, + 319, 0, 0, -83, 528, 0, 0, 0, 0, 0, + 531, 0, 0, 0, 0, -30, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 611, 0, 0, + 0, 0, 532, 0, 0, 567, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -153, 0, 1303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 598, 0, 0, 0, 0, + 447, 0, 0, 0, 23, 668, -9, 0, 0, 0, + 0, 0, 0, 39, 0, 620, -28, 0, 0, 625, + 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, + 0, 0, 0, 0, 1603, 0, 0, 437, 907, 967, + 1169, 1004, 1064, 1101, 0, 0, 0, 0, 628, 668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 548, 363, 0, 280, 132, 0, 32, 0, - 0, 0, 0, 0, 0, 249, 317, 0, 0, 0, - 218, 0, 0, 0, 0, 0, 0, 0, 605, 195, - 0, 621, 0, 0, 0, 3355, 36, 189, 281, 713, - 781, 849, 1372, 1495, 0, 2006, 0, 2091, 2782, 2805, - 3308, 324, 0, 285, 2476, 3238, 3169, 0, 3193, 0, - 3217, 2710, 2737, 2761, 3145, 2669, 2615, 2642, 2520, 2547, - 2574, 810, 0, 0, 605, 570, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3402, 3409, 0, 3261, 605, - 605, 0, 0, 547, 0, 160, 0, 0, 218, 3316, - 3329, 0, 3339, 3393, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 218, 0, 0, 0, - 605, 0, 3285, 0, 0, 605, 0, 0, 630, 0, - 0, 0, 0, 550, 0, 0, 195, 0, 0, 0, - 635, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 550, 0, 0, 0, -107, 0, - 0, 0, 0, -9, 195, 0, 0, 618, 0, 0, + 0, 0, 870, 234, 0, 61, 0, 200, 0, 630, + 0, 0, 0, 0, 0, 0, 229, 333, 0, 0, + 0, 668, 0, 0, 0, 0, 0, 0, 0, 620, + 250, 0, 633, 0, 0, 0, 3897, 132, 212, 222, + 243, 1504, 1613, 1716, 1738, 0, 1855, 0, 2498, 2542, + 2708, 2836, 245, 0, 74, 3758, 3707, 3598, 0, 3639, + 0, 3666, 3175, 3368, 3504, 3561, 3116, 2975, 3070, 2877, + 2904, 2931, 1206, 0, 0, 620, 582, 474, 0, 0, + 0, 0, 0, 0, 0, 0, 255, 0, 620, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1866, 3513, + 0, 3779, 620, 620, 0, 0, 553, 0, 571, 0, + 0, 668, 3043, 3380, 0, 3703, 3812, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, + 668, 0, 0, 0, 620, 0, 3802, 0, 0, 620, + 0, 0, 636, 0, 0, 0, 0, 554, 0, 0, + 250, 0, 0, 0, 0, 637, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, + 0, 0, 0, -115, 0, 0, 0, 0, 250, -22, + 250, 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 550, 0, 619, + 0, 0, 0, 250, 0, 0, 554, 0, 622, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, + 0, 0, 0, 0, 0, 223, 0, -8, 0, 0, + 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4191, 0, 0, 0, 641, + 0, 4235, 558, 0, 0, 643, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 619, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3780, 0, 0, 0, 638, 0, 3871, - 559, 0, 0, 605, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 568, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, - 0, -105, 0, 0, 0, 550, 0, 0, + -105, 0, 0, -105, 0, 0, 0, 554, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, 114, 0, 0, 678, -33, 4, -29, - 0, 0, 0, 595, 0, 0, 73, 0, 490, 423, - 0, 0, 0, -148, 420, 3618, 0, 0, 0, 0, - -134, 659, 668, 0, 298, 626, 0, 96, 1108, -4, - 348, 0, 354, 476, 0, -178, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 0, 0, 0, 0, 304, 0, 0, 26, - 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 396, 447, 631, 0, 0, 0, - 557, 0, 562, 0, 0, 0, 0, 0, 0, 729, - 0, + 0, 0, 0, 143, 0, 0, 679, -33, 21, -29, + 0, 0, 0, 601, 0, 0, 99, 0, 481, 406, + 0, 0, 0, 160, 409, 41, 0, 0, 0, 0, + -136, 649, 651, 0, 284, 609, 0, 81, 504, -235, + 325, 0, 335, -283, 0, -192, 0, 0, 0, 0, + -385, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 264, 0, 0, + 0, 45, 0, 0, -144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 364, 404, 584, 0, + 0, 0, 507, 0, 523, 0, 0, 0, 0, 0, + 0, 684, 0, ); protected static $yyTable = array(40, - 165, 165, 43, 43, 165, 187, 44, 45, 39, 20, - 216, 18, 121, 64, 269, 272, 43, 67, 43, 65, - 70, 43, 73, 182, 170, 77, 39, 39, 180, 178, - 1, 179, 177, 181, 400, 296, 207, 43, 124, 115, - 18, 73, 115, 173, 64, 64, 173, 5, 175, 39, - 184, 208, 122, 43, 54, 39, 188, 73, 279, 9, - 10, 10, 174, 10, 10, 10, 10, 10, 10, 10, - 10, 293, 114, 280, 39, 297, 145, 45, 62, 145, - 169, 10, 10, 10, 10, 10, 10, 306, 190, 39, - 114, 115, 123, 145, 145, 173, 29, 30, 401, 165, - 165, 107, 184, 165, 165, 165, 165, 165, 165, 165, - 168, 43, 18, 39, 174, 298, 10, 10, 11, 25, - 165, 165, 165, 165, 165, 165, 45, 182, 145, 182, - 129, 28, 180, 178, 180, 179, 177, 181, 32, 181, - 185, 186, 69, 85, 26, 107, 10, 10, 10, 41, - 43, 267, 46, 165, 264, 165, 165, 228, 228, 127, - 145, 228, 228, 228, 228, 228, 228, 228, 27, 224, - 33, 205, 115, 69, 69, 115, 38, 206, 228, 228, - 228, 228, 228, 228, 42, 165, 165, 165, 363, 387, - 115, 47, 185, 186, 38, 38, 123, 123, 71, 18, - 123, 123, 123, 123, 123, 123, 123, 148, 209, 241, - 284, 228, 183, 228, 228, 241, 385, 123, 123, 123, - 123, 123, 123, 117, 57, 58, 59, 60, 61, 180, - 288, 268, 180, 36, 367, 35, 36, 295, 35, 80, - 210, 50, 38, 228, 228, 228, 180, 180, 399, 213, - 123, 36, 123, 123, 220, 220, 18, 38, 220, 220, - 220, 220, 220, 220, 220, 67, 67, 65, 65, 185, - 186, 52, 243, 243, 263, 220, 220, 220, 220, 220, - 220, 180, 123, 123, 123, 12, 13, 14, 15, 16, - 17, 75, 35, 78, 182, 43, 63, 189, 184, 180, - 178, 79, 179, 177, 181, 80, 243, 35, 81, 55, - 220, 220, 243, 180, 82, 213, 83, 173, 322, 175, - 177, 181, 214, 177, 181, 179, 136, 84, 179, 136, - 213, 86, 43, 10, 10, 10, 332, 337, 181, 181, - 128, 220, 220, 136, 136, 87, 201, 440, 441, 43, - 379, 241, 241, 116, 10, 241, 241, 12, 13, 14, - 15, 16, 17, 10, 118, 148, 145, 118, 149, 12, - 12, 194, 177, 181, 165, 118, 119, 179, 136, 151, - 195, 118, 118, 404, 196, 241, 176, 174, 185, 186, - 202, 241, 220, 165, 165, 276, 412, 171, 172, 277, - 278, 281, 184, 117, 184, 181, 117, 282, 183, 290, - 136, 43, 291, 302, 294, 455, 118, 307, 295, 313, - 206, 117, 317, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 228, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 318, 321, 145, 145, - 145, 228, 228, 324, 463, 117, 325, 465, 330, 331, - 333, 467, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 123, 12, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 361, 362, 334, 364, 365, - 123, 123, 185, 186, 185, 186, 366, 383, 369, 390, - 391, 12, 13, 14, 15, 16, 17, 381, 393, 394, - 395, 396, 183, 397, 183, 398, 403, 408, 413, 180, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 220, - 416, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 414, 5, 421, 420, 428, 220, 12, - 13, 14, 15, 16, 17, 431, 128, 434, 436, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 437, 184, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 438, 445, 222, 222, 448, 447, 222, 222, - 222, 222, 222, 222, 222, 2, 456, 453, 459, 460, - 464, 180, 180, 180, 466, 222, 222, 222, 222, 222, - 222, 181, 468, 43, 22, 20, 136, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 48, 239, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 222, 222, 214, 214, 171, 113, 214, 214, 214, 214, - 214, 214, 214, 171, 153, 117, 241, 176, 174, 185, - 186, 154, 117, 214, 214, 214, 214, 214, 214, 158, - 59, 222, 222, 6, 65, 61, 117, 113, 93, 183, - 126, 215, 215, 95, 24, 215, 215, 215, 215, 215, - 215, 215, 97, 181, 181, 181, 285, 311, 214, 214, - 49, 312, 215, 215, 215, 215, 215, 215, 48, 125, - 213, 213, 382, 386, 213, 213, 213, 213, 213, 213, - 213, 310, 57, 58, 59, 60, 61, 433, 342, 214, - 214, 213, 213, 213, 213, 213, 213, 215, 215, 216, - 216, 320, 454, 216, 216, 216, 216, 216, 216, 216, - 200, 31, 274, 182, 271, 0, 182, 0, 0, 0, - 216, 216, 216, 216, 216, 216, 213, 213, 215, 215, - 182, 182, 0, 0, 0, 0, 0, 0, 217, 217, - 0, 0, 217, 217, 217, 217, 217, 217, 217, 5, - 5, 5, 5, 5, 5, 216, 216, 213, 213, 217, - 217, 217, 217, 217, 217, 182, 0, 212, 212, 5, - 5, 212, 212, 212, 212, 212, 212, 212, 0, 0, - 0, 183, 0, 0, 183, 0, 216, 216, 212, 212, - 212, 212, 212, 212, 217, 217, 0, 182, 183, 183, - 2, 2, 2, 2, 2, 2, 211, 211, 392, 0, - 211, 211, 211, 211, 211, 211, 211, 0, 0, 222, - 2, 2, 0, 212, 212, 217, 217, 211, 211, 211, - 211, 211, 211, 183, 0, 0, 0, 0, 222, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 184, - 426, 0, 184, 430, 212, 212, 0, 0, 0, 0, - 0, 0, 211, 211, 0, 183, 184, 184, 0, 0, - 0, 0, 449, 0, 0, 0, 0, 214, 6, 6, - 6, 6, 6, 6, 0, 457, 0, 0, 0, 0, - 0, 461, 0, 211, 211, 0, 214, 0, 6, 6, - 0, 184, 0, 0, 0, 0, 0, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 215, 0, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 0, 0, 0, 184, 0, 215, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, + 39, 273, 43, 43, 371, 225, 44, 45, 217, 69, + 172, 39, 172, 64, 270, 172, 43, 94, 43, 67, + 70, 43, 73, 39, 89, 77, 20, 92, 121, 93, + 124, 180, 121, 182, 409, 184, 39, 43, 180, 18, + 437, 73, 45, 181, 64, 64, 182, 170, 100, 1, + 121, 180, 178, 43, 179, 177, 181, 73, 184, 5, + 458, 187, 299, 122, 39, 39, 122, 291, 122, 173, + 62, 175, 182, 208, 309, 54, 39, 180, 178, 181, + 179, 177, 181, 180, 182, 170, 9, 372, 209, 180, + 178, 45, 179, 177, 181, 173, 401, 175, 410, 206, + 39, 184, 300, 169, 184, 207, 25, 173, 123, 175, + 95, 43, 188, 182, 186, 122, 105, 186, 180, 178, + 107, 179, 177, 181, 386, 185, 186, 69, 26, 137, + 138, 181, 139, 140, 141, 142, 143, 144, 27, 146, + 147, 169, 301, 438, 190, 183, 442, 11, 185, 186, + 43, 268, 28, 184, 265, 18, 198, 326, 69, 69, + 105, 414, 282, 33, 107, 461, 186, 32, 38, 85, + 36, 168, 152, 36, 424, 152, 336, 283, 469, 38, + 248, 46, 396, 41, 473, 127, 248, 42, 36, 152, + 152, 38, 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, 263, 152, 18, 374, 18, 287, 298, + 50, 269, 38, 38, 243, 475, 274, 277, 477, 52, + 119, 214, 479, 119, 101, 57, 58, 59, 60, 61, + 289, 290, 187, 292, 408, 187, 152, 69, 69, 264, + 198, 71, 188, 122, 214, 188, 122, 67, 67, 187, + 187, 341, 35, 75, 124, 47, 303, 124, 304, 188, + 188, 122, 81, 189, 78, 125, 189, 35, 125, 306, + 35, 307, 124, 35, 82, 118, 80, 99, 118, 43, + 189, 189, 125, 125, 187, 214, 198, 243, 184, 2, + 311, 312, 215, 79, 188, 129, 83, 63, 102, 198, + 84, 184, 148, 210, 103, 318, 124, 29, 30, 86, + 98, 80, 211, 198, 198, 189, 187, 125, 18, 43, + 185, 186, 248, 248, 5, 327, 188, 184, 87, 452, + 453, 90, 116, 189, 342, 6, 148, 43, 151, 184, + 195, 118, 119, 149, 203, 198, 194, 189, 10, 10, + 198, 10, 10, 10, 10, 10, 10, 10, 10, 12, + 296, 12, 250, 250, 196, 221, 96, 97, 184, 10, + 10, 10, 10, 10, 10, 278, 279, 280, 185, 186, + 12, 13, 14, 15, 16, 17, 281, 197, 284, 176, + 174, 185, 186, 293, 285, 243, 250, 398, 183, 294, + 171, 172, 250, 43, 10, 10, 297, 467, 202, 305, + 298, 183, 310, 317, 207, 176, 174, 185, 186, 416, + 419, 321, 421, 322, 325, 422, 423, 176, 174, 185, + 186, 328, 329, 334, 10, 10, 10, 183, 171, 172, + 335, 337, 152, 366, 338, 367, 416, 369, 439, 183, + 12, 13, 14, 15, 16, 17, 370, 143, 185, 186, + 143, 373, 388, 172, 172, 376, 416, 172, 172, 172, + 172, 172, 172, 172, 143, 143, 391, 394, 183, 399, + 368, 400, 402, 470, 172, 172, 172, 172, 172, 172, + 235, 235, 403, 404, 235, 235, 235, 235, 235, 235, + 235, 405, 406, 407, 413, 128, 420, 425, 390, 143, + 393, 235, 235, 235, 235, 235, 235, 172, 426, 172, + 172, 428, 187, 432, 152, 152, 152, 433, 54, 39, + 440, 443, 188, 412, 2, 2, 2, 2, 2, 2, + 448, 143, 449, 446, 235, 450, 235, 235, 457, 172, + 172, 172, 459, 189, 2, 2, 12, 13, 14, 15, + 16, 17, 468, 12, 13, 14, 15, 16, 17, 5, + 5, 5, 5, 5, 5, 2, 235, 235, 235, 460, + 6, 6, 6, 6, 6, 6, 471, 130, 130, 5, + 5, 130, 130, 130, 130, 130, 130, 130, 248, 248, + 6, 6, 465, 476, 187, 187, 187, 472, 130, 130, + 130, 130, 130, 130, 188, 188, 188, 478, 128, 43, + 480, 10, 10, 10, 314, 57, 58, 59, 60, 61, + 22, 48, 248, 20, 246, 189, 189, 189, 248, 178, + 115, 130, 10, 130, 130, 178, 54, 39, 160, 124, + 116, 10, 248, 161, 124, 165, 59, 61, 67, 124, + 120, 95, 97, 120, 99, 24, 126, 316, 288, 315, + 49, 48, 125, 130, 130, 130, 466, 395, 389, 445, + 347, 324, 275, 201, 227, 227, 31, 0, 227, 227, + 227, 227, 227, 227, 227, 272, 0, 56, 57, 58, + 59, 60, 61, 295, 0, 227, 227, 227, 227, 227, + 227, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 0, 0, 62, 172, 0, + 227, 227, 0, 0, 0, 0, 0, 143, 0, 308, + 0, 0, 0, 0, 0, 0, 0, 172, 172, 0, + 0, 0, 313, 0, 0, 235, 0, 0, 0, 0, + 63, 227, 227, 0, 0, 0, 319, 320, 0, 0, + 0, 182, 170, 55, 235, 235, 180, 178, 0, 179, + 177, 181, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 0, 175, 0, 339, 0, + 0, 0, 0, 340, 0, 117, 57, 58, 59, 60, + 61, 0, 0, 0, 0, 0, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 0, 12, 172, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 0, + 0, 0, 0, 235, 235, 235, 235, 235, 235, 235, + 235, 235, 130, 0, 235, 235, 235, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 0, 0, 0, 0, + 0, 130, 130, 0, 0, 0, 229, 229, 63, 0, + 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, + 0, 55, 0, 0, 0, 0, 0, 229, 229, 229, + 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 221, 221, 0, 0, 221, 221, 221, + 221, 221, 221, 221, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 229, 221, 221, 221, 221, 221, 221, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 227, + 0, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 229, 229, 0, 0, 0, 227, 221, + 221, 0, 0, 222, 222, 0, 0, 222, 222, 222, + 222, 222, 222, 222, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 222, 222, 222, 222, 222, 222, + 221, 221, 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 0, 0, 220, 220, 220, 220, 220, 220, + 220, 0, 0, 0, 0, 0, 0, 0, 0, 222, + 222, 220, 220, 220, 220, 220, 220, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 184, 0, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 222, 222, 0, 0, 0, 0, 220, 220, 0, 0, + 223, 223, 0, 0, 223, 223, 223, 223, 223, 223, + 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 223, 223, 223, 223, 223, 223, 220, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 224, 224, 0, + 0, 224, 224, 224, 224, 224, 224, 224, 0, 0, + 0, 0, 0, 0, 0, 0, 223, 223, 224, 224, + 224, 224, 224, 224, 176, 174, 185, 186, 0, 0, + 0, 0, 0, 0, 182, 171, 172, 0, 0, 180, + 178, 229, 179, 177, 181, 0, 183, 223, 223, 0, + 0, 0, 0, 224, 224, 0, 0, 173, 0, 175, + 229, 0, 0, 0, 0, 219, 219, 0, 0, 219, + 219, 219, 219, 219, 219, 219, 0, 0, 221, 0, + 0, 0, 0, 0, 224, 224, 219, 219, 219, 219, + 219, 219, 0, 0, 0, 0, 0, 221, 0, 0, + 0, 0, 218, 218, 0, 0, 218, 218, 218, 218, + 218, 218, 218, 0, 0, 0, 0, 0, 0, 0, + 0, 219, 219, 218, 218, 218, 218, 218, 218, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 222, 0, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 219, 219, 0, 0, 0, 222, 218, 218, + 0, 0, 0, 0, 0, 0, 221, 221, 0, 0, + 221, 221, 221, 221, 221, 220, 0, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 218, + 218, 0, 0, 0, 220, 0, 0, 0, 0, 142, + 142, 0, 0, 142, 142, 0, 142, 0, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 213, 214, 214, 0, 0, 214, - 214, 214, 214, 214, 216, 0, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 0, 0, - 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 215, 215, 0, 0, 215, 215, - 215, 215, 215, 217, 0, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 0, 0, 0, - 0, 0, 217, 213, 213, 0, 0, 213, 213, 213, - 213, 213, 0, 0, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 0, 0, 0, 0, - 0, 212, 216, 216, 0, 0, 216, 216, 216, 216, - 216, 183, 0, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 182, 182, 182, 0, 0, - 0, 0, 54, 39, 0, 0, 0, 0, 0, 0, - 211, 217, 217, 0, 0, 217, 217, 217, 217, 217, - 0, 0, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 0, 0, 0, 0, 0, 0, - 212, 212, 0, 0, 212, 212, 212, 212, 212, 184, - 0, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 183, 183, 183, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, - 211, 0, 0, 211, 211, 211, 211, 211, 0, 0, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 135, 135, 0, 0, 135, 135, 0, 135, - 0, 135, 135, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 135, 135, 135, 135, 135, 165, - 165, 184, 184, 184, 165, 165, 0, 165, 165, 165, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 165, 165, 165, 165, 182, 170, 135, 135, - 0, 180, 178, 0, 179, 177, 181, 0, 0, 0, - 0, 56, 57, 58, 59, 60, 61, 0, 0, 173, - 154, 175, 166, 165, 0, 0, 165, 0, 0, 135, - 135, 0, 0, 0, 0, 0, 292, 0, 0, 182, - 170, 0, 0, 211, 180, 178, 0, 179, 177, 181, - 0, 62, 0, 169, 0, 165, 165, 0, 0, 0, - 0, 0, 173, 154, 175, 166, 182, 170, 0, 0, - 0, 180, 178, 0, 179, 177, 181, 0, 0, 0, - 0, 0, 305, 168, 63, 0, 0, 0, 0, 173, - 154, 175, 166, 182, 170, 0, 169, 55, 180, 178, - 0, 179, 177, 181, 0, 0, 0, 315, 316, 0, - 0, 0, 0, 0, 0, 0, 173, 154, 175, 166, - 0, 0, 186, 169, 0, 186, 168, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 182, 170, 335, 186, - 186, 180, 178, 336, 179, 177, 181, 0, 0, 0, - 169, 0, 0, 168, 0, 0, 0, 0, 0, 173, - 154, 175, 166, 182, 170, 0, 0, 0, 180, 178, - 0, 179, 177, 181, 186, 0, 0, 0, 0, 0, - 168, 327, 0, 0, 0, 380, 173, 154, 175, 166, - 182, 170, 0, 169, 0, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 0, 0, 186, 406, 0, 0, - 0, 0, 405, 173, 154, 175, 166, 135, 0, 0, - 169, 0, 0, 168, 328, 0, 0, 0, 0, 0, - 0, 425, 0, 0, 0, 0, 135, 0, 0, 0, - 0, 0, 0, 0, 165, 185, 0, 169, 185, 0, - 168, 446, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 185, 165, 0, 0, 0, 0, 0, - 0, 184, 0, 0, 0, 0, 0, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, - 0, 0, 0, 0, 0, 135, 135, 0, 0, 135, - 135, 135, 135, 135, 184, 0, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 0, 185, - 0, 0, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 184, 12, 165, 165, 0, 165, 165, 165, 165, - 165, 165, 165, 165, 165, 0, 0, 0, 0, 176, - 174, 185, 186, 155, 156, 157, 158, 160, 184, 0, + 142, 142, 142, 142, 142, 142, 222, 222, 0, 0, + 222, 222, 222, 222, 222, 223, 0, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 0, + 0, 0, 0, 0, 223, 142, 142, 0, 0, 0, + 0, 0, 0, 220, 220, 0, 0, 220, 220, 220, + 220, 220, 224, 0, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 142, 142, 0, 0, + 0, 224, 0, 0, 0, 0, 182, 170, 0, 0, + 0, 180, 178, 0, 179, 177, 181, 0, 0, 184, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 154, 175, 166, 223, 223, 0, 0, 223, 223, 223, + 223, 223, 0, 0, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 0, 0, 0, 0, + 0, 0, 0, 169, 0, 0, 0, 0, 0, 219, + 224, 224, 0, 0, 224, 224, 224, 224, 224, 0, + 0, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 168, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 218, 176, 174, 185, + 186, 0, 0, 0, 190, 0, 0, 190, 171, 172, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, + 0, 190, 190, 0, 0, 0, 0, 0, 219, 219, + 0, 0, 219, 219, 219, 219, 219, 0, 0, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 0, 0, 0, 0, 0, 218, 218, 0, 0, 218, + 218, 218, 218, 218, 142, 0, 218, 218, 218, 218, + 218, 218, 218, 218, 218, 218, 218, 218, 190, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 172, + 172, 0, 0, 0, 172, 172, 0, 172, 172, 172, + 0, 0, 0, 191, 0, 0, 191, 0, 0, 0, + 0, 0, 172, 172, 172, 172, 0, 0, 0, 0, + 191, 191, 0, 0, 182, 170, 0, 0, 212, 180, + 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, + 0, 0, 0, 172, 0, 0, 172, 173, 154, 175, + 166, 0, 142, 142, 0, 191, 142, 142, 142, 142, + 142, 184, 0, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 172, 172, 0, 0, 0, + 0, 169, 0, 0, 0, 0, 0, 191, 0, 0, + 182, 170, 0, 0, 0, 180, 178, 0, 179, 177, + 181, 0, 0, 0, 0, 0, 193, 0, 0, 193, + 0, 168, 0, 173, 154, 175, 166, 0, 0, 0, + 0, 0, 0, 193, 193, 0, 0, 0, 192, 0, + 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 192, 169, 0, 176, + 174, 185, 186, 155, 156, 157, 158, 160, 193, 0, 171, 172, 167, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 0, 0, 0, 0, 0, 0, 0, 0, + 162, 183, 0, 182, 170, 0, 0, 168, 180, 178, + 192, 179, 177, 181, 190, 0, 0, 0, 0, 0, + 193, 0, 0, 0, 0, 0, 173, 154, 175, 166, + 0, 182, 170, 0, 0, 0, 180, 178, 0, 179, + 177, 181, 192, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 154, 175, 166, 182, 170, + 169, 0, 0, 180, 178, 0, 179, 177, 181, 0, + 0, 0, 0, 0, 0, 216, 0, 0, 216, 0, + 387, 173, 154, 175, 166, 0, 155, 0, 169, 155, + 168, 331, 216, 216, 172, 0, 190, 190, 190, 0, + 0, 0, 0, 155, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 172, 169, 0, 0, 168, 332, + 0, 0, 0, 191, 0, 0, 0, 216, 0, 184, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, + 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 170, 0, 0, 216, + 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, + 155, 0, 0, 0, 0, 0, 0, 415, 173, 154, + 175, 166, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 0, 12, 172, 172, 184, 172, 172, 172, 172, + 172, 172, 172, 172, 172, 191, 191, 191, 0, 0, + 0, 0, 169, 0, 0, 0, 0, 176, 174, 185, + 186, 155, 156, 157, 158, 160, 193, 0, 171, 172, + 0, 152, 153, 159, 164, 163, 165, 161, 162, 183, + 0, 0, 168, 0, 0, 0, 0, 0, 192, 0, + 0, 0, 0, 0, 0, 0, 182, 170, 0, 0, + 427, 180, 178, 0, 179, 177, 181, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 184, 173, + 154, 175, 166, 176, 174, 185, 186, 155, 156, 157, + 158, 160, 0, 0, 171, 172, 213, 152, 153, 159, + 164, 163, 165, 161, 162, 183, 184, 0, 193, 193, + 193, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, - 160, 184, 186, 171, 172, 0, 152, 153, 159, 164, - 163, 165, 161, 162, 183, 0, 0, 0, 0, 176, - 174, 185, 186, 155, 156, 157, 158, 160, 184, 0, - 171, 172, 212, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 0, 0, 0, 0, 176, 174, 185, 186, - 155, 156, 157, 158, 160, 184, 0, 171, 172, 0, + 192, 192, 192, 184, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 216, 176, 174, 185, 186, + 155, 156, 157, 158, 160, 0, 155, 171, 172, 0, 152, 153, 159, 164, 163, 165, 161, 162, 183, 0, + 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, + 157, 158, 160, 0, 0, 171, 172, 0, 152, 153, + 159, 164, 163, 165, 161, 162, 183, 0, 0, 0, + 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, + 184, 0, 171, 172, 0, 152, 153, 159, 164, 163, + 165, 161, 162, 183, 0, 0, 0, 216, 216, 216, + 0, 0, 0, 0, 182, 170, 0, 0, 155, 180, + 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 154, 175, + 166, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 170, 0, 0, 430, 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 186, 186, 0, 0, 176, + 0, 169, 173, 154, 175, 166, 0, 0, 176, 174, + 185, 186, 155, 156, 157, 158, 160, 0, 0, 171, + 172, 184, 152, 153, 159, 164, 163, 165, 161, 162, + 183, 168, 0, 0, 0, 0, 169, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 170, 0, 0, 431, + 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 168, 0, 173, 154, + 175, 166, 0, 0, 0, 0, 0, 0, 0, 0, + 182, 170, 0, 0, 447, 180, 178, 0, 179, 177, + 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 169, 173, 154, 175, 166, 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, 0, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 0, 0, 0, 0, 176, 174, 185, 186, - 155, 156, 157, 158, 160, 185, 0, 171, 172, 0, - 152, 153, 159, 164, 163, 165, 161, 162, 183, 0, + 162, 183, 168, 0, 0, 0, 0, 169, 0, 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, 168, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 474, 0, 173, + 154, 175, 166, 0, 0, 0, 0, 0, 0, 0, + 0, 182, 170, 0, 0, 0, 180, 178, 0, 179, + 177, 181, 0, 0, 0, 0, 0, 0, 217, 0, + 0, 217, 0, 169, 173, 154, 175, 166, 0, 184, + 0, 0, 0, 0, 0, 217, 217, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 429, 0, + 0, 0, 0, 168, 0, 0, 0, 0, 169, 0, + 0, 0, 194, 0, 184, 194, 0, 0, 0, 0, + 217, 0, 0, 0, 0, 0, 0, 0, 0, 194, + 194, 0, 0, 0, 0, 0, 0, 0, 168, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 194, 0, 0, 176, 174, 185, + 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, + 184, 152, 153, 159, 164, 163, 165, 161, 162, 183, + 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, + 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, + 160, 0, 0, 171, 172, 184, 152, 153, 159, 164, + 163, 165, 161, 162, 183, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 154, 175, 166, 0, 176, 174, + 185, 186, 155, 156, 157, 158, 160, 0, 195, 171, + 172, 195, 152, 153, 159, 164, 163, 165, 161, 162, + 183, 184, 0, 0, 0, 195, 195, 169, 0, 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, 0, 152, 153, 159, - 164, 163, 165, 161, 162, 183, 182, 170, 0, 0, - 415, 180, 178, 0, 179, 177, 181, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, - 154, 175, 166, 182, 170, 0, 0, 0, 180, 178, - 0, 179, 177, 181, 0, 0, 0, 185, 185, 185, - 0, 0, 0, 0, 0, 0, 173, 154, 175, 166, - 182, 170, 0, 169, 418, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 173, 154, 175, 166, 0, 0, 0, - 169, 0, 0, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 170, 0, 0, 419, 180, 178, - 0, 179, 177, 181, 0, 0, 0, 169, 0, 0, - 168, 0, 0, 0, 0, 0, 173, 154, 175, 166, - 182, 170, 0, 0, 435, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 0, 0, 0, 168, 0, 0, - 0, 0, 0, 173, 154, 175, 166, 182, 170, 0, - 169, 0, 180, 178, 0, 179, 177, 181, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 462, 0, - 173, 154, 175, 166, 0, 0, 209, 169, 0, 209, - 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 182, 170, 0, 209, 209, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 169, 0, 0, 168, 0, 0, - 0, 0, 0, 173, 154, 175, 166, 182, 170, 0, - 0, 0, 180, 178, 0, 179, 177, 181, 209, 0, - 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, - 173, 154, 175, 166, 182, 170, 0, 169, 0, 180, - 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, - 209, 210, 0, 0, 210, 0, 0, 173, 154, 175, - 166, 184, 0, 0, 169, 0, 0, 168, 210, 210, - 0, 0, 0, 0, 0, 0, 0, 182, 170, 0, - 0, 0, 180, 178, 0, 179, 177, 181, 184, 0, - 0, 169, 0, 0, 168, 0, 0, 0, 0, 0, - 173, 0, 175, 210, 182, 170, 0, 417, 0, 180, - 178, 0, 179, 177, 181, 184, 0, 0, 0, 0, - 0, 168, 0, 0, 0, 0, 0, 173, 0, 175, - 0, 0, 0, 0, 169, 210, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, - 174, 185, 186, 155, 156, 157, 158, 160, 184, 0, + 164, 163, 165, 161, 162, 183, 184, 168, 0, 0, + 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 182, 170, 0, 0, 0, 180, 178, 217, 179, + 177, 181, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 154, 175, 166, 0, 176, + 174, 185, 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, 0, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 0, 0, 0, 0, 176, 174, 185, 186, - 155, 156, 157, 158, 160, 184, 0, 171, 172, 0, - 152, 153, 159, 164, 163, 165, 161, 162, 183, 0, - 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, - 158, 160, 184, 0, 171, 172, 0, 152, 153, 159, - 164, 163, 165, 161, 162, 183, 0, 0, 0, 0, + 162, 183, 194, 0, 0, 0, 196, 0, 169, 196, + 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, + 157, 158, 160, 196, 196, 171, 172, 0, 152, 153, + 159, 164, 163, 165, 161, 162, 183, 0, 168, 0, + 217, 217, 217, 209, 209, 0, 0, 209, 209, 209, + 209, 209, 209, 209, 0, 0, 0, 0, 196, 0, + 0, 0, 0, 0, 209, 209, 209, 209, 209, 209, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 0, 0, 0, 194, 194, 194, 0, 0, 0, + 196, 210, 210, 210, 210, 210, 210, 211, 211, 209, + 209, 211, 211, 211, 211, 211, 211, 211, 0, 0, + 0, 0, 0, 0, 0, 184, 0, 0, 211, 211, + 211, 211, 211, 211, 0, 0, 210, 210, 0, 0, + 209, 209, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 207, 0, 0, 207, 0, 207, 207, 207, + 207, 0, 0, 211, 211, 0, 0, 210, 210, 0, + 0, 0, 207, 207, 207, 207, 207, 207, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 176, 174, 185, 186, - 155, 156, 157, 158, 160, 184, 209, 171, 172, 0, - 152, 153, 159, 164, 163, 165, 161, 162, 183, 0, + 0, 0, 0, 0, 211, 211, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 207, 207, 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, - 158, 160, 184, 0, 171, 172, 0, 152, 153, 159, - 164, 163, 165, 161, 162, 183, 0, 0, 0, 0, - 176, 174, 185, 186, 155, 156, 157, 158, 160, 184, - 0, 171, 172, 0, 152, 153, 159, 164, 163, 165, - 161, 162, 183, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 209, 209, - 209, 210, 0, 176, 174, 185, 186, 155, 156, 157, - 158, 160, 184, 0, 171, 172, 0, 152, 153, 159, - 164, 163, 165, 161, 162, 183, 0, 0, 0, 0, - 176, 174, 185, 186, 155, 156, 157, 158, 160, 184, - 0, 171, 172, 0, 0, 153, 159, 164, 163, 165, - 161, 162, 183, 0, 0, 0, 0, 176, 174, 185, - 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, - 0, 0, 0, 159, 164, 163, 165, 161, 162, 183, - 0, 182, 0, 210, 210, 210, 180, 178, 0, 179, - 177, 181, 0, 0, 0, 0, 206, 0, 0, 206, - 176, 174, 185, 186, 173, 0, 175, 0, 0, 0, - 0, 171, 172, 206, 206, 0, 206, 0, 206, 0, - 0, 0, 183, 0, 0, 0, 0, 176, 174, 185, - 186, 0, 0, 0, 0, 0, 202, 202, 171, 172, - 202, 202, 202, 202, 202, 202, 202, 0, 206, 183, - 0, 0, 0, 0, 0, 0, 0, 202, 202, 202, - 202, 202, 202, 203, 203, 0, 0, 203, 203, 203, - 203, 203, 203, 203, 0, 0, 0, 0, 0, 206, - 206, 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, 0, 0, 0, 0, - 0, 204, 204, 204, 204, 204, 204, 0, 0, 203, - 203, 0, 0, 202, 202, 0, 0, 0, 0, 0, - 0, 0, 200, 0, 0, 200, 0, 200, 200, 200, - 200, 0, 0, 0, 0, 0, 204, 204, 0, 0, - 203, 203, 200, 200, 200, 200, 200, 200, 0, 201, - 0, 0, 201, 0, 201, 201, 201, 201, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 204, 204, 201, - 201, 201, 201, 201, 201, 0, 205, 200, 200, 205, - 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 205, 205, 205, 205, - 205, 205, 0, 0, 201, 201, 0, 0, 200, 200, - 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, - 192, 0, 0, 192, 0, 0, 0, 0, 0, 0, - 0, 205, 205, 0, 0, 201, 201, 192, 192, 0, - 192, 0, 192, 0, 194, 0, 184, 194, 0, 0, - 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 205, 205, 194, 194, 0, 194, 193, 194, - 0, 193, 192, 192, 193, 0, 206, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 193, - 0, 193, 187, 193, 0, 187, 0, 0, 0, 194, - 194, 0, 0, 192, 192, 0, 0, 0, 0, 187, - 187, 0, 0, 0, 0, 188, 0, 0, 188, 0, - 202, 0, 0, 193, 193, 0, 0, 0, 0, 0, - 194, 194, 188, 188, 176, 174, 185, 186, 0, 0, - 0, 0, 0, 0, 187, 171, 172, 203, 0, 206, - 206, 206, 206, 206, 193, 193, 183, 0, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 188, 0, 0, - 0, 0, 0, 0, 204, 0, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, - 202, 0, 0, 202, 202, 202, 202, 202, 0, 188, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 0, 0, 0, 0, 200, 203, 203, 0, 0, - 203, 203, 203, 203, 203, 0, 0, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 0, 0, - 0, 0, 201, 204, 204, 0, 0, 204, 204, 204, - 204, 204, 0, 0, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 0, 0, 0, 0, 205, + 158, 160, 0, 197, 171, 172, 197, 0, 153, 159, + 164, 163, 165, 161, 162, 183, 184, 0, 207, 207, + 197, 197, 0, 0, 0, 0, 0, 208, 0, 0, + 208, 0, 208, 208, 208, 208, 0, 0, 0, 0, + 195, 195, 195, 0, 0, 0, 0, 208, 208, 208, + 208, 208, 208, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 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, - 192, 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, 194, 205, 205, - 0, 0, 205, 205, 205, 205, 205, 0, 0, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 212, 0, 0, 212, 0, 0, 212, + 0, 0, 208, 208, 0, 0, 196, 197, 0, 0, + 0, 0, 0, 212, 212, 212, 212, 212, 212, 0, + 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, + 157, 158, 160, 208, 208, 171, 172, 0, 0, 0, + 159, 164, 163, 165, 161, 162, 183, 209, 212, 212, + 0, 0, 199, 0, 0, 199, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 192, 192, 192, 192, 192, 0, 0, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 0, 0, 0, 0, 188, 0, 0, 0, 0, - 194, 194, 194, 194, 194, 0, 0, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 0, 0, - 0, 0, 0, 0, 193, 193, 193, 193, 193, 0, - 0, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 195, 0, 0, 195, 0, 0, 195, 0, - 0, 0, 0, 0, 187, 187, 187, 0, 0, 0, - 0, 0, 195, 195, 0, 195, 207, 195, 0, 207, - 0, 0, 207, 0, 0, 0, 0, 188, 188, 188, - 0, 0, 0, 0, 0, 0, 207, 207, 0, 207, - 196, 207, 0, 196, 0, 0, 196, 195, 195, 0, + 0, 0, 199, 199, 210, 199, 0, 199, 0, 212, + 212, 0, 0, 0, 0, 0, 0, 0, 196, 196, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 211, 0, 0, 0, 0, 0, 199, 199, 0, + 0, 0, 0, 0, 0, 0, 209, 209, 0, 0, + 209, 209, 209, 209, 209, 0, 0, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 199, 199, + 0, 0, 0, 210, 210, 207, 0, 210, 210, 210, + 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, + 211, 211, 0, 0, 211, 211, 211, 211, 211, 0, + 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 196, 196, 0, 196, 197, 196, 0, 197, 0, 0, - 197, 207, 207, 0, 0, 0, 0, 0, 195, 195, - 0, 0, 0, 0, 197, 197, 0, 197, 208, 197, - 0, 208, 0, 0, 0, 196, 196, 0, 0, 0, - 0, 0, 207, 207, 0, 208, 208, 0, 208, 0, - 208, 137, 0, 0, 137, 0, 0, 0, 0, 197, - 197, 0, 0, 0, 0, 0, 196, 196, 137, 137, - 0, 137, 0, 137, 0, 143, 0, 0, 143, 0, - 208, 208, 0, 0, 0, 0, 0, 0, 0, 0, - 197, 197, 143, 143, 0, 143, 0, 143, 189, 0, - 0, 189, 0, 137, 0, 0, 190, 0, 0, 190, - 0, 208, 208, 0, 0, 189, 189, 0, 0, 191, - 0, 0, 191, 190, 190, 0, 0, 143, 0, 198, - 0, 0, 198, 0, 0, 137, 191, 191, 0, 0, - 0, 0, 0, 0, 0, 144, 198, 198, 144, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 190, 143, - 0, 0, 144, 144, 0, 0, 0, 0, 0, 0, - 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 198, 189, 199, 0, 0, 199, 0, 0, 0, - 190, 0, 148, 0, 0, 148, 0, 144, 0, 149, - 199, 199, 149, 191, 0, 0, 0, 0, 0, 148, - 148, 0, 0, 198, 0, 0, 149, 149, 0, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 0, 144, - 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, - 0, 0, 0, 0, 148, 0, 0, 0, 0, 207, - 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, - 0, 0, 0, 196, 0, 0, 148, 0, 0, 0, - 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 197, 195, 195, - 195, 195, 195, 0, 0, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 0, 0, 208, 0, - 0, 0, 207, 207, 207, 207, 207, 0, 0, 0, - 0, 207, 207, 207, 207, 207, 207, 207, 207, 207, - 0, 137, 0, 0, 0, 0, 196, 196, 196, 196, - 196, 0, 0, 0, 0, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 0, 143, 0, 0, 0, 0, - 197, 197, 197, 197, 197, 0, 0, 0, 0, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 189, 0, - 0, 208, 208, 208, 208, 208, 190, 0, 0, 0, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 191, - 0, 0, 0, 0, 137, 137, 137, 137, 137, 198, - 0, 0, 0, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 0, 0, 0, 144, 0, 0, 143, 143, - 143, 143, 143, 105, 0, 0, 0, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 137, 138, 0, 139, - 140, 141, 142, 143, 144, 0, 146, 147, 0, 0, - 189, 189, 189, 199, 0, 0, 0, 0, 190, 190, - 190, 0, 148, 197, 0, 0, 0, 105, 0, 149, - 0, 191, 191, 191, 0, 0, 0, 0, 0, 0, - 0, 198, 198, 198, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 144, 144, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 236, 238, - 239, 240, 241, 242, 244, 245, 246, 247, 249, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 0, 0, 0, 0, 199, 199, 199, 0, 0, - 0, 242, 109, 273, 148, 0, 0, 0, 0, 109, - 0, 149, 109, 0, 109, 0, 286, 287, 0, 289, - 0, 0, 0, 0, 0, 0, 197, 0, 109, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 300, 0, 301, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 303, 0, 304, 0, 0, - 109, 109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 242, 0, 0, 308, 309, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, - 0, 0, 109, 105, 109, 109, 0, 197, 197, 0, - 105, 0, 0, 105, 0, 105, 0, 0, 0, 323, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 0, 0, 0, 0, 105, 0, 0, 0, 197, 0, - 0, 0, 0, 197, 0, 94, 0, 0, 0, 0, - 0, 0, 89, 0, 0, 92, 0, 93, 0, 0, - 0, 105, 105, 0, 0, 0, 0, 0, 94, 0, - 91, 0, 0, 0, 0, 89, 100, 0, 92, 0, - 93, 0, 0, 0, 0, 242, 0, 389, 0, 0, - 0, 0, 0, 105, 354, 105, 105, 0, 0, 100, - 0, 0, 0, 54, 39, 0, 0, 197, 407, 0, - 409, 0, 0, 410, 411, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 39, 0, 0, - 0, 197, 0, 427, 0, 0, 0, 0, 95, 109, - 109, 109, 109, 109, 109, 0, 0, 0, 0, 0, - 0, 197, 0, 0, 0, 0, 0, 0, 355, 0, - 0, 95, 0, 0, 0, 0, 0, 0, 458, 0, + 0, 0, 0, 197, 207, 207, 0, 0, 207, 207, + 207, 207, 207, 0, 0, 207, 207, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 0, 0, 0, 0, + 208, 0, 0, 0, 0, 201, 0, 0, 201, 0, + 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, + 198, 0, 0, 198, 0, 201, 201, 0, 201, 0, + 201, 0, 0, 0, 0, 0, 0, 198, 198, 0, + 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, + 0, 0, 0, 0, 0, 197, 197, 197, 0, 0, + 201, 201, 0, 0, 0, 0, 0, 0, 0, 208, + 208, 0, 198, 208, 208, 208, 208, 208, 0, 0, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 201, 201, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 198, 199, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 212, 212, 0, 0, 212, + 212, 212, 212, 212, 0, 0, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 0, 0, 0, + 0, 200, 0, 0, 200, 0, 0, 200, 0, 0, + 0, 0, 0, 156, 0, 0, 156, 0, 0, 0, + 0, 200, 200, 0, 200, 0, 200, 0, 0, 0, + 156, 156, 0, 0, 0, 0, 0, 0, 199, 199, + 199, 199, 199, 0, 0, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 200, 200, 202, 0, + 0, 202, 0, 0, 202, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, + 0, 202, 0, 202, 0, 0, 0, 200, 200, 0, + 0, 0, 0, 0, 0, 214, 0, 156, 214, 0, + 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 202, 202, 214, 214, 0, 214, 0, + 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 203, 0, 0, 203, + 0, 0, 203, 0, 202, 202, 0, 0, 0, 0, + 214, 214, 0, 0, 0, 0, 203, 203, 201, 203, + 0, 203, 0, 204, 0, 0, 204, 0, 0, 204, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 214, 214, 204, 204, 0, 204, 0, 204, 0, + 0, 203, 203, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 205, 0, 0, 205, 215, 0, 0, + 215, 0, 0, 0, 0, 0, 0, 0, 204, 204, + 205, 205, 203, 203, 215, 215, 0, 215, 0, 215, + 0, 201, 201, 201, 201, 201, 0, 0, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 204, + 204, 0, 198, 198, 198, 205, 0, 0, 213, 215, + 215, 213, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 213, 213, 0, 213, 144, + 213, 0, 144, 0, 0, 0, 0, 205, 0, 0, + 215, 215, 0, 0, 200, 0, 144, 144, 0, 144, + 0, 144, 150, 156, 0, 150, 0, 0, 0, 0, + 213, 0, 206, 0, 0, 206, 0, 0, 0, 150, + 150, 0, 150, 0, 150, 0, 0, 0, 0, 206, + 206, 144, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 213, 213, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 0, 0, 150, 0, 0, 0, 0, 0, + 0, 0, 0, 144, 206, 0, 0, 200, 200, 200, + 200, 200, 0, 0, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 156, 150, 0, 214, 0, + 0, 0, 0, 0, 0, 0, 206, 151, 0, 0, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 151, 151, 0, 0, 0, 0, + 0, 0, 0, 0, 202, 202, 202, 202, 202, 203, + 0, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, + 0, 214, 214, 214, 214, 214, 0, 0, 0, 0, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 0, + 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 205, 0, 0, 0, 215, 0, 0, + 0, 0, 203, 203, 203, 203, 203, 0, 0, 0, + 0, 203, 203, 203, 203, 203, 203, 203, 203, 203, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, + 204, 204, 204, 204, 0, 0, 0, 0, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, + 215, 215, 215, 215, 215, 205, 205, 205, 0, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 0, 0, + 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 94, 0, 0, 0, - 0, 0, 0, 89, 0, 0, 92, 0, 93, 0, - 0, 0, 109, 109, 0, 0, 0, 0, 0, 109, - 109, 109, 109, 0, 235, 109, 0, 100, 0, 0, - 105, 105, 105, 105, 105, 105, 0, 0, 0, 109, - 109, 109, 109, 0, 109, 109, 109, 0, 0, 109, - 109, 109, 109, 109, 54, 39, 94, 0, 0, 0, - 0, 0, 0, 89, 0, 0, 92, 0, 93, 0, - 0, 0, 101, 57, 58, 59, 60, 61, 0, 0, - 0, 109, 109, 105, 237, 0, 0, 100, 0, 95, - 0, 0, 0, 0, 0, 101, 57, 58, 59, 60, - 61, 0, 0, 105, 105, 0, 0, 0, 0, 0, - 105, 105, 105, 105, 54, 39, 105, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, - 105, 105, 105, 105, 0, 105, 105, 105, 0, 0, - 105, 0, 105, 105, 105, 63, 102, 0, 99, 95, - 0, 0, 103, 0, 94, 0, 0, 0, 98, 0, - 0, 89, 0, 0, 92, 0, 93, 0, 63, 102, - 0, 0, 105, 105, 0, 103, 343, 344, 345, 90, - 0, 98, 248, 0, 0, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 346, 347, 348, 349, 0, - 350, 351, 90, 0, 0, 352, 0, 353, 0, 94, - 0, 0, 54, 39, 96, 97, 89, 0, 0, 92, - 0, 93, 0, 101, 57, 58, 59, 60, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, - 100, 94, 0, 0, 0, 0, 0, 95, 89, 94, - 0, 92, 0, 93, 0, 0, 89, 0, 0, 92, - 0, 93, 0, 0, 0, 0, 0, 54, 39, 250, - 0, 0, 100, 0, 0, 0, 99, 0, 0, 0, - 100, 0, 0, 101, 57, 58, 59, 60, 61, 0, - 0, 0, 0, 0, 0, 0, 63, 102, 0, 54, - 39, 0, 95, 103, 0, 0, 0, 54, 39, 98, + 0, 213, 213, 213, 213, 213, 0, 0, 0, 0, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 0, + 0, 0, 144, 144, 144, 144, 144, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 0, 0, 0, 0, 0, 150, 150, 150, 150, 150, + 0, 0, 0, 0, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 111, 206, 206, 206, 151, 0, 0, + 111, 0, 0, 111, 0, 111, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, + 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, + 0, 0, 0, 0, 107, 0, 0, 107, 0, 107, + 0, 111, 111, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 0, 0, 0, 0, 107, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 151, 94, 0, 111, 0, 111, 111, 0, 89, 0, + 0, 92, 0, 93, 0, 107, 107, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 94, 0, 0, 107, 0, 107, + 107, 89, 0, 0, 92, 0, 93, 0, 0, 54, + 39, 0, 0, 0, 0, 0, 0, 0, 0, 91, + 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, + 0, 360, 0, 0, 95, 89, 0, 0, 92, 0, + 93, 0, 54, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 236, 0, 0, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 111, 111, 111, 111, 111, 111, 54, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 0, 0, 0, 95, 0, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 107, 107, 107, 107, 107, 107, + 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 111, 0, 0, 0, 0, 0, + 111, 111, 111, 111, 0, 0, 111, 0, 101, 57, + 58, 59, 60, 61, 0, 0, 0, 107, 0, 0, + 111, 111, 111, 111, 0, 111, 111, 111, 0, 0, + 111, 111, 111, 111, 111, 0, 0, 107, 107, 0, + 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, + 107, 101, 57, 58, 59, 60, 61, 0, 0, 0, + 0, 99, 111, 111, 107, 107, 107, 107, 0, 107, + 107, 107, 0, 0, 107, 0, 107, 107, 107, 0, + 0, 63, 102, 0, 0, 0, 0, 0, 103, 348, + 349, 350, 0, 0, 98, 101, 57, 58, 59, 60, + 61, 0, 0, 0, 99, 0, 107, 107, 351, 352, + 353, 354, 0, 355, 356, 90, 0, 0, 357, 0, + 358, 0, 0, 0, 63, 102, 94, 0, 0, 0, + 0, 103, 0, 89, 0, 0, 92, 98, 93, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 99, 94, + 96, 97, 0, 0, 238, 0, 89, 100, 90, 92, + 0, 93, 0, 0, 94, 0, 0, 0, 63, 102, + 0, 89, 0, 0, 92, 103, 93, 249, 0, 0, + 100, 98, 0, 0, 54, 39, 0, 0, 0, 0, + 0, 0, 251, 96, 97, 100, 0, 0, 0, 0, + 0, 0, 90, 0, 0, 0, 0, 54, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 54, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 63, 102, 0, 0, - 0, 0, 0, 103, 0, 96, 97, 0, 0, 98, + 0, 0, 0, 0, 0, 0, 0, 95, 94, 0, + 0, 0, 0, 0, 0, 89, 0, 0, 92, 0, + 93, 0, 94, 0, 0, 0, 0, 0, 0, 89, + 0, 0, 92, 0, 93, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 57, 58, 59, 60, 61, 0, 0, 0, - 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, - 0, 0, 0, 0, 99, 0, 135, 57, 58, 59, + 0, 95, 0, 101, 57, 58, 59, 60, 61, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 57, 58, 59, 60, 61, 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, 99, + 0, 101, 57, 58, 59, 60, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, + 0, 0, 0, 0, 0, 0, 63, 102, 0, 99, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 98, + 0, 0, 0, 0, 99, 0, 0, 0, 0, 63, 102, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 0, 99, 98, 96, 97, 0, 0, 0, 0, 99, + 90, 0, 98, 0, 63, 102, 0, 0, 0, 0, + 0, 103, 0, 0, 0, 0, 0, 98, 0, 0, + 0, 0, 0, 90, 0, 135, 57, 58, 59, 60, + 61, 0, 0, 0, 0, 96, 97, 0, 90, 101, + 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 97, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 63, 102, 90, 0, 0, 0, 0, 103, 63, - 102, 0, 0, 0, 98, 0, 103, 0, 0, 0, - 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 96, 97, - 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, + 0, 0, 99, 0, 0, 0, 0, 0, 136, 102, + 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, + 0, 98, 63, 102, 0, 0, 0, 0, 0, 103, + 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, + 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 0, 0, 0, 0, 0, 0, 96, 97, + 0, 96, 97, ); protected static $yyCheck = array(33, - 41, 41, 36, 37, 44, 40, 36, 37, 92, 6, - 145, 123, 260, 47, 123, 194, 50, 125, 52, 125, - 50, 55, 52, 37, 38, 55, 92, 92, 42, 43, - 320, 45, 46, 47, 59, 260, 44, 71, 260, 41, - 35, 71, 44, 41, 78, 79, 60, 321, 62, 59, - 312, 59, 300, 87, 91, 92, 91, 87, 44, 260, - 37, 38, 41, 40, 41, 42, 43, 44, 45, 46, - 47, 220, 41, 59, 92, 300, 41, 44, 300, 44, - 94, 58, 59, 60, 61, 62, 63, 266, 123, 92, - 59, 93, 340, 58, 59, 93, 300, 301, 123, 37, - 38, 76, 312, 41, 42, 43, 44, 45, 46, 47, - 124, 145, 35, 123, 93, 340, 93, 94, 5, 92, - 58, 59, 60, 61, 62, 63, 93, 37, 93, 37, - 125, 91, 42, 43, 42, 45, 46, 47, 25, 47, - 402, 403, 47, 71, 59, 120, 123, 124, 125, 93, - 184, 260, 39, 91, 184, 93, 94, 37, 38, 87, - 125, 41, 42, 43, 44, 45, 46, 47, 59, 150, - 64, 334, 41, 78, 79, 44, 260, 340, 58, 59, - 60, 61, 62, 63, 44, 123, 124, 125, 337, 368, - 59, 40, 402, 403, 260, 260, 37, 38, 311, 311, - 41, 42, 43, 44, 45, 46, 47, 40, 41, 334, - 207, 91, 422, 93, 94, 340, 365, 58, 59, 60, - 61, 62, 63, 260, 261, 262, 263, 264, 265, 41, - 211, 340, 44, 41, 41, 41, 44, 44, 44, 40, - 41, 310, 260, 123, 124, 125, 58, 59, 383, 333, - 91, 59, 93, 94, 37, 38, 35, 260, 41, 42, - 43, 44, 45, 46, 47, 373, 374, 373, 374, 402, - 403, 310, 300, 301, 340, 58, 59, 60, 61, 62, - 63, 93, 123, 124, 125, 280, 281, 282, 283, 284, - 285, 123, 44, 61, 37, 329, 333, 332, 312, 42, - 43, 61, 45, 46, 47, 40, 334, 59, 410, 346, - 93, 94, 340, 125, 41, 333, 41, 60, 299, 62, - 41, 41, 340, 44, 44, 41, 41, 44, 44, 44, - 333, 123, 366, 310, 311, 312, 317, 340, 58, 59, - 335, 124, 125, 58, 59, 44, 125, 373, 374, 383, - 355, 300, 301, 40, 331, 300, 301, 280, 281, 282, - 283, 284, 285, 340, 41, 40, 331, 44, 40, 410, - 410, 44, 93, 93, 312, 78, 79, 93, 93, 410, - 93, 58, 59, 388, 44, 334, 400, 401, 402, 403, - 260, 340, 340, 331, 332, 41, 401, 411, 412, 41, - 61, 260, 312, 41, 312, 125, 44, 61, 422, 40, - 125, 445, 40, 58, 41, 445, 93, 40, 44, 40, - 340, 59, 41, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 321, 40, 413, 414, - 415, 331, 332, 41, 459, 93, 93, 462, 41, 41, - 40, 466, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 312, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 41, 41, 123, 41, 340, - 331, 332, 402, 403, 402, 403, 44, 58, 123, 40, - 40, 280, 281, 282, 283, 284, 285, 125, 40, 59, - 59, 40, 422, 40, 422, 125, 59, 361, 125, 331, + 92, 194, 36, 37, 340, 150, 36, 37, 145, 125, + 41, 92, 41, 47, 123, 44, 50, 33, 52, 125, + 50, 55, 52, 92, 40, 55, 6, 43, 260, 45, + 260, 41, 41, 37, 59, 312, 59, 71, 42, 123, + 426, 71, 44, 47, 78, 79, 37, 38, 64, 320, + 59, 42, 43, 87, 45, 46, 47, 87, 312, 321, + 446, 40, 260, 41, 92, 92, 44, 212, 300, 60, + 300, 62, 37, 44, 267, 91, 92, 42, 43, 41, + 45, 46, 47, 93, 37, 38, 260, 423, 59, 42, + 43, 93, 45, 46, 47, 60, 380, 62, 123, 334, + 123, 41, 300, 94, 44, 340, 92, 60, 340, 62, + 126, 145, 91, 37, 41, 93, 76, 44, 42, 43, + 76, 45, 46, 47, 360, 402, 403, 47, 59, 89, + 90, 93, 92, 93, 94, 95, 96, 97, 59, 99, + 100, 94, 340, 427, 123, 422, 430, 5, 402, 403, + 184, 260, 91, 93, 184, 35, 116, 302, 78, 79, + 120, 397, 44, 64, 120, 449, 93, 25, 260, 71, + 41, 124, 41, 44, 410, 44, 321, 59, 462, 260, + 334, 39, 375, 93, 468, 87, 340, 44, 59, 58, + 59, 260, 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, 183, 93, 35, 41, 311, 208, 44, + 310, 340, 260, 260, 194, 471, 196, 197, 474, 310, + 41, 333, 478, 44, 260, 261, 262, 263, 264, 265, + 210, 211, 41, 213, 391, 44, 125, 373, 374, 340, + 220, 311, 41, 41, 333, 44, 44, 373, 374, 58, + 59, 340, 44, 123, 41, 40, 236, 44, 238, 58, + 59, 59, 410, 41, 61, 41, 44, 59, 44, 249, + 41, 251, 59, 44, 41, 41, 40, 313, 44, 333, + 58, 59, 58, 59, 93, 333, 266, 267, 312, 35, + 270, 271, 340, 61, 93, 125, 41, 333, 334, 279, + 44, 312, 40, 41, 340, 285, 93, 300, 301, 123, + 346, 40, 41, 293, 294, 93, 125, 93, 35, 373, + 402, 403, 300, 301, 35, 305, 125, 312, 44, 373, + 374, 367, 40, 332, 423, 35, 40, 391, 410, 312, + 93, 78, 79, 40, 260, 325, 44, 125, 37, 38, + 330, 40, 41, 42, 43, 44, 45, 46, 47, 410, + 221, 410, 300, 301, 44, 340, 402, 403, 312, 58, + 59, 60, 61, 62, 63, 41, 44, 41, 402, 403, + 280, 281, 282, 283, 284, 285, 61, 423, 260, 400, + 401, 402, 403, 40, 61, 375, 334, 377, 422, 40, + 411, 412, 340, 457, 93, 94, 41, 457, 125, 58, + 44, 422, 40, 40, 340, 400, 401, 402, 403, 399, + 400, 41, 402, 321, 40, 405, 406, 400, 401, 402, + 403, 41, 93, 41, 123, 124, 125, 422, 411, 412, + 41, 40, 331, 41, 123, 41, 426, 340, 428, 422, + 280, 281, 282, 283, 284, 285, 41, 41, 402, 403, + 44, 44, 125, 37, 38, 123, 446, 41, 42, 43, + 44, 45, 46, 47, 58, 59, 58, 340, 422, 40, + 341, 40, 40, 463, 58, 59, 60, 61, 62, 63, + 37, 38, 59, 59, 41, 42, 43, 44, 45, 46, + 47, 40, 40, 125, 59, 335, 361, 125, 369, 93, + 371, 58, 59, 60, 61, 62, 63, 91, 59, 93, + 94, 40, 331, 125, 413, 414, 415, 344, 91, 92, + 340, 123, 331, 394, 280, 281, 282, 283, 284, 285, + 413, 125, 41, 59, 91, 371, 93, 94, 40, 123, + 124, 125, 59, 331, 300, 301, 280, 281, 282, 283, + 284, 285, 41, 280, 281, 282, 283, 284, 285, 280, + 281, 282, 283, 284, 285, 321, 123, 124, 125, 340, + 280, 281, 282, 283, 284, 285, 58, 37, 38, 300, + 301, 41, 42, 43, 44, 45, 46, 47, 300, 301, + 300, 301, 125, 41, 413, 414, 415, 340, 58, 59, + 60, 61, 62, 63, 413, 414, 415, 123, 335, 93, + 125, 310, 311, 312, 260, 261, 262, 263, 264, 265, + 123, 41, 334, 123, 123, 413, 414, 415, 340, 93, + 41, 91, 331, 93, 94, 41, 91, 92, 41, 58, + 41, 340, 340, 41, 93, 123, 41, 41, 125, 59, + 59, 41, 125, 41, 125, 7, 86, 282, 208, 281, + 42, 41, 84, 123, 124, 125, 456, 373, 364, 436, + 337, 298, 196, 120, 37, 38, 23, -1, 41, 42, + 43, 44, 45, 46, 47, 193, -1, 260, 261, 262, + 263, 264, 265, 220, -1, 58, 59, 60, 61, 62, + 63, 400, 401, 402, 403, 404, 405, 406, 407, 408, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, -1, -1, 300, 312, -1, + 93, 94, -1, -1, -1, -1, -1, 331, -1, 266, + -1, -1, -1, -1, -1, -1, -1, 331, 332, -1, + -1, -1, 279, -1, -1, 312, -1, -1, -1, -1, + 333, 124, 125, -1, -1, -1, 293, 294, -1, -1, + -1, 37, 38, 346, 331, 332, 42, 43, -1, 45, + 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 60, -1, 62, -1, 325, -1, + -1, -1, -1, 330, -1, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 312, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, + -1, 331, 332, -1, -1, -1, 37, 38, 333, -1, + 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, + -1, 346, -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, 41, 42, 43, + 44, 45, 46, 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, - 40, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 59, 35, 344, 125, 340, 331, 280, - 281, 282, 283, 284, 285, 123, 335, 59, 413, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 41, 312, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 371, 40, 37, 38, 340, 59, 41, 42, - 43, 44, 45, 46, 47, 35, 41, 125, 58, 340, - 41, 413, 414, 415, 123, 58, 59, 60, 61, 62, - 63, 331, 125, 93, 123, 123, 331, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 41, 123, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 93, 94, 37, 38, 93, 41, 41, 42, 43, 44, - 45, 46, 47, 41, 41, 58, 340, 400, 401, 402, - 403, 41, 93, 58, 59, 60, 61, 62, 63, 123, - 41, 124, 125, 35, 125, 41, 59, 59, 41, 422, - 86, 37, 38, 125, 7, 41, 42, 43, 44, 45, - 46, 47, 125, 413, 414, 415, 207, 278, 93, 94, - 42, 279, 58, 59, 60, 61, 62, 63, 41, 84, - 37, 38, 359, 366, 41, 42, 43, 44, 45, 46, - 47, 260, 261, 262, 263, 264, 265, 424, 333, 124, - 125, 58, 59, 60, 61, 62, 63, 93, 94, 37, - 38, 295, 444, 41, 42, 43, 44, 45, 46, 47, - 120, 23, 196, 41, 193, -1, 44, -1, -1, -1, - 58, 59, 60, 61, 62, 63, 93, 94, 124, 125, - 58, 59, -1, -1, -1, -1, -1, -1, 37, 38, - -1, -1, 41, 42, 43, 44, 45, 46, 47, 280, - 281, 282, 283, 284, 285, 93, 94, 124, 125, 58, - 59, 60, 61, 62, 63, 93, -1, 37, 38, 300, - 301, 41, 42, 43, 44, 45, 46, 47, -1, -1, - -1, 41, -1, -1, 44, -1, 124, 125, 58, 59, - 60, 61, 62, 63, 93, 94, -1, 125, 58, 59, - 280, 281, 282, 283, 284, 285, 37, 38, 373, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, 312, - 300, 301, -1, 93, 94, 124, 125, 58, 59, 60, - 61, 62, 63, 93, -1, -1, -1, -1, 331, -1, - -1, 321, -1, -1, -1, -1, -1, -1, -1, 41, - 415, -1, 44, 418, 124, 125, -1, -1, -1, -1, - -1, -1, 93, 94, -1, 125, 58, 59, -1, -1, - -1, -1, 437, -1, -1, -1, -1, 312, 280, 281, - 282, 283, 284, 285, -1, 450, -1, -1, -1, -1, - -1, 456, -1, 124, 125, -1, 331, -1, 300, 301, - -1, 93, -1, -1, -1, -1, -1, 400, 401, 402, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 124, 125, -1, -1, -1, 331, 93, + 94, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, + 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, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - -1, -1, -1, 125, -1, 331, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 312, -1, -1, -1, -1, + 124, 125, -1, -1, -1, -1, 93, 94, -1, -1, + 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, 60, 61, 62, 63, 124, 125, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 58, 59, + 60, 61, 62, 63, 400, 401, 402, 403, -1, -1, + -1, -1, -1, -1, 37, 411, 412, -1, -1, 42, + 43, 312, 45, 46, 47, -1, 422, 124, 125, -1, + -1, -1, -1, 93, 94, -1, -1, 60, -1, 62, + 331, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, -1, 312, -1, + -1, -1, -1, -1, 124, 125, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, 331, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, 46, 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, -1, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 124, 125, -1, -1, -1, 331, 93, 94, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, + 404, 405, 406, 407, 408, 312, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 124, + 125, -1, -1, -1, 331, -1, -1, -1, -1, 37, + 38, -1, -1, 41, 42, -1, 44, -1, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 331, 400, 401, -1, -1, 404, - 405, 406, 407, 408, 312, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, -1, -1, - -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, 400, 401, -1, -1, 404, 405, - 406, 407, 408, 312, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, -1, -1, -1, - -1, -1, 331, 400, 401, -1, -1, 404, 405, 406, + 58, 59, 60, 61, 62, 63, 400, 401, -1, -1, + 404, 405, 406, 407, 408, 312, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + -1, -1, -1, -1, 331, 93, 94, -1, -1, -1, + -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, 312, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 124, 125, -1, -1, + -1, 331, -1, -1, -1, -1, 37, 38, -1, -1, + -1, 42, 43, -1, 45, 46, 47, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, + 61, 62, 63, 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, - -1, 331, 400, 401, -1, -1, 404, 405, 406, 407, - 408, 331, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 413, 414, 415, -1, -1, - -1, -1, 91, 92, -1, -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, 422, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, 404, 405, 406, 407, 408, 331, + -1, -1, -1, 94, -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, 422, 413, 414, 415, -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, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 37, 38, -1, -1, 41, 42, -1, 44, - -1, 46, 47, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 58, 59, 60, 61, 62, 63, 37, - 38, 413, 414, 415, 42, 43, -1, 45, 46, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, 61, 62, 63, 37, 38, 93, 94, - -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, - -1, 260, 261, 262, 263, 264, 265, -1, -1, 60, - 61, 62, 63, 91, -1, -1, 94, -1, -1, 124, - 125, -1, -1, -1, -1, -1, 219, -1, -1, 37, - 38, -1, -1, 41, 42, 43, -1, 45, 46, 47, - -1, 300, -1, 94, -1, 123, 124, -1, -1, -1, - -1, -1, 60, 61, 62, 63, 37, 38, -1, -1, - -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, - -1, -1, 265, 124, 333, -1, -1, -1, -1, 60, - 61, 62, 63, 37, 38, -1, 94, 346, 42, 43, - -1, 45, 46, 47, -1, -1, -1, 290, 291, -1, - -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, - -1, -1, 41, 94, -1, 44, 124, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 38, 321, 58, - 59, 42, 43, 326, 45, 46, 47, -1, -1, -1, - 94, -1, -1, 124, -1, -1, -1, -1, -1, 60, - 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, - -1, 45, 46, 47, 93, -1, -1, -1, -1, -1, - 124, 125, -1, -1, -1, 59, 60, 61, 62, 63, - 37, 38, -1, 94, -1, 42, 43, -1, 45, 46, - 47, -1, -1, -1, -1, -1, 125, 390, -1, -1, - -1, -1, 59, 60, 61, 62, 63, 312, -1, -1, - 94, -1, -1, 124, 125, -1, -1, -1, -1, -1, - -1, 414, -1, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, -1, 312, 41, -1, 94, 44, -1, - 124, 434, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, 332, -1, -1, -1, -1, -1, - -1, 312, -1, -1, -1, -1, -1, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, + 420, 421, 422, 124, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 331, 400, 401, 402, + 403, -1, -1, -1, 41, -1, -1, 44, 411, 412, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, + -1, 58, 59, -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, + 422, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, 312, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, -1, 125, - -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 312, 410, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 420, 421, 422, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, + 415, 416, 417, 418, 419, 420, 421, 422, 125, -1, + -1, -1, -1, 331, -1, -1, -1, -1, -1, 37, + 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, + 58, 59, -1, -1, 37, 38, -1, -1, 41, 42, + 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, + -1, -1, -1, 91, -1, -1, 94, 60, 61, 62, + 63, -1, 400, 401, -1, 93, 404, 405, 406, 407, + 408, 312, -1, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 123, 124, -1, -1, -1, + -1, 94, -1, -1, -1, -1, -1, 125, -1, -1, + 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, + 47, -1, -1, -1, -1, -1, 41, -1, -1, 44, + -1, 124, -1, 60, 61, 62, 63, -1, -1, -1, + -1, -1, -1, 58, 59, -1, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 94, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 93, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, -1, -1, -1, -1, -1, -1, -1, -1, + 421, 422, -1, 37, 38, -1, -1, 124, 42, 43, + 93, 45, 46, 47, 331, -1, -1, -1, -1, -1, + 125, -1, -1, -1, -1, -1, 60, 61, 62, 63, + -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, + 46, 47, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, + 94, -1, -1, 42, 43, -1, 45, 46, 47, -1, + -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, + 59, 60, 61, 62, 63, -1, 41, -1, 94, 44, + 124, 125, 58, 59, 312, -1, 413, 414, 415, -1, + -1, -1, -1, 58, 59, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 332, 94, -1, -1, 124, 125, + -1, -1, -1, 331, -1, -1, -1, 93, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, 125, + 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, + 125, -1, -1, -1, -1, -1, -1, 59, 60, 61, + 62, 63, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, 410, 411, 412, 312, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 413, 414, 415, -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, 420, 421, 422, + -1, -1, 124, -1, -1, -1, -1, -1, 331, -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, -1, 312, 60, + 61, 62, 63, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 312, -1, 413, 414, + 415, -1, -1, 94, -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, 312, 331, 411, 412, -1, 414, 415, 416, 417, - 418, 419, 420, 421, 422, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 312, -1, 411, 412, -1, + 413, 414, 415, 312, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, 331, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, -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, 422, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, 422, -1, -1, -1, 413, 414, 415, + -1, -1, -1, -1, 37, 38, -1, -1, 413, 42, + 43, -1, 45, 46, 47, -1, -1, -1, -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, 41, 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 413, 414, 415, -1, -1, 400, + -1, 94, 60, 61, 62, 63, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, 312, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 124, -1, -1, -1, -1, 94, -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, 124, -1, 60, 61, + 62, 63, -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, -1, 94, 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, 422, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 331, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + 421, 422, 124, -1, -1, -1, -1, 94, -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, 124, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, -1, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, + 46, 47, -1, -1, -1, -1, -1, -1, 41, -1, + -1, 44, -1, 94, 60, 61, 62, 63, -1, 312, + -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, -1, 124, -1, -1, -1, -1, 94, -1, + -1, -1, 41, -1, 312, 44, -1, -1, -1, -1, + 93, -1, -1, -1, -1, -1, -1, -1, -1, 58, + 59, -1, -1, -1, -1, -1, -1, -1, 124, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, -1, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 312, 414, 415, 416, 417, 418, 419, 420, 421, 422, + -1, -1, -1, -1, -1, -1, 125, -1, -1, -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, 422, -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, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, 63, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, 41, 411, + 412, 44, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 312, -1, -1, -1, 58, 59, 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, 422, 37, 38, -1, -1, - 41, 42, 43, -1, 45, 46, 47, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, 37, 38, -1, -1, -1, 42, 43, - -1, 45, 46, 47, -1, -1, -1, 413, 414, 415, - -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, - 37, 38, -1, 94, 41, 42, 43, -1, 45, 46, - 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, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - -1, 45, 46, 47, -1, -1, -1, 94, -1, -1, - 124, -1, -1, -1, -1, -1, 60, 61, 62, 63, - 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, - 47, -1, -1, -1, -1, -1, -1, 124, -1, -1, - -1, -1, -1, 60, 61, 62, 63, 37, 38, -1, - 94, -1, 42, 43, -1, 45, 46, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, - 60, 61, 62, 63, -1, -1, 41, 94, -1, 44, - 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 38, -1, 58, 59, 42, 43, -1, 45, 46, - 47, -1, -1, -1, 94, -1, -1, 124, -1, -1, - -1, -1, -1, 60, 61, 62, 63, 37, 38, -1, - -1, -1, 42, 43, -1, 45, 46, 47, 93, -1, - -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, - 60, 61, 62, 63, 37, 38, -1, 94, -1, 42, - 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, - 125, 41, -1, -1, 44, -1, -1, 60, 61, 62, - 63, 312, -1, -1, 94, -1, -1, 124, 58, 59, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, -1, 42, 43, -1, 45, 46, 47, 312, -1, - -1, 94, -1, -1, 124, -1, -1, -1, -1, -1, - 60, -1, 62, 93, 37, 38, -1, 331, -1, 42, - 43, -1, 45, 46, 47, 312, -1, -1, -1, -1, - -1, 124, -1, -1, -1, -1, -1, 60, -1, 62, - -1, -1, -1, -1, 94, 125, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, + 417, 418, 419, 420, 421, 422, 312, 124, -1, -1, + 93, -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, 331, 45, + 46, 47, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 62, 63, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, - 421, 422, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 312, -1, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, + 421, 422, 331, -1, -1, -1, 41, -1, 94, 44, + -1, -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, 422, -1, 124, -1, + 413, 414, 415, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, + 47, -1, -1, -1, 413, 414, 415, -1, -1, -1, + 125, 58, 59, 60, 61, 62, 63, 37, 38, 93, + 94, 41, 42, 43, 44, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, 312, -1, -1, 58, 59, + 60, 61, 62, 63, -1, -1, 93, 94, -1, -1, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 38, -1, -1, 41, -1, 43, 44, 45, + 46, -1, -1, 93, 94, -1, -1, 124, 125, -1, + -1, -1, 58, 59, 60, 61, 62, 63, 331, -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, 312, 331, 411, 412, -1, - 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + -1, -1, -1, -1, 124, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 312, - -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, - 420, 421, 422, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, - 415, 331, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, - 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 312, - -1, 411, 412, -1, -1, 415, 416, 417, 418, 419, - 420, 421, 422, -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, 422, - -1, 37, -1, 413, 414, 415, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, 41, -1, -1, 44, - 400, 401, 402, 403, 60, -1, 62, -1, -1, -1, - -1, 411, 412, 58, 59, -1, 61, -1, 63, -1, - -1, -1, 422, -1, -1, -1, -1, 400, 401, 402, - 403, -1, -1, -1, -1, -1, 37, 38, 411, 412, - 41, 42, 43, 44, 45, 46, 47, -1, 93, 422, - -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, -1, -1, -1, 124, - 125, -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, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, -1, -1, 93, - 94, -1, -1, 124, 125, -1, -1, -1, -1, -1, - -1, -1, 38, -1, -1, 41, -1, 43, 44, 45, - 46, -1, -1, -1, -1, -1, 93, 94, -1, -1, - 124, 125, 58, 59, 60, 61, 62, 63, -1, 38, - -1, -1, 41, -1, 43, 44, 45, 46, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 124, 125, 58, - 59, 60, 61, 62, 63, -1, 38, 93, 94, 41, - -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, - 62, 63, -1, -1, 93, 94, -1, -1, 124, 125, - -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, - 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, - -1, 93, 94, -1, -1, 124, 125, 58, 59, -1, - 61, -1, 63, -1, 38, -1, 312, 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, 93, 94, 44, -1, 331, -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, 124, 125, -1, -1, -1, -1, 58, - 59, -1, -1, -1, -1, 41, -1, -1, 44, -1, - 331, -1, -1, 93, 94, -1, -1, -1, -1, -1, - 124, 125, 58, 59, 400, 401, 402, 403, -1, -1, - -1, -1, -1, -1, 93, 411, 412, 331, -1, 404, - 405, 406, 407, 408, 124, 125, 422, -1, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 93, -1, -1, - -1, -1, -1, -1, 331, -1, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, - 401, -1, -1, 404, 405, 406, 407, 408, -1, 125, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, 331, 400, 401, -1, -1, + 407, 408, -1, 41, 411, 412, 44, -1, 415, 416, + 417, 418, 419, 420, 421, 422, 312, -1, 124, 125, + 58, 59, -1, -1, -1, -1, -1, 38, -1, -1, + 41, -1, 43, 44, 45, 46, -1, -1, -1, -1, + 413, 414, 415, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, 93, -1, -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, 93, 94, -1, -1, 331, 125, -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, 124, 125, 411, 412, -1, -1, -1, + 416, 417, 418, 419, 420, 421, 422, 331, 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, 331, 61, -1, 63, -1, 124, + 125, -1, -1, -1, -1, -1, -1, -1, 413, 414, + 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -1, -1, -1, -1, -1, 93, 94, -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, -1, -1, - -1, -1, 331, 400, 401, -1, -1, 404, 405, 406, + 414, 415, 416, 417, 418, 419, 420, 421, 124, 125, + -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, -1, -1, -1, 331, + 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, + -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, - 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, 331, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -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, 331, 404, 405, 406, 407, 408, -1, -1, + 331, -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, -1, + 63, -1, -1, -1, -1, -1, -1, 58, 59, -1, + -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, + -1, -1, -1, -1, -1, 413, 414, 415, -1, -1, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 400, + 401, -1, 93, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, 331, -1, -1, -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, 404, 405, 406, 407, 408, -1, + 421, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 125, 331, -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, -1, -1, -1, + -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, + -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, + 58, 59, -1, -1, -1, -1, -1, -1, 404, 405, + 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 93, 94, 38, -1, + -1, 41, -1, -1, 44, 93, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 61, -1, 63, -1, -1, -1, 124, 125, -1, + -1, -1, -1, -1, -1, 38, -1, 125, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, 94, 58, 59, -1, 61, -1, + 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 38, -1, -1, 41, + -1, -1, 44, -1, 124, 125, -1, -1, -1, -1, + 93, 94, -1, -1, -1, -1, 58, 59, 331, 61, + -1, 63, -1, 38, -1, -1, 41, -1, -1, 44, + 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, 58, 59, -1, 61, -1, 63, -1, + -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, -1, -1, 44, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, 93, 94, + 58, 59, 124, 125, 58, 59, -1, 61, -1, 63, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 124, + 125, -1, 413, 414, 415, 93, -1, -1, 41, 93, + 94, 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, 125, -1, -1, + 124, 125, -1, -1, 331, -1, 58, 59, -1, 61, + -1, 63, 41, 331, -1, 44, -1, -1, -1, -1, + 93, -1, 41, -1, -1, 44, -1, -1, -1, 58, + 59, -1, 61, -1, 63, -1, -1, -1, -1, 58, + 59, 93, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, 331, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, -1, 125, 93, -1, -1, 404, 405, 406, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 413, 125, -1, 331, -1, + -1, -1, -1, -1, -1, -1, 125, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, -1, -1, -1, -1, + -1, -1, -1, -1, 404, 405, 406, 407, 408, 331, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 38, -1, -1, 41, -1, -1, 44, -1, - -1, -1, -1, -1, 413, 414, 415, -1, -1, -1, - -1, -1, 58, 59, -1, 61, 38, 63, -1, 41, - -1, -1, 44, -1, -1, -1, -1, 413, 414, 415, - -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, - 38, 63, -1, 41, -1, -1, 44, 93, 94, -1, + 420, 421, -1, -1, -1, -1, -1, -1, -1, 93, + -1, -1, -1, -1, -1, -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, + -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 331, -1, -1, -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, -1, -1, -1, -1, -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, -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, 124, 125, - -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, 41, -1, -1, 44, - -1, 124, 125, -1, -1, 58, 59, -1, -1, 41, - -1, -1, 44, 58, 59, -1, -1, 93, -1, 41, - -1, -1, 44, -1, -1, 125, 58, 59, -1, -1, - -1, -1, -1, -1, -1, 41, 58, 59, 44, -1, - 93, -1, -1, -1, -1, -1, -1, -1, 93, 125, - -1, -1, 58, 59, -1, -1, -1, -1, -1, -1, - -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 125, 41, -1, -1, 44, -1, -1, -1, - 125, -1, 41, -1, -1, 44, -1, 93, -1, 41, - 58, 59, 44, 125, -1, -1, -1, -1, -1, 58, - 59, -1, -1, 125, -1, -1, 58, 59, -1, -1, - -1, -1, -1, -1, -1, 331, -1, -1, -1, 125, - -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, 331, - -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, - -1, -1, -1, 331, -1, -1, 125, -1, -1, -1, - -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 331, 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, -1, -1, -1, -1, -1, -1, 331, + 404, 405, 406, 407, 408, 413, 414, 415, -1, 413, + 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + -1, -1, 331, -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, 404, 405, 406, 407, 408, -1, -1, -1, -1, + 413, 414, 415, 416, 417, 418, 419, 420, 421, -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, -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, 331, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 331, - -1, -1, -1, -1, 404, 405, 406, 407, 408, 331, - -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, 331, -1, -1, 404, 405, - 406, 407, 408, 76, -1, -1, -1, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 89, 90, -1, 92, - 93, 94, 95, 96, 97, -1, 99, 100, -1, -1, - 413, 414, 415, 331, -1, -1, -1, -1, 413, 414, - 415, -1, 331, 116, -1, -1, -1, 120, -1, 331, - -1, 413, 414, 415, -1, -1, -1, -1, -1, -1, - -1, 413, 414, 415, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 413, 414, 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, - 183, -1, -1, -1, -1, 413, 414, 415, -1, -1, - -1, 194, 33, 196, 413, -1, -1, -1, -1, 40, - -1, 413, 43, -1, 45, -1, 209, 210, -1, 212, - -1, -1, -1, -1, -1, -1, 219, -1, 59, -1, - -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, - -1, -1, 235, -1, 237, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 248, -1, 250, -1, -1, - 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 265, 266, -1, -1, 269, 270, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 282, - -1, -1, 123, 33, 125, 126, -1, 290, 291, -1, - 40, -1, -1, 43, -1, 45, -1, -1, -1, 302, + -1, -1, -1, -1, -1, 404, 405, 406, 407, 408, + -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 33, 413, 414, 415, 331, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, - -1, -1, -1, -1, 64, -1, -1, -1, 321, -1, - -1, -1, -1, 326, -1, 33, -1, -1, -1, -1, - -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, - -1, 91, 92, -1, -1, -1, -1, -1, 33, -1, - 58, -1, -1, -1, -1, 40, 64, -1, 43, -1, - 45, -1, -1, -1, -1, 368, -1, 370, -1, -1, - -1, -1, -1, 123, 59, 125, 126, -1, -1, 64, - -1, -1, -1, 91, 92, -1, -1, 390, 391, -1, - 393, -1, -1, 396, 397, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 91, 92, -1, -1, - -1, 414, -1, 416, -1, -1, -1, -1, 126, 260, - 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, - -1, 434, -1, -1, -1, -1, -1, -1, 123, -1, - -1, 126, -1, -1, -1, -1, -1, -1, 451, -1, + -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, + -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, + -1, 91, 92, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 59, -1, -1, -1, -1, 64, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + 414, 33, -1, 123, -1, 125, 126, -1, 40, -1, + -1, 43, -1, 45, -1, 91, 92, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, + -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 33, -1, -1, 123, -1, 125, + 126, 40, -1, -1, 43, -1, 45, -1, -1, 91, + 92, -1, -1, -1, -1, -1, -1, -1, -1, 58, + -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, + -1, 123, -1, -1, 126, 40, -1, -1, 43, -1, + 45, -1, 91, 92, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, + 260, 261, 262, 263, 264, 265, 91, 92, -1, -1, -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, 33, -1, -1, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - -1, -1, 333, 334, -1, -1, -1, -1, -1, 340, - 341, 342, 343, -1, 61, 346, -1, 64, -1, -1, - 260, 261, 262, 263, 264, 265, -1, -1, -1, 360, - 361, 362, 363, -1, 365, 366, 367, -1, -1, 370, - 371, 372, 373, 374, 91, 92, 33, -1, -1, -1, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, - -1, 402, 403, 313, 61, -1, -1, 64, -1, 126, - -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, - 265, -1, -1, 333, 334, -1, -1, -1, -1, -1, - 340, 341, 342, 343, 91, 92, 346, -1, -1, -1, - -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, - 360, 361, 362, 363, -1, 365, 366, 367, -1, -1, - 370, -1, 372, 373, 374, 333, 334, -1, 313, 126, - -1, -1, 340, -1, 33, -1, -1, -1, 346, -1, - -1, 40, -1, -1, 43, -1, 45, -1, 333, 334, - -1, -1, 402, 403, -1, 340, 341, 342, 343, 367, - -1, 346, 61, -1, -1, 64, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, - 365, 366, 367, -1, -1, 370, -1, 372, -1, 33, - -1, -1, 91, 92, 402, 403, 40, -1, -1, 43, - -1, 45, -1, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, - 64, 33, -1, -1, -1, -1, -1, 126, 40, 33, - -1, 43, -1, 45, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, 91, 92, 61, - -1, -1, 64, -1, -1, -1, 313, -1, -1, -1, - 64, -1, -1, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, -1, -1, -1, 333, 334, -1, 91, - 92, -1, 126, 340, -1, -1, -1, 91, 92, 346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 126, -1, -1, 260, 261, 262, 263, 264, 265, + -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 367, -1, -1, -1, 126, -1, 313, -1, -1, -1, + -1, -1, -1, 333, 334, -1, -1, -1, -1, -1, + 340, 341, 342, 343, -1, -1, 346, -1, 260, 261, + 262, 263, 264, 265, -1, -1, -1, 313, -1, -1, + 360, 361, 362, 363, -1, 365, 366, 367, -1, -1, + 370, 371, 372, 373, 374, -1, -1, 333, 334, -1, + -1, -1, -1, -1, 340, 341, 342, 343, -1, -1, + 346, 260, 261, 262, 263, 264, 265, -1, -1, -1, + -1, 313, 402, 403, 360, 361, 362, 363, -1, 365, + 366, 367, -1, -1, 370, -1, 372, 373, 374, -1, + -1, 333, 334, -1, -1, -1, -1, -1, 340, 341, + 342, 343, -1, -1, 346, 260, 261, 262, 263, 264, + 265, -1, -1, -1, 313, -1, 402, 403, 360, 361, + 362, 363, -1, 365, 366, 367, -1, -1, 370, -1, + 372, -1, -1, -1, 333, 334, 33, -1, -1, -1, + -1, 340, -1, 40, -1, -1, 43, 346, 45, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 313, 33, + 402, 403, -1, -1, 61, -1, 40, 64, 367, 43, + -1, 45, -1, -1, 33, -1, -1, -1, 333, 334, + -1, 40, -1, -1, 43, 340, 45, 61, -1, -1, + 64, 346, -1, -1, 91, 92, -1, -1, -1, -1, + -1, -1, 61, 402, 403, 64, -1, -1, -1, -1, + -1, -1, 367, -1, -1, -1, -1, 91, 92, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, + -1, -1, 91, 92, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 333, 334, -1, -1, - -1, -1, -1, 340, -1, 402, 403, -1, -1, 346, + -1, -1, -1, -1, -1, -1, -1, 126, 33, -1, + -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, -1, 33, -1, -1, -1, -1, -1, -1, 40, + -1, -1, 43, -1, 45, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 260, 261, 262, 263, 264, 265, -1, -1, -1, - 367, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 402, 403, -1, -1, -1, - -1, -1, -1, -1, 313, -1, 260, 261, 262, 263, + -1, 126, -1, 260, 261, 262, 263, 264, 265, -1, + -1, -1, -1, -1, -1, 126, -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, -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, 313, + -1, 260, 261, 262, 263, 264, 265, -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, 333, + -1, -1, -1, -1, -1, -1, 333, 334, -1, 313, + -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, + -1, -1, -1, -1, 313, -1, -1, -1, -1, 333, 334, -1, -1, -1, -1, -1, 340, -1, -1, -1, - -1, 313, 346, 402, 403, -1, -1, -1, -1, 313, + 367, -1, 346, -1, 333, 334, -1, -1, -1, -1, + -1, 340, -1, -1, -1, -1, -1, 346, -1, -1, + -1, -1, -1, 367, -1, 260, 261, 262, 263, 264, + 265, -1, -1, -1, -1, 402, 403, -1, 367, 260, + 261, 262, 263, 264, 265, -1, -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, 333, 334, 367, -1, -1, -1, -1, 340, 333, - 334, -1, -1, -1, 346, -1, 340, -1, -1, -1, - -1, -1, 346, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 367, -1, -1, 402, 403, - -1, -1, -1, 367, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 402, 403, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 313, -1, -1, -1, -1, -1, 333, 334, + -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, + -1, 346, 333, 334, -1, -1, -1, -1, -1, 340, + -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, + -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 367, -1, -1, -1, + -1, -1, -1, -1, -1, -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, - 402, 403, -1, -1, -1, -1, -1, -1, 402, 403, + -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1365,7 +1464,7 @@ class Parser extends \text\parser\generic\AbstractParser { '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', 'T_EXP', + 'T_AND_EQUAL', 'T_XOR_EQUAL', 'T_SHR', 'T_SHL', 'T_EXP', 'T_ELLIPSIS', ); protected static $yyTableCount= 0, $yyNameCount= 0; @@ -1520,7 +1619,7 @@ public function yyparse($yyLex) { // Actions switch ($yyN) { - case 1: #line 184 "src/main/jay/grammars/php.jay" + case 1: #line 186 "src/main/jay/grammars/php.jay" { $yyVal= new ParseTree(); $yyVal->origin= $yyLex->fileName; @@ -1532,35 +1631,35 @@ public function yyparse($yyLex) { } } break; - case 3: #line 199 "src/main/jay/grammars/php.jay" + case 3: #line 201 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new PackageNode()); } break; - case 4: #line 199 "src/main/jay/grammars/php.jay" + case 4: #line 201 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->name= $yyVals[-1+$yyTop]; } break; - case 7: #line 210 "src/main/jay/grammars/php.jay" + case 7: #line 212 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 8: #line 211 "src/main/jay/grammars/php.jay" + case 8: #line 213 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], array($yyVals[0+$yyTop])); } break; - case 9: #line 215 "src/main/jay/grammars/php.jay" + case 9: #line 217 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ImportNode(array('name' => $yyVals[-1+$yyTop]))); } break; - case 11: #line 222 "src/main/jay/grammars/php.jay" + case 11: #line 224 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-2+$yyTop].'.'.$yyVals[0+$yyTop]; } break; - case 13: #line 227 "src/main/jay/grammars/php.jay" + case 13: #line 229 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 14: #line 233 "src/main/jay/grammars/php.jay" + case 14: #line 235 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ClassNode(), TRUE); } break; - case 15: #line 233 "src/main/jay/grammars/php.jay" + case 15: #line 235 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1571,10 +1670,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 16: #line 242 "src/main/jay/grammars/php.jay" + case 16: #line 244 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InterfaceNode(), TRUE); } break; - case 17: #line 242 "src/main/jay/grammars/php.jay" + case 17: #line 244 "src/main/jay/grammars/php.jay" { $yyVals[-6+$yyTop]->modifiers= $yyVals[-7+$yyTop][0]; $yyVals[-6+$yyTop]->annotations= $yyVals[-7+$yyTop][1]; @@ -1584,52 +1683,52 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-6+$yyTop]; } break; - case 18: #line 253 "src/main/jay/grammars/php.jay" + case 18: #line 255 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 19: #line 254 "src/main/jay/grammars/php.jay" + case 19: #line 256 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 20: #line 258 "src/main/jay/grammars/php.jay" + case 20: #line 260 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 21: #line 259 "src/main/jay/grammars/php.jay" + case 21: #line 261 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 22: #line 263 "src/main/jay/grammars/php.jay" + case 22: #line 265 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 23: #line 264 "src/main/jay/grammars/php.jay" + case 23: #line 266 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 24: #line 268 "src/main/jay/grammars/php.jay" + case 24: #line 270 "src/main/jay/grammars/php.jay" { $yyVal= array_merge((array)$yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 25: #line 269 "src/main/jay/grammars/php.jay" + case 25: #line 271 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 26: #line 273 "src/main/jay/grammars/php.jay" + case 26: #line 275 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 27: #line 274 "src/main/jay/grammars/php.jay" + case 27: #line 276 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 28: #line 275 "src/main/jay/grammars/php.jay" + case 28: #line 277 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 29: #line 279 "src/main/jay/grammars/php.jay" + case 29: #line 281 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 30: #line 280 "src/main/jay/grammars/php.jay" + case 30: #line 282 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 31: #line 284 "src/main/jay/grammars/php.jay" + case 31: #line 286 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 32: #line 285 "src/main/jay/grammars/php.jay" + case 32: #line 287 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 33: #line 291 "src/main/jay/grammars/php.jay" + case 33: #line 293 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new FieldNode()); $yyVal->modifiers= $yyVals[-2+$yyTop][0]; $yyVal->annotations= $yyVals[-2+$yyTop][1]; @@ -1638,21 +1737,21 @@ public function yyparse($yyLex) { $yyVal->initialization= $yyVals[0+$yyTop]; } break; - case 34: #line 301 "src/main/jay/grammars/php.jay" + case 34: #line 303 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ClassConstantNode($yyVals[-2+$yyTop], TypeName::$VAR, $yyVals[0+$yyTop])); } break; - case 35: #line 307 "src/main/jay/grammars/php.jay" + case 35: #line 309 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 36: #line 308 "src/main/jay/grammars/php.jay" + case 36: #line 310 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 37: #line 314 "src/main/jay/grammars/php.jay" + case 37: #line 316 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create('__construct' == $yyVals[-1+$yyTop] ? new ConstructorNode() : new MethodNode(), TRUE); } break; - case 38: #line 314 "src/main/jay/grammars/php.jay" + case 38: #line 316 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1665,57 +1764,57 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 39: #line 328 "src/main/jay/grammars/php.jay" + case 39: #line 330 "src/main/jay/grammars/php.jay" { $yyVal= TypeName::$VAR; } break; - case 40: #line 329 "src/main/jay/grammars/php.jay" + case 40: #line 331 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 41: #line 334 "src/main/jay/grammars/php.jay" + case 41: #line 336 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[-2+$yyTop]); } break; - case 42: #line 335 "src/main/jay/grammars/php.jay" + case 42: #line 337 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], NULL); } break; - case 43: #line 339 "src/main/jay/grammars/php.jay" + case 43: #line 341 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 44: #line 340 "src/main/jay/grammars/php.jay" + case 44: #line 342 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 45: #line 344 "src/main/jay/grammars/php.jay" + case 45: #line 346 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AnnotationNode()); $yyVal->type= $yyVals[0+$yyTop]; } break; - case 46: #line 348 "src/main/jay/grammars/php.jay" + case 46: #line 350 "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 353 "src/main/jay/grammars/php.jay" + case 47: #line 355 "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 361 "src/main/jay/grammars/php.jay" + case 48: #line 363 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 49: #line 362 "src/main/jay/grammars/php.jay" + case 49: #line 364 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 50: #line 366 "src/main/jay/grammars/php.jay" + case 50: #line 368 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 51: #line 367 "src/main/jay/grammars/php.jay" + case 51: #line 369 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop] => $yyVals[0+$yyTop]); } break; - case 53: #line 372 "src/main/jay/grammars/php.jay" + case 53: #line 374 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; @@ -1723,76 +1822,82 @@ public function yyparse($yyLex) { $yyVal->body= NULL; } break; - case 54: #line 378 "src/main/jay/grammars/php.jay" + case 54: #line 380 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ConstantAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 55: #line 381 "src/main/jay/grammars/php.jay" + case 55: #line 383 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StaticMemberAccessNode(new TypeName($yyVals[-2+$yyTop]), $yyVals[0+$yyTop])); } break; - case 56: #line 384 "src/main/jay/grammars/php.jay" + case 56: #line 386 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ClassNameAccessNode(new TypeName($yyVals[-2+$yyTop]))); } break; - case 57: #line 391 "src/main/jay/grammars/php.jay" + case 57: #line 393 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 58: #line 392 "src/main/jay/grammars/php.jay" + case 58: #line 394 "src/main/jay/grammars/php.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 59: #line 396 "src/main/jay/grammars/php.jay" + case 59: #line 398 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 60: #line 397 "src/main/jay/grammars/php.jay" + case 60: #line 399 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 61: #line 401 "src/main/jay/grammars/php.jay" + case 61: #line 403 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 62: #line 402 "src/main/jay/grammars/php.jay" + case 62: #line 404 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 63: #line 406 "src/main/jay/grammars/php.jay" + case 63: #line 408 "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 407 "src/main/jay/grammars/php.jay" + case 64: #line 409 "src/main/jay/grammars/php.jay" + { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => $yyVals[-3+$yyTop], 'vararg' => TRUE, 'check' => TRUE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; + + case 65: #line 410 "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 415 "src/main/jay/grammars/php.jay" + case 66: #line 411 "src/main/jay/grammars/php.jay" + { $yyVal= array('name' => $yyVals[-1+$yyTop], 'type' => new TypeName('var'), 'vararg' => TRUE, 'check' => FALSE); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; + + case 67: #line 419 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 67: #line 420 "src/main/jay/grammars/php.jay" + case 69: #line 424 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 68: #line 421 "src/main/jay/grammars/php.jay" + case 70: #line 425 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-1+$yyTop], $yyVals[0+$yyTop]); } break; - case 69: #line 425 "src/main/jay/grammars/php.jay" + case 71: #line 429 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ReturnNode()); } break; - case 70: #line 425 "src/main/jay/grammars/php.jay" + case 72: #line 429 "src/main/jay/grammars/php.jay" { $yyVal->expression= $yyVals[-1+$yyTop]; } break; - case 71: #line 428 "src/main/jay/grammars/php.jay" + case 73: #line 432 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new IfNode()); } break; - case 72: #line 428 "src/main/jay/grammars/php.jay" + case 74: #line 432 "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 433 "src/main/jay/grammars/php.jay" + case 75: #line 437 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForNode()); } break; - case 74: #line 433 "src/main/jay/grammars/php.jay" + case 76: #line 437 "src/main/jay/grammars/php.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -1804,180 +1909,195 @@ public function yyparse($yyLex) { $yyVals[-9+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 75: #line 443 "src/main/jay/grammars/php.jay" + case 77: #line 447 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ForeachNode()); } break; - case 76: #line 443 "src/main/jay/grammars/php.jay" + case 78: #line 447 "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 448 "src/main/jay/grammars/php.jay" + case 79: #line 452 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new WhileNode()); } break; - case 78: #line 448 "src/main/jay/grammars/php.jay" + case 80: #line 452 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-5+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 79: #line 452 "src/main/jay/grammars/php.jay" + case 81: #line 456 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DoNode()); } break; - case 80: #line 452 "src/main/jay/grammars/php.jay" + case 82: #line 456 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-7+$yyTop]->statements= $yyVals[-5+$yyTop]; } break; - case 81: #line 456 "src/main/jay/grammars/php.jay" + case 83: #line 460 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new SwitchNode()); } break; - case 82: #line 456 "src/main/jay/grammars/php.jay" + case 84: #line 460 "src/main/jay/grammars/php.jay" { $yyVals[-7+$yyTop]->expression= $yyVals[-4+$yyTop]; $yyVals[-7+$yyTop]->cases= $yyVals[-1+$yyTop]; } break; - case 83: #line 460 "src/main/jay/grammars/php.jay" + case 85: #line 464 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new TryNode()); } break; - case 84: #line 460 "src/main/jay/grammars/php.jay" + case 86: #line 464 "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 465 "src/main/jay/grammars/php.jay" + case 87: #line 469 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new BreakNode()); } break; - case 87: #line 466 "src/main/jay/grammars/php.jay" + case 89: #line 470 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ContinueNode()); } break; - case 89: #line 467 "src/main/jay/grammars/php.jay" + case 91: #line 471 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ThrowNode()); } break; - case 90: #line 467 "src/main/jay/grammars/php.jay" + case 92: #line 471 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->expression= $yyVals[-1+$yyTop]; } break; - case 92: #line 471 "src/main/jay/grammars/php.jay" + case 94: #line 475 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new NoopNode()); } break; - case 93: #line 475 "src/main/jay/grammars/php.jay" + case 95: #line 479 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => NULL, 'value' => $yyVals[0+$yyTop]); } break; - case 94: #line 476 "src/main/jay/grammars/php.jay" + case 96: #line 480 "src/main/jay/grammars/php.jay" { $yyVal= array('key' => $yyVals[-2+$yyTop], 'value' => $yyVals[0+$yyTop]); } break; - case 95: #line 480 "src/main/jay/grammars/php.jay" + case 97: #line 484 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 97: #line 485 "src/main/jay/grammars/php.jay" + case 99: #line 489 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 98: #line 486 "src/main/jay/grammars/php.jay" + case 100: #line 490 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 99: #line 490 "src/main/jay/grammars/php.jay" + case 101: #line 494 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CaseNode()); } break; - case 100: #line 490 "src/main/jay/grammars/php.jay" + case 102: #line 494 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->expression= $yyVals[-2+$yyTop]; $yyVals[-4+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 101: #line 494 "src/main/jay/grammars/php.jay" + case 103: #line 498 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new DefaultNode()); } break; - case 102: #line 494 "src/main/jay/grammars/php.jay" + case 104: #line 498 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 103: #line 500 "src/main/jay/grammars/php.jay" + case 105: #line 504 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 104: #line 501 "src/main/jay/grammars/php.jay" + case 106: #line 505 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 105: #line 505 "src/main/jay/grammars/php.jay" + case 107: #line 509 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 106: #line 506 "src/main/jay/grammars/php.jay" + case 108: #line 510 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ElseNode()); } break; - case 107: #line 506 "src/main/jay/grammars/php.jay" + case 109: #line 510 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]->statements= $yyVals[0+$yyTop]; } break; - case 109: #line 515 "src/main/jay/grammars/php.jay" + case 111: #line 519 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 110: #line 516 "src/main/jay/grammars/php.jay" + case 112: #line 520 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-1+$yyTop]), $yyVals[0+$yyTop]); } break; - case 111: #line 520 "src/main/jay/grammars/php.jay" + case 113: #line 524 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new CatchNode()); } break; - case 112: #line 520 "src/main/jay/grammars/php.jay" + case 114: #line 524 "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 530 "src/main/jay/grammars/php.jay" + case 115: #line 533 "src/main/jay/grammars/php.jay" + { $yyVal= NULL; } break; + + case 116: #line 534 "src/main/jay/grammars/php.jay" + { $yyVal= [$yyVals[0+$yyTop]]; } break; + + case 117: #line 535 "src/main/jay/grammars/php.jay" + { $yyVal= $yyVals[0+$yyTop] ? array_merge([$yyVals[-2+$yyTop]], $yyVals[0+$yyTop]) : [$yyVals[-2+$yyTop]]; } break; + + case 118: #line 539 "src/main/jay/grammars/php.jay" + { $yyVal= new UnpackNode($yyVals[0+$yyTop]); } break; + + case 119: #line 540 "src/main/jay/grammars/php.jay" + { $yyVal= $yyVals[0+$yyTop]; } break; + + case 120: #line 545 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 115: #line 535 "src/main/jay/grammars/php.jay" + case 122: #line 550 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 116: #line 536 "src/main/jay/grammars/php.jay" + case 123: #line 551 "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 540 "src/main/jay/grammars/php.jay" + case 124: #line 555 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 119: #line 545 "src/main/jay/grammars/php.jay" + case 126: #line 560 "src/main/jay/grammars/php.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 120: #line 550 "src/main/jay/grammars/php.jay" + case 127: #line 565 "src/main/jay/grammars/php.jay" { $yyVal= new DynamicInstanceCreationNode(); $yyVal->variable= $yyVals[-3+$yyTop]; $yyVal->parameters= $yyVals[-1+$yyTop]; } break; - case 121: #line 558 "src/main/jay/grammars/php.jay" + case 128: #line 573 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMemberAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 122: #line 561 "src/main/jay/grammars/php.jay" + case 129: #line 576 "src/main/jay/grammars/php.jay" { $yyVal= new StaticMethodCallNode(NULL, $yyVals[-3+$yyTop], $yyVals[-1+$yyTop]); } break; - case 123: #line 564 "src/main/jay/grammars/php.jay" + case 130: #line 579 "src/main/jay/grammars/php.jay" { $yyVal= new ConstantAccessNode(NULL, $yyVals[0+$yyTop]); } break; - case 124: #line 567 "src/main/jay/grammars/php.jay" + case 131: #line 582 "src/main/jay/grammars/php.jay" { $yyVal= new ClassNameAccessNode(NULL); } break; - case 125: #line 573 "src/main/jay/grammars/php.jay" + case 132: #line 588 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -1985,10 +2105,10 @@ public function yyparse($yyLex) { } } break; - case 126: #line 579 "src/main/jay/grammars/php.jay" + case 133: #line 594 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new VariableNode($yyVals[0+$yyTop])); } break; - case 127: #line 579 "src/main/jay/grammars/php.jay" + case 134: #line 594 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -1996,19 +2116,19 @@ public function yyparse($yyLex) { } } break; - case 128: #line 585 "src/main/jay/grammars/php.jay" + case 135: #line 600 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 129: #line 585 "src/main/jay/grammars/php.jay" + case 136: #line 600 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]->position= $p; $yyVal= $yyVals[0+$yyTop]; } break; - case 130: #line 589 "src/main/jay/grammars/php.jay" + case 137: #line 604 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 131: #line 589 "src/main/jay/grammars/php.jay" + case 138: #line 604 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2020,10 +2140,10 @@ public function yyparse($yyLex) { } } break; - case 132: #line 599 "src/main/jay/grammars/php.jay" + case 139: #line 614 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InvocationNode($yyVals[-1+$yyTop])); } break; - case 133: #line 599 "src/main/jay/grammars/php.jay" + case 140: #line 614 "src/main/jay/grammars/php.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2034,53 +2154,53 @@ public function yyparse($yyLex) { } } break; - case 134: #line 608 "src/main/jay/grammars/php.jay" + case 141: #line 623 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CloneNode($yyVals[0+$yyTop])); break; } break; - case 135: #line 611 "src/main/jay/grammars/php.jay" + case 142: #line 626 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode()); } break; - case 136: #line 614 "src/main/jay/grammars/php.jay" + case 143: #line 629 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop])); } break; - case 137: #line 617 "src/main/jay/grammars/php.jay" + case 144: #line 632 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new YieldNode($yyVals[0+$yyTop], $yyVals[-2+$yyTop])); } break; - case 138: #line 620 "src/main/jay/grammars/php.jay" + case 145: #line 635 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new AssignmentNode($yyVals[0+$yyTop])); } break; - case 139: #line 623 "src/main/jay/grammars/php.jay" + case 146: #line 638 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ComparisonNode($yyVals[0+$yyTop])); } break; - case 140: #line 626 "src/main/jay/grammars/php.jay" + case 147: #line 641 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode($yyVals[0+$yyTop])); } break; - case 141: #line 629 "src/main/jay/grammars/php.jay" + case 148: #line 644 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); } break; - case 142: #line 632 "src/main/jay/grammars/php.jay" + case 149: #line 647 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new UnaryOpNode($yyVals[0+$yyTop])); $yyVal->postfix= TRUE; } break; - case 143: #line 636 "src/main/jay/grammars/php.jay" + case 150: #line 651 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2088,7 +2208,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 144: #line 642 "src/main/jay/grammars/php.jay" + case 151: #line 657 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2096,7 +2216,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 145: #line 648 "src/main/jay/grammars/php.jay" + case 152: #line 663 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2104,41 +2224,41 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 146: #line 654 "src/main/jay/grammars/php.jay" + case 153: #line 669 "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 659 "src/main/jay/grammars/php.jay" + case 154: #line 674 "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 664 "src/main/jay/grammars/php.jay" + case 155: #line 679 "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 667 "src/main/jay/grammars/php.jay" + case 156: #line 682 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new CastNode(array('type' => new TypeName('var[]'), 'expression' => $yyVals[0+$yyTop]))); } break; - case 150: #line 670 "src/main/jay/grammars/php.jay" + case 157: #line 685 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new SilenceOperatorNode($yyVals[0+$yyTop])); } break; - case 151: #line 673 "src/main/jay/grammars/php.jay" + case 158: #line 688 "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 676 "src/main/jay/grammars/php.jay" + case 159: #line 691 "src/main/jay/grammars/php.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2148,37 +2268,37 @@ public function yyparse($yyLex) { } } break; - case 153: #line 687 "src/main/jay/grammars/php.jay" + case 160: #line 702 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 155: #line 692 "src/main/jay/grammars/php.jay" + case 162: #line 707 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 156: #line 693 "src/main/jay/grammars/php.jay" + case 163: #line 708 "src/main/jay/grammars/php.jay" { $yyVal= array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])); } break; - case 157: #line 697 "src/main/jay/grammars/php.jay" + case 164: #line 712 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 158: #line 701 "src/main/jay/grammars/php.jay" + case 165: #line 716 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; - case 159: #line 702 "src/main/jay/grammars/php.jay" + case 166: #line 717 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 161: #line 707 "src/main/jay/grammars/php.jay" + case 168: #line 722 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 162: #line 707 "src/main/jay/grammars/php.jay" + case 169: #line 722 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 163: #line 708 "src/main/jay/grammars/php.jay" + case 170: #line 723 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 164: #line 708 "src/main/jay/grammars/php.jay" + case 171: #line 723 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 165: #line 712 "src/main/jay/grammars/php.jay" + case 172: #line 727 "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; @@ -2186,271 +2306,271 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 166: #line 718 "src/main/jay/grammars/php.jay" + case 173: #line 733 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 167: #line 719 "src/main/jay/grammars/php.jay" + case 174: #line 734 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 168: #line 720 "src/main/jay/grammars/php.jay" + case 175: #line 735 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 169: #line 721 "src/main/jay/grammars/php.jay" + case 176: #line 736 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 170: #line 722 "src/main/jay/grammars/php.jay" + case 177: #line 737 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 171: #line 726 "src/main/jay/grammars/php.jay" + case 178: #line 741 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => NULL))); } break; - case 172: #line 729 "src/main/jay/grammars/php.jay" + case 179: #line 744 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => NULL))); } break; - case 173: #line 732 "src/main/jay/grammars/php.jay" + case 180: #line 747 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => $yyVals[0+$yyTop]))); } break; - case 174: #line 735 "src/main/jay/grammars/php.jay" + case 181: #line 750 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => $yyVals[0+$yyTop]))); } break; - case 175: #line 741 "src/main/jay/grammars/php.jay" + case 182: #line 756 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 176: #line 742 "src/main/jay/grammars/php.jay" + case 183: #line 757 "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 746 "src/main/jay/grammars/php.jay" + case 184: #line 761 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 179: #line 751 "src/main/jay/grammars/php.jay" + case 186: #line 766 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 180: #line 755 "src/main/jay/grammars/php.jay" + case 187: #line 770 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 181: #line 756 "src/main/jay/grammars/php.jay" + case 188: #line 771 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 182: #line 757 "src/main/jay/grammars/php.jay" + case 189: #line 772 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 183: #line 758 "src/main/jay/grammars/php.jay" + case 190: #line 773 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 184: #line 759 "src/main/jay/grammars/php.jay" + case 191: #line 774 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 185: #line 760 "src/main/jay/grammars/php.jay" + case 192: #line 775 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 186: #line 761 "src/main/jay/grammars/php.jay" + case 193: #line 776 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => '~='); } break; - case 187: #line 762 "src/main/jay/grammars/php.jay" + case 194: #line 777 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 188: #line 763 "src/main/jay/grammars/php.jay" + case 195: #line 778 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 189: #line 764 "src/main/jay/grammars/php.jay" + case 196: #line 779 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 190: #line 765 "src/main/jay/grammars/php.jay" + case 197: #line 780 "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 766 "src/main/jay/grammars/php.jay" + case 198: #line 781 "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 770 "src/main/jay/grammars/php.jay" + case 199: #line 785 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 193: #line 771 "src/main/jay/grammars/php.jay" + case 200: #line 786 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 194: #line 772 "src/main/jay/grammars/php.jay" + case 201: #line 787 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 195: #line 773 "src/main/jay/grammars/php.jay" + case 202: #line 788 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 196: #line 774 "src/main/jay/grammars/php.jay" + case 203: #line 789 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 197: #line 775 "src/main/jay/grammars/php.jay" + case 204: #line 790 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 198: #line 776 "src/main/jay/grammars/php.jay" + case 205: #line 791 "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 777 "src/main/jay/grammars/php.jay" + case 206: #line 792 "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 781 "src/main/jay/grammars/php.jay" + case 207: #line 796 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 201: #line 782 "src/main/jay/grammars/php.jay" + case 208: #line 797 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 202: #line 783 "src/main/jay/grammars/php.jay" + case 209: #line 798 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 203: #line 784 "src/main/jay/grammars/php.jay" + case 210: #line 799 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 204: #line 785 "src/main/jay/grammars/php.jay" + case 211: #line 800 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 205: #line 786 "src/main/jay/grammars/php.jay" + case 212: #line 801 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 206: #line 787 "src/main/jay/grammars/php.jay" + case 213: #line 802 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 207: #line 788 "src/main/jay/grammars/php.jay" + case 214: #line 803 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 208: #line 789 "src/main/jay/grammars/php.jay" + case 215: #line 804 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 209: #line 790 "src/main/jay/grammars/php.jay" + case 216: #line 805 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 210: #line 791 "src/main/jay/grammars/php.jay" + case 217: #line 806 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 211: #line 792 "src/main/jay/grammars/php.jay" + case 218: #line 807 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 212: #line 796 "src/main/jay/grammars/php.jay" + case 219: #line 811 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 213: #line 797 "src/main/jay/grammars/php.jay" + case 220: #line 812 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 214: #line 798 "src/main/jay/grammars/php.jay" + case 221: #line 813 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 215: #line 799 "src/main/jay/grammars/php.jay" + case 222: #line 814 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 216: #line 800 "src/main/jay/grammars/php.jay" + case 223: #line 815 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 217: #line 801 "src/main/jay/grammars/php.jay" + case 224: #line 816 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 218: #line 805 "src/main/jay/grammars/php.jay" + case 225: #line 820 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 219: #line 806 "src/main/jay/grammars/php.jay" + case 226: #line 821 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 220: #line 811 "src/main/jay/grammars/php.jay" + case 227: #line 826 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 222: #line 816 "src/main/jay/grammars/php.jay" + case 229: #line 831 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 223: #line 817 "src/main/jay/grammars/php.jay" + case 230: #line 832 "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 224: #line 821 "src/main/jay/grammars/php.jay" + case 231: #line 836 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 225: #line 821 "src/main/jay/grammars/php.jay" + case 232: #line 836 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 226: #line 824 "src/main/jay/grammars/php.jay" + case 233: #line 839 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 227: #line 824 "src/main/jay/grammars/php.jay" + case 234: #line 839 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 228: #line 827 "src/main/jay/grammars/php.jay" + case 235: #line 842 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 229: #line 830 "src/main/jay/grammars/php.jay" + case 236: #line 845 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, new VariableNode($yyVals[0+$yyTop]))); } break; - case 230: #line 833 "src/main/jay/grammars/php.jay" + case 237: #line 848 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, $yyVals[-1+$yyTop])); } break; - case 231: #line 836 "src/main/jay/grammars/php.jay" + case 238: #line 851 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 232: #line 836 "src/main/jay/grammars/php.jay" + case 239: #line 851 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 233: #line 839 "src/main/jay/grammars/php.jay" + case 240: #line 854 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } break; - case 234: #line 839 "src/main/jay/grammars/php.jay" + case 241: #line 854 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 237: #line 852 "src/main/jay/grammars/php.jay" + case 244: #line 867 "src/main/jay/grammars/php.jay" { $yyVal= 'callable' === $yyVals[0+$yyTop] ? new TypeName('->var', null) : new TypeName($yyVals[0+$yyTop]); } break; - case 238: #line 856 "src/main/jay/grammars/php.jay" + case 245: #line 871 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName('var[]'); } break; - case 239: #line 860 "src/main/jay/grammars/php.jay" + case 246: #line 875 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 240: #line 861 "src/main/jay/grammars/php.jay" + case 247: #line 876 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 241: #line 867 "src/main/jay/grammars/php.jay" + case 248: #line 882 "src/main/jay/grammars/php.jay" { $yyVal= 0; } break; - case 242: #line 868 "src/main/jay/grammars/php.jay" + case 249: #line 883 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 243: #line 872 "src/main/jay/grammars/php.jay" + case 250: #line 887 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 244: #line 873 "src/main/jay/grammars/php.jay" + case 251: #line 888 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 245: #line 877 "src/main/jay/grammars/php.jay" + case 252: #line 892 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 246: #line 878 "src/main/jay/grammars/php.jay" + case 253: #line 893 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 247: #line 879 "src/main/jay/grammars/php.jay" + case 254: #line 894 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 248: #line 880 "src/main/jay/grammars/php.jay" + case 255: #line 895 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_STATIC; } break; - case 249: #line 881 "src/main/jay/grammars/php.jay" + case 256: #line 896 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 250: #line 882 "src/main/jay/grammars/php.jay" + case 257: #line 897 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_FINAL; } break; -#line 2454 "-" +#line 2574 "-" } $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..6ff80d74a 100644 --- a/src/main/php/xp/compiler/syntax/xp/Lexer.class.php +++ b/src/main/php/xp/compiler/syntax/xp/Lexer.class.php @@ -68,7 +68,7 @@ class Lexer extends \text\parser\generic\AbstractLexer { protected static $lookahead= array( - '.' => array('...' => Parser::T_DOTS), + '.' => array('...' => Parser::T_ELLIPSIS), '-' => array('-=' => Parser::T_SUB_EQUAL, '--' => Parser::T_DEC, '->' => Parser::T_ARROW), '>' => array('>=' => Parser::T_GE), '<' => array('<=' => Parser::T_SE), 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..66758de37 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\UnpackNode; +#line 77 "-" /** * Generated parser class @@ -125,7 +126,7 @@ class Parser extends \text\parser\generic\AbstractParser { const T_IMPLEMENTS= 311; const T_OPERATOR= 320; const T_THROWS= 321; - const T_DOTS= 330; + const T_ELLIPSIS= 330; const T_THIS= 332; const T_CONST= 334; const T_VARIABLE= 340; @@ -164,28 +165,29 @@ class Parser extends \text\parser\generic\AbstractParser { 52, 52, 52, 52, 42, 42, 42, 39, 39, 39, 44, 44, 56, 56, 37, 37, 37, 37, 57, 57, 41, 41, 46, 46, 46, 46, 46, 46, 26, 26, - 58, 58, 61, 59, 62, 59, 65, 59, 66, 59, - 68, 59, 69, 59, 70, 59, 72, 59, 73, 59, - 74, 59, 75, 59, 59, 59, 59, 77, 77, 79, - 79, 78, 78, 80, 67, 67, 71, 71, 81, 81, - 83, 82, 84, 82, 63, 63, 64, 85, 64, 76, - 76, 86, 86, 90, 89, 91, 91, 87, 87, 92, - 88, 55, 55, 93, 93, 60, 60, 94, 94, 94, - 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, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 108, 108, 108, 108, 108, 108, 108, 108, 109, - 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, + 58, 58, 61, 59, 62, 59, 65, 59, 67, 59, + 69, 59, 70, 59, 71, 59, 73, 59, 74, 59, + 75, 59, 76, 59, 59, 59, 59, 78, 78, 80, + 80, 79, 79, 81, 68, 68, 72, 72, 82, 82, + 84, 83, 85, 83, 63, 63, 64, 86, 64, 77, + 77, 87, 87, 91, 90, 92, 92, 88, 88, 93, + 89, 55, 55, 55, 94, 94, 66, 66, 95, 95, + 60, 60, 96, 96, 96, 100, 100, 100, 100, 102, + 31, 104, 31, 31, 31, 31, 106, 31, 107, 31, + 108, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 114, 31, 101, 101, + 105, 105, 115, 115, 116, 116, 36, 118, 36, 36, + 36, 36, 36, 36, 117, 117, 99, 99, 119, 119, + 121, 121, 120, 120, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 110, 110, 110, 110, + 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, + 112, 112, 113, 113, 103, 103, 122, 122, 124, 123, + 123, 126, 123, 127, 123, 125, 125, 10, 10, 10, + 32, 32, 32, 32, 12, 12, 97, 98, 129, 129, + 130, 130, 131, 131, 131, 131, 128, 128, 21, 21, + 49, 49, 132, 132, 133, 133, 133, 133, 133, 133, + 133, 133, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 5, 6, @@ -205,1465 +207,1449 @@ class Parser extends \text\parser\generic\AbstractParser { 3, 1, 3, 3, 1, 3, 0, 1, 1, 2, 0, 5, 0, 4, 1, 3, 0, 0, 3, 2, 1, 1, 2, 0, 9, 1, 3, 0, 1, 0, - 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, - 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, + 5, 0, 1, 3, 2, 1, 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, 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, ); 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, 298, 0, 0, 300, 299, 0, 15, 0, 325, + 327, 326, 329, 331, 330, 332, 328, 1, 0, 68, + 0, 323, 8, 0, 0, 4, 0, 0, 0, 0, + 0, 69, 20, 24, 22, 324, 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, 228, 0, 0, 234, 230, 233, 231, 232, 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, + 0, 0, 0, 301, 0, 302, 303, 304, 0, 309, + 27, 0, 0, 0, 31, 35, 0, 0, 237, 0, + 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 235, 0, 236, 208, 209, + 210, 211, 212, 0, 0, 239, 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, 306, 29, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 203, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 218, 0, 194, 0, 0, 0, 0, 0, 0, + 0, 223, 0, 199, 0, 0, 0, 0, 0, 0, 0, 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, 283, 284, 0, 289, 297, 296, + 294, 196, 286, 0, 0, 0, 229, 0, 0, 0, + 0, 0, 312, 0, 0, 313, 0, 0, 0, 307, + 310, 0, 320, 0, 0, 25, 0, 34, 36, 37, + 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 191, 193, 0, 100, 0, 0, + 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 216, + 0, 207, 0, 0, 288, 0, 180, 0, 0, 242, + 240, 0, 82, 0, 308, 0, 315, 0, 0, 21, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 35, + 0, 0, 198, 0, 0, 0, 0, 0, 194, 0, + 226, 195, 224, 0, 0, 189, 186, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 292, 174, 317, + 0, 318, 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, 217, 0, 200, + 0, 290, 295, 0, 316, 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, 184, 185, + 202, 220, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 155, 0, 0, 128, 130, 0, + 0, 0, 0, 142, 227, 0, 0, 93, 0, 0, + 0, 0, 0, 65, 0, 48, 0, 0, 53, 33, + 0, 183, 218, 187, 293, 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, - 32, + 267, 114, 61, 99, 123, 177, 63, 272, 62, 101, + 125, 418, 268, 269, 270, 405, 273, 274, 356, 357, + 406, 198, 371, 416, 508, 145, 498, 509, 541, 503, + 568, 597, 502, 499, 453, 462, 544, 41, 30, 42, + 58, 94, 95, 96, 251, 500, 501, 407, 408, 308, + 436, 446, 486, 612, 440, 146, 443, 527, 441, 442, + 447, 615, 444, 445, 439, 477, 579, 479, 493, 480, + 494, 616, 617, 630, 631, 629, 580, 604, 581, 582, + 602, 638, 603, 252, 147, 278, 116, 117, 148, 378, + 285, 192, 242, 193, 200, 187, 294, 282, 149, 150, + 151, 152, 153, 473, 201, 202, 154, 103, 155, 156, + 341, 243, 244, 333, 245, 434, 334, 118, 119, 120, + 170, 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( -222, + 0, 0, -217, 64, -186, 1166, -217, 0, 123, 154, + 149, 0, -247, -247, 0, 0, 222, 0, 209, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, + 827, 0, 0, 64, 64, 0, -37, 280, -24, -191, + 39, 0, 0, 0, 0, 0, 0, 0, -24, -24, + -24, 0, 272, 0, 201, 308, 0, 353, 209, 827, + 64, 64, 64, 365, 0, 371, 378, 0, 64, 64, + 344, 0, 0, 394, 92, 163, 92, 0, 0, 0, + 0, 0, 0, 64, 192, 0, 0, 0, 0, 0, + 414, 75, 0, 477, 347, 0, 591, 64, 214, 64, + 407, 214, 5108, 499, -19, -19, -190, 0, -108, 0, + 224, 497, 134, 0, 479, 0, 0, 0, 101, 0, + 0, 64, 454, 538, 0, 0, 471, 5524, 0, 5524, + 5524, 5524, 5524, 5524, 5524, 0, 5524, 474, 552, 0, + 5139, 473, 206, 3665, -36, 0, 578, 0, 0, 0, + 0, 0, 0, 531, 598, 0, 5233, 123, 0, 0, + 0, 0, 609, 0, 64, 251, 416, 400, 479, 438, + 542, 591, 0, 0, 0, 64, 1506, 439, 46, 2655, + -121, -121, -81, -121, -121, -121, 251, 0, 5524, 0, + 5524, 485, -36, 497, 0, -49, 2927, 193, 410, 706, + 713, 0, 99, 0, 5524, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, 5524, + 5345, 5379, 5071, 5524, 5080, 5524, 5524, 5524, 5524, 5524, + 5524, 5524, 64, 5524, 0, 0, 251, 0, 0, 0, + 0, 0, 0, -36, -247, 5524, 0, 342, 5524, 3665, + 718, 716, 0, 161, 251, 0, 20, 717, 251, 0, + 0, 1532, 0, 639, 507, 0, 337, 0, 0, 0, + 0, 646, 456, 0, 5524, 738, 479, -36, 656, 659, + 3665, 5233, 3665, 5410, 0, 0, -36, 0, 722, 485, + 99, 0, 485, 115, 3783, 3819, 3819, 3819, 3819, 3819, + 3819, 3819, 3819, 3819, 3819, 3819, 3665, 726, 441, 2365, + 2804, 5524, 159, 5524, 159, 5524, 5524, 4, 4, 5524, + 5524, 4, 4, 31, 31, -51, -51, -51, -81, 0, + -121, 0, 5524, 5233, 0, 752, 0, 737, 552, 0, + 0, 3665, 0, 5233, 0, 254, 0, 251, 296, 0, + 661, 563, 373, 564, -62, 702, 762, 0, 439, 0, + 427, 5233, 0, 5233, 93, 790, 661, 3665, 0, 5524, + 0, 0, 0, 707, 795, 0, 0, -36, 5524, 3819, + 3819, 4, 4, 4, 4, 743, 796, 0, 0, 0, + 47, 0, 0, 12, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 805, 729, 3040, 661, 0, 799, 0, + 817, 823, 655, 783, 722, 760, 0, 0, 5524, 0, + 755, 834, 753, 767, -36, 768, 3665, 0, 5233, 0, + 427, 0, 0, 5233, 0, 5524, 0, 565, 5524, 855, + 864, 548, 866, 853, 857, 877, 887, 589, 0, 0, + 0, 730, 245, 0, 0, 0, 0, 0, 0, 0, + 0, 888, 245, 874, 680, 1802, 3067, 702, 0, 0, + 0, 0, -36, 903, 904, 890, 661, 885, 451, 0, + 3094, 5524, 5524, 661, 0, 593, 620, 0, 0, 5524, + 5524, 908, 472, 0, 0, 911, 495, 0, 930, 928, + 56, 86, 86, 0, 880, 0, -33, -102, 0, 0, + 702, 0, 0, 0, 0, 0, 850, 5524, 565, 854, + 0, 917, 3191, 861, 949, 952, 633, 3227, 3339, 5524, + 589, 875, 0, 739, 0, 684, 245, 660, 722, 245, + 965, 928, 967, 245, 0, 0, 661, 0, 0, 0, + 387, 3665, 0, 661, 5524, 548, 0, 5524, 669, 5524, + 548, 902, 3665, 0, 661, 722, 64, -34, 0, 0, + 0, 928, 684, 684, 969, 886, 0, 0, 0, 387, + 0, 0, 905, 970, 0, 3366, 0, 3487, 663, 367, + 907, 0, 0, 5524, 0, 661, 0, -34, -34, 684, + 0, 1001, 920, 0, 0, 0, 0, 5524, 985, 548, + 0, 0, 0, 0, 923, 367, 0, 0, 3523, 926, + 0, 0, -34, 64, 661, 1011, 0, 0, 548, 5524, + 1002, 0, 0, 0, 0, 0, 0, -91, 936, 548, + 0, 3638, 661, 64, 1021, 0, 0, 661, 0, 0, + 942, 0, 661, 953, 0, ); - protected static $yyRindex= array( 1755, - 0, 0, 924, 0, 0, 263, 1934, 0, 769, 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, + protected static $yyRindex= array( 839, + 0, 0, 584, 0, 0, 408, 978, 0, 756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -24, 109, 0, 0, 298, 0, 805, 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, + 419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -39, 102, 0, 0, 186, 0, 488, 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, 894, -84, 954, -84, 0, 0, 0, + 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 956, 0, + 0, 956, 987, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, + 0, 0, 0, -25, 0, 0, 0, 2601, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2030, 1906, 921, + 1040, 0, 0, 364, 1577, 0, 74, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 1041, -29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 826, 0, + 0, 0, 0, 0, 0, 0, -106, 959, 1149, 465, + 1976, 2088, 1012, 2204, 2421, 2489, 0, 0, 0, 0, + 0, 0, 1577, 5504, 1645, -7, 0, 1480, 0, 0, + 9, 0, 828, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 1785, 0, 763, 0, 464, 0, 35, + 0, -20, 0, 0, 0, 0, 1048, 0, 0, 0, + 0, -106, 0, 616, 0, 0, 0, 0, 0, 0, + 555, 0, 968, 0, 0, 1003, 0, 1577, 1004, 1006, + 556, 1041, 568, 0, 0, 0, 1577, 0, -9, 0, + 0, 0, 0, 0, 1158, 62, 66, 82, 112, 297, + 528, 1057, 1059, 1088, 1090, 1179, 814, 0, 3749, 3596, + 1877, 0, 3137, 0, 4911, 0, 0, 4361, 4377, 0, + 0, 4403, 4431, 4307, 4335, 3923, 4208, 4250, 2628, 0, + 2533, 0, 1009, 1041, 0, 1341, 0, 0, 0, 0, + 0, 41, 0, -13, 0, 0, 0, 0, 0, 0, + 974, 0, 17, 0, 0, 60, 0, 0, 0, 0, + 319, 1041, 0, 979, 0, 0, 974, 135, 0, 0, + 0, 0, 0, 0, 1453, 0, 0, 1577, 0, 1195, + 1541, 4472, 4513, 4637, 4895, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, -109, 0, 0, 0, + 0, 990, 0, 0, 1066, 0, 0, 0, 0, 0, + 494, 0, 0, 0, 1577, 0, -22, 0, 1041, 0, + 4810, 0, 0, 1041, 0, 1068, 0, 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, 1087, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -106, 0, 1314, 0, 0, + 0, 0, 1577, 0, 0, 0, 974, 534, 0, 0, + 0, 1074, 0, 974, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 357, 0, 0, 1094, + 0, 1097, 1097, 0, 0, 0, 0, 0, 0, 0, + 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 778, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, 357, 0, + 0, 1103, 0, 1087, 0, 0, 974, 0, 0, 0, + 0, 574, 0, 974, 1074, 0, 0, 0, 0, 0, + 0, 0, 588, 0, 974, 357, 0, 0, 0, 0, + 0, 1104, 5, 5, 0, 0, 0, 0, 0, 285, + 0, 0, 0, 0, 0, 0, 0, 0, 403, 1028, + 0, 0, 0, 0, 0, 974, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 1114, 0, 0, + 0, 0, 0, 0, 0, 1044, 0, 0, 0, 0, + 0, 0, 0, 0, 974, 0, 0, 0, 0, 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, 0, -26, 0, 0, 0, 0, -26, 0, 0, + 0, 0, 974, 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, 1169, 704, 679, 417, + 1159, -60, 0, 1102, 1078, -148, 0, 0, 0, 0, + -116, -377, 0, 0, 0, 2235, 0, 829, 0, 0, + 83, 16, 137, 0, 0, -63, -415, 677, 686, 0, + -142, -55, 0, 651, 0, 0, 0, 0, 1137, 1139, + 0, 650, 0, 1091, 1334, -359, 301, 0, 230, -202, + 0, 0, -147, 0, 0, -419, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 682, + 672, 0, 602, 0, 0, 0, 0, 0, 641, 642, + 0, 0, 0, 0, 0, 0, 1042, 1043, 862, 0, + 343, 0, -139, 0, 1016, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 937, 0, 0, 0, 983, + 0, 988, 0, 0, 0, 0, 0, 0, 0, 1063, + 1073, 0, 1213, ); 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, - 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, - 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, + 75, 76, 77, 241, 234, 174, 16, 93, 50, 240, + 97, 227, 12, 227, 227, 110, 321, 52, 58, 13, + 173, 58, 548, 104, 595, 546, 262, 172, 171, 47, + 48, 57, 644, 319, 57, 57, 58, 121, 26, 124, + 231, 93, 93, 337, 234, 229, 227, 505, 228, 222, + 230, 438, 15, 286, 238, 305, 74, 74, 74, 263, + 347, 124, 522, 101, 81, 82, 92, 231, 55, 161, + 58, 83, 229, 12, 234, 176, 17, 230, 176, 74, + 1, 175, 59, 305, 175, 190, 5, 435, 596, 547, + 512, 34, 74, 74, 10, 74, 13, 319, 109, 14, + 92, 92, 215, 32, 173, 215, 245, 17, 74, 245, + 171, 172, 115, 15, 178, 124, 16, 74, 32, 215, + 215, 569, 246, 245, 245, 246, 276, 101, 169, 234, + 386, 60, 178, 550, 437, 584, 196, 171, 363, 246, + 246, 17, 542, 542, 172, 17, 311, 369, 56, 162, + 129, 163, 247, 321, 215, 247, 234, 507, 245, 176, + 253, 74, 173, 74, 311, 175, 178, 74, 34, 247, + 247, 74, 330, 168, 246, 219, 112, 16, 219, 321, + 572, 254, 74, 257, 32, 144, 215, 115, 626, 112, + 245, 91, 219, 219, 17, 231, 167, 412, 74, 35, + 229, 227, 277, 228, 247, 230, 246, 36, 113, 237, + 180, 421, 181, 182, 183, 184, 185, 186, 223, 188, + 225, 113, 594, 197, 112, 321, 26, 219, 74, 71, + 233, 319, 74, 476, 58, 12, 247, 34, 430, 250, + 158, 86, 87, 88, 89, 90, 34, 57, 645, 237, + 74, 171, 105, 345, 74, 288, 113, 413, 69, 219, + 233, 101, 74, 110, 110, 222, 10, 39, 466, 414, + 346, 281, 40, 283, 349, 15, 17, 415, 71, 237, + 235, 236, 355, 171, 234, 471, 74, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 309, 310, 311, 313, 315, 318, 319, 322, 323, 324, + 325, 326, 327, 328, 329, 233, 331, 168, 215, 168, + 235, 236, 245, 9, 168, 51, 84, 168, 307, 168, + 68, 342, 305, 513, 237, 112, 17, 248, 246, 16, + 248, 112, 233, 74, 171, 9, 109, 109, 17, 10, + 235, 236, 338, 339, 248, 248, 17, 361, 9, 206, + 204, 237, 206, 391, 250, 70, 368, 113, 247, 232, + 16, 10, 49, 113, 375, 168, 206, 206, 390, 206, + 17, 206, 17, 239, 10, 538, 171, 110, 496, 248, + 109, 219, 71, 9, 380, 539, 381, 57, 382, 383, + 57, 98, 384, 385, 179, 235, 236, 179, 585, 168, + 168, 206, 410, 589, 376, 307, 250, 540, 34, 10, + 392, 248, 179, 78, 232, 497, 250, 112, 238, 79, + 598, 599, 235, 236, 83, 157, 80, 157, 292, 168, + 256, 199, 157, 206, 250, 157, 250, 157, 74, 57, + 593, 232, 427, 97, 377, 54, 179, 623, 74, 113, + 238, 431, 628, 231, 220, 65, 54, 54, 229, 227, + 233, 228, 100, 230, 106, 215, 215, 231, 220, 245, + 245, 641, 229, 227, 107, 228, 223, 230, 225, 237, + 112, 520, 647, 157, 519, 246, 246, 74, 74, 359, + 223, 467, 225, 199, 9, 205, 124, 241, 205, 322, + 9, 250, 532, 190, 360, 531, 250, 108, 307, 34, + 219, 481, 113, 205, 122, 247, 247, 157, 157, 126, + 10, 189, 74, 165, 219, 74, 10, 332, 157, 74, + 534, 322, 621, 622, 168, 168, 168, 168, 168, 168, + 218, 464, 234, 248, 166, 370, 241, 205, 226, 224, + 235, 236, 74, 637, 144, 523, 234, 636, 249, 171, + 168, 249, 528, 529, 140, 206, 175, 140, 321, 232, + 132, 176, 142, 650, 497, 249, 249, 141, 241, 205, + 130, 199, 131, 178, 46, 203, 353, 168, 44, 243, + 552, 338, 339, 85, 86, 87, 88, 89, 90, 191, + 321, 244, 563, 44, 141, 204, 321, 141, 39, 74, + 249, 246, 10, 247, 168, 168, 168, 168, 144, 10, + 168, 144, 372, 535, 260, 374, 451, 144, 83, 74, + 586, 248, 588, 91, 168, 168, 168, 168, 243, 168, + 168, 168, 249, 111, 168, 168, 168, 168, 168, 9, + 244, 336, 157, 157, 157, 157, 157, 157, 354, 105, + 484, 485, 255, 133, 5, 571, 619, 44, 322, 44, + 243, 112, 43, 44, 45, 10, 168, 168, 157, 84, + 144, 460, 244, 132, 259, 142, 458, 456, 271, 457, + 141, 459, 592, 130, 322, 131, 329, 321, 321, 321, + 248, 248, 642, 113, 168, 157, 37, 38, 322, 322, + 322, 205, 206, 206, 206, 206, 206, 64, 66, 67, + 577, 578, 206, 206, 206, 206, 206, 206, 233, 613, + 614, 284, 157, 157, 157, 157, 290, 321, 157, 289, + 322, 83, 233, 321, 159, 160, 291, 237, 343, 344, + 348, 351, 157, 157, 157, 157, 352, 157, 157, 157, + 358, 237, 157, 321, 157, 157, 157, 362, 364, 321, + 461, 365, 370, 379, 249, 485, 133, 321, 321, 321, + 485, 388, 17, 17, 189, 17, 17, 17, 17, 17, + 17, 419, 17, 181, 157, 157, 181, 179, 86, 87, + 88, 89, 90, 17, 17, 17, 17, 17, 17, 321, + 83, 181, 409, 411, 417, 321, 226, 224, 235, 236, + 425, 428, 157, 10, 429, 432, 433, 221, 222, 485, + 226, 224, 235, 236, 448, 19, 17, 232, 17, 17, + 9, 221, 222, 449, 182, 181, 454, 182, 485, 452, + 137, 232, 455, 5, 5, 5, 5, 5, 5, 485, + 5, 182, 182, 463, 468, 329, 10, 469, 17, 17, + 17, 17, 465, 5, 5, 5, 5, 140, 393, 394, + 395, 470, 472, 136, 482, 329, 329, 329, 329, 329, + 329, 329, 329, 483, 478, 487, 182, 396, 397, 398, + 399, 488, 400, 401, 128, 489, 490, 402, 329, 403, + 179, 86, 87, 88, 89, 90, 491, 504, 492, 2, + 305, 305, 506, 305, 305, 305, 305, 305, 305, 507, + 305, 249, 249, 514, 515, 518, 10, 329, 516, 134, + 135, 305, 305, 525, 305, 305, 305, 192, 192, 526, + 192, 192, 192, 192, 192, 192, 192, 192, 530, 533, + 536, 537, 545, 137, 551, 555, 554, 404, 192, 192, + 192, 192, 192, 192, 305, 557, 305, 305, 558, 495, + 86, 87, 88, 89, 90, 559, 560, 565, 566, 570, + 140, 393, 394, 395, 567, 573, 136, 574, 587, 600, + 601, 192, 17, 192, 192, 17, 305, 305, 305, 305, + 396, 397, 398, 399, 590, 400, 401, 128, 608, 607, + 402, 618, 403, 611, 20, 21, 22, 264, 24, 25, + 624, 26, 625, 627, 192, 192, 192, 632, 277, 277, + 635, 640, 277, 277, 277, 277, 277, 27, 277, 643, + 646, 651, 134, 135, 653, 17, 17, 17, 6, 277, + 277, 277, 277, 277, 277, 17, 30, 655, 28, 177, + 221, 172, 314, 41, 221, 17, 17, 17, 265, 181, + 404, 314, 40, 301, 302, 17, 303, 251, 109, 250, + 251, 181, 250, 172, 277, 277, 20, 21, 22, 23, + 24, 25, 51, 26, 251, 251, 250, 250, 2, 2, + 2, 2, 2, 2, 57, 2, 181, 91, 252, 27, + 253, 252, 177, 253, 92, 277, 277, 88, 2, 2, + 2, 145, 2, 90, 89, 252, 252, 253, 253, 251, + 305, 250, 147, 305, 177, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 29, 17, 17, 17, 148, 17, + 17, 17, 17, 17, 17, 33, 17, 190, 102, 127, + 252, 251, 253, 250, 549, 227, 227, 420, 543, 227, + 227, 227, 227, 227, 575, 227, 73, 72, 214, 164, + 553, 214, 564, 305, 305, 305, 227, 227, 17, 227, + 227, 17, 252, 305, 253, 214, 214, 633, 293, 254, + 605, 606, 254, 305, 305, 305, 424, 373, 279, 280, + 340, 335, 192, 305, 261, 263, 254, 254, 263, 17, + 258, 227, 227, 46, 0, 0, 0, 0, 0, 0, + 214, 192, 263, 263, 0, 0, 19, 6, 6, 6, + 6, 6, 6, 0, 6, 0, 0, 0, 277, 0, + 0, 254, 227, 227, 227, 0, 0, 6, 6, 6, + 6, 0, 214, 0, 0, 0, 0, 263, 0, 0, + 0, 0, 0, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 0, 254, 305, 305, 0, 305, 305, 305, + 305, 305, 305, 251, 305, 250, 0, 0, 0, 263, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, + 0, 192, 192, 0, 192, 192, 192, 192, 192, 192, + 192, 192, 0, 0, 252, 0, 253, 0, 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, 291, 291, 0, + 0, 291, 291, 291, 291, 291, 291, 291, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 291, 291, + 291, 291, 291, 291, 32, 227, 32, 32, 0, 0, + 0, 277, 277, 0, 214, 277, 277, 277, 277, 277, + 0, 0, 277, 277, 0, 277, 277, 277, 277, 277, + 277, 291, 277, 291, 291, 254, 0, 32, 32, 32, + 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, + 25, 263, 26, 0, 0, 0, 0, 0, 0, 0, + 227, 0, 0, 0, 291, 291, 291, 0, 27, 0, + 251, 251, 250, 250, 0, 0, 0, 0, 0, 227, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 188, + 188, 0, 0, 188, 188, 188, 188, 188, 188, 188, + 0, 252, 252, 253, 253, 0, 0, 0, 0, 0, + 188, 188, 188, 188, 188, 188, 99, 99, 0, 0, + 99, 99, 99, 99, 99, 0, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 99, 99, 99, + 99, 99, 0, 188, 0, 188, 188, 0, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 0, 17, 227, + 227, 0, 227, 227, 227, 227, 227, 227, 227, 227, + 32, 214, 99, 99, 0, 0, 188, 188, 188, 0, + 0, 264, 0, 0, 264, 0, 0, 0, 0, 0, + 0, 0, 254, 254, 0, 0, 19, 291, 264, 264, + 0, 0, 0, 99, 99, 99, 0, 0, 263, 263, + 0, 0, 0, 285, 285, 366, 0, 285, 285, 285, + 285, 285, 19, 285, 0, 32, 0, 0, 0, 0, + 266, 0, 0, 264, 285, 285, 285, 285, 285, 285, + 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, + 0, 0, 291, 0, 0, 0, 350, 0, 0, 0, + 0, 0, 0, 0, 0, 264, 0, 387, 0, 285, + 285, 291, 0, 0, 0, 0, 0, 389, 0, 0, + 0, 192, 192, 0, 192, 192, 192, 192, 225, 192, + 192, 192, 0, 0, 0, 422, 0, 423, 0, 0, + 285, 285, 285, 0, 192, 192, 192, 192, 0, 188, + 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, 192, 99, 0, 192, 0, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 0, + 0, 291, 291, 0, 291, 291, 291, 291, 291, 291, + 291, 291, 474, 0, 188, 0, 0, 475, 192, 0, + 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 0, 20, 21, 22, 264, 24, + 25, 99, 26, 0, 0, 0, 0, 264, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 99, + 99, 20, 21, 22, 264, 24, 25, 0, 26, 99, + 0, 287, 287, 0, 0, 287, 287, 287, 287, 287, + 0, 287, 0, 285, 27, 0, 0, 0, 0, 265, + 0, 0, 287, 287, 287, 287, 287, 287, 0, 0, + 0, 0, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 0, 0, 188, 188, 265, 188, 188, 188, 188, + 188, 188, 188, 188, 0, 0, 0, 287, 287, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 285, 0, + 99, 99, 19, 99, 99, 99, 99, 99, 99, 0, + 99, 190, 0, 0, 0, 0, 0, 285, 287, 287, + 287, 0, 0, 0, 272, 0, 0, 272, 0, 0, + 272, 0, 0, 0, 0, 0, 510, 0, 0, 0, + 0, 0, 0, 0, 272, 272, 0, 272, 0, 272, + 0, 0, 234, 234, 0, 234, 0, 234, 234, 234, + 234, 234, 234, 0, 264, 264, 192, 0, 0, 0, + 0, 0, 0, 0, 0, 234, 234, 234, 234, 272, + 272, 0, 0, 0, 0, 192, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 0, 0, 285, 285, 0, + 285, 285, 285, 285, 285, 285, 234, 285, 234, 234, + 272, 272, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 279, 279, 0, 0, 279, 279, 279, 279, + 279, 0, 279, 0, 0, 0, 0, 0, 0, 234, + 0, 234, 0, 279, 279, 279, 279, 279, 279, 0, + 0, 287, 0, 0, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 0, 0, 192, 192, 0, 192, 192, + 192, 192, 192, 192, 192, 192, 227, 227, 279, 279, + 0, 227, 227, 227, 227, 0, 227, 0, 0, 0, + 0, 20, 21, 22, 264, 24, 25, 0, 26, 227, + 227, 227, 227, 0, 0, 0, 287, 0, 0, 279, + 279, 0, 0, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 287, 0, 0, 0, 0, + 227, 0, 227, 227, 280, 280, 0, 0, 280, 280, + 280, 280, 280, 272, 280, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 280, 280, 280, 280, + 280, 0, 0, 227, 0, 227, 0, 0, 0, 0, 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, 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, + 280, 280, 0, 0, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 0, 0, 287, 287, 0, 287, 287, + 287, 287, 287, 287, 0, 287, 0, 0, 0, 0, + 0, 280, 280, 0, 0, 0, 0, 234, 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, 0, 279, 0, 0, 0, 234, 0, 0, 0, + 278, 278, 0, 0, 278, 278, 278, 278, 278, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 278, 278, 278, 278, 278, 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 265, 265, 0, 0, 0, 0, 0, 0, 0, + 272, 272, 272, 272, 272, 0, 0, 279, 0, 0, + 272, 272, 272, 272, 272, 272, 278, 278, 0, 0, + 0, 0, 0, 0, 0, 234, 234, 234, 234, 234, + 234, 234, 234, 234, 0, 0, 234, 234, 0, 234, + 234, 234, 234, 234, 234, 234, 234, 278, 278, 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, 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, 227, 0, 0, 280, 0, 0, 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, 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, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 279, 279, 0, 0, 279, + 279, 279, 279, 279, 0, 0, 279, 279, 0, 279, + 279, 279, 279, 279, 279, 0, 279, 0, 0, 280, 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, + 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 223, 0, 225, 0, 0, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 0, 17, + 227, 227, 0, 227, 227, 227, 227, 227, 227, 227, + 227, 0, 0, 0, 0, 0, 0, 281, 281, 0, + 278, 281, 281, 281, 281, 281, 0, 281, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 281, 281, + 281, 281, 281, 281, 0, 0, 0, 280, 280, 0, + 234, 280, 280, 280, 280, 280, 0, 0, 280, 280, + 0, 280, 280, 280, 280, 280, 280, 0, 280, 0, + 0, 0, 0, 281, 281, 278, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 282, 282, 0, 0, 282, + 282, 282, 282, 282, 0, 282, 0, 0, 0, 0, + 0, 0, 0, 0, 281, 281, 282, 282, 282, 282, + 282, 282, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 270, + 270, 0, 0, 270, 270, 270, 270, 270, 0, 270, + 0, 282, 282, 0, 0, 0, 0, 0, 0, 0, + 270, 270, 270, 270, 270, 270, 0, 0, 0, 0, + 0, 426, 0, 278, 278, 0, 0, 278, 278, 278, + 278, 278, 282, 282, 278, 278, 0, 278, 278, 278, + 278, 278, 278, 0, 278, 270, 270, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 204, 204, 0, + 0, 204, 204, 0, 204, 0, 0, 204, 0, 0, + 0, 0, 0, 0, 0, 0, 270, 270, 204, 204, + 204, 204, 204, 204, 276, 276, 0, 0, 276, 276, + 276, 276, 276, 0, 276, 0, 233, 281, 0, 0, + 0, 0, 0, 0, 0, 276, 276, 276, 276, 276, + 276, 231, 220, 204, 204, 237, 229, 227, 0, 228, + 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 517, 275, 0, 223, 207, 225, 217, 524, 0, + 276, 276, 0, 0, 204, 204, 0, 0, 0, 0, + 0, 0, 281, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 282, 0, 0, 219, 0, + 0, 276, 276, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 226, 224, 235, 236, 0, 0, + 0, 0, 0, 0, 0, 221, 222, 0, 218, 0, + 234, 576, 0, 0, 0, 232, 0, 0, 583, 270, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 591, + 282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 281, 281, 0, 0, 281, 281, 281, 281, 281, 0, + 620, 281, 281, 0, 281, 281, 281, 281, 281, 281, + 231, 281, 0, 0, 270, 229, 227, 0, 228, 0, + 230, 0, 0, 0, 0, 0, 0, 204, 0, 639, + 0, 0, 0, 223, 0, 225, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 649, 0, 0, + 0, 0, 652, 0, 276, 0, 0, 654, 282, 282, + 0, 0, 282, 282, 282, 282, 282, 0, 0, 282, + 282, 0, 282, 282, 282, 282, 282, 282, 0, 282, + 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, + 0, 204, 270, 270, 0, 0, 270, 270, 270, 270, + 270, 0, 0, 270, 270, 0, 270, 270, 270, 270, + 270, 270, 0, 270, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 231, 220, 0, 233, 287, 229, 227, + 0, 228, 0, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 223, 207, 225, 217, 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, + 204, 204, 0, 0, 204, 204, 204, 204, 204, 0, + 0, 204, 204, 0, 204, 204, 204, 204, 204, 204, + 219, 204, 0, 0, 0, 0, 0, 276, 276, 0, + 0, 276, 276, 276, 276, 276, 0, 0, 276, 276, + 0, 276, 276, 276, 276, 276, 276, 0, 276, 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, 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, + 212, 215, 214, 216, 0, 232, 231, 220, 0, 0, + 0, 229, 227, 0, 228, 0, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 450, 223, + 207, 225, 217, 231, 220, 0, 0, 511, 229, 227, + 0, 228, 0, 230, 0, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 223, 207, 225, 217, + 231, 220, 0, 219, 237, 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, 521, 223, 207, 225, 217, 0, 0, 0, + 219, 0, 0, 218, 0, 234, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 0, 261, 0, 0, + 261, 0, 0, 0, 0, 0, 0, 219, 0, 0, + 218, 0, 234, 0, 261, 261, 0, 261, 0, 261, + 0, 0, 0, 226, 224, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 221, 222, 0, 218, 0, 234, + 0, 0, 0, 0, 232, 0, 0, 231, 220, 261, + 261, 556, 229, 227, 0, 228, 0, 230, 233, 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, + 223, 207, 225, 217, 0, 0, 0, 237, 0, 0, + 261, 261, 0, 231, 220, 0, 0, 561, 229, 227, + 0, 228, 0, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 219, 0, 223, 207, 225, 217, 0, 0, 0, 0, 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, + 219, 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, + 218, 233, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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, + 237, 0, 0, 0, 0, 231, 220, 0, 233, 562, 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, + 0, 0, 0, 261, 0, 0, 0, 237, 223, 207, + 225, 217, 231, 220, 0, 233, 609, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 237, 0, 0, 0, 0, 0, 0, 0, 231, + 0, 0, 0, 0, 237, 223, 207, 225, 217, 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, 219, + 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, 218, + 0, 234, 0, 226, 224, 235, 236, 208, 209, 210, + 211, 213, 233, 0, 221, 222, 0, 205, 206, 212, + 215, 214, 216, 0, 232, 0, 0, 0, 0, 0, + 0, 237, 0, 231, 220, 0, 0, 610, 229, 227, + 0, 228, 0, 230, 0, 0, 0, 0, 233, 0, + 261, 261, 261, 261, 261, 0, 223, 207, 225, 217, + 261, 261, 261, 261, 261, 261, 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, 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, + 219, 634, 223, 207, 225, 217, 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, 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, + 218, 232, 234, 0, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 226, 224, 235, 236, + 208, 209, 210, 211, 213, 0, 273, 221, 222, 273, + 205, 206, 212, 215, 214, 216, 218, 232, 234, 0, + 233, 0, 0, 273, 273, 0, 273, 0, 273, 0, + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 237, 218, 0, 234, 0, 0, 0, + 227, 0, 228, 0, 230, 0, 0, 0, 273, 273, + 0, 0, 0, 0, 0, 648, 237, 223, 207, 225, + 217, 231, 220, 0, 0, 0, 229, 227, 0, 228, + 0, 230, 0, 0, 0, 0, 0, 0, 0, 273, + 273, 0, 0, 0, 223, 207, 225, 217, 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, + 222, 0, 205, 206, 212, 215, 214, 216, 219, 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, + 206, 212, 215, 214, 216, 0, 232, 0, 218, 271, + 234, 0, 271, 0, 0, 0, 0, 0, 233, 0, + 0, 0, 0, 0, 0, 0, 271, 271, 0, 271, + 0, 271, 0, 0, 0, 0, 0, 237, 0, 231, + 220, 0, 0, 0, 229, 227, 0, 228, 0, 230, + 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 271, 223, 207, 225, 217, 0, 0, 0, 0, + 0, 0, 273, 237, 0, 231, 220, 0, 0, 0, + 229, 227, 0, 228, 0, 230, 0, 0, 0, 0, + 0, 0, 271, 271, 0, 0, 219, 0, 223, 207, + 225, 217, 0, 0, 0, 0, 226, 224, 235, 236, + 208, 209, 210, 211, 213, 0, 0, 221, 222, 0, + 205, 206, 212, 215, 214, 216, 218, 232, 234, 0, + 0, 0, 219, 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, 233, 0, 0, 0, 0, 0, + 214, 216, 218, 232, 234, 0, 0, 0, 0, 233, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, + 267, 0, 0, 267, 267, 267, 267, 267, 237, 267, + 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, + 267, 267, 267, 267, 267, 267, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 0, 0, 0, 273, + 273, 273, 273, 273, 0, 271, 0, 0, 0, 273, + 273, 273, 273, 273, 273, 267, 267, 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, 0, 0, 0, 0, 0, 226, 224, 235, + 236, 208, 209, 210, 211, 213, 267, 267, 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, 0, 0, 0, 233, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 271, 271, 271, 271, 271, 0, 0, 0, + 0, 0, 271, 271, 271, 271, 271, 271, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, 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, + 213, 0, 0, 221, 222, 0, 0, 206, 212, 215, + 214, 216, 0, 232, 0, 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, 0, 0, 212, 215, 214, 216, 0, 232, + 0, 0, 0, 0, 268, 268, 0, 0, 268, 268, + 268, 268, 268, 0, 268, 0, 0, 0, 0, 0, + 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, 269, 269, 0, 0, + 269, 269, 269, 269, 269, 0, 269, 0, 0, 0, + 268, 268, 0, 0, 0, 0, 0, 269, 269, 269, + 269, 269, 269, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 267, 267, 0, 0, 267, 267, 267, 267, + 267, 268, 268, 267, 267, 0, 267, 267, 267, 267, + 267, 267, 269, 269, 265, 0, 0, 265, 0, 265, + 265, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 265, 265, 265, 265, 265, 265, + 0, 0, 266, 269, 269, 266, 0, 266, 266, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 266, 266, 266, 266, 266, 266, 257, 265, + 265, 257, 0, 0, 257, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 259, 0, 0, 259, 257, 257, + 259, 257, 0, 257, 0, 0, 0, 266, 266, 0, + 265, 265, 0, 0, 259, 259, 0, 259, 0, 259, + 258, 0, 0, 258, 0, 0, 258, 0, 0, 0, + 0, 0, 0, 257, 257, 0, 0, 0, 266, 266, + 258, 258, 0, 258, 268, 258, 0, 0, 260, 259, + 259, 260, 0, 0, 260, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 257, 0, 0, 260, 260, + 0, 260, 0, 260, 0, 258, 258, 0, 0, 0, + 259, 259, 0, 0, 0, 0, 269, 0, 0, 275, + 0, 0, 275, 0, 0, 275, 0, 0, 0, 0, + 0, 0, 0, 260, 260, 0, 258, 258, 0, 275, + 275, 0, 275, 0, 275, 0, 0, 0, 0, 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, + 256, 0, 0, 256, 260, 260, 256, 0, 0, 0, + 0, 0, 0, 265, 275, 275, 0, 0, 0, 0, + 256, 256, 0, 256, 0, 256, 0, 0, 0, 0, 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, 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, - 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, 266, 0, 0, 0, 275, 275, 0, 0, 0, + 0, 0, 0, 0, 0, 256, 256, 268, 268, 0, + 0, 268, 268, 268, 268, 268, 0, 257, 268, 268, + 0, 268, 268, 268, 268, 268, 268, 0, 0, 0, + 0, 0, 0, 259, 0, 0, 256, 256, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, + 269, 0, 0, 269, 269, 269, 269, 269, 0, 258, + 269, 269, 0, 269, 269, 269, 269, 269, 269, 0, + 0, 0, 0, 0, 274, 0, 0, 274, 0, 0, + 274, 0, 0, 0, 0, 0, 0, 260, 0, 0, + 0, 0, 0, 0, 274, 274, 0, 274, 0, 274, + 0, 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, 0, 275, 274, + 274, 0, 0, 0, 266, 266, 0, 0, 266, 266, + 266, 266, 266, 0, 0, 266, 266, 0, 266, 266, + 266, 266, 266, 266, 0, 0, 0, 0, 0, 0, + 274, 274, 0, 0, 257, 257, 257, 257, 257, 256, + 0, 257, 257, 0, 257, 257, 257, 257, 257, 257, + 259, 259, 259, 259, 259, 0, 0, 259, 259, 0, + 259, 259, 259, 259, 259, 259, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 258, 258, 258, 258, + 258, 0, 0, 258, 258, 0, 258, 258, 258, 258, + 258, 258, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 260, 260, 260, 260, 260, 0, + 0, 260, 260, 0, 260, 260, 260, 260, 260, 260, + 213, 0, 0, 213, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 213, 213, 0, + 213, 0, 213, 0, 0, 275, 275, 275, 275, 275, + 0, 0, 275, 275, 0, 275, 275, 275, 275, 275, + 275, 0, 0, 274, 0, 0, 0, 0, 0, 0, + 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 256, 256, 256, + 256, 0, 0, 256, 256, 0, 256, 256, 256, 256, + 256, 256, 255, 0, 213, 255, 0, 0, 255, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, + 0, 262, 255, 255, 262, 255, 0, 255, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 262, 262, + 0, 262, 0, 262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 255, 255, 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, + 0, 0, 0, 262, 262, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 262, 262, 0, 0, 0, 0, + 274, 274, 274, 274, 274, 0, 0, 274, 274, 0, + 274, 274, 274, 274, 274, 274, 0, 0, 0, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 132, 0, 142, 0, 0, 0, 0, + 141, 0, 132, 130, 142, 131, 0, 0, 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, + 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 320, 142, 0, 0, 0, 0, 141, 0, 0, + 130, 255, 131, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 0, 0, 0, 129, 0, 262, 0, 0, + 83, 132, 0, 142, 0, 0, 0, 0, 141, 0, + 0, 130, 0, 131, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 133, 0, 83, 0, + 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, + 0, 0, 0, 213, 213, 213, 213, 213, 0, 0, + 0, 0, 0, 213, 213, 213, 213, 213, 213, 194, + 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 113, 0, 0, 133, 132, 0, 142, 0, 0, + 0, 0, 141, 0, 0, 130, 0, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 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, 262, 262, 262, 262, 262, 0, + 0, 0, 0, 83, 262, 262, 262, 262, 262, 262, + 179, 86, 87, 88, 89, 90, 0, 0, 0, 179, + 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 0, 133, 0, + 0, 0, 0, 0, 0, 10, 0, 138, 139, 87, + 88, 89, 90, 0, 0, 0, 0, 132, 0, 142, + 0, 0, 0, 137, 141, 0, 0, 130, 0, 131, + 0, 0, 137, 10, 0, 0, 0, 0, 179, 86, + 87, 88, 89, 90, 0, 312, 0, 0, 0, 0, + 140, 132, 0, 142, 0, 0, 136, 0, 141, 140, + 137, 130, 0, 131, 10, 136, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 83, 0, 128, 0, 314, + 0, 0, 132, 0, 142, 0, 128, 140, 0, 141, + 0, 137, 130, 136, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, + 133, 317, 134, 135, 128, 0, 0, 0, 195, 321, + 0, 134, 135, 0, 136, 0, 0, 0, 0, 0, + 0, 0, 179, 86, 87, 88, 89, 90, 0, 0, + 83, 0, 0, 0, 133, 128, 0, 0, 0, 134, + 135, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 367, 0, 0, 133, 228, 0, 228, 0, + 134, 135, 0, 228, 0, 137, 228, 0, 228, 0, + 0, 0, 0, 0, 0, 0, 132, 0, 142, 0, + 0, 0, 249, 141, 0, 0, 130, 0, 131, 0, + 0, 0, 140, 0, 0, 0, 0, 0, 136, 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, 228, 0, 228, 0, 0, 128, 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, 83, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 10, 0, 0, 0, 134, 135, 0, 0, 179, 86, + 87, 88, 89, 90, 0, 0, 0, 0, 0, 133, + 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 179, + 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, + 136, 137, 0, 0, 0, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 140, 0, + 0, 0, 137, 0, 136, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 134, 135, 0, 140, + 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, + 0, 0, 0, 228, 228, 228, 228, 228, 228, 0, 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, + 134, 135, 0, 179, 86, 87, 88, 89, 90, 228, 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, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 134, 135, 0, 0, 0, 228, 0, 0, 0, 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, 0, 0, 0, 0, 137, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 0, 0, 0, 228, 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, 140, 0, 0, 0, 0, 0, 136, + 228, 0, 0, 0, 0, 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, + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 228, 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, 0, 0, 0, 0, 134, 135, ); 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, 126, 122, 46, 71, 46, 46, + 60, 41, 260, 41, 44, 125, 123, 42, 41, 59, + 41, 44, 125, 84, 59, 59, 175, 41, 91, 34, + 35, 41, 124, 59, 44, 40, 59, 98, 123, 100, + 37, 105, 106, 246, 126, 42, 43, 463, 45, 41, + 47, 40, 300, 193, 91, 63, 61, 62, 63, 176, + 41, 122, 482, 59, 69, 70, 71, 37, 260, 260, + 93, 91, 42, 260, 126, 41, 60, 47, 44, 84, + 303, 41, 44, 91, 44, 40, 304, 41, 123, 123, + 468, 46, 97, 98, 286, 100, 283, 123, 125, 286, + 105, 106, 41, 44, 125, 44, 41, 91, 113, 44, + 91, 125, 97, 300, 41, 176, 364, 122, 59, 58, + 59, 537, 41, 58, 59, 44, 187, 123, 113, 126, + 333, 93, 59, 511, 123, 555, 141, 91, 278, 58, + 59, 40, 502, 503, 44, 44, 44, 287, 340, 340, + 58, 260, 41, 260, 93, 44, 126, 260, 93, 125, + 165, 166, 62, 168, 62, 125, 93, 172, 46, 58, + 59, 176, 233, 40, 93, 41, 91, 364, 44, 286, + 540, 166, 187, 168, 125, 103, 125, 172, 608, 91, + 125, 300, 58, 59, 93, 37, 63, 260, 203, 46, + 42, 43, 187, 45, 93, 47, 125, 59, 123, 331, + 128, 360, 130, 131, 132, 133, 134, 135, 60, 137, + 62, 123, 257, 141, 91, 332, 311, 93, 233, 44, + 312, 257, 237, 436, 257, 260, 125, 46, 378, 157, + 260, 261, 262, 263, 264, 265, 46, 257, 340, 331, + 255, 91, 61, 93, 259, 63, 123, 320, 58, 125, + 312, 257, 267, 373, 374, 257, 286, 46, 417, 332, + 255, 189, 64, 191, 259, 300, 260, 340, 93, 331, + 402, 403, 267, 91, 126, 425, 291, 205, 206, 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, + 402, 403, 257, 260, 40, 46, 346, 43, 246, 45, + 59, 249, 340, 473, 331, 91, 320, 41, 257, 364, + 44, 91, 312, 348, 91, 260, 373, 374, 332, 286, + 402, 403, 260, 261, 58, 59, 340, 275, 260, 41, + 410, 331, 44, 348, 282, 58, 284, 123, 257, 421, + 410, 286, 410, 123, 260, 91, 58, 59, 125, 61, + 410, 63, 410, 420, 286, 330, 91, 41, 452, 93, + 44, 257, 40, 260, 312, 340, 314, 41, 316, 317, + 44, 310, 320, 321, 41, 402, 403, 44, 556, 125, + 126, 93, 40, 561, 300, 333, 334, 332, 46, 286, + 125, 125, 59, 59, 421, 340, 344, 91, 93, 59, + 573, 574, 402, 403, 91, 33, 59, 35, 340, 40, + 41, 141, 40, 125, 362, 43, 364, 45, 453, 93, + 567, 421, 370, 60, 340, 39, 93, 600, 463, 123, + 125, 379, 610, 37, 38, 49, 50, 51, 42, 43, + 312, 45, 310, 47, 61, 414, 415, 37, 38, 414, + 415, 629, 42, 43, 410, 45, 60, 47, 62, 331, + 91, 41, 640, 91, 44, 414, 415, 502, 503, 44, + 60, 419, 62, 203, 260, 41, 567, 44, 44, 91, + 260, 429, 41, 40, 59, 44, 434, 41, 436, 46, + 94, 439, 123, 59, 311, 414, 415, 125, 126, 123, + 286, 58, 537, 310, 94, 540, 286, 237, 40, 544, + 46, 123, 598, 599, 260, 261, 262, 263, 264, 265, + 124, 415, 126, 257, 58, 61, 93, 93, 400, 401, + 402, 403, 567, 624, 482, 483, 126, 623, 41, 91, + 286, 44, 490, 491, 41, 257, 123, 44, 91, 421, + 33, 44, 35, 644, 340, 58, 59, 40, 125, 125, + 43, 291, 45, 123, 40, 123, 260, 313, 44, 44, + 518, 260, 261, 260, 261, 262, 263, 264, 265, 58, + 123, 44, 530, 59, 41, 410, 123, 44, 125, 624, + 93, 44, 286, 93, 340, 341, 342, 343, 41, 286, + 346, 44, 290, 497, 93, 293, 407, 555, 91, 644, + 558, 44, 560, 300, 360, 361, 362, 363, 93, 365, + 366, 367, 125, 63, 370, 371, 372, 373, 374, 260, + 93, 245, 260, 261, 262, 263, 264, 265, 332, 61, + 123, 442, 257, 126, 91, 539, 594, 123, 260, 125, + 125, 91, 300, 301, 302, 286, 402, 403, 286, 346, + 608, 37, 125, 33, 257, 35, 42, 43, 260, 45, + 40, 47, 566, 43, 286, 45, 91, 300, 301, 302, + 414, 415, 630, 123, 430, 313, 13, 14, 300, 301, + 302, 257, 404, 405, 406, 407, 408, 49, 50, 51, + 344, 345, 414, 415, 416, 417, 418, 419, 312, 373, + 374, 257, 340, 341, 342, 343, 41, 260, 346, 340, + 332, 91, 312, 260, 105, 106, 44, 331, 41, 44, + 44, 123, 360, 361, 362, 363, 260, 365, 366, 367, + 125, 331, 370, 286, 372, 373, 374, 40, 123, 286, + 126, 123, 61, 58, 257, 556, 126, 300, 301, 302, + 561, 40, 37, 38, 58, 40, 41, 42, 43, 44, + 45, 40, 47, 41, 402, 403, 44, 260, 261, 262, + 263, 264, 265, 58, 59, 60, 61, 62, 63, 332, + 91, 59, 260, 260, 123, 332, 400, 401, 402, 403, + 41, 125, 430, 286, 40, 93, 41, 411, 412, 610, + 400, 401, 402, 403, 40, 91, 91, 421, 93, 94, + 260, 411, 412, 125, 41, 93, 40, 44, 629, 61, + 313, 421, 40, 280, 281, 282, 283, 284, 285, 640, + 287, 58, 59, 91, 41, 260, 286, 125, 123, 124, + 125, 126, 123, 300, 301, 302, 303, 340, 341, 342, + 343, 125, 125, 346, 40, 280, 281, 282, 283, 284, + 285, 286, 287, 40, 340, 40, 93, 360, 361, 362, + 363, 59, 365, 366, 367, 59, 40, 370, 303, 372, + 260, 261, 262, 263, 264, 265, 40, 40, 340, 91, + 37, 38, 59, 40, 41, 42, 43, 44, 45, 260, + 47, 414, 415, 41, 41, 61, 286, 332, 59, 402, + 403, 58, 59, 361, 61, 62, 63, 37, 38, 340, + 40, 41, 42, 43, 44, 45, 46, 47, 61, 59, + 41, 44, 93, 313, 125, 59, 123, 430, 58, 59, + 60, 61, 62, 63, 91, 125, 93, 94, 40, 260, + 261, 262, 263, 264, 265, 44, 364, 123, 260, 340, + 340, 341, 342, 343, 321, 41, 346, 41, 340, 41, + 125, 91, 257, 93, 94, 260, 123, 124, 125, 126, + 360, 361, 362, 363, 123, 365, 366, 367, 59, 125, + 370, 125, 372, 371, 280, 281, 282, 283, 284, 285, + 40, 287, 123, 59, 124, 125, 126, 125, 37, 38, + 125, 41, 41, 42, 43, 44, 45, 303, 47, 58, + 125, 41, 402, 403, 123, 310, 311, 312, 91, 58, + 59, 60, 61, 62, 63, 320, 123, 125, 123, 93, + 41, 41, 257, 125, 257, 330, 331, 332, 334, 58, + 430, 44, 125, 91, 91, 340, 91, 41, 125, 41, + 44, 93, 44, 125, 93, 94, 280, 281, 282, 283, + 284, 285, 123, 287, 58, 59, 58, 59, 280, 281, + 282, 283, 284, 285, 59, 287, 59, 41, 41, 303, + 41, 44, 59, 44, 41, 124, 125, 41, 300, 301, + 302, 364, 304, 41, 41, 58, 59, 58, 59, 93, + 257, 93, 125, 260, 41, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 6, 410, 411, 412, 125, 414, + 415, 416, 417, 418, 419, 7, 421, 257, 77, 102, + 93, 125, 93, 125, 508, 37, 38, 359, 503, 41, + 42, 43, 44, 45, 544, 47, 60, 59, 41, 109, + 519, 44, 531, 310, 311, 312, 58, 59, 60, 61, + 62, 63, 125, 320, 125, 58, 59, 616, 203, 41, + 580, 580, 44, 330, 331, 332, 365, 291, 187, 187, + 248, 244, 312, 340, 172, 41, 58, 59, 44, 91, + 168, 93, 94, 31, -1, -1, -1, -1, -1, -1, + 93, 331, 58, 59, -1, -1, 91, 280, 281, 282, + 283, 284, 285, -1, 287, -1, -1, -1, 257, -1, + -1, 93, 124, 125, 126, -1, -1, 300, 301, 302, + 303, -1, 125, -1, -1, -1, -1, 93, -1, -1, + -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, 125, 411, 412, -1, 414, 415, 416, + 417, 418, 419, 257, 421, 257, -1, -1, -1, 125, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, 257, -1, 257, -1, -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, 37, 38, -1, + -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, + 60, 61, 62, 63, 91, 257, 93, 94, -1, -1, + -1, 400, 401, -1, 257, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 91, 421, 93, 94, 257, -1, 124, 125, 126, + -1, -1, -1, -1, -1, 280, 281, 282, 283, 284, + 285, 257, 287, -1, -1, -1, -1, -1, -1, -1, + 312, -1, -1, -1, 124, 125, 126, -1, 303, -1, + 414, 415, 414, 415, -1, -1, -1, -1, -1, 331, + -1, -1, -1, -1, -1, -1, -1, -1, 340, 37, + 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, + -1, 414, 415, 414, 415, -1, -1, -1, -1, -1, + 58, 59, 60, 61, 62, 63, 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, -1, 91, -1, 93, 94, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, 410, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + 257, 414, 93, 94, -1, -1, 124, 125, 126, -1, + -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, + -1, -1, 414, 415, -1, -1, 91, 257, 58, 59, + -1, -1, -1, 124, 125, 126, -1, -1, 414, 415, + -1, -1, -1, 37, 38, 282, -1, 41, 42, 43, + 44, 45, 91, 47, -1, 312, -1, -1, -1, -1, + 125, -1, -1, 93, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, 331, -1, -1, -1, -1, -1, + -1, -1, 312, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, -1, 125, -1, 334, -1, 93, + 94, 331, -1, -1, -1, -1, -1, 344, -1, -1, + -1, 37, 38, -1, 40, 41, 42, 43, 44, 45, + 46, 47, -1, -1, -1, 362, -1, 364, -1, -1, + 124, 125, 126, -1, 60, 61, 62, 63, -1, 257, + -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, 91, 257, -1, 94, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, 429, -1, 312, -1, -1, 434, 124, -1, + 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 331, -1, 280, 281, 282, 283, 284, + 285, 312, 287, -1, -1, -1, -1, 257, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 303, 330, + 331, 280, 281, 282, 283, 284, 285, -1, 287, 340, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, + -1, 47, -1, 257, 303, -1, -1, -1, -1, 334, + -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, -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, - 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, - 280, 281, 282, 283, 284, 285, -1, 287, -1, -1, - -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, + 408, -1, -1, 411, 412, 334, 414, 415, 416, 417, + 418, 419, 420, 421, -1, -1, -1, 93, 94, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 312, -1, + 411, 412, 91, 414, 415, 416, 417, 418, 419, -1, + 421, 257, -1, -1, -1, -1, -1, 331, 124, 125, + 126, -1, -1, -1, 38, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, + -1, -1, 37, 38, -1, 40, -1, 42, 43, 44, + 45, 46, 47, -1, 414, 415, 312, -1, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, 63, 93, + 94, -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, 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, - 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, + 414, 415, 416, 417, 418, 419, 91, 421, 93, 94, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, + 45, -1, 47, -1, -1, -1, -1, -1, -1, 124, + -1, 126, -1, 58, 59, 60, 61, 62, 63, -1, + -1, 257, -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, 93, 94, + -1, 42, 43, 44, 45, -1, 47, -1, -1, -1, + -1, 280, 281, 282, 283, 284, 285, -1, 287, 60, + 61, 62, 63, -1, -1, -1, 312, -1, -1, 124, + 125, -1, -1, -1, 303, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + 91, -1, 93, 94, 37, 38, -1, -1, 41, 42, + 43, 44, 45, 257, 47, 334, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, -1, -1, 124, -1, 126, -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, -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, - 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, + 93, 94, -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, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, -1, -1, -1, 331, -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, -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, + 404, 405, 406, 407, 408, -1, -1, 312, -1, -1, + 414, 415, 416, 417, 418, 419, 93, 94, -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, 124, 125, -1, -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, 312, -1, -1, 257, -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, 400, 401, -1, -1, 404, + 405, 406, 407, 408, -1, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, -1, 421, -1, -1, 312, + -1, 37, 38, -1, -1, -1, 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, + -1, -1, -1, -1, 60, -1, 62, -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, -1, -1, -1, 37, 38, -1, + 257, 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, 400, 401, -1, + 126, 404, 405, 406, 407, 408, -1, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, 421, -1, + -1, -1, -1, 93, 94, 312, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, + 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -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, 37, + 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, + -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, + 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 367, -1, 400, 401, -1, -1, 404, 405, 406, + 407, 408, 124, 125, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, 93, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, + -1, 41, 42, -1, 44, -1, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, 124, 125, 58, 59, + 60, 61, 62, 63, 37, 38, -1, -1, 41, 42, + 43, 44, 45, -1, 47, -1, 312, 257, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, + 63, 37, 38, 93, 94, 331, 42, 43, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 477, 58, -1, 60, 61, 62, 63, 484, -1, + 93, 94, -1, -1, 124, 125, -1, -1, -1, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 257, -1, -1, 94, -1, + -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, 402, 403, -1, -1, + -1, -1, -1, -1, -1, 411, 412, -1, 124, -1, + 126, 547, -1, -1, -1, 421, -1, -1, 554, 257, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 565, + 312, -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, 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, + 400, 401, -1, -1, 404, 405, 406, 407, 408, -1, + 596, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 37, 421, -1, -1, 312, 42, 43, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, 257, -1, 625, + -1, -1, -1, 60, -1, 62, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 643, -1, -1, + -1, -1, 648, -1, 257, -1, -1, 653, 400, 401, -1, -1, 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, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, + -1, 331, 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, 37, 38, -1, 312, 41, 42, 43, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, 60, 61, 62, 63, + -1, -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, + 94, 421, -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, - -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, + 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, 124, 125, - 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, + 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, 41, 42, 43, + -1, 45, -1, 47, -1, 312, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, + 37, 38, -1, 94, 331, 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, + 94, -1, -1, 124, -1, 126, -1, -1, -1, -1, + -1, -1, -1, -1, 38, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, 94, -1, -1, + 124, -1, 126, -1, 58, 59, -1, 61, -1, 63, + -1, -1, -1, 400, 401, 402, 403, -1, -1, -1, + -1, -1, -1, -1, 411, 412, -1, 124, -1, 126, + -1, -1, -1, -1, 421, -1, -1, 37, 38, 93, + 94, 41, 42, 43, -1, 45, -1, 47, 312, -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, - -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, - -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, - -1, 41, 42, 43, -1, 45, -1, 47, -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, + 60, 61, 62, 63, -1, -1, -1, 331, -1, -1, + 124, 125, -1, 37, 38, -1, -1, 41, 42, 43, + -1, 45, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 94, -1, 60, 61, 62, 63, -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, + 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, 312, 126, -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, 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, + 331, -1, -1, -1, -1, 37, 38, -1, 312, 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, + -1, -1, -1, 257, -1, -1, -1, 331, 60, 61, + 62, 63, 37, 38, -1, 312, 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, -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, - -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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, -1, -1, -1, -1, -1, -1, 37, + -1, -1, -1, -1, 331, 60, 61, 62, 63, -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, 94, + 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, 124, + -1, 126, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 312, -1, 411, 412, -1, 414, 415, 416, + 417, 418, 419, -1, 421, -1, -1, -1, -1, -1, + -1, 331, -1, 37, 38, -1, -1, 41, 42, 43, + -1, 45, -1, 47, -1, -1, -1, -1, 312, -1, + 404, 405, 406, 407, 408, -1, 60, 61, 62, 63, + 414, 415, 416, 417, 418, 419, -1, 331, -1, 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, 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, + 94, 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, - -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, + 124, 421, 126, -1, -1, -1, 94, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, 41, 411, 412, 44, + 414, 415, 416, 417, 418, 419, 124, 421, 126, -1, + 312, -1, -1, 58, 59, -1, 61, -1, 63, -1, + -1, -1, -1, -1, -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, 331, 124, -1, 126, -1, -1, -1, + 43, -1, 45, -1, 47, -1, -1, -1, 93, 94, + -1, -1, -1, -1, -1, 58, 331, 60, 61, 62, + 63, 37, 38, -1, -1, -1, 42, 43, -1, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, 124, + 125, -1, -1, -1, 60, 61, 62, 63, -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, + 412, -1, 414, 415, 416, 417, 418, 419, 94, 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, 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, + 415, 416, 417, 418, 419, -1, 421, -1, 124, 41, + 126, -1, 44, -1, -1, -1, -1, -1, 312, -1, + -1, -1, -1, -1, -1, -1, 58, 59, -1, 61, + -1, 63, -1, -1, -1, -1, -1, 331, -1, 37, + 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, + -1, -1, -1, -1, 312, -1, -1, -1, -1, -1, + -1, 93, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, 257, 331, -1, 37, 38, -1, -1, -1, 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, -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, 124, 125, -1, -1, 94, -1, 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, 124, 421, 126, -1, + -1, -1, 94, -1, -1, -1, -1, -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, + 408, -1, -1, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 124, 421, 126, -1, -1, -1, -1, 312, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 38, -1, -1, 41, 42, 43, 44, 45, 331, 47, + -1, -1, -1, -1, -1, -1, 312, -1, -1, -1, + 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, 404, + 405, 406, 407, 408, -1, 257, -1, -1, -1, 414, + 415, 416, 417, 418, 419, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, -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, + 403, 404, 405, 406, 407, 408, 124, 125, 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, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, 331, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -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, -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, 257, + -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, -1, -1, 411, 412, -1, -1, 415, 416, 417, + 418, 419, -1, 421, -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, -1, -1, 416, 417, 418, 419, -1, 421, + -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, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, 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, - 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, - 401, -1, -1, 404, 405, 406, 407, 408, -1, -1, + 93, 94, -1, -1, -1, -1, -1, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 400, 401, -1, -1, 404, 405, 406, 407, + 408, 124, 125, 411, 412, -1, 414, 415, 416, 417, + 418, 419, 93, 94, 38, -1, -1, 41, -1, 43, + 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, + -1, -1, 38, 124, 125, 41, -1, 43, 44, 45, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, 60, 61, 62, 63, 38, 93, + 94, 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, 93, 94, -1, + 124, 125, -1, -1, 58, 59, -1, 61, -1, 63, + 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, + -1, -1, -1, 93, 94, -1, -1, -1, 124, 125, + 58, 59, -1, 61, 257, 63, -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, 93, 94, -1, -1, -1, + 124, 125, -1, -1, -1, -1, 257, -1, -1, 38, + -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, + -1, -1, -1, 93, 94, -1, 124, 125, -1, 58, + 59, -1, 61, -1, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 38, -1, -1, 41, 124, 125, 44, -1, -1, -1, + -1, -1, -1, 257, 93, 94, -1, -1, -1, -1, + 58, 59, -1, 61, -1, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, -1, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, 257, 411, 412, + -1, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, -1, -1, 257, -1, -1, 124, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 400, + 401, -1, -1, 404, 405, 406, 407, 408, -1, 257, 411, 412, -1, 414, 415, 416, 417, 418, 419, -1, - -1, 124, 125, -1, -1, -1, -1, 257, -1, -1, + -1, -1, -1, -1, 38, -1, -1, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, 257, -1, -1, + -1, -1, -1, -1, 58, 59, -1, 61, -1, 63, -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, 257, 93, + 94, -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, + 124, 125, -1, -1, 404, 405, 406, 407, 408, 257, + -1, 411, 412, -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, -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, 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, -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, -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, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 58, 59, -1, + 61, -1, 63, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, -1, 414, 415, 416, 417, 418, + 419, -1, -1, 257, -1, -1, -1, -1, -1, -1, + -1, -1, 93, -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, 38, -1, 125, 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, -1, -1, -1, -1, -1, -1, -1, 58, 59, + -1, 61, -1, 63, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 94, -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, + -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, + -1, -1, -1, -1, -1, -1, -1, -1, -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, -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, -1, -1, -1, -1, 257, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 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, -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, + 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 33, 62, 35, -1, -1, -1, -1, 40, -1, -1, + 43, 257, 45, -1, -1, -1, -1, -1, -1, -1, + -1, 91, -1, -1, -1, 58, -1, 257, -1, -1, + 91, 33, -1, 35, -1, -1, -1, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 126, -1, 91, -1, + -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, 404, 405, 406, 407, 408, -1, -1, + -1, -1, -1, 414, 415, 416, 417, 418, 419, 91, + -1, -1, -1, 126, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 123, -1, -1, 126, 33, -1, 35, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -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, - 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, -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, -1, + -1, -1, -1, 91, 414, 415, 416, 417, 418, 419, + 260, 261, 262, 263, 264, 265, -1, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 286, -1, 126, -1, + -1, -1, -1, -1, -1, 286, -1, 260, 261, 262, + 263, 264, 265, -1, -1, -1, -1, 33, -1, 35, + -1, -1, -1, 313, 40, -1, -1, 43, -1, 45, + -1, -1, 313, 286, -1, -1, -1, -1, 260, 261, + 262, 263, 264, 265, -1, 61, -1, -1, -1, -1, + 340, 33, -1, 35, -1, -1, 346, -1, 40, 340, + 313, 43, -1, 45, 286, 346, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 91, -1, 367, -1, 61, + -1, -1, 33, -1, 35, -1, 367, 340, -1, 40, + -1, 313, 43, 346, 45, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, + 126, 401, 402, 403, 367, -1, -1, -1, 340, 400, + -1, 402, 403, -1, 346, -1, -1, -1, -1, -1, + -1, -1, 260, 261, 262, 263, 264, 265, -1, -1, + 91, -1, -1, -1, 126, 367, -1, -1, -1, 402, + 403, -1, -1, -1, -1, -1, -1, -1, 286, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 123, -1, -1, 126, 33, -1, 35, -1, + 402, 403, -1, 40, -1, 313, 43, -1, 45, -1, + -1, -1, -1, -1, -1, -1, 33, -1, 35, -1, + -1, -1, 330, 40, -1, -1, 43, -1, 45, -1, + -1, -1, 340, -1, -1, -1, -1, -1, 346, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 91, -1, 93, -1, -1, 367, -1, -1, -1, -1, 260, 261, 262, 263, 264, 265, - -1, -1, 313, -1, 33, -1, 35, -1, -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, 91, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, + 286, -1, -1, -1, 402, 403, -1, -1, 260, 261, + 262, 263, 264, 265, -1, -1, -1, -1, -1, 126, + -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, + -1, -1, -1, -1, 286, -1, -1, -1, -1, 260, + 261, 262, 263, 264, 265, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, + 346, 313, -1, -1, -1, 286, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 367, -1, -1, -1, -1, -1, -1, 340, -1, + -1, -1, 313, -1, 346, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 367, 402, 403, -1, 340, + -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, + -1, -1, -1, 260, 261, 262, 263, 264, 265, -1, -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, + 402, 403, -1, 260, 261, 262, 263, 264, 265, 286, -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, 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, 286, + -1, 402, 403, -1, -1, -1, 313, -1, -1, -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, 313, -1, -1, -1, + -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, -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, 340, -1, -1, -1, -1, -1, 346, + 367, -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, 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, -1, -1, -1, -1, -1, -1, -1, -1, 367, - 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, + 367, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 402, 403, + -1, -1, -1, -1, -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -1694,7 +1680,7 @@ class Parser extends \text\parser\generic\AbstractParser { 'T_PACKAGE', 'T_IMPORT', NULL, NULL, NULL, NULL, NULL, 'T_EXTENDS', 'T_IMPLEMENTS', 'T_INSTANCEOF', 'T_CLONE', NULL, NULL, NULL, NULL, NULL, NULL, 'T_OPERATOR', 'T_THROWS', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - 'T_DOTS', 'T_AS', 'T_THIS', NULL, 'T_CONST', NULL, NULL, NULL, NULL, NULL, + 'T_ELLIPSIS', 'T_AS', 'T_THIS', NULL, 'T_CONST', NULL, NULL, NULL, NULL, NULL, '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', @@ -1861,7 +1847,7 @@ public function yyparse($yyLex) { // Actions switch ($yyN) { - case 1: #line 188 "src/main/jay/grammars/xp.jay" + case 1: #line 189 "src/main/jay/grammars/xp.jay" { $yyVal= new ParseTree(); $yyVal->origin= $yyLex->fileName; @@ -1870,54 +1856,54 @@ public function yyparse($yyLex) { $yyVal->declaration= $yyVals[0+$yyTop]; } break; - case 3: #line 200 "src/main/jay/grammars/xp.jay" + case 3: #line 201 "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 201 "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 212 "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 213 "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 217 "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 220 "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 223 "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 226 "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 239 "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 244 "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 245 "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 251 "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 251 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1928,10 +1914,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 22: #line 259 "src/main/jay/grammars/xp.jay" + case 22: #line 260 "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 260 "src/main/jay/grammars/xp.jay" { $yyVals[-7+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-7+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -1942,10 +1928,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-7+$yyTop]; } break; - case 24: #line 268 "src/main/jay/grammars/xp.jay" + case 24: #line 269 "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 269 "src/main/jay/grammars/xp.jay" { $yyVals[-6+$yyTop]->modifiers= $yyVals[-7+$yyTop][0]; $yyVals[-6+$yyTop]->annotations= $yyVals[-7+$yyTop][1]; @@ -1955,78 +1941,78 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-6+$yyTop]; } break; - case 26: #line 279 "src/main/jay/grammars/xp.jay" + case 26: #line 280 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 27: #line 280 "src/main/jay/grammars/xp.jay" + case 27: #line 281 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 28: #line 284 "src/main/jay/grammars/xp.jay" + case 28: #line 285 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 29: #line 285 "src/main/jay/grammars/xp.jay" + case 29: #line 286 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 30: #line 289 "src/main/jay/grammars/xp.jay" + case 30: #line 290 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 31: #line 290 "src/main/jay/grammars/xp.jay" + case 31: #line 291 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 32: #line 294 "src/main/jay/grammars/xp.jay" + case 32: #line 295 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 33: #line 295 "src/main/jay/grammars/xp.jay" + case 33: #line 296 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 34: #line 299 "src/main/jay/grammars/xp.jay" + case 34: #line 300 "src/main/jay/grammars/xp.jay" { $yyVal[]= $yyVals[0+$yyTop]; } break; - case 35: #line 300 "src/main/jay/grammars/xp.jay" + case 35: #line 301 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 36: #line 304 "src/main/jay/grammars/xp.jay" + case 36: #line 305 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 37: #line 305 "src/main/jay/grammars/xp.jay" + case 37: #line 306 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 38: #line 306 "src/main/jay/grammars/xp.jay" + case 38: #line 307 "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 311 "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 312 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 41: #line 312 "src/main/jay/grammars/xp.jay" + case 41: #line 313 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 42: #line 316 "src/main/jay/grammars/xp.jay" + case 42: #line 317 "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 318 "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 322 "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 322 "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 325 "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 325 "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 335 "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 +2021,7 @@ public function yyparse($yyLex) { $yyVal->initialization= $yyVals[-1+$yyTop]; } break; - case 49: #line 341 "src/main/jay/grammars/xp.jay" + case 49: #line 342 "src/main/jay/grammars/xp.jay" { $yyVals[-3+$yyTop]->modifiers= $yyVals[-5+$yyTop][0]; $yyVals[-3+$yyTop]->annotations= $yyVals[-5+$yyTop][1]; @@ -2044,39 +2030,39 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-3+$yyTop]; } break; - case 50: #line 348 "src/main/jay/grammars/xp.jay" + case 50: #line 349 "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 355 "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 356 "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 360 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 54: #line 360 "src/main/jay/grammars/xp.jay" + case 54: #line 361 "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 365 "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 366 "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 370 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 58: #line 370 "src/main/jay/grammars/xp.jay" + case 58: #line 371 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 59: #line 376 "src/main/jay/grammars/xp.jay" + case 59: #line 377 "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 377 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -2089,10 +2075,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 61: #line 387 "src/main/jay/grammars/xp.jay" + case 61: #line 388 "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 388 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-8+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-8+$yyTop][1]; @@ -2105,10 +2091,10 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 63: #line 398 "src/main/jay/grammars/xp.jay" + case 63: #line 399 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 64: #line 398 "src/main/jay/grammars/xp.jay" + case 64: #line 399 "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 +2121,10 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 65: #line 423 "src/main/jay/grammars/xp.jay" + case 65: #line 424 "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 424 "src/main/jay/grammars/xp.jay" { $yyVals[-5+$yyTop]->modifiers= $yyVals[-9+$yyTop][0]; $yyVals[-5+$yyTop]->annotations= $yyVals[-9+$yyTop][1]; @@ -2150,68 +2136,68 @@ public function yyparse($yyLex) { $yyVal= $yyVals[-5+$yyTop]; } break; - case 67: #line 436 "src/main/jay/grammars/xp.jay" + case 67: #line 437 "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 438 "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 442 "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 443 "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 447 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 72: #line 449 "src/main/jay/grammars/xp.jay" + case 72: #line 450 "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 454 "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 461 "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 466 "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 471 "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 478 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 78: #line 478 "src/main/jay/grammars/xp.jay" + case 78: #line 479 "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 483 "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 484 "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 489 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new InstanceCreationNode()); $yyVal->type= $yyVals[-3+$yyTop]; @@ -2219,101 +2205,101 @@ public function yyparse($yyLex) { $yyVal->body= NULL; } break; - case 83: #line 494 "src/main/jay/grammars/xp.jay" + case 83: #line 495 "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 498 "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 504 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 86: #line 504 "src/main/jay/grammars/xp.jay" + case 86: #line 505 "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 506 "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 510 "src/main/jay/grammars/xp.jay" { $yyVal= array(NULL, NULL); } break; - case 89: #line 510 "src/main/jay/grammars/xp.jay" + case 89: #line 511 "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 512 "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 516 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 92: #line 516 "src/main/jay/grammars/xp.jay" + case 92: #line 517 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 93: #line 520 "src/main/jay/grammars/xp.jay" + case 93: #line 521 "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 522 "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 526 "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 527 "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 528 "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 529 "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 533 "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 534 "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 538 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 102: #line 538 "src/main/jay/grammars/xp.jay" + case 102: #line 539 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 109: #line 557 "src/main/jay/grammars/xp.jay" + case 109: #line 558 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 111: #line 562 "src/main/jay/grammars/xp.jay" + case 111: #line 563 "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 564 "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 568 "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 568 "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 571 "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 571 "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 576 "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 576 "src/main/jay/grammars/xp.jay" { if ($yyVals[-6+$yyTop]) { $yyVals[-9+$yyTop]->initialization= $yyVals[-6+$yyTop]; @@ -2325,168 +2311,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 586 "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 586 "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 591 "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 591 "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 595 "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 595 "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 599 "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 599 "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 603 "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 604 "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 605 "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 605 "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 608 "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 608 "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 613 "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 616 "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 623 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 139: #line 623 "src/main/jay/grammars/xp.jay" + case 139: #line 624 "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 628 "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 631 "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 638 "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 639 "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 643 "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 649 "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 650 "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 654 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 149: #line 658 "src/main/jay/grammars/xp.jay" + case 149: #line 659 "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 660 "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 664 "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 664 "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 668 "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 668 "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 674 "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 675 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[-1+$yyTop]; } break; - case 157: #line 678 "src/main/jay/grammars/xp.jay" + case 157: #line 679 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 158: #line 679 "src/main/jay/grammars/xp.jay" + case 158: #line 680 "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 680 "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 685 "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 686 "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 690 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 163: #line 690 "src/main/jay/grammars/xp.jay" + case 163: #line 691 "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 695 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 165: #line 694 "src/main/jay/grammars/xp.jay" + case 165: #line 695 "src/main/jay/grammars/xp.jay" { $yyVal= array(); foreach ($yyVals[-5+$yyTop] as $type) { @@ -2499,19 +2485,19 @@ public function yyparse($yyLex) { } } break; - case 166: #line 708 "src/main/jay/grammars/xp.jay" + case 166: #line 709 "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 710 "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 714 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 170: #line 718 "src/main/jay/grammars/xp.jay" + case 170: #line 719 "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 719 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->statements= $yyVals[-1+$yyTop]; } break; @@ -2519,16 +2505,31 @@ public function yyparse($yyLex) { case 172: #line 726 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 174: #line 731 "src/main/jay/grammars/xp.jay" - { $yyVal= array($yyVals[0+$yyTop]); } break; + case 173: #line 727 "src/main/jay/grammars/xp.jay" + { $yyVal= [$yyVals[0+$yyTop]]; } break; + + case 174: #line 728 "src/main/jay/grammars/xp.jay" + { $yyVal= $yyVals[0+$yyTop] ? array_merge([$yyVals[-2+$yyTop]], $yyVals[0+$yyTop]) : [$yyVals[-2+$yyTop]]; } break; case 175: #line 732 "src/main/jay/grammars/xp.jay" + { $yyVal= new UnpackNode($yyVals[0+$yyTop]); } break; + + case 176: #line 733 "src/main/jay/grammars/xp.jay" + { $yyVal= $yyVals[0+$yyTop]; } break; + + case 177: #line 738 "src/main/jay/grammars/xp.jay" + { $yyVal= NULL; } break; + + case 179: #line 743 "src/main/jay/grammars/xp.jay" + { $yyVal= array($yyVals[0+$yyTop]); } break; + + case 180: #line 744 "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 181: #line 748 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 178: #line 741 "src/main/jay/grammars/xp.jay" + case 183: #line 753 "src/main/jay/grammars/xp.jay" { $yyVal= new InstanceCreationNode(); $yyVal->type= $yyVals[-4+$yyTop]; @@ -2536,52 +2537,52 @@ public function yyparse($yyLex) { $yyVal->body= $yyVals[0+$yyTop]; } break; - case 179: #line 747 "src/main/jay/grammars/xp.jay" + case 184: #line 759 "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 185: #line 764 "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 186: #line 772 "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 187: #line 775 "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 188: #line 778 "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 189: #line 781 "src/main/jay/grammars/xp.jay" { $yyVal= new ClassAccessNode(NULL); } break; - case 185: #line 775 "src/main/jay/grammars/xp.jay" + case 190: #line 787 "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 191: #line 787 "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 192: #line 790 "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 193: #line 790 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2589,7 +2590,7 @@ public function yyparse($yyLex) { } } break; - case 189: #line 784 "src/main/jay/grammars/xp.jay" + case 194: #line 796 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2599,12 +2600,12 @@ public function yyparse($yyLex) { } } break; - case 190: #line 792 "src/main/jay/grammars/xp.jay" + case 195: #line 804 "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 196: #line 807 "src/main/jay/grammars/xp.jay" { if ($yyVals[0+$yyTop]) { $yyVal= $yyVals[0+$yyTop][0]; @@ -2612,10 +2613,10 @@ public function yyparse($yyLex) { } } break; - case 192: #line 801 "src/main/jay/grammars/xp.jay" + case 197: #line 813 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 193: #line 801 "src/main/jay/grammars/xp.jay" + case 198: #line 813 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; if ($yyVals[0+$yyTop]) { @@ -2626,10 +2627,10 @@ public function yyparse($yyLex) { } } break; - case 194: #line 810 "src/main/jay/grammars/xp.jay" + case 199: #line 822 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 195: #line 810 "src/main/jay/grammars/xp.jay" + case 200: #line 822 "src/main/jay/grammars/xp.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= new TypeName($yyVals[-4+$yyTop]); @@ -2641,10 +2642,10 @@ public function yyparse($yyLex) { } } break; - case 196: #line 820 "src/main/jay/grammars/xp.jay" + case 201: #line 832 "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 202: #line 832 "src/main/jay/grammars/xp.jay" { $yyVals[-4+$yyTop]->arguments= $yyVals[-2+$yyTop]; if ($yyVals[0+$yyTop]) { @@ -2655,58 +2656,58 @@ public function yyparse($yyLex) { } } break; - case 198: #line 829 "src/main/jay/grammars/xp.jay" + case 203: #line 841 "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 204: #line 844 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new YieldNode()); } break; - case 200: #line 835 "src/main/jay/grammars/xp.jay" + case 205: #line 847 "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 206: #line 850 "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 207: #line 853 "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 208: #line 856 "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 209: #line 859 "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 210: #line 862 "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 211: #line 865 "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 212: #line 868 "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 213: #line 872 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new TernaryNode()); $yyVal->condition= $yyVals[-4+$yyTop]; @@ -2714,7 +2715,7 @@ public function yyparse($yyLex) { $yyVal->conditional= $yyVals[0+$yyTop]; } break; - case 209: #line 866 "src/main/jay/grammars/xp.jay" + case 214: #line 878 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2722,7 +2723,7 @@ public function yyparse($yyLex) { $yyVal->op= '||'; } break; - case 210: #line 872 "src/main/jay/grammars/xp.jay" + case 215: #line 884 "src/main/jay/grammars/xp.jay" { $yyVal= $yyLex->create(new BinaryOpNode()); $yyVal->lhs= $yyVals[-2+$yyTop]; @@ -2730,17 +2731,17 @@ public function yyparse($yyLex) { $yyVal->op= '&&'; } break; - case 211: #line 878 "src/main/jay/grammars/xp.jay" + case 216: #line 890 "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 217: #line 895 "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 218: #line 895 "src/main/jay/grammars/xp.jay" { $this->error(E_WARNING, 'Deprecated lambda syntax used', array('#{ ... }')); if ($yyVals[0+$yyTop]) { @@ -2749,28 +2750,28 @@ public function yyparse($yyLex) { } } break; - case 214: #line 893 "src/main/jay/grammars/xp.jay" + case 219: #line 905 "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 220: #line 906 "src/main/jay/grammars/xp.jay" { $yyVal= (array)$yyVals[-1+$yyTop]; } break; - case 216: #line 898 "src/main/jay/grammars/xp.jay" + case 221: #line 910 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 218: #line 903 "src/main/jay/grammars/xp.jay" + case 223: #line 915 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 219: #line 904 "src/main/jay/grammars/xp.jay" + case 224: #line 916 "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 225: #line 920 "src/main/jay/grammars/xp.jay" { $yyVal= array('name' => $yyVals[0+$yyTop]); } break; - case 221: #line 909 "src/main/jay/grammars/xp.jay" + case 226: #line 921 "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 227: #line 925 "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 +2779,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 228: #line 931 "src/main/jay/grammars/xp.jay" { $p= $yyLex->position; } break; - case 224: #line 919 "src/main/jay/grammars/xp.jay" + case 229: #line 931 "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 230: #line 932 "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 231: #line 933 "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 232: #line 934 "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 233: #line 935 "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 234: #line 936 "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 235: #line 940 "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 236: #line 943 "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 237: #line 949 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 234: #line 942 "src/main/jay/grammars/xp.jay" + case 239: #line 954 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 235: #line 943 "src/main/jay/grammars/xp.jay" + case 240: #line 955 "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 241: #line 959 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 238: #line 952 "src/main/jay/grammars/xp.jay" + case 243: #line 964 "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 244: #line 965 "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 245: #line 969 "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 246: #line 970 "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 247: #line 971 "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 248: #line 972 "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 249: #line 973 "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 250: #line 974 "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 251: #line 975 "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 252: #line 976 "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 253: #line 977 "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 254: #line 978 "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 255: #line 979 "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 256: #line 980 "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 257: #line 984 "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 258: #line 985 "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 259: #line 986 "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 260: #line 987 "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 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 257: #line 977 "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 258: #line 978 "src/main/jay/grammars/xp.jay" + case 263: #line 990 "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 264: #line 991 "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 265: #line 995 "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 266: #line 996 "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 267: #line 997 "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 268: #line 998 "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 269: #line 999 "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 270: #line 1000 "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 271: #line 1001 "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 272: #line 1002 "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 273: #line 1003 "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 274: #line 1004 "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 275: #line 1005 "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 276: #line 1006 "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 277: #line 1010 "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 278: #line 1011 "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 279: #line 1012 "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 280: #line 1013 "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 281: #line 1014 "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 282: #line 1015 "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 283: #line 1019 "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 284: #line 1020 "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 285: #line 1025 "src/main/jay/grammars/xp.jay" { $yyVal= NULL; } break; - case 282: #line 1018 "src/main/jay/grammars/xp.jay" + case 287: #line 1030 "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 288: #line 1031 "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 289: #line 1035 "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 290: #line 1035 "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 291: #line 1038 "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 292: #line 1041 "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 293: #line 1041 "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 294: #line 1044 "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 295: #line 1044 "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 296: #line 1050 "src/main/jay/grammars/xp.jay" { $yyVal= FALSE; } break; - case 292: #line 1039 "src/main/jay/grammars/xp.jay" + case 297: #line 1051 "src/main/jay/grammars/xp.jay" { $yyVal= TRUE; } break; - case 300: #line 1058 "src/main/jay/grammars/xp.jay" + case 305: #line 1070 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop]); } break; - case 301: #line 1059 "src/main/jay/grammars/xp.jay" + case 306: #line 1071 "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 307: #line 1075 "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 308: #line 1079 "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 309: #line 1083 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 305: #line 1072 "src/main/jay/grammars/xp.jay" + case 310: #line 1084 "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 312: #line 1089 "src/main/jay/grammars/xp.jay" { $yyVal= new TypeName($yyVals[0+$yyTop].'+'); } break; - case 308: #line 1081 "src/main/jay/grammars/xp.jay" + case 313: #line 1093 "src/main/jay/grammars/xp.jay" { $yyVal= array(); } break; - case 309: #line 1082 "src/main/jay/grammars/xp.jay" + case 314: #line 1094 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 310: #line 1083 "src/main/jay/grammars/xp.jay" + case 315: #line 1095 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[-1+$yyTop]); } break; - case 311: #line 1084 "src/main/jay/grammars/xp.jay" + case 316: #line 1096 "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 317: #line 1100 "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 318: #line 1101 "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 319: #line 1105 "src/main/jay/grammars/xp.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 315: #line 1094 "src/main/jay/grammars/xp.jay" + case 320: #line 1106 "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 321: #line 1112 "src/main/jay/grammars/xp.jay" { $yyVal= 0; } break; - case 317: #line 1101 "src/main/jay/grammars/xp.jay" + case 322: #line 1113 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 318: #line 1105 "src/main/jay/grammars/xp.jay" + case 323: #line 1117 "src/main/jay/grammars/xp.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 319: #line 1106 "src/main/jay/grammars/xp.jay" + case 324: #line 1118 "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 325: #line 1122 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 321: #line 1111 "src/main/jay/grammars/xp.jay" + case 326: #line 1123 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 322: #line 1112 "src/main/jay/grammars/xp.jay" + case 327: #line 1124 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 323: #line 1113 "src/main/jay/grammars/xp.jay" + case 328: #line 1125 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_PACKAGE; } break; - case 324: #line 1114 "src/main/jay/grammars/xp.jay" + case 329: #line 1126 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_STATIC; } break; - case 325: #line 1115 "src/main/jay/grammars/xp.jay" + case 330: #line 1127 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 326: #line 1116 "src/main/jay/grammars/xp.jay" + case 331: #line 1128 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_FINAL; } break; - case 327: #line 1117 "src/main/jay/grammars/xp.jay" + case 332: #line 1129 "src/main/jay/grammars/xp.jay" { $yyVal= MODIFIER_INLINE; } break; -#line 3075 "-" +#line 3076 "-" } $yyTop-= self::$yyLen[$yyN]; diff --git a/src/test/config/php-syntax.ini b/src/test/config/php-syntax.ini index 20d83baab..43ed08b8f 100755 --- a/src/test/config/php-syntax.ini +++ b/src/test/config/php-syntax.ini @@ -98,3 +98,6 @@ class="net.xp_lang.tests.syntax.php.UnaryOpTest" [GeneratorTest] class="net.xp_lang.tests.syntax.php.GeneratorTest" + +[VariadicTest] +class="net.xp_lang.tests.syntax.php.VariadicTest" diff --git a/src/test/config/xp-syntax.ini b/src/test/config/xp-syntax.ini index 402c4d898..eb6559728 100755 --- a/src/test/config/xp-syntax.ini +++ b/src/test/config/xp-syntax.ini @@ -113,3 +113,6 @@ class="net.xp_lang.tests.syntax.xp.ParseErrorTest" [GeneratorTest] class="net.xp_lang.tests.syntax.xp.GeneratorTest" + +[VariadicTest] +class="net.xp_lang.tests.syntax.xp.VariadicTest" diff --git a/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php index 8f7697cb6..9149f7cab 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php @@ -1,18 +1,9 @@ name, null, '{ public int[] $values; @@ -23,12 +14,8 @@ public function intArray() { $this->assertEquals(array(1, 2, 3), $class->newInstance(1, 2, 3)->values); } - /** - * Test - * - */ #[@test] - public function stringFormat() { + public function string_format() { $class= self::define('class', $this->name, null, '{ public static string format(string $f, var... $args) { return vsprintf($f, $args); From 744f3c24a0317bca403fd6741c0a2f19fdc02b4a Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:14:30 +0200 Subject: [PATCH 02/10] Initial runtime support for argument unpacking in PHP 5.4+ Simulated via call_user_func_array() / array_merge() combination --- .../xp/compiler/emit/php/Emitter.class.php | 48 +++++++++++++++++-- .../execution/source/VarArgsTest.class.php | 48 +++++++++++++++++++ 2 files changed, 93 insertions(+), 3 deletions(-) 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..ef865e7e5 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -44,6 +44,7 @@ use xp\compiler\ast\LocalsToMemberPromoter; use xp\compiler\ast\InstanceCreationNode; use xp\compiler\ast\ConstantAccessNode; +use xp\compiler\ast\UnpackNode; use xp\compiler\emit\Buffer; use lang\reflect\Modifiers; use lang\Throwable; @@ -101,6 +102,8 @@ abstract class Emitter extends \xp\compiler\emit\Emitter { protected $local = [null]; protected $types = [null]; + protected static $UNPACK_REWRITE = true; + /** * Constructor. */ @@ -201,7 +204,14 @@ protected function genericComponentAsMetadata($type) { protected function emitUses($b, array $types) { raise('lang.MethodNotImplementedException', 'Overwritten in subclasses', __METHOD__); } - + + protected function needsUnpacking($arguments) { + foreach ($arguments as $argument) { + if ($argument instanceof UnpackNode) return true; + } + return false; + } + /** * Emit parameters * @@ -442,8 +452,25 @@ public function emitDynamicMemberAccess($b, $access) { */ public function emitStaticMethodCall($b, $call) { $ptr= $this->resolveType($call->type); - $b->append($this->literal($ptr).'::'.$call->name); - $this->emitInvocationArguments($b, (array)$call->arguments); + + if (self::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { + $b->append('call_user_func_array([\''.$this->literal($ptr).'\', \''.$call->name.'\'], array_merge('); + $s= sizeof($call->arguments) - 1; + foreach ($call->arguments as $i => $argument) { + if ($argument instanceof UnpackNode) { + $this->emitOne($b, $argument->expression); + } else { + $b->append('['); + $this->emitOne($b, $argument); + $b->append(']'); + } + $i < $s && $b->append(','); + } + $b->append('))'); + } else { + $b->append($this->literal($ptr).'::'.$call->name); + $this->emitInvocationArguments($b, (array)$call->arguments); + } // Record type $this->scope[0]->setType($call, $ptr->hasMethod($call->name) ? $ptr->getMethod($call->name)->returns : TypeName::$VAR); @@ -512,6 +539,21 @@ public function emitMethodCall($b, $call) { $b->append($call->name); $this->emitInvocationArguments($b, (array)$call->arguments); $b->append(')'); + } else if (self::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { + $b->insert('call_user_func_array([', $mark); + $b->append(', \'')->append($call->name)->append("'], array_merge("); + $s= sizeof($call->arguments) - 1; + foreach ($call->arguments as $i => $argument) { + if ($argument instanceof UnpackNode) { + $this->emitOne($b, $argument->expression); + } else { + $b->append('['); + $this->emitOne($b, $argument); + $b->append(']'); + } + $i < $s && $b->append(','); + } + $b->append('))'); } else { // Rewrite for unsupported syntax diff --git a/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php index 9149f7cab..56d73a912 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/VarArgsTest.class.php @@ -27,4 +27,52 @@ public function string_format() { $class->getMethod('format')->invoke(null, array('Hello %s #%d', 'World', 1)) ); } + + #[@test] + public function argument_unpacking_instance() { + $class= self::define('class', $this->name, null, '{ + public int[] $values; + + private void unpack(int... $values) { + return $values; + } + + public __construct(int[] $values) { + $this.values= $this.unpack(...$values); + } + }'); + $this->assertEquals([1, 2], $class->newInstance([1, 2])->values); + } + + #[@test] + public function argument_unpacking_static() { + $class= self::define('class', $this->name, null, '{ + public int[] $values; + + private static void unpack(int... $values) { + return $values; + } + + public __construct(int[] $values) { + $this.values= self::unpack(...$values); + } + }'); + $this->assertEquals([1, 2], $class->newInstance([1, 2])->values); + } + + #[@test] + public function argument_unpacking_after_first() { + $class= self::define('class', $this->name, null, '{ + public int[] $values; + + private void unpack(int... $values) { + return $values; + } + + public __construct(int[] $values) { + $this.values= $this.unpack(0, ...$values); + } + }'); + $this->assertEquals([0, 1, 2], $class->newInstance([1, 2])->values); + } } From 1a91c51509b0907df8d09a47d885bb924516b9a6 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:16:46 +0200 Subject: [PATCH 03/10] Optimize for PHP 5.6 by not rewriting argument unpacking there --- .../php/xp/compiler/ast/UnpackNode.class.php | 26 ++++++++++ .../xp/compiler/emit/php/Emitter.class.php | 2 + .../xp/compiler/emit/php/V56Emitter.class.php | 13 +++++ .../tests/syntax/php/VariadicTest.class.php | 49 +++++++++++++++++++ .../tests/syntax/xp/VariadicTest.class.php | 49 +++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100755 src/main/php/xp/compiler/ast/UnpackNode.class.php create mode 100755 src/main/php/xp/compiler/emit/php/V56Emitter.class.php create mode 100755 src/test/php/net/xp_lang/tests/syntax/php/VariadicTest.class.php create mode 100755 src/test/php/net/xp_lang/tests/syntax/xp/VariadicTest.class.php diff --git a/src/main/php/xp/compiler/ast/UnpackNode.class.php b/src/main/php/xp/compiler/ast/UnpackNode.class.php new file mode 100755 index 000000000..db2f56e18 --- /dev/null +++ b/src/main/php/xp/compiler/ast/UnpackNode.class.php @@ -0,0 +1,26 @@ +expression= $expression; + } + + /** + * Returns a hashcode + * + * @return string + */ + public function hashCode() { + return '...'.$this->expression->hashCode(); + } +} 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 ef865e7e5..252fded64 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -2492,6 +2492,8 @@ protected function emitTry($b, $try) { V54Emitter::emitTry($b, $try); } }'); + } else if (version_compare(PHP_VERSION, '5.6.0', 'gt')) { + return new V56Emitter(); } else if (version_compare(PHP_VERSION, '5.5.0', 'gt')) { return new V55Emitter(); } else { diff --git a/src/main/php/xp/compiler/emit/php/V56Emitter.class.php b/src/main/php/xp/compiler/emit/php/V56Emitter.class.php new file mode 100755 index 000000000..4b649cac2 --- /dev/null +++ b/src/main/php/xp/compiler/emit/php/V56Emitter.class.php @@ -0,0 +1,13 @@ +parse(new Lexer($src, 'name.'>'))->declaration->body; + } + + #[@test] + public function logger_example() { + $this->assertEquals( + [new MethodNode([ + 'modifiers' => MODIFIER_PUBLIC, + 'annotations'=> null, + 'name' => 'warn', + 'returns' => new TypeName('var'), + 'parameters' => [ + ['name' => 'args', 'type' => new TypeName('var'), 'check' => false, 'vararg' => true] + ], + 'throws' => null, + 'body' => [new MethodCallNode(new VariableNode('this'), 'log', [ + new StringNode('warn'), + new UnpackNode(new VariableNode('args')) + ])], + 'extension' => null + ])], + $this->parse('log("warn", ...$args); + } + }') + ); + } +} \ No newline at end of file diff --git a/src/test/php/net/xp_lang/tests/syntax/xp/VariadicTest.class.php b/src/test/php/net/xp_lang/tests/syntax/xp/VariadicTest.class.php new file mode 100755 index 000000000..a6ed6afb3 --- /dev/null +++ b/src/test/php/net/xp_lang/tests/syntax/xp/VariadicTest.class.php @@ -0,0 +1,49 @@ +parse(new Lexer($src, 'name.'>'))->declaration->body; + } + + #[@test] + public function logger_example() { + $this->assertEquals( + [new MethodNode([ + 'modifiers' => MODIFIER_PUBLIC, + 'annotations'=> null, + 'name' => 'warn', + 'returns' => new TypeName('void'), + 'parameters' => [ + ['name' => 'args', 'type' => new TypeName('var'), 'check' => false, 'vararg' => true] + ], + 'throws' => null, + 'body' => [new MethodCallNode(new VariableNode('this'), 'log', [ + new StringNode('warn'), + new UnpackNode(new VariableNode('args')) + ])], + 'extension' => null + ])], + $this->parse('class Logger { + public void warn(var?... $args) { + $this.log("warn", ...$args); + } + }') + ); + } +} \ No newline at end of file From a799157ee6c320ee64f56b0dbda39f15c52e140b Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:26:12 +0200 Subject: [PATCH 04/10] Implement argument unpacking for instance creation expressions --- .../php/xp/compiler/emit/php/Emitter.class.php | 18 ++++++++++++++++-- .../xp/compiler/emit/php/V56Emitter.class.php | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) 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 252fded64..0ac7b0d9f 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -453,7 +453,7 @@ public function emitDynamicMemberAccess($b, $access) { public function emitStaticMethodCall($b, $call) { $ptr= $this->resolveType($call->type); - if (self::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { + if (static::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { $b->append('call_user_func_array([\''.$this->literal($ptr).'\', \''.$call->name.'\'], array_merge('); $s= sizeof($call->arguments) - 1; foreach ($call->arguments as $i => $argument) { @@ -539,7 +539,7 @@ public function emitMethodCall($b, $call) { $b->append($call->name); $this->emitInvocationArguments($b, (array)$call->arguments); $b->append(')'); - } else if (self::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { + } else if (static::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { $b->insert('call_user_func_array([', $mark); $b->append(', \'')->append($call->name)->append("'], array_merge("); $s= sizeof($call->arguments) - 1; @@ -1205,6 +1205,20 @@ protected function emitInstanceCreation($b, $new) { $this->emitInvocationArguments($b, (array)$new->parameters, false); } $b->append(')'); + } else if (static::$UNPACK_REWRITE && $this->needsUnpacking((array)$new->parameters)) { + $b->append('(new \ReflectionClass(\''.$this->literal($ptr).'\'))->newInstanceArgs(array_merge('); + $s= sizeof($new->parameters) - 1; + foreach ($new->parameters as $i => $argument) { + if ($argument instanceof UnpackNode) { + $this->emitOne($b, $argument->expression); + } else { + $b->append('['); + $this->emitOne($b, $argument); + $b->append(']'); + } + $i < $s && $b->append(','); + } + $b->append('))'); } else { $b->append('new '.$this->literal($ptr)); $this->emitInvocationArguments($b, (array)$new->parameters); diff --git a/src/main/php/xp/compiler/emit/php/V56Emitter.class.php b/src/main/php/xp/compiler/emit/php/V56Emitter.class.php index 4b649cac2..28e5c0041 100755 --- a/src/main/php/xp/compiler/emit/php/V56Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V56Emitter.class.php @@ -10,4 +10,14 @@ class V56Emitter extends V55Emitter { protected static $UNPACK_REWRITE = false; + /** + * Emit an unpack node + * + * @param xp.compiler.emit.Buffer b + * @param xp.compiler.ast.UnpackNode unpack + */ + protected function emitUnpack($b, $unpack) { + $b->append('...'); + $this->emitOne($b, $unpack->expression); + } } \ No newline at end of file From ba26dc686eaab6f2654197deae41b3f787111367 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:28:42 +0200 Subject: [PATCH 05/10] Implement argument unpacking for dyn. instance creation --- .../xp/compiler/emit/php/Emitter.class.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) 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 0ac7b0d9f..4eb247829 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1132,8 +1132,24 @@ protected function emitFinally($b, $finally) { * @param xp.compiler.ast.DynamicInstanceCreationNode new */ protected function emitDynamicInstanceCreation($b, $new) { - $b->append('new ')->append('$')->append($new->variable); - $this->emitInvocationArguments($b, (array)$new->parameters); + if (static::$UNPACK_REWRITE && $this->needsUnpacking((array)$new->parameters)) { + $b->append('(new \ReflectionClass($'.$new->variable.'))->newInstanceArgs(array_merge('); + $s= sizeof($new->parameters) - 1; + foreach ($new->parameters as $i => $argument) { + if ($argument instanceof UnpackNode) { + $this->emitOne($b, $argument->expression); + } else { + $b->append('['); + $this->emitOne($b, $argument); + $b->append(']'); + } + $i < $s && $b->append(','); + } + $b->append('))'); + } else { + $b->append('new ')->append('$')->append($new->variable); + $this->emitInvocationArguments($b, (array)$new->parameters); + } $this->scope[0]->setType($new, new TypeName('lang.Object')); } From b1e5b4ad4c9b2d0a8f35c0ca1c90951d8ad07c4b Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:47:10 +0200 Subject: [PATCH 06/10] Allow varargs in lambdas --- src/main/jay/grammars/php.jay | 21 +- .../xp/compiler/emit/php/Emitter.class.php | 3 +- .../xp/compiler/emit/php/V54Emitter.class.php | 19 +- .../xp/compiler/syntax/php/Parser.class.php | 2391 ++++++++--------- 4 files changed, 1195 insertions(+), 1239 deletions(-) diff --git a/src/main/jay/grammars/php.jay b/src/main/jay/grammars/php.jay index d0297bf02..f1660f2bf 100644 --- a/src/main/jay/grammars/php.jay +++ b/src/main/jay/grammars/php.jay @@ -685,8 +685,8 @@ expression: | '@' expression { $$= $yyLex->create(new SilenceOperatorNode($2)); } - | T_FUNCTION '(' lambda_input ')' lambda_uses_opt '{' statements_opt '}' { - $$= $yyLex->create(new LambdaNode($3, (array)$7, $5)); + | T_FUNCTION '(' parameters_opt ')' lambda_uses_opt '{' statements_opt '}' { + $$= $yyLex->create(new LambdaNode((array)$3, (array)$7, $5)); } | '(' expression ')' chain_opt { if ($4) { @@ -698,25 +698,20 @@ expression: } ; -lambda_input: +lambda_uses_opt: /* empty */ { $$= array(); } - | lambda_input_parameters + | T_USE '(' lambda_uses ')' { $$= $3; } ; -lambda_input_parameters: - lambda_input_parameter { $$= array($1); } - | lambda_input_parameters ',' lambda_input_parameter { $$= array_merge($1, array($3)); } +lambda_uses: + lambda_use { $$= array($1); } + | lambda_uses ',' lambda_use { $$= array_merge($1, array($3)); } ; -lambda_input_parameter: +lambda_use: T_VARIABLE initialization_opt { $$= array('name' => $1); $2 && $$['default']= $2; } ; -lambda_uses_opt: - /* empty */ { $$= array(); } - | T_USE '(' lambda_input_parameters ')' { $$= $3; } -; - literal: scalar | '[' { $p= $yyLex->position; } map_or_list ']' { $3->position= $p; $3->type= NULL; $$= $3; } 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 4eb247829..69439bfe3 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -3,6 +3,7 @@ use xp\compiler\types\CompiledType; use xp\compiler\types\TypeDeclaration; use xp\compiler\types\TypeInstance; +use xp\compiler\types\TypeReference; use xp\compiler\types\TypeName; use xp\compiler\types\Types; use xp\compiler\types\Scope; @@ -1373,7 +1374,7 @@ protected function emitParameters($b, array $parameters, $delim) { $ptr= $this->resolveType($t); $param['name']= $param['assign']; $defer[]= '$this->'.$param['assign'].'= $'.$param['assign'].';'; - } else if (!$param['type']) { + } else if (!isset($param['type'])) { $t= TypeName::$VAR; $ptr= new TypeReference($t); } else { diff --git a/src/main/php/xp/compiler/emit/php/V54Emitter.class.php b/src/main/php/xp/compiler/emit/php/V54Emitter.class.php index eb447660a..421b44b82 100644 --- a/src/main/php/xp/compiler/emit/php/V54Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/V54Emitter.class.php @@ -214,17 +214,9 @@ protected function emitArm($b, $arm) { protected function emitLambda($b, $lambda) { // Parameters - $b->append('function('); - $s= sizeof($lambda->parameters)- 1; - foreach ($lambda->parameters as $i => $param) { - $b->append('$')->append($param['name']); - if (isset($param['default'])) { - $b->append('='); - $this->emitOne($b, $param['default']); - } - $i < $s && $b->append(','); - } - $b->append(')'); + $b->append('function'); + $this->emitParameters($b, (array)$lambda->parameters, '{'); + $mark= $b->mark() - 1; // If not explicitely stated: Capture all local variables and parameters of // containing scope which are also used inside the lambda by value. @@ -240,14 +232,13 @@ protected function emitLambda($b, $lambda) { // Use variables if ($capture= $finder->variablesIn($lambda->statements)) { - $b->append(' use($')->append(implode(', $', $capture))->append(')'); + $b->insert(' use($'.implode(', $', $capture).')', $mark); } } else if ($lambda->uses) { $capture= array_map(function($var) { return $var['name']; }, $lambda->uses); - $b->append(' use($')->append(implode(', $', $capture))->append(')'); + $b->insert(' use($'.implode(', $', $capture).')', $mark); } - $b->append('{'); $this->emitAll($b, $lambda->statements); $b->append('}'); } 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 73959fad4..306f56a89 100644 --- a/src/main/php/xp/compiler/syntax/php/Parser.class.php +++ b/src/main/php/xp/compiler/syntax/php/Parser.class.php @@ -170,16 +170,16 @@ class Parser extends \text\parser\generic\AbstractParser { 74, 26, 76, 26, 77, 26, 78, 26, 79, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 85, - 85, 87, 87, 88, 86, 86, 38, 90, 38, 91, - 38, 25, 25, 25, 25, 25, 25, 89, 89, 89, - 89, 92, 92, 94, 94, 93, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, - 81, 81, 81, 81, 81, 81, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, - 83, 83, 83, 83, 84, 84, 75, 75, 95, 95, - 97, 96, 98, 96, 96, 96, 96, 99, 96, 100, - 96, 31, 31, 10, 101, 17, 17, 33, 33, 102, - 102, 103, 103, 103, 103, 103, 103, + 85, 86, 86, 87, 38, 89, 38, 90, 38, 25, + 25, 25, 25, 25, 25, 88, 88, 88, 88, 91, + 91, 93, 93, 92, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, + 81, 81, 81, 81, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, + 83, 83, 84, 84, 75, 75, 94, 94, 96, 95, + 97, 95, 95, 95, 95, 98, 95, 99, 95, 31, + 31, 10, 100, 17, 17, 33, 33, 101, 101, 102, + 102, 102, 102, 102, 102, ); protected static $yyLen= array(2, 3, 0, 0, 4, 0, 1, 1, 2, 3, 1, @@ -198,1232 +198,1204 @@ class Parser extends \text\parser\generic\AbstractParser { 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, + 4, 1, 3, 2, 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, 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, + 3, 3, 4, 4, 3, 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, 252, 254, 253, 255, 257, 256, 0, 1, 0, - 42, 249, 0, 8, 0, 4, 9, 0, 14, 16, - 251, 11, 0, 0, 0, 0, 0, 12, 0, 0, - 0, 0, 244, 0, 0, 13, 0, 41, 44, 0, - 0, 0, 0, 168, 0, 0, 177, 173, 176, 174, - 175, 0, 0, 0, 167, 0, 0, 0, 52, 19, - 0, 0, 0, 23, 25, 0, 0, 0, 0, 170, + 0, 250, 252, 251, 253, 255, 254, 0, 1, 0, + 42, 247, 0, 8, 0, 4, 9, 0, 14, 16, + 249, 11, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 242, 0, 0, 13, 0, 41, 44, 0, + 0, 0, 0, 166, 0, 0, 175, 171, 174, 172, + 173, 0, 0, 0, 165, 0, 0, 0, 52, 19, + 0, 0, 0, 23, 25, 0, 0, 0, 0, 168, 0, 46, 47, 0, 21, 25, 0, 0, 0, 0, - 179, 0, 0, 0, 0, 0, 0, 135, 0, 0, + 177, 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, 133, 0, 0, 0, 0, 145, 146, 147, - 148, 149, 0, 0, 182, 0, 0, 50, 51, 0, - 54, 56, 55, 0, 49, 0, 247, 0, 17, 0, + 148, 149, 0, 0, 180, 0, 0, 50, 51, 0, + 54, 56, 55, 0, 49, 0, 245, 0, 17, 0, 24, 26, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 157, 139, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 225, 226, 240, 231, 0, 233, - 132, 228, 0, 0, 169, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 223, 224, 238, 229, 0, 231, + 132, 226, 0, 0, 167, 0, 0, 0, 0, 0, 0, 15, 0, 27, 0, 0, 0, 0, 29, 0, - 0, 0, 0, 245, 0, 242, 0, 136, 243, 0, - 0, 0, 0, 162, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 243, 0, 240, 0, 136, 241, 0, + 0, 0, 0, 0, 60, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 154, 153, 0, 0, 0, 236, 0, - 0, 230, 123, 0, 185, 183, 0, 53, 0, 171, - 0, 0, 31, 0, 0, 33, 0, 30, 0, 0, - 159, 0, 0, 0, 0, 164, 0, 0, 0, 131, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 238, - 0, 0, 117, 172, 34, 32, 37, 0, 0, 0, - 0, 0, 0, 163, 0, 138, 0, 241, 232, 0, - 237, 234, 0, 127, 126, 140, 0, 0, 0, 0, - 0, 0, 0, 0, 60, 0, 0, 71, 0, 91, - 75, 79, 81, 77, 87, 89, 73, 83, 94, 0, - 0, 0, 68, 0, 105, 129, 239, 65, 0, 0, - 0, 0, 0, 166, 0, 85, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 93, 158, 70, 66, - 0, 0, 63, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 154, 153, 0, 0, 0, + 234, 0, 0, 228, 123, 0, 183, 181, 0, 53, + 0, 169, 0, 0, 31, 0, 0, 33, 0, 30, + 0, 0, 159, 0, 0, 0, 0, 65, 0, 0, + 0, 0, 0, 0, 131, 128, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 0, 0, 117, 170, 34, + 32, 37, 0, 0, 0, 0, 66, 0, 0, 63, + 0, 62, 0, 138, 0, 239, 230, 0, 235, 232, + 0, 127, 126, 140, 0, 0, 64, 0, 0, 0, + 0, 0, 162, 71, 0, 91, 75, 79, 81, 77, + 87, 89, 73, 83, 94, 0, 0, 0, 68, 0, + 105, 129, 237, 0, 164, 0, 161, 0, 85, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, + 158, 70, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 88, 90, 0, 0, 106, 40, 57, 0, - 38, 64, 72, 0, 92, 0, 0, 0, 0, 0, + 38, 72, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 58, 113, 86, 110, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 112, 0, 0, 0, 0, 108, - 74, 101, 103, 0, 98, 0, 0, 0, 82, 96, - 78, 0, 0, 0, 84, 100, 0, 0, 109, 0, - 0, 0, 76, 0, 104, 0, 102, 0, 0, 114, + 58, 113, 86, 110, 0, 0, 80, 0, 0, 0, + 0, 0, 0, 112, 0, 0, 0, 0, 108, 74, + 101, 103, 0, 98, 0, 0, 0, 82, 96, 78, + 0, 0, 0, 84, 100, 0, 0, 109, 0, 0, + 0, 76, 0, 104, 0, 102, 0, 0, 114, ); protected static $yyDgoto= array(2, 3, 6, 19, 10, 4, 7, 8, 104, 130, 216, 36, 51, 72, 88, 37, 53, 74, 131, 132, 204, - 133, 134, 205, 286, 65, 361, 343, 333, 392, 411, - 344, 34, 21, 35, 66, 67, 68, 106, 199, 362, - 345, 346, 363, 364, 365, 244, 375, 384, 451, 378, - 417, 381, 441, 379, 380, 385, 454, 397, 434, 382, - 383, 377, 455, 456, 463, 464, 462, 435, 436, 444, - 200, 418, 218, 302, 191, 150, 145, 226, 220, 108, - 109, 110, 111, 112, 222, 323, 223, 224, 113, 76, - 120, 114, 115, 276, 192, 193, 267, 271, 330, 266, - 219, 22, 23, + 133, 134, 205, 288, 65, 367, 223, 341, 394, 411, + 224, 34, 21, 35, 66, 67, 68, 106, 199, 368, + 225, 226, 369, 370, 371, 246, 378, 387, 450, 381, + 416, 384, 440, 382, 383, 388, 453, 397, 433, 385, + 386, 380, 454, 455, 462, 463, 461, 434, 435, 443, + 200, 417, 218, 307, 191, 150, 145, 228, 220, 108, + 109, 110, 111, 112, 329, 352, 353, 113, 76, 120, + 114, 115, 278, 192, 193, 269, 273, 338, 268, 219, + 22, 23, ); - protected static $yySindex = array( -270, - 0, 0, -261, -173, -173, 121, -261, 0, 15, 70, - 80, 0, 0, 0, 0, 0, 0, 62, 0, 28, - 0, 0, 297, 0, -173, 0, 0, 100, 0, 0, - 0, 0, -26, 91, 144, -26, -26, 0, -173, 236, - 297, 100, 0, -79, -70, 0, 458, 0, 0, -26, - -49, -26, 151, 0, -26, 224, 0, 0, 0, 0, - 0, 253, 257, -127, 0, 254, 276, 277, 0, 0, - -26, 207, 305, 0, 0, 4322, 313, 576, 576, 0, - -231, 0, 0, -229, 0, 0, -26, 191, 4756, 4770, - 0, 4770, 4770, 4770, 4770, 4770, 4770, 0, 4770, 4770, - 317, 324, 0, -51, 1400, 22, 323, 0, 0, 0, - 0, 0, 268, 341, 0, -15, 0, 0, 0, 4322, - 0, 0, 0, 224, 0, 304, 0, 105, 0, -234, - 0, 0, 0, 30, 283, 292, 1638, 1704, -61, -61, - -253, -61, -61, -61, -27, 0, 0, 0, 46, 22, - 0, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, - 4366, 4624, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, - 4647, 4662, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, - 4770, 4770, 4770, -80, 0, 0, 0, 0, -108, 0, - 0, 0, 22, 4770, 0, 4770, 4770, 2485, 355, 353, - 357, 0, 346, 0, 119, 149, 354, 121, 0, 4770, - 4770, 22, 4770, 0, 374, 0, 380, 0, 0, -15, - 354, 386, 387, 0, 0, -197, 2674, 2785, 2785, 2785, - 2785, 2785, 2785, 2785, 2785, 4770, 2785, 4770, 2785, 2785, - 2785, 2785, 2485, 372, 2485, 10, 765, 1138, 4770, 36, - 4770, 36, 77, 77, 77, 77, 77, -3, -3, -276, - -276, -276, -253, 0, 0, -15, 4770, 393, 0, 4770, - 4770, 0, 0, 1400, 0, 0, 2485, 0, -15, 0, - 385, 105, 0, 394, 4770, 0, 95, 0, 2485, 2485, - 0, 48, -15, -15, 401, 0, 123, 46, 405, 0, - 0, 22, 2785, 2785, 4770, 2785, 2785, 411, 360, 0, - 1787, 1815, 0, 0, 0, 0, 0, 2485, 413, 420, - 22, 422, 342, 0, -15, 0, 48, 0, 0, -15, - 0, 0, -68, 0, 0, 0, 46, 4279, 423, 425, - 354, 128, 436, -335, 0, 438, 186, 0, 363, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4279, - 1842, 358, 0, 4279, 0, 0, 0, 0, 354, 439, - 354, 158, -68, 0, 4770, 0, 4770, 460, 462, 4279, - 463, 454, 455, 482, 483, 399, 0, 0, 0, 0, - -91, -24, 0, 354, 0, 466, 4279, 1939, 4770, 4770, - 166, 4770, 0, 0, 4770, 4770, 0, 0, 0, 4279, - 0, 0, 0, 403, 0, 2485, 480, 323, 2040, 502, - 2238, 2273, 2339, 419, 204, 4770, 4279, 4770, 211, 4279, - 429, 0, 0, 0, 0, 204, 505, 0, 2374, 148, - 522, 195, -23, 529, 0, 4770, 514, 260, 4279, 0, - 0, 0, 0, 498, 0, -23, -26, 542, 0, 0, - 0, 4279, 4770, 549, 0, 0, 288, 4279, 0, 2450, - 4279, 583, 0, 4279, 0, 515, 0, 4279, 516, 0, + protected static $yySindex = array( -214, + 0, 0, -207, -131, -131, 54, -207, 0, 44, 98, + 133, 0, 0, 0, 0, 0, 0, 52, 0, -18, + 0, 0, 135, 0, -131, 0, 0, 148, 0, 0, + 0, 0, -65, 105, 183, -65, -65, 0, -131, 210, + 135, 148, 0, -55, -48, 0, 2743, 0, 0, -65, + -36, -65, 164, 0, -65, 232, 0, 0, 0, 0, + 0, 237, 269, -99, 0, 275, 280, 288, 0, 0, + -65, 236, 317, 0, 0, 4252, 334, 409, 409, 0, + -219, 0, 0, -212, 0, 0, -65, 175, 4533, 4632, + 0, 4632, 4632, 4632, 4632, 4632, 4632, 0, 4632, 4632, + 339, 341, 0, -23, 1463, -30, 349, 0, 0, 0, + 0, 0, 302, 353, 0, -27, 0, 0, 0, 4252, + 0, 0, 0, 232, 0, 359, 0, 143, 0, -187, + 0, 0, 0, 23, 315, 332, 1591, 1626, -4, -4, + -257, -4, -4, -4, -49, 0, 0, 0, -61, -30, + 0, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, + 4281, 4307, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, + 4519, 4544, 4632, 4632, 4632, 4632, 4632, 4632, 4632, 4632, + 4632, 4632, 4632, -67, 0, 0, 0, 0, -66, 0, + 0, 0, -30, 4632, 0, 4632, 4632, 2478, 365, 381, + 385, 0, 368, 0, 32, 174, 375, 54, 0, 4632, + 4632, -30, 4632, 0, 397, 0, 398, 0, 0, -27, + 375, 99, 402, -329, 0, 400, 0, -210, 2575, 2645, + 2645, 2645, 2645, 2645, 2645, 2645, 2645, 4632, 2645, 4632, + 2645, 2645, 2645, 2645, 2478, 394, 2478, 707, 642, 1887, + 4632, 80, 4632, 80, -13, -13, -13, -13, -13, 2, + 2, -20, -20, -20, -257, 0, 0, -27, 4632, 414, + 0, 4632, 4632, 0, 0, 1463, 0, 0, 2478, 0, + -27, 0, 370, 143, 0, 421, 4632, 0, 131, 0, + 2478, 2478, 0, 2698, -27, -27, 438, 0, 375, 166, + 375, 145, -61, 446, 0, 0, -30, 2645, 2645, 4632, + 2645, 2645, 447, 406, 0, 1762, 1859, 0, 0, 0, + 0, 0, 2478, 463, 464, -30, 0, 467, 386, 0, + 375, 0, -27, 0, 2698, 0, 0, -27, 0, 0, + -61, 0, 0, 0, 171, 4158, 0, 471, 472, 473, + 375, 156, 0, 0, 392, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4158, 1926, 393, 0, 4158, + 0, 0, 0, 461, 0, 171, 0, 4632, 0, 4632, + 480, 481, 4158, 483, 477, 478, 486, 500, 422, 0, + 0, 0, -45, 10, 0, 489, 4158, 2023, 4632, 4632, + 188, 4632, 0, 0, 4632, 4632, 0, 0, 0, 4158, + 0, 0, 427, 0, 2478, 494, 349, 2051, 517, 2078, + 2148, 2189, 434, 220, 4632, 4158, 4632, 225, 4158, 445, + 0, 0, 0, 0, 220, 510, 0, 2259, 168, 536, + 222, 38, 543, 0, 4632, 525, 254, 4158, 0, 0, + 0, 0, 490, 0, 38, -65, 555, 0, 0, 0, + 4158, 4632, 539, 0, 0, 262, 4158, 0, 2312, 4158, + 564, 0, 4158, 0, 491, 0, 4158, 511, 0, ); - protected static $yyRindex= array( 275, - 0, 0, 310, 0, 0, 43, 321, 0, 332, 0, + protected static $yyRindex= array( 42, + 0, 0, 250, 0, 0, 84, 261, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 547, 0, 0, 0, 0, -1, - 319, 0, 0, -83, 528, 0, 0, 0, 0, 0, - 531, 0, 0, 0, 0, -30, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 611, 0, 0, - 0, 0, 532, 0, 0, 567, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -153, 0, 1303, + 0, 0, -221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 513, 0, 0, 0, 0, 16, + -93, 0, 0, -72, 493, 0, 0, 0, 0, 0, + 514, 0, 0, 0, 0, -32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 604, 0, 0, + 0, 0, 523, 0, 0, 556, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -186, 0, 1292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 447, 0, 0, 0, 23, 668, -9, 0, 0, 0, - 0, 0, 0, 39, 0, 620, -28, 0, 0, 625, - 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, - 0, 0, 0, 0, 1603, 0, 0, 437, 907, 967, - 1169, 1004, 1064, 1101, 0, 0, 0, 0, 628, 668, + 404, 0, 0, 0, 22, 566, -6, 0, 0, 0, + 0, 0, 0, -1, 0, 609, -39, 0, 0, 614, + 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, + 0, 0, 0, 0, 1427, 0, 0, 607, 865, 962, + 828, 989, 1033, 1164, 0, 0, 0, 0, 615, 566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 612, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 870, 234, 0, 61, 0, 200, 0, 630, - 0, 0, 0, 0, 0, 0, 229, 333, 0, 0, - 0, 668, 0, 0, 0, 0, 0, 0, 0, 620, - 250, 0, 633, 0, 0, 0, 3897, 132, 212, 222, - 243, 1504, 1613, 1716, 1738, 0, 1855, 0, 2498, 2542, - 2708, 2836, 245, 0, 74, 3758, 3707, 3598, 0, 3639, - 0, 3666, 3175, 3368, 3504, 3561, 3116, 2975, 3070, 2877, - 2904, 2931, 1206, 0, 0, 620, 582, 474, 0, 0, - 0, 0, 0, 0, 0, 0, 255, 0, 620, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1866, 3513, - 0, 3779, 620, 620, 0, 0, 553, 0, 571, 0, - 0, 668, 3043, 3380, 0, 3703, 3812, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, - 668, 0, 0, 0, 620, 0, 3802, 0, 0, 620, - 0, 0, 636, 0, 0, 0, 0, 554, 0, 0, - 250, 0, 0, 0, 0, 637, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, - 0, 0, 0, -115, 0, 0, 0, 0, 250, -22, - 250, 0, 0, 0, 621, 0, 0, 0, 0, 0, + 0, 0, 734, 212, 0, 201, 0, 173, 0, 617, + 0, 0, 0, 0, 0, 0, 51, 321, 0, 0, + 0, 566, 0, 0, 0, 0, 0, 0, 0, 609, + 213, 0, 0, 0, 0, 621, 0, 0, 172, 165, + 185, 1263, 1267, 1686, 1690, 1694, 2160, 0, 2708, 0, + 3038, 3118, 3126, 3538, 271, 0, 287, 3596, 3505, 3369, + 0, 3460, 0, 3484, 3206, 3297, 3321, 3345, 3067, 2877, + 2905, 2737, 2782, 2809, 1127, 0, 0, 609, 570, 431, + 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, + 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 208, 0, 3629, 609, 609, 0, 0, 213, 541, + 213, 0, 0, 529, 0, 0, 566, 3606, 3758, 0, + 3762, 3768, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 97, 0, 0, 566, 0, 0, 0, 0, + 213, 0, 609, 0, 3737, 0, 0, 609, 0, 0, + 615, 0, 0, 0, 0, 542, 0, 0, 0, 0, + 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 542, 0, 0, 0, -110, + 0, 0, 0, 11, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 250, 0, 0, 554, 0, 622, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 554, - 0, 0, 0, 0, 0, 223, 0, -8, 0, 0, - 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4191, 0, 0, 0, 641, - 0, 4235, 558, 0, 0, 643, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -105, 0, 0, -105, 0, 0, 0, 554, 0, 0, + 0, 0, 0, 0, 0, 0, 542, 0, 618, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 542, + 0, 0, 0, 0, 181, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 618, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3899, 0, 0, 0, 627, 0, + 4043, 551, 0, 0, 637, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, + 0, 0, -105, 0, 0, 0, 542, 0, 0, ); protected static $yyGindex= array(0, - 0, 0, 0, 143, 0, 0, 679, -33, 21, -29, - 0, 0, 0, 601, 0, 0, 99, 0, 481, 406, - 0, 0, 0, 160, 409, 41, 0, 0, 0, 0, - -136, 649, 651, 0, 284, 609, 0, 81, 504, -235, - 325, 0, 335, -283, 0, -192, 0, 0, 0, 0, - -385, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 264, 0, 0, - 0, 45, 0, 0, -144, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 364, 404, 584, 0, - 0, 0, 507, 0, 523, 0, 0, 0, 0, 0, - 0, 684, 0, + 0, 0, 0, 352, 0, 0, 674, -33, -5, -29, + 0, 0, 0, 597, 0, 0, -9, 0, 484, 411, + 0, 0, 0, 207, 403, 8, 355, 0, 0, 0, + -133, 651, 656, 0, 343, 619, 0, 71, -137, -338, + 395, 0, 329, 134, 0, -158, 0, 0, 0, 0, + -372, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 246, 0, 0, 0, 0, 270, 0, 0, + 0, -24, 0, 0, -75, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 330, 611, 0, 0, + 0, 537, 0, 544, 0, 0, 0, 0, 0, 0, + 711, 0, ); protected static $yyTable = array(40, - 39, 273, 43, 43, 371, 225, 44, 45, 217, 69, - 172, 39, 172, 64, 270, 172, 43, 94, 43, 67, - 70, 43, 73, 39, 89, 77, 20, 92, 121, 93, - 124, 180, 121, 182, 409, 184, 39, 43, 180, 18, - 437, 73, 45, 181, 64, 64, 182, 170, 100, 1, - 121, 180, 178, 43, 179, 177, 181, 73, 184, 5, - 458, 187, 299, 122, 39, 39, 122, 291, 122, 173, - 62, 175, 182, 208, 309, 54, 39, 180, 178, 181, - 179, 177, 181, 180, 182, 170, 9, 372, 209, 180, - 178, 45, 179, 177, 181, 173, 401, 175, 410, 206, - 39, 184, 300, 169, 184, 207, 25, 173, 123, 175, - 95, 43, 188, 182, 186, 122, 105, 186, 180, 178, - 107, 179, 177, 181, 386, 185, 186, 69, 26, 137, - 138, 181, 139, 140, 141, 142, 143, 144, 27, 146, - 147, 169, 301, 438, 190, 183, 442, 11, 185, 186, - 43, 268, 28, 184, 265, 18, 198, 326, 69, 69, - 105, 414, 282, 33, 107, 461, 186, 32, 38, 85, - 36, 168, 152, 36, 424, 152, 336, 283, 469, 38, - 248, 46, 396, 41, 473, 127, 248, 42, 36, 152, - 152, 38, 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, 263, 152, 18, 374, 18, 287, 298, - 50, 269, 38, 38, 243, 475, 274, 277, 477, 52, - 119, 214, 479, 119, 101, 57, 58, 59, 60, 61, - 289, 290, 187, 292, 408, 187, 152, 69, 69, 264, - 198, 71, 188, 122, 214, 188, 122, 67, 67, 187, - 187, 341, 35, 75, 124, 47, 303, 124, 304, 188, - 188, 122, 81, 189, 78, 125, 189, 35, 125, 306, - 35, 307, 124, 35, 82, 118, 80, 99, 118, 43, - 189, 189, 125, 125, 187, 214, 198, 243, 184, 2, - 311, 312, 215, 79, 188, 129, 83, 63, 102, 198, - 84, 184, 148, 210, 103, 318, 124, 29, 30, 86, - 98, 80, 211, 198, 198, 189, 187, 125, 18, 43, - 185, 186, 248, 248, 5, 327, 188, 184, 87, 452, - 453, 90, 116, 189, 342, 6, 148, 43, 151, 184, - 195, 118, 119, 149, 203, 198, 194, 189, 10, 10, - 198, 10, 10, 10, 10, 10, 10, 10, 10, 12, - 296, 12, 250, 250, 196, 221, 96, 97, 184, 10, - 10, 10, 10, 10, 10, 278, 279, 280, 185, 186, - 12, 13, 14, 15, 16, 17, 281, 197, 284, 176, - 174, 185, 186, 293, 285, 243, 250, 398, 183, 294, - 171, 172, 250, 43, 10, 10, 297, 467, 202, 305, - 298, 183, 310, 317, 207, 176, 174, 185, 186, 416, - 419, 321, 421, 322, 325, 422, 423, 176, 174, 185, - 186, 328, 329, 334, 10, 10, 10, 183, 171, 172, - 335, 337, 152, 366, 338, 367, 416, 369, 439, 183, - 12, 13, 14, 15, 16, 17, 370, 143, 185, 186, - 143, 373, 388, 172, 172, 376, 416, 172, 172, 172, - 172, 172, 172, 172, 143, 143, 391, 394, 183, 399, - 368, 400, 402, 470, 172, 172, 172, 172, 172, 172, - 235, 235, 403, 404, 235, 235, 235, 235, 235, 235, - 235, 405, 406, 407, 413, 128, 420, 425, 390, 143, - 393, 235, 235, 235, 235, 235, 235, 172, 426, 172, - 172, 428, 187, 432, 152, 152, 152, 433, 54, 39, - 440, 443, 188, 412, 2, 2, 2, 2, 2, 2, - 448, 143, 449, 446, 235, 450, 235, 235, 457, 172, - 172, 172, 459, 189, 2, 2, 12, 13, 14, 15, - 16, 17, 468, 12, 13, 14, 15, 16, 17, 5, - 5, 5, 5, 5, 5, 2, 235, 235, 235, 460, - 6, 6, 6, 6, 6, 6, 471, 130, 130, 5, - 5, 130, 130, 130, 130, 130, 130, 130, 248, 248, - 6, 6, 465, 476, 187, 187, 187, 472, 130, 130, - 130, 130, 130, 130, 188, 188, 188, 478, 128, 43, - 480, 10, 10, 10, 314, 57, 58, 59, 60, 61, - 22, 48, 248, 20, 246, 189, 189, 189, 248, 178, - 115, 130, 10, 130, 130, 178, 54, 39, 160, 124, - 116, 10, 248, 161, 124, 165, 59, 61, 67, 124, - 120, 95, 97, 120, 99, 24, 126, 316, 288, 315, - 49, 48, 125, 130, 130, 130, 466, 395, 389, 445, - 347, 324, 275, 201, 227, 227, 31, 0, 227, 227, - 227, 227, 227, 227, 227, 272, 0, 56, 57, 58, - 59, 60, 61, 295, 0, 227, 227, 227, 227, 227, - 227, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 0, 0, 62, 172, 0, - 227, 227, 0, 0, 0, 0, 0, 143, 0, 308, - 0, 0, 0, 0, 0, 0, 0, 172, 172, 0, - 0, 0, 313, 0, 0, 235, 0, 0, 0, 0, - 63, 227, 227, 0, 0, 0, 319, 320, 0, 0, - 0, 182, 170, 55, 235, 235, 180, 178, 0, 179, - 177, 181, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 173, 0, 175, 0, 339, 0, - 0, 0, 0, 340, 0, 117, 57, 58, 59, 60, - 61, 0, 0, 0, 0, 0, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 0, 12, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 0, - 0, 0, 0, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 130, 0, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 235, 235, 0, 0, 0, 0, - 0, 130, 130, 0, 0, 0, 229, 229, 63, 0, - 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, - 0, 55, 0, 0, 0, 0, 0, 229, 229, 229, - 229, 229, 229, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 221, 221, 0, 0, 221, 221, 221, - 221, 221, 221, 221, 0, 0, 0, 0, 0, 0, - 0, 0, 229, 229, 221, 221, 221, 221, 221, 221, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 227, - 0, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 229, 229, 0, 0, 0, 227, 221, - 221, 0, 0, 222, 222, 0, 0, 222, 222, 222, - 222, 222, 222, 222, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 222, 222, 222, 222, 222, 222, - 221, 221, 0, 0, 0, 0, 0, 0, 0, 0, - 220, 220, 0, 0, 220, 220, 220, 220, 220, 220, - 220, 0, 0, 0, 0, 0, 0, 0, 0, 222, - 222, 220, 220, 220, 220, 220, 220, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 184, 0, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 222, 222, 0, 0, 0, 0, 220, 220, 0, 0, - 223, 223, 0, 0, 223, 223, 223, 223, 223, 223, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 223, 223, 223, 223, 223, 223, 220, 220, 0, - 0, 0, 0, 0, 0, 0, 0, 224, 224, 0, - 0, 224, 224, 224, 224, 224, 224, 224, 0, 0, - 0, 0, 0, 0, 0, 0, 223, 223, 224, 224, - 224, 224, 224, 224, 176, 174, 185, 186, 0, 0, - 0, 0, 0, 0, 182, 171, 172, 0, 0, 180, - 178, 229, 179, 177, 181, 0, 183, 223, 223, 0, - 0, 0, 0, 224, 224, 0, 0, 173, 0, 175, - 229, 0, 0, 0, 0, 219, 219, 0, 0, 219, - 219, 219, 219, 219, 219, 219, 0, 0, 221, 0, - 0, 0, 0, 0, 224, 224, 219, 219, 219, 219, - 219, 219, 0, 0, 0, 0, 0, 221, 0, 0, - 0, 0, 218, 218, 0, 0, 218, 218, 218, 218, - 218, 218, 218, 0, 0, 0, 0, 0, 0, 0, - 0, 219, 219, 218, 218, 218, 218, 218, 218, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 222, 0, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 219, 219, 0, 0, 0, 222, 218, 218, - 0, 0, 0, 0, 0, 0, 221, 221, 0, 0, - 221, 221, 221, 221, 221, 220, 0, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 218, - 218, 0, 0, 0, 220, 0, 0, 0, 0, 142, - 142, 0, 0, 142, 142, 0, 142, 0, 142, 142, + 20, 170, 43, 43, 170, 94, 44, 45, 170, 187, + 301, 217, 89, 64, 69, 92, 43, 93, 43, 67, + 70, 43, 73, 182, 39, 77, 39, 389, 180, 178, + 39, 179, 177, 181, 178, 275, 100, 43, 182, 179, + 121, 73, 39, 180, 64, 64, 39, 124, 181, 304, + 18, 107, 436, 43, 184, 121, 272, 73, 413, 45, + 188, 85, 122, 54, 39, 122, 208, 155, 409, 39, + 155, 423, 457, 121, 227, 284, 2, 127, 248, 248, + 122, 209, 297, 105, 155, 155, 178, 62, 18, 305, + 285, 179, 190, 302, 35, 107, 137, 138, 95, 139, + 140, 141, 142, 143, 144, 1, 146, 147, 45, 35, + 314, 43, 248, 5, 122, 43, 182, 69, 248, 155, + 123, 180, 178, 198, 179, 177, 181, 105, 9, 306, + 313, 474, 410, 39, 476, 25, 293, 36, 478, 173, + 36, 175, 28, 318, 185, 186, 206, 246, 69, 69, + 43, 155, 207, 246, 267, 36, 26, 324, 325, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 239, 241, + 242, 243, 244, 245, 247, 248, 249, 250, 252, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 27, 38, 270, 38, 348, 377, 41, 38, 376, + 349, 245, 289, 276, 279, 152, 246, 246, 152, 18, + 38, 33, 151, 119, 38, 151, 119, 291, 292, 396, + 294, 122, 152, 152, 122, 185, 42, 198, 185, 151, + 151, 334, 101, 57, 58, 59, 60, 61, 18, 122, + 246, 182, 185, 185, 182, 308, 246, 309, 156, 47, + 344, 156, 124, 35, 50, 124, 35, 152, 311, 408, + 312, 52, 69, 69, 151, 156, 156, 67, 67, 43, + 124, 214, 266, 271, 71, 198, 245, 185, 221, 316, + 317, 29, 30, 214, 5, 99, 75, 214, 198, 152, + 215, 184, 78, 182, 323, 6, 151, 79, 184, 129, + 156, 189, 198, 198, 124, 63, 102, 43, 80, 185, + 81, 125, 103, 184, 125, 82, 118, 335, 98, 118, + 83, 2, 2, 2, 2, 2, 2, 184, 125, 125, + 184, 84, 156, 12, 13, 14, 15, 16, 17, 90, + 198, 2, 2, 10, 10, 198, 10, 10, 10, 10, + 10, 10, 10, 10, 148, 210, 11, 155, 86, 43, + 87, 222, 2, 125, 10, 10, 10, 10, 10, 10, + 12, 80, 211, 116, 96, 97, 32, 12, 148, 184, + 149, 185, 186, 246, 246, 245, 151, 398, 185, 186, + 46, 184, 194, 18, 195, 197, 196, 185, 186, 10, + 10, 183, 203, 185, 186, 280, 415, 418, 183, 420, + 451, 452, 421, 422, 12, 13, 14, 15, 16, 17, + 118, 119, 43, 183, 281, 282, 466, 298, 283, 10, + 10, 10, 415, 286, 438, 287, 295, 296, 299, 155, + 170, 170, 300, 303, 170, 170, 170, 170, 170, 170, + 170, 310, 415, 315, 12, 13, 14, 15, 16, 17, + 322, 170, 170, 170, 170, 170, 170, 233, 233, 469, + 207, 233, 233, 233, 233, 233, 233, 233, 326, 176, + 174, 185, 186, 202, 331, 333, 328, 336, 233, 233, + 233, 233, 233, 233, 170, 152, 170, 170, 337, 54, + 39, 183, 151, 342, 343, 327, 345, 330, 346, 128, + 351, 372, 373, 374, 379, 185, 401, 391, 393, 399, + 400, 233, 402, 233, 233, 405, 170, 170, 170, 5, + 5, 5, 5, 5, 5, 403, 404, 347, 156, 406, + 6, 6, 6, 6, 6, 6, 407, 412, 419, 5, + 5, 424, 425, 233, 233, 233, 427, 375, 431, 437, + 6, 6, 441, 432, 439, 130, 130, 442, 445, 130, + 130, 130, 130, 130, 130, 130, 448, 152, 152, 152, + 447, 460, 456, 458, 151, 151, 130, 130, 130, 130, + 130, 130, 449, 459, 468, 467, 470, 185, 185, 185, + 472, 471, 225, 225, 475, 43, 225, 225, 225, 225, + 225, 225, 225, 477, 464, 22, 10, 10, 10, 130, + 156, 130, 130, 225, 225, 225, 225, 225, 225, 319, + 57, 58, 59, 60, 61, 479, 20, 10, 12, 13, + 14, 15, 16, 17, 48, 244, 10, 143, 176, 115, + 143, 130, 130, 130, 176, 59, 124, 116, 225, 225, + 246, 61, 124, 160, 143, 143, 67, 95, 117, 57, + 58, 59, 60, 61, 124, 97, 120, 120, 182, 170, + 24, 99, 126, 180, 178, 320, 179, 177, 181, 225, + 225, 290, 49, 128, 321, 350, 48, 332, 392, 143, + 465, 173, 125, 175, 444, 395, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 170, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 201, 143, 277, 31, 170, 170, 274, 0, 0, 0, + 0, 63, 233, 182, 170, 0, 0, 0, 180, 178, + 0, 179, 177, 181, 55, 0, 0, 0, 0, 0, + 0, 233, 233, 0, 0, 0, 173, 0, 175, 0, + 227, 227, 0, 0, 227, 227, 227, 227, 227, 227, + 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 227, 227, 227, 227, 227, 227, 0, 0, 0, + 169, 0, 0, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 0, 12, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 227, 227, 0, 0, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 0, + 130, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 233, 233, 0, 0, 0, 0, 227, 227, 130, + 130, 0, 0, 0, 217, 217, 0, 0, 217, 217, + 217, 217, 217, 217, 217, 0, 0, 225, 0, 0, + 0, 0, 0, 0, 0, 217, 217, 217, 217, 217, + 217, 0, 0, 0, 0, 0, 225, 0, 0, 0, + 0, 219, 219, 0, 0, 219, 219, 219, 219, 219, + 219, 219, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 217, 219, 219, 219, 219, 219, 219, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 143, 0, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 217, 217, 184, 0, 0, 0, 219, 219, 0, + 0, 0, 0, 0, 0, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 0, 0, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 219, 219, + 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, + 0, 0, 220, 220, 220, 220, 220, 220, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 184, 220, + 220, 220, 220, 220, 220, 218, 218, 0, 0, 218, + 218, 218, 218, 218, 218, 218, 0, 0, 0, 0, + 0, 176, 174, 185, 186, 227, 218, 218, 218, 218, + 218, 218, 171, 172, 220, 220, 0, 0, 0, 0, + 0, 0, 0, 183, 227, 0, 0, 0, 0, 221, + 221, 0, 0, 221, 221, 221, 221, 221, 221, 221, + 0, 218, 218, 0, 0, 220, 220, 0, 0, 0, + 221, 221, 221, 221, 221, 221, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 176, 174, 185, 186, + 0, 0, 218, 218, 0, 0, 0, 171, 172, 0, + 0, 0, 0, 0, 0, 221, 221, 0, 183, 0, + 0, 0, 0, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 0, 0, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 221, 221, 217, 0, + 0, 0, 0, 216, 216, 0, 0, 216, 216, 216, + 216, 216, 216, 216, 0, 0, 219, 0, 0, 0, + 0, 0, 0, 0, 216, 216, 216, 216, 216, 216, + 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, + 222, 222, 0, 0, 222, 222, 222, 222, 222, 222, + 222, 0, 0, 0, 0, 0, 0, 0, 0, 216, + 216, 222, 222, 222, 222, 222, 222, 217, 217, 0, + 0, 217, 217, 217, 217, 217, 0, 0, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 216, 216, 0, 0, 0, 0, 222, 222, 0, 0, + 0, 0, 0, 0, 219, 219, 0, 0, 219, 219, + 219, 219, 219, 220, 0, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 222, 222, 0, + 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, + 218, 0, 0, 186, 0, 0, 186, 187, 0, 0, + 187, 0, 0, 0, 0, 0, 0, 0, 0, 218, + 186, 186, 0, 0, 187, 187, 0, 0, 142, 142, + 0, 0, 142, 142, 0, 142, 0, 142, 142, 0, + 0, 0, 0, 0, 221, 0, 0, 0, 0, 142, + 142, 142, 142, 142, 142, 186, 0, 0, 0, 187, + 0, 220, 220, 221, 0, 220, 220, 220, 220, 220, + 0, 0, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 142, 142, 0, 186, 218, 218, + 0, 187, 218, 218, 218, 218, 218, 0, 0, 218, + 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, + 218, 0, 0, 0, 0, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 142, 142, 142, 142, 142, 142, 222, 222, 0, 0, - 222, 222, 222, 222, 222, 223, 0, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 0, - 0, 0, 0, 0, 223, 142, 142, 0, 0, 0, - 0, 0, 0, 220, 220, 0, 0, 220, 220, 220, - 220, 220, 224, 0, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 142, 142, 0, 0, - 0, 224, 0, 0, 0, 0, 182, 170, 0, 0, - 0, 180, 178, 0, 179, 177, 181, 0, 0, 184, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, - 154, 175, 166, 223, 223, 0, 0, 223, 223, 223, - 223, 223, 0, 0, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 0, 0, 0, 0, - 0, 0, 0, 169, 0, 0, 0, 0, 0, 219, - 224, 224, 0, 0, 224, 224, 224, 224, 224, 0, - 0, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 168, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 218, 176, 174, 185, - 186, 0, 0, 0, 190, 0, 0, 190, 171, 172, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, - 0, 190, 190, 0, 0, 0, 0, 0, 219, 219, - 0, 0, 219, 219, 219, 219, 219, 0, 0, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 0, 0, 0, 0, 0, 190, 0, 0, 0, - 0, 0, 0, 0, 0, 218, 218, 0, 0, 218, - 218, 218, 218, 218, 142, 0, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 190, 0, - 0, 0, 0, 142, 0, 0, 0, 0, 0, 172, - 172, 0, 0, 0, 172, 172, 0, 172, 172, 172, - 0, 0, 0, 191, 0, 0, 191, 0, 0, 0, - 0, 0, 172, 172, 172, 172, 0, 0, 0, 0, - 191, 191, 0, 0, 182, 170, 0, 0, 212, 180, - 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, - 0, 0, 0, 172, 0, 0, 172, 173, 154, 175, - 166, 0, 142, 142, 0, 191, 142, 142, 142, 142, - 142, 184, 0, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 172, 172, 0, 0, 0, - 0, 169, 0, 0, 0, 0, 0, 191, 0, 0, - 182, 170, 0, 0, 0, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 0, 0, 193, 0, 0, 193, - 0, 168, 0, 173, 154, 175, 166, 0, 0, 0, - 0, 0, 0, 193, 193, 0, 0, 0, 192, 0, - 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 192, 192, 169, 0, 176, - 174, 185, 186, 155, 156, 157, 158, 160, 193, 0, - 171, 172, 167, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 0, 182, 170, 0, 0, 168, 180, 178, - 192, 179, 177, 181, 190, 0, 0, 0, 0, 0, - 193, 0, 0, 0, 0, 0, 173, 154, 175, 166, - 0, 182, 170, 0, 0, 0, 180, 178, 0, 179, - 177, 181, 192, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 173, 154, 175, 166, 182, 170, - 169, 0, 0, 180, 178, 0, 179, 177, 181, 0, - 0, 0, 0, 0, 0, 216, 0, 0, 216, 0, - 387, 173, 154, 175, 166, 0, 155, 0, 169, 155, - 168, 331, 216, 216, 172, 0, 190, 190, 190, 0, - 0, 0, 0, 155, 155, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 172, 169, 0, 0, 168, 332, - 0, 0, 0, 191, 0, 0, 0, 216, 0, 184, - 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, - 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 182, 170, 0, 0, 216, - 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, - 155, 0, 0, 0, 0, 0, 0, 415, 173, 154, - 175, 166, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 0, 12, 172, 172, 184, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 191, 191, 191, 0, 0, - 0, 0, 169, 0, 0, 0, 0, 176, 174, 185, - 186, 155, 156, 157, 158, 160, 193, 0, 171, 172, - 0, 152, 153, 159, 164, 163, 165, 161, 162, 183, - 0, 0, 168, 0, 0, 0, 0, 0, 192, 0, - 0, 0, 0, 0, 0, 0, 182, 170, 0, 0, - 427, 180, 178, 0, 179, 177, 181, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 184, 173, - 154, 175, 166, 176, 174, 185, 186, 155, 156, 157, - 158, 160, 0, 0, 171, 172, 213, 152, 153, 159, - 164, 163, 165, 161, 162, 183, 184, 0, 193, 193, - 193, 0, 0, 169, 0, 0, 0, 0, 0, 0, + 0, 0, 221, 221, 0, 0, 221, 221, 221, 221, + 221, 0, 0, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 0, 0, 216, 0, 0, + 0, 0, 0, 170, 170, 0, 0, 0, 170, 170, + 0, 170, 170, 170, 0, 222, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 170, 170, 170, 170, + 0, 0, 0, 0, 222, 0, 0, 0, 0, 182, + 170, 0, 0, 0, 180, 178, 0, 179, 177, 181, + 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, + 170, 0, 173, 154, 175, 166, 216, 216, 0, 0, + 216, 216, 216, 216, 216, 0, 0, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 170, + 170, 0, 0, 0, 0, 0, 169, 0, 0, 0, + 0, 0, 0, 222, 222, 0, 0, 222, 222, 222, + 222, 222, 0, 0, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 168, 0, 0, 0, + 0, 0, 0, 186, 0, 0, 0, 187, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 192, 192, 184, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 0, 0, 0, 0, 182, 170, 0, + 0, 212, 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 216, 176, 174, 185, 186, - 155, 156, 157, 158, 160, 0, 155, 171, 172, 0, - 152, 153, 159, 164, 163, 165, 161, 162, 183, 0, - 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, - 157, 158, 160, 0, 0, 171, 172, 0, 152, 153, - 159, 164, 163, 165, 161, 162, 183, 0, 0, 0, - 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, - 184, 0, 171, 172, 0, 152, 153, 159, 164, 163, - 165, 161, 162, 183, 0, 0, 0, 216, 216, 216, - 0, 0, 0, 0, 182, 170, 0, 0, 155, 180, + 173, 154, 175, 166, 0, 0, 0, 0, 0, 0, + 0, 0, 182, 170, 0, 0, 0, 180, 178, 0, + 179, 177, 181, 0, 0, 186, 186, 186, 0, 187, + 187, 187, 0, 0, 169, 173, 154, 175, 166, 0, + 0, 142, 142, 0, 0, 142, 142, 142, 142, 142, + 0, 0, 142, 142, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 168, 0, 0, 0, 0, 169, + 0, 0, 0, 0, 0, 0, 188, 0, 0, 188, + 189, 0, 0, 189, 191, 0, 0, 191, 170, 0, + 0, 0, 0, 188, 188, 0, 0, 189, 189, 168, + 0, 191, 191, 0, 0, 0, 0, 0, 170, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 184, 0, 0, 0, 188, 0, + 0, 0, 189, 0, 0, 0, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 182, 170, + 0, 0, 0, 180, 178, 0, 179, 177, 181, 0, + 188, 0, 0, 0, 189, 0, 0, 0, 191, 0, + 0, 173, 154, 175, 166, 0, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 0, 12, 170, 170, 0, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 0, + 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, + 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, + 160, 0, 0, 171, 172, 167, 152, 153, 159, 164, + 163, 165, 161, 162, 183, 168, 339, 0, 0, 0, + 0, 0, 0, 0, 0, 182, 170, 0, 0, 0, + 180, 178, 184, 179, 177, 181, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 154, + 175, 166, 0, 182, 0, 0, 0, 0, 180, 178, + 0, 179, 177, 181, 0, 0, 0, 184, 0, 0, + 0, 0, 0, 0, 0, 0, 173, 0, 175, 0, + 0, 0, 169, 0, 0, 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, 168, 340, 390, 173, 154, 175, 166, 0, + 176, 174, 185, 186, 155, 156, 157, 158, 160, 0, + 0, 171, 172, 0, 152, 153, 159, 164, 163, 165, + 161, 162, 183, 0, 0, 0, 188, 0, 0, 169, + 189, 0, 0, 0, 191, 176, 174, 185, 186, 155, + 156, 157, 158, 160, 0, 0, 171, 172, 213, 152, + 153, 159, 164, 163, 165, 161, 162, 183, 0, 168, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 170, 0, 0, 0, 180, 178, 0, 179, 177, 181, + 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, + 0, 414, 173, 154, 175, 166, 0, 182, 170, 0, + 0, 426, 180, 178, 0, 179, 177, 181, 188, 188, + 188, 0, 189, 189, 189, 0, 191, 191, 191, 0, + 173, 154, 175, 166, 182, 170, 169, 0, 0, 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 154, 175, - 166, 0, 0, 0, 0, 0, 0, 0, 0, 182, - 170, 0, 0, 430, 180, 178, 0, 179, 177, 181, + 166, 0, 0, 0, 169, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 169, 173, 154, 175, 166, 0, 0, 176, 174, + 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, + 184, 169, 171, 172, 168, 152, 153, 159, 164, 163, + 165, 161, 162, 183, 182, 170, 0, 0, 429, 180, + 178, 0, 179, 177, 181, 0, 0, 0, 184, 0, + 190, 168, 0, 190, 0, 0, 0, 173, 154, 175, + 166, 0, 0, 0, 0, 0, 0, 190, 190, 0, + 0, 0, 0, 0, 0, 182, 170, 0, 0, 430, + 180, 178, 0, 179, 177, 181, 0, 184, 0, 0, + 0, 169, 0, 0, 0, 0, 0, 0, 173, 154, + 175, 166, 190, 0, 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, 0, 0, 171, - 172, 184, 152, 153, 159, 164, 163, 165, 161, 162, - 183, 168, 0, 0, 0, 0, 169, 0, 0, 0, - 0, 0, 0, 0, 0, 182, 170, 0, 0, 431, - 180, 178, 0, 179, 177, 181, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 168, 0, 173, 154, - 175, 166, 0, 0, 0, 0, 0, 0, 0, 0, - 182, 170, 0, 0, 447, 180, 178, 0, 179, 177, - 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 169, 173, 154, 175, 166, 0, 0, 176, - 174, 185, 186, 155, 156, 157, 158, 160, 0, 0, - 171, 172, 0, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 168, 0, 0, 0, 0, 169, 0, 0, + 172, 168, 152, 153, 159, 164, 163, 165, 161, 162, + 183, 0, 169, 0, 190, 0, 176, 174, 185, 186, + 0, 0, 0, 0, 0, 182, 170, 171, 172, 446, + 180, 178, 0, 179, 177, 181, 0, 0, 183, 0, + 0, 0, 168, 0, 0, 0, 0, 0, 173, 154, + 175, 166, 0, 0, 0, 176, 174, 185, 186, 155, + 156, 157, 158, 160, 184, 0, 171, 172, 0, 152, + 153, 159, 164, 163, 165, 161, 162, 183, 182, 170, + 0, 0, 169, 180, 178, 0, 179, 177, 181, 0, + 0, 0, 184, 0, 0, 0, 0, 0, 0, 473, + 0, 173, 154, 175, 166, 0, 0, 0, 0, 0, + 0, 0, 168, 0, 0, 0, 0, 0, 0, 184, 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, 168, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 474, 0, 173, - 154, 175, 166, 0, 0, 0, 0, 0, 0, 0, - 0, 182, 170, 0, 0, 0, 180, 178, 0, 179, - 177, 181, 0, 0, 0, 0, 0, 0, 217, 0, - 0, 217, 0, 169, 173, 154, 175, 166, 0, 184, - 0, 0, 0, 0, 0, 217, 217, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 429, 0, - 0, 0, 0, 168, 0, 0, 0, 0, 169, 0, - 0, 0, 194, 0, 184, 194, 0, 0, 0, 0, - 217, 0, 0, 0, 0, 0, 0, 0, 0, 194, - 194, 0, 0, 0, 0, 0, 0, 0, 168, 0, + 0, 0, 0, 0, 0, 169, 0, 0, 428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 194, 0, 0, 176, 174, 185, - 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, - 184, 152, 153, 159, 164, 163, 165, 161, 162, 183, - 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, 158, - 160, 0, 0, 171, 172, 184, 152, 153, 159, 164, + 160, 0, 0, 171, 172, 168, 152, 153, 159, 164, 163, 165, 161, 162, 183, 0, 0, 0, 0, 0, + 176, 174, 185, 186, 155, 156, 157, 158, 160, 184, + 0, 171, 172, 0, 152, 153, 159, 164, 163, 165, + 161, 162, 183, 0, 0, 0, 0, 176, 174, 185, + 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, + 190, 152, 153, 159, 164, 163, 165, 161, 162, 183, + 184, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 173, 154, 175, + 166, 0, 0, 0, 0, 0, 0, 176, 174, 185, + 186, 155, 156, 157, 158, 160, 0, 0, 171, 172, + 0, 152, 153, 159, 164, 163, 165, 161, 162, 183, + 184, 169, 190, 190, 190, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 176, 174, + 185, 186, 155, 156, 157, 158, 160, 0, 0, 171, + 172, 168, 152, 153, 159, 164, 163, 165, 161, 162, + 183, 182, 170, 0, 0, 0, 180, 178, 0, 179, + 177, 181, 0, 184, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 154, 175, 166, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 173, 154, 175, 166, 0, 176, 174, - 185, 186, 155, 156, 157, 158, 160, 0, 195, 171, - 172, 195, 152, 153, 159, 164, 163, 165, 161, 162, - 183, 184, 0, 0, 0, 195, 195, 169, 0, 0, - 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, - 158, 160, 0, 0, 171, 172, 0, 152, 153, 159, - 164, 163, 165, 161, 162, 183, 184, 168, 0, 0, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 182, 170, 0, 0, 0, 180, 178, 217, 179, - 177, 181, 195, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 173, 154, 175, 166, 0, 176, - 174, 185, 186, 155, 156, 157, 158, 160, 0, 0, - 171, 172, 0, 152, 153, 159, 164, 163, 165, 161, - 162, 183, 194, 0, 0, 0, 196, 0, 169, 196, - 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, - 157, 158, 160, 196, 196, 171, 172, 0, 152, 153, - 159, 164, 163, 165, 161, 162, 183, 0, 168, 0, - 217, 217, 217, 209, 209, 0, 0, 209, 209, 209, - 209, 209, 209, 209, 0, 0, 0, 0, 196, 0, - 0, 0, 0, 0, 209, 209, 209, 209, 209, 209, - 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, - 210, 0, 0, 0, 194, 194, 194, 0, 0, 0, - 196, 210, 210, 210, 210, 210, 210, 211, 211, 209, - 209, 211, 211, 211, 211, 211, 211, 211, 0, 0, - 0, 0, 0, 0, 0, 184, 0, 0, 211, 211, - 211, 211, 211, 211, 0, 0, 210, 210, 0, 0, - 209, 209, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 207, 0, 0, 207, 0, 207, 207, 207, - 207, 0, 0, 211, 211, 0, 0, 210, 210, 0, - 0, 0, 207, 207, 207, 207, 207, 207, 195, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 176, 174, + 185, 186, 155, 156, 157, 158, 160, 0, 169, 171, + 172, 0, 152, 153, 159, 164, 163, 165, 161, 162, + 183, 182, 170, 0, 0, 0, 180, 178, 0, 179, + 177, 181, 0, 0, 0, 0, 0, 0, 168, 0, + 0, 0, 0, 0, 173, 154, 175, 166, 0, 0, + 0, 176, 174, 185, 186, 155, 156, 157, 158, 160, + 0, 0, 171, 172, 0, 152, 153, 159, 164, 163, + 165, 161, 162, 183, 182, 170, 0, 0, 169, 180, + 178, 0, 179, 177, 181, 0, 0, 0, 214, 0, + 0, 214, 0, 0, 0, 0, 0, 173, 0, 175, + 0, 0, 0, 0, 0, 214, 214, 0, 168, 0, + 0, 0, 0, 207, 207, 0, 0, 207, 207, 207, + 207, 207, 207, 207, 0, 0, 0, 0, 0, 184, + 0, 169, 0, 0, 207, 207, 207, 207, 207, 207, + 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 208, 208, + 0, 168, 208, 208, 208, 208, 208, 208, 208, 207, + 207, 0, 214, 54, 39, 0, 0, 0, 0, 208, + 208, 208, 208, 208, 208, 209, 209, 0, 0, 209, + 209, 209, 209, 209, 209, 209, 0, 0, 0, 0, + 207, 207, 0, 0, 0, 0, 209, 209, 209, 209, + 209, 209, 0, 0, 208, 208, 0, 176, 174, 185, + 186, 155, 156, 157, 158, 160, 184, 0, 171, 172, + 0, 152, 153, 159, 164, 163, 165, 161, 162, 183, + 0, 209, 209, 0, 0, 208, 208, 0, 0, 0, + 0, 0, 0, 0, 205, 0, 0, 205, 0, 205, + 205, 205, 205, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 209, 209, 205, 205, 205, 205, 205, 205, + 0, 0, 206, 0, 0, 206, 0, 206, 206, 206, + 206, 0, 0, 0, 0, 0, 184, 0, 0, 0, + 0, 0, 206, 206, 206, 206, 206, 206, 0, 205, + 205, 0, 0, 0, 176, 174, 185, 186, 155, 156, + 157, 158, 160, 0, 0, 171, 172, 0, 0, 153, + 159, 164, 163, 165, 161, 162, 183, 206, 206, 0, + 205, 205, 56, 57, 58, 59, 60, 61, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 211, 211, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 207, 207, 0, - 0, 0, 0, 176, 174, 185, 186, 155, 156, 157, - 158, 160, 0, 197, 171, 172, 197, 0, 153, 159, - 164, 163, 165, 161, 162, 183, 184, 0, 207, 207, - 197, 197, 0, 0, 0, 0, 0, 208, 0, 0, - 208, 0, 208, 208, 208, 208, 0, 0, 0, 0, - 195, 195, 195, 0, 0, 0, 0, 208, 208, 208, - 208, 208, 208, 0, 0, 197, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 206, 206, + 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, + 0, 0, 62, 0, 176, 174, 185, 186, 155, 156, + 157, 158, 160, 0, 0, 171, 172, 0, 0, 0, + 159, 164, 163, 165, 161, 162, 183, 207, 0, 0, + 0, 0, 0, 0, 0, 63, 0, 0, 215, 0, + 0, 215, 0, 0, 0, 0, 0, 0, 55, 0, + 0, 0, 0, 0, 0, 215, 215, 176, 174, 185, + 186, 0, 0, 0, 210, 0, 0, 210, 171, 172, + 210, 0, 208, 0, 0, 0, 0, 0, 0, 183, + 214, 214, 214, 0, 210, 210, 210, 210, 210, 210, + 215, 0, 0, 0, 0, 0, 207, 207, 0, 209, + 207, 207, 207, 207, 207, 0, 0, 207, 207, 207, + 207, 207, 207, 207, 207, 207, 207, 207, 192, 210, + 210, 192, 215, 0, 0, 0, 193, 0, 0, 193, + 0, 0, 0, 0, 0, 192, 192, 0, 0, 0, + 0, 208, 208, 193, 193, 208, 208, 208, 208, 208, + 210, 210, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 0, 0, 0, 0, 205, 209, 209, + 192, 0, 209, 209, 209, 209, 209, 0, 193, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, + 0, 0, 192, 197, 0, 0, 197, 0, 0, 197, + 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 197, 197, 0, 197, 0, 197, 0, + 0, 0, 0, 0, 0, 0, 205, 205, 0, 0, + 205, 205, 205, 205, 205, 0, 0, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 197, 197, + 0, 0, 0, 0, 206, 206, 0, 0, 206, 206, + 206, 206, 206, 0, 0, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 0, 0, 0, 197, + 197, 0, 0, 0, 199, 0, 0, 199, 0, 0, + 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 199, 199, 0, 199, 198, 199, + 0, 198, 0, 0, 198, 0, 0, 0, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 198, 198, + 0, 198, 200, 198, 0, 200, 0, 0, 200, 199, + 199, 0, 0, 0, 0, 0, 0, 210, 0, 0, + 0, 0, 200, 200, 0, 200, 212, 200, 0, 212, + 0, 0, 212, 198, 198, 0, 0, 0, 0, 0, + 199, 199, 0, 0, 0, 0, 212, 212, 0, 212, + 0, 212, 0, 0, 0, 0, 0, 200, 200, 0, + 0, 0, 0, 0, 198, 198, 0, 0, 192, 0, + 215, 215, 215, 0, 0, 0, 193, 0, 0, 0, + 0, 212, 212, 0, 0, 0, 210, 210, 200, 200, + 210, 210, 210, 210, 210, 0, 0, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 0, 0, + 0, 0, 212, 212, 0, 0, 0, 201, 0, 0, + 201, 0, 0, 201, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 201, 201, 0, + 201, 202, 201, 0, 202, 0, 0, 202, 0, 0, + 192, 192, 192, 0, 0, 0, 197, 0, 193, 193, + 193, 202, 202, 0, 202, 213, 202, 0, 213, 0, + 0, 0, 201, 201, 0, 0, 0, 0, 0, 0, + 0, 0, 213, 213, 0, 213, 0, 213, 0, 0, + 0, 0, 0, 0, 0, 0, 202, 202, 194, 0, + 0, 194, 0, 201, 201, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 194, 194, 213, 213, 0, + 0, 0, 0, 0, 0, 0, 0, 202, 202, 197, + 197, 197, 197, 197, 0, 0, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 199, 213, 213, + 194, 0, 0, 0, 0, 0, 211, 0, 0, 211, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 195, + 0, 198, 0, 211, 211, 0, 211, 0, 211, 0, + 0, 0, 194, 195, 195, 0, 0, 0, 0, 144, + 0, 0, 144, 0, 0, 200, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 144, 144, 211, 144, + 0, 144, 0, 0, 0, 0, 0, 0, 195, 212, + 199, 199, 199, 199, 199, 0, 0, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 0, 211, + 211, 144, 0, 0, 198, 198, 198, 198, 198, 0, + 195, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 0, 0, 0, 0, 0, 0, 200, 200, + 200, 200, 200, 144, 0, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 0, 0, 0, 0, + 0, 0, 212, 212, 212, 212, 212, 150, 0, 0, + 150, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 201, 0, 0, 0, 150, 150, 0, 150, 196, 150, + 0, 196, 203, 0, 0, 203, 0, 0, 204, 0, + 0, 204, 0, 0, 202, 196, 196, 0, 0, 203, + 203, 0, 0, 0, 0, 204, 204, 0, 0, 150, + 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 212, 0, 0, 212, 0, 0, 212, - 0, 0, 208, 208, 0, 0, 196, 197, 0, 0, - 0, 0, 0, 212, 212, 212, 212, 212, 212, 0, - 0, 0, 0, 0, 176, 174, 185, 186, 155, 156, - 157, 158, 160, 208, 208, 171, 172, 0, 0, 0, - 159, 164, 163, 165, 161, 162, 183, 209, 212, 212, - 0, 0, 199, 0, 0, 199, 0, 0, 199, 0, + 196, 0, 0, 0, 203, 0, 0, 0, 0, 0, + 204, 150, 0, 201, 201, 201, 201, 201, 194, 0, + 0, 0, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 0, 196, 0, 0, 0, 203, 202, 202, 202, + 202, 202, 204, 0, 0, 0, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 0, 0, 0, 213, 213, + 213, 213, 213, 0, 0, 0, 0, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 211, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 195, 0, 111, 0, + 0, 111, 0, 111, 0, 0, 0, 0, 0, 0, + 194, 194, 194, 0, 0, 0, 0, 111, 0, 144, + 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 199, 199, 210, 199, 0, 199, 0, 212, - 212, 0, 0, 0, 0, 0, 0, 0, 196, 196, - 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 211, 0, 0, 0, 0, 0, 199, 199, 0, - 0, 0, 0, 0, 0, 0, 209, 209, 0, 0, - 209, 209, 209, 209, 209, 0, 0, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 199, 199, - 0, 0, 0, 210, 210, 207, 0, 210, 210, 210, - 210, 210, 0, 0, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 0, 0, 0, 0, 0, - 211, 211, 0, 0, 211, 211, 211, 211, 211, 0, - 0, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, + 111, 0, 0, 0, 0, 0, 0, 0, 0, 211, + 211, 211, 211, 211, 0, 0, 0, 0, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 0, 195, 195, + 195, 111, 0, 111, 111, 0, 0, 0, 0, 0, + 0, 0, 144, 144, 144, 144, 144, 0, 0, 0, + 0, 144, 144, 144, 144, 144, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 197, 207, 207, 0, 0, 207, 207, - 207, 207, 207, 0, 0, 207, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, 0, 0, 0, 0, - 208, 0, 0, 0, 0, 201, 0, 0, 201, 0, - 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, - 198, 0, 0, 198, 0, 201, 201, 0, 201, 0, - 201, 0, 0, 0, 0, 0, 0, 198, 198, 0, - 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, - 0, 0, 0, 0, 0, 197, 197, 197, 0, 0, - 201, 201, 0, 0, 0, 0, 0, 0, 0, 208, - 208, 0, 198, 208, 208, 208, 208, 208, 0, 0, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 201, 201, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 198, 199, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 212, 212, 0, 0, 212, - 212, 212, 212, 212, 0, 0, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 0, 0, 0, - 0, 200, 0, 0, 200, 0, 0, 200, 0, 0, - 0, 0, 0, 156, 0, 0, 156, 0, 0, 0, - 0, 200, 200, 0, 200, 0, 200, 0, 0, 0, - 156, 156, 0, 0, 0, 0, 0, 0, 199, 199, - 199, 199, 199, 0, 0, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 200, 200, 202, 0, - 0, 202, 0, 0, 202, 156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, - 0, 202, 0, 202, 0, 0, 0, 200, 200, 0, - 0, 0, 0, 0, 0, 214, 0, 156, 214, 0, - 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 202, 202, 214, 214, 0, 214, 0, - 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 203, 0, 0, 203, - 0, 0, 203, 0, 202, 202, 0, 0, 0, 0, - 214, 214, 0, 0, 0, 0, 203, 203, 201, 203, - 0, 203, 0, 204, 0, 0, 204, 0, 0, 204, - 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 214, 214, 204, 204, 0, 204, 0, 204, 0, - 0, 203, 203, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 205, 0, 0, 205, 215, 0, 0, - 215, 0, 0, 0, 0, 0, 0, 0, 204, 204, - 205, 205, 203, 203, 215, 215, 0, 215, 0, 215, - 0, 201, 201, 201, 201, 201, 0, 0, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 204, - 204, 0, 198, 198, 198, 205, 0, 0, 213, 215, - 215, 213, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 213, 213, 0, 213, 144, - 213, 0, 144, 0, 0, 0, 0, 205, 0, 0, - 215, 215, 0, 0, 200, 0, 144, 144, 0, 144, - 0, 144, 150, 156, 0, 150, 0, 0, 0, 0, - 213, 0, 206, 0, 0, 206, 0, 0, 0, 150, - 150, 0, 150, 0, 150, 0, 0, 0, 0, 206, - 206, 144, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 213, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 202, 0, 0, 150, 0, 0, 0, 0, 0, - 0, 0, 0, 144, 206, 0, 0, 200, 200, 200, - 200, 200, 0, 0, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 156, 150, 0, 214, 0, - 0, 0, 0, 0, 0, 0, 206, 151, 0, 0, - 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 151, 151, 0, 0, 0, 0, - 0, 0, 0, 0, 202, 202, 202, 202, 202, 203, - 0, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, - 0, 214, 214, 214, 214, 214, 0, 0, 0, 0, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 0, - 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 205, 0, 0, 0, 215, 0, 0, - 0, 0, 203, 203, 203, 203, 203, 0, 0, 0, - 0, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, - 204, 204, 204, 204, 0, 0, 0, 0, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 0, 213, 0, + 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, + 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 107, 0, 0, 107, 0, 107, 196, 0, + 0, 0, 203, 0, 0, 0, 0, 0, 204, 0, + 0, 107, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, - 215, 215, 215, 215, 215, 205, 205, 205, 0, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 0, 0, - 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 213, 213, 213, 213, 213, 0, 0, 0, 0, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 0, - 0, 0, 144, 144, 144, 144, 144, 0, 0, 0, - 0, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 0, 0, 0, 0, 0, 150, 150, 150, 150, 150, - 0, 0, 0, 0, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 111, 206, 206, 206, 151, 0, 0, - 111, 0, 0, 111, 0, 111, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, - 0, 0, 0, 0, 107, 0, 0, 107, 0, 107, - 0, 111, 111, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 0, 0, 0, 107, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 151, 94, 0, 111, 0, 111, 111, 0, 89, 0, - 0, 92, 0, 93, 0, 107, 107, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 359, 0, 0, - 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 94, 0, 0, 107, 0, 107, - 107, 89, 0, 0, 92, 0, 93, 0, 0, 54, - 39, 0, 0, 0, 0, 0, 0, 0, 0, 91, - 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, - 0, 360, 0, 0, 95, 89, 0, 0, 92, 0, - 93, 0, 54, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 236, 0, 0, 100, + 0, 0, 0, 107, 107, 0, 0, 0, 0, 0, + 150, 150, 150, 150, 150, 0, 0, 0, 0, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 111, 111, + 111, 111, 111, 111, 0, 107, 0, 107, 107, 0, + 196, 196, 196, 0, 203, 203, 203, 0, 0, 0, + 204, 204, 204, 0, 0, 0, 0, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 89, 0, 0, + 92, 0, 93, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 365, 0, 0, 0, + 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 111, 0, 0, 0, 0, 0, 111, 111, + 111, 111, 0, 0, 111, 0, 0, 0, 54, 39, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 111, + 111, 111, 0, 111, 111, 111, 0, 0, 111, 111, + 111, 111, 111, 0, 0, 0, 0, 0, 0, 0, + 366, 0, 0, 95, 94, 0, 0, 0, 0, 0, + 0, 89, 0, 0, 92, 0, 93, 0, 0, 0, + 111, 111, 107, 107, 107, 107, 107, 107, 0, 91, + 0, 0, 0, 94, 0, 100, 0, 0, 0, 0, + 89, 0, 0, 92, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, + 0, 238, 54, 39, 100, 0, 89, 0, 0, 92, + 0, 93, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, + 100, 54, 39, 0, 0, 107, 107, 95, 0, 0, + 0, 0, 107, 107, 107, 107, 0, 0, 107, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 39, 0, + 0, 0, 107, 107, 107, 107, 95, 107, 107, 107, + 0, 0, 107, 0, 107, 107, 107, 101, 57, 58, + 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, - 111, 111, 111, 111, 111, 111, 54, 39, 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, 0, 0, 0, 0, 0, + 63, 102, 0, 0, 0, 0, 0, 103, 354, 355, + 356, 0, 0, 98, 0, 0, 0, 0, 0, 0, + 0, 101, 57, 58, 59, 60, 61, 357, 358, 359, + 360, 0, 361, 362, 90, 0, 0, 363, 0, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 107, 107, 107, 107, 107, 107, - 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, + 101, 57, 58, 59, 60, 61, 0, 0, 0, 0, + 0, 94, 0, 0, 0, 0, 0, 0, 89, 96, + 97, 92, 0, 93, 99, 94, 101, 57, 58, 59, + 60, 61, 89, 0, 0, 92, 94, 93, 0, 251, + 0, 0, 100, 89, 63, 102, 92, 0, 93, 0, + 0, 103, 0, 99, 0, 0, 100, 98, 0, 0, + 0, 0, 0, 0, 253, 0, 0, 100, 0, 54, + 39, 0, 0, 63, 102, 0, 0, 0, 90, 99, + 103, 0, 0, 54, 39, 0, 98, 0, 0, 0, + 0, 0, 0, 0, 54, 39, 0, 0, 0, 63, + 102, 0, 0, 0, 95, 0, 103, 90, 0, 0, + 0, 0, 98, 96, 97, 0, 0, 0, 95, 0, + 0, 0, 0, 0, 94, 0, 0, 0, 0, 95, + 0, 89, 0, 90, 92, 0, 93, 0, 0, 0, + 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 111, 111, 0, 0, 0, 0, 0, - 111, 111, 111, 111, 0, 0, 111, 0, 101, 57, - 58, 59, 60, 61, 0, 0, 0, 107, 0, 0, - 111, 111, 111, 111, 0, 111, 111, 111, 0, 0, - 111, 111, 111, 111, 111, 0, 0, 107, 107, 0, - 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, - 107, 101, 57, 58, 59, 60, 61, 0, 0, 0, - 0, 99, 111, 111, 107, 107, 107, 107, 0, 107, - 107, 107, 0, 0, 107, 0, 107, 107, 107, 0, - 0, 63, 102, 0, 0, 0, 0, 0, 103, 348, - 349, 350, 0, 0, 98, 101, 57, 58, 59, 60, - 61, 0, 0, 0, 99, 0, 107, 107, 351, 352, - 353, 354, 0, 355, 356, 90, 0, 0, 357, 0, - 358, 0, 0, 0, 63, 102, 94, 0, 0, 0, - 0, 103, 0, 89, 0, 0, 92, 98, 93, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 94, - 96, 97, 0, 0, 238, 0, 89, 100, 90, 92, - 0, 93, 0, 0, 94, 0, 0, 0, 63, 102, - 0, 89, 0, 0, 92, 103, 93, 249, 0, 0, - 100, 98, 0, 0, 54, 39, 0, 0, 0, 0, - 0, 0, 251, 96, 97, 100, 0, 0, 0, 0, - 0, 0, 90, 0, 0, 0, 0, 54, 39, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 54, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, - 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 95, 94, 0, - 0, 0, 0, 0, 0, 89, 0, 0, 92, 0, - 93, 0, 94, 0, 0, 0, 0, 0, 0, 89, - 0, 0, 92, 0, 93, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 39, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 57, + 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 57, 58, 59, 60, 61, 0, 0, + 0, 0, 0, 101, 57, 58, 59, 60, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 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, 99, 0, 0, 0, 0, + 0, 63, 102, 0, 0, 0, 99, 0, 103, 0, + 0, 0, 0, 0, 98, 136, 102, 0, 0, 0, + 0, 0, 103, 0, 0, 0, 63, 102, 98, 0, + 0, 0, 0, 103, 0, 90, 0, 0, 0, 98, + 0, 101, 57, 58, 59, 60, 61, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 101, 57, 58, 59, 60, 61, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 57, 58, 59, - 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 57, 58, 59, 60, 61, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, + 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, + 0, 0, 0, 0, 99, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 63, 102, 0, 99, - 0, 0, 0, 103, 0, 0, 0, 0, 0, 98, - 0, 0, 0, 0, 99, 0, 0, 0, 0, 63, - 102, 0, 0, 0, 0, 0, 103, 0, 0, 0, - 90, 0, 98, 0, 63, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 63, 102, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 0, 90, 0, 135, 57, 58, 59, 60, - 61, 0, 0, 0, 0, 96, 97, 0, 90, 101, - 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 0, 0, 0, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 99, 0, 0, 0, 0, 0, 136, 102, - 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, - 0, 98, 63, 102, 0, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, - 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, + 0, 0, 0, 96, 97, ); protected static $yyCheck = array(33, - 92, 194, 36, 37, 340, 150, 36, 37, 145, 125, - 41, 92, 41, 47, 123, 44, 50, 33, 52, 125, - 50, 55, 52, 92, 40, 55, 6, 43, 260, 45, - 260, 41, 41, 37, 59, 312, 59, 71, 42, 123, - 426, 71, 44, 47, 78, 79, 37, 38, 64, 320, - 59, 42, 43, 87, 45, 46, 47, 87, 312, 321, - 446, 40, 260, 41, 92, 92, 44, 212, 300, 60, - 300, 62, 37, 44, 267, 91, 92, 42, 43, 41, - 45, 46, 47, 93, 37, 38, 260, 423, 59, 42, - 43, 93, 45, 46, 47, 60, 380, 62, 123, 334, - 123, 41, 300, 94, 44, 340, 92, 60, 340, 62, - 126, 145, 91, 37, 41, 93, 76, 44, 42, 43, - 76, 45, 46, 47, 360, 402, 403, 47, 59, 89, - 90, 93, 92, 93, 94, 95, 96, 97, 59, 99, - 100, 94, 340, 427, 123, 422, 430, 5, 402, 403, - 184, 260, 91, 93, 184, 35, 116, 302, 78, 79, - 120, 397, 44, 64, 120, 449, 93, 25, 260, 71, - 41, 124, 41, 44, 410, 44, 321, 59, 462, 260, - 334, 39, 375, 93, 468, 87, 340, 44, 59, 58, - 59, 260, 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, 183, 93, 35, 41, 311, 208, 44, - 310, 340, 260, 260, 194, 471, 196, 197, 474, 310, - 41, 333, 478, 44, 260, 261, 262, 263, 264, 265, - 210, 211, 41, 213, 391, 44, 125, 373, 374, 340, - 220, 311, 41, 41, 333, 44, 44, 373, 374, 58, - 59, 340, 44, 123, 41, 40, 236, 44, 238, 58, - 59, 59, 410, 41, 61, 41, 44, 59, 44, 249, - 41, 251, 59, 44, 41, 41, 40, 313, 44, 333, - 58, 59, 58, 59, 93, 333, 266, 267, 312, 35, - 270, 271, 340, 61, 93, 125, 41, 333, 334, 279, - 44, 312, 40, 41, 340, 285, 93, 300, 301, 123, - 346, 40, 41, 293, 294, 93, 125, 93, 35, 373, - 402, 403, 300, 301, 35, 305, 125, 312, 44, 373, - 374, 367, 40, 332, 423, 35, 40, 391, 410, 312, - 93, 78, 79, 40, 260, 325, 44, 125, 37, 38, - 330, 40, 41, 42, 43, 44, 45, 46, 47, 410, - 221, 410, 300, 301, 44, 340, 402, 403, 312, 58, - 59, 60, 61, 62, 63, 41, 44, 41, 402, 403, - 280, 281, 282, 283, 284, 285, 61, 423, 260, 400, - 401, 402, 403, 40, 61, 375, 334, 377, 422, 40, - 411, 412, 340, 457, 93, 94, 41, 457, 125, 58, - 44, 422, 40, 40, 340, 400, 401, 402, 403, 399, - 400, 41, 402, 321, 40, 405, 406, 400, 401, 402, - 403, 41, 93, 41, 123, 124, 125, 422, 411, 412, - 41, 40, 331, 41, 123, 41, 426, 340, 428, 422, - 280, 281, 282, 283, 284, 285, 41, 41, 402, 403, - 44, 44, 125, 37, 38, 123, 446, 41, 42, 43, - 44, 45, 46, 47, 58, 59, 58, 340, 422, 40, - 341, 40, 40, 463, 58, 59, 60, 61, 62, 63, - 37, 38, 59, 59, 41, 42, 43, 44, 45, 46, - 47, 40, 40, 125, 59, 335, 361, 125, 369, 93, - 371, 58, 59, 60, 61, 62, 63, 91, 59, 93, - 94, 40, 331, 125, 413, 414, 415, 344, 91, 92, - 340, 123, 331, 394, 280, 281, 282, 283, 284, 285, - 413, 125, 41, 59, 91, 371, 93, 94, 40, 123, - 124, 125, 59, 331, 300, 301, 280, 281, 282, 283, - 284, 285, 41, 280, 281, 282, 283, 284, 285, 280, - 281, 282, 283, 284, 285, 321, 123, 124, 125, 340, - 280, 281, 282, 283, 284, 285, 58, 37, 38, 300, - 301, 41, 42, 43, 44, 45, 46, 47, 300, 301, - 300, 301, 125, 41, 413, 414, 415, 340, 58, 59, - 60, 61, 62, 63, 413, 414, 415, 123, 335, 93, - 125, 310, 311, 312, 260, 261, 262, 263, 264, 265, - 123, 41, 334, 123, 123, 413, 414, 415, 340, 93, - 41, 91, 331, 93, 94, 41, 91, 92, 41, 58, - 41, 340, 340, 41, 93, 123, 41, 41, 125, 59, - 59, 41, 125, 41, 125, 7, 86, 282, 208, 281, - 42, 41, 84, 123, 124, 125, 456, 373, 364, 436, - 337, 298, 196, 120, 37, 38, 23, -1, 41, 42, - 43, 44, 45, 46, 47, 193, -1, 260, 261, 262, - 263, 264, 265, 220, -1, 58, 59, 60, 61, 62, - 63, 400, 401, 402, 403, 404, 405, 406, 407, 408, - -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, -1, -1, 300, 312, -1, - 93, 94, -1, -1, -1, -1, -1, 331, -1, 266, - -1, -1, -1, -1, -1, -1, -1, 331, 332, -1, - -1, -1, 279, -1, -1, 312, -1, -1, -1, -1, - 333, 124, 125, -1, -1, -1, 293, 294, -1, -1, - -1, 37, 38, 346, 331, 332, 42, 43, -1, 45, + 6, 41, 36, 37, 44, 33, 36, 37, 41, 40, + 340, 145, 40, 47, 125, 43, 50, 45, 52, 125, + 50, 55, 52, 37, 92, 55, 92, 366, 42, 43, + 92, 45, 46, 47, 41, 194, 64, 71, 37, 41, + 260, 71, 92, 42, 78, 79, 92, 260, 47, 260, + 123, 76, 425, 87, 312, 41, 123, 87, 397, 44, + 91, 71, 41, 91, 92, 44, 44, 41, 59, 59, + 44, 410, 445, 59, 150, 44, 35, 87, 300, 301, + 300, 59, 220, 76, 58, 59, 93, 300, 35, 300, + 59, 93, 123, 423, 44, 120, 89, 90, 126, 92, + 93, 94, 95, 96, 97, 320, 99, 100, 93, 59, + 269, 145, 334, 321, 93, 149, 37, 47, 340, 93, + 340, 42, 43, 116, 45, 46, 47, 120, 260, 340, + 268, 470, 123, 123, 473, 92, 212, 41, 477, 60, + 44, 62, 91, 281, 402, 403, 334, 334, 78, 79, + 184, 125, 340, 340, 184, 59, 59, 295, 296, 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, + 183, 59, 260, 260, 260, 333, 41, 93, 260, 44, + 338, 194, 208, 196, 197, 41, 300, 301, 44, 35, + 260, 64, 41, 41, 260, 44, 44, 210, 211, 378, + 213, 41, 58, 59, 44, 41, 44, 220, 44, 58, + 59, 307, 260, 261, 262, 263, 264, 265, 311, 59, + 334, 41, 58, 59, 44, 238, 340, 240, 41, 40, + 326, 44, 41, 41, 310, 44, 44, 93, 251, 393, + 253, 310, 373, 374, 93, 58, 59, 373, 374, 303, + 59, 333, 340, 340, 311, 268, 269, 93, 340, 272, + 273, 300, 301, 333, 35, 313, 123, 333, 281, 125, + 340, 312, 61, 93, 287, 35, 125, 61, 312, 125, + 93, 332, 295, 296, 93, 333, 334, 341, 40, 125, + 410, 41, 340, 312, 44, 41, 41, 310, 346, 44, + 41, 280, 281, 282, 283, 284, 285, 41, 58, 59, + 44, 44, 125, 280, 281, 282, 283, 284, 285, 367, + 333, 300, 301, 37, 38, 338, 40, 41, 42, 43, + 44, 45, 46, 47, 40, 41, 5, 331, 123, 393, + 44, 423, 321, 93, 58, 59, 60, 61, 62, 63, + 410, 40, 41, 40, 402, 403, 25, 410, 40, 93, + 40, 402, 403, 300, 301, 378, 410, 380, 402, 403, + 39, 312, 44, 35, 93, 423, 44, 402, 403, 93, + 94, 422, 260, 402, 403, 41, 399, 400, 422, 402, + 373, 374, 405, 406, 280, 281, 282, 283, 284, 285, + 78, 79, 456, 422, 44, 41, 456, 221, 61, 123, + 124, 125, 425, 260, 427, 61, 40, 40, 340, 413, + 37, 38, 41, 44, 41, 42, 43, 44, 45, 46, + 47, 58, 445, 40, 280, 281, 282, 283, 284, 285, + 40, 58, 59, 60, 61, 62, 63, 37, 38, 462, + 340, 41, 42, 43, 44, 45, 46, 47, 41, 400, + 401, 402, 403, 125, 340, 40, 321, 41, 58, 59, + 60, 61, 62, 63, 91, 331, 93, 94, 93, 91, + 92, 422, 331, 41, 41, 299, 40, 301, 123, 335, + 340, 41, 41, 41, 123, 331, 383, 125, 58, 40, + 40, 91, 40, 93, 94, 40, 123, 124, 125, 280, + 281, 282, 283, 284, 285, 59, 59, 331, 331, 40, + 280, 281, 282, 283, 284, 285, 125, 59, 361, 300, + 301, 125, 59, 123, 124, 125, 40, 351, 125, 426, + 300, 301, 429, 344, 340, 37, 38, 123, 59, 41, + 42, 43, 44, 45, 46, 47, 41, 413, 414, 415, + 413, 448, 40, 59, 413, 414, 58, 59, 60, 61, + 62, 63, 371, 340, 461, 41, 58, 413, 414, 415, + 467, 340, 37, 38, 41, 93, 41, 42, 43, 44, + 45, 46, 47, 123, 125, 123, 310, 311, 312, 91, + 413, 93, 94, 58, 59, 60, 61, 62, 63, 260, + 261, 262, 263, 264, 265, 125, 123, 331, 280, 281, + 282, 283, 284, 285, 41, 123, 340, 41, 93, 41, + 44, 123, 124, 125, 41, 41, 58, 41, 93, 94, + 340, 41, 93, 123, 58, 59, 125, 41, 260, 261, + 262, 263, 264, 265, 59, 125, 59, 41, 37, 38, + 7, 125, 86, 42, 43, 283, 45, 46, 47, 124, + 125, 208, 42, 335, 284, 341, 41, 303, 370, 93, + 455, 60, 84, 62, 435, 376, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 312, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 120, 125, 196, 23, 331, 332, 193, -1, -1, -1, + -1, 333, 312, 37, 38, -1, -1, -1, 42, 43, + -1, 45, 46, 47, 346, -1, -1, -1, -1, -1, + -1, 331, 332, -1, -1, -1, 60, -1, 62, -1, + 37, 38, -1, -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, + 94, -1, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, -1, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 93, 94, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + 312, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, -1, -1, -1, -1, 124, 125, 331, + 332, -1, -1, -1, 37, 38, -1, -1, 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, -1, -1, -1, + -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, -1, 62, -1, 325, -1, - -1, -1, -1, 330, -1, 260, 261, 262, 263, 264, - 265, -1, -1, -1, -1, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + 93, 94, 58, 59, 60, 61, 62, 63, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 331, -1, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 124, 125, 312, -1, -1, -1, 93, 94, -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, 422, 124, 125, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 312, 58, + 59, 60, 61, 62, 63, 37, 38, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, + -1, 400, 401, 402, 403, 312, 58, 59, 60, 61, + 62, 63, 411, 412, 93, 94, -1, -1, -1, -1, + -1, -1, -1, 422, 331, -1, -1, -1, -1, 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, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 400, 401, 402, 403, + -1, -1, 124, 125, -1, -1, -1, 411, 412, -1, + -1, -1, -1, -1, -1, 93, 94, -1, 422, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 312, -1, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, - -1, 331, 332, -1, -1, -1, 37, 38, 333, -1, - 41, 42, 43, 44, 45, 46, 47, -1, -1, -1, - -1, 346, -1, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, + 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 124, 125, 331, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 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, - -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 124, 125, -1, -1, -1, 331, 93, - 94, -1, -1, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + 44, 45, 46, 47, -1, -1, 312, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, 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, -1, 411, 412, + 94, 58, 59, 60, 61, 62, 63, 400, 401, -1, + -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 124, 125, -1, -1, -1, -1, 93, 94, -1, -1, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, 61, 62, 63, 124, 125, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, - -1, 41, 42, 43, 44, 45, 46, 47, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 58, 59, - 60, 61, 62, 63, 400, 401, 402, 403, -1, -1, - -1, -1, -1, -1, 37, 411, 412, -1, -1, 42, - 43, 312, 45, 46, 47, -1, 422, 124, 125, -1, - -1, -1, -1, 93, 94, -1, -1, 60, -1, 62, - 331, -1, -1, -1, -1, 37, 38, -1, -1, 41, - 42, 43, 44, 45, 46, 47, -1, -1, 312, -1, - -1, -1, -1, -1, 124, 125, 58, 59, 60, 61, - 62, 63, -1, -1, -1, -1, -1, 331, -1, -1, - -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, - 45, 46, 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, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 124, 125, -1, -1, -1, 331, 93, 94, - -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, - 404, 405, 406, 407, 408, 312, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 124, - 125, -1, -1, -1, 331, -1, -1, -1, -1, 37, - 38, -1, -1, 41, 42, -1, 44, -1, 46, 47, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 58, 59, 60, 61, 62, 63, 400, 401, -1, -1, - 404, 405, 406, 407, 408, 312, -1, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, - -1, -1, -1, -1, 331, 93, 94, -1, -1, -1, - -1, -1, -1, 400, 401, -1, -1, 404, 405, 406, - 407, 408, 312, -1, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 124, 125, -1, -1, - -1, 331, -1, -1, -1, -1, 37, 38, -1, -1, - -1, 42, 43, -1, 45, 46, 47, -1, -1, 312, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - 61, 62, 63, 400, 401, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, - -1, -1, -1, 94, -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, 422, 124, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 331, 400, 401, 402, - 403, -1, -1, -1, 41, -1, -1, 44, 411, 412, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 422, - -1, 58, 59, -1, -1, -1, -1, -1, 400, 401, - -1, -1, 404, 405, 406, 407, 408, -1, -1, 411, + -1, -1, -1, -1, 400, 401, -1, -1, 404, 405, + 406, 407, 408, 312, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 124, 125, -1, + -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + 312, -1, -1, 41, -1, -1, 44, 41, -1, -1, + 44, -1, -1, -1, -1, -1, -1, -1, -1, 331, + 58, 59, -1, -1, 58, 59, -1, -1, 37, 38, + -1, -1, 41, 42, -1, 44, -1, 46, 47, -1, + -1, -1, -1, -1, 312, -1, -1, -1, -1, 58, + 59, 60, 61, 62, 63, 93, -1, -1, -1, 93, + -1, 400, 401, 331, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 93, 94, -1, 125, 400, 401, + -1, 125, 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, -1, -1, -1, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, 404, - 405, 406, 407, 408, 312, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 125, -1, - -1, -1, -1, 331, -1, -1, -1, -1, -1, 37, + 422, -1, -1, -1, -1, 124, 125, -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, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, -1, -1, 331, -1, -1, + -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, + -1, 45, 46, 47, -1, 312, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 63, + -1, -1, -1, -1, 331, -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, - -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, - -1, -1, 60, 61, 62, 63, -1, -1, -1, -1, - 58, 59, -1, -1, 37, 38, -1, -1, 41, 42, - 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, - -1, -1, -1, 91, -1, -1, 94, 60, 61, 62, - 63, -1, 400, 401, -1, 93, 404, 405, 406, 407, - 408, 312, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 123, 124, -1, -1, -1, - -1, 94, -1, -1, -1, -1, -1, 125, -1, -1, - 37, 38, -1, -1, -1, 42, 43, -1, 45, 46, - 47, -1, -1, -1, -1, -1, 41, -1, -1, 44, - -1, 124, -1, 60, 61, 62, 63, -1, -1, -1, - -1, -1, -1, 58, 59, -1, -1, -1, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, 94, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 93, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, -1, 37, 38, -1, -1, 124, 42, 43, - 93, 45, 46, 47, 331, -1, -1, -1, -1, -1, - 125, -1, -1, -1, -1, -1, 60, 61, 62, 63, - -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, - 46, 47, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, 37, 38, - 94, -1, -1, 42, 43, -1, 45, 46, 47, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, - 59, 60, 61, 62, 63, -1, 41, -1, 94, 44, - 124, 125, 58, 59, 312, -1, 413, 414, 415, -1, - -1, -1, -1, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 332, 94, -1, -1, 124, 125, - -1, -1, -1, 331, -1, -1, -1, 93, -1, 312, - -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 38, -1, -1, 125, - 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, - 125, -1, -1, -1, -1, -1, -1, 59, 60, 61, - 62, 63, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, 410, 411, 412, 312, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 413, 414, 415, -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, 420, 421, 422, - -1, -1, 124, -1, -1, -1, -1, -1, 331, -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, -1, 312, 60, - 61, 62, 63, 400, 401, 402, 403, 404, 405, 406, + -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, + 94, -1, 60, 61, 62, 63, 400, 401, -1, -1, + 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 123, + 124, -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, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 312, -1, 413, 414, - 415, -1, -1, 94, -1, -1, -1, -1, -1, -1, + 417, 418, 419, 420, 421, 422, 124, -1, -1, -1, + -1, -1, -1, 331, -1, -1, -1, 331, -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, 37, 38, -1, + -1, 41, 42, 43, -1, 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 413, 414, 415, 312, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 124, -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, 46, 47, -1, -1, 413, 414, 415, -1, 413, + 414, 415, -1, -1, 94, 60, 61, 62, 63, -1, + -1, 400, 401, -1, -1, 404, 405, 406, 407, 408, + -1, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 124, -1, -1, -1, -1, 94, + -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, + 41, -1, -1, 44, 41, -1, -1, 44, 312, -1, + -1, -1, -1, 58, 59, -1, -1, 58, 59, 124, + -1, 58, 59, -1, -1, -1, -1, -1, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 331, 400, 401, 402, 403, - 404, 405, 406, 407, 408, -1, 331, 411, 412, -1, + -1, -1, -1, -1, 312, -1, -1, -1, 93, -1, + -1, -1, 93, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, -1, -1, 42, 43, -1, 45, 46, 47, -1, + 125, -1, -1, -1, 125, -1, -1, -1, 125, -1, + -1, 60, 61, 62, 63, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, -1, 410, 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, -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, 422, -1, -1, -1, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 312, -1, 411, 412, -1, 414, 415, 416, 417, 418, - 419, 420, 421, 422, -1, -1, -1, 413, 414, 415, - -1, -1, -1, -1, 37, 38, -1, -1, 413, 42, + -1, -1, -1, -1, -1, 94, -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, 422, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, 37, 38, -1, -1, -1, + 42, 43, 312, 45, 46, 47, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, + 62, 63, -1, 37, -1, -1, -1, -1, 42, 43, + -1, 45, 46, 47, -1, -1, -1, 312, -1, -1, + -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, + -1, -1, 94, -1, -1, -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, 124, 125, 59, 60, 61, 62, 63, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, -1, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, 422, -1, -1, -1, 331, -1, -1, 94, + 331, -1, -1, -1, 331, 400, 401, 402, 403, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, -1, 124, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 38, -1, -1, -1, 42, 43, -1, 45, 46, 47, + -1, -1, -1, 312, -1, -1, -1, -1, -1, -1, + -1, 59, 60, 61, 62, 63, -1, 37, 38, -1, + -1, 41, 42, 43, -1, 45, 46, 47, 413, 414, + 415, -1, 413, 414, 415, -1, 413, 414, 415, -1, + 60, 61, 62, 63, 37, 38, 94, -1, -1, 42, 43, -1, 45, 46, 47, -1, -1, -1, -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, 41, 42, 43, -1, 45, 46, 47, + 63, -1, -1, -1, 94, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 94, 60, 61, 62, 63, -1, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, - 412, 312, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 124, -1, -1, -1, -1, 94, -1, -1, -1, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 312, 94, 411, 412, 124, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 37, 38, -1, -1, 41, 42, + 43, -1, 45, 46, 47, -1, -1, -1, 312, -1, + 41, 124, -1, 44, -1, -1, -1, 60, 61, 62, + 63, -1, -1, -1, -1, -1, -1, 58, 59, -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, 124, -1, 60, 61, - 62, 63, -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, -1, 94, 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, 422, 124, -1, -1, -1, -1, 94, -1, -1, + 42, 43, -1, 45, 46, 47, -1, 312, -1, -1, + -1, 94, -1, -1, -1, -1, -1, -1, 60, 61, + 62, 63, 93, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, -1, 411, + 412, 124, 414, 415, 416, 417, 418, 419, 420, 421, + 422, -1, 94, -1, 125, -1, 400, 401, 402, 403, + -1, -1, -1, -1, -1, 37, 38, 411, 412, 41, + 42, 43, -1, 45, 46, 47, -1, -1, 422, -1, + -1, -1, 124, -1, -1, -1, -1, -1, 60, 61, + 62, 63, -1, -1, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 312, -1, 411, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 37, 38, + -1, -1, 94, 42, 43, -1, 45, 46, 47, -1, + -1, -1, 312, -1, -1, -1, -1, -1, -1, 58, + -1, 60, 61, 62, 63, -1, -1, -1, -1, -1, + -1, -1, 124, -1, -1, -1, -1, -1, -1, 312, -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, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 58, -1, 60, - 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, - 46, 47, -1, -1, -1, -1, -1, -1, 41, -1, - -1, 44, -1, 94, 60, 61, 62, 63, -1, 312, - -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, - -1, -1, -1, 124, -1, -1, -1, -1, 94, -1, - -1, -1, 41, -1, 312, 44, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, -1, -1, -1, -1, -1, -1, -1, 124, -1, + -1, -1, -1, -1, -1, 94, -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, 400, 401, 402, - 403, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 312, 414, 415, 416, 417, 418, 419, 420, 421, 422, - -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, -1, -1, 411, 412, 312, 414, 415, 416, 417, + 408, -1, -1, 411, 412, 124, 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, -1, -1, -1, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 312, + -1, 411, 412, -1, 414, 415, 416, 417, 418, 419, + 420, 421, 422, -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, 422, + 312, -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, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 60, 61, 62, + 63, -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, 422, + 312, 94, 413, 414, 415, -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, 124, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 37, 38, -1, -1, -1, 42, 43, -1, 45, + 46, 47, -1, 312, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 60, 61, 62, 63, -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, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, 61, 62, 63, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, -1, 41, 411, - 412, 44, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 312, -1, -1, -1, 58, 59, 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, 422, 312, 124, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, -1, 94, 411, + 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 37, 38, -1, -1, -1, 42, 43, -1, 45, + 46, 47, -1, -1, -1, -1, -1, -1, 124, -1, + -1, -1, -1, -1, 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, 420, 421, 422, 37, 38, -1, -1, 94, 42, + 43, -1, 45, 46, 47, -1, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, 60, -1, 62, + -1, -1, -1, -1, -1, 58, 59, -1, 124, -1, + -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, 312, + -1, 94, -1, -1, 58, 59, 60, 61, 62, 63, 93, -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, 331, 45, - 46, 47, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, 61, 62, 63, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, -1, -1, - 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 331, -1, -1, -1, 41, -1, 94, 44, - -1, -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, 422, -1, 124, -1, - 413, 414, 415, 37, 38, -1, -1, 41, 42, 43, - 44, 45, 46, 47, -1, -1, -1, -1, 93, -1, - -1, -1, -1, -1, 58, 59, 60, 61, 62, 63, - 37, 38, -1, -1, 41, 42, 43, 44, 45, 46, - 47, -1, -1, -1, 413, 414, 415, -1, -1, -1, - 125, 58, 59, 60, 61, 62, 63, 37, 38, 93, - 94, 41, 42, 43, 44, 45, 46, 47, -1, -1, - -1, -1, -1, -1, -1, 312, -1, -1, 58, 59, - 60, 61, 62, 63, -1, -1, 93, 94, -1, -1, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, + -1, 124, 41, 42, 43, 44, 45, 46, 47, 93, + 94, -1, 125, 91, 92, -1, -1, -1, -1, 58, + 59, 60, 61, 62, 63, 37, 38, -1, -1, 41, + 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, + 124, 125, -1, -1, -1, -1, 58, 59, 60, 61, + 62, 63, -1, -1, 93, 94, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 312, -1, 411, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, + -1, 93, 94, -1, -1, 124, 125, -1, -1, -1, + -1, -1, -1, -1, 38, -1, -1, 41, -1, 43, + 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 124, 125, 58, 59, 60, 61, 62, 63, -1, -1, 38, -1, -1, 41, -1, 43, 44, 45, - 46, -1, -1, 93, 94, -1, -1, 124, 125, -1, - -1, -1, 58, 59, 60, 61, 62, 63, 331, -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, 93, 94, -1, - -1, -1, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, -1, 41, 411, 412, 44, -1, 415, 416, - 417, 418, 419, 420, 421, 422, 312, -1, 124, 125, - 58, 59, -1, -1, -1, -1, -1, 38, -1, -1, - 41, -1, 43, 44, 45, 46, -1, -1, -1, -1, - 413, 414, 415, -1, -1, -1, -1, 58, 59, 60, - 61, 62, 63, -1, -1, 93, -1, -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, 93, 94, -1, -1, 331, 125, -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, 124, 125, 411, 412, -1, -1, -1, - 416, 417, 418, 419, 420, 421, 422, 331, 93, 94, - -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, + 46, -1, -1, -1, -1, -1, 312, -1, -1, -1, + -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, -1, 415, + 416, 417, 418, 419, 420, 421, 422, 93, 94, -1, + 124, 125, 260, 261, 262, 263, 264, 265, -1, 312, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, 331, 61, -1, 63, -1, 124, - 125, -1, -1, -1, -1, -1, -1, -1, 413, 414, - 415, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, -1, -1, -1, -1, 93, 94, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 124, 125, + -1, -1, -1, -1, -1, -1, -1, -1, 331, -1, + -1, -1, 300, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, -1, -1, 411, 412, -1, -1, -1, + 416, 417, 418, 419, 420, 421, 422, 331, -1, -1, + -1, -1, -1, -1, -1, 333, -1, -1, 41, -1, + -1, 44, -1, -1, -1, -1, -1, -1, 346, -1, + -1, -1, -1, -1, -1, 58, 59, 400, 401, 402, + 403, -1, -1, -1, 38, -1, -1, 41, 411, 412, + 44, -1, 331, -1, -1, -1, -1, -1, -1, 422, + 413, 414, 415, -1, 58, 59, 60, 61, 62, 63, + 93, -1, -1, -1, -1, -1, 400, 401, -1, 331, + 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 41, 93, + 94, 44, 125, -1, -1, -1, 41, -1, -1, 44, + -1, -1, -1, -1, -1, 58, 59, -1, -1, -1, + -1, 400, 401, 58, 59, 404, 405, 406, 407, 408, + 124, 125, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, -1, 331, 400, 401, + 93, -1, 404, 405, 406, 407, 408, -1, 93, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + -1, -1, 125, 38, -1, -1, 41, -1, -1, 44, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 58, 59, -1, 61, -1, 63, -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, 124, 125, - -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, -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, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -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, - 331, -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, -1, - 63, -1, -1, -1, -1, -1, -1, 58, 59, -1, - -1, -1, -1, -1, -1, -1, 331, -1, -1, -1, - -1, -1, -1, -1, -1, 413, 414, 415, -1, -1, - 93, 94, -1, -1, -1, -1, -1, -1, -1, 400, - 401, -1, 93, 404, 405, 406, 407, 408, -1, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 125, 331, -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, -1, -1, -1, - -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, - -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, - -1, 58, 59, -1, 61, -1, 63, -1, -1, -1, - 58, 59, -1, -1, -1, -1, -1, -1, 404, 405, + 414, 415, 416, 417, 418, 419, 420, 421, 93, 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, 93, 94, 38, -1, - -1, 41, -1, -1, 44, 93, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, - -1, 61, -1, 63, -1, -1, -1, 124, 125, -1, - -1, -1, -1, -1, -1, 38, -1, 125, 41, -1, - -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, 58, 59, -1, 61, -1, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 38, -1, -1, 41, - -1, -1, 44, -1, 124, 125, -1, -1, -1, -1, - 93, 94, -1, -1, -1, -1, 58, 59, 331, 61, - -1, 63, -1, 38, -1, -1, 41, -1, -1, 44, - 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, 58, 59, -1, 61, -1, 63, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, -1, 44, 41, -1, -1, - 44, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 58, 59, 124, 125, 58, 59, -1, 61, -1, 63, - -1, 404, 405, 406, 407, 408, -1, -1, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 124, - 125, -1, 413, 414, 415, 93, -1, -1, 41, 93, - 94, 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, 125, -1, -1, - 124, 125, -1, -1, 331, -1, 58, 59, -1, 61, - -1, 63, 41, 331, -1, 44, -1, -1, -1, -1, - 93, -1, 41, -1, -1, 44, -1, -1, -1, 58, - 59, -1, 61, -1, 63, -1, -1, -1, -1, 58, - 59, 93, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, 331, -1, -1, 93, -1, -1, -1, -1, -1, - -1, -1, -1, 125, 93, -1, -1, 404, 405, 406, - 407, 408, -1, -1, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 413, 125, -1, 331, -1, - -1, -1, -1, -1, -1, -1, 125, 41, -1, -1, + 416, 417, 418, 419, 420, 421, -1, -1, -1, 124, + 125, -1, -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, -1, -1, -1, - -1, -1, -1, -1, 404, 405, 406, 407, 408, 331, - -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, -1, -1, 93, - -1, -1, -1, -1, -1, -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, - -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 331, -1, -1, -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, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 331, - 404, 405, 406, 407, 408, 413, 414, 415, -1, 413, + -1, -1, -1, -1, 58, 59, -1, 61, 38, 63, + -1, 41, -1, -1, 44, -1, -1, -1, 331, -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, 331, -1, -1, + -1, -1, 58, 59, -1, 61, 38, 63, -1, 41, + -1, -1, 44, 93, 94, -1, -1, -1, -1, -1, + 124, 125, -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, 331, -1, + 413, 414, 415, -1, -1, -1, 331, -1, -1, -1, + -1, 93, 94, -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, -1, -1, - -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 331, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 124, 125, -1, -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, 38, 63, -1, 41, -1, -1, 44, -1, -1, + 413, 414, 415, -1, -1, -1, 331, -1, 413, 414, + 415, 58, 59, -1, 61, 41, 63, -1, 44, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + -1, -1, 58, 59, -1, 61, -1, 63, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 41, -1, + -1, 44, -1, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 93, 94, -1, + -1, -1, -1, -1, -1, -1, -1, 124, 125, 404, + 405, 406, 407, 408, -1, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 331, 124, 125, + 93, -1, -1, -1, -1, -1, 41, -1, -1, 44, + -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, + -1, 331, -1, 58, 59, -1, 61, -1, 63, -1, + -1, -1, 125, 58, 59, -1, -1, -1, -1, 41, + -1, -1, 44, -1, -1, 331, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 58, 59, 93, 61, + -1, 63, -1, -1, -1, -1, -1, -1, 93, 331, + 404, 405, 406, 407, 408, -1, -1, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, -1, 124, + 125, 93, -1, -1, 404, 405, 406, 407, 408, -1, + 125, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, -1, -1, -1, 404, 405, + 406, 407, 408, 125, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, 404, 405, 406, 407, 408, 41, -1, -1, + 44, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 331, -1, -1, -1, 58, 59, -1, 61, 41, 63, + -1, 44, 41, -1, -1, 44, -1, -1, 41, -1, + -1, 44, -1, -1, 331, 58, 59, -1, -1, 58, + 59, -1, -1, -1, -1, 58, 59, -1, -1, 93, + -1, -1, -1, -1, -1, 331, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, -1, -1, -1, 93, -1, -1, -1, -1, -1, + 93, 125, -1, 404, 405, 406, 407, 408, 331, -1, + -1, -1, 413, 414, 415, 416, 417, 418, 419, 420, + 421, -1, 125, -1, -1, -1, 125, 404, 405, 406, + 407, 408, 125, -1, -1, -1, 413, 414, 415, 416, + 417, 418, 419, 420, 421, -1, -1, -1, 404, 405, + 406, 407, 408, -1, -1, -1, -1, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 331, -1, -1, -1, + -1, 33, -1, -1, -1, -1, 331, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + 413, 414, 415, -1, -1, -1, -1, 59, -1, 331, + -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, -1, 91, + 92, -1, -1, -1, -1, -1, -1, -1, -1, 404, + 405, 406, 407, 408, -1, -1, -1, -1, 413, 414, + 415, 416, 417, 418, 419, 420, 421, -1, 413, 414, + 415, 123, -1, 125, 126, -1, -1, -1, -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, -1, -1, 404, 405, 406, 407, 408, - -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 33, 413, 414, 415, 331, -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, -1, 33, -1, -1, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, 331, -1, + -1, -1, 331, -1, -1, -1, -1, -1, 331, -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, -1, + -1, -1, -1, 91, 92, -1, -1, -1, -1, -1, + 404, 405, 406, 407, 408, -1, -1, -1, -1, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 260, 261, + 262, 263, 264, 265, -1, 123, -1, 125, 126, -1, + 413, 414, 415, -1, 413, 414, 415, -1, -1, -1, + 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, + 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, + 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, 313, -1, -1, -1, -1, 59, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 333, 334, -1, -1, -1, -1, -1, 340, 341, + 342, 343, -1, -1, 346, -1, -1, -1, 91, 92, + -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, -1, -1, -1, -1, + 123, -1, -1, 126, 33, -1, -1, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, + 402, 403, 260, 261, 262, 263, 264, 265, -1, 58, + -1, -1, -1, 33, -1, 64, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, - -1, -1, -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, 33, -1, -1, - -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, - -1, 91, 92, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, -1, -1, -1, 64, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, - 414, 33, -1, 123, -1, 125, 126, -1, 40, -1, - -1, 43, -1, 45, -1, 91, 92, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, -1, -1, 123, -1, 125, - 126, 40, -1, -1, 43, -1, 45, -1, -1, 91, - 92, -1, -1, -1, -1, -1, -1, -1, -1, 58, - -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, - -1, 123, -1, -1, 126, 40, -1, -1, 43, -1, - 45, -1, 91, 92, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + -1, 61, 91, 92, 64, -1, 40, -1, -1, 43, + -1, 45, -1, -1, -1, 313, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 61, -1, -1, + 64, 91, 92, -1, -1, 333, 334, 126, -1, -1, + -1, -1, 340, 341, 342, 343, -1, -1, 346, -1, + -1, -1, -1, -1, -1, -1, -1, 91, 92, -1, + -1, -1, 360, 361, 362, 363, 126, 365, 366, 367, + -1, -1, 370, -1, 372, 373, 374, 260, 261, 262, + 263, 264, 265, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 126, -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, -1, - -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, - 260, 261, 262, 263, 264, 265, 91, 92, -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, -1, -1, -1, -1, -1, + 333, 334, -1, -1, -1, -1, -1, 340, 341, 342, + 343, -1, -1, 346, -1, -1, -1, -1, -1, -1, + -1, 260, 261, 262, 263, 264, 265, 360, 361, 362, + 363, -1, 365, 366, 367, -1, -1, 370, -1, 372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 126, -1, -1, 260, 261, 262, 263, 264, 265, - -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, + 260, 261, 262, 263, 264, 265, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, -1, -1, 40, 402, + 403, 43, -1, 45, 313, 33, 260, 261, 262, 263, + 264, 265, 40, -1, -1, 43, 33, 45, -1, 61, + -1, -1, 64, 40, 333, 334, 43, -1, 45, -1, + -1, 340, -1, 313, -1, -1, 64, 346, -1, -1, + -1, -1, -1, -1, 61, -1, -1, 64, -1, 91, + 92, -1, -1, 333, 334, -1, -1, -1, 367, 313, + 340, -1, -1, 91, 92, -1, 346, -1, -1, -1, + -1, -1, -1, -1, 91, 92, -1, -1, -1, 333, + 334, -1, -1, -1, 126, -1, 340, 367, -1, -1, + -1, -1, 346, 402, 403, -1, -1, -1, 126, -1, + -1, -1, -1, -1, 33, -1, -1, -1, -1, 126, + -1, 40, -1, 367, 43, -1, 45, -1, -1, -1, + -1, -1, 402, 403, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 64, -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, 333, 334, -1, -1, -1, -1, -1, - 340, 341, 342, 343, -1, -1, 346, -1, 260, 261, - 262, 263, 264, 265, -1, -1, -1, 313, -1, -1, - 360, 361, 362, 363, -1, 365, 366, 367, -1, -1, - 370, 371, 372, 373, 374, -1, -1, 333, 334, -1, - -1, -1, -1, -1, 340, 341, 342, 343, -1, -1, - 346, 260, 261, 262, 263, 264, 265, -1, -1, -1, - -1, 313, 402, 403, 360, 361, 362, 363, -1, 365, - 366, 367, -1, -1, 370, -1, 372, 373, 374, -1, - -1, 333, 334, -1, -1, -1, -1, -1, 340, 341, - 342, 343, -1, -1, 346, 260, 261, 262, 263, 264, - 265, -1, -1, -1, 313, -1, 402, 403, 360, 361, - 362, 363, -1, 365, 366, 367, -1, -1, 370, -1, - 372, -1, -1, -1, 333, 334, 33, -1, -1, -1, - -1, 340, -1, 40, -1, -1, 43, 346, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 313, 33, - 402, 403, -1, -1, 61, -1, 40, 64, 367, 43, - -1, 45, -1, -1, 33, -1, -1, -1, 333, 334, - -1, 40, -1, -1, 43, 340, 45, 61, -1, -1, - 64, 346, -1, -1, 91, 92, -1, -1, -1, -1, - -1, -1, 61, 402, 403, 64, -1, -1, -1, -1, - -1, -1, 367, -1, -1, -1, -1, 91, 92, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, 91, 92, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 402, 403, -1, - -1, -1, 126, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 126, 33, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, - 45, -1, 33, -1, -1, -1, -1, -1, -1, 40, - -1, -1, 43, -1, 45, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -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, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, + -1, -1, -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, 260, 261, 262, 263, 264, 265, -1, -1, + -1, -1, -1, 260, 261, 262, 263, 264, 265, -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, -1, -1, 313, -1, -1, -1, -1, + -1, 333, 334, -1, -1, -1, 313, -1, 340, -1, + -1, -1, -1, -1, 346, 333, 334, -1, -1, -1, + -1, -1, 340, -1, -1, -1, 333, 334, 346, -1, + -1, -1, -1, 340, -1, 367, -1, -1, -1, 346, + -1, 260, 261, 262, 263, 264, 265, -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 126, -1, 260, 261, 262, 263, 264, 265, -1, - -1, -1, -1, -1, -1, 126, -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, 260, 261, 262, 263, 264, 265, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, + 367, -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, 313, 402, 403, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 333, 334, -1, 313, - -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, - -1, -1, -1, -1, 313, -1, -1, -1, -1, 333, - 334, -1, -1, -1, -1, -1, 340, -1, -1, -1, - 367, -1, 346, -1, 333, 334, -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, -1, -1, 367, -1, 260, 261, 262, 263, 264, - 265, -1, -1, -1, -1, 402, 403, -1, 367, 260, - 261, 262, 263, 264, 265, -1, -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, -1, -1, 313, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 313, -1, -1, -1, -1, -1, 333, 334, - -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, - -1, 346, 333, 334, -1, -1, -1, -1, -1, 340, - -1, -1, -1, -1, -1, 346, -1, -1, -1, -1, - -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 367, -1, -1, -1, -1, -1, -1, -1, -1, -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, 402, 403, + -1, -1, -1, 402, 403, ); protected static $yyFinal= 2; protected static $yyName= array( @@ -2255,7 +2227,7 @@ public function yyparse($yyLex) { case 158: #line 688 "src/main/jay/grammars/php.jay" { - $yyVal= $yyLex->create(new LambdaNode($yyVals[-5+$yyTop], (array)$yyVals[-1+$yyTop], $yyVals[-3+$yyTop])); + $yyVal= $yyLex->create(new LambdaNode((array)$yyVals[-5+$yyTop], (array)$yyVals[-1+$yyTop], $yyVals[-3+$yyTop])); } break; case 159: #line 691 "src/main/jay/grammars/php.jay" @@ -2271,6 +2243,9 @@ public function yyparse($yyLex) { case 160: #line 702 "src/main/jay/grammars/php.jay" { $yyVal= array(); } break; + case 161: #line 703 "src/main/jay/grammars/php.jay" + { $yyVal= $yyVals[-1+$yyTop]; } break; + case 162: #line 707 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; @@ -2280,25 +2255,19 @@ public function yyparse($yyLex) { case 164: #line 712 "src/main/jay/grammars/php.jay" { $yyVal= array('name' => $yyVals[-1+$yyTop]); $yyVals[0+$yyTop] && $yyVal['default']= $yyVals[0+$yyTop]; } break; - case 165: #line 716 "src/main/jay/grammars/php.jay" - { $yyVal= array(); } break; - case 166: #line 717 "src/main/jay/grammars/php.jay" - { $yyVal= $yyVals[-1+$yyTop]; } break; - - case 168: #line 722 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 169: #line 722 "src/main/jay/grammars/php.jay" + case 167: #line 717 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 170: #line 723 "src/main/jay/grammars/php.jay" + case 168: #line 718 "src/main/jay/grammars/php.jay" { $p= $yyLex->position; } break; - case 171: #line 723 "src/main/jay/grammars/php.jay" + case 169: #line 718 "src/main/jay/grammars/php.jay" { $yyVals[-1+$yyTop]->position= $p; $yyVals[-1+$yyTop]->type= NULL; $yyVal= $yyVals[-1+$yyTop]; } break; - case 172: #line 727 "src/main/jay/grammars/php.jay" + case 170: #line 722 "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; @@ -2306,271 +2275,271 @@ public function yyparse($yyLex) { default: $yyVal= $yyLex->create(new ConstantNode($yyVals[0+$yyTop])); break; }} break; - case 173: #line 733 "src/main/jay/grammars/php.jay" + case 171: #line 728 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new IntegerNode($yyVals[0+$yyTop])); } break; - case 174: #line 734 "src/main/jay/grammars/php.jay" + case 172: #line 729 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new HexNode($yyVals[0+$yyTop])); } break; - case 175: #line 735 "src/main/jay/grammars/php.jay" + case 173: #line 730 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new OctalNode($yyVals[0+$yyTop])); } break; - case 176: #line 736 "src/main/jay/grammars/php.jay" + case 174: #line 731 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DecimalNode($yyVals[0+$yyTop])); } break; - case 177: #line 737 "src/main/jay/grammars/php.jay" + case 175: #line 732 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new StringNode($yyVals[0+$yyTop])); } break; - case 178: #line 741 "src/main/jay/grammars/php.jay" + case 176: #line 736 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => NULL))); } break; - case 179: #line 744 "src/main/jay/grammars/php.jay" + case 177: #line 739 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => NULL))); } break; - case 180: #line 747 "src/main/jay/grammars/php.jay" + case 178: #line 742 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new ArrayNode(array('values' => $yyVals[0+$yyTop]))); } break; - case 181: #line 750 "src/main/jay/grammars/php.jay" + case 179: #line 745 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MapNode(array('elements' => $yyVals[0+$yyTop]))); } break; - case 182: #line 756 "src/main/jay/grammars/php.jay" + case 180: #line 751 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 183: #line 757 "src/main/jay/grammars/php.jay" + case 181: #line 752 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop] ? array_merge($yyVals[-2+$yyTop], array($yyVals[0+$yyTop])) : $yyVals[-2+$yyTop]; } break; - case 184: #line 761 "src/main/jay/grammars/php.jay" + case 182: #line 756 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 186: #line 766 "src/main/jay/grammars/php.jay" + case 184: #line 761 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[-2+$yyTop], $yyVals[0+$yyTop]); } break; - case 187: #line 770 "src/main/jay/grammars/php.jay" + case 185: #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 771 "src/main/jay/grammars/php.jay" + case 186: #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 772 "src/main/jay/grammars/php.jay" + case 187: #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 773 "src/main/jay/grammars/php.jay" + case 188: #line 768 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 191: #line 774 "src/main/jay/grammars/php.jay" + case 189: #line 769 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 192: #line 775 "src/main/jay/grammars/php.jay" + case 190: #line 770 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 193: #line 776 "src/main/jay/grammars/php.jay" + case 191: #line 771 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => '~='); } break; - case 194: #line 777 "src/main/jay/grammars/php.jay" + case 192: #line 772 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 195: #line 778 "src/main/jay/grammars/php.jay" + case 193: #line 773 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 196: #line 779 "src/main/jay/grammars/php.jay" + case 194: #line 774 "src/main/jay/grammars/php.jay" { $yyVal= array('variable' => $yyVals[-2+$yyTop], 'expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 197: #line 780 "src/main/jay/grammars/php.jay" + case 195: #line 775 "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 198: #line 781 "src/main/jay/grammars/php.jay" + case 196: #line 776 "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 199: #line 785 "src/main/jay/grammars/php.jay" + case 197: #line 780 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 200: #line 786 "src/main/jay/grammars/php.jay" + case 198: #line 781 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 201: #line 787 "src/main/jay/grammars/php.jay" + case 199: #line 782 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 202: #line 788 "src/main/jay/grammars/php.jay" + case 200: #line 783 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 203: #line 789 "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 204: #line 790 "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 205: #line 791 "src/main/jay/grammars/php.jay" + case 203: #line 786 "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 206: #line 792 "src/main/jay/grammars/php.jay" + case 204: #line 787 "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 207: #line 796 "src/main/jay/grammars/php.jay" + case 205: #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 797 "src/main/jay/grammars/php.jay" + case 206: #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 798 "src/main/jay/grammars/php.jay" + case 207: #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 799 "src/main/jay/grammars/php.jay" + case 208: #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 800 "src/main/jay/grammars/php.jay" + case 209: #line 795 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 212: #line 801 "src/main/jay/grammars/php.jay" + case 210: #line 796 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 213: #line 802 "src/main/jay/grammars/php.jay" + case 211: #line 797 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 214: #line 803 "src/main/jay/grammars/php.jay" + case 212: #line 798 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 215: #line 804 "src/main/jay/grammars/php.jay" + case 213: #line 799 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 216: #line 805 "src/main/jay/grammars/php.jay" + case 214: #line 800 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 217: #line 806 "src/main/jay/grammars/php.jay" + case 215: #line 801 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 218: #line 807 "src/main/jay/grammars/php.jay" + case 216: #line 802 "src/main/jay/grammars/php.jay" { $yyVal= array('lhs' => $yyVals[-2+$yyTop], 'rhs' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 219: #line 811 "src/main/jay/grammars/php.jay" + case 217: #line 806 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 220: #line 812 "src/main/jay/grammars/php.jay" + case 218: #line 807 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => '~'); } break; - case 221: #line 813 "src/main/jay/grammars/php.jay" + case 219: #line 808 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 222: #line 814 "src/main/jay/grammars/php.jay" + case 220: #line 809 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 223: #line 815 "src/main/jay/grammars/php.jay" + case 221: #line 810 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 224: #line 816 "src/main/jay/grammars/php.jay" + case 222: #line 811 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[0+$yyTop], 'op' => $yyVals[-1+$yyTop]); } break; - case 225: #line 820 "src/main/jay/grammars/php.jay" + case 223: #line 815 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 226: #line 821 "src/main/jay/grammars/php.jay" + case 224: #line 816 "src/main/jay/grammars/php.jay" { $yyVal= array('expression' => $yyVals[-1+$yyTop], 'op' => $yyVals[0+$yyTop]); } break; - case 227: #line 826 "src/main/jay/grammars/php.jay" + case 225: #line 821 "src/main/jay/grammars/php.jay" { $yyVal= NULL; } break; - case 229: #line 831 "src/main/jay/grammars/php.jay" + case 227: #line 826 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop], $yyVals[0+$yyTop]); } break; - case 230: #line 832 "src/main/jay/grammars/php.jay" + case 228: #line 827 "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 231: #line 836 "src/main/jay/grammars/php.jay" + case 229: #line 831 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 232: #line 836 "src/main/jay/grammars/php.jay" + case 230: #line 831 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 233: #line 839 "src/main/jay/grammars/php.jay" + case 231: #line 834 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new ArrayAccessNode()); } break; - case 234: #line 839 "src/main/jay/grammars/php.jay" + case 232: #line 834 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->offset= $yyVals[-1+$yyTop]; } break; - case 235: #line 842 "src/main/jay/grammars/php.jay" + case 233: #line 837 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new MemberAccessNode(NULL, $yyVals[0+$yyTop])); } break; - case 236: #line 845 "src/main/jay/grammars/php.jay" + case 234: #line 840 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, new VariableNode($yyVals[0+$yyTop]))); } break; - case 237: #line 848 "src/main/jay/grammars/php.jay" + case 235: #line 843 "src/main/jay/grammars/php.jay" { $yyVal= $yyLex->create(new DynamicVariableReferenceNode(NULL, $yyVals[-1+$yyTop])); } break; - case 238: #line 851 "src/main/jay/grammars/php.jay" + case 236: #line 846 "src/main/jay/grammars/php.jay" { $yyVals[-2+$yyTop]= $yyLex->create(new MethodCallNode(NULL, $yyVals[-1+$yyTop])); } break; - case 239: #line 851 "src/main/jay/grammars/php.jay" + case 237: #line 846 "src/main/jay/grammars/php.jay" { $yyVals[-5+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 240: #line 854 "src/main/jay/grammars/php.jay" + case 238: #line 849 "src/main/jay/grammars/php.jay" { $yyVals[0+$yyTop]= $yyLex->create(new InstanceCallNode(NULL, NULL, FALSE)); } break; - case 241: #line 854 "src/main/jay/grammars/php.jay" + case 239: #line 849 "src/main/jay/grammars/php.jay" { $yyVals[-3+$yyTop]->arguments= $yyVals[-1+$yyTop]; } break; - case 244: #line 867 "src/main/jay/grammars/php.jay" + case 242: #line 862 "src/main/jay/grammars/php.jay" { $yyVal= 'callable' === $yyVals[0+$yyTop] ? new TypeName('->var', null) : new TypeName($yyVals[0+$yyTop]); } break; - case 245: #line 871 "src/main/jay/grammars/php.jay" + case 243: #line 866 "src/main/jay/grammars/php.jay" { $yyVal= new TypeName('var[]'); } break; - case 246: #line 875 "src/main/jay/grammars/php.jay" + case 244: #line 870 "src/main/jay/grammars/php.jay" { $yyVal= array($yyVals[0+$yyTop]); } break; - case 247: #line 876 "src/main/jay/grammars/php.jay" + case 245: #line 871 "src/main/jay/grammars/php.jay" { $yyVal= array_merge(array($yyVals[-2+$yyTop]), $yyVals[0+$yyTop]); } break; - case 248: #line 882 "src/main/jay/grammars/php.jay" + case 246: #line 877 "src/main/jay/grammars/php.jay" { $yyVal= 0; } break; - case 249: #line 883 "src/main/jay/grammars/php.jay" + case 247: #line 878 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 250: #line 887 "src/main/jay/grammars/php.jay" + case 248: #line 882 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[0+$yyTop]; } break; - case 251: #line 888 "src/main/jay/grammars/php.jay" + case 249: #line 883 "src/main/jay/grammars/php.jay" { $yyVal= $yyVals[-1+$yyTop] | $yyVals[0+$yyTop]; } break; - case 252: #line 892 "src/main/jay/grammars/php.jay" + case 250: #line 887 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PUBLIC; } break; - case 253: #line 893 "src/main/jay/grammars/php.jay" + case 251: #line 888 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PROTECTED; } break; - case 254: #line 894 "src/main/jay/grammars/php.jay" + case 252: #line 889 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_PRIVATE; } break; - case 255: #line 895 "src/main/jay/grammars/php.jay" + case 253: #line 890 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_STATIC; } break; - case 256: #line 896 "src/main/jay/grammars/php.jay" + case 254: #line 891 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_ABSTRACT; } break; - case 257: #line 897 "src/main/jay/grammars/php.jay" + case 255: #line 892 "src/main/jay/grammars/php.jay" { $yyVal= MODIFIER_FINAL; } break; -#line 2574 "-" +#line 2543 "-" } $yyTop-= self::$yyLen[$yyN]; From dd9982d0cea525d3d354d326a850315b6d94ec35 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:52:08 +0200 Subject: [PATCH 07/10] Optimize variadics in PHP 5.6 --- src/main/php/xp/compiler/emit/php/Emitter.class.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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 69439bfe3..59490550c 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1412,10 +1412,14 @@ protected function emitParameters($b, array $parameters, $delim) { if (isset($param['vararg'])) { $genericParams.= '...'; - if ($i > 0) { - $defer[]= '$'.$param['name'].'= array_slice(func_get_args(), '.$i.');'; + if (static::$UNPACK_REWRITE) { + if ($i > 0) { + $defer[]= '$'.$param['name'].'= array_slice(func_get_args(), '.$i.');'; + } else { + $defer[]= '$'.$param['name'].'= func_get_args();'; + } } else { - $defer[]= '$'.$param['name'].'= func_get_args();'; + $b->append('...$'.$param['name']); } $this->scope[0]->setType(new VariableNode($param['name']), new TypeName($t->name.'[]')); break; From 63b26564374c2e3d6ed369af6c51003791901b2f Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 00:59:17 +0200 Subject: [PATCH 08/10] Implement argument unpacking for invocations (func / static) --- .../xp/compiler/emit/php/Emitter.class.php | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) 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 59490550c..842fa7f67 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -248,15 +248,37 @@ protected function emitInvocation($b, $inv) { } $ptr= $this->scope[0]->statics[$inv->name]; - // Static method call vs. function call - if (true === $ptr) { - $b->append($inv->name); - $this->emitInvocationArguments($b, (array)$inv->arguments); - $this->scope[0]->setType($inv, TypeName::$VAR); + if (static::$UNPACK_REWRITE && $this->needsUnpacking((array)$inv->arguments)) { + if (true === $ptr) { + $b->append('call_user_func_array(\''.$inv->name.'\''); + } else { + $b->append('call_user_func_array([\''.$this->literal($ptr).'\', \''.$inv->name.'\']'); + } + $b->append(', array_merge('); + $s= sizeof($inv->arguments) - 1; + foreach ($inv->arguments as $i => $argument) { + if ($argument instanceof UnpackNode) { + $this->emitOne($b, $argument->expression); + } else { + $b->append('['); + $this->emitOne($b, $argument); + $b->append(']'); + } + $i < $s && $b->append(','); + } + $b->append('))'); } else { - $b->append($this->literal($ptr->holder).'::'.$ptr->name()); - $this->emitInvocationArguments($b, (array)$inv->arguments); - $this->scope[0]->setType($inv, $ptr->returns); + + // Static method call vs. function call + if (true === $ptr) { + $b->append($inv->name); + $this->emitInvocationArguments($b, (array)$inv->arguments); + $this->scope[0]->setType($inv, TypeName::$VAR); + } else { + $b->append($this->literal($ptr->holder).'::'.$ptr->name()); + $this->emitInvocationArguments($b, (array)$inv->arguments); + $this->scope[0]->setType($inv, $ptr->returns); + } } } From 8a37338fdbbf228081e99387f1975b83ce189fd4 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 01:06:32 +0200 Subject: [PATCH 09/10] Implement argument unpacking for instance calls (`$func()`) --- .../php/xp/compiler/emit/php/Emitter.class.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 842fa7f67..f31ec29d0 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -517,6 +517,21 @@ public function emitInstanceCall($b, $call) { $b->append(', '); $this->emitInvocationArguments($b, $call->arguments, false); } + } else if (static::$UNPACK_REWRITE && $this->needsUnpacking((array)$call->arguments)) { + $b->append('call_user_func_array('); + $this->emitOne($b, $call->target); + $b->append(', array_merge('); + $s= sizeof($call->arguments) - 1; + foreach ($call->arguments as $i => $argument) { + if ($argument instanceof UnpackNode) { + $this->emitOne($b, $argument->expression); + } else { + $b->append('['); + $this->emitOne($b, $argument); + $b->append(']'); + } + $i < $s && $b->append(','); + } $b->append('))'); } else { $b->append('call_user_func('); From 986cd63acdc8727206dd244e5bbb245f0599e0b7 Mon Sep 17 00:00:00 2001 From: Timm Friebe Date: Mon, 21 Sep 2015 01:14:06 +0200 Subject: [PATCH 10/10] Fix varargs in PHP 5.6 --- src/main/php/xp/compiler/emit/php/Emitter.class.php | 9 ++++++++- .../tests/execution/source/ExecutionTest.class.php | 4 ---- 2 files changed, 8 insertions(+), 5 deletions(-) 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 f31ec29d0..ef8533c82 100755 --- a/src/main/php/xp/compiler/emit/php/Emitter.class.php +++ b/src/main/php/xp/compiler/emit/php/Emitter.class.php @@ -1484,7 +1484,14 @@ protected function emitParameters($b, array $parameters, $delim) { $defer[]= $init; } } - $i < $s && !isset($parameters[$i+ 1]['vararg']) && $b->append(','); + + if ($i < $s) { + if (static::$UNPACK_REWRITE && isset($parameters[$i + 1]['vararg'])) { + // Vararg is removed before PHP 5.6 + } else { + $b->append(','); + } + } $this->scope[0]->setType(new VariableNode($param['name']), $t); } diff --git a/src/test/php/net/xp_lang/tests/execution/source/ExecutionTest.class.php b/src/test/php/net/xp_lang/tests/execution/source/ExecutionTest.class.php index 18a759fb8..ffd7e3076 100644 --- a/src/test/php/net/xp_lang/tests/execution/source/ExecutionTest.class.php +++ b/src/test/php/net/xp_lang/tests/execution/source/ExecutionTest.class.php @@ -13,10 +13,6 @@ use io\File; use io\streams\MemoryInputStream; -/** - * TestCase - * - */ abstract class ExecutionTest extends \unittest\TestCase { protected static $emitter= null; protected $counter= 0;