diff options
author | Mike Kucera | 2010-02-19 19:19:06 +0000 |
---|---|---|
committer | Mike Kucera | 2010-02-19 19:19:06 +0000 |
commit | c94faf2dc01f23ef64273f64d67d66a03b6080bb (patch) | |
tree | be6c271118650946853aa077d6037956360ce4d0 | |
parent | 3fdc0f07515aa958a2006490d13c47c54d6834dd (diff) | |
download | org.eclipse.cdt-c94faf2dc01f23ef64273f64d67d66a03b6080bb.tar.gz org.eclipse.cdt-c94faf2dc01f23ef64273f64d67d66a03b6080bb.tar.xz org.eclipse.cdt-c94faf2dc01f23ef64273f64d67d66a03b6080bb.zip |
Bug 303065 - support new constructs by the upcoming v11.1 XL C/C++ compiler - 5.0 branchv201002251145v201002221011
17 files changed, 3251 insertions, 2973 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml b/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml index 6241db95945..7052b3f7de9 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml +++ b/lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml @@ -1,5 +1,5 @@ <!-- - Copyright (c) 2009 IBM Corporation and others. + Copyright (c) 2009, 2010 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at @@ -21,7 +21,8 @@ Additionally if the $Import or $Include directives are being used in a grammar file then the LPG_INCLUDE environment variable must be set to the directory - of the files being included. + of the files being included. + lpg_include - is an optional property to set, if it is set, LPG_INCLUDE will be set by its value before execute lpg_exe. --> <fail unless="lpg_exe"> @@ -41,24 +42,52 @@ ${grammar_name} - the name of the main grammar file to run LPG on (not including the .g extension) ${output_dir} - name of directory where generated files should go --> - <target name="generate"> + <target name="generate" depends="moveFile"> + + + <echo message="Code generation is done."/> + + + </target> + + <target name="init"> + <property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/> <echo message="lpg_exe=${lpg_exe}"/> <echo message="lpg_template=${lpg_template}"/> + <echo message="lpg_include=${lpg_include}"/> <echo message="grammar_file=${grammar_file}.g"/> <echo message="output_dir=${output_dir}"/> - + + + </target> + + <target name="generateWithIncludeSet" if="lpg_include" depends="init"> + <exec executable="${lpg_exe}"> <arg value="${grammar_file}"/> <env key="LPG_TEMPLATE" path="${lpg_template}"/> + <env key="LPG_INCLUDE" path="${lpg_include}"/> </exec> + </target> + + <target name="generateWithoutIncludeSet" unless="lpg_include" depends="generateWithIncludeSet"> + + <exec executable="${lpg_exe}"> + <arg value="${grammar_file}"/> + <env key="LPG_TEMPLATE" path="${lpg_template}"/> + + </exec> + </target> + + <target name="moveFile" depends="generateWithoutIncludeSet"> <move overwrite="true" toDir="${output_dir}"> <fileset dir="."> <include name="${grammar_name}*.*"/> - </fileset> + </fileset> </move> - </target> + </target> </project>
\ No newline at end of file diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java index acebb2011ad..c79cda9b640 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc.tests/src/org/eclipse/cdt/core/parser/xlc/tests/XlcExtensionsTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -275,4 +275,41 @@ public class XlcExtensionsTest extends XlcTestBase { parse(code, getCPPLanguage(), true); // xlc supports this in C++ } + public void testStaticAssertions() { + String code = + " const unsigned int EIGHT= 8; \n"+ + " __static_assert(sizeof(long) >= EIGHT, \"no 64-bit support\"); \n" + + + " namespace ns { \n"+ + " __static_assert(sizeof(long) >= 4, \"no 32-bit support\"); \n" + + " } \n" + + + " template <typename T> class basic_string { \n" + + " __static_assert(T::value, \"bla\"); \n" + + " }; \n" + + + " void do_something() { \n" + + " struct VMPage { \n" + + " }; \n" + + " __static_assert(sizeof(VMPage) == 1, \"bla\"); \n" + + " }"; + + parse(code, getCPPLanguage(), true); // xlc supports this in C++ + } + + public void testV11Attributes() { + String code = + "static int w() __attribute__ ((weakref (\"y\")));\n" + + /* is equivalent to... */ + "static int x() __attribute__ ((weak, weakref, alias (\"y\")));\n" + + /* and to... */ + "static int y() __attribute__ ((weakref));\n" + + "static int z() __attribute__ ((alias (\"y\")));" + + + "int foo() __attribute__((gnu_inline)); \n"; + + parse(code, getCLanguage(), true); + parse(code, getCPPLanguage(), true); + } + } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g index b2bc76c4685..99079f99b7b 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcCPPParser.g @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------------- --- Copyright (c) 2009 IBM Corporation and others. +-- Copyright (c) 2009, 2010 IBM Corporation and others. -- All rights reserved. This program and the accompanying materials -- are made available under the terms of the Eclipse Public License v1.0 -- which accompanies this distribution, and is available at @@ -60,6 +60,7 @@ cv_qualifier block_declaration ::= vector_declaration + | static_assert_declaration identifier_token @@ -95,5 +96,8 @@ array_modifier_type_qualifiers type_qualifier_list ::= cv_qualifier | type_qualifier_list cv_qualifier + +member_declaration + ::= static_assert_declaration $End
\ No newline at end of file diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g index 58fe3cf505e..739d9c9fc38 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/grammar/xlc/XlcGrammarExtensions.g @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------------- --- Copyright (c) 2009 IBM Corporation and others. +-- Copyright (c) 2009, 2010 IBM Corporation and others. -- All rights reserved. This program and the accompanying materials -- are made available under the terms of the Eclipse Public License v1.0 -- which accompanies this distribution, and is available at @@ -23,6 +23,7 @@ $Terminals _Decimal32 _Decimal64 _Decimal128 + __static_assert $End @@ -89,6 +90,9 @@ no_type_declaration_specifiers_opt ::= no_type_declaration_specifiers | $empty - +static_assert_declaration + ::= '__static_assert' '(' expression ',' literal ')' ';' + /. $Build consumeCPPASTStaticAssertDeclaration(); $EndBuild ./ + $End diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java index 33ba8a75cbe..ded41377705 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPLanguage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -69,7 +69,8 @@ public class XlcCPPLanguage extends GPPLanguage { boolean supportDecimals = getPref(XlcPref.SUPPORT_DECIMAL_FLOATING_POINT_TYPES, project); boolean supportComplex = getPref(XlcPref.SUPPORT_COMPLEX_IN_CPP, project); boolean supportRestrict = getPref(XlcPref.SUPPORT_RESTRICT_IN_CPP, project); - IDOMTokenMap tokenMap = new XlcCPPTokenMap(supportVectors, supportDecimals, supportComplex, supportRestrict); + boolean supportStaticAssert = getPref(XlcPref.SUPPORT_STATIC_ASSERT, project); + IDOMTokenMap tokenMap = new XlcCPPTokenMap(supportVectors, supportDecimals, supportComplex, supportRestrict, supportStaticAssert); XlcCPPParser parser = new XlcCPPParser(scanner, tokenMap, getBuiltinBindingsProvider(), index, properties); return parser; diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java index 41e7fc66976..6f400e7cd7e 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcCPPTokenMap.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -27,8 +27,8 @@ public class XlcCPPTokenMap implements IDOMTokenMap { private final XlcKeywords keywordMap; - public XlcCPPTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict) { - keywordMap = XlcKeywords.createCPP(supportVectors, supportDecimalFloatingPoint, supportComplex, supportRestrict); + public XlcCPPTokenMap(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict, boolean supportStaticAssert) { + keywordMap = XlcKeywords.createCPP(supportVectors, supportDecimalFloatingPoint, supportComplex, supportRestrict, supportStaticAssert); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java index a838e9a64e2..49f1a846b80 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/XlcKeywords.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -25,7 +25,7 @@ import org.eclipse.cdt.internal.core.lrparser.xlc.cpp.XlcCPPParsersym; public class XlcKeywords extends CLanguageKeywords { public static final XlcKeywords ALL_C_KEYWORDS = createC(true, true); - public static final XlcKeywords ALL_CPP_KEYWORDS = createCPP(true, true, true, true); + public static final XlcKeywords ALL_CPP_KEYWORDS = createCPP(true, true, true, true, true); private final CharArrayMap<Integer> map = new CharArrayMap<Integer>(); @@ -51,7 +51,7 @@ public class XlcKeywords extends CLanguageKeywords { return keywords; } - public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict) { + public static XlcKeywords createCPP(boolean supportVectors, boolean supportDecimalFloatingPoint, boolean supportComplex, boolean supportRestrict, boolean supportStaticAssert) { XlcKeywords keywords = new XlcKeywords(ParserLanguage.CPP); CharArrayMap<Integer> map = keywords.map; if(supportVectors) { @@ -74,6 +74,10 @@ public class XlcKeywords extends CLanguageKeywords { map.put("__restrict__".toCharArray(), XlcCPPParsersym.TK_restrict); } + if(supportStaticAssert) { + map.put("__static_assert".toCharArray(), XlcCPPParsersym.TK___static_assert); + } + return keywords; } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java index 7505e2be10a..288a23c69b3 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/action/XlcCPPBuildASTParserAction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,13 +12,16 @@ package org.eclipse.cdt.core.lrparser.xlc.action; import lpg.lpgjavaruntime.IToken; +import org.eclipse.cdt.core.dom.ast.IASTConditionalExpression; import org.eclipse.cdt.core.dom.ast.IASTExpression; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream; import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPSecondaryParserFactory; import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction; +import org.eclipse.cdt.core.lrparser.xlc.ast.ICPPASTStaticAssertDeclaration; import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier; import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier; import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory; @@ -93,4 +96,16 @@ public class XlcCPPBuildASTParserAction extends GPPBuildASTParserAction { } } } + + /** + * staticAssertDeclaration ::= '__static_assert' '(' expression ',' literal ')' ';' + */ + public void consumeCPPASTStaticAssertDeclaration() { + ICPPASTLiteralExpression message = (ICPPASTLiteralExpression) astStack.pop(); + IASTExpression condition = (IASTExpression) astStack.pop(); + + ICPPASTStaticAssertDeclaration assertDeclaration = nodeFactory.newStaticAssertion(condition, message); + setOffsetAndLength(assertDeclaration); + astStack.push(assertDeclaration); + } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/ICPPASTStaticAssertDeclaration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/ICPPASTStaticAssertDeclaration.java new file mode 100644 index 00000000000..75f25698044 --- /dev/null +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/ICPPASTStaticAssertDeclaration.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2009 Wind River Systems, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Markus Schorn - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.core.lrparser.xlc.ast; + +import org.eclipse.cdt.core.dom.ast.ASTNodeProperty; +import org.eclipse.cdt.core.dom.ast.IASTDeclaration; +import org.eclipse.cdt.core.dom.ast.IASTExpression; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression; + +/** + * Models static assertions: <code> static_assert(false, "message");</code> + * + * @since 5.2 + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + */ +public interface ICPPASTStaticAssertDeclaration extends IASTDeclaration { + public static final ASTNodeProperty CONDITION = new ASTNodeProperty( + "ICPPASTStaticAssertDeclaration.CONDITION [IASTExpression]"); //$NON-NLS-1$ + public static final ASTNodeProperty MESSAGE = new ASTNodeProperty( + "ICPPASTStaticAssertDeclaration.MESSAGE [ICPPASTLiteralExpression]"); //$NON-NLS-1$ + + /** + * Returns the condition of the assertion + */ + IASTExpression getCondition(); + + /** + * Returns the message of the assertion, or potentially <code>null</code> when using content assist. + */ + ICPPASTLiteralExpression getMessage(); +} diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java index caacac907a8..0fe7f5a44f0 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/ast/IXlcCPPNodeFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,6 +11,7 @@ package org.eclipse.cdt.core.lrparser.xlc.ast; import org.eclipse.cdt.core.dom.ast.IASTExpression; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression; import org.eclipse.cdt.core.dom.lrparser.action.cpp.ICPPNodeFactory; @@ -19,4 +20,7 @@ public interface IXlcCPPNodeFactory extends ICPPNodeFactory { public IXlcCPPASTVectorTypeSpecifier newVectorTypeSpecifier(); public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr); + + public ICPPASTStaticAssertDeclaration newStaticAssertion(IASTExpression condition, + ICPPASTLiteralExpression message); } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java index 9900b575e56..2798466acb2 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/core/lrparser/xlc/preferences/XlcPref.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -17,7 +17,8 @@ public enum XlcPref { SUPPORT_VECTOR_TYPES("true"), SUPPORT_DECIMAL_FLOATING_POINT_TYPES("true"), SUPPORT_COMPLEX_IN_CPP("true"), - SUPPORT_RESTRICT_IN_CPP("true"); + SUPPORT_RESTRICT_IN_CPP("true"), + SUPPORT_STATIC_ASSERT("true"); private final String defaultVal; diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/CPPASTStaticAssertionDeclaration.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/CPPASTStaticAssertionDeclaration.java new file mode 100644 index 00000000000..1c4b859a8f3 --- /dev/null +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/CPPASTStaticAssertionDeclaration.java @@ -0,0 +1,73 @@ +/******************************************************************************* + * Copyright (c) 2009 Wind River Systems, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Markus Schorn - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.internal.core.lrparser.xlc.ast; + +import org.eclipse.cdt.core.dom.ast.ASTVisitor; +import org.eclipse.cdt.core.dom.ast.IASTExpression; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression; +import org.eclipse.cdt.core.lrparser.xlc.ast.ICPPASTStaticAssertDeclaration; +import org.eclipse.cdt.internal.core.dom.parser.ASTNode; +import org.eclipse.cdt.internal.core.dom.parser.IASTAmbiguityParent; + +public class CPPASTStaticAssertionDeclaration extends ASTNode implements ICPPASTStaticAssertDeclaration, IASTAmbiguityParent { + + private IASTExpression fCondition; + private final ICPPASTLiteralExpression fMessage; + + public CPPASTStaticAssertionDeclaration(IASTExpression condition, ICPPASTLiteralExpression message) { + fCondition= condition; + fMessage= message; + if (condition != null) { + condition.setParent(this); + condition.setPropertyInParent(CONDITION); + } + if (message != null) { + message.setParent(this); + message.setPropertyInParent(MESSAGE); + } + } + + public IASTExpression getCondition() { + return fCondition; + } + + public ICPPASTLiteralExpression getMessage() { + return fMessage; + } + + @Override + public boolean accept( ASTVisitor action ){ + if (action.shouldVisitDeclarations) { + switch (action.visit(this)) { + case ASTVisitor.PROCESS_ABORT : return false; + case ASTVisitor.PROCESS_SKIP : return true; + } + } + + if (fCondition != null && !fCondition.accept(action)) + return false; + if (fMessage != null && !fMessage.accept(action)) + return false; + + if (action.shouldVisitDeclarations && action.leave(this) == ASTVisitor.PROCESS_ABORT) + return false; + return true; + } + + public void replace(IASTNode child, IASTNode other) { + if (child == fCondition) { + fCondition= (IASTExpression) other; + other.setParent(child.getParent()); + other.setPropertyInParent(child.getPropertyInParent()); + } + } +} diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java index aeac4daec70..f0f4fd02128 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/ast/XlcCPPNodeFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,7 +11,9 @@ package org.eclipse.cdt.internal.core.lrparser.xlc.ast; import org.eclipse.cdt.core.dom.ast.IASTExpression; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression; import org.eclipse.cdt.core.dom.lrparser.action.cpp.CPPNodeFactory; +import org.eclipse.cdt.core.lrparser.xlc.ast.ICPPASTStaticAssertDeclaration; import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTModifiedArrayModifier; import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPASTVectorTypeSpecifier; import org.eclipse.cdt.core.lrparser.xlc.ast.IXlcCPPNodeFactory; @@ -30,4 +32,9 @@ private static final XlcCPPNodeFactory DEFAULT_INSTANCE = new XlcCPPNodeFactory( public IXlcCPPASTModifiedArrayModifier newModifiedArrayModifier(IASTExpression expr) { return new XlcCPPASTModifiedArrayModifier(expr); } + + public ICPPASTStaticAssertDeclaration newStaticAssertion(IASTExpression condition, + ICPPASTLiteralExpression message) { + return new CPPASTStaticAssertionDeclaration(condition, message); + } } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java index beb7c8d0f79..20ce9c4064b 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParser.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2006, 2009 IBM Corporation and others. +* Copyright (c) 2006, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -2068,51 +2068,57 @@ private GNUBuildASTParserAction gnuAction; } // - // Rule 641: specifier_qualifier ::= typedef + // Rule 637: static_assert_declaration ::= __static_assert ( expression , literal ) ; // - case 641: { action. consumeToken(); break; + case 637: { action. consumeCPPASTStaticAssertDeclaration(); break; } // - // Rule 642: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] + // Rule 643: specifier_qualifier ::= typedef // - case 642: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; + case 643: { action. consumeToken(); break; } // - // Rule 643: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] + // Rule 644: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] // - case 643: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; + case 644: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; } // - // Rule 644: array_modifier ::= [ static assignment_expression ] + // Rule 645: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // - case 644: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; + case 645: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; } // - // Rule 645: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] + // Rule 646: array_modifier ::= [ static assignment_expression ] // - case 645: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + case 646: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; } // - // Rule 646: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] + // Rule 647: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // - case 646: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + case 647: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; } // - // Rule 647: array_modifier ::= [ * ] + // Rule 648: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] // - case 647: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; + case 648: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; } // - // Rule 648: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] + // Rule 649: array_modifier ::= [ * ] // - case 648: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; + case 649: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; + } + + // + // Rule 650: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] + // + case 650: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; } diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java index 8350ddffc79..3c806ef4980 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParserprs.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2006, 2009 IBM Corporation and others. +* Copyright (c) 2006, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -30,7 +30,7 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar 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 }; }; public final static byte isKeyword[] = IsKeyword.isKeyword; @@ -101,659 +101,671 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar 1,1,4,1,1,1,1,1,3,3, 3,1,1,1,1,2,4,5,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,2,1,0,1,0,1,1,1,1, - 1,4,5,4,6,6,3,5,1,1, - 2,-177,0,0,0,-2,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-69, - 0,0,0,-8,0,0,0,0,0,0, - -174,0,0,-231,0,0,0,0,-297,0, - 0,0,-477,0,0,0,0,0,0,0, - 0,0,-480,0,0,0,0,0,0,0, - 0,0,0,0,0,-107,-9,0,0,0, - -45,0,0,0,-238,0,0,0,0,-16, - -269,0,0,0,0,-13,0,0,0,-195, - 0,0,-3,0,0,0,0,0,0,0, - 0,0,0,-126,-263,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -10,-54,0,0,0,0,0,0,0,-12, - -33,0,0,0,0,0,0,-555,0,0, - 0,-18,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-19,0,0,0,0, - 0,0,0,0,0,0,-60,0,0,0, - 0,0,0,0,-70,0,-241,0,0,0, - 0,-425,0,0,-25,-5,0,0,-15,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-197,0,0,0,0,0,0,0, - 0,0,0,0,0,-155,0,0,0,0, - 0,-59,0,0,0,0,0,0,0,-395, - 0,0,0,0,0,0,0,0,0,0, - 0,-17,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-4,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-163,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-426,0,0,0, - 0,0,0,0,0,-21,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - -264,0,0,0,-41,0,0,0,-180,-22, - 0,0,0,0,0,0,0,-420,0,0, - 0,0,-199,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-114,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-283,0,0,0,0,0, - -179,-295,0,-189,0,0,0,0,0,0, - 0,0,0,0,0,0,-165,0,0,0, - 0,0,0,0,-190,0,0,0,-23,0, - 0,0,0,0,0,0,0,0,-77,0, - 0,0,-24,-200,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-593,0,0,0, - 0,0,0,0,0,-32,0,0,0,0, - 0,0,0,0,0,0,0,-117,0,0, - -374,0,0,0,-145,0,0,0,-370,-42, - 0,0,0,0,0,-375,0,-150,-26,0, - 0,0,-381,0,0,0,0,0,0,0, + 1,2,1,0,1,0,7,1,1,1, + 1,1,1,4,5,4,6,6,3,5, + 1,1,2,1,-195,0,0,0,-2,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-617,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-377,0,0,0,0,-144, - 0,0,0,-650,0,0,0,0,0,0, - 0,0,0,0,0,0,-613,-612,0,0, - 0,0,0,0,-299,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-585,0, - 0,-444,0,0,0,0,0,0,0,0, + 0,0,-63,0,0,0,-395,0,0,0, + 0,0,0,-404,-18,0,0,-66,0,0, + 0,0,-337,0,0,0,-6,0,0,0, + 0,0,0,0,0,0,-488,0,0,0, + 0,0,0,0,0,0,0,0,0,-5, + 0,0,0,0,-47,0,0,0,-3,0, + 0,0,0,-174,0,0,0,-43,0,0, + 0,-9,0,0,0,0,0,0,-10,0, + -73,0,0,0,0,0,0,-305,0,-11, + 0,0,-184,0,0,0,0,0,0,0, + 0,-4,0,0,0,0,-72,0,0,-35, + 0,0,0,0,0,-212,-335,0,-407,0, + 0,-561,0,0,0,-13,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-43,0,-46,0,0,0, - 0,0,0,-567,0,0,0,0,0,0, - 0,0,0,-108,0,-75,0,0,-481,0, - 0,-48,0,-586,0,0,0,-49,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-267,0,0,0, - 0,-362,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-52,0,0,0,0, - 0,0,-137,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-365,0,0,0, + -295,-197,0,0,0,0,-192,0,0,0, + 0,-424,0,0,0,0,-213,0,0,-27, + 0,0,0,-17,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-317,0,0,0,0,0, - 0,-57,0,0,0,-367,0,0,0,-72, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-318, + -309,0,0,0,-164,0,0,0,-123,0, + 0,0,0,0,0,0,0,-67,0,0, + 0,0,0,0,0,-40,-289,0,0,0, + 0,0,0,0,0,0,0,0,-121,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-83,0,0,-84,0,0, - 0,0,0,-547,0,0,0,-36,0,0, + 0,0,0,0,0,0,0,0,-182,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-141, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-98,0,0,0,0,-400,0,0, - 0,-378,0,0,0,0,0,0,-99,0, - 0,-487,0,-213,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-185,0, + 0,0,0,0,0,0,-20,-283,0,-207, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-376,0,0,0, + 0,0,0,0,0,-619,0,0,-217,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-78,0,0, - 0,0,0,-88,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-230,0,0, 0,0,0,0,0,0,0,0,0,0, + -170,0,0,0,0,0,0,0,-21,0, + 0,-323,0,0,0,0,0,-280,0,-208, 0,0,0,0,0,0,0,0,0,0, - -419,0,0,0,0,-100,0,0,0,0, - 0,0,0,0,0,0,-38,0,0,-580, - 0,-601,0,0,-361,0,0,0,-519,0, + 0,0,0,-163,0,0,-111,0,-23,0, + -339,0,0,0,-24,0,0,0,0,0, + 0,0,0,0,-81,0,0,-429,-218,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-55, - 0,0,-188,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-504,0,0,0, - 0,-431,0,0,0,-101,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-62,0,0,0,-357, + 0,-86,0,0,0,0,0,0,0,0, + -25,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -120,0,0,-164,0,0,0,0,-524,0, - 0,0,-102,0,0,0,0,0,0,0, + -223,0,0,0,0,0,0,0,0,0, + 0,-26,0,0,0,0,0,0,-411,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-133,-119,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-71,0,0,0,-525,0,0,0,0, + 0,-450,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-211,0, + 0,-512,0,0,0,0,-34,0,0,0, + -656,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-56,0,0,0,0,0, + -481,0,0,0,-44,-359,0,0,0,0, + 0,0,-45,0,0,-48,0,-474,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-104,-58, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-407,0,0,0,-151,0, - 0,0,0,0,0,0,0,-536,0,0, + -183,0,0,0,0,-648,0,0,0,0, + 0,0,0,0,0,0,0,-273,0,0, + -303,0,0,0,0,-28,0,-428,0,0, + -592,0,0,0,-221,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-19,0,-342,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-206, 0,0,0,0,0,0,0,0,0,0, - 0,-63,0,-105,0,-191,0,0,0,0, - 0,0,0,0,0,0,-561,0,0,-261, - 0,0,0,0,-226,0,0,0,0,0, + -50,-483,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,-160, - -203,0,-192,0,0,0,0,0,0,0, - 0,0,0,-146,0,0,-322,0,0,0, - 0,-346,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,-79,0,0,-155,-64,0,0,0,0, + 0,0,-156,0,0,0,-130,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-399,0,0,0,-347,0, + 0,0,0,0,0,-406,0,0,0,0, + -51,0,0,0,0,0,0,0,0,0, + 0,-54,-628,0,0,0,0,-405,0,0, + 0,0,0,0,0,-362,0,0,0,-397, + 0,0,0,-489,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-74,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-77,-328, + 0,0,0,0,0,0,0,-129,0,0, + 0,-62,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-505,0,0,0,0,0,0,0,0, - -109,0,0,0,0,0,0,0,0,0, - 0,-73,-80,0,0,0,0,-113,0,-348, - 0,0,0,-121,0,0,0,0,0,0, + 0,0,0,0,-447,0,0,0,0,0, + 0,0,0,-112,0,0,0,0,0,0, + -278,0,0,0,0,0,0,0,0,-160, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-215,-642,0,0,-622,0,0, - 0,0,0,0,0,0,0,0,-103,0, - 0,-236,-122,0,0,0,-349,0,0,0, - -615,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -277,0,0,0,0,0,0,0,-123,0, - 0,0,0,0,0,-106,0,0,0,0, - 0,0,0,-350,0,0,0,-124,0,0, + 0,0,0,0,-59,-457,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-517,0,0,0, - 0,-427,0,0,0,0,0,0,0,0, - 0,0,-134,0,0,-237,-193,0,0,0, - -351,0,0,0,-147,0,0,0,0,0, + 0,0,-75,0,0,0,-272,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-148,0,-204,0,-510,0, - 0,0,0,0,0,0,0,0,0,-115, - 0,0,-239,0,0,0,0,-352,0,0, - 0,-152,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-306, + 0,0,0,0,0,0,0,0,-57,0, + 0,0,0,0,0,0,0,0,0,-61, + -441,0,0,0,0,-76,-169,0,0,-391, + 0,0,0,-279,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-247,-158,-232,0,0,0,0,0,-181, + 0,0,-495,0,0,-530,0,0,0,0, + 0,-490,0,0,0,0,0,0,0,0, + 0,0,-448,0,0,0,0,-459,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-353,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-518,0,0, - 0,0,-511,0,0,0,0,0,0,0, - 0,0,0,-116,0,0,-249,0,-216,0, - 0,-354,0,0,0,0,0,0,0,0, + -82,-87,0,-88,0,0,0,0,0,-102, + 0,0,0,0,0,0,0,-209,0,0, + -198,0,-281,0,0,-532,0,0,0,-103, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-278,-217,0,0,0, + 0,0,0,0,0,0,0,0,-513,0, + 0,0,0,-318,0,0,0,0,0,0, + 0,0,0,0,-118,0,0,0,0,0, + 0,0,0,-533,0,0,0,-516,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-319,-484,0,0,0,-355,0, - 0,0,-218,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-564,0,0,0,0,-512,0,0,0, - 0,0,0,0,0,0,0,-153,0,0, - -634,0,0,0,0,-356,0,0,0,-219, 0,0,0,0,0,0,0,0,0,0, + 0,0,-104,-107,0,0,0,0,0,0, + 0,-291,0,0,-542,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-220,0,0,0,0,0,-221,0,0, - 0,0,0,0,-413,0,0,-222,0,0, - 0,0,-386,0,0,0,-223,0,0,0, + 0,0,0,0,0,0,0,-105,-84,0, + 0,0,0,0,0,0,-319,0,0,0, + 0,0,0,-110,-119,0,0,0,0,0, + 0,0,-152,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-422,0,0,0,0, - -575,0,0,0,0,0,0,0,0,0, - 0,-577,0,0,-405,0,0,0,-627,0, + 0,0,0,0,0,-525,0,0,0,0, + -120,0,0,0,0,0,0,0,0,0, + 0,-106,-108,0,0,-357,0,0,0,0, + -231,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,-253,-76,0, - -224,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-225,-171,-172,0, - 0,0,0,0,0,-286,-467,0,0,0, + 0,0,0,0,-327,-363,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-124, + -389,0,0,-358,0,0,0,0,-254,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-227,0,0,-513,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-320,-323, - -234,0,0,-468,0,0,0,-240,0,0, + 0,0,-408,0,0,0,-531,0,0,0, + -109,0,0,0,0,0,0,-131,-132,0, + 0,0,0,-137,0,0,0,-255,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-245,0, - 0,0,0,0,0,-250,0,0,0,0, - 0,0,-127,0,0,0,0,-252,0,0, - -301,-532,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-442,-643,0,0,-569, + -526,0,0,0,0,-113,0,0,0,0, + 0,0,0,0,0,0,-135,0,0,0, + 0,-165,0,0,0,-256,0,0,0,-417, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-388,0,0,0,0,-533,0, + 0,0,0,0,0,0,0,0,-570,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-136,-426,0,0,0,0, + 0,0,0,-257,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-265,0,0,0,0,0,0, - -266,0,0,0,0,0,0,-268,0,0, - 0,-482,0,0,0,-620,0,0,0,-279, + 0,0,0,0,0,0,-649,-139,-117,-588, + 0,-485,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-400,0,0,0, + 0,-258,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,-280,-128, - -485,0,0,0,0,0,0,-281,0,0, - 0,0,0,0,-131,0,0,-282,0,-397, - 0,0,-475,0,0,0,-291,0,0,0, + 0,0,0,0,-138,0,-360,-608,0,0, + 0,0,0,-392,0,0,0,0,0,0, + 0,0,0,0,-125,-172,-492,0,0,-259, + 0,0,0,-427,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-82,0,0,0,0, - -136,0,0,0,0,0,0,0,0,0, - 0,-292,0,0,-486,0,0,0,0,0, + 0,0,-179,-269,-387,-632,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-126, + 0,0,0,0,0,0,0,-260,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-531,-549,0, - -398,0,0,0,0,0,0,0,0,0, - 0,0,0,-132,0,0,0,0,-173,-293, - 0,-125,0,0,0,-294,-539,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -471,0,0,0,0,-180,0,0,0,0, + 0,0,0,0,0,0,0,-189,0,0, + 0,0,-482,0,0,-261,0,0,0,-127, 0,0,0,0,0,0,0,0,0,0, - 0,-359,0,0,-576,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-540,0, 0,0,0,0,0,0,0,0,0,0, + -470,0,0,-228,0,0,0,0,0,0, + 0,0,0,0,-190,-191,0,0,0,0, + 0,0,0,-262,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-79,-429,0,0,0,0,0,0,0, - -303,0,0,0,0,0,0,-546,0,0, - -423,0,0,-360,0,0,0,0,0,-305, - -551,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-493,0, + 0,-268,0,0,0,0,0,0,0,0, + 0,0,-230,-232,0,0,-573,-267,-506,0, + 0,-263,0,0,0,-507,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-635,0,0,0,0,-640,0, + 0,0,0,0,0,0,-553,0,0,0, + 0,0,0,-128,0,0,0,0,0,0, + -286,-288,0,0,-140,-142,0,0,0,-264, 0,0,0,0,0,0,0,0,0,0, - 0,0,-607,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-306,0,-308,0, - -30,0,0,0,0,0,0,0,0,0, - 0,-139,0,0,0,0,-6,0,0,0, - -309,0,-312,0,0,0,0,-288,0,0, - 0,0,-508,-469,0,0,0,0,-143,0, - 0,0,0,0,-40,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-314, - 0,0,0,0,0,-205,0,0,0,0, - 0,0,0,0,0,0,0,-39,0,0, - 0,0,0,0,0,0,0,0,0,0, - -315,-161,0,0,0,0,-212,-316,-534,-363, - 0,0,0,0,-443,0,-522,0,-68,0, - 0,0,-379,0,0,0,0,-287,-380,0, - 0,0,0,0,0,0,0,0,0,-210, - -214,0,0,0,0,-385,-20,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-74,0,0,0,0,0, - 0,0,0,-244,-258,-260,0,0,0,0, - 0,0,-332,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,-605, - 0,-606,0,0,0,0,-194,0,0,0, - -387,-358,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-389,-390,-391,0,0,-246, - 0,0,0,0,0,0,0,0,0,0, - -118,0,0,0,0,0,-392,0,-394,-473, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-235,0,0,0,0,0,-64,0, - 0,0,0,0,0,0,0,0,0,0, - 0,0,-474,-408,0,0,0,0,0,-415, - -416,0,0,0,0,-262,0,0,-28,0, - 0,-611,-371,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-417, - -270,0,0,0,0,0,0,0,0,-418, - -432,0,-307,0,0,0,0,0,0,0, - -324,0,-433,0,0,0,0,0,0,0, - 0,0,0,-591,0,0,0,0,0,-440, - -441,0,0,0,0,0,-445,0,0,0, - -271,0,0,0,0,-446,0,0,-345,0, + 0,0,0,0,-143,0,0,-300,0,0, + 0,0,0,0,0,0,0,0,-302,-304, + 0,0,0,0,-144,0,0,-415,0,0, + 0,-145,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -454,0,0,0,0,-347,0,0,0,0, + 0,0,0,0,0,0,-146,-543,0,0, + -472,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-447,-448,0,-372,0,0,0, - 0,0,0,0,0,0,-85,0,0,0, - -449,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-60,0,0,-611,0, + 0,0,-147,0,0,0,0,0,0,-388, + -435,0,0,0,-312,0,0,0,0,0, + 0,0,-473,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-343,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-222,0,-274,-326,0, + -402,0,0,0,0,0,0,0,0,0, + 0,-313,-455,0,0,-148,0,-149,0,0, + -475,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-535,-450,-166,-451,0,0, - 0,0,0,-452,0,0,0,0,-344,0, - 0,0,-382,0,0,0,0,0,0,0, + 0,0,0,0,-403,0,-314,0,0,0, + 0,0,0,0,0,0,0,0,0,-581, + -582,0,0,0,0,-539,0,0,0,-46, + 0,0,-583,0,-476,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-81,0,0,0,0,-56,0,0,0, - 0,0,0,0,-272,0,-527,0,0,0, - -453,0,0,0,0,0,0,0,0,0, - 0,0,0,-436,-454,-273,0,0,-648,0, - 0,0,0,-373,-404,0,0,0,0,0, - 0,-636,0,0,0,0,-276,-455,-412,0, - 0,0,0,-456,0,-457,0,0,-111,0, + 0,0,0,0,0,0,0,0,-433,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-458,0,0,0,0,-156, - 0,0,0,0,0,0,-459,-598,0,0, + 0,0,0,-555,0,0,0,0,0,0, + 0,0,-626,0,0,0,-603,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -289,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-460,-461,-424,-274,0,0, - 0,0,0,0,0,0,-462,0,0,0, - 0,-290,0,0,0,0,-34,0,0,0, - -430,0,-463,0,0,0,0,0,0,0, - -296,-599,0,0,0,0,0,0,0,0, - 0,-498,0,0,0,0,0,-523,0,0, - 0,-464,0,0,0,0,0,0,0,0, - 0,0,0,-465,-439,-466,0,-175,0,-300, - 0,0,-476,0,-27,-478,-311,-364,0,0, - 0,-488,0,0,0,0,0,0,0,0, - 0,-490,-608,0,0,0,0,0,0,0, - 0,0,-47,0,0,0,-396,0,0,0, - 0,-340,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-453,0,0,-150,0, + 0,0,0,0,-451,0,0,0,0,0, + 0,-629,0,0,0,0,0,-591,0,0, + -494,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-384,-491,0,0,0, - 0,0,0,-496,0,0,0,-366,0,-500, - 0,0,0,0,-501,0,0,-368,0,0, - 0,-514,0,0,0,0,-369,0,0,0, - 0,-402,-521,-592,0,0,0,0,0,0, - -515,0,0,0,0,-414,0,0,0,0, - 0,0,0,0,0,-516,0,0,0,0, - 0,-471,-472,0,-135,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-499, + 0,0,0,-599,0,0,0,0,-612,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-558,0,0,-502,0,-562,-566,-544, - -506,0,0,-233,0,0,0,0,0,0, + 0,0,0,-545,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-545,0,0,0, - 0,0,0,-483,0,0,-507,-559,0,0, - -341,0,0,0,-520,0,0,0,0,0, + 0,0,0,0,0,0,-80,0,0,0, + 0,-527,0,0,0,-151,0,0,0,0, + 0,0,-440,-552,0,0,0,-329,0,0, + 0,0,0,-341,-617,-546,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-565,-568,-578,-579,0,0,0, - 0,0,-581,0,-584,0,0,-254,0,0, 0,0,0,0,0,0,0,0,0,0, - -629,0,0,0,-342,0,0,0,-537,0, + 0,-621,0,-452,0,0,0,0,0,0, + 0,0,0,0,0,-153,0,0,-557,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-553,-393,-595, - -604,0,0,0,0,0,0,0,-228,0, - 0,0,-556,0,0,0,0,0,0,0, - 0,-583,0,0,0,0,0,0,-597,0, - 0,0,0,0,0,-614,-616,0,-560,-563, - 0,-621,0,-633,0,0,0,0,-582,0, - 0,0,-646,0,0,0,0,0,-571,0, - 0,-589,0,-489,-206,-572,0,0,0,-573, - 0,0,-574,0,0,0,-603,0,0,0, - 0,0,-623,0,0,0,0,0,0,0, - 0,0,0,-302,-609,-95,0,0,-610,0, - 0,0,0,-624,0,0,-628,-630,0,-625, - 0,0,0,0,0,0,0,-639,0,0, - 0,0,0,0,0,0,0,0,-492,0, 0,0,0,0,0,0,0,0,0,0, - -631,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-632,0, - 0,0,0,0,0,-641,0,0,0,0, + 0,0,0,0,-166,0,0,0,0,0, + -167,0,0,0,0,0,0,-595,0,0, + 0,-458,0,-330,-336,0,-36,0,0,0, + -613,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-171,0,0,0,-567,0, + 0,0,-177,0,0,0,0,0,0,-22, + 0,0,0,-7,0,0,0,0,0,0, + -597,0,0,0,-340,0,0,0,-351,-394, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-638,0,0,0,-538,0,0, + 0,-396,-41,0,0,0,0,0,0,0, + 0,0,0,0,0,-29,0,0,-467,-509, + 0,0,0,0,-199,0,0,0,0,0, + 0,-645,-193,0,0,0,0,-390,0,0, + 0,0,0,-398,-598,0,0,0,0,0, + 0,0,0,-42,0,0,0,0,0,0, + 0,0,0,0,0,0,-477,-646,0,0, 0,0,0,0,0,0,0,0,0,0, - -649,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-543,0,0,0, - 0,0,0,0,0,0,0,0,0,-602, + 0,0,0,0,0,0,-399,-465,-285,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-176,-550,0,0,0, - 0,0,0,0,0,0,-207,0,0,0, - 0,0,0,0,0,-66,0,0,0,0, - -626,0,-44,0,0,0,0,0,0,0, + 0,0,0,-586,-623,0,0,0,-276,-654, + 0,0,0,0,0,0,0,-83,0,0, + 0,0,-464,-282,0,0,0,-412,0,0, + 0,0,0,0,0,0,0,-633,0,0, + 0,0,0,0,-287,-292,-294,0,0,0, + 0,0,-650,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-266, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-607,-307,0,0,-99,0,0, + 0,0,0,0,0,0,0,0,-122,0, + 0,0,0,0,-308,-69,-310,0,0,0, + 0,0,0,0,0,0,0,0,0,-320, + -321,0,0,0,0,-540,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-183,0,0,0,0,-552,0,0,0, + 0,-431,0,0,0,0,0,-322,0,0, + -200,-618,0,-331,0,0,0,0,0,0, + -401,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-332,0,0,0,0,-333,-334,0, + 0,-640,0,0,0,0,0,0,0,-343, + 0,0,-442,0,-345,0,0,0,0,0, + 0,-346,-529,-564,0,0,0,0,-348,0, + 0,0,0,0,0,0,0,0,0,-479, + 0,0,0,-480,0,0,0,-253,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-349,-352,0,0,0,0,0,-354, + 0,0,0,0,0,-38,0,0,0,-355, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -251,0,0,0,-541,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-594,0,0,0,0,-554,0,0,0, + 0,0,0,-356,-365,0,-366,0,-510,0, + 0,0,-367,0,0,0,0,-252,0,0, + 0,-368,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-315,-58,-514,0,0,0,0,0,-369, + 0,0,0,0,0,-515,-528,0,-641,0, + 0,0,-370,-614,-559,0,0,0,0,0, + -568,-371,-194,-572,0,0,0,0,-562,-589, + 0,0,-372,0,-373,0,0,0,0,0, + 0,-374,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-425,0,-413,-375,0, + 0,0,-560,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-376,0,0,0, + 0,0,0,0,-377,0,0,-311,0,0, + 0,-642,0,0,0,0,0,0,-635,-378, + 0,-379,0,0,-380,0,0,-566,0,0, + 0,0,-381,0,0,0,0,0,0,0, + 0,-382,0,0,0,0,0,-383,0,0, + 0,0,-16,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -535,0,0,0,0,0,0,0,0,0, + 0,0,0,-609,-224,-631,-638,0,0,0, + 0,0,0,0,0,0,0,0,-569,-210, + -647,-384,-385,0,0,-386,-518,-393,-409,-31, + 0,-577,0,0,-410,0,-578,-296,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-414,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-579,0,-580, + -615,0,-604,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-416,-418,-419, 0,0,0,0,0,0,0,0,0,0, + -420,0,0,0,0,0,0,0,0,0, + -616,-92,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-596,0,0,0, + 0,0,0,0,-421,0,0,0,0,0, + 0,-630,0,0,0,-423,-436,-443,0,-248, + 0,0,0,-444,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-634,0,-636,-445,0,-422,0,0, + 0,0,0,0,-544,0,0,0,0,0, + 0,0,0,0,0,0,0,-446,-460,-461, + 0,0,0,-468,0,0,0,0,0,0, + 0,-469,-484,-486,0,-637,0,0,-496,-498, + -499,0,0,-504,-508,0,0,0,0,0, + 0,0,-522,0,0,0,0,0,-644,0, + 0,-317,0,0,-497,0,-655,0,0,-651, + 0,0,0,0,-523,0,0,-524,-550,-551, + 0,0,-565,0,0,0,0,0,0,0, + 0,-571,0,0,-574,-265,-584,0,0,0, + -585,0,-587,0,0,-590,-601,-610,0,0, + -620,-622,0,0,-627,0,0,0,0,0, + 0,0,0,0,0,-639,0,0,-652,0, + -500,0,-511,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,-182,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,-600,-503,0,0,0,0,0,-61,0, - 0,0,0,0,0,0,-528,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-556,0,0,0, + 0,-8,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-173,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,-558,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,-491, + 0,0,0,0,0,-141,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,-600,0, + 0,0,0,-201,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-519,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,-225,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-520,0,-602,0,0,0,0,0, + 0,-32,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,-65,0,0,0,0, - 0,0,0,0,0,0,-637,0,0,0, - 0,0,-437,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,-521,0, + -606,0,0,0,0,0,0,-432,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,-647,0,0,0,0,-313,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-643,0,0,0, + 0,0,0,-65,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,0,0, + 0,-33,0,0,0,0,0,0,0,0, + -575,0,-653,0,0,0,0,0,0,0, + 0,-158,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -310,0,0,0,0,0,0,0,0,-259, 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,-333,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-154,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,-334,0, 0,0,0,0,0,0,0,0,0,0, + 0,-605,0,0,0,0,0,0,0,0, + 0,-275,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, - -335,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-249, 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,-336,0,0,0, + 0,0,-162,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,-337,0, + 0,0,0,-250,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,-215, + 0,0,0,0,0,0,0,-549,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-541,0,0,0,0,-29,0,0,0, - -434,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,-338,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-478,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,-644,0,0,0, + 0,0,0,0,-240,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-96,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-1,0,0,0,0, - -339,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,-588, + -241,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,-242,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,-37,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-31,0,0,0, - 0,0,0,0,0,0,0,0,-35,0, + 0,0,0,0,-243,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-251,0, - 0,0,0,0,0,0,0,-110,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-244,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-184,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-245,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,-138,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-202,0,0, + -353,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-462,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-495,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-7,0,0,0, - 0,0,0,0,0,0,0,0,0,-142, - 0,0,0,0,-157,0,0,0,0,0, - 0,0,0,0,0,-479,0,0,0,0, - -542,0,0,0,0,0,0,0,0,0, + -85,0,0,0,0,-49,0,0,0,0, + 0,0,0,-237,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,-1, 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,-327,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,-328,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, - 0,0,0,0,-86,0,0,0,0,0, + 0,0,0,-270,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,-185,0,0,0,0,0, - -201,0,-209,0,0,0,0,0,0,0, + 0,0,0,0,0,-246,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,-401,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-247,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-39, + 0,0,0,0,0,0,0,0,0,-37, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-321,0,0,0,0,0,0, - -242,0,0,0,0,0,0,0,0,0, + 0,-277,0,0,0,0,-14,0,0,0, + 0,0,0,0,0,0,0,0,0,-70, + 0,0,0,0,0,0,0,0,-175,0, + 0,0,0,0,0,0,-114,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,-301,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,-157,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-220,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-329,0, + 0,0,-219,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-78,0,0,0, + 0,0,0,0,0,0,0,0,0,-547, + -226,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,-330,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-331, + 0,0,0,-100,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,-470,0,0,0,0,0,0,0, + 0,-227,0,0,0,0,0,0,-284,0, + 0,0,0,0,0,0,0,0,-594,0, + 0,0,-30,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-89,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,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-91,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,-92,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-235,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-93,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-94,0,0,0,0,0, + 0,0,0,0,0,0,0,-236,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-97,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-361,0,0,0,0,0,-89,0,0, 0,0,0,0,0,0,0,0,0,0, - -178,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-325,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-326,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-383, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-68,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-410,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-11,0,0,0,0, - -87,0,0,0,0,0,0,0,0,0, + 0,0,-176,0,0,0,0,0,0,0, + -115,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,0,0,0,0,0,0,-14, 0,0,0,0,0,0,0,0,0,0, + 0,0,-238,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-67,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,-239,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,-50, 0,0,0,0,0,0,0,0,0,0, + 0,-12,0,-503,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-15,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,-403,0,-51,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-52,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,-186, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,-140,0,0,0,0, + 0,0,0,0,0,0,0,-293,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,-53,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,-275,0,0,-129,0,0, + 0,0,0,0,0,-350,0,0,-55,-214, + 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,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,0,0, + 0,0,0,0,-93,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-94,0,0, + 0,0,0,0,0,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,0,0,-96,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-97,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-98, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,-101,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-133,0,0,0,0, + 0,-161,0,0,0,0,0,0,0,0, + 0,-134,0,0,0,0,0,-159,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,-487, 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,-112,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-130,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-196,0,0, 0,0,0,0,0,0,0,0,0,0, - -256,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-587,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,-149,0,0, + -233,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,-234,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-364,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-285,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,-438, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-438,-526,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,0,-466,0,0,0,0,-90,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,-255,0,0,0, - 0,0,0,0,0,-243,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,-198,0,0, + 0,0,0,-298,0,0,0,-299,0,0, + 0,-548,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-167,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - -159,0,0,0,0,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,-229,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-91,0, 0,0,0,0,0,0,0,0,0,0, - 0,-169,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + -325,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-170,0,0,0,0,0,0,0,0, + 0,0,-534,0,0,0,0,0,-168,-297, + 0,0,0,0,0,-205,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,-430,0,0,0,0,0,0,0,0, + 0,0,0,0,-187,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-409,-435,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,-509,0,0,0,0,0,-570,0,0, + 0,0,0,0,0,0,0,0,-188,0, + -437,0,0,0,0,0,0,0,0,0, + 0,0,0,0,-202,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, + 0,-316,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-196,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,-162,0,0,0,0,0,0,0,0, - 0,0,-211,0,0,0,-284,0,0,0, + 0,0,0,0,0,0,-463,0,0,0, + 0,0,-517,0,0,0,0,0,0,-576, + 0,0,0,0,0,0,0,-593,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-298,0,0,0,-304,0,0,0, - -548,0,0,0,0,0,0,0,0,0, - -557,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,-71,0,0,0, + 0,0,0,-116,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-178,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,-493,0,0,0,0,0,0, + -181,0,0,0,0,-229,0,0,0,0, + 0,0,-324,0,0,0,0,0,-563,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,-645,0,-494,0,0,0, - 0,0,0,0,-590,0,0,0,0,-618, - 0,0,0,0,0,0,-619,0,0,0, - 0,0,0,0,0,0,0,-187,0,0, - 0,-257,0,0,-248,0,0,0,0,-406, 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, - -428,0,0,0,-421,0,0,0,0,0, - 0,-186,0,0,0,0,-411,0,0,0, - 0,0,0,0,0,0,0,0,-497,0, - 0,0,0,0,0,0,0,-529,0,0, - 0,0,0,0,0,0,0,0,0,-530, + -338,0,0,0,0,0,0,0,0,0, + 0,0,-344,0,0,0,0,0,0,0, + 0,0,0,0,0,0,-216,0,-554,0, + 0,0,0,-596,0,0,0,0,0,0, + -624,0,0,0,0,-625,0,0,0,0, + 0,0,0,0,0,0,0,-536,0,0, + 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,-290,0, + 0,0,0,0,0,0,0,-271,0,0, + 0,0,0,0,0,0,0,0,0,-203, 0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-434,0,0,0,0, + -456,0,0,-449,0,0,0,0,0,0, + 0,0,-501,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,-204,-502,0, 0,0,0,0,0,0,0,0,0,0, + 0,-505,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, - 0,0,-651,0,0,0,0,0,0,0, + -439,-537,0,0,0,0,0,0,0,0, + 0,0,0,0,0,-538,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,-657,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,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 }; }; public final static short baseCheck[] = BaseCheck.baseCheck; @@ -761,827 +773,853 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public final static short rhs[] = baseCheck; public final int rhs(int index) { return rhs[index]; }; - public interface BaseAction { - public final static char baseAction[] = { - 198,4,143,72,72,32,32,96,96,49, - 49,48,48,198,1,1,16,16,16,16, - 16,16,16,17,17,17,15,11,11,6, - 6,6,6,6,6,2,84,84,5,5, - 12,12,63,63,162,162,163,73,73,54, + public interface BaseAction0 { + public final static char baseAction0[] = { + 199,4,144,73,73,32,32,97,97,48, + 48,49,49,199,1,1,15,15,15,15, + 15,15,15,17,17,17,16,11,11,6, + 6,6,6,6,6,2,85,85,5,5, + 12,12,64,64,163,163,164,74,74,55, 18,18,18,18,18,18,18,18,18,18, 18,18,18,18,18,18,18,18,18,18, - 164,164,164,144,144,19,19,19,19,19, + 165,165,165,145,145,19,19,19,19,19, 19,19,19,19,19,19,19,19,20,20, - 199,199,200,200,201,167,167,168,168,165, - 165,169,166,166,21,21,22,22,27,27, + 200,200,201,201,202,168,168,169,169,166, + 166,170,167,167,21,21,22,22,27,27, 27,29,29,29,29,30,30,30,31,31, 31,33,33,33,33,33,34,34,34,35, - 35,36,36,37,37,38,38,40,40,41, - 41,46,46,45,45,45,45,45,45,45, - 45,45,45,45,45,45,47,42,145,145, - 105,105,202,202,98,232,232,85,85,85, - 85,85,85,85,85,85,86,86,86,83, - 83,64,64,203,203,87,87,87,119,119, - 204,204,88,88,88,205,205,89,89,89, - 89,89,90,90,92,92,92,92,92,92, - 92,92,55,55,55,55,55,120,120,118, - 118,56,206,28,28,28,28,28,53,53, - 76,76,76,76,76,106,106,121,121,121, - 121,121,122,122,122,123,123,123,124,124, - 124,125,125,125,77,77,77,77,77,78, - 78,78,13,14,14,14,14,14,14,14, - 14,14,14,14,97,110,110,110,110,110, - 110,108,108,108,171,172,172,109,109,207, - 174,174,173,173,146,146,126,81,81,147, - 58,52,175,175,59,94,94,148,148,170, - 170,127,128,128,129,75,75,176,176,70, - 70,70,66,66,65,71,71,95,95,74, - 74,74,69,99,99,113,112,112,60,60, - 67,67,68,68,50,114,114,114,100,100, - 100,101,101,102,102,102,103,103,130,130, - 130,132,132,131,131,233,233,104,104,209, - 209,209,209,209,150,51,51,178,208,208, - 151,151,152,152,152,153,180,210,210,44, - 44,107,115,115,115,115,212,134,133,133, - 111,111,111,181,182,182,182,182,182,182, - 182,182,182,182,182,214,214,211,211,213, - 213,136,137,137,137,137,138,215,139,135, - 135,216,216,183,183,183,183,117,117,117, - 217,217,8,8,9,218,218,219,184,177, - 177,185,185,186,187,187,7,7,10,220, - 220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220, - 220,79,82,82,188,188,155,155,156,156, - 156,156,156,156,3,157,157,154,154,140, - 140,93,80,91,179,179,141,141,221,221, - 221,158,158,149,149,222,222,23,23,23, - 43,43,24,24,223,223,189,189,189,190, - 190,224,224,191,191,25,25,225,225,192, - 192,192,192,26,61,226,226,227,227,193, - 193,193,159,159,159,19,19,19,19,33, - 33,41,17,86,228,142,142,142,116,116, - 28,57,76,129,129,129,136,136,136,207, - 212,134,69,75,171,147,13,13,60,93, - 93,93,14,14,14,68,68,62,39,160, - 161,161,161,161,161,161,161,161,161,195, - 195,230,230,229,229,194,194,60,55,1, - 1,234,95,95,95,95,95,95,95,196, - 197,197,1786,35,2788,2778,1415,6827,27,30, - 31,1285,1160,26,28,2769,262,25,23,50, - 1874,106,76,77,108,592,537,538,539,2319, - 2717,2373,2347,2442,1651,2420,2458,2448,2531,2467, - 2547,2729,2582,143,1503,3698,274,158,144,2710, - 35,1287,32,4083,7005,27,30,31,1285,1160, - 59,28,232,2433,35,3776,32,4589,3803,27, - 30,31,1285,1160,340,28,821,2046,235,230, - 231,2427,2138,2119,34,1506,3940,537,538,539, - 205,2427,35,1136,390,4336,2524,1412,296,275, - 2171,35,455,131,650,6847,4287,859,5182,242, - 245,248,251,3369,2743,3792,3163,1169,585,540, - 537,538,539,3187,855,3775,4987,5197,320,1872, - 322,2061,2811,315,1726,49,6398,182,703,1820, - 1499,2171,35,280,5209,46,3572,2750,1860,35, - 2788,2778,68,6827,27,30,31,1285,1160,26, - 28,2769,262,25,23,50,1874,106,76,77, - 108,592,537,538,539,2319,414,2373,2347,2442, - 2785,2420,2458,2448,2531,2467,2547,1927,2582,143, - 6458,619,274,158,144,4080,826,1982,3116,5391, - 421,3773,2325,35,455,1539,2245,6847,232,88, - 35,1287,32,4589,3803,27,30,31,1285,1160, - 340,28,3577,4996,235,230,231,543,592,537, - 538,539,540,537,538,539,2427,35,6952,6421, - 1655,1342,4194,1680,2205,275,540,537,538,539, - 2427,3742,3339,3267,5328,242,245,248,251,3369, - 449,290,205,1169,585,232,3062,6152,423,3187, - 855,3775,4987,5197,320,1872,322,1909,568,315, - 1726,244,230,231,4636,448,2961,2980,1522,3169, - 5209,617,330,2750,3489,35,1287,32,3067,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,108,2427,35,1136, - 390,2319,344,2373,2347,2442,509,2420,2458,2448, - 2531,2467,2547,3768,2582,143,307,311,837,519, - 144,2427,35,283,4316,1540,35,1287,32,2921, - 799,41,30,31,1285,1160,570,892,2427,35, - 3881,454,520,3489,35,1287,32,3067,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,3003,452,2961,2980, - 2319,344,2373,2347,2442,313,2420,2458,2448,2531, - 2467,2547,3768,2582,143,2171,35,280,519,144, - 6960,1096,4763,4316,3555,35,1287,32,323,6843, - 27,30,31,1285,1160,57,28,2427,35,2119, - 277,520,802,3116,515,4695,35,1287,32,805, - 6843,27,30,31,1285,1160,56,28,2724,2997, - 1920,2731,912,1,3489,35,1287,32,3067,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,108,2427,35,1136, - 390,2319,344,2373,2347,2442,1514,2420,2458,2448, - 2531,2467,2547,3768,2582,143,1631,3142,1586,519, - 144,3838,5541,515,4316,3866,35,1287,32,2921, - 1782,2176,30,31,1285,1160,3838,3049,2160,2529, - 2731,433,520,4043,35,1287,32,3067,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,2427,35,1136,390, - 2319,344,2373,2347,2442,1008,2420,2458,2448,2531, - 2467,2547,3768,2582,143,3792,3163,2032,519,144, - 2427,35,296,4316,3833,35,1287,32,61,7005, - 27,30,31,1285,1160,26,28,524,2901,513, - 436,520,3311,3320,515,2710,35,1287,32,60, - 7005,27,30,31,1285,1160,58,28,3071,219, - 3168,2731,4124,35,1287,32,344,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,2394,392,2445,4219,2319, - 429,2373,2347,2442,4404,2420,2458,2448,2531,2467, - 2547,393,2582,143,2013,429,205,380,144,3838, - 3181,6621,806,516,3639,35,1287,32,2633,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,108,2427,35,2119, - 279,2319,3362,2373,2347,2442,2082,2420,2458,2448, - 2531,2467,2547,221,2582,143,613,544,2629,380, - 144,290,3181,3726,35,1287,32,445,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,324,2160,2365,3169, - 2319,3214,2373,2347,2442,533,2420,2458,2448,2531, - 2467,2547,651,2582,143,3435,35,398,380,144, - 2091,3181,132,387,381,2064,3962,35,1287,32, - 1980,5082,27,30,31,1285,1160,26,28,1819, - 262,25,23,50,1874,106,76,77,108,383, - 3435,35,398,2319,395,2373,2347,2442,429,2420, - 2458,2448,2531,2467,2547,2560,2582,143,898,4201, - 88,553,144,102,3871,388,381,2064,4529,35, - 1287,32,2858,5082,27,30,31,1285,1160,26, - 28,1819,262,25,23,50,1874,588,76,77, - 3398,35,1287,32,694,5082,27,30,31,1285, - 1160,26,28,1819,262,25,23,50,1874,106, - 76,77,108,905,378,381,2064,2319,2529,2373, - 2347,2442,3734,2420,2458,2448,2531,2467,2547,2635, - 2601,164,2427,3163,4397,35,1287,32,3430,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,108,2427,35,2119, - 282,2319,328,2373,2347,2442,691,2420,2458,2448, - 2531,2467,2547,3431,2582,143,545,2629,205,158, - 144,440,3855,6812,4793,35,1287,32,2254,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,85,551,3881,35, - 1287,32,2912,5082,27,30,31,1285,1160,26, - 28,1819,262,25,23,50,1874,106,76,77, - 108,2427,35,2119,3862,2319,2727,2373,2347,2442, - 3903,2420,2458,2448,2531,2467,2547,227,2582,143, - 2709,726,3581,2974,144,3573,35,1287,32,2292, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,291,2750, - 2529,3874,2319,4297,2373,2347,2442,1534,2420,2458, - 2448,2531,2467,2547,2771,2582,143,4897,35,278, - 3084,144,4397,35,1287,32,3197,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,160,2036,642,2874,2319, - 3498,2373,2347,2442,1534,2420,2458,2448,2531,2467, - 2547,3003,2582,143,3610,35,278,374,144,4397, - 35,1287,32,3214,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,156,499,2529,2157,2319,3764,2373,2347, - 2442,2392,2420,2458,2448,2531,2467,2547,3731,2582, - 143,525,3606,525,374,144,4397,35,1287,32, - 524,5082,27,30,31,1285,1160,26,28,1819, - 262,25,23,50,1874,106,76,77,108,997, - 2274,325,3180,2319,556,2373,2347,2442,1337,2420, - 2458,2448,2531,2467,2547,4892,2582,143,1650,3606, - 1008,374,144,541,537,538,539,500,3962,35, - 1287,32,373,5082,27,30,31,1285,1160,26, - 28,1819,262,25,23,50,1874,106,76,77, - 108,555,3953,3752,3919,2319,4297,2373,2347,2442, - 1534,2420,2458,2448,2531,2467,2547,2292,2582,143, - 3610,35,281,553,144,3800,35,1287,32,372, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,160,3116, - 2529,2157,2319,131,2373,2347,2442,1534,2420,2458, - 2448,2531,2467,2547,2908,2582,143,2427,35,296, - 142,144,4397,35,1287,32,370,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,156,2223,326,3366,2319, - 2651,2373,2347,2442,1557,2420,2458,2448,2531,2467, - 2547,3770,2582,143,557,2427,3850,155,144,4397, - 35,1287,32,462,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,3914,35,2119,277,2319,1839,2373,2347, - 2442,2246,2420,2458,2448,2531,2467,2547,524,2582, - 143,558,131,131,154,144,6123,944,1671,552, - 4397,35,1287,32,2309,5082,27,30,31,1285, - 1160,26,28,1819,262,25,23,50,1874,106, - 76,77,108,3155,2529,2529,1652,2319,4363,2373, - 2347,2442,1534,2420,2458,2448,2531,2467,2547,205, - 2582,143,2013,3191,6948,153,144,4397,35,1287, - 32,219,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,108, - 156,3215,3411,691,2319,162,2373,2347,2442,3360, - 2420,2458,2448,2531,2467,2547,131,2582,143,527, - 2177,304,152,144,4397,35,1287,32,1520,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,108,2427,4006,2119, - 74,2319,4297,2373,2347,2442,1534,2420,2458,2448, - 2531,2467,2547,205,2582,143,2013,821,6823,151, - 144,4397,35,1287,32,1003,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 106,76,77,108,160,2466,354,2157,2319,131, - 2373,2347,2442,1534,2420,2458,2448,2531,2467,2547, - 131,2582,143,2013,1013,301,150,144,4397,35, - 1287,32,1004,5082,27,30,31,1285,1160,26, - 28,1819,262,25,23,50,1874,106,76,77, - 108,156,3361,3103,2157,2319,4119,2373,2347,2442, - 1653,2420,2458,2448,2531,2467,2547,3985,2582,143, - 4254,382,564,149,144,4397,35,1287,32,461, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,3914,35, - 2119,4007,2319,131,2373,2347,2442,1534,2420,2458, - 2448,2531,2467,2547,131,2582,143,4028,1104,2302, - 148,144,4397,35,1287,32,327,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,156,4006,2131,391,2319, - 4126,2373,2347,2442,4154,2420,2458,2448,2531,2467, - 2547,449,2582,143,3361,3734,406,147,144,4397, - 35,1287,32,2275,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,2427,35,2119,4061,2319,131,2373,2347, - 2442,1534,2420,2458,2448,2531,2467,2547,3003,2582, - 143,3435,35,398,146,144,4397,35,1287,32, - 4005,5082,27,30,31,1285,1160,26,28,1819, - 262,25,23,50,1874,106,76,77,108,156, - 563,355,210,2319,4130,2373,2347,2442,304,2420, - 2458,2448,2531,2467,2547,2800,2582,143,300,6762, - 305,145,144,4793,35,1287,32,2151,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,3678,35,1136,390, - 2319,4297,2373,2347,2442,1534,2420,2458,2448,2531, - 2467,2547,2290,2601,164,4397,35,1287,32,4602, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,403,4430, - 274,1195,2319,160,2373,2347,2442,2859,2420,2458, - 2448,2531,2467,2547,4113,2582,143,1294,3003,3003, - 159,144,541,537,538,539,2157,4397,35,1287, - 32,3837,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,108, - 589,582,2994,3896,2319,131,2373,2347,2442,1534, - 2420,2458,2448,2531,2467,2547,4155,2582,143,3361, - 3361,399,3149,144,4397,35,1287,32,2276,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,108,156,6063,1102, - 72,2319,4133,2373,2347,2442,1118,2420,2458,2448, - 2531,2467,2547,131,2582,143,70,4125,3405,3535, - 144,2157,4397,35,1287,32,93,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,89,3361,2529,102,2319, - 131,2373,2347,2442,1534,2420,2458,2448,2531,2467, - 2547,3792,2582,143,2013,298,384,581,144,4397, - 35,1287,32,912,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,156,51,1108,691,2319,3793,2373,2347, - 2442,2718,2420,2458,2448,2531,2467,2547,1201,2582, - 143,526,3838,179,140,144,4463,35,1287,32, - 2837,5082,27,30,31,1285,1160,26,28,1819, - 262,25,23,50,1874,106,76,77,108,1300, - 131,3361,297,2319,4327,2373,2347,2442,5351,2420, - 2458,2448,2531,2467,2547,131,2582,143,5334,5499, - 2013,189,144,4793,35,1287,32,1316,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,2427,35,1136,390, - 2319,131,2373,2347,2442,1534,2420,2458,2448,2531, - 2467,2547,1405,2601,164,4793,35,1287,32,198, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,5208,3361, - 274,2013,2319,3147,2373,2347,2442,287,2420,2458, - 2448,2531,2467,2547,131,2601,164,394,5543,3003, - 2463,429,2427,35,1136,390,2812,4793,35,1287, - 32,425,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,108, - 197,24,1503,276,2319,4297,2373,2347,2442,1534, - 2420,2458,2448,2531,2467,2547,274,2601,164,4793, - 35,1287,32,295,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,3464,3684,1259,288,2319,160,2373,2347, - 2442,3016,2420,2458,2448,2531,2467,2547,1498,2601, - 164,4303,650,6925,2157,541,537,538,539,341, - 1492,4793,35,1287,32,424,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 106,76,77,108,2427,35,1136,390,2319,524, - 2373,2347,2442,3157,2420,2458,2448,2531,2467,2547, - 4159,2601,164,4925,35,1287,32,427,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,644,2011,435,2906, - 2319,2389,2373,2347,2442,3116,2420,2458,2448,2531, - 2467,2547,4030,2601,164,329,336,4991,35,1136, - 390,3199,3717,1299,540,537,538,539,131,584, - 237,262,1534,3849,2157,541,537,538,539,4158, - 592,537,538,539,2952,3270,35,1287,32,4589, - 3803,27,30,31,1285,1160,340,28,2557,1342, - 3105,274,541,537,538,539,3866,35,1287,32, - 3886,4031,40,30,31,1285,1160,232,2116,35, - 1287,32,4589,6379,27,30,31,1285,1160,340, - 28,2624,131,235,230,231,765,3003,3496,2157, - 75,540,537,538,539,2013,643,3684,357,1506, - 320,1872,322,1699,275,315,1726,533,1393,3893, - 1036,3639,3311,5182,242,245,248,251,3369,379, - 131,131,1169,585,5614,2600,3875,2014,3187,855, - 3775,4987,5197,320,1872,322,344,2038,315,1726, - 239,262,333,4636,300,3435,35,2253,5375,5209, - 592,537,538,539,3111,131,131,3157,2455,1151, - 1166,645,1578,4793,35,1287,32,5238,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,108,3848,232,1294,49, - 2319,4005,2373,2347,3536,307,311,837,1099,1458, - 4365,826,4297,240,230,231,1534,2529,886,335, - 336,3999,4793,35,1287,32,2021,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,233,1668,2153,1304,2319, - 3721,2373,2347,2442,160,2420,2458,2448,2531,2467, - 3766,5103,35,1136,390,691,3717,2649,2205,2703, - 3866,35,1287,32,237,262,4039,30,31,1285, - 1160,377,560,5149,592,537,538,539,3660,88, - 35,1287,32,4589,3803,27,30,31,1285,1160, - 340,28,567,5214,5412,274,541,537,538,539, - 2891,3469,541,537,538,539,131,4167,3629,4231, - 1215,232,2290,2248,35,3776,32,4589,6379,27, - 30,31,1285,1160,340,28,1934,235,230,231, - 3840,3003,540,537,538,539,540,537,538,539, - 3998,2460,404,131,320,1872,322,2953,275,315, - 1726,131,2529,3475,5370,1262,713,5328,242,245, - 248,251,3369,578,205,2509,1169,585,4005,6930, - 3874,3889,3187,855,3775,4987,5197,3172,320,1872, - 322,3003,2038,315,1726,375,3266,333,703,4793, - 35,1287,32,5209,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,5238,576,3283,4007,2319,131,2373,2347, - 2442,1309,2420,2458,2448,2531,3723,4595,35,1287, - 32,4169,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,577,76,77,5386, - 421,3773,4793,35,1287,32,71,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,2157,216,4568,408,2319, - 1306,2373,2347,2442,516,2420,2458,2448,3696,4793, - 35,1287,32,4768,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,2427,35,1136,390,2319,2010,2373,2347, - 2442,3205,2420,2458,3707,3003,3353,1984,35,1287, - 32,606,6379,27,30,31,1285,1160,340,28, - 540,537,538,539,2310,612,3003,646,3311,524, - 540,537,538,539,131,131,49,87,2742,4583, - 1820,741,2427,35,1136,390,1458,4826,714,131, - 4069,6232,4717,3083,4031,1744,4084,741,6040,2612, - 35,1287,32,4589,3803,27,30,31,1285,1160, - 340,28,320,1872,322,498,2038,316,1726,352, - 4961,334,541,537,538,539,434,5151,3522,35, - 1287,32,4589,3803,27,30,31,1285,1160,340, - 28,3003,353,540,537,538,539,347,2346,2111, - 350,540,537,538,539,5153,2409,131,431,42, - 2738,1659,652,4790,320,1872,322,1858,362,315, - 1726,3339,3003,69,5370,44,2738,2142,35,1136, - 390,131,353,4050,1774,3748,228,345,2346,2111, - 350,3003,131,320,1872,322,1534,753,315,1726, - 156,3872,2013,4636,68,2694,691,180,3888,203, - 215,5357,4004,202,212,213,214,216,356,591, - 638,49,169,53,4033,131,1670,533,4962,4597, - 3003,1458,6335,4159,156,1672,130,3003,3003,4164, - 1455,168,332,183,167,170,171,172,173,174, - 2816,201,4160,2157,3215,307,311,837,592,537, - 538,539,52,2142,35,1136,390,5046,3157,3721, - 573,1534,4793,35,1287,32,2021,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,108,232,134,4032,4143,2319, - 652,2373,2347,2442,415,2420,3655,49,3003,156, - 5154,247,230,231,3920,131,200,1458,3003,1887, - 4082,336,4190,353,228,97,764,3003,345,2346, - 2111,350,3003,131,205,753,2882,4109,156,6937, - 542,4191,616,2694,691,180,3003,203,215,5357, - 562,202,212,213,214,216,1999,591,638,561, - 169,3836,3003,3570,351,88,35,1287,32,4589, - 3803,27,30,31,1285,1160,340,28,90,168, - 2013,184,167,170,171,172,173,174,540,537, - 538,539,181,131,574,547,3003,3668,131,131, - 2448,3003,4300,3260,4198,35,1287,32,3339,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,81,4368,3938,199, - 320,1872,322,4004,3087,315,1726,3003,4337,6851, - 4636,4793,35,1287,32,3003,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 106,76,77,108,5429,4087,4308,2894,2319,3939, - 2373,2347,2442,4562,3667,3014,647,453,3759,35, - 1287,32,3373,3803,27,30,31,1285,1160,340, - 28,2157,308,311,837,4793,35,1287,32,2013, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,3003,530, - 5164,4573,2319,652,2373,2347,2442,405,3695,1740, - 35,1287,32,3003,3803,27,30,31,1285,1160, - 340,28,131,317,1312,322,1237,228,408,2013, - 4452,2968,541,537,538,539,2841,3723,753,3003, - 3003,156,2015,98,4668,4517,2694,691,180,3684, - 203,215,5357,5206,202,212,213,214,216,3003, - 591,638,3087,169,629,5475,3003,6851,652,3311, - 3003,4582,4137,3003,320,1872,322,131,2068,603, - 1726,4341,168,2013,3844,167,170,171,172,173, - 174,67,228,4717,2529,3003,2905,431,66,3003, - 652,8155,65,753,3003,64,156,3003,3003,3157, - 131,2694,691,180,3009,203,215,5357,2013,202, - 212,213,214,216,344,591,638,55,169,728, - 3967,54,222,652,1647,3768,4178,8155,156,101, - 2065,3003,691,2879,691,8155,4316,168,8155,178, - 167,170,171,172,173,174,8155,228,377,5497, - 2549,331,336,5067,2548,8155,131,193,753,361, - 3609,156,8155,2677,8155,8155,2694,691,180,2968, - 203,215,5357,8155,202,212,213,214,216,8155, - 591,638,8155,169,3003,3777,3073,3110,3202,35, - 3776,32,4589,3803,27,30,31,1285,1160,340, - 28,3878,168,8155,176,167,170,171,172,173, - 174,540,537,538,539,8155,4712,3296,35,3776, - 32,4589,3803,27,30,31,1285,1160,340,28, - 3888,4287,8155,531,8155,432,8155,8155,8155,8155, - 3940,537,538,539,8155,8155,5495,827,8155,8155, - 6335,652,8155,320,1872,322,8155,3775,315,1726, - 4287,3311,3697,703,8155,8155,3308,35,1136,390, - 8155,3888,8155,5205,8155,228,8155,3311,8155,8155, - 8155,8155,320,1872,322,4717,753,315,1726,156, - 3157,8155,703,8155,2694,691,180,8155,203,215, - 5357,344,202,212,213,214,216,8155,591,638, - 49,169,131,8155,8155,8155,3067,926,8155,8155, - 1458,652,8155,1148,6443,421,3773,8155,8155,47, - 168,3157,583,167,170,171,172,173,174,1220, - 344,353,4170,336,8155,228,345,2346,2111,350, - 8155,3768,8155,5391,421,3773,753,8155,8155,156, - 343,507,4316,8155,2694,691,180,8155,203,215, - 5357,8155,202,212,213,214,216,8155,591,638, - 2797,169,1025,4226,336,8155,652,3705,35,1287, - 32,4589,3803,27,30,31,1285,1160,340,28, - 168,8155,177,167,170,171,172,173,174,8155, - 228,8155,504,506,8155,8155,8155,8155,8155,8155, - 8155,753,8155,8155,156,8155,8155,8155,8155,2694, - 691,180,8155,203,215,5357,8155,202,212,213, - 214,216,8155,591,638,3141,169,1124,8155,8155, - 8155,652,320,1872,322,8155,8155,315,1726,8155, - 8155,8155,4060,8155,8155,168,8155,187,167,170, - 171,172,173,174,8155,228,8155,8155,8155,131, - 8155,8155,8155,652,8155,8155,753,8155,8155,156, - 8155,444,8155,458,2694,691,180,8155,203,215, - 5357,8155,202,212,213,214,216,344,591,638, - 8155,169,1223,5475,8155,8155,652,3311,3768,1669, - 8155,156,8155,8155,6276,8155,3712,3930,8155,4316, - 168,3311,4102,167,170,171,172,173,174,8155, - 228,4717,540,537,538,539,8155,3681,8155,8155, - 8155,753,8155,8155,156,4717,8155,8155,8155,2694, - 691,180,3062,203,215,5357,3608,202,212,213, - 214,216,8155,591,638,8155,169,1322,8155,8155, - 8155,652,8155,3775,8155,8155,8155,3311,2038,540, - 537,538,539,333,8155,168,8155,192,167,170, - 171,172,173,174,8155,228,8155,8155,8155,3089, - 8155,4717,8155,8155,8155,8155,753,361,5313,156, - 8155,8155,8155,8155,2694,691,180,8155,203,215, - 5357,507,202,212,213,214,216,8155,591,638, - 8155,169,1421,4100,3073,3110,652,5480,35,1287, - 32,6734,3803,27,30,31,1285,1160,340,28, - 168,8155,186,167,170,171,172,173,174,8155, - 228,8155,8155,8155,8155,8155,8155,8155,8155,8155, - 8155,753,504,506,156,8155,8155,507,8155,2694, - 691,180,8155,203,215,5357,8155,202,212,213, - 214,216,8155,591,638,8155,169,8155,8155,8155, - 8155,1719,320,1872,322,4015,6276,315,1726,8155, - 5233,8155,3413,8155,8155,168,8155,194,167,170, - 171,172,173,174,540,537,538,539,505,506, - 8155,8155,353,541,537,538,539,345,2346,2111, - 350,8155,8155,8155,3062,8155,8155,4793,35,1287, - 32,3401,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,108, - 2038,8155,8155,8155,2319,334,2373,2347,3538,4793, - 35,1287,32,8155,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,8155,8155,8155,8155,2319,8155,2373,2347, - 3544,4793,35,1287,32,8155,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 106,76,77,108,8155,8155,8155,8155,2319,8155, - 2373,2347,3591,8155,8155,8155,367,4793,35,1287, - 32,8155,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,108, - 8155,8155,8155,8155,2319,8155,2373,2347,3605,4793, - 35,1287,32,8155,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,5270,8155,8155,8155,2319,2379,2373,2347, - 3628,3364,35,1287,32,6516,3803,27,30,31, - 1285,1160,340,28,8155,541,537,538,539,8155, - 592,537,538,539,8155,8155,8155,8155,8155,4793, - 35,1287,32,352,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,8155,8155,8155,8155,2319,232,2373,3634, - 8155,8155,8155,8155,8155,8155,320,1872,322,8155, - 8155,315,1726,250,230,231,1036,4628,35,1287, - 32,6734,3803,27,30,31,1285,1160,340,28, - 8155,8155,2304,35,1136,390,353,8155,8155,8155, - 8155,345,2346,2111,350,8155,2333,8155,8155,8155, - 3067,4793,35,1287,32,3872,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 106,76,77,108,228,8155,49,8155,2319,8155, - 2373,3636,320,1872,322,753,1458,315,1726,8155, - 5223,8155,528,8155,8155,999,8155,205,215,5357, - 8155,204,212,213,214,216,8155,591,638,8155, - 8155,8155,353,541,537,538,539,345,2346,2111, - 350,8155,8155,8155,8155,206,208,210,684,8155, - 8155,529,5047,35,1136,390,8155,3717,217,207, - 209,8155,8155,8155,8155,238,262,2514,8155,8155, - 8155,8155,8155,8155,8155,592,537,538,539,2890, - 8155,8155,8155,8155,13,8155,6130,8155,8155,8155, - 592,537,538,539,8155,8155,274,8155,8155,2524, - 35,296,592,537,538,539,8155,8155,1607,35, - 1287,32,232,6379,27,30,31,1285,1160,340, - 28,8155,540,537,538,539,8155,232,236,230, - 231,540,537,538,539,8155,8155,131,8155,232, - 8155,3067,1820,253,230,231,8155,8155,8155,275, - 8155,3062,8155,8155,8155,587,230,231,8155,243, - 246,249,252,3369,656,344,8155,1169,586,8155, - 8155,8155,8155,320,1872,322,3768,2038,318,1726, - 8155,8155,334,1607,35,1287,32,4316,6379,27, - 30,31,1285,1160,340,28,8155,8155,5159,35, - 1136,390,8155,3717,8155,2832,540,537,538,539, - 8155,238,262,5046,8155,8155,8155,798,8155,8155, - 8155,592,537,538,539,3577,4069,3176,35,1287, - 32,3128,3803,27,30,31,1285,1160,340,28, - 4110,3933,274,8155,8155,2821,1680,8155,320,1872, - 322,8155,2038,316,1726,156,5237,334,232,8155, - 2694,5289,180,540,537,538,539,8155,540,537, - 538,539,8155,8155,236,230,231,8155,8155,540, - 537,538,539,3333,540,537,538,539,4790,8155, - 8155,8155,317,1312,322,275,195,8155,8155,4982, - 8155,8155,8155,8155,5140,243,246,249,252,3369, - 8155,8155,8155,1169,586,4793,35,1287,32,8155, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,8155,8155, - 8155,8155,2319,8155,3437,4793,35,1287,32,8155, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,108,8155,2562, - 8155,8155,2319,3067,3446,4661,35,1287,32,3216, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,575,76,77,228,8155,8155, - 8155,8155,8155,1647,8155,131,8155,8155,753,3067, - 8155,1669,8155,2656,8155,8155,6276,3067,6861,196, - 205,215,5357,8155,204,212,213,214,216,8155, - 591,638,8155,344,540,537,538,539,8155,8155, - 8155,228,8155,8155,3768,8155,8155,8155,206,208, - 210,684,753,2826,3062,4316,8155,8155,6276,8155, - 8155,217,207,209,205,215,5357,8155,204,212, - 213,214,216,2880,591,638,540,537,538,539, - 2038,8155,8155,8155,2750,333,8155,2364,3067,6130, - 8155,2984,206,208,210,684,3062,8155,8155,8155, - 8155,8155,8155,8155,8155,217,207,209,8155,8155, - 4781,8155,228,8155,592,537,538,539,8155,8155, - 8155,8155,2038,753,8155,8155,8155,334,8155,8155, - 8155,2599,8155,6130,8155,205,215,5357,8155,204, - 212,213,214,216,8155,591,638,8155,353,8155, - 8155,232,8155,347,2346,2111,350,8155,8155,8155, - 8155,8155,8155,206,208,210,684,236,230,231, - 8155,8155,8155,8155,8155,8155,217,207,209,4793, - 35,1287,32,8155,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,108,2676,8155,6130,8155,3474,4793,35,1287, - 32,8155,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,108, - 4793,35,1287,32,3475,5082,27,30,31,1285, - 1160,26,28,1819,262,25,23,50,1874,106, - 76,77,108,4264,35,1287,32,3491,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,81,4793,35,1287,32, - 8155,5082,27,30,31,1285,1160,26,28,1819, - 262,25,23,50,1874,106,76,77,83,4793, - 35,1287,32,8155,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,82,8155,8155,8155,648,4793,35,1287,32, - 8155,5082,27,30,31,1285,1160,26,28,1819, - 262,25,23,50,1874,106,76,77,81,4793, - 35,1287,32,8155,5082,27,30,31,1285,1160, - 26,28,1819,262,25,23,50,1874,106,76, - 77,80,4793,35,1287,32,8155,5082,27,30, - 31,1285,1160,26,28,1819,262,25,23,50, - 1874,106,76,77,79,4793,35,1287,32,8155, - 5082,27,30,31,1285,1160,26,28,1819,262, - 25,23,50,1874,106,76,77,78,4793,2138, - 1287,2260,8155,5082,27,30,31,1285,1160,26, - 28,1819,262,25,23,50,1874,106,76,77, - 84,4330,35,1287,32,8155,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 106,76,77,104,4793,35,1287,32,8155,5082, - 27,30,31,1285,1160,26,28,1819,262,25, - 23,50,1874,106,76,77,110,4793,35,1287, - 32,8155,5082,27,30,31,1285,1160,26,28, - 1819,262,25,23,50,1874,106,76,77,109, - 4793,35,1287,32,8155,5082,27,30,31,1285, - 1160,26,28,1819,262,25,23,50,1874,106, - 76,77,107,4793,35,1287,32,8155,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,106,76,77,105,2468,8155,8155,8155, - 3067,4727,35,1287,32,8155,5082,27,30,31, - 1285,1160,26,28,1819,262,25,23,50,1874, - 86,76,77,8155,228,8155,8155,8155,8155,8155, - 8155,8155,8155,1934,8155,753,8155,3311,6955,8155, - 2198,8155,8155,8155,3067,8155,8155,205,215,5357, - 8155,204,212,213,214,216,8155,591,638,8155, - 8155,228,3390,35,1136,390,8155,8155,228,8155, - 8155,8155,8155,8155,8155,206,208,210,684,753, - 8155,8155,8155,8155,2317,409,4018,8155,521,207, - 209,205,215,5357,8155,204,212,213,214,216, - 2844,591,638,8155,3067,8155,49,8155,8155,8155, - 8155,8155,410,411,412,684,1458,8155,8155,206, - 208,210,684,8155,8155,47,8155,8155,228,8155, - 8155,8155,218,207,209,1155,8155,8155,8155,753, - 8155,8155,2638,8155,2938,8155,3311,6276,3067,8155, - 2636,205,215,5357,8155,204,212,213,214,216, - 8155,591,638,8155,8155,540,537,538,539,8155, - 4717,8155,228,8155,8155,8155,8155,8155,8155,206, - 208,210,684,753,8155,3062,2427,35,1136,390, - 8155,8155,611,207,209,205,215,5357,8155,204, - 212,213,214,216,3032,591,638,8155,3067,8155, - 8155,2038,8155,8155,413,415,333,8155,8155,8155, - 8155,8155,8155,206,208,210,684,8155,8155,8155, - 49,8155,228,8155,8155,8155,610,207,209,8155, - 1458,5583,8155,753,2252,1669,361,6547,3126,6655, - 6276,8155,3067,8155,8155,205,215,5357,8155,204, - 212,213,214,216,8155,591,638,8155,540,537, - 538,539,3936,3073,3110,8155,228,8155,8155,8155, - 8155,8155,8155,206,208,210,684,753,3062,2142, - 35,1136,390,8155,8155,8155,609,207,209,205, - 215,5357,8155,204,212,213,214,216,3220,591, - 638,8155,3067,8155,2038,8155,8155,8155,8155,333, - 8155,8155,8155,8155,8155,8155,8155,206,208,210, - 684,4961,8155,49,8155,8155,228,8155,8155,8155, - 522,207,209,1458,5583,8155,8155,753,8155,8155, - 8155,8155,6795,5399,540,537,538,539,8155,205, - 215,5357,2882,204,212,213,214,216,2147,591, - 638,8155,8155,8155,4790,8155,540,537,538,539, - 8155,8155,8155,8155,8155,8155,8155,206,208,210, - 684,592,537,538,539,8155,4982,8155,8155,8155, - 306,207,209,4859,35,1287,32,8155,5082,27, - 30,31,1285,1160,26,28,1819,262,25,23, - 50,1874,3354,76,77,3314,2638,8155,232,3067, - 3311,6276,8155,8155,8155,8155,8155,8155,8155,8155, - 8155,8155,8155,8155,235,230,231,8155,8155,540, - 537,538,539,228,4717,8155,8155,2066,8155,8155, - 8155,3311,6955,8155,753,3477,2278,8155,8155,3062, - 8155,8155,8155,8155,5621,8155,205,215,5357,8155, - 204,212,213,214,216,228,591,638,8155,592, - 537,538,539,8155,8155,2038,8155,8155,4996,8155, - 333,8155,8155,8155,206,208,210,684,2317,409, - 4018,8155,2905,8155,8155,8155,652,501,207,209, - 8155,540,537,538,539,3587,232,8155,629,619, - 361,3390,35,1136,390,8155,410,411,412,684, - 344,3062,235,230,231,2905,8155,8155,8155,652, - 8155,3768,8155,8155,156,8155,3936,3073,3110,2879, - 691,8155,4316,631,8155,5093,8155,3403,8155,8155, - 8155,8155,5621,344,2636,49,2549,8155,8155,8155, - 3391,8155,2905,8155,3768,1458,652,156,540,537, - 538,539,2879,691,47,4316,8155,618,6556,8155, - 8155,8155,8155,8155,1890,8155,8155,8155,3062,2549, - 344,8155,2905,3441,8155,8155,652,8155,8155,8155, - 8155,3768,8155,8155,156,8155,629,619,8155,2879, - 691,8155,4316,8155,3047,8155,8155,8155,413,416, - 344,8155,8155,2905,1669,8155,2549,652,8155,6276, - 3585,3768,8155,8155,156,8155,8155,8155,8155,2879, - 691,632,4316,8155,8155,8155,8155,540,537,538, - 539,344,1669,8155,8155,8155,2549,6276,3082,8155, - 3606,8155,3768,6276,8155,156,8155,3062,8155,8155, - 2879,691,8155,4316,8155,540,537,538,539,8155, - 8155,540,537,538,539,4499,8155,2549,8155,8155, - 8155,3941,8155,2038,8155,3062,8155,8155,333,8155, - 8155,3062,2142,35,1136,390,8155,8155,540,537, - 538,539,8155,3479,35,1136,390,3484,35,1136, - 390,2038,8155,3587,8155,8155,6768,2038,3062,8155, - 8155,8155,6768,3390,35,1136,390,2142,35,1136, - 390,2142,35,1136,390,8155,49,8155,8155,8155, - 8155,5238,8155,8155,3047,798,1458,49,8155,8155, - 8155,49,8155,8155,8155,47,8155,1458,8155,3116, - 8155,1458,8155,8155,8155,991,47,49,8155,344, - 1835,49,8155,8155,131,49,1937,1458,798,8155, - 2816,1458,8155,156,8155,1458,2971,8155,188,8155, - 47,4457,8155,8155,47,5498,2486,131,8155,3067, - 967,798,344,8155,1127,2142,35,1136,390,94, - 2142,35,1136,390,8155,96,156,2142,35,1136, - 390,188,8155,344,4457,344,8155,532,2427,35, - 1136,390,4364,8155,3768,2427,35,1136,390,156, - 2427,35,1136,390,188,4316,8155,4457,8155,49, - 8155,8155,8155,8155,49,540,537,538,539,1458, - 190,49,8155,535,1458,8155,8155,8155,47,8155, - 8155,1458,49,47,8155,4790,8155,8155,1196,49, - 47,4996,1458,3004,49,2427,35,1136,390,1458, - 3622,1062,131,4058,1458,8155,3067,131,1159,8155, - 8155,3067,8155,1697,540,537,538,539,8155,131, - 8155,8155,8155,798,8155,8155,4073,8155,131,8155, - 344,8155,3067,8155,3062,344,8155,8155,8155,49, - 131,3768,8155,8155,3067,8155,3768,344,8155,1458, - 8155,8155,4316,8155,8155,4089,344,4316,999,8155, - 3873,156,8155,8155,8155,8155,188,3768,344,4457, - 2886,8155,8155,131,8155,3977,3614,3067,4316,3768, - 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155, - 4316,8155,8155,8155,8155,8155,511,8155,8155,8155, - 8155,344,8155,8155,8155,8155,8155,8155,509,8155, - 8155,8155,3768,8155,8155,8155,8155,8155,8155,8155, - 8155,8155,8155,4316,8155,8155,8155,4271,8155,8155, - 8155,8155,8155,8155,8155,8155,8155,8155,4099,8155, - 8155,536,8155,0,1,229,856,0,503,6086, - 0,1,229,0,39,8795,0,39,8794,636, - 0,39,8170,0,39,8169,0,1,3095,0, - 995,1,0,39,1,8795,0,39,1,8794, - 0,39,1,8170,0,39,1,8169,0,1, - 4343,0,1,731,0,229,219,0,1,976, - 0,1,1000,0,1,1089,0,8389,223,0, - 8388,223,0,976,223,0,1000,223,0,1089, - 223,0,1103,223,0,8494,223,0,8493,223, - 0,8416,223,0,8415,223,0,8414,223,0, - 8413,223,0,8412,223,0,8411,223,0,8410, - 223,0,8409,223,0,608,637,0,8389,224, - 0,8388,224,0,976,224,0,1000,224,0, - 1089,224,0,1103,224,0,8494,224,0,8493, - 224,0,8416,224,0,8415,224,0,8414,224, - 0,8413,224,0,8412,224,0,8411,224,0, - 8410,224,0,8409,224,0,8389,225,0,8388, - 225,0,976,225,0,1000,225,0,1089,225, - 0,1103,225,0,8494,225,0,8493,225,0, - 8416,225,0,8415,225,0,8414,225,0,8413, - 225,0,8412,225,0,8411,225,0,8410,225, - 0,8409,225,0,1089,396,0,1000,396,0, - 976,396,0,284,396,0,8389,226,0,8388, - 226,0,976,226,0,1000,226,0,1089,226, - 0,1103,226,0,8494,226,0,8493,226,0, - 8416,226,0,8415,226,0,8414,226,0,8413, - 226,0,8412,226,0,8411,226,0,8410,226, - 0,8409,226,0,284,289,0,8389,227,0, - 8388,227,0,976,227,0,1000,227,0,1089, - 227,0,1103,227,0,8494,227,0,8493,227, - 0,8416,227,0,8415,227,0,8414,227,0, - 8413,227,0,8412,227,0,8411,227,0,8410, - 227,0,8409,227,0,2033,389,0,39,8794, - 0,8795,48,0,8794,48,0,8170,48,0, - 8169,48,0,8389,590,0,8388,590,0,976, - 590,0,1000,590,0,1089,590,0,1103,590, - 0,8494,590,0,8493,590,0,8416,590,0, - 8415,590,0,8414,590,0,8413,590,0,8412, - 590,0,8411,590,0,8410,590,0,8409,590, - 0,8389,241,0,8388,241,0,976,241,0, - 1000,241,0,1089,241,0,1103,241,0,8494, - 241,0,8493,241,0,8416,241,0,8415,241, - 0,8414,241,0,8413,241,0,8412,241,0, - 8411,241,0,8410,241,0,8409,241,0,8769, - 241,0,8768,241,0,8767,241,0,8428,241, - 0,8427,241,0,8426,241,0,8425,241,0, - 8424,241,0,8423,241,0,8422,241,0,8421, - 241,0,8420,241,0,8419,241,0,8418,241, - 0,8762,241,0,8761,241,0,39,241,8795, - 0,39,241,8794,635,0,39,241,8170,0, - 39,241,8169,0,8193,241,0,1,332,0, - 38,731,0,38,8795,0,38,8794,0,38, - 8170,0,38,8169,0,456,2220,0,442,2314, - 0,2033,29,0,8167,1,0,2643,319,0, - 1089,600,0,1000,600,0,976,600,0,604, - 600,0,604,599,0,8218,75,0,8217,75, - 0,1064,75,0,1085,75,0,1876,75,0, - 1923,75,0,1,602,0,1,446,0,460, - 1921,0,459,2207,0,35,33,0,47,37, - 0,8167,385,0,8166,385,0,1089,602,0, - 1000,602,0,976,602,0,976,634,0,1000, - 634,0,1089,634,0,8775,634,0,503,2648, - 0,8193,1,229,0,39,1,229,0,229, - 418,0,1,2079,0,1,8769,0,1,8768, - 0,1,8767,0,1,8428,0,1,8427,0, - 1,8426,0,1,8425,0,1,8424,0,1, - 8423,0,1,8422,0,1,8421,0,1,8420, - 0,1,8419,0,1,8418,0,1,8762,0, - 1,8761,0,1,3487,0,8795,37,0,8794, - 37,0,8170,37,0,8169,37,0,43,8191, - 0,43,37,0,8163,1,0,3078,91,0, - 32,34,0,39,731,0,1089,332,0,1000, - 332,0,976,332,0,39,241,8794,0,1, - 1405,0,1,1440,0,229,220,0,4927,126, - 0,8389,630,0,8388,630,0,976,630,0, - 1000,630,0,1089,630,0,1103,630,0,8494, - 630,0,8493,630,0,8416,630,0,8415,630, - 0,8414,630,0,8413,630,0,8412,630,0, - 8411,630,0,8410,630,0,8409,630,0,976, - 633,0,1000,633,0,1089,633,0,8775,633, - 0,8165,407,0,8164,407,0,229,417,0, - 1,229,3271,0,8164,229,0,3295,229,0, - 8161,1,0,8160,1,0,237,1683,0,390, - 32,0,389,29,0,1089,447,0,1000,447, - 0,976,447,0,8193,447,0,39,447,0, - 332,447,0,8191,45,0,37,45,0,3782, - 229,0,10,12,0,8193,1,0,39,1, - 0,588,577,0,1,92,0,1103,337,0, - 8494,337,0,8493,337,0,4927,128,0,4927, - 127,0,8,10,12,0,8795,2,37,0, - 8794,2,37,0,8170,2,37,0,8169,2, - 37,0,8795,36,0,8794,36,0,8170,36, - 0,8169,36,0,2680,100,0,1089,597,0, - 1000,597,0,976,597,0,1089,596,0,1000, - 596,0,976,596,0,540,541,0,589,578, - 0,3262,103,0,3023,99,0,1089,95,0, - 1000,95,0,976,95,0,8193,95,0,39, - 95,0,332,95,0,35,73,0,4097,385, - 0,1089,597,598,0,1000,597,598,0,976, - 597,598,0,597,598,0,279,2491,0,8, - 12,0,185,4647,0 + 35,36,36,37,37,38,38,41,41,42, + 42,47,47,46,46,46,46,46,46,46, + 46,46,46,46,46,46,45,40,146,146, + 106,106,203,203,99,233,233,86,86,86, + 86,86,86,86,86,86,87,87,87,84, + 84,65,65,204,204,88,88,88,120,120, + 205,205,89,89,89,206,206,90,90,90, + 90,90,91,91,93,93,93,93,93,93, + 93,93,56,56,56,56,56,121,121,119, + 119,57,207,28,28,28,28,28,53,53, + 77,77,77,77,77,107,107,122,122,122, + 122,122,123,123,123,124,124,124,125,125, + 125,126,126,126,78,78,78,78,78,79, + 79,79,13,14,14,14,14,14,14,14, + 14,14,14,14,98,111,111,111,111,111, + 111,109,109,109,172,173,173,110,110,208, + 175,175,174,174,147,147,127,82,82,148, + 59,52,176,176,60,95,95,149,149,171, + 171,128,129,129,130,76,76,177,177,71, + 71,71,67,67,66,72,72,96,96,75, + 75,75,70,100,100,114,113,113,61,61, + 68,68,69,69,50,115,115,115,101,101, + 101,102,102,103,103,103,104,104,131,131, + 131,133,133,132,132,234,234,105,105,210, + 210,210,210,210,151,51,51,179,209,209, + 152,152,153,153,153,154,181,211,211,44, + 44,108,116,116,116,116,213,135,134,134, + 112,112,112,182,183,183,183,183,183,183, + 183,183,183,183,183,215,215,212,212,214, + 214,137,138,138,138,138,139,216,140,136, + 136,217,217,184,184,184,184,118,118,118, + 218,218,8,8,9,219,219,220,185,178, + 178,186,186,187,188,188,7,7,10,221, + 221,221,221,221,221,221,221,221,221,221, + 221,221,221,221,221,221,221,221,221,221, + 221,221,221,221,221,221,221,221,221,221, + 221,221,221,221,221,221,221,221,221,221, + 221,80,83,83,189,189,156,156,157,157, + 157,157,157,157,3,158,158,155,155,141, + 141,94,81,92,180,180,142,142,222,222, + 222,159,159,150,150,223,223,23,23,23, + 43,43,24,24,224,224,190,190,190,191, + 191,225,225,192,192,25,25,226,226,193, + 193,193,193,26,62,227,227,228,228,194, + 194,194,160,160,160,19,19,19,19,33, + 33,42,17,87,229,143,143,143,117,117, + 28,58,77,130,130,130,137,137,137,208, + 213,135,70,76,172,148,13,13,61,94, + 94,94,14,14,14,69,69,63,39,161, + 162,162,162,162,162,162,162,162,162,196, + 196,231,231,230,230,195,195,54,61,56, + 56,1,1,235,96,96,96,96,96,96, + 96,197,198,198,183,1803,35,3358,3331,1429, + 6923,27,30,31,1263,1255,26,28,3330,262, + 23,25,50,2051,106,76,77,108,592,537, + 538,539,2496,4218,2545,2525,2587,3214,2552,2686, + 2623,2819,2688,2916,4133,1006,2976,143,529,274, + 5290,158,144,2758,35,1266,32,1715,7104,27, + 30,31,1263,1255,59,28,232,2453,35,3954, + 32,4454,5056,27,30,31,1263,1255,340,28, + 1926,617,235,230,231,2448,2484,2360,34,213, + 3999,537,538,539,2448,35,6558,6554,1555,35, + 1266,32,1600,275,41,30,31,1263,1255,1734, + 4748,3496,5250,242,245,248,251,5533,4025,3769, + 1949,1316,585,2448,35,2360,277,3070,860,3116, + 3770,4502,73,320,908,322,864,1521,315,698, + 2190,35,280,2192,325,5051,2835,4658,5260,4025, + 3769,2495,1877,35,3358,3331,1514,6923,27,30, + 31,1263,1255,26,28,3330,262,23,25,50, + 2051,106,76,77,108,592,537,538,539,2496, + 392,2545,2525,2587,429,2552,2686,2623,2819,2688, + 2916,1852,1414,2976,143,847,274,2176,158,144, + 1059,3572,2448,2449,6562,421,3953,2190,35,455, + 1554,377,6993,232,89,35,1266,32,4454,5056, + 27,30,31,1263,1255,340,28,545,3245,235, + 230,231,1555,592,537,538,539,540,537,538, + 539,2448,35,2360,279,3299,35,1266,32,402, + 275,1684,30,31,1263,1255,1344,5726,2752,5398, + 242,245,248,251,5533,290,229,3225,1316,585, + 1087,232,6659,619,3070,860,3116,3770,4502,2729, + 320,908,322,5413,997,315,698,244,230,231, + 3316,1723,2043,3775,182,5260,290,3011,2495,3521, + 35,1266,32,3074,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,500,2257,3775,375,2496,344,2545,2525, + 2587,567,2552,2686,2623,2819,2688,2916,3133,4526, + 2976,143,307,311,1416,519,144,614,2131,3603, + 4588,35,1266,32,326,6981,27,30,31,1263, + 1255,57,28,683,391,2112,4523,1344,520,3521, + 35,1266,32,3074,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,1995,448,3410,3415,2496,344,2545,2525, + 2587,5298,2552,2686,2623,2819,2688,2916,3133,318, + 2976,143,2190,35,280,519,144,7096,1521,3603, + 4720,35,1266,32,3668,6981,27,30,31,1263, + 1255,56,28,555,2448,35,296,1129,520,814, + 515,2758,35,1266,32,1013,7104,27,30,31, + 1263,1255,58,28,3295,3023,2283,3315,2835,3521, + 35,1266,32,3074,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,2448,35,1227,390,2496,344,2545,2525, + 2587,1113,2552,2686,2623,2819,2688,2916,3133,445, + 2976,143,42,3317,2336,519,144,847,570,3603, + 515,3299,35,1266,32,61,324,40,30,31, + 1263,1255,1,3120,3429,533,274,3315,520,4067, + 35,1266,32,3074,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,4020,35,1227,390,2496,344,2545,2525, + 2587,1571,2552,2686,2623,2819,2688,2916,3133,1129, + 2976,143,4918,35,278,519,144,1615,3011,3603, + 276,3705,35,1266,32,60,7104,27,30,31, + 1263,1255,26,28,558,2839,274,513,520,6302, + 515,3299,35,1266,32,1799,3225,2588,30,31, + 1263,1255,568,2344,3473,796,2845,3315,4149,35, + 1266,32,449,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,3503,35,278,2107,2496,2835,2545,2525,2587, + 3998,2552,2686,2623,2819,2688,2916,2139,1518,2976, + 143,3503,35,281,380,144,2835,2432,2448,3965, + 516,3672,35,1266,32,402,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,1006,847,2835,72,2496,6877, + 2545,2525,2587,305,2552,2686,2623,2819,2688,2916, + 5442,527,2976,143,1532,1519,1723,380,144,652, + 2432,1114,4819,35,1266,32,891,5484,27,30, + 31,1263,1255,26,28,1963,262,23,25,50, + 2051,106,76,77,108,847,1446,1346,462,2496, + 160,2545,2525,2587,449,2552,2686,2623,2819,2688, + 2916,377,1006,3209,164,73,2734,6898,2962,1532, + 387,381,2284,3829,35,1266,32,2483,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,108,2448,35,2360,282, + 2496,3242,2545,2525,2587,2448,2552,2686,2623,2819, + 2688,2916,622,5536,2976,143,3025,1532,4133,380, + 144,425,2432,388,381,2284,2448,35,296,2736, + 3985,35,1266,32,4133,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,156,4984,1680,2244,2496,162,2545, + 2525,2587,1161,2552,2686,2623,2819,2688,2916,73, + 73,2976,143,4144,1532,2964,553,144,2448,35, + 1227,390,4355,35,1266,32,543,5484,27,30, + 31,1263,1255,26,28,1963,262,23,25,50, + 2051,106,76,77,108,2448,35,2360,3973,2496, + 3413,2545,2525,2587,3415,2552,2686,2623,2819,2688, + 2916,3415,274,2976,143,378,381,2284,158,144, + 3429,35,1266,32,1308,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,2331,393,2213,3837,2496,429,2545, + 2525,2587,221,2552,2686,2623,2819,2688,2916,304, + 395,3209,164,5298,429,313,341,3903,35,1266, + 32,2011,5484,27,30,31,1263,1255,26,28, + 1963,262,23,25,50,2051,106,76,77,108, + 2448,35,283,328,2496,556,2545,2525,2587,2835, + 2552,2686,2623,2819,2688,2916,3979,1706,2976,143, + 1611,3109,551,3138,144,6833,2033,3214,2495,2668, + 3606,35,1266,32,3415,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,2448,3769,3444,3837,2496,2155,2545, + 2525,2587,4133,2552,2686,2623,2819,2688,2916,329, + 336,2976,143,2448,35,3995,3167,144,4355,35, + 1266,32,301,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,1006,1997,644,1106,2496,6911,2545,2525,2587, + 1213,2552,2686,2623,2819,2688,2916,1706,5442,2976, + 143,2013,1532,3415,374,144,4355,35,1266,32, + 3243,5484,27,30,31,1263,1255,26,28,1963, + 262,23,25,50,2051,106,76,77,108,4051, + 35,2360,277,2496,3029,2545,2525,2587,160,2552, + 2686,2623,2819,2688,2916,5268,557,2976,143,335, + 336,564,374,144,4355,35,1266,32,3231,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,108,323,394,1051, + 291,2496,429,2545,2525,2587,1161,2552,2686,2623, + 2819,2688,2916,3320,1006,2976,143,544,3245,6666, + 374,144,5275,93,3085,3985,35,1266,32,373, + 5484,27,30,31,1263,1255,26,28,1963,262, + 23,25,50,2051,106,76,77,108,3650,73, + 354,2491,2496,949,2545,2525,2587,3941,2552,2686, + 2623,2819,2688,2916,73,73,2976,143,1219,1019, + 406,553,144,3747,35,1266,32,372,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,108,2448,4017,2360,74, + 2496,73,2545,2525,2587,1109,2552,2686,2623,2819, + 2688,2916,3717,1214,2976,143,3738,35,398,142, + 144,4355,35,1266,32,370,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,2447,2426,3415,4015,2496,3309, + 2545,2525,2587,355,2552,2686,2623,2819,2688,2916, + 5268,1518,2976,143,3738,35,398,159,144,4355, + 35,1266,32,344,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,499,3219,637,1671,2496,4076,2545,2525, + 2587,3942,2552,2686,2623,2819,2688,2916,73,73, + 2976,143,3745,4292,2835,155,144,552,4355,35, + 1266,32,652,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,4051,35,2360,4021,2496,2212,2545,2525,2587, + 3944,2552,2686,2623,2819,2688,2916,73,1706,2976, + 143,5441,5184,2384,154,144,4355,35,1266,32, + 3415,5484,27,30,31,1263,1255,26,28,1963, + 262,23,25,50,2051,106,76,77,108,2448, + 35,2360,4028,2496,1773,2545,2525,2587,3952,2552, + 2686,2623,2819,2688,2916,73,3415,2976,143,5512, + 3610,336,153,144,4355,35,1266,32,179,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,108,2835,3417,1687, + 3837,2496,5290,2545,2525,2587,2923,2552,2686,2623, + 2819,2688,2916,2443,198,2976,143,2013,2691,2244, + 152,144,4355,35,1266,32,2429,5484,27,30, + 31,1263,1255,26,28,1963,262,23,25,50, + 2051,106,76,77,108,1006,847,3225,4076,2496, + 6916,2545,2525,2587,3495,2552,2686,2623,2819,2688, + 2916,1706,526,2976,143,729,5268,3219,151,144, + 4355,35,1266,32,3415,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,2835,2835,3225,4076,2496,563,2545, + 2525,2587,1251,2552,2686,2623,2819,2688,2916,1706, + 829,2976,143,331,336,653,150,144,4355,35, + 1266,32,197,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,3415,2540,2630,298,2496,73,2545,2525,2587, + 768,2552,2686,2623,2819,2688,2916,1706,5268,2976, + 143,3746,336,5258,149,144,4355,35,1266,32, + 4064,5484,27,30,31,1263,1255,26,28,1963, + 262,23,25,50,2051,106,76,77,108,300, + 589,3225,384,2496,73,2545,2525,2587,5662,2552, + 2686,2623,2819,2688,2916,5268,5268,2976,143,3761, + 336,404,148,144,4355,35,1266,32,423,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,108,582,24,3225, + 2784,2496,73,2545,2525,2587,2285,2552,2686,2623, + 2819,2688,2916,5268,5268,2976,143,4595,5268,3415, + 147,144,4355,35,1266,32,3415,5484,27,30, + 31,1263,1255,26,28,1963,262,23,25,50, + 2051,106,76,77,108,1996,6467,2198,297,2496, + 379,2545,2525,2587,1535,2552,2686,2623,2819,2688, + 2916,5240,3743,2976,143,2553,2552,201,146,144, + 4355,35,1266,32,199,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,3102,560,2132,287,2496,73,2545, + 2525,2587,694,2552,2686,2623,2819,2688,2916,73, + 73,2976,143,1468,799,206,145,144,4819,35, + 1266,32,4074,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,2448,35,1227,390,2496,73,2545,2525,2587, + 1606,2552,2686,2623,2819,2688,2916,418,3415,3209, + 164,4355,35,1266,32,440,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,88,454,2035,102,2496,4261, + 2545,2525,2587,1875,2552,2686,2623,2819,2688,2916, + 73,4793,2976,143,1268,5268,408,581,144,541, + 537,538,539,4355,35,1266,32,3961,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,108,402,578,402,402, + 2496,73,2545,2525,2587,1484,2552,2686,2623,2819, + 2688,2916,5268,5442,2976,143,502,1532,1206,140, + 144,4355,35,1266,32,3145,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,576,73,1161,5268,2496,1712, + 2545,2525,2587,160,2552,2686,2623,2819,2688,2916, + 5442,5442,2976,143,1532,1532,5235,3336,144,461, + 5231,327,6490,3426,3309,4355,35,1266,32,87, + 5484,27,30,31,1263,1255,26,28,1963,262, + 23,25,50,2051,106,76,77,108,344,73, + 160,160,2496,4053,2545,2525,2587,3960,2552,2686, + 2623,2819,2688,2916,3225,3238,2976,143,4015,3587, + 929,3515,144,4489,35,1266,32,3415,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,108,2345,35,455,602, + 2496,6993,2545,2525,2587,3645,2552,2686,2623,2819, + 2688,2916,3415,2838,2976,143,3811,3851,212,189, + 144,4819,35,1266,32,1463,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,2448,35,1227,390,2496,5442, + 2545,2525,2587,1532,2552,2686,2623,2819,2688,2916, + 222,288,3209,164,4819,35,1266,32,70,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,108,4388,433,160, + 1161,2496,1666,2545,2525,2587,1502,2552,2686,2623, + 2819,2688,2916,73,1513,3209,164,1828,5268,7014, + 541,537,538,539,402,3426,4819,35,1266,32, + 295,5484,27,30,31,1263,1255,26,28,1963, + 262,23,25,50,2051,106,76,77,108,444, + 69,458,212,2496,73,2545,2525,2587,2912,2552, + 2686,2623,2819,2688,2916,3913,3021,3209,164,4819, + 35,1266,32,424,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,452,3410,3415,1313,2496,51,2545,2525, + 2587,2554,2552,2686,2623,2819,2688,2916,3114,383, + 3209,164,73,7009,5268,5268,2047,2161,35,1227, + 390,4951,35,1266,32,427,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,524,1413,68,53,2496,1666, + 2545,2525,2587,2750,2552,2686,2623,2819,2688,2916, + 2032,49,3209,164,5017,35,1227,390,584,3027, + 71,1006,1754,239,262,5268,7021,237,262,5268, + 5268,1752,3204,592,537,538,539,592,537,538, + 539,1132,5268,2134,35,1266,32,4454,6884,27, + 30,31,1263,1255,340,28,1688,52,274,73, + 73,3022,573,7038,3059,1669,540,537,538,539, + 3679,232,3415,4988,542,232,2924,6792,402,592, + 537,538,539,382,5268,1006,5761,240,230,231, + 7026,235,230,231,3780,35,1266,32,4454,5056, + 27,30,31,1263,1255,340,28,402,4523,320, + 908,322,275,2189,315,698,562,232,333,3316, + 193,5250,242,245,248,251,5533,5268,3915,2298, + 1316,585,3309,247,230,231,3070,860,3116,3770, + 4502,524,432,5307,3466,2448,35,1227,390,3997, + 4523,646,592,537,538,539,5021,5260,1735,561, + 320,908,322,2859,2309,315,698,3309,4788,353, + 1815,307,311,1416,345,1907,1804,350,4727,3294, + 645,541,537,538,539,1745,1329,4144,616,436, + 232,5021,2096,3863,35,1266,32,6827,5056,27, + 30,31,1263,1255,340,28,235,230,231,1059, + 4819,35,1266,32,1564,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,507,4363,629,5519,2496,2930,2545, + 2525,2587,655,2552,2686,2623,2819,2688,3766,5129, + 35,1227,390,3668,3027,2649,2288,1506,357,320, + 908,322,237,262,315,698,344,533,362,528, + 2400,5378,592,537,538,539,402,3133,156,540, + 537,538,539,2396,505,506,525,847,3603,353, + 629,619,5268,274,345,1907,1804,350,5361,4683, + 356,73,3836,2395,1222,655,3309,2348,529,533, + 232,2267,35,3954,32,4454,6884,27,30,31, + 1263,1255,340,28,351,632,235,230,231,344, + 344,44,3317,1322,540,537,538,539,2046,2195, + 3133,156,3738,35,398,89,3024,275,102,647, + 2666,3603,3747,5268,717,2562,5398,242,245,248, + 251,5533,2024,73,73,1316,585,2190,3813,3132, + 2928,3070,860,3116,3770,4502,525,320,908,322, + 5268,2189,315,698,5250,90,333,2192,4819,35, + 1266,32,5260,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,5307,574,3238,2312,2496,547,2545,2525,2587, + 3124,2552,2686,2623,2819,3708,4555,35,1266,32, + 3978,5484,27,30,31,1263,1255,26,28,1963, + 262,23,25,50,2051,588,76,77,6350,421, + 3953,4819,35,1266,32,402,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,4146,306,4049,406,2496,5268, + 2545,2525,2587,3016,2552,2686,2623,3693,4819,35, + 1266,32,3394,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,3601,435,68,5268,2496,655,2545,2525,2587, + 4034,2552,2686,3702,3956,2353,5268,5268,648,2448, + 35,1227,390,421,402,5268,540,537,538,539, + 228,73,618,5541,73,2238,4012,6792,2619,5268, + 73,782,156,621,1016,712,2616,2120,3604,453, + 180,847,818,203,215,4122,640,4249,202,212, + 213,214,216,435,591,639,5276,169,135,821, + 1532,4315,655,3969,35,1266,32,4454,5056,27, + 30,31,1263,1255,340,28,168,3596,183,167, + 170,171,172,173,174,4059,228,97,2448,35, + 1227,390,2448,35,1227,390,156,782,156,402, + 802,2456,5175,2120,200,5177,180,847,5268,203, + 215,4122,640,902,202,212,213,214,216,353, + 591,639,2155,169,345,1907,1804,350,2036,320, + 908,322,49,73,315,698,434,1532,343,4027, + 4381,2064,168,46,184,167,170,171,172,173, + 174,2001,35,1266,32,181,6884,27,30,31, + 1263,1255,340,28,73,5425,73,5543,2286,3309, + 3168,3253,98,156,540,537,538,539,1670,5268, + 73,73,3307,3713,1532,3210,3500,73,132,2480, + 2399,1532,5268,5021,5154,3714,3638,5268,3813,35, + 1266,32,3371,5056,27,30,31,1263,1255,340, + 28,3744,4136,592,537,538,539,320,908,322, + 156,2189,316,698,67,2934,334,156,5268,66, + 5268,5268,3772,3554,35,1266,32,4454,5056,27, + 30,31,1263,1255,340,28,405,353,4138,235, + 2672,232,347,1907,1804,350,540,537,538,539, + 65,2767,64,55,317,1371,322,250,230,231, + 361,5268,4819,35,1266,32,5726,5484,27,30, + 31,1263,1255,26,28,1963,262,23,25,50, + 2051,106,76,77,85,2860,3089,3474,3480,320, + 908,322,5268,54,315,698,3015,5458,3037,3316, + 4819,35,1266,32,3462,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,5268,3132,5268,3599,2496,535,2545, + 2525,2587,655,2552,3680,3326,35,3954,32,4454, + 5056,27,30,31,1263,1255,340,28,3821,2834, + 3209,307,311,1416,3977,101,228,1296,540,537, + 538,539,4992,4404,131,916,5268,782,156,335, + 4986,1019,2096,2120,914,5323,180,847,4748,203, + 215,4122,640,4184,202,212,213,214,216,5268, + 591,639,5237,169,2832,635,4388,5444,2187,655, + 5544,320,908,322,3074,4362,315,698,1684,2468, + 4079,2192,168,4496,3964,167,170,171,172,173, + 174,4513,5475,228,352,4220,1229,4328,344,531, + 1532,2424,532,4628,782,156,4188,5348,4694,3133, + 2120,2962,3508,180,847,1529,203,215,4122,640, + 3603,202,212,213,214,216,4760,591,639,5439, + 169,735,8285,5425,8285,655,156,3309,8285,535, + 8285,3763,6848,421,3953,8285,8285,8285,8285,168, + 8285,178,167,170,171,172,173,174,353,228, + 8285,5021,8285,345,1907,1804,350,8285,8285,8285, + 782,156,8285,8285,8285,8285,2120,3352,8285,180, + 847,8285,203,215,4122,640,8285,202,212,213, + 214,216,8285,591,639,8285,169,835,8285,8285, + 8285,655,3587,35,1266,32,3103,5056,27,30, + 31,1263,1255,340,28,168,8285,176,167,170, + 171,172,173,174,1951,228,8285,8285,3309,7059, + 8285,8285,8285,8285,8285,8285,782,156,361,8285, + 3762,8285,2120,8285,8285,180,847,8285,203,215, + 4122,640,228,202,212,213,214,216,8285,591, + 639,8285,169,935,3759,3474,3480,655,317,1371, + 322,8285,8285,8285,8285,1872,409,3778,654,8285, + 8285,168,8285,583,167,170,171,172,173,174, + 3114,228,8285,3987,8285,7009,2930,8285,8285,8285, + 655,8285,782,156,410,411,412,752,2120,8285, + 8285,180,847,8285,203,215,4122,640,8285,202, + 212,213,214,216,344,591,639,8285,169,1035, + 8285,8285,8285,655,73,3133,156,8285,3074,8285, + 8285,2396,3246,8285,8285,847,3603,168,8285,177, + 167,170,171,172,173,174,73,228,8285,8285, + 1532,2395,344,8285,8285,2444,8285,8285,782,156, + 8285,8285,3915,3133,2120,8285,3309,180,847,916, + 203,215,4122,640,3603,202,212,213,214,216, + 8285,591,639,73,169,1135,156,1532,8285,655, + 5021,3777,1601,3364,8285,8285,413,415,2924,8285, + 8285,8285,8285,168,8285,187,167,170,171,172, + 173,174,8285,228,8285,540,537,538,539,8285, + 8285,8285,8285,156,782,156,917,8285,3808,6660, + 2120,8285,8285,180,847,3218,203,215,4122,640, + 8285,202,212,213,214,216,8285,591,639,73, + 169,1235,8285,1532,8285,655,8285,8285,2661,8285, + 8285,8285,3309,6308,431,8285,8285,507,8285,168, + 8285,4035,167,170,171,172,173,174,8285,228, + 8285,540,537,538,539,8285,5021,8285,8285,156, + 782,156,8285,8285,3810,8285,2120,4000,8285,180, + 847,4522,203,215,4122,640,8285,202,212,213, + 214,216,8285,591,639,8285,169,1335,504,506, + 8285,655,8285,8285,1685,8285,8285,8285,2189,6308, + 8285,8285,8285,333,8285,168,8285,192,167,170, + 171,172,173,174,8285,228,8285,540,537,538, + 539,3490,8285,8285,8285,8285,782,156,6692,8285, + 8285,8285,2120,361,1751,180,847,4522,203,215, + 4122,640,2535,202,212,213,214,216,8285,591, + 639,73,169,1435,8285,1532,8285,655,8285,3539, + 3474,3480,2294,8285,2189,592,537,538,539,333, + 1105,168,8285,186,167,170,171,172,173,174, + 8285,228,8285,8285,8285,541,537,538,539,8285, + 8285,156,782,156,5383,8285,3594,8285,2120,8285, + 8285,180,847,232,203,215,4122,640,8285,202, + 212,213,214,216,8285,591,639,8285,169,253, + 230,231,8285,89,35,1266,32,4454,5056,27, + 30,31,1263,1255,340,28,8285,168,8285,194, + 167,170,171,172,173,174,540,537,538,539, + 8285,8285,73,8285,8285,8285,1532,8285,8285,8285, + 8285,8285,4223,35,1266,32,5726,5484,27,30, + 31,1263,1255,26,28,1963,262,23,25,50, + 2051,106,76,77,81,8285,8285,8285,8285,320, + 908,322,156,8285,315,698,8285,3882,8285,3316, + 4819,35,1266,32,8285,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,108,2925,8285,8285,8285,2496,8285,2545, + 2525,2587,8285,3682,8285,649,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,541,537,538,539, + 8285,308,311,1416,4819,35,1266,32,8285,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,108,8285,8285,8285, + 4134,2496,8285,2545,2525,2587,8285,3685,3395,35, + 3954,32,4454,5056,27,30,31,1263,1255,340, + 28,8285,8285,540,537,538,539,8285,8285,8285, + 8285,3999,537,538,539,8285,8285,8285,8285,8285, + 8285,8285,8285,4522,8285,8285,8285,4289,35,1266, + 32,4748,5484,27,30,31,1263,1255,26,28, + 1963,262,23,25,50,2051,106,76,77,81, + 330,8285,8285,8285,320,908,322,8285,8285,315, + 698,8285,8285,8285,2192,4819,35,1266,32,8285, + 5484,27,30,31,1263,1255,26,28,1963,262, + 23,25,50,2051,106,76,77,108,8285,8285, + 8285,8285,2496,8285,2545,2525,3593,8285,8285,8285, + 650,4819,35,1266,32,8285,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,108,8285,6562,421,3953,2496,8285, + 2545,2525,3602,4819,35,1266,32,8285,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,108,8285,8285,8285,8285, + 2496,8285,2545,2525,3613,4819,35,1266,32,8285, + 5484,27,30,31,1263,1255,26,28,1963,262, + 23,25,50,2051,106,76,77,108,8285,8285, + 8285,8285,2496,8285,2545,2525,3615,4819,35,1266, + 32,8285,5484,27,30,31,1263,1255,26,28, + 1963,262,23,25,50,2051,106,76,77,108, + 8285,8285,8285,8285,2496,8285,2545,2525,3622,4819, + 35,1266,32,8285,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,106,76, + 77,108,8285,8285,8285,8285,2496,8285,2545,2525, + 3639,5528,35,1266,32,6827,5056,27,30,31, + 1263,1255,340,28,8285,8285,2852,35,1266,32, + 6653,5056,27,30,31,1263,1255,340,28,8285, + 8285,2448,35,1227,390,8285,2161,35,1227,390, + 8285,8285,8285,8285,4819,35,1266,32,352,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,108,320,908,322, + 2353,3543,315,698,3074,49,8285,3940,8285,8285, + 49,8285,320,908,322,8285,1754,315,698,8285, + 8285,1754,1815,8285,8285,1291,8285,353,228,8285, + 1427,8285,345,1907,1804,350,8285,8285,8285,782, + 1528,8285,353,8285,8285,8285,3939,345,1907,1804, + 350,205,215,4122,640,8285,204,212,213,214, + 216,3352,591,639,1757,35,1266,32,8285,5056, + 27,30,31,1263,1255,340,28,8285,8285,8285, + 206,208,210,752,8285,8285,8285,541,537,538, + 539,8285,8285,217,207,209,4819,35,1266,32, + 8285,5484,27,30,31,1263,1255,26,28,1963, + 262,23,25,50,2051,106,76,77,108,13, + 8285,5878,8285,2496,8285,2545,3657,8285,8285,8285, + 320,908,322,8285,8285,603,698,4819,35,1266, + 32,367,5484,27,30,31,1263,1255,26,28, + 1963,262,23,25,50,2051,106,76,77,108, + 5073,35,1227,390,2496,3027,2545,3665,8285,8285, + 2915,8285,8285,238,262,8285,8285,8285,8285,8285, + 8285,8285,4322,592,537,538,539,2409,1605,296, + 8285,8285,8285,592,537,538,539,8285,8285,659, + 2545,35,1227,390,274,541,537,538,539,3936, + 540,537,538,539,8285,8285,8285,1623,35,1266, + 32,232,6884,27,30,31,1263,1255,340,28, + 2616,232,540,537,538,539,8285,236,230,231, + 540,537,538,539,49,8285,8285,587,230,231, + 8285,8285,5346,8285,8285,1754,4325,8285,275,8285, + 4522,8285,8285,8285,47,8285,8285,8285,243,246, + 249,252,5533,8285,1084,8285,1316,586,8285,541, + 537,538,539,320,908,322,8285,2189,318,698, + 8285,8285,334,1623,35,1266,32,8285,6884,27, + 30,31,1263,1255,340,28,8285,8285,5185,35, + 1227,390,8285,3027,3573,8285,540,537,538,539, + 8285,238,262,1685,8285,8285,8285,8285,6308,8285, + 8285,592,537,538,539,1659,5154,3738,35,3063, + 5753,8285,8285,8285,2528,8285,540,537,538,539, + 4656,2584,274,8285,8285,3074,8285,8285,8285,320, + 908,322,8285,2189,316,698,4522,8285,334,232, + 8285,8285,8285,541,537,538,539,8285,8285,228, + 8285,49,8285,8285,8285,236,230,231,8285,8285, + 782,8285,1754,2189,2323,35,1227,390,333,8285, + 8285,744,205,215,4122,640,275,204,212,213, + 214,216,8285,591,639,8285,243,246,249,252, + 5533,8285,2679,6026,1316,586,3074,8285,8285,3010, + 8285,206,208,210,752,8285,8285,8285,49,5257, + 8285,8285,8285,4256,217,207,209,8285,8285,1754, + 228,8285,592,537,538,539,8285,8285,1771,8285, + 8285,782,541,537,538,539,540,537,538,539, + 1256,5299,5878,205,215,4122,640,8285,204,212, + 213,214,216,8285,591,639,2907,8285,8285,8285, + 232,8285,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,206,208,210,752,236,230,231,8285, + 8285,8285,8285,8285,8285,217,207,209,4819,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,2237,8285,5878,8285,2496,8285,3535,4819,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,8285,2774,8285,8285,2496,3074,3537,4621,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,577,76,77, + 228,8285,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,782,8285,8285,8285,1412,8285,8285,8285,8285, + 8285,8285,8285,205,215,4122,640,8285,204,212, + 213,214,216,8285,591,639,89,35,1266,32, + 4454,5056,27,30,31,1263,1255,340,28,8285, + 8285,8285,206,208,210,752,5427,8285,8285,541, + 537,538,539,2022,8285,217,207,209,8285,8285, + 8285,2634,35,1266,32,4454,5056,27,30,31, + 1263,1255,340,28,8285,8285,540,537,538,539, + 8285,2381,8285,5878,541,537,538,539,8285,8285, + 8285,8285,320,908,322,8285,5346,315,698,8285, + 8285,8285,6292,4819,35,1266,32,8285,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,108,8285,320,908,322, + 3552,8285,315,698,8285,8285,8285,6292,4819,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 108,8285,2489,8285,5276,3580,3074,8285,802,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,2217,8285, + 8285,8285,3074,8285,8285,8285,8285,8285,2539,8285, + 228,8285,3424,8285,8285,8285,8285,8285,8285,8285, + 8285,782,8285,8285,156,8285,228,8285,8285,2120, + 8285,8285,180,205,215,4122,640,782,204,212, + 213,214,216,2869,591,639,8285,3074,8285,205, + 215,4122,640,8285,204,212,213,214,216,8285, + 591,639,206,208,210,752,8285,8285,195,8285, + 2930,228,8285,8285,655,521,207,209,206,208, + 210,752,782,8285,8285,8285,8285,8285,2409,35, + 296,218,207,209,205,215,4122,640,344,204, + 212,213,214,216,2964,591,639,8285,3074,3133, + 156,540,537,538,539,2396,8285,8285,8285,847, + 3603,8285,8285,206,208,210,752,8285,8285,8285, + 8285,2616,228,8285,8285,2395,611,207,209,2635, + 8285,8285,8285,782,8285,8285,2824,8285,8285,3059, + 4457,6308,8285,3074,8285,205,215,4122,640,8285, + 204,212,213,214,216,8285,591,639,8285,540, + 537,538,539,540,537,538,539,228,8285,8285, + 8285,8285,8285,8285,206,208,210,752,782,4522, + 6929,196,8285,4522,8285,8285,8285,610,207,209, + 205,215,4122,640,8285,204,212,213,214,216, + 8285,591,639,8285,8285,3573,2189,8285,8285,8285, + 3422,334,8285,8285,8285,8285,8285,8285,8285,206, + 208,210,752,8285,8285,1161,1659,8285,8285,8285, + 8285,8285,609,207,209,4819,35,1266,32,8285, + 5484,27,30,31,1263,1255,26,28,1963,262, + 23,25,50,2051,106,76,77,83,4819,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 82,4819,35,1266,32,8285,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,81,4819,35,1266,32,8285,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,80,4819,35,1266, + 32,8285,5484,27,30,31,1263,1255,26,28, + 1963,262,23,25,50,2051,106,76,77,79, + 4819,35,1266,32,8285,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,78,4819,2484,1266,3125,8285,5484,27, + 30,31,1263,1255,26,28,1963,262,23,25, + 50,2051,106,76,77,84,3154,8285,8285,8285, + 3074,8285,2919,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,3249,8285,8285,8285,3074,8285,2448,35, + 1227,390,8285,8285,228,540,537,538,539,8285, + 8285,8285,8285,8285,8285,782,8285,8285,8285,8285, + 228,8285,8285,8285,8285,5272,8285,205,215,4122, + 640,782,204,212,213,214,216,8285,591,639, + 4525,8285,49,205,215,4122,640,8285,204,212, + 213,214,216,1754,591,639,206,208,210,752, + 8285,8285,7068,540,537,538,539,8285,8285,522, + 207,209,206,208,210,752,8285,8285,8285,8285, + 8285,8285,8285,5440,8285,306,207,209,4421,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,106,76,77, + 104,4819,35,1266,32,8285,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 106,76,77,110,4819,35,1266,32,8285,5484, + 27,30,31,1263,1255,26,28,1963,262,23, + 25,50,2051,106,76,77,109,4819,35,1266, + 32,8285,5484,27,30,31,1263,1255,26,28, + 1963,262,23,25,50,2051,106,76,77,107, + 4819,35,1266,32,8285,5484,27,30,31,1263, + 1255,26,28,1963,262,23,25,50,2051,106, + 76,77,105,3344,8285,8285,8285,3074,4687,35, + 1266,32,8285,5484,27,30,31,1263,1255,26, + 28,1963,262,23,25,50,2051,575,76,77, + 8285,228,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,782,8285,3936,8285,8285,8285,3130,8285, + 8285,8285,4854,8285,205,215,4122,640,8285,204, + 212,213,214,216,8285,591,639,540,537,538, + 539,540,537,538,539,540,537,538,539,8285, + 8285,8285,8285,206,208,210,752,5346,8285,8285, + 8285,5346,8285,8285,8285,5529,501,207,209,4753, + 35,1266,32,8285,5484,27,30,31,1263,1255, + 26,28,1963,262,23,25,50,2051,86,76, + 77,4885,35,1266,32,8285,5484,27,30,31, + 1263,1255,26,28,1963,262,23,25,50,2051, + 3887,76,77,2661,8285,8285,8285,3309,6308,2166, + 2084,8285,8285,8285,3309,7059,2448,35,1227,390, + 8285,8285,8285,8285,8285,8285,540,537,538,539, + 8285,5021,592,537,538,539,8285,8285,228,2671, + 8285,8285,3227,2715,8285,8285,4522,6308,8285,8285, + 8285,8285,8285,8285,8285,2930,8285,8285,8285,655, + 49,1872,409,3778,654,540,537,538,539,8285, + 232,1754,8285,2189,8285,8285,8285,8285,333,8285, + 797,8285,8285,344,8285,4522,235,230,231,8285, + 410,411,412,752,3133,156,8285,8285,8285,8285, + 2396,8285,8285,3731,847,3603,8285,8285,361,2930, + 8285,2930,2189,655,8285,655,5519,334,8285,8285, + 2395,8285,8285,8285,2682,73,8285,8285,3246,3074, + 8285,8285,8285,8285,3539,3474,3480,344,353,344, + 8285,8285,1685,347,1907,1804,350,6308,3133,156, + 3133,156,8285,344,2396,8285,2396,8285,847,3603, + 847,3603,8285,8285,3133,540,537,538,539,8285, + 629,619,8285,8285,2395,3603,2395,1685,2717,8285, + 3574,8285,6308,1685,8285,4522,8285,8285,6308,8285, + 3204,8285,413,416,3393,6308,8285,8285,5022,8285, + 540,537,538,539,8285,631,540,537,538,539, + 8285,8285,2189,540,537,538,539,333,8285,8285, + 4522,540,537,538,539,8285,4522,3338,35,1227, + 390,8285,8285,4522,2161,35,1227,390,8285,618, + 3189,5440,6692,8285,8285,8285,8285,2189,3338,35, + 1227,390,333,2189,8285,8285,8285,8285,6840,8285, + 2189,2161,35,1227,390,6840,3895,35,1227,390, + 8285,49,8285,3421,35,1227,390,3731,49,5424, + 8285,8285,1754,802,8285,8285,8285,8285,8285,1754, + 8285,47,49,8285,8285,8285,8285,8285,6030,8285, + 8285,895,8285,1754,8285,49,8285,344,1528,8285, + 49,8285,47,8285,8285,8285,1754,49,8285,156, + 8285,1754,1311,8285,188,47,8285,8285,1754,3643, + 47,3338,35,1227,390,1650,8285,2631,8285,8285, + 1476,8285,8285,2161,35,1227,390,1132,8285,8285, + 8285,94,8285,8285,8285,8285,8285,4134,96,2161, + 35,1227,390,8285,2161,35,1227,390,8285,8285, + 8285,2161,35,1227,390,49,2161,35,1227,390, + 540,537,538,539,8285,8285,1754,49,5234,8285, + 8285,8285,3309,8285,8285,2825,8285,8285,1754,190, + 4522,8285,8285,49,8285,1202,8285,47,49,2448, + 35,1227,390,8285,1754,49,5021,2571,4185,1754, + 49,8285,8285,47,8285,8285,1754,2576,47,8285, + 73,1754,8285,2864,3074,47,8285,8285,3205,8285, + 47,540,537,538,539,3589,2448,35,1227,390, + 3672,4134,8285,49,2448,35,1227,390,344,8285, + 8285,4522,8285,73,1754,8285,8285,802,8285,3133, + 8285,8285,8285,2207,540,537,538,539,73,73, + 3603,8285,3074,802,2797,8285,8285,8285,3422,8285, + 49,344,73,507,4522,8285,802,8285,49,3398, + 8285,1754,8285,156,8285,8285,344,344,188,1754, + 1222,73,73,3643,8285,3074,3074,3133,1771,156, + 344,3423,8285,8285,188,8285,73,8285,3603,3643, + 3074,8285,156,8285,8285,8285,8285,188,8285,344, + 344,8285,3643,8285,504,506,8285,3399,8285,8285, + 3133,3133,8285,8285,344,8285,8285,8285,8285,73, + 8285,3603,3603,3074,8285,3133,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,3603,4026,8285,8285, + 3586,511,8285,3595,8285,8285,8285,344,8285,8285, + 8285,8285,8285,8285,8285,509,8285,8285,3133,3609, + 8285,8285,8285,8285,8285,8285,8285,8285,8285,3603, + 8285,8285,3688,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,536,8285, + 0,1,229,707,0,503,5862,0,1,229, + 0,39,8927,0,39,8926,636,0,39,8300, + 0,39,8299,0,1,3154,0,748,1,0, + 39,1,8927,0,39,1,8926,0,39,1, + 8300,0,39,1,8299,0,1,2740,0,1, + 735,0,229,219,0,1,1089,0,1,1095, + 0,1,1141,0,8519,223,0,8518,223,0, + 1089,223,0,1095,223,0,1141,223,0,1172, + 223,0,8624,223,0,8623,223,0,8546,223, + 0,8545,223,0,8544,223,0,8543,223,0, + 8542,223,0,8541,223,0,8540,223,0,8539, + 223,0,608,638,0,8519,224,0,8518,224, + 0,1089,224,0,1095,224,0,1141,224,0, + 1172,224,0,8624,224,0,8623,224,0,8546, + 224,0,8545,224,0,8544,224,0,8543,224, + 0,8542,224,0,8541,224,0,8540,224,0, + 8539,224,0,8519,225,0,8518,225,0,1089, + 225,0,1095,225,0,1141,225,0,1172,225, + 0,8624,225,0,8623,225,0,8546,225,0, + 8545,225,0,8544,225,0,8543,225,0,8542, + 225,0,8541,225,0,8540,225,0,8539,225, + 0,1141,396,0,1095,396,0,1089,396,0, + 284,396,0,8519,226,0,8518,226,0,1089, + 226,0,1095,226,0,1141,226,0,1172,226, + 0,8624,226,0,8623,226,0,8546,226,0, + 8545,226,0,8544,226,0,8543,226,0,8542, + 226,0,8541,226,0,8540,226,0,8539,226, + 0,284,289,0,8519,227,0,8518,227,0, + 1089,227,0,1095,227,0,1141,227,0,1172, + 227,0,8624,227,0,8623,227,0,8546,227, + 0,8545,227,0,8544,227,0,8543,227,0, + 8542,227,0,8541,227,0,8540,227,0,8539, + 227,0,1899,389,0,39,8926,0,8927,48, + 0,8926,48,0,8300,48,0,8299,48,0, + 8519,590,0,8518,590,0,1089,590,0,1095, + 590,0,1141,590,0,1172,590,0,8624,590, + 0,8623,590,0,8546,590,0,8545,590,0, + 8544,590,0,8543,590,0,8542,590,0,8541, + 590,0,8540,590,0,8539,590,0,8519,241, + 0,8518,241,0,1089,241,0,1095,241,0, + 1141,241,0,1172,241,0,8624,241,0,8623, + 241,0,8546,241,0,8545,241,0,8544,241, + 0,8543,241,0,8542,241,0,8541,241,0, + 8540,241,0,8539,241,0,8899,241,0,8898, + 241,0,8897,241,0,8558,241,0,8557,241, + 0,8556,241,0,8555,241,0,8554,241,0, + 8553,241,0,8552,241,0,8551,241,0,8550, + 241,0,8549,241,0,8548,241,0,8892,241, + 0,8891,241,0,39,241,8927,0,39,241, + 8926,635,0,39,241,8300,0,39,241,8299, + 0,8323,241,0,1,332,0,38,735,0, + 38,8927,0,38,8926,0,38,8300,0,38, + 8299,0,456,1915,0,442,1951,0,1899,29, + 0,8297,1,0,2058,319,0,1141,600,0, + 1095,600,0,1089,600,0,604,600,0,604, + 599,0,8348,75,0,8347,75,0,1000,75, + 0,1070,75,0,1768,75,0,3760,75,0, + 1,602,0,1,446,0,460,1325,0,459, + 2666,0,35,33,0,47,37,0,1971,157, + 0,4957,126,0,8297,385,0,8296,385,0, + 1141,602,0,1095,602,0,1089,602,0,1089, + 634,0,1095,634,0,1141,634,0,8905,634, + 0,503,3247,0,8323,1,229,0,39,1, + 229,0,229,418,0,1,1864,0,1,8899, + 0,1,8898,0,1,8897,0,1,8558,0, + 1,8557,0,1,8556,0,1,8555,0,1, + 8554,0,1,8553,0,1,8552,0,1,8551, + 0,1,8550,0,1,8549,0,1,8548,0, + 1,8892,0,1,8891,0,1,5668,0,8927, + 37,0,8926,37,0,8300,37,0,8299,37, + 0,43,8321,0,43,37,0,8293,1,0, + 1520,91,0,32,34,0,39,735,0,1141, + 332,0,1095,332,0,1089,332,0,39,241, + 8926,0,1,1966,0,1,2014,0,229,220, + 0,8519,630,0,8518,630,0,1089,630,0, + 1095,630,0,1141,630,0,1172,630,0,8624, + 630,0,8623,630,0,8546,630,0,8545,630, + 0,8544,630,0,8543,630,0,8542,630,0, + 8541,630,0,8540,630,0,8539,630,0,1089, + 633,0,1095,633,0,1141,633,0,8905,633, + 0,8295,407,0,8294,407,0,229,417,0, + 1,229,3828,0,8294,229,0,3829,229,0, + 8291,1,0,8290,1,0,237,1360,0,390, + 32,0,389,29,0,1141,447,0,1095,447, + 0,1089,447,0,8323,447,0,39,447,0, + 332,447,0,4957,128,0,4957,127,0,8321, + 45,0,37,45,0,3959,229,0,10,12, + 0,8323,1,0,39,1,0,588,577,0, + 1,92,0,1172,337,0,8624,337,0,8623, + 337,0,8,10,12,0,8927,2,37,0, + 8926,2,37,0,8300,2,37,0,8299,2, + 37,0 + }; + }; + + public interface BaseAction1 { + public final static char baseAction1[] = { + 8927,36,0,8926,36,0,8300,36,0,8299, + 36,0,4511,100,0,1141,597,0,1095,597, + 0,1089,597,0,1141,596,0,1095,596,0, + 1089,596,0,540,541,0,589,578,0,2869, + 103,0,3031,99,0,1141,95,0,1095,95, + 0,1089,95,0,8323,95,0,39,95,0, + 332,95,0,35,73,0,4032,385,0,1141, + 597,598,0,1095,597,598,0,1089,597,598, + 0,597,598,0,279,2730,0,8,12,0, + 185,4447,0 }; }; - public final static char baseAction[] = BaseAction.baseAction; + + public final static char baseAction[] = new char[BaseAction0.baseAction0.length + BaseAction1.baseAction1.length]; + { + int index = 0; + System.arraycopy(BaseAction0.baseAction0, 0, baseAction, index, BaseAction0.baseAction0.length); + index += BaseAction0.baseAction0.length; + System.arraycopy(BaseAction1.baseAction1, 0, baseAction, index, BaseAction1.baseAction1.length); + }; public final int baseAction(int index) { return baseAction[index]; } public final static char lhs[] = baseAction; public final int lhs(int index) { return lhs[index]; }; @@ -1595,102 +1633,23 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar 40,41,42,43,44,45,46,47,48,49, 50,51,52,53,54,55,56,57,58,59, 60,61,62,63,64,65,66,0,68,69, - 70,71,5,73,0,1,76,77,78,79, - 80,81,82,83,84,85,86,0,1,2, - 3,4,5,6,7,8,9,10,11,99, + 70,71,0,73,7,8,9,77,78,79, + 80,81,82,83,84,85,86,87,0,1, + 2,3,4,5,6,7,8,9,10,11, 100,101,102,103,104,105,106,107,108,109, 110,111,112,113,114,115,116,117,118,119, - 120,121,122,123,124,125,126,127,128,0, - 0,0,132,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,66, - 71,68,69,70,0,72,73,74,75,0, - 6,82,79,80,81,0,85,84,0,86, - 87,88,89,90,91,92,0,94,95,96, - 97,98,0,1,2,3,4,5,6,7, - 8,9,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,33,34,35,36,37, - 38,39,40,41,42,43,44,45,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,65,66,0, - 68,69,70,0,72,73,74,75,99,100, - 84,79,80,81,99,100,84,14,86,87, - 88,89,90,91,92,0,94,95,96,97, - 98,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,0,68, - 69,70,0,72,73,74,75,0,109,110, - 79,80,81,0,0,84,3,86,87,88, - 89,90,91,92,22,94,95,96,97,98, - 0,1,2,3,4,5,6,7,8,9, - 10,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,44,45,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,65,66,0,68,69, - 70,87,72,73,74,75,99,100,0,79, - 80,81,114,5,84,0,118,87,88,89, - 90,91,92,0,94,95,96,97,98,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,49,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,66,73,68,69,70, - 0,72,73,74,75,0,109,110,79,80, - 81,0,0,84,99,100,87,88,89,90, - 91,92,0,94,95,96,97,98,0,1, - 2,3,4,5,6,7,8,9,10,11, - 12,13,14,15,16,17,18,19,20,21, - 22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41, - 42,43,44,45,46,47,48,49,50,51, - 52,53,54,55,56,57,58,59,60,61, - 62,63,64,65,66,83,68,69,70,0, - 72,73,74,75,99,100,0,79,80,81, - 99,100,84,0,0,87,88,89,90,91, - 92,0,94,95,96,97,98,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,46,47,48,49,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,66,0,68,69,70,0,72, - 73,74,75,5,0,0,79,80,81,5, - 5,84,99,100,87,88,89,90,91,92, - 0,94,95,96,97,98,0,1,2,3, - 4,5,6,7,8,9,10,11,12,13, - 14,15,16,17,18,19,20,21,22,23, - 24,25,26,27,28,29,30,31,32,33, - 34,35,36,37,38,39,40,41,42,43, - 44,45,46,47,48,49,50,51,52,53, - 54,55,56,57,58,59,60,61,62,63, - 64,65,66,0,68,69,70,0,72,73, - 74,75,82,6,0,79,80,81,0,5, - 84,0,0,87,88,89,90,91,92,0, - 94,95,96,97,98,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,46,47,48,49,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 65,66,0,68,69,70,0,72,73,74, - 75,5,0,0,79,80,81,5,5,84, - 0,0,87,88,89,90,91,92,0,94, - 95,96,97,98,0,1,2,3,4,5, + 120,121,122,123,124,125,126,127,128,129, + 0,0,1,133,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,71,68,69,70,0,72,73,74,75, + 76,0,0,83,80,81,82,5,13,85, + 0,87,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,33,34,35, @@ -1698,460 +1657,544 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar 46,47,48,49,50,51,52,53,54,55, 56,57,58,59,60,61,62,63,64,65, 66,0,68,69,70,0,72,73,74,75, - 5,0,0,79,80,81,5,0,84,0, - 0,87,88,89,90,91,92,0,94,95, - 96,97,98,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,46, - 47,48,49,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,66, - 83,68,69,70,0,72,73,74,75,82, - 0,0,79,80,81,0,6,84,0,0, - 87,88,89,90,91,92,0,94,95,96, - 97,98,0,1,2,3,4,5,6,7, - 8,9,10,11,12,13,14,15,16,17, + 76,106,107,85,80,81,82,0,13,85, + 3,87,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,0,72,73,74,75, + 76,106,107,12,80,81,82,0,13,85, + 0,87,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,104,72,73,74,75, + 76,106,107,0,80,81,82,100,101,85, + 100,101,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,77,72,73,74,75, + 76,110,111,0,80,81,82,0,5,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,84,72,73,74,75, + 76,0,84,112,80,81,82,100,101,85, + 100,101,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,77,72,73,74,75, + 76,100,101,0,80,81,82,0,5,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,77,72,73,74,75, + 76,110,111,0,80,81,82,100,101,85, + 100,101,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,88,68,69,70,0,72,73,74,75, + 76,6,0,112,80,81,82,5,0,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,83,68,69,70,0,72,73,74,75, + 76,6,0,0,80,81,82,5,5,85, + 102,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,0,72,73,74,75, + 76,83,0,0,80,81,82,5,5,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,84,72,73,74,75, + 76,83,0,0,80,81,82,5,113,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,84,72,73,74,75, + 76,83,0,0,80,81,82,5,5,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 46,47,48,49,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 66,0,68,69,70,0,72,73,74,75, + 76,6,0,0,80,81,82,0,6,85, + 0,0,88,89,90,91,92,93,0,95, + 96,97,98,99,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,37, + 33,34,35,0,0,1,2,3,4,46, + 7,8,9,135,10,11,46,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 67,47,48,49,50,51,33,34,35,36, + 37,38,39,40,41,42,43,44,45,0, + 0,1,2,3,4,71,6,7,8,9, + 0,77,78,79,0,114,82,83,84,85, + 86,87,0,1,2,3,4,5,6,7, + 8,9,10,11,100,101,102,103,104,105, + 106,107,108,109,110,111,112,113,114,115, + 116,117,118,119,120,121,122,123,124,125, + 126,127,128,129,136,0,67,133,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,0,0,71,0,0,78,6, + 6,7,8,9,7,8,9,13,14,13, + 14,33,34,35,36,37,38,39,40,41, + 42,43,44,45,0,47,48,49,50,51, + 33,34,35,36,37,38,39,40,41,42, + 43,44,45,0,0,1,2,3,4,71, + 6,7,8,9,0,77,78,79,34,5, + 82,83,84,85,86,87,0,1,2,3, + 4,5,6,7,8,9,10,11,100,101, + 102,103,104,105,106,107,108,109,110,111, + 112,113,114,115,116,117,118,119,120,121, + 122,123,124,125,126,127,128,129,0,134, + 67,133,0,1,2,3,4,5,6,7, + 8,9,10,11,0,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36,37, 38,39,40,41,42,43,44,45,46,47, - 48,49,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,65,66,0, - 68,69,70,0,72,73,74,75,0,0, - 0,79,80,81,5,111,84,0,0,87, - 88,89,90,91,92,0,94,95,96,97, - 98,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,46,47,48, - 49,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,66,0,68, - 69,70,0,72,73,74,75,5,83,101, - 79,80,81,0,0,84,113,0,87,88, - 89,90,91,92,0,94,95,96,97,98, + 48,0,50,51,52,53,54,55,56,57, + 58,59,60,61,62,63,64,65,66,71, + 68,69,70,22,0,73,0,1,2,3, + 4,5,6,7,8,9,10,11,14,13, + 14,15,16,17,18,19,20,21,22,23, + 24,25,26,27,28,29,30,31,32,33, + 34,35,36,37,38,39,40,41,42,43, + 44,45,46,47,48,0,50,51,52,53, + 54,55,56,57,58,59,60,61,62,63, + 64,65,66,0,68,69,70,22,0,73, 0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,44,45,46,47,48,49, - 50,51,52,53,54,55,56,57,58,59, - 60,61,62,63,64,65,66,83,68,69, - 70,0,72,73,74,75,5,0,0,79, - 80,81,0,6,84,0,0,87,88,89, - 90,91,92,0,94,95,96,97,98,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,37,33,34,35,0,0, - 1,2,3,4,46,7,8,9,134,10, - 11,46,33,34,35,36,37,38,39,40, - 41,42,43,44,45,67,47,48,49,50, - 51,33,34,35,36,37,38,39,40,41, - 42,43,44,45,71,0,1,2,3,4, - 71,6,7,8,9,76,77,78,13,14, - 81,82,83,84,85,86,0,1,2,3, - 4,5,6,7,8,9,10,11,99,100, - 101,102,103,104,105,106,107,108,109,110, - 111,112,113,114,115,116,117,118,119,120, - 121,122,123,124,125,126,127,128,0,0, - 0,132,0,1,2,3,4,5,6,7, - 8,9,10,11,12,13,14,0,0,0, - 0,0,5,0,6,7,8,9,7,8, - 9,13,14,13,14,33,34,35,36,37, - 38,39,40,41,42,43,44,45,0,47, - 48,49,50,51,33,34,35,36,37,38, - 39,40,41,42,43,44,45,67,0,1, - 2,3,4,71,6,7,8,9,76,77, - 78,13,14,81,82,83,84,85,86,0, - 1,2,3,4,5,6,7,8,9,10, - 11,99,100,101,102,103,104,105,106,107, - 108,109,110,111,112,113,114,115,116,117, - 118,119,120,121,122,123,124,125,126,127, - 128,0,113,85,132,0,1,2,3,4, - 5,6,7,8,9,10,11,0,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,46,47,48,0,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 65,66,71,68,69,70,0,0,73,0, - 1,2,3,4,5,6,7,8,9,10, - 11,14,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,46,47,48,0,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,66,0,68,69,70, - 22,5,73,0,1,2,3,4,5,6, + 40,41,42,43,44,45,0,72,0,49, + 0,1,2,3,4,5,6,7,8,9, + 10,11,0,13,14,67,66,67,68,69, + 70,0,72,0,74,75,76,6,7,8, + 9,0,0,83,0,0,13,87,7,8, + 9,7,8,9,94,0,15,16,17,18, + 19,20,21,0,23,24,25,26,27,28, + 29,30,31,67,33,34,35,36,37,38, + 39,40,41,42,43,44,45,77,46,67, + 130,131,132,0,1,2,3,4,5,6, 7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24,25,26, 27,28,29,30,31,32,33,34,35,36, - 37,38,39,40,41,42,43,44,45,0, - 72,0,49,0,1,2,3,4,5,6, - 7,8,9,10,11,0,13,14,0,66, - 67,68,69,70,6,72,0,74,75,0, - 0,85,0,0,0,82,7,8,9,86, - 7,8,9,13,12,46,93,46,15,16, - 17,18,19,20,21,0,23,24,25,26, - 27,28,29,30,31,0,33,34,35,36, - 37,38,39,40,41,42,43,44,45,76, - 0,49,129,130,131,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, + 37,38,39,40,41,42,43,44,45,84, + 0,0,49,0,1,2,3,4,5,6, + 7,8,9,10,11,0,13,14,113,66, + 67,68,69,70,0,72,0,74,75,76, + 0,1,2,3,4,0,83,2,14,0, + 87,0,7,8,9,0,46,94,47,48, + 15,16,17,18,19,20,21,12,23,0, + 1,2,3,4,0,6,0,0,33,34, 35,36,37,38,39,40,41,42,43,44, - 45,76,67,0,49,0,1,2,3,4, - 5,6,7,8,9,10,11,67,13,14, - 0,66,67,68,69,70,0,72,0,74, - 75,0,1,2,3,4,0,82,2,135, - 0,86,0,7,8,9,0,5,93,0, - 1,15,16,17,18,19,20,21,12,23, - 0,1,2,3,4,0,6,47,48,33, + 45,0,0,130,131,132,0,1,2,3, + 4,5,6,7,8,9,10,11,12,13, + 14,15,16,17,18,19,20,21,22,23, + 24,25,26,27,28,29,30,31,32,33, 34,35,36,37,38,39,40,41,42,43, - 44,45,33,0,129,130,131,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,0,0,0,49,0,1,2, - 3,4,5,6,7,8,9,10,11,103, - 13,14,112,66,67,68,69,70,0,72, - 0,74,75,0,0,0,1,0,34,2, - 7,8,9,86,7,8,9,13,13,0, - 93,0,15,16,17,18,19,20,21,10, - 23,0,0,0,1,2,3,4,0,0, + 44,45,87,67,0,49,0,1,2,3, + 4,5,6,7,8,9,10,11,84,13, + 14,0,66,67,68,69,70,0,72,78, + 74,75,76,0,7,8,9,0,86,2, + 7,8,9,87,7,8,9,0,0,1, + 94,0,15,16,17,18,19,20,21,0, + 23,13,0,1,2,3,4,130,131,132, 33,34,35,36,37,38,39,40,41,42, - 43,44,45,78,0,1,2,3,4,82, - 6,134,0,1,2,3,4,5,6,7, + 43,44,45,0,0,1,2,3,4,83, + 6,135,0,1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36,37, - 38,39,40,41,42,43,44,45,0,105, - 106,49,79,80,76,7,8,9,0,1, - 2,3,4,0,6,7,8,9,66,67, - 68,69,70,102,72,104,74,75,0,0, - 101,33,34,35,36,37,38,39,40,41, - 42,43,44,45,133,93,0,1,2,3, - 4,0,0,1,2,3,4,5,6,7, + 38,39,40,41,42,43,44,45,0,0, + 0,49,80,81,5,7,8,9,0,1, + 2,3,4,102,71,7,8,9,66,67, + 68,69,70,0,72,0,74,75,76,6, + 5,33,34,35,36,37,38,39,40,41, + 42,43,44,45,0,0,94,0,1,2, + 3,4,0,1,2,3,4,5,6,7, 8,9,10,11,0,13,14,0,1,2, 3,4,5,6,7,8,9,10,11,0, - 13,14,0,0,71,0,134,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,0,82,71,49,0,0,111, - 7,8,9,0,1,2,3,4,0,82, - 7,8,9,66,67,68,69,70,71,72, - 12,74,75,78,85,83,33,34,35,36, - 37,38,39,40,41,42,43,44,45,0, - 93,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,0,0,81, - 49,0,1,2,3,4,5,6,7,8, - 9,10,11,0,13,14,67,66,67,68, - 69,70,0,72,0,74,75,0,1,2, - 3,4,0,6,7,8,9,86,0,12, - 13,14,0,5,93,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,78,0,71,49,71,83,5,0,0, - 1,2,3,4,77,6,0,0,2,10, - 11,66,67,68,69,70,0,72,0,74, - 75,15,16,17,18,19,20,21,101,23, - 12,86,0,1,2,3,4,0,93,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,78,0,71,49,0, - 1,2,3,4,0,6,7,8,9,67, - 0,0,13,14,86,66,67,68,69,70, - 0,72,12,74,75,0,6,7,8,9, - 5,6,7,8,9,86,0,12,13,14, - 0,133,93,0,1,2,3,4,5,6, + 13,14,0,1,2,3,4,135,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41, + 42,43,44,45,0,83,0,49,0,0, + 0,7,8,9,0,1,2,3,4,67, + 83,0,0,0,66,67,68,69,70,71, + 72,0,74,75,76,86,5,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 0,0,94,0,1,2,3,4,5,6, 7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24,25,26, 27,28,29,30,31,32,33,34,35,36, 37,38,39,40,41,42,43,44,45,0, - 0,81,49,0,83,5,7,8,9,6, - 0,76,77,78,0,0,66,0,83,66, - 67,68,69,70,78,72,12,74,75,12, - 0,0,33,34,35,36,37,38,39,40, - 41,42,43,44,45,0,93,0,1,2, - 3,4,5,6,7,8,9,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40,41,42, - 43,44,45,0,77,81,49,67,83,82, - 7,8,9,0,0,0,0,1,2,3, - 4,101,0,66,67,68,69,70,12,72, - 0,74,75,0,12,0,33,34,35,36, + 78,78,49,0,1,2,3,4,5,6, + 7,8,9,10,11,0,13,14,0,66, + 67,68,69,70,103,72,105,74,75,76, + 0,1,2,3,4,0,6,7,8,9, + 87,0,12,13,14,0,5,94,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41, + 42,43,44,45,0,0,78,49,0,1, + 2,3,4,0,6,7,8,9,5,79, + 0,13,14,78,66,67,68,69,70,0, + 72,0,74,75,76,6,5,0,1,2, + 3,4,102,6,0,87,0,10,11,0, + 6,5,94,0,1,2,3,4,5,6, + 7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36, + 37,38,39,40,41,42,43,44,45,86, + 71,0,49,0,1,2,3,4,77,6, + 7,8,9,0,0,71,13,14,0,66, + 67,68,69,70,0,72,12,74,75,76, + 12,0,1,2,3,4,5,6,0,0, + 87,10,11,12,5,0,0,94,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41, + 42,43,44,45,0,71,82,49,0,86, + 82,7,8,9,0,7,8,9,77,0, + 79,7,8,9,66,67,68,69,70,0, + 72,12,74,75,76,6,0,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 102,0,94,0,1,2,3,4,5,6, + 7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36, 37,38,39,40,41,42,43,44,45,0, - 93,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,15,16,17,18, - 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,33,34,35,36,37,38, - 39,40,41,42,43,44,45,81,85,77, - 49,0,1,2,3,4,0,6,7,8, - 9,78,6,78,13,14,83,66,67,68, - 69,70,0,72,0,74,75,114,6,0, - 0,118,119,120,121,122,123,124,125,126, - 127,128,12,37,93,0,1,2,3,4, - 5,6,7,8,9,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44, - 45,0,0,71,49,0,1,2,3,4, - 5,6,78,0,13,10,11,77,78,0, - 0,66,67,68,69,70,0,72,0,74, - 75,0,1,2,3,4,5,6,7,8, - 9,10,11,0,0,129,130,131,93,0, - 1,2,3,4,5,6,7,8,9,10, - 11,12,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40, - 41,42,43,44,45,0,76,71,49,0, - 1,2,3,4,5,6,105,106,13,10, - 11,83,0,82,71,66,67,68,69,70, - 76,72,0,74,75,0,1,2,3,4, - 5,6,7,8,9,10,11,0,1,2, - 3,4,93,0,1,2,3,4,5,6, + 71,82,49,67,0,0,7,8,9,5, + 0,0,0,1,2,3,4,66,0,66, + 67,68,69,70,12,72,0,74,75,76, + 0,5,33,34,35,36,37,38,39,40, + 41,42,43,44,45,0,0,94,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41, + 42,43,44,45,82,77,86,49,0,1, + 2,3,4,0,6,7,8,9,103,6, + 105,13,14,0,66,67,68,69,70,0, + 72,0,74,75,76,115,7,8,9,119, + 120,121,122,123,124,125,126,127,128,129, + 37,0,94,0,1,2,3,4,5,6, 7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24,25,26, 27,28,29,30,31,32,33,34,35,36, 37,38,39,40,41,42,43,44,45,0, - 0,0,49,0,1,2,3,4,5,6, - 105,106,12,10,11,12,0,82,0,66, - 67,68,69,70,102,72,104,74,75,0, - 1,2,3,4,33,34,35,0,1,2, - 3,4,5,6,0,0,93,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 71,0,0,36,0,1,2,3,4,76, - 77,0,0,46,47,48,86,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,0,1,2,3,4,0,6, - 7,8,9,5,0,71,79,80,0,1, - 2,3,4,0,1,2,3,4,0,1, - 2,3,4,5,6,0,0,0,10,11, - 103,13,14,15,16,17,18,19,20,21, + 71,78,49,0,1,2,3,4,0,6, + 7,8,9,0,1,84,13,14,0,66, + 67,68,69,70,0,72,0,74,75,76, + 0,5,6,7,8,9,12,0,12,13, + 14,0,0,130,131,132,33,94,0,1, + 2,3,4,5,6,7,8,9,10,11, + 12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31, - 32,0,1,2,3,4,5,6,7,8, - 9,10,11,12,46,47,48,0,50,51, - 52,53,54,55,56,57,58,59,60,61, - 62,63,64,65,0,1,2,3,4,85, - 6,73,79,80,10,11,71,79,80,0, - 49,83,0,1,2,3,4,5,6,82, - 0,12,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,0,1,0,36,0, - 1,2,3,4,7,8,9,12,46,47, - 48,67,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,65,0,1, - 2,3,4,5,6,73,77,78,10,11, + 32,33,34,35,36,37,38,39,40,41, + 42,43,44,45,86,0,78,49,0,1, + 2,3,4,77,78,79,0,77,10,11, + 84,87,71,71,66,67,68,69,70,0, + 72,84,74,75,76,0,1,2,3,4, + 5,6,7,8,9,10,11,0,1,2, + 3,4,94,0,1,2,3,4,5,6, + 7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,25,26, + 27,28,29,30,31,32,33,34,35,36, + 37,38,39,40,41,42,43,44,45,83, + 71,0,49,0,0,1,2,3,4,5, + 6,7,8,9,10,11,0,0,83,66, + 67,68,69,70,0,72,0,74,75,76, + 0,1,2,3,4,0,12,0,0,1, + 2,3,4,5,6,10,0,94,10,11, 12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31, - 32,0,0,0,0,103,67,0,1,2, - 3,4,77,0,46,47,48,10,50,51, + 32,0,46,49,36,0,5,0,52,53, + 54,55,56,57,46,47,48,83,50,51, 52,53,54,55,56,57,58,59,60,61, - 62,63,64,65,0,1,2,3,4,5, - 6,73,0,133,10,11,33,34,35,81, - 0,1,0,0,86,0,1,2,3,4, - 5,6,12,0,12,10,11,12,13,14, - 15,16,17,18,19,20,21,22,23,24, - 25,26,27,28,29,30,31,32,0,1, - 2,3,4,5,6,0,46,0,10,11, - 12,46,47,48,0,50,51,52,53,54, - 55,56,57,58,59,60,61,62,63,64, - 65,0,1,2,3,4,22,77,73,0, - 1,2,3,4,5,6,81,49,86,10, - 11,78,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,0,1,2,3,4,0,6,0, - 66,67,10,11,5,46,47,48,0,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,0,1,2,3,4, - 0,0,73,0,0,10,11,0,79,80, - 0,1,2,3,4,5,6,0,0,12, - 10,11,0,13,14,15,16,17,18,19, + 62,63,64,65,0,0,103,2,105,0, + 80,81,0,1,2,3,4,0,80,81, + 15,16,17,18,19,20,21,0,23,12, + 0,1,2,3,4,5,6,33,34,35, + 10,11,104,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, - 30,31,32,0,1,2,3,4,0,82, - 33,34,35,5,76,0,46,47,48,0, + 30,31,32,0,1,2,3,4,5,6, + 7,8,9,10,11,12,46,47,48,67, 50,51,52,53,54,55,56,57,58,59, 60,61,62,63,64,65,0,1,2,3, - 4,22,0,73,77,78,82,5,85,79, - 80,0,1,2,3,4,5,6,50,51, - 78,10,11,85,13,14,15,16,17,18, + 4,5,6,73,87,0,10,11,0,134, + 80,81,49,5,84,0,1,2,3,4, + 5,6,0,114,0,10,11,12,13,14, + 15,16,17,18,19,20,21,22,23,24, + 25,26,27,28,29,30,31,32,0,0, + 0,36,47,48,0,1,2,3,4,0, + 0,46,47,48,10,50,51,52,53,54, + 55,56,57,58,59,60,61,62,63,64, + 65,0,1,2,3,4,5,6,73,0, + 0,10,11,12,13,14,15,16,17,18, 19,20,21,22,23,24,25,26,27,28, - 29,30,31,32,76,66,67,0,0,129, - 130,131,5,0,0,0,0,46,47,48, - 5,50,51,52,53,54,55,56,57,58, - 59,60,61,62,63,64,65,0,76,0, - 0,0,0,0,73,117,7,8,9,12, - 79,80,0,1,2,3,4,5,6,0, - 132,0,10,11,0,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,71,49,47,48,0, - 82,76,0,0,5,82,0,83,46,47, - 48,12,50,51,52,53,54,55,56,57, - 58,59,60,61,62,63,64,65,102,0, - 104,107,108,82,82,73,7,8,9,115, - 116,79,80,0,1,2,3,4,5,6, - 47,48,101,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,77,0,0,0, - 0,112,76,0,7,8,9,85,0,46, - 47,48,0,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,0, - 0,0,0,0,5,5,73,0,1,2, - 3,4,5,6,81,12,0,10,11,12, - 13,14,15,16,17,18,19,20,21,22, - 23,24,25,26,27,28,29,30,31,32, - 0,1,2,3,4,0,6,7,8,9, - 82,82,49,46,47,48,0,50,51,52, - 53,54,55,56,57,58,59,60,61,62, - 63,64,65,0,1,2,3,4,5,6, - 102,78,104,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26, - 27,28,29,30,31,32,0,67,0,0, - 103,0,0,1,2,3,4,0,12,46, - 47,48,10,50,51,52,53,54,55,56, - 57,58,59,60,61,62,63,64,65,0, - 1,2,3,4,5,6,0,0,0,10, - 11,5,13,14,15,16,17,18,19,20, - 21,22,23,24,25,26,27,28,29,30, - 31,32,0,0,0,67,103,0,67,67, - 7,8,9,77,12,46,47,48,71,50, - 51,52,53,54,55,56,57,58,59,60, - 61,62,63,64,65,0,0,1,2,3, - 4,5,6,0,0,76,10,11,5,13, + 29,30,31,32,0,1,2,3,4,104, + 6,67,0,0,10,11,0,46,47,48, + 71,50,51,52,53,54,55,56,57,58, + 59,60,61,62,63,64,65,0,1,2, + 3,4,0,1,73,0,0,1,2,3, + 4,5,6,82,12,0,10,11,87,13, 14,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31,32,0, - 1,2,3,4,71,6,7,8,9,77, - 76,0,46,47,48,78,50,51,52,53, + 1,2,3,4,5,6,0,71,46,10, + 11,78,46,47,48,83,50,51,52,53, 54,55,56,57,58,59,60,61,62,63, 64,65,0,1,2,3,4,5,6,73, - 0,0,10,11,0,13,14,15,16,17, + 0,79,10,11,12,5,80,81,0,1, + 2,3,4,5,6,0,0,0,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,49,0,1,2,3,4,5,6,33, + 34,35,10,11,46,47,48,0,50,51, + 52,53,54,55,56,57,58,59,60,61, + 62,63,64,65,0,1,2,3,4,0, + 0,73,0,1,2,3,4,5,6,0, + 82,0,10,11,0,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,0,67,0,0,1, - 2,3,4,0,0,7,8,9,46,47, - 48,13,50,51,52,53,54,55,56,57, + 28,29,30,31,32,0,22,102,0,77, + 0,0,7,8,9,5,5,0,46,47, + 48,0,50,51,52,53,54,55,56,57, 58,59,60,61,62,63,64,65,0,1, 2,3,4,5,6,73,0,0,10,11, - 0,13,14,15,16,17,18,19,20,21, + 66,67,80,81,0,1,2,3,4,5, + 6,50,51,0,10,11,0,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,77,77,0, + 1,2,3,4,0,1,2,3,4,10, + 46,47,48,0,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 0,1,2,3,4,78,0,73,0,118, + 0,84,86,0,80,81,0,1,2,3, + 4,5,6,0,133,0,10,11,0,13, + 14,15,16,17,18,19,20,21,22,23, + 24,25,26,27,28,29,30,31,32,0, + 1,2,3,4,0,47,48,0,33,34, + 35,115,46,47,48,119,50,51,52,53, + 54,55,56,57,58,59,60,61,62,63, + 64,65,0,0,71,0,103,0,105,73, + 7,8,9,0,71,0,80,81,0,1, + 2,3,4,5,6,0,78,84,10,11, + 12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,108,109,0,0,0,0,0,5,116, + 117,7,8,9,46,47,48,0,50,51, + 52,53,54,55,56,57,58,59,60,61, + 62,63,64,65,71,83,71,0,83,0, + 83,73,0,1,2,3,4,5,6,12, + 82,0,10,11,12,13,14,15,16,17, + 18,19,20,21,22,23,24,25,26,27, + 28,29,30,31,32,0,1,2,3,4, + 0,6,7,8,9,78,49,0,46,47, + 48,84,50,51,52,53,54,55,56,57, + 58,59,60,61,62,63,64,65,0,1, + 2,3,4,5,6,78,77,0,10,11, + 12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31, - 32,0,0,0,0,67,5,0,1,2, - 3,4,0,0,46,47,48,5,50,51, + 32,0,67,0,0,0,104,0,7,8, + 9,7,8,9,46,47,48,77,50,51, 52,53,54,55,56,57,58,59,60,61, 62,63,64,65,0,1,2,3,4,5, 6,0,0,0,10,11,5,13,14,15, 16,17,18,19,20,21,22,23,24,25, 26,27,28,29,30,31,32,0,1,2, - 3,4,5,6,67,71,0,10,11,0, + 3,4,104,6,7,8,9,0,71,0, + 46,47,48,0,50,51,52,53,54,55, + 56,57,58,59,60,61,62,63,64,65, + 0,1,2,3,4,5,6,73,0,0, + 10,11,0,13,14,15,16,17,18,19, + 20,21,22,23,24,25,26,27,28,29, + 30,31,32,0,67,0,0,1,2,3, + 4,0,0,7,8,9,46,47,48,13, + 50,51,52,53,54,55,56,57,58,59, + 60,61,62,63,64,65,83,0,0,1, + 2,3,4,5,6,0,134,77,10,11, + 5,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,31, + 32,0,0,67,0,0,1,2,3,4, + 0,7,8,9,46,47,48,0,50,51, + 52,53,54,55,56,57,58,59,60,61, + 62,63,64,65,0,1,2,3,4,5, + 6,73,0,0,10,11,0,13,14,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,0,1,2, + 3,4,67,6,0,73,0,10,11,5, 46,47,48,0,50,51,52,53,54,55, 56,57,58,59,60,61,62,63,64,65, 0,1,2,3,4,5,6,0,0,0, 10,11,5,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, - 30,31,32,0,0,1,2,3,4,0, - 6,0,0,76,10,11,46,47,48,0, + 30,31,32,0,67,0,0,0,1,2, + 3,4,7,8,9,0,46,47,48,0, 50,51,52,53,54,55,56,57,58,59, 60,61,62,63,64,65,0,1,2,3, - 4,5,6,0,0,0,10,11,0,13, + 4,5,6,0,0,0,10,11,5,13, 14,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31,32,0, - 0,67,0,1,2,3,4,0,1,2, - 3,4,46,47,48,0,50,51,52,53, + 1,2,3,4,67,6,0,71,0,10, + 11,5,46,47,48,0,50,51,52,53, 54,55,56,57,58,59,60,61,62,63, 64,65,0,1,2,3,4,5,6,0, - 0,0,10,11,0,13,14,15,16,17, + 0,0,10,11,5,13,14,15,16,17, 18,19,20,21,22,23,24,25,26,27, - 28,29,30,31,32,0,0,0,0,67, - 5,0,0,0,67,0,0,12,46,47, + 28,29,30,31,32,0,67,0,1,2, + 3,4,0,1,2,3,4,0,46,47, 48,0,50,51,52,53,54,55,56,57, 58,59,60,61,62,63,64,65,0,1, 2,3,4,5,6,0,0,0,10,11, 0,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31, - 32,0,1,2,3,4,0,1,2,3, - 4,76,77,0,46,47,48,0,50,51, + 32,0,0,0,67,0,0,6,6,67, + 7,8,9,0,46,47,48,0,50,51, 52,53,54,55,56,57,58,59,60,61, 62,63,64,65,0,1,2,3,4,5, 6,0,0,0,10,11,0,13,14,15, 16,17,18,19,20,21,22,23,24,25, - 26,27,28,29,30,31,32,0,67,0, - 0,0,0,67,0,0,5,7,8,9, - 46,47,48,12,50,51,52,53,54,55, + 26,27,28,29,30,31,32,0,1,2, + 3,4,71,71,0,0,0,0,0,0, + 46,47,48,0,50,51,52,53,54,55, 56,57,58,59,60,61,62,63,64,65, - 0,1,2,3,4,0,6,7,8,9, - 0,0,7,8,9,15,16,17,18,19, + 0,1,2,3,4,5,6,0,0,0, + 10,11,0,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29, - 30,31,32,33,34,35,36,37,38,39, - 40,41,42,43,44,45,0,76,77,78, - 0,0,6,0,83,0,0,1,2,3, - 4,0,6,7,8,9,66,12,68,69, - 70,15,16,17,18,19,20,21,22,23, + 30,31,32,0,67,0,0,0,5,0, + 0,0,5,0,0,12,46,47,48,12, + 50,51,52,53,54,55,56,57,58,59, + 60,61,62,63,64,65,0,1,2,3, + 4,0,6,7,8,9,0,0,7,8, + 9,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31,32,33, 34,35,36,37,38,39,40,41,42,43, - 44,45,0,0,49,0,0,0,0,7, - 8,9,0,1,2,3,4,71,6,7, + 44,45,79,0,77,78,79,0,83,0, + 0,84,0,1,2,3,4,86,6,7, 8,9,66,0,68,69,70,15,16,17, 18,19,20,21,22,23,24,25,26,27, 28,29,30,31,32,33,34,35,36,37, 38,39,40,41,42,43,44,45,0,0, - 0,0,0,0,0,7,8,9,0,1, + 0,0,0,0,0,0,0,0,0,1, 2,3,4,0,6,7,8,9,66,0, 68,69,70,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31, 32,33,34,35,36,37,38,39,40,41, - 42,43,44,45,0,0,0,0,0,5, - 0,0,0,0,10,0,6,13,14,12, - 0,71,0,71,66,12,68,69,70,7, - 8,9,0,83,12,83,0,0,85,7, - 8,9,0,7,8,9,0,0,85,12, - 0,47,48,0,50,51,52,107,108,107, - 108,0,49,0,0,115,116,115,116,0, - 0,49,0,0,0,71,7,8,9,0, - 76,71,78,79,80,78,49,83,0,85, - 85,78,0,86,0,7,8,9,0,46, - 78,0,0,99,100,0,102,0,0,105, - 106,107,108,109,110,111,112,113,114,0, - 67,117,0,119,120,121,122,123,124,125, - 126,127,128,0,1,2,3,4,5,6, - 7,8,9,10,11,12,13,14,0,0, + 42,43,44,45,0,0,0,0,0,0, + 0,0,0,0,0,1,2,3,4,0, + 6,7,8,9,66,12,68,69,70,15, + 16,17,18,19,20,21,22,23,24,25, + 26,27,28,29,30,31,32,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 0,0,0,0,0,5,0,0,0,0, + 10,5,0,13,14,71,12,71,12,0, + 66,12,68,69,70,22,0,0,84,0, + 84,12,79,7,8,9,83,0,12,12, + 0,0,0,0,0,0,0,47,48,12, + 50,51,108,109,108,109,12,12,58,0, + 116,117,116,117,0,0,0,0,1,66, + 67,71,0,0,0,49,49,77,78,12, + 80,81,78,77,84,79,86,78,79,0, + 0,87,0,49,49,0,0,78,79,0, + 100,101,0,103,78,78,106,107,108,109, + 110,111,112,113,114,115,79,0,118,0, + 120,121,122,123,124,125,126,127,128,129, 0,1,2,3,4,5,6,7,8,9, - 10,11,12,13,14,0,33,34,35,36, - 37,38,39,40,41,42,43,44,45,0, - 0,0,49,33,34,35,36,37,38,39, - 40,41,42,43,44,45,0,0,0,49, - 0,0,0,0,71,7,8,9,0,76, - 77,0,1,2,3,4,5,6,7,8, - 9,10,11,12,13,14,76,77,0,1, - 2,3,4,5,6,7,8,9,10,11, - 12,13,14,0,33,34,35,36,37,38, - 39,40,41,42,43,44,45,0,0,0, - 49,33,34,35,36,37,38,39,40,41, - 42,43,44,45,0,0,0,49,0,0, - 1,2,3,4,5,6,12,76,77,10, - 11,12,0,0,0,0,0,0,6,5, - 0,6,0,0,76,77,12,0,12,12, + 10,11,12,13,14,86,79,0,1,2, + 3,4,5,6,7,8,9,10,11,12, + 13,14,0,33,34,35,36,37,38,39, + 40,41,42,43,44,45,0,0,86,49, + 33,34,35,36,37,38,39,40,41,42, + 43,44,45,0,0,0,49,0,0,0, + 0,71,0,86,0,12,12,77,0,79, + 0,0,0,0,0,0,0,0,0,0, + 0,0,46,12,77,12,79,0,1,2, + 3,4,5,6,7,8,9,10,11,12, + 13,14,49,67,0,1,2,3,4,5, + 6,7,8,9,10,11,12,13,14,0, + 33,34,35,36,37,38,39,40,41,42, + 43,44,45,79,0,0,49,33,34,35, + 36,37,38,39,40,41,42,43,44,45, + 79,78,79,49,86,0,102,0,1,2, + 3,4,5,6,77,0,79,10,11,12, + 0,0,0,0,0,5,0,12,0,0, + 0,77,12,79,12,12,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, - 0,77,0,0,0,76,77,78,0,0, - 0,0,83,71,85,0,71,0,0,0, - 76,77,78,77,77,101,0,83,0,0, - 101,0,0,0,0,0,0,0,0,0, + 0,0,0,0,77,78,79,0,0,0, + 0,84,0,86,79,0,0,77,78,79, + 0,79,79,0,84,0,0,0,0,102, 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 + 0,0,0,0,0,0,0,0,0,0, + 0 }; }; public final static char termCheck[] = TermCheck.termCheck; @@ -2159,565 +2202,569 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface TermAction { public final static char termAction[] = {0, - 8155,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,8155,7265,7265, - 7265,7265,3159,7265,8155,3902,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,1,7195,7183, - 7187,7191,3095,7180,7214,7208,7211,731,4343,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,7265, - 7265,7265,7265,7265,7265,7265,7265,7265,7265,29, - 1,35,7265,8155,7960,7161,7161,7161,7161,7161, - 7154,7161,7161,7161,7161,8009,7161,7161,1,1, + 8285,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,299,7392,7392, + 7392,7392,1,7392,1141,1089,1095,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,1,7322, + 7310,7314,7318,3154,7307,7341,7335,7338,735,2740, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 7392,7392,7392,7392,7392,7392,7392,7392,7392,7392, + 29,8285,3440,7392,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8145,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1899,1,1,1,115,1318,1,730,739, + 8460,386,8285,426,1,1,8296,3713,5838,1108, + 8285,8292,3886,2264,2548,2156,3792,3918,1,3875, + 852,3841,3636,3830,10,8148,8148,8148,8148,8148, + 8148,8148,8148,8148,8148,8148,8148,8148,8148,8148, + 8148,8148,8148,8148,8148,8148,8148,8148,8148,8148, + 8148,8148,8148,8148,8148,8148,8148,8148,8148,8148, + 8148,8148,8148,8148,8148,8148,8148,8148,8148,8148, + 8148,8148,8148,8148,8148,8148,8148,8148,8148,8148, + 8148,8148,8148,8148,8148,8148,8148,8148,8148,8148, + 8148,8285,8148,8148,8148,117,8148,8148,8148,8148, + 8148,5803,5064,1914,8148,8148,8148,8285,5838,8148, + 761,8148,8148,8148,8148,8148,8148,8148,8285,8148, + 8148,8148,8148,8148,8,8172,8172,8172,8172,8172, + 8172,8172,8172,8172,8172,8172,8172,8172,8172,8172, + 8172,8172,8172,8172,8172,8172,8172,8172,8172,8172, + 8172,8172,8172,8172,8172,8172,8172,8172,8172,8172, + 8172,8172,8172,8172,8172,8172,8172,8172,8172,8172, + 8172,8172,8172,8172,8172,8172,8172,8172,8172,8172, + 8172,8172,8172,8172,8172,8172,8172,8172,8172,8172, + 8172,8285,8172,8172,8172,116,8172,8172,8172,8172, + 8172,5803,5064,8289,8172,8172,8172,121,5838,8172, + 580,8172,8172,8172,8172,8172,8172,8172,8285,8172, + 8172,8172,8172,8172,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,129,1,1,1,8288,1318,1,730,739, + 8460,5803,5064,8285,1,1,8296,5186,5227,1108, + 5186,5227,3886,2264,2548,2156,3792,3918,321,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,7964,1,1,1,1,1,1,1, + 1,133,1,1,1,1580,1318,1,730,739, + 8460,4714,4660,8285,1,1,8296,579,787,1108, + 125,8285,3886,2264,2548,2156,3792,3918,8285,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,1, 1,1,1,1,1,1,1,1,1,1, - 2033,1,1,1,39,1985,1,927,8330,121, - 8193,426,1,1,8166,580,2173,1518,386,8162, - 3319,2861,2463,2790,3186,4059,1,3317,900,3297, - 3807,3296,10,8012,8012,8012,8012,8012,8012,8012, - 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012, - 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012, - 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012, - 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012, - 8012,8012,8012,8012,8012,8012,8012,8012,8012,8012, - 8012,8012,8012,8012,8012,8012,8012,8012,8012,129, - 8012,8012,8012,131,8012,8012,8012,8012,5019,5101, - 2126,8012,8012,8012,5019,5101,8012,3812,8012,8012, - 8012,8012,8012,8012,8012,8155,8012,8012,8012,8012, - 8012,8,8042,8042,8042,8042,8042,8042,8042,8042, - 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042, - 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042, - 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042, - 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042, - 8042,8042,8042,8042,8042,8042,8042,8042,8042,8042, - 8042,8042,8042,8042,8042,8042,8042,8042,139,8042, - 8042,8042,303,8042,8042,8042,8042,579,4035,3981, - 8042,8042,8042,8155,8155,8042,680,8042,8042,8042, - 8042,8042,8042,8042,8457,8042,8042,8042,8042,8042, - 8155,7960,7161,7161,7161,7161,7161,7154,7161,7161, - 7161,7161,7967,7161,7161,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,7964, + 1,1,1,8094,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,130,1,1, - 1,3978,1985,1,927,8330,5019,5101,8155,1, - 1,8166,3272,845,1518,125,1730,3319,2861,2463, - 2790,3186,4059,534,3317,900,3297,3807,3296,8155, - 7960,7161,7161,7161,7161,7161,7154,7161,7161,7161, - 7161,7967,7161,7161,1,1,1,1,1,1, + 1,8285,1,1,1,6286,1318,1,730,739, + 8460,124,8799,3548,1,1,8296,5186,5227,1108, + 5186,5227,3886,2264,2548,2156,3792,3918,460,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,7964,1, 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,4104,1,1,1, - 8155,1985,1,927,8330,124,4035,3981,1,1, - 8166,123,8155,1518,5019,5101,3319,2861,2463,2790, - 3186,4059,8155,3317,900,3297,3807,3296,8155,7960, - 7161,7161,7161,7161,7161,7154,7161,7161,7161,7161, - 7967,7161,7161,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,7964,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,6338,1,1,1,8155, - 1985,1,927,8330,5019,5101,8155,1,1,8166, - 5019,5101,1518,122,8155,3319,2861,2463,2790,3186, - 4059,8155,3317,900,3297,3807,3296,8155,7960,7161, - 7161,7161,7161,7161,7154,7161,7161,7161,7161,7967, - 7161,7161,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,7964,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,8155,1,1,1,8155,1985, - 1,927,8330,1792,8155,8155,1,1,8166,1420, - 2643,1518,5019,5101,3319,2861,2463,2790,3186,4059, - 450,3317,900,3297,3807,3296,8155,7960,7161,7161, - 7161,7161,7161,7154,7161,7161,7161,7161,7967,7161, - 7161,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,7964,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,8155,1,1,1,8155,1985,1, - 927,8330,750,3537,8155,1,1,8166,8155,4549, - 1518,8155,8155,3319,2861,2463,2790,3186,4059,8155, - 3317,900,3297,3807,3296,8155,7960,7161,7161,7161, - 7161,7161,7154,7161,7161,7161,7161,7967,7161,7161, - 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,7964,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,8155,1,1,1,8155,1985,1,927, - 8330,1683,572,559,1,1,8166,2608,3300,1518, - 8155,8155,3319,2861,2463,2790,3186,4059,8155,3317, - 900,3297,3807,3296,8155,7960,7161,7161,7161,7161, - 7161,7154,7161,7161,7161,7161,7967,7161,7161,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,7964,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,8155,1,1,1,91,1985,1,927,8330, - 7857,546,8155,1,1,8166,1416,8155,1518,8155, - 8155,3319,2861,2463,2790,3186,4059,8155,3317,900, - 3297,3807,3296,8155,7960,7161,7161,7161,7161,7161, - 7154,7161,7161,7161,7161,7967,7161,7161,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,7964,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 8669,1,1,1,133,1985,1,927,8330,8558, - 8155,8155,1,1,8166,8155,3553,1518,8155,8155, - 3319,2861,2463,2790,3186,4059,8155,3317,900,3297, - 3807,3296,8155,7960,7161,7161,7161,7161,7161,7154, - 7161,7161,7161,7161,7967,7161,7161,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,7964,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,8155, - 1,1,1,137,1985,1,927,8330,359,237, - 8155,1,1,8166,7976,3549,1518,8155,8155,3319, - 2861,2463,2790,3186,4059,8155,3317,900,3297,3807, - 3296,8155,7960,7161,7161,7161,7161,7161,7154,7161, - 7161,7161,7161,7967,7161,7161,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, - 7964,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,8155,1, - 1,1,1,1985,1,927,8330,7017,3360,8513, - 1,1,8166,8155,8155,1518,3449,8155,3319,2861, - 2463,2790,3186,4059,8155,3317,900,3297,3807,3296, - 8155,7960,7161,7161,7161,7161,7161,7154,7161,7161, - 7161,7161,7967,7161,7161,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,7964, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,3361,1,1, - 1,8155,1985,1,927,8330,2162,39,8155,1, - 1,8166,8155,8193,1518,571,8155,3319,2861,2463, - 2790,3186,4059,389,3317,900,3297,3807,3296,8155, - 7735,7735,7735,7735,7735,7735,7735,7735,7735,7735, - 7735,7735,7735,7735,3424,8493,8494,1103,224,38, - 7672,7663,7666,7669,782,7280,7274,7277,7153,7660, - 4343,2185,7735,7735,7735,7735,7735,7735,7735,7735, - 7735,7735,7735,7735,7735,6294,7735,7735,7735,7735, - 7735,7289,7286,7283,7307,7295,7313,7292,7304,7271, - 7298,7301,7310,7268,7475,446,7726,7726,7726,7726, - 7735,7726,7726,7726,7726,7735,7735,7735,7726,7726, - 7735,7735,7735,7735,7735,7735,332,7174,7164,7478, - 7171,3095,995,1089,976,1000,731,4343,7735,7735, - 7735,7735,7735,7735,7735,7735,7735,7735,7735,7735, - 7735,7735,7735,7735,7735,7735,7735,7735,7735,7735, - 7735,7735,7735,7735,7735,7735,7735,7735,8155,8155, - 8155,7735,8155,7860,7860,7860,7860,7860,7860,7860, - 7860,7860,7860,7860,7860,7860,7860,8155,39,138, - 8155,225,6894,8155,8193,1089,976,1000,7328,7322, - 7325,332,332,6588,873,7860,7860,7860,7860,7860, - 7860,7860,7860,7860,7860,7860,7860,7860,294,7860, - 7860,7860,7860,7860,7337,7334,7331,7355,7343,7361, - 7340,7352,7319,7346,7349,7358,7316,1318,447,7997, - 7997,7997,7997,7860,7994,7985,7991,7988,7860,7860, - 7860,8000,8000,7860,7860,7860,7860,7860,7860,602, - 7174,7164,7478,7171,3095,995,1089,976,1000,731, - 4343,7860,7860,7860,7860,7860,7860,7860,7860,7860, - 7860,7860,7860,7860,7860,7860,7860,7860,7860,7860, - 7860,7860,7860,7860,7860,7860,7860,7860,7860,7860, - 7860,456,3449,2835,7860,39,7174,7164,7167,7171, - 6702,995,1089,976,1000,5948,4343,8155,5856,5879, - 8420,8418,8426,8422,8423,8421,8424,1055,8425,8761, - 8762,8427,8428,8419,8767,8768,8769,6493,8493,8494, - 1103,8411,8415,8409,8416,8412,8388,8414,8413,8410, - 8389,8174,5829,5806,8155,5925,5902,1584,1529,1753, - 8176,1636,6091,1706,8177,8175,1513,8171,8172,8173, - 5505,8555,7675,3051,8556,8557,8155,132,1895,39, - 7174,7164,7478,7171,6702,995,1089,976,1000,5948, - 4343,3812,5856,5879,8420,8418,8426,8422,8423,8421, - 8424,1055,8425,8761,8762,8427,8428,8419,8767,8768, - 8769,6493,8493,8494,1103,8411,8415,8409,8416,8412, - 8388,8414,8413,8410,8389,8174,5829,5806,303,5925, - 5902,1584,1529,1753,8176,1636,6091,1706,8177,8175, - 1513,8171,8172,8173,5505,8555,312,3051,8556,8557, - 8457,2821,1895,8155,7775,7775,7775,7775,229,7771, - 7161,7161,7161,229,229,7779,229,229,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,8155, - 740,8155,229,346,7174,7164,7478,7171,4991,995, - 1089,976,1000,731,4343,8155,332,332,8155,1, - 7768,1,1,1,2502,5229,8155,2528,8569,299, - 8155,1363,8155,223,185,229,1089,976,1000,418, - 7229,7223,7226,7001,8165,2408,8657,2185,8420,8418, - 8426,8422,8423,8421,8424,321,8425,8761,8762,8427, - 8428,8419,8767,8768,8769,8155,7238,7235,7232,7256, - 7244,7262,7241,7253,7220,7247,7250,7259,7217,1490, - 8155,8164,8592,8593,8594,8155,7775,7775,7775,7775, - 229,7771,7161,7161,7161,229,229,7957,229,229, - 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,1490,6190,8155,229,310,7195,7183,7187,7191, - 3095,7180,7214,7208,7211,731,4343,6234,7657,7657, - 118,1,7768,1,1,1,8155,5229,8155,2528, - 8569,8155,7490,7481,7484,7487,634,229,7765,8152, - 135,417,8155,7762,7756,7759,8155,6917,8657,548, - 8704,8777,8780,8776,8782,8783,8781,8778,8159,8779, - 8155,7174,7164,7478,7171,8155,8193,5475,5445,8493, - 8494,1103,8411,8415,8409,8416,8412,8388,8414,8413, - 8410,8389,8705,8155,8592,8593,8594,8155,7161,7161, - 7161,7161,229,7161,7154,7161,7161,229,229,7205, - 229,229,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,13108,1,1,1,14060,1,13105, - 1,1,1,8155,566,309,229,8155,7195,7183, - 7187,7191,3095,7180,7214,7208,7211,731,4343,8158, - 7657,7657,3512,1,7158,1,1,1,8155,746, - 8155,927,8366,605,115,8155,3778,633,8720,7948, - 1089,976,1000,219,7945,7939,7942,5760,3150,8155, - 8657,8155,8777,8780,8776,8782,8783,8781,8778,2157, - 8779,111,8155,8155,8169,8795,8794,8170,460,1, - 8493,8494,1103,8411,8415,8409,8416,8412,8388,8414, - 8413,8410,8389,3905,8155,7174,7164,7478,7171,2793, - 8193,219,8155,7161,7161,7161,7161,229,7161,7154, - 7161,7161,229,229,229,229,229,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,13108,1, - 1,1,14060,1,13105,1,1,1,226,5737, - 5709,229,5971,1061,7729,7388,7382,7385,289,7424, - 7424,7424,7424,442,284,1089,976,1000,1,7158, - 1,1,1,5994,746,6017,927,8366,134,8155, - 8515,7397,7394,7391,7415,7403,7421,7400,7412,7379, - 7406,7409,7418,7376,4013,8657,8155,8169,8795,8794, - 8170,8155,8155,7195,7183,7187,7191,3095,7180,7214, - 7208,7211,731,4343,29,7723,7723,8155,8095,8095, - 8095,8095,8095,8095,8095,8095,8095,8095,8095,371, - 8095,8095,8155,8155,7678,569,220,8155,7161,7161, - 7161,7161,229,7161,7154,7161,7161,229,229,229, - 229,229,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,13108,1,1,1,14060,1,13105, - 1,1,1,227,2793,7681,229,8155,8155,3549, - 7439,7433,7436,299,8169,8795,8794,8170,8155,8095, - 1089,976,1000,1,7158,1,1,1,1356,746, - 8167,927,8366,847,1749,3390,7448,7445,7442,7466, - 7454,7472,7451,7463,7430,7457,7460,7469,7427,47, - 8657,8155,7161,7161,7161,7161,229,7161,7154,7161, - 7161,229,229,7885,229,229,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,13108,1,1, - 1,14060,1,13105,1,1,1,8155,8155,8166, - 229,8155,7195,7183,7187,7191,3095,7180,7214,7208, - 7211,731,4343,8155,7723,7723,1077,1,7158,1, - 1,1,8155,746,8155,927,8366,1,8018,8018, - 8018,8018,8155,8015,7214,7208,7211,220,8155,364, - 332,332,8155,5343,8657,8155,7161,7161,7161,7161, - 229,7161,7154,7161,7161,229,229,7885,229,229, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,13108,1,1,1,14060,1,13105,1,1, - 1,4653,8155,2770,229,4382,6515,7029,376,8155, - 7174,7164,7478,7171,364,995,8155,517,8775,731, - 4343,1,7158,1,1,1,8155,746,1,927, - 8366,8777,8780,8776,8782,8783,8781,8778,364,8779, - 7854,220,37,7738,7738,7738,7738,8155,8657,8155, - 7161,7161,7161,7161,229,7161,7154,7161,7161,229, - 229,7885,229,229,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,13108,1,1,1,14060, - 1,13105,1,1,1,1173,8155,5267,229,92, - 8024,8024,8024,8024,8155,8024,8024,8024,8024,8191, - 1,8155,8024,8024,8162,1,7158,1,1,1, - 397,746,7684,927,8366,39,390,1089,976,1000, - 3627,8193,1089,976,1000,220,157,346,332,332, - 8155,4013,8657,8155,7161,7161,7161,7161,229,7161, - 7154,7161,7161,229,229,229,229,229,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,13108, - 1,1,1,14060,1,13105,1,1,1,590, - 8155,8166,229,8155,3400,2209,7505,7499,7502,3372, - 1,1490,346,346,1,8155,2411,8155,346,1, - 7158,1,1,1,2505,746,8167,927,8366,8161, - 37,8155,7514,7511,7508,7532,7520,7538,7517,7529, - 7496,7523,7526,7535,7493,8155,8657,8155,7161,7161, - 7161,7161,229,7161,7154,7161,7161,229,229,229, - 229,229,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,13108,1,1,1,14060,1,13105, - 1,1,1,630,8160,8166,229,8191,8612,735, - 7903,7897,7900,139,8155,8155,8155,8169,8795,8794, - 8170,4168,8155,1,7158,1,1,1,8167,746, - 8155,927,8366,8155,8161,451,7912,7909,7906,7930, - 7918,7936,7915,7927,7894,7921,7924,7933,7891,8155, - 8657,8155,7161,7161,7161,7161,229,7161,7154,7161, - 7161,229,229,229,229,229,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,13108,1,1, - 1,14060,1,13105,1,1,1,8166,2416,8160, - 229,95,8119,8119,8119,8119,39,8116,8107,8113, - 8110,4653,8193,852,8122,8122,4096,1,7158,1, - 1,1,398,746,363,927,8366,3272,389,8155, - 8155,1730,2369,2322,2275,2228,2181,2134,2087,2040, - 1989,1942,8161,1464,8657,8155,7161,7161,7161,7161, - 229,7161,7154,7161,7161,229,229,229,229,229, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,13108,1,1,1,14060,1,13105,1,1, - 1,117,8155,2033,229,1,7195,7183,7187,7191, - 7177,7180,3604,8155,5760,7202,7199,8160,1387,8155, - 459,1,7158,1,1,1,8155,746,8155,927, - 8366,1,7195,7183,7187,7191,3095,7180,7214,7208, - 7211,731,4343,8155,349,8592,8593,8594,8657,8155, - 7161,7161,7161,7161,229,7161,7154,7161,7161,229, - 229,229,229,229,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,13108,1,1,1,14060, - 1,13105,1,1,1,116,7732,5535,229,1, - 7195,7183,7187,7191,3095,7180,5737,5709,5760,731, - 4343,8598,114,2793,7012,1,7158,1,1,1, - 1490,746,8155,927,8366,1,7195,7183,7187,7191, - 3095,7180,7214,7208,7211,731,4343,8155,14302,13843, - 14017,14299,8657,8155,7161,7161,7161,7161,229,7161, - 7154,7161,7161,229,229,229,229,229,1,1, - 1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,13108, - 1,1,1,14060,1,13105,1,1,1,8155, - 8155,649,229,1,7195,7183,7187,7191,4991,7180, - 5737,5709,8163,731,4343,7970,8155,2793,8155,1, - 7158,1,1,1,5994,746,6017,927,8366,48, - 7490,7481,7484,7487,8493,8494,1103,1,7174,7164, - 7478,7171,6702,995,8155,8155,8657,5948,4343,8159, - 3944,5879,8420,8418,8426,8422,8423,8421,8424,2079, - 8425,8761,8762,8427,8428,8419,8767,8768,8769,3487, - 2033,8155,8155,1608,399,8169,8795,8794,8170,1490, - 7973,8155,8155,8174,5829,5806,8162,5925,5902,1584, - 1529,1753,8176,1636,6091,1706,8177,8175,1513,8171, - 8172,8173,5505,599,7702,7702,7702,7702,8155,604, - 1089,976,1000,2303,369,1356,39,39,8155,14302, - 13843,14017,14299,8155,7490,7481,7484,7487,1,7195, - 7183,7187,7191,6702,7180,8155,8155,1,5948,4343, - 8158,5856,5879,7818,7824,7800,7812,7809,7815,7806, - 7782,7803,7830,7827,7797,7794,7821,7791,7788,7785, - 7833,1,7195,7183,7187,7191,3095,7180,7214,7208, - 7211,731,4343,310,8174,5829,5806,8155,5925,5902, - 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513, - 8171,8172,8173,5505,8155,7174,7164,7478,7171,1796, - 995,1895,5971,1061,7863,4343,3765,39,39,8155, - 310,518,39,7174,7164,7478,7171,6702,995,2, - 523,8161,5948,4343,8159,5783,5879,8420,8418,8426, - 8422,8423,8421,8424,2079,8425,8761,8762,8427,8428, - 8419,8767,8768,8769,3487,8155,2232,314,2604,8155, - 7845,7836,7839,7842,1089,976,1000,8161,8174,5829, - 5806,699,5925,5902,1584,1529,1753,8176,1636,6091, - 1706,8177,8175,1513,8171,8172,8173,5505,39,7174, - 7164,7478,7171,6702,995,1895,8160,1848,5948,4343, - 8128,5856,5879,8420,8418,8426,8422,8423,8421,8424, - 2079,8425,8761,8762,8427,8428,8419,8767,8768,8769, - 3487,8155,8155,8155,8155,8158,8191,8155,8169,8795, - 8794,8170,8160,337,8174,5829,5806,2157,5925,5902, - 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513, - 8171,8172,8173,5505,1,7195,7183,7187,7191,3095, - 7180,1895,8155,4013,731,4343,8033,8030,8027,7744, - 8155,3867,8,8155,8162,39,7174,7164,7478,7171, - 6702,995,8161,286,8149,5948,4343,7741,5856,5879, - 8420,8418,8426,8422,8423,8421,8424,2079,8425,8761, - 8762,8427,8428,8419,8767,8768,8769,3487,1,7195, - 7183,7187,7191,7177,7180,8155,3858,8155,7202,7199, - 8165,8174,5829,5806,1,5925,5902,1584,1529,1753, - 8176,1636,6091,1706,8177,8175,1513,8171,8172,8173, - 5505,293,8169,8795,8794,8170,7879,8160,1895,141, - 7174,7164,7478,7171,6702,995,7744,8164,8149,5948, - 4343,8440,5856,5879,8420,8418,8426,8422,8423,8421, - 8424,2079,8425,8761,8762,8427,8428,8419,8767,8768, - 8769,3487,8155,7174,7164,7478,7171,430,995,8155, - 7882,3148,731,4343,2397,8174,5829,5806,100,5925, - 5902,1584,1529,1753,8176,1636,6091,1706,8177,8175, - 1513,8171,8172,8173,5505,8155,8169,8795,8794,8170, - 441,8155,1895,510,8155,731,4343,8155,39,39, - 1,7174,7164,7478,7171,6702,995,337,508,8161, - 5948,4343,292,5856,5879,8420,8418,8426,8422,8423, - 8421,8424,2079,8425,8761,8762,8427,8428,8419,8767, - 8768,8769,3487,36,8071,8062,8065,8068,75,3974, - 8493,8494,1103,7717,8074,8155,8174,5829,5806,1, - 5925,5902,1584,1529,1753,8176,1636,6091,1706,8177, - 8175,1513,8171,8172,8173,5505,292,1532,1532,1532, - 1532,7879,319,1895,8160,7083,4124,7687,7038,39, - 39,554,7174,7164,7478,7171,6702,995,7708,7705, - 12753,5948,4343,7050,5856,5879,8420,8418,8426,8422, - 8423,8421,8424,2079,8425,8761,8762,8427,8428,8419, - 8767,8768,8769,3487,7720,7882,3148,8155,8155,8592, - 8593,8594,2585,8155,126,348,113,8174,5829,5806, - 3615,5925,5902,1584,1529,1753,8176,1636,6091,1706, - 8177,8175,1513,8171,8172,8173,5505,407,1490,602, - 120,8155,8155,8155,1895,7711,7747,7753,7750,7951, - 39,39,1,7195,7183,7187,7191,6702,7180,136, - 7714,8155,5948,4343,8155,5856,5879,7818,7824,7800, - 7812,7809,7815,7806,7782,7803,7830,7827,7797,7794, - 7821,7791,7788,7785,7833,4959,7954,5475,5445,8155, - 4189,1490,422,119,1168,2652,99,7888,8174,5829, - 5806,8161,5925,5902,1584,1529,1753,8176,1636,6091, - 1706,8177,8175,1513,8171,8172,8173,5505,5994,593, - 6017,4891,4859,4387,2699,1895,1089,976,1000,4827, - 3223,39,39,39,7174,7164,7478,7171,6702,995, - 5475,5445,2981,5948,4343,7741,5856,5879,8420,8418, - 8426,8422,8423,8421,8424,2079,8425,8761,8762,8427, - 8428,8419,8767,8768,8769,3487,8160,594,8155,8155, - 8155,3512,8104,8155,1089,976,1000,2929,112,8174, - 5829,5806,8155,5925,5902,1584,1529,1753,8176,1636, - 6091,1706,8177,8175,1513,8171,8172,8173,5505,8155, - 8155,8155,8155,8155,2491,2915,1895,39,7174,7164, - 7478,7171,6702,995,7744,8165,8155,5948,4343,8159, - 5856,5879,8420,8418,8426,8422,8423,8421,8424,2079, - 8425,8761,8762,8427,8428,8419,8767,8768,8769,3487, - 396,7373,7373,7373,7373,8155,284,7364,7370,7367, - 2887,4317,8164,8174,5829,5806,8155,5925,5902,1584, - 1529,1753,8176,1636,6091,1706,8177,8175,1513,8171, - 8172,8173,5505,39,7174,7164,7478,7171,6702,995, - 5994,3905,6017,5948,4343,8159,5856,5879,8420,8418, - 8426,8422,8423,8421,8424,2079,8425,8761,8762,8427, - 8428,8419,8767,8768,8769,3487,1,284,1,8155, - 8158,1,37,7738,7738,7738,7738,73,161,8174, - 5829,5806,7738,5925,5902,1584,1529,1753,8176,1636, - 6091,1706,8177,8175,1513,8171,8172,8173,5505,39, - 7174,7164,7478,7171,6702,995,8155,8155,8155,5948, - 4343,3732,5856,5879,8420,8418,8426,8422,8423,8421, - 8424,2079,8425,8761,8762,8427,8428,8419,8767,8768, - 8769,3487,1,397,100,727,8158,428,781,2298, - 1089,976,1000,161,163,8174,5829,5806,8125,5925, - 5902,1584,1529,1753,8176,1636,6091,1706,8177,8175, - 1513,8171,8172,8173,5505,8155,39,7174,7164,7478, - 7171,6702,995,103,8155,2556,5948,4343,8101,5856, - 5879,8420,8418,8426,8422,8423,8421,8424,2079,8425, - 8761,8762,8427,8428,8419,8767,8768,8769,3487,600, - 7699,7699,7699,7699,2033,604,7690,7696,7693,163, - 8074,8155,8174,5829,5806,4122,5925,5902,1584,1529, - 1753,8176,1636,6091,1706,8177,8175,1513,8171,8172, - 8173,5505,39,7174,7164,7478,7171,6702,995,1895, - 8155,8155,5948,4343,8155,5856,5879,8420,8418,8426, - 8422,8423,8421,8424,2079,8425,8761,8762,8427,8428, - 8419,8767,8768,8769,3487,8155,604,8155,37,7738, - 7738,7738,7738,8155,8155,1089,976,1000,8174,5829, - 5806,332,5925,5902,1584,1529,1753,8176,1636,6091, - 1706,8177,8175,1513,8171,8172,8173,5505,39,7174, - 7164,7478,7171,4156,995,1895,8155,8155,5948,4343, - 8155,5856,5879,8420,8418,8426,8422,8423,8421,8424, - 2079,8425,8761,8762,8427,8428,8419,8767,8768,8769, - 3487,8155,8155,8155,2,8191,1238,43,7851,7851, - 7851,7851,279,8155,8174,5829,5806,8146,5925,5902, - 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513, - 8171,8172,8173,5505,39,7174,7164,7478,7171,6602, - 995,103,8155,8155,5948,4343,8101,5856,5879,8420, - 8418,8426,8422,8423,8421,8424,2079,8425,8761,8762, - 8427,8428,8419,8767,8768,8769,3487,1,7195,7183, - 7187,7191,4991,7180,7848,37,8155,731,4343,8155, - 8174,5829,5806,8155,5925,5902,1584,1529,1753,8176, - 1636,6091,1706,8177,8175,1513,8171,8172,8173,5505, - 39,7174,7164,7478,7171,6635,995,8155,8155,8155, - 5948,4343,6915,5856,5879,8420,8418,8426,8422,8423, - 8421,8424,2079,8425,8761,8762,8427,8428,8419,8767, - 8768,8769,3487,8155,8155,7174,7164,7478,7171,8155, - 995,8155,8155,1490,7863,4343,8174,5829,5806,8155, - 5925,5902,1584,1529,1753,8176,1636,6091,1706,8177, - 8175,1513,8171,8172,8173,5505,39,7174,7164,7478, - 7171,6672,995,8155,8155,8155,5948,4343,8155,5856, - 5879,8420,8418,8426,8422,8423,8421,8424,2079,8425, - 8761,8762,8427,8428,8419,8767,8768,8769,3487,8155, - 8155,1245,8155,13371,13371,13371,13371,45,8006,8006, - 8006,8006,8174,5829,5806,8155,5925,5902,1584,1529, - 1753,8176,1636,6091,1706,8177,8175,1513,8171,8172, - 8173,5505,39,7174,7164,7478,7171,6702,995,8155, - 8155,8155,5948,4343,8155,5856,5879,8420,8418,8426, - 8422,8423,8421,8424,2079,8425,8761,8762,8427,8428, - 8419,8767,8768,8769,3487,1,8155,8155,8155,8191, - 3627,8155,8155,8155,8003,8155,8155,7970,8174,5829, - 5806,8155,5925,5902,1584,1529,1753,8176,1636,6091, - 1706,8177,8175,1513,8171,8172,8173,5505,39,7174, - 7164,7478,7171,6733,995,8155,8155,8155,5948,4343, - 8155,5856,5879,8420,8418,8426,8422,8423,8421,8424, - 2079,8425,8761,8762,8427,8428,8419,8767,8768,8769, - 3487,37,7738,7738,7738,7738,8155,8058,8046,8050, - 8054,1490,7973,8155,8174,5829,5806,8155,5925,5902, - 1584,1529,1753,8176,1636,6091,1706,8177,8175,1513, - 8171,8172,8173,5505,39,7174,7164,7478,7171,6702, - 995,8155,8155,8155,5948,4343,8155,5856,5879,8420, - 8418,8426,8422,8423,8421,8424,2079,8425,8761,8762, - 8427,8428,8419,8767,8768,8769,3487,8155,2012,8155, - 397,1,8155,8191,8155,8155,3627,1089,976,1000, - 8174,5829,5806,615,5925,5902,1584,1529,1753,8176, - 1636,6091,1706,8177,8175,1513,8171,8172,8173,5505, - 8155,7174,7164,7167,7171,332,8193,1089,976,1000, - 8155,8155,7866,7872,7869,8420,8418,8426,8422,8423, - 8421,8424,791,8425,8761,8762,8427,8428,8419,8767, - 8768,8769,1468,8493,8494,1103,8411,8415,8409,8416, - 8412,8388,8414,8413,8410,8389,48,1490,615,615, - 8155,8155,8795,8155,615,1,241,7650,7637,7641, - 7646,8155,7654,7553,7547,7550,8555,8165,3051,8556, - 8557,7622,7628,7604,7616,7613,7619,7610,791,7607, - 7634,7631,7601,7598,7625,7595,7592,7589,1468,7562, - 7559,7556,7580,7568,7586,7565,7577,7544,7571,7574, - 7583,7541,332,8155,8164,8155,8155,8155,8155,1089, - 976,1000,8155,7174,7164,7478,7171,8795,8193,1089, - 976,1000,8555,8155,3051,8556,8557,8420,8418,8426, - 8422,8423,8421,8424,791,8425,8761,8762,8427,8428, - 8419,8767,8768,8769,1468,8493,8494,1103,8411,8415, - 8409,8416,8412,8388,8414,8413,8410,8389,595,8155, - 128,8155,127,8155,8155,1089,976,1000,241,7650, - 7637,7875,7646,8155,7654,7553,7547,7550,8555,8155, - 3051,8556,8557,7622,7628,7604,7616,7613,7619,7610, - 791,7607,7634,7631,7601,7598,7625,7595,7592,7589, - 1468,7562,7559,7556,7580,7568,7586,7565,7577,7544, - 7571,7574,7583,7541,1,512,8155,8155,8155,1741, - 48,8155,8155,8155,8626,8155,8794,8620,8624,8163, - 8155,4959,8155,4959,8555,8165,3051,8556,8557,8131, - 8139,8135,601,8036,8143,8039,419,1,2173,1089, - 976,1000,8155,1089,976,1000,8155,8155,2746,191, - 8155,8618,8619,1,8649,8650,8627,4891,4859,4891, - 4859,8155,8164,8155,8155,4827,3223,4827,3223,597, - 8155,8143,8155,8155,8155,8629,8077,8083,8080,8155, - 1775,8794,8651,2044,2083,1314,191,8630,596,8628, - 1224,4258,8155,8162,8155,8086,8092,8089,8155,790, - 8143,8155,8155,8640,8639,8155,8652,8155,8155,8621, - 8622,8645,8646,8643,8644,8623,8625,8647,8648,8155, - 790,8653,8155,8633,8634,8635,8631,8632,8641,8642, - 8637,8636,8638,29,389,389,389,389,7982,389, - 389,389,389,389,389,7982,7982,7982,8155,8155, - 32,390,390,390,390,7979,390,390,390,390, - 390,390,7979,7979,7979,8155,389,389,389,389, - 389,389,389,389,389,389,389,389,389,8155, - 8155,8155,7982,390,390,390,390,390,390,390, - 390,390,390,390,390,390,8155,8155,420,7979, - 8155,8155,8155,8155,7681,1089,976,1000,8155,7982, - 7982,577,588,588,588,588,588,588,588,588, - 588,588,588,8021,8021,8021,7979,7979,578,589, + 1,1,1,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,130,1,1,1,7856,1318,1,730,739, + 8460,5186,5227,8285,1,1,8296,123,1504,1108, + 122,8285,3886,2264,2548,2156,3792,3918,459,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,134,1,1,1,7859,1318,1,730,739, + 8460,4714,4660,8285,1,1,8296,5186,5227,1108, + 5186,5227,3886,2264,2548,2156,3792,3918,8285,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,4003,1,1,1,39,1318,1,730,739, + 8460,8323,8285,3548,1,1,8296,1623,8285,1108, + 8285,8285,3886,2264,2548,2156,3792,3918,8285,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,4183,1,1,1,8285,1318,1,730,739, + 8460,989,8285,8285,1,1,8296,1676,2058,1108, + 2979,8285,3886,2264,2548,2156,3792,3918,450,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,8285,1,1,1,135,1318,1,730,739, + 8460,857,8285,8285,1,1,8296,3361,1360,1108, + 8285,8285,3886,2264,2548,2156,3792,3918,1,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,8285,1,1,1,3888,1318,1,730,739, + 8460,2,572,8285,1,1,8296,3224,3511,1108, + 8285,8285,3886,2264,2548,2156,3792,3918,8285,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,8285,1,1,1,3894,1318,1,730,739, + 8460,8688,559,91,1,1,8296,2492,7990,1108, + 8285,8285,3886,2264,2548,2156,3792,3918,8285,3875, + 852,3841,3636,3830,8285,8090,7288,7288,7288,7288, + 7288,7281,7288,7288,7288,7288,8097,7288,7288,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,8094,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,137,1,1,1,8285,1318,1,730,739, + 8460,3228,39,8285,1,1,8296,8285,8323,1108, + 571,8285,3886,2264,2548,2156,3792,3918,185,3875, + 852,3841,3636,3830,8285,7862,7862,7862,7862,7862, + 7862,7862,7862,7862,7862,7862,7862,7862,7862,3081, + 8623,8624,1172,224,38,7799,7790,7793,7796,1245, + 7407,7401,7404,7280,7787,2740,3005,7862,7862,7862, + 7862,7862,7862,7862,7862,7862,7862,7862,7862,7862, + 6029,7862,7862,7862,7862,7862,7416,7413,7410,7434, + 7422,7440,7419,7431,7398,7425,7428,7437,7395,8285, + 289,7551,7551,7551,7551,7862,284,1141,1089,1095, + 8285,7862,7862,7862,389,3448,7862,7862,7862,7862, + 7862,7862,332,7301,7291,7605,7298,3154,748,1141, + 1089,1095,735,2740,7862,7862,7862,7862,7862,7862, + 7862,7862,7862,7862,7862,7862,7862,7862,7862,7862, + 7862,7862,7862,7862,7862,7862,7862,7862,7862,7862, + 7862,7862,7862,7862,8282,8285,1451,7862,8285,7993, + 7993,7993,7993,7993,7993,7993,7993,7993,7993,7993, + 7993,7993,7993,8285,39,7602,8285,225,2188,2743, + 8323,1141,1089,1095,7455,7449,7452,332,332,7007, + 4740,7993,7993,7993,7993,7993,7993,7993,7993,7993, + 7993,7993,7993,7993,566,7993,7993,7993,7993,7993, + 7464,7461,7458,7482,7470,7488,7467,7479,7446,7473, + 7476,7485,7443,8285,599,7829,7829,7829,7829,7993, + 604,1141,1089,1095,546,7993,7993,7993,8850,1480, + 7993,7993,7993,7993,7993,7993,602,7301,7291,7605, + 7298,3154,748,1141,1089,1095,735,2740,7993,7993, + 7993,7993,7993,7993,7993,7993,7993,7993,7993,7993, + 7993,7993,7993,7993,7993,7993,7993,7993,7993,7993, + 7993,7993,7993,7993,7993,7993,7993,7993,456,4023, + 5923,7993,39,7301,7291,7294,7298,4216,748,1141, + 1089,1095,6263,2740,8285,6171,6194,8550,8548,8556, + 8552,8553,8551,8554,1062,8555,8891,8892,8557,8558, + 8549,8897,8898,8899,6631,8623,8624,1172,8541,8545, + 8539,8546,8542,8518,8544,8543,8540,8519,8304,6148, + 6125,303,6240,6217,8306,8307,8305,8301,8302,8303, + 3852,1780,1962,1863,6609,1898,1760,6518,8685,7802, + 4322,8686,8687,8587,131,1923,39,7301,7291,7605, + 7298,4216,748,1141,1089,1095,6263,2740,3890,6171, + 6194,8550,8548,8556,8552,8553,8551,8554,1062,8555, + 8891,8892,8557,8558,8549,8897,8898,8899,6631,8623, + 8624,1172,8541,8545,8539,8546,8542,8518,8544,8543, + 8540,8519,8304,6148,6125,303,6240,6217,8306,8307, + 8305,8301,8302,8303,3852,1780,1962,1863,6609,1898, + 1760,6518,8685,8285,4322,8686,8687,8587,8285,1923, + 8285,7908,7908,7908,7908,229,7904,7288,7288,7288, + 229,229,7912,229,229,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,47,695,8285,229, + 346,7301,7291,7605,7298,5036,748,1141,1089,1095, + 735,2740,37,332,332,5984,1,7901,1,1, + 1,397,5968,8285,841,739,8699,390,1141,1089, + 1095,223,8285,229,605,136,7101,418,7356,7350, + 7353,1141,1089,1095,8787,8285,8550,8548,8556,8552, + 8553,8551,8554,8285,8555,8891,8892,8557,8558,8549, + 8897,8898,8899,773,7365,7362,7359,7383,7371,7389, + 7368,7380,7347,7374,7377,7386,7344,1580,2256,8321, + 8722,8723,8724,8285,7908,7908,7908,7908,229,7904, + 7288,7288,7288,229,229,8087,229,229,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,3916, + 8285,118,229,310,7322,7310,7314,7318,3154,7307, + 7341,7335,7338,735,2740,8285,7784,7784,3511,1, + 7901,1,1,1,132,5968,8285,841,739,8699, + 8285,7617,7608,7611,7614,634,229,7898,3890,8285, + 417,8285,7895,7889,7892,1,3005,8787,5638,5608, + 8907,8910,8906,8912,8913,8911,8908,7987,8909,8285, + 7301,7291,7605,7298,8285,8323,1,441,8623,8624, + 1172,8541,8545,8539,8546,8542,8518,8544,8543,8540, + 8519,309,35,8722,8723,8724,8285,7288,7288,7288, + 7288,229,7288,7281,7288,7288,229,229,7332,229, + 229,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,11886,1,1,1,14346,1,11136,1, + 1,1,8292,759,8285,229,8285,7322,7310,7314, + 7318,3154,7307,7341,7335,7338,735,2740,3938,7784, + 7784,8285,1,7285,1,1,1,314,5277,4583, + 730,739,8496,602,1141,1089,1095,633,2235,8078, + 7880,7886,7883,219,8075,8069,8072,8285,8285,3090, + 8787,359,8907,8910,8906,8912,8913,8911,8908,8285, + 8909,3768,8285,8299,8927,8926,8300,8722,8723,8724, + 8623,8624,1172,8541,8545,8539,8546,8542,8518,8544, + 8543,8540,8519,442,8285,7301,7291,7605,7298,1372, + 8323,219,8285,7288,7288,7288,7288,229,7288,7281, + 7288,7288,229,229,229,229,229,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,11886,1, + 1,1,14346,1,11136,1,1,1,226,237, + 8285,229,6398,842,8106,7515,7509,7512,299,8299, + 8927,8926,8300,8643,7805,1141,1089,1095,1,7285, + 1,1,1,8285,5277,1,730,739,8496,2935, + 7161,7524,7521,7518,7542,7530,7548,7527,7539,7506, + 7533,7536,7545,7503,8285,8285,8787,8285,8299,8927, + 8926,8300,8285,7322,7310,7314,7318,3154,7307,7341, + 7335,7338,735,2740,8285,7850,7850,8285,8225,8225, + 8225,8225,8225,8225,8225,8225,8225,8225,8225,294, + 8225,8225,37,7865,7865,7865,7865,220,8285,7288, + 7288,7288,7288,229,7288,7281,7288,7288,229,229, + 229,229,229,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,11886,1,1,1,14346,1, + 11136,1,1,1,227,1372,8285,229,8285,8285, + 8285,7566,7560,7563,8285,13792,11704,11879,13791,8321, + 8225,111,157,569,1,7285,1,1,1,1462, + 5277,8285,730,739,8496,2841,2683,7575,7572,7569, + 7593,7581,7599,7578,7590,7557,7584,7587,7596,7554, + 8285,8285,8787,8285,7288,7288,7288,7288,229,7288, + 7281,7288,7288,229,229,8018,229,229,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,11886, + 1,1,1,14346,1,11136,1,1,1,8285, + 7868,998,229,8285,7322,7310,7314,7318,3154,7307, + 7341,7335,7338,735,2740,8285,7850,7850,517,1, + 7285,1,1,1,6421,5277,6444,730,739,8496, + 1,8154,8154,8154,8154,451,8151,7341,7335,7338, + 220,8285,364,332,332,8285,7113,8787,8285,7288, + 7288,7288,7288,229,7288,7281,7288,7288,229,229, + 8018,229,229,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,11886,1,1,1,14346,1, + 11136,1,1,1,8285,8285,1179,229,446,7853, + 7853,7853,7853,312,7853,7853,7853,7853,1415,364, + 8285,7853,7853,2816,1,7285,1,1,1,398, + 5277,319,730,739,8496,389,7814,8285,7301,7291, + 7605,7298,364,748,48,220,8285,735,2740,8285, + 8927,7129,8787,8285,7288,7288,7288,7288,229,7288, + 7281,7288,7288,229,229,8018,229,229,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,11886, + 1,1,1,14346,1,11136,1,1,1,1423, + 1899,8285,229,447,8127,8127,8127,8127,1580,8124, + 8115,8121,8118,371,8285,8927,8130,8130,1,1, + 7285,1,1,1,29,5277,8297,730,739,8496, + 7811,1,7322,7310,7314,7318,5036,7307,1,8285, + 220,735,2740,8100,5864,8285,8285,8787,8285,7288, + 7288,7288,7288,229,7288,7281,7288,7288,229,229, + 229,229,229,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,11886,1,1,1,14346,1, + 11136,1,1,1,590,7808,8296,229,593,1776, + 8296,7632,7626,7629,594,1141,1089,1095,1580,1, + 8103,1141,1089,1095,1,7285,1,1,1,48, + 5277,8297,730,739,8496,8926,1,7641,7638,7635, + 7659,7647,7665,7644,7656,7623,7650,7653,7662,7620, + 8645,8285,8787,8285,7288,7288,7288,7288,229,7288, + 7281,7288,7288,229,229,229,229,229,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,11886, + 1,1,1,14346,1,11136,1,1,1,630, + 8926,8296,229,770,8285,114,8033,8027,8030,7142, + 139,8285,8285,8299,8927,8926,8300,3402,349,1, + 7285,1,1,1,8297,5277,8285,730,739,8496, + 8285,3767,8042,8039,8036,8060,8048,8066,8045,8057, + 8024,8051,8054,8063,8021,8285,8285,8787,8285,7288, + 7288,7288,7288,229,7288,7281,7288,7288,229,229, + 229,229,229,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,11886,1,1,1,14346,1, + 11136,1,1,1,8296,1580,2500,229,92,8160, + 8160,8160,8160,39,8160,8160,8160,8160,6421,8323, + 6444,8160,8160,363,1,7285,1,1,1,397, + 5277,8285,730,739,8496,3270,1141,1089,1095,4016, + 2452,2404,2356,2308,2260,2212,2164,2116,2068,2019, + 2477,8285,8787,8285,7288,7288,7288,7288,229,7288, + 7281,7288,7288,229,229,229,229,229,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,11886, + 1,1,1,14346,1,11136,1,1,1,8285, + 1899,3223,229,95,8249,8249,8249,8249,369,8246, + 8237,8243,8240,548,8834,8742,8252,8252,286,1, + 7285,1,1,1,8285,5277,39,730,739,8496, + 100,3982,8323,1141,1089,1095,8293,8285,346,332, + 332,8285,8285,8722,8723,8724,8835,8787,8285,7288, + 7288,7288,7288,229,7288,7281,7288,7288,229,229, + 229,229,229,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,11886,1,1,1,14346,1, + 11136,1,1,1,1824,8285,8570,229,8285,8299, + 8927,8926,8300,1580,346,346,8285,8204,735,2740, + 346,8292,2059,4254,1,7285,1,1,1,8285, + 5277,8728,730,739,8496,1,7322,7310,7314,7318, + 3154,7307,7341,7335,7338,735,2740,48,7617,7608, + 7611,7614,8787,8285,7288,7288,7288,7288,229,7288, + 7281,7288,7288,229,229,229,229,229,1,1, + 1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,11886, + 1,1,1,14346,1,11136,1,1,1,2591, + 6775,8285,229,113,1,7322,7310,7314,7318,3154, + 7307,7341,7335,7338,735,2740,8285,8285,1372,1, + 7285,1,1,1,8285,5277,8285,730,739,8496, + 8285,7617,7608,7611,7614,8285,8295,8285,1,7301, + 7291,7605,7298,4216,748,1946,8285,8787,6263,2740, + 8289,4622,6194,8550,8548,8556,8552,8553,8551,8554, + 1864,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 5668,8285,8304,8294,1627,376,4276,8285,8306,8307, + 8305,8301,8302,8303,8304,6148,6125,1372,6240,6217, + 8306,8307,8305,8301,8302,8303,3852,1780,1962,1863, + 6609,1898,1760,6518,651,8285,6421,8905,6444,138, + 6398,842,8285,7978,7969,7972,7975,8,39,39, + 8907,8910,8906,8912,8913,8911,8908,8285,8909,8279, + 1,7322,7310,7314,7318,4216,7307,8623,8624,1172, + 6263,2740,8288,6171,6194,7951,7957,7933,7945,7942, + 7948,7939,7915,7936,7963,7960,7930,7927,7954,7924, + 7921,7918,7966,1,7322,7310,7314,7318,3154,7307, + 7341,7335,7338,735,2740,310,8304,6148,6125,8321, + 6240,6217,8306,8307,8305,8301,8302,8303,3852,1780, + 1962,1863,6609,1898,1760,6518,1,7322,7310,7314, + 7318,7304,7307,1923,8279,120,7329,7326,8285,4023, + 39,39,310,4313,518,39,7301,7291,7605,7298, + 4216,748,8285,3448,8285,6263,2740,8289,4787,6194, + 8550,8548,8556,8552,8553,8551,8554,1864,8555,8891, + 8892,8557,8558,8549,8897,8898,8899,5668,8285,8285, + 8285,2745,5638,5608,37,7865,7865,7865,7865,8285, + 8285,8304,6148,6125,7865,6240,6217,8306,8307,8305, + 8301,8302,8303,3852,1780,1962,1863,6609,1898,1760, + 6518,39,7301,7291,7605,7298,4216,748,1923,8285, + 8285,6263,2740,8258,6171,6194,8550,8548,8556,8552, + 8553,8551,8554,1864,8555,8891,8892,8557,8558,8549, + 8897,8898,8899,5668,8285,7301,7291,7605,7298,8288, + 748,2091,8285,292,735,2740,8285,8304,6148,6125, + 7080,6240,6217,8306,8307,8305,8301,8302,8303,3852, + 1780,1962,1863,6609,1898,1760,6518,399,8299,8927, + 8926,8300,8285,3187,1923,8285,141,7301,7291,7605, + 7298,4216,748,7877,8291,8285,6263,2740,8292,6171, + 6194,8550,8548,8556,8552,8553,8551,8554,1864,8555, + 8891,8892,8557,8558,8549,8897,8898,8899,5668,1, + 7322,7310,7314,7318,3154,7307,8285,7128,3144,735, + 2740,13039,8304,6148,6125,2643,6240,6217,8306,8307, + 8305,8301,8302,8303,3852,1780,1962,1863,6609,1898, + 1760,6518,1,7322,7310,7314,7318,7304,7307,1923, + 8285,8290,7329,7326,8295,4379,39,39,39,7301, + 7291,7605,7298,4216,748,1,337,8285,6263,2740, + 7874,6171,6194,8550,8548,8556,8552,8553,8551,8554, + 1864,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 5668,8294,1,7322,7310,7314,7318,5036,7307,8169, + 8166,8163,735,2740,8304,6148,6125,8285,6240,6217, + 8306,8307,8305,8301,8302,8303,3852,1780,1962,1863, + 6609,1898,1760,6518,8285,13792,11704,11879,13791,8285, + 8285,1923,1,7301,7291,7605,7298,4216,748,8285, + 7877,8285,6263,2740,1,6171,6194,8550,8548,8556, + 8552,8553,8551,8554,1864,8555,8891,8892,8557,8558, + 8549,8897,8898,8899,5668,397,8012,3915,8285,1580, + 348,75,1141,1089,1095,2769,7844,8285,8304,6148, + 6125,8285,6240,6217,8306,8307,8305,8301,8302,8303, + 3852,1780,1962,1863,6609,1898,1760,6518,1,7322, + 7310,7314,7318,3154,7307,1923,510,8285,735,2740, + 8015,3534,39,39,554,7301,7291,7605,7298,4216, + 748,7835,7832,8285,6263,2740,139,6171,6194,8550, + 8548,8556,8552,8553,8551,8554,1864,8555,8891,8892, + 8557,8558,8549,8897,8898,8899,5668,1580,7847,8285, + 8299,8927,8926,8300,293,8299,8927,8926,8300,1946, + 8304,6148,6125,112,6240,6217,8306,8307,8305,8301, + 8302,8303,3852,1780,1962,1863,6609,1898,1760,6518, + 36,8201,8192,8195,8198,3188,8285,1923,119,7838, + 8285,6513,7162,8285,39,39,1,7322,7310,7314, + 7318,4216,7307,126,7841,337,6263,2740,428,6171, + 6194,7951,7957,7933,7945,7942,7948,7939,7915,7936, + 7963,7960,7930,7927,7954,7924,7921,7918,7966,292, + 1703,1703,1703,1703,8285,5638,5608,8285,8623,8624, + 1172,3270,8304,6148,6125,4016,6240,6217,8306,8307, + 8305,8301,8302,8303,3852,1780,1962,1863,6609,1898, + 1760,6518,430,332,1899,8285,6421,8285,6444,1923, + 7999,8005,8002,8285,4989,8285,39,39,39,7301, + 7291,7605,7298,4216,748,8285,3018,7871,6263,2740, + 7874,6171,6194,8550,8548,8556,8552,8553,8551,8554, + 1864,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 5668,4925,4893,8285,332,8285,8285,8285,2730,4861, + 4825,1141,1089,1095,8304,6148,6125,8285,6240,6217, + 8306,8307,8305,8301,8302,8303,3852,1780,1962,1863, + 6609,1898,1760,6518,1462,4210,3119,8285,3985,99, + 4051,1923,39,7301,7291,7605,7298,4216,748,8295, + 7877,8285,6263,2740,8289,6171,6194,8550,8548,8556, + 8552,8553,8551,8554,1864,8555,8891,8892,8557,8558, + 8549,8897,8898,8899,5668,396,7500,7500,7500,7500, + 100,284,7491,7497,7494,3188,8294,8285,8304,6148, + 6125,4031,6240,6217,8306,8307,8305,8301,8302,8303, + 3852,1780,1962,1863,6609,1898,1760,6518,39,7301, + 7291,7605,7298,4216,748,4583,8234,8285,6263,2740, + 8289,6171,6194,8550,8548,8556,8552,8553,8551,8554, + 1864,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 5668,595,284,8285,601,8285,8288,73,1141,1089, + 1095,1141,1089,1095,8304,6148,6125,8204,6240,6217, + 8306,8307,8305,8301,8302,8303,3852,1780,1962,1863, + 6609,1898,1760,6518,39,7301,7291,7605,7298,4216, + 748,8285,523,8285,6263,2740,2731,6171,6194,8550, + 8548,8556,8552,8553,8551,8554,1864,8555,8891,8892, + 8557,8558,8549,8897,8898,8899,5668,600,7826,7826, + 7826,7826,8288,604,7817,7823,7820,8285,8255,8285, + 8304,6148,6125,8285,6240,6217,8306,8307,8305,8301, + 8302,8303,3852,1780,1962,1863,6609,1898,1760,6518, + 39,7301,7291,7605,7298,4216,748,1923,8285,8285, + 6263,2740,8285,6171,6194,8550,8548,8556,8552,8553, + 8551,8554,1864,8555,8891,8892,8557,8558,8549,8897, + 8898,8899,5668,8285,604,8285,37,7865,7865,7865, + 7865,8285,8285,1141,1089,1095,8304,6148,6125,332, + 6240,6217,8306,8307,8305,8301,8302,8303,3852,1780, + 1962,1863,6609,1898,1760,6518,2884,8285,39,7301, + 7291,7605,7298,4216,748,8285,4023,2669,6263,2740, + 4612,6171,6194,8550,8548,8556,8552,8553,8551,8554, + 1864,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 5668,8285,534,8321,419,43,7984,7984,7984,7984, + 8285,1141,1089,1095,8304,6148,6125,8285,6240,6217, + 8306,8307,8305,8301,8302,8303,3852,1780,1962,1863, + 6609,1898,1760,6518,39,7301,7291,7605,7298,3298, + 748,1923,8285,8285,6263,2740,8285,6171,6194,8550, + 8548,8556,8552,8553,8551,8554,1864,8555,8891,8892, + 8557,8558,8549,8897,8898,8899,5668,8285,7301,7291, + 7605,7298,7981,748,103,4046,8285,7996,2740,8231, + 8304,6148,6125,8285,6240,6217,8306,8307,8305,8301, + 8302,8303,3852,1780,1962,1863,6609,1898,1760,6518, + 39,7301,7291,7605,7298,5950,748,8285,8285,8285, + 6263,2740,3362,6171,6194,8550,8548,8556,8552,8553, + 8551,8554,1864,8555,8891,8892,8557,8558,8549,8897, + 8898,8899,5668,8285,703,597,2,8285,13596,13596, + 13596,13596,8207,8213,8210,8285,8304,6148,6125,8285, + 6240,6217,8306,8307,8305,8301,8302,8303,3852,1780, + 1962,1863,6609,1898,1760,6518,39,7301,7291,7605, + 7298,6705,748,279,8285,8285,6263,2740,8276,6171, + 6194,8550,8548,8556,8552,8553,8551,8554,1864,8555, + 8891,8892,8557,8558,8549,8897,8898,8899,5668,8285, + 7301,7291,7605,7298,8321,748,103,37,8285,7996, + 2740,8231,8304,6148,6125,8285,6240,6217,8306,8307, + 8305,8301,8302,8303,3852,1780,1962,1863,6609,1898, + 1760,6518,39,7301,7291,7605,7298,6759,748,8285, + 8285,8285,6263,2740,3990,6171,6194,8550,8548,8556, + 8552,8553,8551,8554,1864,8555,8891,8892,8557,8558, + 8549,8897,8898,8899,5668,8285,1091,45,8142,8142, + 8142,8142,37,7865,7865,7865,7865,8285,8304,6148, + 6125,8285,6240,6217,8306,8307,8305,8301,8302,8303, + 3852,1780,1962,1863,6609,1898,1760,6518,39,7301, + 7291,7605,7298,4216,748,8285,8285,8285,6263,2740, + 8285,6171,6194,8550,8548,8556,8552,8553,8551,8554, + 1864,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 5668,48,48,596,8139,8285,8285,8300,8299,1799, + 8216,8222,8219,8285,8304,6148,6125,8285,6240,6217, + 8306,8307,8305,8301,8302,8303,3852,1780,1962,1863, + 6609,1898,1760,6518,39,7301,7291,7605,7298,6761, + 748,8285,8285,8285,6263,2740,8285,6171,6194,8550, + 8548,8556,8552,8553,8551,8554,1864,8555,8891,8892, + 8557,8558,8549,8897,8898,8899,5668,8285,8188,8176, + 8180,8184,8300,8299,8285,8285,8285,8285,8285,8285, + 8304,6148,6125,8285,6240,6217,8306,8307,8305,8301, + 8302,8303,3852,1780,1962,1863,6609,1898,1760,6518, + 39,7301,7291,7605,7298,4216,748,8285,8285,8285, + 6263,2740,8285,6171,6194,8550,8548,8556,8552,8553, + 8551,8554,1864,8555,8891,8892,8557,8558,8549,8897, + 8898,8899,5668,8285,8321,8285,8285,1,1677,8285, + 8285,508,3982,8285,8285,8291,8304,6148,6125,615, + 6240,6217,8306,8307,8305,8301,8302,8303,3852,1780, + 1962,1863,6609,1898,1760,6518,8285,7301,7291,7294, + 7298,420,8323,1141,1089,1095,8285,8285,1141,1089, + 1095,8550,8548,8556,8552,8553,8551,8554,790,8555, + 8891,8892,8557,8558,8549,8897,8898,8899,3486,8623, + 8624,1172,8541,8545,8539,8546,8542,8518,8544,8543, + 8540,8519,8290,8285,1580,615,615,8285,4117,8285, + 8285,615,241,7777,7764,7768,7773,7176,7781,7680, + 7674,7677,8685,8285,4322,8686,8687,7749,7755,7731, + 7743,7740,7746,7737,790,7734,7761,7758,7728,7725, + 7752,7722,7719,7716,3486,7689,7686,7683,7707,7695, + 7713,7692,7704,7671,7698,7701,7710,7668,8285,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,8285,7301, + 7291,7605,7298,8285,8323,1141,1089,1095,8685,8285, + 4322,8686,8687,8550,8548,8556,8552,8553,8551,8554, + 790,8555,8891,8892,8557,8558,8549,8897,8898,8899, + 3486,8623,8624,1172,8541,8545,8539,8546,8542,8518, + 8544,8543,8540,8519,128,8285,127,8285,8285,8285, + 8285,8285,8285,8285,241,7777,7764,8008,7773,8285, + 7781,7680,7674,7677,8685,8291,4322,8686,8687,7749, + 7755,7731,7743,7740,7746,7737,790,7734,7761,7758, + 7728,7725,7752,7722,7719,7716,3486,7689,7686,7683, + 7707,7695,7713,7692,7704,7671,7698,7701,7710,7668, + 1,8285,8285,1,8285,2010,1,8285,8285,8285, + 8756,3982,8285,8750,8754,4989,8293,4989,8100,8285, + 8685,8291,4322,8686,8687,8012,8285,8285,8133,8285, + 8136,8291,8290,8261,8269,8265,1068,8285,8273,8295, + 8285,8285,8285,8285,407,1,8285,8748,8749,8291, + 8779,8780,4925,4893,4925,4893,8081,8295,8757,422, + 4861,4825,4861,4825,8285,8285,8285,8285,3055,8015, + 3534,8759,8285,8285,8285,8273,8294,899,8781,8291, + 2255,2300,1321,1580,8760,8103,8758,687,8290,8285, + 8285,8292,8285,8084,8294,8285,8285,1875,8290,8285, + 8770,8769,8285,8782,8273,3925,8751,8752,8775,8776, + 8773,8774,8753,8755,8777,8778,8290,8285,8783,8285, + 8763,8764,8765,8761,8762,8771,8772,8767,8766,8768, + 29,389,389,389,389,8112,389,389,389,389, + 389,389,8112,8112,8112,2936,8290,32,390,390, + 390,390,8109,390,390,390,390,390,390,8109, + 8109,8109,8285,389,389,389,389,389,389,389, + 389,389,389,389,389,389,1,8285,2235,8112, + 390,390,390,390,390,390,390,390,390,390, + 390,390,390,1,1,8285,8109,8285,8285,8285, + 8285,7808,8285,2793,8285,191,364,8112,512,8112, + 8285,1,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,806,161,8109,8291,8109,577,588,588, + 588,588,588,588,588,588,588,588,588,8157, + 8157,8157,191,806,578,589,589,589,589,589, + 589,589,589,589,589,589,8228,8228,8228,8285, + 588,588,588,588,588,588,588,588,588,588, + 588,588,588,364,8285,8285,8157,589,589,589, 589,589,589,589,589,589,589,589,589,589, - 8098,8098,8098,8155,588,588,588,588,588,588, - 588,588,588,588,588,588,588,8155,8155,8155, - 8021,589,589,589,589,589,589,589,589,589, - 589,589,589,589,1,8155,8155,8098,8155,1, - 7195,7183,7187,7191,4991,7180,364,588,8021,731, - 4343,368,48,8155,1,48,1,1,8170,3627, - 8155,8169,8155,8155,589,8098,342,8155,530,8161, - 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155, - 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155, - 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155, - 8155,8155,8155,8155,8155,8155,8155,8155,8155,8155, - 8155,364,8155,8155,8155,1490,368,368,8155,8155, - 8155,8155,368,8170,1702,8155,8169,8155,8155,8155, - 1490,342,342,530,8160,364,8155,342,8155,8155, - 368 + 161,7209,8290,8228,1231,8285,364,1,7322,7310, + 7314,7318,5036,7307,588,1,8157,735,2740,368, + 1,8285,1,1,8285,3982,8285,163,8285,8285, + 8285,589,342,8228,530,8291,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,8285,8285,8285,8285,8285,8285,8285,8285, + 8285,8285,8285,8285,1580,368,368,8285,8285,8285, + 8285,368,8285,1728,163,8285,8285,1580,342,342, + 8285,530,8290,8285,342,8285,8285,8285,8285,368 }; }; public final static char termAction[] = TermAction.termAction; @@ -2725,72 +2772,72 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface Asb { public final static char asb[] = {0, - 1471,1,175,1460,63,1181,1512,577,577,577, - 1413,60,784,1470,175,183,1133,1352,649,99, - 1352,1352,1352,75,115,251,115,781,115,677, - 115,115,183,184,115,922,1299,328,1512,175, - 642,115,115,1141,184,115,184,1352,254,523, - 523,1039,523,3,251,397,321,397,767,866, - 178,387,387,175,851,184,1134,771,962,1350, - 514,1411,518,783,572,781,247,183,677,579, - 184,184,573,1223,922,922,922,922,922,922, - 922,922,922,922,1068,644,922,1352,254,254, - 254,254,183,1352,115,662,662,768,767,175, - 175,184,1022,515,579,579,115,1181,384,515, - 115,115,254,115,184,52,1252,534,523,523, - 522,522,251,183,175,921,1088,175,115,184, - 257,851,851,184,1134,669,651,668,1528,189, - 514,1349,515,518,184,396,1354,657,573,251, - 688,184,579,573,184,48,1068,1068,1068,1068, - 515,515,515,882,1551,1551,901,1362,1180,52, - 115,901,1181,1181,1181,1181,184,465,66,66, - 465,921,662,251,183,48,115,115,579,579, - 178,93,384,384,1134,1252,534,522,522,522, - 184,515,921,693,251,725,730,727,734,732, - 741,739,743,742,744,455,745,175,1523,918, - 1295,384,261,758,851,768,768,771,768,310, - 1411,1528,1528,1564,1563,513,693,184,518,453, - 784,254,1132,1051,518,396,658,662,396,662, - 573,688,688,184,1039,1038,184,1223,184,515, - 515,515,515,883,178,1248,1238,1237,666,1307, - 121,121,183,644,922,384,1180,921,515,515, - 1039,1039,1039,1039,573,515,1133,1135,1133,515, - 384,251,673,184,1352,1526,115,1039,1039,115, - 515,1242,1225,1241,1038,254,313,313,693,693, - 522,184,693,1088,922,922,922,922,922,922, - 922,922,922,922,922,922,922,922,922,922, - 922,922,922,922,922,921,921,921,921,921, - 921,921,921,921,921,921,403,922,1295,384, - 333,256,187,515,189,515,464,515,515,52, - 1053,662,662,662,662,184,688,692,776,692, - 901,48,922,882,453,922,453,768,881,1352, - 1352,1352,883,1352,184,972,768,768,184,251, - 1551,515,1250,1252,921,184,52,125,1068,922, - 1181,115,115,515,1352,1352,1352,1352,184,184, - 184,1135,52,839,183,184,465,115,115,841, - 921,1239,1239,1246,178,794,534,523,534,1037, - 1037,693,768,1088,727,727,725,725,725,732, - 732,732,732,732,732,730,730,739,734,734, - 742,741,743,453,453,744,921,921,384,261, - 515,1564,1134,767,922,453,852,860,764,1053, - 662,662,1041,692,693,922,184,872,883,453, - 1025,883,901,901,899,1028,901,768,768,858, - 839,515,1252,573,1134,515,515,115,178,921, - 921,921,921,1352,1352,1223,184,1134,839,515, - 115,696,841,921,921,1250,1225,534,1181,1181, - 692,921,921,384,384,464,768,1053,922,922, - 764,764,1053,1053,673,1218,1042,184,693,883, - 922,883,515,175,901,515,899,1512,1352,515, - 839,1030,515,184,125,115,115,115,921,115, - 515,515,515,515,465,465,1139,115,1223,873, - 1352,115,844,1038,195,200,764,764,1041,184, - 183,183,184,883,858,883,768,1512,921,883, - 880,1030,1030,158,115,465,922,384,515,515, - 1139,794,844,837,195,195,184,184,184,921, - 881,465,768,515,1033,1030,115,515,384,515, - 515,172,1352,313,184,184,883,515,768,1033, - 1033,251,251,174,1253,1037,883,1033,1564,1133, - 1181 + 1429,1,1536,144,1418,19,736,1471,332,332, + 332,1370,27,1352,1428,1091,144,152,931,1536, + 546,68,1536,1536,1536,44,84,267,84,1349, + 84,1209,84,84,152,153,84,1092,1294,30, + 1471,144,539,84,84,696,153,84,153,1536, + 270,277,277,952,277,158,267,13,334,13, + 1576,1091,472,1035,147,3,3,144,803,153, + 932,22,1132,789,1345,609,272,1351,327,1349, + 263,152,1209,476,153,153,328,778,1092,1092, + 1092,1092,1092,1092,1092,1092,1092,1092,866,541, + 1092,1536,270,270,270,270,152,1536,84,817, + 817,473,472,144,144,153,1004,1346,476,476, + 84,736,398,1346,84,84,270,84,153,208, + 1247,289,277,277,276,276,267,152,603,689, + 866,430,435,432,439,437,446,444,448,447, + 449,548,450,144,1091,886,144,84,153,620, + 803,803,153,932,692,787,691,1538,341,1345, + 1344,1346,272,153,12,1362,812,328,267,676, + 153,476,328,153,204,866,866,866,1346,1346, + 1346,1051,1561,1561,1071,1487,735,208,84,1071, + 736,736,736,736,153,558,35,35,558,1091, + 817,267,152,204,84,84,476,476,147,62, + 398,398,932,1247,289,276,276,276,153,1346, + 1091,1346,1092,1092,1092,1092,1092,1092,1092,1092, + 1092,1092,1092,1092,1092,1092,1092,1092,1092,1092, + 1092,1092,1092,1091,1091,1091,1091,1091,1091,1091, + 1091,1091,1091,1091,1147,1092,1346,681,267,144, + 1482,1088,1290,398,624,463,803,473,473,22, + 473,673,609,1538,1538,1574,1573,684,681,153, + 272,1197,1352,270,930,1012,272,12,813,817, + 12,817,328,676,676,153,952,951,153,778, + 153,1346,1346,1346,1052,147,1243,1233,1232,1302, + 90,90,152,541,1092,398,735,1091,1346,1346, + 952,952,952,952,328,1346,931,933,931,1346, + 398,267,939,153,1536,1485,84,952,952,84, + 1346,1237,1220,1236,951,270,611,611,681,681, + 276,153,473,1092,432,432,430,430,430,437, + 437,437,437,437,437,435,435,444,439,439, + 447,446,448,1197,1197,449,681,886,1290,398, + 347,619,156,1346,341,1346,557,1346,1346,208, + 1014,817,817,817,817,153,676,680,1007,680, + 1071,204,1051,1197,1092,1197,473,1050,1536,1536, + 1536,1052,1536,153,954,473,473,153,267,1561, + 1346,1245,1247,153,208,94,866,1092,736,84, + 84,1346,1536,1536,1536,1536,153,153,153,933, + 208,785,152,153,558,84,84,793,1091,1234, + 1234,1241,147,821,289,277,289,950,950,681, + 473,1091,1091,886,1091,1091,398,624,1346,1574, + 932,472,1092,1197,804,1029,469,1014,817,817, + 1199,680,681,1092,153,1041,1052,1197,1142,1052, + 1071,1071,1069,1145,1071,473,473,810,785,1346, + 1247,328,932,1346,1346,84,147,1091,1091,1091, + 1091,1536,1536,778,153,932,785,1346,84,401, + 793,1091,1091,1245,1220,289,736,736,680,398, + 398,557,473,1014,1092,1092,469,469,1014,1014, + 939,773,1200,153,681,1052,1092,1052,1346,144, + 1071,1346,1069,1471,1536,1346,785,943,1346,153, + 94,84,84,84,1091,84,1346,1346,1346,1346, + 558,558,937,84,778,1042,1536,84,796,951, + 780,216,469,469,1199,153,152,152,153,1052, + 810,1052,473,1471,1091,1052,1049,943,943,127, + 84,558,1092,398,1346,1346,937,821,796,864, + 780,780,153,153,153,1091,1050,558,473,1346, + 946,943,84,1346,398,1346,1346,141,1536,611, + 153,153,1052,1346,473,946,946,267,267,143, + 1248,950,1052,946,1574,931,736 }; }; public final static char asb[] = Asb.asb; @@ -2798,163 +2845,164 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface Asr { public final static char asr[] = {0, - 134,0,24,25,35,38,15,16,66,33, - 26,68,39,93,40,17,41,42,18,19, - 43,72,44,20,21,36,69,45,22,70, - 23,74,37,27,34,28,5,14,6,49, - 32,29,30,31,75,81,12,13,8,9, - 7,11,10,67,1,4,3,2,0,46, - 67,0,5,34,0,11,6,67,10,1, - 4,3,2,0,53,79,54,55,80,56, - 57,58,59,73,60,61,62,63,64,46, - 52,65,32,22,68,66,69,70,16,28, + 135,0,85,5,84,102,86,78,79,49, + 77,83,12,82,8,9,7,0,5,34, + 0,12,83,79,46,0,46,67,0,12, + 83,82,85,0,11,6,67,10,1,4, + 3,2,0,59,80,60,52,81,61,62, + 63,53,73,54,64,55,56,57,46,58, + 65,32,22,68,66,69,70,16,28,15, + 20,18,19,21,23,17,26,27,29,30, + 31,24,25,85,83,102,104,87,82,133, + 118,50,51,105,103,47,48,106,107,100, + 101,71,84,108,109,110,111,112,113,114, + 115,119,86,120,121,122,123,124,125,126, + 127,128,129,78,116,117,35,38,33,39, + 40,41,42,43,44,36,45,37,34,49, + 12,79,77,11,5,10,14,13,8,9, + 7,6,4,3,2,1,0,24,25,35, + 38,15,16,66,33,26,68,39,94,40, + 17,41,42,18,19,43,72,44,20,21, + 36,69,45,22,70,23,74,37,27,34, + 28,5,14,6,49,32,29,30,31,75, + 76,82,12,13,8,9,7,11,10,67, + 1,4,3,2,0,80,81,73,50,51, + 14,13,47,48,10,58,62,65,32,5, + 6,11,55,56,57,46,54,52,53,24, + 25,16,28,15,20,18,19,21,23,17, + 26,27,29,30,31,22,60,63,61,59, + 64,87,1,4,3,2,82,12,0,71, + 0,130,131,132,83,87,11,12,5,14, + 13,10,49,76,72,94,74,75,24,25, + 35,7,38,15,16,66,33,26,68,39, + 40,17,41,42,18,19,43,44,20,21, + 36,69,45,22,70,23,37,27,34,28, + 32,8,9,29,30,31,6,1,4,3, + 2,67,0,7,12,82,8,9,86,0, + 12,78,79,1,33,0,80,81,5,22, + 60,63,61,59,64,16,28,15,20,18, + 19,21,23,17,26,27,29,30,31,24, + 25,55,56,57,46,54,52,53,10,11, + 6,50,51,14,13,47,48,58,62,65, + 32,73,36,1,4,3,2,104,12,0, + 38,39,40,41,42,43,11,44,36,73, + 85,45,37,1,4,77,5,133,118,50, + 51,10,6,82,3,2,33,34,35,105, + 103,13,106,107,47,48,101,100,71,108, + 109,116,117,110,111,14,112,113,114,84, + 79,86,120,121,122,123,124,125,126,127, + 128,129,83,102,104,87,115,119,8,9, + 7,78,49,12,0,24,25,35,7,38, + 15,16,66,33,59,26,60,68,39,40, + 52,17,41,42,18,19,43,44,61,20, + 21,62,36,63,69,53,73,54,45,64, + 22,70,23,37,27,34,28,55,56,57, + 46,5,50,51,14,13,47,48,58,84, + 6,32,65,8,9,29,30,31,11,10, + 1,4,2,81,80,3,0,7,84,83, + 102,104,87,49,8,9,78,12,79,24, + 25,15,16,59,80,26,60,17,18,19, + 81,11,61,20,21,62,63,73,64,22, + 23,27,28,1,4,5,50,51,14,13, + 47,48,10,58,6,32,65,3,2,29, + 30,31,55,56,57,54,52,53,46,0, + 84,86,78,1,4,3,2,0,73,35, + 33,34,36,80,81,104,12,50,51,14, + 47,48,10,58,62,65,32,5,6,11, + 55,56,57,46,54,52,53,24,25,16, + 28,15,20,18,19,21,23,17,26,27, + 29,30,31,22,60,63,61,59,64,4, + 3,2,1,13,0,1,4,3,2,78, + 12,87,0,79,12,1,46,0,104,49, + 78,79,12,83,0,81,80,47,48,13, + 106,107,112,14,113,10,58,86,71,84, + 123,124,120,121,122,128,127,129,101,100, + 125,126,110,111,108,109,114,115,50,51, + 78,103,118,77,5,32,22,68,66,69, + 70,24,25,16,28,15,20,18,19,21, + 23,17,26,27,29,30,31,38,44,36, + 40,43,42,39,33,34,35,7,9,8, + 41,45,1,4,3,2,37,6,0,12, + 78,87,49,0,134,0,83,78,79,12, + 5,0,35,33,34,73,85,84,83,102, + 79,82,5,7,12,78,49,8,9,86, + 0,6,8,9,7,71,12,83,82,0, + 24,25,35,7,38,15,16,33,26,68, + 39,40,17,41,42,18,19,43,44,20, + 21,36,69,45,22,70,23,37,27,34, + 28,1,4,6,32,8,9,3,2,29, + 30,31,102,66,0,35,7,38,66,33, + 68,39,40,41,42,43,44,36,69,45, + 70,37,34,8,9,80,81,73,50,51, + 14,13,47,48,58,62,65,32,5,55, + 56,57,46,54,52,53,24,25,16,28, 15,20,18,19,21,23,17,26,27,29, - 30,31,24,25,84,82,101,103,86,81, - 132,117,50,51,104,102,47,48,105,106, - 99,100,71,83,107,108,109,110,111,112, - 113,114,118,85,119,120,121,122,123,124, - 125,126,127,128,78,115,116,35,38,33, - 39,40,41,42,43,44,36,45,37,34, - 49,12,77,76,11,5,10,14,13,8, - 9,7,6,4,3,2,1,0,12,78, - 77,1,33,0,12,78,86,49,0,79, - 80,73,50,51,14,13,47,48,10,52, - 57,65,32,5,6,11,62,63,64,46, - 60,55,59,24,25,16,28,15,20,18, - 19,21,23,17,26,27,29,30,31,22, - 54,58,56,53,61,86,1,4,3,2, - 81,12,0,71,0,73,35,33,34,36, - 79,80,103,12,50,51,14,47,48,10, - 52,57,65,32,5,6,11,62,63,64, - 46,60,55,59,24,25,16,28,15,20, - 18,19,21,23,17,26,27,29,30,31, - 22,54,58,56,53,61,4,3,2,1, - 13,0,83,85,78,1,4,3,2,0, - 7,12,81,8,9,85,0,12,82,81, - 84,0,79,80,5,22,54,58,56,53, - 61,16,28,15,20,18,19,21,23,17, - 26,27,29,30,31,24,25,62,63,64, - 46,60,55,59,10,11,6,50,51,14, - 13,47,48,52,57,65,32,73,36,1, - 4,3,2,103,12,0,84,5,83,101, - 85,78,77,49,76,82,12,81,8,9, - 7,0,24,25,15,16,53,79,26,54, - 55,17,18,19,80,11,56,20,21,57, - 58,59,73,60,61,22,23,27,28,62, - 63,64,46,1,4,5,50,51,14,13, - 47,48,10,52,6,32,65,3,2,29, - 30,31,82,0,7,83,82,101,103,86, - 49,8,9,78,24,25,15,16,53,79, - 26,54,55,17,18,19,80,11,56,20, - 21,57,58,59,73,60,61,22,23,27, - 28,62,63,64,4,5,50,51,14,13, - 47,48,10,52,6,32,65,3,2,29, - 30,31,46,1,77,12,0,129,130,131, - 82,86,11,12,5,14,13,10,49,75, - 72,93,74,24,25,35,7,38,15,16, - 66,33,26,68,39,40,17,41,42,18, - 19,43,44,20,21,36,69,45,22,70, - 23,37,27,34,28,32,8,9,29,30, - 31,6,1,4,3,2,67,0,24,25, - 35,7,38,15,16,66,33,53,26,54, - 68,39,40,55,17,41,42,18,19,43, - 44,56,20,21,57,36,58,69,59,73, - 60,45,61,22,70,23,37,27,34,28, - 62,63,64,46,5,50,51,14,13,47, - 48,52,83,6,32,65,8,9,29,30, - 31,11,10,1,4,2,80,79,3,0, - 12,82,78,77,5,0,6,8,9,7, - 71,12,82,81,0,103,49,78,77,12, - 82,0,12,81,78,0,6,12,81,8, - 9,7,1,4,3,2,0,1,4,3, - 2,78,12,86,0,38,39,40,41,42, - 43,11,44,36,73,84,45,37,1,4, - 76,5,132,117,50,51,10,6,81,3, - 2,33,34,35,104,102,13,105,106,47, - 48,100,99,71,107,108,115,116,109,110, - 14,111,112,113,83,77,85,119,120,121, - 122,123,124,125,126,127,128,82,101,103, - 86,114,118,8,9,7,78,49,12,0, - 12,82,77,46,0,12,78,86,85,0, - 6,67,82,12,81,8,9,7,1,4, - 3,2,0,24,25,35,7,38,15,16, - 33,26,68,39,40,17,41,42,18,19, - 43,44,20,21,36,69,45,22,70,23, - 37,27,34,28,1,4,6,32,8,9, - 3,2,29,30,31,101,66,0,133,0, - 35,33,34,73,84,83,82,101,77,81, - 5,7,12,78,49,8,9,85,0,82, - 7,76,8,9,71,12,78,49,85,5, - 0,77,93,129,130,131,67,82,134,133, - 135,86,75,84,74,72,88,90,97,95, - 87,92,94,96,98,81,89,91,49,12, + 30,31,60,63,61,59,64,82,12,22, + 6,11,1,4,3,2,10,0,12,82, + 78,0,35,33,34,73,12,102,79,86, + 78,84,0,24,25,15,16,59,80,26, + 60,52,17,18,19,81,11,61,20,21, + 62,63,53,73,54,64,22,23,27,28, + 55,56,57,46,1,4,5,50,51,47, + 48,10,58,6,32,65,3,2,29,30, + 31,49,12,13,14,0,12,78,87,86, + 0,49,12,5,11,10,83,14,13,6, + 1,4,3,2,8,9,7,0,83,7, + 77,8,9,71,12,78,49,86,5,0, + 79,94,130,131,132,67,83,135,134,136, + 87,76,85,75,74,72,89,91,98,96, + 88,93,95,97,99,82,90,92,49,12, 68,66,69,70,38,44,36,40,43,42, 37,39,7,9,8,41,45,35,33,34, - 73,79,80,22,54,58,56,53,61,28, - 26,27,29,30,31,24,25,62,63,64, - 46,60,55,59,10,11,6,5,50,51, - 14,13,47,48,52,57,65,32,1,4, + 73,80,81,22,60,63,61,59,64,28, + 26,27,29,30,31,24,25,55,56,57, + 46,54,52,53,10,11,6,5,50,51, + 14,13,47,48,58,62,65,32,1,4, 3,2,17,15,21,23,16,20,18,19, - 0,24,25,15,16,53,79,26,54,55, - 17,18,19,80,11,56,20,21,57,58, - 59,73,60,61,22,23,27,28,62,63, - 64,46,1,4,5,50,51,47,48,10, - 52,6,32,65,3,2,29,30,31,49, - 12,13,14,0,82,101,0,87,0,35, - 33,34,73,12,101,77,85,78,83,0, - 37,1,4,6,3,2,129,130,131,0, - 49,12,5,11,10,82,14,13,6,1, - 4,3,2,8,9,7,0,35,7,38, - 66,33,68,39,40,41,42,43,44,36, - 69,45,70,37,34,8,9,79,80,73, - 50,51,14,13,47,48,52,57,65,32, - 5,62,63,64,46,60,55,59,24,25, + 0,83,102,0,88,0,24,25,15,16, + 59,80,26,60,52,17,18,19,81,11, + 61,20,21,62,63,53,73,54,64,22, + 23,27,28,55,56,57,46,1,4,5, + 50,51,14,13,47,48,10,58,6,32, + 65,3,2,29,30,31,83,0,37,1, + 4,6,3,2,130,131,132,0,6,12, + 82,8,9,7,1,4,3,2,0,7, + 14,13,8,9,11,10,6,1,4,3, + 2,5,77,84,86,78,12,79,102,0, + 10,11,5,77,13,14,102,24,25,7, + 38,15,16,66,26,68,39,40,17,41, + 42,18,19,43,44,20,21,36,69,45, + 22,70,23,37,27,28,1,4,6,32, + 8,9,3,2,29,30,31,79,12,33, + 34,35,0,84,78,32,22,68,66,69, + 70,24,25,35,7,38,15,16,33,26, + 39,40,17,41,42,18,19,43,11,44, + 20,21,36,45,23,37,27,34,28,4, + 77,14,13,10,6,49,8,9,3,2, + 29,30,31,5,1,79,12,0,6,67, + 83,12,82,8,9,7,1,4,3,2, + 0,6,12,83,82,8,9,7,0,33, + 26,68,39,17,41,18,19,43,44,20, + 21,69,45,70,23,37,27,34,28,66, + 16,15,32,38,35,25,24,29,30,31, + 12,5,14,13,49,75,74,94,40,36, + 42,76,71,8,9,7,67,11,1,4, + 10,6,3,2,22,72,0,87,24,25, + 35,38,15,16,66,33,26,68,39,17, + 41,18,19,43,44,20,21,69,45,22, + 70,23,37,27,34,28,32,29,30,31, + 135,76,72,40,36,42,94,74,75,67, + 12,14,49,10,11,1,4,3,2,6, + 5,8,9,7,13,0,80,81,50,51, + 14,13,47,48,10,58,62,65,32,6, + 11,55,56,57,46,54,52,53,24,25, 16,28,15,20,18,19,21,23,17,26, - 27,29,30,31,54,58,56,53,61,81, - 12,22,6,11,1,4,3,2,10,0, - 80,79,47,48,13,105,106,111,14,112, - 10,52,85,71,83,122,123,119,120,121, - 127,126,128,100,99,124,125,109,110,107, - 108,113,114,50,51,78,102,117,76,5, - 32,22,68,66,69,70,24,25,16,28, - 15,20,18,19,21,23,17,26,27,29, - 30,31,38,44,36,40,43,42,39,33, - 34,35,7,9,8,41,45,1,4,3, - 2,37,6,0,7,14,13,8,9,11, - 10,6,1,4,3,2,5,76,83,85, - 78,12,77,101,0,10,11,5,76,13, - 14,101,24,25,7,38,15,16,66,26, - 68,39,40,17,41,42,18,19,43,44, - 20,21,36,69,45,22,70,23,37,27, - 28,1,4,6,32,8,9,3,2,29, - 30,31,77,12,33,34,35,0,83,78, - 32,22,68,66,69,70,24,25,35,7, - 38,15,16,33,26,39,40,17,41,42, - 18,19,43,11,44,20,21,36,45,23, - 37,27,34,28,4,76,14,13,10,6, - 49,8,9,3,2,29,30,31,1,77, - 12,5,0,6,12,82,81,8,9,7, - 0,79,80,50,51,14,13,47,48,10, - 52,57,65,32,5,6,11,62,63,64, - 60,55,59,24,25,16,28,15,20,18, - 19,21,23,17,26,27,29,30,31,22, - 54,58,56,53,61,76,1,4,3,2, - 46,0,33,26,68,39,17,41,18,19, - 43,44,20,21,69,45,70,23,37,27, - 34,28,66,16,15,32,38,35,25,24, - 29,30,31,12,5,14,13,49,74,93, - 40,36,42,75,71,8,9,7,67,11, - 1,4,10,6,3,2,22,72,0,86, - 24,25,35,38,15,16,66,33,26,68, - 39,17,41,18,19,43,44,20,21,69, - 45,22,70,23,37,27,34,28,32,29, - 30,31,134,75,72,40,36,42,93,74, - 67,12,14,49,10,11,1,4,3,2, - 6,5,8,9,7,13,0,11,10,17, + 27,29,30,31,22,60,63,61,59,64, + 77,1,4,3,2,5,0,11,10,17, 15,21,23,16,20,18,19,38,44,36, 40,43,42,37,39,33,34,35,41,45, - 83,7,1,4,14,13,6,8,9,3, - 2,76,5,77,12,78,0 + 84,7,1,4,14,13,6,8,9,3, + 2,77,5,79,12,78,0 }; }; public final static char asr[] = Asr.asr; @@ -2962,72 +3010,72 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface Nasb { public final static char nasb[] = {0, - 253,13,45,36,34,5,218,13,13,13, - 290,13,25,290,147,251,251,13,13,266, - 13,13,13,13,267,196,267,153,267,153, - 267,13,11,198,267,74,259,45,146,246, - 182,13,13,239,287,13,198,13,13,290, - 290,13,290,195,196,153,13,170,203,32, - 305,110,110,164,153,236,236,155,14,325, - 119,13,45,157,251,170,55,251,170,45, - 198,12,13,13,74,74,74,74,74,74, - 74,74,74,74,229,198,283,13,13,13, - 13,13,251,13,13,45,23,203,13,178, - 164,198,13,325,45,45,58,5,92,325, - 13,13,13,13,12,108,45,45,290,290, - 45,45,196,251,147,141,72,178,170,198, - 86,153,170,270,182,325,13,13,309,63, - 122,13,325,296,158,153,153,13,236,196, - 45,236,38,116,158,172,229,229,229,229, - 325,325,325,16,187,187,1,74,47,108, - 13,231,232,232,232,232,198,103,49,49, - 103,210,23,161,28,311,153,153,38,38, - 305,259,92,92,182,274,274,253,253,45, - 236,325,74,45,196,13,13,13,13,13, - 13,13,13,13,13,74,13,165,153,40, - 19,92,87,13,170,203,203,155,203,13, - 155,267,309,325,13,325,17,198,203,13, - 269,13,36,217,296,153,153,45,170,45, - 116,45,288,12,13,13,158,13,12,325, - 325,325,325,191,305,186,110,110,13,13, - 13,13,11,198,74,92,233,141,325,325, - 13,13,13,13,107,325,181,198,181,325, - 92,161,13,236,13,13,45,13,13,279, - 325,13,244,13,13,13,82,82,17,17, - 253,270,17,45,74,74,74,74,74,74, - 74,74,74,74,74,74,74,74,74,74, - 74,74,74,74,74,74,74,74,74,74, - 74,74,74,74,74,74,112,74,19,92, - 87,80,13,325,63,325,74,325,325,108, - 146,45,45,61,61,158,288,97,13,13, - 38,172,74,205,13,131,13,203,13,13, - 13,13,206,13,288,201,203,203,288,94, - 277,325,303,45,74,198,108,13,229,74, - 232,45,128,325,13,13,13,13,158,12, - 198,138,108,45,28,12,103,153,80,45, - 74,13,13,243,305,274,274,290,45,13, - 13,17,203,72,13,13,13,13,13,13, + 255,13,13,48,20,18,5,207,13,13, + 13,289,13,271,289,181,160,253,253,13, + 13,268,13,13,13,13,269,194,269,166, + 269,166,269,13,11,156,269,88,261,48, + 159,248,202,13,13,144,310,13,156,13, + 13,289,289,13,289,193,194,166,13,287, + 13,88,186,100,241,16,16,281,166,274, + 274,24,22,222,113,13,48,277,253,287, + 67,253,287,48,156,12,13,13,88,88, + 88,88,88,88,88,88,88,88,170,156, + 306,13,13,13,13,13,253,13,13,48, + 65,186,13,198,281,156,13,222,48,48, + 38,5,111,222,13,13,13,13,12,78, + 48,48,289,289,48,48,194,253,127,13, + 170,13,13,13,13,13,13,13,13,13, + 13,88,13,160,97,86,198,287,156,105, + 166,287,301,202,222,13,13,313,119,62, + 13,222,228,278,166,166,13,274,194,48, + 274,41,80,278,50,170,170,170,222,222, + 222,31,215,215,1,88,29,78,13,172, + 173,173,173,173,156,94,54,54,94,181, + 65,26,34,303,166,166,41,41,241,261, + 111,111,202,297,297,255,255,48,274,222, + 88,222,88,88,88,88,88,88,88,88, + 88,88,88,88,88,88,88,88,88,88, + 88,88,88,88,88,88,88,88,88,88, + 88,88,88,88,224,88,222,48,194,282, + 166,43,83,111,106,13,287,186,186,24, + 186,13,24,269,313,222,13,222,32,156, + 186,13,300,13,20,206,228,166,166,48, + 287,48,80,48,311,12,13,13,278,13, + 12,222,222,222,177,241,214,16,16,13, + 13,13,11,156,88,111,174,97,222,222, + 13,13,13,13,77,222,201,156,201,222, + 111,26,13,274,13,13,48,13,13,317, + 222,13,246,13,13,13,123,123,32,32, + 255,301,186,88,13,13,13,13,13,13, 13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,74,74,92,87, - 325,325,182,203,74,13,21,13,153,164, - 61,61,213,97,17,74,288,13,206,13, - 13,206,318,318,272,13,318,203,203,13, - 45,325,274,106,158,325,325,144,279,210, - 210,210,210,13,13,13,287,158,101,325, - 45,80,80,74,74,303,176,274,232,232, - 17,74,74,92,92,74,203,147,74,74, - 170,153,164,13,13,251,84,236,17,206, - 74,206,325,246,1,325,314,45,13,325, - 101,45,325,158,13,45,69,13,210,279, - 325,325,325,325,103,103,139,13,13,99, - 13,80,45,13,67,71,153,170,225,236, - 251,251,12,206,13,206,203,147,210,206, - 99,80,45,13,144,103,74,92,325,325, - 139,233,65,13,67,13,12,236,236,74, - 13,125,203,325,45,80,69,325,92,325, - 325,45,13,82,12,12,206,325,203,65, - 45,94,94,244,322,13,206,65,325,181, - 232 + 13,13,13,13,13,13,32,48,83,111, + 106,131,13,222,119,222,88,222,222,78, + 159,48,48,14,14,278,311,125,13,13, + 41,50,188,13,137,13,186,13,13,13, + 13,189,13,311,184,186,186,311,70,315, + 222,239,48,156,78,13,170,88,173,48, + 116,222,13,13,13,13,278,12,156,73, + 78,48,34,12,94,166,131,48,88,13, + 13,245,241,297,297,289,48,13,13,32, + 186,88,88,86,88,88,111,106,222,222, + 202,186,88,13,129,13,166,281,14,14, + 235,125,32,88,311,13,189,13,13,189, + 325,325,295,13,325,186,186,13,48,222, + 297,76,278,222,222,121,317,181,181,181, + 181,13,13,13,310,278,150,222,48,131, + 131,88,88,239,196,297,173,173,32,111, + 111,88,186,160,88,88,287,166,281,13, + 13,253,135,274,32,189,88,189,222,248, + 1,222,321,48,13,222,150,48,222,278, + 13,48,133,13,181,317,222,222,222,222, + 94,94,74,13,13,168,13,131,48,13, + 148,85,166,287,152,274,253,253,12,189, + 13,189,186,160,181,189,168,131,48,13, + 121,94,88,111,222,222,74,174,60,13, + 148,13,12,274,274,88,13,102,186,222, + 48,131,133,222,111,222,222,48,13,123, + 12,12,189,222,186,60,48,70,70,246, + 219,13,189,60,222,201,173 }; }; public final static char nasb[] = Nasb.nasb; @@ -3035,39 +3083,39 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface Nasr { public final static char nasr[] = {0, - 3,13,10,9,106,142,124,111,123,122, - 5,2,0,160,0,4,96,0,197,0, - 215,0,177,0,43,1,0,187,5,186, - 0,208,0,226,0,175,0,50,39,13, - 2,9,10,5,4,0,199,0,5,2, - 9,10,164,0,48,1,0,4,219,0, - 135,0,190,0,149,0,180,0,166,0, - 96,153,48,13,2,9,10,5,0,60, - 0,133,0,217,0,4,5,10,9,2, - 13,72,0,48,64,0,172,0,141,0, - 179,0,4,105,0,2,143,84,0,95, - 0,4,47,143,0,2,84,0,225,32, - 0,32,192,0,4,202,0,4,201,0, - 13,2,9,10,5,228,0,2,144,0, - 4,42,0,168,0,99,71,5,2,9, - 10,4,43,0,159,0,63,2,3,0, - 48,178,0,4,5,10,9,2,71,23, - 0,84,163,162,0,102,101,43,71,74, - 5,10,9,2,0,32,101,102,4,0, - 39,53,47,203,4,48,0,2,63,0, - 4,47,49,0,96,48,53,39,85,4, - 47,0,5,117,216,0,49,5,2,9, - 10,4,176,0,5,117,183,0,48,64, - 47,39,4,50,0,2,73,0,4,50, - 220,0,32,102,101,71,2,9,10,4, - 5,0,120,82,53,4,39,0,2,5, - 111,107,108,109,116,13,76,0,43,126, - 0,47,205,28,4,0,102,101,43,5, - 74,0,5,10,9,13,3,1,0,4, - 39,53,82,92,0,4,53,82,117,51, - 5,0,28,4,5,43,99,0,106,0, - 43,84,0,50,4,204,0,4,50,119, - 0,50,39,4,32,0 + 3,13,10,9,107,143,125,112,124,123, + 5,2,0,136,0,96,0,227,0,176, + 0,161,0,160,0,49,179,0,200,0, + 4,97,0,188,5,187,0,4,220,0, + 50,39,13,2,9,10,5,4,0,85, + 164,163,0,5,2,9,10,165,0,150, + 0,32,193,0,178,0,49,1,0,49, + 65,0,2,145,0,2,144,85,0,2, + 85,0,198,0,97,154,49,13,2,9, + 10,5,0,4,106,0,4,40,0,209, + 0,4,203,0,4,5,10,9,2,13, + 73,0,226,32,0,4,202,0,191,0, + 169,0,134,0,173,0,15,0,216,0, + 61,0,167,0,218,0,13,2,9,10, + 5,229,0,4,50,221,0,181,0,180, + 0,5,118,184,0,2,64,0,100,72, + 5,2,9,10,4,43,0,142,0,49, + 65,45,39,4,50,0,39,53,49,204, + 4,45,0,4,45,48,0,97,45,53, + 39,86,4,49,0,103,102,43,72,75, + 5,10,9,2,0,48,5,2,9,10, + 4,177,0,32,102,103,4,0,50,39, + 4,32,0,4,45,144,0,4,53,83, + 118,51,5,0,5,118,217,0,28,4, + 5,43,100,0,32,103,102,72,2,9, + 10,4,5,0,121,83,53,4,39,0, + 2,5,112,108,109,110,117,13,77,0, + 43,1,0,2,74,0,64,2,3,0, + 4,5,10,9,2,72,23,0,4,39, + 53,83,93,0,45,206,28,4,0,43, + 127,0,43,85,0,5,10,9,13,3, + 1,0,107,0,103,102,43,5,75,0, + 50,4,205,0,4,50,120,0 }; }; public final static char nasr[] = Nasr.nasr; @@ -3080,15 +3128,15 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar 92,105,107,48,49,65,110,112,133,134, 135,127,59,111,50,94,109,52,69,71, 75,78,81,88,103,117,11,12,125,7, - 8,14,60,66,72,89,93,95,99,102, - 104,114,115,116,128,58,98,68,96,106, - 19,82,100,108,136,1,123,44,63,83, - 126,30,20,101,33,124,113,54,55,61, - 62,64,70,74,76,77,90,97,17,18, - 32,6,122,4,15,16,21,22,23,24, - 25,26,27,28,45,46,5,29,34,35, - 36,37,38,39,40,41,42,43,85,86, - 87,3,56,137,67,121 + 8,72,99,102,114,115,116,14,60,66, + 89,93,95,104,128,58,98,68,96,106, + 19,82,100,108,136,137,1,44,123,63, + 83,126,30,20,101,33,124,113,54,55, + 61,62,64,70,74,76,77,90,97,17, + 18,32,6,122,4,15,16,21,22,23, + 24,25,26,27,28,45,46,5,29,34, + 35,36,37,38,39,40,41,42,43,85, + 86,87,3,56,138,67,121 }; }; public final static char terminalIndex[] = TerminalIndex.terminalIndex; @@ -3096,30 +3144,30 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface NonterminalIndex { public final static char nonterminalIndex[] = {0, - 143,148,149,0,0,147,0,0,242,248, - 146,0,156,0,145,0,0,155,161,0, - 0,162,257,0,0,0,171,193,172,173, - 174,139,175,176,177,178,179,180,266,181, - 0,164,258,154,182,0,144,142,141,165, - 190,0,0,151,0,0,0,0,0,200, - 0,0,150,185,0,217,0,158,0,214, - 218,138,0,168,188,199,0,0,0,0, - 0,0,0,0,184,0,0,0,0,0, - 0,191,0,0,219,140,159,170,215,221, - 222,223,0,225,0,201,202,203,204,205, - 206,0,0,220,232,265,233,0,187,192, - 194,195,196,197,198,209,211,0,212,0, - 0,224,0,0,0,237,0,239,0,253, - 254,264,0,160,183,208,0,210,0,227, - 230,0,0,0,251,0,252,0,262,267, - 0,152,153,157,0,0,167,169,0,0, - 0,0,0,207,0,216,0,228,229,0, - 0,234,241,0,245,246,247,250,0,259, - 0,261,0,0,268,270,271,0,0,163, - 166,0,186,0,189,0,0,213,226,231, - 0,0,235,236,238,240,0,243,244,249, - 255,256,0,0,260,0,0,263,0,269, - 0,0,0,0 + 144,150,151,0,0,149,0,0,244,250, + 148,0,158,0,145,147,0,157,163,0, + 0,164,259,0,0,0,173,195,174,175, + 176,140,177,178,179,180,181,182,268,166, + 183,0,260,156,146,184,0,142,143,167, + 192,0,0,0,153,0,0,0,0,0, + 202,0,0,152,187,0,219,0,160,0, + 216,220,139,0,170,190,201,0,0,0, + 0,0,0,0,0,186,0,0,0,0, + 0,0,193,0,0,221,141,161,172,217, + 223,224,225,0,227,0,203,204,205,206, + 207,208,0,0,222,234,267,235,0,189, + 194,196,197,198,199,200,211,213,0,214, + 0,0,226,0,0,0,239,0,241,0, + 255,256,266,0,162,185,210,0,212,0, + 229,232,0,0,0,253,0,254,0,264, + 269,0,154,155,159,0,0,169,171,0, + 0,0,0,0,209,0,218,0,230,231, + 0,0,236,243,0,247,248,249,252,0, + 261,0,263,0,0,270,272,273,0,0, + 165,168,0,188,0,191,0,0,215,228, + 233,0,0,237,238,240,242,0,245,246, + 251,257,258,0,0,262,0,0,265,0, + 271,0,0,0,0 }; }; public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex; @@ -3127,22 +3175,22 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface ScopePrefix { public final static char scopePrefix[] = { - 284,446,745,764,435,464,696,712,723,734, - 531,1,9,390,404,421,484,154,415,551, - 589,292,753,639,19,132,163,183,192,197, - 202,255,320,477,492,497,107,269,396,410, - 667,139,269,541,497,772,139,342,371,15, - 31,43,75,75,99,103,115,126,173,188, - 216,502,520,524,607,632,661,688,692,782, - 786,790,207,119,207,569,585,598,616,680, - 226,226,354,442,598,703,719,730,741,332, - 650,55,67,96,168,168,281,347,49,168, - 368,387,49,49,168,528,629,636,281,168, - 805,37,49,90,220,506,573,613,623,24, - 168,235,427,506,235,235,454,560,302,454, - 60,60,81,214,81,81,81,81,611,794, - 801,60,60,85,363,794,801,177,579,262, - 214,363,214,376 + 293,455,754,773,444,473,705,721,732,743, + 540,1,9,399,413,430,493,163,424,560, + 598,301,762,648,19,141,172,192,201,206, + 211,264,329,486,501,506,116,278,405,419, + 676,148,278,550,506,781,148,351,380,15, + 40,52,84,84,108,112,124,135,182,197, + 225,511,529,533,616,641,670,697,701,791, + 795,799,216,128,216,578,594,607,625,689, + 24,235,235,363,451,607,712,728,739,750, + 341,659,64,76,105,177,177,290,356,58, + 177,377,396,58,58,177,537,638,645,290, + 177,814,46,58,99,229,515,582,622,632, + 33,177,244,436,515,244,244,463,569,311, + 463,69,69,90,223,90,90,90,90,620, + 803,810,69,69,94,372,803,810,186,588, + 271,223,372,223,385 }; }; public final static char scopePrefix[] = ScopePrefix.scopePrefix; @@ -3150,22 +3198,22 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface ScopeSuffix { public final static char scopeSuffix[] = { - 130,260,79,79,260,260,79,79,79,79, - 538,7,7,260,35,260,490,160,401,557, - 595,298,179,645,7,137,137,137,171,171, - 35,260,325,482,482,490,112,274,401,211, - 672,150,277,546,759,777,144,336,336,7, - 35,47,79,79,79,79,79,130,79,171, - 35,482,35,35,260,7,79,79,79,79, - 79,7,803,123,211,538,538,538,620,672, - 230,244,358,430,602,707,707,707,707,336, - 654,58,58,79,171,171,79,79,350,352, - 7,79,47,47,352,35,79,7,79,665, - 79,40,52,93,223,509,576,93,626,27, - 684,230,430,675,238,249,471,563,305,457, - 65,73,83,35,512,514,516,518,35,796, - 796,62,70,87,365,798,798,179,581,264, - 327,358,312,378 + 139,269,88,88,269,269,88,88,88,88, + 547,7,7,269,44,269,499,169,410,566, + 604,307,188,654,7,146,146,146,180,180, + 44,269,334,491,491,499,121,283,410,220, + 681,159,286,555,768,786,153,345,345,7, + 44,56,88,88,88,88,88,139,88,180, + 44,491,44,44,269,7,88,88,88,88, + 88,7,812,132,220,547,547,547,629,681, + 28,239,253,367,439,611,716,716,716,716, + 345,663,67,67,88,180,180,88,88,359, + 361,7,88,56,56,361,44,88,7,88, + 674,88,49,61,102,232,518,585,102,635, + 36,693,239,439,684,247,258,480,572,314, + 466,74,82,92,44,521,523,525,527,44, + 805,805,71,79,96,374,807,807,188,590, + 273,336,367,321,387 }; }; public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix; @@ -3173,22 +3221,22 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface ScopeLhs { public final static char scopeLhs[] = { - 51,109,18,18,81,109,18,18,18,18, - 88,95,95,94,52,81,108,79,58,88, - 87,51,18,20,95,3,7,8,183,183, - 182,107,51,108,108,110,24,152,59,52, - 164,156,152,88,18,18,156,103,65,95, - 62,75,116,19,19,189,158,91,186,183, - 182,110,206,56,64,168,19,18,18,18, - 18,18,12,141,182,88,87,87,41,164, - 115,115,74,81,87,18,18,18,18,103, - 20,136,129,17,187,183,208,101,114,67, - 95,66,176,75,110,89,169,168,199,164, - 17,62,75,86,182,110,119,86,22,39, - 164,115,81,164,115,115,109,88,51,109, - 136,129,142,182,125,124,123,122,83,162, - 63,136,129,228,74,162,63,186,119,107, - 51,74,51,65 + 51,110,18,18,82,110,18,18,18,18, + 89,96,96,95,52,82,109,80,59,89, + 88,51,18,20,96,3,7,8,184,184, + 183,108,51,109,109,111,24,153,60,52, + 165,157,153,89,18,18,157,104,66,96, + 63,76,117,19,19,190,159,92,187,184, + 183,111,207,57,65,169,19,18,18,18, + 18,18,12,142,183,89,88,88,42,165, + 54,116,116,75,82,88,18,18,18,18, + 104,20,137,130,17,188,184,209,102,115, + 68,96,67,177,76,111,90,170,169,200, + 165,17,63,76,87,183,111,120,87,22, + 39,165,116,82,165,116,116,110,89,51, + 110,137,130,143,183,126,125,124,123,84, + 163,64,137,130,229,75,163,64,187,120, + 108,51,75,51,66 }; }; public final static char scopeLhs[] = ScopeLhs.scopeLhs; @@ -3196,22 +3244,22 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface ScopeLa { public final static char scopeLa[] = { - 133,86,77,77,86,86,77,77,77,77, - 77,103,103,86,49,86,1,83,1,77, - 135,81,5,77,103,83,83,83,1,1, - 49,86,81,1,1,1,77,86,1,1, - 6,83,78,49,1,1,83,77,77,103, - 49,1,77,77,77,77,77,133,77,1, - 49,1,49,49,86,103,77,77,77,77, - 77,103,1,77,1,77,77,77,82,6, - 1,1,13,81,77,83,83,83,83,77, - 5,8,8,77,1,1,77,77,5,1, - 103,77,1,1,1,49,77,103,77,10, - 77,1,8,82,1,67,85,82,77,3, - 1,1,81,67,1,1,81,87,84,1, - 1,1,32,49,1,68,66,66,49,6, - 6,1,1,101,14,6,6,5,1,81, - 1,13,1,5 + 134,87,79,79,87,87,79,79,79,79, + 79,104,104,87,49,87,1,84,1,79, + 136,82,5,79,104,84,84,84,1,1, + 49,87,82,1,1,1,79,87,1,1, + 6,84,78,49,1,1,84,79,79,104, + 49,1,79,79,79,79,79,134,79,1, + 49,1,49,49,87,104,79,79,79,79, + 79,104,1,79,1,79,79,79,83,6, + 78,1,1,13,82,79,84,84,84,84, + 79,5,8,8,79,1,1,79,79,5, + 1,104,79,1,1,1,49,79,104,79, + 10,79,1,8,83,1,67,86,83,79, + 3,1,1,82,67,1,1,82,88,85, + 1,1,1,32,49,1,68,66,66,49, + 6,6,1,1,102,14,6,6,5,1, + 82,1,13,1,5 }; }; public final static char scopeLa[] = ScopeLa.scopeLa; @@ -3227,14 +3275,14 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar 433,132,151,234,234,60,1,74,49,21, 410,151,43,433,63,13,234,234,234,234, 234,234,208,8,410,74,74,74,274,52, - 151,151,370,398,74,234,234,234,234,91, - 234,26,143,234,49,21,100,91,93,126, - 87,126,148,132,151,74,5,13,55,52, - 234,433,132,74,410,151,16,74,239,413, - 52,151,398,52,151,151,151,74,386,151, - 26,143,153,410,153,153,153,153,31,57, - 102,26,143,24,370,57,102,49,16,151, - 386,370,386,126 + 386,151,151,370,398,74,234,234,234,234, + 91,234,26,143,234,49,21,100,91,93, + 126,87,126,148,132,151,74,5,13,55, + 52,234,433,132,74,410,151,16,74,239, + 413,52,151,398,52,151,151,151,74,386, + 151,26,143,153,410,153,153,153,153,31, + 57,102,26,143,24,370,57,102,49,16, + 151,386,370,386,126 }; }; public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet; @@ -3242,87 +3290,88 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface ScopeRhs { public final static char scopeRhs[] = {0, - 181,36,332,140,76,0,138,0,181,332, - 140,36,76,0,181,36,76,0,181,332, - 140,76,0,330,140,0,131,267,0,0, - 284,140,175,0,141,0,140,175,0,210, - 141,0,179,235,140,0,214,0,235,140, - 0,258,214,0,272,179,0,258,0,179, - 0,237,258,0,237,0,211,179,0,188, - 258,0,188,0,204,5,32,0,139,0, - 242,0,265,0,234,0,32,170,0,364, - 89,0,30,184,0,200,5,0,204,5, - 65,0,360,5,326,0,359,5,5,8, - 0,139,139,0,358,5,73,0,357,5, - 133,0,139,185,0,140,200,84,0,229, - 0,290,140,71,138,0,20,0,324,140, - 71,67,0,20,58,0,33,145,0,20, - 58,0,0,324,140,71,67,218,0,20, - 191,0,290,140,71,146,0,209,141,0, - 154,0,241,5,323,0,323,0,2,0, - 139,0,290,140,71,145,0,209,141,253, - 0,209,141,37,253,0,209,141,353,37, - 0,142,220,199,141,0,220,199,141,0, - 147,141,0,189,0,349,140,189,0,140, - 189,0,235,141,0,199,348,247,0,149, - 0,0,0,0,348,247,0,150,149,0, - 0,0,0,148,0,0,0,0,150,148, - 0,0,0,0,347,140,184,251,0,140, - 0,251,0,142,0,0,140,0,346,140, - 184,289,0,140,0,0,44,140,0,0, - 178,5,0,140,314,313,140,84,312,189, - 0,313,140,84,312,189,0,228,0,229, - 0,312,189,0,101,0,0,228,0,229, - 0,216,101,0,0,228,0,229,0,313, - 140,312,189,0,228,0,216,0,0,228, - 0,266,140,5,0,139,0,0,0,0, - 0,266,140,5,237,0,250,5,0,221, - 0,159,0,205,199,141,0,10,0,0, - 0,0,205,0,9,0,0,234,76,0, - 266,140,5,202,0,202,0,2,0,0, - 139,0,0,0,0,0,211,5,0,254, - 140,184,46,40,0,209,141,72,74,0, - 209,141,0,142,209,141,311,74,0,209, - 141,311,74,0,209,141,85,137,72,0, - 254,140,184,283,72,0,283,72,0,142, - 0,0,140,0,254,140,184,283,262,72, - 0,283,262,72,0,308,309,140,184,137, - 343,68,0,343,68,0,143,142,0,0, - 0,140,0,308,309,140,184,343,68,0, - 142,0,0,0,140,0,209,141,307,68, - 0,148,0,220,209,141,307,247,0,149, - 0,209,141,307,247,0,220,199,141,22, - 0,199,141,22,0,199,141,0,98,149, - 0,205,0,204,0,203,0,202,0,306, - 140,164,0,306,140,189,0,183,97,0, - 338,185,340,341,5,94,0,139,184,0, - 340,341,5,94,0,141,0,139,184,0, - 183,5,87,221,92,0,139,141,0,221, - 92,0,113,2,144,139,141,0,255,5, - 87,0,211,186,0,33,182,0,186,0, - 188,33,182,0,255,5,98,0,221,168, - 255,5,96,0,67,184,0,255,5,96, - 0,139,184,67,184,0,339,140,184,0, - 183,0,234,89,0,183,118,176,0,30, - 182,0,204,5,0,139,162,0,241,5, - 0,234,76,304,0,183,76,0,204,5, - 335,80,141,0,139,0,0,0,0,335, - 80,141,0,2,158,139,0,0,0,0, - 204,5,57,0,160,0,139,67,199,141, - 0,31,160,0,98,149,31,160,0,233, - 209,141,0,159,31,160,0,204,5,61, - 0,183,5,61,0,183,5,83,204,71, - 53,0,204,71,53,0,20,2,144,139, - 0,183,5,83,204,71,56,0,204,71, - 56,0,183,5,83,204,71,58,0,204, - 71,58,0,183,5,83,204,71,54,0, - 204,71,54,0,241,5,139,220,199,141, - 22,0,139,220,199,141,22,0,149,2, - 0,139,0,241,5,138,279,199,141,22, - 0,279,199,141,22,0,148,2,0,139, - 0,241,5,149,0,241,5,154,0,183, - 76,154,0,299,0,31,0,31,152,0, - 190,0,147,0,183,5,0 + 183,36,334,141,77,0,139,0,183,334, + 141,36,77,0,183,36,77,0,183,334, + 141,77,0,182,5,75,0,44,145,140, + 142,0,332,141,0,131,269,0,0,286, + 141,176,0,142,0,141,176,0,212,142, + 0,180,237,141,0,216,0,237,141,0, + 260,216,0,274,180,0,260,0,180,0, + 239,260,0,239,0,213,180,0,190,260, + 0,190,0,206,5,32,0,140,0,244, + 0,267,0,236,0,32,172,0,366,90, + 0,30,186,0,202,5,0,206,5,65, + 0,362,5,328,0,361,5,5,8,0, + 140,140,0,360,5,73,0,359,5,134, + 0,140,187,0,141,202,85,0,231,0, + 292,141,71,139,0,20,0,326,141,71, + 67,0,20,58,0,33,147,0,20,58, + 0,0,326,141,71,67,220,0,20,193, + 0,292,141,71,147,0,211,142,0,156, + 0,243,5,325,0,325,0,2,0,140, + 0,292,141,71,146,0,211,142,255,0, + 211,142,37,255,0,211,142,355,37,0, + 143,222,201,142,0,222,201,142,0,149, + 142,0,190,0,351,141,190,0,141,190, + 0,237,142,0,201,350,249,0,151,0, + 0,0,0,350,249,0,152,151,0,0, + 0,0,150,0,0,0,0,152,150,0, + 0,0,0,349,141,186,253,0,141,0, + 253,0,143,0,0,141,0,348,141,186, + 291,0,141,0,0,44,141,0,0,177, + 5,0,141,316,315,141,85,314,190,0, + 315,141,85,314,190,0,230,0,231,0, + 314,190,0,101,0,0,230,0,231,0, + 218,101,0,0,230,0,231,0,315,141, + 314,190,0,230,0,218,0,0,230,0, + 268,141,5,0,140,0,0,0,0,0, + 268,141,5,239,0,252,5,0,223,0, + 161,0,207,201,142,0,10,0,0,0, + 0,207,0,9,0,0,236,77,0,268, + 141,5,204,0,204,0,2,0,0,140, + 0,0,0,0,0,213,5,0,256,141, + 186,46,40,0,211,142,72,74,0,211, + 142,0,143,211,142,313,74,0,211,142, + 313,74,0,211,142,86,138,72,0,256, + 141,186,285,72,0,285,72,0,143,0, + 0,141,0,256,141,186,285,264,72,0, + 285,264,72,0,310,311,141,186,138,345, + 68,0,345,68,0,144,143,0,0,0, + 141,0,310,311,141,186,345,68,0,143, + 0,0,0,141,0,211,142,309,68,0, + 150,0,222,211,142,309,249,0,151,0, + 211,142,309,249,0,222,201,142,22,0, + 201,142,22,0,201,142,0,98,151,0, + 207,0,206,0,205,0,204,0,308,141, + 165,0,308,141,190,0,182,98,0,340, + 185,342,343,5,95,0,140,186,0,342, + 343,5,95,0,142,0,140,186,0,182, + 5,88,223,93,0,140,142,0,223,93, + 0,113,2,146,140,142,0,257,5,88, + 0,213,187,0,33,184,0,187,0,190, + 33,184,0,257,5,99,0,223,169,257, + 5,97,0,67,186,0,257,5,97,0, + 140,186,67,186,0,341,141,186,0,182, + 0,236,90,0,182,119,178,0,30,184, + 0,206,5,0,140,164,0,243,5,0, + 236,77,306,0,182,77,0,206,5,337, + 81,142,0,140,0,0,0,0,337,81, + 142,0,2,160,140,0,0,0,0,206, + 5,62,0,162,0,140,67,201,142,0, + 31,162,0,98,151,31,162,0,235,211, + 142,0,161,31,162,0,206,5,64,0, + 182,5,64,0,182,5,84,206,71,59, + 0,206,71,59,0,20,2,146,140,0, + 182,5,84,206,71,61,0,206,71,61, + 0,182,5,84,206,71,63,0,206,71, + 63,0,182,5,84,206,71,60,0,206, + 71,60,0,243,5,140,222,201,142,22, + 0,140,222,201,142,22,0,151,2,0, + 140,0,243,5,139,281,201,142,22,0, + 281,201,142,22,0,150,2,0,140,0, + 243,5,150,0,243,5,155,0,182,77, + 155,0,301,0,31,0,31,154,0,192, + 0,149,0,182,5,0 }; }; public final static char scopeRhs[] = ScopeRhs.scopeRhs; @@ -3330,52 +3379,52 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface ScopeState { public final static char scopeState[] = {0, - 3609,3009,1237,0,2509,1294,0,1652,1650,1887, - 1659,0,3260,3083,0,6861,7029,6917,6894,0, - 4122,3974,0,2463,0,4287,4258,713,3373,0, - 4712,4647,4582,4517,4452,4387,4317,4189,4124,4059, - 3836,3698,5343,0,4597,4653,4327,0,852,750, - 0,1085,1064,0,1061,0,3553,3537,0,1387, - 1168,0,2677,2065,6733,1518,4154,3267,6702,6672, - 6635,6602,4156,4712,4647,4582,4517,4452,4387,4317, - 4189,4124,4059,3836,3698,0,2346,2111,1872,1726, - 3587,5583,5067,4991,4717,3627,4316,3768,0,837, - 0,6937,6930,6925,6851,7005,6960,6847,6843,6827, - 6955,6823,6948,6812,6621,6276,6379,5082,3572,3205, - 6152,4336,3803,3717,0,3587,4018,4069,5313,5238, - 5357,5067,4457,4287,4258,713,4991,3373,4717,3639, - 3339,3095,3668,3905,3128,859,0,4018,5357,0, - 5328,5182,798,652,3311,3067,0,3622,3004,6937, - 6930,1196,1127,6925,2392,6851,2298,2157,2012,967, - 2486,7005,1631,6960,1557,6847,6843,6827,741,1337, - 6955,6823,5328,6948,1077,6812,6621,886,6276,2882, - 3311,6379,5082,2816,3572,3205,6152,4336,3803,731, - 5182,3717,3067,3320,3116,1155,995,1224,5067,3668, - 4457,4287,4258,3587,713,4991,3373,4717,1245,699, - 4018,4069,1085,1064,5313,3905,3639,5238,3339,3095, - 3128,859,5357,6493,6091,5505,3487,1468,5783,6063, - 6040,3272,3449,3549,3512,4035,3981,3812,5101,5019, - 4959,4927,4891,4859,4827,3223,5760,5737,5709,5475, - 5445,6017,5994,3944,5971,5948,5925,5902,5879,5856, - 5829,5806,1584,2746,3023,798,2981,2929,2887,1848, - 2699,2652,1796,1749,2835,2793,2604,2557,1702,2505, - 2463,1173,1416,1655,2416,2369,2322,2275,2228,2181, - 2134,2087,2040,1989,1942,1608,1895,1534,1104,1013, - 652,944,1490,1314,1262,1363,0,3668,5140,6443, - 798,4287,5391,4982,4258,713,5386,7001,4790,6952, - 6421,5229,6556,5621,3333,6655,4069,5328,6588,873, - 6795,652,5375,3660,6458,3089,5370,3062,3905,3311, - 3639,2952,2529,4636,3339,1820,3577,5182,5209,5197, - 3051,4987,3369,3775,855,3187,859,746,3067,6768, - 3587,6516,6762,6734,6232,5583,3373,4781,6335,5541, - 5313,5238,4589,3128,0,4712,4647,4582,4517,4452, - 4387,4317,4189,4124,4059,3836,3698,6515,5614,5543, - 5499,6398,6338,6294,6234,6190,6130,6086,5096,6547, - 6123,0,7083,6915,7050,7038,7017,6733,1173,1104, - 1013,7012,5535,5267,4382,4549,6702,6672,6635,6602, - 944,4156,4712,4647,4582,4517,4452,4387,4317,4189, - 4124,4059,3836,3698,6515,5614,5543,5499,6398,6338, - 6294,6234,6190,6130,6086,5096,0 + 3210,3168,1016,0,3238,2447,0,3294,3204,3059, + 2912,0,2619,1828,0,6929,7142,7129,7113,0, + 3018,4210,0,2548,0,4748,3925,717,3371,0, + 4513,4447,4381,4315,4249,4183,4117,4051,3985,3918, + 3638,3572,5864,0,7038,3188,4292,0,2816,857, + 0,1070,1000,0,842,0,3228,989,0,687, + 1677,0,2187,1296,6761,1108,1346,796,6759,6705, + 5950,4216,3298,4513,4447,4381,4315,4249,4183,4117, + 4051,3985,3918,3638,3572,0,1907,1804,908,698, + 3731,6692,3253,5036,5021,3982,3603,3133,0,1416, + 0,7026,7021,7014,7009,7104,7096,6993,6981,6923, + 7059,6916,6666,6911,6898,6308,6884,5484,5051,5427, + 6877,5290,5056,3027,0,3731,3778,5154,5383,5307, + 4122,3253,3643,4748,3925,717,5036,3371,5021,5761, + 5726,3154,3813,4583,3103,864,0,3778,4122,0, + 5398,5250,802,655,3309,3074,0,3672,3589,7026, + 7021,3205,2864,7014,2139,7009,2091,1946,1799,2571, + 1202,7104,1555,7096,1446,6993,6981,6923,3668,891, + 7059,6916,5398,6666,773,6911,6898,744,6308,1528, + 3309,6884,5484,1132,5051,5427,6877,5290,5056,735, + 5250,3027,3074,1251,1161,895,748,1231,3253,3813, + 3643,4748,3925,3731,717,5036,3371,5021,1091,703, + 3778,5154,1070,1000,5383,4583,5761,5307,5726,3154, + 3103,864,4122,6631,6609,6518,5668,3486,4787,6490, + 6467,4622,3270,3448,3548,3511,4714,4660,3890,5227, + 5186,4989,4957,4925,4893,4861,4825,5838,5803,5064, + 5638,5608,6444,6421,6398,6263,6240,6217,6194,6171, + 6148,6125,3852,2793,3031,802,2979,2936,2884,1875, + 1824,1776,2841,1372,2745,2691,2643,2591,1728,2548, + 1179,1480,1680,1627,2500,2452,2404,2356,2308,2260, + 2212,2164,2116,2068,2019,1971,1109,1019,655,949, + 1580,1923,1532,1321,1268,1423,0,3813,5529,6848, + 802,4748,6562,5440,3925,717,6350,7101,5346,6558, + 6554,5968,3189,5519,5272,7068,5154,5398,7007,4740, + 6030,655,5753,5299,6659,4683,6292,4522,4583,3309, + 5761,3218,2907,3316,5726,2616,3573,5250,5260,4502, + 4322,3770,5533,3116,860,3070,864,5277,3074,6840, + 3731,6653,6833,6827,4388,6692,3371,6026,6792,5413, + 5383,5307,4454,3103,0,4513,4447,4381,4315,4249, + 4183,4117,4051,3985,3918,3638,3572,6513,5662,5512, + 5441,6302,6286,6029,5984,5923,5878,5862,5090,6660, + 4144,0,7209,3990,7176,7162,7161,6761,1179,1109, + 1019,7128,7080,6775,4254,3361,6759,6705,5950,949, + 4216,3298,4513,4447,4381,4315,4249,4183,4117,4051, + 3985,3918,3638,3572,6513,5662,5512,5441,6302,6286, + 6029,5984,5923,5878,5862,5090,0 }; }; public final static char scopeState[] = ScopeState.scopeState; @@ -3383,72 +3432,72 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public interface InSymb { public final static char inSymb[] = {0, - 0,334,175,74,7,140,189,218,42,36, - 67,40,72,256,140,72,311,362,330,257, - 8,9,7,35,258,251,259,247,260,68, - 261,138,22,141,278,32,242,312,140,5, - 6,146,145,11,10,138,141,202,67,67, - 67,71,67,46,283,262,137,179,284,265, - 140,207,202,179,211,141,141,5,3,5, - 5,5,184,348,307,179,343,307,179,71, - 141,209,199,190,32,65,57,52,48,47, - 13,14,51,50,5,141,10,61,53,56, - 58,54,22,149,154,84,140,306,284,235, - 179,141,205,211,71,71,186,140,76,5, - 79,80,138,137,209,199,5,71,83,140, - 184,184,283,85,78,5,85,235,179,141, - 76,211,179,209,209,363,46,295,296,5, - 361,1,46,140,199,269,139,138,141,137, - 184,141,140,199,67,6,5,5,5,5, - 204,200,183,184,175,186,140,79,80,199, - 139,5,71,71,71,71,141,5,117,132, - 5,76,140,313,82,199,14,13,140,140, - 140,242,76,76,220,140,140,140,140,184, - 141,178,140,184,289,163,166,165,169,167, - 171,170,173,172,174,73,176,179,199,36, - 140,234,13,176,179,262,142,82,168,5, - 78,242,366,359,326,5,347,141,187,253, - 72,67,74,189,350,139,138,270,179,270, - 209,184,140,209,290,293,220,299,220,204, - 204,204,204,140,140,5,238,237,281,149, - 139,138,22,141,32,76,335,5,204,183, - 204,204,204,204,199,241,67,141,67,241, - 183,313,322,141,323,205,205,290,290,235, - 266,267,164,268,324,67,22,66,254,254, - 140,209,140,184,102,104,48,47,106,105, - 13,116,115,108,107,83,71,99,100,14, - 110,109,112,111,113,128,127,126,125,124, - 123,122,121,120,119,85,118,114,140,181, - 332,333,13,1,78,168,5,46,1,199, - 140,270,270,140,140,220,140,309,137,310, - 78,6,168,339,91,89,1,183,12,98, - 96,94,92,87,95,97,90,88,72,84, - 235,250,140,5,78,141,199,155,5,208, - 5,336,186,178,83,83,83,83,220,279, - 141,209,199,314,78,209,5,13,140,168, - 85,250,211,5,140,78,78,83,71,269, - 269,254,262,140,165,165,163,163,163,167, - 167,167,167,167,167,166,166,170,169,169, - 172,171,173,279,183,174,332,36,181,13, - 1,360,220,349,82,274,211,138,272,179, - 140,140,82,309,308,85,78,12,82,364, - 234,82,5,5,5,221,5,137,183,137, - 200,266,140,199,67,204,204,140,140,5, - 5,5,5,139,138,233,10,67,140,241, - 205,196,140,85,85,140,235,140,85,85, - 346,82,82,181,181,78,142,78,82,85, - 179,272,179,159,352,253,37,141,308,82, - 101,82,255,186,140,255,341,164,87,255, - 140,168,266,220,168,168,301,304,76,210, - 183,183,183,183,5,5,6,137,139,315, - 133,140,248,324,232,78,272,179,78,141, - 37,353,209,168,211,168,340,140,5,168, - 315,140,168,139,140,5,76,183,241,241, - 6,5,140,83,232,12,209,141,141,85, - 221,185,306,183,248,140,301,241,234,101, - 357,186,73,66,209,209,135,338,168,140, - 248,168,168,140,5,269,168,140,358,85, - 78 + 0,336,75,176,74,7,141,190,220,42, + 36,67,40,72,258,5,141,72,313,364, + 332,259,8,9,7,35,260,253,261,249, + 262,68,263,139,22,142,280,32,244,314, + 141,5,6,147,146,11,10,139,142,204, + 67,67,67,71,67,46,285,264,138,180, + 182,141,286,267,141,209,204,180,213,142, + 142,5,3,5,5,5,186,350,309,180, + 345,309,180,71,142,211,201,192,32,65, + 62,58,48,47,13,14,51,50,5,142, + 10,64,59,61,63,60,22,150,155,85, + 141,308,286,237,180,142,207,213,71,71, + 187,141,77,5,80,81,139,138,211,201, + 5,71,84,141,186,186,285,86,78,283, + 5,164,167,166,170,168,172,171,174,173, + 175,73,178,78,5,86,237,180,142,77, + 213,180,211,211,365,46,297,298,5,363, + 1,46,141,201,271,140,139,142,138,186, + 142,141,201,67,6,5,5,5,206,202, + 182,186,176,187,141,80,81,201,140,5, + 71,71,71,71,142,5,118,133,5,77, + 141,315,83,201,14,13,141,141,141,244, + 77,77,222,141,141,141,141,186,142,152, + 78,206,103,105,48,47,107,106,13,117, + 116,109,108,84,71,100,101,14,111,110, + 113,112,114,129,128,127,126,125,124,123, + 122,121,120,86,119,115,177,186,291,180, + 201,36,141,236,13,178,180,264,143,83, + 169,5,78,244,368,361,328,5,349,142, + 188,255,72,67,74,190,352,140,139,272, + 180,272,211,186,141,211,292,295,222,301, + 222,206,206,206,141,141,5,240,239,150, + 140,139,22,142,32,77,337,5,206,182, + 206,206,206,206,201,243,67,142,67,243, + 182,315,324,142,325,207,207,292,292,237, + 268,269,165,270,326,67,22,66,256,256, + 141,211,169,169,166,166,164,164,164,168, + 168,168,168,168,168,167,167,171,170,170, + 173,172,174,281,182,175,141,186,141,183, + 334,335,13,1,78,169,5,46,1,201, + 141,272,272,141,141,222,141,311,138,312, + 78,6,341,92,90,1,182,12,99,97, + 95,93,88,96,98,91,89,72,85,237, + 252,141,5,142,201,156,5,210,5,338, + 187,177,84,84,84,84,222,281,142,211, + 201,316,78,211,5,13,141,169,86,252, + 213,5,141,78,78,84,71,271,271,256, + 264,83,83,141,334,36,183,13,1,362, + 222,351,83,276,213,139,274,180,141,141, + 83,311,310,86,78,12,83,366,236,83, + 5,5,5,223,5,138,182,138,202,268, + 141,201,67,206,206,141,141,5,5,5, + 5,140,139,235,10,67,141,243,207,198, + 141,86,86,141,237,141,86,86,348,183, + 183,78,143,78,83,86,180,274,180,160, + 354,255,37,142,310,83,102,83,257,187, + 141,257,343,165,88,257,141,169,268,222, + 169,169,303,306,77,212,182,182,182,182, + 5,5,6,138,140,317,134,141,250,326, + 234,78,274,180,78,142,37,355,211,169, + 213,169,342,141,5,169,317,141,169,140, + 141,5,77,182,243,243,6,5,141,84, + 234,12,211,142,142,86,223,185,308,182, + 250,141,303,243,236,102,359,187,73,66, + 211,211,136,340,169,141,250,169,169,141, + 5,271,169,141,360,86,78 }; }; public final static char inSymb[] = InSymb.inSymb; @@ -3592,6 +3641,7 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar "_Decimal32", "_Decimal64", "_Decimal128", + "__static_assert", "ERROR_TOKEN", "EOF_TOKEN", "]", @@ -3600,6 +3650,7 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar ";", "{", "identifier_token", + "literal", "expression", "id_expression", "qualified_or_unqualified_name", @@ -3741,9 +3792,9 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public final String name(int index) { return name[index]; } public final static int - ERROR_SYMBOL = 75, - SCOPE_UBOUND = 153, - SCOPE_SIZE = 154, + ERROR_SYMBOL = 76, + SCOPE_UBOUND = 154, + SCOPE_SIZE = 155, MAX_NAME_LENGTH = 37; public final int getErrorSymbol() { return ERROR_SYMBOL; } @@ -3752,20 +3803,20 @@ public class XlcCPPParserprs implements lpg.lpgjavaruntime.ParseTable, XlcCPPPar public final int getMaxNameLength() { return MAX_NAME_LENGTH; } public final static int - NUM_STATES = 651, - NT_OFFSET = 136, - LA_STATE_OFFSET = 8806, + NUM_STATES = 657, + NT_OFFSET = 137, + LA_STATE_OFFSET = 8939, MAX_LA = 2147483647, - NUM_RULES = 651, - NUM_NONTERMINALS = 234, - NUM_SYMBOLS = 370, + NUM_RULES = 654, + NUM_NONTERMINALS = 235, + NUM_SYMBOLS = 372, SEGMENT_SIZE = 8192, - START_STATE = 5096, + START_STATE = 5090, IDENTIFIER_SYMBOL = 0, - EOFT_SYMBOL = 134, - EOLT_SYMBOL = 134, - ACCEPT_ACTION = 7153, - ERROR_ACTION = 8155; + EOFT_SYMBOL = 135, + EOLT_SYMBOL = 135, + ACCEPT_ACTION = 7280, + ERROR_ACTION = 8285; public final static boolean BACKTRACK = true; diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java index 16f4bc701c5..7417f530c4b 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/parser/org/eclipse/cdt/internal/core/lrparser/xlc/cpp/XlcCPPParsersym.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2006, 2009 IBM Corporation and others. +* Copyright (c) 2006, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -21,57 +21,57 @@ public interface XlcCPPParsersym { TK_asm = 7, TK_auto = 38, TK_bool = 15, - TK_break = 88, - TK_case = 89, - TK_catch = 133, + TK_break = 89, + TK_case = 90, + TK_catch = 134, TK_char = 16, TK_class = 66, TK_const = 33, - TK_const_cast = 53, - TK_continue = 90, - TK_default = 91, - TK_delete = 79, - TK_do = 92, + TK_const_cast = 59, + TK_continue = 91, + TK_default = 92, + TK_delete = 80, + TK_do = 93, TK_double = 26, - TK_dynamic_cast = 54, - TK_else = 135, + TK_dynamic_cast = 60, + TK_else = 136, TK_enum = 68, TK_explicit = 39, - TK_export = 93, + TK_export = 94, TK_extern = 40, - TK_false = 55, + TK_false = 52, TK_float = 17, - TK_for = 94, + TK_for = 95, TK_friend = 41, - TK_goto = 95, - TK_if = 96, + TK_goto = 96, + TK_if = 97, TK_inline = 42, TK_int = 18, TK_long = 19, TK_mutable = 43, TK_namespace = 72, - TK_new = 80, + TK_new = 81, TK_operator = 11, - TK_private = 129, - TK_protected = 130, - TK_public = 131, + TK_private = 130, + TK_protected = 131, + TK_public = 132, TK_register = 44, - TK_reinterpret_cast = 56, - TK_return = 97, + TK_reinterpret_cast = 61, + TK_return = 98, TK_short = 20, TK_signed = 21, - TK_sizeof = 57, + TK_sizeof = 62, TK_static = 36, - TK_static_cast = 58, + TK_static_cast = 63, TK_struct = 69, - TK_switch = 98, + TK_switch = 99, TK_template = 67, - TK_this = 59, + TK_this = 53, TK_throw = 73, - TK_try = 84, - TK_true = 60, + TK_try = 85, + TK_true = 54, TK_typedef = 45, - TK_typeid = 61, + TK_typeid = 64, TK_typename = 22, TK_union = 70, TK_unsigned = 23, @@ -80,21 +80,21 @@ public interface XlcCPPParsersym { TK_void = 27, TK_volatile = 34, TK_wchar_t = 28, - TK_while = 87, - TK_integer = 62, - TK_floating = 63, - TK_charconst = 64, + TK_while = 88, + TK_integer = 55, + TK_floating = 56, + TK_charconst = 57, TK_stringlit = 46, TK_identifier = 1, TK_Completion = 4, TK_EndOfCompletion = 12, - TK_Invalid = 136, - TK_LeftBracket = 76, + TK_Invalid = 137, + TK_LeftBracket = 77, TK_LeftParen = 5, - TK_Dot = 132, - TK_DotStar = 104, - TK_Arrow = 117, - TK_ArrowStar = 102, + TK_Dot = 133, + TK_DotStar = 105, + TK_Arrow = 118, + TK_ArrowStar = 103, TK_PlusPlus = 50, TK_MinusMinus = 51, TK_And = 14, @@ -102,55 +102,56 @@ public interface XlcCPPParsersym { TK_Plus = 47, TK_Minus = 48, TK_Tilde = 10, - TK_Bang = 52, - TK_Slash = 105, - TK_Percent = 106, - TK_RightShift = 99, - TK_LeftShift = 100, + TK_Bang = 58, + TK_Slash = 106, + TK_Percent = 107, + TK_RightShift = 100, + TK_LeftShift = 101, TK_LT = 71, - TK_GT = 83, - TK_LE = 107, - TK_GE = 108, - TK_EQ = 109, - TK_NE = 110, - TK_Caret = 111, - TK_Or = 112, - TK_AndAnd = 113, - TK_OrOr = 114, - TK_Question = 118, - TK_Colon = 82, + TK_GT = 84, + TK_LE = 108, + TK_GE = 109, + TK_EQ = 110, + TK_NE = 111, + TK_Caret = 112, + TK_Or = 113, + TK_AndAnd = 114, + TK_OrOr = 115, + TK_Question = 119, + TK_Colon = 83, TK_ColonColon = 6, - TK_DotDotDot = 101, - TK_Assign = 85, - TK_StarAssign = 119, - TK_SlashAssign = 120, - TK_PercentAssign = 121, - TK_PlusAssign = 122, - TK_MinusAssign = 123, - TK_RightShiftAssign = 124, - TK_LeftShiftAssign = 125, - TK_AndAssign = 126, - TK_CaretAssign = 127, - TK_OrAssign = 128, + TK_DotDotDot = 102, + TK_Assign = 86, + TK_StarAssign = 120, + TK_SlashAssign = 121, + TK_PercentAssign = 122, + TK_PlusAssign = 123, + TK_MinusAssign = 124, + TK_RightShiftAssign = 125, + TK_LeftShiftAssign = 126, + TK_AndAssign = 127, + TK_CaretAssign = 128, + TK_OrAssign = 129, TK_Comma = 78, - TK_RightBracket = 103, - TK_RightParen = 77, - TK_RightBrace = 86, + TK_RightBracket = 104, + TK_RightParen = 79, + TK_RightBrace = 87, TK_SemiColon = 49, - TK_LeftBrace = 81, + TK_LeftBrace = 82, TK_typeof = 32, TK___alignof__ = 65, TK___attribute__ = 8, TK___declspec = 9, - TK_MAX = 115, - TK_MIN = 116, + TK_MAX = 116, + TK_MIN = 117, TK_vector = 3, TK_pixel = 2, TK__Decimal32 = 29, TK__Decimal64 = 30, TK__Decimal128 = 31, - TK_ERROR_TOKEN = 75, - TK_EOF_TOKEN = 134; + TK___static_assert = 75, + TK_ERROR_TOKEN = 76, + TK_EOF_TOKEN = 135; public final static String orderedTerminalSymbols[] = { "", @@ -205,19 +206,19 @@ public interface XlcCPPParsersym { "SemiColon", "PlusPlus", "MinusMinus", + "false", + "this", + "true", + "integer", + "floating", + "charconst", "Bang", "const_cast", "dynamic_cast", - "false", "reinterpret_cast", "sizeof", "static_cast", - "this", - "true", "typeid", - "integer", - "floating", - "charconst", "__alignof__", "class", "template", @@ -228,10 +229,11 @@ public interface XlcCPPParsersym { "namespace", "throw", "using", + "__static_assert", "ERROR_TOKEN", "LeftBracket", - "RightParen", "Comma", + "RightParen", "delete", "new", "LeftBrace", diff --git a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java index 144b5aece2e..9dd1c43ce62 100644 --- a/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java +++ b/xlc/org.eclipse.cdt.core.lrparser.xlc/ui/org/eclipse/cdt/internal/core/lrparser/xlc/ui/preferences/PreferenceMessages.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -47,7 +47,7 @@ public class PreferenceMessages extends NLS { XlcLanguageOptionsPreferencePage_SUPPORT_VECTOR_TYPES, XlcLanguageOptionsPreferencePage_SUPPORT_DECIMAL_FLOATING_POINT_TYPES, XlcLanguageOptionsPreferencePage_SUPPORT_COMPLEX_IN_CPP, - XlcLanguageOptionsPreferencePage_SUPPORT_RESTRICT_IN_CPP; - + XlcLanguageOptionsPreferencePage_SUPPORT_RESTRICT_IN_CPP, + XlcLanguageOptionsPreferencePage_SUPPORT_STATIC_ASSERT; } |