Skip to content

Instantly share code, notes, and snippets.

@erichocean
Created January 5, 2011 05:01
Show Gist options
  • Save erichocean/765950 to your computer and use it in GitHub Desktop.
Save erichocean/765950 to your computer and use it in GitHub Desktop.
removes hub_assert() and friends from the parse tree and outputs the results
// ==========================================================================
// Project: hub.js - cloud-friendly object graph sync
// Copyright: ©2010 Erich Ocean.
// Portions ©2006-2009 Sprout Systems, Inc. and contributors.
// Portions ©2008-2009 Apple Inc. All rights reserved.
// License: Licensed under an MIT license (see license.js).
// ==========================================================================
function Program(str){
var tbl=[],pos=0,l=str.length+1;while(l--)tbl.push([]);l=str.length;
function Program(a){var x,p=pos,c;if(x=tbl[p][0]){pos=x[1];a.push([p,0]);return 1}if(x==false){return 0}c=[];return fin(c,p,0,_Program(c),a)}
function FunctionBody(a){var x,p=pos,c;if(x=tbl[p][1]){pos=x[1];a.push([p,1]);return 1}if(x==false){return 0}c=[];return fin(c,p,1,_FunctionBody(c),a)}
function FunctionDeclaration(a){var x,p=pos,c;if(x=tbl[p][2]){pos=x[1];a.push([p,2]);return 1}if(x==false){return 0}c=[];return fin(c,p,2,_FunctionDeclaration(c),a)}
function FunctionExpr(a){var x,p=pos,c;if(x=tbl[p][3]){pos=x[1];a.push([p,3]);return 1}if(x==false){return 0}c=[];return fin(c,p,3,_FunctionExpr(c),a)}
function FormalParameterList(a){var x,p=pos,c;if(x=tbl[p][4]){pos=x[1];a.push([p,4]);return 1}if(x==false){return 0}c=[];return fin(c,p,4,_FormalParameterList(c),a)}
function UseStrictDirective(a){var x,p=pos,c;if(x=tbl[p][5]){pos=x[1];a.push([p,5]);return 1}if(x==false){return 0}c=[];return fin(c,p,5,_UseStrictDirective(c),a)}
function Statement(a){var x,p=pos,c;if(x=tbl[p][6]){pos=x[1];a.push([p,6]);return 1}if(x==false){return 0}c=[];return fin(c,p,6,_Statement(c),a)}
function Block(a){var x,p=pos,c;if(x=tbl[p][7]){pos=x[1];a.push([p,7]);return 1}if(x==false){return 0}c=[];return fin(c,p,7,_Block(c),a)}
function VariableStatement(a){var x,p=pos,c;if(x=tbl[p][8]){pos=x[1];a.push([p,8]);return 1}if(x==false){return 0}c=[];return fin(c,p,8,_VariableStatement(c),a)}
function VariableDeclarationListNoIn(a){var x,p=pos,c;if(x=tbl[p][9]){pos=x[1];a.push([p,9]);return 1}if(x==false){return 0}c=[];return fin(c,p,9,_VariableDeclarationListNoIn(c),a)}
function VariableDeclaration(a){var x,p=pos,c;if(x=tbl[p][10]){pos=x[1];a.push([p,10]);return 1}if(x==false){return 0}c=[];return fin(c,p,10,_VariableDeclaration(c),a)}
function VariableDeclarationNoIn(a){var x,p=pos,c;if(x=tbl[p][11]){pos=x[1];a.push([p,11]);return 1}if(x==false){return 0}c=[];return fin(c,p,11,_VariableDeclarationNoIn(c),a)}
function EmptyStatement(a){var x,p=pos,c;if(x=tbl[p][12]){pos=x[1];a.push([p,12]);return 1}if(x==false){return 0}c=[];return fin(c,p,12,_EmptyStatement(c),a)}
function ExprStatement(a){var x,p=pos,c;if(x=tbl[p][13]){pos=x[1];a.push([p,13]);return 1}if(x==false){return 0}c=[];return fin(c,p,13,_ExprStatement(c),a)}
function IfStatement(a){var x,p=pos,c;if(x=tbl[p][14]){pos=x[1];a.push([p,14]);return 1}if(x==false){return 0}c=[];return fin(c,p,14,_IfStatement(c),a)}
function IterationStatement(a){var x,p=pos,c;if(x=tbl[p][15]){pos=x[1];a.push([p,15]);return 1}if(x==false){return 0}c=[];return fin(c,p,15,_IterationStatement(c),a)}
function DoWhileStatement(a){var x,p=pos,c;if(x=tbl[p][16]){pos=x[1];a.push([p,16]);return 1}if(x==false){return 0}c=[];return fin(c,p,16,_DoWhileStatement(c),a)}
function WhileStatement(a){var x,p=pos,c;if(x=tbl[p][17]){pos=x[1];a.push([p,17]);return 1}if(x==false){return 0}c=[];return fin(c,p,17,_WhileStatement(c),a)}
function ForInStatement(a){var x,p=pos,c;if(x=tbl[p][18]){pos=x[1];a.push([p,18]);return 1}if(x==false){return 0}c=[];return fin(c,p,18,_ForInStatement(c),a)}
function ForStatement(a){var x,p=pos,c;if(x=tbl[p][19]){pos=x[1];a.push([p,19]);return 1}if(x==false){return 0}c=[];return fin(c,p,19,_ForStatement(c),a)}
function ContinueStatement(a){var x,p=pos,c;if(x=tbl[p][20]){pos=x[1];a.push([p,20]);return 1}if(x==false){return 0}c=[];return fin(c,p,20,_ContinueStatement(c),a)}
function BreakStatement(a){var x,p=pos,c;if(x=tbl[p][21]){pos=x[1];a.push([p,21]);return 1}if(x==false){return 0}c=[];return fin(c,p,21,_BreakStatement(c),a)}
function ReturnStatement(a){var x,p=pos,c;if(x=tbl[p][22]){pos=x[1];a.push([p,22]);return 1}if(x==false){return 0}c=[];return fin(c,p,22,_ReturnStatement(c),a)}
function WithStatement(a){var x,p=pos,c;if(x=tbl[p][23]){pos=x[1];a.push([p,23]);return 1}if(x==false){return 0}c=[];return fin(c,p,23,_WithStatement(c),a)}
function LabelledStatement(a){var x,p=pos,c;if(x=tbl[p][24]){pos=x[1];a.push([p,24]);return 1}if(x==false){return 0}c=[];return fin(c,p,24,_LabelledStatement(c),a)}
function SwitchStatement(a){var x,p=pos,c;if(x=tbl[p][25]){pos=x[1];a.push([p,25]);return 1}if(x==false){return 0}c=[];return fin(c,p,25,_SwitchStatement(c),a)}
function CaseClause(a){var x,p=pos,c;if(x=tbl[p][26]){pos=x[1];a.push([p,26]);return 1}if(x==false){return 0}c=[];return fin(c,p,26,_CaseClause(c),a)}
function DefaultClause(a){var x,p=pos,c;if(x=tbl[p][27]){pos=x[1];a.push([p,27]);return 1}if(x==false){return 0}c=[];return fin(c,p,27,_DefaultClause(c),a)}
function ThrowStatement(a){var x,p=pos,c;if(x=tbl[p][28]){pos=x[1];a.push([p,28]);return 1}if(x==false){return 0}c=[];return fin(c,p,28,_ThrowStatement(c),a)}
function TryStatement(a){var x,p=pos,c;if(x=tbl[p][29]){pos=x[1];a.push([p,29]);return 1}if(x==false){return 0}c=[];return fin(c,p,29,_TryStatement(c),a)}
function Catch(a){var x,p=pos,c;if(x=tbl[p][30]){pos=x[1];a.push([p,30]);return 1}if(x==false){return 0}c=[];return fin(c,p,30,_Catch(c),a)}
function Finally(a){var x,p=pos,c;if(x=tbl[p][31]){pos=x[1];a.push([p,31]);return 1}if(x==false){return 0}c=[];return fin(c,p,31,_Finally(c),a)}
function DebuggerStatement(a){var x,p=pos,c;if(x=tbl[p][32]){pos=x[1];a.push([p,32]);return 1}if(x==false){return 0}c=[];return fin(c,p,32,_DebuggerStatement(c),a)}
function Expr(a){var x,p=pos,c;if(x=tbl[p][33]){pos=x[1];a.push([p,33]);return 1}if(x==false){return 0}c=[];return fin(c,p,33,_Expr(c),a)}
function ExprNoIn(a){var x,p=pos,c;if(x=tbl[p][34]){pos=x[1];a.push([p,34]);return 1}if(x==false){return 0}c=[];return fin(c,p,34,_ExprNoIn(c),a)}
function AssignmentExpr(a){var x,p=pos,c;if(x=tbl[p][35]){pos=x[1];a.push([p,35]);return 1}if(x==false){return 0}c=[];return fin(c,p,35,_AssignmentExpr(c),a)}
function AssignmentExprNoIn(a){var x,p=pos,c;if(x=tbl[p][36]){pos=x[1];a.push([p,36]);return 1}if(x==false){return 0}c=[];return fin(c,p,36,_AssignmentExprNoIn(c),a)}
function AssignmentOperator(a){var x,p=pos,c;if(x=tbl[p][37]){pos=x[1];a.push([p,37]);return 1}if(x==false){return 0}c=[];return fin(c,p,37,_AssignmentOperator(c),a)}
function ConditionalExpr(a){var x,p=pos,c;if(x=tbl[p][38]){pos=x[1];a.push([p,38]);return 1}if(x==false){return 0}c=[];return fin(c,p,38,_ConditionalExpr(c),a)}
function ConditionalExprNoIn(a){var x,p=pos,c;if(x=tbl[p][39]){pos=x[1];a.push([p,39]);return 1}if(x==false){return 0}c=[];return fin(c,p,39,_ConditionalExprNoIn(c),a)}
function LogicalOrExpr(a){var x,p=pos,c;if(x=tbl[p][40]){pos=x[1];a.push([p,40]);return 1}if(x==false){return 0}c=[];return fin(c,p,40,_LogicalOrExpr(c),a)}
function LogicalOrExprNoIn(a){var x,p=pos,c;if(x=tbl[p][41]){pos=x[1];a.push([p,41]);return 1}if(x==false){return 0}c=[];return fin(c,p,41,_LogicalOrExprNoIn(c),a)}
function LogicalAndExpr(a){var x,p=pos,c;if(x=tbl[p][42]){pos=x[1];a.push([p,42]);return 1}if(x==false){return 0}c=[];return fin(c,p,42,_LogicalAndExpr(c),a)}
function LogicalAndExprNoIn(a){var x,p=pos,c;if(x=tbl[p][43]){pos=x[1];a.push([p,43]);return 1}if(x==false){return 0}c=[];return fin(c,p,43,_LogicalAndExprNoIn(c),a)}
function BitwiseOrExpr(a){var x,p=pos,c;if(x=tbl[p][44]){pos=x[1];a.push([p,44]);return 1}if(x==false){return 0}c=[];return fin(c,p,44,_BitwiseOrExpr(c),a)}
function BitwiseOrExprNoIn(a){var x,p=pos,c;if(x=tbl[p][45]){pos=x[1];a.push([p,45]);return 1}if(x==false){return 0}c=[];return fin(c,p,45,_BitwiseOrExprNoIn(c),a)}
function BitwiseXOrExpr(a){var x,p=pos,c;if(x=tbl[p][46]){pos=x[1];a.push([p,46]);return 1}if(x==false){return 0}c=[];return fin(c,p,46,_BitwiseXOrExpr(c),a)}
function BitwiseXOrExprNoIn(a){var x,p=pos,c;if(x=tbl[p][47]){pos=x[1];a.push([p,47]);return 1}if(x==false){return 0}c=[];return fin(c,p,47,_BitwiseXOrExprNoIn(c),a)}
function BitwiseAndExpr(a){var x,p=pos,c;if(x=tbl[p][48]){pos=x[1];a.push([p,48]);return 1}if(x==false){return 0}c=[];return fin(c,p,48,_BitwiseAndExpr(c),a)}
function BitwiseAndExprNoIn(a){var x,p=pos,c;if(x=tbl[p][49]){pos=x[1];a.push([p,49]);return 1}if(x==false){return 0}c=[];return fin(c,p,49,_BitwiseAndExprNoIn(c),a)}
function EqualityExpr(a){var x,p=pos,c;if(x=tbl[p][50]){pos=x[1];a.push([p,50]);return 1}if(x==false){return 0}c=[];return fin(c,p,50,_EqualityExpr(c),a)}
function EqualityExprNoIn(a){var x,p=pos,c;if(x=tbl[p][51]){pos=x[1];a.push([p,51]);return 1}if(x==false){return 0}c=[];return fin(c,p,51,_EqualityExprNoIn(c),a)}
function EqualityOp(a){var x,p=pos,c;if(x=tbl[p][52]){pos=x[1];a.push([p,52]);return 1}if(x==false){return 0}c=[];return fin(c,p,52,_EqualityOp(c),a)}
function RelationalExpr(a){var x,p=pos,c;if(x=tbl[p][53]){pos=x[1];a.push([p,53]);return 1}if(x==false){return 0}c=[];return fin(c,p,53,_RelationalExpr(c),a)}
function RelationalExprNoIn(a){var x,p=pos,c;if(x=tbl[p][54]){pos=x[1];a.push([p,54]);return 1}if(x==false){return 0}c=[];return fin(c,p,54,_RelationalExprNoIn(c),a)}
function RelationalOp(a){var x,p=pos,c;if(x=tbl[p][55]){pos=x[1];a.push([p,55]);return 1}if(x==false){return 0}c=[];return fin(c,p,55,_RelationalOp(c),a)}
function RelationalOpNoIn(a){var x,p=pos,c;if(x=tbl[p][56]){pos=x[1];a.push([p,56]);return 1}if(x==false){return 0}c=[];return fin(c,p,56,_RelationalOpNoIn(c),a)}
function ShiftExpr(a){var x,p=pos,c;if(x=tbl[p][57]){pos=x[1];a.push([p,57]);return 1}if(x==false){return 0}c=[];return fin(c,p,57,_ShiftExpr(c),a)}
function ShiftOp(a){var x,p=pos,c;if(x=tbl[p][58]){pos=x[1];a.push([p,58]);return 1}if(x==false){return 0}c=[];return fin(c,p,58,_ShiftOp(c),a)}
function AdditiveExpr(a){var x,p=pos,c;if(x=tbl[p][59]){pos=x[1];a.push([p,59]);return 1}if(x==false){return 0}c=[];return fin(c,p,59,_AdditiveExpr(c),a)}
function AdditiveOp(a){var x,p=pos,c;if(x=tbl[p][60]){pos=x[1];a.push([p,60]);return 1}if(x==false){return 0}c=[];return fin(c,p,60,_AdditiveOp(c),a)}
function MultiplicativeExpr(a){var x,p=pos,c;if(x=tbl[p][61]){pos=x[1];a.push([p,61]);return 1}if(x==false){return 0}c=[];return fin(c,p,61,_MultiplicativeExpr(c),a)}
function MultiplicativeOp(a){var x,p=pos,c;if(x=tbl[p][62]){pos=x[1];a.push([p,62]);return 1}if(x==false){return 0}c=[];return fin(c,p,62,_MultiplicativeOp(c),a)}
function UnaryExpr(a){var x,p=pos,c;if(x=tbl[p][63]){pos=x[1];a.push([p,63]);return 1}if(x==false){return 0}c=[];return fin(c,p,63,_UnaryExpr(c),a)}
function PostfixExpr(a){var x,p=pos,c;if(x=tbl[p][64]){pos=x[1];a.push([p,64]);return 1}if(x==false){return 0}c=[];return fin(c,p,64,_PostfixExpr(c),a)}
function LeftHandSideExpr(a){var x,p=pos,c;if(x=tbl[p][65]){pos=x[1];a.push([p,65]);return 1}if(x==false){return 0}c=[];return fin(c,p,65,_LeftHandSideExpr(c),a)}
function CallExpr(a){var x,p=pos,c;if(x=tbl[p][66]){pos=x[1];a.push([p,66]);return 1}if(x==false){return 0}c=[];return fin(c,p,66,_CallExpr(c),a)}
function Arguments(a){var x,p=pos,c;if(x=tbl[p][67]){pos=x[1];a.push([p,67]);return 1}if(x==false){return 0}c=[];return fin(c,p,67,_Arguments(c),a)}
function ArgumentList(a){var x,p=pos,c;if(x=tbl[p][68]){pos=x[1];a.push([p,68]);return 1}if(x==false){return 0}c=[];return fin(c,p,68,_ArgumentList(c),a)}
function NewExpr(a){var x,p=pos,c;if(x=tbl[p][69]){pos=x[1];a.push([p,69]);return 1}if(x==false){return 0}c=[];return fin(c,p,69,_NewExpr(c),a)}
function MemberExpr(a){var x,p=pos,c;if(x=tbl[p][70]){pos=x[1];a.push([p,70]);return 1}if(x==false){return 0}c=[];return fin(c,p,70,_MemberExpr(c),a)}
function PrimaryExpr(a){var x,p=pos,c;if(x=tbl[p][71]){pos=x[1];a.push([p,71]);return 1}if(x==false){return 0}c=[];return fin(c,p,71,_PrimaryExpr(c),a)}
function ArrayLiteral(a){var x,p=pos,c;if(x=tbl[p][72]){pos=x[1];a.push([p,72]);return 1}if(x==false){return 0}c=[];return fin(c,p,72,_ArrayLiteral(c),a)}
function ElementList(a){var x,p=pos,c;if(x=tbl[p][73]){pos=x[1];a.push([p,73]);return 1}if(x==false){return 0}c=[];return fin(c,p,73,_ElementList(c),a)}
function Elision(a){var x,p=pos,c;if(x=tbl[p][74]){pos=x[1];a.push([p,74]);return 1}if(x==false){return 0}c=[];return fin(c,p,74,_Elision(c),a)}
function ObjectLiteral(a){var x,p=pos,c;if(x=tbl[p][75]){pos=x[1];a.push([p,75]);return 1}if(x==false){return 0}c=[];return fin(c,p,75,_ObjectLiteral(c),a)}
function PropertyNameAndValueList(a){var x,p=pos,c;if(x=tbl[p][76]){pos=x[1];a.push([p,76]);return 1}if(x==false){return 0}c=[];return fin(c,p,76,_PropertyNameAndValueList(c),a)}
function PropertyAssignment(a){var x,p=pos,c;if(x=tbl[p][77]){pos=x[1];a.push([p,77]);return 1}if(x==false){return 0}c=[];return fin(c,p,77,_PropertyAssignment(c),a)}
function PropertyName(a){var x,p=pos,c;if(x=tbl[p][78]){pos=x[1];a.push([p,78]);return 1}if(x==false){return 0}c=[];return fin(c,p,78,_PropertyName(c),a)}
function PropertySetParameterList(a){var x,p=pos,c;if(x=tbl[p][79]){pos=x[1];a.push([p,79]);return 1}if(x==false){return 0}c=[];return fin(c,p,79,_PropertySetParameterList(c),a)}
function Literal(a){var x,p=pos,c;if(x=tbl[p][80]){pos=x[1];a.push([p,80]);return 1}if(x==false){return 0}c=[];return fin(c,p,80,_Literal(c),a)}
function NullLiteral(a){var x,p=pos,c;if(x=tbl[p][81]){pos=x[1];a.push([p,81]);return 1}if(x==false){return 0}c=[];return fin(c,p,81,_NullLiteral(c),a)}
function BooleanLiteral(a){var x,p=pos,c;if(x=tbl[p][82]){pos=x[1];a.push([p,82]);return 1}if(x==false){return 0}c=[];return fin(c,p,82,_BooleanLiteral(c),a)}
function NumericLiteral(a){var x,p=pos,c;if(x=tbl[p][83]){pos=x[1];a.push([p,83]);return 1}if(x==false){return 0}c=[];return fin(c,p,83,_NumericLiteral(c),a)}
function DecimalLiteral(a){var x,p=pos,c;if(x=tbl[p][84]){pos=x[1];a.push([p,84]);return 1}if(x==false){return 0}c=[];return fin(c,p,84,_DecimalLiteral(c),a)}
function DecimalIntegerLiteral(a){var x,p=pos,c;if(x=tbl[p][85]){pos=x[1];a.push([p,85]);return 1}if(x==false){return 0}c=[];return fin(c,p,85,_DecimalIntegerLiteral(c),a)}
function DecimalDigit(a){var x,p=pos,c;if(x=tbl[p][86]){pos=x[1];a.push([p,86]);return 1}if(x==false){return 0}c=[];return fin(c,p,86,_DecimalDigit(c),a)}
function ExponentPart(a){var x,p=pos,c;if(x=tbl[p][87]){pos=x[1];a.push([p,87]);return 1}if(x==false){return 0}c=[];return fin(c,p,87,_ExponentPart(c),a)}
function SignedInteger(a){var x,p=pos,c;if(x=tbl[p][88]){pos=x[1];a.push([p,88]);return 1}if(x==false){return 0}c=[];return fin(c,p,88,_SignedInteger(c),a)}
function HexIntegerLiteral(a){var x,p=pos,c;if(x=tbl[p][89]){pos=x[1];a.push([p,89]);return 1}if(x==false){return 0}c=[];return fin(c,p,89,_HexIntegerLiteral(c),a)}
function DQ(a){var x,p=pos,c;if(x=tbl[p][90]){pos=x[1];a.push([p,90]);return 1}if(x==false){return 0}c=[];return fin(c,p,90,_DQ(c),a)}
function SQ(a){var x,p=pos,c;if(x=tbl[p][91]){pos=x[1];a.push([p,91]);return 1}if(x==false){return 0}c=[];return fin(c,p,91,_SQ(c),a)}
function StringLiteral(a){var x,p=pos,c;if(x=tbl[p][92]){pos=x[1];a.push([p,92]);return 1}if(x==false){return 0}c=[];return fin(c,p,92,_StringLiteral(c),a)}
function RS(a){var x,p=pos,c;if(x=tbl[p][93]){pos=x[1];a.push([p,93]);return 1}if(x==false){return 0}c=[];return fin(c,p,93,_RS(c),a)}
function DoubleStringCharacter(a){var x,p=pos,c;if(x=tbl[p][94]){pos=x[1];a.push([p,94]);return 1}if(x==false){return 0}c=[];return fin(c,p,94,_DoubleStringCharacter(c),a)}
function SingleStringCharacter(a){var x,p=pos,c;if(x=tbl[p][95]){pos=x[1];a.push([p,95]);return 1}if(x==false){return 0}c=[];return fin(c,p,95,_SingleStringCharacter(c),a)}
function LineContinuation(a){var x,p=pos,c;if(x=tbl[p][96]){pos=x[1];a.push([p,96]);return 1}if(x==false){return 0}c=[];return fin(c,p,96,_LineContinuation(c),a)}
function EscapeSequence(a){var x,p=pos,c;if(x=tbl[p][97]){pos=x[1];a.push([p,97]);return 1}if(x==false){return 0}c=[];return fin(c,p,97,_EscapeSequence(c),a)}
function CharacterEscapeSequence(a){var x,p=pos,c;if(x=tbl[p][98]){pos=x[1];a.push([p,98]);return 1}if(x==false){return 0}c=[];return fin(c,p,98,_CharacterEscapeSequence(c),a)}
function SingleEscapeCharacter(a){var x,p=pos,c;if(x=tbl[p][99]){pos=x[1];a.push([p,99]);return 1}if(x==false){return 0}c=[];return fin(c,p,99,_SingleEscapeCharacter(c),a)}
function NonEscapeCharacter(a){var x,p=pos,c;if(x=tbl[p][100]){pos=x[1];a.push([p,100]);return 1}if(x==false){return 0}c=[];return fin(c,p,100,_NonEscapeCharacter(c),a)}
function EscapeCharacter(a){var x,p=pos,c;if(x=tbl[p][101]){pos=x[1];a.push([p,101]);return 1}if(x==false){return 0}c=[];return fin(c,p,101,_EscapeCharacter(c),a)}
function HexEscapeSequence(a){var x,p=pos,c;if(x=tbl[p][102]){pos=x[1];a.push([p,102]);return 1}if(x==false){return 0}c=[];return fin(c,p,102,_HexEscapeSequence(c),a)}
function UnicodeEscapeSequence(a){var x,p=pos,c;if(x=tbl[p][103]){pos=x[1];a.push([p,103]);return 1}if(x==false){return 0}c=[];return fin(c,p,103,_UnicodeEscapeSequence(c),a)}
function RegularExpressionLiteral(a){var x,p=pos,c;if(x=tbl[p][104]){pos=x[1];a.push([p,104]);return 1}if(x==false){return 0}c=[];return fin(c,p,104,_RegularExpressionLiteral(c),a)}
function RegularExpressionBody(a){var x,p=pos,c;if(x=tbl[p][105]){pos=x[1];a.push([p,105]);return 1}if(x==false){return 0}c=[];return fin(c,p,105,_RegularExpressionBody(c),a)}
function RegularExpressionFirstChar(a){var x,p=pos,c;if(x=tbl[p][106]){pos=x[1];a.push([p,106]);return 1}if(x==false){return 0}c=[];return fin(c,p,106,_RegularExpressionFirstChar(c),a)}
function RegularExpressionChar(a){var x,p=pos,c;if(x=tbl[p][107]){pos=x[1];a.push([p,107]);return 1}if(x==false){return 0}c=[];return fin(c,p,107,_RegularExpressionChar(c),a)}
function RegularExpressionBackslashSequence(a){var x,p=pos,c;if(x=tbl[p][108]){pos=x[1];a.push([p,108]);return 1}if(x==false){return 0}c=[];return fin(c,p,108,_RegularExpressionBackslashSequence(c),a)}
function RegularExpressionClass(a){var x,p=pos,c;if(x=tbl[p][109]){pos=x[1];a.push([p,109]);return 1}if(x==false){return 0}c=[];return fin(c,p,109,_RegularExpressionClass(c),a)}
function RegularExpressionClassChar(a){var x,p=pos,c;if(x=tbl[p][110]){pos=x[1];a.push([p,110]);return 1}if(x==false){return 0}c=[];return fin(c,p,110,_RegularExpressionClassChar(c),a)}
function RegularExpressionFlags(a){var x,p=pos,c;if(x=tbl[p][111]){pos=x[1];a.push([p,111]);return 1}if(x==false){return 0}c=[];return fin(c,p,111,_RegularExpressionFlags(c),a)}
function SourceCharacter(a){var x,p=pos,c;if(x=tbl[p][112]){pos=x[1];a.push([p,112]);return 1}if(x==false){return 0}c=[];return fin(c,p,112,_SourceCharacter(c),a)}
function WhiteSpace(a){var x,p=pos,c;if(x=tbl[p][113]){pos=x[1];a.push([p,113]);return 1}if(x==false){return 0}c=[];return fin(c,p,113,_WhiteSpace(c),a)}
function LF(a){var x,p=pos,c;if(x=tbl[p][114]){pos=x[1];a.push([p,114]);return 1}if(x==false){return 0}c=[];return fin(c,p,114,_LF(c),a)}
function CR(a){var x,p=pos,c;if(x=tbl[p][115]){pos=x[1];a.push([p,115]);return 1}if(x==false){return 0}c=[];return fin(c,p,115,_CR(c),a)}
function LS(a){var x,p=pos,c;if(x=tbl[p][116]){pos=x[1];a.push([p,116]);return 1}if(x==false){return 0}c=[];return fin(c,p,116,_LS(c),a)}
function PS(a){var x,p=pos,c;if(x=tbl[p][117]){pos=x[1];a.push([p,117]);return 1}if(x==false){return 0}c=[];return fin(c,p,117,_PS(c),a)}
function LineTerminator(a){var x,p=pos,c;if(x=tbl[p][118]){pos=x[1];a.push([p,118]);return 1}if(x==false){return 0}c=[];return fin(c,p,118,_LineTerminator(c),a)}
function LineTerminatorSequence(a){var x,p=pos,c;if(x=tbl[p][119]){pos=x[1];a.push([p,119]);return 1}if(x==false){return 0}c=[];return fin(c,p,119,_LineTerminatorSequence(c),a)}
function Comment(a){var x,p=pos,c;if(x=tbl[p][120]){pos=x[1];a.push([p,120]);return 1}if(x==false){return 0}c=[];return fin(c,p,120,_Comment(c),a)}
function MultiLineComment(a){var x,p=pos,c;if(x=tbl[p][121]){pos=x[1];a.push([p,121]);return 1}if(x==false){return 0}c=[];return fin(c,p,121,_MultiLineComment(c),a)}
function MultiLineCommentNoLB(a){var x,p=pos,c;if(x=tbl[p][122]){pos=x[1];a.push([p,122]);return 1}if(x==false){return 0}c=[];return fin(c,p,122,_MultiLineCommentNoLB(c),a)}
function SingleLineComment(a){var x,p=pos,c;if(x=tbl[p][123]){pos=x[1];a.push([p,123]);return 1}if(x==false){return 0}c=[];return fin(c,p,123,_SingleLineComment(c),a)}
function S(a){var x,p=pos,c;if(x=tbl[p][124]){pos=x[1];a.push([p,124]);return 1}if(x==false){return 0}c=[];return fin(c,p,124,_S(c),a)}
function SnoLB(a){var x,p=pos,c;if(x=tbl[p][125]){pos=x[1];a.push([p,125]);return 1}if(x==false){return 0}c=[];return fin(c,p,125,_SnoLB(c),a)}
function EOS(a){var x,p=pos,c;if(x=tbl[p][126]){pos=x[1];a.push([p,126]);return 1}if(x==false){return 0}c=[];return fin(c,p,126,_EOS(c),a)}
function EOSnoLB(a){var x,p=pos,c;if(x=tbl[p][127]){pos=x[1];a.push([p,127]);return 1}if(x==false){return 0}c=[];return fin(c,p,127,_EOSnoLB(c),a)}
function EOF(a){var x,p=pos,c;if(x=tbl[p][128]){pos=x[1];a.push([p,128]);return 1}if(x==false){return 0}c=[];return fin(c,p,128,_EOF(c),a)}
function ReservedWord(a){var x,p=pos,c;if(x=tbl[p][129]){pos=x[1];a.push([p,129]);return 1}if(x==false){return 0}c=[];return fin(c,p,129,_ReservedWord(c),a)}
function Keyword(a){var x,p=pos,c;if(x=tbl[p][130]){pos=x[1];a.push([p,130]);return 1}if(x==false){return 0}c=[];return fin(c,p,130,_Keyword(c),a)}
function FutureReservedWord(a){var x,p=pos,c;if(x=tbl[p][131]){pos=x[1];a.push([p,131]);return 1}if(x==false){return 0}c=[];return fin(c,p,131,_FutureReservedWord(c),a)}
function Identifier(a){var x,p=pos,c;if(x=tbl[p][132]){pos=x[1];a.push([p,132]);return 1}if(x==false){return 0}c=[];return fin(c,p,132,_Identifier(c),a)}
function IdentifierName(a){var x,p=pos,c;if(x=tbl[p][133]){pos=x[1];a.push([p,133]);return 1}if(x==false){return 0}c=[];return fin(c,p,133,_IdentifierName(c),a)}
function IdentifierStart(a){var x,p=pos,c;if(x=tbl[p][134]){pos=x[1];a.push([p,134]);return 1}if(x==false){return 0}c=[];return fin(c,p,134,_IdentifierStart(c),a)}
function IdentifierPart(a){var x,p=pos,c;if(x=tbl[p][135]){pos=x[1];a.push([p,135]);return 1}if(x==false){return 0}c=[];return fin(c,p,135,_IdentifierPart(c),a)}
function UnicodeLetter(a){var x,p=pos,c;if(x=tbl[p][136]){pos=x[1];a.push([p,136]);return 1}if(x==false){return 0}c=[];return fin(c,p,136,_UnicodeLetter(c),a)}
function HexDigit(a){var x,p=pos,c;if(x=tbl[p][137]){pos=x[1];a.push([p,137]);return 1}if(x==false){return 0}c=[];return fin(c,p,137,_HexDigit(c),a)}
function FalseTok(a){var x,p=pos,c;if(x=tbl[p][138]){pos=x[1];a.push([p,138]);return 1}if(x==false){return 0}c=[];return fin(c,p,138,_FalseTok(c),a)}
function TrueTok(a){var x,p=pos,c;if(x=tbl[p][139]){pos=x[1];a.push([p,139]);return 1}if(x==false){return 0}c=[];return fin(c,p,139,_TrueTok(c),a)}
function NullTok(a){var x,p=pos,c;if(x=tbl[p][140]){pos=x[1];a.push([p,140]);return 1}if(x==false){return 0}c=[];return fin(c,p,140,_NullTok(c),a)}
function BreakTok(a){var x,p=pos,c;if(x=tbl[p][141]){pos=x[1];a.push([p,141]);return 1}if(x==false){return 0}c=[];return fin(c,p,141,_BreakTok(c),a)}
function ContinueTok(a){var x,p=pos,c;if(x=tbl[p][142]){pos=x[1];a.push([p,142]);return 1}if(x==false){return 0}c=[];return fin(c,p,142,_ContinueTok(c),a)}
function DebuggerTok(a){var x,p=pos,c;if(x=tbl[p][143]){pos=x[1];a.push([p,143]);return 1}if(x==false){return 0}c=[];return fin(c,p,143,_DebuggerTok(c),a)}
function InTok(a){var x,p=pos,c;if(x=tbl[p][144]){pos=x[1];a.push([p,144]);return 1}if(x==false){return 0}c=[];return fin(c,p,144,_InTok(c),a)}
function InstanceOfTok(a){var x,p=pos,c;if(x=tbl[p][145]){pos=x[1];a.push([p,145]);return 1}if(x==false){return 0}c=[];return fin(c,p,145,_InstanceOfTok(c),a)}
function DeleteTok(a){var x,p=pos,c;if(x=tbl[p][146]){pos=x[1];a.push([p,146]);return 1}if(x==false){return 0}c=[];return fin(c,p,146,_DeleteTok(c),a)}
function FunctionTok(a){var x,p=pos,c;if(x=tbl[p][147]){pos=x[1];a.push([p,147]);return 1}if(x==false){return 0}c=[];return fin(c,p,147,_FunctionTok(c),a)}
function NewTok(a){var x,p=pos,c;if(x=tbl[p][148]){pos=x[1];a.push([p,148]);return 1}if(x==false){return 0}c=[];return fin(c,p,148,_NewTok(c),a)}
function ThisTok(a){var x,p=pos,c;if(x=tbl[p][149]){pos=x[1];a.push([p,149]);return 1}if(x==false){return 0}c=[];return fin(c,p,149,_ThisTok(c),a)}
function TypeofTok(a){var x,p=pos,c;if(x=tbl[p][150]){pos=x[1];a.push([p,150]);return 1}if(x==false){return 0}c=[];return fin(c,p,150,_TypeofTok(c),a)}
function VoidTok(a){var x,p=pos,c;if(x=tbl[p][151]){pos=x[1];a.push([p,151]);return 1}if(x==false){return 0}c=[];return fin(c,p,151,_VoidTok(c),a)}
function IfTok(a){var x,p=pos,c;if(x=tbl[p][152]){pos=x[1];a.push([p,152]);return 1}if(x==false){return 0}c=[];return fin(c,p,152,_IfTok(c),a)}
function ElseTok(a){var x,p=pos,c;if(x=tbl[p][153]){pos=x[1];a.push([p,153]);return 1}if(x==false){return 0}c=[];return fin(c,p,153,_ElseTok(c),a)}
function DoTok(a){var x,p=pos,c;if(x=tbl[p][154]){pos=x[1];a.push([p,154]);return 1}if(x==false){return 0}c=[];return fin(c,p,154,_DoTok(c),a)}
function WhileTok(a){var x,p=pos,c;if(x=tbl[p][155]){pos=x[1];a.push([p,155]);return 1}if(x==false){return 0}c=[];return fin(c,p,155,_WhileTok(c),a)}
function ForTok(a){var x,p=pos,c;if(x=tbl[p][156]){pos=x[1];a.push([p,156]);return 1}if(x==false){return 0}c=[];return fin(c,p,156,_ForTok(c),a)}
function VarTok(a){var x,p=pos,c;if(x=tbl[p][157]){pos=x[1];a.push([p,157]);return 1}if(x==false){return 0}c=[];return fin(c,p,157,_VarTok(c),a)}
function ReturnTok(a){var x,p=pos,c;if(x=tbl[p][158]){pos=x[1];a.push([p,158]);return 1}if(x==false){return 0}c=[];return fin(c,p,158,_ReturnTok(c),a)}
function CaseTok(a){var x,p=pos,c;if(x=tbl[p][159]){pos=x[1];a.push([p,159]);return 1}if(x==false){return 0}c=[];return fin(c,p,159,_CaseTok(c),a)}
function DefaultTok(a){var x,p=pos,c;if(x=tbl[p][160]){pos=x[1];a.push([p,160]);return 1}if(x==false){return 0}c=[];return fin(c,p,160,_DefaultTok(c),a)}
function SwitchTok(a){var x,p=pos,c;if(x=tbl[p][161]){pos=x[1];a.push([p,161]);return 1}if(x==false){return 0}c=[];return fin(c,p,161,_SwitchTok(c),a)}
function ThrowTok(a){var x,p=pos,c;if(x=tbl[p][162]){pos=x[1];a.push([p,162]);return 1}if(x==false){return 0}c=[];return fin(c,p,162,_ThrowTok(c),a)}
function CatchTok(a){var x,p=pos,c;if(x=tbl[p][163]){pos=x[1];a.push([p,163]);return 1}if(x==false){return 0}c=[];return fin(c,p,163,_CatchTok(c),a)}
function FinallyTok(a){var x,p=pos,c;if(x=tbl[p][164]){pos=x[1];a.push([p,164]);return 1}if(x==false){return 0}c=[];return fin(c,p,164,_FinallyTok(c),a)}
function TryTok(a){var x,p=pos,c;if(x=tbl[p][165]){pos=x[1];a.push([p,165]);return 1}if(x==false){return 0}c=[];return fin(c,p,165,_TryTok(c),a)}
function WithTok(a){var x,p=pos,c;if(x=tbl[p][166]){pos=x[1];a.push([p,166]);return 1}if(x==false){return 0}c=[];return fin(c,p,166,_WithTok(c),a)}
var _Program=q(r(0,0,q(r(0,1,S),o(Statement,FunctionDeclaration))),r(0,1,S))
var _FunctionBody=q(r(0,0,q(r(0,1,S),o(Statement,FunctionDeclaration))),r(0,1,S))
var _FunctionDeclaration=q(FunctionTok,r(0,1,S),Identifier,r(0,1,S),sl_0,r(0,1,S),r(0,1,FormalParameterList),r(0,1,S),sl_1,r(0,1,S),sl_2,r(0,1,S),FunctionBody,r(0,1,S),sl_3)
var _FunctionExpr=q(FunctionTok,r(0,1,S),r(0,1,Identifier),r(0,1,S),sl_0,r(0,1,S),r(0,1,FormalParameterList),r(0,1,S),sl_1,r(0,1,S),sl_2,r(0,1,S),FunctionBody,r(0,1,S),sl_3)
var _FormalParameterList=q(Identifier,r(0,0,q(sl_4,r(0,1,S),Identifier)))
var _UseStrictDirective=q(sl_5,S,sl_6,S,r(0,0,q(sl_4,n(LineTerminator),SourceCharacter)))
var _Statement=o(Block,VariableStatement,EmptyStatement,ExprStatement,IfStatement,IterationStatement,ContinueStatement,BreakStatement,ReturnStatement,WithStatement,LabelledStatement,SwitchStatement,ThrowStatement,TryStatement,DebuggerStatement)
var _Block=q(sl_2,r(0,0,q(r(0,1,S),Statement)),r(0,1,S),sl_3)
var _VariableStatement=q(VarTok,r(0,1,S),VariableDeclaration,r(0,0,q(r(0,1,S),sl_4,r(0,1,S),VariableDeclaration)),EOS)
var _VariableDeclarationListNoIn=q(VariableDeclarationNoIn,r(0,0,q(r(0,1,S),sl_4,r(0,1,S),VariableDeclarationNoIn)))
var _VariableDeclaration=q(Identifier,r(0,1,q(r(0,1,S),sl_7,n(sl_7),r(0,1,S),AssignmentExpr)))
var _VariableDeclarationNoIn=q(Identifier,r(0,1,q(r(0,1,S),sl_7,n(sl_7),r(0,1,S),AssignmentExprNoIn)))
var _EmptyStatement=sl_8
var _ExprStatement=q(n(o(sl_2,FunctionTok)),Expr,EOS)
var _IfStatement=q(IfTok,r(0,1,S),sl_0,r(0,1,S),Expr,r(0,1,S),sl_1,r(0,1,S),Statement,r(0,1,q(r(0,1,S),ElseTok,r(0,1,S),Statement)))
var _IterationStatement=o(DoWhileStatement,WhileStatement,ForInStatement,ForStatement)
var _DoWhileStatement=q(DoTok,r(0,1,S),Statement,r(0,1,S),WhileTok,r(0,1,S),sl_0,r(0,1,S),Expr,r(0,1,S),sl_1,EOS)
var _WhileStatement=q(WhileTok,r(0,1,S),sl_0,r(0,1,S),Expr,r(0,1,S),sl_1,r(0,1,S),Statement)
var _ForInStatement=o(q(ForTok,r(0,1,S),sl_0,r(0,1,S),LeftHandSideExpr,r(0,1,S),InTok,r(0,1,S),Expr,r(0,1,S),sl_1,r(0,1,S),Statement),q(ForTok,r(0,1,S),sl_0,r(0,1,S),VarTok,r(0,1,S),VariableDeclarationNoIn,r(0,1,S),InTok,r(0,1,S),Expr,r(0,1,S),sl_1,r(0,1,S),Statement))
var _ForStatement=o(q(ForTok,r(0,1,S),sl_0,r(0,1,S),r(0,1,ExprNoIn),r(0,1,S),sl_8,r(0,1,S),r(0,1,Expr),r(0,1,S),sl_8,r(0,1,S),r(0,1,Expr),r(0,1,S),sl_1,r(0,1,S),Statement),q(ForTok,r(0,1,S),sl_0,r(0,1,S),VarTok,r(0,1,S),VariableDeclarationListNoIn,r(0,1,S),sl_8,r(0,1,S),r(0,1,Expr),r(0,1,S),sl_8,r(0,1,S),r(0,1,Expr),r(0,1,S),sl_1,r(0,1,S),Statement))
var _ContinueStatement=q(ContinueTok,r(0,1,SnoLB),o(q(Identifier,EOS),EOSnoLB))
var _BreakStatement=q(BreakTok,r(0,1,SnoLB),o(q(Identifier,EOS),EOSnoLB))
var _ReturnStatement=q(ReturnTok,r(0,1,SnoLB),o(EOSnoLB,q(Expr,EOS)))
var _WithStatement=q(WithTok,r(0,1,S),sl_0,r(0,1,S),Expr,r(0,1,S),sl_1,r(0,1,S),Statement)
var _LabelledStatement=q(Identifier,r(0,1,S),sl_9,r(0,1,S),Statement)
var _SwitchStatement=q(SwitchTok,r(0,1,S),sl_0,r(0,1,S),Expr,r(0,1,S),sl_1,r(0,1,S),sl_2,r(0,0,CaseClause),r(0,1,q(DefaultClause,r(0,0,CaseClause))),r(0,1,S),sl_3)
var _CaseClause=q(r(0,1,S),CaseTok,r(0,1,S),Expr,r(0,1,S),sl_9,r(0,0,q(r(0,1,S),Statement)))
var _DefaultClause=q(r(0,1,S),DefaultTok,r(0,1,S),sl_9,r(0,0,q(r(0,1,S),Statement)))
var _ThrowStatement=q(ThrowTok,r(0,1,SnoLB),o(EOSnoLB,q(Expr,EOS)))
var _TryStatement=q(TryTok,r(0,1,S),Block,r(0,1,S),o(q(Catch,r(0,1,S),r(0,1,Finally)),Finally))
var _Catch=q(CatchTok,r(0,1,S),sl_0,r(0,1,S),Identifier,r(0,1,S),sl_1,r(0,1,S),Block)
var _Finally=q(FinallyTok,r(0,1,S),Block)
var _DebuggerStatement=q(DebuggerTok,r(0,1,S),EOS)
var _Expr=q(AssignmentExpr,r(0,0,q(r(0,1,S),sl_4,r(0,1,S),AssignmentExpr)))
var _ExprNoIn=q(AssignmentExprNoIn,r(0,0,q(r(0,1,S),sl_4,r(0,1,S),AssignmentExprNoIn)))
var _AssignmentExpr=o(q(LeftHandSideExpr,r(0,1,S),AssignmentOperator,r(0,1,S),AssignmentExpr),ConditionalExpr)
var _AssignmentExprNoIn=o(q(LeftHandSideExpr,r(0,1,S),AssignmentOperator,r(0,1,S),AssignmentExprNoIn),ConditionalExprNoIn)
var _AssignmentOperator=o(q(sl_7,n(sl_7)),sl_10,sl_11,sl_12,sl_13,sl_14,sl_15,sl_16,sl_17,sl_18,sl_19,sl_20)
var _ConditionalExpr=q(LogicalOrExpr,r(0,1,q(r(0,1,S),sl_21,r(0,1,S),AssignmentExpr,r(0,1,S),sl_9,r(0,1,S),AssignmentExpr)))
var _ConditionalExprNoIn=q(LogicalOrExprNoIn,r(0,1,q(r(0,1,S),sl_21,r(0,1,S),AssignmentExprNoIn,r(0,1,S),sl_9,r(0,1,S),AssignmentExprNoIn)))
var _LogicalOrExpr=q(LogicalAndExpr,r(0,0,q(r(0,1,S),sl_22,r(0,1,S),LogicalAndExpr)))
var _LogicalOrExprNoIn=q(LogicalAndExprNoIn,r(0,0,q(r(0,1,S),sl_22,r(0,1,S),LogicalAndExprNoIn)))
var _LogicalAndExpr=q(BitwiseOrExpr,r(0,0,q(r(0,1,S),sl_23,r(0,1,S),BitwiseOrExpr)))
var _LogicalAndExprNoIn=q(BitwiseOrExprNoIn,r(0,0,q(r(0,1,S),sl_23,r(0,1,S),BitwiseOrExprNoIn)))
var _BitwiseOrExpr=q(BitwiseXOrExpr,r(0,0,q(r(0,1,S),sl_24,n(sl_7),r(0,1,S),BitwiseXOrExpr)))
var _BitwiseOrExprNoIn=q(BitwiseXOrExprNoIn,r(0,0,q(r(0,1,S),sl_24,n(sl_7),r(0,1,S),BitwiseXOrExprNoIn)))
var _BitwiseXOrExpr=q(BitwiseAndExpr,r(0,0,q(r(0,1,S),sl_25,n(sl_7),r(0,1,S),BitwiseAndExpr)))
var _BitwiseXOrExprNoIn=q(BitwiseAndExprNoIn,r(0,0,q(r(0,1,S),sl_25,n(sl_7),r(0,1,S),BitwiseAndExprNoIn)))
var _BitwiseAndExpr=q(EqualityExpr,r(0,0,q(r(0,1,S),sl_26,n(sl_7),r(0,1,S),EqualityExpr)))
var _BitwiseAndExprNoIn=q(EqualityExprNoIn,r(0,0,q(r(0,1,S),sl_26,n(sl_7),r(0,1,S),EqualityExprNoIn)))
var _EqualityExpr=q(RelationalExpr,r(0,0,q(r(0,1,S),EqualityOp,r(0,1,S),RelationalExpr)))
var _EqualityExprNoIn=q(RelationalExprNoIn,r(0,0,q(r(0,1,S),EqualityOp,r(0,1,S),RelationalExprNoIn)))
var _EqualityOp=o(sl_27,sl_28,sl_29,sl_30)
var _RelationalExpr=q(ShiftExpr,r(0,0,q(r(0,1,S),RelationalOp,r(0,1,S),ShiftExpr)))
var _RelationalExprNoIn=q(ShiftExpr,r(0,0,q(r(0,1,S),RelationalOpNoIn,r(0,1,S),ShiftExpr)))
var _RelationalOp=o(sl_31,sl_32,sl_33,sl_34,InstanceOfTok,InTok)
var _RelationalOpNoIn=o(sl_31,sl_32,sl_33,sl_34,InstanceOfTok)
var _ShiftExpr=q(AdditiveExpr,r(0,0,q(r(0,1,S),ShiftOp,r(0,1,S),AdditiveExpr)))
var _ShiftOp=o(sl_35,sl_36,sl_37)
var _AdditiveExpr=q(MultiplicativeExpr,r(0,0,q(r(0,1,S),AdditiveOp,r(0,1,S),MultiplicativeExpr)))
var _AdditiveOp=o(q(sl_38,n(o(sl_38,sl_7))),q(sl_39,n(o(sl_39,sl_7))))
var _MultiplicativeExpr=q(UnaryExpr,r(0,0,q(r(0,1,S),MultiplicativeOp,r(0,1,S),UnaryExpr)))
var _MultiplicativeOp=q(o(sl_40,sl_41,sl_42),n(sl_7))
var _UnaryExpr=o(PostfixExpr,q(DeleteTok,r(0,1,S),UnaryExpr),q(VoidTok,r(0,1,S),UnaryExpr),q(TypeofTok,r(0,1,S),UnaryExpr),q(sl_43,r(0,1,S),UnaryExpr),q(sl_44,r(0,1,S),UnaryExpr),q(sl_38,r(0,1,S),UnaryExpr),q(sl_39,r(0,1,S),UnaryExpr),q(sl_45,r(0,1,S),UnaryExpr),q(sl_46,r(0,1,S),UnaryExpr))
var _PostfixExpr=q(LeftHandSideExpr,r(0,1,q(r(0,1,SnoLB),o(sl_43,sl_44))))
var _LeftHandSideExpr=o(CallExpr,NewExpr)
var _CallExpr=q(MemberExpr,r(0,1,S),Arguments,r(0,0,o(q(r(0,1,S),Arguments),q(r(0,1,S),sl_47,r(0,1,S),Expr,r(0,1,S),sl_48),q(r(0,1,S),sl_49,r(0,1,S),IdentifierName))))
var _Arguments=q(sl_0,r(0,1,S),r(0,1,ArgumentList),r(0,1,S),sl_1)
var _ArgumentList=q(AssignmentExpr,r(0,0,q(r(0,1,S),sl_4,r(0,1,S),AssignmentExpr)))
var _NewExpr=o(MemberExpr,q(NewTok,r(0,1,S),NewExpr))
var _MemberExpr=q(o(PrimaryExpr,FunctionExpr,q(NewTok,r(0,1,S),MemberExpr,r(0,1,S),Arguments)),r(0,0,o(q(r(0,1,S),sl_47,r(0,1,S),Expr,r(0,1,S),sl_48),q(r(0,1,S),sl_49,r(0,1,S),IdentifierName))))
var _PrimaryExpr=o(ThisTok,Identifier,Literal,ArrayLiteral,ObjectLiteral,q(sl_0,r(0,1,S),Expr,r(0,1,S),sl_1))
var _ArrayLiteral=o(q(sl_47,r(0,1,Elision),r(0,1,S),sl_48),q(sl_47,ElementList,r(0,1,S),sl_48),q(sl_47,ElementList,r(0,1,S),sl_4,r(0,1,Elision),r(0,1,S),sl_48))
var _ElementList=q(r(0,1,Elision),r(0,1,S),AssignmentExpr,r(0,0,q(r(0,1,S),sl_4,r(0,1,Elision),r(0,1,S),AssignmentExpr)))
var _Elision=r(1,0,q(r(0,1,S),sl_4))
var _ObjectLiteral=q(sl_2,r(0,1,q(r(0,1,S),PropertyNameAndValueList,r(0,1,S),r(0,1,sl_4))),r(0,1,S),sl_3)
var _PropertyNameAndValueList=q(PropertyAssignment,r(0,0,q(r(0,1,S),sl_4,r(0,1,S),PropertyAssignment)))
var _PropertyAssignment=o(q(PropertyName,r(0,1,S),sl_9,r(0,1,S),AssignmentExpr),q(sl_50,r(0,1,S),PropertyName,r(0,1,S),sl_0,r(0,1,S),sl_1,r(0,1,S),sl_2,r(0,1,S),FunctionBody,r(0,1,S),sl_3),q(sl_51,r(0,1,S),PropertyName,r(0,1,S),sl_0,r(0,1,S),PropertySetParameterList,r(0,1,S),sl_1,r(0,1,S),sl_2,r(0,1,S),FunctionBody,r(0,1,S),sl_3))
var _PropertyName=o(IdentifierName,StringLiteral,NumericLiteral)
var _PropertySetParameterList=Identifier
var _Literal=o(NullLiteral,BooleanLiteral,NumericLiteral,StringLiteral,RegularExpressionLiteral)
var _NullLiteral=NullTok
var _BooleanLiteral=o(TrueTok,FalseTok)
var _NumericLiteral=o(q(DecimalLiteral,n(IdentifierStart)),q(HexIntegerLiteral,n(IdentifierStart)))
var _DecimalLiteral=o(q(DecimalIntegerLiteral,sl_49,r(0,0,DecimalDigit),r(0,1,ExponentPart)),q(sl_49,r(1,0,DecimalDigit),r(0,1,ExponentPart)),q(DecimalIntegerLiteral,r(0,1,ExponentPart)))
var _DecimalIntegerLiteral=o(sl_52,q(cs_0,r(0,0,DecimalDigit)))
var _DecimalDigit=cs_1
var _ExponentPart=q(cs_2,SignedInteger)
var _SignedInteger=o(r(1,0,DecimalDigit),q(sl_38,r(1,0,DecimalDigit)),q(sl_39,r(1,0,DecimalDigit)))
var _HexIntegerLiteral=o(q(sl_53,r(1,0,HexDigit)),q(sl_54,r(1,0,HexDigit)))
var _DQ=cs_3
var _SQ=cs_4
var _StringLiteral=o(q(DQ,r(0,0,DoubleStringCharacter),DQ),q(SQ,r(0,0,SingleStringCharacter),SQ))
var _RS=cs_5
var _DoubleStringCharacter=o(q(n(o(DQ,RS,LineTerminator)),SourceCharacter),q(RS,EscapeSequence),LineContinuation)
var _SingleStringCharacter=o(q(n(o(SQ,RS,LineTerminator)),SourceCharacter),q(RS,EscapeSequence),LineContinuation)
var _LineContinuation=q(RS,LineTerminatorSequence)
var _EscapeSequence=o(CharacterEscapeSequence,q(sl_52,n(DecimalDigit)),HexEscapeSequence,UnicodeEscapeSequence)
var _CharacterEscapeSequence=o(SingleEscapeCharacter,NonEscapeCharacter)
var _SingleEscapeCharacter=cs_6
var _NonEscapeCharacter=q(n(o(EscapeCharacter,LineTerminator)),SourceCharacter)
var _EscapeCharacter=o(SingleEscapeCharacter,DecimalDigit,cs_7)
var _HexEscapeSequence=q(sl_55,HexDigit,HexDigit)
var _UnicodeEscapeSequence=q(sl_56,r(4,4,HexDigit))
var _RegularExpressionLiteral=q(sl_41,RegularExpressionBody,sl_41,RegularExpressionFlags)
var _RegularExpressionBody=q(RegularExpressionFirstChar,r(0,0,RegularExpressionChar))
var _RegularExpressionFirstChar=o(q(n(o(LineTerminator,cs_8)),SourceCharacter),RegularExpressionBackslashSequence,RegularExpressionClass)
var _RegularExpressionChar=o(q(n(o(LineTerminator,cs_9)),SourceCharacter),RegularExpressionBackslashSequence,RegularExpressionClass)
var _RegularExpressionBackslashSequence=q(RS,n(LineTerminator),SourceCharacter)
var _RegularExpressionClass=q(sl_47,r(0,0,RegularExpressionClassChar),sl_48)
var _RegularExpressionClassChar=o(q(n(o(LineTerminator,cs_10)),SourceCharacter),RegularExpressionBackslashSequence)
var _RegularExpressionFlags=r(0,0,IdentifierPart)
var _SourceCharacter=cs_11
var _WhiteSpace=cs_12
var _LF=cs_13
var _CR=cs_14
var _LS=cs_15
var _PS=cs_16
var _LineTerminator=o(LF,CR,LS,PS)
var _LineTerminatorSequence=o(LF,q(CR,LF),CR,LS,PS)
var _Comment=o(MultiLineComment,SingleLineComment)
var _MultiLineComment=q(sl_57,r(0,0,q(n(sl_58),SourceCharacter)),sl_58)
var _MultiLineCommentNoLB=q(sl_57,r(0,0,q(n(sl_58),n(LineTerminator),SourceCharacter)),sl_58)
var _SingleLineComment=q(sl_59,r(0,0,cs_17))
var _S=r(1,0,o(WhiteSpace,LineTerminatorSequence,Comment))
var _SnoLB=r(1,0,o(WhiteSpace,SingleLineComment,MultiLineCommentNoLB))
var _EOS=o(q(r(0,1,S),sl_8),q(r(0,1,SnoLB),LineTerminatorSequence),q(r(0,1,SnoLB),p(sl_3)),q(r(0,1,S),EOF))
var _EOSnoLB=o(q(r(0,1,SnoLB),sl_8),q(r(0,1,SnoLB),LineTerminatorSequence),q(r(0,1,SnoLB),p(sl_3)),q(r(0,1,SnoLB),EOF))
var _EOF=n(SourceCharacter)
var _ReservedWord=q(o(Keyword,FutureReservedWord,sl_60,sl_61,sl_62),n(IdentifierPart))
var _Keyword=o(sl_63,sl_64,sl_65,sl_66,sl_67,sl_68,sl_69,sl_70,sl_71,sl_72,sl_73,sl_74,sl_75,sl_76,sl_77,sl_78,sl_79,sl_80,sl_81,sl_82,sl_83,sl_84,sl_85,sl_86,sl_87,sl_88)
var _FutureReservedWord=o(sl_89,sl_90,sl_91,sl_92,sl_93,sl_94,sl_95,sl_96,sl_97,sl_98,sl_99,sl_100,sl_101,sl_102,sl_103,sl_104,sl_105,sl_106,sl_107,sl_108,sl_109,sl_110,sl_111,sl_112,sl_113,sl_114,sl_115,sl_116,sl_117,sl_118)
var _Identifier=q(n(ReservedWord),IdentifierName)
var _IdentifierName=q(IdentifierStart,r(0,0,IdentifierPart))
var _IdentifierStart=o(UnicodeLetter,sl_119,sl_120,q(RS,UnicodeEscapeSequence))
var _IdentifierPart=o(IdentifierStart,cs_18)
var _UnicodeLetter=cs_19
var _HexDigit=cs_20
var _FalseTok=q(sl_62,n(IdentifierPart))
var _TrueTok=q(sl_61,n(IdentifierPart))
var _NullTok=q(sl_60,n(IdentifierPart))
var _BreakTok=q(sl_63,n(IdentifierPart))
var _ContinueTok=q(sl_66,n(IdentifierPart))
var _DebuggerTok=q(sl_67,n(IdentifierPart))
var _InTok=q(sl_77,n(IdentifierPart))
var _InstanceOfTok=q(sl_76,n(IdentifierPart))
var _DeleteTok=q(sl_69,n(IdentifierPart))
var _FunctionTok=q(sl_74,n(IdentifierPart))
var _NewTok=q(sl_78,n(IdentifierPart))
var _ThisTok=q(sl_81,n(IdentifierPart))
var _TypeofTok=q(sl_84,n(IdentifierPart))
var _VoidTok=q(sl_86,n(IdentifierPart))
var _IfTok=q(sl_75,n(IdentifierPart))
var _ElseTok=q(sl_71,n(IdentifierPart))
var _DoTok=q(sl_70,n(IdentifierPart))
var _WhileTok=q(sl_87,n(IdentifierPart))
var _ForTok=q(sl_73,n(IdentifierPart))
var _VarTok=q(sl_85,n(IdentifierPart))
var _ReturnTok=q(sl_79,n(IdentifierPart))
var _CaseTok=q(sl_64,n(IdentifierPart))
var _DefaultTok=q(sl_68,n(IdentifierPart))
var _SwitchTok=q(sl_80,n(IdentifierPart))
var _ThrowTok=q(sl_82,n(IdentifierPart))
var _CatchTok=q(sl_65,n(IdentifierPart))
var _FinallyTok=q(sl_72,n(IdentifierPart))
var _TryTok=q(sl_83,n(IdentifierPart))
var _WithTok=q(sl_88,n(IdentifierPart))
function cs_0(){var c,x;if(pos==l)return false;c=g(pos);x=c<49?0:c<58?1:0;if(x){pos++;return true}return false}
function cs_1(){var c,x;if(pos==l)return false;c=g(pos);x=c<48?0:c<58?1:0;if(x){pos++;return true}return false}
function cs_2(){var c,x;if(pos==l)return false;c=g(pos);x=c<70?c<69?0:1:c<101?0:c<102?1:0;if(x){pos++;return true}return false}
function cs_3(){var c,x;if(pos==l)return false;c=g(pos);x=c<34?0:c<35?1:0;if(x){pos++;return true}return false}
function cs_4(){var c,x;if(pos==l)return false;c=g(pos);x=c<39?0:c<40?1:0;if(x){pos++;return true}return false}
function cs_5(){var c,x;if(pos==l)return false;c=g(pos);x=c<92?0:c<93?1:0;if(x){pos++;return true}return false}
function cs_6(){var c,x;if(pos==l)return false;c=g(pos);x=c<102?c<40?c<35?c<34?0:1:c<39?0:1:c<93?c<92?0:1:c<98?0:c<99?1:0:c<115?c<110?c<103?1:0:c<111?1:c<114?0:1:c<117?c<116?0:1:c<118?0:c<119?1:0;if(x){pos++;return true}return false}
function cs_7(){var c,x;if(pos==l)return false;c=g(pos);x=c<118?c<117?0:1:c<120?0:c<121?1:0;if(x){pos++;return true}return false}
function cs_8(){var c,x;if(pos==l)return false;c=g(pos);x=c<47?c<42?0:c<43?1:0:c<91?c<48?1:0:c<93?1:0;if(x){pos++;return true}return false}
function cs_9(){var c,x;if(pos==l)return false;c=g(pos);x=c<48?c<47?0:1:c<91?0:c<93?1:0;if(x){pos++;return true}return false}
function cs_10(){var c,x;if(pos==l)return false;c=g(pos);x=c<92?0:c<94?1:0;if(x){pos++;return true}return false}
function cs_11(){var c,x;if(pos==l)return false;c=g(pos);x=c<0?0:c<1114112?1:0;if(x){pos++;return true}return false}
function cs_12(){var c,x;if(pos==l)return false;c=g(pos);x=c<5761?c<33?c<11?c<9?0:c<10?1:0:c<13?1:c<32?0:1:c<160?c<133?0:c<134?1:0:c<161?1:c<5760?0:1:c<8240?c<8192?c<6158?0:c<6159?1:0:c<8204?1:c<8239?0:1:c<12288?c<8287?0:c<8288?1:0:c<65279?c<12289?1:0:c<65280?1:0;if(x){pos++;return true}return false}
function cs_13(){var c,x;if(pos==l)return false;c=g(pos);x=c<10?0:c<11?1:0;if(x){pos++;return true}return false}
function cs_14(){var c,x;if(pos==l)return false;c=g(pos);x=c<13?0:c<14?1:0;if(x){pos++;return true}return false}
function cs_15(){var c,x;if(pos==l)return false;c=g(pos);x=c<8232?0:c<8233?1:0;if(x){pos++;return true}return false}
function cs_16(){var c,x;if(pos==l)return false;c=g(pos);x=c<8233?0:c<8234?1:0;if(x){pos++;return true}return false}
function cs_17(){var c,x;if(pos==l)return false;c=g(pos);x=c<13?c<10?c<0?0:1:c<11?0:1:c<8232?c<14?0:1:c<8234?0:1;if(x){pos++;return true}return false}
function cs_18(){var c,x;if(pos==l)return false;c=g(pos);if(c<3031)x=c<2501?c<1769?c<1478?c<1160?c<96?c<58?c<48?0:1:c<95?0:1:c<880?c<768?0:1:c<1155?0:1:c<1472?c<1470?c<1425?0:1:c<1471?0:1:c<1475?c<1473?0:1:c<1476?0:1:c<1642?c<1563?c<1480?c<1479?0:1:c<1552?0:1:c<1631?c<1611?0:1:c<1632?0:1:c<1757?c<1649?c<1648?0:1:c<1750?0:1:c<1765?c<1759?0:1:c<1767?0:1:c<2308?c<1867?c<1786?c<1774?c<1770?0:1:c<1776?0:1:c<1810?c<1809?0:1:c<1840?0:1:c<1994?c<1969?c<1958?0:1:c<1984?0:1:c<2036?c<2027?0:1:c<2305?0:1:c<2404?c<2382?c<2365?c<2364?0:1:c<2366?0:1:c<2389?c<2385?0:1:c<2402?0:1:c<2436?c<2416?c<2406?0:1:c<2433?0:1:c<2493?c<2492?0:1:c<2494?0:1:c<2758?c<2627?c<2532?c<2510?c<2505?c<2503?0:1:c<2507?0:1:c<2520?c<2519?0:1:c<2530?0:1:c<2564?c<2544?c<2534?0:1:c<2561?0:1:c<2621?c<2620?0:1:c<2622?0:1:c<2674?c<2638?c<2633?c<2631?0:1:c<2635?0:1:c<2642?c<2641?0:1:c<2662?0:1:c<2692?c<2678?c<2677?0:1:c<2689?0:1:c<2749?c<2748?0:1:c<2750?0:1:c<2889?c<2800?c<2766?c<2762?c<2759?0:1:c<2763?0:1:c<2788?c<2786?0:1:c<2790?0:1:c<2877?c<2820?c<2817?0:1:c<2876?0:1:c<2885?c<2878?0:1:c<2887?0:1:c<2928?c<2904?c<2894?c<2891?0:1:c<2902?0:1:c<2916?c<2914?0:1:c<2918?0:1:c<3011?c<2947?c<2946?0:1:c<3006?0:1:c<3017?c<3014?0:1:c<3018?0:c<3022?1:0;else if(c<6070)x=c<3643?c<3300?c<3172?c<3141?c<3056?c<3032?c<3031?0:1:c<3046?0:1:c<3076?c<3073?0:1:c<3134?0:1:c<3150?c<3145?c<3142?0:1:c<3146?0:1:c<3159?c<3157?0:1:c<3170?0:1:c<3269?c<3204?c<3184?c<3174?0:1:c<3202?0:1:c<3261?c<3260?0:1:c<3262?0:1:c<3278?c<3273?c<3270?0:1:c<3274?0:1:c<3287?c<3285?0:1:c<3298?0:1:c<3440?c<3401?c<3332?c<3312?c<3302?0:1:c<3330?0:1:c<3397?c<3390?0:1:c<3398?0:1:c<3416?c<3406?c<3402?0:1:c<3415?0:1:c<3428?c<3426?0:1:c<3430?0:1:c<3543?c<3531?c<3460?c<3458?0:1:c<3530?0:1:c<3541?c<3535?0:1:c<3542?0:1:c<3572?c<3552?c<3544?0:1:c<3570?0:1:c<3634?c<3633?0:1:c<3636?0:1:c<3992?c<3866?c<3770?c<3674?c<3663?c<3655?0:1:c<3664?0:1:c<3762?c<3761?0:1:c<3764?0:1:c<3790?c<3773?c<3771?0:1:c<3784?0:1:c<3802?c<3792?0:1:c<3864?0:1:c<3898?c<3894?c<3882?c<3872?0:1:c<3893?0:1:c<3896?c<3895?0:1:c<3897?0:1:c<3973?c<3904?c<3902?0:1:c<3953?0:1:c<3976?c<3974?0:1:c<3984?0:1:c<4206?c<4170?c<4039?c<4029?c<3993?0:1:c<4038?0:1:c<4159?c<4139?0:1:c<4160?0:1:c<4193?c<4186?c<4182?0:1:c<4190?0:1:c<4197?c<4194?0:1:c<4199?0:1:c<4960?c<4238?c<4213?c<4209?0:1:c<4226?0:1:c<4250?c<4239?0:1:c<4959?0:1:c<5941?c<5909?c<5906?0:1:c<5938?0:1:c<5972?c<5970?0:1:c<6002?0:c<6004?1:0
else x=c<42622?c<7043?c<6480?c<6160?c<6110?c<6100?c<6070?0:1:c<6109?0:1:c<6122?c<6112?0:1:c<6155?0:c<6158?1:0:c<6432?c<6313?c<6170?1:0:c<6314?1:0:c<6448?c<6444?1:0:c<6460?1:c<6470?0:1:c<6912?c<6602?c<6593?c<6576?0:1:c<6600?0:1:c<6618?c<6608?0:1:c<6679?0:c<6684?1:0:c<6992?c<6964?c<6917?1:0:c<6981?1:0:c<7019?c<7002?1:0:c<7028?1:c<7040?0:1:c<8277?c<7248?c<7098?c<7083?c<7073?0:1:c<7088?0:1:c<7224?c<7204?0:1:c<7232?0:c<7242?1:0:c<7678?c<7616?c<7258?1:0:c<7655?1:0:c<8255?c<7680?1:0:c<8257?1:c<8276?0:1:c<12330?c<8418?c<8413?c<8400?0:1:c<8417?0:1:c<8433?c<8421?0:1:c<11744?0:c<11776?1:0:c<42528?c<12441?c<12336?1:0:c<12443?1:0:c<42607?c<42538?1:0:c<42608?1:c<42620?0:1:c<65077?c<43310?c<43136?c<43015?c<43011?c<43010?0:1:c<43014?0:1:c<43020?c<43019?0:1:c<43043?0:c<43048?1:0:c<43216?c<43188?c<43138?1:0:c<43205?1:0:c<43264?c<43226?1:0:c<43274?1:c<43302?0:1:c<43600?c<43575?c<43348?c<43335?0:1:c<43561?0:1:c<43588?c<43587?0:1:c<43596?0:c<43598?1:0:c<65024?c<64286?c<43610?1:0:c<64287?1:0:c<65056?c<65040?1:0:c<65063?1:c<65075?0:1:c<68155?c<66720?c<65306?c<65104?c<65101?0:1:c<65296?0:1:c<65344?c<65343?0:1:c<66045?0:c<66046?1:0:c<68101?c<68097?c<66730?1:0:c<68100?1:0:c<68108?c<68103?1:0:c<68112?1:c<68152?0:1:c<119173?c<119146?c<68160?c<68159?0:1:c<119141?0:1:c<119155?c<119149?0:1:c<119163?0:c<119171?1:0:c<119365?c<119210?c<119180?1:0:c<119214?1:c<119362?0:1:c<120832?c<120782?0:1:c<917760?0:c<918000?1:0;if(x){pos++;return true}return false}
function cs_19(){var c,x;if(pos==l)return false;c=g(pos);if(c<2613)x=c<1767?c<903?c<706?c<182?c<123?c<91?c<65?0:1:c<97?0:1:c<171?c<170?0:1:c<181?0:1:c<215?c<187?c<186?0:1:c<192?0:1:c<247?c<216?0:1:c<248?0:1:c<751?c<741?c<722?c<710?0:1:c<736?0:1:c<749?c<748?0:1:c<750?0:1:c<888?c<885?c<880?0:1:c<886?0:1:c<894?c<890?0:1:c<902?0:1:c<1370?c<1014?c<909?c<907?c<904?0:1:c<908?0:1:c<930?c<910?0:1:c<931?0:1:c<1316?c<1154?c<1015?0:1:c<1162?0:1:c<1367?c<1329?0:1:c<1369?0:1:c<1611?c<1515?c<1416?c<1377?0:1:c<1488?0:1:c<1523?c<1520?0:1:c<1569?0:1:c<1748?c<1648?c<1646?0:1:c<1649?0:1:c<1750?c<1749?0:1:c<1765?0:1:c<2432?c<2027?c<1809?c<1789?c<1776?c<1774?0:1:c<1786?0:1:c<1792?c<1791?0:1:c<1808?0:1:c<1958?c<1840?c<1810?0:1:c<1869?0:1:c<1970?c<1969?0:1:c<1994?0:1:c<2366?c<2043?c<2038?c<2036?0:1:c<2042?0:1:c<2362?c<2308?0:1:c<2365?0:1:c<2402?c<2385?c<2384?0:1:c<2392?0:1:c<2419?c<2417?0:1:c<2427?0:1:c<2511?c<2481?c<2449?c<2445?c<2437?0:1:c<2447?0:1:c<2473?c<2451?0:1:c<2474?0:1:c<2490?c<2483?c<2482?0:1:c<2486?0:1:c<2494?c<2493?0:1:c<2510?0:1:c<2571?c<2530?c<2526?c<2524?0:1:c<2527?0:1:c<2546?c<2544?0:1:c<2565?0:1:c<2601?c<2577?c<2575?0:1:c<2579?0:1:c<2609?c<2602?0:1:c<2610?0:c<2612?1:0;else if(c<3634)x=c<2981?c<2833?c<2729?c<2655?c<2618?c<2615?c<2613?0:1:c<2616?0:1:c<2653?c<2649?0:1:c<2654?0:1:c<2702?c<2677?c<2674?0:1:c<2693?0:1:c<2706?c<2703?0:1:c<2707?0:1:c<2750?c<2740?c<2737?c<2730?0:1:c<2738?0:1:c<2746?c<2741?0:1:c<2749?0:1:c<2786?c<2769?c<2768?0:1:c<2784?0:1:c<2829?c<2821?0:1:c<2831?0:1:c<2930?c<2874?c<2865?c<2857?c<2835?0:1:c<2858?0:1:c<2868?c<2866?0:1:c<2869?0:1:c<2910?c<2878?c<2877?0:1:c<2908?0:1:c<2914?c<2911?0:1:c<2929?0:1:c<2966?c<2955?c<2948?c<2947?0:1:c<2949?0:1:c<2961?c<2958?0:1:c<2962?0:1:c<2973?c<2971?c<2969?0:1:c<2972?0:1:c<2976?c<2974?0:1:c<2979?0:1:c<3258?c<3130?c<3085?c<3002?c<2987?c<2984?0:1:c<2990?0:1:c<3025?c<3024?0:1:c<3077?0:1:c<3113?c<3089?c<3086?0:1:c<3090?0:1:c<3124?c<3114?0:1:c<3125?0:1:c<3213?c<3162?c<3134?c<3133?0:1:c<3160?0:1:c<3170?c<3168?0:1:c<3205?0:1:c<3241?c<3217?c<3214?0:1:c<3218?0:1:c<3252?c<3242?0:1:c<3253?0:1:c<3390?c<3341?c<3295?c<3262?c<3261?0:1:c<3294?0:1:c<3298?c<3296?0:1:c<3333?0:1:c<3369?c<3345?c<3342?0:1:c<3346?0:1:c<3386?c<3370?0:1:c<3389?0:1:c<3506?c<3456?c<3426?c<3424?0:1:c<3450?0:1:c<3479?c<3461?0:1:c<3482?0:1:c<3518?c<3516?c<3507?0:1:c<3517?0:1:c<3527?c<3520?0:1:c<3585?0:c<3633?1:0
else if(c<5952)x=c<4239?c<3774?c<3736?c<3717?c<3655?c<3636?c<3634?0:1:c<3648?0:1:c<3715?c<3713?0:1:c<3716?0:1:c<3723?c<3721?c<3719?0:1:c<3722?0:1:c<3726?c<3725?0:1:c<3732?0:1:c<3752?c<3748?c<3744?c<3737?0:1:c<3745?0:1:c<3750?c<3749?0:1:c<3751?0:1:c<3761?c<3756?c<3754?0:1:c<3757?0:1:c<3764?c<3762?0:1:c<3773?0:1:c<4139?c<3841?c<3783?c<3781?c<3776?0:1:c<3782?0:1:c<3806?c<3804?0:1:c<3840?0:1:c<3949?c<3912?c<3904?0:1:c<3913?0:1:c<3980?c<3976?0:1:c<4096?0:1:c<4194?c<4182?c<4160?c<4159?0:1:c<4176?0:1:c<4190?c<4186?0:1:c<4193?0:1:c<4209?c<4199?c<4197?0:1:c<4206?0:1:c<4226?c<4213?0:1:c<4238?0:1:c<4799?c<4686?c<4442?c<4347?c<4294?c<4256?0:1:c<4304?0:1:c<4349?c<4348?0:1:c<4352?0:1:c<4602?c<4515?c<4447?0:1:c<4520?0:1:c<4681?c<4608?0:1:c<4682?0:1:c<4745?c<4697?c<4695?c<4688?0:1:c<4696?0:1:c<4702?c<4698?0:1:c<4704?0:1:c<4785?c<4750?c<4746?0:1:c<4752?0:1:c<4790?c<4786?0:1:c<4792?0:1:c<5109?c<4881?c<4806?c<4801?c<4800?0:1:c<4802?0:1:c<4823?c<4808?0:1:c<4824?0:1:c<4955?c<4886?c<4882?0:1:c<4888?0:1:c<5008?c<4992?0:1:c<5024?0:1:c<5867?c<5751?c<5741?c<5121?0:1:c<5743?0:1:c<5787?c<5761?0:1:c<5792?0:1:c<5901?c<5873?c<5870?0:1:c<5888?0:1:c<5906?c<5902?0:1:c<5920?0:c<5938?1:0
else if(c<11520)x=c<8062?c<6964?c<6313?c<6068?c<5997?c<5970?c<5952?0:1:c<5984?0:1:c<6001?c<5998?0:1:c<6016?0:1:c<6109?c<6104?c<6103?0:1:c<6108?0:1:c<6264?c<6176?0:1:c<6272?0:1:c<6517?c<6429?c<6315?c<6314?0:1:c<6400?0:1:c<6510?c<6480?0:1:c<6512?0:1:c<6600?c<6570?c<6528?0:1:c<6593?0:1:c<6679?c<6656?0:1:c<6917?0:1:c<7958?c<7204?c<7073?c<6988?c<6981?0:1:c<7043?0:1:c<7088?c<7086?0:1:c<7168?0:1:c<7294?c<7248?c<7245?0:1:c<7258?0:1:c<7616?c<7424?0:1:c<7680?0:1:c<8024?c<8006?c<7966?c<7960?0:1:c<7968?0:1:c<8014?c<8008?0:1:c<8016?0:1:c<8028?c<8026?c<8025?0:1:c<8027?0:1:c<8030?c<8029?0:1:c<8031?0:1:c<8468?c<8173?c<8133?c<8125?c<8117?c<8064?0:1:c<8118?0:1:c<8127?c<8126?0:1:c<8130?0:1:c<8148?c<8141?c<8134?0:1:c<8144?0:1:c<8156?c<8150?0:1:c<8160?0:1:c<8320?c<8189?c<8181?c<8178?0:1:c<8182?0:1:c<8306?c<8305?0:1:c<8319?0:1:c<8451?c<8341?c<8336?0:1:c<8450?0:1:c<8456?c<8455?0:1:c<8458?0:1:c<8512?c<8487?c<8478?c<8470?c<8469?0:1:c<8473?0:1:c<8485?c<8484?0:1:c<8486?0:1:c<8494?c<8489?c<8488?0:1:c<8490?0:1:c<8506?c<8495?0:1:c<8508?0:1:c<11311?c<8527?c<8522?c<8517?0:1:c<8526?0:1:c<8585?c<8544?0:1:c<11264?0:1:c<11376?c<11359?c<11312?0:1:c<11360?0:1:c<11390?c<11377?0:1:c<11392?0:c<11493?1:0
else if(c<64914)x=c<42592?c<12342?c<11711?c<11671?c<11622?c<11558?c<11520?0:1:c<11568?0:1:c<11632?c<11631?0:1:c<11648?0:1:c<11695?c<11687?c<11680?0:1:c<11688?0:1:c<11703?c<11696?0:1:c<11704?0:1:c<11743?c<11727?c<11719?c<11712?0:1:c<11720?0:1:c<11735?c<11728?0:1:c<11736?0:1:c<12296?c<11824?c<11823?0:1:c<12293?0:1:c<12330?c<12321?0:1:c<12337?0:1:c<12728?c<12539?c<12439?c<12349?c<12344?0:1:c<12353?0:1:c<12448?c<12445?0:1:c<12449?0:1:c<12590?c<12544?c<12540?0:1:c<12549?0:1:c<12687?c<12593?0:1:c<12704?0:1:c<42125?c<19894?c<12800?c<12784?0:1:c<13312?0:1:c<40900?c<19968?0:1:c<40960?0:1:c<42528?c<42509?c<42240?0:1:c<42512?0:1:c<42540?c<42538?0:1:c<42560?0:1:c<43596?c<43019?c<42889?c<42648?c<42607?c<42594?0:1:c<42623?0:1:c<42784?c<42775?0:1:c<42786?0:1:c<43010?c<42893?c<42891?0:1:c<43003?0:1:c<43014?c<43011?0:1:c<43015?0:1:c<43302?c<43124?c<43043?c<43020?0:1:c<43072?0:1:c<43188?c<43138?0:1:c<43274?0:1:c<43561?c<43335?c<43312?0:1:c<43520?0:1:c<43587?c<43584?0:1:c<43588?0:1:c<64297?c<64218?c<64046?c<55204?c<44032?0:1:c<63744?0:1:c<64107?c<64048?0:1:c<64112?0:1:c<64280?c<64263?c<64256?0:1:c<64275?0:1:c<64286?c<64285?0:1:c<64287?0:1:c<64322?c<64317?c<64311?c<64298?0:1:c<64312?0:1:c<64319?c<64318?0:1:c<64320?0:1:c<64434?c<64325?c<64323?0:1:c<64326?0:1:c<64830?c<64467?0:1:c<64848?0:c<64912?1:0
else x=c<68097?c<65856?c<65488?c<65313?c<65020?c<64968?c<64914?0:1:c<65008?0:1:c<65141?c<65136?0:1:c<65142?0:c<65277?1:0:c<65382?c<65345?c<65339?1:0:c<65371?1:0:c<65474?c<65471?1:0:c<65480?1:c<65482?0:1:c<65576?c<65501?c<65496?c<65490?0:1:c<65498?0:1:c<65548?c<65536?0:1:c<65549?0:c<65575?1:0:c<65614?c<65596?c<65595?1:0:c<65598?1:c<65599?0:1:c<65630?c<65616?0:1:c<65664?0:c<65787?1:0:c<66560?c<66379?c<66208?c<66176?c<65909?1:0:c<66205?1:0:c<66304?c<66257?1:0:c<66335?1:c<66352?0:1:c<66500?c<66462?c<66432?0:1:c<66464?0:1:c<66512?c<66504?0:1:c<66513?0:c<66518?1:0:c<67641?c<67592?c<67584?c<66718?1:0:c<67590?1:0:c<67594?c<67593?1:0:c<67638?1:c<67639?0:1:c<67840?c<67645?c<67644?0:1:c<67647?0:c<67648?1:0:c<67872?c<67862?1:0:c<67898?1:c<68096?0:1:c<120094?c<119971?c<74752?c<68120?c<68116?c<68112?0:1:c<68117?0:1:c<68148?c<68121?0:1:c<73728?0:c<74607?1:0:c<119894?c<119808?c<74851?1:0:c<119893?1:0:c<119966?c<119965?1:0:c<119968?1:c<119970?0:1:c<119997?c<119981?c<119975?c<119973?0:1:c<119977?0:1:c<119994?c<119982?0:1:c<119995?0:c<119996?1:0:c<120075?c<120005?c<120004?1:0:c<120070?1:c<120071?0:1:c<120085?c<120077?0:1:c<120086?0:c<120093?1:0:c<120597?c<120145?c<120128?c<120123?c<120122?1:0:c<120127?1:0:c<120134?c<120133?1:0:c<120135?1:c<120138?0:1:c<120514?c<120486?c<120146?0:1:c<120488?0:c<120513?1:0:c<120540?c<120539?1:0:c<120571?1:c<120572?0:1:c<120714?c<120655?c<120629?c<120598?0:1:c<120630?0:1:c<120687?c<120656?0:1:c<120688?0:c<120713?1:0:c<120780?c<120746?c<120745?1:0:c<120771?1:c<120772?0:1:c<173783?c<131072?0:1:c<194560?0:c<195102?1:0;if(x){pos++;return true}return false}
function cs_20(){var c,x;if(pos==l)return false;c=g(pos);x=c<65?c<48?0:c<58?1:0:c<97?c<71?1:0:c<103?1:0;if(x){pos++;return true}return false}
function sl_0(){var p=pos;if(str.charCodeAt(p)==40){pos+=1;return true}return false}
function sl_1(){var p=pos;if(str.charCodeAt(p)==41){pos+=1;return true}return false}
function sl_2(){var p=pos;if(str.charCodeAt(p)==123){pos+=1;return true}return false}
function sl_3(){var p=pos;if(str.charCodeAt(p)==125){pos+=1;return true}return false}
function sl_4(){var p=pos;if(str.charCodeAt(p)==44){pos+=1;return true}return false}
function sl_5(){var p=pos;if(str.charCodeAt(p++)==117&&str.charCodeAt(p++)==115&&str.charCodeAt(p)==101){pos+=3;return true}return false}
function sl_6(){var p=pos;if(str.charCodeAt(p++)==115&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==99&&str.charCodeAt(p)==116){pos+=6;return true}return false}
function sl_7(){var p=pos;if(str.charCodeAt(p)==61){pos+=1;return true}return false}
function sl_8(){var p=pos;if(str.charCodeAt(p)==59){pos+=1;return true}return false}
function sl_9(){var p=pos;if(str.charCodeAt(p)==58){pos+=1;return true}return false}
function sl_10(){var p=pos;if(str.charCodeAt(p++)==42&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_11(){var p=pos;if(str.charCodeAt(p++)==47&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_12(){var p=pos;if(str.charCodeAt(p++)==37&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_13(){var p=pos;if(str.charCodeAt(p++)==43&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_14(){var p=pos;if(str.charCodeAt(p++)==45&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_15(){var p=pos;if(str.charCodeAt(p++)==60&&str.charCodeAt(p++)==60&&str.charCodeAt(p)==61){pos+=3;return true}return false}
function sl_16(){var p=pos;if(str.charCodeAt(p++)==62&&str.charCodeAt(p++)==62&&str.charCodeAt(p)==61){pos+=3;return true}return false}
function sl_17(){var p=pos;if(str.charCodeAt(p++)==62&&str.charCodeAt(p++)==62&&str.charCodeAt(p++)==62&&str.charCodeAt(p)==61){pos+=4;return true}return false}
function sl_18(){var p=pos;if(str.charCodeAt(p++)==38&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_19(){var p=pos;if(str.charCodeAt(p++)==94&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_20(){var p=pos;if(str.charCodeAt(p++)==124&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_21(){var p=pos;if(str.charCodeAt(p)==63){pos+=1;return true}return false}
function sl_22(){var p=pos;if(str.charCodeAt(p++)==124&&str.charCodeAt(p)==124){pos+=2;return true}return false}
function sl_23(){var p=pos;if(str.charCodeAt(p++)==38&&str.charCodeAt(p)==38){pos+=2;return true}return false}
function sl_24(){var p=pos;if(str.charCodeAt(p)==124){pos+=1;return true}return false}
function sl_25(){var p=pos;if(str.charCodeAt(p)==94){pos+=1;return true}return false}
function sl_26(){var p=pos;if(str.charCodeAt(p)==38){pos+=1;return true}return false}
function sl_27(){var p=pos;if(str.charCodeAt(p++)==61&&str.charCodeAt(p++)==61&&str.charCodeAt(p)==61){pos+=3;return true}return false}
function sl_28(){var p=pos;if(str.charCodeAt(p++)==33&&str.charCodeAt(p++)==61&&str.charCodeAt(p)==61){pos+=3;return true}return false}
function sl_29(){var p=pos;if(str.charCodeAt(p++)==61&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_30(){var p=pos;if(str.charCodeAt(p++)==33&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_31(){var p=pos;if(str.charCodeAt(p++)==60&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_32(){var p=pos;if(str.charCodeAt(p++)==62&&str.charCodeAt(p)==61){pos+=2;return true}return false}
function sl_33(){var p=pos;if(str.charCodeAt(p)==60){pos+=1;return true}return false}
function sl_34(){var p=pos;if(str.charCodeAt(p)==62){pos+=1;return true}return false}
function sl_35(){var p=pos;if(str.charCodeAt(p++)==60&&str.charCodeAt(p)==60){pos+=2;return true}return false}
function sl_36(){var p=pos;if(str.charCodeAt(p++)==62&&str.charCodeAt(p++)==62&&str.charCodeAt(p)==62){pos+=3;return true}return false}
function sl_37(){var p=pos;if(str.charCodeAt(p++)==62&&str.charCodeAt(p)==62){pos+=2;return true}return false}
function sl_38(){var p=pos;if(str.charCodeAt(p)==43){pos+=1;return true}return false}
function sl_39(){var p=pos;if(str.charCodeAt(p)==45){pos+=1;return true}return false}
function sl_40(){var p=pos;if(str.charCodeAt(p)==42){pos+=1;return true}return false}
function sl_41(){var p=pos;if(str.charCodeAt(p)==47){pos+=1;return true}return false}
function sl_42(){var p=pos;if(str.charCodeAt(p)==37){pos+=1;return true}return false}
function sl_43(){var p=pos;if(str.charCodeAt(p++)==43&&str.charCodeAt(p)==43){pos+=2;return true}return false}
function sl_44(){var p=pos;if(str.charCodeAt(p++)==45&&str.charCodeAt(p)==45){pos+=2;return true}return false}
function sl_45(){var p=pos;if(str.charCodeAt(p)==126){pos+=1;return true}return false}
function sl_46(){var p=pos;if(str.charCodeAt(p)==33){pos+=1;return true}return false}
function sl_47(){var p=pos;if(str.charCodeAt(p)==91){pos+=1;return true}return false}
function sl_48(){var p=pos;if(str.charCodeAt(p)==93){pos+=1;return true}return false}
function sl_49(){var p=pos;if(str.charCodeAt(p)==46){pos+=1;return true}return false}
function sl_50(){var p=pos;if(str.charCodeAt(p++)==103&&str.charCodeAt(p++)==101&&str.charCodeAt(p)==116){pos+=3;return true}return false}
function sl_51(){var p=pos;if(str.charCodeAt(p++)==115&&str.charCodeAt(p++)==101&&str.charCodeAt(p)==116){pos+=3;return true}return false}
function sl_52(){var p=pos;if(str.charCodeAt(p)==48){pos+=1;return true}return false}
function sl_53(){var p=pos;if(str.charCodeAt(p++)==48&&str.charCodeAt(p)==120){pos+=2;return true}return false}
function sl_54(){var p=pos;if(str.charCodeAt(p++)==48&&str.charCodeAt(p)==88){pos+=2;return true}return false}
function sl_55(){var p=pos;if(str.charCodeAt(p)==120){pos+=1;return true}return false}
function sl_56(){var p=pos;if(str.charCodeAt(p)==117){pos+=1;return true}return false}
function sl_57(){var p=pos;if(str.charCodeAt(p++)==47&&str.charCodeAt(p)==42){pos+=2;return true}return false}
function sl_58(){var p=pos;if(str.charCodeAt(p++)==42&&str.charCodeAt(p)==47){pos+=2;return true}return false}
function sl_59(){var p=pos;if(str.charCodeAt(p++)==47&&str.charCodeAt(p)==47){pos+=2;return true}return false}
function sl_60(){var p=pos;if(str.charCodeAt(p++)==110&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==108&&str.charCodeAt(p)==108){pos+=4;return true}return false}
function sl_61(){var p=pos;if(str.charCodeAt(p++)==116&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==117&&str.charCodeAt(p)==101){pos+=4;return true}return false}
function sl_62(){var p=pos;if(str.charCodeAt(p++)==102&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==115&&str.charCodeAt(p)==101){pos+=5;return true}return false}
function sl_63(){var p=pos;if(str.charCodeAt(p++)==98&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==97&&str.charCodeAt(p)==107){pos+=5;return true}return false}
function sl_64(){var p=pos;if(str.charCodeAt(p++)==99&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==115&&str.charCodeAt(p)==101){pos+=4;return true}return false}
function sl_65(){var p=pos;if(str.charCodeAt(p++)==99&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==99&&str.charCodeAt(p)==104){pos+=5;return true}return false}
function sl_66(){var p=pos;if(str.charCodeAt(p++)==99&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==117&&str.charCodeAt(p)==101){pos+=8;return true}return false}
function sl_67(){var p=pos;if(str.charCodeAt(p++)==100&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==98&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==103&&str.charCodeAt(p++)==103&&str.charCodeAt(p++)==101&&str.charCodeAt(p)==114){pos+=8;return true}return false}
function sl_68(){var p=pos;if(str.charCodeAt(p++)==100&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==102&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==108&&str.charCodeAt(p)==116){pos+=7;return true}return false}
function sl_69(){var p=pos;if(str.charCodeAt(p++)==100&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==116&&str.charCodeAt(p)==101){pos+=6;return true}return false}
function sl_70(){var p=pos;if(str.charCodeAt(p++)==100&&str.charCodeAt(p)==111){pos+=2;return true}return false}
function sl_71(){var p=pos;if(str.charCodeAt(p++)==101&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==115&&str.charCodeAt(p)==101){pos+=4;return true}return false}
function sl_72(){var p=pos;if(str.charCodeAt(p++)==102&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==108&&str.charCodeAt(p)==121){pos+=7;return true}return false}
function sl_73(){var p=pos;if(str.charCodeAt(p++)==102&&str.charCodeAt(p++)==111&&str.charCodeAt(p)==114){pos+=3;return true}return false}
function sl_74(){var p=pos;if(str.charCodeAt(p++)==102&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==99&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==111&&str.charCodeAt(p)==110){pos+=8;return true}return false}
function sl_75(){var p=pos;if(str.charCodeAt(p++)==105&&str.charCodeAt(p)==102){pos+=2;return true}return false}
function sl_76(){var x=str.slice(pos,pos+10);if(x=="instanceof"){pos+=10;return true}return false}
function sl_77(){var p=pos;if(str.charCodeAt(p++)==105&&str.charCodeAt(p)==110){pos+=2;return true}return false}
function sl_78(){var p=pos;if(str.charCodeAt(p++)==110&&str.charCodeAt(p++)==101&&str.charCodeAt(p)==119){pos+=3;return true}return false}
function sl_79(){var p=pos;if(str.charCodeAt(p++)==114&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==114&&str.charCodeAt(p)==110){pos+=6;return true}return false}
function sl_80(){var p=pos;if(str.charCodeAt(p++)==115&&str.charCodeAt(p++)==119&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==99&&str.charCodeAt(p)==104){pos+=6;return true}return false}
function sl_81(){var p=pos;if(str.charCodeAt(p++)==116&&str.charCodeAt(p++)==104&&str.charCodeAt(p++)==105&&str.charCodeAt(p)==115){pos+=4;return true}return false}
function sl_82(){var p=pos;if(str.charCodeAt(p++)==116&&str.charCodeAt(p++)==104&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==111&&str.charCodeAt(p)==119){pos+=5;return true}return false}
function sl_83(){var p=pos;if(str.charCodeAt(p++)==116&&str.charCodeAt(p++)==114&&str.charCodeAt(p)==121){pos+=3;return true}return false}
function sl_84(){var p=pos;if(str.charCodeAt(p++)==116&&str.charCodeAt(p++)==121&&str.charCodeAt(p++)==112&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==111&&str.charCodeAt(p)==102){pos+=6;return true}return false}
function sl_85(){var p=pos;if(str.charCodeAt(p++)==118&&str.charCodeAt(p++)==97&&str.charCodeAt(p)==114){pos+=3;return true}return false}
function sl_86(){var p=pos;if(str.charCodeAt(p++)==118&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==105&&str.charCodeAt(p)==100){pos+=4;return true}return false}
function sl_87(){var p=pos;if(str.charCodeAt(p++)==119&&str.charCodeAt(p++)==104&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==108&&str.charCodeAt(p)==101){pos+=5;return true}return false}
function sl_88(){var p=pos;if(str.charCodeAt(p++)==119&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==116&&str.charCodeAt(p)==104){pos+=4;return true}return false}
function sl_89(){var p=pos;if(str.charCodeAt(p++)==97&&str.charCodeAt(p++)==98&&str.charCodeAt(p++)==115&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==99&&str.charCodeAt(p)==116){pos+=8;return true}return false}
function sl_90(){var p=pos;if(str.charCodeAt(p++)==98&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==97&&str.charCodeAt(p)==110){pos+=7;return true}return false}
function sl_91(){var p=pos;if(str.charCodeAt(p++)==98&&str.charCodeAt(p++)==121&&str.charCodeAt(p++)==116&&str.charCodeAt(p)==101){pos+=4;return true}return false}
function sl_92(){var p=pos;if(str.charCodeAt(p++)==99&&str.charCodeAt(p++)==104&&str.charCodeAt(p++)==97&&str.charCodeAt(p)==114){pos+=4;return true}return false}
function sl_93(){var p=pos;if(str.charCodeAt(p++)==99&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==115&&str.charCodeAt(p)==115){pos+=5;return true}return false}
function sl_94(){var p=pos;if(str.charCodeAt(p++)==99&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==115&&str.charCodeAt(p)==116){pos+=5;return true}return false}
function sl_95(){var p=pos;if(str.charCodeAt(p++)==100&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==98&&str.charCodeAt(p++)==108&&str.charCodeAt(p)==101){pos+=6;return true}return false}
function sl_96(){var p=pos;if(str.charCodeAt(p++)==101&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==117&&str.charCodeAt(p)==109){pos+=4;return true}return false}
function sl_97(){var p=pos;if(str.charCodeAt(p++)==101&&str.charCodeAt(p++)==120&&str.charCodeAt(p++)==112&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==114&&str.charCodeAt(p)==116){pos+=6;return true}return false}
function sl_98(){var p=pos;if(str.charCodeAt(p++)==101&&str.charCodeAt(p++)==120&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==101&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==100&&str.charCodeAt(p)==115){pos+=7;return true}return false}
function sl_99(){var p=pos;if(str.charCodeAt(p++)==102&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==110&&str.charCodeAt(p++)==97&&str.charCodeAt(p)==108){pos+=5;return true}return false}
function sl_100(){var p=pos;if(str.charCodeAt(p++)==102&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==97&&str.charCodeAt(p)==116){pos+=5;return true}return false}
function sl_101(){var p=pos;if(str.charCodeAt(p++)==103&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==116&&str.charCodeAt(p)==111){pos+=4;return true}return false}
function sl_102(){var x=str.slice(pos,pos+10);if(x=="implements"){pos+=10;return true}return false}
function sl_103(){var p=pos;if(str.charCodeAt(p++)==105&&str.charCodeAt(p++)==109&&str.charCodeAt(p++)==112&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==114&&str.charCodeAt(p)==116){pos+=6;return true}return false}
function sl_104(){var x=str.slice(pos,pos+9);if(x=="interface"){pos+=9;return true}return false}
function sl_105(){var p=pos;if(str.charCodeAt(p++)==105&&str.charCodeAt(p++)==110&&str.charCodeAt(p)==116){pos+=3;return true}return false}
function sl_106(){var p=pos;if(str.charCodeAt(p++)==108&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==110&&str.charCodeAt(p)==103){pos+=4;return true}return false}
function sl_107(){var p=pos;if(str.charCodeAt(p++)==110&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==118&&str.charCodeAt(p)==101){pos+=6;return true}return false}
function sl_108(){var p=pos;if(str.charCodeAt(p++)==112&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==99&&str.charCodeAt(p++)==107&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==103&&str.charCodeAt(p)==101){pos+=7;return true}return false}
function sl_109(){var p=pos;if(str.charCodeAt(p++)==112&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==118&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==116&&str.charCodeAt(p)==101){pos+=7;return true}return false}
function sl_110(){var x=str.slice(pos,pos+9);if(x=="protected"){pos+=9;return true}return false}
function sl_111(){var p=pos;if(str.charCodeAt(p++)==112&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==98&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==105&&str.charCodeAt(p)==99){pos+=6;return true}return false}
function sl_112(){var p=pos;if(str.charCodeAt(p++)==115&&str.charCodeAt(p++)==104&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==114&&str.charCodeAt(p)==116){pos+=5;return true}return false}
function sl_113(){var p=pos;if(str.charCodeAt(p++)==115&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==105&&str.charCodeAt(p)==99){pos+=6;return true}return false}
function sl_114(){var p=pos;if(str.charCodeAt(p++)==115&&str.charCodeAt(p++)==117&&str.charCodeAt(p++)==112&&str.charCodeAt(p++)==101&&str.charCodeAt(p)==114){pos+=5;return true}return false}
function sl_115(){var x=str.slice(pos,pos+12);if(x=="synchronized"){pos+=12;return true}return false}
function sl_116(){var p=pos;if(str.charCodeAt(p++)==116&&str.charCodeAt(p++)==104&&str.charCodeAt(p++)==114&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==119&&str.charCodeAt(p)==115){pos+=6;return true}return false}
function sl_117(){var x=str.slice(pos,pos+9);if(x=="transient"){pos+=9;return true}return false}
function sl_118(){var p=pos;if(str.charCodeAt(p++)==118&&str.charCodeAt(p++)==111&&str.charCodeAt(p++)==108&&str.charCodeAt(p++)==97&&str.charCodeAt(p++)==116&&str.charCodeAt(p++)==105&&str.charCodeAt(p++)==108&&str.charCodeAt(p)==101){pos+=8;return true}return false}
function sl_119(){var p=pos;if(str.charCodeAt(p)==36){pos+=1;return true}return false}
function sl_120(){var p=pos;if(str.charCodeAt(p)==95){pos+=1;return true}return false}
function fin(c,p,x,r,a){if(r)a.push([p,x]);tbl[p][x]=r?[true,pos,c]:false;return r}
function e(){return true}
function o(){var args=arguments;return function(c){var i,l;for(i=0,l=args.length;i<l;i++)if(args[i](c))return true;return false}}
function q(){var args=arguments;return function(c){var i,l,cp=pos,cl=c.length;for(i=0,l=args.length;i<l;i++)if(!args[i](c)){pos=cp;t(c,cl);return false}return true}}
function r(m,n,f){return function(c){var i=0,cp=pos,cl=c.length;while(i<m){i++;if(!f(c)){pos=cp;t(c,cl);return false}}cl=c.length;while(i++<n||n==0)if(!f(c))return true;return true}}
function n(f){return function(){var p=pos,x=f([]);pos=p;return !x}}
function p(f){return function(){var p=pos,x=f([]);pos=p;return x}}
function t(a,n){if(a.length>n)a.splice(n)}
function g(p){return str.charCodeAt(p)}
function b(p,n){var x=tbl[p][n],c=[],a=[n,x[1]-p,c],y=x[2],i=0,l=y.length,z;for(;i<l;i++){z=y[i];if(z[0]>p)c.push([-1,z[0]-p]);c.push(b(z[0],z[1]));p=tbl[z[0]][z[1]][1]}if(p<x[1]&&c.count)c.push([-1,x[1]-p]);return a}
return Program([])&&pos==l?[true,b(0,0)]:[false,pos,tbl]}
Program.names=['Program','FunctionBody','FunctionDeclaration','FunctionExpr','FormalParameterList','UseStrictDirective','Statement','Block','VariableStatement','VariableDeclarationListNoIn','VariableDeclaration','VariableDeclarationNoIn','EmptyStatement','ExprStatement','IfStatement','IterationStatement','DoWhileStatement','WhileStatement','ForInStatement','ForStatement','ContinueStatement','BreakStatement','ReturnStatement','WithStatement','LabelledStatement','SwitchStatement','CaseClause','DefaultClause','ThrowStatement','TryStatement','Catch','Finally','DebuggerStatement','Expr','ExprNoIn','AssignmentExpr','AssignmentExprNoIn','AssignmentOperator','ConditionalExpr','ConditionalExprNoIn','LogicalOrExpr','LogicalOrExprNoIn','LogicalAndExpr','LogicalAndExprNoIn','BitwiseOrExpr','BitwiseOrExprNoIn','BitwiseXOrExpr','BitwiseXOrExprNoIn','BitwiseAndExpr','BitwiseAndExprNoIn','EqualityExpr','EqualityExprNoIn','EqualityOp','RelationalExpr','RelationalExprNoIn','RelationalOp','RelationalOpNoIn','ShiftExpr','ShiftOp','AdditiveExpr','AdditiveOp','MultiplicativeExpr','MultiplicativeOp','UnaryExpr','PostfixExpr','LeftHandSideExpr','CallExpr','Arguments','ArgumentList','NewExpr','MemberExpr','PrimaryExpr','ArrayLiteral','ElementList','Elision','ObjectLiteral','PropertyNameAndValueList','PropertyAssignment','PropertyName','PropertySetParameterList','Literal','NullLiteral','BooleanLiteral','NumericLiteral','DecimalLiteral','DecimalIntegerLiteral','DecimalDigit','ExponentPart','SignedInteger','HexIntegerLiteral','DQ','SQ','StringLiteral','RS','DoubleStringCharacter','SingleStringCharacter','LineContinuation','EscapeSequence','CharacterEscapeSequence','SingleEscapeCharacter','NonEscapeCharacter','EscapeCharacter','HexEscapeSequence','UnicodeEscapeSequence','RegularExpressionLiteral','RegularExpressionBody','RegularExpressionFirstChar','RegularExpressionChar','RegularExpressionBackslashSequence','RegularExpressionClass','RegularExpressionClassChar','RegularExpressionFlags','SourceCharacter','WhiteSpace','LF','CR','LS','PS','LineTerminator','LineTerminatorSequence','Comment','MultiLineComment','MultiLineCommentNoLB','SingleLineComment','S','SnoLB','EOS','EOSnoLB','EOF','ReservedWord','Keyword','FutureReservedWord','Identifier','IdentifierName','IdentifierStart','IdentifierPart','UnicodeLetter','HexDigit','FalseTok','TrueTok','NullTok','BreakTok','ContinueTok','DebuggerTok','InTok','InstanceOfTok','DeleteTok','FunctionTok','NewTok','ThisTok','TypeofTok','VoidTok','IfTok','ElseTok','DoTok','WhileTok','ForTok','VarTok','ReturnTok','CaseTok','DefaultTok','SwitchTok','ThrowTok','CatchTok','FinallyTok','TryTok','WithTok'];
var peg = require('./peg') ;
function walkTree(tree, names, source) {
// we use the index because it compares faster
var Statement = names.indexOf('Statement') ;
var cursor ;
// node[0] => NodeType (an index into names)
// node[1] => length of the node's source text
// node[2] => an array of child nodes or undefined if there aren't any
function walk(node, position, indent) {
// handle the current node
var nameIdx = node[0] ;
var text = source.slice(position, position+node[1]) ;
//
// remove unwanted assertion statements in production code
//
var regex = /^hub_(assert|precondition|postcondition|invariant|error)\(.*/ ;
if (nameIdx === Statement && text.match(regex)) {
cursor = (position + text.length) ;
return ; // don't output anything, don't visit children
}
// does this node have children? if not, return immediately
var ary = node[2] ;
if (!ary) return ;
// handle this node's children
for (var idx=0, len=ary.length; idx<len; ++idx) {
var child = ary[idx] ;
walk(child, position, indent+1) ;
position += child[1] ;
if (cursor < position) {
print(source.slice(cursor, position)) ;
cursor = position ;
}
}
}
function print(text) {
process.stdout.write(text) ;
}
cursor = 0 ;
walk(tree, cursor, 0) ;
}
var fs = require("fs") ;
fs.readFile(process.ARGV[2], function(err, content) {
if (!err) {
parse = Program(content) ;
if (parse[0] === true) {
walkTree(parse[1], Program.names, content) ;
} else {
process.stdio.writeError("Parsing failed.") ;
process.exit(1) ;
}
} else {
process.stdio.writeError(err) ;
process.exit(1) ;
}
process.stdout.close() ;
process.exit() ;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment